H 264學習筆記之二(片及片頭語法)

2021-09-30 04:40:25 字數 4335 閱讀 6058

1

片層句法(不分割槽)

句法

c

desc

slice_layer_without_partitioning_rbsp()表6

2 片層a

分割槽句法

句法

c

desc

slice_data_partition_a_layer_rbsp()表7

3 片層b

分割槽句法

句法

c

desc

slice_data_partition_b_layer_rbsp()表8

4 片層c

分割槽句法

句法

c

desc

slice_data_partition_c_layer_rbsp()表9

5 拖尾(trailing bits

)句法

句法

c

desc

rbsp_trailing_bits()表10

6 片頭(slice header

)句法

句法

c

desc

slice_header()

if(nal_unit_type==5)

idr_pic_id /* idr

影象標識,不同的

idr影象有不同的

idr值。場模式下,

idr幀的兩個場有相同的

idr_pic_id

值,[0..65535] */ 2

ue(v)

if(pic_order_cnt_type==0)

if(pic_order_cnt_type==1 && !delta_pic_order_always_zero_flag)

if(redundant_ic_cnt_present_flag)

redundant_pic_cnt/*

冗餘片的id號

*/ 2ue(v)

if(slice_type==b)

direct_spatial_mv_pred_flag/* b

影象在直接**模式下,

1:空間**,

0:時間***/

2u(1)

if(slice_type==p||slice_type==sp||slice_type==b) }

ref_pic_list_reordering() /* 見第7

節描述*/ 2

if((weighted_pred_flag && (slice_type==p || slice_type==sp)) || (weighted_bipred_idc==1 && slice_type==b))

pred_weight_table() /* 見第8

節描述*/ 2

if(nal_ref_idc!=0)

dec_ref_pic_marking()/* 見第9

節描述*/ 2

if(entropy_coding_mode_flag && slice_type!=1 && slice_type != si)

cabac_init_idc

/* 給出

cabac

初始化時**的選擇,

[0..2] */ 2

ue(v)

slice_qp_delta /*

指出用於當前片的所有巨集塊的量化引數的初始值。

sliceqpy=26+pic_init_qp_minus26+slice_qp_delta

,[0..51] */ 2

se(v)

if(slice_type==sp || slice_type==si)

if(deblocking_flter_control_present_flag) }

if(num_slice_group_minus1 > 0 && slice_group_map_type>=3 && slice_group_map_type <= 5)

slice_group_change_cycle /*

片組型別是

3.4.5

時,由該元素可以獲取片組中對映單元的數目*/

2u(v)}表

11 slice_type

name

0p slice

1b slice

2i slice

3sp slice

4si slice

5p slice

6b slice

7i slice

8sp slice

9si slice表12

(注:idr

影象時,

slice_type

為2,4,7,9)7

參考幀重排序

句法

c

desc

ref_pic_list_reordering()while(reordering_of_pic_nums_idc!=3) }

if(slice_type==b)while(reordering_of_pic_nums_idc!=3) }

}表13

reordering_of_pic_nums_idc

操作

0短期參考幀重排序,

abs_diff_pic_num_minus1

會出現在碼流中,從當前影象的

picnum

減去(abs_diff_pic_num_minus1+1)

後指明需要重排序的影象

1短期參考幀重排序,

abs_diff_pic_num_minus1

會出現在碼流中,從當前影象的

picnum

加上(abs_diff_pic_num_minus1+1)

後指明需要重排序的影象

2長期參考幀重排序,

long_term_pic_num

會出現在碼流中,指明需要重排序的影象。

3結束迴圈,退出重排序操作。 表

14 8 加權**的語義

句法

c

desc

pred_weight_table()

chroma_weight_l0_flag /*

同luma

相似,但用於色度*/

2u(1)

if(chroma_weight_l0_flag) }

if(slice_type==b)

for(i=0;i<=num_ref_idx_l1_active_minus1;i++)

chroma_weight_l1_flag 2

u(1)

if(chroma_weight_l1_flag)

for(j=0;j<2;j++) }

}表15

9 參考影象序列標記

句法

c

desc

dec_ref_pic_marking()elsewhile(memory_management_control_operation != 0) }

}表16

memory_management_control_operation

操作

0結束迴圈

1將乙個短期參考影象標記為非參考影象,也即將乙個短期參考影象移出參考幀佇列

2將乙個長期參考影象標記為非參考影象,也即將乙個長期參考影象移出參考幀佇列

3將乙個短期參考影象轉為長期參考影象

4指明長期參考幀的最大數目

5清空參考幀佇列,將所有參考影象移參考幀佇列,並禁用長期參考機制

6將當前影象存存為乙個長期參考幀 表

17標記操作

H 264學習筆記之二(片及片頭語法)

1片層句法 不分割槽 句法 c desc slice layer without partitioning rbsp while reordering of pic nums idc 3 if slice type b while reordering of pic nums idc 3 表13re...

H 264句法和語法總結(五)片頭句法

slice header if nal unit type 5 idr pic id idr 影象的標識。不同的 idr 影象有不同的 idr pic id 值。值得注意的是,idr 影象有不等價於 i 影象,只有在作為 idr 影象的 i 幀才有這個句法元素,在場模式下,idr 幀的兩個場有相同的...

H 264學習筆記4 變換量化

a 變換量化過程總體介紹 經過幀內 16x16和4x4亮度 8x8色度 和幀間 4x4 16x16亮度 4x4 8x8色度 畫素塊 之後,得到 塊的殘差,為了壓縮殘差資訊的統計冗餘,需要對殘差資料進行變換和量化操作。變換和量化的總體操作過程如下圖 對於intra 16x16的亮度塊,通過16 4x4...