aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/flacenc.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2006-07-02 11:06:27 +0000
committerMichael Niedermayer <michaelni@gmx.at>2006-07-02 11:06:27 +0000
commit7c69b830576617e6a7decc0269e8220d2232ad38 (patch)
tree68dcfe9e2dbdd56621810f2332e0317a1ac2b411 /libavcodec/flacenc.c
parenta403fc0324c0003339abbef90367fdba5adbf024 (diff)
downloadffmpeg-7c69b830576617e6a7decc0269e8220d2232ad38.tar.gz
simplify
Originally committed as revision 5573 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/flacenc.c')
-rw-r--r--libavcodec/flacenc.c61
1 files 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;