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

Reply via email to