1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
/*############################################################################
# Copyright (C) 2005 Intel Corporation
#
# SPDX-License-Identifier: MIT
############################################################################*/
#ifndef __SYSMEM_ALLOCATOR_H__
#define __SYSMEM_ALLOCATOR_H__
#include <stdlib.h>
#include <vector>
#include "base_allocator.h"
struct sBuffer {
mfxU32 id;
mfxU32 nbytes;
mfxU16 type;
};
struct sFrame {
mfxU32 id;
mfxFrameInfo info;
};
struct SysMemAllocatorParams : mfxAllocatorParams {
SysMemAllocatorParams() : mfxAllocatorParams(), pBufferAllocator(NULL) {}
MFXBufferAllocator* pBufferAllocator;
};
class SysMemFrameAllocator : public BaseFrameAllocator {
public:
SysMemFrameAllocator();
virtual ~SysMemFrameAllocator();
virtual mfxStatus Init(mfxAllocatorParams* pParams);
virtual mfxStatus Close();
virtual mfxStatus LockFrame(mfxMemId mid, mfxFrameData* ptr);
virtual mfxStatus UnlockFrame(mfxMemId mid, mfxFrameData* ptr);
virtual mfxStatus GetFrameHDL(mfxMemId mid, mfxHDL* handle);
protected:
virtual mfxStatus CheckRequestType(mfxFrameAllocRequest* request);
virtual mfxStatus ReleaseResponse(mfxFrameAllocResponse* response);
virtual mfxStatus AllocImpl(mfxFrameAllocRequest* request, mfxFrameAllocResponse* response);
virtual mfxStatus ReallocImpl(mfxMemId midIn,
const mfxFrameInfo* info,
mfxU16 memType,
mfxMemId* midOut);
virtual mfxStatus Create3DLutMemory(mfxMemId memId, const char* lut3d_file_name) {
return MFX_ERR_NONE;
}
virtual mfxStatus Release3DLutMemory(mfxMemId memId) {
return MFX_ERR_NONE;
}
MFXBufferAllocator* m_pBufferAllocator;
bool m_bOwnBufferAllocator;
std::vector<mfxFrameAllocResponse*> m_vResp;
mfxMemId* GetMidHolder(mfxMemId mid);
};
class SysMemBufferAllocator : public MFXBufferAllocator {
public:
SysMemBufferAllocator();
virtual ~SysMemBufferAllocator();
virtual mfxStatus AllocBuffer(mfxU32 nbytes, mfxU16 type, mfxMemId* mid);
virtual mfxStatus LockBuffer(mfxMemId mid, mfxU8** ptr);
virtual mfxStatus UnlockBuffer(mfxMemId mid);
virtual mfxStatus FreeBuffer(mfxMemId mid);
};
#endif // __SYSMEM_ALLOCATOR_H__
|