[FFmpeg-cvslog] avformat/mov: don't return the latest stream when an item stream is expected

James Almer git at videolan.org
Mon Sep 30 23:28:53 EEST 2024


ffmpeg | branch: release/7.1 | James Almer <jamrial at gmail.com> | Mon Sep 30 10:59:02 2024 -0300| [12682eba2ef6047f58cb34c07726126025b6e752] | committer: James Almer

avformat/mov: don't return the latest stream when an item stream is expected

Otherwise, things like ICC profiles as read from the colr box meant for an item
with no stream (like a grid) may end up being added to the wrong stream.

Signed-off-by: James Almer <jamrial at gmail.com>
(cherry picked from commit 04182b55494b44152146e6a6bcd5eb9403f00625)

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=12682eba2ef6047f58cb34c07726126025b6e752
---

 libavformat/mov.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index a2333ac1fd..5b0b23ffc1 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -188,6 +188,10 @@ static int mov_read_mac_string(MOVContext *c, AVIOContext *pb, int len,
     return p - dst;
 }
 
+/**
+ * Get the current stream in the parsing process. This can either be the
+ * latest stream added to the context, or the stream referenced by an item.
+ */
 static AVStream *get_curr_st(MOVContext *c)
 {
     AVStream *st = NULL;
@@ -206,7 +210,7 @@ static AVStream *get_curr_st(MOVContext *c)
         st = item->st;
         break;
     }
-    if (!st)
+    if (!st && c->cur_item_id == -1)
         st = c->fc->streams[c->fc->nb_streams-1];
 
     return st;



More information about the ffmpeg-cvslog mailing list