usp10: Check that there are sufficient script_items before setting the last pointer.
[wine] / include / 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 }