diff options
Diffstat (limited to 'media/libstagefright/codecs/aacenc/src/bit_cnt.c')
-rw-r--r-- | media/libstagefright/codecs/aacenc/src/bit_cnt.c | 885 |
1 files changed, 885 insertions, 0 deletions
diff --git a/media/libstagefright/codecs/aacenc/src/bit_cnt.c b/media/libstagefright/codecs/aacenc/src/bit_cnt.c new file mode 100644 index 0000000..9fe511c --- /dev/null +++ b/media/libstagefright/codecs/aacenc/src/bit_cnt.c @@ -0,0 +1,885 @@ +/* + ** Copyright 2003-2010, VisualOn, Inc. + ** + ** Licensed under the Apache License, Version 2.0 (the "License"); + ** you may not use this file except in compliance with the License. + ** You may obtain a copy of the License at + ** + ** http://www.apache.org/licenses/LICENSE-2.0 + ** + ** Unless required by applicable law or agreed to in writing, software + ** distributed under the License is distributed on an "AS IS" BASIS, + ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ** See the License for the specific language governing permissions and + ** limitations under the License. + */ +/******************************************************************************* + File: bit_cnt.c + + Content: Huffman Bitcounter & coder functions + +*******************************************************************************/ + +#include "bit_cnt.h" +#include "aac_rom.h" + +#define HI_LTAB(a) (a>>8) +#define LO_LTAB(a) (a & 0xff) + +#define EXPAND(a) ((((Word32)(a&0xff00)) << 8)|(Word32)(a&0xff)) + + +/***************************************************************************** +* +* function name: count1_2_3_4_5_6_7_8_9_10_11 +* description: counts tables 1-11 +* returns: +* input: quantized spectrum +* output: bitCount for tables 1-11 +* +*****************************************************************************/ + +static void count1_2_3_4_5_6_7_8_9_10_11(const Word16 *values, + const Word16 width, + Word16 *bitCount) +{ + Word32 t0,t1,t2,t3,i; + Word32 bc1_2,bc3_4,bc5_6,bc7_8,bc9_10; + Word16 bc11,sc; + + bc1_2=0; + bc3_4=0; + bc5_6=0; + bc7_8=0; + bc9_10=0; + bc11=0; + sc=0; + + for(i=0;i<width;i+=4){ + + t0= values[i+0]; + t1= values[i+1]; + t2= values[i+2]; + t3= values[i+3]; + + /* 1,2 */ + + bc1_2 = bc1_2 + EXPAND(huff_ltab1_2[t0+1][t1+1][t2+1][t3+1]); + + /* 5,6 */ + bc5_6 = bc5_6 + EXPAND(huff_ltab5_6[t0+4][t1+4]); + bc5_6 = bc5_6 + EXPAND(huff_ltab5_6[t2+4][t3+4]); + + t0=ABS(t0); + t1=ABS(t1); + t2=ABS(t2); + t3=ABS(t3); + + + bc3_4 = bc3_4 + EXPAND(huff_ltab3_4[t0][t1][t2][t3]); + + bc7_8 = bc7_8 + EXPAND(huff_ltab7_8[t0][t1]); + bc7_8 = bc7_8 + EXPAND(huff_ltab7_8[t2][t3]); + + bc9_10 = bc9_10 + EXPAND(huff_ltab9_10[t0][t1]); + bc9_10 = bc9_10 + EXPAND(huff_ltab9_10[t2][t3]); + + bc11 = bc11 + huff_ltab11[t0][t1]; + bc11 = bc11 + huff_ltab11[t2][t3]; + + + sc = sc + (t0>0) + (t1>0) + (t2>0) + (t3>0); + } + + bitCount[1]=extract_h(bc1_2); + bitCount[2]=extract_l(bc1_2); + bitCount[3]=extract_h(bc3_4) + sc; + bitCount[4]=extract_l(bc3_4) + sc; + bitCount[5]=extract_h(bc5_6); + bitCount[6]=extract_l(bc5_6); + bitCount[7]=extract_h(bc7_8) + sc; + bitCount[8]=extract_l(bc7_8) + sc; + bitCount[9]=extract_h(bc9_10) + sc; + bitCount[10]=extract_l(bc9_10) + sc; + bitCount[11]=bc11 + sc; +} + + +/***************************************************************************** +* +* function name: count3_4_5_6_7_8_9_10_11 +* description: counts tables 3-11 +* returns: +* input: quantized spectrum +* output: bitCount for tables 3-11 +* +*****************************************************************************/ + +static void count3_4_5_6_7_8_9_10_11(const Word16 *values, + const Word16 width, + Word16 *bitCount) +{ + Word32 t0,t1,t2,t3, i; + Word32 bc3_4,bc5_6,bc7_8,bc9_10; + Word16 bc11,sc; + + bc3_4=0; + bc5_6=0; + bc7_8=0; + bc9_10=0; + bc11=0; + sc=0; + + for(i=0;i<width;i+=4){ + + t0= values[i+0]; + t1= values[i+1]; + t2= values[i+2]; + t3= values[i+3]; + + /* + 5,6 + */ + bc5_6 = bc5_6 + EXPAND(huff_ltab5_6[t0+4][t1+4]); + bc5_6 = bc5_6 + EXPAND(huff_ltab5_6[t2+4][t3+4]); + + t0=ABS(t0); + t1=ABS(t1); + t2=ABS(t2); + t3=ABS(t3); + + + bc3_4 = bc3_4 + EXPAND(huff_ltab3_4[t0][t1][t2][t3]); + + bc7_8 = bc7_8 + EXPAND(huff_ltab7_8[t0][t1]); + bc7_8 = bc7_8 + EXPAND(huff_ltab7_8[t2][t3]); + + bc9_10 = bc9_10 + EXPAND(huff_ltab9_10[t0][t1]); + bc9_10 = bc9_10 + EXPAND(huff_ltab9_10[t2][t3]); + + bc11 = bc11 + huff_ltab11[t0][t1]; + bc11 = bc11 + huff_ltab11[t2][t3]; + + + sc = sc + (t0>0) + (t1>0) + (t2>0) + (t3>0); + } + + bitCount[1]=INVALID_BITCOUNT; + bitCount[2]=INVALID_BITCOUNT; + bitCount[3]=extract_h(bc3_4) + sc; + bitCount[4]=extract_l(bc3_4) + sc; + bitCount[5]=extract_h(bc5_6); + bitCount[6]=extract_l(bc5_6); + bitCount[7]=extract_h(bc7_8) + sc; + bitCount[8]=extract_l(bc7_8) + sc; + bitCount[9]=extract_h(bc9_10) + sc; + bitCount[10]=extract_l(bc9_10) + sc; + bitCount[11]=bc11 + sc; + +} + + + +/***************************************************************************** +* +* function name: count5_6_7_8_9_10_11 +* description: counts tables 5-11 +* returns: +* input: quantized spectrum +* output: bitCount for tables 5-11 +* +*****************************************************************************/ +static void count5_6_7_8_9_10_11(const Word16 *values, + const Word16 width, + Word16 *bitCount) +{ + + Word32 t0,t1,i; + Word32 bc5_6,bc7_8,bc9_10; + Word16 bc11,sc; + + bc5_6=0; + bc7_8=0; + bc9_10=0; + bc11=0; + sc=0; + + for(i=0;i<width;i+=2){ + + t0 = values[i+0]; + t1 = values[i+1]; + + bc5_6 = bc5_6 + EXPAND(huff_ltab5_6[t0+4][t1+4]); + + t0=ABS(t0); + t1=ABS(t1); + + bc7_8 = bc7_8 + EXPAND(huff_ltab7_8[t0][t1]); + bc9_10 = bc9_10 + EXPAND(huff_ltab9_10[t0][t1]); + bc11 = bc11 + huff_ltab11[t0][t1]; + + + sc = sc + (t0>0) + (t1>0); + } + bitCount[1]=INVALID_BITCOUNT; + bitCount[2]=INVALID_BITCOUNT; + bitCount[3]=INVALID_BITCOUNT; + bitCount[4]=INVALID_BITCOUNT; + bitCount[5]=extract_h(bc5_6); + bitCount[6]=extract_l(bc5_6); + bitCount[7]=extract_h(bc7_8) + sc; + bitCount[8]=extract_l(bc7_8) + sc; + bitCount[9]=extract_h(bc9_10) + sc; + bitCount[10]=extract_l(bc9_10) + sc; + bitCount[11]=bc11 + sc; + +} + + +/***************************************************************************** +* +* function name: count7_8_9_10_11 +* description: counts tables 7-11 +* returns: +* input: quantized spectrum +* output: bitCount for tables 7-11 +* +*****************************************************************************/ + +static void count7_8_9_10_11(const Word16 *values, + const Word16 width, + Word16 *bitCount) +{ + Word32 t0,t1, i; + Word32 bc7_8,bc9_10; + Word16 bc11,sc; + + bc7_8=0; + bc9_10=0; + bc11=0; + sc=0; + + for(i=0;i<width;i+=2){ + + t0=ABS(values[i+0]); + t1=ABS(values[i+1]); + + bc7_8 = bc7_8 + EXPAND(huff_ltab7_8[t0][t1]); + bc9_10 = bc9_10 + EXPAND(huff_ltab9_10[t0][t1]); + bc11 = bc11 + huff_ltab11[t0][t1]; + + + sc = sc + (t0>0) + (t1>0); + } + bitCount[1]=INVALID_BITCOUNT; + bitCount[2]=INVALID_BITCOUNT; + bitCount[3]=INVALID_BITCOUNT; + bitCount[4]=INVALID_BITCOUNT; + bitCount[5]=INVALID_BITCOUNT; + bitCount[6]=INVALID_BITCOUNT; + bitCount[7]=extract_h(bc7_8) + sc; + bitCount[8]=extract_l(bc7_8) + sc; + bitCount[9]=extract_h(bc9_10) + sc; + bitCount[10]=extract_l(bc9_10) + sc; + bitCount[11]=bc11 + sc; + +} + +/***************************************************************************** +* +* function name: count9_10_11 +* description: counts tables 9-11 +* returns: +* input: quantized spectrum +* output: bitCount for tables 9-11 +* +*****************************************************************************/ +static void count9_10_11(const Word16 *values, + const Word16 width, + Word16 *bitCount) +{ + + Word32 t0,t1,i; + Word32 bc9_10; + Word16 bc11,sc; + + bc9_10=0; + bc11=0; + sc=0; + + for(i=0;i<width;i+=2){ + + t0=ABS(values[i+0]); + t1=ABS(values[i+1]); + + + bc9_10 += EXPAND(huff_ltab9_10[t0][t1]); + bc11 = bc11 + huff_ltab11[t0][t1]; + + + sc = sc + (t0>0) + (t1>0); + } + bitCount[1]=INVALID_BITCOUNT; + bitCount[2]=INVALID_BITCOUNT; + bitCount[3]=INVALID_BITCOUNT; + bitCount[4]=INVALID_BITCOUNT; + bitCount[5]=INVALID_BITCOUNT; + bitCount[6]=INVALID_BITCOUNT; + bitCount[7]=INVALID_BITCOUNT; + bitCount[8]=INVALID_BITCOUNT; + bitCount[9]=extract_h(bc9_10) + sc; + bitCount[10]=extract_l(bc9_10) + sc; + bitCount[11]=bc11 + sc; + +} + +/***************************************************************************** +* +* function name: count11 +* description: counts table 11 +* returns: +* input: quantized spectrum +* output: bitCount for table 11 +* +*****************************************************************************/ + static void count11(const Word16 *values, + const Word16 width, + Word16 *bitCount) +{ + Word32 t0,t1,i; + Word16 bc11,sc; + + bc11=0; + sc=0; + for(i=0;i<width;i+=2){ + t0=ABS(values[i+0]); + t1=ABS(values[i+1]); + bc11 = bc11 + huff_ltab11[t0][t1]; + + + sc = sc + (t0>0) + (t1>0); + } + + bitCount[1]=INVALID_BITCOUNT; + bitCount[2]=INVALID_BITCOUNT; + bitCount[3]=INVALID_BITCOUNT; + bitCount[4]=INVALID_BITCOUNT; + bitCount[5]=INVALID_BITCOUNT; + bitCount[6]=INVALID_BITCOUNT; + bitCount[7]=INVALID_BITCOUNT; + bitCount[8]=INVALID_BITCOUNT; + bitCount[9]=INVALID_BITCOUNT; + bitCount[10]=INVALID_BITCOUNT; + bitCount[11]=bc11 + sc; +} + +/***************************************************************************** +* +* function name: countEsc +* description: counts table 11 (with Esc) +* returns: +* input: quantized spectrum +* output: bitCount for tables 11 (with Esc) +* +*****************************************************************************/ + +static void countEsc(const Word16 *values, + const Word16 width, + Word16 *bitCount) +{ + Word32 t0,t1,t00,t01,i; + Word16 bc11,ec,sc; + + bc11=0; + sc=0; + ec=0; + for(i=0;i<width;i+=2){ + t0=ABS(values[i+0]); + t1=ABS(values[i+1]); + + + sc = sc + (t0>0) + (t1>0); + + t00 = min(t0,16); + t01 = min(t1,16); + bc11 = bc11 + huff_ltab11[t00][t01]; + + + if(t0 >= 16){ + ec = ec + 5; + while(sub(t0=(t0 >> 1), 16) >= 0) { + ec = ec + 2; + } + } + + + if(t1 >= 16){ + ec = ec + 5; + while(sub(t1=(t1 >> 1), 16) >= 0) { + ec = ec + 2; + } + } + } + bitCount[1]=INVALID_BITCOUNT; + bitCount[2]=INVALID_BITCOUNT; + bitCount[3]=INVALID_BITCOUNT; + bitCount[4]=INVALID_BITCOUNT; + bitCount[5]=INVALID_BITCOUNT; + bitCount[6]=INVALID_BITCOUNT; + bitCount[7]=INVALID_BITCOUNT; + bitCount[8]=INVALID_BITCOUNT; + bitCount[9]=INVALID_BITCOUNT; + bitCount[10]=INVALID_BITCOUNT; + bitCount[11]=bc11 + sc + ec; +} + + +typedef void (*COUNT_FUNCTION)(const Word16 *values, + const Word16 width, + Word16 *bitCount); + +static COUNT_FUNCTION countFuncTable[CODE_BOOK_ESC_LAV+1] = + { + + count1_2_3_4_5_6_7_8_9_10_11, /* 0 */ + count1_2_3_4_5_6_7_8_9_10_11, /* 1 */ + count3_4_5_6_7_8_9_10_11, /* 2 */ + count5_6_7_8_9_10_11, /* 3 */ + count5_6_7_8_9_10_11, /* 4 */ + count7_8_9_10_11, /* 5 */ + count7_8_9_10_11, /* 6 */ + count7_8_9_10_11, /* 7 */ + count9_10_11, /* 8 */ + count9_10_11, /* 9 */ + count9_10_11, /* 10 */ + count9_10_11, /* 11 */ + count9_10_11, /* 12 */ + count11, /* 13 */ + count11, /* 14 */ + count11, /* 15 */ + countEsc /* 16 */ + }; + +/***************************************************************************** +* +* function name: bitCount +* description: count bits +* +*****************************************************************************/ +Word16 bitCount(const Word16 *values, + const Word16 width, + Word16 maxVal, + Word16 *bitCount) +{ + /* + check if we can use codebook 0 + */ + + if(maxVal == 0) + bitCount[0] = 0; + else + bitCount[0] = INVALID_BITCOUNT; + + maxVal = min(maxVal, CODE_BOOK_ESC_LAV); + countFuncTable[maxVal](values,width,bitCount); + + return(0); +} + +/***************************************************************************** +* +* function name: codeValues +* description: write huffum bits +* +*****************************************************************************/ +Word16 codeValues(Word16 *values, Word16 width, Word16 codeBook, HANDLE_BIT_BUF hBitstream) +{ + + Word32 i, t0, t1, t2, t3, t00, t01; + UWord16 codeWord, codeLength; + Word16 sign, signLength; + + + switch (codeBook) { + case CODE_BOOK_ZERO_NO: + break; + + case CODE_BOOK_1_NO: + for(i=0; i<width; i+=4) { + t0 = values[i+0]; + t1 = values[i+1]; + t2 = values[i+2]; + t3 = values[i+3]; + codeWord = huff_ctab1[t0+1][t1+1][t2+1][t3+1]; + codeLength = HI_LTAB(huff_ltab1_2[t0+1][t1+1][t2+1][t3+1]); + WriteBits(hBitstream, codeWord, codeLength); + } + break; + + case CODE_BOOK_2_NO: + for(i=0; i<width; i+=4) { + t0 = values[i+0]; + t1 = values[i+1]; + t2 = values[i+2]; + t3 = values[i+3]; + codeWord = huff_ctab2[t0+1][t1+1][t2+1][t3+1]; + codeLength = LO_LTAB(huff_ltab1_2[t0+1][t1+1][t2+1][t3+1]); + WriteBits(hBitstream,codeWord,codeLength); + } + break; + + case CODE_BOOK_3_NO: + for(i=0; i<width; i+=4) { + sign=0; + signLength=0; + t0 = values[i+0]; + + if(t0 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t0 < 0){ + sign|=1; + t0=-t0; + } + } + t1 = values[i+1]; + + if(t1 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t1 < 0){ + sign|=1; + t1=-t1; + } + } + t2 = values[i+2]; + + if(t2 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t2 < 0){ + sign|=1; + t2=-t2; + } + } + t3 = values[i+3]; + if(t3 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t3 < 0){ + sign|=1; + t3=-t3; + } + } + + codeWord = huff_ctab3[t0][t1][t2][t3]; + codeLength = HI_LTAB(huff_ltab3_4[t0][t1][t2][t3]); + WriteBits(hBitstream,codeWord,codeLength); + WriteBits(hBitstream,sign,signLength); + } + break; + + case CODE_BOOK_4_NO: + for(i=0; i<width; i+=4) { + sign=0; + signLength=0; + t0 = values[i+0]; + + if(t0 != 0){ + signLength = signLength + 1; + sign = sign << 1; + if(t0 < 0){ + sign|=1; + t0=-t0; + } + } + t1 = values[i+1]; + + if(t1 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t1 < 0){ + sign|=1; + t1=-t1; + } + } + t2 = values[i+2]; + + if(t2 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t2 < 0){ + sign|=1; + t2=-t2; + } + } + t3 = values[i+3]; + + if(t3 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t3 < 0){ + sign|=1; + t3=-t3; + } + } + codeWord = huff_ctab4[t0][t1][t2][t3]; + codeLength = LO_LTAB(huff_ltab3_4[t0][t1][t2][t3]); + WriteBits(hBitstream,codeWord,codeLength); + WriteBits(hBitstream,sign,signLength); + } + break; + + case CODE_BOOK_5_NO: + for(i=0; i<width; i+=2) { + t0 = values[i+0]; + t1 = values[i+1]; + codeWord = huff_ctab5[t0+4][t1+4]; + codeLength = HI_LTAB(huff_ltab5_6[t0+4][t1+4]); + WriteBits(hBitstream,codeWord,codeLength); + } + break; + + case CODE_BOOK_6_NO: + for(i=0; i<width; i+=2) { + t0 = values[i+0]; + t1 = values[i+1]; + codeWord = huff_ctab6[t0+4][t1+4]; + codeLength = LO_LTAB(huff_ltab5_6[t0+4][t1+4]); + WriteBits(hBitstream,codeWord,codeLength); + } + break; + + case CODE_BOOK_7_NO: + for(i=0; i<width; i+=2){ + sign=0; + signLength=0; + t0 = values[i+0]; + + if(t0 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t0 < 0){ + sign|=1; + t0=-t0; + } + } + + t1 = values[i+1]; + + if(t1 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t1 < 0){ + sign|=1; + t1=-t1; + } + } + codeWord = huff_ctab7[t0][t1]; + codeLength = HI_LTAB(huff_ltab7_8[t0][t1]); + WriteBits(hBitstream,codeWord,codeLength); + WriteBits(hBitstream,sign,signLength); + } + break; + + case CODE_BOOK_8_NO: + for(i=0; i<width; i+=2) { + sign=0; + signLength=0; + t0 = values[i+0]; + + if(t0 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t0 < 0){ + sign|=1; + t0=-t0; + } + } + + t1 = values[i+1]; + + if(t1 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t1 < 0){ + sign|=1; + t1=-t1; + } + } + codeWord = huff_ctab8[t0][t1]; + codeLength = LO_LTAB(huff_ltab7_8[t0][t1]); + WriteBits(hBitstream,codeWord,codeLength); + WriteBits(hBitstream,sign,signLength); + } + break; + + case CODE_BOOK_9_NO: + for(i=0; i<width; i+=2) { + sign=0; + signLength=0; + t0 = values[i+0]; + + if(t0 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t0 < 0){ + sign|=1; + t0=-t0; + } + } + + t1 = values[i+1]; + + if(t1 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t1 < 0){ + sign|=1; + t1=-t1; + } + } + codeWord = huff_ctab9[t0][t1]; + codeLength = HI_LTAB(huff_ltab9_10[t0][t1]); + WriteBits(hBitstream,codeWord,codeLength); + WriteBits(hBitstream,sign,signLength); + } + break; + + case CODE_BOOK_10_NO: + for(i=0; i<width; i+=2) { + sign=0; + signLength=0; + t0 = values[i+0]; + + if(t0 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t0 < 0){ + sign|=1; + t0=-t0; + } + } + + t1 = values[i+1]; + + if(t1 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t1 < 0){ + sign|=1; + t1=-t1; + } + } + codeWord = huff_ctab10[t0][t1]; + codeLength = LO_LTAB(huff_ltab9_10[t0][t1]); + WriteBits(hBitstream,codeWord,codeLength); + WriteBits(hBitstream,sign,signLength); + } + break; + + case CODE_BOOK_ESC_NO: + for(i=0; i<width; i+=2) { + sign=0; + signLength=0; + t0 = values[i+0]; + + if(t0 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t0 < 0){ + sign|=1; + t0=-t0; + } + } + + t1 = values[i+1]; + + if(t1 != 0){ + signLength = signLength + 1; + sign = sign << 1; + + if(t1 < 0){ + sign|=1; + t1=-t1; + } + } + t00 = min(t0,16); + t01 = min(t1,16); + + codeWord = huff_ctab11[t00][t01]; + codeLength = huff_ltab11[t00][t01]; + WriteBits(hBitstream,codeWord,codeLength); + WriteBits(hBitstream,sign,signLength); + + if(t0 >= 16){ + Word16 n, p; + n=0; + p=t0; + while(sub(p=(p >> 1), 16) >= 0){ + + WriteBits(hBitstream,1,1); + n = n + 1; + } + WriteBits(hBitstream,0,1); + n = n + 4; + WriteBits(hBitstream,(t0 - (1 << n)),n); + } + + if(t1 >= 16){ + Word16 n, p; + n=0; + p=t1; + while(sub(p=(p >> 1), 16) >= 0){ + + WriteBits(hBitstream,1,1); + n = n + 1; + } + WriteBits(hBitstream,0,1); + n = n + 4; + WriteBits(hBitstream,(t1 - (1 << n)),n); + } + } + break; + + default: + break; + } + return(0); +} + +Word16 bitCountScalefactorDelta(Word16 delta) +{ + return(huff_ltabscf[delta+CODE_BOOK_SCF_LAV]); +} + +Word16 codeScalefactorDelta(Word16 delta, HANDLE_BIT_BUF hBitstream) +{ + Word32 codeWord; + Word16 codeLength; + + + if(delta > CODE_BOOK_SCF_LAV || delta < -CODE_BOOK_SCF_LAV) + return(1); + + codeWord = huff_ctabscf[delta + CODE_BOOK_SCF_LAV]; + codeLength = huff_ltabscf[delta + CODE_BOOK_SCF_LAV]; + WriteBits(hBitstream,codeWord,codeLength); + return(0); +} |