/[cvs]/api/include/DShowIDL/videoacc.idl
ViewVC logotype

Annotation of /api/include/DShowIDL/videoacc.idl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Sun Jul 1 20:47:59 2001 UTC (22 years, 11 months ago) by bearsoft
Branch point for: lazy, MAIN
Initial revision

1 bearsoft 1.1 //------------------------------------------------------------------------------
2     // File: VideoAcc.idl
3     //
4     // Desc: An interface exposed by the overlay mixer to help decode samples
5     // using hardware video acceleration.
6     //
7     // Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
8     //------------------------------------------------------------------------------
9    
10    
11     import "unknwn.idl";
12    
13     cpp_quote("//")
14     cpp_quote("// The following declarations within the 'if 0' block are dummy typedefs used to make")
15     cpp_quote("// the motncomp.idl file build. The actual definitions are contained in ddraw.h and amva.h")
16     cpp_quote("//")
17     cpp_quote("#if 0")
18    
19     typedef void* LPVOID;
20     typedef void* LPGUID;
21     typedef void* LPDIRECTDRAWSURFACE;
22     typedef void* LPDDPIXELFORMAT;
23     typedef void* LPAMVAInternalMemInfo;
24     typedef void AMVAUncompDataInfo;
25     typedef void* LPAMVACompBufferInfo;
26     typedef void AMVABUFFERINFO;
27     typedef void AMVAEndFrameInfo;
28     typedef void* LPAMVAUncompBufferInfo;
29     typedef void AMVABeginFrameInfo;
30     typedef IUnknown* IMediaSample;
31    
32     cpp_quote("#endif")
33     cpp_quote("#include <ddraw.h>")
34     cpp_quote("#include <amva.h>")
35    
36    
37     [
38     local,
39     object,
40     uuid(256A6A21-FBAD-11d1-82BF-00A0C9696C8F),
41     helpstring("IAMVideoAcceleratorNotify Interface"),
42     pointer_default(unique)
43     ]
44    
45     // IAMVideoAcceleratorNotify
46     interface IAMVideoAcceleratorNotify : IUnknown
47     {
48     // get information necessary to allocate uncompressed data buffers
49     // which is not part of the mediatype format (like how many buffers to allocate etc)
50     HRESULT GetUncompSurfacesInfo([in] const GUID *pGuid, [in] [out] LPAMVAUncompBufferInfo pUncompBufferInfo);
51    
52     // set information regarding allocated uncompressed data buffers
53     HRESULT SetUncompSurfacesInfo([in] DWORD dwActualUncompSurfacesAllocated);
54    
55     // get information necessary to create video accelerator object. It is the caller's responsibility
56     // to call CoTaskMemFree() on *ppMiscData
57     HRESULT GetCreateVideoAcceleratorData([in] const GUID *pGuid, [out] LPDWORD pdwSizeMiscData, [out] LPVOID *ppMiscData);
58     };
59    
60     [
61     local,
62     object,
63     uuid(256A6A22-FBAD-11d1-82BF-00A0C9696C8F),
64     helpstring("IAMVideoAccelerator Interface"),
65     pointer_default(unique)
66     ]
67    
68     // IAMVideoAccelerator
69     interface IAMVideoAccelerator : IUnknown
70     {
71     // pdwNumGuidsSupported is an IN OUT paramter
72     // pGuidsSupported is an IN OUT paramter
73     // if pGuidsSupported is NULL, pdwNumGuidsSupported should return back with the
74     // number of uncompressed pixel formats supported
75     // Otherwise pGuidsSupported is an array of *pdwNumGuidsSupported structures
76     HRESULT GetVideoAcceleratorGUIDs([in] [out] LPDWORD pdwNumGuidsSupported, [in] [out] LPGUID pGuidsSupported);
77    
78     // pGuid is an IN parameter
79     // pdwNumFormatsSupported is an IN OUT paramter
80     // pFormatsSupported is an IN OUT paramter (caller should make sure to set the size of EACH struct)
81     // if pFormatsSupported is NULL, pdwNumFormatsSupported should return back with
82     // the number of uncompressed pixel formats supported
83     // Otherwise pFormatsSupported is an array of *pdwNumFormatsSupported structures
84     HRESULT GetUncompFormatsSupported( [in] const GUID *pGuid, [in] [out] LPDWORD pdwNumFormatsSupported,
85     [in] [out] LPDDPIXELFORMAT pFormatsSupported);
86    
87     // pGuid is an IN parameter
88     // pamvaUncompDataInfo is an IN parameter
89     // pamvaInternalMemInfo is an IN OUT parameter (caller should make sure to set the size of struct)
90     // currently only gets info about how much scratch memory will the hal allocate for its private use
91     HRESULT GetInternalMemInfo([in] const GUID *pGuid, [in] const AMVAUncompDataInfo *pamvaUncompDataInfo,
92     [in] [out] LPAMVAInternalMemInfo pamvaInternalMemInfo);
93    
94     // pGuid is an IN parameter
95     // pamvaUncompDataInfo is an IN parameter
96     // pdwNumTypesCompBuffers is an IN OUT paramter
97     // pamvaCompBufferInfo is an IN OUT paramter (caller should make sure to set the size of EACH struct)
98     // if pamvaCompBufferInfo is NULL, pdwNumTypesCompBuffers should return back with the number of types of
99     // compressed buffers
100     // Otherwise pamvaCompBufferInfo is an array of *pdwNumTypesCompBuffers structures
101     HRESULT GetCompBufferInfo([in] const GUID *pGuid, [in] const AMVAUncompDataInfo *pamvaUncompDataInfo,
102     [in] [out] LPDWORD pdwNumTypesCompBuffers, [out] LPAMVACompBufferInfo pamvaCompBufferInfo);
103    
104    
105     // pdwNumTypesCompBuffers is an IN OUT paramter
106     // pamvaCompBufferInfo is an IN OUT paramter (caller should make sure to set the size of EACH struct)
107     // if pamvaCompBufferInfo is NULL, pdwNumTypesCompBuffers should return back with the number of types of
108     // compressed buffers
109     // Otherwise pamvaCompBufferInfo is an array of *pdwNumTypesCompBuffers structures
110     // only valid to call this after the pins are connected
111     HRESULT GetInternalCompBufferInfo([in] [out] LPDWORD pdwNumTypesCompBuffers, [out] LPAMVACompBufferInfo pamvaCompBufferInfo);
112    
113     // begin a frame, the pMiscData is passed directly to the hal
114     // only valid to call this after the pins are connected
115     // Tells the ovmixer which frame is the destination
116     // frame. Use indices (valid vales are [0 .. pdwNumSurfacesAllocated-1]) to specify frames
117     HRESULT BeginFrame([in] const AMVABeginFrameInfo *amvaBeginFrameInfo);
118    
119     // end a frame, the pMiscData is passed directly to the hal
120     // only valid to call this after the pins are connected
121     HRESULT EndFrame([in] const AMVAEndFrameInfo *pEndFrameInfo);
122    
123     // lock and obtain access to a single buffer
124     // only valid to call this after the pins are connected
125     // Buffers are identified by type and index within that type
126     // Specifiying read-only will allow access to busy reference
127     // frames
128     // Output (uncompressed) frames use a type index of 0xFFFFFFFF
129     HRESULT GetBuffer(
130     [in] DWORD dwTypeIndex,
131     [in] DWORD dwBufferIndex,
132     [in] BOOL bReadOnly,
133     [out] LPVOID *ppBuffer,
134     [out] LONG *lpStride);
135    
136     // unlock a single buffer
137     // Buffers are identified by type and index within that type
138     // only valid to call this after the pins are connected
139     HRESULT ReleaseBuffer([in] DWORD dwTypeIndex, [in] DWORD dwBufferIndex);
140    
141     // Perform a decompression operation
142     // Private data can be passed to and from a driver
143     // identifiers for the corresponding members of pamvaMacroBlockInfo
144     // pamvaMacroBlockInfo is an IN parameter which is array (of length dwNumBlocks) of structures
145     // only valid to call this after the pins are connected
146     HRESULT Execute(
147     [in] DWORD dwFunction,
148     [in] LPVOID lpPrivateInputData,
149     [in] DWORD cbPrivateInputData,
150     [in] LPVOID lpPrivateOutputDat,
151     [in] DWORD cbPrivateOutputData,
152     [in] DWORD dwNumBuffers,
153     [in] const AMVABUFFERINFO *pamvaBufferInfo);
154    
155     // query the decode status of a particular decompression operation
156     // dwTypeIndex and dwBufferIndex define the buffer whose status is
157     // being queried
158     HRESULT QueryRenderStatus([in] DWORD dwTypeIndex,
159     [in] DWORD dwBufferIndex,
160     [in] DWORD dwFlags);
161    
162     // display a frame. The mediasample contains the timestamps etc for the frame to be displayed
163     // this call is a non-blocking call
164     // only valid to call this after the pins are connected
165     HRESULT DisplayFrame([in] DWORD dwFlipToIndex, [in] IMediaSample *pMediaSample);
166     };
167    
168    
169    
170    
171    
172    

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26