mirror of https://github.com/tongzx/nt5src
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
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
|