Apprentissage HEVC HM 02

Dans cette section, nous allons découvrir les différents modes d'encodage et leurs significations de paramètres dans le fichier cfg :
insérez la description de l'image ici

1. cfg_HDR :

insérez la description de l'image ici
L'imagerie à plage dynamique élevée (en anglais : imagerie à plage dynamique élevée, appelée HDRI ou HDR), en infographie et en cinématographie, est utilisée pour obtenir une plage dynamique d'exposition plus large (c'est-à-dire une plus grande différence entre la lumière et l'obscurité) que le numérique ordinaire. la technologie de l'image un ensemble de technologies. L'objectif de l'imagerie à plage dynamique élevée est de représenter correctement la large gamme de luminosité réelle, de la lumière directe du soleil aux ombres les plus sombres. On peut voir dans le fichier de configuration que sa profondeur de bits est de 12, et ce n'est que pour comprendre pour le moment.

Deux, divers

misc est en fait les quatre premières lettres de divers en anglais, ce qui signifie divers, mixte, méli-mélo, sauter
insérez la description de l'image ici

三、par séquence

Placez le fichier d'information média de la séquence de test officielle :
insérez la description de l'image ici
tel que BasketballDrill.cfg :

#======== File I/O ===============
InputFile              : BasketballDrill_832x480_50.yuv 文件名
InputBitDepth          : 8           # 输入的位深度
InputChromaFormat      : 420         # YUV420采样
FrameRate              : 50          # 帧率
FrameSkip              : 0           # 输入跳过的帧数
SourceWidth            : 832         # 宽
SourceHeight           : 480         # 高
FramesToBeEncoded      : 500   # 要编码的帧数

Level                  : 3.1   #这啥?
Profile:指定码流的profile。取值有:main main10 main-still-picture main-RExt, high-throughput-RExt, main-SCC,等等。
Level:指定码流的level。取值:none、1, 2, 2.1, 3, 3.1, 4, 4.1, 5, 5.1, 5.2, 6, 6.1, 6.2, 8.5

4. SEI

insérez la description de l'image ici

Informations d'amélioration supplémentaires Informations d'amélioration supplémentaires, je ne comprends pas, sautez à nouveau QAQ

Cinq, d'autresinsérez la description de l'image ici

La principale différence entre main et mian10 est que le profil et la profondeur de bits interne sont différents. Intra signifie qu'il s'agit uniquement d'un codage d'images I, un faible retard et un faible retard_p signifie que seule la première image est un codage d'images I, et les autres sont toutes des codages d'images P ou B. Randomaccess représente une structure de trame de lot B, insérant périodiquement des trames d'accès aléatoire, rext est une extension de plage et un débit élevé est un débit élevé.
En combinant ce qui précède, par exemple, encoder_intra_main10.cfg est le mode de codage intra-trame dont le profil est main10.

profil est une description des caractéristiques de compression de la vidéo, se référant spécifiquement aux algorithmes de codage et aux outils de codage utilisés dans le flux de code

HEVC prend en charge trois profils (profil principal), le profil principal 10 bits (profil principal 10) et le profil principal d'image fixe (profil principal fixe). La relation entre eux est illustrée dans la figure ci-dessous. Le profil de couche peut être compatible avec le niveau de la couche intérieure
insérez la description de l'image ici
Les caractéristiques du profil principal (profil moyen)

Profondeur de bits limitée à 8 bits

Format d'échantillonnage limité à 4:2:0

Taille CTB de 16*16 à 64*64

La capacité du cache des images décodées est limitée à 6 images

Il est permis de choisir la méthode de division du front d'onde et de la tranche, mais pas en même temps

Caractéristiques du profil principal 10 bits (profil principal 10)

Les fonctionnalités principales sont similaires au profil principal, mais la différence est qu'il peut prendre en charge
les fonctionnalités de qualité d'image fixe de profondeur 10 bits (profil fixe principal)

Les principales caractéristiques sont similaires au profil principal, mais la différence est qu'il ne prend pas en charge le codage prédictif inter-images et que l'intégralité du flux de code de la vidéo ne peut être codée que dans une seule image.

Référence : https://blog.csdn.net/weixin_45615071/article/details/105460401

En mode intra uniquement

, toutes les images à encoder sont considérées comme des images IDR et encodées par prédiction intra-trame. Il n'y a pas d'image de référence temporelle. Et le QP dans l'image ne changera pas. La figure ci-dessous est un diagramme schématique du codage en mode intra uniquement, et les chiffres sur l'image représentent l'ordre de codage
insérez la description de l'image ici

#======== File I/O =====================输入输出文件

