2,新增“Apps”; 3,新增“Common”; 4,新增“FileList”; 5,新增“MediaX”; 6,新增“OpenSource”; 7,新增“Samples”; 8,新增“SoftwareBusinessLines”.
133 lines
2.5 KiB
C++
133 lines
2.5 KiB
C++
#include "GDeviceWriter.h"
|
|
|
|
GDeviceWriter::GDeviceWriter()
|
|
{
|
|
m_bInit = false;
|
|
|
|
// 视频采集相关参数
|
|
{
|
|
m_eDeviceType = eGDT_SDI;
|
|
m_strDeviceName = "DeckLink SDI";
|
|
m_nChannel = 0;
|
|
memset(&m_varFrameFormat, 0, sizeof(GFrameFormat) );
|
|
|
|
m_pOutputCard = nullptr;
|
|
}
|
|
}
|
|
|
|
GDeviceWriter::~GDeviceWriter()
|
|
{
|
|
Stop();
|
|
}
|
|
|
|
void GDeviceWriter::Init(eGDeviceType eDeviceType, const QString& strDeviceName, int nChannel, GFrameFormat varFrameFormat)
|
|
{
|
|
//
|
|
m_eDeviceType = eDeviceType;
|
|
m_strDeviceName = strDeviceName;
|
|
m_nChannel = nChannel;
|
|
m_varFrameFormat = varFrameFormat;
|
|
|
|
//
|
|
m_bInit = true;
|
|
}
|
|
|
|
bool GDeviceWriter::Start()
|
|
{
|
|
Stop();
|
|
|
|
// CameraLink
|
|
if(eGDT_CameraLink == m_eDeviceType)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
// SDI
|
|
if(eGDT_SDI == m_eDeviceType)
|
|
{
|
|
CDeckLinkManager::SearchDeckLinkCard();
|
|
|
|
CDeckLinkManager* pDeckLinkManager = new CDeckLinkManager();
|
|
m_pOutputCard = pDeckLinkManager;
|
|
|
|
/*
|
|
QString strInputCardName = QString("%1 %2")
|
|
.arg(m_strDeviceName)
|
|
.arg(m_nChannel);
|
|
*/
|
|
|
|
QString strInputCardName = m_strDeviceName;
|
|
|
|
if(!pDeckLinkManager->InitVideoOutput(strInputCardName.toStdString().c_str(), m_nChannel, HD_FRAME_WIDTH, HD_FRAME_HEIGHT, bmdModeHD1080p25) )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if(!pDeckLinkManager->StartStreams() )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
void GDeviceWriter::Stop()
|
|
{
|
|
if(!m_bInit)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// CameraLink
|
|
if(eGDT_CameraLink == m_eDeviceType)
|
|
{
|
|
|
|
}
|
|
|
|
// SDI
|
|
if(eGDT_SDI == m_eDeviceType)
|
|
{
|
|
CDeckLinkManager* pDeckLinkManager = reinterpret_cast<CDeckLinkManager*>(m_pOutputCard);
|
|
|
|
if(nullptr != pDeckLinkManager)
|
|
{
|
|
delete pDeckLinkManager;
|
|
pDeckLinkManager = nullptr;
|
|
|
|
m_pOutputCard = nullptr;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool GDeviceWriter::WriteData(byte* pFrameData)
|
|
{
|
|
if(!m_bInit)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// CameraLink
|
|
if(eGDT_CameraLink == m_eDeviceType)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
// SDI
|
|
if(eGDT_SDI == m_eDeviceType)
|
|
{
|
|
CDeckLinkManager* pDeckLinkManager = reinterpret_cast<CDeckLinkManager*>(m_pOutputCard);
|
|
|
|
if(nullptr != pDeckLinkManager)
|
|
{
|
|
bool bRs = pDeckLinkManager->OutputData(pFrameData);
|
|
|
|
return bRs;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|