<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html -->
<meta name="src" content="Vorbis_I_spec.tex">
-<meta name="date" content="2015-02-26 14:14:00">
+<meta name="date" content="2015-02-27 13:18:00">
<link rel="stylesheet" type="text/css" href="Vorbis_I_spec.css">
</head><body
>
<div class="author" ><span
class="cmr-17">Xiph.Org Foundation</span></div><br />
<div class="date" ><span
-class="cmr-17">February 26, 2015</span></div>
+class="cmr-17">February 27, 2015</span></div>
</div>
<h3 class="likesectionHead"><a
id="x1-1000"></a>Contents</h3>
<br />   <span class="subsubsectionToc" >6.2.3 <a
href="#x1-950006.2.3" id="QQ2-1-101">curve computation</a></span>
<br /> <span class="sectionToc" >7 <a
-href="#x1-960007" id="QQ2-1-102">Floor type 1 setup and decode</a></span>
+href="#x1-970007" id="QQ2-1-103">Floor type 1 setup and decode</a></span>
<br />  <span class="subsectionToc" >7.1 <a
-href="#x1-970007.1" id="QQ2-1-103">Overview</a></span>
+href="#x1-980007.1" id="QQ2-1-104">Overview</a></span>
<br />  <span class="subsectionToc" >7.2 <a
-href="#x1-980007.2" id="QQ2-1-104">Floor 1 format</a></span>
+href="#x1-990007.2" id="QQ2-1-105">Floor 1 format</a></span>
<br />   <span class="subsubsectionToc" >7.2.1 <a
-href="#x1-990007.2.1" id="QQ2-1-105">model</a></span>
+href="#x1-1000007.2.1" id="QQ2-1-106">model</a></span>
<br />   <span class="subsubsectionToc" >7.2.2 <a
-href="#x1-1000007.2.2" id="QQ2-1-110">header decode</a></span>
+href="#x1-1010007.2.2" id="QQ2-1-111">header decode</a></span>
<br />   <span class="subsubsectionToc" >7.2.3 <a
-href="#x1-1010007.2.3" id="QQ2-1-111">packet decode</a></span>
+href="#x1-1020007.2.3" id="QQ2-1-112">packet decode</a></span>
<br />   <span class="subsubsectionToc" >7.2.4 <a
-href="#x1-1020007.2.4" id="QQ2-1-112">curve computation</a></span>
+href="#x1-1030007.2.4" id="QQ2-1-113">curve computation</a></span>
<br /> <span class="sectionToc" >8 <a
-href="#x1-1030008" id="QQ2-1-113">Residue setup and decode</a></span>
+href="#x1-1040008" id="QQ2-1-114">Residue setup and decode</a></span>
<br />  <span class="subsectionToc" >8.1 <a
-href="#x1-1040008.1" id="QQ2-1-114">Overview</a></span>
+href="#x1-1050008.1" id="QQ2-1-115">Overview</a></span>
<br />  <span class="subsectionToc" >8.2 <a
-href="#x1-1050008.2" id="QQ2-1-115">Residue format</a></span>
+href="#x1-1060008.2" id="QQ2-1-116">Residue format</a></span>
<br />  <span class="subsectionToc" >8.3 <a
-href="#x1-1060008.3" id="QQ2-1-117">residue 0</a></span>
+href="#x1-1070008.3" id="QQ2-1-118">residue 0</a></span>
<br />  <span class="subsectionToc" >8.4 <a
-href="#x1-1070008.4" id="QQ2-1-118">residue 1</a></span>
+href="#x1-1080008.4" id="QQ2-1-119">residue 1</a></span>
<br />  <span class="subsectionToc" >8.5 <a
-href="#x1-1080008.5" id="QQ2-1-119">residue 2</a></span>
+href="#x1-1090008.5" id="QQ2-1-120">residue 2</a></span>
<br />  <span class="subsectionToc" >8.6 <a
-href="#x1-1090008.6" id="QQ2-1-121">Residue decode</a></span>
+href="#x1-1100008.6" id="QQ2-1-122">Residue decode</a></span>
<br />   <span class="subsubsectionToc" >8.6.1 <a
-href="#x1-1100008.6.1" id="QQ2-1-122">header decode</a></span>
+href="#x1-1110008.6.1" id="QQ2-1-123">header decode</a></span>
<br />   <span class="subsubsectionToc" >8.6.2 <a
-href="#x1-1110008.6.2" id="QQ2-1-123">packet decode</a></span>
+href="#x1-1120008.6.2" id="QQ2-1-124">packet decode</a></span>
<br />   <span class="subsubsectionToc" >8.6.3 <a
-href="#x1-1120008.6.3" id="QQ2-1-124">format 0 specifics</a></span>
+href="#x1-1130008.6.3" id="QQ2-1-125">format 0 specifics</a></span>
<br />   <span class="subsubsectionToc" >8.6.4 <a
-href="#x1-1130008.6.4" id="QQ2-1-125">format 1 specifics</a></span>
+href="#x1-1140008.6.4" id="QQ2-1-126">format 1 specifics</a></span>
<br />   <span class="subsubsectionToc" >8.6.5 <a
-href="#x1-1140008.6.5" id="QQ2-1-126">format 2 specifics</a></span>
+href="#x1-1150008.6.5" id="QQ2-1-127">format 2 specifics</a></span>
<br /> <span class="sectionToc" >9 <a
-href="#x1-1150009" id="QQ2-1-127">Helper equations</a></span>
+href="#x1-1160009" id="QQ2-1-128">Helper equations</a></span>
<br />  <span class="subsectionToc" >9.1 <a
-href="#x1-1160009.1" id="QQ2-1-128">Overview</a></span>
+href="#x1-1170009.1" id="QQ2-1-129">Overview</a></span>
<br />  <span class="subsectionToc" >9.2 <a
-href="#x1-1170009.2" id="QQ2-1-129">Functions</a></span>
+href="#x1-1180009.2" id="QQ2-1-130">Functions</a></span>
<br />   <span class="subsubsectionToc" >9.2.1 <a
-href="#x1-1180009.2.1" id="QQ2-1-130">ilog</a></span>
+href="#x1-1190009.2.1" id="QQ2-1-131">ilog</a></span>
<br />   <span class="subsubsectionToc" >9.2.2 <a
-href="#x1-1190009.2.2" id="QQ2-1-131">float32_unpack</a></span>
+href="#x1-1200009.2.2" id="QQ2-1-132">float32_unpack</a></span>
<br />   <span class="subsubsectionToc" >9.2.3 <a
-href="#x1-1200009.2.3" id="QQ2-1-132">lookup1_values</a></span>
+href="#x1-1210009.2.3" id="QQ2-1-133">lookup1_values</a></span>
<br />   <span class="subsubsectionToc" >9.2.4 <a
-href="#x1-1210009.2.4" id="QQ2-1-133">low_neighbor</a></span>
+href="#x1-1220009.2.4" id="QQ2-1-134">low_neighbor</a></span>
<br />   <span class="subsubsectionToc" >9.2.5 <a
-href="#x1-1220009.2.5" id="QQ2-1-134">high_neighbor</a></span>
+href="#x1-1230009.2.5" id="QQ2-1-135">high_neighbor</a></span>
<br />   <span class="subsubsectionToc" >9.2.6 <a
-href="#x1-1230009.2.6" id="QQ2-1-135">render_point</a></span>
+href="#x1-1240009.2.6" id="QQ2-1-136">render_point</a></span>
<br />   <span class="subsubsectionToc" >9.2.7 <a
-href="#x1-1240009.2.7" id="QQ2-1-136">render_line</a></span>
+href="#x1-1250009.2.7" id="QQ2-1-137">render_line</a></span>
<br /> <span class="sectionToc" >10 <a
-href="#x1-12500010" id="QQ2-1-137">Tables</a></span>
+href="#x1-12600010" id="QQ2-1-138">Tables</a></span>
<br />  <span class="subsectionToc" >10.1 <a
-href="#x1-12600010.1" id="QQ2-1-138">floor1_inverse_dB_table</a></span>
+href="#x1-12700010.1" id="QQ2-1-139">floor1_inverse_dB_table</a></span>
<br /> <span class="sectionToc" >A <a
-href="#x1-127000A" id="QQ2-1-139">Embedding Vorbis into an Ogg stream</a></span>
+href="#x1-128000A" id="QQ2-1-140">Embedding Vorbis into an Ogg stream</a></span>
<br />  <span class="subsectionToc" >A.1 <a
-href="#x1-128000A.1" id="QQ2-1-140">Overview</a></span>
+href="#x1-129000A.1" id="QQ2-1-141">Overview</a></span>
<br />   <span class="subsubsectionToc" >A.1.1 <a
-href="#x1-129000A.1.1" id="QQ2-1-141">Restrictions</a></span>
+href="#x1-130000A.1.1" id="QQ2-1-142">Restrictions</a></span>
<br />   <span class="subsubsectionToc" >A.1.2 <a
-href="#x1-130000A.1.2" id="QQ2-1-142">MIME type</a></span>
+href="#x1-131000A.1.2" id="QQ2-1-143">MIME type</a></span>
<br />  <span class="subsectionToc" >A.2 <a
-href="#x1-131000A.2" id="QQ2-1-143">Encapsulation</a></span>
+href="#x1-132000A.2" id="QQ2-1-144">Encapsulation</a></span>
<br /> <span class="sectionToc" >B <a
-href="#x1-133000B" id="QQ2-1-145">Vorbis encapsulation in RTP</a></span>
+href="#x1-134000B" id="QQ2-1-146">Vorbis encapsulation in RTP</a></span>
</div>
although this is by no means a requirement or fundamental assumption in the Vorbis
design.
<!--l. 72--><p class="noindent" >The specification for embedding Vorbis into an Ogg transport stream is in <a
-href="#x1-127000A">section A</a>,
+href="#x1-128000A">section A</a>,
“<a
-href="#x1-127000A">Embedding Vorbis into an Ogg stream<!--tex4ht:ref: vorbis:over:ogg --></a>”.
+href="#x1-128000A">Embedding Vorbis into an Ogg stream<!--tex4ht:ref: vorbis:over:ogg --></a>”.
<!--l. 77--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">1.1.4. </span> <a
id="x1-70001.1.4"></a>Codec Setup and Probability Model</h5>
class="cmtt-8"> =</span><span
class="cmtt-8"> read</span><span
class="cmtt-8"> </span><a
-href="#x1-1180009.2.1"><span
+href="#x1-1190009.2.1"><span
class="cmtt-8">ilog</span></a><span
class="cmtt-8">([codebook_entries]</span><span
class="cmtt-8"> -</span><span
class="cmtt-8"> [codebook_minimum_value]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> </span><a
-href="#x1-1190009.2.2"><span
+href="#x1-1200009.2.2"><span
class="cmtt-8">float32_unpack</span></a><span
class="cmtt-8">(</span><span
class="cmtt-8"> read</span><span
class="cmtt-8"> [codebook_delta_value]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> </span><a
-href="#x1-1190009.2.2"><span
+href="#x1-1200009.2.2"><span
class="cmtt-8">float32_unpack</span></a><span
class="cmtt-8">(</span><span
class="cmtt-8"> read</span><span
class="cmtt-8"> [codebook_lookup_values]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> </span><a
-href="#x1-1200009.2.3"><span
+href="#x1-1210009.2.3"><span
class="cmtt-8">lookup1_values</span></a><span
class="cmtt-8">([codebook_entries],</span><span
class="cmtt-8"> [codebook_dimensions]</span><span
</dd><dt class="enumerate-enumitem">
c) </dt><dd
class="enumerate-enumitem">If the floor type is one, decode the floor configuration as defined in <a
-href="#x1-960007">section 7</a>,
+href="#x1-970007">section 7</a>,
“<a
-href="#x1-960007">Floor type 1 setup and decode<!--tex4ht:ref: vorbis:spec:floor1 --></a>”; save this configuration in slot <span
+href="#x1-970007">Floor type 1 setup and decode<!--tex4ht:ref: vorbis:spec:floor1 --></a>”; save this configuration in slot <span
class="cmtt-12">[i] </span>of the floor
configuration array <span
class="cmtt-12">[vorbis_floor_configurations]</span>.
b) </dt><dd
class="enumerate-enumitem">If the residue type is zero, one or two, decode the residue configuration as defined
in <a
-href="#x1-1030008">section 8</a>, “<a
-href="#x1-1030008">Residue setup and decode<!--tex4ht:ref: vorbis:spec:residue --></a>”; save this configuration in slot <span
+href="#x1-1040008">section 8</a>, “<a
+href="#x1-1040008">Residue setup and decode<!--tex4ht:ref: vorbis:spec:residue --></a>”; save this configuration in slot <span
class="cmtt-12">[i] </span>of
the residue configuration array <span
class="cmtt-12">[vorbis_residue_configurations]</span>.
class="cmtt-12">[vorbis_mapping_magnitude] </span>element <span
class="cmtt-12">[j]</span>= read
<a
-href="#x1-1180009.2.1">ilog</a>(<span
+href="#x1-1190009.2.1">ilog</a>(<span
class="cmtt-12">[audio_channels] </span>- 1) bits as unsigned integer
</li>
<li class="itemize">vector <span
class="cmtt-12">[vorbis_mapping_angle] </span>element <span
class="cmtt-12">[j]</span>= read
<a
-href="#x1-1180009.2.1">ilog</a>(<span
+href="#x1-1190009.2.1">ilog</a>(<span
class="cmtt-12">[audio_channels] </span>- 1) bits as unsigned integer
</li>
<li class="itemize">the numbers read in the above two steps are channel numbers
</dd><dt class="enumerate-enumitem">
2. </dt><dd
class="enumerate-enumitem">read <a
-href="#x1-1180009.2.1">ilog</a>([vorbis_mode_count]-1) bits <span
+href="#x1-1190009.2.1">ilog</a>([vorbis_mode_count]-1) bits <span
class="cmtt-12">[mode_number]</span>
</dd><dt class="enumerate-enumitem">
3. </dt><dd
class="enumerate-enumitem">if the type of this floor is one then decode the floor for channel <span
class="cmtt-12">[i] </span>according to the
<a
-href="#x1-1010007.2.3">subsubsection 7.2.3</a>, “<a
-href="#x1-1010007.2.3">packet decode<!--tex4ht:ref: vorbis:spec:floor1-decode --></a>”
+href="#x1-1020007.2.3">subsubsection 7.2.3</a>, “<a
+href="#x1-1020007.2.3">packet decode<!--tex4ht:ref: vorbis:spec:floor1-decode --></a>”
</dd><dt class="enumerate-enumitem">
5. </dt><dd
class="enumerate-enumitem">save the needed decoded floor information for channel for later synthesis
class="cmtt-8"> integer</span><span
class="cmtt-8"> of</span><span
class="cmtt-8"> </span><a
-href="#x1-1180009.2.1"><span
+href="#x1-1190009.2.1"><span
class="cmtt-8">ilog</span></a><span
class="cmtt-8">(</span><span
class="cmtt-8"> [floor0_number_of_books]</span><span
class="cmtt-12">[amplitude] </span>value had read zero at the beginning of decode.
</li>
<li class="itemize">The book number used for decode can, in fact, be stored in the bitstream in <a
-href="#x1-1180009.2.1">ilog</a>(
+href="#x1-1190009.2.1">ilog</a>(
<span
class="cmtt-12">[floor0_number_of_books] </span>- 1 ) bits. Nevertheless, the above specification is correct
and values greater than the maximum possible book value are reserved.
<center class="par-math-display" >
<img
src="Vorbis_I_spec9x.png" alt=" 2
-bark(x) = 13.1arctan (.00074x ) + 2.24 arctan(.0000000185x + .0001x )
+bark(x) = 13.1arctan (.00074x ) + 2.24 arctan(.0000000185x ) + .0001x
" class="par-math-display" ></center>
<!--l. 143--><p class="nopar" >
<!--l. 145--><p class="noindent" >The above is used to synthesize the LSP curve on a Bark-scale frequency axis, then map the
</dd><dt class="enumerate-enumitem">
10. </dt><dd
class="enumerate-enumitem">done</dd></dl>
+<!--l. 187--><p class="noindent" ><span class="paragraphHead"><a
+ id="x1-960006.2.3"></a><span
+class="cmbx-12">Errata 20150227: Bark scale computation</span></span>
+Due to a typo when typesetting this version of the specification from the original HTML
+document, the Bark scale computation previously erroneously read:
+<center class="par-math-display" >
+<img
+src="Vorbis_I_spec13x.png" alt=" 2
+bark(x) = 13.1arctan (.00074x ) + 2.24 arctan(.0000000185x + .0001x )
+" class="par-math-display" ></center>
+<!--l. 195--><p class="nopar" >
+<!--l. 197--><p class="noindent" >Note that the last parenthesis is misplaced. This document now uses the correct equation as it
+appeared in the original HTML spec document:
+<center class="par-math-display" >
+<img
+src="Vorbis_I_spec14x.png" alt="bark(x) = 13.1arctan (.00074x ) + 2.24 arctan(.0000000185x2 ) + .0001x
+" class="par-math-display" ></center>
+<!--l. 201--><p class="nopar" >
<h3 class="sectionHead"><span class="titlemark">7. </span> <a
- id="x1-960007"></a>Floor type 1 setup and decode</h3>
+ id="x1-970007"></a>Floor type 1 setup and decode</h3>
<!--l. 6--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.1. </span> <a
- id="x1-970007.1"></a>Overview</h4>
+ id="x1-980007.1"></a>Overview</h4>
<!--l. 8--><p class="noindent" >Vorbis floor type one uses a piecewise straight-line representation to encode a spectral envelope
curve. The representation plots this curve mechanically on a linear frequency axis and a
logarithmic (dB) amplitude axis. The integer plotting algorithm used is similar to Bresenham’s
algorithm.
<!--l. 16--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">7.2. </span> <a
- id="x1-980007.2"></a>Floor 1 format</h4>
+ id="x1-990007.2"></a>Floor 1 format</h4>
<!--l. 18--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">7.2.1. </span> <a
- id="x1-990007.2.1"></a>model</h5>
+ id="x1-1000007.2.1"></a>model</h5>
<!--l. 20--><p class="noindent" >Floor type one represents a spectral curve as a series of line segments. Synthesis constructs a
floor curve using iterative prediction in a process roughly equivalent to the following simplified
description:
>
<br /> <div class="caption"
><span class="id">Figure 7: </span><span
-class="content">graph of example floor</span></div><!--tex4ht:label?: x1-990017 -->
+class="content">graph of example floor</span></div><!--tex4ht:label?: x1-1000017 -->
</div>
<!--l. 64--><p class="noindent" >We now draw new logical lines to reflect the correction to new˙Y, and iterate for X positions 32
and 96:
>
<br /> <div class="caption"
><span class="id">Figure 8: </span><span
-class="content">graph of example floor</span></div><!--tex4ht:label?: x1-990028 -->
+class="content">graph of example floor</span></div><!--tex4ht:label?: x1-1000028 -->
</div>
<!--l. 72--><p class="noindent" >Although the new Y value at X position 96 is unchanged, it is still used later as an endpoint for
further refinement. From here on, the pattern should be clear; we complete the floor computation
>
<br /> <div class="caption"
><span class="id">Figure 9: </span><span
-class="content">graph of example floor</span></div><!--tex4ht:label?: x1-990039 -->
+class="content">graph of example floor</span></div><!--tex4ht:label?: x1-1000039 -->
</div>
<div class="center"
>
>
<br /> <div class="caption"
><span class="id">Figure 10: </span><span
-class="content">graph of example floor</span></div><!--tex4ht:label?: x1-9900410 -->
+class="content">graph of example floor</span></div><!--tex4ht:label?: x1-10000410 -->
</div>
<!--l. 86--><p class="noindent" >A more efficient algorithm with carefully defined integer rounding behavior is used for actual
decode, as described later. The actual algorithm splits Y value computation and line plotting
through integer roundoff/truncation.
<!--l. 94--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">7.2.2. </span> <a
- id="x1-1000007.2.2"></a>header decode</h5>
+ id="x1-1010007.2.2"></a>header decode</h5>
<!--l. 96--><p class="noindent" >A list of floor X values is stored in the packet header in interleaved format (used in list order
during packet decode and synthesis). This list is split into partitions, and each partition is
assigned to a partition class. X positions 0 and [n] are implicit and do not belong to an explicit
<!--l. 112--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb28"><a
- id="x1-100002r1"></a><span
+ id="x1-101002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-100004r2"></a><span
+ id="x1-101004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> as</span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span><br class="fancyvrb" /><a
- id="x1-100006r3"></a><span
+ id="x1-101006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [maximum_class]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> -1</span><br class="fancyvrb" /><a
- id="x1-100008r4"></a><span
+ id="x1-101008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span>
<br class="fancyvrb" /><a
- id="x1-100010r5"></a><span
+ id="x1-101010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-100012r6"></a><span
+ id="x1-101012r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> as</span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span><br class="fancyvrb" /><a
- id="x1-100014r7"></a><span
+ id="x1-101014r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-100016r8"></a><span
+ id="x1-101016r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-100018r9"></a><span
+ id="x1-101018r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-100020r10"></a><span
+ id="x1-101020r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> in</span><span
class="cmtt-8"> vector</span><span
class="cmtt-8"> [floor1_partition_class_list]</span><br class="fancyvrb" /><a
- id="x1-100022r11"></a><span
+ id="x1-101022r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span>
<br class="fancyvrb" /><a
- id="x1-100024r12"></a><span
+ id="x1-101024r12"></a><span
class="cmr-6">12</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-100026r13"></a><span
+ id="x1-101026r13"></a><span
class="cmr-6">13</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> add</span><span
class="cmtt-8"> 1</span>
<br class="fancyvrb" /><a
- id="x1-100028r14"></a><span
+ id="x1-101028r14"></a><span
class="cmr-6">14</span><span
class="cmtt-8"> </span><span
class="cmtt-8">  8)</span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span>
<br class="fancyvrb" /><a
- id="x1-100030r15"></a><span
+ id="x1-101030r15"></a><span
class="cmr-6">15</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-100032r16"></a><span
+ id="x1-101032r16"></a><span
class="cmr-6">16</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-100034r17"></a><span
+ id="x1-101034r17"></a><span
class="cmr-6">17</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> as</span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span><br class="fancyvrb" /><a
- id="x1-100036r18"></a><span
+ id="x1-101036r18"></a><span
class="cmr-6">18</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-100038r19"></a><span
+ id="x1-101038r19"></a><span
class="cmr-6">19</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-100040r20"></a><span
+ id="x1-101040r20"></a><span
class="cmr-6">20</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-100042r21"></a><span
+ id="x1-101042r21"></a><span
class="cmr-6">21</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 1</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-100044r22"></a><span
+ id="x1-101044r22"></a><span
class="cmr-6">22</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-100046r23"></a><span
+ id="x1-101046r23"></a><span
class="cmr-6">23</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [i],[j]</span><span
class="cmtt-8"> =</span><br class="fancyvrb" /><a
- id="x1-100048r24"></a><span
+ id="x1-101048r24"></a><span
class="cmr-6">24</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> and</span><span
class="cmtt-8"> subtract</span><span
class="cmtt-8"> one</span><br class="fancyvrb" /><a
- id="x1-100050r25"></a><span
+ id="x1-101050r25"></a><span
class="cmr-6">25</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span>
<br class="fancyvrb" /><a
- id="x1-100052r26"></a><span
+ id="x1-101052r26"></a><span
class="cmr-6">26</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-100054r27"></a><span
+ id="x1-101054r27"></a><span
class="cmr-6">27</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-100056r28"></a><span
+ id="x1-101056r28"></a><span
class="cmr-6">28</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> and</span><span
class="cmtt-8"> add</span><span
class="cmtt-8"> one</span><br class="fancyvrb" /><a
- id="x1-100058r29"></a><span
+ id="x1-101058r29"></a><span
class="cmr-6">29</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span>
<br class="fancyvrb" /><a
- id="x1-100060r30"></a><span
+ id="x1-101060r30"></a><span
class="cmr-6">30</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [0]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> 0</span><br class="fancyvrb" /><a
- id="x1-100062r31"></a><span
+ id="x1-101062r31"></a><span
class="cmr-6">31</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> exponent</span><span
class="cmtt-8"> [rangebits];</span>
<br class="fancyvrb" /><a
- id="x1-100064r32"></a><span
+ id="x1-101064r32"></a><span
class="cmr-6">32</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [floor1_values]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> 2</span><br class="fancyvrb" /><a
- id="x1-100066r33"></a><span
+ id="x1-101066r33"></a><span
class="cmr-6">33</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span>
<br class="fancyvrb" /><a
- id="x1-100068r34"></a><span
+ id="x1-101068r34"></a><span
class="cmr-6">34</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-100070r35"></a><span
+ id="x1-101070r35"></a><span
class="cmr-6">35</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [i]</span>
<br class="fancyvrb" /><a
- id="x1-100072r36"></a><span
+ id="x1-101072r36"></a><span
class="cmr-6">36</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span>
<br class="fancyvrb" /><a
- id="x1-100074r37"></a><span
+ id="x1-101074r37"></a><span
class="cmr-6">37</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> ([floor1_values])</span><span
class="cmtt-8"> =</span><br class="fancyvrb" /><a
- id="x1-100076r38"></a><span
+ id="x1-101076r38"></a><span
class="cmr-6">38</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span>
<br class="fancyvrb" /><a
- id="x1-100078r39"></a><span
+ id="x1-101078r39"></a><span
class="cmr-6">39</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [floor1_values]</span><span
class="cmtt-8"> by</span><span
class="cmtt-8"> one</span><br class="fancyvrb" /><a
- id="x1-100080r40"></a><span
+ id="x1-101080r40"></a><span
class="cmr-6">40</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-100082r41"></a><span
+ id="x1-101082r41"></a><span
class="cmr-6">41</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-100084r42"></a><span
+ id="x1-101084r42"></a><span
class="cmr-6">42</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-100086r43"></a><span
+ id="x1-101086r43"></a><span
class="cmr-6">43</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
non-unique value renders the stream undecodable.
<!--l. 170--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">7.2.3. </span> <a
- id="x1-1010007.2.3"></a>packet decode</h5>
+ id="x1-1020007.2.3"></a>packet decode</h5>
<!--l. 172--><p class="noindent" >Packet decode begins by checking the <span
class="cmtt-12">[nonzero] </span>flag:
<!--l. 174--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb29"><a
- id="x1-101002r1"></a><span
+ id="x1-102002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-12">[nonzero] </span>is set, decode proceeds as follows:
<!--l. 188--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb30"><a
- id="x1-101004r1"></a><span
+ id="x1-102004r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
<br class="fancyvrb" /><a
- id="x1-101006r2"></a><span
+ id="x1-102006r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> read</span><span
class="cmtt-8"> </span><a
-href="#x1-1180009.2.1"><span
+href="#x1-1190009.2.1"><span
class="cmtt-8">ilog</span></a><span
class="cmtt-8">([range]-1)</span><span
class="cmtt-8"> bits</span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span>
<br class="fancyvrb" /><a
- id="x1-101008r3"></a><span
+ id="x1-102008r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> read</span><span
class="cmtt-8"> </span><a
-href="#x1-1180009.2.1"><span
+href="#x1-1190009.2.1"><span
class="cmtt-8">ilog</span></a><span
class="cmtt-8">([range]-1)</span><span
class="cmtt-8"> bits</span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span>
<br class="fancyvrb" /><a
- id="x1-101010r4"></a><span
+ id="x1-102010r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [offset]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> 2;</span><br class="fancyvrb" /><a
- id="x1-101012r5"></a><span
+ id="x1-102012r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [floor1_partitions]-1</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-101014r6"></a><span
+ id="x1-102014r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-101016r7"></a><span
+ id="x1-102016r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [i]</span><br class="fancyvrb" /><a
- id="x1-101018r8"></a><span
+ id="x1-102018r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [class]</span>
<br class="fancyvrb" /><a
- id="x1-101020r9"></a><span
+ id="x1-102020r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [floor1_class_subclasses]</span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [class]</span><br class="fancyvrb" /><a
- id="x1-101022r10"></a><span
+ id="x1-102022r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> (2</span><span
class="cmtt-8"> exponent</span><span
class="cmtt-8"> [cbits])-1</span><br class="fancyvrb" /><a
- id="x1-101024r11"></a><span
+ id="x1-102024r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> 0</span>
<br class="fancyvrb" /><a
- id="x1-101026r12"></a><span
+ id="x1-102026r12"></a><span
class="cmr-6">12</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-101028r13"></a><span
+ id="x1-102028r13"></a><span
class="cmr-6">13</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-101030r14"></a><span
+ id="x1-102030r14"></a><span
class="cmr-6">14</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> codebook</span><span
class="cmtt-8"> number</span>
<br class="fancyvrb" /><a
- id="x1-101032r15"></a><span
+ id="x1-102032r15"></a><span
class="cmr-6">15</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> scalar</span><span
class="cmtt-8"> context</span>
<br class="fancyvrb" /><a
- id="x1-101034r16"></a><span
+ id="x1-102034r16"></a><span
class="cmr-6">16</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-101036r17"></a><span
+ id="x1-102036r17"></a><span
class="cmr-6">17</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-101038r18"></a><span
+ id="x1-102038r18"></a><span
class="cmr-6">18</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [cdim]-1</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-101040r19"></a><span
+ id="x1-102040r19"></a><span
class="cmr-6">19</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-101042r20"></a><span
+ id="x1-102042r20"></a><span
class="cmr-6">20</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> AND</span><span
class="cmtt-8"> [csub])</span>
<br class="fancyvrb" /><a
- id="x1-101044r21"></a><span
+ id="x1-102044r21"></a><span
class="cmr-6">21</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> shifted</span><span
class="cmtt-8"> [cbits]</span><span
class="cmtt-8"> bits</span><br class="fancyvrb" /><a
- id="x1-101046r22"></a><span
+ id="x1-102046r22"></a><span
class="cmr-6">22</span><span
class="cmtt-8"> </span><span
class="cmtt-8">  </span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-101048r23"></a><span
+ id="x1-102048r23"></a><span
class="cmr-6">23</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-101050r24"></a><span
+ id="x1-102050r24"></a><span
class="cmr-6">24</span><span
class="cmtt-8"> </span><span
class="cmtt-8">  </span><span
class="cmtt-8"> packet</span><span
class="cmtt-8"> using</span><span
class="cmtt-8"> codebook</span><br class="fancyvrb" /><a
- id="x1-101052r25"></a><span
+ id="x1-102052r25"></a><span
class="cmr-6">25</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> scalar</span><span
class="cmtt-8"> context</span>
<br class="fancyvrb" /><a
- id="x1-101054r26"></a><span
+ id="x1-102054r26"></a><span
class="cmr-6">26</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-101056r27"></a><span
+ id="x1-102056r27"></a><span
class="cmr-6">27</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> zero</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-101058r28"></a><span
+ id="x1-102058r28"></a><span
class="cmr-6">28</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-101060r29"></a><span
+ id="x1-102060r29"></a><span
class="cmr-6">29</span><span
class="cmtt-8"> </span><span
class="cmtt-8">  </span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> 0</span>
<br class="fancyvrb" /><a
- id="x1-101062r30"></a><span
+ id="x1-102062r30"></a><span
class="cmr-6">30</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-101064r31"></a><span
+ id="x1-102064r31"></a><span
class="cmr-6">31</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-101066r32"></a><span
+ id="x1-102066r32"></a><span
class="cmr-6">32</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-101068r33"></a><span
+ id="x1-102068r33"></a><span
class="cmr-6">33</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-101070r34"></a><span
+ id="x1-102070r34"></a><span
class="cmr-6">34</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [offset]</span><span
class="cmtt-8"> +</span><span
class="cmtt-8"> [cdim]</span><br class="fancyvrb" /><a
- id="x1-101072r35"></a><span
+ id="x1-102072r35"></a><span
class="cmr-6">35</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-101074r36"></a><span
+ id="x1-102074r36"></a><span
class="cmr-6">36</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-101076r37"></a><span
+ id="x1-102076r37"></a><span
class="cmr-6">37</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-101078r38"></a><span
+ id="x1-102078r38"></a><span
class="cmr-6">38</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-12">[floor1_Y] </span>contains the values from packet decode needed for floor 1 synthesis.
<!--l. 240--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">7.2.4. </span> <a
- id="x1-1020007.2.4"></a>curve computation</h5>
+ id="x1-1030007.2.4"></a>curve computation</h5>
<!--l. 242--><p class="noindent" >Curve computation is split into two logical steps; the first step derives final Y amplitude values
from the encoded, wrapped difference values taken from the bitstream. The second step
plots the curve lines. Also, although zero-difference values are used in the iterative
values, then apply to line prediction.
<!--l. 271--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb31"><a
- id="x1-102002r1"></a><span
+ id="x1-103002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> ([floor1_multiplier]-1)</span><br class="fancyvrb" /><a
- id="x1-102004r2"></a><span
+ id="x1-103004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> set</span>
<br class="fancyvrb" /><a
- id="x1-102006r3"></a><span
+ id="x1-103006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [1]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> set</span><br class="fancyvrb" /><a
- id="x1-102008r4"></a><span
+ id="x1-103008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [0]</span>
<br class="fancyvrb" /><a
- id="x1-102010r5"></a><span
+ id="x1-103010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [floor1_Y]</span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [1]</span><br class="fancyvrb" /><a
- id="x1-102012r6"></a><span
+ id="x1-103012r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [floor1_values]-1</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102014r7"></a><span
+ id="x1-103014r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-102016r8"></a><span
+ id="x1-103016r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [low_neighbor_offset]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> </span><a
-href="#x1-1210009.2.4"><span
+href="#x1-1220009.2.4"><span
class="cmtt-8">low_neighbor</span></a><span
class="cmtt-8">([floor1_X_list],[i])</span><br class="fancyvrb" /><a
- id="x1-102018r9"></a><span
+ id="x1-103018r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [high_neighbor_offset]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> </span><a
-href="#x1-1220009.2.5"><span
+href="#x1-1230009.2.5"><span
class="cmtt-8">high_neighbor</span></a><span
class="cmtt-8">([floor1_X_list],[i])</span>
<br class="fancyvrb" /><a
- id="x1-102020r10"></a><span
+ id="x1-103020r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102022r11"></a><span
+ id="x1-103022r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [predicted]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> </span><a
-href="#x1-1230009.2.6"><span
+href="#x1-1240009.2.6"><span
class="cmtt-8">render_point</span></a><span
class="cmtt-8">(</span><span
class="cmtt-8"> vector</span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [low_neighbor_offset],</span>
<br class="fancyvrb" /><a
- id="x1-102024r12"></a><span
+ id="x1-103024r12"></a><span
class="cmr-6">12</span><span
class="cmtt-8"> </span><span
class="cmtt-8">  </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [low_neighbor_offset],</span>
<br class="fancyvrb" /><a
- id="x1-102026r13"></a><span
+ id="x1-103026r13"></a><span
class="cmr-6">13</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [high_neighbor_offset],</span>
<br class="fancyvrb" /><a
- id="x1-102028r14"></a><span
+ id="x1-103028r14"></a><span
class="cmr-6">14</span><span
class="cmtt-8"> </span><span
class="cmtt-8">  </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [high_neighbor_offset],</span>
<br class="fancyvrb" /><a
- id="x1-102030r15"></a><span
+ id="x1-103030r15"></a><span
class="cmr-6">15</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [i]</span><span
class="cmtt-8"> )</span><br class="fancyvrb" /><a
- id="x1-102032r16"></a><span
+ id="x1-103032r16"></a><span
class="cmr-6">16</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102034r17"></a><span
+ id="x1-103034r17"></a><span
class="cmr-6">17</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [i]</span>
<br class="fancyvrb" /><a
- id="x1-102036r18"></a><span
+ id="x1-103036r18"></a><span
class="cmr-6">18</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [range]</span><span
class="cmtt-8"> -</span><span
class="cmtt-8"> [predicted]</span><br class="fancyvrb" /><a
- id="x1-102038r19"></a><span
+ id="x1-103038r19"></a><span
class="cmr-6">19</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> [predicted]</span>
<br class="fancyvrb" /><a
- id="x1-102040r20"></a><span
+ id="x1-103040r20"></a><span
class="cmr-6">20</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102042r21"></a><span
+ id="x1-103042r21"></a><span
class="cmr-6">21</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102044r22"></a><span
+ id="x1-103044r22"></a><span
class="cmr-6">22</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [highroom]</span><span
class="cmtt-8"> *</span><span
class="cmtt-8"> 2</span><br class="fancyvrb" /><a
- id="x1-102046r23"></a><span
+ id="x1-103046r23"></a><span
class="cmr-6">23</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-102048r24"></a><span
+ id="x1-103048r24"></a><span
class="cmr-6">24</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [lowroom]</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102050r25"></a><span
+ id="x1-103050r25"></a><span
class="cmr-6">25</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102052r26"></a><span
+ id="x1-103052r26"></a><span
class="cmr-6">26</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [lowroom]</span><span
class="cmtt-8"> *</span><span
class="cmtt-8"> 2</span><br class="fancyvrb" /><a
- id="x1-102054r27"></a><span
+ id="x1-103054r27"></a><span
class="cmr-6">27</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102056r28"></a><span
+ id="x1-103056r28"></a><span
class="cmr-6">28</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-102058r29"></a><span
+ id="x1-103058r29"></a><span
class="cmr-6">29</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-102060r30"></a><span
+ id="x1-103060r30"></a><span
class="cmr-6">30</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102062r31"></a><span
+ id="x1-103062r31"></a><span
class="cmr-6">31</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102064r32"></a><span
+ id="x1-103064r32"></a><span
class="cmr-6">32</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> set</span>
<br class="fancyvrb" /><a
- id="x1-102066r33"></a><span
+ id="x1-103066r33"></a><span
class="cmr-6">33</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> set</span>
<br class="fancyvrb" /><a
- id="x1-102068r34"></a><span
+ id="x1-103068r34"></a><span
class="cmr-6">34</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [i]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> set</span><br class="fancyvrb" /><a
- id="x1-102070r35"></a><span
+ id="x1-103070r35"></a><span
class="cmr-6">35</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span>
<br class="fancyvrb" /><a
- id="x1-102072r36"></a><span
+ id="x1-103072r36"></a><span
class="cmr-6">36</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102074r37"></a><span
+ id="x1-103074r37"></a><span
class="cmr-6">37</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102076r38"></a><span
+ id="x1-103076r38"></a><span
class="cmr-6">38</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-102078r39"></a><span
+ id="x1-103078r39"></a><span
class="cmr-6">39</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> +</span><span
class="cmtt-8"> [predicted]</span>
<br class="fancyvrb" /><a
- id="x1-102080r40"></a><span
+ id="x1-103080r40"></a><span
class="cmr-6">40</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102082r41"></a><span
+ id="x1-103082r41"></a><span
class="cmr-6">41</span><span
class="cmtt-8"> </span><span
class="cmtt-8">  </span><span
class="cmtt-8"> [lowroom]</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102084r42"></a><span
+ id="x1-103084r42"></a><span
class="cmr-6">42</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-102086r43"></a><span
+ id="x1-103086r43"></a><span
class="cmr-6">43</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> -</span><span
class="cmtt-8"> 1</span>
<br class="fancyvrb" /><a
- id="x1-102088r44"></a><span
+ id="x1-103088r44"></a><span
class="cmr-6">44</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102090r45"></a><span
+ id="x1-103090r45"></a><span
class="cmr-6">45</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-102092r46"></a><span
+ id="x1-103092r46"></a><span
class="cmr-6">46</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102094r47"></a><span
+ id="x1-103094r47"></a><span
class="cmr-6">47</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [room]</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102096r48"></a><span
+ id="x1-103096r48"></a><span
class="cmr-6">48</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-102098r49"></a><span
+ id="x1-103098r49"></a><span
class="cmr-6">49</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> odd)</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102100r50"></a><span
+ id="x1-103100r50"></a><span
class="cmr-6">50</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102102r51"></a><span
+ id="x1-103102r51"></a><span
class="cmr-6">51</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [i]</span><span
class="cmtt-8"> =</span>
<br class="fancyvrb" /><a
- id="x1-102104r52"></a><span
+ id="x1-103104r52"></a><span
class="cmr-6">52</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> using</span><span
class="cmtt-8"> integer</span><span
class="cmtt-8"> division)</span><br class="fancyvrb" /><a
- id="x1-102106r53"></a><span
+ id="x1-103106r53"></a><span
class="cmr-6">53</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-102108r54"></a><span
+ id="x1-103108r54"></a><span
class="cmr-6">54</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> even</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102110r55"></a><span
+ id="x1-103110r55"></a><span
class="cmr-6">55</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102112r56"></a><span
+ id="x1-103112r56"></a><span
class="cmr-6">56</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [i]</span><span
class="cmtt-8"> =</span>
<br class="fancyvrb" /><a
- id="x1-102114r57"></a><span
+ id="x1-103114r57"></a><span
class="cmr-6">57</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> using</span><span
class="cmtt-8"> integer</span><span
class="cmtt-8"> division)</span><br class="fancyvrb" /><a
- id="x1-102116r58"></a><span
+ id="x1-103116r58"></a><span
class="cmr-6">58</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102118r59"></a><span
+ id="x1-103118r59"></a><span
class="cmr-6">59</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-102120r60"></a><span
+ id="x1-103120r60"></a><span
class="cmr-6">60</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-102122r61"></a><span
+ id="x1-103122r61"></a><span
class="cmr-6">61</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-102124r62"></a><span
+ id="x1-103124r62"></a><span
class="cmr-6">62</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102126r63"></a><span
+ id="x1-103126r63"></a><span
class="cmr-6">63</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> zero</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102128r64"></a><span
+ id="x1-103128r64"></a><span
class="cmr-6">64</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102130r65"></a><span
+ id="x1-103130r65"></a><span
class="cmr-6">65</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> unset</span>
<br class="fancyvrb" /><a
- id="x1-102132r66"></a><span
+ id="x1-103132r66"></a><span
class="cmr-6">66</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [i]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> [predicted]</span><br class="fancyvrb" /><a
- id="x1-102134r67"></a><span
+ id="x1-103134r67"></a><span
class="cmr-6">67</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102136r68"></a><span
+ id="x1-103136r68"></a><span
class="cmr-6">68</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-102138r69"></a><span
+ id="x1-103138r69"></a><span
class="cmr-6">69</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102140r70"></a><span
+ id="x1-103140r70"></a><span
class="cmr-6">70</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-102142r71"></a><span
+ id="x1-103142r71"></a><span
class="cmr-6">71</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102144r72"></a><span
+ id="x1-103144r72"></a><span
class="cmr-6">72</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 29)</span><span
class="cmtt-8"> done</span><br class="fancyvrb" /><a
- id="x1-102146r73"></a><span
+ id="x1-103146r73"></a><span
class="cmr-6">73</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span></div>
<!--l. 368--><p class="noindent" >Then compute the final curve in one pass:
<!--l. 370--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb32"><a
- id="x1-102148r1"></a><span
+ id="x1-103148r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [hx]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> 0</span><br class="fancyvrb" /><a
- id="x1-102150r2"></a><span
+ id="x1-103150r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [lx]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> 0</span><br class="fancyvrb" /><a
- id="x1-102152r3"></a><span
+ id="x1-103152r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> *</span><span
class="cmtt-8"> [floor1_multiplier]</span>
<br class="fancyvrb" /><a
- id="x1-102154r4"></a><span
+ id="x1-103154r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [floor1_values]-1</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102156r5"></a><span
+ id="x1-103156r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102158r6"></a><span
+ id="x1-103158r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102160r7"></a><span
+ id="x1-103160r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-102162r8"></a><span
+ id="x1-103162r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [i]</span><span
class="cmtt-8"> *</span><span
class="cmtt-8"> [floor1_multiplier]</span><br class="fancyvrb" /><a
- id="x1-102164r9"></a><span
+ id="x1-103164r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [i]</span>
<br class="fancyvrb" /><a
- id="x1-102166r10"></a><span
+ id="x1-103166r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 8)</span><span
class="cmtt-8"> </span><a
-href="#x1-1240009.2.7"><span
+href="#x1-1250009.2.7"><span
class="cmtt-8">render_line</span></a><span
class="cmtt-8">(</span><span
class="cmtt-8"> [lx],</span><span
class="cmtt-8"> [hy],</span><span
class="cmtt-8"> [floor]</span><span
class="cmtt-8"> )</span><br class="fancyvrb" /><a
- id="x1-102168r11"></a><span
+ id="x1-103168r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [lx]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> [hx]</span><br class="fancyvrb" /><a
- id="x1-102170r12"></a><span
+ id="x1-103170r12"></a><span
class="cmr-6">12</span><span
class="cmtt-8"> </span><span
class="cmtt-8">  </span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> [hy]</span>
<br class="fancyvrb" /><a
- id="x1-102172r13"></a><span
+ id="x1-103172r13"></a><span
class="cmr-6">13</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-102174r14"></a><span
+ id="x1-103174r14"></a><span
class="cmr-6">14</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-102176r15"></a><span
+ id="x1-103176r15"></a><span
class="cmr-6">15</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102178r16"></a><span
+ id="x1-103178r16"></a><span
class="cmr-6">16</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102180r17"></a><span
+ id="x1-103180r17"></a><span
class="cmr-6">17</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102182r18"></a><span
+ id="x1-103182r18"></a><span
class="cmr-6">18</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 12)</span><span
class="cmtt-8"> </span><a
-href="#x1-1240009.2.7"><span
+href="#x1-1250009.2.7"><span
class="cmtt-8">render_line</span></a><span
class="cmtt-8">(</span><span
class="cmtt-8"> [hx],</span><span
class="cmtt-8"> [floor]</span><span
class="cmtt-8"> )</span>
<br class="fancyvrb" /><a
- id="x1-102184r19"></a><span
+ id="x1-103184r19"></a><span
class="cmr-6">19</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102186r20"></a><span
+ id="x1-103186r20"></a><span
class="cmr-6">20</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-102188r21"></a><span
+ id="x1-103188r21"></a><span
class="cmr-6">21</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102190r22"></a><span
+ id="x1-103190r22"></a><span
class="cmr-6">22</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> </span><span
class="cmsy-8">{</span><br class="fancyvrb" /><a
- id="x1-102192r23"></a><span
+ id="x1-103192r23"></a><span
class="cmr-6">23</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102194r24"></a><span
+ id="x1-103194r24"></a><span
class="cmr-6">24</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [n]</span><span
class="cmtt-8"> elements</span>
<br class="fancyvrb" /><a
- id="x1-102196r25"></a><span
+ id="x1-103196r25"></a><span
class="cmr-6">25</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102198r26"></a><span
+ id="x1-103198r26"></a><span
class="cmr-6">26</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmsy-8">}</span><br class="fancyvrb" /><a
- id="x1-102200r27"></a><span
+ id="x1-103200r27"></a><span
class="cmr-6">27</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102202r28"></a><span
+ id="x1-103202r28"></a><span
class="cmr-6">28</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
<br class="fancyvrb" /><a
- id="x1-102204r29"></a><span
+ id="x1-103204r29"></a><span
class="cmr-6">29</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> the</span><span
class="cmtt-8"> vector</span><span
class="cmtt-8"> </span><a
-href="#x1-12600010.1"><span
+href="#x1-12700010.1"><span
class="cmtt-8">[floor1_inverse_dB_static_table]</span></a><br class="fancyvrb" /><a
- id="x1-102206r30"></a><span
+ id="x1-103206r30"></a><span
class="cmr-6">30</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-102208r31"></a><span
+ id="x1-103208r31"></a><span
class="cmr-6">31</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 16)</span><span
class="cmtt-8"> done</span><br class="fancyvrb" /><a
- id="x1-102210r32"></a><span
+ id="x1-103210r32"></a><span
class="cmr-6">32</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span></div>
<h3 class="sectionHead"><span class="titlemark">8. </span> <a
- id="x1-1030008"></a>Residue setup and decode</h3>
+ id="x1-1040008"></a>Residue setup and decode</h3>
<!--l. 6--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">8.1. </span> <a
- id="x1-1040008.1"></a>Overview</h4>
+ id="x1-1050008.1"></a>Overview</h4>
<!--l. 8--><p class="noindent" >A residue vector represents the fine detail of the audio spectrum of one channel in an audio frame
after the encoder subtracts the floor curve and performs any channel coupling. A residue vector
may represent spectral lines, spectral magnitude, spectral phase or hybrids as mixed by channel
abstraction.
<!--l. 23--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">8.2. </span> <a
- id="x1-1050008.2"></a>Residue format</h4>
+ id="x1-1060008.2"></a>Residue format</h4>
<!--l. 25--><p class="noindent" >Residue format partitions each vector in the vector bundle into chunks, classifies each
chunk, encodes the chunk classifications and finally encodes the chunks themselves
using the the specific VQ arrangement defined for each selected classification. The
>
<br /> <div class="caption"
><span class="id">Figure 11: </span><span
-class="content">illustration of residue vector format</span></div><!--tex4ht:label?: x1-10500111 -->
+class="content">illustration of residue vector format</span></div><!--tex4ht:label?: x1-10600111 -->
</div>
<!--l. 77--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">8.3. </span> <a
- id="x1-1060008.3"></a>residue 0</h4>
+ id="x1-1070008.3"></a>residue 0</h4>
<!--l. 79--><p class="noindent" >Residue 0 and 1 differ only in the way the values within a residue partition are interleaved during
partition encoding (visually treated as a black box–or cyan box or brown box–in the above
figure).
codebook sizes of 8, 4, 2 and 1:
<!--l. 92--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb33"><a
- id="x1-106002r1"></a><span
+ id="x1-107002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-106004r2"></a><span
+ id="x1-107004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 6</span><span
class="cmtt-8"> 7</span><span
class="cmtt-8"> ]</span><br class="fancyvrb" /><a
- id="x1-106006r3"></a><span
+ id="x1-107006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-106008r4"></a><span
+ id="x1-107008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> codebook</span><span
class="cmtt-8"> 6</span><span
class="cmtt-8"> 7</span><span
class="cmtt-8"> ]</span><br class="fancyvrb" /><a
- id="x1-106010r5"></a><span
+ id="x1-107010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-106012r6"></a><span
+ id="x1-107012r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> codebook</span><span
class="cmtt-8"> 5</span><span
class="cmtt-8"> 7</span><span
class="cmtt-8"> ]</span><br class="fancyvrb" /><a
- id="x1-106014r7"></a><span
+ id="x1-107014r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-106016r8"></a><span
+ id="x1-107016r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> codebook</span><span
class="cmtt-8"> 7</span><span
class="cmtt-8"> ]</span>
<br class="fancyvrb" /><a
- id="x1-106018r9"></a><span
+ id="x1-107018r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-106020r10"></a><span
+ id="x1-107020r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> codebook</span><span
class="cmtt-8"> [</span><span
class="cmtt-8"> 7</span><span
class="cmtt-8"> ]</span><br class="fancyvrb" /><a
- id="x1-106022r11"></a><span
+ id="x1-107022r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span></div>
restricted to a power of two.
<!--l. 111--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">8.4. </span> <a
- id="x1-1070008.4"></a>residue 1</h4>
+ id="x1-1080008.4"></a>residue 1</h4>
<!--l. 113--><p class="noindent" >Residue 1 does not interleave VQ encoding. It represents partition vector scalars in order. As
with residue 0, however, partition length must be an integer multiple of the codebook dimension,
although dimension may vary from pass to pass.
codebook sizes of 8, 4, 2 and 1:
<!--l. 121--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb34"><a
- id="x1-107002r1"></a><span
+ id="x1-108002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-107004r2"></a><span
+ id="x1-108004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 6</span><span
class="cmtt-8"> 7</span><span
class="cmtt-8"> ]</span><br class="fancyvrb" /><a
- id="x1-107006r3"></a><span
+ id="x1-108006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-107008r4"></a><span
+ id="x1-108008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> codebook</span><span
class="cmtt-8"> 6</span><span
class="cmtt-8"> 7</span><span
class="cmtt-8"> ]</span><br class="fancyvrb" /><a
- id="x1-107010r5"></a><span
+ id="x1-108010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-107012r6"></a><span
+ id="x1-108012r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> codebook</span><span
class="cmtt-8"> 6</span><span
class="cmtt-8"> 7</span><span
class="cmtt-8"> ]</span><br class="fancyvrb" /><a
- id="x1-107014r7"></a><span
+ id="x1-108014r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-107016r8"></a><span
+ id="x1-108016r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> codebook</span><span
class="cmtt-8"> 7</span><span
class="cmtt-8"> ]</span>
<br class="fancyvrb" /><a
- id="x1-107018r9"></a><span
+ id="x1-108018r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-107020r10"></a><span
+ id="x1-108020r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> codebook</span><span
class="cmtt-8"> [</span><span
class="cmtt-8"> 7</span><span
class="cmtt-8"> ]</span><br class="fancyvrb" /><a
- id="x1-107022r11"></a><span
+ id="x1-108022r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span></div>
<!--l. 137--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">8.5. </span> <a
- id="x1-1080008.5"></a>residue 2</h4>
+ id="x1-1090008.5"></a>residue 2</h4>
<!--l. 139--><p class="noindent" >Residue type two can be thought of as a variant of residue type 1. Rather than encoding multiple
passed-in vectors as in residue type 1, the <span
class="cmti-12">ch </span>passed in vectors of length <span
>
<br /> <div class="caption"
><span class="id">Figure 12: </span><span
-class="content">illustration of residue type 2</span></div><!--tex4ht:label?: x1-10800112 -->
+class="content">illustration of residue type 2</span></div><!--tex4ht:label?: x1-10900112 -->
</div>
<!--l. 153--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">8.6. </span> <a
- id="x1-1090008.6"></a>Residue decode</h4>
+ id="x1-1100008.6"></a>Residue decode</h4>
<!--l. 155--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">8.6.1. </span> <a
- id="x1-1100008.6.1"></a>header decode</h5>
+ id="x1-1110008.6.1"></a>header decode</h5>
<!--l. 157--><p class="noindent" >Header decode for all three residue types is identical.
<div class="fancyvrb" id="fancyvrb35"><a
- id="x1-110002r1"></a><span
+ id="x1-111002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> as</span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span><br class="fancyvrb" /><a
- id="x1-110004r2"></a><span
+ id="x1-111004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span>
<br class="fancyvrb" /><a
- id="x1-110006r3"></a><span
+ id="x1-111006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> add</span><span
class="cmtt-8"> one</span>
<br class="fancyvrb" /><a
- id="x1-110008r4"></a><span
+ id="x1-111008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> and</span><span
class="cmtt-8"> add</span><span
class="cmtt-8"> one</span><br class="fancyvrb" /><a
- id="x1-110010r5"></a><span
+ id="x1-111010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
passes.
<!--l. 193--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb36"><a
- id="x1-110012r1"></a><span
+ id="x1-111012r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ...</span><span
class="cmtt-8"> [residue\_classifications]-1</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-110014r2"></a><span
+ id="x1-111014r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-110016r3"></a><span
+ id="x1-111016r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> 0</span>
<br class="fancyvrb" /><a
- id="x1-110018r4"></a><span
+ id="x1-111018r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> as</span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span><br class="fancyvrb" /><a
- id="x1-110020r5"></a><span
+ id="x1-111020r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> as</span><span
class="cmtt-8"> boolean</span>
<br class="fancyvrb" /><a
- id="x1-110022r6"></a><span
+ id="x1-111022r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span>
<br class="fancyvrb" /><a
- id="x1-110024r7"></a><span
+ id="x1-111024r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 8</span><span
class="cmtt-8"> +</span><span
class="cmtt-8"> [low\_bits]</span><br class="fancyvrb" /><a
- id="x1-110026r8"></a><span
+ id="x1-111026r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-110028r9"></a><span
+ id="x1-111028r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
bits):
<!--l. 211--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb37"><a
- id="x1-110030r1"></a><span
+ id="x1-111030r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ...</span><span
class="cmtt-8"> [residue\_classifications]-1</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-110032r2"></a><span
+ id="x1-111032r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-110034r3"></a><span
+ id="x1-111034r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 7</span><span
class="cmtt-8"> {</span>
<br class="fancyvrb" /><a
- id="x1-110036r4"></a><span
+ id="x1-111036r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-110038r5"></a><span
+ id="x1-111038r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> set</span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-110040r6"></a><span
+ id="x1-111040r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-110042r7"></a><span
+ id="x1-111042r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> as</span><span
class="cmtt-8"> unsigned</span><span
class="cmtt-8"> integer</span><br class="fancyvrb" /><a
- id="x1-110044r8"></a><span
+ id="x1-111044r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-110046r9"></a><span
+ id="x1-111046r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><span
class="cmtt-8"> else</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-110048r10"></a><span
+ id="x1-111048r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-110050r11"></a><span
+ id="x1-111050r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [i][j]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> unused</span><br class="fancyvrb" /><a
- id="x1-110052r12"></a><span
+ id="x1-111052r12"></a><span
class="cmr-6">12</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-110054r13"></a><span
+ id="x1-111054r13"></a><span
class="cmr-6">13</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-110056r14"></a><span
+ id="x1-111056r14"></a><span
class="cmr-6">14</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-110058r15"></a><span
+ id="x1-111058r15"></a><span
class="cmr-6">15</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-110060r16"></a><span
+ id="x1-111060r16"></a><span
class="cmr-6">16</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-110062r17"></a><span
+ id="x1-111062r17"></a><span
class="cmr-6">17</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
undecodable.
<!--l. 241--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">8.6.2. </span> <a
- id="x1-1110008.6.2"></a>packet decode</h5>
+ id="x1-1120008.6.2"></a>packet decode</h5>
<!--l. 243--><p class="noindent" >Format 0 and 1 packet decode is identical except for specific partition interleave. Format 2 packet
decode can be built out of the format 1 decode process. Thus we describe first the decode
infrastructure identical to all three formats.
process.
<!--l. 269--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb38"><a
- id="x1-111002r1"></a><span
+ id="x1-112002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> current</span><span
class="cmtt-8"> blocksize/2;</span><br class="fancyvrb" /><a
- id="x1-111004r2"></a><span
+ id="x1-112004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> format</span><span
class="cmtt-8"> 2</span>
<br class="fancyvrb" /><a
- id="x1-111006r3"></a><span
+ id="x1-112006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [actual\_size]</span><span
class="cmtt-8"> *</span><span
class="cmtt-8"> [ch];</span><br class="fancyvrb" /><a
- id="x1-111008r4"></a><span
+ id="x1-112008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> of</span><span
class="cmtt-8"> ([residue\_begin],[actual\_size]);</span>
<br class="fancyvrb" /><a
- id="x1-111010r5"></a><span
+ id="x1-112010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
<!--l. 277--><p class="noindent" >The following convenience values are conceptually useful to clarifying the decode process:
<!--l. 280--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb39"><a
- id="x1-111012r1"></a><span
+ id="x1-112012r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> codebook</span><span
class="cmtt-8"> [residue\_classbook]</span>
<br class="fancyvrb" /><a
- id="x1-111014r2"></a><span
+ id="x1-112014r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [limit\_residue\_end]</span><span
class="cmtt-8"> -</span><span
class="cmtt-8"> [limit\_residue\_begin]</span><br class="fancyvrb" /><a
- id="x1-111016r3"></a><span
+ id="x1-112016r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [residue\_partition\_size]</span></div>
<!--l. 286--><p class="noindent" >Packet decode proceeds as follows, matching the description offered earlier in the document.
<div class="fancyvrb" id="fancyvrb40"><a
- id="x1-111018r1"></a><span
+ id="x1-112018r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> will</span><span
class="cmtt-8"> be</span><span
class="cmtt-8"> returned.</span><br class="fancyvrb" /><a
- id="x1-111020r2"></a><span
+ id="x1-112020r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> to</span><span
class="cmtt-8"> decode.</span>
<br class="fancyvrb" /><a
- id="x1-111022r3"></a><span
+ id="x1-112022r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ...</span><span
class="cmtt-8"> 7</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-111024r4"></a><span
+ id="x1-112024r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111026r5"></a><span
+ id="x1-112026r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [partition\_count]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> 0</span><br class="fancyvrb" /><a
- id="x1-111028r6"></a><span
+ id="x1-112028r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-111030r7"></a><span
+ id="x1-112030r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> less</span><span
class="cmtt-8"> than</span><span
class="cmtt-8"> [partitions\_to\_read]</span><br class="fancyvrb" /><a
- id="x1-111032r8"></a><span
+ id="x1-112032r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111034r9"></a><span
+ id="x1-112034r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> is</span><span
class="cmtt-8"> zero)</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-111036r10"></a><span
+ id="x1-112036r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-111038r11"></a><span
+ id="x1-112038r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ..</span><span
class="cmtt-8"> [ch]-1</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-111040r12"></a><span
+ id="x1-112040r12"></a><span
class="cmr-6">12</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111042r13"></a><span
+ id="x1-112042r13"></a><span
class="cmr-6">13</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> decode’</span><span
class="cmtt-8"> {</span>
<br class="fancyvrb" /><a
- id="x1-111044r14"></a><span
+ id="x1-112044r14"></a><span
class="cmr-6">14</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111046r15"></a><span
+ id="x1-112046r15"></a><span
class="cmr-6">15</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> scalar</span><span
class="cmtt-8"> context</span>
<br class="fancyvrb" /><a
- id="x1-111048r16"></a><span
+ id="x1-112048r16"></a><span
class="cmr-6">16</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0</span><span
class="cmtt-8"> {</span>
<br class="fancyvrb" /><a
- id="x1-111050r17"></a><span
+ id="x1-112050r17"></a><span
class="cmr-6">17</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111052r18"></a><span
+ id="x1-112052r18"></a><span
class="cmr-6">18</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [j],([i]+[partition\_count])</span><span
class="cmtt-8"> =</span>
<br class="fancyvrb" /><a
- id="x1-111054r19"></a><span
+ id="x1-112054r19"></a><span
class="cmr-6">19</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> modulo</span><span
class="cmtt-8"> [residue\_classifications]</span>
<br class="fancyvrb" /><a
- id="x1-111056r20"></a><span
+ id="x1-112056r20"></a><span
class="cmr-6">20</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> using</span><span
class="cmtt-8"> integer</span><span
class="cmtt-8"> division</span><br class="fancyvrb" /><a
- id="x1-111058r21"></a><span
+ id="x1-112058r21"></a><span
class="cmr-6">21</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-111060r22"></a><span
+ id="x1-112060r22"></a><span
class="cmr-6">22</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-111062r23"></a><span
+ id="x1-112062r23"></a><span
class="cmr-6">23</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111064r24"></a><span
+ id="x1-112064r24"></a><span
class="cmr-6">24</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-111066r25"></a><span
+ id="x1-112066r25"></a><span
class="cmr-6">25</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111068r26"></a><span
+ id="x1-112068r26"></a><span
class="cmr-6">26</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-111070r27"></a><span
+ id="x1-112070r27"></a><span
class="cmr-6">27</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111072r28"></a><span
+ id="x1-112072r28"></a><span
class="cmr-6">28</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-111074r29"></a><span
+ id="x1-112074r29"></a><span
class="cmr-6">29</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-111076r30"></a><span
+ id="x1-112076r30"></a><span
class="cmr-6">30</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> while</span><span
class="cmtt-8"> [partition\_count]</span>
<br class="fancyvrb" /><a
- id="x1-111078r31"></a><span
+ id="x1-112078r31"></a><span
class="cmr-6">31</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> than</span><span
class="cmtt-8"> [partitions\_to\_read]</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-111080r32"></a><span
+ id="x1-112080r32"></a><span
class="cmr-6">32</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111082r33"></a><span
+ id="x1-112082r33"></a><span
class="cmr-6">33</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [ch]-1</span><span
class="cmtt-8"> {</span>
<br class="fancyvrb" /><a
- id="x1-111084r34"></a><span
+ id="x1-112084r34"></a><span
class="cmr-6">34</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111086r35"></a><span
+ id="x1-112086r35"></a><span
class="cmr-6">35</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> not</span><span
class="cmtt-8"> decode’</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-111088r36"></a><span
+ id="x1-112088r36"></a><span
class="cmr-6">36</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-111090r37"></a><span
+ id="x1-112090r37"></a><span
class="cmr-6">37</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [j],[partition\_count]</span>
<br class="fancyvrb" /><a
- id="x1-111092r38"></a><span
+ id="x1-112092r38"></a><span
class="cmr-6">38</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [residue\_books]</span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [vqclass],[pass]</span><br class="fancyvrb" /><a
- id="x1-111094r39"></a><span
+ id="x1-112094r39"></a><span
class="cmr-6">39</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ’unused’)</span><span
class="cmtt-8"> {</span>
<br class="fancyvrb" /><a
- id="x1-111096r40"></a><span
+ id="x1-112096r40"></a><span
class="cmr-6">40</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111098r41"></a><span
+ id="x1-112098r41"></a><span
class="cmr-6">41</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> at</span><span
class="cmtt-8"> scalar</span>
<br class="fancyvrb" /><a
- id="x1-111100r42"></a><span
+ id="x1-112100r42"></a><span
class="cmr-6">42</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [limit\_residue\_begin]+[partition\_count]*[residue\_partition\_size]</span><span
class="cmtt-8"> using</span>
<br class="fancyvrb" /><a
- id="x1-111102r43"></a><span
+ id="x1-112102r43"></a><span
class="cmr-6">43</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> in</span><span
class="cmtt-8"> VQ</span><span
class="cmtt-8"> context</span><br class="fancyvrb" /><a
- id="x1-111104r44"></a><span
+ id="x1-112104r44"></a><span
class="cmr-6">44</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-111106r45"></a><span
+ id="x1-112106r45"></a><span
class="cmr-6">45</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span>
<br class="fancyvrb" /><a
- id="x1-111108r46"></a><span
+ id="x1-112108r46"></a><span
class="cmr-6">46</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111110r47"></a><span
+ id="x1-112110r47"></a><span
class="cmr-6">47</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [partition\_count]</span><span
class="cmtt-8"> by</span><span
class="cmtt-8"> one</span><br class="fancyvrb" /><a
- id="x1-111112r48"></a><span
+ id="x1-112112r48"></a><span
class="cmr-6">48</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111114r49"></a><span
+ id="x1-112114r49"></a><span
class="cmr-6">49</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-111116r50"></a><span
+ id="x1-112116r50"></a><span
class="cmr-6">50</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-111118r51"></a><span
+ id="x1-112118r51"></a><span
class="cmr-6">51</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-111120r52"></a><span
+ id="x1-112120r52"></a><span
class="cmr-6">52</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-111122r53"></a><span
+ id="x1-112122r53"></a><span
class="cmr-6">53</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 21)</span><span
class="cmtt-8"> done</span><br class="fancyvrb" /><a
- id="x1-111124r54"></a><span
+ id="x1-112124r54"></a><span
class="cmr-6">54</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span></div>
Decode returns the result of vector decode up to that point.
<!--l. 350--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">8.6.3. </span> <a
- id="x1-1120008.6.3"></a>format 0 specifics</h5>
+ id="x1-1130008.6.3"></a>format 0 specifics</h5>
<!--l. 352--><p class="noindent" >Format zero decodes partitions exactly as described earlier in the ’Residue Format: residue 0’
section. The following pseudocode presents the same algorithm. Assume:
class="cmtt-12">[offset] </span>is the beginning read offset in [v]</li></ul>
<!--l. 363--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb41"><a
- id="x1-112002r1"></a><span
+ id="x1-113002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [n]</span><span
class="cmtt-8"> /</span><span
class="cmtt-8"> [codebook\_dimensions]</span><br class="fancyvrb" /><a
- id="x1-112004r2"></a><span
+ id="x1-113004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ...</span><span
class="cmtt-8"> [step]-1</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-112006r3"></a><span
+ id="x1-113006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-112008r4"></a><span
+ id="x1-113008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> VQ</span><span
class="cmtt-8"> context</span>
<br class="fancyvrb" /><a
- id="x1-112010r5"></a><span
+ id="x1-113010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ...</span><span
class="cmtt-8"> [codebook\_dimensions]-1</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-112012r6"></a><span
+ id="x1-113012r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-112014r7"></a><span
+ id="x1-113014r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ([offset]+[i]+[j]*[step])</span><span
class="cmtt-8"> =</span>
<br class="fancyvrb" /><a
- id="x1-112016r8"></a><span
+ id="x1-113016r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8">  </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> ([offset]+[i]+[j]*[step])</span><span
class="cmtt-8"> +</span><br class="fancyvrb" /><a
- id="x1-112018r9"></a><span
+ id="x1-113018r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [entry\_temp]</span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [j]</span><br class="fancyvrb" /><a
- id="x1-112020r10"></a><span
+ id="x1-113020r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-112022r11"></a><span
+ id="x1-113022r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-112024r12"></a><span
+ id="x1-113024r12"></a><span
class="cmr-6">12</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-112026r13"></a><span
+ id="x1-113026r13"></a><span
class="cmr-6">13</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-112028r14"></a><span
+ id="x1-113028r14"></a><span
class="cmr-6">14</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-112030r15"></a><span
+ id="x1-113030r15"></a><span
class="cmr-6">15</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 6)</span><span
class="cmtt-8"> done</span><br class="fancyvrb" /><a
- id="x1-112032r16"></a><span
+ id="x1-113032r16"></a><span
class="cmr-6">16</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span></div>
<!--l. 384--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">8.6.4. </span> <a
- id="x1-1130008.6.4"></a>format 1 specifics</h5>
+ id="x1-1140008.6.4"></a>format 1 specifics</h5>
<!--l. 386--><p class="noindent" >Format 1 decodes partitions exactly as described earlier in the ’Residue Format: residue 1’
section. The following pseudocode presents the same algorithm. Assume:
<ul class="itemize1">
class="cmtt-12">[offset] </span>is the beginning read offset in [v]</li></ul>
<!--l. 398--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb42"><a
- id="x1-113002r1"></a><span
+ id="x1-114002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [i]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> 0</span><br class="fancyvrb" /><a
- id="x1-113004r2"></a><span
+ id="x1-114004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> VQ</span><span
class="cmtt-8"> context</span>
<br class="fancyvrb" /><a
- id="x1-113006r3"></a><span
+ id="x1-114006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ...</span><span
class="cmtt-8"> [codebook\_dimensions]-1</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-113008r4"></a><span
+ id="x1-114008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-113010r5"></a><span
+ id="x1-114010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ([offset]+[i])</span><span
class="cmtt-8"> =</span>
<br class="fancyvrb" /><a
- id="x1-113012r6"></a><span
+ id="x1-114012r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8">  </span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> ([offset]+[i])</span><span
class="cmtt-8"> +</span><br class="fancyvrb" /><a
- id="x1-113014r7"></a><span
+ id="x1-114014r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [entry\_temp]</span><span
class="cmtt-8"> element</span><span
class="cmtt-8"> [j]</span><br class="fancyvrb" /><a
- id="x1-113016r8"></a><span
+ id="x1-114016r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 5)</span><span
class="cmtt-8"> increment</span><span
class="cmtt-8"> [i]</span><br class="fancyvrb" /><a
- id="x1-113018r9"></a><span
+ id="x1-114018r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-113020r10"></a><span
+ id="x1-114020r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-113022r11"></a><span
+ id="x1-114022r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-113024r12"></a><span
+ id="x1-114024r12"></a><span
class="cmr-6">12</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> at</span><span
class="cmtt-8"> step</span><span
class="cmtt-8"> 2</span><br class="fancyvrb" /><a
- id="x1-113026r13"></a><span
+ id="x1-114026r13"></a><span
class="cmr-6">13</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> done</span></div>
<!--l. 416--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">8.6.5. </span> <a
- id="x1-1140008.6.5"></a>format 2 specifics</h5>
+ id="x1-1150008.6.5"></a>format 2 specifics</h5>
class="cmti-12">ch </span>independent vectors, one for each outputchannel, according
to:
<div class="fancyvrb" id="fancyvrb43"><a
- id="x1-114005r1"></a><span
+ id="x1-115005r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ...</span><span
class="cmtt-8"> [n]-1</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-114007r2"></a><span
+ id="x1-115007r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-114009r3"></a><span
+ id="x1-115009r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ...</span><span
class="cmtt-8"> [ch]-1</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-114011r4"></a><span
+ id="x1-115011r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-114013r5"></a><span
+ id="x1-115013r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [ch]</span><span
class="cmtt-8"> +</span><span
class="cmtt-8"> [j])</span><br class="fancyvrb" /><a
- id="x1-114015r6"></a><span
+ id="x1-115015r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-114017r7"></a><span
+ id="x1-115017r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-114019r8"></a><span
+ id="x1-115019r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-114021r9"></a><span
+ id="x1-115021r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-114023r10"></a><span
+ id="x1-115023r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
<h3 class="sectionHead"><span class="titlemark">9. </span> <a
- id="x1-1150009"></a>Helper equations</h3>
+ id="x1-1160009"></a>Helper equations</h3>
<!--l. 6--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">9.1. </span> <a
- id="x1-1160009.1"></a>Overview</h4>
+ id="x1-1170009.1"></a>Overview</h4>
<!--l. 8--><p class="noindent" >The equations below are used in multiple places by the Vorbis codec specification. Rather than
cluttering up the main specification documents, they are defined here and referenced where
appropriate.
<!--l. 13--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">9.2. </span> <a
- id="x1-1170009.2"></a>Functions</h4>
+ id="x1-1180009.2"></a>Functions</h4>
<!--l. 15--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">9.2.1. </span> <a
- id="x1-1180009.2.1"></a>ilog</h5>
+ id="x1-1190009.2.1"></a>ilog</h5>
<!--l. 17--><p class="noindent" >The ”ilog(x)” function returns the position number (1 through n) of the highest set bit in the
two’s complement integer value <span
class="cmtt-12">[x]</span>. Values of <span
zero.
<!--l. 20--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb44"><a
- id="x1-118002r1"></a><span
+ id="x1-119002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [return\_value]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> 0;</span><br class="fancyvrb" /><a
- id="x1-118004r2"></a><span
+ id="x1-119004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> zero</span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-118006r3"></a><span
+ id="x1-119006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-118008r4"></a><span
+ id="x1-119008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> increment</span><span
class="cmtt-8"> [return\_value];</span>
<br class="fancyvrb" /><a
- id="x1-118010r5"></a><span
+ id="x1-119010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> MSb</span><span
class="cmtt-8"> with</span><span
class="cmtt-8"> zero</span><br class="fancyvrb" /><a
- id="x1-118012r6"></a><span
+ id="x1-119012r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> at</span><span
class="cmtt-8"> step</span><span
class="cmtt-8"> 2)</span><br class="fancyvrb" /><a
- id="x1-118014r7"></a><span
+ id="x1-119014r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-118016r8"></a><span
+ id="x1-119016r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-118018r9"></a><span
+ id="x1-119018r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-118020r10"></a><span
+ id="x1-119020r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
<li class="itemize">ilog(negative number) = 0;</li></ul>
<!--l. 48--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">9.2.2. </span> <a
- id="x1-1190009.2.2"></a>float32_unpack</h5>
+ id="x1-1200009.2.2"></a>float32_unpack</h5>
<!--l. 50--><p class="noindent" >”float32_unpack(x)” is intended to translate the packed binary representation of a Vorbis
codebook float value into the representation used by the decoder for floating point numbers. For
purposes of this example, we will unpack a Vorbis float32 into a host-native floating point
number.
<!--l. 56--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb45"><a
- id="x1-119002r1"></a><span
+ id="x1-120002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0x1fffff</span><span
class="cmtt-8"> (unsigned</span><span
class="cmtt-8"> result)</span><br class="fancyvrb" /><a
- id="x1-119004r2"></a><span
+ id="x1-120004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> (unsigned</span><span
class="cmtt-8"> result)</span>
<br class="fancyvrb" /><a
- id="x1-119006r3"></a><span
+ id="x1-120006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> (unsigned</span><span
class="cmtt-8"> result)</span>
<br class="fancyvrb" /><a
- id="x1-119008r4"></a><span
+ id="x1-120008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> then</span><span
class="cmtt-8"> negate</span><span
class="cmtt-8"> [mantissa]</span><br class="fancyvrb" /><a
- id="x1-119010r5"></a><span
+ id="x1-120010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> )</span></div>
<!--l. 66--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">9.2.3. </span> <a
- id="x1-1200009.2.3"></a>lookup1_values</h5>
+ id="x1-1210009.2.3"></a>lookup1_values</h5>
<!--l. 68--><p class="noindent" >”lookup1_values(codebook_entries,codebook_dimensions)” is used to compute the
correct length of the value index for a codebook VQ lookup table of lookup type 1.
The values on this list are permuted to construct the VQ vector lookup table of size
<!--l. 81--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">9.2.4. </span> <a
- id="x1-1210009.2.4"></a>low_neighbor</h5>
+ id="x1-1220009.2.4"></a>low_neighbor</h5>
<!--l. 83--><p class="noindent" >”low_neighbor(v,x)” finds the position <span
class="cmtt-12">n </span>in vector <span
class="cmtt-12">[v] </span>of the greatest value scalar element for
class="cmtt-12">[x]</span>.
<!--l. 88--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">9.2.5. </span> <a
- id="x1-1220009.2.5"></a>high_neighbor</h5>
+ id="x1-1230009.2.5"></a>high_neighbor</h5>
<!--l. 90--><p class="noindent" >”high_neighbor(v,x)” finds the position <span
class="cmtt-12">n </span>in vector [v] of the lowest value scalar element for
which <span
class="cmtt-12">[x]</span>.
<!--l. 97--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">9.2.6. </span> <a
- id="x1-1230009.2.6"></a>render_point</h5>
+ id="x1-1240009.2.6"></a>render_point</h5>
<!--l. 99--><p class="noindent" >”render_point(x0,y0,x1,y1,X)” is used to find the Y value at point X along the line specified by
x0, x1, y0 and y1. This function uses an integer algorithm to solve for the point directly without
calculating intervening values along the line.
<!--l. 104--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb46"><a
- id="x1-123002r1"></a><span
+ id="x1-124002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [y1]</span><span
class="cmtt-8"> -</span><span
class="cmtt-8"> [y0]</span><br class="fancyvrb" /><a
- id="x1-123004r2"></a><span
+ id="x1-124004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [x1]</span><span
class="cmtt-8"> -</span><span
class="cmtt-8"> [x0]</span><br class="fancyvrb" /><a
- id="x1-123006r3"></a><span
+ id="x1-124006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> value</span><span
class="cmtt-8"> of</span><span
class="cmtt-8"> [dy]</span><br class="fancyvrb" /><a
- id="x1-123008r4"></a><span
+ id="x1-124008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> -</span><span
class="cmtt-8"> [x0])</span>
<br class="fancyvrb" /><a
- id="x1-123010r5"></a><span
+ id="x1-124010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> using</span><span
class="cmtt-8"> integer</span><span
class="cmtt-8"> division</span><br class="fancyvrb" /><a
- id="x1-123012r6"></a><span
+ id="x1-124012r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> zero</span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-123014r7"></a><span
+ id="x1-124014r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-123016r8"></a><span
+ id="x1-124016r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> -</span><span
class="cmtt-8"> [off]</span>
<br class="fancyvrb" /><a
- id="x1-123018r9"></a><span
+ id="x1-124018r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-123020r10"></a><span
+ id="x1-124020r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><span
class="cmtt-8"> else</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-123022r11"></a><span
+ id="x1-124022r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-123024r12"></a><span
+ id="x1-124024r12"></a><span
class="cmr-6">12</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [y0]</span><span
class="cmtt-8"> +</span><span
class="cmtt-8"> [off]</span><br class="fancyvrb" /><a
- id="x1-123026r13"></a><span
+ id="x1-124026r13"></a><span
class="cmr-6">13</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-123028r14"></a><span
+ id="x1-124028r14"></a><span
class="cmr-6">14</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-123030r15"></a><span
+ id="x1-124030r15"></a><span
class="cmr-6">15</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-123032r16"></a><span
+ id="x1-124032r16"></a><span
class="cmr-6">16</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> done</span></div>
<!--l. 125--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">9.2.7. </span> <a
- id="x1-1240009.2.7"></a>render_line</h5>
+ id="x1-1250009.2.7"></a>render_line</h5>
positive and negative numbers toward zero.
<!--l. 134--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb47"><a
- id="x1-124002r1"></a><span
+ id="x1-125002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [y1]</span><span
class="cmtt-8"> -</span><span
class="cmtt-8"> [y0]</span><br class="fancyvrb" /><a
- id="x1-124004r2"></a><span
+ id="x1-125004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [x1]</span><span
class="cmtt-8"> -</span><span
class="cmtt-8"> [x0]</span><br class="fancyvrb" /><a
- id="x1-124006r3"></a><span
+ id="x1-125006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> value</span><span
class="cmtt-8"> of</span><span
class="cmtt-8"> [dy]</span><br class="fancyvrb" /><a
- id="x1-124008r4"></a><span
+ id="x1-125008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> integer</span><span
class="cmtt-8"> division</span>
<br class="fancyvrb" /><a
- id="x1-124010r5"></a><span
+ id="x1-125010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [x]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> [x0]</span><br class="fancyvrb" /><a
- id="x1-124012r6"></a><span
+ id="x1-125012r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [y]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> [y0]</span><br class="fancyvrb" /><a
- id="x1-124014r7"></a><span
+ id="x1-125014r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [err]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> 0</span><br class="fancyvrb" /><a
- id="x1-124016r8"></a><span
+ id="x1-125016r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124018r9"></a><span
+ id="x1-125018r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0</span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-124020r10"></a><span
+ id="x1-125020r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124022r11"></a><span
+ id="x1-125022r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> -</span><span
class="cmtt-8"> 1</span>
<br class="fancyvrb" /><a
- id="x1-124024r12"></a><span
+ id="x1-125024r12"></a><span
class="cmr-6">12</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124026r13"></a><span
+ id="x1-125026r13"></a><span
class="cmr-6">13</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><span
class="cmtt-8"> else</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-124028r14"></a><span
+ id="x1-125028r14"></a><span
class="cmr-6">14</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124030r15"></a><span
+ id="x1-125030r15"></a><span
class="cmr-6">15</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [base]</span><span
class="cmtt-8"> +</span><span
class="cmtt-8"> 1</span><br class="fancyvrb" /><a
- id="x1-124032r16"></a><span
+ id="x1-125032r16"></a><span
class="cmr-6">16</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124034r17"></a><span
+ id="x1-125034r17"></a><span
class="cmr-6">17</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-124036r18"></a><span
+ id="x1-125036r18"></a><span
class="cmr-6">18</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124038r19"></a><span
+ id="x1-125038r19"></a><span
class="cmr-6">19</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> *</span><span
class="cmtt-8"> [adx]</span>
<br class="fancyvrb" /><a
- id="x1-124040r20"></a><span
+ id="x1-125040r20"></a><span
class="cmr-6">20</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [x]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> [y]</span><br class="fancyvrb" /><a
- id="x1-124042r21"></a><span
+ id="x1-125042r21"></a><span
class="cmr-6">21</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124044r22"></a><span
+ id="x1-125044r22"></a><span
class="cmr-6">22</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> ...</span><span
class="cmtt-8"> [x1]-1</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-124046r23"></a><span
+ id="x1-125046r23"></a><span
class="cmr-6">23</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124048r24"></a><span
+ id="x1-125048r24"></a><span
class="cmr-6">24</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> +</span><span
class="cmtt-8"> [ady];</span>
<br class="fancyvrb" /><a
- id="x1-124050r25"></a><span
+ id="x1-125050r25"></a><span
class="cmr-6">25</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [adx]</span><span
class="cmtt-8"> )</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-124052r26"></a><span
+ id="x1-125052r26"></a><span
class="cmr-6">26</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124054r27"></a><span
+ id="x1-125054r27"></a><span
class="cmr-6">27</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [err]</span><span
class="cmtt-8"> -</span><span
class="cmtt-8"> [adx]</span><br class="fancyvrb" /><a
- id="x1-124056r28"></a><span
+ id="x1-125056r28"></a><span
class="cmr-6">28</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [y]</span><span
class="cmtt-8"> +</span><span
class="cmtt-8"> [sy]</span><br class="fancyvrb" /><a
- id="x1-124058r29"></a><span
+ id="x1-125058r29"></a><span
class="cmr-6">29</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span>
<br class="fancyvrb" /><a
- id="x1-124060r30"></a><span
+ id="x1-125060r30"></a><span
class="cmr-6">30</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><span
class="cmtt-8"> else</span><span
class="cmtt-8"> {</span><br class="fancyvrb" /><a
- id="x1-124062r31"></a><span
+ id="x1-125062r31"></a><span
class="cmr-6">31</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124064r32"></a><span
+ id="x1-125064r32"></a><span
class="cmr-6">32</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [y]</span><span
class="cmtt-8"> +</span><span
class="cmtt-8"> [base]</span><br class="fancyvrb" /><a
- id="x1-124066r33"></a><span
+ id="x1-125066r33"></a><span
class="cmr-6">33</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124068r34"></a><span
+ id="x1-125068r34"></a><span
class="cmr-6">34</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> }</span><br class="fancyvrb" /><a
- id="x1-124070r35"></a><span
+ id="x1-125070r35"></a><span
class="cmr-6">35</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124072r36"></a><span
+ id="x1-125072r36"></a><span
class="cmr-6">36</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> [x]</span><span
class="cmtt-8"> =</span><span
class="cmtt-8"> [y]</span><br class="fancyvrb" /><a
- id="x1-124074r37"></a><span
+ id="x1-125074r37"></a><span
class="cmr-6">37</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><br class="fancyvrb" /><a
- id="x1-124076r38"></a><span
+ id="x1-125076r38"></a><span
class="cmr-6">38</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
<h3 class="sectionHead"><span class="titlemark">10. </span> <a
- id="x1-12500010"></a>Tables</h3>
+ id="x1-12600010"></a>Tables</h3>
<!--l. 6--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">10.1. </span> <a
- id="x1-12600010.1"></a>floor1_inverse_dB_table</h4>
+ id="x1-12700010.1"></a>floor1_inverse_dB_table</h4>
<!--l. 8--><p class="noindent" >The vector <span
class="cmtt-12">[floor1_inverse_dB_table] </span>is a 256 element static lookup table consisting of the
following values (read left to right then top to bottom):
<!--l. 12--><p class="noindent" >
<div class="fancyvrb" id="fancyvrb48"><a
- id="x1-126002r1"></a><span
+ id="x1-127002r1"></a><span
class="cmr-6">1</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 1.1341951e-07,</span><span
class="cmtt-8"> 1.2079015e-07,</span><span
class="cmtt-8"> 1.2863978e-07,</span><br class="fancyvrb" /><a
- id="x1-126004r2"></a><span
+ id="x1-127004r2"></a><span
class="cmr-6">2</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 1.5538408e-07,</span><span
class="cmtt-8"> 1.6548181e-07,</span>
<br class="fancyvrb" /><a
- id="x1-126006r3"></a><span
+ id="x1-127006r3"></a><span
class="cmr-6">3</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 1.8768855e-07,</span><span
class="cmtt-8"> 1.9988561e-07,</span><span
class="cmtt-8"> 2.1287530e-07,</span><br class="fancyvrb" /><a
- id="x1-126008r4"></a><span
+ id="x1-127008r4"></a><span
class="cmr-6">4</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 2.5713223e-07,</span><span
class="cmtt-8"> 2.7384213e-07,</span>
<br class="fancyvrb" /><a
- id="x1-126010r5"></a><span
+ id="x1-127010r5"></a><span
class="cmr-6">5</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 3.1059021e-07,</span><span
class="cmtt-8"> 3.3077411e-07,</span><span
class="cmtt-8"> 3.5226968e-07,</span><br class="fancyvrb" /><a
- id="x1-126012r6"></a><span
+ id="x1-127012r6"></a><span
class="cmr-6">6</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 4.2550680e-07,</span><span
class="cmtt-8"> 4.5315863e-07,</span>
<br class="fancyvrb" /><a
- id="x1-126014r7"></a><span
+ id="x1-127014r7"></a><span
class="cmr-6">7</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 5.1396998e-07,</span><span
class="cmtt-8"> 5.4737065e-07,</span><span
class="cmtt-8"> 5.8294187e-07,</span><br class="fancyvrb" /><a
- id="x1-126016r8"></a><span
+ id="x1-127016r8"></a><span
class="cmr-6">8</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 7.0413592e-07,</span><span
class="cmtt-8"> 7.4989464e-07,</span>
<br class="fancyvrb" /><a
- id="x1-126018r9"></a><span
+ id="x1-127018r9"></a><span
class="cmr-6">9</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 8.5052630e-07,</span><span
class="cmtt-8"> 9.0579828e-07,</span><span
class="cmtt-8"> 9.6466216e-07,</span><br class="fancyvrb" /><a
- id="x1-126020r10"></a><span
+ id="x1-127020r10"></a><span
class="cmr-6">10</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 1.1652161e-06,</span><span
class="cmtt-8"> 1.2409384e-06,</span>
<br class="fancyvrb" /><a
- id="x1-126022r11"></a><span
+ id="x1-127022r11"></a><span
class="cmr-6">11</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 1.4074654e-06,</span><span
class="cmtt-8"> 1.4989305e-06,</span><span
class="cmtt-8"> 1.5963394e-06,</span><br class="fancyvrb" /><a
- id="x1-126024r12"></a><span
+ id="x1-127024r12"></a><span
class="cmr-6">12</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 1.9282195e-06,</span><span
class="cmtt-8"> 2.0535261e-06,</span>
<br class="fancyvrb" /><a
- id="x1-126026r13"></a><span
+ id="x1-127026r13"></a><span
class="cmr-6">13</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 2.3290978e-06,</span><span
class="cmtt-8"> 2.4804557e-06,</span><span
class="cmtt-8"> 2.6416497e-06,</span><br class="fancyvrb" /><a
- id="x1-126028r14"></a><span
+ id="x1-127028r14"></a><span
class="cmr-6">14</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 3.1908506e-06,</span><span
class="cmtt-8"> 3.3982101e-06,</span>
<br class="fancyvrb" /><a
- id="x1-126030r15"></a><span
+ id="x1-127030r15"></a><span
class="cmr-6">15</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 3.8542308e-06,</span><span
class="cmtt-8"> 4.1047004e-06,</span><span
class="cmtt-8"> 4.3714470e-06,</span><br class="fancyvrb" /><a
- id="x1-126032r16"></a><span
+ id="x1-127032r16"></a><span
class="cmr-6">16</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 5.2802740e-06,</span><span
class="cmtt-8"> 5.6234160e-06,</span>
<br class="fancyvrb" /><a
- id="x1-126034r17"></a><span
+ id="x1-127034r17"></a><span
class="cmr-6">17</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 6.3780469e-06,</span><span
class="cmtt-8"> 6.7925283e-06,</span><span
class="cmtt-8"> 7.2339451e-06,</span><br class="fancyvrb" /><a
- id="x1-126036r18"></a><span
+ id="x1-127036r18"></a><span
class="cmr-6">18</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 8.7378876e-06,</span><span
class="cmtt-8"> 9.3057248e-06,</span>
<br class="fancyvrb" /><a
- id="x1-126038r19"></a><span
+ id="x1-127038r19"></a><span
class="cmr-6">19</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 1.0554501e-05,</span><span
class="cmtt-8"> 1.1240392e-05,</span><span
class="cmtt-8"> 1.1970856e-05,</span><br class="fancyvrb" /><a
- id="x1-126040r20"></a><span
+ id="x1-127040r20"></a><span
class="cmr-6">20</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 1.4459606e-05,</span><span
class="cmtt-8"> 1.5399272e-05,</span>
<br class="fancyvrb" /><a
- id="x1-126042r21"></a><span
+ id="x1-127042r21"></a><span
class="cmr-6">21</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 1.7465768e-05,</span><span
class="cmtt-8"> 1.8600792e-05,</span><span
class="cmtt-8"> 1.9809576e-05,</span><br class="fancyvrb" /><a
- id="x1-126044r22"></a><span
+ id="x1-127044r22"></a><span
class="cmr-6">22</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 2.3928002e-05,</span><span
class="cmtt-8"> 2.5482978e-05,</span>
<br class="fancyvrb" /><a
- id="x1-126046r23"></a><span
+ id="x1-127046r23"></a><span
class="cmr-6">23</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 2.8902651e-05,</span><span
class="cmtt-8"> 3.0780908e-05,</span><span
class="cmtt-8"> 3.2781225e-05,</span><br class="fancyvrb" /><a
- id="x1-126048r24"></a><span
+ id="x1-127048r24"></a><span
class="cmr-6">24</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 3.9596466e-05,</span><span
class="cmtt-8"> 4.2169667e-05,</span>
<br class="fancyvrb" /><a
- id="x1-126050r25"></a><span
+ id="x1-127050r25"></a><span
class="cmr-6">25</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 4.7828601e-05,</span><span
class="cmtt-8"> 5.0936773e-05,</span><span
class="cmtt-8"> 5.4246931e-05,</span><br class="fancyvrb" /><a
- id="x1-126052r26"></a><span
+ id="x1-127052r26"></a><span
class="cmr-6">26</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 6.5524908e-05,</span><span
class="cmtt-8"> 6.9783085e-05,</span>
<br class="fancyvrb" /><a
- id="x1-126054r27"></a><span
+ id="x1-127054r27"></a><span
class="cmr-6">27</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 7.9147585e-05,</span><span
class="cmtt-8"> 8.4291040e-05,</span><span
class="cmtt-8"> 8.9768747e-05,</span><br class="fancyvrb" /><a
- id="x1-126056r28"></a><span
+ id="x1-127056r28"></a><span
class="cmr-6">28</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.00010843174,</span><span
class="cmtt-8"> 0.00011547824,</span>
<br class="fancyvrb" /><a
- id="x1-126058r29"></a><span
+ id="x1-127058r29"></a><span
class="cmr-6">29</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.00013097477,</span><span
class="cmtt-8"> 0.00013948625,</span><span
class="cmtt-8"> 0.00014855085,</span><br class="fancyvrb" /><a
- id="x1-126060r30"></a><span
+ id="x1-127060r30"></a><span
class="cmr-6">30</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.00017943469,</span><span
class="cmtt-8"> 0.00019109536,</span>
<br class="fancyvrb" /><a
- id="x1-126062r31"></a><span
+ id="x1-127062r31"></a><span
class="cmr-6">31</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.00021673929,</span><span
class="cmtt-8"> 0.00023082423,</span><span
class="cmtt-8"> 0.00024582449,</span><br class="fancyvrb" /><a
- id="x1-126064r32"></a><span
+ id="x1-127064r32"></a><span
class="cmr-6">32</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.00029693158,</span><span
class="cmtt-8"> 0.00031622787,</span>
<br class="fancyvrb" /><a
- id="x1-126066r33"></a><span
+ id="x1-127066r33"></a><span
class="cmr-6">33</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.00035866388,</span><span
class="cmtt-8"> 0.00038197188,</span><span
class="cmtt-8"> 0.00040679456,</span><br class="fancyvrb" /><a
- id="x1-126068r34"></a><span
+ id="x1-127068r34"></a><span
class="cmr-6">34</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.00049136745,</span><span
class="cmtt-8"> 0.00052329927,</span>
<br class="fancyvrb" /><a
- id="x1-126070r35"></a><span
+ id="x1-127070r35"></a><span
class="cmr-6">35</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.00059352311,</span><span
class="cmtt-8"> 0.00063209358,</span><span
class="cmtt-8"> 0.00067317058,</span><br class="fancyvrb" /><a
- id="x1-126072r36"></a><span
+ id="x1-127072r36"></a><span
class="cmr-6">36</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.00081312324,</span><span
class="cmtt-8"> 0.00086596457,</span>
<br class="fancyvrb" /><a
- id="x1-126074r37"></a><span
+ id="x1-127074r37"></a><span
class="cmr-6">37</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0010459992,</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0011139742,</span><br class="fancyvrb" /><a
- id="x1-126076r38"></a><span
+ id="x1-127076r38"></a><span
class="cmr-6">38</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0014330129,</span>
<br class="fancyvrb" /><a
- id="x1-126078r39"></a><span
+ id="x1-127078r39"></a><span
class="cmr-6">39</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0017309374,</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0018434235,</span><br class="fancyvrb" /><a
- id="x1-126080r40"></a><span
+ id="x1-127080r40"></a><span
class="cmr-6">40</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0023713743,</span>
<br class="fancyvrb" /><a
- id="x1-126082r41"></a><span
+ id="x1-127082r41"></a><span
class="cmr-6">41</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0028643847,</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0030505286,</span><br class="fancyvrb" /><a
- id="x1-126084r42"></a><span
+ id="x1-127084r42"></a><span
class="cmr-6">42</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0039241906,</span>
<br class="fancyvrb" /><a
- id="x1-126086r43"></a><span
+ id="x1-127086r43"></a><span
class="cmr-6">43</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0047400328,</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0050480668,</span><br class="fancyvrb" /><a
- id="x1-126088r44"></a><span
+ id="x1-127088r44"></a><span
class="cmr-6">44</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0064938176,</span>
<br class="fancyvrb" /><a
- id="x1-126090r45"></a><span
+ id="x1-127090r45"></a><span
class="cmr-6">45</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0078438871,</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.0083536271,</span><br class="fancyvrb" /><a
- id="x1-126092r46"></a><span
+ id="x1-127092r46"></a><span
class="cmr-6">46</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.010746080,</span>
<br class="fancyvrb" /><a
- id="x1-126094r47"></a><span
+ id="x1-127094r47"></a><span
class="cmr-6">47</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.013823725,</span><br class="fancyvrb" /><a
- id="x1-126096r48"></a><span
+ id="x1-127096r48"></a><span
class="cmr-6">48</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.017782797,</span>
<br class="fancyvrb" /><a
- id="x1-126098r49"></a><span
+ id="x1-127098r49"></a><span
class="cmr-6">49</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.022875735,</span><br class="fancyvrb" /><a
- id="x1-126100r50"></a><span
+ id="x1-127100r50"></a><span
class="cmr-6">50</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.029427276,</span>
<br class="fancyvrb" /><a
- id="x1-126102r51"></a><span
+ id="x1-127102r51"></a><span
class="cmr-6">51</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.037855157,</span><br class="fancyvrb" /><a
- id="x1-126104r52"></a><span
+ id="x1-127104r52"></a><span
class="cmr-6">52</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.048696758,</span>
<br class="fancyvrb" /><a
- id="x1-126106r53"></a><span
+ id="x1-127106r53"></a><span
class="cmr-6">53</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.062643361,</span><br class="fancyvrb" /><a
- id="x1-126108r54"></a><span
+ id="x1-127108r54"></a><span
class="cmr-6">54</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.080584227,</span>
<br class="fancyvrb" /><a
- id="x1-126110r55"></a><span
+ id="x1-127110r55"></a><span
class="cmr-6">55</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.10366330,</span><br class="fancyvrb" /><a
- id="x1-126112r56"></a><span
+ id="x1-127112r56"></a><span
class="cmr-6">56</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.13335215,</span>
<br class="fancyvrb" /><a
- id="x1-126114r57"></a><span
+ id="x1-127114r57"></a><span
class="cmr-6">57</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.17154380,</span><br class="fancyvrb" /><a
- id="x1-126116r58"></a><span
+ id="x1-127116r58"></a><span
class="cmr-6">58</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.22067342,</span>
<br class="fancyvrb" /><a
- id="x1-126118r59"></a><span
+ id="x1-127118r59"></a><span
class="cmr-6">59</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.28387361,</span><br class="fancyvrb" /><a
- id="x1-126120r60"></a><span
+ id="x1-127120r60"></a><span
class="cmr-6">60</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.36517414,</span>
<br class="fancyvrb" /><a
- id="x1-126122r61"></a><span
+ id="x1-127122r61"></a><span
class="cmr-6">61</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.46975890,</span><br class="fancyvrb" /><a
- id="x1-126124r62"></a><span
+ id="x1-127124r62"></a><span
class="cmr-6">62</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.60429640,</span>
<br class="fancyvrb" /><a
- id="x1-126126r63"></a><span
+ id="x1-127126r63"></a><span
class="cmr-6">63</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
class="cmtt-8"> 0.77736504,</span><br class="fancyvrb" /><a
- id="x1-126128r64"></a><span
+ id="x1-127128r64"></a><span
class="cmr-6">64</span><span
class="cmtt-8"> </span><span
class="cmtt-8"> </span><span
<h3 class="sectionHead"><span class="titlemark">A. </span> <a
- id="x1-127000A"></a>Embedding Vorbis into an Ogg stream</h3>
+ id="x1-128000A"></a>Embedding Vorbis into an Ogg stream</h3>
<!--l. 6--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">A.1. </span> <a
- id="x1-128000A.1"></a>Overview</h4>
+ id="x1-129000A.1"></a>Overview</h4>
<!--l. 8--><p class="noindent" >This document describes using Ogg logical and physical transport streams to encapsulate Vorbis
compressed audio packet data into file form.
<!--l. 12--><p class="noindent" >The <a
first.
<!--l. 22--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">A.1.1. </span> <a
- id="x1-129000A.1.1"></a>Restrictions</h5>
+ id="x1-130000A.1.1"></a>Restrictions</h5>
<!--l. 24--><p class="noindent" >The Ogg/Vorbis I specification currently dictates that Ogg/Vorbis streams use Ogg transport
streams in degenerate, unmultiplexed form only. That is:
<ul class="itemize1">
handling).
<!--l. 55--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">A.1.2. </span> <a
- id="x1-130000A.1.2"></a>MIME type</h5>
+ id="x1-131000A.1.2"></a>MIME type</h5>
<!--l. 57--><p class="noindent" >The MIME type of Ogg files depend on the context. Specifically, complex multimedia and
applications should use <span
class="cmtt-12">application/ogg</span>, while visual media should use <span
class="cmtt-12">audio/vorbis-config</span>.
<!--l. 65--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">A.2. </span> <a
- id="x1-131000A.2"></a>Encapsulation</h4>
+ id="x1-132000A.2"></a>Encapsulation</h4>
<!--l. 67--><p class="noindent" >Ogg encapsulation of a Vorbis packet stream is straightforward.
<ul class="itemize1">
<li class="itemize">The first Vorbis packet (the identification header), which uniquely identifies a stream
synthesis, resulting in correct positioning information without any aditional seeking
logic.
<!--l. 170--><p class="noindent" ><span class="likesubparagraphHead"><a
- id="x1-132000A.2"></a><span
+ id="x1-133000A.2"></a><span
class="cmbx-12">Note:</span></span> Failure to do so should, at worst, cause a decoder implementation to return
incorrect positioning information for seeking operations at the very beginning of the
stream.
<h3 class="sectionHead"><span class="titlemark">B. </span> <a
- id="x1-133000B"></a>Vorbis encapsulation in RTP</h3>
+ id="x1-134000B"></a>Vorbis encapsulation in RTP</h3>
<!--l. 8--><p class="noindent" >Please consult RFC 5215 <span
class="cmti-12">“RTP Payload Format for Vorbis Encoded Audio” </span>for description of
how to embed Vorbis audio in an RTP stream.
<h3 class="likesectionHead"><a
- id="x1-134000B"></a>Colophon</h3>
+ id="x1-135000B"></a>Colophon</h3>
<!--l. 6--><p class="noindent" ><img
src="fish_xiph_org.png" alt="PIC"
>
<h3 class="likesectionHead"><a
- id="x1-135000B"></a>References</h3>
+ id="x1-136000B"></a>References</h3>
<!--l. 133--><p class="noindent" >
<div class="thebibliography">
<p class="bibitem" ><span class="biblabel">