博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCE下添加fliter及使用filter(三) 之 添加OutputStream
阅读量:2397 次
发布时间:2019-05-10

本文共 1779 字,大约阅读时间需要 5 分钟。

转载请标明是引用于

例子代码:

1、添加CMyOutputStream类.

class CMyOutputStream 	: public CBaseOutputPin, 	public IAMStreamConfig, 	public IKsPropertySet{public:	DECLARE_IUNKNOWN	STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);public:	//  IQualityControl implementations	STDMETHODIMP Notify(IBaseFilter * pSender, Quality q);	//  IAMStreamConfig implementations	HRESULT STDMETHODCALLTYPE SetFormat(AM_MEDIA_TYPE *pmt);	HRESULT STDMETHODCALLTYPE GetFormat(AM_MEDIA_TYPE **ppmt);	HRESULT STDMETHODCALLTYPE GetNumberOfCapabilities(int *piCount, int *piSize);	HRESULT STDMETHODCALLTYPE GetStreamCaps(int iIndex, AM_MEDIA_TYPE **pmt, BYTE *pSCC);	//  IKsPropertySet implementations	HRESULT STDMETHODCALLTYPE Set(REFGUID guidPropSet, DWORD dwID, void *pInstanceData, DWORD cbInstanceData, void *pPropData, DWORD cbPropData);	HRESULT STDMETHODCALLTYPE Get(REFGUID guidPropSet, DWORD dwPropID, void *pInstanceData,DWORD cbInstanceData, void *pPropData, DWORD cbPropData, DWORD *pcbReturned);	HRESULT STDMETHODCALLTYPE QuerySupported(REFGUID guidPropSet, DWORD dwPropID, DWORD *pTypeSupport);	//  CBaseOutputPin implementations	CMyOutputStream(CMyFilter *pParent, CCritSec* pLock, HRESULT *phr, LPCWSTR pPinName);	HRESULT DecideBufferSize(IMemAllocator *pIMemAlloc, ALLOCATOR_PROPERTIES *pProperties);	HRESULT CheckMediaType(const CMediaType *pMediaType);	HRESULT GetMediaType(int iPosition, CMediaType *pmt);	HRESULT Active();	HRESULT Inactive();	HRESULT DeliverEndOfStream();	HRESULT DeliverBeginFlush();	HRESULT DeliverEndFlush();	HRESULT Deliver(IMediaSample* pSample);private:	CMyFilter *m_pParent;	COutputQueue* m_pOutputQ;};

2、在CMyFilter成员中添加CMyOutputStream* m_pOutput;

     同时在构造函数中添加对它的初始它.

    在CMyFilter::GetPin中return m_pOutput;

3、接下来就可以在CMyFilter中定义自己的业务函数,在函数中可以使用CMyOutputStream进行控制了.
你可能感兴趣的文章
Flask-Login的使用
查看>>
Python往MySQL存储图片
查看>>
Flask-Migrate实现数据库迁移
查看>>
shell切换用户
查看>>
session机制详解
查看>>
《算法导论》学习总结——第二部分1堆排序
查看>>
强大的g++呢还是强大的C++?太假了吧
查看>>
C++中的内联函数inline总结
查看>>
C++中的函数指针的一些总结
查看>>
ubuntu下为postgresql添加ODBC驱动过程
查看>>
Argument of type '(Foo::)(int,int)' does not match 'void (*)(int,int)'以及静态函数问题
查看>>
今天遇到的postgresql中的备份和恢复
查看>>
今天又搞到个libDTL.so is not an ELF file - it has the wrong magic bytes at the start.
查看>>
MinGW和vc6中编译DTL的过程
查看>>
Fedora13下为postgresql添加ODBC驱动过程
查看>>
Bridge模式学习
查看>>
Virtual的一些总结
查看>>
Fedora13上折腾了下ACE
查看>>
tomcat keepAliveTimeout=0问题
查看>>
JDK1.6在SUSE11下问题跳变定时任务失效问题记录
查看>>