[FFmpeg-cvslog] r10050 - trunk/libavformat/nutenc.c

michael subversion
Fri Aug 10 13:52:28 CEST 2007


Author: michael
Date: Fri Aug 10 13:52:28 2007
New Revision: 10050

Log:
info packet


Modified:
   trunk/libavformat/nutenc.c

Modified: trunk/libavformat/nutenc.c
==============================================================================
--- trunk/libavformat/nutenc.c	(original)
+++ trunk/libavformat/nutenc.c	Fri Aug 10 13:52:28 2007
@@ -313,6 +313,39 @@ static int write_streamheader(NUTContext
     return 0;
 }
 
+static int add_info(ByteIOContext *bc, char *type, char *value){
+    put_str(bc, type);
+    put_s(bc, -1);
+    put_str(bc, value);
+    return 1;
+}
+
+static void write_globalinfo(NUTContext *nut, ByteIOContext *bc){
+    AVFormatContext *s= nut->avf;
+    ByteIOContext dyn_bc;
+    uint8_t *dyn_buf=NULL;
+    int count=0, dyn_size;
+
+    url_open_dyn_buf(&dyn_bc);
+
+    if(s->title    [0]) count+= add_info(&dyn_bc, "Title"    , s->title);
+    if(s->author   [0]) count+= add_info(&dyn_bc, "Author"   , s->author);
+    if(s->copyright[0]) count+= add_info(&dyn_bc, "Copyright", s->copyright);
+    if(!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT))
+                        count+= add_info(&dyn_bc, "Encoder"  , LIBAVFORMAT_IDENT);
+
+    put_v(bc, 0); //stream_if_plus1
+    put_v(bc, 0); //chapter_id
+    put_v(bc, 0); //timestamp_start
+    put_v(bc, 0); //length
+
+    put_v(bc, count);
+
+    dyn_size= url_close_dyn_buf(&dyn_bc, &dyn_buf);
+    put_buffer(bc, dyn_buf, dyn_size);
+    av_free(dyn_buf);
+}
+
 static void write_headers(NUTContext *nut, ByteIOContext *bc){
     ByteIOContext dyn_bc;
     int i;
@@ -328,6 +361,10 @@ static void write_headers(NUTContext *nu
         write_streamheader(nut, &dyn_bc, codec, i);
         put_packet(nut, bc, &dyn_bc, 1, STREAM_STARTCODE);
     }
+
+    url_open_dyn_buf(&dyn_bc);
+    write_globalinfo(nut, &dyn_bc);
+    put_packet(nut, bc, &dyn_bc, 1, INFO_STARTCODE);
 }
 
 static int write_header(AVFormatContext *s){
@@ -379,7 +416,7 @@ static int write_header(AVFormatContext 
 
     put_flush_packet(bc);
 
-    //FIXME info header, header repeation, index
+    //FIXME header repeation, index
 
     return 0;
 }




More information about the ffmpeg-cvslog mailing list