summaryrefslogtreecommitdiff
path: root/libavcodec/amrwbdec.c
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <ceffmpeg@gmail.com>2020-04-05 17:35:38 +0200
committerCarl Eugen Hoyos <ceffmpeg@gmail.com>2020-04-11 14:10:45 +0200
commite426f71c96e9fac3ff87f51cfe7df603220fbd5d (patch)
tree1f10469b43ff6c58355026961a6b587e9ccfe85f /libavcodec/amrwbdec.c
parent8f01fa378fb3f54941d02918ba343811822a605a (diff)
downloadffmpeg-e426f71c96e9fac3ff87f51cfe7df603220fbd5d.tar.gz
lavc/amrwbdec: Output silence for frames marked as corrupt.
Fixes ticket #7113.
Diffstat (limited to 'libavcodec/amrwbdec.c')
-rw-r--r--libavcodec/amrwbdec.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/libavcodec/amrwbdec.c b/libavcodec/amrwbdec.c
index 3d82b6ba71..7d357a2685 100644
--- a/libavcodec/amrwbdec.c
+++ b/libavcodec/amrwbdec.c
@@ -1121,7 +1121,10 @@ static int amrwb_decode_frame(AVCodecContext *avctx, void *data,
header_size = decode_mime_header(ctx, buf);
expected_fr_size = ((cf_sizes_wb[ctx->fr_cur_mode] + 7) >> 3) + 1;
- if (ctx->fr_cur_mode == NO_DATA) {
+ if (!ctx->fr_quality)
+ av_log(avctx, AV_LOG_ERROR, "Encountered a bad or corrupted frame\n");
+
+ if (ctx->fr_cur_mode == NO_DATA || !ctx->fr_quality) {
av_samples_set_silence(&frame->data[0], 0, frame->nb_samples, 1, AV_SAMPLE_FMT_FLT);
*got_frame_ptr = 1;
return expected_fr_size;
@@ -1139,9 +1142,6 @@ static int amrwb_decode_frame(AVCodecContext *avctx, void *data,
return AVERROR_INVALIDDATA;
}
- if (!ctx->fr_quality)
- av_log(avctx, AV_LOG_ERROR, "Encountered a bad or corrupted frame\n");
-
if (ctx->fr_cur_mode == MODE_SID) { /* Comfort noise frame */
avpriv_request_sample(avctx, "SID mode");
return AVERROR_PATCHWELCOME;