# HG changeset patch # User michael # Date 1151157389 0 # Node ID ba80e4de976b57e3638e9e8f5319612934f94499 # Parent 5b901881d6ed7209b8112f99e1b0cc3b28edc445 simplify & optimize things a little diff -r 5b901881d6ed -r ba80e4de976b flacenc.c --- a/flacenc.c Sat Jun 24 10:20:15 2006 +0000 +++ b/flacenc.c Sat Jun 24 13:56:29 2006 +0000 @@ -82,10 +82,6 @@ 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 }; -static const int flac_blocksizes_ordered[14] = { - 0, 192, 256, 512, 576, 1024, 1152, 2048, 2304, 4096, 4608, 8192, 16384, 32768 -}; - /** * Writes streaminfo metadata block to byte array */ @@ -122,17 +118,13 @@ int blocksize; assert(samplerate > 0); - blocksize = 0; + blocksize = flac_blocksizes[1]; target = (samplerate * BLOCK_TIME_MS) / 1000; - for(i=13; i>=0; i--) { - if(target >= flac_blocksizes_ordered[i]) { - blocksize = flac_blocksizes_ordered[i]; - break; + for(i=0; i<16; i++) { + if(target >= flac_blocksizes[i] && flac_blocksizes[i] > blocksize) { + blocksize = flac_blocksizes[i]; } } - if(blocksize == 0) { - blocksize = flac_blocksizes_ordered[1]; - } return blocksize; } @@ -144,10 +136,6 @@ int i; uint8_t *streaminfo; - if(s == NULL) { - return -1; - } - if(avctx->sample_fmt != SAMPLE_FMT_S16) { return -1; } @@ -282,26 +270,26 @@ static void encode_residual_fixed(int32_t *res, int32_t *smp, int n, int order) { int i; - int32_t pred; for(i=0; i= 0 && bits <= 31); - assert(bits >= 0 && bits <= 31); - uval = (val < 0) ? (1UL << bits) + val : val; - put_bits(pb, bits, uval); + put_bits(pb, bits, val & ((1<= 0x80) bytes++; - if(val >= 0x800) bytes++; - if(val >= 0x10000) bytes++; - if(val >= 0x200000) bytes++; - if(val >= 0x4000000) bytes++; - - if(bytes == 1) { + if(val < 0x80){ put_bits(pb, 8, val); return; } + bytes= (av_log2(val)-1) / 5; shift = (bytes - 1) * 6; - mask = 0x80 + ((1 << 7) - (1 << (8 - bytes))); - put_bits(pb, 8, mask | (val >> shift)); - for(i=0; i>bytes)) | (val >> shift)); + while(shift >= 6){ shift -= 6; put_bits(pb, 8, 0x80 | ((val >> shift) & 0x3F)); }