va_subpicture.c revision 8bc7ccede1e126329c371e22b6d462edd21720d0
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************** 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * All Rights Reserved. 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Permission is hereby granted, free of charge, to any person obtaining a 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * copy of this software and associated documentation files (the 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * "Software"), to deal in the Software without restriction, including 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * without limitation the rights to use, copy, modify, merge, publish, 109ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch * distribute, sub license, and/or sell copies of the Software, and to 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * permit persons to whom the Software is furnished to do so, subject to 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the following conditions: 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The above copyright notice and this permission notice (including the 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * next paragraph) shall be included in all copies or substantial portions 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of the Software. 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) **************************************************************************/ 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <va/va.h> 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <va/va_backend.h> 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "pipe/p_format.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "va_private.h" 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum pipe_format pipe_format; 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VAImageFormat va_format; 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned int va_flags; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} va_subpicture_formats_supported_t; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static const va_subpicture_formats_supported_t va_subpicture_formats_supported[VA_MAX_SUBPIC_FORMATS_SUPPORTED + 1] = 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { PIPE_FORMAT_B8G8R8A8_UNORM, 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { VA_FOURCC('B','G','R','A'), VA_LSB_FIRST, 32, 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 }, 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 0 }, 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { PIPE_FORMAT_R8G8B8A8_UNORM, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { VA_FOURCC_RGBA, VA_LSB_FIRST, 32, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000 }, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 0 } 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)VAStatus 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)vlVaQuerySubpictureFormats(VADriverContextP ctx, VAImageFormat *format_list, 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned int *flags, unsigned int *num_formats) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!ctx) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_INVALID_CONTEXT; 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!(format_list && flags && num_formats)) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_UNKNOWN; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) num_formats[0] = VA_MAX_SUBPIC_FORMATS_SUPPORTED; 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int n = 0; 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /* Query supported formats */ 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (n = 0; n < VA_MAX_SUBPIC_FORMATS_SUPPORTED ; n++) { 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const va_subpicture_formats_supported_t * const format_map = &va_subpicture_formats_supported[n]; 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) flags[n] = format_map->va_flags; 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) format_list[n] = format_map->va_format; 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return VA_STATUS_SUCCESS; 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)VAStatus 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)vlVaCreateSubpicture(VADriverContextP ctx, VAImageID image, VASubpictureID *subpicture) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!ctx) 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_INVALID_CONTEXT; 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_UNIMPLEMENTED; 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 837dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochVAStatus 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)vlVaDestroySubpicture(VADriverContextP ctx, VASubpictureID subpicture) 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!ctx) 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_INVALID_CONTEXT; 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_UNIMPLEMENTED; 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 927dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochVAStatus 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)vlVaSubpictureImage(VADriverContextP ctx, VASubpictureID subpicture, VAImageID image) 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!ctx) 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_INVALID_CONTEXT; 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_UNIMPLEMENTED; 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)VAStatus 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)vlVaSetSubpictureChromakey(VADriverContextP ctx, VASubpictureID subpicture, 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned int chromakey_min, unsigned int chromakey_max, unsigned int chromakey_mask) 1047dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch{ 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!ctx) 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_INVALID_CONTEXT; 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_UNIMPLEMENTED; 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)VAStatus 112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)vlVaSetSubpictureGlobalAlpha(VADriverContextP ctx, VASubpictureID subpicture, float global_alpha) 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles){ 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!ctx) 115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return VA_STATUS_ERROR_INVALID_CONTEXT; 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return VA_STATUS_ERROR_UNIMPLEMENTED; 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)VAStatus 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)vlVaAssociateSubpicture(VADriverContextP ctx, VASubpictureID subpicture, VASurfaceID *target_surfaces, 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int num_surfaces, short src_x, short src_y, 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) unsigned short src_width, unsigned short src_height, 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) short dest_x, short dest_y, 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) unsigned short dest_width, 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) unsigned short dest_height, 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) unsigned int flags) 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles){ 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!ctx) 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_INVALID_CONTEXT; 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_UNIMPLEMENTED; 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)VAStatus 136a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)vlVaDeassociateSubpicture(VADriverContextP ctx, VASubpictureID subpicture, 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VASurfaceID *target_surfaces, int num_surfaces) 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!ctx) 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_INVALID_CONTEXT; 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return VA_STATUS_ERROR_UNIMPLEMENTED; 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)