| @@ -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, | |||
| }; | |||