资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
word近段时间由于工作上的需要,大概看了下DirectShow,写了个小的demo,方便理解。以后在深入的学习下DirectShow。贴出代码。对音频所做的处理如如下图:cppview plaincopyprint?1. #ifndef _MON_H_2. #define _MON_H_3.4. #include 5. #include qedit.h6. #include 7. #include 8. #pragma ment(lib,Strmiids.lib)9.10. /define release maco11. #define ReleaseInterface(x) 12. if ( NULL != x ) 13. 14. x-Release( ); 15. x = NULL; 16. 17. / Application-defined message to notify app of filter graph events18. #define WM_GRAPHNOTIFY WM_APP+10019.20. void Msg(HWND hwnd,TCHAR *szFormat, .); 21. bool Bstr_pare(BSTR bstrFilter,BSTR bstrDevice); 22.23. #endif/ _MON_H_#ifndef _MON_H_#define _MON_H_#include #include qedit.h#include #include #pragma ment(lib,Strmiids.lib)/define release maco#define ReleaseInterface(x) if ( NULL != x ) x-Release( ); x = NULL; / Application-defined message to notify app of filter graph events#define WM_GRAPHNOTIFY WM_APP+100void Msg(HWND hwnd,TCHAR *szFormat, .);bool Bstr_pare(BSTR bstrFilter,BSTR bstrDevice);#endif/ _MON_H_实现:cppview plaincopyprint?1. #include mon.h2.3. void Msg(HWND hwnd,TCHAR *szFormat, .) 4. 5. TCHAR szBuffer1024; 6. constsize_t NUMCHARS = sizeof(szBuffer) / sizeof(szBuffer0); 7. constint LASTCHAR = NUMCHARS - 1; 8.9. va_list pArgs; 10. va_start(pArgs, szFormat); 11.12. (void)StringCchVPrintf(szBuffer, NUMCHARS - 1, szFormat, pArgs); 13. va_end(pArgs); 14.15. szBufferLASTCHAR = TEXT(0); 16.17. MessageBox(hwnd, szBuffer, TEXT(Message), MB_OK | MB_ICONERROR); 18. 19.20. bool Bstr_pare(BSTR bstrFilter,BSTR bstrDevice) 21. 22. bool flag = true; 23. int strlenFilter = SysStringLen(bstrFilter); 24. int strlenDevice = SysStringLen(bstrDevice); 25. char* chrFilter = (char*)malloc(strlenFilter+1); 26. char* chrDevice = (char*)malloc(strlenDevice+1); 27. int j = 0; 28.29. if (strlenFilter!=strlenDevice) 30. flag = false; 31. else32. 33. for(; j strlenFilter;j+) 34. 35. chrFilterj = (char)bstrFilterj; 36. chrDevicej = (char)bstrDevicej; 37.38. 39. chrFilterstrlenFilter = 0; 40. chrDevicestrlenDevice = 0; 41.42. for(j=0; j strlenFilter;j+) 43. 44. if(chrFilterj != chrDevicej) 45. flag = false; 46. 47.48. if(flag = true & j = strlenFilter-1) 49. flag = true; 50. 51. return flag; 52. #include mon.hvoid Msg(HWND hwnd,TCHAR *szFormat, .)TCHAR szBuffer1024; const size_t NUMCHARS = sizeof(szBuffer) / sizeof(szBuffer0);const int LASTCHAR = NUMCHARS - 1;va_list pArgs;va_start(pArgs, szFormat);(void)StringCchVPrintf(szBuffer, NUMCHARS - 1, szFormat, pArgs);va_end(pArgs);szBufferLASTCHAR = TEXT(0);MessageBox(hwnd, szBuffer, TEXT(Message), MB_OK | MB_ICONERROR);bool Bstr_pare(BSTR bstrFilter,BSTR bstrDevice)bool flag = true;int strlenFilter = SysStringLen(bstrFilter);int strlenDevice = SysStringLen(bstrDevice);char* chrFilter = (char*)malloc(strlenFilter+1);char* chrDevice = (char*)malloc(strlenDevice+1);int j = 0;if (strlenFilter!=strlenDevice)flag = false;elsefor(; j strlenFilter;j+)chrFilterj = (char)bstrFilterj;chrDevicej = (char)bstrDevicej;chrFilterstrlenFilter = 0;chrDevicestrlenDevice = 0;for(j=0; j strlenFilter;j+)if(chrFilterj != chrDevicej)flag = false;if(flag = true & j = strlenFilter-1)flag = true;return flag;2.SampleGrabberCallback.h文件,由于截取视频图片,回调函数的实现cppview plaincopyprint?1. #ifndef _SAMPLEGRABBERCALLBACK_H_2. #define _SAMPLEGRABBERCALLBACK_H_3. #include mon.h4.5. class SampleGrabberCallback : public ISampleGrabberCB 6. 7. public: 8. ULONG STDMETHODCALLTYPE AddRef(); 9. ULONG STDMETHODCALLTYPE Release(); 10. HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid,void* ppvObject); 11.12. HRESULT STDMETHODCALLTYPE SampleCB(double Time, IMediaSample *pSample); 13. HRESULT STDMETHODCALLTYPE BufferCB(double Time, BYTE *pBuffer, long BufferLen); 14.15. SampleGrabberCallback(); 16. BOOL SaveBitmap(BYTE * pBuffer, long lBufferSize ); /保存bitmap图片17. public: 18. BOOL m_bGetPicture; / is get a picture19. long m_lWidth; /存储图片的宽度20. long m_lHeight; /存储图片的长度21. int m_iBitCount; /the number of bits per pixel (bpp)22. TCHAR m_chTempPathMAX_PATH; 23. TCHAR m_chSwapStrMAX_PATH; 24. TCHAR m_chDirNameMAX_PATH; 25. ; 26.27. #endif /_SAMPLEGRABBERCALLBACK_H_#ifndef _SAMPLEGRABBERCALLBACK_H_#define _SAMPLEGRABBERCALLBACK_H_#include mon.hclass SampleGrabberCallback : public ISampleGrabberCBpublic:ULONG STDMETHODCALLTYPE AddRef();ULONG STDMETHODCALLTYPE Release();
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号