📄 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.1 --><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><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" doxytag="G726::InputPCMFormatConversionAndDifferenceSignalComputation"></a>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" doxytag="G726::AdaptiveQuantizer"></a>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" doxytag="G726::InverseAdaptiveQuantizer"></a>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" doxytag="G726::QuantizerScaleFactorAdaptation1"></a>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" doxytag="G726::QuantizerScaleFactorAdaptation2"></a>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" doxytag="G726::AdaptationSpeedControl1"></a>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" doxytag="G726::AdaptationSpeedControl2"></a>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" doxytag="G726::AdaptativePredictorAndReconstructedSignalCalculator1"></a>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" doxytag="G726::AdaptativePredictorAndReconstructedSignalCalculator2"></a>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" doxytag="G726::ToneAndTransitionDetector1"></a>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" doxytag="G726::ToneAndTransitionDetector2"></a>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" doxytag="G726::OutputPCMFormatConversionAndSynchronousCodingAdjustment"></a>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" doxytag="G726::DifferenceSignalComputation"></a>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" doxytag="G726::OutputLimiting"></a>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></table><hr><h2>Member Enumeration Documentation</h2><a class="anchor" name="w7" doxytag="G726::Law"></a><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>Enumeration values: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"><tr><td valign="top"><em><a class="anchor" name="w7w0" doxytag="uLaw"></a>uLaw</em> </td><td>u law </td></tr><tr><td valign="top"><em><a class="anchor" name="w7w1" doxytag="ALaw"></a>ALaw</em> </td><td>A law </td></tr><tr><td valign="top"><em><a class="anchor" name="w7w2" doxytag="PCM16"></a>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" doxytag="G726::Rate"></a><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> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p>Enumeration used to specify the ADPCM bit-rate.<dl compact><dt><b>Enumeration values: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"><tr><td valign="top"><em><a class="anchor" name="w8w3" doxytag="Rate16kBits"></a>Rate16kBits</em> </td><td>16k bits per second (2 bits per ADPCM sample) </td></tr><tr><td valign="top"><em><a class="anchor" name="w8w4" doxytag="Rate24kBits"></a>Rate24kBits</em> </td><td>24k bits per second (3 bits per ADPCM sample) </td></tr><tr><td valign="top"><em><a class="anchor" name="w8w5" doxytag="Rate32kBits"></a>Rate32kBits</em> </td><td>32k bits per second (4 bits per ADPCM sample) </td></tr><tr><td valign="top"><em><a class="anchor" name="w8w6" doxytag="Rate40kBits"></a>Rate40kBits</em> </td><td>40k bits per second (5 bits per ADPCM sample) </td></tr></table></dl><p>Definition at line <a class="el" href="G726_8h-source.html#l00065">65</a> of file <a class="el" href="G726_8h-source.html">G726.h</a>. </td> </tr></table><hr><h2>Constructor & Destructor Documentation</h2><a class="anchor" name="a0" doxytag="G726::G726"></a><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -