📄 classg726.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>G726 Class Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.4.4 --><div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div><h1>G726 Class Reference<br><small>[<a class="el" href="group__g726.html">Audio Codec - ITU-T Recomendation G726</a>]</small></h1><!-- doxytag: class="G726" --><code>#include <<a class="el" href="G726_8h-source.html">G726.h</a>></code><p><a href="classG726-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>A class which implements ITU-T (formerly CCITT) Recomendation G726 "40, 32, 24, 16 kbit/s Adaptive Differential Pulse Code Modulation (ADPCM)". <p>G726 replaces recomendations G721 and G723.<p>Note, this implemetation reproduces bugs found in the G191 reference implementation of G726. These bugs can be controlled by the <a class="el" href="group__g726.html#ga0">IMPLEMENT_G191_BUGS</a> macro.<p><dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__g726.html#ga0">IMPLEMENT_G191_BUGS</a></dd></dl><dl compact><dt><b>Version:</b></dt><dd>2005-02-13<ul><li>Added constructor <a class="el" href="classG726.html#a0">G726()</a>,</li><li>Added <a class="el" href="classG726.html#a6">Encode(void* dst, int dstOffset, const void* src, uint srcSize)</a> and</li><li>Added <a class="el" href="classG726.html#a7">Decode(void* dst, const void* src, int srcOffset, uint srcSize)</a>;</li></ul></dd></dl><p><p>Definition at line <a class="el" href="G726_8h-source.html#l00049">49</a> of file <a class="el" href="G726_8h-source.html">G726.h</a>.<table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>Public Types</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#w7">Law</a> { <a class="el" href="classG726.html#w7w0">uLaw</a> = 0, <a class="el" href="classG726.html#w7w1">ALaw</a> = 1, <a class="el" href="classG726.html#w7w2">PCM16</a> = 2 }</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#w8">Rate</a> { <a class="el" href="classG726.html#w8w3">Rate16kBits</a> = 2, <a class="el" href="classG726.html#w8w4">Rate24kBits</a> = 3, <a class="el" href="classG726.html#w8w5">Rate32kBits</a> = 4, <a class="el" href="classG726.html#w8w6">Rate40kBits</a> = 5 }</td></tr><tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#a0">G726</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">IMPORT void </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#a1">Reset</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">IMPORT void </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#a2">SetLaw</a> (<a class="el" href="classG726.html#w7">Law</a> law)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">IMPORT void </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#a3">SetRate</a> (<a class="el" href="classG726.html#w8">Rate</a> rate)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">IMPORT <a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#a4">Encode</a> (<a class="el" href="group__integers.html#ga6">uint</a> pcm)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">IMPORT <a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#a5">Decode</a> (<a class="el" href="group__integers.html#ga6">uint</a> adpcm)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">IMPORT <a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#a6">Encode</a> (void *dst, int dstOffset, const void *src, <a class="el" href="group__integers.html#ga6">uint</a> srcSize)</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">IMPORT <a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#a7">Decode</a> (void *dst, const void *src, int srcOffset, <a class="el" href="group__integers.html#ga6">uint</a> srcSize)</td></tr><tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga0"></a><!-- doxytag: member="G726::InputPCMFormatConversionAndDifferenceSignalComputation" ref="ga0" args="(uint S, int SE, int &D)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga0">InputPCMFormatConversionAndDifferenceSignalComputation</a> (<a class="el" href="group__integers.html#ga6">uint</a> S, int SE, int &D)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE 4/G.726 from Section 4.2.1 - Input PCM format conversion and difference signal computation. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga1"></a><!-- doxytag: member="G726::AdaptiveQuantizer" ref="ga1" args="(int D, uint Y, uint &I)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga1">AdaptiveQuantizer</a> (int D, <a class="el" href="group__integers.html#ga6">uint</a> Y, <a class="el" href="group__integers.html#ga6">uint</a> &I)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE 5/G.726 from Section 4.2.2 - Adaptive quantizer. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga2"></a><!-- doxytag: member="G726::InverseAdaptiveQuantizer" ref="ga2" args="(uint I, uint Y, uint &DQ)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga2">InverseAdaptiveQuantizer</a> (<a class="el" href="group__integers.html#ga6">uint</a> I, <a class="el" href="group__integers.html#ga6">uint</a> Y, <a class="el" href="group__integers.html#ga6">uint</a> &DQ)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE 6/G.726 from Section 4.2.3 - Inverse adaptive quantizer. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga3"></a><!-- doxytag: member="G726::QuantizerScaleFactorAdaptation1" ref="ga3" args="(uint AL, uint &Y)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga3">QuantizerScaleFactorAdaptation1</a> (<a class="el" href="group__integers.html#ga6">uint</a> AL, <a class="el" href="group__integers.html#ga6">uint</a> &Y)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE 7/G.726 (Part 1) from Section 4.2.4 - Quantizer scale factor adaptation. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga4"></a><!-- doxytag: member="G726::QuantizerScaleFactorAdaptation2" ref="ga4" args="(uint I, uint Y)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga4">QuantizerScaleFactorAdaptation2</a> (<a class="el" href="group__integers.html#ga6">uint</a> I, <a class="el" href="group__integers.html#ga6">uint</a> Y)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE 7/G.726 (Part 2) from Section 4.2.4 - Quantizer scale factor adaptation. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga5"></a><!-- doxytag: member="G726::AdaptationSpeedControl1" ref="ga5" args="(uint &AL)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga5">AdaptationSpeedControl1</a> (<a class="el" href="group__integers.html#ga6">uint</a> &AL)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE 8/G.726 (Part 1) from Section 4.2.5 - Adaptation speed control. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga6"></a><!-- doxytag: member="G726::AdaptationSpeedControl2" ref="ga6" args="(uint I, uint y, uint TDP, uint TR)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga6">AdaptationSpeedControl2</a> (<a class="el" href="group__integers.html#ga6">uint</a> I, <a class="el" href="group__integers.html#ga6">uint</a> y, <a class="el" href="group__integers.html#ga6">uint</a> TDP, <a class="el" href="group__integers.html#ga6">uint</a> TR)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE 8/G.726 (Part 2) from Section 4.2.5 - Adaptation speed control. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga7"></a><!-- doxytag: member="G726::AdaptativePredictorAndReconstructedSignalCalculator1" ref="ga7" args="(int &SE, int &SEZ)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga7">AdaptativePredictorAndReconstructedSignalCalculator1</a> (int &SE, int &SEZ)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE 9/G.726 (Part1) from Section 4.2.6 - Adaptative predictor and reconstructed signal calculator. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga8"></a><!-- doxytag: member="G726::AdaptativePredictorAndReconstructedSignalCalculator2" ref="ga8" args="(uint DQ, uint TR, int SE, int SEZ, int &SR, int &A2P)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga8">AdaptativePredictorAndReconstructedSignalCalculator2</a> (<a class="el" href="group__integers.html#ga6">uint</a> DQ, <a class="el" href="group__integers.html#ga6">uint</a> TR, int SE, int SEZ, int &SR, int &A2P)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE 9/G.726 (Part2) from Section 4.2.6 - Adaptative predictor and reconstructed signal calculator. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga9"></a><!-- doxytag: member="G726::ToneAndTransitionDetector1" ref="ga9" args="(uint DQ, uint &TR)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga9">ToneAndTransitionDetector1</a> (<a class="el" href="group__integers.html#ga6">uint</a> DQ, <a class="el" href="group__integers.html#ga6">uint</a> &TR)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE 10/G.726 (Part 1) from Section 4.2.7 - Tone and transition detector. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga10"></a><!-- doxytag: member="G726::ToneAndTransitionDetector2" ref="ga10" args="(int A2P, uint TR, uint &TDP)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga10">ToneAndTransitionDetector2</a> (int A2P, <a class="el" href="group__integers.html#ga6">uint</a> TR, <a class="el" href="group__integers.html#ga6">uint</a> &TDP)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE 10/G.726 (Part 2) from Section 4.2.7 - Tone and transition detector. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga11"></a><!-- doxytag: member="G726::OutputPCMFormatConversionAndSynchronousCodingAdjustment" ref="ga11" args="(int SR, int SE, uint Y, uint I, uint &SD)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga11">OutputPCMFormatConversionAndSynchronousCodingAdjustment</a> (int SR, int SE, <a class="el" href="group__integers.html#ga6">uint</a> Y, <a class="el" href="group__integers.html#ga6">uint</a> I, <a class="el" href="group__integers.html#ga6">uint</a> &SD)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE 11/G.726 from Section 4.2.8 - Output PCM format conversion and synchronous coding adjustment. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga12"></a><!-- doxytag: member="G726::DifferenceSignalComputation" ref="ga12" args="(int SL, int SE, int &D)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga12">DifferenceSignalComputation</a> (int SL, int SE, int &D)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE A.4/G.726 from Section A.3.3 - Difference signal computation. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga13"></a><!-- doxytag: member="G726::OutputLimiting" ref="ga13" args="(int SR, int &S0)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__g726__section4B.html#ga13">OutputLimiting</a> (int SR, int &S0)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">FIGURE A.5/G.726 from Section A.3.5 - Output limiting (decoder only). <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#d14">EncodeDecode</a> (<a class="el" href="group__integers.html#ga6">uint</a> input, bool encode)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">The top level method which implements the complete algorithm for both encoding and decoding. <a href="#d14"></a><br></td></tr><tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r0"></a><!-- doxytag: member="G726::LAW" ref="r0" args="" --><a class="el" href="classG726.html#w7">Law</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r0">LAW</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r1"></a><!-- doxytag: member="G726::RATE" ref="r1" args="" --><a class="el" href="classG726.html#w8">Rate</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r1">RATE</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r2"></a><!-- doxytag: member="G726::A1" ref="r2" args="" -->int </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r2">A1</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r3"></a><!-- doxytag: member="G726::A2" ref="r3" args="" -->int </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r3">A2</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r4"></a><!-- doxytag: member="G726::AP" ref="r4" args="" --><a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r4">AP</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r5"></a><!-- doxytag: member="G726::Bn" ref="r5" args="[6]" -->int </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r5">Bn</a> [6]</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r6"></a><!-- doxytag: member="G726::DML" ref="r6" args="" --><a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r6">DML</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r7"></a><!-- doxytag: member="G726::DMS" ref="r7" args="" --><a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r7">DMS</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r8"></a><!-- doxytag: member="G726::DQn" ref="r8" args="[6]" --><a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r8">DQn</a> [6]</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r9"></a><!-- doxytag: member="G726::PK1" ref="r9" args="" -->int </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r9">PK1</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r10"></a><!-- doxytag: member="G726::PK2" ref="r10" args="" -->int </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r10">PK2</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r11"></a><!-- doxytag: member="G726::SR1" ref="r11" args="" --><a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r11">SR1</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r12"></a><!-- doxytag: member="G726::SR2" ref="r12" args="" --><a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r12">SR2</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r13"></a><!-- doxytag: member="G726::TD" ref="r13" args="" --><a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r13">TD</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r14"></a><!-- doxytag: member="G726::YL" ref="r14" args="" --><a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r14">YL</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="r15"></a><!-- doxytag: member="G726::YU" ref="r15" args="" --><a class="el" href="group__integers.html#ga6">uint</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#r15">YU</a></td></tr><tr><td colspan="2"><br><h2>Friends</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="n0"></a><!-- doxytag: member="G726::G726Test" ref="n0" args="" -->class </td><td class="memItemRight" valign="bottom"><a class="el" href="classG726.html#n0">G726Test</a></td></tr></table><hr><h2>Member Enumeration Documentation</h2><a class="anchor" name="w7"></a><!-- doxytag: member="G726::Law" ref="w7" args="" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">enum <a class="el" href="classG726.html#w7">G726::Law</a> </td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p>Enumeration used to specify the coding law used for encoder input and decoder output.<dl compact><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"><tr><td valign="top"><em><a class="anchor" name="w7w0"></a><!-- doxytag: member="uLaw" ref="w7w0" args="" -->uLaw</em> </td><td>u law </td></tr><tr><td valign="top"><em><a class="anchor" name="w7w1"></a><!-- doxytag: member="ALaw" ref="w7w1" args="" -->ALaw</em> </td><td>A law </td></tr><tr><td valign="top"><em><a class="anchor" name="w7w2"></a><!-- doxytag: member="PCM16" ref="w7w2" args="" -->PCM16</em> </td><td>16 bit uniform PCM values. These are 'left justified' values corresponding to the 14 bit values in G726 Annex A. </td></tr></table></dl><p>Definition at line <a class="el" href="G726_8h-source.html#l00055">55</a> of file <a class="el" href="G726_8h-source.html">G726.h</a>. </td> </tr></table><a class="anchor" name="w8"></a><!-- doxytag: member="G726::Rate" ref="w8" args="" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">enum <a class="el" href="classG726.html#w8">G726::Rate</a> </td> </tr> </table>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -