675 lines
29 KiB
C
675 lines
29 KiB
C
//==========================================================================;
|
||
//
|
||
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
|
||
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
|
||
// PURPOSE.
|
||
//
|
||
// Copyright (c) 1992 - 1996 Microsoft Corporation. All Rights Reserved.
|
||
//
|
||
//==========================================================================;
|
||
|
||
#ifndef __CAPSTRM_H__
|
||
#define __CAPSTRM_H__
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif // __cplusplus
|
||
|
||
|
||
KSPIN_MEDIUM StandardMedium = {
|
||
STATIC_KSMEDIUMSETID_Standard,
|
||
0, 0
|
||
};
|
||
|
||
// ------------------------------------------------------------------------
|
||
// The master list of all streams supported by this driver
|
||
// ------------------------------------------------------------------------
|
||
|
||
typedef enum {
|
||
STREAM_Capture,
|
||
#ifndef TOSHIBA
|
||
STREAM_Preview,
|
||
STREAM_AnalogVideoInput
|
||
#endif//TOSHIBA
|
||
};
|
||
|
||
// ------------------------------------------------------------------------
|
||
// Property sets for all video capture streams
|
||
// ------------------------------------------------------------------------
|
||
|
||
DEFINE_KSPROPERTY_TABLE(VideoStreamConnectionProperties)
|
||
{
|
||
DEFINE_KSPROPERTY_ITEM
|
||
(
|
||
KSPROPERTY_CONNECTION_ALLOCATORFRAMING,
|
||
TRUE, // GetSupported or Handler
|
||
sizeof(KSPROPERTY), // MinProperty
|
||
sizeof(KSALLOCATOR_FRAMING), // MinData
|
||
FALSE, // SetSupported or Handler
|
||
NULL, // Values
|
||
0, // RelationsCount
|
||
NULL, // Relations
|
||
NULL, // SupportHandler
|
||
0 // SerializedSize
|
||
),
|
||
};
|
||
|
||
DEFINE_KSPROPERTY_TABLE(VideoStreamDroppedFramesProperties)
|
||
{
|
||
DEFINE_KSPROPERTY_ITEM
|
||
(
|
||
KSPROPERTY_DROPPEDFRAMES_CURRENT,
|
||
TRUE, // GetSupported or Handler
|
||
sizeof(KSPROPERTY_DROPPEDFRAMES_CURRENT_S),// MinProperty
|
||
sizeof(KSPROPERTY_DROPPEDFRAMES_CURRENT_S),// MinData
|
||
FALSE, // SetSupported or Handler
|
||
NULL, // Values
|
||
0, // RelationsCount
|
||
NULL, // Relations
|
||
NULL, // SupportHandler
|
||
0 // SerializedSize
|
||
),
|
||
};
|
||
|
||
|
||
// ------------------------------------------------------------------------
|
||
// Array of all of the property sets supported by video streams
|
||
// ------------------------------------------------------------------------
|
||
|
||
DEFINE_KSPROPERTY_SET_TABLE(VideoStreamProperties)
|
||
{
|
||
DEFINE_KSPROPERTY_SET
|
||
(
|
||
&KSPROPSETID_Connection, // Set
|
||
SIZEOF_ARRAY(VideoStreamConnectionProperties), // PropertiesCount
|
||
VideoStreamConnectionProperties, // PropertyItem
|
||
0, // FastIoCount
|
||
NULL // FastIoTable
|
||
),
|
||
DEFINE_KSPROPERTY_SET
|
||
(
|
||
&PROPSETID_VIDCAP_DROPPEDFRAMES, // Set
|
||
SIZEOF_ARRAY(VideoStreamDroppedFramesProperties), // PropertiesCount
|
||
VideoStreamDroppedFramesProperties, // PropertyItem
|
||
0, // FastIoCount
|
||
NULL // FastIoTable
|
||
),
|
||
};
|
||
|
||
#define NUMBER_VIDEO_STREAM_PROPERTIES (SIZEOF_ARRAY(VideoStreamProperties))
|
||
|
||
//---------------------------------------------------------------------------
|
||
// All of the video and vbi data formats we might use
|
||
//---------------------------------------------------------------------------
|
||
|
||
#define D_X 320
|
||
#define D_Y 240
|
||
|
||
#ifdef TOSHIBA
|
||
static KS_DATARANGE_VIDEO StreamFormatYVU9_Capture =
|
||
{
|
||
// KSDATARANGE
|
||
{
|
||
sizeof (KS_DATARANGE_VIDEO), // FormatSize
|
||
0, // Flags
|
||
(D_X * D_Y * 9)/8, // SampleSize
|
||
0, // Reserved
|
||
|
||
STATIC_KSDATAFORMAT_TYPE_VIDEO, // aka. MEDIATYPE_Video
|
||
FOURCC_YVU9, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71, //MEDIASUBTYPE_YVU9
|
||
STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO // aka. FORMAT_VideoInfo
|
||
},
|
||
|
||
TRUE, // BOOL, bFixedSizeSamples (all samples same size?)
|
||
TRUE, // BOOL, bTemporalCompression (all I frames?)
|
||
0, // Reserved (was StreamDescriptionFlags)
|
||
0, // Reserved (was MemoryAllocationFlags (KS_VIDEO_ALLOC_*))
|
||
|
||
// _KS_VIDEO_STREAM_CONFIG_CAPS
|
||
{
|
||
STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO, // GUID
|
||
#if 1
|
||
KS_AnalogVideo_None, // VideoStandard
|
||
#else
|
||
KS_AnalogVideo_NTSC_M |
|
||
KS_AnalogVideo_PAL_B, // AnalogVideoStandard
|
||
#endif
|
||
640,480, // InputSize, (the inherent size of the incoming signal
|
||
// with every digitized pixel unique)
|
||
160,120, // MinCroppingSize, smallest rcSrc cropping rect allowed
|
||
640,480, // MaxCroppingSize, largest rcSrc cropping rect allowed
|
||
2, // CropGranularityX, granularity of cropping size
|
||
2, // CropGranularityY
|
||
2, // CropAlignX, alignment of cropping rect
|
||
2, // CropAlignY;
|
||
160, 120, // MinOutputSize, smallest bitmap stream can produce
|
||
640, 480, // MaxOutputSize, largest bitmap stream can produce
|
||
16, // OutputGranularityX, granularity of output bitmap size
|
||
4, // OutputGranularityY;
|
||
0, // StretchTapsX (0 no stretch, 1 pix dup, 2 interp...)
|
||
0, // StretchTapsY
|
||
2, // ShrinkTapsX
|
||
2, // ShrinkTapsY
|
||
333667, // MinFrameInterval, 100 nS units
|
||
640000000, // MaxFrameInterval, 100 nS units
|
||
30 * 160 * 120 * 9, // MinBitsPerSecond;
|
||
30 * 640 * 480 * 9 // MaxBitsPerSecond;
|
||
},
|
||
|
||
// KS_VIDEOINFOHEADER (default format)
|
||
{
|
||
0,0,0,0, // RECT rcSource;
|
||
0,0,0,0, // RECT rcTarget;
|
||
D_X * D_Y * 9 / 8 * 30, // DWORD dwBitRate;
|
||
0L, // DWORD dwBitErrorRate;
|
||
333667, // REFERENCE_TIME AvgTimePerFrame;
|
||
|
||
sizeof (KS_BITMAPINFOHEADER), // DWORD biSize;
|
||
D_X, // LONG biWidth;
|
||
D_Y, // LONG biHeight;
|
||
1, // WORD biPlanes;
|
||
9, // WORD biBitCount;
|
||
FOURCC_YVU9, // DWORD biCompression;
|
||
D_X * D_Y * 9 / 8, // DWORD biSizeImage;
|
||
0, // LONG biXPelsPerMeter;
|
||
0, // LONG biYPelsPerMeter;
|
||
0, // DWORD biClrUsed;
|
||
0 // DWORD biClrImportant;
|
||
}
|
||
};
|
||
|
||
static KS_DATARANGE_VIDEO StreamFormatYUV12_Capture =
|
||
{
|
||
// KSDATARANGE
|
||
{
|
||
sizeof (KS_DATARANGE_VIDEO), // FormatSize
|
||
0, // Flags
|
||
(D_X * D_Y * 12)/8, // SampleSize
|
||
0, // Reserved
|
||
|
||
STATIC_KSDATAFORMAT_TYPE_VIDEO, // aka. MEDIATYPE_Video
|
||
FOURCC_YUV12, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71, //MEDIASUBTYPE_YUV12
|
||
STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO // aka. FORMAT_VideoInfo
|
||
},
|
||
|
||
TRUE, // BOOL, bFixedSizeSamples (all samples same size?)
|
||
TRUE, // BOOL, bTemporalCompression (all I frames?)
|
||
0, // Reserved (was StreamDescriptionFlags)
|
||
0, // Reserved (was MemoryAllocationFlags (KS_VIDEO_ALLOC_*))
|
||
|
||
// _KS_VIDEO_STREAM_CONFIG_CAPS
|
||
{
|
||
STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO, // GUID
|
||
#if 1
|
||
KS_AnalogVideo_None, // VideoStandard
|
||
#else
|
||
KS_AnalogVideo_NTSC_M |
|
||
KS_AnalogVideo_PAL_B, // AnalogVideoStandard
|
||
#endif
|
||
640,480, // InputSize, (the inherent size of the incoming signal
|
||
// with every digitized pixel unique)
|
||
160,120, // MinCroppingSize, smallest rcSrc cropping rect allowed
|
||
640,480, // MaxCroppingSize, largest rcSrc cropping rect allowed
|
||
2, // CropGranularityX, granularity of cropping size
|
||
2, // CropGranularityY
|
||
2, // CropAlignX, alignment of cropping rect
|
||
2, // CropAlignY;
|
||
160, 120, // MinOutputSize, smallest bitmap stream can produce
|
||
640, 480, // MaxOutputSize, largest bitmap stream can produce
|
||
16, // OutputGranularityX, granularity of output bitmap size
|
||
4, // OutputGranularityY;
|
||
0, // StretchTapsX (0 no stretch, 1 pix dup, 2 interp...)
|
||
0, // StretchTapsY
|
||
2, // ShrinkTapsX
|
||
2, // ShrinkTapsY
|
||
333667, // MinFrameInterval, 100 nS units
|
||
640000000, // MaxFrameInterval, 100 nS units
|
||
30 * 160 * 120 * 12, // MinBitsPerSecond;
|
||
30 * 640 * 480 * 12 // MaxBitsPerSecond;
|
||
},
|
||
|
||
// KS_VIDEOINFOHEADER (default format)
|
||
{
|
||
0,0,0,0, // RECT rcSource;
|
||
0,0,0,0, // RECT rcTarget;
|
||
D_X * D_Y * 12 / 8 * 30, // DWORD dwBitRate;
|
||
0L, // DWORD dwBitErrorRate;
|
||
333667, // REFERENCE_TIME AvgTimePerFrame;
|
||
|
||
sizeof (KS_BITMAPINFOHEADER), // DWORD biSize;
|
||
D_X, // LONG biWidth;
|
||
D_Y, // LONG biHeight;
|
||
1, // WORD biPlanes;
|
||
12, // WORD biBitCount;
|
||
FOURCC_YUV12, // DWORD biCompression;
|
||
D_X * D_Y * 12 / 8, // DWORD biSizeImage;
|
||
0, // LONG biXPelsPerMeter;
|
||
0, // LONG biYPelsPerMeter;
|
||
0, // DWORD biClrUsed;
|
||
0 // DWORD biClrImportant;
|
||
}
|
||
};
|
||
#else //TOSHIBA
|
||
static KS_DATARANGE_VIDEO StreamFormatRGB24Bpp_Capture =
|
||
{
|
||
// KSDATARANGE
|
||
{
|
||
sizeof (KS_DATARANGE_VIDEO), // FormatSize
|
||
0, // Flags
|
||
D_X * D_Y * 3, // SampleSize
|
||
0, // Reserved
|
||
|
||
STATIC_KSDATAFORMAT_TYPE_VIDEO, // aka. MEDIATYPE_Video
|
||
0xe436eb7d, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70, //MEDIASUBTYPE_RGB24,
|
||
STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO // aka. FORMAT_VideoInfo
|
||
},
|
||
|
||
TRUE, // BOOL, bFixedSizeSamples (all samples same size?)
|
||
TRUE, // BOOL, bTemporalCompression (all I frames?)
|
||
0, // Reserved (was StreamDescriptionFlags)
|
||
0, // Reserved (was MemoryAllocationFlags (KS_VIDEO_ALLOC_*))
|
||
|
||
// _KS_VIDEO_STREAM_CONFIG_CAPS
|
||
{
|
||
STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO, // GUID
|
||
KS_AnalogVideo_NTSC_M |
|
||
KS_AnalogVideo_PAL_B, // AnalogVideoStandard
|
||
720,480, // InputSize, (the inherent size of the incoming signal
|
||
// with every digitized pixel unique)
|
||
160,120, // MinCroppingSize, smallest rcSrc cropping rect allowed
|
||
720,480, // MaxCroppingSize, largest rcSrc cropping rect allowed
|
||
8, // CropGranularityX, granularity of cropping size
|
||
1, // CropGranularityY
|
||
8, // CropAlignX, alignment of cropping rect
|
||
1, // CropAlignY;
|
||
160, 120, // MinOutputSize, smallest bitmap stream can produce
|
||
720, 480, // MaxOutputSize, largest bitmap stream can produce
|
||
8, // OutputGranularityX, granularity of output bitmap size
|
||
1, // OutputGranularityY;
|
||
0, // StretchTapsX (0 no stretch, 1 pix dup, 2 interp...)
|
||
0, // StretchTapsY
|
||
0, // ShrinkTapsX
|
||
0, // ShrinkTapsY
|
||
333667, // MinFrameInterval, 100 nS units
|
||
640000000, // MaxFrameInterval, 100 nS units
|
||
8 * 3 * 30 * 160 * 120, // MinBitsPerSecond;
|
||
8 * 3 * 30 * 720 * 480 // MaxBitsPerSecond;
|
||
},
|
||
|
||
// KS_VIDEOINFOHEADER (default format)
|
||
{
|
||
0,0,0,0, // RECT rcSource;
|
||
0,0,0,0, // RECT rcTarget;
|
||
D_X * D_Y * 3 * 30, // DWORD dwBitRate;
|
||
0L, // DWORD dwBitErrorRate;
|
||
333667, // REFERENCE_TIME AvgTimePerFrame;
|
||
|
||
sizeof (KS_BITMAPINFOHEADER), // DWORD biSize;
|
||
D_X, // LONG biWidth;
|
||
D_Y, // LONG biHeight;
|
||
1, // WORD biPlanes;
|
||
24, // WORD biBitCount;
|
||
KS_BI_RGB, // DWORD biCompression;
|
||
D_X * D_Y * 3, // DWORD biSizeImage;
|
||
0, // LONG biXPelsPerMeter;
|
||
0, // LONG biYPelsPerMeter;
|
||
0, // DWORD biClrUsed;
|
||
0 // DWORD biClrImportant;
|
||
}
|
||
};
|
||
|
||
#undef D_X
|
||
#undef D_Y
|
||
|
||
#define D_X 320
|
||
#define D_Y 240
|
||
|
||
|
||
static KS_DATARANGE_VIDEO StreamFormatUYU2_Capture =
|
||
{
|
||
// KSDATARANGE
|
||
{
|
||
sizeof (KS_DATARANGE_VIDEO), // FormatSize
|
||
0, // Flags
|
||
D_X * D_Y * 2, // SampleSize
|
||
0, // Reserved
|
||
|
||
STATIC_KSDATAFORMAT_TYPE_VIDEO, // aka. MEDIATYPE_Video
|
||
0x59565955, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71, //MEDIASUBTYPE_UYVY,
|
||
STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO // aka. FORMAT_VideoInfo
|
||
},
|
||
|
||
TRUE, // BOOL, bFixedSizeSamples (all samples same size?)
|
||
TRUE, // BOOL, bTemporalCompression (all I frames?)
|
||
0, // Reserved (was StreamDescriptionFlags)
|
||
0, // Reserved (was MemoryAllocationFlags (KS_VIDEO_ALLOC_*))
|
||
|
||
// _KS_VIDEO_STREAM_CONFIG_CAPS
|
||
{
|
||
STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO, // GUID
|
||
KS_AnalogVideo_NTSC_M |
|
||
KS_AnalogVideo_PAL_B, // AnalogVideoStandard
|
||
720,480, // InputSize, (the inherent size of the incoming signal
|
||
// with every digitized pixel unique)
|
||
160,120, // MinCroppingSize, smallest rcSrc cropping rect allowed
|
||
720,480, // MaxCroppingSize, largest rcSrc cropping rect allowed
|
||
8, // CropGranularityX, granularity of cropping size
|
||
1, // CropGranularityY
|
||
8, // CropAlignX, alignment of cropping rect
|
||
1, // CropAlignY;
|
||
160, 120, // MinOutputSize, smallest bitmap stream can produce
|
||
720, 480, // MaxOutputSize, largest bitmap stream can produce
|
||
8, // OutputGranularityX, granularity of output bitmap size
|
||
1, // OutputGranularityY;
|
||
0, // StretchTapsX (0 no stretch, 1 pix dup, 2 interp...)
|
||
0, // StretchTapsY
|
||
0, // ShrinkTapsX
|
||
0, // ShrinkTapsY
|
||
333667, // MinFrameInterval, 100 nS units
|
||
640000000, // MaxFrameInterval, 100 nS units
|
||
8 * 2 * 30 * 160 * 120, // MinBitsPerSecond;
|
||
8 * 2 * 30 * 720 * 480 // MaxBitsPerSecond;
|
||
},
|
||
|
||
// KS_VIDEOINFOHEADER (default format)
|
||
{
|
||
0,0,0,0, // RECT rcSource;
|
||
0,0,0,0, // RECT rcTarget;
|
||
D_X * D_Y * 2 * 30, // DWORD dwBitRate;
|
||
0L, // DWORD dwBitErrorRate;
|
||
333667, // REFERENCE_TIME AvgTimePerFrame;
|
||
|
||
sizeof (KS_BITMAPINFOHEADER), // DWORD biSize;
|
||
D_X, // LONG biWidth;
|
||
D_Y, // LONG biHeight;
|
||
1, // WORD biPlanes;
|
||
16, // WORD biBitCount;
|
||
FOURCC_YUV422, // DWORD biCompression;
|
||
D_X * D_Y * 2, // DWORD biSizeImage;
|
||
0, // LONG biXPelsPerMeter;
|
||
0, // LONG biYPelsPerMeter;
|
||
0, // DWORD biClrUsed;
|
||
0 // DWORD biClrImportant;
|
||
}
|
||
};
|
||
#endif//TOSHIBA
|
||
|
||
#undef D_X
|
||
#undef D_Y
|
||
|
||
#ifndef TOSHIBA
|
||
static KS_DATARANGE_ANALOGVIDEO StreamFormatAnalogVideo =
|
||
{
|
||
// KS_DATARANGE_ANALOGVIDEO
|
||
{
|
||
sizeof (KS_DATARANGE_ANALOGVIDEO), // FormatSize
|
||
0, // Flags
|
||
sizeof (KS_TVTUNER_CHANGE_INFO), // SampleSize
|
||
0, // Reserved
|
||
|
||
STATIC_KSDATAFORMAT_TYPE_ANALOGVIDEO, // aka MEDIATYPE_AnalogVideo
|
||
STATIC_KSDATAFORMAT_SUBTYPE_NONE,
|
||
STATIC_KSDATAFORMAT_SPECIFIER_ANALOGVIDEO, // aka FORMAT_AnalogVideo
|
||
},
|
||
// KS_ANALOGVIDEOINFO
|
||
{
|
||
0, 0, 720, 480, // rcSource;
|
||
0, 0, 720, 480, // rcTarget;
|
||
720, // dwActiveWidth;
|
||
480, // dwActiveHeight;
|
||
0, // REFERENCE_TIME AvgTimePerFrame;
|
||
}
|
||
};
|
||
#endif//TOSHIBA
|
||
|
||
|
||
//---------------------------------------------------------------------------
|
||
// STREAM_Capture Formats
|
||
//---------------------------------------------------------------------------
|
||
|
||
static PKSDATAFORMAT Stream0Formats[] =
|
||
{
|
||
#ifdef TOSHIBA
|
||
(PKSDATAFORMAT) &StreamFormatYUV12_Capture,
|
||
(PKSDATAFORMAT) &StreamFormatYVU9_Capture,
|
||
#else //TOSHIBA
|
||
(PKSDATAFORMAT) &StreamFormatRGB24Bpp_Capture,
|
||
(PKSDATAFORMAT) &StreamFormatUYU2_Capture,
|
||
#endif//TOSHIBA
|
||
};
|
||
#define NUM_STREAM_0_FORMATS (SIZEOF_ARRAY(Stream0Formats))
|
||
|
||
#ifndef TOSHIBA
|
||
//---------------------------------------------------------------------------
|
||
// STREAM_Preview Formats
|
||
//---------------------------------------------------------------------------
|
||
|
||
static PKSDATAFORMAT Stream1Formats[] =
|
||
{
|
||
#ifdef TOSHIBA
|
||
(PKSDATAFORMAT) &StreamFormatYUV12_Capture,
|
||
(PKSDATAFORMAT) &StreamFormatYVU9_Capture,
|
||
#else //TOSHIBA
|
||
(PKSDATAFORMAT) &StreamFormatRGB24Bpp_Capture,
|
||
(PKSDATAFORMAT) &StreamFormatUYU2_Capture,
|
||
#endif//TOSHIBA
|
||
};
|
||
#define NUM_STREAM_1_FORMATS (SIZEOF_ARRAY (Stream1Formats))
|
||
|
||
//---------------------------------------------------------------------------
|
||
// STREAM_AnalogVideoInput Formats
|
||
//---------------------------------------------------------------------------
|
||
|
||
static PKSDATAFORMAT Stream2Formats[] =
|
||
{
|
||
(PKSDATAFORMAT) &StreamFormatAnalogVideo,
|
||
};
|
||
#define NUM_STREAM_2_FORMATS (SIZEOF_ARRAY (Stream2Formats))
|
||
#endif//TOSHIBA
|
||
|
||
//---------------------------------------------------------------------------
|
||
// 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 [] =
|
||
{
|
||
// -----------------------------------------------------------------
|
||
// STREAM_Capture
|
||
// -----------------------------------------------------------------
|
||
{
|
||
// HW_STREAM_INFORMATION -------------------------------------------
|
||
{
|
||
1, // NumberOfPossibleInstances
|
||
KSPIN_DATAFLOW_OUT, // DataFlow
|
||
TRUE, // DataAccessible
|
||
NUM_STREAM_0_FORMATS, // NumberOfFormatArrayEntries
|
||
Stream0Formats, // StreamFormatsArray
|
||
0, // ClassReserved[0]
|
||
0, // ClassReserved[1]
|
||
0, // ClassReserved[2]
|
||
0, // ClassReserved[3]
|
||
NUMBER_VIDEO_STREAM_PROPERTIES, // NumStreamPropArrayEntries
|
||
(PKSPROPERTY_SET) VideoStreamProperties,// StreamPropertiesArray
|
||
0, // NumStreamEventArrayEntries;
|
||
0, // StreamEventsArray;
|
||
(GUID *) &PINNAME_VIDEO_CAPTURE, // Category
|
||
(GUID *) &PINNAME_VIDEO_CAPTURE, // Name
|
||
1, // MediumsCount
|
||
&StandardMedium, // Mediums
|
||
FALSE, // BridgeStream
|
||
},
|
||
|
||
// HW_STREAM_OBJECT ------------------------------------------------
|
||
{
|
||
sizeof (HW_STREAM_OBJECT), // SizeOfThisPacket
|
||
0, // StreamNumber
|
||
0, // HwStreamExtension
|
||
VideoReceiveDataPacket, // HwReceiveDataPacket
|
||
VideoReceiveCtrlPacket, // HwReceiveControlPacket
|
||
{ NULL, 0 }, // HW_CLOCK_OBJECT
|
||
FALSE, // Dma
|
||
TRUE, // Pio
|
||
NULL, // HwDeviceExtension
|
||
sizeof (KS_FRAME_INFO), // StreamHeaderMediaSpecific
|
||
0, // StreamHeaderWorkspace
|
||
FALSE, // Allocator
|
||
NULL, // HwEventRoutine
|
||
{ 0, 0 }, // Reserved[2]
|
||
},
|
||
#ifndef TOSHIBA
|
||
},
|
||
// -----------------------------------------------------------------
|
||
// STREAM_Preview
|
||
// -----------------------------------------------------------------
|
||
{
|
||
// HW_STREAM_INFORMATION -------------------------------------------
|
||
{
|
||
1, // NumberOfPossibleInstances
|
||
KSPIN_DATAFLOW_OUT, // DataFlow
|
||
TRUE, // DataAccessible
|
||
NUM_STREAM_1_FORMATS, // NumberOfFormatArrayEntries
|
||
Stream1Formats, // StreamFormatsArray
|
||
0, // ClassReserved[0]
|
||
0, // ClassReserved[1]
|
||
0, // ClassReserved[2]
|
||
0, // ClassReserved[3]
|
||
NUMBER_VIDEO_STREAM_PROPERTIES, // NumStreamPropArrayEntries
|
||
(PKSPROPERTY_SET) VideoStreamProperties,// StreamPropertiesArray
|
||
0, // NumStreamEventArrayEntries;
|
||
0, // StreamEventsArray;
|
||
(GUID *) &PINNAME_VIDEO_PREVIEW, // Category
|
||
(GUID *) &PINNAME_VIDEO_PREVIEW, // Name
|
||
1, // MediumsCount
|
||
&StandardMedium, // Mediums
|
||
FALSE, // BridgeStream
|
||
},
|
||
|
||
// HW_STREAM_OBJECT ------------------------------------------------
|
||
{
|
||
sizeof (HW_STREAM_OBJECT), // SizeOfThisPacket
|
||
1, // StreamNumber
|
||
0, // HwStreamExtension
|
||
VideoReceiveDataPacket, // HwReceiveDataPacket
|
||
VideoReceiveCtrlPacket, // HwReceiveControlPacket
|
||
{ NULL, 0 }, // HW_CLOCK_OBJECT
|
||
FALSE, // Dma
|
||
TRUE, // Pio
|
||
0, // HwDeviceExtension
|
||
sizeof (KS_FRAME_INFO), // StreamHeaderMediaSpecific
|
||
0, // StreamHeaderWorkspace
|
||
FALSE, // Allocator
|
||
NULL, // HwEventRoutine
|
||
{ 0, 0 }, // Reserved[2]
|
||
},
|
||
},
|
||
// -----------------------------------------------------------------
|
||
// STREAM_AnalogVideoInput
|
||
// -----------------------------------------------------------------
|
||
{
|
||
// HW_STREAM_INFORMATION -------------------------------------------
|
||
{
|
||
1, // NumberOfPossibleInstances
|
||
KSPIN_DATAFLOW_IN, // DataFlow
|
||
TRUE, // DataAccessible
|
||
NUM_STREAM_2_FORMATS, // NumberOfFormatArrayEntries
|
||
Stream2Formats, // StreamFormatsArray
|
||
0, // ClassReserved[0]
|
||
0, // ClassReserved[1]
|
||
0, // ClassReserved[2]
|
||
0, // ClassReserved[3]
|
||
0, // NumStreamPropArrayEntries
|
||
0, // StreamPropertiesArray
|
||
0, // NumStreamEventArrayEntries;
|
||
0, // StreamEventsArray;
|
||
(GUID *) &PINNAME_VIDEO_ANALOGVIDEOIN, // Category
|
||
(GUID *) &PINNAME_VIDEO_ANALOGVIDEOIN, // Name
|
||
1, // MediumsCount
|
||
&CrossbarMediums[9], // Mediums
|
||
FALSE, // BridgeStream
|
||
},
|
||
|
||
// HW_STREAM_OBJECT ------------------------------------------------
|
||
{
|
||
sizeof (HW_STREAM_OBJECT), // SizeOfThisPacket
|
||
2, // StreamNumber
|
||
0, // HwStreamExtension
|
||
AnalogVideoReceiveDataPacket, // HwReceiveDataPacket
|
||
AnalogVideoReceiveCtrlPacket, // HwReceiveControlPacket
|
||
{ NULL, 0 }, // HW_CLOCK_OBJECT
|
||
FALSE, // Dma
|
||
TRUE, // Pio
|
||
0, // HwDeviceExtension
|
||
0, // StreamHeaderMediaSpecific
|
||
0, // StreamHeaderWorkspace
|
||
FALSE, // Allocator
|
||
NULL, // HwEventRoutine
|
||
{ 0, 0 }, // Reserved[2]
|
||
}
|
||
#endif//TOSHIBA
|
||
}
|
||
};
|
||
|
||
#define DRIVER_STREAM_COUNT (SIZEOF_ARRAY (Streams))
|
||
|
||
|
||
//---------------------------------------------------------------------------
|
||
// Topology
|
||
//---------------------------------------------------------------------------
|
||
|
||
// Categories define what the device does.
|
||
|
||
static const GUID Categories[] = {
|
||
#ifdef TOSHIBA
|
||
STATIC_KSCATEGORY_VIDEO,
|
||
STATIC_KSCATEGORY_CAPTURE,
|
||
#else //TOSHIBA
|
||
STATIC_KSCATEGORY_VIDEO,
|
||
STATIC_KSCATEGORY_CAPTURE,
|
||
STATIC_KSCATEGORY_TVTUNER,
|
||
STATIC_KSCATEGORY_CROSSBAR,
|
||
STATIC_KSCATEGORY_TVAUDIO
|
||
#endif//TOSHIBA
|
||
};
|
||
|
||
#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
|
||
};
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif // __cplusplus
|
||
|
||
#endif // __CAPSTRM_H__
|
||
|