1. 编码参数
1.1 File I/O and Source parameters
文件、输入输出和源参数
InputFile:
指定输入的视频文件(必须是原始的 4:2:2 或 4:2:0 二维(planar)格式、4:4:4 二维格式(YCbCr RGB 或 BGR)或是单通道 4:0:0 格式。
注:当视频中的采样位深度大于 8 比特时,每个采样点的采样位深度将被2字节(16bit)编码。
位深度:每个像素点的单个通道的值用多少比特位进行表示。例如,我们常用的位深度为 8bit,说明像素点的一个通道的值用8个比特位表示,可表示 0 0 0~ 2 8 − 1 2^8-1 28−1 的数,即 0~255。
InputPathPrefix:
指定一个字符串,这个字符串将加在输入视频文件名的前面。(即指定视频文件的路径)
BitstreamFile:
- 默认为 str.bin
指定输出的编码后的二进制文件名
ReconFile:
- 默认为 rec.yuv
指定输出到本地的重新构造的视频文件
SourceWidth SourceHeight
- 默认为0
指定输入视频亮度(luma)采样的宽和高(即图像的宽和高)
为什么亮度采样的宽和高是图像的宽和高?
首先我们知道,原始图像使用的颜色空间通常为yuv,其中 y为亮度(luma)、u,v为色度(chroma)。在编码时,我们会有很多种采样方法,其中有些方法会对色度进行阉割,但任何一种方法都不会阉割亮度。(因为人眼对亮度感受会比对颜色的感受敏感得多)因此亮度采样的宽高等价于图像的宽高。
InputBitDepth
- 默认为8
指定输入视频的比特深度。
MSBExendedBitDepth:
- 默认为0
扩展输入视频的比特深度,并在扩展出来的最高有效位(Most Significant Byte MSB)填0。如果值为0,则不会进行扩展,并使用 InputBitDepth 作为比特深度。
该参数将在后续的子序列处理中作用于 InputBitDepth。(即在后续的处理中比特深度会被这个参数修改)
InternalBitDepth
- 默认为0
指定应用于编码的比特深度。为0时,则会设置为 MSBExtendedBitDepth 的值。
如果输入的视频的比特深度跟 InternalBitDepth 不同,则输入视频的比特深度会通过以下公式进行自动转换:
⌊
P
e
l
∗
2
I
n
t
e
r
n
a
l
B
i
t
D
e
p
t
h
2
M
S
B
E
x
t
e
n
d
e
d
B
i
t
D
e
p
t
h
⌋
\lfloor\frac{Pel*2^{InternalBitDepth}}{2^{MSBExtendedBitDepth}}\rfloor
⌊2MSBExtendedBitDepthPel∗2InternalBitDepth⌋
注:这个选项的作用是当输入的视频从外部被转换成了 MSBExtendedBitDepth 并之后转换成了 InternalBitDepth, 再之后按照这个参数(InternalBitDepth)进行编码,同时作为 InputBitDepth 的值。
OutputBitDepth
- 默认为0
指定输出到本地的重新构造的文件的比特深度。当值为 0 时,该参数的值将会设置成和 InternamBitDepth 一致。注:该选项在解码中不起作用。
InputBitDepthC MSBExtendedBitDepthC InternalBitDepthC OutputBitDepthC
- 这里的C指的是 chroma 色度
- 默认值均为0
为色度组成元素指定多项比特深度。只有当亮度(luma)和色度(chroma)的比特深度不相同时,在进行处理的时候需要进行指定。当取值为0时,该值将设置为相应的非色度值(亮度的比特深度 or 0?)
InputColourSpaceConvert
应用于输入视频的颜色空间转换。允许的值有: UNCHANGED(保持原来的颜色空间)、YCbCrToYCrCb(交换第二通道和第三通道)、YCbCrtoYYY(将第二第三通道的值改为与第一通道一致)、RGBtoGBR(重排列三个通道)。
如果没有指定值,则不会进行颜色空间转换(相当于 UNCHANGED )。允许的值最终可能也会包括从 RGB 到 YCbCr 或 YCgCo 的转换。
SNRInternalColourSpace:
- (默认值为false):
如果设置为 true,则在 PSNR 计算之前不会进行颜色空间转换。
PSNR: 一种评价图像的客观标准。具体见百度百科
OutputInternalColourSpace
- 默认值为false
当设为 true 时,在输出的重构视频中不会进行颜色空间转换。
InputChromaFormat
- 默认值为420
指定输入文件的色度格式(chroma format),允许的取值为: 400、420、422、444.
ChromaFormatIDC:
- 默认值为0
指定处理时使用的色度格式。允许的取值为: 400、420、422、444. 0表示使用 InputChromaFormat 的值取代
MSEBasedSequencePSNR
- 默认为 false
当设置为 0 时,PSNR 算法的输出是 PSNR 帧的线性平均值;设置为1时,附加的 PSNR 是由所有帧的平均均方误差(MSE)形成的输出。后者在近乎无损(near-losslessly)的编码中更加有用,偶然的帧会被认为是无损的。
PrintHexPSNR
- 默认值为 false
当设为1时,每个 POC 将包括一个 64 位的十六进制数,用于表示每个通道的 PSNR 值。这将允许一些类型的评估将被拆分成多个子评估,并且之后的评估结果将被无损地拼接起来。
POC: 在 GOP 内所有帧的展示顺序,范围从1~GOPSize
PrintFrameMSE
- 默认值为 false
当设为1时,每一帧的均方误差(MSE)将会被跟随着默认的 PSNR 值一起输出。
PrintSequenceMSE
- 默认值为 false
当设为1时,整个序列的均方误差(MSE)将会被跟随者默认的 PSNR 值一起输出。
PrintMSSSIM
- 默认值为 false
当设为1时,多尺度结构相似性(MS-SSIM)也会随着 PSNR 的值输出
MS-SSIM: 一种图像质量评估方式,详见这篇博客
xPSNREnableFlag
- 默认值为 false
当设为1时,交叉组成 PSNR 将会被计算,使用参数 xPSNRYWeight、xPSNRCbWeight 和 xPSNRCrWeight 提供的权重。
xPSNRYWeight xPSNRCbWeight xPSNRCrWeight
- 默认值均为 1.0
指定 Y/Cb/Cr 的 xPSNR 权重
SummaryOutFilename
- 默认为 false
指定用于生成总结输出文件(summary output file)的文件名。如果为空,则不生成文件
SummaryPicFilenameBase
- 默认值为 false
用于生成概要图片输出的基本文件名。实际的文件名为 I.txt P.txt 和 B.txt。如果为空,则不生成文件。
SummaryVerboseness
- 默认值为 false
指定输出文本的冗长等级。
CabacZeroWordPaddingEnable
- 默认值为 false
当设为1时,自适应二进制编码(CABAC)的0字节填充段将会被启用。这不是当前的默认设置值。
ConformanceWindowMode
- 默认值为 0
指定如何解释与一致性窗口(conformance window)相关的参数(裁剪(cropping)/填充(padding))。以下的模式是被允许的:
0: 没有裁剪/填充
1: 自动填充到下一个 CU 的最小大小
2: 依据 HorizontalPadding 和 VerticalPadding 参数进行填充
3: 依据 ConfWinLeft ConfWinRight ConfWinTop 和 ConfWinBottom 蚕食进行裁剪。
HorizontalPadding VerticalPadding
- 默认值均为 0
当 ConformanceWindowMode 为 2 时,用于指定输入视频的亮度采样的水平和垂直填充。必须是色度分辨率(chroma resolution)的整数倍。(例如,对于 4:2:0 来说,luma的分辨率是chroma的2倍)
ConfWinLeft ConfWinRight ConfWinTop ConfWinBottom
- 默认值均为0
当 ConformanceWindowMode 为 3 时,用于指定输入视频的亮度采样的水平和垂直裁剪。必须是色度分辨率(chroma resolution)的整数倍。(例如,对于 4:2:0 来说,luma的分辨率是chroma的2倍)
FrameRate
- 默认值为 0
指定输入视频的帧率
注:该选项只会影响报告的比特率
FrameSkip
- 默认值为 0
指定在输入视频文件开始时跳过的帧的数量
FrameToBeEncoded
- 默认值为 0
指定需要被编码的帧数。如果为0,则所有的帧都会被编码。
TemporalSubsampleRatio
- 默认值为 1
对输入的视频序列进行时间次采样(temporally subsample)。取值为 N 时会在每一帧编码完成后跳过输入视频文件的 N-1 张图片。注:FrameToBeEncoded 并不会影响此参数,这意味着编码的帧数将会减少。最终报告的比特率会减少,并且视频可用信息(Video Usability Information VUI)将会发生改变,以表示视频正确的速度。该参数的最小值和默认值均为 1。
FieldCoding
- 默认值为 false
当设置为 1 时,表示将采用场编码(field-based coding)
场编码:参考这个博客
TopFieldFirst
- 默认值为 0
指明装入输入帧的场的顺序。当设置为1时,顶场(top field 也可能是顶层字段)将成为时间上的(temporally)第一个
ClipInputVideoToRec709Range
- 默认值为 0
如果设置为1,当 InternalBitDepth 的值小于 MSBExtendedBitDepth 时,则将在载入时将输入视频修剪(文档里用的动词是 clip)为 Rec. 709 格式范围
Rec. 709: 一种色彩标准。详见百度百科
ClipOutputVideoToRec709Range
- 默认值为0
如果设置为1,当 InternalBitDepth 的值小于 MSBExtendedBitDepth 时,则将在保存输出视频时将输出视频修剪为 Rec. 709 格式范围
EfficientFirldRAPEnabled
- 默认值为1
允许以特定的、可能更高效的顺序编码字段。
HarmonizeGopFirstFieldCoupleEnabled
- 默认值为1
激活第一场对的 GOP 协调(homonization)
因为这一段话不是很理解,我把原文放在这里。如果有更好的解释希望能够交流一下~
Enables harmonization of Gop first field couple.
AccessUnitDelimiter
- 默认值为 0
在所有接入单元(Access Unit)之间添加访问单元分隔符NAL单元(Access Unit Delimiter NAL)
Access Unit: 一帧图像就是一个 Access unit. 详见这篇博客
访问单元分隔符(AUD): 详见这篇博客
NAL(网络抽象层): 详见百度百科
NALU: NAL-unit。 NAL 运算单元