blob: 4787e870d0c3e55ae722c0c20c1a8c2d8785c45b [file] [log] [blame]
/*!
***********************************************************************
* \file
* configfile.h
* \brief
* Prototypes for configfile.c and definitions of used structures.
***********************************************************************
*/
#include "fmo.h"
#ifndef _CONFIGFILE_H_
#define _CONFIGFILE_H_
#define DEFAULTCONFIGFILENAME "encoder.cfg"
#define PROFILE_IDC 88
#define LEVEL_IDC 21
typedef struct {
char *TokenName;
void *Place;
int Type;
double Default;
int param_limits; //! 0: no limits, 1: both min and max, 2: only min (i.e. no negatives), 3: special case for QPs since min needs bitdepth_qp_scale
double min_limit;
double max_limit;
} Mapping;
InputParameters configinput;
#ifdef INCLUDED_BY_CONFIGFILE_C
// Mapping_Map Syntax:
// {NAMEinConfigFile, &configinput.VariableName, Type, InitialValue, LimitType, MinLimit, MaxLimit}
// Types : {0:int, 1:text, 2: double}
// LimitType: {0:none, 1:both, 2:minimum, 3: QP based}
// We could separate this based on types to make it more flexible and allow also defaults for text types.
Mapping Map[] = {
{"ProfileIDC", &configinput.ProfileIDC, 0, (double) PROFILE_IDC, 0, 0.0, 0.0 },
{"LevelIDC", &configinput.LevelIDC, 0, (double) LEVEL_IDC, 0, 0.0, 0.0 },
{"FrameRate", &configinput.FrameRate, 2, (double) INIT_FRAME_RATE, 1, 0.0, 100.0 },
{"IDRIntraEnable", &configinput.idr_enable, 0, 0.0, 1, 0.0, 1.0 },
{"ResendSPS", &configinput.ResendSPS, 0, 0.0, 1, 0.0, 1.0 },
{"StartFrame", &configinput.start_frame, 0, 0.0, 2, 0.0, 0.0 },
{"IntraPeriod", &configinput.intra_period, 0, 0.0, 2, 0.0, 0.0 },
{"EnableOpenGOP", &configinput.EnableOpenGOP, 0, 0.0, 1, 0.0, 1.0 },
{"FramesToBeEncoded", &configinput.no_frames, 0, 1.0, 2, 1.0, 0.0 },
{"QPISlice", &configinput.qp0, 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP },
{"QPPSlice", &configinput.qpN, 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP },
{"QPBSlice", &configinput.qpB, 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP },
{"FrameSkip", &configinput.jumpd, 0, 0.0, 2, 0.0, 0.0 },
{"DisableSubpelME", &configinput.DisableSubpelME, 0, 0.0, 1, 0.0, 1.0 },
{"SearchRange", &configinput.search_range, 0, 16.0, 2, 0.0, 0.0 },
{"NumberReferenceFrames", &configinput.num_ref_frames, 0, 1.0, 1, 1.0, 16.0 },
{"PList0References", &configinput.P_List0_refs, 0, 0.0, 1, 0.0, 16.0 },
{"BList0References", &configinput.B_List0_refs, 0, 0.0, 1, 0.0, 16.0 },
{"BList1References", &configinput.B_List1_refs, 0, 1.0, 1, 0.0, 16.0 },
{"Log2MaxFNumMinus4", &configinput.Log2MaxFNumMinus4, 0, 0.0, 1, -1.0, 12.0 },
{"Log2MaxPOCLsbMinus4", &configinput.Log2MaxPOCLsbMinus4, 0, 2.0, 1, -1.0, 12.0 },
{"GenerateMultiplePPS", &configinput.GenerateMultiplePPS, 0, 0.0, 1, 0.0, 1.0 },
{"Generate_SEIVUI", &configinput.Generate_SEIVUI, 0, 0.0, 1, 0.0, 1.0 },
{"SEIMessageText", &configinput.SEIMessageText, 1, 0.0, 0, 0.0, 0.0 },
{"ResendPPS", &configinput.ResendPPS, 0, 0.0, 1, 0.0, 1.0 },
{"SourceWidth", &configinput.img_width, 0, 176.0, 2, 16.0, 0.0 },
{"SourceHeight", &configinput.img_height, 0, 144.0, 2, 16.0, 0.0 },
{"MbLineIntraUpdate", &configinput.intra_upd, 0, 0.0, 1, 0.0, 1.0 },
{"SliceMode", &configinput.slice_mode, 0, 0.0, 1, 0.0, 3.0 },
{"SliceArgument", &configinput.slice_argument, 0, 1.0, 2, 1.0, 1.0 },
{"UseConstrainedIntraPred", &configinput.UseConstrainedIntraPred, 0, 0.0, 1, 0.0, 1.0 },
{"InputFile", &configinput.infile, 1, 0.0, 0, 0.0, 0.0 },
{"InputHeaderLength", &configinput.infile_header, 0, 0.0, 2, 0.0, 1.0 },
{"OutputFile", &configinput.outfile, 1, 0.0, 0, 0.0, 0.0 },
{"ReconFile", &configinput.ReconFile, 1, 0.0, 0, 0.0, 0.0 },
{"TraceFile", &configinput.TraceFile, 1, 0.0, 0, 0.0, 0.0 },
{"DisposableP", &configinput.DisposableP, 0, 0.0, 1, 0.0, 1.0 },
{"DispPQPOffset", &configinput.DispPQPOffset, 0, 0.0, 0,-51.0, 51.0 },
{"NumberBFrames", &configinput.successive_Bframe, 0, 0.0, 2, 0.0, 0.0 },
{"PReplaceBSlice", &configinput.PReplaceBSlice, 0, 0.0, 1, 0.0, 1.0 },
{"BRefPicQPOffset", &configinput.qpBRSOffset, 0, 0.0, 0,-51.0, 51.0 },
{"DirectModeType", &configinput.direct_spatial_mv_pred_flag, 0, 0.0, 1, 0.0, 1.0 },
{"DirectInferenceFlag", &configinput.directInferenceFlag, 0, 1.0, 1, 0.0, 1.0 },
{"SPPicturePeriodicity", &configinput.sp_periodicity, 0, 0.0, 2, 0.0, 0.0 },
{"QPSPSlice", &configinput.qpsp, 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP },
{"QPSP2Slice", &configinput.qpsp_pred, 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP },
{"SI_FRAMES", &configinput.si_frame_indicator, 0, 0.0, 1, 0.0, 1.0 },
{"SP_output", &configinput.sp_output_indicator, 0, 0.0, 1, 0.0, 1.0 },
{"SP_output_name", &configinput.sp_output_filename, 1, 0.0, 0, 0.0, 0.0 },
{"SP2_FRAMES", &configinput.sp2_frame_indicator, 0, 0.0, 1, 0.0, 1.0 },
{"SP2_input_name1", &configinput.sp2_input_filename1, 1, 0.0, 0, 0.0, 0.0 },
{"SP2_input_name2", &configinput.sp2_input_filename2, 1, 0.0, 0, 0.0, 0.0 },
{"SymbolMode", &configinput.symbol_mode, 0, 0.0, 1, (double) UVLC, (double) CABAC },
{"OutFileMode", &configinput.of_mode, 0, 0.0, 1, 0.0, 1.0 },
{"PartitionMode", &configinput.partition_mode, 0, 0.0, 1, 0.0, 1.0 },
{"InterSearch16x16", &configinput.InterSearch16x16, 0, 1.0, 1, 0.0, 1.0 },
{"InterSearch16x8", &configinput.InterSearch16x8 , 0, 1.0, 1, 0.0, 1.0 },
{"InterSearch8x16", &configinput.InterSearch8x16, 0, 1.0, 1, 0.0, 1.0 },
{"InterSearch8x8", &configinput.InterSearch8x8 , 0, 1.0, 1, 0.0, 1.0 },
{"InterSearch8x4", &configinput.InterSearch8x4, 0, 1.0, 1, 0.0, 1.0 },
{"InterSearch4x8", &configinput.InterSearch4x8, 0, 1.0, 1, 0.0, 1.0 },
{"InterSearch4x4", &configinput.InterSearch4x4, 0, 1.0, 1, 0.0, 1.0 },
{"IntraDisableInterOnly", &configinput.IntraDisableInterOnly, 0, 0.0, 1, 0.0, 1.0 },
{"Intra4x4ParDisable", &configinput.Intra4x4ParDisable, 0, 0.0, 1, 0.0, 1.0 },
{"Intra4x4DiagDisable", &configinput.Intra4x4DiagDisable, 0, 0.0, 1, 0.0, 1.0 },
{"Intra4x4DirDisable", &configinput.Intra4x4DirDisable, 0, 0.0, 1, 0.0, 1.0 },
{"Intra16x16ParDisable", &configinput.Intra16x16ParDisable, 0, 0.0, 1, 0.0, 1.0 },
{"Intra16x16PlaneDisable", &configinput.Intra16x16PlaneDisable, 0, 0.0, 1, 0.0, 1.0 },
{"EnableIPCM", &configinput.EnableIPCM, 0, 1.0, 1, 0.0, 1.0 },
{"ChromaIntraDisable", &configinput.ChromaIntraDisable, 0, 0.0, 1, 0.0, 1.0 },
#ifdef _FULL_SEARCH_RANGE_
{"RestrictSearchRange", &configinput.full_search, 0, 2.0, 1, 0.0, 2.0 },
#endif
#ifdef _ADAPT_LAST_GROUP_
{"LastFrameNumber", &configinput.last_frame, 0, 0.0, 2, 0.0, 0.0 },
#endif
#ifdef _CHANGE_QP_
{"ChangeQPI", &configinput.qp02, 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP },
{"ChangeQPP", &configinput.qpN2, 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP },
{"ChangeQPB", &configinput.qpB2, 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP },
{"ChangeQPBSRefOffset", &configinput.qpBRS2Offset, 0, 0.0, 1,-51.0, 51.0 },
{"ChangeQPStart", &configinput.qp2start, 0, 0.0, 2, 0.0, 0.0 },
#endif
{"RDOptimization", &configinput.rdopt, 0, 0.0, 1, 0.0, 3.0 },
{"CtxAdptLagrangeMult", &configinput.CtxAdptLagrangeMult, 0, 0.0, 1, 0.0, 1.0 },
{"FastCrIntraDecision", &configinput.FastCrIntraDecision, 0, 0.0, 1, 0.0, 1.0 },
{"DisableThresholding", &configinput.disthres, 0, 0.0, 1, 0.0, 1.0 },
{"DisableBSkipRDO", &configinput.nobskip, 0, 0.0, 1, 0.0, 1.0 },
{"LossRateA", &configinput.LossRateA, 0, 0.0, 2, 0.0, 0.0 },
{"LossRateB", &configinput.LossRateB, 0, 0.0, 2, 0.0, 0.0 },
{"LossRateC", &configinput.LossRateC, 0, 0.0, 2, 0.0, 0.0 },
{"NumberOfDecoders", &configinput.NoOfDecoders, 0, 0.0, 2, 0.0, 0.0 },
{"RestrictRefFrames", &configinput.RestrictRef , 0, 0.0, 1, 0.0, 1.0 },
#ifdef _LEAKYBUCKET_
{"NumberofLeakyBuckets", &configinput.NumberLeakyBuckets, 0, 2.0, 1, 2.0, 255.0 },
{"LeakyBucketRateFile", &configinput.LeakyBucketRateFile, 1, 0.0, 0, 0.0, 0.0 },
{"LeakyBucketParamFile", &configinput.LeakyBucketParamFile, 1, 0.0, 0, 0.0, 0.0 },
#endif
{"PicInterlace", &configinput.PicInterlace, 0, 0.0, 1, 0.0, 2.0 },
{"MbInterlace", &configinput.MbInterlace, 0, 0.0, 1, 0.0, 3.0 },
{"IntraBottom", &configinput.IntraBottom, 0, 0.0, 1, 0.0, 1.0 },
{"NumberFramesInEnhancementLayerSubSequence", &configinput.NumFramesInELSubSeq, 0, 0.0, 2, 0.0, 0.0 },
{"NumberOfFrameInSecondIGOP",&configinput.NumFrameIn2ndIGOP, 0, 0.0, 2, 0.0, 0.0 },
{"RandomIntraMBRefresh", &configinput.RandomIntraMBRefresh, 0, 0.0, 2, 0.0, 0.0 },
{"WeightedPrediction", &configinput.WeightedPrediction, 0, 0.0, 1, 0.0, 1.0 },
{"WeightedBiprediction", &configinput.WeightedBiprediction, 0, 0.0, 1, 0.0, 2.0 },
{"UseWeightedReferenceME", &configinput.UseWeightedReferenceME, 0, 0.0, 1, 0.0, 1.0 },
{"RDPictureDecision", &configinput.RDPictureDecision, 0, 0.0, 1, 0.0, 1.0 },
{"RDPictureIntra", &configinput.RDPictureIntra, 0, 0.0, 1, 0.0, 1.0 },
{"RDPSliceWeightOnly", &configinput.RDPSliceWeightOnly, 0, 1.0, 1, 0.0, 1.0 },
{"RDPSliceBTest", &configinput.RDPSliceBTest, 0, 0.0, 1, 0.0, 1.0 },
{"RDBSliceWeightOnly", &configinput.RDBSliceWeightOnly, 0, 0.0, 1, 0.0, 1.0 },
{"SkipIntraInInterSlices", &configinput.SkipIntraInInterSlices, 0, 0.0, 1, 0.0, 1.0 },
{"BReferencePictures", &configinput.BRefPictures, 0, 0.0, 1, 0.0, 2.0 },
{"HierarchicalCoding", &configinput.HierarchicalCoding, 0, 0.0, 1, 0.0, 3.0 },
{"HierarchyLevelQPEnable", &configinput.HierarchyLevelQPEnable, 0, 0.0, 1, 0.0, 1.0 },
{"ExplicitHierarchyFormat", &configinput.ExplicitHierarchyFormat, 1, 0.0, 0, 0.0, 0.0 },
{"ReferenceReorder", &configinput.ReferenceReorder, 0, 0.0, 1, 0.0, 1.0 },
{"PocMemoryManagement", &configinput.PocMemoryManagement, 0, 0.0, 1, 0.0, 1.0 },
//Bipredicting Motion Estimation parameters
{"BiPredMotionEstimation", &configinput.BiPredMotionEstimation, 0, 0.0, 1, 0.0, 1.0 },
{"BiPredMERefinements", &configinput.BiPredMERefinements, 0, 0.0, 1, 0.0, 5.0 },
{"BiPredMESearchRange", &configinput.BiPredMESearchRange, 0, 8.0, 2, 0.0, 0.0 },
{"BiPredMESubPel", &configinput.BiPredMESubPel, 0, 1.0, 1, 0.0, 2.0 },
{"LoopFilterParametersFlag", &configinput.LFSendParameters, 0, 0.0, 1, 0.0, 1.0 },
{"LoopFilterDisable", &configinput.LFDisableIdc, 0, 0.0, 1, 0.0, 2.0 },
{"LoopFilterAlphaC0Offset", &configinput.LFAlphaC0Offset, 0, 0.0, 1, -6.0, 6.0 },
{"LoopFilterBetaOffset", &configinput.LFBetaOffset, 0, 0.0, 1, -6.0, 6.0 },
{"SparePictureOption", &configinput.SparePictureOption, 0, 0.0, 1, 0.0, 1.0 },
{"SparePictureDetectionThr", &configinput.SPDetectionThreshold, 0, 0.0, 2, 0.0, 0.0 },
{"SparePicturePercentageThr",&configinput.SPPercentageThreshold, 0, 0.0, 2, 0.0, 100.0 },
{"num_slice_groups_minus1", &configinput.num_slice_groups_minus1, 0, 0.0, 1, 0.0, (double)MAXSLICEGROUPIDS - 1 },
{"slice_group_map_type", &configinput.slice_group_map_type, 0, 0.0, 1, 0.0, 6.0 },
{"slice_group_change_direction_flag", &configinput.slice_group_change_direction_flag, 0, 0.0, 1, 0.0, 2.0 },
{"slice_group_change_rate_minus1", &configinput.slice_group_change_rate_minus1, 0, 0.0, 2, 0.0, 1.0 },
{"SliceGroupConfigFileName", &configinput.SliceGroupConfigFileName, 1, 0.0, 0, 0.0, 0.0 },
{"UseRedundantPicture", &configinput.redundant_pic_flag, 0, 0.0, 1, 0.0, 1.0 },
{"NumRedundantHierarchy", &configinput.NumRedundantHierarchy, 0, 0.0, 1, 0.0, 4.0 },
{"PrimaryGOPLength", &configinput.PrimaryGOPLength, 0, 1.0, 1, 1.0, 16.0 },
{"NumRefPrimary", &configinput.NumRefPrimary, 0, 1.0, 1, 1.0, 16.0 },
{"PicOrderCntType", &configinput.pic_order_cnt_type, 0, 0.0, 1, 0.0, 2.0 },
{"ContextInitMethod", &configinput.context_init_method, 0, 0.0, 1, 0.0, 1.0 },
{"FixedModelNumber", &configinput.model_number, 0, 0.0, 1, 0.0, 2.0 },
{"Transform8x8Mode", &configinput.Transform8x8Mode, 0, 0.0, 1, 0.0, 2.0 },
{"ReportFrameStats", &configinput.ReportFrameStats, 0, 0.0, 1, 0.0, 1.0 },
{"DisplayEncParams", &configinput.DisplayEncParams, 0, 0.0, 1, 0.0, 1.0 },
{"Verbose", &configinput.Verbose, 0, 1.0, 1, 0.0, 2.0 },
// Rate Control
{"RateControlEnable", &configinput.RCEnable, 0, 0.0, 1, 0.0, 1.0 },
{"Bitrate", &configinput.bit_rate, 0, 0.0, 2, 0.0, 0.0 },
{"InitialQP", &configinput.SeinitialQP, 0, 0.0, 3, (double) MIN_QP, (double) MAX_QP },
{"BasicUnit", &configinput.basicunit, 0, 0.0, 2, 0.0, 0.0 },
{"ChannelType", &configinput.channel_type, 0, 0.0, 1, 0.0, 1.0 },
{"RCUpdateMode", &configinput.RCUpdateMode, 0, 0.0, 1, 0.0, 4.0 },
{"RCISliceBitRatio", &configinput.RCISliceBitRatio, 2, 1.0, 1, 0.0, 1.0 },
{"RCBSliceBitRatio0", &configinput.RCBSliceBitRatio[0], 2, 0.5, 1, 0.0, 1.0 },
{"RCBSliceBitRatio1", &configinput.RCBSliceBitRatio[1], 2, 0.25, 1, 0.0, 1.0 },
{"RCBSliceBitRatio2", &configinput.RCBSliceBitRatio[2], 2, 0.25, 1, 0.0, 1.0 },
{"RCBSliceBitRatio3", &configinput.RCBSliceBitRatio[3], 2, 0.25, 1, 0.0, 1.0 },
{"RCBSliceBitRatio4", &configinput.RCBSliceBitRatio[4], 2, 0.25, 1, 0.0, 1.0 },
{"RCBoverPRatio", &configinput.RCBoverPRatio, 2, 0.45, 1, 0.0, 1000.0 },
{"RCIoverPRatio", &configinput.RCIoverPRatio, 2, 3.80, 1, 0.0, 1000.0 },
// Q_Matrix
{"QmatrixFile", &configinput.QmatrixFile, 1, 0.0, 0, 0.0, 0.0 },
{"ScalingMatrixPresentFlag", &configinput.ScalingMatrixPresentFlag, 0, 0.0, 1, 0.0, 3.0 },
{"ScalingListPresentFlag0", &configinput.ScalingListPresentFlag[0], 0, 0.0, 1, 0.0, 3.0 },
{"ScalingListPresentFlag1", &configinput.ScalingListPresentFlag[1], 0, 0.0, 1, 0.0, 3.0 },
{"ScalingListPresentFlag2", &configinput.ScalingListPresentFlag[2], 0, 0.0, 1, 0.0, 3.0 },
{"ScalingListPresentFlag3", &configinput.ScalingListPresentFlag[3], 0, 0.0, 1, 0.0, 3.0 },
{"ScalingListPresentFlag4", &configinput.ScalingListPresentFlag[4], 0, 0.0, 1, 0.0, 3.0 },
{"ScalingListPresentFlag5", &configinput.ScalingListPresentFlag[5], 0, 0.0, 1, 0.0, 3.0 },
{"ScalingListPresentFlag6", &configinput.ScalingListPresentFlag[6], 0, 0.0, 1, 0.0, 3.0 },
{"ScalingListPresentFlag7", &configinput.ScalingListPresentFlag[7], 0, 0.0, 1, 0.0, 3.0 },
// Fast ME enable
{"SearchMode", &configinput.SearchMode, 0, 0.0, 1, -1.0, 3.0 },
// Parameters for UMHEX control
{"UMHexDSR", &configinput.UMHexDSR, 0, 1.0, 1, 0.0, 1.0 },
{"UMHexScale", &configinput.UMHexScale, 0, 1.0, 0, 0.0, 0.0 },
// Parameters for EPZS control
{"EPZSPattern", &configinput.EPZSPattern, 0, 2.0, 1, 0.0, 5.0 },
{"EPZSDualRefinement", &configinput.EPZSDual, 0, 3.0, 1, 0.0, 6.0 },
{"EPZSFixedPredictors", &configinput.EPZSFixed, 0, 2.0, 1, 0.0, 2.0 },
{"EPZSTemporal", &configinput.EPZSTemporal, 0, 1.0, 1, 0.0, 1.0 },
{"EPZSSpatialMem", &configinput.EPZSSpatialMem, 0, 1.0, 1, 0.0, 1.0 },
{"EPZSMinThresScale", &configinput.EPZSMinThresScale, 0, 0.0, 0, 0.0, 0.0 },
{"EPZSMaxThresScale", &configinput.EPZSMaxThresScale, 0, 2.0, 0, 0.0, 0.0 },
{"EPZSMedThresScale", &configinput.EPZSMedThresScale, 0, 1.0, 0, 0.0, 0.0 },
{"EPZSSubPelME", &configinput.EPZSSubPelME, 0, 1.0, 1, 0.0, 1.0 },
{"EPZSSubPelMEBiPred", &configinput.EPZSSubPelMEBiPred, 0, 1.0, 1, 0.0, 1.0 },
{"EPZSSubPelGrid", &configinput.EPZSSubPelGrid, 0, 0.0, 1, 0.0, 1.0 },
{"EPZSSubPelThresScale", &configinput.EPZSSubPelThresScale, 0, 2.0, 0, 0.0, 0.0 },
// Chroma QP Offset
{"ChromaQPOffset", &configinput.chroma_qp_index_offset, 0, 0.0, 1,-51.0, 51.0 },
// Fidelity Range Extensions
{"BitDepthLuma", &configinput.BitDepthLuma, 0, 8.0, 1, 8.0, 12.0 },
{"BitDepthChroma", &configinput.BitDepthChroma, 0, 8.0, 1, 8.0, 12.0 },
{"YUVFormat", &configinput.yuv_format, 0, 1.0, 1, 0.0, 3.0 },
{"RGBInput", &configinput.rgb_input_flag, 0, 0.0, 1, 0.0, 1.0 },
{"CbQPOffset", &configinput.cb_qp_index_offset, 0, 0.0, 1,-51.0, 51.0 },
{"CrQPOffset", &configinput.cr_qp_index_offset, 0, 0.0, 1,-51.0, 51.0 },
// Lossless Coding
{"QPPrimeYZeroTransformBypassFlag", &configinput.lossless_qpprime_y_zero_flag, 0, 0.0, 1, 0.0, 1.0 },
// Explicit Lambda Usage
{"UseExplicitLambdaParams", &configinput.UseExplicitLambdaParams, 0, 0.0, 1, 0.0, 3.0 },
{"FixedLambdaPslice", &configinput.FixedLambda[0], 2, 0.1, 2, 0.0, 0.0 },
{"FixedLambdaBslice", &configinput.FixedLambda[1], 2, 0.1, 2, 0.0, 0.0 },
{"FixedLambdaIslice", &configinput.FixedLambda[2], 2, 0.1, 2, 0.0, 0.0 },
{"FixedLambdaSPslice", &configinput.FixedLambda[3], 2, 0.1, 2, 0.0, 0.0 },
{"FixedLambdaSIslice", &configinput.FixedLambda[4], 2, 0.1, 2, 0.0, 0.0 },
{"FixedLambdaRefBslice", &configinput.FixedLambda[5], 2, 0.1, 2, 0.0, 0.0 },
{"LambdaWeightPslice", &configinput.LambdaWeight[0], 2, 0.68, 2, 0.0, 0.0 },
{"LambdaWeightBslice", &configinput.LambdaWeight[1], 2, 2.00, 2, 0.0, 0.0 },
{"LambdaWeightIslice", &configinput.LambdaWeight[2], 2, 0.65, 2, 0.0, 0.0 },
{"LambdaWeightSPslice", &configinput.LambdaWeight[3], 2, 1.50, 2, 0.0, 0.0 },
{"LambdaWeightSIslice", &configinput.LambdaWeight[4], 2, 0.65, 2, 0.0, 0.0 },
{"LambdaWeightRefBslice", &configinput.LambdaWeight[5], 2, 1.50, 2, 0.0, 0.0 },
{"QOffsetMatrixFile", &configinput.QOffsetMatrixFile, 1, 0.0, 0, 0.0, 0.0 },
{"OffsetMatrixPresentFlag", &configinput.OffsetMatrixPresentFlag, 0, 0.0, 1, 0.0, 1.0 },
// Fast Mode Decision
{"EarlySkipEnable", &configinput.EarlySkipEnable, 0, 0.0, 1, 0.0, 1.0 },
{"SelectiveIntraEnable", &configinput.SelectiveIntraEnable, 0, 0.0, 1, 0.0, 1.0 },
// Adaptive rounding technique based on JVT-N011
{"AdaptiveRounding", &configinput.AdaptiveRounding, 0, 0.0, 1, 0.0, 1.0 },
{"AdaptRndPeriod", &configinput.AdaptRndPeriod, 0, 16.0, 2, 0.0, 0.0 },
{"AdaptRndChroma", &configinput.AdaptRndChroma, 0, 0.0, 1, 0.0, 1.0 },
{"AdaptRndWFactorIRef", &configinput.AdaptRndWFactor[1][I_SLICE], 0, 4.0, 1, 0.0, 4096.0 },
{"AdaptRndWFactorPRef", &configinput.AdaptRndWFactor[1][P_SLICE], 0, 4.0, 1, 0.0, 4096.0 },
{"AdaptRndWFactorBRef", &configinput.AdaptRndWFactor[1][B_SLICE], 0, 4.0, 1, 0.0, 4096.0 },
{"AdaptRndWFactorINRef", &configinput.AdaptRndWFactor[0][I_SLICE], 0, 4.0, 1, 0.0, 4096.0 },
{"AdaptRndWFactorPNRef", &configinput.AdaptRndWFactor[0][P_SLICE], 0, 4.0, 1, 0.0, 4096.0 },
{"AdaptRndWFactorBNRef", &configinput.AdaptRndWFactor[0][B_SLICE], 0, 4.0, 1, 0.0, 4096.0 },
{"AdaptRndCrWFactorIRef", &configinput.AdaptRndCrWFactor[1][I_SLICE],0, 4.0, 1, 0.0, 4096.0 },
{"AdaptRndCrWFactorPRef", &configinput.AdaptRndCrWFactor[1][P_SLICE],0, 4.0, 1, 0.0, 4096.0 },
{"AdaptRndCrWFactorBRef", &configinput.AdaptRndCrWFactor[1][B_SLICE],0, 4.0, 1, 0.0, 4096.0 },
{"AdaptRndCrWFactorINRef", &configinput.AdaptRndCrWFactor[0][I_SLICE],0, 4.0, 1, 0.0, 4096.0 },
{"AdaptRndCrWFactorPNRef", &configinput.AdaptRndCrWFactor[0][P_SLICE],0, 4.0, 1, 0.0, 4096.0 },
{"AdaptRndCrWFactorBNRef", &configinput.AdaptRndCrWFactor[0][B_SLICE],0, 4.0, 1, 0.0, 4096.0 },
{"VUISupport", &configinput.VUISupport, 0, 0.0, 1, 0.0, 1.0 },
{"ChromaMCBuffer", &configinput.ChromaMCBuffer, 0, 0.0, 1, 0.0, 1.0 },
{"ChromaMEEnable", &configinput.ChromaMEEnable, 0, 0.0, 1, 0.0, 2.0 },
{"MEDistortionFPel", &configinput.MEErrorMetric[F_PEL], 0, 0.0, 1, 0.0, 2.0 },
{"MEDistortionHPel", &configinput.MEErrorMetric[H_PEL], 0, 0.0, 1, 0.0, 2.0 },
{"MEDistortionQPel", &configinput.MEErrorMetric[Q_PEL], 0, 0.0, 1, 0.0, 2.0 },
{"MDDistortion", &configinput.ModeDecisionMetric, 0, 2.0, 1, 0.0, 2.0 },
{NULL, NULL, -1, 0.0, 0, 0.0, 0.0 }
};
#endif
#ifndef INCLUDED_BY_CONFIGFILE_C
extern Mapping Map[];
#endif
void Configure (int ac, char *av[]);
void PatchInputNoFrames(void);
#endif