<!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="a00069.html">FieldSequenceCompressor</a> </div> <div class="contents"> <h1>dirac::FieldSequenceCompressor Class Reference</h1><!-- doxytag: class="dirac::FieldSequenceCompressor" --><!-- doxytag: inherits="dirac::SequenceCompressor" -->Compresses a sequence of fields from a stream. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="a00225_source.html">seq_compress.h</a>></code> <p> <div class="dynheader"> Inheritance diagram for dirac::FieldSequenceCompressor:</div> <div class="dynsection"> <p><center><img src="a00069.png" usemap="#dirac::FieldSequenceCompressor_map" border="0" alt=""></center> <map name="dirac::FieldSequenceCompressor_map"> <area href="a00128.html" alt="dirac::SequenceCompressor" shape="rect" coords="0,0,199,24"> </map> </div> <p> <a href="a00360.html">List of all members.</a><h2>Public Member Functions</h2> <ul> <li><a class="el" href="a00069.html#d5b9584d6ead449ff03efefa4e030c36">FieldSequenceCompressor</a> (<a class="el" href="a00138.html">StreamPicInput</a> *pin, <a class="el" href="a00063.html">EncoderParams</a> &encp, <a class="el" href="a00050.html">DiracByteStream</a> &dirac_byte_stream) <dl class="el"><dd class="mdescRight">Constructor. <a href="#d5b9584d6ead449ff03efefa4e030c36"></a><br></dl><li>virtual <a class="el" href="a00069.html#47aa1a308bfe82ec66ad7d9fd222a2f1">~FieldSequenceCompressor</a> () <dl class="el"><dd class="mdescRight">Destructor. <a href="#47aa1a308bfe82ec66ad7d9fd222a2f1"></a><br></dl><li>virtual bool <a class="el" href="a00069.html#a839b60a4ba21097b7aca7bebdedcdf8">LoadNextFrame</a> () <dl class="el"><dd class="mdescRight">Load data. <a href="#a839b60a4ba21097b7aca7bebdedcdf8"></a><br></dl><li>virtual void <a class="el" href="a00069.html#2268cbfcb38ed9ff79192e05495e4a59">SetPicTypeAndRefs</a> (<a class="el" href="a00113.html">PictureParams</a> &pparams) <dl class="el"><dd class="mdescRight">Set up the appropriate prediction parameters for a picture. <a href="#2268cbfcb38ed9ff79192e05495e4a59"></a><br></dl></ul> <h2>Protected Member Functions</h2> <ul> <li>virtual int <a class="el" href="a00069.html#33bc4fa8ccaecb3f6080c074f2f40bd3">CodedToDisplay</a> (const int pnum) <dl class="el"><dd class="mdescRight">Uses the GOP parameters to convert picture numbers in coded order to display order. <a href="#33bc4fa8ccaecb3f6080c074f2f40bd3"></a><br></dl><li>virtual void <a class="el" href="a00069.html#af02d1f700aa805a86d6f8340f789f7c">UpdateCBRModel</a> (<a class="el" href="a00064.html">EncPicture</a> &my_picture, const <a class="el" href="a00110.html">PictureByteIO</a> *picture_byteio) <dl class="el"><dd class="mdescRight">Update the CBR model based on the data we've compressed. <a href="#af02d1f700aa805a86d6f8340f789f7c"></a><br></dl></ul> <h2>Private Member Functions</h2> <ul> <li>void <a class="el" href="a00069.html#47ce302420cbf999e3b809fa22fbe467">PreMotionEstmationFilter</a> (<a class="el" href="a00107.html">PicArray</a> &comp) <dl class="el"><dd class="mdescRight">Filter fields. <a href="#47ce302420cbf999e3b809fa22fbe467"></a><br></dl></ul> <h2>Private Attributes</h2> <ul> <li>int <a class="el" href="a00069.html#2b20c5d73e8621a0a6c55a0c88bb10f9">m_field1_bytes</a> <li>int <a class="el" href="a00069.html#9e6a4bd8368b8c8769796ae7b41c79c1">m_field2_bytes</a> </ul> <hr><a name="_details"></a><h2>Detailed Description</h2> This class compresses a sequence of fields, field by field. 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="d5b9584d6ead449ff03efefa4e030c36"></a><!-- doxytag: member="dirac::FieldSequenceCompressor::FieldSequenceCompressor" ref="d5b9584d6ead449ff03efefa4e030c36" args="(StreamPicInput *pin, EncoderParams &encp, DiracByteStream &dirac_byte_stream)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">dirac::FieldSequenceCompressor::FieldSequenceCompressor </td> <td>(</td> <td class="paramtype"><a class="el" href="a00138.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="a00063.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="a00050.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></td> </tr> </table> </div> <div class="memdoc"> <p> Creates a sequence compressor that compresses fields i.e. interlaced data, and prepares to begin compressing with the first field. <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="47aa1a308bfe82ec66ad7d9fd222a2f1"></a><!-- doxytag: member="dirac::FieldSequenceCompressor::~FieldSequenceCompressor" ref="47aa1a308bfe82ec66ad7d9fd222a2f1" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual dirac::FieldSequenceCompressor::~FieldSequenceCompressor </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [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="33bc4fa8ccaecb3f6080c074f2f40bd3"></a><!-- doxytag: member="dirac::FieldSequenceCompressor::CodedToDisplay" ref="33bc4fa8ccaecb3f6080c074f2f40bd3" args="(const int pnum)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual int dirac::FieldSequenceCompressor::CodedToDisplay </td> <td>(</td> <td class="paramtype">const int </td> <td class="paramname"> <em>pnum</em> </td> <td> ) </td> <td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Uses the GOP parameters to convert picture 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="a00128.html#d8ea19c5badfdadc2abb8609ab050685">dirac::SequenceCompressor</a>.</p> </div> </div><p> <a class="anchor" name="a839b60a4ba21097b7aca7bebdedcdf8"></a><!-- doxytag: member="dirac::FieldSequenceCompressor::LoadNextFrame" ref="a839b60a4ba21097b7aca7bebdedcdf8" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual bool dirac::FieldSequenceCompressor::LoadNextFrame </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Load one frame i.e. two fields 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 both fields load succeeded. false - otherwise </dd></dl> <p>Implements <a class="el" href="a00128.html#1f5e923097c7d60711ed9a4ba47587f3">dirac::SequenceCompressor</a>.</p> </div> </div><p> <a class="anchor" name="47ce302420cbf999e3b809fa22fbe467"></a><!-- doxytag: member="dirac::FieldSequenceCompressor::PreMotionEstmationFilter" ref="47ce302420cbf999e3b809fa22fbe467" args="(PicArray &comp)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dirac::FieldSequenceCompressor::PreMotionEstmationFilter </td> <td>(</td> <td class="paramtype"><a class="el" href="a00107.html">PicArray</a> & </td> <td class="paramname"> <em>comp</em> </td> <td> ) </td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Low pass filter the components in the fields used in Motion Estimation so that ME works better. Using a 1/4 1/2 1/4 filter </div> </div><p> <a class="anchor" name="2268cbfcb38ed9ff79192e05495e4a59"></a><!-- doxytag: member="dirac::FieldSequenceCompressor::SetPicTypeAndRefs" ref="2268cbfcb38ed9ff79192e05495e4a59" args="(PictureParams &pparams)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void dirac::FieldSequenceCompressor::SetPicTypeAndRefs </td> <td>(</td> <td class="paramtype"><a class="el" href="a00113.html">PictureParams</a> & </td> <td class="paramname"> <em>pparams</em> </td> <td> ) </td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Implements <a class="el" href="a00128.html#8c4590043a330da09a7fb8fcae8674f3">dirac::SequenceCompressor</a>.</p> </div> </div><p> <a class="anchor" name="af02d1f700aa805a86d6f8340f789f7c"></a><!-- doxytag: member="dirac::FieldSequenceCompressor::UpdateCBRModel" ref="af02d1f700aa805a86d6f8340f789f7c" args="(EncPicture &my_picture, const PictureByteIO *picture_byteio)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void dirac::FieldSequenceCompressor::UpdateCBRModel </td> <td>(</td> <td class="paramtype"><a class="el" href="a00064.html">EncPicture</a> & </td> <td class="paramname"> <em>my_picture</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="a00110.html">PictureByteIO</a> * </td> <td class="paramname"> <em>picture_byteio</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Implements <a class="el" href="a00128.html#6c0d621c1b708a10f01aa3b30e1e76b2">dirac::SequenceCompressor</a>.</p> </div> </div><p> <hr><h2>Member Data Documentation</h2> <a class="anchor" name="2b20c5d73e8621a0a6c55a0c88bb10f9"></a><!-- doxytag: member="dirac::FieldSequenceCompressor::m_field1_bytes" ref="2b20c5d73e8621a0a6c55a0c88bb10f9" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="a00069.html#2b20c5d73e8621a0a6c55a0c88bb10f9">dirac::FieldSequenceCompressor::m_field1_bytes</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="9e6a4bd8368b8c8769796ae7b41c79c1"></a><!-- doxytag: member="dirac::FieldSequenceCompressor::m_field2_bytes" ref="9e6a4bd8368b8c8769796ae7b41c79c1" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="a00069.html#9e6a4bd8368b8c8769796ae7b41c79c1">dirac::FieldSequenceCompressor::m_field2_bytes</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="a00225_source.html">seq_compress.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>