Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
3.1 KiB

  1. // Copyright (c) 1998 Microsoft Corporation. All Rights Reserved.
  2. import "unknwn.idl";
  3. // data id flags, used to notify the client whenever pertinent data changes
  4. #define MIXER_DATA_ASPECT_RATIO 0x00000001 // picture aspect ratio changed
  5. #define MIXER_DATA_NATIVE_SIZE 0x00000002 // native size of video changed
  6. #define MIXER_DATA_PALETTE 0x00000004 // palette of video changed
  7. // status flags defined here
  8. #define MIXER_STATE_MASK 0x00000003 // use this mask with state status bits
  9. #define MIXER_STATE_UNCONNECTED 0x00000000 // mixer is unconnected and stopped
  10. #define MIXER_STATE_CONNECTED_STOPPED 0x00000001 // mixer is connected and stopped
  11. #define MIXER_STATE_CONNECTED_PAUSED 0x00000002 // mixer is connected and paused
  12. #define MIXER_STATE_CONNECTED_PLAYING 0x00000003 // mixer is connected and playing
  13. interface IMixerOCXNotify;
  14. interface IMixerOCX;
  15. [
  16. object,
  17. uuid(81A3BD31-DEE1-11d1-8508-00A0C91F9CA0),
  18. helpstring("IMixerOCXNotify Interface"),
  19. pointer_default(unique)
  20. ]
  21. interface IMixerOCXNotify : IUnknown
  22. {
  23. // invalidates the rect
  24. HRESULT OnInvalidateRect([in] LPCRECT lpcRect);
  25. // informs that a status change has occured, new status bits provided in ulStatusFlags
  26. HRESULT OnStatusChange([in] ULONG ulStatusFlags);
  27. // informs that data parameters, whose id is present in ilDataFlags has changed
  28. HRESULT OnDataChange([in] ULONG ulDataFlags);
  29. };
  30. [
  31. object,
  32. uuid(81A3BD32-DEE1-11d1-8508-00A0C91F9CA0),
  33. helpstring("IMixerOCX Interface"),
  34. pointer_default(unique)
  35. ]
  36. interface IMixerOCX : IUnknown
  37. {
  38. // used to notify the mixer that the display mode has changed, the mixer handles this
  39. // asynchronously and the calls OnStatusChange(MIXER_DISPLAYCHANGE_HANDLED) when processing
  40. // is done
  41. HRESULT OnDisplayChange([in] ULONG ulBitsPerPixel, [in] ULONG ulScreenWidth, [in] ULONG ulScreenHeight);
  42. HRESULT GetAspectRatio([out] LPDWORD pdwPictAspectRatioX, [out] LPDWORD pdwPictAspectRatioY);
  43. HRESULT GetVideoSize([out] LPDWORD pdwVideoWidth, [out] LPDWORD pdwVideoHeight);
  44. HRESULT GetStatus([out] LPDWORD *pdwStatus);
  45. // the dc provided here is not supposed to be cached. If apps have set a dc using
  46. // SetDrawInfo, then it is illegal to provide a non NULL argument here
  47. HRESULT OnDraw([in] HDC hdcDraw, [in] LPCRECT prcDraw);
  48. // lpptTopLeftSC should be NULL unless MIXER_DRAW_DC_ONSCREEN is set to TRUE
  49. // specifying a NULL value for lprcClip means no clipping
  50. // lpptTopLeftSC - top left corner of surface/dc in screen coordinates
  51. // prcDrawCC - draw rectangle in surface/dc coordinates
  52. // lprcClip - clipping rect in surface/dc coordinates (optional)
  53. HRESULT SetDrawRegion([in] LPPOINT lpptTopLeftSC, [in] LPCRECT prcDrawCC, [in] LPCRECT lprcClip);
  54. // function to set the sink interface for client notification
  55. HRESULT Advise([in] IMixerOCXNotify *pmdns);
  56. // function to remove the sink interface
  57. HRESULT UnAdvise();
  58. };