VideoCodec/Modules/StreamCoding/HuffmanEntropyDecoder.h
#ifndef HUFFMANENTROPYDECODER_H_
#define HUFFMANENTROPYDECODER_H_
#include "../../Data/Constants.h"
#include "../../Data/FrameHeader.h"
#include "../../Data/MPEGVLCTables.h"
#include "../../Data/StreamHeader.h"
#include "../../Data/PictureInfo.h"
#include "../../Decoder/BinaryStreamReader.h"
#include "../Module.h"
namespace VideoCodec
{
class HuffmanEntropyDecoder : public VideoCodec::Module
{
public:
HuffmanEntropyDecoder();
virtual ~HuffmanEntropyDecoder();
ConfigurationStatus Configure(ConfigurationElement* configuration);
void DecodeFrame(BinaryStreamReader* reader, StreamHeader* streamHeader, FrameHeader* frameHeader, PictureInfo* picture);
private:
void decodeInterFrame(BinaryStreamReader* reader, StreamHeader* streamHeader, FrameHeader* frameHeader, PictureInfo* picture);
UnsignedByte decodeMBType(BinaryStreamReader* reader, bool pPicture);
void zigZagScan(short int* blockData, short int* output);
SignedByte decodeMVComponent(BinaryStreamReader* reader);
};
}
#endif /*HUFFMANENTROPYDECODER_H_*/