Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ffmpeg-7 for openSUSE:Factory checked in at 2024-08-06 09:08:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ffmpeg-7 (Old) and /work/SRC/openSUSE:Factory/.ffmpeg-7.new.7232 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ffmpeg-7" Tue Aug 6 09:08:13 2024 rev:5 rq:1191766 version:7.0 Changes: -------- --- /work/SRC/openSUSE:Factory/ffmpeg-7/ffmpeg-7.changes 2024-08-01 22:05:45.651761516 +0200 +++ /work/SRC/openSUSE:Factory/.ffmpeg-7.new.7232/ffmpeg-7.changes 2024-08-06 09:08:39.798529445 +0200 @@ -1,0 +2,7 @@ +Sat Aug 3 08:52:26 UTC 2024 - Cliff Zhao <qz...@suse.com> + +- Add ffmpeg-7-fix-crashes.patch: + Backporting 5b87869c from upstream, fix track handling when mixing + IAMF and video tracks, Fixes crashes when muxing the two together. + +------------------------------------------------------------------- New: ---- ffmpeg-7-fix-crashes.patch BETA DEBUG BEGIN: New: - Add ffmpeg-7-fix-crashes.patch: Backporting 5b87869c from upstream, fix track handling when mixing BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ffmpeg-7.spec ++++++ --- /var/tmp/diff_new_pack.78AvcS/_old 2024-08-06 09:08:40.974577875 +0200 +++ /var/tmp/diff_new_pack.78AvcS/_new 2024-08-06 09:08:40.974577875 +0200 @@ -112,6 +112,7 @@ Patch92: ffmpeg-7-CVE-2024-32228.patch Patch93: ffmpeg-7-CVE-2024-32230.patch Patch94: ffmpeg-7-CVE-2024-32229.patch +Patch95: ffmpeg-7-fix-crashes.patch BuildRequires: ladspa-devel BuildRequires: libgsm-devel BuildRequires: libmp3lame-devel >= 3.98.3 @@ -827,6 +828,7 @@ Patch92: ffmpeg-7-CVE-2024-32228.patch Patch93: ffmpeg-7-CVE-2024-32230.patch Patch94: ffmpeg-7-CVE-2024-32229.patch +Patch95: ffmpeg-7-fix-crashes.patch BuildRequires: c_compiler Requires: this-is-only-for-build-envs ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.78AvcS/_old 2024-08-06 09:08:41.030580181 +0200 +++ /var/tmp/diff_new_pack.78AvcS/_new 2024-08-06 09:08:41.034580346 +0200 @@ -1,5 +1,5 @@ -mtime: 1722482697 -commit: c11c165366f5efd4f76b39c067ee40963b935711f86e1d14fd08ef565763b0fc +mtime: 1722848252 +commit: 8c17f41823d4600460b89dd35ff0365d154e30b5ae64f6d51ca6e5862223987c url: https://src.opensuse.org/jengelh/ffmpeg-7 revision: master ++++++ build.specials.obscpio ++++++ diff: old/*: No such file or directory diff: new/*: No such file or directory ++++++ ffmpeg-7-fix-crashes.patch ++++++ >From 5b87869c09cece1583e74b6f796aa825a4765631 Mon Sep 17 00:00:00 2001 From: James Almer <jamr...@gmail.com> Date: Wed, 31 Jul 2024 22:19:53 -0300 Subject: [PATCH] avformat/mov: fix track handling when mixing IAMF and video tracks Fixes crashes when muxing the two together. Signed-off-by: James Almer <jamr...@gmail.com> --- libavformat/movenc.c | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index e40948edb8..d20d0bc064 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -7149,7 +7149,9 @@ static int mov_create_dvd_sub_decoder_specific_info(MOVTrack *track, static int mov_init_iamf_track(AVFormatContext *s) { MOVMuxContext *mov = s->priv_data; - MOVTrack *track = &mov->tracks[0]; // IAMF if present is always the first track + MOVTrack *track; + IAMFContext *iamf; + int first_iamf_idx = INT_MAX, last_iamf_idx = 0; int nb_audio_elements = 0, nb_mix_presentations = 0; int ret; @@ -7171,24 +7173,24 @@ static int mov_init_iamf_track(AVFormatContext *s) return AVERROR(EINVAL); } - track->iamf = av_mallocz(sizeof(*track->iamf)); - if (!track->iamf) + iamf = av_mallocz(sizeof(*iamf)); + if (!iamf) return AVERROR(ENOMEM); + for (int i = 0; i < s->nb_stream_groups; i++) { const AVStreamGroup *stg = s->stream_groups[i]; switch(stg->type) { case AV_STREAM_GROUP_PARAMS_IAMF_AUDIO_ELEMENT: for (int j = 0; j < stg->nb_streams; j++) { - track->first_iamf_idx = FFMIN(stg->streams[j]->index, track->first_iamf_idx); - track->last_iamf_idx = FFMAX(stg->streams[j]->index, track->last_iamf_idx); - stg->streams[j]->priv_data = track; + first_iamf_idx = FFMIN(stg->streams[j]->index, first_iamf_idx); + last_iamf_idx = FFMAX(stg->streams[j]->index, last_iamf_idx); } - ret = ff_iamf_add_audio_element(track->iamf, stg, s); + ret = ff_iamf_add_audio_element(iamf, stg, s); break; case AV_STREAM_GROUP_PARAMS_IAMF_MIX_PRESENTATION: - ret = ff_iamf_add_mix_presentation(track->iamf, stg, s); + ret = ff_iamf_add_mix_presentation(iamf, stg, s); break; default: av_assert0(0); @@ -7197,8 +7199,20 @@ static int mov_init_iamf_track(AVFormatContext *s) return ret; } + track = &mov->tracks[first_iamf_idx]; + track->iamf = iamf; + track->first_iamf_idx = first_iamf_idx; + track->last_iamf_idx = last_iamf_idx; track->tag = MKTAG('i','a','m','f'); + for (int i = 0; i < s->nb_stream_groups; i++) { + AVStreamGroup *stg = s->stream_groups[i]; + if (stg->type != AV_STREAM_GROUP_PARAMS_IAMF_AUDIO_ELEMENT) + continue; + for (int j = 0; j < stg->nb_streams; j++) + stg->streams[j]->priv_data = track; + } + ret = avio_open_dyn_buf(&track->iamf_buf); if (ret < 0) return ret; @@ -7209,6 +7223,7 @@ static int mov_init_iamf_track(AVFormatContext *s) static int mov_init(AVFormatContext *s) { MOVMuxContext *mov = s->priv_data; + int has_iamf = 0; int i, ret; mov->fc = s; @@ -7359,6 +7374,7 @@ static int mov_init(AVFormatContext *s) } st->priv_data = st; } + has_iamf = 1; if (!mov->nb_tracks) // We support one track for the entire IAMF structure mov->nb_tracks++; @@ -7455,8 +7471,11 @@ static int mov_init(AVFormatContext *s) for (int j = 0, i = 0; j < s->nb_streams; j++) { AVStream *st = s->streams[j]; - if (st != st->priv_data) + if (st != st->priv_data) { + if (has_iamf) + i += has_iamf--; continue; + } st->priv_data = &mov->tracks[i++]; } -- 2.41.0