我正在尝试更改 IPropertyStore 中标志的值。但是,无论标志的值如何,我的代码的行为似乎都是相同的。
IPropertyStore_Commit
这是因为我的代码在更改标志后 没有调用吗?
我确实尝试调用该方法,但是我得到了一个错误代码0x80004001
,意思是“未实现”。因此,我的问题的第二部分:为什么不实施?
更详细地说,我正在开发一个 Java 软电话,它使用 WASAPI(通过 JNI)进行一些音频处理。本机代码是用 C 编写的。
最近启用了 AES(声学回声抑制),我发现 AGC(自动增益控制)也启用了。我试图通过在 IPropertyStore 对象上设置 MFPKEY_WMAAECMA_FEATR_AGC 键来禁用 AGC。但是,无论我将值设置为什么都没有区别。
相关代码片段如下:
// Obtain the property store
void *pvObject;
HRESULT hr = IMediaObject_QueryInterface((IMediaObject *) thiz, &iid_, &pvObject);
// Do some checking that the store is valid...
// Set the value of the AGC key:
PROPVARIANT propvar = ...
IPropertyStore_SetValue((IPropertyStore *)pvObject, (REFPROPERTYKEY) key, &propvar);
// Call commit - fails, with 0x80004001:
HRESULT hr = IPropertyStore_Commit((IPropertyStore *)pvObject);