IPropertyStore のフラグの値を変更しようとしています。ただし、フラグの値に関係なく、私のコードは同じように動作するようです。
IPropertyStore_Commit
これは、フラグを変更した後 にコードが呼び出されないためですか?
メソッドを呼び出そうとしましたが、0x80004001
「実装されていません」という意味のエラー コードが表示されました。したがって、私の質問の 2 番目の部分: なぜ実装されていないのですか?
より詳細には、オーディオ処理の一部に (JNI 経由で) WASAPI を利用する Java ソフトフォンに取り組んでいます。ネイティブ コードは C で記述されています。
最近 AES (Acoustic Echo Suppression) を有効にしたところ、AGC (Automatic Gain Control) も有効になっていることがわかりました。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);