Visão geral da codificação h264 oito (Codificação Columbus ue (v))

I. Visão geral

A codificação por entropia é um método de codificação sem perdas. O objetivo desse método de codificação é encontrar uma codificação de modo que o comprimento médio do código da palavra de código atinja o limite de entropia. A implementação específica é que um comprimento de código mais curto é usado para símbolos com maior probabilidade de ocorrência e um comprimento de código maior é usado para símbolos com menor probabilidade de ocorrência.

A codificação de entropia usada no H.264 inclui: Codificação exponencial de Columbus, CAVLC, CABAC. 

Desta vez, apenas o método de codificação exponencial Columbus é analisado. Existem quatro tipos de códigos Columbus exponenciais definidos em H.264:

tipo ilustrar
ue(v) Código Colombo Exponencial Não Assinado
costura) Código Colombo Exponencial Assinado
te(v) Código Colombo Exponencial Truncado
eu(v) Código Colombo Exponencial Mapeado

Entre eles, ue(v) é a base de outros algoritmos variantes, e os resultados de outros algoritmos são posteriormente processados ​​pelos resultados de ue(v).

A palavra-código de ue(v) é dividida em três partes: [prefixo] + 1+ [surfixo]

[prefixo] é n 0s consecutivos.

[surfix] é o bit de informação que representa o valor real e seu comprimento é o mesmo que [prefix].

[prefix] e [surfix] são determinados pelo valor do elemento de código.

A figura abaixo mostra os diferentes valores da codificação Columbus e o tamanho do bit ocupado após a codificação:

Codificação Colombo Exponencial Sem Sinal: Método de Codificação ue(v)

Fórmula de cálculo: (LeadingZeroBits: quantos zeros estão na frente)

Dois, perceba

1. A partir desta conclusão, a realização da codificação Columbus exponencial sem sinal pode ser dividida nas quatro etapas a seguir

 2. Exemplos

código_num

tmp1:

código_num + 1

tmp2: Número de bits de registro binário convertidos: M

tmp3: [prefixo] precisa inserir 0 números (M-1)

Palavra de código

0 1 1 0 1
1 2 10 1 010
2 3 11 1 011
3 4 100 2 00100
4 5 101 2 00101
5 6 110 2 00110
6 7 111 2 00111
7 8 1000 3 0001000
8 9 1001 3 0001001

Disposição do processo de implementação da codificação X264: 

3. Exemplo

Pegue o fluxo de código do SPS acima como exemplo: 

00 00 00 01 67 4D 00 29                       

código inicial nalutype=7 sps profileidc=0x4D=77=nível do perfil principal idc=0x29=41=4.1

8D 8D 40 3C 

seq_parameter_set_id: ue(v) (análise 8D é 10001101) o primeiro 1bit é seq_parameter_set_id, de acordo com a tabela 2.2 acima, sabemos que seq_parameter_set_id é 0.

log2_max_frame_num_minus4: ue(v) (análise 8D é 0001101) conforme mostrado abaixo, log2_max_frame_num_minus4 deve ser 12

código_num

tmp1:

código_num + 1

tmp2: Número de bits de registro binário convertidos: M

tmp3: [prefixo] precisa inserir 0 números (M-1)

Palavra de código

12 13 1101 3 0001101

pic_order_cnt_type: ue(v) (análise 8D é 10001101) o primeiro 1 bit é pic_order_cnt_type=0

log2_max_pic_order_cnt_lsb_minus4: ue(v) analisando 8D é 0001101) é 12

num_ref_frames: ue(v) (parse 40 to 01000000): 1

gaps_in_frame_num_value_allowed_flag:u(1):为0

pic_width_in_mbs_minus1: ue(v) (analisar 0x03C01: 0000 0011 1100 0 000 0001)

código_num

tmp1:

código_num + 1

tmp2: Número de bits de registro binário convertidos: M

tmp3: [prefixo] precisa inserir 0 números (M-1)

Palavra de código