BitstreamFile                 : str.bin  
ReconFile                     : rec.yuv 

#======== Unit definition ================单元定义(应该是指LCU)

MaxCUWidth            : 64 # Maximum coding unit width in pixel
                           #最大编码单元LCU的宽
                           
MaxCUHeight           : 64 # Maximum coding unit height in pixel
                           #最大编码单元LCU的高
                           
MaxPartitionDepth     : 4  # Maximum coding unit depth
           #最大深度4,深度范围[0123],对应的尺寸为64X64到8X8
           
QuadtreeTULog2MaxSize  : 5 # Log2 of maximum transform size for
                    # quadtree-based TU coding (2...6)Log2(32)=5

QuadtreeTULog2MinSize  : 2 # Log2 of minimum transform size for
                  # quadtree-based TU coding (2...6)Log2(4)=2

QuadtreeTUMaxDepthInter : 3 (帧间TU最大深度)

QuadtreeTUMaxDepthIntra : 3
 
#======== Coding Structure =============编码结构

IntraPeriod          : 1  # Period of I-Frame ( -1 = only first)

DecodingRefreshType  : 0  # Random Accesss 0:none, 1:CDR, 2:IDR

 Random Accesss :解码更新类型,即随机接入类型

GOPSize               : 1  # GOP Size (number of B slice =           #GOPSize-1),图像组大小

#        Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2  temporal_id #ref_pics_active #ref_pics reference pictures 

 

#=========== Motion Search =============运动搜索

FastSearch           : 1 # 0:Full search  1:TZ search
                         #快速搜索类型,0:全搜索;1:TZ搜索

SearchRange          : 64   # (0: Search range is a Full frame)
                            #搜索的范围

HadamardME        :1 # Use of hadamard measure for fractional ME
                     #fractional ME分数(像素位置)运动估计

FEN     : 1 # Fast encoder decision   快速编码器决策

FDM     : 1  # Fast Decision for Merge RD cost  快速合并RD代价决策

#======== Quantization =============量化

QP      : 32      # Quantization parameter(0-51)量化参数范围:051

MaxDeltaQP  : 0  # CU-based multi-QP optimization基于CU的多QP优化

MaxCuDQPDepth : 0   # Max depth of a minimum CuDQP for sub-LCU-level delta QP

DeltaQpRD     : 0    # Slice-based multi-QP optimization
                     #基于片的多QP优化
                     
RDOQ          : 1     # RDOQ率失真优化量化

RDOQTS        : 1     # RDOQ for transform skip
                      #变换跳过的率失真优化量化 

#=========== Deblock Filter ============去块滤波

DeblockingFilterControlPresent: 0      # Dbl control params   #present (0=not present, 1=present) Db1控制是否使用去块滤波器

LoopFilterOffsetInPPS         : 0           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1=constant params in PPS, param = base_param)

LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)

LoopFilterBetaOffset_div2     : 0           # base_param: -13 ~ 13

LoopFilterTcOffset_div2       : 0           # base_param: -13 ~ 13

 

#=========== Misc. ============

InternalBitDepth       : 8    # codec operating bit-depth
#编解码控制比特深度,表示主要档次,即MAIN

 

#=========== Coding Tools =================编码工具

SAO                           : 1           # Sample adaptive offset  (0: OFF, 1: ON)  率样点自适应偏移

AMP                           : 1           # Asymmetric motion partitions (0: OFF, 1: ON) 非对称运动分割

TransformSkip                 : 1           # Transform skipping (0: OFF, 1: ON)

TransformSkipFast             : 1           # Fast Transform skipping (0: OFF, 1: ON)

SAOLcuBoundary                : 0           # SAOLcuBoundary using non-deblocked pixels (0: OFF, 1: ON) 

SAOLCU边界像素用未经过去块滤波操作的像素值表示

 

#============ Slices ================

SliceMode                : 0                # 0: Disable all slice options.

                                            # 1: Enforce maximum number of LCU in an slice,

                                            # 2: Enforce maximum number of bytes in an 'slice'

                                            # 3: Enforce maximum number of tiles in a slice

SliceArgument            : 1500             # Argument for 'SliceMode'.

                                            # If SliceMode==1 it represents max. SliceGranularity-sized blocks per slice.

                                            # If SliceMode==2 it represents max. bytes per slice.

                                            # If SliceMode==3 it represents max. tiles per slice.

 

LFCrossSliceBoundaryFlag : 1                # In-loop filtering, including ALF and DB, is across or not across slice boundary.

ALF与DB两个滤波器在片边界是否相交

                                            # 0:not across, 1: across

 

