Skip the bit allocation search if previous and current SNR offsets are the
authorJustin Ruggles <justin.ruggles@gmail.com>
Fri, 31 Dec 2010 23:22:08 +0000 (23:22 +0000)
committerJustin Ruggles <justin.ruggles@gmail.com>
Fri, 31 Dec 2010 23:22:08 +0000 (23:22 +0000)
maximum value of 1023.
This speeds up overall encoding depending on the content and bitrate.
The most improvement is with high bitrates and/or low complexity content.

Originally committed as revision 26181 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/ac3enc.c

index 9b23f31b69d87bacb8f4badeacfb15ac872379a5..49fd853609e49d842a9bf08b99d983904ac579b4 100644 (file)
@@ -1116,6 +1116,13 @@ static int cbr_bit_allocation(AC3EncodeContext *s)
 
     snr_offset = s->coarse_snr_offset << 4;
 
+    /* if previous frame SNR offset was 1023, check if current frame can also
+       use SNR offset of 1023. if so, skip the search. */
+    if ((snr_offset | s->fine_snr_offset[0]) == 1023) {
+        if (bit_alloc(s, 1023) <= bits_left)
+            return 0;
+    }
+
     while (snr_offset >= 0 &&
            bit_alloc(s, snr_offset) > bits_left) {
         snr_offset -= 64;