119 120 111 1000 6 0000 0011 1100 0

01 13 

pic_height_in_map_units_minus1: ue(v) (analisando 0x0113:  000 0001 0001 00 11) é 67

código_num

tmp1:

código_num + 1

tmp2: Número de bits de registro binário convertidos: M

tmp3: [prefixo] precisa inserir 0 números (M-1)

Palavra de código

67 68 100 0100 6 0000 00 01 0001 00

frame_mbs_only_flag:u(1) bit1为1

direct_8x8_inference_flag:u(1) bit1为1

F2C

frame_cropping_flag: u(1) (análise 0xF2: 1 111 0010) bit1 é 1

frame_crop_left_offset: ue(v) (análise 0xF2:1 1 11 0010) bit1 é 0

frame_crop_right_offset: ue(v) (análise 0xF2:11 1 1 0010) bit1 é 0

frame_crop_top_offset: ue(v) (análise 0xF2:111 1 0010) bit1 é 0

frame_crop_bottom_offset: ue(v) (analisando 0x2C: 0010 1 100) é 4

vui_parameters_present_flag: u(1) (analisar 0x2C: 0010 1 1 00) é TRUE

O seguinte precisa resolver as informações VUI

aspect_ratio_info_present_flag: u(1) (analisar 0x2C: 0010 11 0 0) é falso

overscan_info_present_flag: u(1) (analisar 0x2C: 0010 110 0 ) é falso

D C0 40 40 5

video_signal_type_present_flag: u(1) (analisar 0XDC: 1 101 1100) é verdadeiro.

video_format:u(3) (parse 0xdc: 1 101 1100) é 5
video_full_range_flag:u(1) (parse 0xdc 1101 1 100) é verdadeiro
colour_description_present_flag:u(1) (parse 0xdc 1101 1 1 00) é verdadeiro

colour_primaries:u(8) (analisar 0xc040: 11 00 0000 01 00 0000) é 1
transfer_characteristics:u(8) (analisar: 0x4040: 01 00 0000 01 00 0000) é 1
matriz_coeficientes:u(8) (analisar 0x4050: 01 00 0000 01 01 0000) é 1

chroma_loc_info_present_flag:u(1) (analisando 0x4050:0100 0000 01 0 1 0000) é 0

timing_info_present_flag: u(1) (analisando 0x4050:0100 0000 010 1  0000) é verdadeiro

0000 0BB8 0001 5F90 0400 0000 0 

num_units_in_tick:u(32) 0x 0000 0BB8
time_scale:u(32) 0x 0001 5F90
fixed_frame_rate_flag:u(1):(解析0x0400:0 000 0100 0000 0000)为false。

nal_hrd_parameters_present_flag: u(1) (analisar 0x0400: 0 0 00 0100 0000 0000 ) é falso.
vcl_hrd_parameters_present_flag: u(1) (analisar 0x0400: 00 0 0 0100 0000 0000 ) é falso.
pic_struct_present_flag: u(1) (analisar 0x0400: 000 0 0100 0000 0000 ) é falso.
bitstream_restriction_flag: u(1) (analisar 0x0400: 0000 0 100 0000 0000 ) é falso.

Seguido por trailing_bits()

rbsp_stop_one_bit: f(1) (analisar 0x0400: 0000 0 1 00 0000 0000 ) é verdadeiro.

Ele é seguido por bits de preenchimento complementados para alinhamento de bytes.

4. Referência

Codificação H264 - Columbus Parsing SPS Information - Short Book

análise de codificação h264 - Columbus encoding_h264 Columbus encoding_fantasy_arch's blog-CSDN blog

Codificação de entropia H.264 (três) e codificação exponencial de Columbus_13257193's blog técnico_51CTO blog

H.264 (quatro) Codificação Exponencial Columbus (codificação)_13257193's blog técnico_51CTO blog

Acho que você gosta

Origin blog.csdn.net/CrystalShaw/article/details/129388266
Recomendado
Clasificación