From 864e8adcf1310f5d0eed2a2b8018b901cadaece0 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Tue, 21 Aug 2012 18:13:14 +0200 Subject: examples/muxing: update to the new avcodec_encode_video2() API --- doc/examples/muxing.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'doc') diff --git a/doc/examples/muxing.c b/doc/examples/muxing.c index e7ab145077..481adf2bf7 100644 --- a/doc/examples/muxing.c +++ b/doc/examples/muxing.c @@ -313,7 +313,7 @@ static void fill_yuv_image(AVFrame *pict, int frame_index, static void write_video_frame(AVFormatContext *oc, AVStream *st) { - int out_size, ret; + int ret; AVCodecContext *c; static struct SwsContext *img_convert_ctx; @@ -362,13 +362,21 @@ static void write_video_frame(AVFormatContext *oc, AVStream *st) ret = av_interleaved_write_frame(oc, &pkt); } else { /* encode the image */ - out_size = avcodec_encode_video(c, video_outbuf, - video_outbuf_size, picture); - /* If size is zero, it means the image was buffered. */ - if (out_size > 0) { - AVPacket pkt; - av_init_packet(&pkt); + AVPacket pkt; + int got_output; + + av_init_packet(&pkt); + pkt.data = NULL; // packet data will be allocated by the encoder + pkt.size = 0; + ret = avcodec_encode_video2(c, &pkt, picture, &got_output); + if (ret < 0) { + fprintf(stderr, "error encoding frame\n"); + exit(1); + } + + /* If size is zero, it means the image was buffered. */ + if (got_output) { if (c->coded_frame->pts != AV_NOPTS_VALUE) pkt.pts = av_rescale_q(c->coded_frame->pts, c->time_base, st->time_base); @@ -376,8 +384,6 @@ static void write_video_frame(AVFormatContext *oc, AVStream *st) pkt.flags |= AV_PKT_FLAG_KEY; pkt.stream_index = st->index; - pkt.data = video_outbuf; - pkt.size = out_size; /* Write the compressed frame to the media file. */ ret = av_interleaved_write_frame(oc, &pkt); -- cgit v1.2.3