Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

mxcpcFramewiseMxPEGScanDecoderSoftwareOnly Class Reference
[mxcpc_core (Core Module - MxPEG Decoding Infrastructure)]

Software-only decoding module to be used with the framewise (frame prefetching) MxPEG decoder facility implemented by mxcpcFramewiseMxPEGDecoder. More...

#include <mxcpcFramewiseMxPEGScanDecoderSoftwareOnly.h>

Inheritance diagram for mxcpcFramewiseMxPEGScanDecoderSoftwareOnly:

mxcpcFramewiseMxPEGScanDecoder List of all members.

Public Member Functions

 mxcpcFramewiseMxPEGScanDecoderSoftwareOnly ()
 ~mxcpcFramewiseMxPEGScanDecoderSoftwareOnly ()
const char * getAccelerationTypeString (void)
 (Re)implemented.
void setYQuantizationTable (unsigned char *data_bytes)
 (Re)implemented.
void setUVQuantizationTable (unsigned char *data_bytes)
 (Re)implemented.
void performScanSweep (mxcpcFramewiseMxPEGDecoder::UndecodedFrameDescriptor *frame_descriptor)
 (Re)implemented.

Private Member Functions

bool consumeScanBit (void)
 We need this often in inner loops of performScanSweep(), so we request inline substitution and hope the compiler sufficiently rocks.
const mxcpcHuffmanTree::NodeconsumeHuffmanCodeword (const mxcpcHuffmanTree::Node *current_huffman_node)
 We need this often in inner loops of performScanSweep(), so we request inline substitution and hope the compiler sufficiently rocks.
bool consumeAdditionalBits (int n)
 We need this often in inner loops of performScanSweep(), so we request inline substitution and hope the compiler sufficiently rocks.
void idctrow (short *blk)
 Stolen.
void idctcol (short *blk)
 Stolen.
void idct (short *blk)
 Stolen.

Private Attributes

mxcpcHuffmanTreeHuffmanTree_Y_DC
mxcpcHuffmanTreeHuffmanTree_Y_AC
mxcpcHuffmanTreeHuffmanTree_UV_DC
mxcpcHuffmanTreeHuffmanTree_UV_AC
mxcpc::s16 QuantizationTable_Y [64]
mxcpc::s16 QuantizationTable_UV [64]
unsigned char * CurrentScanByte
unsigned char ScanMask
int ScanBytesLeft
int CoeffInAdditionalBits

Static Private Attributes

static const int ZigZagMap [64]
static short iclip [1024]
static short * iclp

Detailed Description

Software-only decoding module to be used with the framewise (frame prefetching) MxPEG decoder facility implemented by mxcpcFramewiseMxPEGDecoder.

Through this portable scan decoder implementation we establish baseline MxPEG decoding on all three major target platforms in a fashion entirely independent of additional support libraries like Intel's IPP. However, where available the performance benefits of such support libraries can be exploited by plugging into the mxcpcFramewiseMxPEGDecoder another scan decoder implementation, for example the mxcpcFramewiseMxPEGScanDecoderIPP.

Author:
Kai Hergenroether

Definition at line 51 of file mxcpcFramewiseMxPEGScanDecoderSoftwareOnly.h.


Member Function Documentation

bool mxcpcFramewiseMxPEGScanDecoderSoftwareOnly::consumeAdditionalBits int  n  )  [inline, private]
 

We need this often in inner loops of performScanSweep(), so we request inline substitution and hope the compiler sufficiently rocks.

Specify as argument the number n >= 1 of additional bits to read.

The coefficient represented by the read bits will be stored to the class member variable CoeffInAdditionalBits.

The method internally checks for ScanBytesLeft > 0.

It returns false on success, and true if all scan bytes were cosumed before a valid codeword was detected.

Definition at line 190 of file mxcpcFramewiseMxPEGScanDecoderSoftwareOnly.h.

References CoeffInAdditionalBits, consumeScanBit(), and ScanBytesLeft.

const mxcpcHuffmanTree ::Node* mxcpcFramewiseMxPEGScanDecoderSoftwareOnly::consumeHuffmanCodeword const mxcpcHuffmanTree::Node current_huffman_node  )  [inline, private]
 

We need this often in inner loops of performScanSweep(), so we request inline substitution and hope the compiler sufficiently rocks.

Specify as argument the root of the Huffman tree to be used for codeword recognition.

Internally checks for ScanBytesLeft > 0.

Returns the Huffman leaf node corresponding to the codeword just consumed or 0 in case of failure. Failure conditions can be

  • an invalid bitstring was encountered
  • all scan bytes were cosumed before a valid codeword was detected

Definition at line 149 of file mxcpcFramewiseMxPEGScanDecoderSoftwareOnly.h.

References mxcpcHuffmanTree::Node::Child0, mxcpcHuffmanTree::Node::Child1, consumeScanBit(), mxcpcHuffmanTree::Node::IsLeaf, and ScanBytesLeft.

bool mxcpcFramewiseMxPEGScanDecoderSoftwareOnly::consumeScanBit void   )  [inline, private]
 

We need this often in inner loops of performScanSweep(), so we request inline substitution and hope the compiler sufficiently rocks.

Only to be called if ScanBytesLeft > 0.

Returns whether or not the bit just consumed was set.

Definition at line 96 of file mxcpcFramewiseMxPEGScanDecoderSoftwareOnly.h.

References CurrentScanByte, ScanBytesLeft, ScanMask, and mxcpc::sendStatusMsg().

Referenced by consumeAdditionalBits(), and consumeHuffmanCodeword().


Member Data Documentation

const int mxcpcFramewiseMxPEGScanDecoderSoftwareOnly::ZigZagMap [static, private]
 

Initial value:

 {  0,  1,  8, 16,  9,  2,  3, 10, 
                               17, 24, 32, 25, 18, 11,  4,  5,
                               12, 19, 26, 33, 40, 48, 41, 34, 
                               27, 20, 13,  6,  7, 14, 21, 28,
                               35, 42, 49, 56, 57, 50, 43, 36,
                               29, 22, 15, 23, 30, 37, 44, 51, 
                               58, 59, 52, 45, 38, 31, 39, 46, 
                               53, 60, 61, 54, 47, 55, 62, 63 
                             }

Definition at line 54 of file mxcpcFramewiseMxPEGScanDecoderSoftwareOnly.h.


The documentation for this class was generated from the following files:
Generated on Fri Jan 20 13:33:35 2006 for mxcpc by  doxygen 1.4.4