Browse Source

ffmpeg: factorize checking decoder result

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Marton Balint <cus@passwd.hu>
tags/n3.0
Marton Balint 10 years ago
parent
commit
e2b416b68e
1 changed files with 12 additions and 15 deletions
  1. +12
    -15
      ffmpeg.c

+ 12
- 15
ffmpeg.c View File

@@ -1925,6 +1925,15 @@ int guess_input_channel_layout(InputStream *ist)
return 1; 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) static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output)
{ {
AVFrame *decoded_frame, *f; AVFrame *decoded_frame, *f;
@@ -1947,11 +1956,7 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output)
ret = AVERROR_INVALIDDATA; 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) if (!*got_output || ret < 0)
return ret; return ret;
@@ -2088,11 +2093,7 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output)
ist->st->codec->has_b_frames); 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 (*got_output && ret >= 0) {
if (ist->dec_ctx->width != decoded_frame->width || 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, int i, ret = avcodec_decode_subtitle2(ist->dec_ctx,
&subtitle, got_output, pkt); &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 (ret < 0 || !*got_output) {
if (!pkt->size) if (!pkt->size)


Loading…
Cancel
Save