我用directshow通过请求IAMAudioInputMixer接口,控制麦克风音量,为啥函数put_MixLevel()老是返回E_NOTIMPL?哪位大哥知道,请教一下
附代码:
IPin *inPin;
IAMAudioInputMixer *AudioMixer;
        IBaseFilter *pCap;//捕捉filter         hr=GetInputPin(&inPin,"麦克风音量");//请求输入pin接口
 if(SUCCEEDED(hr))
   {
   hr=inPin->QueryInterface(IID_IAMAudioInputMixer,(void **)&AudioMixer);
   if(SUCCEEDED(hr))
   AudioMixer->put_Enable(1);
           }
         hr=AudioMixer->put_MixLevel(0.5);//(出问题处)HRESULT CAudioCardSet::GetInputPin(IPin **ppPin,const char *str)
{
    CComPtr< IEnumPins > pEnum;
    *ppPin = NULL;
    
    if (!pCap)
       return E_POINTER;    HRESULT hr = pCap->EnumPins(&pEnum);
    if(FAILED(hr)) 
        return hr;
    ULONG ulFound;
int num;
char *achname;
    IPin *pPin;
    PIN_INFO pininfo;
    while(S_OK == pEnum->Next(1, &pPin, &ulFound))
    {
        pPin->QueryPinInfo(&pininfo);
num=WideCharToMultiByte(CP_OEMCP,NULL,pininfo.achName,-1,NULL,0,NULL,FALSE);
        achname= new char[num];
        WideCharToMultiByte (CP_OEMCP,NULL,pininfo.achName,-1,achname,num,NULL,FALSE);
if(!strcmp(achname,str)&&pininfo.dir==PINDIR_INPUT)
        {
                *ppPin = pPin;  // Return the pin's interface
                hr = S_OK;      // Found requested pin, so clear error
                break;
        }         pPin->Release();
    }     return hr;
}