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.
186 lines
6.1 KiB
186 lines
6.1 KiB
/*==========================================================================;
|
|
*
|
|
* 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
|