在前面的文章檔次、層、級別中已經介紹過級別(level),H.265共定義了13個級別,1 2 2.1 3 3.1 4 4.1 5 5.1 5.2 6 6.1 6.2。那麼如何選擇level呢?
官方參考序列的配置文件已經爲我們寫好了level等參數,如果我們要使用自己的序列那麼如何設置level呢?
級別(Level)是用來約束 分辨率、幀率 和 碼率 的。如下圖所示:
Max Luma Picture Size(samples)表示每幀亮度分量的像素數。
Max Luma Sample Rate(samples/s)表示每秒的亮度像素數。
如何通過分辨率和幀率推斷level?
每個level下,圖像的寬和高都要小於等於,避免圖像形狀過於極端引起解碼問題。
例如480P(832x480)視頻,每幀亮度分量的像素數=832x480=399360,由上表可知其level必須在3以上,如果幀率爲60,每秒的亮度像素數=832x480x60=23961600,所有其level爲3.1或以上。
例如720P(1280x720)視頻,每幀亮度分量的像素數=1280x720=921600,由上表可知其level必須在3.1以上。當level爲4時,其幀率至少爲66846720/921600=72.5。可以看到,下面的配置文件滿足這個要求。
#======== File I/O ===============
InputFile : ../../origCfP/Johnny_1280x720_60.yuv
InputBitDepth : 8 # Input bitdepth
InputChromaFormat : 420 # Ratio of luminance to chrominance samples
FrameRate : 60 # Frame Rate per second
FrameSkip : 0 # Number of frames to be skipped in input
SourceWidth : 1280 # Input frame width
SourceHeight : 720 # Input frame height
FramesToBeEncoded : 600 # Number of frames to be coded
Level : 4
最大存儲幀數、DPB
最大存儲幀數與DPB有關——DPB:decoded picture buffer,解碼圖片緩存區。在做視頻解碼時,需要將最近的若干幅參考幀緩存起來,這個緩衝區就叫做DPB。所以最大存儲幀數也是最大參考幀數(ref)。
當DPB中的圖像達到了該level下最大尺寸,則DPB只能存放6幀圖像。如果DPB中的圖像小於該level下最大尺寸,則DPB至多能存放16幀圖像(取決於圖像尺寸)。
level還限制了每幀圖像水平和垂直方向最大tile數量,以及每秒最大tile數。
感興趣的請關注微信公衆號Video Coding