|
|
|
@ -1925,6 +1925,15 @@ int guess_input_channel_layout(InputStream *ist) |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void check_decode_result(int *got_output, int ret) |
|
|
|
|
{ |
|
|
|
|
if (*got_output || ret<0) |
|
|
|
|
decode_error_stat[ret<0] ++; |
|
|
|
|
|
|
|
|
|
if (ret < 0 && exit_on_error) |
|
|
|
|
exit_program(1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output) |
|
|
|
|
{ |
|
|
|
|
AVFrame *decoded_frame, *f; |
|
|
|
@ -1947,11 +1956,7 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output) |
|
|
|
|
ret = AVERROR_INVALIDDATA; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (*got_output || ret<0) |
|
|
|
|
decode_error_stat[ret<0] ++; |
|
|
|
|
|
|
|
|
|
if (ret < 0 && exit_on_error) |
|
|
|
|
exit_program(1); |
|
|
|
|
check_decode_result(got_output, ret); |
|
|
|
|
|
|
|
|
|
if (!*got_output || ret < 0) |
|
|
|
|
return ret; |
|
|
|
@ -2088,11 +2093,7 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output) |
|
|
|
|
ist->st->codec->has_b_frames); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (*got_output || ret<0) |
|
|
|
|
decode_error_stat[ret<0] ++; |
|
|
|
|
|
|
|
|
|
if (ret < 0 && exit_on_error) |
|
|
|
|
exit_program(1); |
|
|
|
|
check_decode_result(got_output, ret); |
|
|
|
|
|
|
|
|
|
if (*got_output && ret >= 0) { |
|
|
|
|
if (ist->dec_ctx->width != decoded_frame->width || |
|
|
|
@ -2200,11 +2201,7 @@ static int transcode_subtitles(InputStream *ist, AVPacket *pkt, int *got_output) |
|
|
|
|
int i, ret = avcodec_decode_subtitle2(ist->dec_ctx, |
|
|
|
|
&subtitle, got_output, pkt); |
|
|
|
|
|
|
|
|
|
if (*got_output || ret<0) |
|
|
|
|
decode_error_stat[ret<0] ++; |
|
|
|
|
|
|
|
|
|
if (ret < 0 && exit_on_error) |
|
|
|
|
exit_program(1); |
|
|
|
|
check_decode_result(got_output, ret); |
|
|
|
|
|
|
|
|
|
if (ret < 0 || !*got_output) { |
|
|
|
|
if (!pkt->size) |
|
|
|
|