是否有可能从IMFSourceReader或IMFMediaSource对象获取MF_SOURCE_READER_ASYNC_CALLBACK的值?

问题描述 投票:1回答:1

我使用MediaFoundation API从摄像机获取样本,并且遇到了这样的问题。

创建一个source reader object(例如,使用函数MFCreateSourceReaderFromMediaSource),我们可以在异步模式下使用IMFSourceReader。为此,我们必须在属性存储上设置MF_SOURCE_READER_ASYNC_CALLBACK属性。然后将此属性存储传递给MFCreateSourceReaderFromMediaSource函数。

    HRESULT hr = S_OK;
    IMFAttributes *pAttributes = NULL;

    hr = MFCreateAttributes(&pAttributes, 1);

    // set our callback
    hr = pAttributes->SetUnknown(MF_SOURCE_READER_ASYNC_CALLBACK, pCallback);

    // pass attributes and create source reader
    hr = MFCreateSourceReaderFromMediaSource(pMediaSource, pAttributes, ppSourceReader);

逻辑上,我们在创建IMFSourceReader时设置的参数应存储在其中的某个位置。

实际上是问题。是否可以获取我们在MFCreateSourceReaderFromMediaSource中传递的IMFSourceReader对象的IMFAttributes(尤其是MF_SOURCE_READER_ASYNC_CALLBACK属性的值)?

我试图通过QueryInterface获得它们

pSourceReader->QueryInterface(IID_IMFAttributes, (void**)&pAttributes);

但是返回值表明不支持该接口。

媒体源对象返回属性,但不包含必需的属性。我认为可以使用IMFSourceReader :: GetServiceForStream方法获得所需的信息,但我不知道需要什么服务。

谢谢您,我会很高兴。

我使用MediaFoundation API从摄像机获取样本,并且遇到了这样的问题。创建源阅读器对象(例如,使用MFCreateSourceReaderFromMediaSource函数),我们可以...

windows webcam video-capture ms-media-foundation
1个回答
0
投票

没有定义的方法来读取回调的值。

© www.soinside.com 2019 - 2024. All rights reserved.