diff options
author | Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> | 2015-06-14 20:34:16 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-06-18 22:09:01 +0200 |
commit | 8a24ccfee3841d5b2069371b78921e7e6c8289dc (patch) | |
tree | 999cf5c3a2cc4546cb112d5e7772970b666f3404 /doc | |
parent | 3ba55ea4aec2ce6c179017e12a933e20a20a14d1 (diff) | |
download | ffmpeg-8a24ccfee3841d5b2069371b78921e7e6c8289dc.tar.gz |
examples/demuxing_decoding: use properties from frame instead of video_dec_ctx
This is more robust.
And only check if there is actually a frame returned.
Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
(cherry picked from commit dd6c8575dbc8d3ff5dc2ffacb5028c253066ff78)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/examples/demuxing_decoding.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/doc/examples/demuxing_decoding.c b/doc/examples/demuxing_decoding.c index feeeb967f8..98b3a83097 100644 --- a/doc/examples/demuxing_decoding.c +++ b/doc/examples/demuxing_decoding.c @@ -81,22 +81,24 @@ static int decode_packet(int *got_frame, int cached) fprintf(stderr, "Error decoding video frame (%s)\n", av_err2str(ret)); return ret; } - if (video_dec_ctx->width != width || video_dec_ctx->height != height || - video_dec_ctx->pix_fmt != pix_fmt) { - /* To handle this change, one could call av_image_alloc again and - * decode the following frames into another rawvideo file. */ - fprintf(stderr, "Error: Width, height and pixel format have to be " - "constant in a rawvideo file, but the width, height or " - "pixel format of the input video changed:\n" - "old: width = %d, height = %d, format = %s\n" - "new: width = %d, height = %d, format = %s\n", - width, height, av_get_pix_fmt_name(pix_fmt), - video_dec_ctx->width, video_dec_ctx->height, - av_get_pix_fmt_name(video_dec_ctx->pix_fmt)); - return -1; - } if (*got_frame) { + + if (frame->width != width || frame->height != height || + frame->format != pix_fmt) { + /* To handle this change, one could call av_image_alloc again and + * decode the following frames into another rawvideo file. */ + fprintf(stderr, "Error: Width, height and pixel format have to be " + "constant in a rawvideo file, but the width, height or " + "pixel format of the input video changed:\n" + "old: width = %d, height = %d, format = %s\n" + "new: width = %d, height = %d, format = %s\n", + width, height, av_get_pix_fmt_name(pix_fmt), + frame->width, frame->height, + av_get_pix_fmt_name(frame->format)); + return -1; + } + printf("video_frame%s n:%d coded_n:%d pts:%s\n", cached ? "(cached)" : "", video_frame_count++, frame->coded_picture_number, |