yuv4mpeg: Use the wrapped avframe pseudo-encoder
authorLuca Barbato <lu_zero@gentoo.org>
Fri, 9 Oct 2015 14:22:42 +0000 (16:22 +0200)
committerLuca Barbato <lu_zero@gentoo.org>
Sat, 10 Oct 2015 12:50:42 +0000 (14:50 +0200)
libavformat/yuv4mpegenc.c

index 2caa364..ef1e775 100644 (file)
@@ -88,7 +88,7 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt)
 {
     AVStream *st = s->streams[pkt->stream_index];
     AVIOContext *pb = s->pb;
-    AVPicture *picture;
+    AVFrame *frame;
     int* first_pkt = s->priv_data;
     int width, height, h_chroma_shift, v_chroma_shift;
     int i;
@@ -96,7 +96,7 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt)
     char buf1[20];
     uint8_t *ptr, *ptr1, *ptr2;
 
-    picture = (AVPicture *)pkt->data;
+    frame = (AVFrame *)pkt->data;
 
     /* for the first packet we have to output the header as well */
     if (*first_pkt) {
@@ -118,10 +118,10 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt)
     width  = st->codec->width;
     height = st->codec->height;
 
-    ptr = picture->data[0];
+    ptr = frame->data[0];
     for (i = 0; i < height; i++) {
         avio_write(pb, ptr, width);
-        ptr += picture->linesize[0];
+        ptr += frame->linesize[0];
     }
 
     if (st->codec->pix_fmt != AV_PIX_FMT_GRAY8) {
@@ -132,15 +132,15 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt)
         width  = -(-width  >> h_chroma_shift);
         height = -(-height >> v_chroma_shift);
 
-        ptr1 = picture->data[1];
-        ptr2 = picture->data[2];
+        ptr1 = frame->data[1];
+        ptr2 = frame->data[2];
         for (i = 0; i < height; i++) {     /* Cb */
             avio_write(pb, ptr1, width);
-            ptr1 += picture->linesize[1];
+            ptr1 += frame->linesize[1];
         }
         for (i = 0; i < height; i++) {     /* Cr */
             avio_write(pb, ptr2, width);
-            ptr2 += picture->linesize[2];
+            ptr2 += frame->linesize[2];
         }
     }
     return 0;
@@ -153,8 +153,8 @@ static int yuv4_write_header(AVFormatContext *s)
     if (s->nb_streams != 1)
         return AVERROR(EIO);
 
-    if (s->streams[0]->codec->codec_id != AV_CODEC_ID_RAWVIDEO) {
-        av_log(s, AV_LOG_ERROR, "ERROR: Only rawvideo supported.\n");
+    if (s->streams[0]->codec->codec_id != AV_CODEC_ID_WRAPPED_AVFRAME) {
+        av_log(s, AV_LOG_ERROR, "ERROR: Codec not supported.\n");
         return AVERROR_INVALIDDATA;
     }
 
@@ -182,8 +182,7 @@ AVOutputFormat ff_yuv4mpegpipe_muxer = {
     .extensions        = "y4m",
     .priv_data_size    = sizeof(int),
     .audio_codec       = AV_CODEC_ID_NONE,
-    .video_codec       = AV_CODEC_ID_RAWVIDEO,
+    .video_codec       = AV_CODEC_ID_WRAPPED_AVFRAME,
     .write_header      = yuv4_write_header,
     .write_packet      = yuv4_write_packet,
-    .flags             = AVFMT_RAWPICTURE,
 };