首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

Filter(Source Filter)怎么读取 一个外部 buffer 中的数据

2012-03-29 
Filter(Source Filter)如何读取 一个外部 buffer 中的数据?Filter(Source Filter)如何读取 一个外部 buffe

Filter(Source Filter)如何读取 一个外部 buffer 中的数据?
Filter(Source Filter)如何读取 一个外部 buffer 中的数据?


 要播放buffer里的数据(从网络中收到的一包一包的), 自已写了一个Filter(Source Filter), 注册进了操作系统.

 自已写的Filter中如何取buffer中的数据呢?


 应用软件(CMedia包装类)按如下方式调用该Filter:

 hr = CoCreateInstance( CLSID_BouncingBall, NULL, 
CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void **) &pBall);
 hr = pGB->AddFilter(pBall, L"Bouncing Ball");

 请给一个思路,谢谢.


[解决办法]
BUFFER放到FillBuffer里面处理 这个把数据送到下一级
[解决办法]
怎么似曾相识呢,在哪见过这个帖子

是不是在transformer函数里面修改阿
[解决办法]
用过 共享memory

不知道有什么更好的可以推荐
[解决办法]
directshow最大特点是COM化,而COM的最大特点是接口化,怎么不用接口呢?接口函数,可用回调函数的方法取数据。
[解决办法]

探讨
引用:
BUFFER放到FillBuffer里面处理  这个把数据送到下一级


我的意思是:

原来ball(Filter)的数据buffer是自己生成的。

FillBuffer函数是Filter的函数。已经注册到系统了,不能改变了.
HRESULT CBallStream::FillBuffer(IMediaSample *pms)
{
    BYTE *pData;
    long lDataLen;

    pms->GetPointer(&pData);
    lDataLen = pms->GetSize();

    FillMemory(pData,0x80,lDataLen);//就这一句就可以
    ...........

    pms->SetSyncPoint(TRUE);
    return NOERROR;
} // FillBuffer


Filter已经注册进了系统。外部的程序调用Filter. 外部的程序获得的数据buffer, 如何给Filter?

是要另外写接口还是有其它什么方法?


[解决办法]
探讨

Filter 中是不是也可以把 对虚拟串口,对网络等的操作封装进去?

热点排行