00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __MXCPC_FRAMEWISEMXPEGSCANTOJPEGCONVERTERIPP_H__
00018 #define __MXCPC_FRAMEWISEMXPEGSCANTOJPEGCONVERTERIPP_H__
00019
00020
00021
00022 #define MXCPC_FRAMEWISEMXPEGSCANTOJPEGCONVERTERIPP_BITSTREAM_BUFFSIZE 512
00023
00024
00025
00026 #include <mxcpcFramewiseMxPEGScanDecoder.h>
00027 #include <mxcpc_mxpeg_namespace.h>
00028
00029 #include <ippj.h>
00030
00031 #include <cstdio>
00032
00033
00034
00035 class mxcpcMxPEGScanToJPEGConverterBackEnd;
00036
00037
00038
00041
00046 class mxcpcFramewiseMxPEGScanToJPEGConverterIPP : public mxcpcFramewiseMxPEGScanDecoder {
00047
00048 private:
00049 static const unsigned char ZigZag_StoreMap[64];
00050
00051 private:
00052 IppiDecodeHuffmanSpec *HuffmanTree_Y_DC,
00053 *HuffmanTree_Y_AC,
00054 *HuffmanTree_UV_DC,
00055 *HuffmanTree_UV_AC;
00056 Ipp16u QuantizationTable_Y[64],
00057 QuantizationTable_UV[64];
00058 Ipp16s *CoeffBuffer;
00059 int TileNumX, TileNumY;
00060
00061 IppiEncodeHuffmanSpec *HuffmanEncodeSpec_Y_DC,
00062 *HuffmanEncodeSpec_Y_AC,
00063 *HuffmanEncodeSpec_UV_DC,
00064 *HuffmanEncodeSpec_UV_AC;
00065 std::FILE *OutStream;
00066 mxcpc_mxpeg::APP0 APP0_Block;
00067 mxcpc_mxpeg::SOF0 SOF0_Block;
00068 mxcpc_mxpeg::SOS SOS_Block;
00069 int FramesProcessed;
00070 mxcpcMxPEGScanToJPEGConverterBackEnd *ConverterBackEnd;
00071
00072 public:
00074 mxcpcFramewiseMxPEGScanToJPEGConverterIPP(mxcpcMxPEGScanToJPEGConverterBackEnd *backend);
00075 ~mxcpcFramewiseMxPEGScanToJPEGConverterIPP();
00076
00077 public:
00079 void setYQuantizationTable(unsigned char *data_bytes);
00081 void setUVQuantizationTable(unsigned char *data_bytes);
00083 void performScanSweep(mxcpcFramewiseMxPEGDecoder::UndecodedFrameDescriptor
00084 *frame_descriptor);
00085 };
00086
00087
00088
00089 #endif // __MXCPC_FRAMEWISEMXPEGSCANTOJPEGCONVERTERIPP_H__