If the video stream is H.264 with MP4 syntax, store the NAL lenght size in
authorLuca Abeni <lucabe72@email.it>
Wed, 16 Jun 2010 12:59:47 +0000 (12:59 +0000)
committerLuca Abeni <lucabe72@email.it>
Wed, 16 Jun 2010 12:59:47 +0000 (12:59 +0000)
the RTP muxer context (it will be used later for splitting frames in NALs)

Originally committed as revision 23625 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/rtpenc.c
libavformat/rtpenc.h

index 3111c2b..5abd490 100644 (file)
@@ -131,6 +131,13 @@ static int rtp_write_header(AVFormatContext *s1)
         s->max_payload_size = n * TS_PACKET_SIZE;
         s->buf_ptr = s->buf;
         break;
+    case CODEC_ID_H264:
+        /* check for H.264 MP4 syntax */
+        if (st->codec->extradata_size > 0 && st->codec->extradata &&
+            st->codec->extradata[0] == 1) {
+            s->nal_length_size = (st->codec->extradata[4] & 0x03) + 1;
+        }
+        break;
     case CODEC_ID_AMR_NB:
     case CODEC_ID_AMR_WB:
         if (!s->max_frames_per_packet)
index 5710160..95e70c1 100644 (file)
@@ -50,6 +50,12 @@ struct RTPMuxContext {
     uint8_t *buf_ptr;
 
     int max_frames_per_packet;
+
+    /**
+     * Number of bytes used for H.264 NAL length, if the MP4 syntax is used
+     * (1, 2 or 4)
+     */
+    int nal_length_size;
 };
 
 typedef struct RTPMuxContext RTPMuxContext;