# New Input File Format is as follows
# <ParameterName> = <ParameterValue> # Comment
#
# See configfile.h for a list of supported ParameterNames


##############################################################################
# Files
##############################################################################
InputFile             = "foreman_qcif.yuv"   # Input sequence, YUV 4:2:0
InputHeaderLength     = 0    # If the inputfile has a header, 
                             # state it's length in byte here 
StartFrame            = 0    # Start frame for encoding. (0-N)
FramesToBeEncoded     = 120  # Number of frames to be coded
FrameRate             = 30.0 # Frame Rate per second (1-100)
SourceWidth           = 176  # Image width in Pels, must be multiple of 16
SourceHeight          = 144  # Image height in Pels, must be multiple of 16
TraceFile             = ""
ReconFile             = ""
OutputFile            = "foreman_qcif.264"

##############################################################################
# Encoder Control
##############################################################################
ProfileIDC            = 66  # Profile IDC (66=baseline, 77=main, 88=extended)
LevelIDC              = 30  # Level IDC   (e.g. 20 = level 2.0)
IntraPeriod           =  0  # Period of I-Frames (0=only first)
IDRIntraEnable	      =  0  # Force IDR Intra  (0=disable 1=enable)
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)
ChromaQPOffset        =  0  # Chroma QP offset (-51..51)
UseHadamard           =  1  # Hadamard transform (0=not used, 1=used)
SearchRange           = 16  # Max search range
NumberReferenceFrames = 10   # Number of previous frames used for 
                            # inter motion search (1-16)
PList0References      =  0  # P slice List 0 reference override 
                            # (0 disable, N <= NumberReferenceFrames)
Log2MaxFrameNum       =  4  # Sets log2_max_frame_num_minus4 
                            # (0-3 : based on FramesToBeEncoded, 
                            #   >3 : Log2MaxFrameNum - 4)
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
InterSearch16x16      =  1  # Inter block search 16x16   (0=disable, 1=enable)
InterSearch16x8       =  1  # Inter block search 16x8    (0=disable, 1=enable)
InterSearch8x16       =  1  # Inter block search  8x16   (0=disable, 1=enable)
InterSearch8x8        =  1  # Inter block search  8x8    (0=disable, 1=enable)
InterSearch8x4        =  1  # Inter block search  8x4    (0=disable, 1=enable)
InterSearch4x8        =  1  # Inter block search  4x8    (0=disable, 1=enable)
InterSearch4x4        =  1  # Inter block search  4x4    (0=disable, 1=enable)
UseFME                =  0  # Use fast motion estimation (0=disable, 1=enable)

##############################################################################
# B Slices
##############################################################################

NumberBFrames         =  0  # Number of B coded frames inserted (0=not used)  
QPBSlice              = 30  # Quant. param for B slices (0-51)
BRefPicQPOffset       =  0  # Quantization offset for reference B coded 
                            # pictures (-51..51)
DirectModeType        =  1  # Direct Mode Type (0:Temporal 1:Spatial)
DirectInferenceFlag   =  1  # Direct Inference Flag (0: Disable 1: Enable)
BList0References      =  0  # B slice List 0 reference override 
                            # (0 disable, N <= NumberReferenceFrames)
BList1References      =  1  # B slice List 1 reference override 
                            # (0 disable, N <= NumberReferenceFrames)
                            # 1 List1 reference is usually recommended for 
                            # normal GOP Structures. 
                            # A larger value is usually more appropriate 
                            # if a more flexible structure is used 
                            # (i.e. using PyramidCoding)
BReferencePictures    =  0  # Stored B pictures (0=off, 1=on)
PyramidCoding         =  0  # B pyramid (0= off, 1= 2 layers, 
                            # 2= 2 full pyramid, 3 = explicit)
ExplicitPyramidFormat = "b1r30b3r20b2e34b0e30b4r22" 
                            # Explicit Enhancement GOP. Format is: 
                            # {FrameDisplay_orderReferenceQP}. 
                            # Valid values for reference type is: 
                            #   r:reference, e:non reference.
PyramidRefReorder     =  1  # Reorder References according to Poc distance 
                            # for PyramidCoding (0=off, 1=enable)
PocMemoryManagement   =  1  # Memory management based on Poc Distances for 
                            # PyramidCoding (0=off, 1=on)

##############################################################################
# SP Frames
##############################################################################

SPPicturePeriodicity  =  0  # SP-Picture Periodicity (0=not used)
QPSPSlice             = 28  # Quant. param of SP-Slices for Prediction Error 
                            # (0-51)
QPSP2Slice            = 27  # Quant. param of SP-Slices for Predicted Blocks 
                            # (0-51)


