23 #include <vdpau/vdpau.h> 
   38     VdpPictureInfoHEVC *info = &pic_ctx->info.hevc;
 
   51     info->pic_width_in_luma_samples = sps->
width;
 
   52     info->pic_height_in_luma_samples = sps->
height;
 
   53     info->bit_depth_luma_minus8 = sps->
bit_depth - 8;
 
   54     info->bit_depth_chroma_minus8 = sps->
bit_depth - 8;
 
   67     for (
size_t i = 0; i < 6; i++) {
 
   68         for (
size_t j = 0; j < 16; j++) {
 
   72             info->ScalingList4x4[i][j] = sl->
sl[0][i][pos];
 
   74         for (
size_t j = 0; j < 64; j++) {
 
   78             info->ScalingList8x8[i][j] = sl->
sl[1][i][pos];
 
   81             info->ScalingList16x16[i][j] = sl->
sl[2][i][pos];
 
   85                 info->ScalingList32x32[i][j] = sl->
sl[3][i * 3][pos];
 
   90         info->ScalingListDCCoeff16x16[i] = sl->
sl_dc[0][i];
 
   94             info->ScalingListDCCoeff32x32[i] = sl->
sl_dc[1][i * 3];
 
   98     info->sample_adaptive_offset_enabled_flag = sps->
sao_enabled;
 
  100     if (info->pcm_enabled_flag) {
 
  102         info->pcm_sample_bit_depth_luma_minus1 = sps->
pcm.
bit_depth - 1;
 
  114     info->num_short_term_ref_pic_sets = sps->
nb_st_rps;
 
  144     if (info->tiles_enabled_flag) {
 
  155             info->column_width_minus1[i] = pps->
column_width[i] - 1;
 
  161             info->row_height_minus1[i] = pps->
row_height[i] - 1;
 
  174     info->pps_deblocking_filter_disabled_flag = pps->
disable_dbf;
 
  180     info->pps_tc_offset_div2 = pps->
tc_offset / 2;
 
  187     info->IDRPicFlag = 
IS_IDR(h);
 
  194         for (
size_t i = 0; i < sps->
nb_st_rps; i++) {
 
  196                 info->CurrRpsIdx = i;
 
  225     info->CurrPicOrderCntVal = h->
poc;
 
  228     for (
size_t i = 0; i < 16; i++) {
 
  229         info->RefPics[i] = VDP_INVALID_HANDLE;
 
  230         info->PicOrderCntVal[i] = 0;
 
  231         info->IsLongTerm[i] = 0;
 
  239                      "VDPAU only supports up to 16 references in the DPB. " 
  240                      "This frame may not be decoded correctly.\n");
 
  248             info->PicOrderCntVal[j] = frame->
poc;
 
  255             info->IsLongTerm[j] = 0;
 
  262     if (info->NumPocStCurrBefore > 8) {
 
  264              "VDPAU only supports up to 8 references in StCurrBefore. " 
  265              "This frame may not be decoded correctly.\n");
 
  266         info->NumPocStCurrBefore = 8;
 
  271     if (info->NumPocStCurrAfter > 8) {
 
  273              "VDPAU only supports up to 8 references in StCurrAfter. " 
  274              "This frame may not be decoded correctly.\n");
 
  275         info->NumPocStCurrAfter = 8;
 
  280     if (info->NumPocLtCurr > 8) {
 
  282              "VDPAU only supports up to 8 references in LtCurr. " 
  283              "This frame may not be decoded correctly.\n");
 
  284         info->NumPocLtCurr = 8;
 
  293             for (
size_t k = 0; k < 16; k++) {
 
  294                 if (
id == info->RefPics[k]) {
 
  295                     info->RefPicSetStCurrBefore[j] = k;
 
  316             for (
size_t k = 0; k < 16; k++) {
 
  317                 if (
id == info->RefPics[k]) {
 
  318                     info->RefPicSetStCurrAfter[j] = k;
 
  339             for (
size_t k = 0; k < 16; k++) {
 
  340                 if (
id == info->RefPics[k]) {
 
  341                     info->RefPicSetLtCurr[j] = k;
 
  399         profile = VDP_DECODER_PROFILE_HEVC_MAIN;
 
  402         profile = VDP_DECODER_PROFILE_HEVC_MAIN_10;
 
  405         profile = VDP_DECODER_PROFILE_HEVC_MAIN_STILL;
 
  415     .
name           = 
"hevc_vdpau",
 
  422     .frame_priv_data_size = 
sizeof(
struct vdpau_picture_context),
 
unsigned int log2_min_cb_size
const char const char void * val
int ff_hevc_frame_nb_refs(HEVCContext *s)
Get the number of candidate references for the current frame. 
int max_dec_pic_buffering
#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
const uint8_t ff_hevc_diag_scan4x4_x[16]
uint8_t weighted_bipred_flag
uint8_t seq_loop_filter_across_slices_enabled_flag
uint8_t cabac_init_present_flag
int num_ref_idx_l0_default_active
num_ref_idx_l0_default_active_minus1 + 1 
Public libavcodec VDPAU header. 
struct HEVCFrame * ref[MAX_REFS]
ShortTermRPS st_rps[MAX_SHORT_TERM_RPS_COUNT]
uint8_t entropy_coding_sync_enabled_flag
int log2_parallel_merge_level
log2_parallel_merge_level_minus2 + 2 
unsigned int log2_max_trafo_size
int ff_vdpau_common_uninit(AVCodecContext *avctx)
#define FF_PROFILE_HEVC_MAIN
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
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)
uint8_t transquant_bypass_enable_flag
#define HEVC_FRAME_FLAG_LONG_REF
int ff_vdpau_common_init(AVCodecContext *avctx, VdpDecoderProfile profile, int level)
unsigned int log2_max_poc_lsb
static int vdpau_hevc_init(AVCodecContext *avctx)
uint8_t tiles_enabled_flag
uint8_t lists_modification_present_flag
#define HEVC_FRAME_FLAG_SHORT_REF
const char * name
Name of the hardware accelerated codec. 
int max_transform_hierarchy_depth_inter
int num_tile_columns
num_tile_columns_minus1 + 1 
#define FF_PROFILE_HEVC_MAIN_STILL_PICTURE
uint8_t cu_qp_delta_enabled_flag
uint8_t sign_data_hiding_flag
uint8_t output_flag_present_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
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 deblocking_filter_control_present_flag
uint8_t sps_temporal_mvp_enabled_flag
int num_tile_rows
num_tile_rows_minus1 + 1 
const uint8_t ff_hevc_diag_scan8x8_y[64]
HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface. 
unsigned int log2_min_tb_size
uint8_t scaling_list_enable_flag
struct HEVCSPS::@52 temporal_layer[MAX_SUB_LAYERS]
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
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)
unsigned int * column_width
ColumnWidth. 
uint8_t slice_header_extension_present_flag
int ff_vdpau_common_end_frame(AVCodecContext *avctx, AVFrame *frame, struct vdpau_picture_context *pic_ctx)
AVHWAccel ff_hevc_vdpau_hwaccel
uint8_t sps_strong_intra_smoothing_enable_flag
int rps_idx_num_delta_pocs
uint8_t long_term_ref_pics_present_flag
int diff_cu_qp_delta_depth
const uint8_t ff_hevc_diag_scan8x8_x[64]
uint8_t deblocking_filter_override_enabled_flag
int beta_offset
beta_offset_div2 * 2 
static const uint8_t start_code_prefix[3]
uint8_t separate_colour_plane_flag
output (i.e. cropped) values 
const uint8_t ff_hevc_diag_scan4x4_y[16]
static uintptr_t ff_vdpau_get_surface_id(AVFrame *pic)
Extract VdpVideoSurface from an AVFrame. 
uint8_t dependent_slice_segments_enabled_flag