[FFmpeg-cvslog] r23625 - in trunk/libavformat: rtpenc.c rtpenc.h

lucabe subversion
Wed Jun 16 14:59:48 CEST 2010


Author: lucabe
Date: Wed Jun 16 14:59:47 2010
New Revision: 23625

Log:
If the video stream is H.264 with MP4 syntax, store the NAL lenght size in
the RTP muxer context (it will be used later for splitting frames in NALs)

Modified:
   trunk/libavformat/rtpenc.c
   trunk/libavformat/rtpenc.h

Modified: trunk/libavformat/rtpenc.c
==============================================================================
--- trunk/libavformat/rtpenc.c	Wed Jun 16 12:35:56 2010	(r23624)
+++ trunk/libavformat/rtpenc.c	Wed Jun 16 14:59:47 2010	(r23625)
@@ -131,6 +131,13 @@ static int rtp_write_header(AVFormatCont
         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)

Modified: trunk/libavformat/rtpenc.h
==============================================================================
--- trunk/libavformat/rtpenc.h	Wed Jun 16 12:35:56 2010	(r23624)
+++ trunk/libavformat/rtpenc.h	Wed Jun 16 14:59:47 2010	(r23625)
@@ -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;



More information about the ffmpeg-cvslog mailing list