Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [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 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 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 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