Mercurial > libavcodec.hg
comparison vaapi.h @ 9225:85c7a028316d libavcodec
Add common VA API data structures and helpers.
author | gb |
---|---|
date | Sun, 22 Mar 2009 01:32:27 +0000 |
parents | |
children | 238dd89b7ac3 |
comparison
equal
deleted
inserted
replaced
9224:aed92dbae82e | 9225:85c7a028316d |
---|---|
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 #include <stdint.h> | |
28 | |
29 /** | |
30 * \defgroup VAAPI_Decoding VA API Decoding | |
31 * \ingroup Decoder | |
32 * @{ | |
33 */ | |
34 | |
35 /** | |
36 * This structure is used to share data between the FFmpeg library and | |
37 * the client video application. | |
38 * This shall be zero-allocated and available as | |
39 * AVCodecContext.hwaccel_context. All user members can be set once | |
40 * during initialization or through each AVCodecContext.get_buffer() | |
41 * function call. In any case, they must be valid prior to calling | |
42 * decoding functions. | |
43 */ | |
44 struct vaapi_context { | |
45 /** | |
46 * Window system dependent data | |
47 * | |
48 * - encoding: unused | |
49 * - decoding: Set by user | |
50 */ | |
51 void *display; | |
52 | |
53 /** | |
54 * Configuration ID | |
55 * | |
56 * - encoding: unused | |
57 * - decoding: Set by user | |
58 */ | |
59 uint32_t config_id; | |
60 | |
61 /** | |
62 * Context ID (video decode pipeline) | |
63 * | |
64 * - encoding: unused | |
65 * - decoding: Set by user | |
66 */ | |
67 uint32_t context_id; | |
68 | |
69 /** | |
70 * VAPictureParameterBuffer ID | |
71 * | |
72 * - encoding: unused | |
73 * - decoding: Set by libavcodec | |
74 */ | |
75 VABufferID pic_param_buf_id; | |
76 | |
77 /** | |
78 * VAIQMatrixBuffer ID | |
79 * | |
80 * - encoding: unused | |
81 * - decoding: Set by libavcodec | |
82 */ | |
83 VABufferID iq_matrix_buf_id; | |
84 | |
85 /** | |
86 * VABitPlaneBuffer ID (for VC-1 decoding) | |
87 * | |
88 * - encoding: unused | |
89 * - decoding: Set by libavcodec | |
90 */ | |
91 VABufferID bitplane_buf_id; | |
92 | |
93 /** | |
94 * Slice parameter/data buffer IDs | |
95 * | |
96 * - encoding: unused | |
97 * - decoding: Set by libavcodec | |
98 */ | |
99 VABufferID *slice_buf_ids; | |
100 | |
101 /** | |
102 * Number of effective slice buffer IDs to send to the HW | |
103 * | |
104 * - encoding: unused | |
105 * - decoding: Set by libavcodec | |
106 */ | |
107 unsigned int n_slice_buf_ids; | |
108 | |
109 /** | |
110 * Size of pre-allocated slice_buf_ids | |
111 * | |
112 * - encoding: unused | |
113 * - decoding: Set by libavcodec | |
114 */ | |
115 unsigned int slice_buf_ids_alloc; | |
116 | |
117 /** | |
118 * Picture parameter buffer | |
119 * | |
120 * - encoding: unused | |
121 * - decoding: Set by libavcodec | |
122 */ | |
123 union { | |
124 VAPictureParameterBufferMPEG2 mpeg2; | |
125 VAPictureParameterBufferMPEG4 mpeg4; | |
126 VAPictureParameterBufferH264 h264; | |
127 VAPictureParameterBufferVC1 vc1; | |
128 } pic_param; | |
129 | |
130 /** | |
131 * Size of a VAPictureParameterBuffer element | |
132 * | |
133 * - encoding: unused | |
134 * - decoding: Set by libavcodec | |
135 */ | |
136 unsigned int pic_param_size; | |
137 | |
138 /** | |
139 * Inverse quantization matrix buffer | |
140 * | |
141 * - encoding: unused | |
142 * - decoding: Set by libavcodec | |
143 */ | |
144 union { | |
145 VAIQMatrixBufferMPEG2 mpeg2; | |
146 VAIQMatrixBufferMPEG4 mpeg4; | |
147 VAIQMatrixBufferH264 h264; | |
148 } iq_matrix; | |
149 | |
150 /** | |
151 * Size of a VAIQMatrixBuffer element | |
152 * | |
153 * - encoding: unused | |
154 * - decoding: Set by libavcodec | |
155 */ | |
156 unsigned int iq_matrix_size; | |
157 | |
158 /** | |
159 * Flag: is quantization matrix present? | |
160 * | |
161 * - encoding: unused | |
162 * - decoding: Set by libavcodec | |
163 */ | |
164 uint8_t iq_matrix_present; | |
165 | |
166 /** | |
167 * VC-1 bitplane buffer | |
168 * | |
169 * - encoding: unused | |
170 * - decoding: Set by libavcodec | |
171 */ | |
172 uint8_t *bitplane_buffer; | |
173 | |
174 /** | |
175 * Size of VC-1 bitplane buffer | |
176 * | |
177 * - encoding: unused | |
178 * - decoding: Set by libavcodec | |
179 */ | |
180 unsigned int bitplane_buffer_size; | |
181 | |
182 /** | |
183 * Pointer to VASliceParameterBuffers | |
184 * | |
185 * - encoding: unused | |
186 * - decoding: Set by libavcodec | |
187 */ | |
188 void *slice_params; | |
189 | |
190 /** | |
191 * Size of a VASliceParameterBuffer element | |
192 * | |
193 * - encoding: unused | |
194 * - decoding: Set by libavcodec | |
195 */ | |
196 unsigned int slice_param_size; | |
197 | |
198 /** | |
199 * Size of pre-allocated slice_params | |
200 * | |
201 * - encoding: unused | |
202 * - decoding: Set by libavcodec | |
203 */ | |
204 unsigned int slice_params_alloc; | |
205 | |
206 /** | |
207 * Number of slices currently filled in | |
208 * | |
209 * - encoding: unused | |
210 * - decoding: Set by libavcodec | |
211 */ | |
212 unsigned int slice_count; | |
213 | |
214 /** | |
215 * Pointer to slice data buffer base | |
216 * - encoding: unused | |
217 * - decoding: Set by libavcodec | |
218 */ | |
219 const uint8_t *slice_data; | |
220 | |
221 /** | |
222 * Current size of slice data | |
223 * | |
224 * - encoding: unused | |
225 * - decoding: Set by libavcodec | |
226 */ | |
227 uint32_t slice_data_size; | |
228 }; | |
229 | |
230 /* @} */ | |
231 | |
232 #endif /* AVCODEC_VAAPI_H */ |