directshow ALLOCATOR_PROPERTIES结构解释?

msgsnd 2007-11-07 11:36:01
typedef struct _AllocatorProperties {
long cBuffers;
long cbBuffer;
long cbAlign;
long cbPrefix;
} ALLOCATOR_PROPERTIES;
谁能具体说明一下long cbAlign; long cbPrefix;的意义?
...全文
413 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zx0319 2012-07-11
  • 打赏
  • 举报
回复
还是有点用处的。尤其是Buffer对齐的那个地方,仅仅是为了提高传输的效率吗?
momoFresh 2007-11-12
  • 打赏
  • 举报
回复
如果下游filter也是你自己写的话,就可以用prefix,你可以通过sample buffer将参数传递下去,下游filter计算好buffer地址就可以。
如buffer中前10bytes存储的是数据,之后才是真正的sample data,那么下游filter就要知道这块buffer的分布情况。
msgsnd 2007-11-11
  • 打赏
  • 举报
回复
解释的不错,
但就是没见过具体的应用。

也就是设置了prefix,有什么用处?
在Mpeg4中有吗,是否可以用来传递VO等参数。
xjfox 2007-11-09
  • 打赏
  • 举报
回复
楼上说的对
没有特殊要求的话,一般cbAlign就是1,cbPrefix是0
momoFresh 2007-11-07
  • 打赏
  • 举报
回复
cbAlign
Alignment of the buffer; buffer start will be aligned on a multiple of this value.
cbPrefix
Each buffer is preceded by a prefix of this many bytes.


sdk上说的挺清楚啊,cbAlign就是buffer地址要求多少byte对齐。
cbPrefix 就是每块buffer前面有多少前缀空间。

需要注意的是下面:

Since the buffer pointer returned by IMediaSample::GetPointer points to the area immediately following the prefix, the cbPrefix address (the value returned by IMediaSample::GetPointer minus cbPrefix) should be aligned on an address that is a multiple of cbAlign bytes.

2,543

社区成员

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

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