cisco / openh264

Open Source H.264 Codec
BSD 2-Clause "Simplified" License
5.54k stars 1.79k forks source link

About encoder parameter #2201

Closed octalflow closed 9 years ago

octalflow commented 9 years ago

Hello. I have a question about decoder's frame buffering.(NOT OPENH264 decoder BUT OMX)

When I feed encoded data to OMX, OMX decoder always buffer 2 to 4 frames. So there are big latency problem.

If encder is INTEL Mfx(quickSync), OMX buffer 2 frames. If encoder is OPENH264, OMX buffer 3 frames. If encoder is Apple VideoToolbox, OMX buffer 4 frames.

what is the difference between two ?

This is openh264 encoder parameter.

Nal length 20 start code 4 bytes ref 3 type 7 Sequence parameter set profile: 66 constaint_set0_flag: 1 constaint_set1_flag: 1 constaint_set2_flag: 0 constaint_set3_flag: 0 level_idc: 40 seq parameter set id: 0 log2_max_frame_num_minus4: 11 pic_order_cnt_type: 0 log2_max_pic_order_cnt_lsb_minus4: 12 num_ref_frames: 1 gaps_in_frame_num_value_allowed_flag: 0 pic_width_in_mbs_minus1: 119 (1920) pic_height_in_map_minus1: 67 frame_mbs_only_flag: 1 derived height: 1088 direct_8x8_inference_flag: 0 frame_cropping_flag: 1 frame_crop_left_offset: 0 frame_crop_right_offset: 0 frame_crop_top_offset: 0 frame_crop_bottom_offset: 4 vui_parameters_present_flag: 1 aspect_ratio_info_present_flag: 0 overscan_info_present_flag: 0 video_signal_info_present_flag: 0 chroma_loc_info_present_flag: 0 timing_info_present_flag: 0 nal_hrd_parameters_present_flag: 0 vcl_hrd_parameters_present_flag: 0 pic_struct_present_flag: 0 motion_vectors_over_pic_boundaries_flag: 1 max_bytes_per_pic_denom: 0 max_bits_per_mb_denom: 0 log2_max_mv_length_horizontal: 16 log2_max_mv_length_vertical: 16 num_reorder_frames: 0 max_dec_frame_buffering: 1 Nal length 8 start code 4 bytes ref 3 type 8 Picture parameter set pic_parameter_set_id: 0 seq_parameter_set_id: 0 entropy_coding_mode_flag: 0 pic_order_present_flag: 0 num_slice_groups_minus1: 0 num_ref_idx_l0_active_minus1: 0 num_ref_idx_l1_active_minus1: 0 weighted_pred_flag: 0 weighted_bipred_idc: 0 pic_init_qp_minus26: 0 pic_init_qs_minus26: 0 chroma_qp_index_offset: 0 deblocking_filter_control_present_flag: 1 constrained_intra_pred_flag: 0 redundant_pic_cnt_present_flag: 0

AND this is INTEL MFX h/w encoder parameter

Nal length 28 start code 4 bytes ref 1 type 7 Sequence parameter set profile: 66 constaint_set0_flag: 0 constaint_set1_flag: 0 constaint_set2_flag: 0 constaint_set3_flag: 0 level_idc: 40 seq parameter set id: 0 log2_max_frame_num_minus4: 4 pic_order_cnt_type: 2 num_ref_frames: 1 gaps_in_frame_num_value_allowed_flag: 0 pic_width_in_mbs_minus1: 119 (1920) pic_height_in_map_minus1: 67 frame_mbs_only_flag: 1 derived height: 1088 direct_8x8_inference_flag: 1 frame_cropping_flag: 1 frame_crop_left_offset: 0 frame_crop_right_offset: 0 frame_crop_top_offset: 0 frame_crop_bottom_offset: 4 vui_parameters_present_flag: 1 aspect_ratio_info_present_flag: 1 aspect_ratio_idc:1 overscan_info_present_flag: 0 video_signal_info_present_flag: 0 chroma_loc_info_present_flag: 0 timing_info_present_flag: 1 num_units_in_tick: 1 time_scale: 2 fixed_frame_scale: 1 nal_hrd_parameters_present_flag: 0 vcl_hrd_parameters_present_flag: 0 pic_struct_present_flag: 0 motion_vectors_over_pic_boundaries_flag: 1 max_bytes_per_pic_denom: 2 max_bits_per_mb_denom: 1 log2_max_mv_length_horizontal: 13 log2_max_mv_length_vertical: 11 num_reorder_frames: 0 max_dec_frame_buffering: 1 Nal length 8 start code 4 bytes ref 1 type 8 Picture parameter set pic_parameter_set_id: 0 seq_parameter_set_id: 0 entropy_coding_mode_flag: 0 pic_order_present_flag: 0 num_slice_groups_minus1: 0 num_ref_idx_l0_active_minus1: 0 num_ref_idx_l1_active_minus1: 0 weighted_pred_flag: 0 weighted_bipred_idc: 0 pic_init_qp_minus26: 0 pic_init_qs_minus26: 0 chroma_qp_index_offset: 0 deblocking_filter_control_present_flag: 1 constrained_intra_pred_flag: 0 redundant_pic_cnt_present_flag: 0

thank you.

sijchen commented 9 years ago

this question is "NOT OPENH264 decoder BUT OMX" so we have no idea what that decoder is doing.

Consti10 commented 3 years ago

The issue is the following parameter: pic_order_cnt_type=0 see https://github.com/google/ExoPlayer/issues/8514