HRESULT SetTVFormat(IltmmCapture *pCapture)
{
HRESULT hr;
long lSupportFormats, lTVFormat, lLines;
VARIANT_BOOL vLocked, vVCRLocked, vEnable;
IltmmAnalogVideoDecoder* pAnVidDec = NULL;
hr = pCapture->get_AnalogVideoDecoder(&pAnVidDec);
if (FAILED(hr))
return hr;
hr = pAnVidDec->get_AvailableTVFormats(&lSupportFormats);
if (FAILED(hr))
{
pAnVidDec->Release();
pAnVidDec = NULL;
return hr;
}
hr = pAnVidDec->get_TVFormat(&lTVFormat);
if (FAILED(hr))
{
pAnVidDec->Release();
pAnVidDec = NULL;
return hr;
}
if ((lTVFormat != AnalogVideo_NTSC_M ) && (lSupportFormats & AnalogVideo_NTSC_M))
{
hr = pAnVidDec->put_TVFormat(AnalogVideo_NTSC_M);
if (FAILED(hr))
{
pAnVidDec->Release();
pAnVidDec = NULL;
return hr;
}
}
hr = pAnVidDec->get_HorizontalLocked(&vLocked);
if (FAILED(hr))
{
pAnVidDec->Release();
pAnVidDec = NULL;
return hr;
}
hr = pAnVidDec->get_VCRHorizontalLocking(&vVCRLocked);
if (FAILED(hr))
{
pAnVidDec->Release();
pAnVidDec = NULL;
return hr;
}
if (vVCRLocked == VARIANT_FALSE)
{
hr = pAnVidDec->put_VCRHorizontalLocking(VARIANT_TRUE);
if (FAILED(hr))
{
pAnVidDec->Release();
pAnVidDec = NULL;
return hr;
}
}
hr = pAnVidDec->get_NumberOfLines(&lLines);
if (FAILED(hr))
{
pAnVidDec->Release();
pAnVidDec = NULL;
return hr;
}
hr = pAnVidDec->get_OutputEnable(&vEnable);
if (FAILED(hr))
{
pAnVidDec->Release();
pAnVidDec = NULL;
return hr;
}
if (vEnable == VARIANT_FALSE)
{
hr = pAnVidDec->put_OutputEnable(VARIANT_TRUE);
if (FAILED(hr))
{
pAnVidDec->Release();
pAnVidDec = NULL;
return hr;
}
}
pAnVidDec->Release();
pAnVidDec = NULL;
return S_OK;
}
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET