//==========================================================================;
//
//	PinMedia.H
//	WDM MiniDriver development
//		AIW / AIWPro hardware platform. 
//			ATI connections GUIDs Include Module.
//  Copyright (c) 1996 - 1997  ATI Technologies Inc.  All Rights Reserved.
//
//==========================================================================;

#ifndef _PINMEDIA_H_
#define _PINMEDIA_H_


#define WDM_REG_PIN_MEDIUMS					"Mediums"
#define UNICODE_WDM_REG_PIN_MEDIUMS			L"Mediums"

#define WDM_REG_PIN_NUMBER					"Pin"
#define UNICODE_WDM_REG_PIN_NUMBER			L"Pin"


/*
	TVTuner, XBar, and TVAudio Medium definitions
*/

// {F3954420-34F6-11d1-821D-0000F8300212}
#define STATIC_MEDIUM_ATIXBAR_VIDEOTUNERIN \
 0xf3954420, 0x34f6, 0x11d1,  0x82, 0x1d, 0x0, 0x0, 0xf8, 0x30, 0x2, 0x12
DEFINE_GUIDSTRUCT( "F3954420-34F6-11D1-821D-0000F8300212", MEDIUM_ATIXBAR_VIDEOTUNERIN);
#define MEDIUM_ATXBAR_VIDEOTUNERIN DEFINE_GUIDNAMED( MEDIUM_ATIXBAR_VIDEOTUNERIN)


// {F3954421-34F6-11d1-821D-0000F8300212}
#define STATIC_MEDIUM_ATIXBAR_AUDIOTUNERIN \
 0xf3954421, 0x34f6, 0x11d1,  0x82, 0x1d, 0x0, 0x0, 0xf8, 0x30, 0x2, 0x12 
DEFINE_GUIDSTRUCT( "F3954421-34F6-11D1-821D-0000F8300212", MEDIUM_VIDEO_ATIXBAR_AUDIOTUNERIN);
#define MEDIUM_ATXBAR_AUDIOTUNERIN DEFINE_GUIDNAMED( MEDIUM_ATIXBAR_AUDIOTUNERIN)


// {6001AFE0-39A7-11D1-821D-0000F8300212}
#define STATIC_MEDIUM_ATIXBAR_VIDEOCOMPOSITEOUT \
	0x6001afe0, 0x39a7, 0x11d1,  0x82, 0x1d, 0x0, 0x0, 0xf8, 0x30, 0x2, 0x12
DEFINE_GUIDSTRUCT( "6001AFE0-39A7-11D1-821D-0000F8300212", MEDIUM_ATIXBAR_VIDEOCOMPOSITEOUT);
#define MEDIUM_ATXBAR_VIDEOCOMPOSITEOUT DEFINE_GUIDNAMED( MEDIUM_ATIXBAR_VIDEOCOMPOSITEOUT)


// {6001AFE1-39A7-11D1-821D-0000F8300212}
#define STATIC_MEDIUM_ATIXBAR_VIDEOSVIDEOOUT \
	0x6001afe1, 0x39a7, 0x11d1,  0x82, 0x1d, 0x0, 0x0, 0xf8, 0x30, 0x2, 0x12
DEFINE_GUIDSTRUCT( "6001AFE1-39A7-11D1-821D-0000F8300212", MEDIUM_ATIXBAR_VIDEOSVIDEOOUT);
#define MEDIUM_ATXBAR_VIDEOSVIDEOOUT DEFINE_GUIDNAMED( MEDIUM_ATIXBAR_VIDEOSVIDEOOUT)


// {AE8F28C0-3346-11D1-821D-0000F8300212}
#define STATIC_MEDIUM_ATIXBAR_VIDEOTUNEROUT \
	0xae8f28c0, 0x3346, 0x11d1,  0x82, 0x1d, 0x0, 0x0, 0xf8, 0x30, 0x2, 0x12
DEFINE_GUIDSTRUCT( "AE8F28C0-3346-11D1-821D-0000F8300212", MEDIUM_ATIXBAR_VIDEOTUNEROUT);
#define MEDIUM_ATXBAR_VIDEOTUNEROUT DEFINE_GUIDNAMED( MEDIUM_ATIXBAR_VIDEOTUNEROUT)


// {AE8F28C1-3346-11D1-821D-0000F8300212}
#define STATIC_MEDIUM_ATIXBAR_AUDIODECODEROUT \
	0xae8f28c1, 0x3346, 0x11d1,  0x82, 0x1d, 0x0, 0x0, 0xf8, 0x30, 0x2, 0x12 
DEFINE_GUIDSTRUCT( "AE8F28C1-3346-11D1-821D-0000F8300212", MEDIUM_ATIXBAR_AUDIODECODEROUT);
#define MEDIUM_ATXBAR_AUDIODECODEROUT DEFINE_GUIDNAMED( MEDIUM_ATIXBAR_AUDIODECODEROUT)


// {F3954422-34F6-11D1-821D-0000F8300212}
#define STATIC_MEDIUM_ATITVTUNER_RADIOAUDIOOUT \
 0xf3954422, 0x34f6, 0x11d1,  0x82, 0x1d, 0x0, 0x0, 0xf8, 0x30, 0x2, 0x12 
DEFINE_GUIDSTRUCT("F3954422-34F6-11D1-821D-0000F8300212", MEDIUM_VIDEO_ATITVTUNER_RADIOAUDIOOUT);
#define MEDIUM_ATXBAR_RADIOAUDIOOUT DEFINE_GUIDNAMED( MEDIUM_ATITVTUNER_RADIOAUDIOOUT)


// {F3954423-34F6-11d1-821D-0000F8300212}
#define STATIC_MEDIUM_ATITVTUNER_TVAUDIOOUT \
 0xf3954423, 0x34f6, 0x11d1,  0x82, 0x1d, 0x0, 0x0, 0xf8, 0x30, 0x2, 0x12 
DEFINE_GUIDSTRUCT( "F3954423-34F6-11D1-821D-0000F8300212", MEDIUM_VIDEO_ATITVTUNER_TVAUDIOOUT);
#define MEDIUM_ATITVTUNER_TVAUDIOOUT DEFINE_GUIDNAMED( MEDIUM_ATITVTUNER_TVAUDIOOUT)


const KSPIN_MEDIUM ATIXBarVideoTunerInMedium =
{
	STATIC_MEDIUM_ATIXBAR_VIDEOTUNERIN,
	0,
	0
};

const KSPIN_MEDIUM ATIXBarAudioTunerInMedium =
{
	STATIC_MEDIUM_ATIXBAR_AUDIOTUNERIN,
	0,
	0
};

const KSPIN_MEDIUM ATIXBarVideoCompositeOutMedium =
{
	STATIC_MEDIUM_ATIXBAR_VIDEOCOMPOSITEOUT,
	0,
	0
};

const KSPIN_MEDIUM ATIXBarVideoSVideoOutMedium =
{
	STATIC_MEDIUM_ATIXBAR_VIDEOSVIDEOOUT,
	0,
	0
};

const KSPIN_MEDIUM ATIXBarVideoTunerOutMedium =
{
	STATIC_MEDIUM_ATIXBAR_VIDEOTUNEROUT,
	0,
	0
};

const KSPIN_MEDIUM ATIXBarAudioDecoderOutMedium =
{
	STATIC_GUID_NULL,
	0,
	0
};

const KSPIN_MEDIUM ATITVTunerRadioAudioOutMedium =
{
	STATIC_MEDIUM_ATITVTUNER_RADIOAUDIOOUT,
	0,
	0
};

const KSPIN_MEDIUM ATITVTunerTVAudioOutMedium =
{
	STATIC_MEDIUM_ATITVTUNER_TVAUDIOOUT,
	0,
	0
};

const KSPIN_MEDIUM MEDIUM_WILDCARD =
{
    STATIC_GUID_NULL,
    0,
	0
};

// compatible mediums between ATITVTuner and ATIXBar
#define ATITVTunerVideoOutMedium	ATIXBarVideoTunerInMedium
#define ATITVAudioInMedium			ATITVTunerTVAudioOutMedium			
#define ATITVAudioOutMedium			ATIXBarAudioTunerInMedium

// Pin Mediums support functions prototypes
ULONG		GetDriverInstanceNumber			( PDEVICE_OBJECT pDeviceObject);
HANDLE		OpenRegistryPinMediumFolder		( PDEVICE_OBJECT pDeviceObject, PWCHAR pwchFolderName);
BOOL		ReadPinMediumFromRegistryFolder	( HANDLE hFolder, ULONG nPin, PKSPIN_MEDIUM pMediumKSPin);


#endif	// _PINMEDIA_H
