mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 23:43:39 +00:00
- Add IPortWaveRT, IPortWaveRTStream, IMiniportWaveRTStream, IMiniportWaveRTStreamNotification, IMiniportWaveRT interface
- Add KSAUDIO_POSITION, KSRTAUDIO_HWLATENCY, KSRTAUDIO_HWREGISTER structure svn path=/trunk/; revision=40794
This commit is contained in:
parent
0af940a81b
commit
64d2ce31a9
2 changed files with 253 additions and 0 deletions
|
@ -1591,6 +1591,235 @@ DECLARE_INTERFACE_(IMiniportWavePci,IMiniport)
|
|||
|
||||
typedef IMiniportWavePci *PMINIPORTWAVEPCI;
|
||||
|
||||
|
||||
#if !defined(DEFINE_ABSTRACT_MINIPORTWAVERTSTREAM)
|
||||
|
||||
#define DEFINE_ABSTRACT_MINIPORTWAVERTSTREAM() \
|
||||
STDMETHOD_(NTSTATUS,SetFormat) \
|
||||
( THIS_ \
|
||||
IN PKSDATAFORMAT DataFormat \
|
||||
) PURE; \
|
||||
STDMETHOD_(NTSTATUS,SetState) \
|
||||
( THIS_ \
|
||||
IN KSSTATE State \
|
||||
) PURE; \
|
||||
STDMETHOD_(NTSTATUS,GetPosition) \
|
||||
( THIS_ \
|
||||
OUT PKSAUDIO_POSITION Position \
|
||||
) PURE; \
|
||||
STDMETHOD_(NTSTATUS,AllocateAudioBuffer) \
|
||||
( THIS_ \
|
||||
IN ULONG RequestedSize, \
|
||||
OUT PMDL *AudioBufferMdl, \
|
||||
OUT ULONG *ActualSize, \
|
||||
OUT ULONG *OffsetFromFirstPage, \
|
||||
OUT MEMORY_CACHING_TYPE *CacheType \
|
||||
) PURE; \
|
||||
STDMETHOD_(VOID,FreeAudioBuffer) \
|
||||
( THIS_ \
|
||||
IN PMDL AudioBufferMdl, \
|
||||
IN ULONG BufferSize \
|
||||
) PURE; \
|
||||
STDMETHOD_(VOID,GetHWLatency) \
|
||||
( THIS_ \
|
||||
OUT KSRTAUDIO_HWLATENCY *hwLatency \
|
||||
) PURE; \
|
||||
STDMETHOD_(NTSTATUS,GetPositionRegister) \
|
||||
( THIS_ \
|
||||
OUT KSRTAUDIO_HWREGISTER *Register \
|
||||
) PURE; \
|
||||
STDMETHOD_(NTSTATUS,GetClockRegister) \
|
||||
( THIS_ \
|
||||
OUT KSRTAUDIO_HWREGISTER *Register \
|
||||
) PURE;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* ===============================================================
|
||||
IAdapterPowerManagement Interface
|
||||
*/
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
||||
/* ===============================================================
|
||||
IPortWaveRT Interface
|
||||
*/
|
||||
|
||||
DEFINE_GUID(CLSID_PortWaveRT, 0xcc9be57a, 0xeb9e, 0x42b4, 0x94, 0xfc, 0xc, 0xad, 0x3d, 0xbc, 0xe7, 0xfa);
|
||||
DEFINE_GUID(IID_IPortWaveRT, 0x339ff909, 0x68a9, 0x4310, 0xb0, 0x9b, 0x27, 0x4e, 0x96, 0xee, 0x4c, 0xbd);
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE IPortWaveRT
|
||||
|
||||
DECLARE_INTERFACE_(IPortWaveRT,IPort)
|
||||
{
|
||||
DEFINE_ABSTRACT_UNKNOWN() // For IUnknown
|
||||
|
||||
DEFINE_ABSTRACT_PORT() // For IPort
|
||||
};
|
||||
|
||||
typedef IPortWaveRT *PPORTWAVERT;
|
||||
|
||||
|
||||
/* ===============================================================
|
||||
IPortWaveRTStream Interface
|
||||
*/
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE IPortWaveRTStream
|
||||
|
||||
DEFINE_GUID(IID_IPortWaveRTStream, 0x1809ce5a, 0x64bc, 0x4e62, 0xbd, 0x7d, 0x95, 0xbc, 0xe4, 0x3d, 0xe3, 0x93);
|
||||
|
||||
DECLARE_INTERFACE_(IPortWaveRTStream, IUnknown)
|
||||
{
|
||||
DEFINE_ABSTRACT_UNKNOWN()
|
||||
|
||||
STDMETHOD_(PMDL, AllocatePagesForMdl)
|
||||
( THIS_
|
||||
IN PHYSICAL_ADDRESS HighAddress,
|
||||
IN SIZE_T TotalBytes
|
||||
) PURE;
|
||||
|
||||
STDMETHOD_(PMDL, AllocateContiguousPagesForMdl)
|
||||
( THIS_
|
||||
IN PHYSICAL_ADDRESS LowAddress,
|
||||
IN PHYSICAL_ADDRESS HighAddress,
|
||||
IN SIZE_T TotalBytes
|
||||
) PURE;
|
||||
|
||||
STDMETHOD_(PVOID, MapAllocatedPages)
|
||||
( THIS_
|
||||
IN PMDL MemoryDescriptorList,
|
||||
IN MEMORY_CACHING_TYPE CacheType
|
||||
) PURE;
|
||||
|
||||
STDMETHOD_(VOID, UnmapAllocatedPages)
|
||||
( THIS_
|
||||
IN PVOID BaseAddress,
|
||||
IN PMDL MemoryDescriptorList
|
||||
) PURE;
|
||||
|
||||
STDMETHOD_(VOID, FreePagesFromMdl)
|
||||
( THIS_
|
||||
IN PMDL MemoryDescriptorList
|
||||
) PURE;
|
||||
|
||||
STDMETHOD_(ULONG, GetPhysicalPagesCount)
|
||||
( THIS_
|
||||
IN PMDL MemoryDescriptorList
|
||||
) PURE;
|
||||
|
||||
STDMETHOD_(PHYSICAL_ADDRESS, GetPhysicalPageAddress)
|
||||
( THIS_
|
||||
IN PMDL MemoryDescriptorList,
|
||||
IN ULONG Index
|
||||
) PURE;
|
||||
};
|
||||
|
||||
typedef IPortWaveRTStream *PPORTWAVERTSTREAM;
|
||||
|
||||
|
||||
/* ===============================================================
|
||||
IMiniportWaveRTStream Interface
|
||||
*/
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE IMiniportWaveRTStream
|
||||
|
||||
DEFINE_GUID(IID_IMiniportWaveRTStream, 0xac9ab, 0xfaab, 0x4f3d, 0x94, 0x55, 0x6f, 0xf8, 0x30, 0x6a, 0x74, 0xa0);
|
||||
|
||||
DECLARE_INTERFACE_(IMiniportWaveRTStream, IUnknown)
|
||||
{
|
||||
DEFINE_ABSTRACT_UNKNOWN()
|
||||
DEFINE_ABSTRACT_MINIPORTWAVERTSTREAM()
|
||||
};
|
||||
|
||||
typedef IMiniportWaveRTStream *PMINIPORTWAVERTSTREAM;
|
||||
|
||||
|
||||
/* ===============================================================
|
||||
IMiniportWaveRTStreamNotification Interface
|
||||
*/
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE IMiniportWaveRTStreamNotification
|
||||
|
||||
DEFINE_GUID(IID_IMiniportWaveRTStreamNotification, 0x23759128, 0x96f1, 0x423b, 0xab, 0x4d, 0x81, 0x63, 0x5b, 0xcf, 0x8c, 0xa1);
|
||||
|
||||
DECLARE_INTERFACE_(IMiniportWaveRTStreamNotification, IMiniportWaveRTStream)
|
||||
{
|
||||
DEFINE_ABSTRACT_UNKNOWN()
|
||||
|
||||
DEFINE_ABSTRACT_MINIPORTWAVERTSTREAM()
|
||||
|
||||
STDMETHOD_(NTSTATUS,AllocateBufferWithNotification)
|
||||
( THIS_
|
||||
IN ULONG NotificationCount,
|
||||
IN ULONG RequestedSize,
|
||||
OUT PMDL *AudioBufferMdl,
|
||||
OUT ULONG *ActualSize,
|
||||
OUT ULONG *OffsetFromFirstPage,
|
||||
OUT MEMORY_CACHING_TYPE *CacheType
|
||||
) PURE;
|
||||
|
||||
STDMETHOD_(VOID,FreeBufferWithNotification)
|
||||
( THIS_
|
||||
IN PMDL AudioBufferMdl,
|
||||
IN ULONG BufferSize
|
||||
) PURE;
|
||||
|
||||
STDMETHOD_(NTSTATUS,RegisterNotificationEvent)
|
||||
( THIS_
|
||||
IN PKEVENT NotificationEvent
|
||||
) PURE;
|
||||
|
||||
STDMETHOD_(NTSTATUS,UnregisterNotificationEvent)
|
||||
( THIS_
|
||||
IN PKEVENT NotificationEvent
|
||||
) PURE;
|
||||
};
|
||||
|
||||
/* ===============================================================
|
||||
IMiniportWaveRT Interface
|
||||
*/
|
||||
|
||||
#undef INTERFACE
|
||||
#define INTERFACE IMiniportWaveRT
|
||||
|
||||
DEFINE_GUID(IID_IMiniportWaveRT, 0xf9fc4d6, 0x6061, 0x4f3c, 0xb1, 0xfc, 0x7, 0x5e, 0x35, 0xf7, 0x96, 0xa);
|
||||
|
||||
DECLARE_INTERFACE_(IMiniportWaveRT, IMiniport)
|
||||
{
|
||||
DEFINE_ABSTRACT_UNKNOWN()
|
||||
|
||||
DEFINE_ABSTRACT_MINIPORT()
|
||||
|
||||
STDMETHOD_(NTSTATUS,Init)
|
||||
( THIS_
|
||||
IN PUNKNOWN UnknownAdapter,
|
||||
IN PRESOURCELIST ResourceList,
|
||||
IN PPORTWAVERT Port
|
||||
) PURE;
|
||||
|
||||
STDMETHOD_(NTSTATUS,NewStream)
|
||||
( THIS_
|
||||
OUT PMINIPORTWAVERTSTREAM * Stream,
|
||||
IN PPORTWAVERTSTREAM PortStream,
|
||||
IN ULONG Pin,
|
||||
IN BOOLEAN Capture,
|
||||
IN PKSDATAFORMAT DataFormat
|
||||
) PURE;
|
||||
|
||||
STDMETHOD_(NTSTATUS,GetDeviceDescription)
|
||||
( THIS_
|
||||
OUT PDEVICE_DESCRIPTION DeviceDescription
|
||||
) PURE;
|
||||
};
|
||||
|
||||
typedef IMiniportWaveRT *PMINIPORTWAVERT;
|
||||
|
||||
#endif
|
||||
|
||||
/* ===============================================================
|
||||
IAdapterPowerManagement Interface
|
||||
*/
|
||||
|
|
|
@ -575,4 +575,28 @@ typedef struct
|
|||
ULONG Reserved;
|
||||
} KSNODEPROPERTY_AUDIO_CHANNEL, *PKSNODEPROPERTY_AUDIO_CHANNEL;
|
||||
|
||||
typedef struct {
|
||||
#if defined(_NTDDK_)
|
||||
ULONGLONG PlayOffset;
|
||||
ULONGLONG WriteOffset;
|
||||
#else
|
||||
DWORDLONG PlayOffset;
|
||||
DWORDLONG WriteOffset;
|
||||
#endif
|
||||
} KSAUDIO_POSITION, *PKSAUDIO_POSITION;
|
||||
|
||||
typedef struct {
|
||||
ULONG FifoSize;
|
||||
ULONG ChipsetDelay;
|
||||
ULONG CodecDelay;
|
||||
} KSRTAUDIO_HWLATENCY, *PKSRTAUDIO_HWLATENCY;
|
||||
|
||||
typedef struct {
|
||||
PVOID Register;
|
||||
ULONG Width;
|
||||
ULONGLONG Numerator;
|
||||
ULONGLONG Denominator;
|
||||
ULONG Accuracy;
|
||||
} KSRTAUDIO_HWREGISTER, *PKSRTAUDIO_HWREGISTER;
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue