RealAudio sipr: Difference between revisions
Line 84: | Line 84: | ||
==Decoding of the innovative (algebraic or fixed codebook) vector== | ==Decoding of the innovative (algebraic or fixed codebook) vector== | ||
=== 16 Kbps Voice === | === Decoding the pulse positions === | ||
==== 16 Kbps Voice ==== | |||
The fixed codebook vector is reconstructed using 10 pulses in 5 overlapping tracks. | |||
Pulses in each track are encoded using 9 bits: | |||
* 1 bit - first pulse's sign<ref>The signs of two pulses in one track are set to the same value if second pulse has greater or equal index and opposite - otherwise.</ref> (1 - negative, 0 - positive) | |||
* 4 bits - encoded index of first pulse in pair | |||
* 4 bits - encoded index of second pulse in pair | |||
{| border="1" | |||
|- | |||
! Track !! Pulses || Indexes | |||
|- | |||
| 1 | |||
| <i>i<sub>0</sub></i>,<i>i<sub>5</sub></i> | |||
| 0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75 | |||
|- | |||
| 2 | |||
| <i>i<sub>1</sub></i>,<i>i<sub>6</sub></i> | |||
| 1,6,11,16,21,26,31,36,41,46,51,56,61,66,71,76 | |||
|- | |||
| 3 | |||
| <i>i<sub>2</sub></i>,<i>i<sub>7</sub></i> | |||
| 2,7,12,17,22,27,32,37,42,47,52,57,62,67,72,77 | |||
|- | |||
| 4 | |||
| <i>i<sub>3</sub></i>,<i>i<sub>8</sub></i> | |||
| 3,8,13,18,23,28,33,38,43,48,53,58,63,68,73,78 | |||
|- | |||
| 5 | |||
| <i>i<sub>4</sub></i>,<i>i<sub>9</sub></i> | |||
| 4,9,14,19,24,29,34,39,44,49,54,59,64,69,74,79 | |||
|- | |||
|} | |||
<references/> | |||
[[Category:Undiscovered Audio Codecs]] | [[Category:Undiscovered Audio Codecs]] | ||
[[Category:Audio Codecs]] | [[Category:Audio Codecs]] | ||
[[Category:Vocoders]] | [[Category:Vocoders]] |
Revision as of 23:19, 1 May 2008
- FOURCC: sipr
- Company: RealNetworks
- Samples: http://samples.mplayerhq.hu/real/AC-sipr/
Audio codec found in RealMedia files, not as common as cook.
Allegedly the same codec as ACELP.net. May be partly based on G.729, however RealAudio predates the finalization of the G.729 specifications for the 6.5 kbit/s and 11.8 kbit/s variants. ITU-T G.729 page
Codec library with debugging symbols: v50b3_linux20elf.tar.gz
Sipr flavors
0 6.5 Kbps Voice 1 8.5 Kbps Voice 2 5 Kbps Voice 3 16 Kbps Voice
Bit stream frame format
16 Kbps Voice
Bits | Meaning |
---|---|
1 | Switched MA predictor |
7 | LSP quantization, index 1 |
8 | LSP quantization, index 2 |
7 | LSP quantization, index 3 |
7 | LSP quantization, index 4 |
7 | LSP quantization, index 5 |
First subframe | |
9 | Pitch delay |
4 | Gain codebook index |
9 | Fixed codebook index (pulses 1 and 6) |
9 | Fixed codebook index (pulses 2 and 7) |
9 | Fixed codebook index (pulses 3 and 8) |
9 | Fixed codebook index (pulses 4 and 9) |
9 | Fixed codebook index (pulses 5 and 10) |
Second subframe | |
9 | Pitch delay |
4 | Gain codebook index |
9 | Fixed codebook index (pulses 1 and 6) |
9 | Fixed codebook index (pulses 2 and 7) |
9 | Fixed codebook index (pulses 3 and 8) |
9 | Fixed codebook index (pulses 4 and 9) |
9 | Fixed codebook index (pulses 5 and 10) |
Decoding of the pitch (adaptive codebook) vector
Decode pitch lag
16 Kbps Voice, 1/3 resolution
In the first subframe, a fractional pitch lag is used with resolutions:
- 1/3 in the range [29 1/3; 159]
- 1 in the range [160; 281]
...encoded using 9 bits.
In the second subframe, a pitch lag resolution of 1/3 is always used in the range [T1 - 10 2/3, T1 + 9 2/3], where T1 is nearest integer to the fractional pitch lag of the previous (1st) subframe. The search range is bounded by [30, 281].
Above procedure is applied only if encoded pitch delay is in the range [0, 61]. In the other case the pitch delay is set to T1 + 1, where T1 is reconstructed pitch delay and T1 is nearest integer to the fractional pitch lag of the previous (1st) subframe.
Decoding of the innovative (algebraic or fixed codebook) vector
Decoding the pulse positions
16 Kbps Voice
The fixed codebook vector is reconstructed using 10 pulses in 5 overlapping tracks. Pulses in each track are encoded using 9 bits:
- 1 bit - first pulse's sign<ref>The signs of two pulses in one track are set to the same value if second pulse has greater or equal index and opposite - otherwise.</ref> (1 - negative, 0 - positive)
- 4 bits - encoded index of first pulse in pair
- 4 bits - encoded index of second pulse in pair
Track | Pulses | Indexes |
---|---|---|
1 | i0,i5 | 0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75 |
2 | i1,i6 | 1,6,11,16,21,26,31,36,41,46,51,56,61,66,71,76 |
3 | i2,i7 | 2,7,12,17,22,27,32,37,42,47,52,57,62,67,72,77 |
4 | i3,i8 | 3,8,13,18,23,28,33,38,43,48,53,58,63,68,73,78 |
5 | i4,i9 | 4,9,14,19,24,29,34,39,44,49,54,59,64,69,74,79 |
<references/>