#include "StdAfx.h" #include "FrameBufferController.h" CFrameBufferController::CFrameBufferController(void) { m_nCameraIdx = 0; } CFrameBufferController::~CFrameBufferController(void) { } void CFrameBufferController::ClearBuffer() { m_MultiBuffer.ClearBuffer(); } BOOL CFrameBufferController::CreateBuffer(int iCamera, int nFrameWidth, int nFrameHeight, int nFrameCnt, int nBufferCnt) { m_nCameraIdx = iCamera; m_MultiBuffer.CreateMultiBuff(nBufferCnt, nFrameWidth, nFrameHeight, nFrameCnt); return TRUE; } LPBYTE CFrameBufferController::GetFrameBuferHeader(int iScan, int iFrame) { if (CheckProcFrame(iFrame) == FALSE) { return NULL; } if (m_MultiBuffer.GetBuffCount() <= iScan) { return NULL; } return m_MultiBuffer.GetMultiBuffData(iScan) + (ULONG_PTR)(m_MultiBuffer.GetFrameSize()*iFrame); } BOOL CFrameBufferController::SetFrameBuffer(int iScan, int iFrame, LPBYTE lpBuffer) { LPBYTE lpSource = GetFrameBuferHeader(iScan, iFrame); if (lpSource == NULL) return FALSE; memcpy(lpSource, lpBuffer, m_MultiBuffer.GetFrameWidth() * m_MultiBuffer.GetFrameHeight()); return TRUE; } BOOL CFrameBufferController::CheckProcFrame(int iFrame) { if (iFrame < 0 || iFrame >= m_MultiBuffer.GetFrameCount()) return FALSE; return TRUE; } LPBYTE CFrameBufferController::GetFrameHeaderLine(int iScan, int nLine /*= 0*/) { LPBYTE lpBuf = NULL; int iStartLineInOrgFrame = nLine / GetFrameHeight(); int iStartLinePositionInOrgFrame = nLine % GetFrameHeight(); lpBuf = GetFrameBuferHeader(iScan, iStartLineInOrgFrame); if (lpBuf == NULL) return NULL; return lpBuf + (GetFrameWidth()*iStartLinePositionInOrgFrame); } LPBYTE CFrameBufferController::GetFrameHeader_Line_FromStartLine(int iScan, int iFrame, int nStartLine /*= 0*/) { LPBYTE lpBuf = NULL; int iStartLineInOrgFrame = nStartLine / GetFrameHeight(); int iStartLinePositionInOrgFrame = nStartLine % GetFrameHeight(); //LogDisplayMessage(_T("GetFrameHeader_Line_FromStartLine: Frame %d, start line %d, org Frame %d, position in org frame %d"), iFrame, nStartLine, iStartLineInOrgFrame, iStartLinePositionInOrgFrame); //Sleep(10); lpBuf = GetFrameBuferHeader(iScan, iStartLineInOrgFrame); if (lpBuf == NULL) return NULL; return lpBuf + (GetFrameWidth()*iStartLinePositionInOrgFrame); }