Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(354)

Side by Side Diff: third_party/libva/va/va_backend.h

Issue 10375035: Add libva to chromium third_party. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/libva/va/va_android.h ('k') | third_party/libva/va/va_backend_tpi.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2007 Intel Corporation. All Rights Reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the
6 * "Software"), to deal in the Software without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sub license, and/or sell copies of the Software, and to
9 * permit persons to whom the Software is furnished to do so, subject to
10 * the following conditions:
11 *
12 * The above copyright notice and this permission notice (including the
13 * next paragraph) shall be included in all copies or substantial portions
14 * of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
20 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 */
24
25 /*
26 * Video Decode Acceleration -Backend API
27 */
28
29 #ifndef _VA_BACKEND_H_
30 #define _VA_BACKEND_H_
31
32 #include <va/va.h>
33 #include <linux/videodev2.h>
34
35 typedef struct VADriverContext *VADriverContextP;
36 typedef struct VADisplayContext *VADisplayContextP;
37
38 struct VADriverVTable
39 {
40 VAStatus (*vaTerminate) ( VADriverContextP ctx );
41
42 VAStatus (*vaQueryConfigProfiles) (
43 VADriverContextP ctx,
44 VAProfile *profile_list, /* out */
45 int *num_profiles /* out */
46 );
47
48 VAStatus (*vaQueryConfigEntrypoints) (
49 VADriverContextP ctx,
50 VAProfile profile,
51 VAEntrypoint *entrypoint_list, /* out */
52 int *num_entrypoints /* out */
53 );
54
55 VAStatus (*vaGetConfigAttributes) (
56 VADriverContextP ctx,
57 VAProfile profile,
58 VAEntrypoint entrypoint,
59 VAConfigAttrib *attrib_list, /* in/out */
60 int num_attribs
61 );
62
63 VAStatus (*vaCreateConfig) (
64 VADriverContextP ctx,
65 VAProfile profile,
66 VAEntrypoint entrypoint,
67 VAConfigAttrib *attrib_list,
68 int num_attribs,
69 VAConfigID *config_id /* out */
70 );
71
72 VAStatus (*vaDestroyConfig) (
73 VADriverContextP ctx,
74 VAConfigID config_id
75 );
76
77 VAStatus (*vaQueryConfigAttributes) (
78 VADriverContextP ctx,
79 VAConfigID config_id,
80 VAProfile *profile, /* out */
81 VAEntrypoint *entrypoint, /* out */
82 VAConfigAttrib *attrib_list, /* out */
83 int *num_attribs /* out */
84 );
85
86 VAStatus (*vaCreateSurfaces) (
87 VADriverContextP ctx,
88 int width,
89 int height,
90 int format,
91 int num_surfaces,
92 VASurfaceID *surfaces /* out */
93 );
94
95 VAStatus (*vaDestroySurfaces) (
96 VADriverContextP ctx,
97 VASurfaceID *surface_list,
98 int num_surfaces
99 );
100
101 VAStatus (*vaCreateContext) (
102 VADriverContextP ctx,
103 VAConfigID config_id,
104 int picture_width,
105 int picture_height,
106 int flag,
107 VASurfaceID *render_targets,
108 int num_render_targets,
109 VAContextID *context /* out */
110 );
111
112 VAStatus (*vaDestroyContext) (
113 VADriverContextP ctx,
114 VAContextID context
115 );
116
117 VAStatus (*vaCreateBuffer) (
118 VADriverContextP ctx,
119 VAContextID context, /* in */
120 VABufferType type, /* in */
121 unsigned int size, /* in */
122 unsigned int num_elements, /* in */
123 void *data, /* in */
124 VABufferID *buf_id /* out */
125 );
126
127 VAStatus (*vaBufferSetNumElements) (
128 VADriverContextP ctx,
129 VABufferID buf_id, /* in */
130 unsigned int num_elements /* in */
131 );
132
133 VAStatus (*vaMapBuffer) (
134 VADriverContextP ctx,
135 VABufferID buf_id, /* in */
136 void **pbuf /* out */
137 );
138
139 VAStatus (*vaUnmapBuffer) (
140 VADriverContextP ctx,
141 VABufferID buf_id /* in */
142 );
143
144 VAStatus (*vaDestroyBuffer) (
145 VADriverContextP ctx,
146 VABufferID buffer_id
147 );
148
149 VAStatus (*vaBeginPicture) (
150 VADriverContextP ctx,
151 VAContextID context,
152 VASurfaceID render_target
153 );
154
155 VAStatus (*vaRenderPicture) (
156 VADriverContextP ctx,
157 VAContextID context,
158 VABufferID *buffers,
159 int num_buffers
160 );
161
162 VAStatus (*vaEndPicture) (
163 VADriverContextP ctx,
164 VAContextID context
165 );
166
167 VAStatus (*vaSyncSurface) (
168 VADriverContextP ctx,
169 VASurfaceID render_target
170 );
171
172 VAStatus (*vaQuerySurfaceStatus) (
173 VADriverContextP ctx,
174 VASurfaceID render_target,
175 VASurfaceStatus *status /* out */
176 );
177
178 VAStatus (*vaQuerySurfaceError) (
179 VADriverContextP ctx,
180 VASurfaceID render_target,
181 VAStatus error_status,
182 void **error_info /*out*/
183 );
184
185 VAStatus (*vaPutSurface) (
186 VADriverContextP ctx,
187 VASurfaceID surface,
188 void* draw, /* Drawable of window system */
189 short srcx,
190 short srcy,
191 unsigned short srcw,
192 unsigned short srch,
193 short destx,
194 short desty,
195 unsigned short destw,
196 unsigned short desth,
197 VARectangle *cliprects, /* client supplied clip list */
198 unsigned int number_cliprects, /* number of clip rects in the cl ip list */
199 unsigned int flags /* de-interlacing flags */
200 );
201
202 VAStatus (*vaQueryImageFormats) (
203 VADriverContextP ctx,
204 VAImageFormat *format_list, /* out */
205 int *num_formats /* out */
206 );
207
208 VAStatus (*vaCreateImage) (
209 VADriverContextP ctx,
210 VAImageFormat *format,
211 int width,
212 int height,
213 VAImage *image /* out */
214 );
215
216 VAStatus (*vaDeriveImage) (
217 VADriverContextP ctx,
218 VASurfaceID surface,
219 VAImage *image /* out */
220 );
221
222 VAStatus (*vaDestroyImage) (
223 VADriverContextP ctx,
224 VAImageID image
225 );
226
227 VAStatus (*vaSetImagePalette) (
228 VADriverContextP ctx,
229 VAImageID image,
230 /*
231 * pointer to an array holding the palette data. The size of th e array is
232 * num_palette_entries * entry_bytes in size. The order of the components
233 * in the palette is described by the component_order in VAImage struct
234 */
235 unsigned char *palette
236 );
237
238 VAStatus (*vaGetImage) (
239 VADriverContextP ctx,
240 VASurfaceID surface,
241 int x, /* coordinates of the upper left source pixel */
242 int y,
243 unsigned int width, /* width and height of the region */
244 unsigned int height,
245 VAImageID image
246 );
247
248 VAStatus (*vaPutImage) (
249 VADriverContextP ctx,
250 VASurfaceID surface,
251 VAImageID image,
252 int src_x,
253 int src_y,
254 unsigned int src_width,
255 unsigned int src_height,
256 int dest_x,
257 int dest_y,
258 unsigned int dest_width,
259 unsigned int dest_height
260 );
261
262 VAStatus (*vaQuerySubpictureFormats) (
263 VADriverContextP ctx,
264 VAImageFormat *format_list, /* out */
265 unsigned int *flags, /* out */
266 unsigned int *num_formats /* out */
267 );
268
269 VAStatus (*vaCreateSubpicture) (
270 VADriverContextP ctx,
271 VAImageID image,
272 VASubpictureID *subpicture /* out */
273 );
274
275 VAStatus (*vaDestroySubpicture) (
276 VADriverContextP ctx,
277 VASubpictureID subpicture
278 );
279
280 VAStatus (*vaSetSubpictureImage) (
281 VADriverContextP ctx,
282 VASubpictureID subpicture,
283 VAImageID image
284 );
285
286 VAStatus (*vaSetSubpictureChromakey) (
287 VADriverContextP ctx,
288 VASubpictureID subpicture,
289 unsigned int chromakey_min,
290 unsigned int chromakey_max,
291 unsigned int chromakey_mask
292 );
293
294 VAStatus (*vaSetSubpictureGlobalAlpha) (
295 VADriverContextP ctx,
296 VASubpictureID subpicture,
297 float global_alpha
298 );
299
300 VAStatus (*vaAssociateSubpicture) (
301 VADriverContextP ctx,
302 VASubpictureID subpicture,
303 VASurfaceID *target_surfaces,
304 int num_surfaces,
305 short src_x, /* upper left offset in subpicture */
306 short src_y,
307 unsigned short src_width,
308 unsigned short src_height,
309 short dest_x, /* upper left offset in surface */
310 short dest_y,
311 unsigned short dest_width,
312 unsigned short dest_height,
313 /*
314 * whether to enable chroma-keying or global-alpha
315 * see VA_SUBPICTURE_XXX values
316 */
317 unsigned int flags
318 );
319
320 VAStatus (*vaDeassociateSubpicture) (
321 VADriverContextP ctx,
322 VASubpictureID subpicture,
323 VASurfaceID *target_surfaces,
324 int num_surfaces
325 );
326
327 VAStatus (*vaQueryDisplayAttributes) (
328 VADriverContextP ctx,
329 VADisplayAttribute *attr_list, /* out */
330 int *num_attributes /* out */
331 );
332
333 VAStatus (*vaGetDisplayAttributes) (
334 VADriverContextP ctx,
335 VADisplayAttribute *attr_list, /* in/out */
336 int num_attributes
337 );
338
339 VAStatus (*vaSetDisplayAttributes) (
340 VADriverContextP ctx,
341 VADisplayAttribute *attr_list,
342 int num_attributes
343 );
344
345 /* used by va trace */
346 VAStatus (*vaBufferInfo) (
347 VADriverContextP ctx, /* in */
348 VABufferID buf_id, /* in */
349 VABufferType *type, /* out */
350 unsigned int *size, /* out */
351 unsigned int *num_elements /* out */
352 );
353
354 /* lock/unlock surface for external access */
355 VAStatus (*vaLockSurface) (
356 VADriverContextP ctx,
357 VASurfaceID surface,
358 unsigned int *fourcc, /* out for follow argument */
359 unsigned int *luma_stride,
360 unsigned int *chroma_u_stride,
361 unsigned int *chroma_v_stride,
362 unsigned int *luma_offset,
363 unsigned int *chroma_u_offset,
364 unsigned int *chroma_v_offset,
365 unsigned int *buffer_name, /* if it is not NULL, assign the low lever
366 * surface buffer name
367 */
368 void **buffer /* if it is not NULL, map the surface buffer for
369 * CPU access
370 */
371 );
372
373 VAStatus (*vaUnlockSurface) (
374 VADriverContextP ctx,
375 VASurfaceID surface
376 );
377 };
378
379 struct VADriverContext
380 {
381 void *pDriverData;
382
383 /**
384 * The core VA implementation hooks.
385 *
386 * This structure is allocated from libva with calloc().
387 */
388 struct VADriverVTable *vtable;
389
390 /**
391 * The VA/GLX implementation hooks.
392 *
393 * This structure is intended for drivers that implement the
394 * VA/GLX API. The driver implementation is responsible for the
395 * allocation and deallocation of this structure.
396 */
397 struct VADriverVTableGLX *vtable_glx;
398
399 /**
400 * The VA/EGL implementation hooks.
401 *
402 * This structure is intended for drivers that implement the
403 * VA/EGL API. The driver implementation is responsible for the
404 * allocation and deallocation of this structure.
405 */
406 struct VADriverVTableEGL *vtable_egl;
407
408 /**
409 * The third-party/private implementation hooks.
410 *
411 * This structure is intended for drivers that implement the
412 * private API. The driver implementation is responsible for the
413 * allocation and deallocation of this structure.
414 */
415 void *vtable_tpi;
416
417 void *native_dpy;
418 int x11_screen;
419 int version_major;
420 int version_minor;
421 int max_profiles;
422 int max_entrypoints;
423 int max_attributes;
424 int max_image_formats;
425 int max_subpic_formats;
426 int max_display_attributes;
427 const char *str_vendor;
428
429 void *handle; /* dlopen handle */
430
431 void *dri_state;
432 void *glx; /* opaque for GLX code */
433 void *egl;
434 unsigned long reserved[44]; /* reserve for future add-ins, decrease the subscript accordingly */
435 };
436
437 #define VA_DISPLAY_MAGIC 0x56414430 /* VAD0 */
438 struct VADisplayContext
439 {
440 int vadpy_magic;
441
442 VADisplayContextP pNext;
443 VADriverContextP pDriverContext;
444
445 int (*vaIsValid) (
446 VADisplayContextP ctx
447 );
448
449 void (*vaDestroy) (
450 VADisplayContextP ctx
451 );
452
453 VAStatus (*vaGetDriverName) (
454 VADisplayContextP ctx,
455 char **driver_name
456 );
457
458 void *opaque; /* opaque for display extensions (e.g. GLX) */
459
460 VAStatus (*vaCreateNativePixmap) (
461 VADisplayContextP pDisplayContext,
462 unsigned int width,
463 unsigned int height,
464 void **native_pixmap);
465
466 VAStatus (*vaFreeNativePixmap) (
467 VADisplayContextP pDisplayContext,
468 void *native_pixmap);
469 };
470
471 typedef VAStatus (*VADriverInit) (
472 VADriverContextP driver_context
473 );
474
475 #endif /* _VA_BACKEND_H_ */
OLDNEW
« no previous file with comments | « third_party/libva/va/va_android.h ('k') | third_party/libva/va/va_backend_tpi.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698