IltmmAnalogVideoDecoder::get_AvailableTVFormats Example for C

HRESULT IltmmAnalogVideoDecoder_get_AvailableTVFormats_Example (IltmmCapture* pCapture)
{
   HRESULT        hr;
   long           lSupportFormats, lTVFormat, lLines; 
   VARIANT_BOOL   vLocked, vVCRLocked, vEnable; 
   IltmmAnalogVideoDecoder* pAnVidDec = NULL;

   hr = IltmmCapture_get_AnalogVideoDecoder(pCapture, &pAnVidDec); 
   if (FAILED(hr)) 
   return hr; 

   hr = IltmmAnalogVideoDecoder_get_AvailableTVFormats(pAnVidDec, &lSupportFormats); 
   if (FAILED(hr)) 
   {
      IltmmAnalogVideoDecoder_Release(pAnVidDec); 
      pAnVidDec = NULL; 
      return hr; 
   }

   hr = IltmmAnalogVideoDecoder_get_TVFormat(pAnVidDec, &lTVFormat); 
   if (FAILED(hr)) 
   {
      IltmmAnalogVideoDecoder_Release(pAnVidDec); 
      pAnVidDec = NULL; 
      return hr; 
   }

   if ((lTVFormat != AnalogVideo_NTSC_M ) && (lSupportFormats & AnalogVideo_NTSC_M)) 
   {
      hr = IltmmAnalogVideoDecoder_put_TVFormat(pAnVidDec, AnalogVideo_NTSC_M); 
      if (FAILED(hr)) 
      {
         IltmmAnalogVideoDecoder_Release(pAnVidDec); 
         pAnVidDec = NULL; 
         return hr; 
      }
   }
   hr = IltmmAnalogVideoDecoder_get_HorizontalLocked(pAnVidDec, &vLocked); 
   if (FAILED(hr)) 
   {
      IltmmAnalogVideoDecoder_Release(pAnVidDec); 
      pAnVidDec = NULL; 
      return hr; 
   }

   hr = IltmmAnalogVideoDecoder_get_VCRHorizontalLocking(pAnVidDec, &vVCRLocked); 
   if (FAILED(hr)) 
   {
      IltmmAnalogVideoDecoder_Release(pAnVidDec); 
      pAnVidDec = NULL; 
      return hr; 
   }
   if (vVCRLocked == VARIANT_FALSE) 
   {
      hr = IltmmAnalogVideoDecoder_put_VCRHorizontalLocking(pAnVidDec, VARIANT_TRUE); 
      if (FAILED(hr)) 
      {
         IltmmAnalogVideoDecoder_Release(pAnVidDec); 
         pAnVidDec = NULL; 
         return hr; 
      }
   }

   hr = IltmmAnalogVideoDecoder_get_NumberOfLines(pAnVidDec, &lLines); 
   if (FAILED(hr)) 
   {
      IltmmAnalogVideoDecoder_Release(pAnVidDec); 
      pAnVidDec = NULL; 
      return hr; 
   }

   hr = IltmmAnalogVideoDecoder_get_OutputEnable (pAnVidDec, &vEnable); 
   if (FAILED(hr)) 
   {
      IltmmAnalogVideoDecoder_Release(pAnVidDec); 
      pAnVidDec = NULL; 
      return hr; 
   }
   if (vEnable == VARIANT_FALSE) 
   {
      hr = IltmmAnalogVideoDecoder_put_OutputEnable (pAnVidDec, VARIANT_TRUE); 
      if (FAILED(hr)) 
      {
         IltmmAnalogVideoDecoder_Release(pAnVidDec); 
         pAnVidDec = NULL; 
         return hr; 
      }
   }

   IltmmAnalogVideoDecoder_Release(pAnVidDec); 
   pAnVidDec = NULL; 

   return S_OK;
}