[Ffmpeg-cvslog] r5573 - trunk/libavcodec/flacenc.c

michael subversion
Sun Jul 2 13:06:27 CEST 2006


Author: michael
Date: Sun Jul  2 13:06:27 2006
New Revision: 5573

Modified:
   trunk/libavcodec/flacenc.c

Log:
simplify


Modified: trunk/libavcodec/flacenc.c
==============================================================================
--- trunk/libavcodec/flacenc.c	(original)
+++ trunk/libavcodec/flacenc.c	Sun Jul  2 13:06:27 2006
@@ -168,7 +168,7 @@
     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 @@
     }
     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;




More information about the ffmpeg-cvslog mailing list