windows-nt/Source/XPSP1/NT/multimedia/directx/dplay/dvoice/inc/dpvcp.h

187 lines
5.9 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*==========================================================================;
*
* Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
*
* File: dpvoice.h
* Content: DirectPlayVoice include file
* History:
* Date By Reason
* =========== =========== ====================
* 10/27/99 rodtoll created
* 12/16/99 rodtoll Padding for compression structure
***************************************************************************/
#ifndef __DPVCP_H
#define __DPVCP_H
#include "dvoice.h"
/////////////////////////////////////////////////////////////////////////////////////
// GUIDS
//
// {B8485451-07C4-4973-A278-C69890D8CF8D}
DEFINE_GUID(IID_IDPVCompressionProvider,
0xb8485451, 0x7c4, 0x4973, 0xa2, 0x78, 0xc6, 0x98, 0x90, 0xd8, 0xcf, 0x8d);
// {AAA56B61-3B8D-4906-AE58-29C26B8F47B8}
DEFINE_GUID(IID_IDPVConverter,
0xaaa56b61, 0x3b8d, 0x4906, 0xae, 0x58, 0x29, 0xc2, 0x6b, 0x8f, 0x47, 0xb8);
/////////////////////////////////////////////////////////////////////////////////////
// Interface types
//
typedef struct IDPVCompressionProvider FAR *LPDPVCOMPRESSIONPROVIDER, *PDPVCOMPRESSIONPROVIDER;
typedef struct IDPVCompressor FAR *LPDPVCOMPRESSOR, *PDPVCOMPRESSOR;
/////////////////////////////////////////////////////////////////////////////////////
// Data Types
//
typedef struct
{
// DVCOMPRESSIONINFO Structure
//
DWORD dwSize;
GUID guidType;
LPWSTR lpszName;
LPWSTR lpszDescription;
DWORD dwFlags;
DWORD dwMaxBitsPerSecond;
WAVEFORMATEX *lpwfxFormat;
//
// DVCOMPRESSIONINFO Structure End
// Above this point must match the DVCOMPRESSIONINFO structure.
//
DWORD dwFramesPerBuffer;
DWORD dwTrailFrames;
DWORD dwTimeout;
DWORD dwFrameLength;
DWORD dwFrame8Khz;
DWORD dwFrame11Khz;
DWORD dwFrame22Khz;
DWORD dwFrame44Khz;
WORD wInnerQueueSize;
WORD wMaxHighWaterMark;
BYTE bMaxQueueSize;
BYTE bMinConnectType;
BYTE bPadding1; // For alignment
BYTE bPadding2; // For alignment
} DVFULLCOMPRESSIONINFO, *LPDVFULLCOMPRESSIONINFO, *PDVFULLCOMPRESSIONINFO;
/////////////////////////////////////////////////////////////////////////////////////
// Interface definitions
//
#undef INTERFACE
#define INTERFACE IDPVCompressionProvider
//
// IDPVCompressionProvider
//
// This interface is exported by each DLL which provides compression services.
// It is used to enumerate the compression types available with a DLL and/or
// create a compressor/decompressor for a specified type.
//
// I propose there will be two providers:
//
// DPVACM.DLL - Provides these services for ACM based drivers. It will read
// the types it supports from the registry and can therefore be
// extended with new types as ACM drivers become available
// CLSID_DPVACM
//
// DPVVOX.DLL - Provides these services for Voxware.
//
DECLARE_INTERFACE_( IDPVCompressionProvider, IUnknown )
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface) (THIS_ REFIID riid, PVOID *ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IDPVCompressionProvider methods ***/
// EnumCompressionTypes
//
// Enumerates compression types supported by this DLL. Returns an array
// of DVFULLCOMPRESSIONINFO structures describing the supported types.
//
STDMETHOD_(HRESULT, EnumCompressionTypes)( THIS_ PVOID, PDWORD, PDWORD, DWORD ) PURE;
// IsCompressionSupported
//
// Quick query function for determing if the DLL supports a specified
// compression type.
//
STDMETHOD_(HRESULT, IsCompressionSupported)( THIS_ GUID ) PURE;
// CreateCompressor
//
// Create a IDPVConverter object which converts from the specified uncompressed
// format to the specified compression format.
//
STDMETHOD_(HRESULT, CreateCompressor)( THIS_ LPWAVEFORMATEX, GUID, PDPVCOMPRESSOR *, DWORD ) PURE;
// CreateDeCompressor
//
// Creates a IDPVConveter object which converts from the specified format to
// the specified uncompressed format.
//
STDMETHOD_(HRESULT, CreateDeCompressor)( THIS_ GUID, LPWAVEFORMATEX, PDPVCOMPRESSOR *, DWORD ) PURE;
// GetCompressionInfo
//
// Retrieves the DVFULLCOMPRESSIONINFO structure for the specified compression
// type.
//
STDMETHOD_(HRESULT, GetCompressionInfo)( THIS_ GUID, PVOID, PDWORD ) PURE;
};
#undef INTERFACE
#define INTERFACE IDPVCompressor
//
// IDPVCompressor
//
// This interface does the actual work of performing conversions for
// DirectPlayVoice. This can be instantiated on it's own and Initialized,
// ot created using the CreateCompressor/CreateDecompressor above.
//
DECLARE_INTERFACE_( IDPVCompressor, IUnknown )
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface) (THIS_ REFIID riid, PVOID *ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IDPVCompressor methods ***/
// Initialize
//
// Initialize this object as a decompressor.
//
STDMETHOD_(HRESULT, InitDeCompress)( THIS_ GUID, LPWAVEFORMATEX ) PURE;
// Initialize
//
// Initialize this object as a compressor
STDMETHOD_(HRESULT, InitCompress)( THIS_ LPWAVEFORMATEX, GUID ) PURE;
// IsValid
//
// Returns TRUE in the LPBOOL param if this compression type is
// available.
STDMETHOD_(HRESULT, IsValid)( THIS_ LPBOOL ) PURE;
// GetXXXXXX
//
// Functions used by the engine for sizing.
STDMETHOD_(HRESULT, GetUnCompressedFrameSize)( THIS_ LPDWORD ) PURE;
STDMETHOD_(HRESULT, GetCompressedFrameSize)( THIS_ LPDWORD ) PURE;
STDMETHOD_(HRESULT, GetNumFramesPerBuffer)( THIS_ LPDWORD ) PURE;
// Convert
//
// Perform actual conversion
STDMETHOD_(HRESULT, Convert)( THIS_ LPVOID, DWORD, LPVOID, LPDWORD, BOOL ) PURE;
};
#endif