<!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.4 --> <div class="nav"> <a class="el" href="a00226.html">dirac</a>::<a class="el" href="a00079.html">FrameSequenceCompressor</a></div> <h1>dirac::FrameSequenceCompressor Class Reference</h1><!-- doxytag: class="dirac::FrameSequenceCompressor" --><!-- doxytag: inherits="dirac::SequenceCompressor" -->Compresses a sequence of frames from a stream. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="a00290.html">seq_compress.h</a>></code> <p> <div class="dynheader"> Inheritance diagram for dirac::FrameSequenceCompressor:</div> <div class="dynsection"> <p><center><img src="a00079.png" usemap="#dirac::FrameSequenceCompressor_map" border="0" alt=""></center> <map name="dirac::FrameSequenceCompressor_map"> <area href="a00123.html" alt="dirac::SequenceCompressor" shape="rect" coords="0,0,207,24"> </map> </div> <p> <a href="a00417.html">List of all members.</a><h2>Public Member Functions</h2> <ul> <li><a class="el" href="a00079.html#e2f078c72ffdd4a68c4fc6c8f003944b">FrameSequenceCompressor</a> (<a class="el" href="a00132.html">StreamPicInput</a> *pin, <a class="el" href="a00066.html">EncoderParams</a> &encp, <a class="el" href="a00053.html">DiracByteStream</a> &dirac_byte_stream) <dl class="el"><dd class="mdescRight">Constructor. <a href="#e2f078c72ffdd4a68c4fc6c8f003944b"></a><br></dl><li>virtual <a class="el" href="a00079.html#96fc44689e0250dd9caf1b31e59584cf">~FrameSequenceCompressor</a> () <dl class="el"><dd class="mdescRight">Destructor. <a href="#96fc44689e0250dd9caf1b31e59584cf"></a><br></dl><li>virtual bool <a class="el" href="a00079.html#9ef2a53e2b2e99e8ca679e5d00f80cb8">LoadNextFrame</a> () <dl class="el"><dd class="mdescRight">Load data. <a href="#9ef2a53e2b2e99e8ca679e5d00f80cb8"></a><br></dl></ul> <h2>Protected Member Functions</h2> <ul> <li>virtual int <a class="el" href="a00079.html#2d7f038fccc2ac8c3bc6a39b250cf4e9">CodedToDisplay</a> (const int pnum) <dl class="el"><dd class="mdescRight">Uses the GOP parameters to convert frame numbers in coded order to display order. <a href="#2d7f038fccc2ac8c3bc6a39b250cf4e9"></a><br></dl><li>virtual bool <a class="el" href="a00079.html#af040f8d47a470a114efc67821ec0a56">IsNewAccessUnit</a> () <dl class="el"><dd class="mdescRight">Return true if we need to start a new access unit. Purely virtual. The child class will have to define it. <a href="#af040f8d47a470a114efc67821ec0a56"></a><br></dl><li>virtual void <a class="el" href="a00079.html#2b725f2e572de06d9ae14f0e8b98961d">RateControlCompress</a> (<a class="el" href="a00072.html">Frame</a> &my_frame, bool is_a_cut) <dl class="el"><dd class="mdescRight">Compress the frame using constant bit rate coding. Purely virtual. The child class will have to define it. <a href="#2b725f2e572de06d9ae14f0e8b98961d"></a><br></dl></ul> <hr><a name="_details"></a><h2>Detailed Description</h2> This class compresses a sequence of frames, frame by frame. It currently uses GOP parameters set in the encoder parameters in order to define the temporal prediction structure. A version to incorporate non-GOP structures is TBC. <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="e2f078c72ffdd4a68c4fc6c8f003944b"></a><!-- doxytag: member="dirac::FrameSequenceCompressor::FrameSequenceCompressor" ref="e2f078c72ffdd4a68c4fc6c8f003944b" args="(StreamPicInput *pin, EncoderParams &encp, DiracByteStream &dirac_byte_stream)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">dirac::FrameSequenceCompressor::FrameSequenceCompressor </td> <td>(</td> <td class="paramtype"><a class="el" href="a00132.html">StreamPicInput</a> * </td> <td class="paramname"> <em>pin</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00066.html">EncoderParams</a> & </td> <td class="paramname"> <em>encp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00053.html">DiracByteStream</a> & </td> <td class="paramname"> <em>dirac_byte_stream</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Creates a sequence compressor that compresses frames i.e. progressive data, and prepares to begin compressing with the first frame.Sets up frame padding in the picture input if necesary <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>pin</em> </td><td>an input stream containing a sequence of frames </td></tr> <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>parameters for the encoding process </td></tr> <tr><td valign="top"></td><td valign="top"><em>dirac_byte_stream</em> </td><td>Output destination for compressed data </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="96fc44689e0250dd9caf1b31e59584cf"></a><!-- doxytag: member="dirac::FrameSequenceCompressor::~FrameSequenceCompressor" ref="96fc44689e0250dd9caf1b31e59584cf" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual dirac::FrameSequenceCompressor::~FrameSequenceCompressor </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Destructor. Must delete IO objects created by constructor. </div> </div><p> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="9ef2a53e2b2e99e8ca679e5d00f80cb8"></a><!-- doxytag: member="dirac::FrameSequenceCompressor::LoadNextFrame" ref="9ef2a53e2b2e99e8ca679e5d00f80cb8" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual bool dirac::FrameSequenceCompressor::LoadNextFrame </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Load one frame of data into the Sequence Compressor. Sets m_all_done to true if no more data is available to be loaded. <dl class="return" compact><dt><b>Returns:</b></dt><dd>true - if frame load succeeded. false - otherwise </dd></dl> <p>Implements <a class="el" href="a00123.html#1f5e923097c7d60711ed9a4ba47587f3">dirac::SequenceCompressor</a>.</p> </div> </div><p> <a class="anchor" name="2d7f038fccc2ac8c3bc6a39b250cf4e9"></a><!-- doxytag: member="dirac::FrameSequenceCompressor::CodedToDisplay" ref="2d7f038fccc2ac8c3bc6a39b250cf4e9" args="(const int pnum)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual int dirac::FrameSequenceCompressor::CodedToDisplay </td> <td>(</td> <td class="paramtype">const int </td> <td class="paramname"> <em>pnum</em> </td> <td> ) </td> <td width="100%"><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Uses the GOP parameters to convert frame numbers in coded order to display order. Pure virtual function. The child class will have to define it. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>pnum</em> </td><td>the picture number in coded order </td></tr> </table> </dl> <p>Implements <a class="el" href="a00123.html#d8ea19c5badfdadc2abb8609ab050685">dirac::SequenceCompressor</a>.</p> </div> </div><p> <a class="anchor" name="af040f8d47a470a114efc67821ec0a56"></a><!-- doxytag: member="dirac::FrameSequenceCompressor::IsNewAccessUnit" ref="af040f8d47a470a114efc67821ec0a56" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual bool dirac::FrameSequenceCompressor::IsNewAccessUnit </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Implements <a class="el" href="a00123.html#ed2a2d719b8ee5ca4caceb102a745ba0">dirac::SequenceCompressor</a>.</p> </div> </div><p> <a class="anchor" name="2b725f2e572de06d9ae14f0e8b98961d"></a><!-- doxytag: member="dirac::FrameSequenceCompressor::RateControlCompress" ref="2b725f2e572de06d9ae14f0e8b98961d" args="(Frame &my_frame, bool is_a_cut)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void dirac::FrameSequenceCompressor::RateControlCompress </td> <td>(</td> <td class="paramtype"><a class="el" href="a00072.html">Frame</a> & </td> <td class="paramname"> <em>my_frame</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>is_a_cut</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Implements <a class="el" href="a00123.html#395376b774b83560ce4a6c0b15969957">dirac::SequenceCompressor</a>.</p> </div> </div><p> <hr>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="a00290.html">seq_compress.h</a></ul> <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>