H264 Profile
对视频压缩特性的描述, profile越高, 就说明采用了越高级的压缩特性, 压缩也就越高.
以constrained baseline为基础发展的两个分支
使用较多的是main profile分支
H264 Level
Level是对视频的描述, Level越高, 视频的码率、分辨率、fps越高.
不同的level对应不同的最高分辨率、最高码率、最高帧率
参考资料 : en.wikipedia.org/wiki/Advanc…
与分辨率相关的参数:
-
pic_width_in_mbs_minus1 : 图像宽度包含的宏块个数 - 1 , 所以在计算图像宽度的时候应该是 ( pic_width_in_mbs_minus1 + 1 ) * 宏块的宽度(默认16).
-
pic_heigh_in_mbs_minus1 : 图像高度包含的宏块个数 - 1 .
-
frame_mbs_only_flag : 帧编码还是场编码(场编码是隔行扫描, 产生两张图).
-
frame_cropping_flag : 图像是否需要裁剪, 如果裁剪的话, 需关注以下四个参数:
-
frame_crop_left_offset : 减去左侧的偏移量.
-
frame_crop_right_offset : 减去右侧的偏移量.
-
frame_crop_top_offset : 减去顶部的偏移量.
-
frame_crop_bottom_offset : 减去底部的偏移量.
与帧相关的参数:
-
log2_max_frame_num_minus4 : GOP最大帧数的计算方法是: 2的 (log2_max_frame_num_minus4 + 4)次方.
-
max_num_ref_frames : 参考帧的缓冲队列的大小(解码器缓冲队列的大小).
-
pic_order_cnt_type : 显示帧序号, 跟据不同的type使用不同的计算公式.
帧率的计算
framerate = (float)(sps->vui.vui_time_scale) / (float)(sps->vui.vui_num_units_in_tick) / 2;
PPS相关的参数
-
entropy_coding_mode_flag : 熵编码, 1表示使用CABAC(main profile 压缩率更高) , 0表示使用CALVC(constrained baseline).
-
num_slice_groups_minus1 : 分片数量 - 1.
-
weighted_pred_flag : 在 P / SP Slice中是否开启权重预测(1 / 0).
-
weighted_bipred_idc : 在 B Slice中加权预测的方法 ID(默认0).
-
pic_init_qp_minus26 / pic_init_qs_minus26 : 初始化量化参数, 实际参数在slice Header中.
-
chroma_qp_index_offset : 用于计算色度分量的量化参数. (luma : 亮度)
-
deblocking_filter_control_present_flag : 表示slice header中是否存在用于去块滤波器控制的信息( 1 / 0 ).
-
constrained_intra_pred_flag : 1 表示 使用帧内预测, 0 表示帧间预测.
-
redundant_pic_cnt_present_flag : 用于表示slice header中是否存在redundan_pic_cnt语法元素.
Slice Header相关的信息
-
帧类型 : I / P / B 帧.
-
GOP中解码帧序号 : 如果只有I帧和P帧, 则顺序解码即可.
-
预测权重
-
滤波