atrac3p:serialized_bandlet_tree_choice_info
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
atrac3p:serialized_bandlet_tree_choice_info [2010/07/23 16:52] – bandlet -> QU megadiscman | atrac3p:serialized_bandlet_tree_choice_info [2010/07/23 17:01] (current) – delete renamed page (bandlet -> QU) megadiscman | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Serialized quantization unit tree IDs ===== | ||
- | The frequency space data of the quantization units is generally Huffman encoded. There are two tree sets, which will be called tree set A and tree set B. Each of the tree sets consists of 8 trees for each quantizer (except quantizer 0 which means that no data is present). Some of the trees are duplicate. | ||
- | |||
- | As opposed to the quantization unit levels, which are stored for all quantization units up to the last quantization unit with a non-zero quantizer, Tree IDs are not stored for quantization units with a zero quantizer //at all//, even if the zero quantized quantization unit is followed by a quantization unit with a non-zero quantizer. | ||
- | |||
- | The tree choice may either be complete (each quantization unit chooses one of the eight trees for it's quantizer) or restricted (each quantization unit chooses one of the four most common trees for it's quantizer). The choice between complete or restricted selection is global for the whole substream, not just for the channel! Thus the bit is not descibed here, in the per-channel tree choice data, but in the parent page [[substream data]]. | ||
- | |||
- | Another catch is that the Tree ID is reused as a joint stereo flag. If the quantizer is zero for the slave channel, but non-zero for the master channel, the slave channel has (contradicting to the simplified introduction) still one bit stored. If this bit is zero, The data from the master channel is reused, if this bit is one, the zero quantizer is taken literally (as it is always for the master channel) and the frequency data is completely zero. | ||
- | |||
- | If quantization unit specific info is given at all (i.e. not mode 3 on master channel), then a bit indicates whether tree IDs are stored for all quantization units that need them, or only for the some first quantization units (number given) and the remaining tree IDs are implicitly zero. | ||
- | |||
- | ==== Encoding Modes ==== | ||
- | === Mode 0: direct encoding === | ||
- | The value to encode for each quantization unit is directly encoded as binary number. It's a three bit number for complete tree access, a two-bit-number for restricted tree access or a one-bit joint-stereo flag. | ||
- | |||
- | === Mode 1: Huffman encoding === | ||
- | For a complete tree ID, the value is from the [[bandlet tree id trees#full tree id|full tree ID tree]]. For a restricted ID, the value is from the [[bandlet tree id trees# | ||
- | |||
- | === Mode 2: Delta encoding === | ||
- | For quantization units needing a joint-stereo flag this mode works like mode 0 and mode 1 do, too, it just fetches a bit. For restricted or complete tree IDs, a code from the [[bandlet tree id trees# | ||
- | |||
- | === Mode 3 on master channel: Just zero === | ||
- | All Tree IDs are just zero, and the " | ||
- | |||
- | === Mode 3 on slave channel: Difference to master === | ||
- | For quantization units needing a joint-stereo flag, this modes works like all other modes providing data: It's just a single bit. For quantization units needing a tree ID, the difference to the tree ID of same quantization unit in the master is encoded using [[bandlet tree id trees# | ||
- | |||
- | ===== Encoding ===== | ||
- | * 1 bit: If set, use tree set B, if clear, use tree set A | ||
- | * 2 bit: Ecnoding mode | ||
- | * In all encodings modes except 3/master: | ||
- | * 1 bit: enable zero expansion | ||
- | * if zero expansion enabled | ||
- | * 5 bit: number of highes quantization unit with non-zero tree ID | ||
- | |||
- | ==== Encoding mode 0: direct encoding ==== | ||
- | |||
- | * for each explicit quantization unit: | ||
- | * non-zero quant, full IDs: 3 bits tree ID | ||
- | * non-zero quant, restricted trees: 2 bits common tree number | ||
- | * zero quant, master non-zero: 1 bit " | ||
- | |||
- | ==== Encoding mode 1: Huffman encoding ==== | ||
- | * for each explicit quantization unit: | ||
- | * non-zero quant, full IDs: code from [[bandlet tree id trees#full tree id|full tree ID tree]] | ||
- | * non-zero quant, restricted trees: code from [[bandlet tree id trees# | ||
- | * zero quant, master non-zero: 1 bit " | ||
- | |||
- | ==== Encoding mode 2: Delta encoding ==== | ||
- | * for each explicit quantization unit | ||
- | * non-zero quant, full IDs: code from [[bandlet tree id trees#delta prev tree id|delta-to-prev tree ID tree]] (delta to previous ID/to zero) | ||
- | * non-zero quant, restricted trees: code from [[bandlet tree id trees# | ||
- | * zero quant, master non-zero: 1 bit " | ||
- | |||
- | ==== Encoding mode 3 on master channel: Just zero ==== | ||
- | This encoding mode needs no data | ||
- | |||
- | ==== Encoding mode 3 on slave channel: Difference to master ==== | ||
- | * for each explicit quantization unit | ||
- | * non-zero quant, full IDs: code from [[bandlet tree id trees#delta master tree id|delta-to-master tree ID tree]] (delta to master) | ||
- | * non-zero quant, restricted trees: code from [[bandlet tree id trees# | ||
- | * zero quant, master non-zero: 1 bit " | ||
atrac3p/serialized_bandlet_tree_choice_info.1279903942.txt.gz · Last modified: 2010/07/23 16:52 by megadiscman