blob: 4e79fcb0052869b3634b618a2bfd42d4ee1c551b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
//------------------------------------------------------------------------------
// 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__
|