From 373dc625f82b47096893add42c4472e4a57ab7eb Mon Sep 17 00:00:00 2001 From: Aki Date: Wed, 9 Feb 2022 22:23:03 +0100 Subject: Moved third-party libraries to a separate subdirectory --- vorbis/doc/helper.html | 239 ------------------------------------------------- 1 file changed, 239 deletions(-) delete mode 100644 vorbis/doc/helper.html (limited to 'vorbis/doc/helper.html') diff --git a/vorbis/doc/helper.html b/vorbis/doc/helper.html deleted file mode 100644 index a16df28..0000000 --- a/vorbis/doc/helper.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - -Ogg Vorbis Documentation - - - - - - - - - -

Ogg Vorbis I format specification: helper equations

- -

Overview

- -

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 linked in the main documents -where appropriate.

- -

ilog

- -

The "ilog(x)" function returns the position number (1 through n) of the -highest set bit in the two's complement integer value -[x]. Values of [x] less than zero are defined to return zero.

- -
-  1) [return_value] = 0;
-  2) if ( [x] is greater than zero ){
-      
-       3) increment [return_value];
-       4) logical shift [x] one bit to the right, padding the MSb with zero
-       5) repeat at step 2)
-
-     }
-
-   6) done
-
- -

Examples:

- - - -

float32_unpack

- -

"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.

- -
-  1) [mantissa] = [x] bitwise AND 0x1fffff (unsigned result)
-  2) [sign] = [x] bitwise AND 0x80000000 (unsigned result)
-  3) [exponent] = ( [x] bitwise AND 0x7fe00000) shifted right 21 bits (unsigned result)
-  4) if ( [sign] is nonzero ) then negate [mantissa]
-  5) return [mantissa] * ( 2 ^ ( [exponent] - 788 ) )
-
- -

lookup1_values

- -

"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 -[codebook_entries].

- -

The return value for this function is defined to be 'the greatest -integer value for which [return_value] to the power of -[codebook_dimensions] is less than or equal to -[codebook_entries]'.

- -

low_neighbor

- -

"low_neighbor(v,x)" finds the position n in vector [v] of -the greatest value scalar element for which n is less than -[x] and vector [v] element n is less -than vector [v] element [x].

- -

high_neighbor

- -

"high_neighbor(v,x)" finds the position n in vector [v] of -the lowest value scalar element for which n is less than -[x] and vector [v] element n is greater -than vector [v] element [x].

- -

render_point

- -

"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.

- -
-  1)  [dy] = [y1] - [y0]
-  2) [adx] = [x1] - [x0]
-  3) [ady] = absolute value of [dy]
-  4) [err] = [ady] * ([X] - [x0])
-  5) [off] = [err] / [adx] using integer division
-  6) if ( [dy] is less than zero ) {
-
-       7) [Y] = [y0] - [off]
-
-     } else {
-
-       8) [Y] = [y0] + [off]
-  
-     }
-
-  9) done
-
- -

render_line

- -

Floor decode type one uses the integer line drawing algorithm of -"render_line(x0, y0, x1, y1, v)" to construct an integer floor -curve for contiguous piecewise line segments. Note that it has not -been relevant elsewhere, but here we must define integer division as -rounding division of both positive and negative numbers toward zero.

- -
-  1)   [dy] = [y1] - [y0]
-  2)  [adx] = [x1] - [x0]
-  3)  [ady] = absolute value of [dy]
-  4) [base] = [dy] / [adx] using integer division
-  5)    [x] = [x0]
-  6)    [y] = [y0]
-  7)  [err] = 0
-
-  8) if ( [dy] is less than 0 ) {
-
-        9) [sy] = [base] - 1
-
-     } else {
-
-       10) [sy] = [base] + 1
-
-     }
-
- 11) [ady] = [ady] - (absolute value of [base]) * [adx]
- 12) vector [v] element [x] = [y]
-
- 13) iterate [x] over the range [x0]+1 ... [x1]-1 {
-
-       14) [err] = [err] + [ady];
-       15) if ( [err] >= [adx] ) {
-
-             15) [err] = [err] - [adx]
-             16)   [y] = [y] + [sy]
-
-           } else {
-
-             17) [y] = [y] + [base]
-   
-           }
-
-       18) vector [v] element [x] = [y]
-
-     }
-
- - - - - -- cgit v1.1