import "unknwn.idl";

#define MIXER_DATA_ASPECT_RATIO             0x00000001
#define MIXER_DATA_NATIVE_SIZE              0x00000002
#define MIXER_DATA_PALETTE                  0x00000004
#define MIXER_STATE_MASK                    0x00000003
#define MIXER_STATE_UNCONNECTED             0x00000000
#define MIXER_STATE_CONNECTED_STOPPED       0x00000001
#define MIXER_STATE_CONNECTED_PAUSED        0x00000002
#define MIXER_STATE_CONNECTED_PLAYING       0x00000003

interface IMixerOCXNotify;
interface IMixerOCX;

[
    object,
    uuid(81A3BD31-DEE1-11d1-8508-00A0C91F9CA0),
    pointer_default(unique)
]
interface IMixerOCXNotify : IUnknown
{
    HRESULT OnInvalidateRect([in] LPCRECT lpcRect);
    HRESULT OnStatusChange([in] ULONG ulStatusFlags);
    HRESULT OnDataChange([in] ULONG ulDataFlags);
};

[
    object,
    uuid(81A3BD32-DEE1-11d1-8508-00A0C91F9CA0),
    pointer_default(unique)
]
interface IMixerOCX : IUnknown
{
    HRESULT OnDisplayChange([in] ULONG ulBitsPerPixel, [in] ULONG ulScreenWidth, [in] ULONG ulScreenHeight);
    HRESULT GetAspectRatio([out] LPDWORD pdwPictAspectRatioX, [out] LPDWORD pdwPictAspectRatioY);
    HRESULT GetVideoSize([out] LPDWORD pdwVideoWidth, [out] LPDWORD pdwVideoHeight);
    HRESULT GetStatus([out] LPDWORD *pdwStatus);
    HRESULT OnDraw([in] HDC hdcDraw, [in] LPCRECT prcDraw);
    HRESULT SetDrawRegion([in] LPPOINT lpptTopLeftSC, [in] LPCRECT prcDrawCC, [in] LPCRECT lprcClip);
    HRESULT Advise([in] IMixerOCXNotify *pmdns);
    HRESULT UnAdvise();
};
