Commit | Line | Data |
---|---|---|
2ba45a60 DM |
1 | /* |
2 | * Video Acceleration API (shared data between FFmpeg and the video player) | |
3 | * HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1 | |
4 | * | |
5 | * Copyright (C) 2008-2009 Splitted-Desktop Systems | |
6 | * | |
7 | * This file is part of FFmpeg. | |
8 | * | |
9 | * FFmpeg is free software; you can redistribute it and/or | |
10 | * modify it under the terms of the GNU Lesser General Public | |
11 | * License as published by the Free Software Foundation; either | |
12 | * version 2.1 of the License, or (at your option) any later version. | |
13 | * | |
14 | * FFmpeg is distributed in the hope that it will be useful, | |
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
17 | * Lesser General Public License for more details. | |
18 | * | |
19 | * You should have received a copy of the GNU Lesser General Public | |
20 | * License along with FFmpeg; if not, write to the Free Software | |
21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
22 | */ | |
23 | ||
24 | #ifndef AVCODEC_VAAPI_H | |
25 | #define AVCODEC_VAAPI_H | |
26 | ||
27 | /** | |
28 | * @file | |
29 | * @ingroup lavc_codec_hwaccel_vaapi | |
30 | * Public libavcodec VA API header. | |
31 | */ | |
32 | ||
33 | #include <stdint.h> | |
34 | ||
35 | /** | |
36 | * @defgroup lavc_codec_hwaccel_vaapi VA API Decoding | |
37 | * @ingroup lavc_codec_hwaccel | |
38 | * @{ | |
39 | */ | |
40 | ||
41 | /** | |
42 | * This structure is used to share data between the FFmpeg library and | |
43 | * the client video application. | |
44 | * This shall be zero-allocated and available as | |
45 | * AVCodecContext.hwaccel_context. All user members can be set once | |
46 | * during initialization or through each AVCodecContext.get_buffer() | |
47 | * function call. In any case, they must be valid prior to calling | |
48 | * decoding functions. | |
49 | */ | |
50 | struct vaapi_context { | |
51 | /** | |
52 | * Window system dependent data | |
53 | * | |
54 | * - encoding: unused | |
55 | * - decoding: Set by user | |
56 | */ | |
57 | void *display; | |
58 | ||
59 | /** | |
60 | * Configuration ID | |
61 | * | |
62 | * - encoding: unused | |
63 | * - decoding: Set by user | |
64 | */ | |
65 | uint32_t config_id; | |
66 | ||
67 | /** | |
68 | * Context ID (video decode pipeline) | |
69 | * | |
70 | * - encoding: unused | |
71 | * - decoding: Set by user | |
72 | */ | |
73 | uint32_t context_id; | |
74 | ||
75 | /** | |
76 | * VAPictureParameterBuffer ID | |
77 | * | |
78 | * - encoding: unused | |
79 | * - decoding: Set by libavcodec | |
80 | */ | |
81 | uint32_t pic_param_buf_id; | |
82 | ||
83 | /** | |
84 | * VAIQMatrixBuffer ID | |
85 | * | |
86 | * - encoding: unused | |
87 | * - decoding: Set by libavcodec | |
88 | */ | |
89 | uint32_t iq_matrix_buf_id; | |
90 | ||
91 | /** | |
92 | * VABitPlaneBuffer ID (for VC-1 decoding) | |
93 | * | |
94 | * - encoding: unused | |
95 | * - decoding: Set by libavcodec | |
96 | */ | |
97 | uint32_t bitplane_buf_id; | |
98 | ||
99 | /** | |
100 | * Slice parameter/data buffer IDs | |
101 | * | |
102 | * - encoding: unused | |
103 | * - decoding: Set by libavcodec | |
104 | */ | |
105 | uint32_t *slice_buf_ids; | |
106 | ||
107 | /** | |
108 | * Number of effective slice buffer IDs to send to the HW | |
109 | * | |
110 | * - encoding: unused | |
111 | * - decoding: Set by libavcodec | |
112 | */ | |
113 | unsigned int n_slice_buf_ids; | |
114 | ||
115 | /** | |
116 | * Size of pre-allocated slice_buf_ids | |
117 | * | |
118 | * - encoding: unused | |
119 | * - decoding: Set by libavcodec | |
120 | */ | |
121 | unsigned int slice_buf_ids_alloc; | |
122 | ||
123 | /** | |
124 | * Pointer to VASliceParameterBuffers | |
125 | * | |
126 | * - encoding: unused | |
127 | * - decoding: Set by libavcodec | |
128 | */ | |
129 | void *slice_params; | |
130 | ||
131 | /** | |
132 | * Size of a VASliceParameterBuffer element | |
133 | * | |
134 | * - encoding: unused | |
135 | * - decoding: Set by libavcodec | |
136 | */ | |
137 | unsigned int slice_param_size; | |
138 | ||
139 | /** | |
140 | * Size of pre-allocated slice_params | |
141 | * | |
142 | * - encoding: unused | |
143 | * - decoding: Set by libavcodec | |
144 | */ | |
145 | unsigned int slice_params_alloc; | |
146 | ||
147 | /** | |
148 | * Number of slices currently filled in | |
149 | * | |
150 | * - encoding: unused | |
151 | * - decoding: Set by libavcodec | |
152 | */ | |
153 | unsigned int slice_count; | |
154 | ||
155 | /** | |
156 | * Pointer to slice data buffer base | |
157 | * - encoding: unused | |
158 | * - decoding: Set by libavcodec | |
159 | */ | |
160 | const uint8_t *slice_data; | |
161 | ||
162 | /** | |
163 | * Current size of slice data | |
164 | * | |
165 | * - encoding: unused | |
166 | * - decoding: Set by libavcodec | |
167 | */ | |
168 | uint32_t slice_data_size; | |
169 | }; | |
170 | ||
171 | /* @} */ | |
172 | ||
173 | #endif /* AVCODEC_VAAPI_H */ |