Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

216 lines
4.7 KiB

/*++
Copyright (c) 1994 - 1995 Microsoft Corporation. All Rights Reserved.
Module Name:
imp.h
Abstract:
This file defines all the implementation-dependent structures and
declares internal functions for the MPEG API DLL.
Author:
Yi SUN (t-yisun) 08-22-1994
Environment:
Revision History:
--*/
#ifndef _IMP_H
#define _IMP_H
/**************************************************************************
* types, vars and constants definition
**************************************************************************/
#define MAX_CHANNELS 8
extern int nMpegAdapters;
typedef enum _ATTRIBUTE_VALUE_STATUS
{
AttrValueUnset,
AttrValueUpdated,
AttrValueUnwritten
} ATTRIBUTE_VALUE_STATUS, *PATTRIBUTE_VALUE_STATUS;
// MPEG attribute range struct
typedef struct _MPEG_ATTRIBUTE_INFO {
MPEG_ATTRIBUTE eAttribute;
LONG lMinimum;
LONG lMaximum;
LONG lStep; // 0 indicates not supported
LONG lCurrentValue[MAX_CHANNELS];
ATTRIBUTE_VALUE_STATUS eValueStatus[MAX_CHANNELS];
} MPEG_ATTRIBUTE_INFO, *PMPEG_ATTRIBUTE_INFO;
// abstract device control block contains info identifying each abstract
// device
typedef struct _ABSTRACT_DEVICE_CONTROL_BLOCK {
BOOL bIsAvailable; // indicate if the abstract device exists
int nCurrentChannel;
TCHAR szId[80];
HMPEG_DEVICE hAD; // handle to the abstract device; hidden from apps
} ABSTRACT_DEVICE_CONTROL_BLOCK, *PABSTRACT_DEVICE_CONTROL_BLOCK;
// NOTE: the following info should be obtained from the registry or by
// querying the device. For now, it's hard coded.
// define the max number of abstract devices for each physical MPEG device
#define MAX_ABSTRACT_DEVICES 4
// define the max number of attributes for each MPEG device
#define NUMBER_OF_ATTRIBUTES 32
// MPEG device control block
typedef struct _MPEG_DEVICE_CONTROL_BLOCK {
int nDevice;
TCHAR szDescription[256];
ULONG ulCapabilities;
USHORT usSequenceNumber;
int nAttributes;
BOOL bAttributesLocked;
ABSTRACT_DEVICE_CONTROL_BLOCK eAbstractDevices[MAX_ABSTRACT_DEVICES];
MPEG_ATTRIBUTE_INFO Attributes[NUMBER_OF_ATTRIBUTES];
} MPEG_DEVICE_CONTROL_BLOCK, *PMPEG_DEVICE_CONTROL_BLOCK;
// define the number of the MPEG devices in the system
typedef enum _MPEG_ABSTRACT_DEVICE_INDEX {
MpegCombined,
MpegAudio,
MpegVideo,
MpegOverlay
} MPEG_ABSTRACT_DEVICE_INDEX, *PMPEG_ABSTRACT_DEVICE_INDEX;
#define NONE -1
/**************************************************************************
* internal function prototypes
**************************************************************************/
int
ReadRegistry();
HMPEG_DEVICE
MpegADHandle(
IN USHORT usIndex,
IN MPEG_ABSTRACT_DEVICE_INDEX eIndex
);
LPTSTR
MpegDeviceDescription(
IN USHORT usIndex
);
MPEG_STATUS
CreateMpegHandle(
IN USHORT usIndex,
OUT PHMPEG_DEVICE phDevice
);
MPEG_STATUS
CreateMpegPseudoHandle(
IN USHORT usIndex,
OUT PHMPEG_DEVICE phDevice
);
BOOL
HandleIsValid(
IN HMPEG_DEVICE hDevice,
OUT PUSHORT pusIndex
);
BOOL
PseudoHandleIsValid(
IN HMPEG_DEVICE hDevice,
OUT PUSHORT pusIndex
);
MPEG_STATUS
CloseMpegHandle(
IN USHORT usIndex
);
BOOL
DeviceSupportCap(
IN USHORT usIndex,
IN MPEG_CAPABILITY eCapability
);
BOOL
DeviceSupportStream(
IN USHORT usIndex,
IN MPEG_STREAM_TYPE eStreamType
);
BOOL
DeviceSupportDevice(
IN USHORT usIndex,
IN MPEG_DEVICE_TYPE eDeviceType
);
MPEG_STATUS
GetAttributeRange(
IN USHORT usIndex,
IN MPEG_ATTRIBUTE eAttribute,
OUT PLONG plMinimum,
OUT PLONG plMaximum,
OUT PLONG plStep
);
BOOL
DeviceIoControlSync(
HMPEG_DEVICE hDevice,
DWORD dwIoControlCode,
LPVOID lpInBuffer,
DWORD nInBufferSize,
LPVOID lpOutBuffer,
DWORD nOutBufferSize,
LPDWORD lpBytesReturned
);
MPEG_STATUS
MpegTranslateWin32Error(
DWORD dwWin32Error
);
MPEG_STATUS
SetCurrentChannel(
IN USHORT usIndex,
IN MPEG_DEVICE_TYPE eDeviceType,
IN INT nChannel
);
MPEG_STATUS
GetCurrentChannel(
IN USHORT usIndex,
IN MPEG_DEVICE_TYPE eDeviceType,
OUT LPINT nChannel
);
MPEG_STATUS
SetCurrentAttributeValue(
IN USHORT usIndex,
IN MPEG_DEVICE_TYPE eDeviceType,
IN MPEG_ATTRIBUTE eAttribute,
IN LONG lValue
);
MPEG_STATUS
UpdateAttributes(
IN USHORT usIndex,
IN MPEG_DEVICE_TYPE eDeviceType
);
#endif