Files
CodeRepository/Apps/App_GeneralDataInjectionApp/Common/IO/DeviceStream/GDeviceReader.cpp
chenzhen 222dda1e43 1,新增“App_ThermalImageSystem”;
2,新增“Apps”;
3,新增“Common”;
4,新增“FileList”;
5,新增“MediaX”;
6,新增“OpenSource”;
7,新增“Samples”;
8,新增“SoftwareBusinessLines”.
2026-02-14 23:03:23 +08:00

108 lines
2.2 KiB
C++

#include "GDeviceReader.h"
GDeviceReader::GDeviceReader()
{
m_bInit = false;
// 视频采集相关参数
{
m_eDeviceType = eGDT_SDI;
m_strDeviceName = "DeckLink SDI";
m_nChannel = 0;
memset(&m_varFrameFormat, 0, sizeof(GFrameFormat) );
m_pCallBack = nullptr;
m_pOwner = nullptr;
m_pCaptureCard = nullptr;
}
}
GDeviceReader::~GDeviceReader()
{
Stop();
}
void GDeviceReader::Init(eGDeviceType eDeviceType, const QString& strDeviceName, int nChannel, GFrameFormat varFrameFormat, pCallBack_CaptureData pCallBack, void* pOwner)
{
//
m_eDeviceType = eDeviceType;
m_strDeviceName = strDeviceName;
m_nChannel = nChannel;
m_varFrameFormat = varFrameFormat;
m_pCallBack = pCallBack;
m_pOwner = pOwner;
//
m_bInit = true;
}
bool GDeviceReader::Start()
{
Stop();
// CameraLink
if(eGDT_CameraLink == m_eDeviceType)
{
return true;
}
// SDI
if(eGDT_SDI == m_eDeviceType)
{
CDeckLinkManager::SearchDeckLinkCard();
CDeckLinkManager* pDeckLinkManager = new CDeckLinkManager();
m_pCaptureCard = pDeckLinkManager;
/*
QString strInputCardName = QString("%1 %2")
.arg(m_strDeviceName)
.arg(m_nChannel);
*/
QString strInputCardName = m_strDeviceName;
if(!pDeckLinkManager->InitVideoInput(strInputCardName.toStdString().c_str(), m_nChannel, HD_FRAME_WIDTH, HD_FRAME_HEIGHT, bmdModeHD1080p25, m_pCallBack, m_pOwner) )
{
return false;
}
if(!pDeckLinkManager->StartStreams() )
{
return false;
}
return true;
}
return false;
}
void GDeviceReader::Stop()
{
if(!m_bInit)
{
return;
}
// CameraLink
if(eGDT_CameraLink == m_eDeviceType)
{
}
// SDI
if(eGDT_SDI == m_eDeviceType)
{
CDeckLinkManager* pDeckLinkManager = reinterpret_cast<CDeckLinkManager*>(m_pCaptureCard);
if(nullptr != pDeckLinkManager)
{
delete pDeckLinkManager;
pDeckLinkManager = nullptr;
m_pCaptureCard = nullptr;
}
}
}