|
|
|
|
|
我有:)
|
|
|
只考虑接收即可。发送方直接用数据源头原来的格式。
网络上流传一个陆其明的例子,差不多能满足你的要求。你的任务就是看懂其中的socket类,CDataAdmin类,和filter的创建播放过程。 |
|
|
陆其明的例子我要好好看。
baallily(风狐),你那个是不是陆其明的? |
|
|
我也是研究陆其名的东西搞出来的
|
|
|
DSNetWork也是一个
|
|
|
给你一个简单的我写的例子,只要实现这些函数就可以了
1.) source filter, 在FillBuffer()中收包 class CXXXSourcePin : public CSourceStream { public: CXXXSourcePin(HRESULT *phr,CSource *pms); virtual ~CXXXSourcePin(); public: public: virtual HRESULT FillBuffer(IMediaSample *pSample); virtual HRESULT DecideBufferSize(IMemAllocator *pAlloc,ALLOCATOR_PROPERTIES *ppropInputRequest); virtual HRESULT GetMediaType(CMediaType *pMediaType); // virtual HRESULT CheckMediaType(const CMediaType *pMediaType); protected: unsigned char m_recvBuffer[2048]; int m_recvLength; }; //////////////////////////////////////////////////////////////////// //class CXXXSource /////////////////////////////////////////////////////////////////// class CXXXSource : public CSource { public: DECLARE_IUNKNOWN; CXXXSource(IUnknown *pUnk, HRESULT *phr); virtual ~CXXXSource(); public: protected: CXXXSourcePin* m_pMPEG4OutPin; public: static CUnknown * WINAPI CreateInstance(IUnknown *pUnk, HRESULT *phr); }; 2.) render filter, 在DoRenderSample()发包 class CXXXRender : public CBaseRenderer { public: DECLARE_IUNKNOWN; CXXXRender( IUnknown * pUnk, HRESULT * phr ); ~CXXXRender( ); // DECLARE_IUNKNOWN // make sure media type is what we want // HRESULT CheckMediaType( const CMediaType *pmtIn ); // have to ovverride this // HRESULT DoRenderSample( IMediaSample *pMediaSample ); // have to override this // HRESULT SetMediaType( const CMediaType *pmt ); public: protected: unsigned long m_sendLength; unsigned char m_sendBuffer[2048]; public: // only way to make one of these // static CUnknown * WINAPI CreateInstance(LPUNKNOWN lpunk, HRESULT *phr); }; |
|
|
能否给一个简单而又完整的视频会议系统源代码给我看看,有设计文档也可以。多谢了。
|
|
|
不好意思,涉及公司的代码。
|
|
|
呵呵,很感谢。
|
|