]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/mp3enc.c
mp3probe: Detect mp3 stronger with just 200 frames, this should speed up detection
[ffmpeg] / libavformat / mp3enc.c
index 3f2f02b9439093602019ed21c315f82e969c3b7d..1200d0f2979b7abe784808bafdf12db3bfebb052 100644 (file)
@@ -156,7 +156,9 @@ static int mp3_write_xing(AVFormatContext *s)
 {
     AVCodecContext   *codec = s->streams[0]->codec;
     MP3Context       *mp3 = s->priv_data;
-    int              bitrate_idx = 3;
+    int              bitrate_idx;
+    int              best_bitrate_idx;
+    int              best_bitrate_error= INT_MAX;
     int64_t          xing_offset;
     int32_t          mask, header;
     MPADecodeHeader  c;
@@ -185,7 +187,17 @@ static int mp3_write_xing(AVFormatContext *s)
     header |= (srate_idx << 2) <<  8;
     header |= channels << 6;
 
-    for (;; bitrate_idx++) {
+    for (bitrate_idx=1; bitrate_idx<15; bitrate_idx++) {
+        int error;
+        avpriv_mpegaudio_decode_header(&c, header | (bitrate_idx << (4+8)));
+        error= FFABS(c.bit_rate - codec->bit_rate);
+        if(error < best_bitrate_error){
+            best_bitrate_error= error;
+            best_bitrate_idx  = bitrate_idx;
+        }
+    }
+
+    for (bitrate_idx= best_bitrate_idx;; bitrate_idx++) {
         if (15 == bitrate_idx)
             return -1;