134 const int bitplane_index = n / 2;
135 const int ff_bp_index = y * stride + x;
138 v = ff_bp[0][ff_bp_index];
140 v |= ff_bp[1][ff_bp_index] << 1;
142 v |= ff_bp[2][ff_bp_index] << 2;
143 bitplane[bitplane_index] = (bitplane[bitplane_index] << 4) | v;
151 VAPictureParameterBufferVC1 *pic_param;
153 av_dlog(avctx,
"vaapi_vc1_start_frame()\n");
161 pic_param->forward_reference_picture = VA_INVALID_ID;
162 pic_param->backward_reference_picture = VA_INVALID_ID;
163 pic_param->inloop_decoded_picture = VA_INVALID_ID;
164 pic_param->sequence_fields.value = 0;
165 pic_param->sequence_fields.bits.pulldown = v->
broadcast;
166 pic_param->sequence_fields.bits.interlace = v->
interlace;
167 pic_param->sequence_fields.bits.tfcntrflag = v->
tfcntrflag;
168 pic_param->sequence_fields.bits.finterpflag = v->
finterpflag;
169 pic_param->sequence_fields.bits.psf = v->
psf;
170 pic_param->sequence_fields.bits.multires = v->
multires;
171 pic_param->sequence_fields.bits.overlap = v->
overlap;
172 pic_param->sequence_fields.bits.syncmarker = v->
resync_marker;
173 pic_param->sequence_fields.bits.rangered = v->
rangered;
175 #if VA_CHECK_VERSION(0,32,0)
176 pic_param->sequence_fields.bits.profile = v->
profile;
180 pic_param->entrypoint_fields.value = 0;
181 pic_param->entrypoint_fields.bits.broken_link = v->
broken_link;
182 pic_param->entrypoint_fields.bits.closed_entry = v->
closed_entry;
183 pic_param->entrypoint_fields.bits.panscan_flag = v->
panscanflag;
184 pic_param->entrypoint_fields.bits.loopfilter = s->
loop_filter;
185 pic_param->conditional_overlap_flag = v->
condover;
186 pic_param->fast_uvmc_flag = v->
fastuvmc;
187 pic_param->range_mapping_fields.value = 0;
189 pic_param->range_mapping_fields.bits.luma = v->
range_mapy;
191 pic_param->range_mapping_fields.bits.chroma = v->
range_mapuv;
194 pic_param->mb_mode_table = 0;
196 pic_param->rounding_control = v->
rnd;
197 pic_param->post_processing = v->
postproc;
198 pic_param->picture_resolution_index = v->
respic;
199 pic_param->luma_scale = v->
lumscale;
200 pic_param->luma_shift = v->
lumshift;
201 pic_param->picture_fields.value = 0;
202 pic_param->picture_fields.bits.picture_type =
vc1_get_PTYPE(v);
203 pic_param->picture_fields.bits.frame_coding_mode = v->
fcm;
204 pic_param->picture_fields.bits.top_field_first = v->
tff;
205 pic_param->picture_fields.bits.is_first_field = v->
fcm == 0;
207 pic_param->raw_coding.value = 0;
209 pic_param->raw_coding.flags.direct_mb = v->
dmb_is_raw;
210 pic_param->raw_coding.flags.skip_mb = v->
skip_is_raw;
211 pic_param->raw_coding.flags.field_tx = 0;
212 pic_param->raw_coding.flags.forward_mb = 0;
215 pic_param->bitplane_present.value = 0;
219 pic_param->bitplane_present.flags.bp_field_tx = 0;
220 pic_param->bitplane_present.flags.bp_forward_mb = 0;
223 pic_param->reference_fields.value = 0;
224 pic_param->reference_fields.bits.reference_distance_flag = v->
refdist_flag;
225 pic_param->reference_fields.bits.reference_distance = 0;
226 pic_param->reference_fields.bits.num_reference_pictures = 0;
227 pic_param->reference_fields.bits.reference_field_pic_indicator = 0;
228 pic_param->mv_fields.value = 0;
232 pic_param->mv_fields.bits.two_mv_block_pattern_table = 0;
233 pic_param->mv_fields.bits.four_mv_switch = 0;
234 pic_param->mv_fields.bits.four_mv_block_pattern_table = 0;
235 pic_param->mv_fields.bits.extended_mv_flag = v->
extended_mv;
236 pic_param->mv_fields.bits.extended_mv_range = v->
mvrange;
237 pic_param->mv_fields.bits.extended_dmv_flag = v->
extended_dmv;
238 pic_param->mv_fields.bits.extended_dmv_range = 0;
239 pic_param->pic_quantizer_fields.value = 0;
240 pic_param->pic_quantizer_fields.bits.dquant = v->
dquant;
241 pic_param->pic_quantizer_fields.bits.quantizer = v->
quantizer_mode;
242 pic_param->pic_quantizer_fields.bits.half_qp = v->
halfpq;
243 pic_param->pic_quantizer_fields.bits.pic_quantizer_scale = v->
pq;
244 pic_param->pic_quantizer_fields.bits.pic_quantizer_type = v->
pquantizer;
245 pic_param->pic_quantizer_fields.bits.dq_frame = v->
dquantfrm;
246 pic_param->pic_quantizer_fields.bits.dq_profile = v->
dqprofile;
249 pic_param->pic_quantizer_fields.bits.dq_binary_level = v->
dqbilevel;
250 pic_param->pic_quantizer_fields.bits.alt_pic_quantizer = v->
altpq;
251 pic_param->transform_fields.value = 0;
252 pic_param->transform_fields.bits.variable_sized_transform_flag = v->
vstransform;
253 pic_param->transform_fields.bits.mb_level_transform_type_flag = v->
ttmbf;
254 pic_param->transform_fields.bits.frame_level_transform_type =
vc1_get_TTFRM(v);
255 pic_param->transform_fields.bits.transform_ac_codingset_idx1 = v->
c_ac_table_index;
256 pic_param->transform_fields.bits.transform_ac_codingset_idx2 = v->
y_ac_table_index;
257 pic_param->transform_fields.bits.intra_transform_dc_table = v->
s.
dc_table_index;
268 if (pic_param->bitplane_present.value) {
275 ff_bp[0] = pic_param->bitplane_present.flags.bp_direct_mb ? v->
direct_mb_plane : NULL;
276 ff_bp[1] = pic_param->bitplane_present.flags.bp_skip_mb ? s->
mbskip_table : NULL;
277 ff_bp[2] = pic_param->bitplane_present.flags.bp_mv_type_mb ? v->
mv_type_mb_plane : NULL;
281 ff_bp[0] = pic_param->bitplane_present.flags.bp_direct_mb ? v->
direct_mb_plane : NULL;
282 ff_bp[1] = pic_param->bitplane_present.flags.bp_skip_mb ? s->
mbskip_table : NULL;
289 ff_bp[1] = pic_param->bitplane_present.flags.bp_ac_pred ? v->
acpred_plane : NULL;
290 ff_bp[2] = pic_param->bitplane_present.flags.bp_overflags ? v->
over_flags_plane : NULL;
305 for (x = 0; x < s->
mb_width; x++, n++)
317 VASliceParameterBufferVC1 *slice_param;
319 av_dlog(avctx,
"vaapi_vc1_decode_slice(): buffer %p, size %d\n", buffer, size);
332 slice_param->slice_vertical_position = s->
mb_y;
336 #if CONFIG_WMV3_VAAPI_HWACCEL
338 .
name =
"wmv3_vaapi",