[DDK]
[reactos.git] / include / dxsdk / austream.idl
1 /*
2 * Copyright 2004 Christian Costa
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19 import "unknwn.idl";
20 import "mmstream.idl";
21
22 cpp_quote("#if 0")
23 typedef struct tWAVEFORMATEX WAVEFORMATEX;
24 cpp_quote ("#endif")
25
26 interface IAudioMediaStream;
27 interface IAudioStreamSample;
28 interface IMemoryData;
29 interface IAudioData;
30
31 [
32 object,
33 local,
34 uuid(f7537560-a3be-11d0-8212-00c04fc32c45),
35 pointer_default(unique)
36 ]
37 interface IAudioMediaStream : IMediaStream
38 {
39 HRESULT GetFormat(
40 [out] /*[optional]*/ WAVEFORMATEX *pWaveFormatCurrent
41 );
42
43 HRESULT SetFormat(
44 [in] const WAVEFORMATEX *lpWaveFormat);
45
46 HRESULT CreateSample(
47 [in] IAudioData *pAudioData,
48 [in] DWORD dwFlags,
49 [out] IAudioStreamSample **ppSample
50 );
51 }
52
53
54 [
55 object,
56 local,
57 uuid(345fee00-aba5-11d0-8212-00c04fc32c45),
58 pointer_default(unique)
59 ]
60 interface IAudioStreamSample : IStreamSample
61 {
62 HRESULT GetAudioData(
63 [out] IAudioData **ppAudio
64 );
65 }
66
67
68 [
69 object,
70 local,
71 uuid(327fc560-af60-11d0-8212-00c04fc32c45),
72 pointer_default(unique)
73 ]
74 interface IMemoryData : IUnknown
75 {
76 HRESULT SetBuffer(
77 [in] DWORD cbSize,
78 [in] BYTE *pbData,
79 [in] DWORD dwFlags
80 );
81
82 HRESULT GetInfo(
83 [out] DWORD *pdwLength,
84 [out] BYTE **ppbData,
85 [out] DWORD *pcbActualData
86 );
87 HRESULT SetActual(
88 [in] DWORD cbDataValid
89 );
90 }
91
92
93 [
94 object,
95 local,
96 uuid(54c719c0-af60-11d0-8212-00c04fc32c45),
97 pointer_default(unique)
98 ]
99 interface IAudioData : IMemoryData
100 {
101 HRESULT GetFormat(
102 [out] /*[optional]*/ WAVEFORMATEX *pWaveFormatCurrent
103 );
104
105 HRESULT SetFormat(
106 [in] const WAVEFORMATEX *lpWaveFormat
107 );
108 }