* [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat
@ 2025-05-17 3:50 Kacper Michajłow
2025-05-17 3:50 ` [FFmpeg-devel] [PATCH 2/2] avformat/imfdec: inherit opaque from parent AVFormatContext Kacper Michajłow
2025-05-17 12:39 ` [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat Andreas Rheinhardt
0 siblings, 2 replies; 10+ messages in thread
From: Kacper Michajłow @ 2025-05-17 3:50 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Kacper Michajłow
It's not valid to call avio_close() on context that has not been open
with avio_open().
This fixes use of custom IO. (io_open / io_close2 callbacks)
Note that by default io_close2 is set to io_close2_default() which calls
avio_close(), so default case will work the same as before.
Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
---
libavformat/demux.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/libavformat/demux.c b/libavformat/demux.c
index 2795863567..ecd4f40da9 100644
--- a/libavformat/demux.c
+++ b/libavformat/demux.c
@@ -383,11 +383,10 @@ void avformat_close_input(AVFormatContext **ps)
if (ffifmt(s->iformat)->read_close)
ffifmt(s->iformat)->read_close(s);
+ ff_format_io_close(s, &pb);
avformat_free_context(s);
*ps = NULL;
-
- avio_close(pb);
}
static void force_codec_ids(AVFormatContext *s, AVStream *st)
--
2.45.1
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 10+ messages in thread
* [FFmpeg-devel] [PATCH 2/2] avformat/imfdec: inherit opaque from parent AVFormatContext
2025-05-17 3:50 [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat Kacper Michajłow
@ 2025-05-17 3:50 ` Kacper Michajłow
2025-05-17 4:15 ` Pierre-Anthony Lemieux
2025-05-17 12:39 ` [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat Andreas Rheinhardt
1 sibling, 1 reply; 10+ messages in thread
From: Kacper Michajłow @ 2025-05-17 3:50 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Kacper Michajłow
io_open and io_close2 callbacks may use opaque pointer stored in the
context. They are already inherited, so opaque should also be passed
through.
Fixes IMF playback in mpv.
Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
---
libavformat/imfdec.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/libavformat/imfdec.c b/libavformat/imfdec.c
index a86b4763ff..b4df37daa3 100644
--- a/libavformat/imfdec.c
+++ b/libavformat/imfdec.c
@@ -380,6 +380,7 @@ static int open_track_resource_context(AVFormatContext *s,
track_resource->ctx->io_open = s->io_open;
track_resource->ctx->io_close2 = s->io_close2;
+ track_resource->ctx->opaque = s->opaque;
track_resource->ctx->flags |= s->flags & ~AVFMT_FLAG_CUSTOM_IO;
if ((ret = ff_copy_whiteblacklists(track_resource->ctx, s)) < 0)
--
2.45.1
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/2] avformat/imfdec: inherit opaque from parent AVFormatContext
2025-05-17 3:50 ` [FFmpeg-devel] [PATCH 2/2] avformat/imfdec: inherit opaque from parent AVFormatContext Kacper Michajłow
@ 2025-05-17 4:15 ` Pierre-Anthony Lemieux
2025-05-22 22:58 ` Michael Niedermayer
0 siblings, 1 reply; 10+ messages in thread
From: Pierre-Anthony Lemieux @ 2025-05-17 4:15 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Kacper Michajłow
On Fri, May 16, 2025 at 8:51 PM Kacper Michajłow <kasper93@gmail.com> wrote:
>
> io_open and io_close2 callbacks may use opaque pointer stored in the
> context. They are already inherited, so opaque should also be passed
> through.
>
> Fixes IMF playback in mpv.
>
> Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
> ---
> libavformat/imfdec.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/libavformat/imfdec.c b/libavformat/imfdec.c
> index a86b4763ff..b4df37daa3 100644
> --- a/libavformat/imfdec.c
> +++ b/libavformat/imfdec.c
> @@ -380,6 +380,7 @@ static int open_track_resource_context(AVFormatContext *s,
>
> track_resource->ctx->io_open = s->io_open;
> track_resource->ctx->io_close2 = s->io_close2;
> + track_resource->ctx->opaque = s->opaque;
LGTM.
> track_resource->ctx->flags |= s->flags & ~AVFMT_FLAG_CUSTOM_IO;
>
> if ((ret = ff_copy_whiteblacklists(track_resource->ctx, s)) < 0)
> --
> 2.45.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/2] avformat/imfdec: inherit opaque from parent AVFormatContext
2025-05-17 4:15 ` Pierre-Anthony Lemieux
@ 2025-05-22 22:58 ` Michael Niedermayer
0 siblings, 0 replies; 10+ messages in thread
From: Michael Niedermayer @ 2025-05-22 22:58 UTC (permalink / raw)
To: FFmpeg development discussions and patches
[-- Attachment #1.1: Type: text/plain, Size: 1172 bytes --]
Hi Pierre
On Fri, May 16, 2025 at 09:15:58PM -0700, Pierre-Anthony Lemieux wrote:
> On Fri, May 16, 2025 at 8:51 PM Kacper Michajłow <kasper93@gmail.com> wrote:
> >
> > io_open and io_close2 callbacks may use opaque pointer stored in the
> > context. They are already inherited, so opaque should also be passed
> > through.
> >
> > Fixes IMF playback in mpv.
> >
> > Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
> > ---
> > libavformat/imfdec.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/libavformat/imfdec.c b/libavformat/imfdec.c
> > index a86b4763ff..b4df37daa3 100644
> > --- a/libavformat/imfdec.c
> > +++ b/libavformat/imfdec.c
> > @@ -380,6 +380,7 @@ static int open_track_resource_context(AVFormatContext *s,
> >
> > track_resource->ctx->io_open = s->io_open;
> > track_resource->ctx->io_close2 = s->io_close2;
> > + track_resource->ctx->opaque = s->opaque;
>
> LGTM.
will apply
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
"I am not trying to be anyone's saviour, I'm trying to think about the
future and not be sad" - Elon Musk
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 251 bytes --]
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat
2025-05-17 3:50 [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat Kacper Michajłow
2025-05-17 3:50 ` [FFmpeg-devel] [PATCH 2/2] avformat/imfdec: inherit opaque from parent AVFormatContext Kacper Michajłow
@ 2025-05-17 12:39 ` Andreas Rheinhardt
2025-05-17 13:03 ` Andreas Rheinhardt
1 sibling, 1 reply; 10+ messages in thread
From: Andreas Rheinhardt @ 2025-05-17 12:39 UTC (permalink / raw)
To: ffmpeg-devel
Kacper Michajłow:
> It's not valid to call avio_close() on context that has not been open
> with avio_open().
>
> This fixes use of custom IO. (io_open / io_close2 callbacks)
>
> Note that by default io_close2 is set to io_close2_default() which calls
> avio_close(), so default case will work the same as before.
>
> Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
> ---
> libavformat/demux.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/libavformat/demux.c b/libavformat/demux.c
> index 2795863567..ecd4f40da9 100644
> --- a/libavformat/demux.c
> +++ b/libavformat/demux.c
> @@ -383,11 +383,10 @@ void avformat_close_input(AVFormatContext **ps)
> if (ffifmt(s->iformat)->read_close)
> ffifmt(s->iformat)->read_close(s);
>
> + ff_format_io_close(s, &pb);
> avformat_free_context(s);
>
> *ps = NULL;
> -
> - avio_close(pb);
> }
>
> static void force_codec_ids(AVFormatContext *s, AVStream *st)
avformat_open_input() sets AVFMT_FLAG_CUSTOM_IO when using custom IO and
avformat_close_input() checks for this and does not free the
AVFormatContext's AVIOContext in this case (but does avio_close(NULL) in
this case).
Your patch furthermore presumes that the custom IO context is compatible
with io_close2, which need not be true at all (one can use custom IO
without ever touching io_open/io_close2 pointers; I expect users that
use custom IO, but not formats that open new AVIOContexts to do so).
- Andreas
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat
2025-05-17 12:39 ` [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat Andreas Rheinhardt
@ 2025-05-17 13:03 ` Andreas Rheinhardt
2025-05-17 18:59 ` Kacper Michajlow
2025-05-30 19:47 ` Michael Niedermayer
0 siblings, 2 replies; 10+ messages in thread
From: Andreas Rheinhardt @ 2025-05-17 13:03 UTC (permalink / raw)
To: ffmpeg-devel
Andreas Rheinhardt:
> Kacper Michajłow:
>> It's not valid to call avio_close() on context that has not been open
>> with avio_open().
>>
>> This fixes use of custom IO. (io_open / io_close2 callbacks)
>>
>> Note that by default io_close2 is set to io_close2_default() which calls
>> avio_close(), so default case will work the same as before.
>>
>> Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
>> ---
>> libavformat/demux.c | 3 +--
>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/libavformat/demux.c b/libavformat/demux.c
>> index 2795863567..ecd4f40da9 100644
>> --- a/libavformat/demux.c
>> +++ b/libavformat/demux.c
>> @@ -383,11 +383,10 @@ void avformat_close_input(AVFormatContext **ps)
>> if (ffifmt(s->iformat)->read_close)
>> ffifmt(s->iformat)->read_close(s);
>>
>> + ff_format_io_close(s, &pb);
>> avformat_free_context(s);
>>
>> *ps = NULL;
>> -
>> - avio_close(pb);
>> }
>>
>> static void force_codec_ids(AVFormatContext *s, AVStream *st)
>
> avformat_open_input() sets AVFMT_FLAG_CUSTOM_IO when using custom IO and
> avformat_close_input() checks for this and does not free the
> AVFormatContext's AVIOContext in this case (but does avio_close(NULL) in
> this case).
> Your patch furthermore presumes that the custom IO context is compatible
> with io_close2, which need not be true at all (one can use custom IO
> without ever touching io_open/io_close2 pointers; I expect users that
> use custom IO, but not formats that open new AVIOContexts to do so).
On reading a bit further, init_input() uses io_open to open the
AVIOContext in case no AVIOContext was supplied (and one is needed).
This means that the AVFMT_FLAG_CUSTOM_IO flag is misleading, as it is
possible to use custom IO even with this flag unset. It also means that
your patch is likely correct.
- Andreas
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat
2025-05-17 13:03 ` Andreas Rheinhardt
@ 2025-05-17 18:59 ` Kacper Michajlow
2025-05-30 19:47 ` Michael Niedermayer
1 sibling, 0 replies; 10+ messages in thread
From: Kacper Michajlow @ 2025-05-17 18:59 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Sat, 17 May 2025 at 15:03, Andreas Rheinhardt
<andreas.rheinhardt@outlook.com> wrote:
>
> Andreas Rheinhardt:
> > Kacper Michajłow:
> >> It's not valid to call avio_close() on context that has not been open
> >> with avio_open().
> >>
> >> This fixes use of custom IO. (io_open / io_close2 callbacks)
> >>
> >> Note that by default io_close2 is set to io_close2_default() which calls
> >> avio_close(), so default case will work the same as before.
> >>
> >> Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
> >> ---
> >> libavformat/demux.c | 3 +--
> >> 1 file changed, 1 insertion(+), 2 deletions(-)
> >>
> >> diff --git a/libavformat/demux.c b/libavformat/demux.c
> >> index 2795863567..ecd4f40da9 100644
> >> --- a/libavformat/demux.c
> >> +++ b/libavformat/demux.c
> >> @@ -383,11 +383,10 @@ void avformat_close_input(AVFormatContext **ps)
> >> if (ffifmt(s->iformat)->read_close)
> >> ffifmt(s->iformat)->read_close(s);
> >>
> >> + ff_format_io_close(s, &pb);
> >> avformat_free_context(s);
> >>
> >> *ps = NULL;
> >> -
> >> - avio_close(pb);
> >> }
> >>
> >> static void force_codec_ids(AVFormatContext *s, AVStream *st)
> >
> > avformat_open_input() sets AVFMT_FLAG_CUSTOM_IO when using custom IO and
> > avformat_close_input() checks for this and does not free the
> > AVFormatContext's AVIOContext in this case (but does avio_close(NULL) in
> > this case).
> > Your patch furthermore presumes that the custom IO context is compatible
> > with io_close2, which need not be true at all (one can use custom IO
> > without ever touching io_open/io_close2 pointers; I expect users that
> > use custom IO, but not formats that open new AVIOContexts to do so).
>
> On reading a bit further, init_input() uses io_open to open the
> AVIOContext in case no AVIOContext was supplied (and one is needed).
> This means that the AVFMT_FLAG_CUSTOM_IO flag is misleading, as it is
> possible to use custom IO even with this flag unset. It also means that
> your patch is likely correct.
Exactly. AVFMT_FLAG_CUSTOM_IO is used when an "external" AVIOContext
is provided. This is different when "custom" IO is used by changing
io_open/io_close2, where the lifetime of AVIOContext is still managed
internally, but uses custom implementation. I was initially confused
in exactly the same way you were, but those two "custom/external" IO
are not actually related.
Note that avformat_close_input() already zeroes the `pb` pointer if
the AVIOContext shouldn't be released, so ff_format_io_close() is noop
as expected for the AVFMT_FLAG_CUSTOM_IO case. (same as avio_close()
was).
- Kacper
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat
2025-05-17 13:03 ` Andreas Rheinhardt
2025-05-17 18:59 ` Kacper Michajlow
@ 2025-05-30 19:47 ` Michael Niedermayer
2025-05-30 20:48 ` Andreas Rheinhardt
1 sibling, 1 reply; 10+ messages in thread
From: Michael Niedermayer @ 2025-05-30 19:47 UTC (permalink / raw)
To: FFmpeg development discussions and patches
[-- Attachment #1.1: Type: text/plain, Size: 2300 bytes --]
On Sat, May 17, 2025 at 03:03:19PM +0200, Andreas Rheinhardt wrote:
> Andreas Rheinhardt:
> > Kacper Michajłow:
> >> It's not valid to call avio_close() on context that has not been open
> >> with avio_open().
> >>
> >> This fixes use of custom IO. (io_open / io_close2 callbacks)
> >>
> >> Note that by default io_close2 is set to io_close2_default() which calls
> >> avio_close(), so default case will work the same as before.
> >>
> >> Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
> >> ---
> >> libavformat/demux.c | 3 +--
> >> 1 file changed, 1 insertion(+), 2 deletions(-)
> >>
> >> diff --git a/libavformat/demux.c b/libavformat/demux.c
> >> index 2795863567..ecd4f40da9 100644
> >> --- a/libavformat/demux.c
> >> +++ b/libavformat/demux.c
> >> @@ -383,11 +383,10 @@ void avformat_close_input(AVFormatContext **ps)
> >> if (ffifmt(s->iformat)->read_close)
> >> ffifmt(s->iformat)->read_close(s);
> >>
> >> + ff_format_io_close(s, &pb);
> >> avformat_free_context(s);
> >>
> >> *ps = NULL;
> >> -
> >> - avio_close(pb);
> >> }
> >>
> >> static void force_codec_ids(AVFormatContext *s, AVStream *st)
> >
> > avformat_open_input() sets AVFMT_FLAG_CUSTOM_IO when using custom IO and
> > avformat_close_input() checks for this and does not free the
> > AVFormatContext's AVIOContext in this case (but does avio_close(NULL) in
> > this case).
> > Your patch furthermore presumes that the custom IO context is compatible
> > with io_close2, which need not be true at all (one can use custom IO
> > without ever touching io_open/io_close2 pointers; I expect users that
> > use custom IO, but not formats that open new AVIOContexts to do so).
>
> On reading a bit further, init_input() uses io_open to open the
> AVIOContext in case no AVIOContext was supplied (and one is needed).
> This means that the AVFMT_FLAG_CUSTOM_IO flag is misleading, as it is
> possible to use custom IO even with this flag unset.
> It also means that
> your patch is likely correct.
does any reason remain against applying it ?
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
In a rich man's house there is no place to spit but his face.
-- Diogenes of Sinope
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 251 bytes --]
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat
2025-05-30 19:47 ` Michael Niedermayer
@ 2025-05-30 20:48 ` Andreas Rheinhardt
2025-05-30 22:08 ` Michael Niedermayer
0 siblings, 1 reply; 10+ messages in thread
From: Andreas Rheinhardt @ 2025-05-30 20:48 UTC (permalink / raw)
To: ffmpeg-devel
Michael Niedermayer:
> On Sat, May 17, 2025 at 03:03:19PM +0200, Andreas Rheinhardt wrote:
>> Andreas Rheinhardt:
>>> Kacper Michajłow:
>>>> It's not valid to call avio_close() on context that has not been open
>>>> with avio_open().
>>>>
>>>> This fixes use of custom IO. (io_open / io_close2 callbacks)
>>>>
>>>> Note that by default io_close2 is set to io_close2_default() which calls
>>>> avio_close(), so default case will work the same as before.
>>>>
>>>> Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
>>>> ---
>>>> libavformat/demux.c | 3 +--
>>>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>>>
>>>> diff --git a/libavformat/demux.c b/libavformat/demux.c
>>>> index 2795863567..ecd4f40da9 100644
>>>> --- a/libavformat/demux.c
>>>> +++ b/libavformat/demux.c
>>>> @@ -383,11 +383,10 @@ void avformat_close_input(AVFormatContext **ps)
>>>> if (ffifmt(s->iformat)->read_close)
>>>> ffifmt(s->iformat)->read_close(s);
>>>>
>>>> + ff_format_io_close(s, &pb);
>>>> avformat_free_context(s);
>>>>
>>>> *ps = NULL;
>>>> -
>>>> - avio_close(pb);
>>>> }
>>>>
>>>> static void force_codec_ids(AVFormatContext *s, AVStream *st)
>>>
>>> avformat_open_input() sets AVFMT_FLAG_CUSTOM_IO when using custom IO and
>>> avformat_close_input() checks for this and does not free the
>>> AVFormatContext's AVIOContext in this case (but does avio_close(NULL) in
>>> this case).
>>> Your patch furthermore presumes that the custom IO context is compatible
>>> with io_close2, which need not be true at all (one can use custom IO
>>> without ever touching io_open/io_close2 pointers; I expect users that
>>> use custom IO, but not formats that open new AVIOContexts to do so).
>>
>> On reading a bit further, init_input() uses io_open to open the
>> AVIOContext in case no AVIOContext was supplied (and one is needed).
>> This means that the AVFMT_FLAG_CUSTOM_IO flag is misleading, as it is
>> possible to use custom IO even with this flag unset.
>
>> It also means that
>> your patch is likely correct.
>
> does any reason remain against applying it ?
>
I don't see any.
- Andreas
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat
2025-05-30 20:48 ` Andreas Rheinhardt
@ 2025-05-30 22:08 ` Michael Niedermayer
0 siblings, 0 replies; 10+ messages in thread
From: Michael Niedermayer @ 2025-05-30 22:08 UTC (permalink / raw)
To: FFmpeg development discussions and patches
[-- Attachment #1.1: Type: text/plain, Size: 2588 bytes --]
On Fri, May 30, 2025 at 10:48:29PM +0200, Andreas Rheinhardt wrote:
> Michael Niedermayer:
> > On Sat, May 17, 2025 at 03:03:19PM +0200, Andreas Rheinhardt wrote:
> >> Andreas Rheinhardt:
> >>> Kacper Michajłow:
> >>>> It's not valid to call avio_close() on context that has not been open
> >>>> with avio_open().
> >>>>
> >>>> This fixes use of custom IO. (io_open / io_close2 callbacks)
> >>>>
> >>>> Note that by default io_close2 is set to io_close2_default() which calls
> >>>> avio_close(), so default case will work the same as before.
> >>>>
> >>>> Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
> >>>> ---
> >>>> libavformat/demux.c | 3 +--
> >>>> 1 file changed, 1 insertion(+), 2 deletions(-)
> >>>>
> >>>> diff --git a/libavformat/demux.c b/libavformat/demux.c
> >>>> index 2795863567..ecd4f40da9 100644
> >>>> --- a/libavformat/demux.c
> >>>> +++ b/libavformat/demux.c
> >>>> @@ -383,11 +383,10 @@ void avformat_close_input(AVFormatContext **ps)
> >>>> if (ffifmt(s->iformat)->read_close)
> >>>> ffifmt(s->iformat)->read_close(s);
> >>>>
> >>>> + ff_format_io_close(s, &pb);
> >>>> avformat_free_context(s);
> >>>>
> >>>> *ps = NULL;
> >>>> -
> >>>> - avio_close(pb);
> >>>> }
> >>>>
> >>>> static void force_codec_ids(AVFormatContext *s, AVStream *st)
> >>>
> >>> avformat_open_input() sets AVFMT_FLAG_CUSTOM_IO when using custom IO and
> >>> avformat_close_input() checks for this and does not free the
> >>> AVFormatContext's AVIOContext in this case (but does avio_close(NULL) in
> >>> this case).
> >>> Your patch furthermore presumes that the custom IO context is compatible
> >>> with io_close2, which need not be true at all (one can use custom IO
> >>> without ever touching io_open/io_close2 pointers; I expect users that
> >>> use custom IO, but not formats that open new AVIOContexts to do so).
> >>
> >> On reading a bit further, init_input() uses io_open to open the
> >> AVIOContext in case no AVIOContext was supplied (and one is needed).
> >> This means that the AVFMT_FLAG_CUSTOM_IO flag is misleading, as it is
> >> possible to use custom IO even with this flag unset.
> >
> >> It also means that
> >> your patch is likely correct.
> >
> > does any reason remain against applying it ?
> >
>
> I don't see any.
ok, will apply it then
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
What is kyc? Its a tool that makes you give out your real ID, while criminals
give out a forged ID card.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 251 bytes --]
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-05-30 22:08 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-05-17 3:50 [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat Kacper Michajłow
2025-05-17 3:50 ` [FFmpeg-devel] [PATCH 2/2] avformat/imfdec: inherit opaque from parent AVFormatContext Kacper Michajłow
2025-05-17 4:15 ` Pierre-Anthony Lemieux
2025-05-22 22:58 ` Michael Niedermayer
2025-05-17 12:39 ` [FFmpeg-devel] [PATCH 1/2] avformat/demux: use io_close2 when closing avfromat Andreas Rheinhardt
2025-05-17 13:03 ` Andreas Rheinhardt
2025-05-17 18:59 ` Kacper Michajlow
2025-05-30 19:47 ` Michael Niedermayer
2025-05-30 20:48 ` Andreas Rheinhardt
2025-05-30 22:08 ` Michael Niedermayer
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git