136 const int bitplane_index = n / 2;
137 const int ff_bp_index = y * stride + x;
140 v = ff_bp[0][ff_bp_index];
142 v |= ff_bp[1][ff_bp_index] << 1;
144 v |= ff_bp[2][ff_bp_index] << 2;
145 bitplane[bitplane_index] = (bitplane[bitplane_index] << 4) | v;
153 VAPictureParameterBufferVC1 pic_param;
158 pic_param = (VAPictureParameterBufferVC1) {
159 .forward_reference_picture = VA_INVALID_ID,
160 .backward_reference_picture = VA_INVALID_ID,
161 .inloop_decoded_picture = VA_INVALID_ID,
162 .sequence_fields.bits = {
177 .entrypoint_fields.bits = {
183 .conditional_overlap_flag = v->
condover,
185 .range_mapping_fields.bits = {
195 .rounding_control = v->
rnd,
197 .picture_resolution_index = v->
respic,
200 .picture_fields.bits = {
202 .frame_coding_mode = v->
fcm,
203 .top_field_first = v->
tff,
204 .is_first_field = v->
fcm == 0,
207 .raw_coding.flags = {
216 .bitplane_present.flags = {
225 .reference_fields.bits = {
227 .reference_distance = 0,
228 .num_reference_pictures = 0,
229 .reference_field_pic_indicator = 0,
235 .two_mv_block_pattern_table = 0,
237 .four_mv_block_pattern_table = 0,
239 .extended_mv_range = v->
mvrange,
241 .extended_dmv_range = 0,
243 .pic_quantizer_fields.bits = {
247 .pic_quantizer_scale = v->
pq,
254 .alt_pic_quantizer = v->
altpq,
256 .transform_fields.bits = {
258 .mb_level_transform_type_flag = v->
ttmbf,
276 VAPictureParameterBufferType,
277 &pic_param,
sizeof(pic_param));
281 if (pic_param.bitplane_present.value) {
296 ff_bp[1] = pic_param.bitplane_present.flags.bp_skip_mb ? s->
mbskip_table :
NULL;
302 ff_bp[1] = pic_param.bitplane_present.flags.bp_skip_mb ? s->
mbskip_table :
NULL;
309 ff_bp[1] = pic_param.bitplane_present.flags.bp_ac_pred ? v->
acpred_plane :
NULL;
321 for (x = 0; x < s->
mb_width; x++, n++)
327 VABitPlaneBufferType,
362 VASliceParameterBufferVC1 slice_param;
371 slice_param = (VASliceParameterBufferVC1) {
372 .slice_data_size =
size,
373 .slice_data_offset = 0,
374 .slice_data_flag = VA_SLICE_DATA_FLAG_ALL,
376 .slice_vertical_position = s->
mb_y,
380 &slice_param,
sizeof(slice_param),
390 #if CONFIG_WMV3_VAAPI_HWACCEL
392 .
name =
"wmv3_vaapi",
uint8_t bfraction_lut_index
Index for BFRACTION value (see Table 40, reproduced into ff_vc1_bfraction_lut[])
static int vc1_get_PTYPE(const VC1Context *v)
Reconstruct bitstream PTYPE (7.1.1.4, index into Table-35)
int coded_width
Bitstream width / height, may be different from width/height e.g.
int mv_type_is_raw
mv type mb plane is not coded
static av_cold int init(AVCodecContext *avctx)
int ff_vaapi_decode_make_param_buffer(AVCodecContext *avctx, VAAPIDecodePicture *pic, int type, const void *data, size_t size)
int max_b_frames
maximum number of B-frames between non-B-frames Note: The output will be delayed by max_b_frames+1 re...
int extended_mv
Ext MV in P/B (not in Simple)
static VASurfaceID ff_vaapi_get_surface_id(AVFrame *pic)
int broadcast
TFF/RFF present.
uint8_t rangeredfrm
Frame decoding info for S/M profiles only.
static int vc1_has_SKIPMB_bitplane(const VC1Context *v)
Check whether the SKIPMB bitplane is present.
static int vc1_has_DIRECTMB_bitplane(const VC1Context *v)
Check whether the DIRECTMB bitplane is present.
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
MVModes
MV modes for P-frames.
int fastuvmc
Rounding of qpel vector to hpel ? (not in Simple)
void ff_mpeg_draw_horiz_band(MpegEncContext *s, int y, int h)
uint8_t * acpred_plane
AC prediction flags bitplane.
int ff_vaapi_decode_uninit(AVCodecContext *avctx)
static av_cold int uninit(AVCodecContext *avctx)
static int vc1_has_OVERFLAGS_bitplane(const VC1Context *v)
Check whether the OVERFLAGS bitplane is present.
int panscanflag
NUMPANSCANWIN, TOPLEFT{X,Y}, BOTRIGHT{X,Y} present.
int ff_vaapi_decode_issue(AVCodecContext *avctx, VAAPIDecodePicture *pic)
VLC ff_vc1_cbpcy_p_vlc[4]
int interlace
Progressive/interlaced (RPTFTM syntax element)
int y_ac_table_index
Luma index from AC2FRM element.
int c_ac_table_index
AC coding set indexes.
int ttfrm
Transform type info present at frame level.
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_RB32
int profile
Sequence header data for all Profiles TODO: choose between ints, uint8_ts and monobit flags...
static int get_bits_count(const GetBitContext *s)
int refdist_flag
REFDIST syntax element present in II, IP, PI or PP field picture headers.
int mb_height
number of MBs horizontally & vertically
uint8_t * over_flags_plane
Overflags bitplane.
static int vc1_has_ACPRED_bitplane(const VC1Context *v)
Check whether the ACPRED bitplane is present.
int psf
Progressive Segmented Frame.
uint8_t ttmbf
Transform type flag.
static int get_VAMvModeVC1(enum MVModes mv_mode)
Translate FFmpeg MV modes to VA API.
int dmb_is_raw
direct mb plane is raw
int overlap
overlapped transforms in use
static int vaapi_vc1_end_frame(AVCodecContext *avctx)
int resync_marker
could this stream contain resync markers
uint8_t broken_link
Broken link flag (BROKEN_LINK syntax element)
static int vaapi_vc1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
const char * name
Name of the hardware accelerated codec.
int ff_vaapi_decode_init(AVCodecContext *avctx)
int tfcntrflag
TFCNTR present.
uint8_t * mbskip_table
used to avoid copy if macroblock skipped (for black regions for example) and used for B-frame encodin...
uint8_t mv_mode
Frame decoding info for all profiles.
Picture * current_picture_ptr
pointer to the current picture
void * hwaccel_picture_private
Hardware accelerator private data.
uint8_t lumscale
Luma compensation parameters.
uint8_t closed_entry
Closed entry point flag (CLOSED_ENTRY syntax element)
static VAMvModeVC1 vc1_get_MVMODE(const VC1Context *v)
Reconstruct bitstream MVMODE (7.1.1.32)
VLC * cbpcy_vlc
CBPCY VLC table.
VASurfaceID output_surface
int rangered
RANGEREDFRM (range reduction) syntax element present at frame level.
static VAMvModeVC1 vc1_get_MVMODE2(const VC1Context *v)
Reconstruct bitstream MVMODE2 (7.1.1.33)
int finterpflag
INTERPFRM present.
int multires
frame-level RESPIC syntax element present
main external API structure.
int extended_dmv
Additional extended dmv range at P/B-frame-level.
uint8_t respic
Frame-level flag for resized images.
int skip_is_raw
skip mb plane is not coded
int quantizer_mode
2 bits, quantizer mode used for sequence, see QUANT_*
static int vc1_has_MVTYPEMB_bitplane(const VC1Context *v)
Check whether the MVTYPEMB bitplane is present.
uint8_t * direct_mb_plane
bitplane for "direct" MBs
uint8_t mvrange
Ranges:0 -> [-64n 63.f] x [-32, 31.f]1 -> [-128, 127.f] x [-64, 63.f]2 -> [-512, 511.f] x [-128, 127.f]3 -> [-1024, 1023.f] x [-256, 255.f].
int pict_type
AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ...
int ff_vaapi_decode_cancel(AVCodecContext *avctx, VAAPIDecodePicture *pic)
uint8_t * mv_type_mb_plane
bitplane for mv_type == (4MV)
int vstransform
variable-size [48]x[48] transform type + info
static void vc1_pack_bitplanes(uint8_t *bitplane, int n, const uint8_t *ff_bp[3], int x, int y, int stride)
Pack FFmpeg bitplanes into a VABitPlaneBuffer element.
struct AVCodecContext * avctx
GLint GLenum GLboolean GLsizei stride
common internal api header.
int mb_stride
mb_width+1 used for some arrays to allow simple addressing of left & top MBs without sig11 ...
enum FrameCodingMode fcm
Frame decoding info for Advanced profile.
Picture last_picture
copy of the previous picture structure.
uint8_t dquantfrm
pquant parameters
#define HWACCEL_CAP_ASYNC_SAFE
uint8_t pquantizer
Uniform (over sequence) quantizer in use.
Picture next_picture
copy of the next picture structure.
AVHWAccel ff_vc1_vaapi_hwaccel
static int vc1_get_TTFRM(const VC1Context *v)
Reconstruct bitstream TTFRM (7.1.1.41, Table-53)
int dquant
How qscale varies with MBs, 2 bits (not in Simple)
uint8_t mv_mode2
Secondary MV coding mode (B-frames)
static int vaapi_vc1_start_frame(AVCodecContext *avctx, av_unused const uint8_t *buffer, av_unused uint32_t size)
int ff_vaapi_decode_make_slice_buffer(AVCodecContext *avctx, VAAPIDecodePicture *pic, const void *params_data, size_t params_size, const void *slice_data, size_t slice_size)
uint8_t halfpq
Uniform quant over image and qp+.5.
uint8_t altpq
Current/alternate frame quantizer scale.