struct dec_initial_info {
u32 pic_width;
u32 pic_height; struct vpu_rect pic_crop_rect;
u32 min_frame_buffer_count; /* between 1 to 16 */
u32 profile;
u32 luma_bitdepth; /* bit-depth of the luma sample */
u32 chroma_bitdepth; /* bit-depth of the chroma sample */
u32 seq_init_err_reason;
dma_addr_t rd_ptr; /* read pointer of bitstream buffer */
dma_addr_t wr_ptr; /* write pointer of bitstream buffer */
u32 sequence_no;
u32 vlc_buf_size;
u32 param_buf_size;
};
struct dec_output_info { /** * This is a frame buffer index for the picture to be displayed at the moment * among frame buffers which are registered using vpu_dec_register_frame_buffer(). * Frame data that will be displayed is stored in the frame buffer with this index * When there is no display delay, this index is always the equal to * index_frame_decoded, however, if displaying is delayed (for display * reordering in AVC or B-frames in VC1), this index might be different to * index_frame_decoded. By checking this index, HOST applications can easily figure * out whether sequence decoding has been finished or not. * * -3(0xFFFD) or -2(0xFFFE) : when a display output cannot be given due to picture * reordering or skip option * -1(0xFFFF) : when there is no more output for display at the end of sequence * decoding
*/
s32 index_frame_display; /** * This is the frame buffer index of the decoded picture among the frame buffers which were * registered using vpu_dec_register_frame_buffer(). The currently decoded frame is stored * into the frame buffer specified by this index. * * -2 : indicates that no decoded output is generated because decoder meets EOS * (end of sequence) or skip * -1 : indicates that the decoder fails to decode a picture because there is no available * frame buffer
*/
s32 index_frame_decoded;
s32 index_frame_decoded_for_tiled;
u32 nal_type; unsignedint pic_type; struct vpu_rect rc_display; unsignedint disp_pic_width; unsignedint disp_pic_height; struct vpu_rect rc_decoded;
u32 dec_pic_width;
u32 dec_pic_height;
s32 decoded_poc; int temporal_id; /* temporal ID of the picture */
dma_addr_t rd_ptr; /* stream buffer read pointer for the current decoder instance */
dma_addr_t wr_ptr; /* stream buffer write pointer for the current decoder instance */ struct frame_buffer disp_frame;
u32 frame_display_flag; /* it reports a frame buffer flag to be displayed */ /** * this variable reports that sequence has been changed while H.264/AVC stream decoding. * if it is 1, HOST application can get the new sequence information by calling * vpu_dec_get_initial_info() or wave5_vpu_dec_issue_seq_init(). * * for H.265/HEVC decoder, each bit has a different meaning as follows. * * sequence_changed[5] : it indicates that the profile_idc has been changed * sequence_changed[16] : it indicates that the resolution has been changed * sequence_changed[19] : it indicates that the required number of frame buffer has * been changed.
*/ unsignedint frame_cycle; /* reports the number of cycles for processing a frame */
u32 sequence_no;
u32 dec_host_cmd_tick; /* tick of DEC_PIC command for the picture */
u32 dec_decode_end_tick; /* end tick of decoding slices of the picture */
struct custom_gop_pic_param {
u32 pic_type; /* picture type of nth picture in the custom GOP */
u32 poc_offset; /* POC of nth picture in the custom GOP */
u32 pic_qp; /* quantization parameter of nth picture in the custom GOP */
u32 use_multi_ref_p; /* use multiref pic for P picture. valid only if PIC_TYPE is P */
u32 ref_poc_l0; /* POC of reference L0 of nth picture in the custom GOP */
u32 ref_poc_l1; /* POC of reference L1 of nth picture in the custom GOP */
s32 temporal_id; /* temporal ID of nth picture in the custom GOP */
};
struct enc_wave_param { /* * profile indicator (HEVC only) * * 0 : the firmware determines a profile according to the internal_bit_depth * 1 : main profile * 2 : main10 profile * 3 : main still picture profile * In the AVC encoder, a profile cannot be set by the host application. * The firmware decides it based on internal_bit_depth. * profile = HIGH (bitdepth 8) profile = HIGH10 (bitdepth 10)
*/
u32 profile;
u32 level; /* level indicator (level * 10) */
u32 internal_bit_depth: 4; /* 8/10 */
u32 gop_preset_idx: 4; /* 0 - 9 */
u32 decoding_refresh_type: 2; /* 0=non-IRAP, 1=CRA, 2=IDR */
u32 intra_qp; /* quantization parameter of intra picture */
u32 intra_period; /* period of intra picture in GOP size */
u32 conf_win_top; /* top offset of conformance window */
u32 conf_win_bot; /* bottom offset of conformance window */
u32 conf_win_left; /* left offset of conformance window */
u32 conf_win_right; /* right offset of conformance window */
u32 intra_refresh_mode: 3; /* * Argument for intra_ctu_refresh_mode. * * Depending on intra_refresh_mode, it can mean one of the following: * - intra_ctu_refresh_mode (1) -> number of consecutive CTU rows * - intra_ctu_refresh_mode (2) -> the number of consecutive CTU columns * - intra_ctu_refresh_mode (3) -> step size in CTU * - intra_ctu_refresh_mode (4) -> number of intra ct_us to be encoded in a picture
*/
u32 intra_refresh_arg; /* * 0 : custom setting * 1 : recommended encoder parameters (slow encoding speed, highest picture quality) * 2 : boost mode (normal encoding speed, moderate picture quality) * 3 : fast mode (fast encoding speed, low picture quality)
*/
u32 depend_slice_mode : 2;
u32 depend_slice_mode_arg;
u32 independ_slice_mode : 1; /* 0=no-multi-slice, 1=slice-in-ctu-number*/
u32 independ_slice_mode_arg;
u32 max_num_merge: 2;
s32 beta_offset_div2: 4; /* sets beta_offset_div2 for deblocking filter */
s32 tc_offset_div2: 4; /* sets tc_offset_div3 for deblocking filter */
u32 hvs_qp_scale: 4; /* QP scaling factor for CU QP adjust if hvs_qp_scale_enable is 1 */
u32 hvs_max_delta_qp; /* maximum delta QP for HVS */
s32 chroma_cb_qp_offset; /* the value of chroma(cb) QP offset */
s32 chroma_cr_qp_offset; /* the value of chroma(cr) QP offset */
s32 initial_rc_qp;
u32 nr_intra_weight_y;
u32 nr_intra_weight_cb; /* weight to cb noise level for intra picture (0 ~ 31) */
u32 nr_intra_weight_cr; /* weight to cr noise level for intra picture (0 ~ 31) */
u32 nr_inter_weight_y;
u32 nr_inter_weight_cb; /* weight to cb noise level for inter picture (0 ~ 31) */
u32 nr_inter_weight_cr; /* weight to cr noise level for inter picture (0 ~ 31) */
u32 min_qp_i; /* minimum QP of I picture for rate control */
u32 max_qp_i; /* maximum QP of I picture for rate control */
u32 min_qp_p; /* minimum QP of P picture for rate control */
u32 max_qp_p; /* maximum QP of P picture for rate control */
u32 min_qp_b; /* minimum QP of B picture for rate control */
u32 max_qp_b; /* maximum QP of B picture for rate control */
u32 avc_idr_period; /* period of IDR picture (0 ~ 1024). 0 - implies an infinite period */
u32 avc_slice_arg; /* the number of MB for a slice when avc_slice_mode is set with 1 */
u32 intra_mb_refresh_mode: 2; /* 0=none, 1=row, 2=column, 3=step-size-in-mb */ /** * Argument for intra_mb_refresh_mode. * * intra_mb_refresh_mode (1) -> number of consecutive MB rows * intra_mb_refresh_mode (2) ->the number of consecutive MB columns * intra_mb_refresh_mode (3) -> step size in MB
*/
u32 intra_mb_refresh_arg;
u32 rc_weight_param;
u32 rc_weight_buf;
struct enc_open_param {
dma_addr_t bitstream_buffer; unsignedint bitstream_buffer_size;
u32 pic_width; /* width of a picture to be encoded in unit of sample */
u32 pic_height; /* height of a picture to be encoded in unit of sample */
u32 frame_rate_info;/* desired fps */
u32 vbv_buffer_size;
u32 bit_rate; /* target bitrate in bps */ struct enc_wave_param wave_param; enum packed_format_num packed_format; /* <<vpuapi_h_packed_format_num>> */ enum frame_buffer_format src_format; bool line_buf_int_en;
u32 rc_enable : 1; /* rate control */
};
struct enc_initial_info {
u32 min_frame_buffer_count; /* minimum number of frame buffers */
u32 min_src_frame_count; /* minimum number of source buffers */
u32 seq_init_err_reason;
u32 warn_info;
u32 vlc_buf_size; /* size of task buffer */
u32 param_buf_size; /* size of task buffer */
};
struct enc_output_info {
u32 bitstream_buffer;
u32 bitstream_size; /* byte size of encoded bitstream */
u32 pic_type: 2; /* <<vpuapi_h_pic_type>> */
s32 recon_frame_index;
dma_addr_t rd_ptr;
dma_addr_t wr_ptr;
u32 enc_pic_byte; /* number of encoded picture bytes */
s32 enc_src_idx; /* source buffer index of the currently encoded picture */
u32 enc_vcl_nut;
u32 error_reason; /* error reason of the currently encoded picture */
u32 warn_info; /* warning information on the currently encoded picture */ unsignedint frame_cycle; /* param for reporting the cycle number of encoding one frame*/
u64 pts;
u32 enc_host_cmd_tick; /* tick of ENC_PIC command for the picture */
u32 enc_encode_end_tick; /* end tick of encoding slices of the picture */
};
enum enc_pic_code_option {
CODEOPT_ENC_HEADER_IMPLICIT = BIT(0),
CODEOPT_ENC_VCL = BIT(1), /* flag to encode VCL nal unit explicitly */
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.