diff --git a/ffmpeg.c b/ffmpeg.c index 4a6031f16f..fc29ad5e7d 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -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)