##############################################################################
# Output Control, NALs
##############################################################################

SymbolMode             =  0  # Symbol mode 
                             # (Entropy coding method: 0=UVLC, 1=CABAC)
OutFileMode            =  0  # Output file mode, 0:Annex B, 1:RTP
PartitionMode          =  0  # Partition Mode 
                             # 0: no DP, 1: 3 Partitions per Slice

##############################################################################
# CABAC context initialization
##############################################################################

ContextInitMethod      =  0  # Context init (0: fixed, 1: adaptive)
FixedModelNumber       =  0  # model number for fixed decision for inter slices
                             # ( 0, 1, or 2 )

##############################################################################
# Interlace Handling
##############################################################################

PicInterlace           =  0  # Picture AFF (0: frame coding, 1: field coding, 
                             # 2:adaptive frame/field coding)
MbInterlace            =  0  # Macroblock AFF (0: frame coding, 
                             # 1: field coding,
                             # 2: adaptive frame/field coding, 
                             # 3: combined with PicInterlace=0, to do frame 
                             #    MBAFF))
IntraBottom            =  0  # Force Intra Bottom at GOP Period

##############################################################################
# Weighted Prediction
##############################################################################

WeightedPrediction     =  0  # P picture Weighted Prediction 
                             # (0=off, 1=explicit mode)  
WeightedBiprediction   =  0  # B picture Weighted Prediciton 
                             # (0=off, 1=explicit mode,  2=implicit mode)  
UseWeightedReferenceME =  0  # Use weighted reference for ME (0=off, 1=on)

##############################################################################
# Loop filter parameters
##############################################################################

LoopFilterParametersFlag = 0  # Configure loop filter 
                              # (0=parameter below ingored, 1=parameters sent)
LoopFilterDisable        = 0  # Disable loop filter in slice header 
                              # (0=Filter, 1=No Filter)
LoopFilterAlphaC0Offset  = 0  # Alpha & C0 offset div. 2, 
                              # {-6, -5, ... 0, +1, .. +6}
LoopFilterBetaOffset     = 0  # 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
UseRedundantSlice        = 0  # 0: not used, 
                              # 1: one redundant slice used for each slice 
                              #    (other modes not supported yet)

##############################################################################
# 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:off, 1:on, 2: with losses)
DisableThresholding  =  0  # Disable Thresholding of Transform Coefficients 
                           # (0:off, 1:on)
DisableBSkipRDO      =  0  # Disable B Skip Mode consideration from 
                           # RDO Mode decision (0:off, 1:on)
LossRateA            = 10  # expected packet loss rate of the channel for 
                           # the first partition, only valid if 
                           # RDOptimization = 2
LossRateB            =  0  # expected packet loss rate of the channel for the 
                           # second partition, only valid if RDOptimization = 2
LossRateC            =  0  # expected packet loss rate of the channel for the 
                           # third partition, only valid if RDOptimization = 2
NumberOfDecoders     = 30  # Numbers of decoders used to simulate the channel, 
                           # only valid if RDOptimization = 2
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.
LastFrameNumber          =  0  # Last frame number that have to be coded 
                               # (0: no effect)
ChangeQPI                = 16  # QP (I-slices)  for second part of sequence 
                               # (0-51)
ChangeQPP                = 16  # QP (P-slices)  for second part of sequence 
                               # (0-51)
ChangeQPB                = 18  # QP (B-slices)  for second part of sequence 
                               # (0-51)
ChangeQPBSRefOffset	 =  2  # QP offset (stored B-slices)  for second part 
                               # of sequence (0-51)
ChangeQPStart            =  0  # Frame no. for second part of sequence 
                               # (0: no second part)
NumberofLeakyBuckets     =  8  # Number of Leaky Bucket values
LeakyBucketRateFile      =  "leakybucketrate.cfg"  
                               # File from which encoder derives rate values
LeakyBucketParamFile     =  "foreman_ref_baseline_leakybucketparam.cfg" 
                               # File where encoder stores leakybucketparams

NumberFramesInEnhancementLayerSubSequence  = 0  
                               # number of frames in the Enhanced Scalability 
                               # Layer(0: no Enhanced Layer)
NumberOfFrameInSecondIGOP = 0  # Number of frames to be coded in the second IGOP
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            =     24   # Initial Quantization Parameter for the 
                                # first I frame InitialQp depends on two values:
                                # Bits Per Picture, and the GOP length
BasicUnit            =     11   # Number of MBs in the basic unit
                                # should be a fractor of the total number 
                                # of MBs in a frame
ChannelType          =      0   # type of channel( 1=time varying channel; 
                                # 0=Constant channel)
