h265帧格式

H265 nalu head格式 000000 01 nalu type 01 content

例如:(具体nalu type值对应的类型可以上网查一下)

00 00 00 01 40 01  的nuh_unit_type的值为 32, 语义为视频参数集        VPS
00 00 00 01 42 01  的nuh_unit_type的值为 33, 语义为序列参数集         SPS
00 00 00 01 44 01  的nuh_unit_type的值为 34, 语义为图像参数集         PPS
00 00 00 01 4E 01  的nuh_unit_type的值为 39, 语义为补充增强信息       SEI
00 00 00 01 26 01  的nuh_unit_type的值为 19, 语义为可能有RADL图像的IDR图像的SS编码数据   IDR
00 00 00 01 02 01  的nuh_unit_type的值为1, 语义为被参考的后置图像,且非TSA、非STSA的SS编码数据

哥伦布编码:

1.指数哥伦布编码定义。
指数哥伦布码(指数Golomb码),一种压缩编码方法。
用来表示非负整数的k阶指数哥伦布码可用如下步骤生成:
将数字以二进制形式写出,去掉最低的k个比特位,之后加1
计算留下的比特数,将此数减一,即是需要增加的前导零个数
将第一步中去掉的最低k个比特位补回比特串尾部
0阶指数哥伦布码如下所示:
0 => 1 => 1
1 => 10 => 010
2 => 11 => 011
3 => 100 => 00100
4 => 101 => 00101
5 => 110 => 00110
6 => 111 => 00111
7 => 1000 => 0001000
8 => 1001 => 0001001
...


2.以下是个人理解。
a.指数哥伦布编码是一种压缩编码的方式,利用压缩的原理是常用的数尽可能短,不常用的可以长一点。所以表示每一个不同的数,都可能有不同的长度。
b.指数哥伦布编码是利用开头的0来标示后面有用位置的个数。
c.手工解码指数哥伦布编码 0阶, 数开头0的个数 为 i, 接着读0后面 i+1 位,读到的数为 h, 可以得到原来的数为 x = h - 1.

 

解析vps示例

00 00 00 01 40 01 vps

0C 01 FF FF

01 40 00 00 03 XXX_profile_compatibility_flag

00 00 03 00 00 03 XXX_reserved_zero_44bits

00 00 03 00 5D AC 09

名称

长度(范围bit

简介

vps_video_parameter_set_id

4

默认为0

vps_reserved_three_2bits

2

默认为全1

vps_reserved_zero_6bits

6

0

vps_max_sub_layers_minus1

3

这里为0,也是layers = 1

maxTempSubLayers = 1

vps_temporal_id_nesting_flag

1

maxTempSubLayers == 1

vps_reserved_ffff_16bits

16

ffff

codeProfileTier

以下是Vps profile参数集

XXX_profile_space

2

默认0

XXX_tier_flag

1

这里为0

XXX_profile_idc

5

这里为1

XXX_profile_compatibility_flag

32

40 00 00 03

general_progressive_source_flag

1

0

general_interlaced_source_flag

1

0

general_non_packed_constraint_flag

1

0

general_frame_only_constraint_flag

1

0

profileIdc == 1 Main Profile

 

XXX_reserved_zero_44bits

16

0  00  0

XXX_reserved_zero_44bits

16

3  00  0

XXX_reserved_zero_44bits

12

0  03

general_level_idc

8

00

maxTempSubLayers > 1

示例数据这里=1暂时不分析

 

 

 

vps_sub_layer_ordering_info_present_flag

1

1

maxTempSubLayers

循环0-maxTempSubLayers

vps_max_dec_pic_buffering_minus1

哥伦布编码

 

vps_num_reorder_pics

哥伦布编码

 

vps_max_latency_increase_plus1

哥伦布编码

 

vps_max_nuh_reserved_zero_layer_id

6

0

vps_max_op_sets_minus1

哥伦布编码

0

vps_timing_info_present_flag

1

0

vps_extension_flag

1

0

 

 

 

 

解析sps示例:

00 00 00 01 42 01

01 01 40 00 00 03 00 00 03 00 00 03 00 codeProfileTier

 

00 03 00 5D A0 02 00 80 26 1F 2E 5A EE 42 59 2E 3F F0 01 90 01 84 00 80 00 00 03 00 80 00 00 0C 84

 

sps_video_parameter_set_id

4

0

sps_max_sub_layers_minus1

3

0

sps_temporal_id_nesting_flag

1

1

codeProfileTier

参考上面

sps_seq_parameter_set_id

哥伦布编码

 

chroma_format_idc

哥伦布编码

 

separate_colour_plane_flag

1

If(format = 444)

pic_width_in_luma_samples

哥伦布编码

 

pic_height_in_luma_samples

哥伦布编码

 

conformance_window_flag

1

 

conf_win_left_offset

哥伦布编码

 

conf_win_right_offset

哥伦布编码

 

conf_win_top_offset

哥伦布编码

 

conf_win_bottom_offset

哥伦布编码

 

 

 

 

bit_depth_luma_minus8

哥伦布编码

 

bit_depth_chroma_minus8

哥伦布编码

 

log2_max_pic_order_cnt_lsb_minus4

哥伦布编码

 

sps_sub_layer_ordering_info_present_flag

1

 

sps_max_dec_pic_buffering_minus1

哥伦布编码

 

sps_num_reorder_pics

哥伦布编码

 

sps_max_latency_increase_plus1

哥伦布编码

 

log2_min_coding_block_size_minus3

哥伦布编码

 

log2_diff_max_min_coding_block_size

 

 

log2_min_transform_block_size_minus2

 

 

log2_diff_max_min_transform_block_size

 

 

max_transform_hierarchy_depth_inter

 

 

max_transform_hierarchy_depth_intra

 

 

scaling_list_enabled_flag

1

 

sps_scaling_list_data_present_flag

1

 

amp_enabled_flag

1

 

sample_adaptive_offset_enabled_flag

1

 

pcm_enabled_flag

1

 

num_short_term_ref_pic_sets

哥伦布编码

 

codeShortTermRefPicSet

Set数目解析

long_term_ref_pics_present_flag

1

 

sps_temporal_mvp_enable_flag

1

 

sps_strong_intra_smoothing_enable_flag

1

 

vui_parameters_present_flag

1

 

codeVUI

 

 

sps_extension_flag

1

 

 Pps具体参考x265源码




你可能感兴趣的:(音视频)