diff options
author | Anton Khirnov <anton@khirnov.net> | 2022-07-17 20:27:36 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2022-08-02 11:06:49 +0200 |
commit | d78e17840347abfe10b2bc7e789c60665de56e1f (patch) | |
tree | 98f62adb6dde2a32219d45cd63a84dacfa231592 /tools/decode_simple.c | |
parent | 4f7f5ef830100beb3433c76f7ae5e2a10a0c2230 (diff) |
add AV_CODEC_CAP_ENCODER_RECON_FRAME test WIPrecon
Diffstat (limited to 'tools/decode_simple.c')
-rw-r--r-- | tools/decode_simple.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/tools/decode_simple.c b/tools/decode_simple.c index b679fd7ce6..cd81d53168 100644 --- a/tools/decode_simple.c +++ b/tools/decode_simple.c @@ -73,7 +73,7 @@ int ds_run(DecodeContext *dc) while (ret >= 0) { ret = av_read_frame(dc->demuxer, dc->pkt); if (ret < 0) - goto flush; + break; if (dc->pkt->stream_index != dc->stream->index) { av_packet_unref(dc->pkt); continue; @@ -91,10 +91,9 @@ int ds_run(DecodeContext *dc) fprintf(stderr, "Error decoding: %d\n", ret); return ret; } else if (ret > 0) - return 0; + goto finish; } -flush: avcodec_send_packet(dc->decoder, NULL); ret = decode_read(dc, 1); if (ret < 0) { @@ -102,7 +101,8 @@ flush: return ret; } - return 0; +finish: + return dc->process_frame(dc, NULL); } void ds_free(DecodeContext *dc) @@ -149,6 +149,10 @@ int ds_open(DecodeContext *dc, const char *url, int stream_idx) if (!dc->decoder) return AVERROR(ENOMEM); + ret = avcodec_parameters_to_context(dc->decoder, dc->stream->codecpar); + if (ret < 0) + goto fail; + return 0; fail: |