From 7c69b830576617e6a7decc0269e8220d2232ad38 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 2 Jul 2006 11:06:27 +0000 Subject: [PATCH] simplify Originally committed as revision 5573 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/flacenc.c | 61 ++++++++------------------------------------ 1 file changed, 11 insertions(+), 50 deletions(-) diff --git a/libavcodec/flacenc.c b/libavcodec/flacenc.c index aec63ef2ab..2c1964b81f 100644 --- a/libavcodec/flacenc.c +++ b/libavcodec/flacenc.c @@ -168,7 +168,7 @@ static int flac_encode_init(AVCodecContext *avctx) int freq = avctx->sample_rate; int channels = avctx->channels; FlacEncodeContext *s = avctx->priv_data; - int i; + int i, level; uint8_t *streaminfo; s->avctx = avctx; @@ -219,60 +219,21 @@ static int flac_encode_init(AVCodecContext *avctx) } av_log(avctx, AV_LOG_DEBUG, " compression: %d\n", s->options.compression_level); - if(s->options.compression_level == 0) { - s->options.block_time_ms = 27; - s->options.use_lpc = 0; - s->options.min_prediction_order = 2; - s->options.max_prediction_order = 3; - s->options.prediction_order_method = ORDER_METHOD_EST; - s->options.min_partition_order = 2; - s->options.max_partition_order = 2; - } else if(s->options.compression_level == 1) { - s->options.block_time_ms = 27; - s->options.use_lpc = 0; - s->options.min_prediction_order = 0; - s->options.max_prediction_order = 4; - s->options.prediction_order_method = ORDER_METHOD_EST; - s->options.min_partition_order = 2; - s->options.max_partition_order = 2; - } else if(s->options.compression_level == 2) { - s->options.block_time_ms = 27; - s->options.use_lpc = 0; - s->options.min_prediction_order = 0; - s->options.max_prediction_order = 4; - s->options.prediction_order_method = ORDER_METHOD_EST; - s->options.min_partition_order = 0; - s->options.max_partition_order = 3; - } else if(s->options.compression_level == 3) { - s->options.block_time_ms = 105; - s->options.use_lpc = 1; - s->options.min_prediction_order = 1; - s->options.max_prediction_order = 6; - s->options.prediction_order_method = ORDER_METHOD_EST; - s->options.min_partition_order = 0; - s->options.max_partition_order = 3; - } else if(s->options.compression_level == 4) { - s->options.block_time_ms = 105; - s->options.use_lpc = 1; - s->options.min_prediction_order = 1; - s->options.max_prediction_order = 8; - s->options.prediction_order_method = ORDER_METHOD_EST; - s->options.min_partition_order = 0; - s->options.max_partition_order = 3; - } else if(s->options.compression_level == 5) { - s->options.block_time_ms = 105; - s->options.use_lpc = 1; - s->options.min_prediction_order = 1; - s->options.max_prediction_order = 8; - s->options.prediction_order_method = ORDER_METHOD_EST; - s->options.min_partition_order = 0; - s->options.max_partition_order = 8; - } else { + level= s->options.compression_level; + if(level > 5) { av_log(avctx, AV_LOG_ERROR, "invalid compression level: %d\n", s->options.compression_level); return -1; } + s->options.block_time_ms = ((int[]){ 27, 27, 27,105,105,105})[level]; + s->options.use_lpc = ((int[]){ 0, 0, 0, 1, 1, 1})[level]; + s->options.min_prediction_order= ((int[]){ 2, 0, 0, 1, 1, 1})[level]; + s->options.max_prediction_order= ((int[]){ 3, 4, 4, 6, 8, 8})[level]; + s->options.prediction_order_method = ORDER_METHOD_EST; + s->options.min_partition_order = ((int[]){ 2, 2, 0, 0, 0, 0})[level]; + s->options.max_partition_order = ((int[]){ 2, 2, 3, 3, 3, 8})[level]; + /* set compression option overrides from AVCodecContext */ if(avctx->use_lpc >= 0) { s->options.use_lpc = !!avctx->use_lpc;