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

mxcpcFramewiseMxPEGScanDecoderSoftwareOnly Class Reference
[mxcpc (MOBOTIX Cross Platform Client Library)]

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:

Inheritance graph
[legend]
Collaboration diagram for mxcpcFramewiseMxPEGScanDecoderSoftwareOnly:

Collaboration graph
[legend]
List of all members.

Public Member Functions

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::Node * consumeHuffmanCodeword (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 48 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 186 of file mxcpcFramewiseMxPEGScanDecoderSoftwareOnly.h.

References consumeScanBit().

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 145 of file mxcpcFramewiseMxPEGScanDecoderSoftwareOnly.h.

References consumeScanBit().

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 92 of file mxcpcFramewiseMxPEGScanDecoderSoftwareOnly.h.

References mxcpc::sendStatusMsg().

Referenced by consumeAdditionalBits(), and consumeHuffmanCodeword().

void mxcpcFramewiseMxPEGScanDecoderSoftwareOnly::performScanSweep mxcpcFramewiseMxPEGDecoder::UndecodedFrameDescriptor *  frame_descriptor  )  [virtual]
 

(Re)implemented.

Implements mxcpcFramewiseMxPEGScanDecoder.

Definition at line 133 of file mxcpcFramewiseMxPEGScanDecoderSoftwareOnly.cpp.

References mxcpc::clamp_int(), mxcpc::clamp_s16(), and mxcpc::sendStatusMsg().


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 28 of file mxcpcFramewiseMxPEGScanDecoderSoftwareOnly.cpp.


The documentation for this class was generated from the following files:
Generated on Mon Aug 15 03:39:48 2005 for mxcpc by  doxygen 1.4.2-20050421