Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
f98cda6a
Commit
f98cda6a
authored
Feb 22, 2011
by
Jean-Baptiste Kempf
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
DShow: Split the GUIDs and the definition to another header
parent
4ff21256
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
361 additions
and
310 deletions
+361
-310
modules/access/dshow/Modules.am
modules/access/dshow/Modules.am
+1
-1
modules/access/dshow/access.h
modules/access/dshow/access.h
+1
-308
modules/access/dshow/filter.h
modules/access/dshow/filter.h
+2
-1
modules/access/dshow/vlc_dshow.h
modules/access/dshow/vlc_dshow.h
+357
-0
No files found.
modules/access/dshow/Modules.am
View file @
f98cda6a
SOURCES_dshow = dshow.cpp access.h filter.cpp filter.h crossbar.cpp
SOURCES_dshow =
vlc_dshow.h
dshow.cpp access.h filter.cpp filter.h crossbar.cpp
modules/access/dshow/access.h
View file @
f98cda6a
...
@@ -47,6 +47,7 @@ using namespace std;
...
@@ -47,6 +47,7 @@ using namespace std;
# define LONGLONG long long
# define LONGLONG long long
#endif
#endif
#include "vlc_dshow.h"
#include <dshow.h>
#include <dshow.h>
typedef
struct
dshow_stream_t
dshow_stream_t
;
typedef
struct
dshow_stream_t
dshow_stream_t
;
...
@@ -98,311 +99,3 @@ struct access_sys_t
...
@@ -98,311 +99,3 @@ struct access_sys_t
bool
b_chroma
;
/* Force a specific chroma on the dshow input */
bool
b_chroma
;
/* Force a specific chroma on the dshow input */
};
};
#define INSTANCEDATA_OF_PROPERTY_PTR(x) ((PKSPROPERTY((x))) + 1)
#define INSTANCEDATA_OF_PROPERTY_SIZE(x) (sizeof((x)) - sizeof(KSPROPERTY))
/*****************************************************************************
* DirectShow GUIDs.
*****************************************************************************/
static
const
GUID
PROPSETID_TUNER
=
{
0x6a2e0605
,
0x28e4
,
0x11d0
,
{
0xa1
,
0x8c
,
0x00
,
0xa0
,
0xc9
,
0x11
,
0x89
,
0x56
}};
const
GUID
IID_IAMBufferNegotiation
=
{
0x56ed71a0
,
0xaf5f
,
0x11d0
,
{
0xb3
,
0xf0
,
0x00
,
0xaa
,
0x00
,
0x37
,
0x61
,
0xc5
}};
const
GUID
IID_IAMTVAudio
=
{
0x83EC1C30
,
0x23D1
,
0x11d1
,
{
0x99
,
0xE6
,
0x00
,
0xA0
,
0xC9
,
0x56
,
0x02
,
0x66
}};
const
GUID
IID_IAMCrossbar
=
{
0xC6E13380
,
0x30AC
,
0x11d0
,
{
0xA1
,
0x8C
,
0x00
,
0xA0
,
0xC9
,
0x11
,
0x89
,
0x56
}};
const
GUID
IID_IAMTVTuner
=
{
0x211A8766
,
0x03AC
,
0x11d1
,
{
0x8D
,
0x13
,
0x00
,
0xAA
,
0x00
,
0xBD
,
0x83
,
0x39
}};
/****************************************************************************
* The following should be in ks.h and ksmedia.h, but since they are not in
* the current version of Mingw, we will be defined here.
****************************************************************************/
/* http://msdn.microsoft.com/en-us/library/ff567297%28VS.85%29.aspx */
typedef
enum
{
KS_AnalogVideo_None
=
0x00000000
,
KS_AnalogVideo_NTSC_M
=
0x00000001
,
KS_AnalogVideo_NTSC_M_J
=
0x00000002
,
KS_AnalogVideo_NTSC_433
=
0x00000004
,
KS_AnalogVideo_PAL_B
=
0x00000010
,
KS_AnalogVideo_PAL_D
=
0x00000020
,
KS_AnalogVideo_PAL_G
=
0x00000040
,
KS_AnalogVideo_PAL_H
=
0x00000080
,
KS_AnalogVideo_PAL_I
=
0x00000100
,
KS_AnalogVideo_PAL_M
=
0x00000200
,
KS_AnalogVideo_PAL_N
=
0x00000400
,
KS_AnalogVideo_PAL_60
=
0x00000800
,
KS_AnalogVideo_SECAM_B
=
0x00001000
,
KS_AnalogVideo_SECAM_D
=
0x00002000
,
KS_AnalogVideo_SECAM_G
=
0x00004000
,
KS_AnalogVideo_SECAM_H
=
0x00008000
,
KS_AnalogVideo_SECAM_K
=
0x00010000
,
KS_AnalogVideo_SECAM_K1
=
0x00020000
,
KS_AnalogVideo_SECAM_L
=
0x00040000
,
KS_AnalogVideo_SECAM_L1
=
0x00080000
,
KS_AnalogVideo_PAL_N_COMBO
=
0x00100000
}
KS_AnalogVideoStandard
;
/* http://msdn.microsoft.com/en-us/library/ff567800%28VS.85%29.aspx and following */
typedef
enum
{
KSPROPERTY_TUNER_CAPS
,
// R -overall device capabilities
KSPROPERTY_TUNER_MODE_CAPS
,
// R -capabilities in this mode
KSPROPERTY_TUNER_MODE
,
// RW -set a mode (TV, FM, AM, DSS)
KSPROPERTY_TUNER_STANDARD
,
// R -get TV standard (only if TV mode)
KSPROPERTY_TUNER_FREQUENCY
,
// RW -set/get frequency
KSPROPERTY_TUNER_INPUT
,
// RW -select an input
KSPROPERTY_TUNER_STATUS
,
// R -tuning status
/* Optional */
KSPROPERTY_TUNER_IF_MEDIUM
,
// R O-Medium for IF or Transport Pin
/* Mandatory for Vista and + */
KSPROPERTY_TUNER_SCAN_CAPS
,
// R -overall device capabilities for scanning
/* Optional ones */
KSPROPERTY_TUNER_SCAN_STATUS
,
// R -status of scan
KSPROPERTY_TUNER_STANDARD_MODE
,
// RW -autodetect mode for signal standard
KSPROPERTY_TUNER_NETWORKTYPE_SCAN_CAPS
// R -network type specific tuner capabilities
}
KSPROPERTY_TUNER
;
/* http://msdn.microsoft.com/en-us/library/ff567689%28v=VS.85%29.aspx */
typedef
enum
{
KS_TUNER_TUNING_EXACT
=
1
,
// Tunes directly to the right freq
KS_TUNER_TUNING_FINE
,
// Comprehensive search to the right freq
KS_TUNER_TUNING_COARSE
,
// Fast search
}
KS_TUNER_TUNING_FLAGS
;
/* http://msdn.microsoft.com/en-us/library/ff567687%28v=VS.85%29.aspx */
typedef
enum
{
KS_TUNER_STRATEGY_PLL
=
0X01
,
// Phase locked loop (PLL) offset tuning
KS_TUNER_STRATEGY_SIGNAL_STRENGTH
=
0X02
,
// Signal strength tuning
KS_TUNER_STRATEGY_DRIVER_TUNES
=
0X04
,
// Driver tunes
}
KS_TUNER_STRATEGY
;
/* http://msdn.microsoft.com/en-us/library/ff562676%28VS.85%29.aspx */
typedef
struct
{
union
{
struct
{
GUID
Set
;
ULONG
Id
;
ULONG
Flags
;
};
LONGLONG
Alignment
;
}
;
}
KSIDENTIFIER
,
*
PKSIDENTIFIER
;
typedef
KSIDENTIFIER
KSPROPERTY
,
*
PKSPROPERTY
;
/* http://msdn.microsoft.com/en-us/library/ff565872%28v=VS.85%29.aspx */
typedef
struct
{
KSPROPERTY
Property
;
ULONG
Mode
;
// KSPROPERTY_TUNER_MODE_*
ULONG
StandardsSupported
;
// KS_AnalogVideo_* (if Mode is TV or DSS)
ULONG
MinFrequency
;
// Hz
ULONG
MaxFrequency
;
// Hz
ULONG
TuningGranularity
;
// Hz
ULONG
NumberOfInputs
;
// number of inputs
ULONG
SettlingTime
;
// milliSeconds
ULONG
Strategy
;
// KS_TUNER_STRATEGY
}
KSPROPERTY_TUNER_MODE_CAPS_S
,
*
PKSPROPERTY_TUNER_MODE_CAPS_S
;
/* http://msdn.microsoft.com/en-us/library/ff565839%28v=VS.85%29.aspx */
typedef
struct
{
KSPROPERTY
Property
;
ULONG
Frequency
;
// Hz
ULONG
LastFrequency
;
// Hz (last tuned)
ULONG
TuningFlags
;
// KS_TUNER_TUNING_FLAGS
ULONG
VideoSubChannel
;
// DSS
ULONG
AudioSubChannel
;
// DSS
ULONG
Channel
;
// VBI decoders
ULONG
Country
;
// VBI decoders
}
KSPROPERTY_TUNER_FREQUENCY_S
,
*
PKSPROPERTY_TUNER_FREQUENCY_S
;
/* http://msdn.microsoft.com/en-us/library/ff565918%28v=VS.85%29.aspx */
typedef
struct
{
KSPROPERTY
Property
;
ULONG
Standard
;
// KS_AnalogVideo_*
}
KSPROPERTY_TUNER_STANDARD_S
,
*
PKSPROPERTY_TUNER_STANDARD_S
;
/* http://msdn.microsoft.com/en-us/library/dd373441%28v=vs.85%29.aspx */
typedef
enum
tagAMTunerModeType
{
AMTUNER_MODE_DEFAULT
=
0x0000
,
AMTUNER_MODE_TV
=
0x0001
,
AMTUNER_MODE_FM_RADIO
=
0x0002
,
AMTUNER_MODE_AM_RADIO
=
0x0004
,
AMTUNER_MODE_DSS
=
0x0008
}
AMTunerModeType
;
#define AMPROPERTY_PIN_CATEGORY 0
typedef
enum
tagAMTunerSubChannel
{
AMTUNER_SUBCHAN_NO_TUNE
=
-
2
,
AMTUNER_SUBCHAN_DEFAULT
=
-
1
}
AMTunerSubChannel
;
/* http://msdn.microsoft.com/en-us/library/dd407232%28v=vs.85%29.aspx */
typedef
enum
tagTunerInputType
{
TunerInputCable
=
0
,
TunerInputAntenna
=
TunerInputCable
+
1
}
TunerInputType
;
typedef
enum
tagAMTunerEventType
{
AMTUNER_EVENT_CHANGED
=
0x1
}
AMTunerEventType
;
/* http://msdn.microsoft.com/en-us/library/dd377421%28v=vs.85%29.aspx */
typedef
enum
tagPhysicalConnectorType
{
PhysConn_Video_Tuner
=
1
,
PhysConn_Video_Composite
,
PhysConn_Video_SVideo
,
PhysConn_Video_RGB
,
PhysConn_Video_YRYBY
,
PhysConn_Video_SerialDigital
,
PhysConn_Video_ParallelDigital
,
PhysConn_Video_SCSI
,
PhysConn_Video_AUX
,
PhysConn_Video_1394
,
PhysConn_Video_USB
,
PhysConn_Video_VideoDecoder
,
PhysConn_Video_VideoEncoder
,
PhysConn_Video_SCART
,
PhysConn_Video_Black
,
PhysConn_Audio_Tuner
=
4096
,
/* 0x1000 */
PhysConn_Audio_Line
,
PhysConn_Audio_Mic
,
PhysConn_Audio_AESDigital
,
PhysConn_Audio_SPDIFDigital
,
PhysConn_Audio_SCSI
,
PhysConn_Audio_AUX
,
PhysConn_Audio_1394
,
PhysConn_Audio_USB
,
PhysConn_Audio_AudioDecoder
}
PhysicalConnectorType
;
/* http://msdn.microsoft.com/en-us/library/dd407352%28v=vs.85%29.aspx */
typedef
struct
_VIDEO_STREAM_CONFIG_CAPS
{
GUID
guid
;
ULONG
VideoStandard
;
SIZE
InputSize
;
SIZE
MinCroppingSize
;
SIZE
MaxCroppingSize
;
int
CropGranularityX
;
int
CropGranularityY
;
int
CropAlignX
;
int
CropAlignY
;
SIZE
MinOutputSize
;
SIZE
MaxOutputSize
;
int
OutputGranularityX
;
int
OutputGranularityY
;
int
StretchTapsX
;
int
StretchTapsY
;
int
ShrinkTapsX
;
int
ShrinkTapsY
;
LONGLONG
MinFrameInterval
;
LONGLONG
MaxFrameInterval
;
LONG
MinBitsPerSecond
;
LONG
MaxBitsPerSecond
;
}
VIDEO_STREAM_CONFIG_CAPS
;
/* http://msdn.microsoft.com/en-us/library/dd317597%28v=vs.85%29.aspx */
typedef
struct
_AUDIO_STREAM_CONFIG_CAPS
{
GUID
guid
;
ULONG
MinimumChannels
;
ULONG
MaximumChannels
;
ULONG
ChannelsGranularity
;
ULONG
MinimumBitsPerSample
;
ULONG
MaximumBitsPerSample
;
ULONG
BitsPerSampleGranularity
;
ULONG
MinimumSampleFrequency
;
ULONG
MaximumSampleFrequency
;
ULONG
SampleFrequencyGranularity
;
}
AUDIO_STREAM_CONFIG_CAPS
;
/* http://msdn.microsoft.com/en-us/library/dd389142%28v=vs.85%29.aspx */
#undef INTERFACE
#define INTERFACE IAMBufferNegotiation
DECLARE_INTERFACE_
(
IAMBufferNegotiation
,
IUnknown
)
{
STDMETHOD
(
QueryInterface
)
(
THIS_
REFIID
,
PVOID
*
)
PURE
;
STDMETHOD_
(
ULONG
,
AddRef
)(
THIS
);
STDMETHOD_
(
ULONG
,
Release
)(
THIS
);
STDMETHOD
(
SuggestAllocatorProperties
)(
THIS_
const
ALLOCATOR_PROPERTIES
*
);
STDMETHOD
(
GetAllocatorProperties
)(
THIS_
ALLOCATOR_PROPERTIES
*
);
};
/* http://msdn.microsoft.com/en-us/library/dd389171%28v=vs.85%29.aspx */
#undef INTERFACE
#define INTERFACE IAMCrossbar
DECLARE_INTERFACE_
(
IAMCrossbar
,
IUnknown
)
{
STDMETHOD
(
QueryInterface
)
(
THIS_
REFIID
,
PVOID
*
)
PURE
;
STDMETHOD_
(
ULONG
,
AddRef
)
(
THIS
);
STDMETHOD_
(
ULONG
,
Release
)
(
THIS
);
STDMETHOD
(
get_PinCounts
)
(
THIS_
long
*
,
long
*
);
STDMETHOD
(
CanRoute
)
(
THIS_
long
,
long
);
STDMETHOD
(
Route
)
(
THIS_
long
,
long
);
STDMETHOD
(
get_IsRoutedTo
)
(
THIS_
long
,
long
*
);
STDMETHOD
(
get_CrossbarPinInfo
)
(
THIS_
BOOL
,
long
,
long
*
,
long
*
);
};
/* http://msdn.microsoft.com/en-us/library/dd375945%28v=vs.85%29.aspx */
#undef INTERFACE
#define INTERFACE IAMTunerNotification
DECLARE_INTERFACE_
(
IAMTunerNotification
,
IUnknown
)
{
STDMETHOD
(
QueryInterface
)
(
THIS_
REFIID
,
PVOID
*
)
PURE
;
STDMETHOD_
(
ULONG
,
AddRef
)
(
THIS
);
STDMETHOD_
(
ULONG
,
Release
)
(
THIS
);
STDMETHOD
(
OnEvent
)
(
THIS_
AMTunerEventType
);
};
/* http://msdn.microsoft.com/en-us/library/dd375971%28v=vs.85%29.aspx */
#undef INTERFACE
#define INTERFACE IAMTVTuner
DECLARE_INTERFACE_
(
IAMTVTuner
,
IUnknown
)
{
STDMETHOD
(
QueryInterface
)
(
THIS_
REFIID
,
PVOID
*
)
PURE
;
STDMETHOD_
(
ULONG
,
AddRef
)
(
THIS
);
STDMETHOD_
(
ULONG
,
Release
)
(
THIS
);
STDMETHOD
(
put_Channel
)
(
THIS_
long
,
long
,
long
);
STDMETHOD
(
get_Channel
)
(
THIS_
long
*
,
long
*
,
long
*
);
STDMETHOD
(
ChannelMinMax
)
(
THIS_
long
*
,
long
*
);
STDMETHOD
(
put_CountryCode
)
(
THIS_
long
);
STDMETHOD
(
get_CountryCode
)
(
THIS_
long
*
);
STDMETHOD
(
put_TuningSpace
)
(
THIS_
long
);
STDMETHOD
(
get_TuningSpace
)
(
THIS_
long
*
);
STDMETHOD
(
Logon
)
(
THIS_
HANDLE
);
STDMETHOD
(
Logout
)
(
IAMTVTuner
*
);
STDMETHOD
(
SignalPresen
)
(
THIS_
long
*
);
STDMETHOD
(
put_Mode
)
(
THIS_
AMTunerModeType
);
STDMETHOD
(
get_Mode
)
(
THIS_
AMTunerModeType
*
);
STDMETHOD
(
GetAvailableModes
)
(
THIS_
long
*
);
STDMETHOD
(
RegisterNotificationCallBack
)
(
THIS_
IAMTunerNotification
*
,
long
);
STDMETHOD
(
UnRegisterNotificationCallBack
)
(
THIS_
IAMTunerNotification
*
);
STDMETHOD
(
get_AvailableTVFormats
)
(
THIS_
long
*
);
STDMETHOD
(
get_TVFormat
)
(
THIS_
long
*
);
STDMETHOD
(
AutoTune
)
(
THIS_
long
,
long
*
);
STDMETHOD
(
StoreAutoTune
)
(
IAMTVTuner
*
);
STDMETHOD
(
get_NumInputConnections
)
(
THIS_
long
*
);
STDMETHOD
(
put_InputType
)
(
THIS_
long
,
TunerInputType
);
STDMETHOD
(
get_InputType
)
(
THIS_
long
,
TunerInputType
*
);
STDMETHOD
(
put_ConnectInput
)
(
THIS_
long
);
STDMETHOD
(
get_ConnectInput
)
(
THIS_
long
*
);
STDMETHOD
(
get_VideoFrequency
)
(
THIS_
long
*
);
STDMETHOD
(
get_AudioFrequency
)
(
THIS_
long
*
);
};
/* http://msdn.microsoft.com/en-us/library/dd375962%28v=vs.85%29.aspx */
#undef INTERFACE
#define INTERFACE IAMTVAudio
DECLARE_INTERFACE_
(
IAMTVAudio
,
IUnknown
)
{
STDMETHOD
(
QueryInterface
)
(
THIS_
REFIID
,
PVOID
*
)
PURE
;
STDMETHOD_
(
ULONG
,
AddRef
)
(
THIS
);
STDMETHOD_
(
ULONG
,
Release
)
(
THIS
);
STDMETHOD
(
GetHardwareSupportedTVAudioModes
)
(
THIS_
long
*
);
STDMETHOD
(
GetAvailableTVAudioModes
)
(
THIS_
long
*
);
STDMETHOD
(
get_TVAudioMode
)
(
THIS_
long
*
);
STDMETHOD
(
put_TVAudioMode
)
(
THIS_
long
);
STDMETHOD
(
RegisterNotificationCallBack
)
(
THIS_
IAMTunerNotification
*
,
long
);
STDMETHOD
(
UnRegisterNotificationCallBack
)
(
THIS_
IAMTunerNotification
*
);
};
modules/access/dshow/filter.h
View file @
f98cda6a
/*****************************************************************************
/*****************************************************************************
* filter.h : DirectShow access module for vlc
* filter.h : DirectShow access module for vlc:
* CapturePin, CaptureFilter, CaptureEnumPins implementations
*****************************************************************************
*****************************************************************************
* Copyright (C) 2002-2004, 2008 the VideoLAN team
* Copyright (C) 2002-2004, 2008 the VideoLAN team
* $Id$
* $Id$
...
...
modules/access/dshow/vlc_dshow.h
0 → 100644
View file @
f98cda6a
/*****************************************************************************
* common.h : DirectShow access module for vlc
*****************************************************************************
* Copyright (C) 2002, 2004, 2010 the VideoLAN team
* $Id$
*
* Author: Gildas Bazin <gbazin@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <string>
#include <list>
#include <deque>
using
namespace
std
;
#ifndef _MSC_VER
# include <wtypes.h>
# include <unknwn.h>
# include <ole2.h>
# include <limits.h>
# ifdef _WINGDI_
# undef _WINGDI_
# endif
# define _WINGDI_ 1
# define AM_NOVTABLE
# define _OBJBASE_H_
# undef _X86_
# ifndef _I64_MAX
# define _I64_MAX LONG_LONG_MAX
# endif
# define LONGLONG long long
#endif
#include <dshow.h>
#define INSTANCEDATA_OF_PROPERTY_PTR(x) ((PKSPROPERTY((x))) + 1)
#define INSTANCEDATA_OF_PROPERTY_SIZE(x) (sizeof((x)) - sizeof(KSPROPERTY))
/*****************************************************************************
* DirectShow GUIDs.
*****************************************************************************/
static
const
GUID
PROPSETID_TUNER
=
{
0x6a2e0605
,
0x28e4
,
0x11d0
,
{
0xa1
,
0x8c
,
0x00
,
0xa0
,
0xc9
,
0x11
,
0x89
,
0x56
}};
const
GUID
IID_IAMBufferNegotiation
=
{
0x56ed71a0
,
0xaf5f
,
0x11d0
,
{
0xb3
,
0xf0
,
0x00
,
0xaa
,
0x00
,
0x37
,
0x61
,
0xc5
}};
const
GUID
IID_IAMTVAudio
=
{
0x83EC1C30
,
0x23D1
,
0x11d1
,
{
0x99
,
0xE6
,
0x00
,
0xA0
,
0xC9
,
0x56
,
0x02
,
0x66
}};
const
GUID
IID_IAMCrossbar
=
{
0xC6E13380
,
0x30AC
,
0x11d0
,
{
0xA1
,
0x8C
,
0x00
,
0xA0
,
0xC9
,
0x11
,
0x89
,
0x56
}};
const
GUID
IID_IAMTVTuner
=
{
0x211A8766
,
0x03AC
,
0x11d1
,
{
0x8D
,
0x13
,
0x00
,
0xAA
,
0x00
,
0xBD
,
0x83
,
0x39
}};
/****************************************************************************
* The following should be in ks.h and ksmedia.h, but since they are not in
* the current version of Mingw, we will be defined here.
****************************************************************************/
/* http://msdn.microsoft.com/en-us/library/ff567297%28VS.85%29.aspx */
typedef
enum
{
KS_AnalogVideo_None
=
0x00000000
,
KS_AnalogVideo_NTSC_M
=
0x00000001
,
KS_AnalogVideo_NTSC_M_J
=
0x00000002
,
KS_AnalogVideo_NTSC_433
=
0x00000004
,
KS_AnalogVideo_PAL_B
=
0x00000010
,
KS_AnalogVideo_PAL_D
=
0x00000020
,
KS_AnalogVideo_PAL_G
=
0x00000040
,
KS_AnalogVideo_PAL_H
=
0x00000080
,
KS_AnalogVideo_PAL_I
=
0x00000100
,
KS_AnalogVideo_PAL_M
=
0x00000200
,
KS_AnalogVideo_PAL_N
=
0x00000400
,
KS_AnalogVideo_PAL_60
=
0x00000800
,
KS_AnalogVideo_SECAM_B
=
0x00001000
,
KS_AnalogVideo_SECAM_D
=
0x00002000
,
KS_AnalogVideo_SECAM_G
=
0x00004000
,
KS_AnalogVideo_SECAM_H
=
0x00008000
,
KS_AnalogVideo_SECAM_K
=
0x00010000
,
KS_AnalogVideo_SECAM_K1
=
0x00020000
,
KS_AnalogVideo_SECAM_L
=
0x00040000
,
KS_AnalogVideo_SECAM_L1
=
0x00080000
,
KS_AnalogVideo_PAL_N_COMBO
=
0x00100000
}
KS_AnalogVideoStandard
;
/* http://msdn.microsoft.com/en-us/library/ff567800%28VS.85%29.aspx and following */
typedef
enum
{
KSPROPERTY_TUNER_CAPS
,
// R -overall device capabilities
KSPROPERTY_TUNER_MODE_CAPS
,
// R -capabilities in this mode
KSPROPERTY_TUNER_MODE
,
// RW -set a mode (TV, FM, AM, DSS)
KSPROPERTY_TUNER_STANDARD
,
// R -get TV standard (only if TV mode)
KSPROPERTY_TUNER_FREQUENCY
,
// RW -set/get frequency
KSPROPERTY_TUNER_INPUT
,
// RW -select an input
KSPROPERTY_TUNER_STATUS
,
// R -tuning status
/* Optional */
KSPROPERTY_TUNER_IF_MEDIUM
,
// R O-Medium for IF or Transport Pin
/* Mandatory for Vista and + */
KSPROPERTY_TUNER_SCAN_CAPS
,
// R -overall device capabilities for scanning
/* Optional ones */
KSPROPERTY_TUNER_SCAN_STATUS
,
// R -status of scan
KSPROPERTY_TUNER_STANDARD_MODE
,
// RW -autodetect mode for signal standard
KSPROPERTY_TUNER_NETWORKTYPE_SCAN_CAPS
// R -network type specific tuner capabilities
}
KSPROPERTY_TUNER
;
/* http://msdn.microsoft.com/en-us/library/ff567689%28v=VS.85%29.aspx */
typedef
enum
{
KS_TUNER_TUNING_EXACT
=
1
,
// Tunes directly to the right freq
KS_TUNER_TUNING_FINE
,
// Comprehensive search to the right freq
KS_TUNER_TUNING_COARSE
,
// Fast search
}
KS_TUNER_TUNING_FLAGS
;
/* http://msdn.microsoft.com/en-us/library/ff567687%28v=VS.85%29.aspx */
typedef
enum
{
KS_TUNER_STRATEGY_PLL
=
0X01
,
// Phase locked loop (PLL) offset tuning
KS_TUNER_STRATEGY_SIGNAL_STRENGTH
=
0X02
,
// Signal strength tuning
KS_TUNER_STRATEGY_DRIVER_TUNES
=
0X04
,
// Driver tunes
}
KS_TUNER_STRATEGY
;
/* http://msdn.microsoft.com/en-us/library/ff562676%28VS.85%29.aspx */
typedef
struct
{
union
{
struct
{
GUID
Set
;
ULONG
Id
;
ULONG
Flags
;
};
LONGLONG
Alignment
;
}
;
}
KSIDENTIFIER
,
*
PKSIDENTIFIER
;
typedef
KSIDENTIFIER
KSPROPERTY
,
*
PKSPROPERTY
;
/* http://msdn.microsoft.com/en-us/library/ff565872%28v=VS.85%29.aspx */
typedef
struct
{
KSPROPERTY
Property
;
ULONG
Mode
;
// KSPROPERTY_TUNER_MODE_*
ULONG
StandardsSupported
;
// KS_AnalogVideo_* (if Mode is TV or DSS)
ULONG
MinFrequency
;
// Hz
ULONG
MaxFrequency
;
// Hz
ULONG
TuningGranularity
;
// Hz
ULONG
NumberOfInputs
;
// number of inputs
ULONG
SettlingTime
;
// milliSeconds
ULONG
Strategy
;
// KS_TUNER_STRATEGY
}
KSPROPERTY_TUNER_MODE_CAPS_S
,
*
PKSPROPERTY_TUNER_MODE_CAPS_S
;
/* http://msdn.microsoft.com/en-us/library/ff565839%28v=VS.85%29.aspx */
typedef
struct
{
KSPROPERTY
Property
;
ULONG
Frequency
;
// Hz
ULONG
LastFrequency
;
// Hz (last tuned)
ULONG
TuningFlags
;
// KS_TUNER_TUNING_FLAGS
ULONG
VideoSubChannel
;
// DSS
ULONG
AudioSubChannel
;
// DSS
ULONG
Channel
;
// VBI decoders
ULONG
Country
;
// VBI decoders
}
KSPROPERTY_TUNER_FREQUENCY_S
,
*
PKSPROPERTY_TUNER_FREQUENCY_S
;
/* http://msdn.microsoft.com/en-us/library/ff565918%28v=VS.85%29.aspx */
typedef
struct
{
KSPROPERTY
Property
;
ULONG
Standard
;
// KS_AnalogVideo_*
}
KSPROPERTY_TUNER_STANDARD_S
,
*
PKSPROPERTY_TUNER_STANDARD_S
;
/* http://msdn.microsoft.com/en-us/library/dd373441%28v=vs.85%29.aspx */
typedef
enum
tagAMTunerModeType
{
AMTUNER_MODE_DEFAULT
=
0x0000
,
AMTUNER_MODE_TV
=
0x0001
,
AMTUNER_MODE_FM_RADIO
=
0x0002
,
AMTUNER_MODE_AM_RADIO
=
0x0004
,
AMTUNER_MODE_DSS
=
0x0008
}
AMTunerModeType
;
#define AMPROPERTY_PIN_CATEGORY 0
typedef
enum
tagAMTunerSubChannel
{
AMTUNER_SUBCHAN_NO_TUNE
=
-
2
,
AMTUNER_SUBCHAN_DEFAULT
=
-
1
}
AMTunerSubChannel
;
/* http://msdn.microsoft.com/en-us/library/dd407232%28v=vs.85%29.aspx */
typedef
enum
tagTunerInputType
{
TunerInputCable
=
0
,
TunerInputAntenna
=
TunerInputCable
+
1
}
TunerInputType
;
typedef
enum
tagAMTunerEventType
{
AMTUNER_EVENT_CHANGED
=
0x1
}
AMTunerEventType
;
/* http://msdn.microsoft.com/en-us/library/dd377421%28v=vs.85%29.aspx */
typedef
enum
tagPhysicalConnectorType
{
PhysConn_Video_Tuner
=
1
,
PhysConn_Video_Composite
,
PhysConn_Video_SVideo
,
PhysConn_Video_RGB
,
PhysConn_Video_YRYBY
,
PhysConn_Video_SerialDigital
,
PhysConn_Video_ParallelDigital
,
PhysConn_Video_SCSI
,
PhysConn_Video_AUX
,
PhysConn_Video_1394
,
PhysConn_Video_USB
,
PhysConn_Video_VideoDecoder
,
PhysConn_Video_VideoEncoder
,
PhysConn_Video_SCART
,
PhysConn_Video_Black
,
PhysConn_Audio_Tuner
=
4096
,
/* 0x1000 */
PhysConn_Audio_Line
,
PhysConn_Audio_Mic
,
PhysConn_Audio_AESDigital
,
PhysConn_Audio_SPDIFDigital
,
PhysConn_Audio_SCSI
,
PhysConn_Audio_AUX
,
PhysConn_Audio_1394
,
PhysConn_Audio_USB
,
PhysConn_Audio_AudioDecoder
}
PhysicalConnectorType
;
/* http://msdn.microsoft.com/en-us/library/dd407352%28v=vs.85%29.aspx */
typedef
struct
_VIDEO_STREAM_CONFIG_CAPS
{
GUID
guid
;
ULONG
VideoStandard
;
SIZE
InputSize
;
SIZE
MinCroppingSize
;
SIZE
MaxCroppingSize
;
int
CropGranularityX
;
int
CropGranularityY
;
int
CropAlignX
;
int
CropAlignY
;
SIZE
MinOutputSize
;
SIZE
MaxOutputSize
;
int
OutputGranularityX
;
int
OutputGranularityY
;
int
StretchTapsX
;
int
StretchTapsY
;
int
ShrinkTapsX
;
int
ShrinkTapsY
;
LONGLONG
MinFrameInterval
;
LONGLONG
MaxFrameInterval
;
LONG
MinBitsPerSecond
;
LONG
MaxBitsPerSecond
;
}
VIDEO_STREAM_CONFIG_CAPS
;
/* http://msdn.microsoft.com/en-us/library/dd317597%28v=vs.85%29.aspx */
typedef
struct
_AUDIO_STREAM_CONFIG_CAPS
{
GUID
guid
;
ULONG
MinimumChannels
;
ULONG
MaximumChannels
;
ULONG
ChannelsGranularity
;
ULONG
MinimumBitsPerSample
;
ULONG
MaximumBitsPerSample
;
ULONG
BitsPerSampleGranularity
;
ULONG
MinimumSampleFrequency
;
ULONG
MaximumSampleFrequency
;
ULONG
SampleFrequencyGranularity
;
}
AUDIO_STREAM_CONFIG_CAPS
;
/* http://msdn.microsoft.com/en-us/library/dd389142%28v=vs.85%29.aspx */
#undef INTERFACE
#define INTERFACE IAMBufferNegotiation
DECLARE_INTERFACE_
(
IAMBufferNegotiation
,
IUnknown
)
{
STDMETHOD
(
QueryInterface
)
(
THIS_
REFIID
,
PVOID
*
)
PURE
;
STDMETHOD_
(
ULONG
,
AddRef
)(
THIS
);
STDMETHOD_
(
ULONG
,
Release
)(
THIS
);
STDMETHOD
(
SuggestAllocatorProperties
)(
THIS_
const
ALLOCATOR_PROPERTIES
*
);
STDMETHOD
(
GetAllocatorProperties
)(
THIS_
ALLOCATOR_PROPERTIES
*
);
};
/* http://msdn.microsoft.com/en-us/library/dd389171%28v=vs.85%29.aspx */
#undef INTERFACE
#define INTERFACE IAMCrossbar
DECLARE_INTERFACE_
(
IAMCrossbar
,
IUnknown
)
{
STDMETHOD
(
QueryInterface
)
(
THIS_
REFIID
,
PVOID
*
)
PURE
;
STDMETHOD_
(
ULONG
,
AddRef
)
(
THIS
);
STDMETHOD_
(
ULONG
,
Release
)
(
THIS
);
STDMETHOD
(
get_PinCounts
)
(
THIS_
long
*
,
long
*
);
STDMETHOD
(
CanRoute
)
(
THIS_
long
,
long
);
STDMETHOD
(
Route
)
(
THIS_
long
,
long
);
STDMETHOD
(
get_IsRoutedTo
)
(
THIS_
long
,
long
*
);
STDMETHOD
(
get_CrossbarPinInfo
)
(
THIS_
BOOL
,
long
,
long
*
,
long
*
);
};
/* http://msdn.microsoft.com/en-us/library/dd375945%28v=vs.85%29.aspx */
#undef INTERFACE
#define INTERFACE IAMTunerNotification
DECLARE_INTERFACE_
(
IAMTunerNotification
,
IUnknown
)
{
STDMETHOD
(
QueryInterface
)
(
THIS_
REFIID
,
PVOID
*
)
PURE
;
STDMETHOD_
(
ULONG
,
AddRef
)
(
THIS
);
STDMETHOD_
(
ULONG
,
Release
)
(
THIS
);
STDMETHOD
(
OnEvent
)
(
THIS_
AMTunerEventType
);
};
/* http://msdn.microsoft.com/en-us/library/dd375971%28v=vs.85%29.aspx */
#undef INTERFACE
#define INTERFACE IAMTVTuner
DECLARE_INTERFACE_
(
IAMTVTuner
,
IUnknown
)
{
STDMETHOD
(
QueryInterface
)
(
THIS_
REFIID
,
PVOID
*
)
PURE
;
STDMETHOD_
(
ULONG
,
AddRef
)
(
THIS
);
STDMETHOD_
(
ULONG
,
Release
)
(
THIS
);
STDMETHOD
(
put_Channel
)
(
THIS_
long
,
long
,
long
);
STDMETHOD
(
get_Channel
)
(
THIS_
long
*
,
long
*
,
long
*
);
STDMETHOD
(
ChannelMinMax
)
(
THIS_
long
*
,
long
*
);
STDMETHOD
(
put_CountryCode
)
(
THIS_
long
);
STDMETHOD
(
get_CountryCode
)
(
THIS_
long
*
);
STDMETHOD
(
put_TuningSpace
)
(
THIS_
long
);
STDMETHOD
(
get_TuningSpace
)
(
THIS_
long
*
);
STDMETHOD
(
Logon
)
(
THIS_
HANDLE
);
STDMETHOD
(
Logout
)
(
IAMTVTuner
*
);
STDMETHOD
(
SignalPresen
)
(
THIS_
long
*
);
STDMETHOD
(
put_Mode
)
(
THIS_
AMTunerModeType
);
STDMETHOD
(
get_Mode
)
(
THIS_
AMTunerModeType
*
);
STDMETHOD
(
GetAvailableModes
)
(
THIS_
long
*
);
STDMETHOD
(
RegisterNotificationCallBack
)
(
THIS_
IAMTunerNotification
*
,
long
);
STDMETHOD
(
UnRegisterNotificationCallBack
)
(
THIS_
IAMTunerNotification
*
);
STDMETHOD
(
get_AvailableTVFormats
)
(
THIS_
long
*
);
STDMETHOD
(
get_TVFormat
)
(
THIS_
long
*
);
STDMETHOD
(
AutoTune
)
(
THIS_
long
,
long
*
);
STDMETHOD
(
StoreAutoTune
)
(
IAMTVTuner
*
);
STDMETHOD
(
get_NumInputConnections
)
(
THIS_
long
*
);
STDMETHOD
(
put_InputType
)
(
THIS_
long
,
TunerInputType
);
STDMETHOD
(
get_InputType
)
(
THIS_
long
,
TunerInputType
*
);
STDMETHOD
(
put_ConnectInput
)
(
THIS_
long
);
STDMETHOD
(
get_ConnectInput
)
(
THIS_
long
*
);
STDMETHOD
(
get_VideoFrequency
)
(
THIS_
long
*
);
STDMETHOD
(
get_AudioFrequency
)
(
THIS_
long
*
);
};
/* http://msdn.microsoft.com/en-us/library/dd375962%28v=vs.85%29.aspx */
#undef INTERFACE
#define INTERFACE IAMTVAudio
DECLARE_INTERFACE_
(
IAMTVAudio
,
IUnknown
)
{
STDMETHOD
(
QueryInterface
)
(
THIS_
REFIID
,
PVOID
*
)
PURE
;
STDMETHOD_
(
ULONG
,
AddRef
)
(
THIS
);
STDMETHOD_
(
ULONG
,
Release
)
(
THIS
);
STDMETHOD
(
GetHardwareSupportedTVAudioModes
)
(
THIS_
long
*
);
STDMETHOD
(
GetAvailableTVAudioModes
)
(
THIS_
long
*
);
STDMETHOD
(
get_TVAudioMode
)
(
THIS_
long
*
);
STDMETHOD
(
put_TVAudioMode
)
(
THIS_
long
);
STDMETHOD
(
RegisterNotificationCallBack
)
(
THIS_
IAMTunerNotification
*
,
long
);
STDMETHOD
(
UnRegisterNotificationCallBack
)
(
THIS_
IAMTunerNotification
*
);
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment