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)