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.
 
 
 
 
 
 

297 lines
16 KiB

/******************************************************************************\
* *
* STRMINFO.H - All streams deskription for the device. *
* *
* Copyright (c) C-Cube Microsystems 1996 *
* All Rights Reserved. *
* *
* Use of C-Cube Microsystems code is governed by terms and conditions *
* stated in the accompanying licensing statement. *
* *
\******************************************************************************/
#ifndef _STRMINFO_H_
#define _STRMINFO_H_
#include <strmini.h>
//---------------------------------------------------------------------------
// Create an array that holds the list of all of the streams supported
//---------------------------------------------------------------------------
typedef struct _ALL_STREAM_INFO {
HW_STREAM_INFORMATION hwStreamInfo;
HW_STREAM_OBJECT hwStreamObject;
} ALL_STREAM_INFO, *PALL_STREAM_INFO;
static ALL_STREAM_INFO Streams [] =
{
// -----------------------------------------------------------------
// The MPEG Video input stream
// -----------------------------------------------------------------
{
// HW_STREAM_INFORMATION -------------------------------------------
{
1, // NumberOfPossibleInstances
KSPIN_DATAFLOW_IN, // DataFlow
TRUE, // DataAccessible
NUM_VIDEO_IN_FORMATS, // NumberOfFormatArrayEntries
ZivaVideoInFormatArray, // StreamFormatsArray
0, // ClassReserved[0]
0, // ClassReserved[1]
0, // ClassReserved[2]
0, // ClassReserved[3]
2, // NumStreamPropArrayEntries
(PKSPROPERTY_SET)mpegVidPropSet, // StreamPropertiesArray
0, // NumStreamEventArrayEntries;
0, // StreamEventsArray;
NULL, // Category
NULL, // Name
0, // MediumsCount
NULL, // Mediums
},
// HW_STREAM_OBJECT ------------------------------------------------
{
sizeof (HW_STREAM_OBJECT), // SizeOfThisPacket
0, // StreamNumber
0, // HwStreamExtension
VideoReceiveDataPacket, // HwReceiveDataPacket
VideoReceiveCtrlPacket, // HwReceiveControlPacket
{ NULL, 0 }, // HW_CLOCK_OBJECT
TRUE, // Dma
TRUE, // Pio
0, // HwDeviceExtension
0, // StreamHeaderMediaSpecific
0, // StreamHeaderWorkspace
FALSE, // Allocator
NULL, // HwEventRoutine
{ 0, 0 }, // Reserved[2]
}
},
// -----------------------------------------------------------------
// The compressed Audio input stream
// -----------------------------------------------------------------
{
// HW_STREAM_INFORMATION -------------------------------------------
{
1, // NumberOfPossibleInstances
KSPIN_DATAFLOW_IN, // DataFlow
TRUE, // DataAccessible.
NUM_AUDIO_IN_FORMATS, // NumberOfFormatArrayEntries
ZivaAudioInFormatArray, // StreamFormatsArray
0, // ClassReserved[0]
0, // ClassReserved[1]
0, // ClassReserved[2]
0, // ClassReserved[3]
2, // cool. Fix hardcoded value // NumStreamPropArrayEntries
(PKSPROPERTY_SET)audPropSet, // StreamPropertiesArray
0, // NumStreamEventArrayEntries
0, // StreamEventsArray
NULL, // Category
NULL, // Name
0, // MediumsCount
NULL, // Mediums
},
// HW_STREAM_OBJECT ------------------------------------------------
{
sizeof (HW_STREAM_OBJECT), // SizeOfThisPacket
0, // StreamNumber
0, // HwStreamExtension
AudioReceiveDataPacket, // HwReceiveDataPacket
AudioReceiveCtrlPacket, // HwReceiveControlPacket
{ AudioClockFunction, // HW_CLOCK_OBJECT
CLOCK_SUPPORT_CAN_SET_ONBOARD_CLOCK |
CLOCK_SUPPORT_CAN_READ_ONBOARD_CLOCK |
CLOCK_SUPPORT_CAN_RETURN_STREAM_TIME,
{0,0} },
TRUE, // Dma
TRUE, // Pio
0, // HwDeviceExtension
0, // StreamHeaderMediaSpecific
0, // StreamHeaderWorkspace
FALSE, // Allocator
(PHW_EVENT_ROUTINE) AudioEventFunction, // HwEventRoutine
{ 0, 0 }, // Reserved[2]
}
},
// -----------------------------------------------------------------
// The Subpicture input stream
// -----------------------------------------------------------------
{
// HW_STREAM_INFORMATION -------------------------------------------
{
1, // NumberOfPossibleInstances
KSPIN_DATAFLOW_IN, // DataFlow
TRUE, // DataAccessible
NUM_SUBPICTURE_IN_FORMATS, // NumberOfFormatArrayEntries
ZivaSubPictureInFormatArray, // StreamFormatsArray
0, // ClassReserved[0]
0, // ClassReserved[1]
0, // ClassReserved[2]
0, // ClassReserved[3]
2, // NumStreamPropArrayEntries
(PKSPROPERTY_SET)SPPropSet, // StreamPropertiesArray
0, // NumStreamEventArrayEntries;
0, // StreamEventsArray;
NULL, // Category
NULL, // Name
0, // MediumsCount
NULL, // Mediums
},
// HW_STREAM_OBJECT ------------------------------------------------
{
sizeof (HW_STREAM_OBJECT), // SizeOfThisPacket
0, // StreamNumber
0, // HwStreamExtension
SubpictureReceiveDataPacket, // HwReceiveDataPacket
SubpictureReceiveCtrlPacket, // HwReceiveControlPacket
{ NULL, 0 }, // HW_CLOCK_OBJECT
TRUE, // Dma
TRUE, // Pio
0, // HwDeviceExtension
0, // StreamHeaderMediaSpecific
0, // StreamHeaderWorkspace
FALSE, // Allocator
NULL, // HwEventRoutine
{ 0, 0 }, // Reserved[2]
}
},
// -----------------------------------------------------------------
// The TV Video Output Stream
// -----------------------------------------------------------------
{
// HW_STREAM_INFORMATION -------------------------------------------
{
1, // NumberOfPossibleInstances
KSPIN_DATAFLOW_OUT, // DataFlow
FALSE, // DataAccessible
NUM_ANALOG_VIDEO_FORMATS, // NumberOfFormatArrayEntries
AnalogVideoFormats, // StreamFormatsArray
0, // ClassReserved[0]
0, // ClassReserved[1]
0, // ClassReserved[2]
0, // ClassReserved[3]
0, // NumStreamPropArrayEntries
0, // StreamPropertiesArray
0, // NumStreamEventArrayEntries;
0, // StreamEventsArray;
&AnalogVideoStreamPinName, // Category
&AnalogVideoStreamPinName, // Name
1, // MediumsCount
&CrossbarMediums[3], // Mediums
},
// HW_STREAM_OBJECT ------------------------------------------------
{
sizeof (HW_STREAM_OBJECT), // SizeOfThisPacket
0, // StreamNumber
0, // HwStreamExtension
VideoReceiveDataPacket, // HwReceiveDataPacket
VideoReceiveCtrlPacket, // HwReceiveControlPacket
NULL, // HW_CLOCK_OBJECT.HWClockFunction
0, // HW_CLOCK_OBJECT.ClockSupportFlags
FALSE, // Dma
TRUE, // Pio
0, // HwDeviceExtension
0, // StreamHeaderMediaSpecific
0, // StreamHeaderWorkspace
FALSE, // Allocator
NULL, // HwEventRoutine
},
}
// -----------------------------------------------------------------
// The TV Port output stream
// -----------------------------------------------------------------
{
// HW_STREAM_INFORMATION -------------------------------------------
{
1, // NumberOfPossibleInstances
KSPIN_DATAFLOW_OUT, // DataFlow
FALSE, // DataAccessible.
NUM_NTSC_OUT_FORMATS, // NumberOfFormatArrayEntries
ZivaNTSCOutFormatArray, // StreamFormatsArray
0, // ClassReserved[0]
0, // ClassReserved[1]
0, // ClassReserved[2]
0, // ClassReserved[3]
0, // cool. Fix hardcoded value // NumStreamPropArrayEntries
NULL, // StreamPropertiesArray
SIZEOF_ARRAY(VPVBIEventSet), // NumStreamEventArrayEntries
VPVBIEventSet, // StreamEventsArray
&VPVBIPinName, // Category
&VPVBIPinName, // Name
0, // MediumsCount
NULL, // Mediums
},
// HW_STREAM_OBJECT ------------------------------------------------
{
sizeof (HW_STREAM_OBJECT), // SizeOfThisPacket
0, // StreamNumber
0, // HwStreamExtension
VideoReceiveDataPacket, // HwReceiveDataPacket
VideoReceiveCtrlPacket, // HwReceiveControlPacket
{ NULL, 0 }, // HW_CLOCK_OBJECT
FALSE, // Dma
FALSE, // Pio
0, // HwDeviceExtension
0, // StreamHeaderMediaSpecific
0, // StreamHeaderWorkspace
FALSE, // Allocator
VPVBIStreamEventProc, // HwEventRoutine;
{ 0, 0 }, // Reserved[2]
}
},
};
#define DRIVER_STREAM_COUNT (sizeof (Streams) / sizeof (ALL_STREAM_INFO))
//---------------------------------------------------------------------------
// Topology
//---------------------------------------------------------------------------
// Categories define what the device does.
static GUID Categories[] = {
STATIC_KSCATEGORY_VIDEO,
STATIC_KSCATEGORY_CAPTURE,
STATIC_KSCATEGORY_CROSSBAR,
};
#define NUMBER_OF_CATEGORIES SIZEOF_ARRAY (Categories)
static KSTOPOLOGY Topology = {
NUMBER_OF_CATEGORIES, // CategoriesCount
(GUID*) &Categories, // Categories
0, // TopologyNodesCount
NULL, // TopologyNodes
0, // TopologyConnectionsCount
NULL, // TopologyConnections
NULL, // TopologyNodesNames
0, // Reserved
};
//---------------------------------------------------------------------------
// The Main stream header
//---------------------------------------------------------------------------
static HW_STREAM_HEADER StreamHeader =
{
DRIVER_STREAM_COUNT, // NumberOfStreams
sizeof (HW_STREAM_INFORMATION), // Future proofing
0, // NumDevPropArrayEntries set at init time
NULL, // DevicePropertiesArray set at init time
0, // NumDevEventArrayEntries;
NULL, // DeviceEventsArray;
&Topology // Pointer to Device Topology
};
#endif // _STRMINFO_H_