changeset 3054:d640e46c69ea libavcodec

place SPS/PPS in extradata if GLOBAL_HEADER flag is set
author mru
date Fri, 20 Jan 2006 21:20:46 +0000
parents 2991dc513726
children c892b3b6bfbf
files x264.c
diffstat 1 files changed, 18 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/x264.c	Thu Jan 19 09:21:39 2006 +0000
+++ b/x264.c	Fri Jan 20 21:20:46 2006 +0000
@@ -247,12 +247,30 @@
 
     x4->params.i_threads = avctx->thread_count;
 
+    if(avctx->flags & CODEC_FLAG_GLOBAL_HEADER){
+        x4->params.b_repeat_headers = 0;
+    }
+
     x4->enc = x264_encoder_open(&x4->params);
     if(!x4->enc)
         return -1;
 
     avctx->coded_frame = &x4->out_pic;
 
+    if(avctx->flags & CODEC_FLAG_GLOBAL_HEADER){
+	x264_nal_t *nal;
+	int nnal, i, s = 0;
+
+	x264_encoder_headers(x4->enc, &nal, &nnal);
+
+	/* 5 bytes NAL header + worst case escaping */
+	for(i = 0; i < nnal; i++)
+	    s += 5 + nal[i].i_payload * 4 / 3;
+
+        avctx->extradata = av_malloc(s);
+        avctx->extradata_size = encode_nals(avctx->extradata, s, nal, nnal);
+    }
+
     return 0;
 }