[FFmpeg-cvslog] nutdec: update AVFormatContext.event_flags with STREAM_/ METADATA_UPDATED whenever metadata changes.

Andrew Stone git at videolan.org
Wed Aug 13 23:50:26 CEST 2014


ffmpeg | branch: master | Andrew Stone <andrew at clovar.com> | Tue Aug 12 17:03:53 2014 -0400| [fa3a5dd4dea34baa6bb2f7fe6006fc4b2888f2aa] | committer: Anton Khirnov

nutdec: update AVFormatContext.event_flags with STREAM_/METADATA_UPDATED whenever metadata changes.

Signed-off-by: Anton Khirnov <anton at khirnov.net>

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

 libavformat/nutdec.c |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c
index 8ec67ae..6c95d55 100644
--- a/libavformat/nutdec.c
+++ b/libavformat/nutdec.c
@@ -461,9 +461,11 @@ static int decode_info_header(NUTContext *nut)
     int64_t value, end;
     char name[256], str_value[1024], type_str[256];
     const char *type;
+    int *event_flags;
     AVChapter *chapter      = NULL;
     AVStream *st            = NULL;
     AVDictionary **metadata = NULL;
+    int metadata_flag       = 0;
 
     end  = get_packetheader(nut, bc, 1, INFO_STARTCODE);
     end += avio_tell(bc);
@@ -484,8 +486,13 @@ static int decode_info_header(NUTContext *nut)
     } else if (stream_id_plus1) {
         st       = s->streams[stream_id_plus1 - 1];
         metadata = &st->metadata;
-    } else
+        event_flags = &st->event_flags;
+        metadata_flag = AVSTREAM_EVENT_FLAG_METADATA_UPDATED;
+    } else {
         metadata = &s->metadata;
+        event_flags = &s->event_flags;
+        metadata_flag = AVFMT_EVENT_FLAG_METADATA_UPDATED;
+    }
 
     for (i = 0; i < count; i++) {
         get_str(bc, name, sizeof(name));
@@ -521,8 +528,10 @@ static int decode_info_header(NUTContext *nut)
                 continue;
             }
             if (metadata && av_strcasecmp(name, "Uses") &&
-                av_strcasecmp(name, "Depends") && av_strcasecmp(name, "Replaces"))
+                av_strcasecmp(name, "Depends") && av_strcasecmp(name, "Replaces")) {
+                *event_flags |= metadata_flag;
                 av_dict_set(metadata, name, str_value, 0);
+            }
         }
     }
 



More information about the ffmpeg-cvslog mailing list