为什么output IMediaSample的缓存大小比input的实际数据量还小?

bourbaki 2009-08-20 03:30:32
刚学DirectShow,要写一个transform filter。编译SDK下的EZRGB24例程,成功。调试的时候,发现一个assert错误:


HRESULT CEZrgb24::Copy(IMediaSample *pSource, IMediaSample *pDest) const
{
...
// Copy the sample data
BYTE *pSourceBuffer, *pDestBuffer;
long lSourceSize = pSource->GetActualDataLength();

#ifdef DEBUG
long lDestSize = pDest->GetSize();
ASSERT(lDestSize >= lSourceSize);
#endif

...
}


我很奇怪,为什么output IMediaSample的缓存大小比input的实际数据量还小?哪位高手能告诉我怎么回事?

-------------------------------------

哦,找到问题了,搞定。不知道算不算是ms的这个例程的bug。
...全文
123 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bourbaki 2009-08-20
  • 打赏
  • 举报
回复
CEZrgb24::CheckTransform也只对RGB24返回ok
bourbaki 2009-08-20
  • 打赏
  • 举报
回复
哦,我发现是这样的,input的subtype是RGB32,output的是RGB24.但是我奇怪的是CEZrgb24::CheckInputType仅仅对RGB24返回OK啊!
bourbaki 2009-08-20
  • 打赏
  • 举报
回复
Copy被Transform方法调用

2,553

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