changeset 4605:4fe4d790c020 libavformat

use new metadata API in nut demuxer
author aurel
date Fri, 27 Feb 2009 23:10:34 +0000
parents b977bb8bbe9b
children c520c49e79f6
files nutdec.c
diffstat 1 files changed, 13 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/nutdec.c	Fri Feb 27 14:13:15 2009 +0000
+++ b/nutdec.c	Fri Feb 27 23:10:34 2009 +0000
@@ -20,6 +20,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include <strings.h>
 #include "libavutil/avstring.h"
 #include "libavutil/bswap.h"
 #include "libavutil/tree.h"
@@ -395,6 +396,7 @@
     char name[256], str_value[1024], type_str[256];
     const char *type;
     AVChapter *chapter= NULL;
+    AVStream *st= NULL;
 
     end= get_packetheader(nut, bc, 1, INFO_STARTCODE);
     end += url_ftell(bc);
@@ -410,7 +412,8 @@
         chapter= ff_new_chapter(s, chapter_id,
                                 nut->time_base[chapter_start % nut->time_base_count],
                                 start, start + chapter_len, NULL);
-    }
+    } else if(stream_id_plus1)
+        st= s->streams[stream_id_plus1 - 1];
 
     for(i=0; i<count; i++){
         get_str(bc, name, sizeof(name));
@@ -440,21 +443,16 @@
             continue;
         }
 
-        if(chapter_id==0 && !strcmp(type, "UTF-8")){
-            if     (!strcmp(name, "Author"))
-                av_strlcpy(s->author   , str_value, sizeof(s->author));
-            else if(!strcmp(name, "Title"))
-                av_strlcpy(s->title    , str_value, sizeof(s->title));
-            else if(!strcmp(name, "Copyright"))
-                av_strlcpy(s->copyright, str_value, sizeof(s->copyright));
-            else if(!strcmp(name, "Description"))
-                av_strlcpy(s->comment  , str_value, sizeof(s->comment));
-            else if(!strcmp(name, "Disposition"))
+        if(!strcmp(type, "UTF-8")){
+            AVMetadata **metadata = NULL;
+            if(chapter_id==0 && !strcmp(name, "Disposition"))
                 set_disposition_bits(s, str_value, stream_id_plus1 - 1);
-        }
-        if(chapter && !strcmp(type, "UTF-8")){
-            if(!strcmp(name, "Title"))
-                chapter->title= av_strdup(str_value);
+            else if(chapter)          metadata= &chapter->metadata;
+            else if(stream_id_plus1)  metadata= &st->metadata;
+            else                      metadata= &s->metadata;
+            if(metadata && strcasecmp(name,"Uses")
+               && strcasecmp(name,"Depends") && strcasecmp(name,"Replaces"))
+                av_metadata_set(metadata, name, str_value);
         }
     }