Files
jm/bin/encoder_baseline.cfg
T

377 lines
26 KiB
INI

# New Input File Format is as follows
# <ParameterName> = <ParameterValue> # Comment
#
# See configfile.h for a list of supported ParameterNames
#
# For bug reporting and known issues see:
# https://ipbt.hhi.fraunhofer.de
##########################################################################################
# Files
##########################################################################################
InputFile = "foreman_part_qcif.yuv" # Input sequence
InputHeaderLength = 0 # If the inputfile has a header, state it's length in byte here
StartFrame = 0 # Start frame for encoding. (0-N)
FramesToBeEncoded = 3 # Number of frames to be coded
FrameRate = 30.0 # Frame Rate per second (0.1-100.0)
SourceWidth = 176 # Source frame width
SourceHeight = 144 # Source frame height
SourceResize = 0 # Resize source size for output
OutputWidth = 176 # Output frame width
OutputHeight = 144 # Output frame height
TraceFile = "trace_enc.txt" # Trace file
ReconFile = "test_rec.yuv" # Reconstruction YUV file
OutputFile = "test.264" # Bitstream
StatsFile = "stats.dat" # Coding statistics file
##########################################################################################
# Encoder Control
##########################################################################################
ProfileIDC = 66 # Profile IDC (66=baseline, 77=main, 88=extended; FREXT Profiles: 100=High, 110=High 10, 122=High 4:2:2, 244=High 4:4:4, 44=CAVLC 4:4:4 Intra)
IntraProfile = 0 # Activate Intra Profile for FRExt (0: false, 1: true)
# (e.g. ProfileIDC=110, IntraProfile=1 => High 10 Intra Profile)
LevelIDC = 40 # Level IDC (e.g. 20 = level 2.0)
IntraPeriod = 0 # Period of I-pictures (0=only first)
IDRPeriod = 0 # Period of IDR pictures (0=only first)
AdaptiveIntraPeriod = 1 # Adaptive intra period
AdaptiveIDRPeriod = 0 # Adaptive IDR period
IntraDelay = 0 # Intra (IDR) picture delay (i.e. coding structure of PPIPPP... )
EnableIDRGOP = 0 # Support for IDR closed GOPs (0: disabled, 1: enabled)
EnableOpenGOP = 0 # Support for open GOPs (0: disabled, 1: enabled)
QPISlice = 28 # Quant. param for I Slices (0-51)
QPPSlice = 28 # Quant. param for P Slices (0-51)
FrameSkip = 0 # Number of frames to be skipped in input (e.g 2 will code every third frame).
# Note that this now excludes intermediate (i.e. B) coded pictures
ChromaQPOffset = 0 # Chroma QP offset (-51..51)
DisableSubpelME = 0 # Disable Subpixel Motion Estimation (0=off/default, 1=on)
SearchRange = 32 # Max search range
MEDistortionFPel = 0 # Select error metric for Full-Pel ME (0: SAD, 1: SSE, 2: Hadamard SAD)
MEDistortionHPel = 2 # Select error metric for Half-Pel ME (0: SAD, 1: SSE, 2: Hadamard SAD)
MEDistortionQPel = 2 # Select error metric for Quarter-Pel ME (0: SAD, 1: SSE, 2: Hadamard SAD)
MDDistortion = 2 # Select error metric for Mode Decision (0: SAD, 1: SSE, 2: Hadamard SAD)
SkipDeBlockNonRef = 0 # Skip Deblocking (regardless of DFParametersFlag) for non-reference frames (0: off, 1: on)
ChromaMCBuffer = 1 # Calculate Color component interpolated values in advance and store them.
# Provides a trade-off between memory and computational complexity
# (0: disabled/default, 1: enabled)
ChromaMEEnable = 0 # Take into account Color component information during ME
# (0: only first component/default,
# 1: All Color components - Integer refinement only
# 2: All Color components - All refinements)
ChromaMEWeight = 1 # Weighting for chroma components. This parameter should have a relationship with color format.
NumberReferenceFrames = 5 # Number of previous frames used for inter motion search (0-16)
PList0References = 0 # P slice List 0 reference override (0 disable, N <= NumberReferenceFrames)
Log2MaxFNumMinus4 = 0 # Sets log2_max_frame_num_minus4 (-1 : based on FramesToBeEncoded/Auto, >=0 : Log2MaxFNumMinus4)
Log2MaxPOCLsbMinus4 = -1 # Sets log2_max_pic_order_cnt_lsb_minus4 (-1 : Auto, >=0 : Log2MaxPOCLsbMinus4)
GenerateMultiplePPS = 0 # Transmit multiple parameter sets. Currently parameters basically enable all WP modes (0: diabled, 1: enabled)
SendAUD = 0 # Send Access Delimiter Unit NALU (for every access unit)
ResendSPS = 2 # Resend SPS (0: disabled, 1: all Intra pictures, 2: only for IDR, 3: for IDR and OpenGOP I)
ResendPPS = 0 # Resend PPS (with pic_parameter_set_id 0) for every coded Frame/Field pair (0: disabled, 1: enabled)
MbLineIntraUpdate = 0 # Error robustness(extra intra macro block updates)(0=off, N: One GOB every N frames are intra coded)
RandomIntraMBRefresh = 0 # Forced intra MBs per picture
##########################################################################################
# PSlice Mode types
##########################################################################################
PSliceSkip = 1 # P-Slice Skip mode consideration (0=disable, 1=enable)
PSliceSearch16x16 = 1 # P-Slice Inter block search 16x16 (0=disable, 1=enable)
PSliceSearch16x8 = 1 # P-Slice Inter block search 16x8 (0=disable, 1=enable)
PSliceSearch8x16 = 1 # P-Slice Inter block search 8x16 (0=disable, 1=enable)
PSliceSearch8x8 = 1 # P-Slice Inter block search 8x8 (0=disable, 1=enable)
PSliceSearch8x4 = 1 # P-Slice Inter block search 8x4 (0=disable, 1=enable)
PSliceSearch4x8 = 1 # P-Slice Inter block search 4x8 (0=disable, 1=enable)
PSliceSearch4x4 = 1 # P-Slice Inter block search 4x4 (0=disable, 1=enable)
DisableIntra4x4 = 0 # Disable Intra 4x4 modes
DisableIntra16x16 = 0 # Disable Intra 16x16 modes
DisableIntraInInter = 0 # Disable Intra modes for inter slices
IntraDisableInterOnly = 0 # Apply Disabling Intra conditions only to Inter Slices (0:disable/default,1: enable)
Intra4x4ParDisable = 0 # Disable Vertical & Horizontal 4x4
Intra4x4DiagDisable = 0 # Disable Diagonal 45degree 4x4
Intra4x4DirDisable = 0 # Disable Other Diagonal 4x4
Intra16x16ParDisable = 0 # Disable Vertical & Horizontal 16x16
Intra16x16PlaneDisable = 0 # Disable Planar 16x16
ChromaIntraDisable = 0 # Disable Intra Chroma modes other than DC
EnableIPCM = 1 # Enable IPCM macroblock mode
DisposableP = 0 # Enable Disposable P slices in the primary layer (0: disable/default, 1: enable)
DispPQPOffset = 0 # Quantizer offset for disposable P slices (0: default)
PreferDispOrder = 1 # Prefer display order when building the prediction structure as opposed to coding order (affects intra and IDR periodic insertion, among others)
PreferPowerOfTwo = 0 # Prefer prediction structures that have lengths expressed as powers of two
FrmStructBufferLength = 16 # Length of the frame structure unit buffer; it can be overriden for certain cases
ChangeQPFrame = 0 # Frame in display order from which to apply the Change QP offsets
ChangeQPI = 0 # Change QP offset value for I_SLICE
ChangeQPP = 0 # Change QP offset value for P_SLICE
ChangeQPB = 0 # Change QP offset value for B_SLICE
ChangeQPSI = 0 # Change QP offset value for SI_SLICE
ChangeQPSP = 0 # Change QP offset value for SP_SLICE
##########################################################################################
# Output Control, NALs
##########################################################################################
OutFileMode = 0 # Output file mode, 0:Annex B, 1:RTP
##########################################################################################
# Picture based Multi-pass encoding
#########################################################################################
RDPictureDecision = 0 # Perform multiple pass coding and make RD optimal decision among them
RDPSliceBTest = 0 # Perform Slice level RD decision between P and B slices.
RDPictureMaxPassISlice = 1 # Max number of coding passes for I slices, valid values [1,3], default is 1
RDPictureMaxPassPSlice = 2 # Max number of coding passes for P slices, valid values [1,6], default is 2
RDPictureMaxPassBSlice = 3 # Max number of coding passes for B slices, valid values [1,6], default is 3
RDPictureFrameQPPSlice = 0 # Perform additional frame level QP check (QP+/-1) for P slices, 0: disabled (default), 1: enabled
RDPictureFrameQPBSlice = 0 # Perform additional frame level QP check (QP+/-1) for B slices, 0: disabled, 1: enabled (default)
RDPictureDeblocking = 0 # Perform another coding pass to check non-deblocked picture, 0: disabled (default), 1: enabled
RDPictureDirectMode = 0 # Perform another coding pass to check the alternative direct mode for B slices, , 0: disabled (default), 1: enabled
##########################################################################################
# Deblocking filter parameters
##########################################################################################
DFParametersFlag = 0 # Configure deblocking filter (0=parameters below ignored, 1=parameters sent)
# Note that for pictures with multiple slice types,
# only the type of the first slice will be considered.
DFDisableRefISlice = 0 # Disable deblocking filter in reference I coded pictures (0=Filter, 1=No Filter).
DFAlphaRefISlice = 0 # Reference I coded pictures Alpha offset div. 2, {-6, -5, ... 0, +1, .. +6}
DFBetaRefISlice = 0 # Reference I coded pictures Beta offset div. 2, {-6, -5, ... 0, +1, .. +6}
DFDisableNRefISlice = 0 # Disable deblocking filter in non reference I coded pictures (0=Filter, 1=No Filter).
DFAlphaNRefISlice = 0 # Non Reference I coded pictures Alpha offset div. 2, {-6, -5, ... 0, +1, .. +6}
DFBetaNRefISlice = 0 # Non Reference I coded pictures Beta offset div. 2, {-6, -5, ... 0, +1, .. +6}
DFDisableRefPSlice = 0 # Disable deblocking filter in reference P coded pictures (0=Filter, 1=No Filter).
DFAlphaRefPSlice = 0 # Reference P coded pictures Alpha offset div. 2, {-6, -5, ... 0, +1, .. +6}
DFBetaRefPSlice = 0 # Reference P coded pictures Beta offset div. 2, {-6, -5, ... 0, +1, .. +6}
DFDisableNRefPSlice = 0 # Disable deblocking filter in non reference P coded pictures (0=Filter, 1=No Filter).
DFAlphaNRefPSlice = 0 # Non Reference P coded pictures Alpha offset div. 2, {-6, -5, ... 0, +1, .. +6}
DFBetaNRefPSlice = 0 # Non Reference P coded pictures Beta offset div. 2, {-6, -5, ... 0, +1, .. +6}
##########################################################################################
# Error Resilience / Slices
##########################################################################################
SliceMode = 0 # Slice mode (0=off 1=fixed #mb in slice 2=fixed #bytes in slice 3=use callback)
SliceArgument = 50 # Slice argument (Arguments to modes 1 and 2 above)
num_slice_groups_minus1 = 0 # Number of Slice Groups Minus 1, 0 == no FMO, 1 == two slice groups, etc.
slice_group_map_type = 0 # 0: Interleave, 1: Dispersed, 2: Foreground with left-over,
# 3: Box-out, 4: Raster Scan 5: Wipe
# 6: Explicit, slice_group_id read from SliceGroupConfigFileName
slice_group_change_direction_flag = 0 # 0: box-out clockwise, raster scan or wipe right,
# 1: box-out counter clockwise, reverse raster scan or wipe left
slice_group_change_rate_minus1 = 85 #
SliceGroupConfigFileName = "sg0conf.cfg" # Used for slice_group_map_type 0, 2, 6
UseRedundantPicture = 0 # 0: not used, 1: enabled
NumRedundantHierarchy = 1 # 0-4
PrimaryGOPLength = 10 # GOP length for redundant allocation (1-16)
# NumberReferenceFrames must be no less than PrimaryGOPLength when redundant slice enabled
NumRefPrimary = 1 # Actually used number of references for primary slices (1-16)
##########################################################################################
# Search Range Restriction / RD Optimization
##########################################################################################
RestrictSearchRange = 2 # restriction for (0: blocks and ref, 1: ref, 2: no restrictions)
RDOptimization = 1 # rd-optimized mode decision
# 0: RD-off (Low complexity mode)
# 1: RD-on (High complexity mode)
# 2: RD-on (Fast high complexity mode - not work in FREX Profiles)
# 3: with losses
I16RDOpt = 0 # perform rd-optimized mode decision for Intra 16x16 MB
# 0: SAD-based mode decision for Intra 16x16 MB
# 1: RD-based mode decision for Intra 16x16 MB
SubMBCodingState = 1 # submacroblock coding state
# 0: lowest complexity, do not store or reset coding state during sub-MB mode decision
# 1: medium complexity, reset to master coding state (for current mode) during sub-MB mode decision
# 2: highest complexity, store and reset coding state during sub-MB mode decision
DistortionSSIM = 0 # Compute SSIM distortion. (0: disabled/default, 1: enabled)
DistortionMS_SSIM = 0 # Compute Multiscale SSIM distortion. (0: disabled/default, 1: enabled)
SSIMOverlapSize = 8 # Overlap size to calculate SSIM distortion (1: pixel by pixel, 8: no overlap)
DistortionYUVtoRGB = 0 # Calculate distortion in RGB domain after conversion from YCbCr (0:off, 1:on)
CtxAdptLagrangeMult = 0 # Context Adaptive Lagrange Multiplier
# 0: disabled (default)
# 1: enabled (works best when RDOptimization=0)
FastCrIntraDecision = 1 # Fast Chroma intra mode decision (0:off, 1:on)
DisableThresholding = 0 # Disable Thresholding of Transform Coefficients (0:off, 1:on)
SkipIntraInInterSlices = 0 # Skips Intra mode checking in inter slices if certain mode decisions are satisfied (0: off, 1: on)
WeightY = 1 # Luma weight for RDO
WeightCb = 1 # Cb weight for RDO
WeightCr = 1 # Cr weight for RDO
##########################################################################################
# Explicit Lambda Usage
##########################################################################################
UseExplicitLambdaParams = 0 # Use explicit lambda scaling parameters (0:disabled, 1:enable lambda weight, 2: use explicit lambda value)
UpdateLambdaChromaME = 0 # Update lambda given Chroma ME consideration
FixedLambdaISlice = 0.1 # Fixed Lambda value for I slices
FixedLambdaPSlice = 0.1 # Fixed Lambda value for P slices
LambdaWeightISlice = 0.65 # scaling param for I slices. This will be used as a multiplier i.e. lambda=LambdaWeightISlice * 2^((QP-12)/3)
LambdaWeightPSlice = 0.68 # scaling param for P slices. This will be used as a multiplier i.e. lambda=LambdaWeightPSlice * 2^((QP-12)/3)
LossRateA = 5 # expected packet loss rate of the channel for the first partition, only valid if RDOptimization = 3
LossRateB = 0 # expected packet loss rate of the channel for the second partition, only valid if RDOptimization = 3
LossRateC = 0 # expected packet loss rate of the channel for the third partition, only valid if RDOptimization = 3
FirstFrameCorrect = 0 # If 1, the first frame is encoded under the assumption that it is always correctly received.
NumberOfDecoders = 30 # Numbers of decoders used to simulate the channel, only valid if RDOptimization = 3
RestrictRefFrames = 0 # Doesnt allow reference to areas that have been intra updated in a later frame.
##########################################################################################
# Additional Stuff
#########################################################################################
UseConstrainedIntraPred = 0 # If 1, Inter pixels are not used for Intra macroblock prediction.
NumberofLeakyBuckets = 8 # Number of Leaky Bucket values
LeakyBucketRateFile = "leakybucketrate.cfg" # File from which encoder derives rate values
LeakyBucketParamFile = "leakybucketparam.cfg" # File where encoder stores leakybucketparams
NumFramesInELayerSubSeq = 0 # number of frames in the Enhanced Scalability Layer(0: no Enhanced Layer)
SparePictureOption = 0 # (0: no spare picture info, 1: spare picture available)
SparePictureDetectionThr = 6 # Threshold for spare reference pictures detection
SparePicturePercentageThr = 92 # Threshold for the spare macroblock percentage
PicOrderCntType = 0 # (0: POC mode 0, 1: POC mode 1, 2: POC mode 2)
########################################################################################
#Rate control
########################################################################################
RateControlEnable = 0 # 0 Disable, 1 Enable
Bitrate = 45020 # Bitrate(bps)
InitialQP = 0 # Initial Quantization Parameter for the first I frame
# InitialQp depends on two values: Bits Per Picture,
# and the GOP length
BasicUnit = 0 # Number of MBs in the basic unit
# should be a fraction of the total number
# of MBs in a frame ("0" sets a BU equal to a frame)
ChannelType = 0 # type of channel( 1=time varying channel; 0=Constant channel)
RCUpdateMode = 0 # Rate Control type. Modes supported :
# 0 = original JM rate control,
# 1 = rate control that is applied to all frames regardless of the slice type,
# 2 = original plus intelligent QP selection for I and B slices (including Hierarchical),
# 3 = original + hybrid quadratic rate control for I and B slice using bit rate statistics
#
RCISliceBitRatio = 1.0 # target ratio of bits for I-coded pictures compared to P-coded Pictures (for RCUpdateMode=3)
RCBSliceBitRatio0 = 0.5 # target ratio of bits for B-coded pictures compared to P-coded Pictures - temporal level 0 (for RCUpdateMode=3)
RCBSliceBitRatio1 = 0.25 # target ratio of bits for B-coded pictures compared to P-coded Pictures - temporal level 1 (for RCUpdateMode=3)
RCBSliceBitRatio2 = 0.25 # target ratio of bits for B-coded pictures compared to P-coded Pictures - temporal level 2 (for RCUpdateMode=3)
RCBSliceBitRatio3 = 0.25 # target ratio of bits for B-coded pictures compared to P-coded Pictures - temporal level 3 (for RCUpdateMode=3)
RCBSliceBitRatio4 = 0.25 # target ratio of bits for B-coded pictures compared to P-coded Pictures - temporal level 4 (for RCUpdateMode=3)
RCBoverPRatio = 0.45 # ratio of bit rate usage of a B-coded picture over a P-coded picture for the SAME QP (for RCUpdateMode=3)
RCIoverPRatio = 3.80 # ratio of bit rate usage of an I-coded picture over a P-coded picture for the SAME QP (for RCUpdateMode=3)
RCMinQPPSlice = 8 # minimum P Slice QP value for rate control
RCMaxQPPSlice = 44 # maximum P Slice QP value for rate control
RCMinQPISlice = 8 # minimum I Slice QP value for rate control
RCMaxQPISlice = 36 # maximum I Slice QP value for rate control
########################################################################################
#Fast Mode Decision
########################################################################################
EarlySkipEnable = 0 # Early skip detection (0: Disable 1: Enable)
SelectiveIntraEnable = 0 # Selective Intra mode decision (0: Disable 1: Enable)
ReportFrameStats = 0 # (0:Disable Frame Statistics 1: Enable)
DisplayEncParams = 0 # (0:Disable Display of Encoder Params 1: Enable)
Verbose = 1 # level of display verboseness
# 0: short, 1: normal (default), 2: detailed, 3: detailed/nvb
# 4: with additional MB level lambda info
########################################################################################
#Rounding Offset control
########################################################################################
OffsetMatrixPresentFlag = 0 # Enable Explicit Offset Quantization Matrices (0: disable 1: enable)
QOffsetMatrixFile = "q_offset.cfg" # Explicit Quantization Matrices file
AdaptiveRounding = 1 # Enable Adaptive Rounding based on JVT-N011 (0: disable, 1: enable)
AdaptRoundingFixed = 1 # Enable Global Adaptive rounding for all qps (0: disable, 1: enable - default/old)
AdaptRndPeriod = 16 # Period in terms of MBs for updating rounding offsets.
# 0 performs update at the picture level. Default is 16. 1 is as in JVT-N011.
AdaptRndChroma = 1 # Enables coefficient rounding adaptation for chroma
AdaptRndWFactorIRef = 4 # Adaptive Rounding Weight for I/SI slices in reference pictures /4096
AdaptRndWFactorPRef = 4 # Adaptive Rounding Weight for P/SP slices in reference pictures /4096
AdaptRndWFactorINRef = 4 # Adaptive Rounding Weight for I/SI slices in non reference pictures /4096
AdaptRndWFactorPNRef = 4 # Adaptive Rounding Weight for P/SP slices in non reference pictures /4096
AdaptRndCrWFactorIRef = 4 # Chroma Adaptive Rounding Weight for I/SI slices in reference pictures /4096
AdaptRndCrWFactorPRef = 4 # Chroma Adaptive Rounding Weight for P/SP slices in reference pictures /4096
AdaptRndCrWFactorINRef = 4 # Chroma Adaptive Rounding Weight for I/SI slices in non reference pictures /4096
AdaptRndCrWFactorPNRef = 4 # Chroma Adaptive Rounding Weight for P/SP slices in non reference pictures /4096
########################################################################################
#Fast Motion Estimation Control Parameters
########################################################################################
SearchMode = 0 # Motion estimation mode
# -1 = Full Search
# 0 = Fast Full Search (default)
# 1 = UMHexagon Search
# 2 = Simplified UMHexagon Search
# 3 = Enhanced Predictive Zonal Search (EPZS)
UMHexDSR = 1 # Use Search Range Prediction. Only for UMHexagonS method
# (0:disable, 1:enabled/default)
UMHexScale = 3 # Use Scale_factor for different image sizes. Only for UMHexagonS method
# (0:disable, 3:/default)
# Increasing value can speed up Motion Search.
EPZSPattern = 2 # Select EPZS primary refinement pattern.
# (0: small diamond, 1: square, 2: extended diamond/default,
# 3: large diamond, 4: SBP Large Diamond,
# 5: PMVFAST )
EPZSDualRefinement = 3 # Enables secondary refinement pattern.
# (0:disabled, 1: small diamond, 2: square,
# 3: extended diamond/default, 4: large diamond,
# 5: SBP Large Diamond, 6: PMVFAST )
EPZSFixedPredictors = 2 # Enables Window based predictors
# (0:disabled, 1: P only, 2: P and B/default)
EPZSTemporal = 1 # Enables temporal predictors
# (0: disabled, 1: enabled/default)
EPZSSpatialMem = 1 # Enables spatial memory predictors
# (0: disabled, 1: enabled/default)
EPZSBlockType = 1 # Enables block type Predictors
# (0: disabled, 1: enabled/default)
EPZSMinThresScale = 0 # Scaler for EPZS minimum threshold (0 default).
# Increasing value can speed up encoding.
EPZSMedThresScale = 1 # Scaler for EPZS median threshold (1 default).
# Increasing value can speed up encoding.
EPZSMaxThresScale = 2 # Scaler for EPZS maximum threshold (1 default).
# Increasing value can speed up encoding.
EPZSSubPelME = 1 # EPZS Subpel ME consideration
EPZSSubPelMEBiPred = 1 # EPZS Subpel ME consideration for BiPred partitions
EPZSSubPelThresScale = 2 # EPZS Subpel ME Threshold scaler
EPZSSubPelGrid = 1 # Perform EPZS using a subpixel grid
########################################################################################
# SEI Parameters
########################################################################################
GenerateSEIMessage = 0 # Generate an SEI Text Message
SEIMessageText = "H.264/AVC Encoder" # Text SEI Message
UseMVLimits = 0 # Use MV Limits
SetMVXLimit = 512 # Horizontal MV Limit (in integer units)
SetMVYLimit = 512 # Vertical MV Limit (in integer units)
########################################################################################
# VUI Parameters
########################################################################################
# the variables below do not affect encoding and decoding
# (many are dummy variables but others can be useful when supported by the decoder)
EnableVUISupport = 0 # Enable VUI Parameters