]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
simplify
authormichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sun, 2 Jul 2006 11:06:27 +0000 (11:06 +0000)
committermichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sun, 2 Jul 2006 11:06:27 +0000 (11:06 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@5573 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/flacenc.c

index aec63ef2abef9b5825bddaf636c54a78b8c9c623..2c1964b81f66457f3babeb25b7353a9a051099c6 100644 (file)
@@ -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;