changeset 2330:c25f63f009a8 libavformat

move stream header writing into its own function
author michael
date Thu, 09 Aug 2007 12:25:58 +0000
parents 57a352c5b051
children 4d1a56112d92
files nutenc.c
diffstat 1 files changed, 43 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- a/nutenc.c	Thu Aug 09 12:22:02 2007 +0000
+++ b/nutenc.c	Thu Aug 09 12:25:58 2007 +0000
@@ -281,6 +281,48 @@
     }
 }
 
+static int write_streamheader(NUTContext *nut, ByteIOContext *bc, AVCodecContext *codec, int i){
+    put_v(bc, i);
+    switch(codec->codec_type){
+    case CODEC_TYPE_VIDEO: put_v(bc, 0); break;
+    case CODEC_TYPE_AUDIO: put_v(bc, 1); break;
+//    case CODEC_TYPE_TEXT : put_v(bc, 2); break;
+    default              : put_v(bc, 3); break;
+    }
+    put_v(bc, 4);
+    if (codec->codec_tag){
+        put_le32(bc, codec->codec_tag);
+    }else
+        return -1;
+
+    put_v(bc, (nut->stream[i].time_base - nut->time_base)/sizeof(AVRational));
+    put_v(bc, nut->stream[i].msb_pts_shift);
+    put_v(bc, nut->stream[i].max_pts_distance);
+    put_v(bc, codec->has_b_frames);
+    put_byte(bc, 0); /* flags: 0x1 - fixed_fps, 0x2 - index_present */
+
+    put_v(bc, codec->extradata_size);
+    put_buffer(bc, codec->extradata, codec->extradata_size);
+
+    switch(codec->codec_type){
+    case CODEC_TYPE_AUDIO:
+        put_v(bc, codec->sample_rate);
+        put_v(bc, 1);
+        put_v(bc, codec->channels);
+        break;
+    case CODEC_TYPE_VIDEO:
+        put_v(bc, codec->width);
+        put_v(bc, codec->height);
+        put_v(bc, codec->sample_aspect_ratio.num);
+        put_v(bc, codec->sample_aspect_ratio.den);
+        put_v(bc, 0); /* csp type -- unknown */
+        break;
+    default:
+        break;
+    }
+    return 0;
+}
+
 static int write_header(AVFormatContext *s){
     NUTContext *nut = s->priv_data;
     ByteIOContext *bc = &s->pb;
@@ -334,44 +376,7 @@
 
         put_be64(bc, STREAM_STARTCODE);
         put_packetheader(nut, bc, 120/*FIXME check*/ + codec->extradata_size, 1);
-        put_v(bc, i);
-        switch(codec->codec_type){
-        case CODEC_TYPE_VIDEO: put_v(bc, 0); break;
-        case CODEC_TYPE_AUDIO: put_v(bc, 1); break;
-//        case CODEC_TYPE_TEXT : put_v(bc, 2); break;
-        default              : put_v(bc, 3); break;
-        }
-        put_v(bc, 4);
-        if (codec->codec_tag){
-            put_le32(bc, codec->codec_tag);
-        }else
-            return -1;
-
-        put_v(bc, (nut->stream[i].time_base - nut->time_base)/sizeof(AVRational));
-        put_v(bc, nut->stream[i].msb_pts_shift);
-        put_v(bc, nut->stream[i].max_pts_distance);
-        put_v(bc, codec->has_b_frames);
-        put_byte(bc, 0); /* flags: 0x1 - fixed_fps, 0x2 - index_present */
-
-        put_v(bc, codec->extradata_size);
-        put_buffer(bc, codec->extradata, codec->extradata_size);
-
-        switch(codec->codec_type){
-        case CODEC_TYPE_AUDIO:
-            put_v(bc, codec->sample_rate);
-            put_v(bc, 1);
-            put_v(bc, codec->channels);
-            break;
-        case CODEC_TYPE_VIDEO:
-            put_v(bc, codec->width);
-            put_v(bc, codec->height);
-            put_v(bc, codec->sample_aspect_ratio.num);
-            put_v(bc, codec->sample_aspect_ratio.den);
-            put_v(bc, 0); /* csp type -- unknown */
-            break;
-        default:
-            break;
-        }
+        write_streamheader(nut, bc, codec, i);
         update_packetheader(nut, bc, 0, 1);
     }