///////////////////////////////////////////////////////////////////////////
// h323priv.idl : IDL source for H323 msp private interfaces
/////////////////////////////////////////////////////////////////////////////

#ifndef __H323__PRIVATE_IDL__
#define __H323__PRIVATE_IDL__

import "ipmsp.idl";


/*
	Object identifer constants, beginning with
	iso(1) org(3) dod(6) internet(1) private(4) enterprise(1) microsoft (311) 
	software	OBJECT IDENTIFIER ::= { microsoft 1 }
*/

//	ipTelephony	OBJECT IDENTIFIER ::= { software 19 }
#define MSOID_IPTEL 19 // 1.3.6.1.4.1.311.19

/*  
	intrinsicallyDefinedCap OBJECT IDENTIFIER ::= { ipTelephony 1 }
	This identifies a unique nonstandard capability with intrinsic parameters
	In other words, the GUID alone defines the capability and its compatibility
	with remote capabilities having the same GUID. If the GUIDS match, the 
	capabilities are deemed identical.   

 The following is possible, but may not be necessary: Extra parameters may be passed 
 in the capability set, in the OLC, and in the OLC Ack.  The extra parameters are defined 
	as an array of bytes, and the semantics of the contents are further defined by 
	the definition of each intrinsically defined capability. 
*/

#define MSOID_IPTEL_INTRINSICALLY_DEFINED_CAP 1	// Full OID = 1.3.6.1.4.1.311.19.1
#define MSOID_IPTEL_INTRINSICALLY_DEFINED_CAP_STRING "1.3.6.1.4.1.311.19.1"

typedef enum H245_CAPABILITY
{
    HC_G711,
    HC_G723,
    HC_H263QCIF,
    HC_H261QCIF

} H245_CAPABILITY;

[
    object,
    local,
    uuid(44cf6a9d-cb40-4bbc-b2d3-b6aa93322c71),
    pointer_default(unique),
    hidden
]
interface IH323LineEx : IUnknown
{
    HRESULT SetExternalT120Address (
        [in] BOOL    fEnable,
        [in] DWORD   dwIP,
        [in] WORD    wPort
        );

    HRESULT SetDefaultCapabilityPreferrence (
        [in] DWORD              dwNumCaps,
        [in] H245_CAPABILITY *  pCapabilities,
        [in] DWORD *            pWeights
        );

    HRESULT SetAlias (
        [in] WCHAR *strAlias,
        [in] DWORD dwLength
        );
};

[
    object,
    local,
    uuid(c3341386-af91-4ef9-83b6-be3762e42ecb),
    pointer_default(unique),
    hidden
]
interface IKeyFrameControl : IUnknown
{
    HRESULT UpdatePicture ();

    HRESULT PeriodicUpdatePicture (
        [in] BOOL fEnable, 
        [in] DWORD dwInterval
        );
};

#define IID_IKeyFrameControl (__uuidof(IKeyFrameControl))

#endif // __H323_PRIVATE_IDL__
