(DirectX系列07)DirectShow MFC下Filter编码分析

简介:     MFC下Filter的编写和Win32下Filter的编写极其相似,但又存在很多不同点,在Win32中需要去实现CreateInstance函数,而在MFC直接用NEW 动态产生,不过这并不代表不需要去维护Filter对象计数,因此在MFC ...

    MFC下Filter的编写和Win32下Filter的编写极其相似,但又存在很多不同点,在Win32中需要去实现CreateInstance函数,而在MFC直接用NEW 动态产生,不过这并不代表不需要去维护Filter对象计数,因此在MFC 下Filter中依然需要调用AddRef函数来维护这个平衡;其它还不需要实现注册表注册等功能,如下代码;

////////////////////////////////////////////////////////////////////////////////
CAppTransform::CAppTransform(LPUNKNOWN pUnkOuter, HRESULT *phr) :
CTransInPlaceFilter(NAME("App Transform"), pUnkOuter, GUID_NULL, phr)
{
}

HRESULT CAppTransform::Transform(IMediaSample *pSample)
{
 // Override to do something inside the application
 // Such as grabbing a poster frame...
 // ...

    return S_OK;
}

// Check if we can support this specific proposed type and format
HRESULT CAppTransform::CheckInputType(const CMediaType *pmt)
{
 // We accept a series of raw media types
 if (pmt->majortype == MEDIATYPE_Video &&
  (pmt->subtype == MEDIASUBTYPE_RGB32 ||
  pmt->subtype == MEDIASUBTYPE_RGB24 ||
  pmt->subtype == MEDIASUBTYPE_RGB565 ||
  pmt->subtype == MEDIASUBTYPE_RGB555 ||
  pmt->subtype == MEDIASUBTYPE_UYVY ||
  pmt->subtype == MEDIASUBTYPE_YUY2))
 {
  return NOERROR;
 }
 return E_FAIL;
}

目录
相关文章
|
编译器 开发工具 C语言
QT应用编程:基于VLC开发音视频播放器(句柄方式)
QT应用编程:基于VLC开发音视频播放器(句柄方式)
453 0
QT应用编程:基于VLC开发音视频播放器(句柄方式)
|
IDE 开发工具
QT应用编程: 解决Visual Studio下使用qDebug没有输出、输出中文乱码
QT应用编程: 解决Visual Studio下使用qDebug没有输出、输出中文乱码
1080 0
QT应用编程: 解决Visual Studio下使用qDebug没有输出、输出中文乱码
|
存储 编解码 Linux
嵌入式Linux下LCD应用编程: 调用giflib库解码显示GIF动态图
嵌入式Linux下LCD应用编程: 调用giflib库解码显示GIF动态图
772 0
嵌入式Linux下LCD应用编程: 调用giflib库解码显示GIF动态图
|
编译器 C语言 Windows
QT应用编程: windows下调用福熙阅读器COM插件完成PDF开发
QT应用编程: windows下调用福熙阅读器COM插件完成PDF开发
280 0
QT应用编程: windows下调用福熙阅读器COM插件完成PDF开发
|
编译器 C语言
QT应用编程: 使用QTAV得到解码视频每帧图像
QT应用编程: 使用QTAV得到解码视频每帧图像
434 0
QT应用编程: 使用QTAV得到解码视频每帧图像
|
编译器 C语言
QT应用编程: 基于FFMPEG设计的精简版视频播放器
QT应用编程: 基于FFMPEG设计的精简版视频播放器
219 0
QT应用编程: 基于FFMPEG设计的精简版视频播放器
|
Shell C# Windows
Directshow开发的基本技巧
你也可以在graph没有设置时钟的情况下运行graph。当SetSyncSource 函数的参数为NULL的时候就给graph设置了一个空的参考时钟。如果graph没有时钟,graph将运行的快许多。因为renderer 不用再按照sample的presentation 时间了,只要sample到达了renderer filter,就可以立即被提交。
1135 0