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