va_subpicture.c revision 5e5d7acc2f93ddad8212b00c845dbd6381ee4119
1/**************************************************************************
2 *
3 * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian.
4 * 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 TUNGSTEN GRAPHICS 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
28#include <va/va.h>
29#include <va/va_backend.h>
30
31#include <pipe/p_format.h>
32
33#include "va_private.h"
34
35typedef struct  {
36   enum pipe_format pipe_format;
37   VAImageFormat    va_format;
38   unsigned int     va_flags;
39} va_subpicture_formats_supported_t;
40
41static const va_subpicture_formats_supported_t va_subpicture_formats_supported[VA_MAX_SUBPIC_FORMATS_SUPPORTED + 1] =
42{
43   { PIPE_FORMAT_B8G8R8A8_UNORM,
44      { VA_FOURCC('B','G','R','A'), VA_LSB_FIRST, 32, 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 },
45      0 },
46   { PIPE_FORMAT_R8G8B8A8_UNORM,
47      { VA_FOURCC_RGBA, VA_LSB_FIRST, 32, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000 },
48      0 }
49};
50
51VAStatus
52vlVaQuerySubpictureFormats(VADriverContextP ctx, VAImageFormat *format_list,
53                           unsigned int *flags, unsigned int *num_formats)
54{
55   if (!ctx)
56      return VA_STATUS_ERROR_INVALID_CONTEXT;
57
58   if (!(format_list && flags && num_formats))
59      return VA_STATUS_ERROR_UNKNOWN;
60
61   num_formats[0] = VA_MAX_SUBPIC_FORMATS_SUPPORTED;
62
63   int n = 0;
64   /* Query supported formats */
65   for (n = 0; n < VA_MAX_SUBPIC_FORMATS_SUPPORTED ; n++) {
66      const va_subpicture_formats_supported_t * const format_map = &va_subpicture_formats_supported[n];
67      flags[n] = format_map->va_flags;
68      format_list[n] = format_map->va_format;
69   }
70
71   return VA_STATUS_SUCCESS;
72}
73
74VAStatus
75vlVaCreateSubpicture(VADriverContextP ctx, VAImageID image, VASubpictureID *subpicture)
76{
77   if (!ctx)
78      return VA_STATUS_ERROR_INVALID_CONTEXT;
79
80   return VA_STATUS_ERROR_UNIMPLEMENTED;
81}
82
83VAStatus
84vlVaDestroySubpicture(VADriverContextP ctx, VASubpictureID subpicture)
85{
86   if (!ctx)
87      return VA_STATUS_ERROR_INVALID_CONTEXT;
88
89   return VA_STATUS_ERROR_UNIMPLEMENTED;
90}
91
92VAStatus
93vlVaSubpictureImage(VADriverContextP ctx, VASubpictureID subpicture, VAImageID image)
94{
95   if (!ctx)
96      return VA_STATUS_ERROR_INVALID_CONTEXT;
97
98   return VA_STATUS_ERROR_UNIMPLEMENTED;
99}
100
101VAStatus
102vlVaSetSubpictureChromakey(VADriverContextP ctx, VASubpictureID subpicture,
103                           unsigned int chromakey_min, unsigned int chromakey_max, unsigned int chromakey_mask)
104{
105   if (!ctx)
106      return VA_STATUS_ERROR_INVALID_CONTEXT;
107
108   return VA_STATUS_ERROR_UNIMPLEMENTED;
109}
110
111VAStatus
112vlVaSetSubpictureGlobalAlpha(VADriverContextP ctx, VASubpictureID subpicture, float global_alpha)
113{
114   if (!ctx)
115      return VA_STATUS_ERROR_INVALID_CONTEXT;
116
117   return VA_STATUS_ERROR_UNIMPLEMENTED;
118}
119
120VAStatus
121vlVaAssociateSubpicture(VADriverContextP ctx, VASubpictureID subpicture, VASurfaceID *target_surfaces,
122                        int num_surfaces, short src_x, short src_y,
123                        unsigned short src_width, unsigned short src_height,
124                        short dest_x, short dest_y,
125                        unsigned short dest_width,
126                        unsigned short dest_height,
127                        unsigned int flags)
128{
129   if (!ctx)
130      return VA_STATUS_ERROR_INVALID_CONTEXT;
131
132   return VA_STATUS_ERROR_UNIMPLEMENTED;
133}
134
135VAStatus
136vlVaDeassociateSubpicture(VADriverContextP ctx, VASubpictureID subpicture,
137                          VASurfaceID *target_surfaces, int num_surfaces)
138{
139   if (!ctx)
140      return VA_STATUS_ERROR_INVALID_CONTEXT;
141
142   return VA_STATUS_ERROR_UNIMPLEMENTED;
143}
144