Home | History | Annotate | Download | only in doc

Lines Matching full:decode

66 href="#x1-180001.3" id="QQ2-1-19">High-level Decode Process</a></span>
68 href="#x1-190001.3.1" id="QQ2-1-20">Decode Setup</a></span>
70 href="#x1-230001.3.2" id="QQ2-1-24">Decode Procedure</a></span>
102 href="#x1-510003.2.1" id="QQ2-1-54">codebook decode</a></span>
106 href="#x1-580004" id="QQ2-1-63">Codec Setup and Packet Decode</a></span>
110 href="#x1-600004.2" id="QQ2-1-65">Header decode and decode setup</a></span>
112 href="#x1-610004.2.1" id="QQ2-1-66">Common header decode</a></span>
123 href="#x1-710004.3" id="QQ2-1-77">Audio packet decode and synthesis</a></span>
125 href="#x1-720004.3.1" id="QQ2-1-78">packet type, mode and window decode</a></span>
127 href="#x1-730004.3.2" id="QQ2-1-79">floor curve decode</a></span>
131 href="#x1-750004.3.4" id="QQ2-1-81">residue decode</a></span>
155 href="#x1-890006" id="QQ2-1-95">Floor type 0 setup and decode</a></span>
161 href="#x1-920006.2.1" id="QQ2-1-98">header decode</a></span>
163 href="#x1-930006.2.2" id="QQ2-1-99">packet decode</a></span>
167 href="#x1-950007" id="QQ2-1-101">Floor type 1 setup and decode</a></span>
175 href="#x1-990007.2.2" id="QQ2-1-109">header decode</a></span>
180 href="#x1-1020008" id="QQ2-1-112">Residue setup and decode</a></span>
192 href="#x1-1080008.6" id="QQ2-1-120">Residue decode</a></span>
194 href="#x1-1090008.6.1" id="QQ2-1-121">header decode</a></span>
196 href="#x1-1100008.6.2" id="QQ2-1-122">packet decode</a></span>
254 href="#x1-580004">Codec Setup and Packet Decode<!--tex4ht:ref: vorbis:spec:codec --></a>&#8221;. The later
255 sections assume a high-level understanding of the Vorbis decode process, which is provided
282 low-complexity decoder. Vorbis decode is computationally simpler than mp3, although it does
297 decoder must allow that a packet may be any size, or end before or after packet decode
324 decode at any frame in the stream without having previously fetched the codec setup
329 class="cmti-12">can </span>initiate decode at any arbitrary packet within a bitstream so long as the codec
331 <!--l. 101--><p class="noindent" >Thus, Vorbis headers are both required for decode to begin and relatively large as bitstream
342 <!--l. 116--><p class="noindent" >The Vorbis format is well-defined by its decode specification; any encoder that produces packets
353 <!--l. 124--><p class="noindent" >Although Vorbis decode is computationally simple, it may still run into specific limitations of an
355 the &#8216;full&#8217; decode specification yet still be certified compliant. These optional omissions are
361 perform specific functions in the decode pipeline. Each different component instance of a specific
363 configuration, as well as arrangement of specific instances into a decode pipeline. Componentry
394 decode.
398 packet decode and synthesis.
435 high bitrate modes. Floor 1 is also considerably less expensive to decode than floor
471 id="x1-180001.3"></a>High-level Decode Process</h4>
474 id="x1-190001.3.1"></a>Decode Setup</h5>
477 this specification. Once set up, decode may begin at any audio packet belonging to
502 Huffman codebooks needed for decode.
505 id="x1-230001.3.2"></a>Decode Procedure</h5>
509 class="enumerate" id="x1-23002x1">decode packet type flag
512 class="enumerate" id="x1-23004x2">decode mode number
515 class="enumerate" id="x1-23006x3">decode window shape (long windows only)
518 class="enumerate" id="x1-23008x4">decode floor
521 class="enumerate" id="x1-23010x5">decode residue into residue vectors
556 class="cmbx-12">Packet type decode</span></span>
561 audio packet decode is to read and verify the packet type; <span
569 class="cmbx-12">Mode decode</span></span>
575 class="cmbx-12">Window shape decode (long windows only)</span></span>
618 decode layers as well as allowing a greater level of easy parallelism in encode and
619 decode.
633 class="cmbx-12">floor decode</span></span>
635 specifies which floor configuration to use. All floors are decoded before residue decode
639 class="cmbx-12">residue decode</span></span>
641 mean that the raw residue vectors extracted during decode do not map directly to specific
750 <!--l. 526--><p class="noindent" >Data is not returned from the first frame; it must be used to &#8217;prime&#8217; the decode engine. The
836 <!--l. 92--><p class="noindent" >The signedness of a specific number resulting from decode is to be interpreted by the decoder
837 given decode context. That is, the three bit binary pattern &#8217;b111&#8217; can be taken to represent
1790 decode context.</li></ul>
1840 and the codewords they decode are unrolled from a packet as a series of arbitrary-width values
1857 id="x1-510003.2.1"></a>codebook decode</h5>
2067 class="cmtt-12">[codebook_codeword_lengths]</span>. Decode of lengths is according to whether the <span
2080 the codeword decode tree:
2611 <!--l. 154--><p class="noindent" >Codebook decode precedes according to <span
2614 <li class="itemize">Lookup type zero indicates no lookup to be read. Proceed past lookup decode.
2622 decode proceeds as follows:
3049 from the stream to decode to that entry number.
3104 during audio packet decode in a VQ context.
3107 class="cmbx-12">Vector value decode: Lookup type 1</span></span>
3366 class="cmbx-12">Vector value decode: Lookup type 2</span></span>
3586 decode using a codebook of lookup type 0 in any context expecting a vector return
3588 or decode requests such an action, that is an error condition rendering the packet
3596 Huffman decode tree by reading one bit at a time from the bitstream, and using the
3598 branch (right in the above examples). Walking the tree finishes when the decode process
3614 id="x1-580004"></a>Codec Setup and Packet Decode</h3>
3618 <!--l. 9--><p class="noindent" >This document serves as the top-level reference document for the bit-by-bit decode specification
3619 of Vorbis I. This document assumes a high-level understanding of the Vorbis decode
3629 id="x1-600004.2"></a>Header decode and decode setup</h4>
3631 identification header, the comments header, and the setup header. All are required for decode
3637 id="x1-610004.2.1"></a>Common header decode</h5>
3676 <!--l. 36--><p class="noindent" >Decode continues according to packet type; the identification header is type 1, the comment
3844 <!--l. 86--><p class="noindent" >Comment header decode and data specification is covered in <a
3863 <!--l. 100--><p class="noindent" >The setup header contains the bulk of the codec setup information needed for decode. The setup
3867 decode proceeds in the following order:
3880 class="enumerate" id="x1-65004x2">Decode <span
3905 Vorbis uses two floor types; header decode is handed to the decode abstraction of the appropriate
3925 class="enumerate" id="x1-67008x2">If the floor type is zero, decode the floor configuration as defined in <a
3928 href="#x1-890006">Floor type 0 setup and decode<!--tex4ht:ref: vorbis:spec:floor0 --></a>&#8221;; save this configuration in slot <span
3937 class="enumerate" id="x1-67010x3">If the floor type is one, decode the floor configuration as defined in <a
3940 href="#x1-950007">Floor type 1 setup and decode<!--tex4ht:ref: vorbis:spec:floor1 --></a>&#8221;; save this configuration in slot <span
3952 Vorbis uses three residue types; header decode of each type is identical.
3970 class="enumerate" id="x1-68008x2">If the residue type is zero, one or two, decode the residue configuration as defined
3973 href="#x1-1020008">Residue setup and decode<!--tex4ht:ref: vorbis:spec:residue --></a>&#8221;; save this configuration in slot <span
4180 <!--l. 268--><p class="noindent" >After reading mode descriptions, setup header decode is complete.
4183 id="x1-710004.3"></a>Audio packet decode and synthesis</h4>
4185 audio packet decode is to read and verify the packet type. <span
4193 id="x1-720004.3.1"></a>packet type, mode and window decode</h5>
4206 class="enumerate" id="x1-72006x3">decode blocksize <span
4241 href="#x1-260001.3.2">Window shape decode (long windows only)<!--tex4ht:ref: vorbis:spec:window --></a>&#8221; for an illustration of
4251 href="#x1-260001.3.2">Window shape decode (long windows only)<!--tex4ht:ref: vorbis:spec:window --></a>&#8221; for an illustration of
4422 id="x1-730004.3.2"></a>floor curve decode</h5>
4423 <!--l. 377--><p class="noindent" >From this point on, we assume out decode context is using mode number <span
4450 class="cmtt-12">[floor_number]</span>) is zero then decode the floor for
4454 href="#x1-930006.2.2">packet decode<!--tex4ht:ref: vorbis:spec:floor0-decode --></a>&#8221;
4457 class="enumerate" id="x1-73008x4">if the type of this floor is one then decode the floor for channel <span
4461 href="#x1-1000007.2.2">packet decode<!--tex4ht:ref: vorbis:spec:floor1-decode --></a>&#8221;
4473 <!--l. 406--><p class="noindent" >An end-of-packet condition during floor decode shall result in packet decode zeroing all channel
4478 <!--l. 414--><p class="noindent" >A possible result of floor decode is that a specific vector is marked &#8217;unused&#8217; which indicates that
4503 id="x1-750004.3.4"></a>residue decode</h5>
4566 class="enumerate" id="x1-75020x5">decode <span
4572 not be decoded. Correct per-vector decode length is <span
4763 href="#x1-260001.3.2">Window shape decode (long windows
4782 <!--l. 599--><p class="noindent" >Data is not returned from the first frame; it must be used to &#8217;prime&#8217; the decode engine. The
5266 id="x1-890006"></a>Floor type 0 setup and decode</h3>
5282 id="x1-920006.2.1"></a>header decode</h5>
5284 packet). configuration decode proceeds as follows:
5418 id="x1-930006.2.2"></a>packet decode</h5>
5424 <!--l. 56--><p class="noindent" >Packet decode proceeds as follows:
5525 class="cmtt-8">&#x00A0;decode</span><span
5699 <!--l. 76--><p class="noindent" >Take note of the following properties of decode:
5704 Several later stages of decode don&#8217;t occur for an unused channel.
5706 <li class="itemize">An end-of-packet condition during decode should be considered a nominal occruence;
5707 if end-of-packet is reached during any read operation above, floor decode is to return
5709 class="cmtt-12">[amplitude] </span>value had read zero at the beginning of decode.
5711 <li class="itemize">The book number used for decode can, in fact, be stored in the bitstream in <a
5731 be taken not to allow a buffer overflow in decode. The extra values are not used and
5738 class="cmtt-12">[coefficients] </span>vector from packet decode as well
5742 decode process, we compute a floor output vector.
5885 id="x1-950007"></a>Floor type 1 setup and decode</h3>
5983 decode, as described later. The actual algorithm splits Y value computation and line plotting
5988 id="x1-990007.2.2"></a>header decode</h5>
5990 during packet decode and synthesis). This list is split into partitions, and each partition is
6640 class="cmbx-12">packet decode</span></span>
6644 Packet decode begins by checking the <span
6665 Decode immediately returns a status indicating this floor curve (and thus this channel) is unused
6670 class="cmtt-12">[nonzero] </span>is set, decode proceeds as follows:
7278 <!--l. 226--><p class="noindent" >An end-of-packet condition during curve decode should be considered a nominal occurrence; if
7279 end-of-packet is reached during any read operation above, floor decode is to return &#8217;unused&#8217;
7281 class="cmtt-12">[nonzero] </span>flag had been unset at the beginning of decode.
7283 class="cmtt-12">[floor1_Y] </span>contains the values from packet decode needed for floor 1 synthesis.
8541 the decode process calling to floor decode). Floor 1 curve synthesis makes use of the
8550 <!--l. 345--><p class="noindent" >Decode begins by sorting the scalars from vectors <span
8978 id="x1-1020008"></a>Residue setup and decode</h3>
8988 bitstream packet, and then reconstructs the vectors during decode. Vorbis makes use of three
9021 multiple configured VQ codebook setups are used to decode that partition. The
9033 from multiple decode passes. The classification value associated with a partition is
9421 is as in type 1 with decode interleave reversed. If operating on a single vector to begin with,
9436 id="x1-1080008.6"></a>Residue decode</h4>
9439 id="x1-1090008.6.1"></a>header decode</h5>
9440 <!--l. 157--><p class="noindent" >Header decode for all three residue types is identical.
9950 <!--l. 231--><p class="noindent" >An end-of-packet condition at any point in header decode renders the stream undecodable.
9958 id="x1-1100008.6.2"></a>packet decode</h5>
9959 <!--l. 243--><p class="noindent" >Format 0 and 1 packet decode is identical except for specific partition interleave. Format 2 packet
9960 decode can be built out of the format 1 decode process. Thus we describe first the decode
9962 <!--l. 248--><p class="noindent" >In addition to configuration information, the residue decode process is passed the number of
9964 decoded. If the passed in number of vectors is 3 and vector number 1 is marked &#8217;do not decode&#8217;,
9965 decode skips vector 1 during the decode loop. However, even &#8217;do not decode&#8217; vectors are
9975 beyond the maximum vector size. Before beginning residue decode, limit <span
10053 <!--l. 277--><p class="noindent" >The following convenience values are conceptually useful to clarifying the decode process:
10095 <!--l. 286--><p class="noindent" >Packet decode proceeds as follows, matching the description offered earlier in the document.
10130 class="cmtt-8">&#x00A0;decode.</span>
10293 class="cmtt-8">&#x00A0;decode&#8217;</span><span
10781 class="cmtt-8">&#x00A0;decode&#8217;</span><span
10944 class="cmtt-8">&#x00A0;decode</span><span
11202 <!--l. 344--><p class="noindent" >An end-of-packet condition during packet decode is to be considered a nominal occurrence.
11203 Decode returns the result of vector decode up to that point.
11592 additional post-decode step after a normal format 1 decode.
11596 <!--l. 421--><p class="noindent" >Format 2 handles &#8217;do not decode&#8217; vectors differently than residue 0 or 1; if all vectors are marked
11597 &#8217;do not decode&#8217;, no decode occurrs. However, if at least one vector is to be decoded, all
11598 the vectors are decoded. We then request normal format 1 to decode a single vector
11599 representing all output channels, rather than a vector for each channel. After decode,
11606 class="cmti-12">ch</span>-1 are marked &#8217;do not decode&#8217;, allocate and clear a single
11609 class="cmti-12">ch*n </span>and skip step 2 below; proceed directly to the post-decode
11613 class="enumerate" id="x1-113004x2">Rather than performing format 1 decode to produce <span
11616 format 1 decode to produce a single vector <span
11621 class="enumerate" id="x1-113006x3">Post decode: Deinterleave the single vector <span
11622 class="cmtt-12">[v] </span>returned by format 1 decode as
12237 <!--l. 127--><p class="noindent" >Floor decode type one uses the integer line drawing algorithm of &#8221;render&#x02D9;line(x0, y0, x1, y1, v)&#8221;
13618 returned by decode, not an internal sample awaiting lapping with a subsequent block.