/* *************************************************************************
**    INTEL Corporation Proprietary Information
**
**    This listing is supplied under the terms of a license
**    agreement with INTEL Corporation and may not be copied
**    nor disclosed except in accordance with the terms of
**    that agreement.
**
**    Copyright (c) 1996 Intel Corporation.
**    All Rights Reserved.
**
** *************************************************************************
*/

/* *************************************************************************
**
** This file contains the definitions for the H26X Active Movie interfaces
**
** *************************************************************************
*/

[
    uuid(21555140-9C2B-11cf-90FA-00AA00A729EA),
    object
]

interface IH26XVideoEffects:IUnknown
{
    import "unknwn.idl";

    cpp_quote("// STRUCTURES")

    typedef enum
    {
        H26X_VE_UNDEFINED,
        H26X_VE_BRIGHTNESS,
        H26X_VE_CONTRAST,
        H26X_VE_SATURATION,
        H26X_VE_TINT,
        H26X_VE_MIRROR,
        H26X_VE_ASPECT_CORRECT
    } H26X_VIDEO_EFFECT;

    typedef struct
    {
        int iBrightness;
        int iSaturation;
        int iContrast;
        int iMirror;
        int iAspectCorrect;
    } VIDEO_EFFECT_VALUES, * PTR_VIDEO_EFFECT_VALUES;

    cpp_quote("// METHODS")

	HRESULT getFactoryDefault
    (
        [in] H26X_VIDEO_EFFECT veVideoEffect,
        [out] int *pinDefault
    );

	HRESULT getFactoryLimits
    (
        [in] H26X_VIDEO_EFFECT veVideoEffect,
        [out] int *pinLower,
        [out] int *pinUpper
    );

	HRESULT getCurrent
    (
        [in] H26X_VIDEO_EFFECT veVideoEffect,
        [out] int *pinValue
    );

	HRESULT setCurrent
    (
        [in] H26X_VIDEO_EFFECT veVideoEffect,
        [in] int inValue
    );

	HRESULT resetCurrent
    (
        [in] H26X_VIDEO_EFFECT veVideoEffect
    );

}


#ifndef H261
// This interface is only used with H263.

[
    uuid(65698D40-282D-11d0-8800-444553540000),
    object
]

interface IH26XEncodeOptions:IUnknown
{
    cpp_quote("// STRUCTURES")

    typedef struct
    {
        int bExtendedMV;
        int bPBFrames;
        int bAdvPrediction;
    } ENCODE_OPTIONS_VALUES, * PTR_ENCODE_OPTIONS_VALUES;

    cpp_quote("// METHODS")

	HRESULT get_EncodeOptions
    (
        [out] PTR_ENCODE_OPTIONS_VALUES pOptionValues
    );

	HRESULT get_EncodeOptionsDefault
    (
        [out] PTR_ENCODE_OPTIONS_VALUES pOptionValues
    );

	HRESULT set_EncodeOptions
    (
        [in] PTR_ENCODE_OPTIONS_VALUES pOptionValues
    );

}

#endif


[
    uuid(3CB194A0-10AA-11d0-8800-444553540000),
    object
]

interface IH26XSnapshot:IUnknown
{
    cpp_quote("#ifndef _WINGDI_")
    cpp_quote("// STRUCTURES")

    typedef struct
    {
        DWORD      biSize;
        LONG       biWidth;
        LONG       biHeight;
        WORD       biPlanes;
        WORD       biBitCount;
        DWORD      biCompression;
        DWORD      biSizeImage;
        LONG       biXPelsPerMeter;
        LONG       biYPelsPerMeter;
        DWORD      biClrUsed;
        DWORD      biClrImportant;
    } *LPBITMAPINFOHEADER;

    cpp_quote("#endif")

    cpp_quote("// METHODS")

	HRESULT getBitmapInfoHeader
    (
        [out] LPBITMAPINFOHEADER lpBmi
    );

	HRESULT getSnapshot
    (
        [in] LPBITMAPINFOHEADER lpBmi,
        [out] unsigned char *pvBuffer,
        [in] DWORD dwTimeout
    );

}


[
    uuid(F9B78AA1-EA12-11cf-9FEC-00AA00A59F69),
    object
]

interface IH26XEncoderControl:IUnknown
{
    cpp_quote("// STRUCTURES")

    typedef struct { 
	    DWORD dwTargetFrameSize;
	    BOOL  bFrameSizeBRC;
	    BOOL  bSendKey;
	    DWORD dwQuality;
	    DWORD dwFrameRate;
	    DWORD dwDataRate;
	    DWORD dwScale;
	    DWORD dwWidth;
	    DWORD dwKeyFrameInterval;
	    DWORD dwKeyFramePeriod;
    } ENC_CMP_DATA, * PTR_ENC_CMP_DATA;

    cpp_quote("// METHODS")

	HRESULT get_EncodeCompression
    (
        [out] PTR_ENC_CMP_DATA pData
    );

	HRESULT get_EncodeCompressionDefault
    (
        [out] PTR_ENC_CMP_DATA pData
    );

	HRESULT set_EncodeCompression
    (
        [in] PTR_ENC_CMP_DATA pData
    );

}


[
    uuid(1FC3F2C0-2BFD-11d0-8800-444553540000),
    object
]

interface IH26XRTPControl:IUnknown
{
    cpp_quote("// STRUCTURES")

    typedef struct {
	    BOOL bRTPHeader;
	    DWORD dwPacketSize;
	    DWORD dwPacketLoss;
    } ENC_RTP_DATA, * PTR_ENC_RTP_DATA;

    cpp_quote("// METHODS")

	HRESULT get_RTPCompression
    (
        [out] PTR_ENC_RTP_DATA pData
    );

	HRESULT get_RTPCompressionDefault
    (
        [out] PTR_ENC_RTP_DATA pData
    );

	HRESULT set_RTPCompression
    (
        [in] PTR_ENC_RTP_DATA pData
    );

}