📄 umc_dv_decoder.h
字号:
/*// INTEL CORPORATION PROPRIETARY INFORMATION// This software is supplied under the terms of a license agreement or// nondisclosure agreement with Intel Corporation and may not be copied// or disclosed except in accordance with the terms of that agreement.// Copyright (c) 2003-2005 Intel Corporation. All Rights Reserved.////*/#ifndef __UMC_DV_DECODER_H#define __UMC_DV_DECODER_H#include "umc_video_decoder.h"#include "umc_color_space_converter.h"namespace UMC{class STORE_DV_SEGMENT_INFO;class THREAD_ID;class DVVideoDecoder : public VideoDecoder{public: // Default constructor DVVideoDecoder(); // Destructor ~DVVideoDecoder(); // Initialize DV decoder virtual Status Init (BaseCodecParams *init); // Close decoder virtual Status Close (); // Decode next frame virtual Status GetFrame (MediaData *pInData, MediaData *pOutData); // Get decoder performance virtual Status GetPerformance (double *perf); // Reset decoder into initial state virtual Status Reset (); // reset skip frame counter virtual Status ResetSkipCount (){return UMC_NOT_IMPLEMENTED;}; // increment skip frame counter virtual Status SkipVideoFrame (int){return UMC_NOT_IMPLEMENTED;}; // get skip frame counter statistic virtual vm_var32 GetSkipedFrame (){return 0;};protected: // Decode DC only void HuffmanDecodeSegment_DV_DC_only(vm_byte *lpbSource, vm_var16 *lpsDest); // Decompress DV segment virtual void DecompressSegment(vm_var32 nThreadNum); // initialize DV dequantize table int DVCreateADequantizeTable (); // Get real stream type vm_var32 GetStreamType(void *lpv); // Fill correspond dest & source pointers void InitializeStoreDVSDInfo(STORE_DV_SEGMENT_INFO &PasteInfo, vm_var32 i, vm_var32 k, vm_var32 ThreadNum); void InitializeStoreDV25Info(STORE_DV_SEGMENT_INFO &PasteInfo, vm_var32 i, vm_var32 k, vm_var32 ThreadNum); // Store uncompressed DV segment void StoreDVSDSegment(vm_var32 i, vm_var32 k, vm_var32 nThreadNum); void StoreDVSDSegment_2s(vm_var32 i, vm_var32 k, vm_var32 nThreadNum); void StoreDVSDSegment_4s(vm_var32 i, vm_var32 k, vm_var32 nThreadNum); void StoreDVSDSegment_8s(vm_var32 i, vm_var32 k, vm_var32 nThreadNum); void StoreDV25Segment(vm_var32 i, vm_var32 k, vm_var32 nThreadNum); void StoreDV25Segment_2s(vm_var32 i, vm_var32 k, vm_var32 nThreadNum); void StoreDV25Segment_4s(vm_var32 i, vm_var32 k, vm_var32 nThreadNum); void StoreDV25Segment_8s(vm_var32 i, vm_var32 k, vm_var32 nThreadNum); void (DVVideoDecoder::*StoreDVSegment)(vm_var32 i, vm_var32 k, vm_var32 nThreadNum); // (void (*)(vm_var32, vm_var32, vm_var32) pointer to store function vm_var32 m_nMaxNumberOfDIFSequences; // (vm_var32) maximum number of DIF sequences static int dvTable1[]; // DV decoding table one static int dvTable2[]; // DV decoding table two static vm_var32 _INTERNAL_DEZIGZAG_TABLE_0[] ; // zigzag table vm_var16 **m_ppShortBlocks; // (vm_var16 **) pointer to array of pointers to working data vm_byte *m_pShortBlocksNA; // (vm_byte) memory space for block data vm_var32 *m_pHuffTable; // pointer to huffman table vm_var16 *m_lpADequantizeTable; // pointer to dequantize table vm_var16 *m_lpBuffer2; // pointer to buffer vm_var32 *m_lpADequantizeLineTable; // pointer to line dequantize table vm_byte *m_lpvInternalFrameBufferNotAligned;// not aligned internal frame buffer vm_byte *m_lpvInternalFrameBuffer; // aligned internal frame buffer vm_byte *m_lpDestination; // (vm_byte *) pointer to destination buffer vm_byte *m_lpSource; // (vm_byte *) pointer to compressed frame vm_var32 m_nSystem; // (vm_var32) frame system type vm_var32 m_nStream; // (vm_var32) stream type bool m_bSecondPicture; // second picture desired bool m_bDCOnly; // decode only DC size_t m_nPitch; // pitch of internal buffer vm_var32 m_nNumberOfThreads; // (vm_var32) number of threads vm_event m_Quit; // (vm_event) event to quit vm_thread *m_lpThreads; // (vm_thread *) pointer to array of thread(s) vm_event *m_lpStartEvent; // (vm_event *) pointer to array of event(s) vm_event *m_lpStopEvent; // (vm_event *) pointer to array of event(s) THREAD_ID *m_lpThreadsID; // (THREAD_ID *) pointer to array of thread's ID // Additional thread working routine static unsigned int ThreadWorkingRoutine(void *lpv);};} // end namespace UMC#endif // __UMC_DV_DECODER_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -