Prevent memory leak and superfluous status notifications.
[wine] / include / ddstream.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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 import "unknwn.idl";
20 import "mmstream.idl";
21
22 cpp_quote("#ifndef __WINE_DDRAW_H")
23 typedef void * LPDDSURFACEDESC;
24 typedef struct tDDSURFACEDESC DDSURFACEDESC;
25 interface IDirectDraw;
26 interface IDirectDrawSurface;
27 interface IDirectDrawPalette;
28 cpp_quote("#endif")
29 cpp_quote("#include <ddraw.h>")
30
31 enum {
32         DDSFF_PROGRESSIVERENDER = 0x00000001
33 };
34
35 interface IDirectDrawMediaStream;
36 interface IDirectDrawStreamSample;
37
38 [
39 object,
40 local,
41 uuid(F4104FCE-9A70-11d0-8FDE-00C04FD9189D),
42 pointer_default(unique)
43 ]
44 interface IDirectDrawMediaStream : IMediaStream
45 {
46         HRESULT GetFormat(
47                 [out] /*[optional]*/ DDSURFACEDESC *pDDSDCurrent,
48                 [out] /*[optional]*/ IDirectDrawPalette **ppDirectDrawPalette,
49                 [out] /*[optional]*/ DDSURFACEDESC *pDDSDDesired,
50                 [out] /*[optional]*/ DWORD *pdwFlags);
51
52         HRESULT SetFormat(
53                 [in] const DDSURFACEDESC *pDDSurfaceDesc,
54                 [in] /*[optional]*/ IDirectDrawPalette *pDirectDrawPalette);
55
56         HRESULT GetDirectDraw(
57                 [out] IDirectDraw **ppDirectDraw);
58
59         HRESULT SetDirectDraw(
60                 [in] IDirectDraw *pDirectDraw);
61
62         HRESULT CreateSample(
63                 [in] /*[optional]*/ IDirectDrawSurface *pSurface,
64                 [in] /*[optional]*/ const RECT *pRect,
65                 [in] DWORD dwFlags,
66                 [out] IDirectDrawStreamSample **ppSample);
67
68         HRESULT GetTimePerFrame(
69                 [out] STREAM_TIME *pFrameTime);
70 };
71
72
73 [
74 object,
75 local,
76 uuid(F4104FCF-9A70-11d0-8FDE-00C04FD9189D),
77 pointer_default(unique)
78 ]
79 interface IDirectDrawStreamSample : IStreamSample
80 {
81         HRESULT GetSurface(
82                 [out] /*[optional]*/ IDirectDrawSurface ** ppDirectDrawSurface,
83                 [out] /*[optional]*/ RECT * pRect);
84
85         HRESULT SetRect(
86                 [in] const RECT * pRect);
87
88 };