首页 > 解决方案 > IAsyncReader::SyncRead 方法

问题描述

鉴于签名是:我如何解释返回的“填充我的缓冲区请求” S_FALSE(“我可以读取您请求的一些但不是全部数据”):

HRESULT SyncRead(LONGLONG llPosition, LONG     lLength, BYTE     *pBuffer);

具体来说,接口返回时缓冲区的有效字节数是S_FALSE多少?

我需要知道,对吧?也许我很愚蠢,但我没有看到它。

标签: c++windowsdirectshowmultimedia

解决方案


IAsyncReader::SyncRead是同步读取的捷径,无需考虑数据对齐。优化良好的过滤器通常进行Request异步WaitForNext读取,使用媒体样本传输数据,实际数据长度附加到这些样本。在这种快捷方法中,它们似乎使事情变得更容易,但只是丢失了输出参数。

好消息是您可以获取过滤器的源代码(或其近亲,因为自从作为示例发布源代码以来,库存过滤器可能已经发生了一些变化)并通过添加例如IAsyncReader2::SyncReadEx您返回丢失值的位置来扩展过滤器你需要它。


推荐阅读