自己写的编码DMO,在InternalProcessInput()函数中,pBuffer->GetBufferAndLength()得到的buffer长度为什么是0?
紫去秋来 2008-09-24 10:22:19
我正在用 DShow 写一个转码程序,思路是先 Render 一个媒体文件,然后用自己写的两个 DMO 替换 Filter 链路的最后一级 Video Render Filter 和 Audio Render Filter,然后将 DMO 的输出 Pin 连上一个 Dump Filter (Write File),现在碰到的问题是: 在 Video Encode DMO 中的 InternalProcessInput 函数中取上一级 Filter 传入的数据,调用 pBuffer->GetBufferAndLength(&m_pData, &m_nData) 取得的 Buffer 长度竟然是 0,而在 Audio Encode DMO 中调用 IMediaBuffer 的 相同函数:GetBufferAndLength() 得到的长度是对的。
为什么 Video Encode DMO 中得到的上级 Filter 传来的数据长度是 0? 有没有人知道?高分求教。
补充一点:因为只做转码,所以 Filter Graph 已经设为不使用参考时钟。