| /* |
| ** 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: qc_data.h |
| |
| Content: Quantizing & coding structures |
| |
| *******************************************************************************/ |
| |
| #ifndef _QC_DATA_H |
| #define _QC_DATA_H |
| |
| #include "psy_const.h" |
| #include "dyn_bits.h" |
| #include "adj_thr_data.h" |
| |
| |
| #define MAX_MODES 10 |
| |
| typedef enum { |
| MODE_INVALID = 0, |
| MODE_1, /* mono */ |
| MODE_1_1, /* dual mono */ |
| MODE_2 /* stereo */ |
| } ENCODER_MODE; |
| |
| typedef enum { |
| ID_SCE=0, /* Single Channel Element */ |
| ID_CPE=1, /* Channel Pair Element */ |
| ID_CCE=2, /* Coupling Channel Element */ |
| ID_LFE=3, /* LFE Channel Element */ |
| ID_DSE=4, /* current one DSE element for ancillary is supported */ |
| ID_PCE=5, |
| ID_FIL=6, |
| ID_END=7 |
| }ELEMENT_TYPE; |
| |
| typedef struct { |
| ELEMENT_TYPE elType; |
| Word16 instanceTag; |
| Word16 nChannelsInEl; |
| Word16 ChannelIndex[MAX_CHANNELS]; |
| } ELEMENT_INFO; |
| |
| typedef struct { |
| Word32 paddingRest; |
| } PADDING; |
| |
| |
| /* Quantizing & coding stage */ |
| |
| struct QC_INIT{ |
| ELEMENT_INFO *elInfo; |
| Word16 maxBits; /* maximum number of bits in reservoir */ |
| Word16 averageBits; /* average number of bits we should use */ |
| Word16 bitRes; |
| Word16 meanPe; |
| Word32 chBitrate; |
| Word16 maxBitFac; |
| Word32 bitrate; |
| |
| PADDING padding; |
| }; |
| |
| typedef struct |
| { |
| Word16 *quantSpec; /* [FRAME_LEN_LONG]; */ |
| UWord16 *maxValueInSfb; /* [MAX_GROUPED_SFB]; */ |
| Word16 *scf; /* [MAX_GROUPED_SFB]; */ |
| Word16 globalGain; |
| Word16 mdctScale; |
| Word16 groupingMask; |
| SECTION_DATA sectionData; |
| Word16 windowShape; |
| } QC_OUT_CHANNEL; |
| |
| typedef struct |
| { |
| Word16 adtsUsed; |
| Word16 staticBitsUsed; /* for verification purposes */ |
| Word16 dynBitsUsed; /* for verification purposes */ |
| Word16 pe; |
| Word16 ancBitsUsed; |
| Word16 fillBits; |
| } QC_OUT_ELEMENT; |
| |
| typedef struct |
| { |
| QC_OUT_CHANNEL qcChannel[MAX_CHANNELS]; |
| QC_OUT_ELEMENT qcElement; |
| Word16 totStaticBitsUsed; /* for verification purposes */ |
| Word16 totDynBitsUsed; /* for verification purposes */ |
| Word16 totAncBitsUsed; /* for verification purposes */ |
| Word16 totFillBits; |
| Word16 alignBits; |
| Word16 bitResTot; |
| Word16 averageBitsTot; |
| } QC_OUT; |
| |
| typedef struct { |
| Word32 chBitrate; |
| Word16 averageBits; /* brutto -> look ancillary.h */ |
| Word16 maxBits; |
| Word16 bitResLevel; |
| Word16 maxBitResBits; |
| Word16 relativeBits; /* Bits relative to total Bits scaled down by 2 */ |
| } ELEMENT_BITS; |
| |
| typedef struct |
| { |
| /* this is basically struct QC_INIT */ |
| Word16 averageBitsTot; |
| Word16 maxBitsTot; |
| Word16 globStatBits; |
| Word16 nChannels; |
| Word16 bitResTot; |
| |
| Word16 maxBitFac; |
| |
| PADDING padding; |
| |
| ELEMENT_BITS elementBits; |
| ADJ_THR_STATE adjThr; |
| |
| Word16 logSfbFormFactor[MAX_CHANNELS][MAX_GROUPED_SFB]; |
| Word16 sfbNRelevantLines[MAX_CHANNELS][MAX_GROUPED_SFB]; |
| Word16 logSfbEnergy[MAX_CHANNELS][MAX_GROUPED_SFB]; |
| } QC_STATE; |
| |
| #endif /* _QC_DATA_H */ |