<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>Dirac Video Codec</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <h1 align="center" color="#606080"> Dirac - A Video Codec </h1> <p align="center"> Created by the <a href="http://www.bbc.co.uk">British Broadcasting Corporation</a>. </p> <hr> <!-- Generated by Doxygen 1.5.9 --> <div class="navpath"><a class="el" href="a00234.html">dirac</a>::<a class="el" href="a00052.html">DiracParser</a> </div> <div class="contents"> <h1>dirac::DiracParser Class Reference</h1><!-- doxytag: class="dirac::DiracParser" -->Dirac Stream Parser Class. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="a00181_source.html">dirac_cppparser.h</a>></code> <p> <p> <a href="a00363.html">List of all members.</a><h2>Public Member Functions</h2> <ul> <li><a class="el" href="a00052.html#6f7c4a1a37d33f382f21fcecba9bdda0">DiracParser</a> (bool verbose=false) <dl class="el"><dd class="mdescRight">Constructor. <a href="#6f7c4a1a37d33f382f21fcecba9bdda0"></a><br></dl><li><a class="el" href="a00052.html#6033eed95b56bfc667141e30c7019aa6">~DiracParser</a> () <dl class="el"><dd class="mdescRight">Destructor. <a href="#6033eed95b56bfc667141e30c7019aa6"></a><br></dl><li>void <a class="el" href="a00052.html#689e785fa6f9a99ee44e7e6573c33c07">SetBuffer</a> (char *start, char *end) <dl class="el"><dd class="mdescRight">Adds bytes to encoder. <a href="#689e785fa6f9a99ee44e7e6573c33c07"></a><br></dl><li><a class="el" href="a00176.html#e93428308fdd9a41c5c4e3b313660d5d">DecoderState</a> <a class="el" href="a00052.html#1e3e40e42cfb2b3726a9cb54f95e5452">Parse</a> () <dl class="el"><dd class="mdescRight">Parse the data in internal buffer. <a href="#1e3e40e42cfb2b3726a9cb54f95e5452"></a><br></dl><li>const <a class="el" href="a00103.html">ParseParams</a> & <a class="el" href="a00052.html#fd868e667478a274a602021212196978">GetParseParams</a> () const <dl class="el"><dd class="mdescRight">Return the parse parameters of the current sequence. <a href="#fd868e667478a274a602021212196978"></a><br></dl><li>const <a class="el" href="a00131.html">SourceParams</a> & <a class="el" href="a00052.html#ea7d03b0ac4b102d3d45dc8a92a4e087">GetSourceParams</a> () const <dl class="el"><dd class="mdescRight">Return the source parameters of the current sequence. <a href="#ea7d03b0ac4b102d3d45dc8a92a4e087"></a><br></dl><li>const <a class="el" href="a00113.html">PictureParams</a> * <a class="el" href="a00052.html#f5cf16325f7b7e3a006e01a430025392">GetNextPictureParams</a> () const <dl class="el"><dd class="mdescRight">Return the picture parameters of the next picture to be decoded. <a href="#f5cf16325f7b7e3a006e01a430025392"></a><br></dl><li>const <a class="el" href="a00108.html">Picture</a> * <a class="el" href="a00052.html#4986f780c3c0250a815b4cf6a362ba9c">GetNextPicture</a> () const <dl class="el"><dd class="mdescRight">Return the decoded picture. <a href="#4986f780c3c0250a815b4cf6a362ba9c"></a><br></dl><li>const <a class="el" href="a00029.html">DecoderParams</a> & <a class="el" href="a00052.html#4bed26b4d7097b751e4bbaa7c0f0684f">GetDecoderParams</a> () const <dl class="el"><dd class="mdescRight">Return the coding parameters of the current sequence. <a href="#4bed26b4d7097b751e4bbaa7c0f0684f"></a><br></dl></ul> <h2>Private Member Functions</h2> <ul> <li><a class="el" href="a00052.html#3c7f9a1fbfae1bd25b077f475daedeb0">DiracParser</a> (const <a class="el" href="a00052.html">DiracParser</a> &dp) <dl class="el"><dd class="mdescRight">private body-less copy constructor <a href="#3c7f9a1fbfae1bd25b077f475daedeb0"></a><br></dl><li><a class="el" href="a00052.html">DiracParser</a> & <a class="el" href="a00052.html#9cec70d17edf747f48da6211bc069460">operator=</a> (const <a class="el" href="a00052.html">DiracParser</a> &dp) <dl class="el"><dd class="mdescRight">private body-less assignement constructor <a href="#9cec70d17edf747f48da6211bc069460"></a><br></dl></ul> <h2>Private Attributes</h2> <ul> <li><a class="el" href="a00176.html#e93428308fdd9a41c5c4e3b313660d5d">DecoderState</a> <a class="el" href="a00052.html#3b7c6419fc1b646d99e4351f0f83931b">m_state</a> <dl class="el"><dd class="mdescRight">Current state of parser. <a href="#3b7c6419fc1b646d99e4351f0f83931b"></a><br></dl><li><a class="el" href="a00176.html#e93428308fdd9a41c5c4e3b313660d5d">DecoderState</a> <a class="el" href="a00052.html#1f4c7a0f56ae5cb59831e62b1391ff58">m_next_state</a> <dl class="el"><dd class="mdescRight">Next state the parser will enter. <a href="#1f4c7a0f56ae5cb59831e62b1391ff58"></a><br></dl><li>int <a class="el" href="a00052.html#10efdf4c3b6918edd0183e1c965466a7">m_show_pnum</a> <dl class="el"><dd class="mdescRight">picture number of last picture decoded in display order <a href="#10efdf4c3b6918edd0183e1c965466a7"></a><br></dl><li><a class="el" href="a00129.html">SequenceDecompressor</a> * <a class="el" href="a00052.html#faa3a4f63210e187a0c7fc6fc6b7f9c0">m_decomp</a> <dl class="el"><dd class="mdescRight">Sequence decompressor object. <a href="#faa3a4f63210e187a0c7fc6fc6b7f9c0"></a><br></dl><li>bool <a class="el" href="a00052.html#0f9070c095aa3b0906f925c18369ca20">m_verbose</a> <dl class="el"><dd class="mdescRight">verbose flag <a href="#0f9070c095aa3b0906f925c18369ca20"></a><br></dl><li><a class="el" href="a00050.html">DiracByteStream</a> <a class="el" href="a00052.html#8cad80d690616a570504300bf3ff590a">m_dirac_byte_stream</a> <dl class="el"><dd class="mdescRight">Byte Stream Buffer. <a href="#8cad80d690616a570504300bf3ff590a"></a><br></dl></ul> <hr><a name="_details"></a><h2>Detailed Description</h2> This class is a wrapper around the <a class="el" href="a00129.html" title="Decompresses a sequence of pictures from a stream.">SequenceDecompressor</a> class. The Sequence Decompressor class needs a full picture of data to be available to decompress a picture successfully. So, the <a class="el" href="a00052.html" title="Dirac Stream Parser Class.">DiracParser</a> class uses the <a class="el" href="a00077.html" title="Input Stream Buffer Class.">InputStreamBuffer</a> class to store data until a chunk is available to be processed and then invokes the <a class="el" href="a00129.html" title="Decompresses a sequence of pictures from a stream.">SequenceDecompressor</a> functions to process data. A chunk of data can be a start of sequence, a picture or end of sequence data. The istream used to instantiate the <a class="el" href="a00129.html" title="Decompresses a sequence of pictures from a stream.">SequenceDecompressor</a> object is created using an <a class="el" href="a00077.html" title="Input Stream Buffer Class.">InputStreamBuffer</a> object which is manipulated the <a class="el" href="a00052.html" title="Dirac Stream Parser Class.">DiracParser</a>. This ensures that data is always available for processing by the <a class="el" href="a00129.html" title="Decompresses a sequence of pictures from a stream.">SequenceDecompressor</a> object. <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="6f7c4a1a37d33f382f21fcecba9bdda0"></a><!-- doxytag: member="dirac::DiracParser::DiracParser" ref="6f7c4a1a37d33f382f21fcecba9bdda0" args="(bool verbose=false)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">dirac::DiracParser::DiracParser </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"> <em>verbose</em> = <code>false</code> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Constructor takes <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>verbose</em> </td><td>boolean flag. Set to true for verbose output </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="6033eed95b56bfc667141e30c7019aa6"></a><!-- doxytag: member="dirac::DiracParser::~DiracParser" ref="6033eed95b56bfc667141e30c7019aa6" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">dirac::DiracParser::~DiracParser </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="3c7f9a1fbfae1bd25b077f475daedeb0"></a><!-- doxytag: member="dirac::DiracParser::DiracParser" ref="3c7f9a1fbfae1bd25b077f475daedeb0" args="(const DiracParser &dp)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">dirac::DiracParser::DiracParser </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00052.html">DiracParser</a> & </td> <td class="paramname"> <em>dp</em> </td> <td> ) </td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="4bed26b4d7097b751e4bbaa7c0f0684f"></a><!-- doxytag: member="dirac::DiracParser::GetDecoderParams" ref="4bed26b4d7097b751e4bbaa7c0f0684f" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="a00029.html">DecoderParams</a>& dirac::DiracParser::GetDecoderParams </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="4986f780c3c0250a815b4cf6a362ba9c"></a><!-- doxytag: member="dirac::DiracParser::GetNextPicture" ref="4986f780c3c0250a815b4cf6a362ba9c" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="a00108.html">Picture</a>* dirac::DiracParser::GetNextPicture </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="f5cf16325f7b7e3a006e01a430025392"></a><!-- doxytag: member="dirac::DiracParser::GetNextPictureParams" ref="f5cf16325f7b7e3a006e01a430025392" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="a00113.html">PictureParams</a>* dirac::DiracParser::GetNextPictureParams </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="fd868e667478a274a602021212196978"></a><!-- doxytag: member="dirac::DiracParser::GetParseParams" ref="fd868e667478a274a602021212196978" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="a00103.html">ParseParams</a>& dirac::DiracParser::GetParseParams </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="ea7d03b0ac4b102d3d45dc8a92a4e087"></a><!-- doxytag: member="dirac::DiracParser::GetSourceParams" ref="ea7d03b0ac4b102d3d45dc8a92a4e087" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="a00131.html">SourceParams</a>& dirac::DiracParser::GetSourceParams </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="9cec70d17edf747f48da6211bc069460"></a><!-- doxytag: member="dirac::DiracParser::operator=" ref="9cec70d17edf747f48da6211bc069460" args="(const DiracParser &dp)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00052.html">DiracParser</a>& dirac::DiracParser::operator= </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00052.html">DiracParser</a> & </td> <td class="paramname"> <em>dp</em> </td> <td> ) </td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="1e3e40e42cfb2b3726a9cb54f95e5452"></a><!-- doxytag: member="dirac::DiracParser::Parse" ref="1e3e40e42cfb2b3726a9cb54f95e5452" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00176.html#e93428308fdd9a41c5c4e3b313660d5d">DecoderState</a> dirac::DiracParser::Parse </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Parses the data in the input buffer. This function returns one of the following values <br> STATE_BUFFER : Not enough data in internal buffer to process <br> STATE_SEQUENCE : Start of sequence detected <br> STATE_PICTURE_AVAIL : Decoded picture available <br> STATE_SEQUENCE_END : End of sequence detected <br> STATE_INVALID : Invalid stream. Stop further processing </div> </div><p> <a class="anchor" name="689e785fa6f9a99ee44e7e6573c33c07"></a><!-- doxytag: member="dirac::DiracParser::SetBuffer" ref="689e785fa6f9a99ee44e7e6573c33c07" args="(char *start, char *end)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dirac::DiracParser::SetBuffer </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>start</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"> <em>end</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> SetBuffer takes <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>Start of input buffer </td></tr> <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>End of input buffer </td></tr> </table> </dl> </div> </div><p> <hr><h2>Member Data Documentation</h2> <a class="anchor" name="faa3a4f63210e187a0c7fc6fc6b7f9c0"></a><!-- doxytag: member="dirac::DiracParser::m_decomp" ref="faa3a4f63210e187a0c7fc6fc6b7f9c0" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00129.html">SequenceDecompressor</a>* <a class="el" href="a00052.html#faa3a4f63210e187a0c7fc6fc6b7f9c0">dirac::DiracParser::m_decomp</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="8cad80d690616a570504300bf3ff590a"></a><!-- doxytag: member="dirac::DiracParser::m_dirac_byte_stream" ref="8cad80d690616a570504300bf3ff590a" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00050.html">DiracByteStream</a> <a class="el" href="a00052.html#8cad80d690616a570504300bf3ff590a">dirac::DiracParser::m_dirac_byte_stream</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="1f4c7a0f56ae5cb59831e62b1391ff58"></a><!-- doxytag: member="dirac::DiracParser::m_next_state" ref="1f4c7a0f56ae5cb59831e62b1391ff58" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00176.html#e93428308fdd9a41c5c4e3b313660d5d">DecoderState</a> <a class="el" href="a00052.html#1f4c7a0f56ae5cb59831e62b1391ff58">dirac::DiracParser::m_next_state</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="10efdf4c3b6918edd0183e1c965466a7"></a><!-- doxytag: member="dirac::DiracParser::m_show_pnum" ref="10efdf4c3b6918edd0183e1c965466a7" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="a00052.html#10efdf4c3b6918edd0183e1c965466a7">dirac::DiracParser::m_show_pnum</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="3b7c6419fc1b646d99e4351f0f83931b"></a><!-- doxytag: member="dirac::DiracParser::m_state" ref="3b7c6419fc1b646d99e4351f0f83931b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00176.html#e93428308fdd9a41c5c4e3b313660d5d">DecoderState</a> <a class="el" href="a00052.html#3b7c6419fc1b646d99e4351f0f83931b">dirac::DiracParser::m_state</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="0f9070c095aa3b0906f925c18369ca20"></a><!-- doxytag: member="dirac::DiracParser::m_verbose" ref="0f9070c095aa3b0906f925c18369ca20" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="a00052.html#0f9070c095aa3b0906f925c18369ca20">dirac::DiracParser::m_verbose</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <hr>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="a00181_source.html">dirac_cppparser.h</a></ul> </div> <hr> <p align="center"><small> © 2004 British Broadcasting Corporation. Dirac code licensed under the <a href="http://www.mozilla.org/MPL/">Mozilla Public License (MPL) Version 1.1</a>.<br> HTML documentation generated by Dimitri van Heesch's excellent <a href="http://www.doxygen.org">Doxygen</a> tool. </small></p> </body> </html>