#============ PCM ================ PCM模式

PCMEnabledFlag                      : 0                # 0: No PCM mode

PCMLog2MaxSize                      : 5                # Log2 of maximum PCM block size.

PCMLog2MinSize                      : 3                # Log2 of minimum PCM block size.

PCM块最大为32X32,最小为8X8

PCMInputBitDepthFlag                : 1                # 0: PCM bit-depth is internal bit-depth. 1: PCM bit-depth is input bit-depth.

PCMFilterDisableFlag                : 0                # 0: Enable loop filtering on I_PCM samples. 1: Disable loop filtering on I_PCM samples.

 

#============ Tiles ================

UniformSpacingIdc                   : 0                # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated by RowHeight array

Tiles的列边界由列宽数组决定

                                                       # 1: the column and row boundaries are distributed uniformly

NumTileColumnsMinus1                : 0                # Number of columns in a picture minus 1

ColumnWidthArray                    : 2 3              # Array containing ColumnWidth values in units of LCU (from left to right in picture)   

NumTileRowsMinus1                   : 0                # Number of rows in a picture minus 1

RowHeightArray                      : 2                # Array containing RowHeight values in units of LCU (from top to bottom in picture)

 

LFCrossTileBoundaryFlag           : 1                  # In-loop filtering is across or not across tile boundary.

                                                       # 0:not across, 1: across 

 

#============ WaveFront ================波前

WaveFrontSynchro                    : 0                # 0:  No WaveFront synchronisation (WaveFrontSubstreams must be 1 in this case).

波前并行处理同步

                                                       # >0: WaveFront synchronises with the LCU above and to the right by this many LCUs.

 

#=========== Quantization Matrix =================量化矩阵

ScalingList                   : 0                      # ScalingList 0 : off, 1 : default, 2 : file read

ScalingListFile               : scaling_list.txt       # Scaling List file name. If file is not exist, use Default Matrix.

 

#============ Lossless ================失真

TransquantBypassEnableFlag: 0  # Value of PPS flag.

CUTransquantBypassFlagValue: 0 # Constant lossless-value signaling per CU, if TransquantBypassEnableFlag is 1.

                                                       

### DO NOT ADD ANYTHING BELOW THIS LINE ###

### DO NOT DELETE THE EMPTY LINE BELOW ###


Son GOPSize est 1, tous sont des images I

Configuration à faible retard

Low-delay a deux modes, low-delay P et low-delay B. Pour le mode à faible retard, la première image de trame est une image IDR. En mode P à faible retard, toutes les images sauf la première sont des images P. En mode B à faible retard, toutes les images sauf la première sont des images B. Pour les deux modes, qu'il s'agisse d'une image P ou d'une image B, il se réfère uniquement à l'image qui la précède dans l'ordre de lecture. Et dans le mode B à faible retard, les listes d'images de référence RefPicList0 et RefPicList1 sont les mêmes. Le QP de chaque image prédite inter-trame consiste à ajouter une valeur de compensation au QP de l'image intra-trame, et la valeur de compensation est déterminée par la couche temporelle où elle se trouve.

La figure ci-dessous est un diagramme schématique de l'encodage en mode Low-delay, et les nombres sur l'image représentent l'ordre d'encodage.
insérez la description de l'image ici

Configuration à accès aléatoire

En mode d'accès aléatoire, une structure B hiérarchique est utilisée pour le codage. La figure ci-dessous est un diagramme schématique du codage en mode d'accès aléatoire, et les nombres sur l'image représentent l'ordre de codage.
insérez la description de l'image ici
Une image I est codée à un certain intervalle, et l'intervalle est déterminé par l'élément de configuration IntraPeriod. Généralement, il est configuré comme une image I par seconde selon la fréquence d'images. La première image I est une image IDR et les autres images I sont des images non IDR (Open GOP). Les images dont l'ordre d'affichage se situe entre des images I consécutives sont codées comme des images B.

L'image d'inter-prédiction (GPB) au niveau de la couche la plus basse dans le domaine temporel peut faire référence à une image intra-trame ou à une image inter-trame. Les deuxième et troisième couches temporelles sont constituées d'images B référencées. La couche temporelle la plus élevée ne contient que des images d'image B non référencées. Le QP de chaque image prédite inter-trame consiste à ajouter une valeur de compensation au QP de l'image intra-trame, et la valeur de compensation est déterminée par la couche temporelle où elle se trouve.

Référence : https://blog.csdn.net/Dillon2015/article/details/104212995/

Guess you like

Origin blog.csdn.net/qq_42567607/article/details/125179061