24 #include <vdpau/vdpau.h>
44 rf->surface = VDP_INVALID_HANDLE;
45 rf->is_long_term = VDP_FALSE;
46 rf->top_is_reference = VDP_FALSE;
47 rf->bottom_is_reference = VDP_FALSE;
48 rf->field_order_cnt[0] = 0;
49 rf->field_order_cnt[1] = 0;
58 if (pic_structure == 0)
61 rf->surface = surface;
77 VdpReferenceFrameH264 *rf = &info->referenceFrames[0];
78 #define H264_RF_COUNT FF_ARRAY_ELEMS(info->referenceFrames)
80 for (list = 0; list < 2; ++list) {
84 for (i = 0; i < ls; ++i) {
86 VdpReferenceFrameH264 *rf2;
87 VdpVideoSurface surface_ref;
95 rf2 = &info->referenceFrames[0];
97 if ((rf2->surface == surface_ref) &&
98 (rf2->is_long_term == pic->
long_ref) &&
99 (rf2->frame_idx == pic_frame_idx))
130 #ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
131 VdpPictureInfoH264Predictive *info2 = &pic_ctx->
info.h264_predictive;
135 info->slice_count = 0;
143 info->mb_adaptive_frame_field_flag = sps->
mb_aff && !info->field_pic_flag;
151 info->pic_init_qp_minus26 = pps->
init_qp - 26;
152 info->num_ref_idx_l0_active_minus1 = pps->
ref_count[0] - 1;
153 info->num_ref_idx_l1_active_minus1 = pps->
ref_count[1] - 1;
155 info->pic_order_cnt_type = sps->
poc_type;
159 #ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
163 info->entropy_coding_mode_flag = pps->
cabac;
169 sizeof(info->scaling_lists_4x4));
171 sizeof(info->scaling_lists_8x8[0]));
173 sizeof(info->scaling_lists_8x8[1]));
225 profile = VDP_DECODER_PROFILE_H264_BASELINE;
228 #ifdef VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE
229 profile = VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE;
233 profile = VDP_DECODER_PROFILE_H264_MAIN;
236 profile = VDP_DECODER_PROFILE_H264_HIGH;
238 #ifdef VDP_DECODER_PROFILE_H264_EXTENDED
240 profile = VDP_DECODER_PROFILE_H264_EXTENDED;
246 profile = VDP_DECODER_PROFILE_H264_HIGH;
248 #ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
252 profile = VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE;
260 level = VDP_DECODER_LEVEL_H264_1b;
266 .
name =
"h264_vdpau",
#define FF_PROFILE_H264_MAIN
const char const char void * val
int long_ref
1->long term reference 0->short term reference
#define FF_PROFILE_H264_CAVLC_444
int chroma_qp_index_offset[2]
int ff_vdpau_common_start_frame(struct vdpau_picture_context *pic_ctx, av_unused const uint8_t *buffer, av_unused uint32_t size)
#define FF_PROFILE_H264_INTRA
unsigned int ref_count[2]
num_ref_idx_l0/1_active_minus1 + 1
Public libavcodec VDPAU header.
static void vdpau_h264_clear_rf(VdpReferenceFrameH264 *rf)
H264Picture * long_ref[32]
AVHWAccel ff_h264_vdpau_hwaccel
#define FF_PROFILE_H264_HIGH_444_PREDICTIVE
uint8_t scaling_matrix4[6][16]
int deblocking_filter_parameters_present
deblocking_filter_parameters_present_flag
#define FF_PROFILE_H264_BASELINE
int ff_vdpau_common_uninit(AVCodecContext *avctx)
int cabac
entropy_coding_mode_flag
#define PICT_BOTTOM_FIELD
int transform_bypass
qpprime_y_zero_transform_bypass_flag
static int vdpau_h264_start_frame(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
int redundant_pic_cnt_present
redundant_pic_cnt_present_flag
#define FF_PROFILE_H264_EXTENDED
static void vdpau_h264_set_rf(VdpReferenceFrameH264 *rf, H264Picture *pic, int pic_structure)
void ff_h264_draw_horiz_band(const H264Context *h, H264SliceContext *sl, int y, int height)
static int32_t h264_foc(int foc)
H.264 parameter set handling.
int mb_aff
mb_adaptive_frame_field_flag
int ff_vdpau_common_init(AVCodecContext *avctx, VdpDecoderProfile profile, int level)
int poc_type
pic_order_cnt_type
int constrained_intra_pred
constrained_intra_pred_flag
void * hwaccel_picture_private
hardware accelerator private data
#define FF_PROFILE_H264_HIGH_422
#define FF_PROFILE_H264_HIGH
int weighted_pred
weighted_pred_flag
int frame_num
frame_num (raw frame_num from slice header)
int residual_color_transform_flag
residual_colour_transform_flag
int delta_pic_order_always_zero_flag
uint8_t scaling_matrix8[6][64]
int ref_frame_count
num_ref_frames
const char * name
Name of the hardware accelerated codec.
static int vdpau_h264_end_frame(AVCodecContext *avctx)
static int vdpau_h264_init(AVCodecContext *avctx)
static void vdpau_h264_set_reference_frames(AVCodecContext *avctx)
int init_qp
pic_init_qp_minus26 + 26
H.264 / AVC / MPEG-4 part10 codec.
H264SliceContext * slice_ctx
int direct_8x8_inference_flag
int pic_order_present
pic_order_present_flag
Libavcodec external API header.
static const uint8_t start_code_prefix[3]
H264Picture * short_ref[32]
int field_poc[2]
top/bottom POC
main external API structure.
HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface.
H264Picture * cur_pic_ptr
int log2_max_poc_lsb
log2_max_pic_order_cnt_lsb_minus4
int transform_8x8_mode
transform_8x8_mode_flag
int pic_id
pic_num (short -> no wrap version of pic_num, pic_num & max_pic_num; long -> long_pic_num) ...
common internal api header.
int ff_vdpau_add_buffer(struct vdpau_picture_context *pic_ctx, const uint8_t *buf, uint32_t size)
int log2_max_frame_num
log2_max_frame_num_minus4 + 4
int ff_vdpau_common_end_frame(AVCodecContext *avctx, AVFrame *frame, struct vdpau_picture_context *pic_ctx)
static int vdpau_h264_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
#define HWACCEL_CAP_ASYNC_SAFE
union VDPAUPictureInfo info
VDPAU picture information.
#define FF_PROFILE_H264_CONSTRAINED_BASELINE
#define FF_PROFILE_H264_HIGH_10
static uintptr_t ff_vdpau_get_surface_id(AVFrame *pic)
Extract VdpVideoSurface from an AVFrame.
int short_ref_count
number of actual short term references