34 return VA_INVALID_SURFACE;
43 VADecPictureParameterBufferVP9 pic_param;
49 pic_param = (VADecPictureParameterBufferVP9) {
50 .frame_width = avctx->
width,
51 .frame_height = avctx->
height,
71 .last_ref_frame = h->
h.
refidx[0],
72 .last_ref_frame_sign_bias = h->
h.
signbias[0],
73 .golden_ref_frame = h->
h.
refidx[1],
74 .golden_ref_frame_sign_bias = h->
h.
signbias[1],
75 .alt_ref_frame = h->
h.
refidx[2],
76 .alt_ref_frame_sign_bias = h->
h.
signbias[2],
89 .bit_depth = h->
h.
bpp,
92 for (i = 0; i < 7; i++)
96 for (i = 0; i < 3; i++)
99 memset(pic_param.segment_pred_probs, 255,
sizeof(pic_param.segment_pred_probs));
102 for (i = 0; i < 8; i++) {
106 pic_param.reference_frames[i] = VA_INVALID_ID;
110 VAPictureParameterBufferType,
111 &pic_param,
sizeof(pic_param));
134 VASliceParameterBufferVP9 slice_param;
137 slice_param = (VASliceParameterBufferVP9) {
138 .slice_data_size =
size,
139 .slice_data_offset = 0,
140 .slice_data_flag = VA_SLICE_DATA_FLAG_ALL,
143 for (i = 0; i < 8; i++) {
144 slice_param.seg_param[i] = (VASegmentParameterVP9) {
145 .segment_flags.fields = {
157 memcpy(slice_param.seg_param[i].filter_level, h->
h.
segmentation.
feat[i].lflvl,
sizeof(slice_param.seg_param[i].filter_level));
161 &slice_param,
sizeof(slice_param),
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
AVBufferRef * buf[AV_NUM_DATA_POINTERS]
AVBuffer references backing the data for this frame.
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)
static VASurfaceID ff_vaapi_get_surface_id(AVFrame *pic)
uint8_t log2_chroma_w
Amount to shift the luma width right to find the chroma width.
int ff_vaapi_common_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx)
int ff_vaapi_decode_uninit(AVCodecContext *avctx)
const AVHWAccel ff_vp9_vaapi_hwaccel
static av_cold int uninit(AVCodecContext *avctx)
int ff_vaapi_decode_issue(AVCodecContext *avctx, VAAPIDecodePicture *pic)
uint8_t log2_chroma_h
Amount to shift the luma height right to find the chroma height.
static VASurfaceID vaapi_vp9_surface_id(const VP9Frame *vf)
static int vaapi_vp9_end_frame(AVCodecContext *avctx)
void * hwaccel_picture_private
const char * name
Name of the hardware accelerated codec.
int ff_vaapi_decode_init(AVCodecContext *avctx)
int width
picture width / height.
VASurfaceID output_surface
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
main external API structure.
int ff_vaapi_decode_cancel(AVCodecContext *avctx, VAAPIDecodePicture *pic)
static int vaapi_vp9_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
#define HWACCEL_CAP_ASYNC_SAFE
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)
enum AVPixelFormat sw_pix_fmt
Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
static int vaapi_vp9_start_frame(AVCodecContext *avctx, av_unused const uint8_t *buffer, av_unused uint32_t size)