ProtocalDef.h
上传用户:weiliangfb
上传日期:2007-01-23
资源大小:142k
文件大小:2k
源码类别:

多媒体

开发平台:

Visual C++

  1. #ifndef _PROTOCALDEF_H_
  2. #define _PROTOCALDEF_H_
  3. //X:DXSDK = DXSDK8.1的安装路径
  4. //1.打开dshow工作空间(workspace) X:DXSDKsamplesMultimediaDirectShow
  5. //2.编译 baseclasses 
  6. //3.编译 asynbase
  7. //4.设Options的Directories,Include Files中加入X:DXSDKINCLUDE
  8. //X:DXSDKSAMPLESMULTIMEDIADIRECTSHOWBASECLASSES
  9. //X:DXSDKSAMPLESMULTIMEDIADIRECTSHOWFILTERSASYNCINCLUDE
  10. //Library Files 中加入
  11. //X:DXSDKLIB
  12. //X:DXSDKSAMPLESMULTIMEDIADIRECTSHOWBASECLASSESDEBUG (STRMBASD.lib)
  13. //X:DXSDKSAMPLESMULTIMEDIADIRECTSHOWBASECLASSESRelease (STRMBASE.lib)
  14. //将上两个目录移至最顶
  15. //X:DXSDKsamplesMultimediaDirectShowFiltersAsyncBaseDebug (asynbase.lib)
  16. //X:DXSDKsamplesMultimediaDirectShowFiltersAsyncBaseRelease (asynbase.lib)//注意与上一条不能同时
  17. // {5CF7E6A8-44C5-4104-AF3D-84F6214A16A9}
  18. static const GUID WPGirFriendInstance = //DirectPlay用到的GUID
  19. { 0x5cf7e6a8, 0x44c5, 0x4104, { 0xaf, 0x3d, 0x84, 0xf6, 0x21, 0x4a, 0x16, 0xa9 } };
  20. typedef enum 
  21. {
  22. mmsg_DataRequire  = 1//需要数据
  23. ,mmsg_DataRespons  = 2//数据响应
  24. ,mmsg_MediaInfoRequire = 3//媒体信息需求消息
  25. ,mmsg_MediaInfoRespons = 4//媒体信息响应消息
  26. }MMSGTYPE;
  27. typedef struct
  28. {
  29. MMSGTYPE mmsgType;
  30. DWORD  dwBufferLen;
  31. #pragma warning( disable : 4200 )
  32. BYTE  lpParamBuffer[];
  33. #pragma warning( default: 4200 )
  34. }MEDIAMSG,*PMEDIAMSG;
  35. //mmsgType ==mmsg_DataRequire 或 mmsg_DataRespons 时lpParamBuffer为如下结构
  36. typedef struct 
  37. {
  38. LONGLONG llDataPos;
  39. DWORD dwDataSize;
  40. #pragma warning( disable : 4200 )
  41. BYTE lpDataBuff[];//只有当mmsg_DataRespons有效
  42. #pragma warning( default: 4200 )
  43. }MEDIADATAPARAM ,* PMEDIADATAPARAM;
  44. //当mmsgType ==mmsg_MediaInfoRequire时无参数
  45. //mmsgType ==mmsg_MediaInfoRespons时lpParamBuffer为 LONGLONG媒体数据的长度
  46. struct MediaMessageReqEvent//服务器上当需要网络数据时发生,可以主线程中实现
  47. {
  48. virtual HRESULT OnNeedData(LONGLONG llDataPos,DWORD dwSize,DWORD * pdwGotSize,LPBYTE lpBuffer)=0;
  49. virtual HRESULT OnNeedLength(LONGLONG * llMediaLenght)=0;
  50. };
  51. struct MediaMessageRespEvent//客户端当网络有数据时实现发生,可以主线程中实现
  52. {
  53. virtual HRESULT OnDataArrive(LONGLONG llDataPos,DWORD dwSize,LPBYTE lpBuffer) = 0;
  54. virtual HRESULT OnLenghtArrive(LONGLONG lMediaLen)=0;
  55. };
  56. struct PlayerEvent//播放器需要数据时发生,可以主线程中实现
  57. {
  58. virtual HRESULT OnPlayerNeedData(LONGLONG llDataPos,DWORD dwSize,DWORD * pdwGotSize,LPBYTE lpBuffer)=0;
  59. };
  60. #endif