2,新增“Apps”; 3,新增“Common”; 4,新增“FileList”; 5,新增“MediaX”; 6,新增“OpenSource”; 7,新增“Samples”; 8,新增“SoftwareBusinessLines”.
108 lines
2.2 KiB
C++
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;
|
|
}
|
|
}
|
|
}
|