是否可以从 IMFSourceReader 或 IMFMediaSource 对象获取 MF_SOURCE_READER_ASYNC_CALLBACK 的值?
Is it possible to get the value of MF_SOURCE_READER_ASYNC_CALLBACK from IMFSourceReader or IMFMediaSource object?
我使用 MediaFoundation API 从相机中获取样本并遇到这样的问题。
С创建一个 source reader object (for example, with the function 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);
但 return 值表示不支持该接口。
媒体源对象 returns 属性但不包含必要的属性。
我认为使用 IMFSourceReader::GetServiceForStream 方法可以得到我想要的东西,但我不知道需要什么服务。
提前致谢,我很乐意提供任何帮助。
没有定义读取回调值的方法。
我使用 MediaFoundation API 从相机中获取样本并遇到这样的问题。
С创建一个 source reader object (for example, with the function 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);
但 return 值表示不支持该接口。
媒体源对象 returns 属性但不包含必要的属性。 我认为使用 IMFSourceReader::GetServiceForStream 方法可以得到我想要的东西,但我不知道需要什么服务。
提前致谢,我很乐意提供任何帮助。
没有定义读取回调值的方法。