diff options
author | Stefano Sabatini <stefasab@gmail.com> | 2012-08-21 20:13:14 +0400 |
---|---|---|
committer | Stefano Sabatini <stefasab@gmail.com> | 2012-08-24 19:31:10 +0400 |
commit | 864e8adcf1310f5d0eed2a2b8018b901cadaece0 (patch) | |
tree | 2654653705448b582aa51f94f6944490d6da67bf | |
parent | 5ac603df83e9f25d5ad5153b101e065783dfdb96 (diff) |
examples/muxing: update to the new avcodec_encode_video2() API
-rw-r--r-- | doc/examples/muxing.c | 24 |
1 files changed, 15 insertions, 9 deletions
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); |