diff --git a/mpp/hal/common/h264/h264e_stream.c b/mpp/hal/common/h264/h264e_stream.c index 7192798a..25cbed64 100644 --- a/mpp/hal/common/h264/h264e_stream.c +++ b/mpp/hal/common/h264/h264e_stream.c @@ -14,15 +14,12 @@ * limitations under the License. */ -#include -#include - #include "mpp_log.h" #include "mpp_mem.h" #include "h264e_stream.h" -void hal_h264e_vpu_swap_endian(RK_U32 *buf, RK_S32 size_bytes) +void h264e_swap_endian(RK_U32 *buf, RK_S32 size_bytes) { RK_U32 i = 0; RK_S32 words = size_bytes / 4; @@ -57,7 +54,7 @@ void hal_h264e_vpu_swap_endian(RK_U32 *buf, RK_S32 size_bytes) } } -MPP_RET hal_h264e_vpu_stream_buffer_status(H264eVpuStream *stream) +MPP_RET h264e_stream_status(H264eStream *stream) { if (stream->byte_cnt + 5 > stream->size) { stream->overflow = 1; @@ -67,7 +64,7 @@ MPP_RET hal_h264e_vpu_stream_buffer_status(H264eVpuStream *stream) return MPP_OK; } -MPP_RET hal_h264e_vpu_stream_buffer_reset(H264eVpuStream *strmbuf) +MPP_RET h264e_stream_reset(H264eStream *strmbuf) { strmbuf->stream = strmbuf->buffer; strmbuf->byte_cnt = 0; @@ -80,7 +77,7 @@ MPP_RET hal_h264e_vpu_stream_buffer_reset(H264eVpuStream *strmbuf) return MPP_OK; } -MPP_RET hal_h264e_vpu_stream_buffer_init(H264eVpuStream *strmbuf, RK_S32 size) +MPP_RET h264e_stream_init(H264eStream *strmbuf, RK_S32 size) { strmbuf->buffer = mpp_calloc(RK_U8, size); @@ -97,7 +94,7 @@ MPP_RET hal_h264e_vpu_stream_buffer_init(H264eVpuStream *strmbuf, RK_S32 size) strmbuf->zero_bytes = 0; strmbuf->emul_cnt = 0; - if (MPP_OK != hal_h264e_vpu_stream_buffer_status(strmbuf)) { + if (MPP_OK != h264e_stream_status(strmbuf)) { mpp_err("stream buffer is overflow, while init"); return MPP_NOK; } @@ -105,16 +102,15 @@ MPP_RET hal_h264e_vpu_stream_buffer_init(H264eVpuStream *strmbuf, RK_S32 size) return MPP_OK; } -void hal_h264e_vpu_stream_put_bits(H264eVpuStream *buffer, - RK_S32 value, RK_S32 number, - const char *name) +void h264e_stream_put_bits(H264eStream *buffer, RK_S32 value, RK_S32 number, + const char *name) { RK_S32 bits; RK_U32 byte_buffer = buffer->byte_buffer; RK_U8*stream = buffer->stream; (void)name; - if (hal_h264e_vpu_stream_buffer_status(buffer) != 0) + if (h264e_stream_status(buffer) != 0) return; mpp_assert(value < (1 << number)); //opposite to 'BUG_ON' in kernel @@ -140,9 +136,9 @@ void hal_h264e_vpu_stream_put_bits(H264eVpuStream *buffer, return; } -void hal_h264e_vpu_stream_put_bits_with_detect(H264eVpuStream * buffer, - RK_S32 value, RK_S32 number, - const char *name) +void h264e_stream_put_bits_with_detect(H264eStream * buffer, + RK_S32 value, RK_S32 number, + const char *name) { RK_S32 bits; RK_U8 *stream = buffer->stream; @@ -161,7 +157,7 @@ void hal_h264e_vpu_stream_put_bits_with_detect(H264eVpuStream * buffer, RK_S32 zeroBytes = buffer->zero_bytes; RK_S32 byteCnt = buffer->byte_cnt; - if (hal_h264e_vpu_stream_buffer_status(buffer) != MPP_OK) + if (h264e_stream_status(buffer) != MPP_OK) return; *stream = (RK_U8) (byte_buffer >> 24); @@ -192,17 +188,17 @@ void hal_h264e_vpu_stream_put_bits_with_detect(H264eVpuStream * buffer, buffer->byte_buffer = byte_buffer; } -void hal_h264e_vpu_rbsp_trailing_bits(H264eVpuStream * stream) +void h264e_stream_trailing_bits(H264eStream * stream) { - hal_h264e_vpu_stream_put_bits_with_detect(stream, 1, 1, + h264e_stream_put_bits_with_detect(stream, 1, 1, "rbsp_stop_one_bit"); if (stream->buffered_bits > 0) - hal_h264e_vpu_stream_put_bits_with_detect(stream, 0, + h264e_stream_put_bits_with_detect(stream, 0, 8 - stream->buffered_bits, "bsp_alignment_zero_bit(s)"); } -void hal_h264e_vpu_write_ue(H264eVpuStream *fifo, RK_U32 val, const char *name) +void h264e_stream_write_ue(H264eStream *fifo, RK_U32 val, const char *name) { RK_U32 num_bits = 0; @@ -216,26 +212,26 @@ void hal_h264e_vpu_write_ue(H264eVpuStream *fifo, RK_U32 val, const char *name) if (tmp > 24) { tmp -= 24; - hal_h264e_vpu_stream_put_bits_with_detect(fifo, 0, 24, name); + h264e_stream_put_bits_with_detect(fifo, 0, 24, name); } - hal_h264e_vpu_stream_put_bits_with_detect(fifo, 0, tmp, name); + h264e_stream_put_bits_with_detect(fifo, 0, tmp, name); if (num_bits > 24) { num_bits -= 24; - hal_h264e_vpu_stream_put_bits_with_detect(fifo, val >> num_bits, + h264e_stream_put_bits_with_detect(fifo, val >> num_bits, 24, name); val = val >> num_bits; } - hal_h264e_vpu_stream_put_bits_with_detect(fifo, val, num_bits, name); + h264e_stream_put_bits_with_detect(fifo, val, num_bits, name); } else { - hal_h264e_vpu_stream_put_bits_with_detect(fifo, val, + h264e_stream_put_bits_with_detect(fifo, val, 2 * num_bits - 1, name); } } -void hal_h264e_vpu_write_se(H264eVpuStream *fifo, RK_S32 val, const char *name) +void h264e_stream_write_se(H264eStream *fifo, RK_S32 val, const char *name) { RK_U32 tmp; @@ -244,5 +240,20 @@ void hal_h264e_vpu_write_se(H264eVpuStream *fifo, RK_S32 val, const char *name) else tmp = (RK_U32)(-2 * val); - hal_h264e_vpu_write_ue(fifo, tmp, name); + h264e_stream_write_ue(fifo, tmp, name); +} + +RK_S32 exp_golomb_signed(RK_S32 val) +{ + RK_S32 tmp = 0; + + if (val > 0) + val = 2 * val; + else + val = -2 * val + 1; + + while (val >> ++tmp) + ; + + return tmp * 2 - 1; } diff --git a/mpp/hal/common/h264/h264e_stream.h b/mpp/hal/common/h264/h264e_stream.h index 5b4aa643..08829cf0 100644 --- a/mpp/hal/common/h264/h264e_stream.h +++ b/mpp/hal/common/h264/h264e_stream.h @@ -32,21 +32,20 @@ typedef struct H264eVpuStream_t { RK_U32 zero_bytes; /* Amount of consecutive zero bytes */ RK_S32 overflow; /* This will signal a buffer overflow */ RK_U32 emul_cnt; /* Counter for emulation_3_byte, needed in SEI */ -} H264eVpuStream; +} H264eStream; -void hal_h264e_vpu_swap_endian(RK_U32 *buf, RK_S32 size_bytes); -MPP_RET hal_h264e_vpu_stream_buffer_status(H264eVpuStream *stream); -MPP_RET hal_h264e_vpu_stream_buffer_reset(H264eVpuStream *strmbuf); -MPP_RET hal_h264e_vpu_stream_buffer_init(H264eVpuStream *strmbuf, RK_S32 size); -void hal_h264e_vpu_stream_put_bits(H264eVpuStream *buffer, - RK_S32 value, RK_S32 number, - const char *name); -void hal_h264e_vpu_stream_put_bits_with_detect(H264eVpuStream * buffer, - RK_S32 value, RK_S32 number, - const char *name); -void hal_h264e_vpu_rbsp_trailing_bits(H264eVpuStream * stream); -void hal_h264e_vpu_write_ue(H264eVpuStream *fifo, RK_U32 val, const char *name); -void hal_h264e_vpu_write_se(H264eVpuStream *fifo, RK_S32 val, const char *name); +void h264e_swap_endian(RK_U32 *buf, RK_S32 size_bytes); +MPP_RET h264e_stream_status(H264eStream *stream); +MPP_RET h264e_stream_reset(H264eStream *strmbuf); +MPP_RET h264e_stream_init(H264eStream *strmbuf, RK_S32 size); +void h264e_stream_put_bits(H264eStream *buffer, RK_S32 value, RK_S32 number, + const char *name); +void h264e_stream_put_bits_with_detect(H264eStream * buffer, + RK_S32 value, RK_S32 number, + const char *name); +void h264e_stream_trailing_bits(H264eStream * stream); +void h264e_stream_write_ue(H264eStream *fifo, RK_U32 val, const char *name); +void h264e_stream_write_se(H264eStream *fifo, RK_S32 val, const char *name); RK_S32 exp_golomb_signed(RK_S32 val); diff --git a/mpp/hal/vpu/h264e/hal_h264e_header.c b/mpp/hal/vpu/h264e/hal_h264e_header.c index f627082b..59f9cb98 100644 --- a/mpp/hal/vpu/h264e/hal_h264e_header.c +++ b/mpp/hal/vpu/h264e/hal_h264e_header.c @@ -64,261 +64,261 @@ static void hal_h264e_vpu_write_cabac_table(MppBuffer hw_cabac_tab_buf, } } } - hal_h264e_vpu_swap_endian((RK_U32 *)table, H264E_CABAC_TABLE_BUF_SIZE); + h264e_swap_endian((RK_U32 *)table, H264E_CABAC_TABLE_BUF_SIZE); mpp_buffer_write(hw_cabac_tab_buf, 0, table, H264E_CABAC_TABLE_BUF_SIZE); h264e_hal_leave(); } -static MPP_RET h264e_vpu_nal_start(H264eVpuStream * stream, +static MPP_RET h264e_vpu_nal_start(H264eStream * stream, RK_S32 nalRefIdc, H264eNalUnitType nalUnitType) { - hal_h264e_vpu_stream_put_bits(stream, 0, 8, "leadin_zero_8bits"); - hal_h264e_vpu_stream_put_bits(stream, 0, 8, "start_code_prefix"); - hal_h264e_vpu_stream_put_bits(stream, 0, 8, "start_code_prefix"); - hal_h264e_vpu_stream_put_bits(stream, 1, 8, "start_code_prefix"); - hal_h264e_vpu_stream_put_bits(stream, 0, 1, "forbidden_zero_bit"); - hal_h264e_vpu_stream_put_bits(stream, nalRefIdc, 2, "nal_ref_idc"); - hal_h264e_vpu_stream_put_bits(stream, (RK_S32)nalUnitType, 5, + h264e_stream_put_bits(stream, 0, 8, "leadin_zero_8bits"); + h264e_stream_put_bits(stream, 0, 8, "start_code_prefix"); + h264e_stream_put_bits(stream, 0, 8, "start_code_prefix"); + h264e_stream_put_bits(stream, 1, 8, "start_code_prefix"); + h264e_stream_put_bits(stream, 0, 1, "forbidden_zero_bit"); + h264e_stream_put_bits(stream, nalRefIdc, 2, "nal_ref_idc"); + h264e_stream_put_bits(stream, (RK_S32)nalUnitType, 5, "nal_unit_type"); stream->zero_bytes = 0; /* we start new counter for zero bytes */ return MPP_OK; } -static MPP_RET hal_h264e_vpu_write_sps(H264eVpuStream *stream, +static MPP_RET hal_h264e_vpu_write_sps(H264eStream *stream, H264eSps *sps) { h264e_hal_enter(); h264e_vpu_nal_start(stream, 1, H264E_NAL_SPS); - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->i_profile_idc, 8, + h264e_stream_put_bits_with_detect(stream, sps->i_profile_idc, 8, "profile_idc"); //FIXED: 77, 42 - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->b_constraint_set0, 1, + h264e_stream_put_bits_with_detect(stream, sps->b_constraint_set0, 1, "constraint_set0_flag"); //E0 - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->b_constraint_set1, 1, + h264e_stream_put_bits_with_detect(stream, sps->b_constraint_set1, 1, "constraint_set1_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->b_constraint_set2, 1, + h264e_stream_put_bits_with_detect(stream, sps->b_constraint_set2, 1, "constraint_set2_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->b_constraint_set3, 1, + h264e_stream_put_bits_with_detect(stream, sps->b_constraint_set3, 1, "constraint_set3_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, 0, 4, + h264e_stream_put_bits_with_detect(stream, 0, 4, "reserved_zero_4bits"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->i_level_idc, 8, + h264e_stream_put_bits_with_detect(stream, sps->i_level_idc, 8, "level_idc"); //28 - hal_h264e_vpu_write_ue(stream, sps->i_id, "seq_parameter_set_id"); //8D + h264e_stream_write_ue(stream, sps->i_id, "seq_parameter_set_id"); //8D if (sps->i_profile_idc >= 100) { //High profile - hal_h264e_vpu_write_ue(stream, sps->i_chroma_format_idc, + h264e_stream_write_ue(stream, sps->i_chroma_format_idc, "chroma_format_idc"); - hal_h264e_vpu_write_ue(stream, H264_BIT_DEPTH - 8, + h264e_stream_write_ue(stream, H264_BIT_DEPTH - 8, "bit_depth_luma_minus8"); - hal_h264e_vpu_write_ue(stream, H264_BIT_DEPTH - 8, + h264e_stream_write_ue(stream, H264_BIT_DEPTH - 8, "bit_depth_chroma_minus8"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->b_qpprime_y_zero_transform_bypass, 1, "qpprime_y_zero_transform_bypass_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, 0, 1, + h264e_stream_put_bits_with_detect(stream, 0, 1, "seq_scaling_matrix_present_flag"); } - hal_h264e_vpu_write_ue(stream, sps->i_log2_max_frame_num - 4, + h264e_stream_write_ue(stream, sps->i_log2_max_frame_num - 4, "log2_max_frame_num_minus4"); - hal_h264e_vpu_write_ue(stream, sps->i_poc_type, "pic_order_cnt_type"); //68 16 + h264e_stream_write_ue(stream, sps->i_poc_type, "pic_order_cnt_type"); //68 16 - hal_h264e_vpu_write_ue(stream, sps->i_num_ref_frames, + h264e_stream_write_ue(stream, sps->i_num_ref_frames, "num_ref_frames"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->b_gaps_in_frame_num_value_allowed, 1, "gaps_in_frame_num_value_allowed_flag"); - hal_h264e_vpu_write_ue(stream, sps->i_mb_width - 1, + h264e_stream_write_ue(stream, sps->i_mb_width - 1, "pic_width_in_mbs_minus1"); - hal_h264e_vpu_write_ue(stream, sps->i_mb_height - 1, + h264e_stream_write_ue(stream, sps->i_mb_height - 1, "pic_height_in_map_units_minus1"); //09 64 - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->b_frame_mbs_only, 1, "frame_mbs_only_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->b_direct8x8_inference, 1, "direct_8x8_inference_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->b_crop, 1, "frame_cropping_flag"); if (sps->b_crop) { - hal_h264e_vpu_write_ue(stream, sps->crop.i_left / 2, + h264e_stream_write_ue(stream, sps->crop.i_left / 2, "frame_crop_left_offset"); - hal_h264e_vpu_write_ue(stream, sps->crop.i_right / 2, + h264e_stream_write_ue(stream, sps->crop.i_right / 2, "frame_crop_right_offset"); - hal_h264e_vpu_write_ue(stream, sps->crop.i_top / 2, + h264e_stream_write_ue(stream, sps->crop.i_top / 2, "frame_crop_top_offset"); - hal_h264e_vpu_write_ue(stream, sps->crop.i_bottom / 2, + h264e_stream_write_ue(stream, sps->crop.i_bottom / 2, "frame_crop_bottom_offset"); } - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->vui.b_vui, 1, + h264e_stream_put_bits_with_detect(stream, sps->vui.b_vui, 1, "vui_parameters_present_flag"); if (sps->vui.b_vui) { - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.b_aspect_ratio_info_present, 1, "aspect_ratio_info_present_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.b_overscan_info_present, 1, "overscan_info_present_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.b_signal_type_present, 1, "video_signal_type_present_flag"); if (sps->vui.b_signal_type_present) { - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->vui.i_vidformat, 3, "video_format"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->vui.b_fullrange, 1, "video_full_range_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->vui.b_color_description_present, 1, + h264e_stream_put_bits_with_detect(stream, sps->vui.i_vidformat, 3, "video_format"); + h264e_stream_put_bits_with_detect(stream, sps->vui.b_fullrange, 1, "video_full_range_flag"); + h264e_stream_put_bits_with_detect(stream, sps->vui.b_color_description_present, 1, "colour_description_present_flag"); if (sps->vui.b_color_description_present) { - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->vui.i_colorprim, 8, "colour_primaries"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->vui.i_transfer, 8, "transfer_characteristics"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, sps->vui.i_colmatrix, 8, "matrix_coefficients"); + h264e_stream_put_bits_with_detect(stream, sps->vui.i_colorprim, 8, "colour_primaries"); + h264e_stream_put_bits_with_detect(stream, sps->vui.i_transfer, 8, "transfer_characteristics"); + h264e_stream_put_bits_with_detect(stream, sps->vui.i_colmatrix, 8, "matrix_coefficients"); } } - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.b_chroma_loc_info_present, 1, "chroma_loc_info_present_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.b_timing_info_present, 1, "timing_info_present_flag"); if (sps->vui.b_timing_info_present) { - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.i_num_units_in_tick >> 16, 16, "num_units_in_tick msb"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.i_num_units_in_tick & 0xffff, 16, "num_units_in_tick lsb"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.i_time_scale >> 16, 16, "time_scale msb"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.i_time_scale & 0xffff, 16, "time_scale lsb"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.b_fixed_frame_rate, 1, "fixed_frame_rate_flag"); } - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.b_nal_hrd_parameters_present, 1, "nal_hrd_parameters_present_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.b_vcl_hrd_parameters_present, 1, "vcl_hrd_parameters_present_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.b_pic_struct_present, 1, "pic_struct_present_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.b_bitstream_restriction, 1, "bit_stream_restriction_flag"); if (sps->vui.b_bitstream_restriction) { - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, sps->vui.b_motion_vectors_over_pic_boundaries, 1, "motion_vectors_over_pic_boundaries"); - hal_h264e_vpu_write_ue(stream, + h264e_stream_write_ue(stream, sps->vui.i_max_bytes_per_pic_denom, "max_bytes_per_pic_denom"); - hal_h264e_vpu_write_ue(stream, + h264e_stream_write_ue(stream, sps->vui.i_max_bits_per_mb_denom, "max_bits_per_mb_denom"); - hal_h264e_vpu_write_ue(stream, + h264e_stream_write_ue(stream, sps->vui.i_log2_max_mv_length_horizontal, "log2_mv_length_horizontal"); - hal_h264e_vpu_write_ue(stream, + h264e_stream_write_ue(stream, sps->vui.i_log2_max_mv_length_vertical, "log2_mv_length_vertical"); - hal_h264e_vpu_write_ue(stream, + h264e_stream_write_ue(stream, sps->vui.i_num_reorder_frames, "num_reorder_frames"); - hal_h264e_vpu_write_ue(stream, + h264e_stream_write_ue(stream, sps->vui.i_max_dec_frame_buffering, "max_dec_frame_buffering"); } } - hal_h264e_vpu_rbsp_trailing_bits(stream); + h264e_stream_trailing_bits(stream); h264e_hal_leave(); return MPP_OK; } -static MPP_RET hal_h264e_vpu_write_pps(H264eVpuStream *stream, +static MPP_RET hal_h264e_vpu_write_pps(H264eStream *stream, H264ePps *pps) { h264e_hal_enter(); h264e_vpu_nal_start(stream, 1, H264E_NAL_PPS); - hal_h264e_vpu_write_ue(stream, pps->i_id, "pic_parameter_set_id"); - hal_h264e_vpu_write_ue(stream, pps->i_sps_id, "seq_parameter_set_id"); + h264e_stream_write_ue(stream, pps->i_id, "pic_parameter_set_id"); + h264e_stream_write_ue(stream, pps->i_sps_id, "seq_parameter_set_id"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, pps->b_cabac, 1, + h264e_stream_put_bits_with_detect(stream, pps->b_cabac, 1, "entropy_coding_mode_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, pps->b_pic_order, 1, + h264e_stream_put_bits_with_detect(stream, pps->b_pic_order, 1, "pic_order_present_flag"); - hal_h264e_vpu_write_ue(stream, pps->i_num_slice_groups - 1, + h264e_stream_write_ue(stream, pps->i_num_slice_groups - 1, "num_slice_groups_minus1"); - hal_h264e_vpu_write_ue(stream, pps->i_num_ref_idx_l0_default_active - 1, + h264e_stream_write_ue(stream, pps->i_num_ref_idx_l0_default_active - 1, "num_ref_idx_l0_active_minus1"); - hal_h264e_vpu_write_ue(stream, pps->i_num_ref_idx_l1_default_active - 1, + h264e_stream_write_ue(stream, pps->i_num_ref_idx_l1_default_active - 1, "num_ref_idx_l1_active_minus1"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, pps->b_weighted_pred, 1, + h264e_stream_put_bits_with_detect(stream, pps->b_weighted_pred, 1, "weighted_pred_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, pps->i_weighted_bipred_idc, 2, "weighted_bipred_idc"); - hal_h264e_vpu_write_se(stream, pps->i_pic_init_qp - 26, + h264e_stream_write_se(stream, pps->i_pic_init_qp - 26, "pic_init_qp_minus26"); - hal_h264e_vpu_write_se(stream, pps->i_pic_init_qs - 26, + h264e_stream_write_se(stream, pps->i_pic_init_qs - 26, "pic_init_qs_minus26"); - hal_h264e_vpu_write_se(stream, pps->i_chroma_qp_index_offset, + h264e_stream_write_se(stream, pps->i_chroma_qp_index_offset, "chroma_qp_index_offset"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, pps->b_deblocking_filter_control, 1, "deblocking_filter_control_present_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, pps->b_constrained_intra_pred, 1, "constrained_intra_pred_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, pps->b_redundant_pic_cnt, + h264e_stream_put_bits_with_detect(stream, pps->b_redundant_pic_cnt, 1, "redundant_pic_cnt_present_flag"); if (pps->b_transform_8x8_mode) { - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, pps->b_transform_8x8_mode, 1, "transform_8x8_mode_flag"); - hal_h264e_vpu_stream_put_bits_with_detect(stream, + h264e_stream_put_bits_with_detect(stream, pps->b_cqm_preset, 1, "pic_scaling_matrix_present_flag"); - hal_h264e_vpu_write_se(stream, + h264e_stream_write_se(stream, pps->i_chroma_qp_index_offset, "chroma_qp_index_offset"); } - hal_h264e_vpu_rbsp_trailing_bits(stream); + h264e_stream_trailing_bits(stream); h264e_hal_leave(); return MPP_OK; } -static MPP_RET hal_h264e_vpu_write_sei(H264eVpuStream *s, RK_U8 *payload, +static MPP_RET hal_h264e_vpu_write_sei(H264eStream *s, RK_U8 *payload, RK_S32 payload_size, RK_S32 payload_type) { RK_S32 i = 0; @@ -328,22 +328,22 @@ static MPP_RET hal_h264e_vpu_write_sei(H264eVpuStream *s, RK_U8 *payload, h264e_vpu_nal_start(s, H264E_NAL_PRIORITY_DISPOSABLE, H264E_NAL_SEI); for (i = 0; i <= payload_type - 255; i += 255) - hal_h264e_vpu_stream_put_bits_with_detect(s, 0xff, 8, + h264e_stream_put_bits_with_detect(s, 0xff, 8, "sei_payload_type_ff_byte"); - hal_h264e_vpu_stream_put_bits_with_detect(s, payload_type - i, 8, + h264e_stream_put_bits_with_detect(s, payload_type - i, 8, "sei_last_payload_type_byte"); for (i = 0; i <= payload_size - 255; i += 255) - hal_h264e_vpu_stream_put_bits_with_detect(s, 0xff, 8, + h264e_stream_put_bits_with_detect(s, 0xff, 8, "sei_payload_size_ff_byte"); - hal_h264e_vpu_stream_put_bits_with_detect(s, payload_size - i, 8, + h264e_stream_put_bits_with_detect(s, payload_size - i, 8, "sei_last_payload_size_byte"); for (i = 0; i < payload_size; i++) - hal_h264e_vpu_stream_put_bits_with_detect(s, (RK_U32)payload[i], 8, + h264e_stream_put_bits_with_detect(s, (RK_U32)payload[i], 8, "sei_payload_data"); - hal_h264e_vpu_rbsp_trailing_bits(s); + h264e_stream_trailing_bits(s); h264e_hal_leave(); @@ -354,7 +354,7 @@ static MPP_RET h264e_vpu_sei_encode(H264eHalContext *ctx) { H264eVpuExtraInfo *info = (H264eVpuExtraInfo *)ctx->extra_info; - H264eVpuStream *sei_stream = &info->sei_stream; + H264eStream *sei_stream = &info->sei_stream; char *str = (char *)info->sei_buf; RK_S32 str_len = 0; @@ -378,19 +378,19 @@ MPP_RET h264e_vpu_init_extra_info(void *extra_info) 0x87, 0xfb, 0x3f, 0xab, 0xec, 0xb3, 0xb6, 0x77 }; H264eVpuExtraInfo *info = (H264eVpuExtraInfo *)extra_info; - H264eVpuStream *sps_stream = &info->sps_stream; - H264eVpuStream *pps_stream = &info->pps_stream; - H264eVpuStream *sei_stream = &info->sei_stream; + H264eStream *sps_stream = &info->sps_stream; + H264eStream *pps_stream = &info->pps_stream; + H264eStream *sei_stream = &info->sei_stream; - if (MPP_OK != hal_h264e_vpu_stream_buffer_init(sps_stream, 128)) { + if (MPP_OK != h264e_stream_init(sps_stream, 128)) { mpp_err("sps stream sw buf init failed"); return MPP_NOK; } - if (MPP_OK != hal_h264e_vpu_stream_buffer_init(pps_stream, 128)) { + if (MPP_OK != h264e_stream_init(pps_stream, 128)) { mpp_err("pps stream sw buf init failed"); return MPP_NOK; } - if (MPP_OK != hal_h264e_vpu_stream_buffer_init + if (MPP_OK != h264e_stream_init (sei_stream, H264E_SEI_BUF_SIZE)) { mpp_err("sei stream sw buf init failed"); return MPP_NOK; @@ -404,9 +404,9 @@ MPP_RET h264e_vpu_init_extra_info(void *extra_info) MPP_RET h264e_vpu_deinit_extra_info(void *extra_info) { H264eVpuExtraInfo *info = (H264eVpuExtraInfo *)extra_info; - H264eVpuStream *sps_stream = &info->sps_stream; - H264eVpuStream *pps_stream = &info->pps_stream; - H264eVpuStream *sei_stream = &info->sei_stream; + H264eStream *sps_stream = &info->sps_stream; + H264eStream *pps_stream = &info->pps_stream; + H264eStream *sei_stream = &info->sei_stream; MPP_FREE(sps_stream->buffer); MPP_FREE(pps_stream->buffer); @@ -420,15 +420,15 @@ MPP_RET h264e_vpu_set_extra_info(H264eHalContext *ctx) { H264eVpuExtraInfo *info = (H264eVpuExtraInfo *)ctx->extra_info; - H264eVpuStream *sps_stream = &info->sps_stream; - H264eVpuStream *pps_stream = &info->pps_stream; + H264eStream *sps_stream = &info->sps_stream; + H264eStream *pps_stream = &info->pps_stream; H264eSps *sps = &info->sps; H264ePps *pps = &info->pps; h264e_hal_enter(); - hal_h264e_vpu_stream_buffer_reset(sps_stream); - hal_h264e_vpu_stream_buffer_reset(pps_stream); + h264e_stream_reset(sps_stream); + h264e_stream_reset(pps_stream); h264e_set_sps(ctx, sps); h264e_set_pps(ctx, pps, sps); @@ -448,21 +448,6 @@ MPP_RET h264e_vpu_set_extra_info(H264eHalContext *ctx) return MPP_OK; } -RK_S32 exp_golomb_signed(RK_S32 val) -{ - RK_S32 tmp = 0; - - if (val > 0) - val = 2 * val; - else - val = -2 * val + 1; - - while (val >> ++tmp) - ; - - return tmp * 2 - 1; -} - MPP_RET h264e_vpu_free_buffers(H264eHalContext *ctx) { MPP_RET ret = MPP_OK; diff --git a/mpp/hal/vpu/h264e/hal_h264e_header.h b/mpp/hal/vpu/h264e/hal_h264e_header.h index 10a7ad47..6ffa217c 100644 --- a/mpp/hal/vpu/h264e/hal_h264e_header.h +++ b/mpp/hal/vpu/h264e/hal_h264e_header.h @@ -29,6 +29,5 @@ MPP_RET h264e_vpu_set_extra_info(H264eHalContext *ctx); MPP_RET h264e_vpu_free_buffers(H264eHalContext *ctx); MPP_RET h264e_vpu_allocate_buffers(H264eHalContext *ctx); -RK_S32 exp_golomb_signed(RK_S32 val); #endif diff --git a/mpp/hal/vpu/h264e/hal_h264e_vepu.h b/mpp/hal/vpu/h264e/hal_h264e_vepu.h index 7f84c3ab..1495e605 100644 --- a/mpp/hal/vpu/h264e/hal_h264e_vepu.h +++ b/mpp/hal/vpu/h264e/hal_h264e_vepu.h @@ -43,9 +43,9 @@ typedef enum H264eVpuFrameType_t { } H264eVpuFrameType; typedef struct H264eVpuExtraInfo_t { - H264eVpuStream sps_stream; - H264eVpuStream pps_stream; - H264eVpuStream sei_stream; + H264eStream sps_stream; + H264eStream pps_stream; + H264eStream sei_stream; H264eSps sps; H264ePps pps; H264eSei sei; diff --git a/mpp/hal/vpu/h264e/hal_h264e_vepu1.c b/mpp/hal/vpu/h264e/hal_h264e_vepu1.c index 2db53dbd..b58f5504 100644 --- a/mpp/hal/vpu/h264e/hal_h264e_vepu1.c +++ b/mpp/hal/vpu/h264e/hal_h264e_vepu1.c @@ -639,9 +639,9 @@ MPP_RET hal_h264e_vepu1_control(void *hal, RK_S32 cmd_type, void *param) MppPacket *pkt_out = (MppPacket *)param; H264eVpuExtraInfo *src = (H264eVpuExtraInfo *)ctx->extra_info; - H264eVpuStream *sps_stream = &src->sps_stream; - H264eVpuStream *pps_stream = &src->pps_stream; - H264eVpuStream *sei_stream = &src->sei_stream; + H264eStream *sps_stream = &src->sps_stream; + H264eStream *pps_stream = &src->pps_stream; + H264eStream *sei_stream = &src->sei_stream; h264e_vpu_set_extra_info(ctx); diff --git a/mpp/hal/vpu/h264e/hal_h264e_vepu2.c b/mpp/hal/vpu/h264e/hal_h264e_vepu2.c index 1f6461a7..aac79332 100644 --- a/mpp/hal/vpu/h264e/hal_h264e_vepu2.c +++ b/mpp/hal/vpu/h264e/hal_h264e_vepu2.c @@ -664,9 +664,9 @@ MPP_RET hal_h264e_vepu2_control(void *hal, RK_S32 cmd_type, void *param) MppPacket *pkt_out = (MppPacket *)param; H264eVpuExtraInfo *src = (H264eVpuExtraInfo *)ctx->extra_info; - H264eVpuStream *sps_stream = &src->sps_stream; - H264eVpuStream *pps_stream = &src->pps_stream; - H264eVpuStream *sei_stream = &src->sei_stream; + H264eStream *sps_stream = &src->sps_stream; + H264eStream *pps_stream = &src->pps_stream; + H264eStream *sei_stream = &src->sei_stream; size_t offset = 0;