IltmmAnalogVideoDecoder::get_AvailableTVFormats Example for C++

HRESULT CheckTVFormats(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;
}