⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 umc_cyclic_buffer.h

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 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_CYCLIC_BUFFER_H#define __UMC_CYCLIC_BUFFER_H#include "umc_media_buffer.h"#include "umc_splitter.h"#include "vm_thread.h"#include "umc_event.h"#include "umc_mutex.h"namespace UMC{class SampleInfo{public:    double m_dTime;                 // (double) PTS of media sample    double m_dTimeAux;              // (double) Additional time stamp, it can be interpretet as DTS of end time    size_t m_lDataSize;             // (size_t) media sample size    size_t m_lBufferSize;           // (size_t) media sample buffer size    vm_byte *m_pbData;              // (vm_byte *) pointer to data    SampleInfo *m_pNext;            // (SampleInfo *) pointer to next media sample info};class LinearBuffer : public MediaBuffer{    DYNAMIC_CAST_DECL(LinearBuffer, MediaBuffer)public:    // Default constructor    LinearBuffer(void);    // Destructor    virtual ~LinearBuffer(void);    // Initialize buffer    virtual Status Init(MediaReceiverParams* init);    // Lock input buffer    virtual Status LockInputBuffer(MediaData* in);    // Unlock input buffer    virtual Status UnLockInputBuffer(MediaData* in, Status StreamStatus = UMC_OK);    // Lock output buffer    virtual Status LockOutputBuffer(MediaData* out);    // Unlock output buffer    virtual Status UnLockOutputBuffer(MediaData* out);    // Stop buffer    virtual Status Stop(void);    // Release object    virtual Status Close(void);    // Reset object    virtual Status Reset(void);protected:    vm_mutex m_synchro;             // (vm_mutex) synchro object    vm_byte *m_pbAllocatedBuffer;   // (vm_byte *) pointer to allocated unaligned buffer    size_t m_lAllocatedBufferSize;  // (size_t) size of allocated buffer    vm_byte *m_pbBuffer;            // (vm_byte *) pointer to allocated buffer    size_t m_lBufferSize;           // (size_t) size of using buffer    vm_byte *m_pbFree;              // (vm_byte *) pointer to free space    size_t m_lFreeSize;             // (size_t) size of free space    size_t m_lInputSize;            // (size_t) size of input data potion    vm_byte *m_pbUsed;              // (vm_byte *) pointer to used space    size_t m_lUsedSize;             // (size_t) size of used space    size_t m_lDummySize;            // (size_t) size of dummy size at end of buffer    size_t m_lOutputSize;           // (size_t) size of output data potion    SampleInfo *m_pSamples;         // (SampleInfo *) queue of filled sample info    SampleInfo *m_pFreeSampleInfo;  // (SampleInfo *) queue of free sample info structs    bool m_bEndOfStream;            // (bool) end of stream reached    bool m_bQuit;                   // (bool) end of stream reached and buffer is empty    MediaBufferParams m_Params;     // (MediaBufferParams) parameters of current buffer};class SampleBuffer : public MediaBuffer{    DYNAMIC_CAST_DECL(SampleBuffer, MediaBuffer)public:    // Default constructor    SampleBuffer(void);    // Destructor    virtual ~SampleBuffer(void);    // Initialize buffer    virtual Status Init(MediaReceiverParams* init);    // Lock input buffer    virtual Status LockInputBuffer(MediaData* in);    // Unlock input buffer    virtual Status UnLockInputBuffer(MediaData* in, Status StreamStatus = UMC_OK);    // Lock output buffer    virtual Status LockOutputBuffer(MediaData* out);    // Unlock output buffer    virtual Status UnLockOutputBuffer(MediaData* out);    // Stop buffer    virtual Status Stop(void);    // Release object    virtual Status Close(void);    // Reset object    virtual Status Reset(void);protected:    vm_mutex m_synchro;             // (vm_mutex) synchro object    vm_byte *m_pbAllocatedBuffer;   // (vm_byte *) pointer to allocated unaligned buffer    size_t m_lAllocatedBufferSize;  // (size_t) size of allocated buffer    vm_byte *m_pbBuffer;            // (vm_byte *) pointer to allocated buffer    size_t m_lBufferSize;           // (size_t) size of using buffer    vm_byte *m_pbFree;              // (vm_byte *) pointer to free space    size_t m_lFreeSize;             // (size_t) size of free space    size_t m_lInputSize;            // (size_t) size of input data potion    vm_byte *m_pbUsed;              // (vm_byte *) pointer to used space    size_t m_lUsedSize;             // (size_t) size of used space    size_t m_lOutputSize;           // (size_t) size of output data potion    SampleInfo *m_pSamples;         // (SampleInfo *) queue of filled sample info    bool m_bEndOfStream;            // (bool) end of stream reached    bool m_bQuit;                   // (bool) end of stream reached and buffer is empty    MediaBufferParams m_Params;     // (MediaBufferParams) parameters of current buffer};class VideoBufferParams : public MediaBufferParams{    DYNAMIC_CAST_DECL(VideoBufferParams, MediaBufferParams)public:    // Default constructor    VideoBufferParams(void);    // Destructor    virtual ~VideoBufferParams(void);    vm_var32 m_lIPDistance;         // (vm_var32) distance beetwen I,P & B frames    vm_var32 m_lGOPSize;            // (vm_var32) size of GOP};class VideoBuffer : public SampleBuffer{    DYNAMIC_CAST_DECL(VideoBuffer, SampleBuffer)public:    // Default constructor    VideoBuffer(void);    // Destructor    virtual ~VideoBuffer(void);    // Initialize buffer    virtual Status Init(MediaReceiverParams* init);    // Lock input buffer    virtual Status LockInputBuffer(MediaData* in);    // Unlock input buffer    virtual Status UnLockInputBuffer(MediaData* in, Status StreamStatus = UMC_OK);    // Lock output buffer    virtual Status LockOutputBuffer(MediaData* out);    // Unlock output buffer    virtual Status UnLockOutputBuffer(MediaData* out);    // Release object    virtual Status Close(void);protected:    // Built help pattern    bool BuildPattern(void);    vm_var32 m_lFrameNumber;        // (vm_var32) number of current frame    vm_var32 m_lIPDistance;         // (vm_var32) distance beetwen I,P & P frame(s)    vm_var32 m_lGOPSize;            // (vm_var32) size of GOP    FrameType *m_pEncPattern;       // (FrameType *) pointer to array of encoding pattern    size_t m_nImageSize;            // (size_t) size of frame(s)};} // namespace UMC#endif /* __UMC_CYCLIC_BUFFER_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -