1 /* 2 * va_wayland.h - Wayland API 3 * 4 * Copyright (c) 2012 Intel Corporation. All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the 8 * "Software"), to deal in the Software without restriction, including 9 * without limitation the rights to use, copy, modify, merge, publish, 10 * distribute, sub license, and/or sell copies of the Software, and to 11 * permit persons to whom the Software is furnished to do so, subject to 12 * the following conditions: 13 * 14 * The above copyright notice and this permission notice (including the 15 * next paragraph) shall be included in all copies or substantial portions 16 * of the Software. 17 * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21 * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR 22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 */ 26 27 #ifndef VA_WAYLAND_H 28 #define VA_WAYLAND_H 29 30 #include <va/va.h> 31 #include <wayland-client.h> 32 33 /** 34 * \file va_wayland.h 35 * \brief The Wayland rendering API 36 * 37 * This file contains the \ref api_wayland "Wayland rendering API". 38 */ 39 40 #ifdef __cplusplus 41 extern "C" { 42 #endif 43 44 /** 45 * \defgroup api_wayland Wayland rendering API 46 * 47 * @{ 48 * 49 * Theory of operations: 50 * - Create a VA display for an active Wayland display ; 51 * - Perform normal VA-API operations, e.g. decode to a VA surface ; 52 * - Get wl_buffer associated to the VA surface ; 53 * - Attach wl_buffer to wl_surface ; 54 */ 55 56 /** 57 * \brief Returns a VA display wrapping the specified Wayland display. 58 * 59 * This functions returns a (possibly cached) VA display from the 60 * specified Wayland @display. 61 * 62 * @param[in] display the native Wayland display 63 * @return the VA display 64 */ 65 VADisplay 66 vaGetDisplayWl(struct wl_display *display); 67 68 /** 69 * \brief Returns the Wayland buffer associated with a VA surface. 70 * 71 * This function returns a wl_buffer handle that can be used as an 72 * argument to wl_surface_attach(). This buffer references the 73 * underlying VA @surface. As such, the VA @surface and Wayland 74 * @out_buffer have the same size and color format. Should specific 75 * color conversion be needed, then VA/VPP API can fulfill this 76 * purpose. 77 * 78 * The @flags describe the desired picture structure. This is useful 79 * to expose a de-interlaced buffer. If the VA driver does not support 80 * any of the supplied flags, then #VA_STATUS_ERROR_FLAG_NOT_SUPPORTED 81 * is returned. The following flags are allowed: \c VA_FRAME_PICTURE, 82 * \c VA_TOP_FIELD, \c VA_BOTTOM_FIELD. 83 * 84 * @param[in] dpy the VA display 85 * @param[in] surface the VA surface 86 * @param[in] flags the deinterlacing flags 87 * @param[out] out_buffer a wl_buffer wrapping the VA @surface 88 * @return VA_STATUS_SUCCESS if successful 89 */ 90 VAStatus 91 vaGetSurfaceBufferWl( 92 VADisplay dpy, 93 VASurfaceID surface, 94 unsigned int flags, 95 struct wl_buffer **out_buffer 96 ); 97 98 /** 99 * \brief Returns the Wayland buffer associated with a VA image. 100 * 101 * This function returns a wl_buffer handle that can be used as an 102 * argument to wl_surface_attach(). This buffer references the 103 * underlying VA @image. As such, the VA @image and Wayland 104 * @out_buffer have the same size and color format. Should specific 105 * color conversion be needed, then VA/VPP API can fulfill this 106 * purpose. 107 * 108 * The @flags describe the desired picture structure. See 109 * vaGetSurfaceBufferWl() description for more details. 110 * 111 * @param[in] dpy the VA display 112 * @param[in] image the VA image 113 * @param[in] flags the deinterlacing flags 114 * @param[out] out_buffer a wl_buffer wrapping the VA @image 115 * @return VA_STATUS_SUCCESS if successful 116 */ 117 VAStatus 118 vaGetImageBufferWl( 119 VADisplay dpy, 120 VAImageID image, 121 unsigned int flags, 122 struct wl_buffer **out_buffer 123 ); 124 125 /**@}*/ 126 127 #ifdef __cplusplus 128 } 129 #endif 130 131 #endif /* VA_WAYLAND_H */ 132