[FFmpeg-cvslog] avcodec/cuvid: Always check for internal errors during parsing
Philip Langdale
git at videolan.org
Sat Sep 10 23:41:41 EEST 2016
ffmpeg | branch: master | Philip Langdale <philipl at overt.org> | Sat Sep 10 12:51:01 2016 -0700| [4029f05c8b0943a5446f254142d5e2bfedb50a0d] | committer: Timo Rothenpieler
avcodec/cuvid: Always check for internal errors during parsing
The cuvid parser is basically undocumented, and although you'd
think that a failed callback would result in the overall parse
call returning an error, that is not true.
So, we end up silently trying to keep going as if nothing is wrong,
which doesn't achieve anything.
Solution: check the internal error flag every time.
Signed-off-by: Philip Langdale <philipl at overt.org>
Signed-off-by: Timo Rothenpieler <timo at rothenpieler.org>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4029f05c8b0943a5446f254142d5e2bfedb50a0d
---
libavcodec/cuvid.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/libavcodec/cuvid.c b/libavcodec/cuvid.c
index de75960..19a7772 100644
--- a/libavcodec/cuvid.c
+++ b/libavcodec/cuvid.c
@@ -272,8 +272,13 @@ static int cuvid_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
av_packet_unref(&filtered_packet);
if (ret < 0) {
- if (ctx->internal_error)
- ret = ctx->internal_error;
+ goto error;
+ }
+
+ // cuvidParseVideoData doesn't return an error just because stuff failed...
+ if (ctx->internal_error) {
+ av_log(avctx, AV_LOG_ERROR, "cuvid decode callback error\n");
+ ret = ctx->internal_error;
goto error;
}
More information about the ffmpeg-cvslog
mailing list