23 #include <vdpau/vdpau.h> 40 VdpPictureInfoHEVC *
info = &pic_ctx->
info.hevc;
41 #ifdef VDP_YCBCR_FORMAT_Y_U_V_444 42 VdpPictureInfoHEVC444 *info2 = &pic_ctx->
info.hevc_444;
56 info->pic_width_in_luma_samples = sps->
width;
57 info->pic_height_in_luma_samples = sps->
height;
58 info->bit_depth_luma_minus8 = sps->
bit_depth - 8;
59 info->bit_depth_chroma_minus8 = sps->
bit_depth - 8;
72 for (
size_t i = 0;
i < 6;
i++) {
73 for (
size_t j = 0; j < 16; j++) {
77 info->ScalingList4x4[
i][j] = sl->
sl[0][
i][
pos];
79 for (
size_t j = 0; j < 64; j++) {
83 info->ScalingList8x8[
i][j] = sl->
sl[1][
i][
pos];
86 info->ScalingList16x16[
i][j] = sl->
sl[2][
i][
pos];
90 info->ScalingList32x32[
i][j] = sl->
sl[3][
i * 3][
pos];
95 info->ScalingListDCCoeff16x16[
i] = sl->
sl_dc[0][
i];
99 info->ScalingListDCCoeff32x32[
i] = sl->
sl_dc[1][
i * 3];
103 info->sample_adaptive_offset_enabled_flag = sps->
sao_enabled;
105 if (info->pcm_enabled_flag) {
107 info->pcm_sample_bit_depth_luma_minus1 = sps->
pcm.
bit_depth - 1;
119 info->num_short_term_ref_pic_sets = sps->
nb_st_rps;
149 if (info->tiles_enabled_flag) {
179 info->pps_deblocking_filter_disabled_flag = pps->
disable_dbf;
185 info->pps_tc_offset_div2 = pps->
tc_offset / 2;
192 info->IDRPicFlag =
IS_IDR(h);
201 info->CurrRpsIdx =
i;
230 info->CurrPicOrderCntVal = h->
poc;
233 for (
size_t i = 0;
i < 16;
i++) {
234 info->RefPics[
i] = VDP_INVALID_HANDLE;
235 info->PicOrderCntVal[
i] = 0;
236 info->IsLongTerm[
i] = 0;
244 "VDPAU only supports up to 16 references in the DPB. " 245 "This frame may not be decoded correctly.\n");
253 info->PicOrderCntVal[j] = frame->
poc;
260 info->IsLongTerm[j] = 0;
267 if (info->NumPocStCurrBefore > 8) {
269 "VDPAU only supports up to 8 references in StCurrBefore. " 270 "This frame may not be decoded correctly.\n");
271 info->NumPocStCurrBefore = 8;
276 if (info->NumPocStCurrAfter > 8) {
278 "VDPAU only supports up to 8 references in StCurrAfter. " 279 "This frame may not be decoded correctly.\n");
280 info->NumPocStCurrAfter = 8;
285 if (info->NumPocLtCurr > 8) {
287 "VDPAU only supports up to 8 references in LtCurr. " 288 "This frame may not be decoded correctly.\n");
289 info->NumPocLtCurr = 8;
298 for (
size_t k = 0; k < 16; k++) {
299 if (
id == info->RefPics[k]) {
300 info->RefPicSetStCurrBefore[j] = k;
321 for (
size_t k = 0; k < 16; k++) {
322 if (
id == info->RefPics[k]) {
323 info->RefPicSetStCurrAfter[j] = k;
344 for (
size_t k = 0; k < 16; k++) {
345 if (
id == info->RefPics[k]) {
346 info->RefPicSetLtCurr[j] = k;
361 #ifdef VDP_YCBCR_FORMAT_Y_U_V_444 363 info2->sps_range_extension_flag = 1;
374 info2->sps_range_extension_flag = 0;
377 info2->pps_range_extension_flag = 1;
385 for (ssize_t
i = 0;
i < info2->chromaQpAdjustmentTableSize;
i++)
392 info2->pps_range_extension_flag = 0;
439 profile = VDP_DECODER_PROFILE_HEVC_MAIN;
442 profile = VDP_DECODER_PROFILE_HEVC_MAIN_10;
445 profile = VDP_DECODER_PROFILE_HEVC_MAIN_STILL;
448 profile = VDP_DECODER_PROFILE_HEVC_MAIN_444;
458 .
name =
"hevc_vdpau",
unsigned int log2_min_cb_size
int extended_precision_processing_flag
uint8_t log2_sao_offset_scale_luma
uint8_t diff_cu_chroma_qp_offset_depth
int max_dec_pic_buffering
int transform_skip_rotation_enabled_flag
#define AV_LOG_WARNING
Something somehow does not look correct.
unsigned int * row_height
RowHeight.
int ff_vdpau_common_start_frame(struct vdpau_picture_context *pic_ctx, av_unused const uint8_t *buffer, av_unused uint32_t size)
void * hwaccel_picture_private
uint8_t weighted_bipred_flag
uint8_t seq_loop_filter_across_slices_enabled_flag
uint8_t cabac_init_present_flag
ShortTermRPS st_rps[HEVC_MAX_SHORT_TERM_REF_PIC_SETS]
int explicit_rdpcm_enabled_flag
int num_ref_idx_l0_default_active
num_ref_idx_l0_default_active_minus1 + 1
Public libavcodec VDPAU header.
int8_t cr_qp_offset_list[6]
uint8_t entropy_coding_sync_enabled_flag
int log2_parallel_merge_level
log2_parallel_merge_level_minus2 + 2
uint8_t log2_sao_offset_scale_chroma
unsigned int log2_max_trafo_size
int ff_vdpau_common_uninit(AVCodecContext *avctx)
uint8_t log2_max_transform_skip_block_size
struct HEVCFrame * ref[HEVC_MAX_REFS]
#define FF_PROFILE_HEVC_MAIN
const uint8_t ff_hevc_diag_scan8x8_x[64]
int num_ref_idx_l1_default_active
num_ref_idx_l1_default_active_minus1 + 1
unsigned int log2_min_pcm_cb_size
static int vdpau_hevc_end_frame(AVCodecContext *avctx)
uint8_t scaling_list_data_present_flag
int high_precision_offsets_enabled_flag
uint8_t loop_filter_disable_flag
#define FF_PROFILE_HEVC_MAIN_10
static int vdpau_hevc_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
int8_t cb_qp_offset_list[6]
uint8_t transquant_bypass_enable_flag
int ff_vdpau_common_init(AVCodecContext *avctx, VdpDecoderProfile profile, int level)
#define i(width, name, range_min, range_max)
int ff_hevc_frame_nb_refs(const HEVCContext *s)
Get the number of candidate references for the current frame.
unsigned int log2_max_poc_lsb
#define HEVC_FRAME_FLAG_LONG_REF
static int vdpau_hevc_init(AVCodecContext *avctx)
int persistent_rice_adaptation_enabled_flag
uint8_t pps_range_extensions_flag
#define HEVC_FRAME_FLAG_SHORT_REF
uint8_t tiles_enabled_flag
#define HWACCEL_CAP_ASYNC_SAFE
uint8_t lists_modification_present_flag
const char * name
Name of the hardware accelerated codec.
int max_transform_hierarchy_depth_inter
#define FF_PROFILE_HEVC_MAIN_STILL_PICTURE
uint8_t cu_qp_delta_enabled_flag
uint8_t sign_data_hiding_flag
int ff_vdpau_common_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx)
uint8_t output_flag_present_flag
const uint8_t ff_hevc_diag_scan4x4_y[16]
int implicit_rdpcm_enabled_flag
#define FF_ARRAY_ELEMS(a)
uint8_t constrained_intra_pred_flag
uint8_t pic_slice_level_chroma_qp_offsets_present_flag
uint8_t transform_skip_enabled_flag
uint16_t num_tile_columns
num_tile_columns_minus1 + 1
Libavcodec external API header.
uint8_t uniform_spacing_flag
main external API structure.
int num_extra_slice_header_bits
static int vdpau_hevc_start_frame(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
uint8_t loop_filter_across_tiles_enabled_flag
uint8_t num_long_term_ref_pics_sps
uint8_t cross_component_prediction_enabled_flag
const AVHWAccel ff_hevc_vdpau_hwaccel
uint8_t deblocking_filter_control_present_flag
int transform_skip_context_enabled_flag
uint8_t sps_temporal_mvp_enabled_flag
static int FUNC() pps(CodedBitstreamContext *ctx, RWContext *rw, H264RawPPS *current)
uint8_t chroma_qp_offset_list_enabled_flag
HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface.
unsigned int log2_min_tb_size
static int FUNC() sps(CodedBitstreamContext *ctx, RWContext *rw, H264RawSPS *current)
uint8_t scaling_list_enable_flag
int tc_offset
tc_offset_div2 * 2
uint8_t flags
A combination of HEVC_FRAME_FLAG_*.
unsigned int log2_diff_max_min_coding_block_size
unsigned int log2_max_pcm_cb_size
const uint8_t ff_hevc_diag_scan4x4_x[16]
int max_transform_hierarchy_depth_intra
common internal api header.
uint8_t weighted_pred_flag
int ff_vdpau_add_buffer(struct vdpau_picture_context *pic_ctx, const uint8_t *buf, uint32_t size)
uint16_t num_tile_rows
num_tile_rows_minus1 + 1
unsigned int * column_width
ColumnWidth.
uint8_t slice_header_extension_present_flag
int cabac_bypass_alignment_enabled_flag
coded frame dimension in various units
uint8_t chroma_qp_offset_list_len_minus1
int ff_vdpau_common_end_frame(AVCodecContext *avctx, AVFrame *frame, struct vdpau_picture_context *pic_ctx)
const uint8_t ff_hevc_diag_scan8x8_y[64]
#define FF_PROFILE_HEVC_REXT
uint8_t sps_strong_intra_smoothing_enable_flag
int rps_idx_num_delta_pocs
union VDPAUPictureInfo info
VDPAU picture information.
int sps_range_extension_flag
uint8_t long_term_ref_pics_present_flag
int diff_cu_qp_delta_depth
uint8_t deblocking_filter_override_enabled_flag
int beta_offset
beta_offset_div2 * 2
struct HEVCSPS::@73 temporal_layer[HEVC_MAX_SUB_LAYERS]
static const uint8_t start_code_prefix[3]
int intra_smoothing_disabled_flag
static double val(void *priv, double ch)
uint8_t separate_colour_plane_flag
static uintptr_t ff_vdpau_get_surface_id(AVFrame *pic)
Extract VdpVideoSurface from an AVFrame.
uint8_t dependent_slice_segments_enabled_flag