summaryrefslogtreecommitdiff
path: root/libavcodec/sipr.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec/sipr.c')
-rw-r--r--libavcodec/sipr.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libavcodec/sipr.c b/libavcodec/sipr.c
index 971d05bde8..1e9168a76f 100644
--- a/libavcodec/sipr.c
+++ b/libavcodec/sipr.c
@@ -485,8 +485,13 @@ static av_cold int sipr_decoder_init(AVCodecContext * avctx)
case 29: ctx->mode = MODE_6k5; break;
case 37: ctx->mode = MODE_5k0; break;
default:
- av_log(avctx, AV_LOG_ERROR, "Invalid block_align: %d\n", avctx->block_align);
- return AVERROR(EINVAL);
+ if (avctx->bit_rate > 12200) ctx->mode = MODE_16k;
+ else if (avctx->bit_rate > 7500 ) ctx->mode = MODE_8k5;
+ else if (avctx->bit_rate > 5750 ) ctx->mode = MODE_6k5;
+ else ctx->mode = MODE_5k0;
+ av_log(avctx, AV_LOG_WARNING,
+ "Invalid block_align: %d. Mode %s guessed based on bitrate: %d\n",
+ avctx->block_align, modes[ctx->mode].mode_name, avctx->bit_rate);
}
av_log(avctx, AV_LOG_DEBUG, "Mode: %s\n", modes[ctx->mode].mode_name);