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.
119 lines
3.7 KiB
119 lines
3.7 KiB
//------------------------------------------------------------------------------ |
|
// File: MPEGType.h |
|
// |
|
// Desc: MPEG system stream compound type definition |
|
// |
|
// Copyright (c) 1996-2001, Microsoft Corporation. All rights reserved. |
|
//------------------------------------------------------------------------------ |
|
|
|
|
|
#ifndef __MPEGTYPE__ |
|
#define __MPEGTYPE__ |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif // __cplusplus |
|
|
|
// |
|
// AM_MPEGSYSTEMTYPE defines the format block contents for |
|
// data of type MEDIATYPE_MPEG1System when the format |
|
// block GUID is FORMAT_MPEG1System |
|
// |
|
// The format block consists of elements of type |
|
// AM_MPEGSYSTEMTYPE up to the length of the format block |
|
// Each format block is 8-byte aligned from the start of |
|
// the format block |
|
// |
|
|
|
typedef struct tagAM_MPEGSTREAMTYPE |
|
{ |
|
DWORD dwStreamId; // Stream id of stream to process |
|
DWORD dwReserved; // 8-byte alignment |
|
AM_MEDIA_TYPE mt; // Type for substream - pbFormat is NULL |
|
BYTE bFormat[1]; // Format data |
|
} AM_MPEGSTREAMTYPE; |
|
|
|
typedef struct tagAM_MPEGSYSTEMTYPE |
|
{ |
|
DWORD dwBitRate; // Bits per second |
|
DWORD cStreams; // Number of streams |
|
AM_MPEGSTREAMTYPE Streams[1]; |
|
} AM_MPEGSYSTEMTYPE; |
|
|
|
// |
|
// Helper macros for AM_MPEGSTREAMTYPE |
|
// |
|
#define AM_MPEGSTREAMTYPE_ELEMENTLENGTH(pStreamType) \ |
|
FIELD_OFFSET(AM_MPEGSTREAMTYPE, bFormat[(pStreamType)->mt.cbFormat]) |
|
#define AM_MPEGSTREAMTYPE_NEXT(pStreamType) \ |
|
((AM_MPEGSTREAMTYPE *)((PBYTE)(pStreamType) + \ |
|
((AM_MPEGSTREAMTYPE_ELEMENTLENGTH(pStreamType) + 7) & ~7))) |
|
|
|
// |
|
// IMpegAudioDecoder |
|
// |
|
|
|
// Values for DualMode |
|
#define AM_MPEG_AUDIO_DUAL_MERGE 0 |
|
#define AM_MPEG_AUDIO_DUAL_LEFT 1 |
|
#define AM_MPEG_AUDIO_DUAL_RIGHT 2 |
|
|
|
DECLARE_INTERFACE_(IMpegAudioDecoder, IUnknown) { |
|
|
|
STDMETHOD(get_FrequencyDivider) (THIS_ |
|
unsigned long *pDivider /* [out] */ |
|
) PURE; |
|
|
|
STDMETHOD(put_FrequencyDivider) (THIS_ |
|
unsigned long Divider /* [in] */ |
|
) PURE; |
|
|
|
STDMETHOD(get_DecoderAccuracy) (THIS_ |
|
unsigned long *pAccuracy /* [out] */ |
|
) PURE; |
|
|
|
STDMETHOD(put_DecoderAccuracy) (THIS_ |
|
unsigned long Accuracy /* [in] */ |
|
) PURE; |
|
|
|
STDMETHOD(get_Stereo) (THIS_ |
|
unsigned long *pStereo /* [out] */ |
|
) PURE; |
|
|
|
STDMETHOD(put_Stereo) (THIS_ |
|
unsigned long Stereo /* [in] */ |
|
) PURE; |
|
|
|
STDMETHOD(get_DecoderWordSize) (THIS_ |
|
unsigned long *pWordSize /* [out] */ |
|
) PURE; |
|
|
|
STDMETHOD(put_DecoderWordSize) (THIS_ |
|
unsigned long WordSize /* [in] */ |
|
) PURE; |
|
|
|
STDMETHOD(get_IntegerDecode) (THIS_ |
|
unsigned long *pIntDecode /* [out] */ |
|
) PURE; |
|
|
|
STDMETHOD(put_IntegerDecode) (THIS_ |
|
unsigned long IntDecode /* [in] */ |
|
) PURE; |
|
|
|
STDMETHOD(get_DualMode) (THIS_ |
|
unsigned long *pIntDecode /* [out] */ |
|
) PURE; |
|
|
|
STDMETHOD(put_DualMode) (THIS_ |
|
unsigned long IntDecode /* [in] */ |
|
) PURE; |
|
|
|
STDMETHOD(get_AudioFormat) (THIS_ |
|
MPEG1WAVEFORMAT *lpFmt /* [out] */ |
|
) PURE; |
|
}; |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif // __cplusplus |
|
#endif // __MPEGTYPE__
|
|
|