ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FilterInfor()
    Media_Dev 2008. 3. 26. 18:15
    반응형

    This can show the list of connected filter by Graph Manager in DirectShow.

    void TraceFilterInfo()
    {
     IEnumFilters *pIEnumFilters = NULL;
     HRESULT hRes = S_OK;
     hRes = m_pGraph->EnumFilters(&pIEnumFilters);
     
     IBaseFilter *pIBaseFilter_Enum = NULL;
     CLSID clsid;
     FILTER_INFO filter_info;
     ULONG ulHowManyPins = 0;

     while (hRes ==S_OK)
     {
      hRes = pIEnumFilters->Next(1, &pIBaseFilter_Enum, 0);
      pIBaseFilter_Enum->GetClassID(&clsid);
      pIBaseFilter_Enum->QueryFilterInfo(&filter_info);

      TRACE(L"%s\n", filter_info.achName);
     
      if(hRes == S_OK)
      {
       //When we find one   ... loop through it's pins.
       HRESULT hRes2 = S_OK;
       IEnumPins *pIEnumPins = NULL;
       IPin *pIPin = NULL;

       PIN_DIRECTION pin_direction;
       bool locHasOutputs = false;
       hRes2 = pIBaseFilter_Enum->EnumPins(&pIEnumPins);

       if(hRes2 == S_OK)
       {
        while(hRes2 == S_OK)
        {
         //Loop through the pins.
         hRes2 = pIEnumPins->Next(1, &pIPin, &ulHowManyPins);
         TRACE(L"--- Pin Numbers : %d, ", ulHowManyPins);

         if(hRes2 == S_OK)
         {
          pIPin->QueryDirection(&pin_direction);
          PIN_INFO pin_info;
          pIPin->QueryPinInfo(&pin_info);

          TRACE(L"%s\n", pin_info.achName);

          if (pin_direction == PINDIR_OUTPUT)
          {
           //Has an output pin... can't be a renderer, break out of the pin loop.
           locHasOutputs = true;
           break;
          }
         }
         else
          TRACE(L"\n");
        }
       
        if(!locHasOutputs)
        {
         //Renderer filter here. Remove it from the graph.
          // hRes2 = m_pGraph->RemoveFilter(pIBaseFilter_Enum);
         //Break out of the filter loop.
         //break;
        }
       }
      }
     
      pIBaseFilter_Enum->Release();
     }

     pIEnumFilters->Release();
    }

    반응형

    'Media_Dev' 카테고리의 다른 글

    wave  (0) 2008.08.16
    BITMAPINFO  (0) 2008.06.10
    코덱종류  (0) 2008.04.07
    Simple Directmedia Layer  (0) 2008.03.18
    AVI RIFF file Reference  (0) 2008.03.18

    댓글

Designed by Tistory.