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

📄 tgtbuff.h

📁 相机传输图像程序源代码 拜耳模式(RAW格式文件)与RGB图像数据互相转换函数库
💻 H
字号:

#ifndef ___TGTBUFF_H
#define ___TGTBUFF_H

#include <vmem.h>
#include <lvmem.h>
#include <lvvxd.h>
#include <dsydef.h>

#include <lvpackon.h>

/*
#define TgtBuffer_First   0x00

#define TgtBuffer_WinVga  0x00
#define TgtBuffer_Vga_1   0x01
#define TgtBuffer_Vga_2   0x02
#define TgtBuffer_Vga_3   0x03
#define TgtBuffer_CPU     0x04
#define TgtBuffer_RPS     0x05
#define TgtBuffer_LMK     0x06

#define TgtBuffer_Last    0x07
*/



class LvTargetBuffer {
    private:
    protected:
        LvMem *Memory;
        LvMemory *Mem;
        LvVxdBufferInfo Info;
        HDEVICE TheBoard;
        U8BIT *hCpu;
        U8BIT *hMVFCpu;
        U8BIT BufferId;
        U8BIT DeviceNr;
        int SubGrb;
        #ifdef __WIN3264__
        HANDLE hOvEvent;
        OVERLAPPED Ov;
        ULONG *Irp;
        ULONG TgtBufferMaxIrp;
        HANDLE hMemFile;
        #endif
        #ifdef __UNIX__
        FILE *hFile;
        #endif
        LVRAWPTR _TheDMABuffer;

        #ifdef __UNIX__
        U32BIT *PageMap;
        U32BIT *PageMap4Mb;
        #else
        LVRAWPTR *PageMap;
        LVRAWPTR *PageMap4Mb;
        #endif
        int     NrPageMap4Mb;

        U32BIT PageTableSize;
        U32BIT PageTableOffset;
        U32BIT DefaultSize;
        U32BIT MemType;
        U32BIT BigUserBufferChunk;

        void GetDeviceNr(void);
        void GetFMBParam(LvGrabberNode *TheGrb, U8BIT aBufferId, int UseBufferId=TgtBuffer_Invalid);
        void UnlockBuffer(void);

    public:
        LvTargetBuffer(HDEVICE aBoard=HANDLE_INVALID, LvGrabberNode *TheGrb=NULL, int aSubGrb=0);
        LvTargetBuffer(int BufferId, HDEVICE aBoard=HANDLE_INVALID, LvGrabberNode *TheGrb=NULL, int aSubGrb=0, int UseBufferId=TgtBuffer_Invalid);
        ~LvTargetBuffer(void);
        void SetBufferId(int BufferId, int UseBufferId=TgtBuffer_Invalid);
        LVSTATUS AllocBuffer(U32BIT NewSize, U32BIT *OldSize=NULL, U32BIT *AllocatedSize=NULL, BOOL Adjust=TRUE);

        #ifdef __UNIX64__
        unsigned long GetHandle(void)     { return Info.Handle; }
        U8BIT _Huge_ *GetX86Pointer(void);
        LVRAWPTR GetPhysicalAddress(void) { return Info.Physical; }
        LVRAWPTR GetLinearAddress(void)   { return Info.Linear; }
        unsigned long GetSize(void)       { return Info.Size; }
        unsigned long GetPageTableLinear(void) { return Info.LinPageTable; }
        BOOL   IsContiguos(void)        { return Info.IsContiguos; }
        #else
        U32BIT GetHandle(void)          { return Info.Handle; }
        U8BIT _Huge_ *GetX86Pointer(void);
        U32BIT GetPhysicalAddress(void) { return Info.Physical; }
        U32BIT GetLinearAddress(void)   { return Info.Linear; }
        U32BIT GetSize(void)            { return Info.Size; }
        U32BIT GetPageTableLinear(void) { return Info.LinPageTable; }
        BOOL   IsContiguos(void)        { return Info.IsContiguos; }
        #endif

        U32BIT GetPageMap4Mb(int Which);
        U32BIT GetPhysicalAddressCam4M(void);

        LVSTATUS GetBufferOwnership(HANDLE *hMem, U32BIT *Size=0, U32BIT *DataOffset=0);
        LVSTATUS ReleaseBuffer(HANDLE hMem);

    };

#include <lvpackof.h>

#endif


⌨️ 快捷键说明

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