avcodec/videotoolbox: print descriptive errors on decode failures

Signed-off-by: Aman Gupta <aman@tmm1.net>
pull/272/head
Aman Gupta 8 years ago
parent d869928ca6
commit 6515e2834a
  1. 20
      libavcodec/videotoolbox.c

@ -572,9 +572,22 @@ static OSStatus videotoolbox_session_decode_frame(AVCodecContext *avctx)
return status; return status;
} }
static const char *videotoolbox_error_string(OSStatus status)
{
switch (status) {
case kVTVideoDecoderBadDataErr:
return "bad data";
case kVTVideoDecoderMalfunctionErr:
return "decoder malfunction";
case kVTInvalidSessionErr:
return "invalid session";
}
return "unknown";
}
static int videotoolbox_common_end_frame(AVCodecContext *avctx, AVFrame *frame) static int videotoolbox_common_end_frame(AVCodecContext *avctx, AVFrame *frame)
{ {
int status; OSStatus status;
AVVideotoolboxContext *videotoolbox = videotoolbox_get_context(avctx); AVVideotoolboxContext *videotoolbox = videotoolbox_get_context(avctx);
VTContext *vtctx = avctx->internal->hwaccel_priv_data; VTContext *vtctx = avctx->internal->hwaccel_priv_data;
@ -582,9 +595,8 @@ static int videotoolbox_common_end_frame(AVCodecContext *avctx, AVFrame *frame)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
status = videotoolbox_session_decode_frame(avctx); status = videotoolbox_session_decode_frame(avctx);
if (status != noErr) {
if (status) { av_log(avctx, AV_LOG_ERROR, "Failed to decode frame (%s, %d)\n", videotoolbox_error_string(status), (int)status);
av_log(avctx, AV_LOG_ERROR, "Failed to decode frame (%d)\n", status);
return AVERROR_UNKNOWN; return AVERROR_UNKNOWN;
} }

Loading…
Cancel
Save