Home | History | Annotate | Download | only in include
      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 }
    109