[FFmpeg-devel] [PATCH] Make Immersive Audio Model optional for MOV demuxing

2024-03-27 Thread Eugene Zemtsov via ffmpeg-devel
From: Eugene Zemtsov 

Signed-off-by: Eugene Zemtsov 
---
 libavformat/mov.c | 15 ++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index c55778f3ef..662301bf67 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -839,6 +839,7 @@ static int mov_read_dac3(MOVContext *c, AVIOContext *pb, 
MOVAtom atom)
 return 0;
 }
 
+#if CONFIG_IAMFDEC
 static int mov_read_iacb(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 {
 AVStream *st;
@@ -1015,6 +1016,7 @@ fail:
 
 return ret;
 }
+#endif
 
 static int mov_read_dec3(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 {
@@ -4797,6 +4799,7 @@ static void fix_timescale(MOVContext *c, MOVStreamContext 
*sc)
 }
 }
 
+#if CONFIG_IAMFDEC
 static int mov_update_iamf_streams(MOVContext *c, const AVStream *st)
 {
 const MOVStreamContext *sc = st->priv_data;
@@ -4840,6 +4843,7 @@ static int mov_update_iamf_streams(MOVContext *c, const 
AVStream *st)
 
 return 0;
 }
+#endif
 
 static int mov_read_trak(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 {
@@ -4921,11 +4925,13 @@ static int mov_read_trak(MOVContext *c, AVIOContext 
*pb, MOVAtom atom)
 
 mov_build_index(c, st);
 
+#if CONFIG_IAMFDEC
 if (sc->iamf) {
 ret = mov_update_iamf_streams(c, st);
 if (ret < 0)
 return ret;
 }
+#endif
 
 if (sc->dref_id-1 < sc->drefs_count && sc->drefs[sc->dref_id-1].path) {
 MOVDref *dref = &sc->drefs[sc->dref_id - 1];
@@ -8457,7 +8463,9 @@ static const MOVParseTableEntry mov_default_parse_table[] 
= {
 { MKTAG('i','p','r','p'), mov_read_iprp },
 { MKTAG('i','i','n','f'), mov_read_iinf },
 { MKTAG('a','m','v','e'), mov_read_amve }, /* ambient viewing environment box 
*/
+#if CONFIG_IAMFDEC
 { MKTAG('i','a','c','b'), mov_read_iacb },
+#endif
 { 0, NULL }
 };
 
@@ -8929,8 +8937,10 @@ static void mov_free_stream_context(AVFormatContext *s, 
AVStream *st)
 av_freep(&sc->coll);
 av_freep(&sc->ambient);
 
+#if CONFIG_IAMFDEC
 if (sc->iamf)
 ff_iamf_read_deinit(sc->iamf);
+#endif
 av_freep(&sc->iamf);
 }
 
@@ -9570,6 +9580,7 @@ static int mov_read_packet(AVFormatContext *s, AVPacket 
*pkt)
 
 if (st->codecpar->codec_id == AV_CODEC_ID_EIA_608 && sample->size > 8)
 ret = get_eia608_packet(sc->pb, pkt, sample->size);
+#if CONFIG_IAMFDEC
 else if (sc->iamf) {
 int64_t pts, dts, pos, duration;
 int flags, size = sample->size;
@@ -9592,7 +9603,9 @@ static int mov_read_packet(AVFormatContext *s, AVPacket 
*pkt)
 }
 if (!ret)
 return FFERROR_REDO;
-} else
+}
+#endif
+else
 ret = av_get_packet(sc->pb, pkt, sample->size);
 if (ret < 0) {
 if (should_retry(sc->pb, ret)) {
-- 
2.44.0.396.g6e790dbe36-goog

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] Make Immersive Audio Model optional for MOV demuxing

2024-03-27 Thread Eugene Zemtsov via ffmpeg-devel
> Can you elaborate why you need this? In configure the mov demuxer
> selects iamfdec, so it will always be present and compiled.

Chromium doesn't use Immersive Audio, but the code for handling it
bloats Android binaries,
that's why we disabled it.

I have a second patch that disables iamfdec by default for mov demuxer,
but I had a feeling that maintainers will be less inclined to accept
it and that's why I split it from this one.
I will still try to send it if this patch is accepted.


On Wed, Mar 27, 2024 at 4:59 PM James Almer  wrote:
>
> On 3/27/2024 8:55 PM, Eugene Zemtsov via ffmpeg-devel wrote:
> > From: Eugene Zemtsov 
> >
> > Signed-off-by: Eugene Zemtsov 
> > ---
> >   libavformat/mov.c | 15 ++-
> >   1 file changed, 14 insertions(+), 1 deletion(-)
> >
> > diff --git a/libavformat/mov.c b/libavformat/mov.c
> > index c55778f3ef..662301bf67 100644
> > --- a/libavformat/mov.c
> > +++ b/libavformat/mov.c
> > @@ -839,6 +839,7 @@ static int mov_read_dac3(MOVContext *c, AVIOContext 
> > *pb, MOVAtom atom)
> >   return 0;
> >   }
> >
> > +#if CONFIG_IAMFDEC
> >   static int mov_read_iacb(MOVContext *c, AVIOContext *pb, MOVAtom atom)
> >   {
> >   AVStream *st;
> > @@ -1015,6 +1016,7 @@ fail:
> >
> >   return ret;
> >   }
> > +#endif
> >
> >   static int mov_read_dec3(MOVContext *c, AVIOContext *pb, MOVAtom atom)
> >   {
> > @@ -4797,6 +4799,7 @@ static void fix_timescale(MOVContext *c, 
> > MOVStreamContext *sc)
> >   }
> >   }
> >
> > +#if CONFIG_IAMFDEC
> >   static int mov_update_iamf_streams(MOVContext *c, const AVStream *st)
> >   {
> >   const MOVStreamContext *sc = st->priv_data;
> > @@ -4840,6 +4843,7 @@ static int mov_update_iamf_streams(MOVContext *c, 
> > const AVStream *st)
> >
> >   return 0;
> >   }
> > +#endif
> >
> >   static int mov_read_trak(MOVContext *c, AVIOContext *pb, MOVAtom atom)
> >   {
> > @@ -4921,11 +4925,13 @@ static int mov_read_trak(MOVContext *c, AVIOContext 
> > *pb, MOVAtom atom)
> >
> >   mov_build_index(c, st);
> >
> > +#if CONFIG_IAMFDEC
> >   if (sc->iamf) {
> >   ret = mov_update_iamf_streams(c, st);
> >   if (ret < 0)
> >   return ret;
> >   }
> > +#endif
> >
> >   if (sc->dref_id-1 < sc->drefs_count && sc->drefs[sc->dref_id-1].path) 
> > {
> >   MOVDref *dref = &sc->drefs[sc->dref_id - 1];
> > @@ -8457,7 +8463,9 @@ static const MOVParseTableEntry 
> > mov_default_parse_table[] = {
> >   { MKTAG('i','p','r','p'), mov_read_iprp },
> >   { MKTAG('i','i','n','f'), mov_read_iinf },
> >   { MKTAG('a','m','v','e'), mov_read_amve }, /* ambient viewing environment 
> > box */
> > +#if CONFIG_IAMFDEC
> >   { MKTAG('i','a','c','b'), mov_read_iacb },
> > +#endif
> >   { 0, NULL }
> >   };
> >
> > @@ -8929,8 +8937,10 @@ static void mov_free_stream_context(AVFormatContext 
> > *s, AVStream *st)
> >   av_freep(&sc->coll);
> >   av_freep(&sc->ambient);
> >
> > +#if CONFIG_IAMFDEC
> >   if (sc->iamf)
> >   ff_iamf_read_deinit(sc->iamf);
> > +#endif
> >   av_freep(&sc->iamf);
> >   }
> >
> > @@ -9570,6 +9580,7 @@ static int mov_read_packet(AVFormatContext *s, 
> > AVPacket *pkt)
> >
> >   if (st->codecpar->codec_id == AV_CODEC_ID_EIA_608 && sample->size 
> > > 8)
> >   ret = get_eia608_packet(sc->pb, pkt, sample->size);
> > +#if CONFIG_IAMFDEC
> >   else if (sc->iamf) {
> >   int64_t pts, dts, pos, duration;
> >   int flags, size = sample->size;
> > @@ -9592,7 +9603,9 @@ static int mov_read_packet(AVFormatContext *s, 
> > AVPacket *pkt)
> >   }
> >   if (!ret)
> >   return FFERROR_REDO;
> > -} else
> > +}
> > +#endif
> > +else
> >   ret = av_get_packet(sc->pb, pkt, sample->size);
> >   if (ret < 0) {
> >   if (should_retry(sc->pb, ret)) {
>
> Can you elaborate why you need this? In configure the mov demuxer
> selects iamfdec, so it will always be present and compiled.
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".



-- 
Thanks,
Eugene Zemtsov.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH] mov demuxer: Check if a key is longer than the atom containing it

2024-04-01 Thread Eugene Zemtsov via ffmpeg-devel
From: Eugene Zemtsov 

Stop reading keys and return AVERROR_INVALIDDATA if key_size
is larger than the amount of space left in the atom.

Bug: https://crbug.com/41496983
Signed-off-by: Eugene Zemtsov 
---
 libavformat/mov.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 662301bf67..5d2f7fa690 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -5045,15 +5045,18 @@ static int mov_read_keys(MOVContext *c, AVIOContext 
*pb, MOVAtom atom)
 if (!c->meta_keys)
 return AVERROR(ENOMEM);
 
+uint32_t bytes_left_in_atom = atom.size;
 for (i = 1; i <= count; ++i) {
 uint32_t key_size = avio_rb32(pb);
 uint32_t type = avio_rl32(pb);
-if (key_size < 8) {
+if (key_size < 8 || key_size > bytes_left_in_atom) {
 av_log(c->fc, AV_LOG_ERROR,
"The key# %"PRIu32" in meta has invalid size:"
"%"PRIu32"\n", i, key_size);
 return AVERROR_INVALIDDATA;
 }
+
+bytes_left_in_atom -= key_size;
 key_size -= 8;
 if (type != MKTAG('m','d','t','a')) {
 avio_skip(pb, key_size);
-- 
2.44.0.478.gd926399ef9-goog

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] mov demuxer: Check if a key is longer than the atom containing it

2024-04-01 Thread Eugene Zemtsov via ffmpeg-devel
Thanks for the comments. I got rid of bytes_left_in_atom.

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH] mov demuxer: Check if a key is longer than the atom containing it

2024-04-01 Thread Eugene Zemtsov via ffmpeg-devel
From: Eugene Zemtsov 

Stop reading keys and return AVERROR_INVALIDDATA if key_size
is larger than the amount of space left in the atom.

Bug: https://crbug.com/41496983
Signed-off-by: Eugene Zemtsov 
---
 libavformat/mov.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 662301bf67..2d92e7963b 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -5048,12 +5048,13 @@ static int mov_read_keys(MOVContext *c, AVIOContext 
*pb, MOVAtom atom)
 for (i = 1; i <= count; ++i) {
 uint32_t key_size = avio_rb32(pb);
 uint32_t type = avio_rl32(pb);
-if (key_size < 8) {
+if (key_size < 8 || key_size > atom.size) {
 av_log(c->fc, AV_LOG_ERROR,
"The key# %"PRIu32" in meta has invalid size:"
"%"PRIu32"\n", i, key_size);
 return AVERROR_INVALIDDATA;
 }
+atom.size -= key_size;
 key_size -= 8;
 if (type != MKTAG('m','d','t','a')) {
 avio_skip(pb, key_size);
-- 
2.44.0.478.gd926399ef9-goog

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] Make Immersive Audio Model optional for MOV demuxing

2024-04-02 Thread Eugene Zemtsov via ffmpeg-devel
Is there anything I can do to get this path applied?
I can make iamfdec optional for mov demuxer in the same change if it's
something you're willing to do.

On Wed, Mar 27, 2024 at 5:43 PM Eugene Zemtsov  wrote:
>
> > Can you elaborate why you need this? In configure the mov demuxer
> > selects iamfdec, so it will always be present and compiled.
>
> Chromium doesn't use Immersive Audio, but the code for handling it
> bloats Android binaries,
> that's why we disabled it.
>
> I have a second patch that disables iamfdec by default for mov demuxer,
> but I had a feeling that maintainers will be less inclined to accept
> it and that's why I split it from this one.
> I will still try to send it if this patch is accepted.
>
>
> On Wed, Mar 27, 2024 at 4:59 PM James Almer  wrote:
> >
> > On 3/27/2024 8:55 PM, Eugene Zemtsov via ffmpeg-devel wrote:
> > > From: Eugene Zemtsov 
> > >
> > > Signed-off-by: Eugene Zemtsov 
> > > ---
> > >   libavformat/mov.c | 15 ++-
> > >   1 file changed, 14 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/libavformat/mov.c b/libavformat/mov.c
> > > index c55778f3ef..662301bf67 100644
> > > --- a/libavformat/mov.c
> > > +++ b/libavformat/mov.c
> > > @@ -839,6 +839,7 @@ static int mov_read_dac3(MOVContext *c, AVIOContext 
> > > *pb, MOVAtom atom)
> > >   return 0;
> > >   }
> > >
> > > +#if CONFIG_IAMFDEC
> > >   static int mov_read_iacb(MOVContext *c, AVIOContext *pb, MOVAtom atom)
> > >   {
> > >   AVStream *st;
> > > @@ -1015,6 +1016,7 @@ fail:
> > >
> > >   return ret;
> > >   }
> > > +#endif
> > >
> > >   static int mov_read_dec3(MOVContext *c, AVIOContext *pb, MOVAtom atom)
> > >   {
> > > @@ -4797,6 +4799,7 @@ static void fix_timescale(MOVContext *c, 
> > > MOVStreamContext *sc)
> > >   }
> > >   }
> > >
> > > +#if CONFIG_IAMFDEC
> > >   static int mov_update_iamf_streams(MOVContext *c, const AVStream *st)
> > >   {
> > >   const MOVStreamContext *sc = st->priv_data;
> > > @@ -4840,6 +4843,7 @@ static int mov_update_iamf_streams(MOVContext *c, 
> > > const AVStream *st)
> > >
> > >   return 0;
> > >   }
> > > +#endif
> > >
> > >   static int mov_read_trak(MOVContext *c, AVIOContext *pb, MOVAtom atom)
> > >   {
> > > @@ -4921,11 +4925,13 @@ static int mov_read_trak(MOVContext *c, 
> > > AVIOContext *pb, MOVAtom atom)
> > >
> > >   mov_build_index(c, st);
> > >
> > > +#if CONFIG_IAMFDEC
> > >   if (sc->iamf) {
> > >   ret = mov_update_iamf_streams(c, st);
> > >   if (ret < 0)
> > >   return ret;
> > >   }
> > > +#endif
> > >
> > >   if (sc->dref_id-1 < sc->drefs_count && 
> > > sc->drefs[sc->dref_id-1].path) {
> > >   MOVDref *dref = &sc->drefs[sc->dref_id - 1];
> > > @@ -8457,7 +8463,9 @@ static const MOVParseTableEntry 
> > > mov_default_parse_table[] = {
> > >   { MKTAG('i','p','r','p'), mov_read_iprp },
> > >   { MKTAG('i','i','n','f'), mov_read_iinf },
> > >   { MKTAG('a','m','v','e'), mov_read_amve }, /* ambient viewing 
> > > environment box */
> > > +#if CONFIG_IAMFDEC
> > >   { MKTAG('i','a','c','b'), mov_read_iacb },
> > > +#endif
> > >   { 0, NULL }
> > >   };
> > >
> > > @@ -8929,8 +8937,10 @@ static void 
> > > mov_free_stream_context(AVFormatContext *s, AVStream *st)
> > >   av_freep(&sc->coll);
> > >   av_freep(&sc->ambient);
> > >
> > > +#if CONFIG_IAMFDEC
> > >   if (sc->iamf)
> > >   ff_iamf_read_deinit(sc->iamf);
> > > +#endif
> > >   av_freep(&sc->iamf);
> > >   }
> > >
> > > @@ -9570,6 +9580,7 @@ static int mov_read_packet(AVFormatContext *s, 
> > > AVPacket *pkt)
> > >
> > >   if (st->codecpar->codec_id == AV_CODEC_ID_EIA_608 && 
> > > sample->size > 8)
> > >   ret = get_eia608_packet(sc->pb, pkt, sample->size);
> > > +#if CONFIG_IAMFDEC
> > >   else

[FFmpeg-devel] [PATCH] configure: Separate subsystem for Immersive Audio Model

2024-04-02 Thread Eugene Zemtsov via ffmpeg-devel
From: Eugene Zemtsov 

This change allows users to link ffmpeg as a library without
support for Immersive Audio Model by specifying --disable-iamf.
It helps to save on binary size in cases where it's important.

Signed-off-by: Eugene Zemtsov 
---
 configure |  7 ++-
 libavformat/mov.c | 15 ++-
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index d03e7e1631..56cc03f68a 100755
--- a/configure
+++ b/configure
@@ -141,6 +141,7 @@ Component options:
   --disable-lspdisable LSP code
   --disable-faan   disable floating point AAN (I)DCT code
   --disable-pixelutils disable pixel utils in libavutil
+  --disable-iamf   disable support for Immersive Audio Model
 
 Individual component options:
   --disable-everything disable all components listed below
@@ -2018,6 +2019,7 @@ SUBSYSTEM_LIST="
 lsp
 pixelutils
 network
+iamf
 "
 
 # COMPONENT_LIST needs to come last to ensure correct dependency checking
@@ -2806,6 +2808,8 @@ mpegvideoenc_select="aandcttables fdctdsp me_cmp 
mpegvideo pixblockdsp"
 msmpeg4dec_select="h263_decoder"
 msmpeg4enc_select="h263_encoder"
 vc1dsp_select="h264chroma qpeldsp startcode"
+iamfdec_deps="iamf"
+iamfenc_deps="iamf"
 
 # decoders / encoders
 aac_decoder_select="adts_header mpeg4audio sinewin"
@@ -3552,7 +3556,7 @@ matroska_demuxer_suggest="bzlib zlib"
 matroska_muxer_select="mpeg4audio riffenc aac_adtstoasc_bsf 
pgs_frame_merge_bsf vp9_superframe_bsf"
 mlp_demuxer_select="mlp_parser"
 mmf_muxer_select="riffenc"
-mov_demuxer_select="iso_media riffdec iamfdec"
+mov_demuxer_select="iso_media riffdec"
 mov_demuxer_suggest="zlib"
 mov_muxer_select="iso_media riffenc rtpenc_chain vp9_superframe_bsf 
aac_adtstoasc_bsf ac3_parser"
 mp3_demuxer_select="mpegaudio_parser"
@@ -4029,6 +4033,7 @@ enable safe_bitstream_reader
 enable static
 enable swscale_alpha
 enable valgrind_backtrace
+enable iamf iamfdec iamfenc
 
 sws_max_filter_size_default=256
 set_default sws_max_filter_size
diff --git a/libavformat/mov.c b/libavformat/mov.c
index c55778f3ef..662301bf67 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -839,6 +839,7 @@ static int mov_read_dac3(MOVContext *c, AVIOContext *pb, 
MOVAtom atom)
 return 0;
 }
 
+#if CONFIG_IAMFDEC
 static int mov_read_iacb(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 {
 AVStream *st;
@@ -1015,6 +1016,7 @@ fail:
 
 return ret;
 }
+#endif
 
 static int mov_read_dec3(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 {
@@ -4797,6 +4799,7 @@ static void fix_timescale(MOVContext *c, MOVStreamContext 
*sc)
 }
 }
 
+#if CONFIG_IAMFDEC
 static int mov_update_iamf_streams(MOVContext *c, const AVStream *st)
 {
 const MOVStreamContext *sc = st->priv_data;
@@ -4840,6 +4843,7 @@ static int mov_update_iamf_streams(MOVContext *c, const 
AVStream *st)
 
 return 0;
 }
+#endif
 
 static int mov_read_trak(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 {
@@ -4921,11 +4925,13 @@ static int mov_read_trak(MOVContext *c, AVIOContext 
*pb, MOVAtom atom)
 
 mov_build_index(c, st);
 
+#if CONFIG_IAMFDEC
 if (sc->iamf) {
 ret = mov_update_iamf_streams(c, st);
 if (ret < 0)
 return ret;
 }
+#endif
 
 if (sc->dref_id-1 < sc->drefs_count && sc->drefs[sc->dref_id-1].path) {
 MOVDref *dref = &sc->drefs[sc->dref_id - 1];
@@ -8457,7 +8463,9 @@ static const MOVParseTableEntry mov_default_parse_table[] 
= {
 { MKTAG('i','p','r','p'), mov_read_iprp },
 { MKTAG('i','i','n','f'), mov_read_iinf },
 { MKTAG('a','m','v','e'), mov_read_amve }, /* ambient viewing environment box 
*/
+#if CONFIG_IAMFDEC
 { MKTAG('i','a','c','b'), mov_read_iacb },
+#endif
 { 0, NULL }
 };
 
@@ -8929,8 +8937,10 @@ static void mov_free_stream_context(AVFormatContext *s, 
AVStream *st)
 av_freep(&sc->coll);
 av_freep(&sc->ambient);
 
+#if CONFIG_IAMFDEC
 if (sc->iamf)
 ff_iamf_read_deinit(sc->iamf);
+#endif
 av_freep(&sc->iamf);
 }
 
@@ -9570,6 +9580,7 @@ static int mov_read_packet(AVFormatContext *s, AVPacket 
*pkt)
 
 if (st->codecpar->codec_id == AV_CODEC_ID_EIA_608 && sample->size > 8)
 ret = get_eia608_packet(sc->pb, pkt, sample->size);
+#if CONFIG_IAMFDEC
 else if (sc->iamf) {
 int64_t pts, dts, pos, duration;
 int flags, size = sample->size;
@@ -9592,7 +9603,9 @@ static int mov_read_packet(AVFormatContext *s, AVPacket 
*pkt)
 }
 if (!ret)
 return FFERROR_REDO;
-} else
+}
+#endif
+else
 ret = av_get_packet(sc->pb, pkt, sample->size);
 if (ret < 0) {
 if (should_retry(sc->pb, ret)) {
-- 
2.44.0.478.gd926399ef9-goog

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-devel] [PATCH] Fix incorrect enum type used for a local variable

2024-10-24 Thread Eugene Zemtsov via ffmpeg-devel
From: Eugene Zemtsov 

It's AVPacketSideDataType, not AVFrameSideDataType.

Bug: https://issues.chromium.org/issues/374797732
Change-Id: If75702c6d639ca63827cc3370477de00544d3c0f
Reviewed-on: 
https://chromium-review.googlesource.com/c/chromium/third_party/ffmpeg/+/5950926
Reviewed-by: Ted (Chromium) Meyer 
---
 libavcodec/decode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index c331bb8596..fbb6be2971 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -1466,7 +1466,7 @@ static int side_data_map(AVFrame *dst,
 
 {
 for (int i = 0; map[i].packet < AV_PKT_DATA_NB; i++) {
-const enum AVFrameSideDataType type_pkt   = map[i].packet;
+const enum AVPacketSideDataType type_pkt   = map[i].packet;
 const enum AVFrameSideDataType type_frame = map[i].frame;
 const AVPacketSideData *sd_pkt;
 AVFrameSideData *sd_frame;
-- 
2.47.0.163.g1226f6d8fa-goog

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] Fix crash when trying to get a fragment time for a non-existing fragment

2024-11-05 Thread Eugene Zemtsov via ffmpeg-devel
Any feedback?

On Thu, Oct 24, 2024 at 6:54 PM  wrote:

> From: Eugene Zemtsov 
>
> Bug: https://issues.chromium.org/issues/372994341
> Change-Id: I695d625717c078ed6f84f44e58c34da858af4d3b
> Reviewed-on:
> https://chromium-review.googlesource.com/c/chromium/third_party/ffmpeg/+/5958151
> Reviewed-by
> :
> Dale Curtis 
> ---
>  libavformat/mov.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index b4390be44f..f213fd5b22 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -1672,6 +1672,8 @@ static int64_t get_frag_time(AVFormatContext *s,
> AVStream *dst_st,
>  // to fragments that referenced this stream in the sidx
>  if (sc->has_sidx) {
>  frag_stream_info = get_frag_stream_info(frag_index, index,
> sc->id);
> +if (!frag_stream_info)
> +return AV_NOPTS_VALUE;
>  if (frag_stream_info->sidx_pts != AV_NOPTS_VALUE)
>  return frag_stream_info->sidx_pts;
>  if (frag_stream_info->first_tfra_pts != AV_NOPTS_VALUE)
> --
> 2.47.0.163.g1226f6d8fa-goog
>
>

-- 
Thanks,
Eugene Zemtsov.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] Fix incorrect enum type used for a local variable

2024-11-05 Thread Eugene Zemtsov via ffmpeg-devel
Any feedback?

On Thu, Oct 24, 2024 at 6:52 PM  wrote:

> From: Eugene Zemtsov 
>
> It's AVPacketSideDataType, not AVFrameSideDataType.
>
> Bug: https://issues.chromium.org/issues/374797732
> Change-Id: If75702c6d639ca63827cc3370477de00544d3c0f
> Reviewed-on:
> https://chromium-review.googlesource.com/c/chromium/third_party/ffmpeg/+/5950926
> Reviewed-by
> :
> Ted (Chromium) Meyer 
> ---
>  libavcodec/decode.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavcodec/decode.c b/libavcodec/decode.c
> index c331bb8596..fbb6be2971 100644
> --- a/libavcodec/decode.c
> +++ b/libavcodec/decode.c
> @@ -1466,7 +1466,7 @@ static int side_data_map(AVFrame *dst,
>
>  {
>  for (int i = 0; map[i].packet < AV_PKT_DATA_NB; i++) {
> -const enum AVFrameSideDataType type_pkt   = map[i].packet;
> +const enum AVPacketSideDataType type_pkt   = map[i].packet;
>  const enum AVFrameSideDataType type_frame = map[i].frame;
>  const AVPacketSideData *sd_pkt;
>  AVFrameSideData *sd_frame;
> --
> 2.47.0.163.g1226f6d8fa-goog
>
>

-- 
Thanks,
Eugene Zemtsov.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


Re: [FFmpeg-devel] [PATCH] Fix incorrect enum type used for a local variable

2024-11-08 Thread Eugene Zemtsov via ffmpeg-devel
In order to reproduce the problem you need to compile with warnings as
errors and "enum-conversion" warning enabled.
This is the what clang complains about:

../../third_party/ffmpeg/libavcodec/decode.c:1469:60: error: implicit
conversion from enumeration type 'const enum AVPacketSideDataType' to
different enumeration type 'enum AVFrameSideDataType'
[-Werror,-Wenum-conversion]
 1469 | const enum AVFrameSideDataType type_pkt   = map[i].packet;
  | ~~~^~
../../third_party/ffmpeg/libavcodec/decode.c:1474:58: error: implicit
conversion from enumeration type 'const enum AVFrameSideDataType' to
different enumeration type 'enum AVPacketSideDataType'
[-Werror,-Wenum-conversion]
 1474 | sd_pkt = packet_side_data_get(sd_src, nb_sd_src, type_pkt);
  |  ^~~~


On Fri, Nov 8, 2024 at 10:11 AM Marth64  wrote:

> Eugene Zemtsov:
>
> LGTM. Is there a way to reproduce any bug that this fixes?
>
> Will test for side effects and wait for a few days in case anyone has
> comments or concerns.
>
> Thank you
>


-- 
Thanks,
Eugene Zemtsov.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


[FFmpeg-devel] [PATCH] Fix crash when trying to get a fragment time for a non-existing fragment

2024-10-24 Thread Eugene Zemtsov via ffmpeg-devel
From: Eugene Zemtsov 

Bug: https://issues.chromium.org/issues/372994341
Change-Id: I695d625717c078ed6f84f44e58c34da858af4d3b
Reviewed-on: 
https://chromium-review.googlesource.com/c/chromium/third_party/ffmpeg/+/5958151
Reviewed-by: Dale Curtis 
---
 libavformat/mov.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index b4390be44f..f213fd5b22 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1672,6 +1672,8 @@ static int64_t get_frag_time(AVFormatContext *s, AVStream 
*dst_st,
 // to fragments that referenced this stream in the sidx
 if (sc->has_sidx) {
 frag_stream_info = get_frag_stream_info(frag_index, index, sc->id);
+if (!frag_stream_info)
+return AV_NOPTS_VALUE;
 if (frag_stream_info->sidx_pts != AV_NOPTS_VALUE)
 return frag_stream_info->sidx_pts;
 if (frag_stream_info->first_tfra_pts != AV_NOPTS_VALUE)
-- 
2.47.0.163.g1226f6d8fa-goog

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".