初学DirectShow,写了个TransInPlace Filter,想给每帧数据里添加一个矩形框,Tranform应该怎么写,请各位帮帮忙,谢谢了HRESULT CDrawRectFilter::Transform(IMediaSample *pSample)
{
long size = pSample->GetActualDataLength();
BYTE *pBuffer = new BYTE[size];
pSample->GetPointer(&pBuffer);
//这里对数据改写之后应该怎么操作,怎么往下送Sanple return NO_ERROR;
}

解决方案 »

  1.   

    pBuffer 指向的就是图像数据了
    长度由 pSample->GetSize() 返回
    格式可由GetMediaType取得
    IMediaSample 就是你要操作的数据,所有要使用的信里面都有了,你只需要改变pBuffer 里的数据,其它SDK 已经处理了
    D9SDK 里有这样的示例
    DXSDK\Samples\C++\DirectShow\Filters\RGBFilters
      

  2.   

    pBuffer 指向的就是图像数据了 
    长度由 pSample->GetSize() 返回 
    格式可由GetMediaType取得 
    IMediaSample 就是你要操作的数据,所有要使用的信里面都有了,你只需要改变pBuffer 里的数据,其它SDK 已经处理了 
    D9SDK 里有这样的示例 
    DXSDK\Samples\C++\DirectShow\Filters\RGBFilters 
      

  3.   

    AlphaRenderer - a rendering filter that will perform an
    alpha blend onto a checkerboard background, which is based 
    on the incoming video alpha. This uses the new media subtype 
    MEDIASUBTYPE_ARGB32.
      

  4.   

    同意,D:\Downloads\ddshow\Extras\DirectShow\Samples\C++\DirectShow\VMR9\Text 
    可以参看下DirectShow的例子