configfile.h
上传用户:hjq518
上传日期:2021-12-09
资源大小:5084k
文件大小:60k
源码类别:

Audio

开发平台:

Visual C++

  1. /*!
  2.  ***********************************************************************
  3.  *  file
  4.  *     configfile.h
  5.  *  brief
  6.  *     Prototypes for configfile.c and definitions of used structures.
  7.  ***********************************************************************
  8.  */
  9. #include "fmo.h"
  10. #ifndef _CONFIGFILE_H_
  11. #define _CONFIGFILE_H_
  12. #define DEFAULTCONFIGFILENAME "encoder.cfg"
  13. #define PROFILE_IDC     88
  14. #define LEVEL_IDC       21
  15. typedef struct {
  16.   char *TokenName;
  17.   void *Place;
  18.   int Type;
  19.   double Default;
  20.   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
  21.   double min_limit;
  22.   double max_limit;
  23. } Mapping;
  24. InputParameters configinput;
  25. #ifdef INCLUDED_BY_CONFIGFILE_C
  26. // Mapping_Map Syntax:
  27. // {NAMEinConfigFile,  &configinput.VariableName, Type, InitialValue, LimitType, MinLimit, MaxLimit}
  28. // Types : {0:int, 1:text, 2: double}
  29. // LimitType: {0:none, 1:both, 2:minimum, 3: QP based}
  30. // We could separate this based on types to make it more flexible and allow also defaults for text types.
  31. Mapping Map[] = {
  32.     {"ProfileIDC",               &configinput.ProfileIDC,                   0,   (double) PROFILE_IDC,      0,  0.0,              0.0              },
  33.     {"IntraProfile",             &configinput.IntraProfile,                 0,   0.0,                       3,  0.0,              1.0              }, 
  34.     {"LevelIDC",                 &configinput.LevelIDC,                     0,   (double) LEVEL_IDC,        0,  0.0,              0.0              },
  35.     {"FrameRate",                &configinput.FrameRate,                    2,   (double) INIT_FRAME_RATE,  1,  0.0,            100.0              },
  36.     {"ResendSPS",                &configinput.ResendSPS,                    0,   0.0,                       1,  0.0,              1.0              },
  37.     {"StartFrame",               &configinput.start_frame,                  0,   0.0,                       2,  0.0,              0.0              },
  38.     {"IntraPeriod",              &configinput.intra_period,                 0,   0.0,                       2,  0.0,              0.0              },
  39.     {"IDRPeriod",                &configinput.idr_period,                   0,   0.0,                       2,  0.0,              0.0              },
  40.     {"IntraDelay",               &configinput.intra_delay,                  0,   0.0,                       2,  0.0,              0.0              },
  41.     {"AdaptiveIntraPeriod",      &configinput.adaptive_intra_period,        0,   0.0,                       1,  0.0,              1.0              },
  42.     {"AdaptiveIDRPeriod",        &configinput.adaptive_idr_period,          0,   0.0,                       1,  0.0,              2.0              },
  43.     {"EnableOpenGOP",            &configinput.EnableOpenGOP,                0,   0.0,                       1,  0.0,              1.0              },
  44.     {"EnableIDRGOP",             &configinput.EnableIDRGOP,                 0,   0.0,                       1,  0.0,              1.0              },    
  45.     {"FramesToBeEncoded",        &configinput.no_frames,                    0,   1.0,                       2, -1.0,              0.0              },
  46.     {"QPISlice",                 &configinput.qp0,                          0,   24.0,                      3,  (double) MIN_QP,  (double) MAX_QP  },
  47.     {"QPPSlice",                 &configinput.qpN,                          0,   24.0,                      3,  (double) MIN_QP,  (double) MAX_QP  },
  48.     {"QPBSlice",                 &configinput.qpB,                          0,   24.0,                      3,  (double) MIN_QP,  (double) MAX_QP  },
  49.     {"FrameSkip",                &configinput.jumpd,                        0,   0.0,                       2,  0.0,              0.0              },
  50.     {"DisableSubpelME",          &configinput.DisableSubpelME,              0,   0.0,                       1,  0.0,              1.0              },
  51.     {"SearchRange",              &configinput.search_range,                 0,   16.0,                      2,  0.0,              0.0              },
  52.     {"NumberReferenceFrames",    &configinput.num_ref_frames,               0,   1.0,                       1,  0.0,             16.0              },
  53.     {"PList0References",         &configinput.P_List0_refs,                 0,   0.0,                       1,  0.0,             16.0              },
  54.     {"BList0References",         &configinput.B_List0_refs,                 0,   0.0,                       1,  0.0,             16.0              },
  55.     {"BList1References",         &configinput.B_List1_refs,                 0,   1.0,                       1,  0.0,             16.0              },
  56.     {"Log2MaxFNumMinus4",        &configinput.Log2MaxFNumMinus4,            0,   0.0,                       1, -1.0,             12.0              },
  57.     {"Log2MaxPOCLsbMinus4",      &configinput.Log2MaxPOCLsbMinus4,          0,   2.0,                       1, -1.0,             12.0              },
  58.     {"GenerateMultiplePPS",      &configinput.GenerateMultiplePPS,          0,   0.0,                       1,  0.0,              1.0              },
  59.     {"ResendPPS",                &configinput.ResendPPS,                    0,   0.0,                       1,  0.0,              1.0              },
  60.     {"SourceWidth",              &configinput.source.width,                 0,   176.0,                     2, 16.0,              0.0              },
  61.     {"SourceHeight",             &configinput.source.height,                0,   144.0,                     2, 16.0,              0.0              },
  62.     {"SourceResize",             &configinput.src_resize,                   0,   0.0,                       1,  0.0,              1.0              },
  63.     {"OutputWidth",              &configinput.output.width,                 0,   176.0,                     2, 16.0,              0.0              },
  64.     {"OutputHeight",             &configinput.output.height,                0,   144.0,                     2, 16.0,              0.0              },
  65.     {"MbLineIntraUpdate",        &configinput.intra_upd,                    0,   0.0,                       1,  0.0,              1.0              },
  66.     {"SliceMode",                &configinput.slice_mode,                   0,   0.0,                       1,  0.0,              3.0              },
  67.     {"SliceArgument",            &configinput.slice_argument,               0,   1.0,                       2,  1.0,              1.0              },
  68.     {"UseConstrainedIntraPred",  &configinput.UseConstrainedIntraPred,      0,   0.0,                       1,  0.0,              1.0              },
  69.     {"InputFile",                &configinput.infile,                       1,   0.0,                       0,  0.0,              0.0              },
  70.     {"InputHeaderLength",        &configinput.infile_header,                0,   0.0,                       2,  0.0,              1.0              },
  71.     {"OutputFile",               &configinput.outfile,                      1,   0.0,                       0,  0.0,              0.0              },
  72.     {"ReconFile",                &configinput.ReconFile,                    1,   0.0,                       0,  0.0,              0.0              },
  73.     {"TraceFile",                &configinput.TraceFile,                    1,   0.0,                       0,  0.0,              0.0              },
  74.     {"StatsFile",                &configinput.StatsFile,                    1,   0.0,                       0,  0.0,              0.0              },
  75.     {"DisposableP",              &configinput.DisposableP,                  0,   0.0,                       1,  0.0,              1.0              },
  76.     {"DispPQPOffset",            &configinput.DispPQPOffset,                0,   0.0,                       0,-51.0,             51.0              },
  77.     {"NumberBFrames",            &configinput.successive_Bframe,            0,   0.0,                       2,  0.0,              0.0              },
  78.     {"PReplaceBSlice",           &configinput.PReplaceBSlice,               0,   0.0,                       1,  0.0,              1.0              },
  79.     {"BRefPicQPOffset",          &configinput.qpBRSOffset,                  0,   0.0,                       0,-51.0,             51.0              },
  80.     {"DirectModeType",           &configinput.direct_spatial_mv_pred_flag,  0,   0.0,                       1,  0.0,              1.0              },
  81.     {"DirectInferenceFlag",      &configinput.directInferenceFlag,          0,   1.0,                       1,  0.0,              1.0              },
  82.     {"SPPicturePeriodicity",     &configinput.sp_periodicity,               0,   0.0,                       2,  0.0,              0.0              },
  83.     {"QPSPSlice",                &configinput.qpsp,                         0,   24.0,                      3,  (double) MIN_QP,  (double) MAX_QP  },
  84.     {"QPSP2Slice",               &configinput.qpsp_pred,                    0,   24.0,                      3,  (double) MIN_QP,  (double) MAX_QP  },
  85.     {"SI_FRAMES",                &configinput.si_frame_indicator,           0,   0.0,                       1,  0.0,              1.0              },
  86.     {"SP_output",                &configinput.sp_output_indicator,          0,   0.0,                       1,  0.0,              1.0              },
  87.     {"SP_output_name",           &configinput.sp_output_filename,           1,   0.0,                       0,  0.0,              0.0              },
  88.     {"SP2_FRAMES",               &configinput.sp2_frame_indicator,          0,   0.0,                       1,  0.0,              1.0              },
  89.     {"SP2_input_name1",          &configinput.sp2_input_filename1,          1,   0.0,                       0,  0.0,              0.0              },
  90.     {"SP2_input_name2",          &configinput.sp2_input_filename2,          1,   0.0,                       0,  0.0,              0.0              },
  91.     {"SymbolMode",               &configinput.symbol_mode,                  0,   0.0,                       1,  (double) CAVLC,  (double) CABAC   },
  92.     {"OutFileMode",              &configinput.of_mode,                      0,   0.0,                       1,  0.0,              1.0              },
  93.     {"PartitionMode",            &configinput.partition_mode,               0,   0.0,                       1,  0.0,              1.0              },
  94.     {"PSliceSkip",               &configinput.InterSearch[0][0],            0,   1.0,                       1,  0.0,              1.0              },
  95.     {"PSliceSearch16x16",        &configinput.InterSearch[0][1],            0,   1.0,                       1,  0.0,              1.0              },
  96.     {"PSliceSearch16x8",         &configinput.InterSearch[0][2],            0,   1.0,                       1,  0.0,              1.0              },
  97.     {"PSliceSearch8x16",         &configinput.InterSearch[0][3],            0,   1.0,                       1,  0.0,              1.0              },
  98.     {"PSliceSearch8x8",          &configinput.InterSearch[0][4],            0,   1.0,                       1,  0.0,              1.0              },
  99.     {"PSliceSearch8x4",          &configinput.InterSearch[0][5],            0,   1.0,                       1,  0.0,              1.0              },
  100.     {"PSliceSearch4x8",          &configinput.InterSearch[0][6],            0,   1.0,                       1,  0.0,              1.0              },
  101.     {"PSliceSearch4x4",          &configinput.InterSearch[0][7],            0,   1.0,                       1,  0.0,              1.0              },
  102.     {"BSliceDirect",               &configinput.InterSearch[1][0],            0,   1.0,                       1,  0.0,              1.0              },
  103.     {"BSliceSearch16x16",        &configinput.InterSearch[1][1],            0,   1.0,                       1,  0.0,              1.0              },
  104.     {"BSliceSearch16x8",         &configinput.InterSearch[1][2],            0,   1.0,                       1,  0.0,              1.0              },
  105.     {"BSliceSearch8x16",         &configinput.InterSearch[1][3],            0,   1.0,                       1,  0.0,              1.0              },
  106.     {"BSliceSearch8x8",          &configinput.InterSearch[1][4],            0,   1.0,                       1,  0.0,              1.0              },
  107.     {"BSliceSearch8x4",          &configinput.InterSearch[1][5],            0,   1.0,                       1,  0.0,              1.0              },
  108.     {"BSliceSearch4x8",          &configinput.InterSearch[1][6],            0,   1.0,                       1,  0.0,              1.0              },
  109.     {"BSliceSearch4x4",          &configinput.InterSearch[1][7],            0,   1.0,                       1,  0.0,              1.0              },
  110.     {"DisableIntraInInter",      &configinput.DisableIntraInInter,          0,   0.0,                       1,  0.0,              1.0              },
  111.     {"IntraDisableInterOnly",    &configinput.IntraDisableInterOnly,        0,   0.0,                       1,  0.0,              1.0              },
  112.     {"DisableIntra4x4",          &configinput.DisableIntra4x4,              0,   0.0,                       1,  0.0,              1.0              },       
  113.     {"DisableIntra16x16",        &configinput.DisableIntra16x16,            0,   0.0,                       1,  0.0,              1.0              },   
  114.     {"Intra4x4ParDisable",       &configinput.Intra4x4ParDisable,           0,   0.0,                       1,  0.0,              1.0              },
  115.     {"Intra4x4DiagDisable",      &configinput.Intra4x4DiagDisable,          0,   0.0,                       1,  0.0,              1.0              },
  116.     {"Intra4x4DirDisable",       &configinput.Intra4x4DirDisable,           0,   0.0,                       1,  0.0,              1.0              },
  117.     {"Intra16x16ParDisable",     &configinput.Intra16x16ParDisable,         0,   0.0,                       1,  0.0,              1.0              },
  118.     {"Intra16x16PlaneDisable",   &configinput.Intra16x16PlaneDisable,       0,   0.0,                       1,  0.0,              1.0              },
  119.     {"EnableIPCM",               &configinput.EnableIPCM,                   0,   0.0,                       1,  0.0,              1.0              },
  120.     {"ChromaIntraDisable",       &configinput.ChromaIntraDisable,           0,   0.0,                       1,  0.0,              1.0              },
  121.     // For future use
  122.     {"FastMDEnable",             &configinput.FastMDEnable,                 0,   0.0,                       1,  0.0,              0.0              },           
  123.     {"FastIntraMD",              &configinput.FastIntraMD,                  0,   0.0,                       1,  0.0,              0.0              },    
  124.     {"FastIntra4x4",             &configinput.FastIntra4x4,                 0,   0.0,                       1,  0.0,              0.0              },
  125.     {"FastIntra16x16",           &configinput.FastIntra16x16,               0,   0.0,                       1,  0.0,              0.0              },
  126.     {"FastIntra8x8",             &configinput.FastIntra8x8,                 0,   0.0,                       1,  0.0,              0.0              },
  127.     {"FastIntraChroma",          &configinput.FastIntraChroma,              0,   0.0,                       1,  0.0,              0.0              },
  128.     
  129. #ifdef _ADAPT_LAST_GROUP_
  130.     {"LastFrameNumber",          &configinput.last_frame,                   0,   0.0,                       2,  0.0,              0.0              },
  131. #endif
  132. #ifdef _CHANGE_QP_
  133.     {"ChangeQPI",                &configinput.qp02,                         0,   24.0,                      3,  (double) MIN_QP,  (double) MAX_QP  },
  134.     {"ChangeQPP",                &configinput.qpN2,                         0,   24.0,                      3,  (double) MIN_QP,  (double) MAX_QP  },
  135.     {"ChangeQPB",                &configinput.qpB2,                         0,   24.0,                      3,  (double) MIN_QP,  (double) MAX_QP  },
  136.     {"ChangeQPBSRefOffset",      &configinput.qpBRS2Offset,                 0,   0.0,                       1,-51.0,             51.0              },
  137.     {"ChangeQPStart",            &configinput.qp2start,                     0,   0.0,                       2,  0.0,              0.0              },
  138. #endif
  139.     {"RDOptimization",           &configinput.rdopt,                        0,   0.0,                       1,  0.0,              3.0              },
  140.     {"DistortionSSIM",           &configinput.Distortion[SSIM],             0,   0.0,                       1,  0.0,              1.0              },
  141.     {"DistortionMS_SSIM",        &configinput.Distortion[MS_SSIM],          0,   0.0,                       1,  0.0,              1.0              },
  142.     {"SSIMOverlapSize",          &configinput.SSIMOverlapSize,              0,   1.0,                       2,  1.0,              1.0              },
  143.     {"DistortionYUVtoRGB",       &configinput.DistortionYUVtoRGB,           0,   0.0,                       1,  0.0,              1.0              },
  144.     {"CtxAdptLagrangeMult",      &configinput.CtxAdptLagrangeMult,          0,   0.0,                       1,  0.0,              1.0              },
  145.     {"FastCrIntraDecision",      &configinput.FastCrIntraDecision,          0,   0.0,                       1,  0.0,              1.0              },
  146.     {"DisableThresholding",      &configinput.disthres,                     0,   0.0,                       1,  0.0,              1.0              },
  147.     {"DisableBSkipRDO",          &configinput.nobskip,                      0,   0.0,                       1,  0.0,              1.0              },
  148.     {"LossRateA",                &configinput.LossRateA,                    0,   0.0,                       2,  0.0,              0.0              },
  149.     {"LossRateB",                &configinput.LossRateB,                    0,   0.0,                       2,  0.0,              0.0              },
  150.     {"LossRateC",                &configinput.LossRateC,                    0,   0.0,                       2,  0.0,              0.0              },
  151.     {"NumberOfDecoders",         &configinput.NoOfDecoders,                 0,   0.0,                       2,  0.0,              0.0              },
  152.     {"ErrorConcealment",         &configinput.ErrorConcealment,             0,   0.0,                       2,  0.0,              0.0              },
  153.     {"RestrictRefFrames",        &configinput.RestrictRef ,                 0,   0.0,                       1,  0.0,              1.0              },
  154. #ifdef _LEAKYBUCKET_
  155.     {"NumberofLeakyBuckets",     &configinput.NumberLeakyBuckets,           0,   2.0,                       1,  2.0,              255.0            },
  156.     {"LeakyBucketRateFile",      &configinput.LeakyBucketRateFile,          1,   0.0,                       0,  0.0,              0.0              },
  157.     {"LeakyBucketParamFile",     &configinput.LeakyBucketParamFile,         1,   0.0,                       0,  0.0,              0.0              },
  158. #endif
  159.     {"PicInterlace",             &configinput.PicInterlace,                 0,   0.0,                       1,  0.0,              2.0              },
  160.     {"MbInterlace",              &configinput.MbInterlace,                  0,   0.0,                       1,  0.0,              3.0              },
  161.     {"IntraBottom",              &configinput.IntraBottom,                  0,   0.0,                       1,  0.0,              1.0              },
  162.     {"NumFramesInELayerSubSeq",  &configinput.NumFramesInELSubSeq,          0,   0.0,                       2,  0.0,              0.0              },
  163.     {"RandomIntraMBRefresh",     &configinput.RandomIntraMBRefresh,         0,   0.0,                       2,  0.0,              0.0              },
  164.     {"WeightedPrediction",       &configinput.WeightedPrediction,           0,   0.0,                       1,  0.0,              1.0              },
  165.     {"WeightedBiprediction",     &configinput.WeightedBiprediction,         0,   0.0,                       1,  0.0,              2.0              },
  166.     {"WPMethod",                 &configinput.WPMethod,                     0,   0.0,                       1,  0.0,              1.0              }, 
  167.     {"ChromaWeightSupport",      &configinput.ChromaWeightSupport,          0,   0.0,                       1,  0.0,              1.0              },    
  168.     {"EnhancedBWeightSupport",   &configinput.EnhancedBWeightSupport,       0,   0.0,                       1,  0.0,              1.0              },    
  169.     {"UseWeightedReferenceME",   &configinput.UseWeightedReferenceME,       0,   0.0,                       1,  0.0,              1.0              },
  170.     {"RDPictureDecision",        &configinput.RDPictureDecision,            0,   0.0,                       1,  0.0,              1.0              },
  171.     {"RDPictureIntra",           &configinput.RDPictureIntra,               0,   0.0,                       1,  0.0,              1.0              },
  172.     {"RDPSliceWeightOnly",       &configinput.RDPSliceWeightOnly,           0,   1.0,                       1,  0.0,              2.0              },
  173.     {"RDPSliceBTest",            &configinput.RDPSliceBTest,                0,   0.0,                       1,  0.0,              1.0              },
  174.     {"RDBSliceWeightOnly",       &configinput.RDBSliceWeightOnly,           0,   0.0,                       1,  0.0,              2.0              },
  175.     {"SkipIntraInInterSlices",   &configinput.SkipIntraInInterSlices,       0,   0.0,                       1,  0.0,              1.0              },
  176.     {"BReferencePictures",       &configinput.BRefPictures,                 0,   0.0,                       1,  0.0,              2.0              },
  177.     {"HierarchicalCoding",       &configinput.HierarchicalCoding,           0,   0.0,                       1,  0.0,              3.0              },
  178.     {"HierarchyLevelQPEnable",   &configinput.HierarchyLevelQPEnable,       0,   0.0,                       1,  0.0,              1.0              },
  179.     {"ExplicitHierarchyFormat",  &configinput.ExplicitHierarchyFormat,      1,   0.0,                       0,  0.0,              0.0              },
  180.     {"ReferenceReorder",         &configinput.ReferenceReorder,             0,   0.0,                       1,  0.0,              1.0              },
  181.     {"PocMemoryManagement",      &configinput.PocMemoryManagement,          0,   0.0,                       1,  0.0,              1.0              },
  182.     //Bipredicting Motion Estimation parameters
  183.     {"BiPredMotionEstimation",   &configinput.BiPredMotionEstimation,       0,   0.0,                       1,  0.0,              1.0              },
  184.     {"BiPredSearch16x16",        &configinput.BiPredSearch[0],              0,   1.0,                       1,  0.0,              1.0              },
  185.     {"BiPredSearch16x8",         &configinput.BiPredSearch[1],              0,   0.0,                       1,  0.0,              1.0              },
  186.     {"BiPredSearch8x16",         &configinput.BiPredSearch[2],              0,   0.0,                       1,  0.0,              1.0              },
  187.     {"BiPredSearch8x8",          &configinput.BiPredSearch[3],              0,   0.0,                       1,  0.0,              1.0              },
  188.     
  189.     {"BiPredMERefinements",      &configinput.BiPredMERefinements,          0,   0.0,                       1,  0.0,              5.0              },
  190.     {"BiPredMESearchRange",      &configinput.BiPredMESearchRange,          0,   8.0,                       2,  0.0,              0.0              },
  191.     {"BiPredMESubPel",           &configinput.BiPredMESubPel,               0,   1.0,                       1,  0.0,              2.0              },
  192.     {"DFParametersFlag",         &configinput.DFSendParameters,             0,   0.0,                       1,  0.0,              1.0              },
  193.     {"DFDisableRefISlice",       &configinput.DFDisableIdc[1][I_SLICE],     0,   0.0,                       1,  0.0,              2.0              },
  194.     {"DFDisableNRefISlice",      &configinput.DFDisableIdc[0][I_SLICE],     0,   0.0,                       1,  0.0,              2.0              },
  195.     {"DFDisableRefPSlice",       &configinput.DFDisableIdc[1][P_SLICE],     0,   0.0,                       1,  0.0,              2.0              },
  196.     {"DFDisableNRefPSlice",      &configinput.DFDisableIdc[0][P_SLICE],     0,   0.0,                       1,  0.0,              2.0              },
  197.     {"DFDisableRefBSlice",       &configinput.DFDisableIdc[1][B_SLICE],     0,   0.0,                       1,  0.0,              2.0              },
  198.     {"DFDisableNRefBSlice",      &configinput.DFDisableIdc[0][B_SLICE],     0,   0.0,                       1,  0.0,              2.0              },
  199.     {"DFDisableRefSPSlice",      &configinput.DFDisableIdc[1][SP_SLICE],    0,   0.0,                       1,  0.0,              2.0              },
  200.     {"DFDisableNRefSPSlice",     &configinput.DFDisableIdc[0][SP_SLICE],    0,   0.0,                       1,  0.0,              2.0              },
  201.     {"DFDisableRefSISlice",      &configinput.DFDisableIdc[1][SI_SLICE],    0,   0.0,                       1,  0.0,              2.0              },
  202.     {"DFDisableNRefSISlice",     &configinput.DFDisableIdc[0][SI_SLICE],    0,   0.0,                       1,  0.0,              2.0              },
  203.     {"DFAlphaRefISlice",         &configinput.DFAlpha[1][I_SLICE],          0,   0.0,                       1, -6.0,              6.0              },
  204.     {"DFAlphaNRefISlice",        &configinput.DFAlpha[0][I_SLICE],          0,   0.0,                       1, -6.0,              6.0              },
  205.     {"DFAlphaRefPSlice",         &configinput.DFAlpha[1][P_SLICE],          0,   0.0,                       1, -6.0,              6.0              },
  206.     {"DFAlphaNRefPSlice",        &configinput.DFAlpha[0][P_SLICE],          0,   0.0,                       1, -6.0,              6.0              },
  207.     {"DFAlphaRefBSlice",         &configinput.DFAlpha[1][B_SLICE],          0,   0.0,                       1, -6.0,              6.0              },
  208.     {"DFAlphaNRefBSlice",        &configinput.DFAlpha[0][B_SLICE],          0,   0.0,                       1, -6.0,              6.0              },
  209.     {"DFAlphaRefSPSlice",        &configinput.DFAlpha[1][SP_SLICE],         0,   0.0,                       1, -6.0,              6.0              },
  210.     {"DFAlphaNRefSPSlice",       &configinput.DFAlpha[0][SP_SLICE],         0,   0.0,                       1, -6.0,              6.0              },
  211.     {"DFAlphaRefSISlice",        &configinput.DFAlpha[1][SI_SLICE],         0,   0.0,                       1, -6.0,              6.0              },
  212.     {"DFAlphaNRefSISlice",       &configinput.DFAlpha[0][SI_SLICE],         0,   0.0,                       1, -6.0,              6.0              },
  213.     {"DFBetaRefISlice",          &configinput.DFBeta[1][I_SLICE],           0,   0.0,                       1, -6.0,              6.0              },
  214.     {"DFBetaNRefISlice",         &configinput.DFBeta[0][I_SLICE],           0,   0.0,                       1, -6.0,              6.0              },
  215.     {"DFBetaRefPSlice",          &configinput.DFBeta[1][P_SLICE],           0,   0.0,                       1, -6.0,              6.0              },
  216.     {"DFBetaNRefPSlice",         &configinput.DFBeta[0][P_SLICE],           0,   0.0,                       1, -6.0,              6.0              },
  217.     {"DFBetaRefBSlice",          &configinput.DFBeta[1][B_SLICE],           0,   0.0,                       1, -6.0,              6.0              },
  218.     {"DFBetaNRefBSlice",         &configinput.DFBeta[0][B_SLICE],           0,   0.0,                       1, -6.0,              6.0              },
  219.     {"DFBetaRefSPSlice",         &configinput.DFBeta[1][SP_SLICE],          0,   0.0,                       1, -6.0,              6.0              },
  220.     {"DFBetaNRefSPSlice",        &configinput.DFBeta[0][SP_SLICE],          0,   0.0,                       1, -6.0,              6.0              },
  221.     {"DFBetaRefSISlice",         &configinput.DFBeta[1][SI_SLICE],          0,   0.0,                       1, -6.0,              6.0              },
  222.     {"DFBetaNRefSISlice",        &configinput.DFBeta[0][SI_SLICE],          0,   0.0,                       1, -6.0,              6.0              },
  223.     {"SparePictureOption",       &configinput.SparePictureOption,           0,   0.0,                       1,  0.0,              1.0              },
  224.     {"SparePictureDetectionThr", &configinput.SPDetectionThreshold,         0,   0.0,                       2,  0.0,              0.0              },
  225.     {"SparePicturePercentageThr",&configinput.SPPercentageThreshold,        0,   0.0,                       2,  0.0,            100.0              },
  226.     {"num_slice_groups_minus1",  &configinput.num_slice_groups_minus1,      0,   0.0,                       1,  0.0,  (double)MAXSLICEGROUPIDS - 1 },
  227.     {"slice_group_map_type",     &configinput.slice_group_map_type,         0,   0.0,                       1,  0.0,              6.0              },
  228.     {"slice_group_change_direction_flag", &configinput.slice_group_change_direction_flag, 0,   0.0,         1,  0.0,              2.0              },
  229.     {"slice_group_change_rate_minus1",    &configinput.slice_group_change_rate_minus1,    0,   0.0,         2,  0.0,              1.0              },
  230.     {"SliceGroupConfigFileName", &configinput.SliceGroupConfigFileName,     1,   0.0,                       0,  0.0,              0.0              },
  231.     {"UseRedundantPicture",      &configinput.redundant_pic_flag,           0,   0.0,                       1,  0.0,              1.0              },
  232.     {"NumRedundantHierarchy",    &configinput.NumRedundantHierarchy,        0,   0.0,                       1,  0.0,              4.0              },
  233.     {"PrimaryGOPLength",         &configinput.PrimaryGOPLength,             0,   1.0,                       1,  1.0,              16.0             },
  234.     {"NumRefPrimary",            &configinput.NumRefPrimary,                0,   1.0,                       1,  1.0,              16.0             },
  235.     {"PicOrderCntType",          &configinput.pic_order_cnt_type,           0,   0.0,                       1,  0.0,              2.0              },
  236.     {"ContextInitMethod",        &configinput.context_init_method,          0,   0.0,                       1,  0.0,              1.0              },
  237.     {"FixedModelNumber",         &configinput.model_number,                 0,   0.0,                       1,  0.0,              2.0              },
  238.     {"ReportFrameStats",         &configinput.ReportFrameStats,             0,   0.0,                       1,  0.0,              1.0              },
  239.     {"DisplayEncParams",         &configinput.DisplayEncParams,             0,   0.0,                       1,  0.0,              1.0              },
  240.     {"Verbose",                  &configinput.Verbose,                      0,   1.0,                       1,  0.0,              2.0              },
  241.     {"ChromaMCBuffer",           &configinput.ChromaMCBuffer,               0,   0.0,                       1,  0.0,              1.0              },
  242.     {"ChromaMEEnable",           &configinput.ChromaMEEnable,               0,   0.0,                       1,  0.0,              2.0              },
  243.     {"ChromaMEWeight",           &configinput.ChromaMEWeight,               0,   1.0,                       2,  1.0,              0.0              },
  244.     {"MEDistortionFPel",         &configinput.MEErrorMetric[F_PEL],         0,   0.0,                       1,  0.0,              3.0              },
  245.     {"MEDistortionHPel",         &configinput.MEErrorMetric[H_PEL],         0,   0.0,                       1,  0.0,              3.0              },
  246.     {"MEDistortionQPel",         &configinput.MEErrorMetric[Q_PEL],         0,   0.0,                       1,  0.0,              3.0              },
  247.     {"MDDistortion",             &configinput.ModeDecisionMetric,           0,   2.0,                       1,  0.0,              2.0              },
  248.     {"SkipDeBlockNonRef",        &configinput.SkipDeBlockNonRef,            0,   0.0,                       1,  0.0,              1.0              },
  249.     // Rate Control
  250.     {"RateControlEnable",        &configinput.RCEnable,                     0,   0.0,                       1,  0.0,              1.0              },
  251.     {"Bitrate",                  &configinput.bit_rate,                     0,   0.0,                       2,  0.0,              0.0              },
  252.     {"InitialQP",                &configinput.SeinitialQP,                  0,   0.0,                       3,  (double) MIN_QP,  (double) MAX_QP  },
  253.     {"BasicUnit",                &configinput.basicunit,                    0,   0.0,                       2,  0.0,              0.0              },
  254.     {"ChannelType",              &configinput.channel_type,                 0,   0.0,                       1,  0.0,              1.0              },
  255.     {"RCUpdateMode",             &configinput.RCUpdateMode,                 0,   0.0,                       1,  0.0,              4.0              },
  256.     {"RCISliceBitRatio",         &configinput.RCISliceBitRatio,             2,   1.0,                       1,  0.0,              20.0             },
  257.     {"RCBSliceBitRatio0",        &configinput.RCBSliceBitRatio[0],          2,   0.5,                       1,  0.0,              20.0             },
  258.     {"RCBSliceBitRatio1",        &configinput.RCBSliceBitRatio[1],          2,   0.25,                      1,  0.0,              20.0             },
  259.     {"RCBSliceBitRatio2",        &configinput.RCBSliceBitRatio[2],          2,   0.25,                      1,  0.0,              20.0             },
  260.     {"RCBSliceBitRatio3",        &configinput.RCBSliceBitRatio[3],          2,   0.25,                      1,  0.0,              20.0             },
  261.     {"RCBSliceBitRatio4",        &configinput.RCBSliceBitRatio[4],          2,   0.25,                      1,  0.0,              20.0             },
  262.     {"RCBoverPRatio",            &configinput.RCBoverPRatio,                2,   0.45,                      1,  0.0,              1000.0           },
  263.     {"RCIoverPRatio",            &configinput.RCIoverPRatio,                2,   3.80,                      1,  0.0,              1000.0           },
  264.     {"RCMinQPPSlice",            &configinput.RCMinQP[P_SLICE],             0,   (double) MIN_QP,           3,  (double) MIN_QP,  (double) MAX_QP  },
  265.     {"RCMaxQPPSlice",            &configinput.RCMaxQP[P_SLICE],             0,   (double) MAX_QP,           3,  (double) MIN_QP,  (double) MAX_QP  },
  266.     {"RCMinQPBSlice",            &configinput.RCMinQP[B_SLICE],             0,   (double) MIN_QP,           3,  (double) MIN_QP,  (double) MAX_QP  },
  267.     {"RCMaxQPBSlice",            &configinput.RCMaxQP[B_SLICE],             0,   (double) MAX_QP,           3,  (double) MIN_QP,  (double) MAX_QP  },
  268.     {"RCMinQPISlice",            &configinput.RCMinQP[I_SLICE],             0,   (double) MIN_QP,           3,  (double) MIN_QP,  (double) MAX_QP  },
  269.     {"RCMaxQPISlice",            &configinput.RCMaxQP[I_SLICE],             0,   (double) MAX_QP,           3,  (double) MIN_QP,  (double) MAX_QP  },
  270.     {"RCMinQPSPSlice",           &configinput.RCMinQP[SP_SLICE],            0,   (double) MIN_QP,           3,  (double) MIN_QP,  (double) MAX_QP  },
  271.     {"RCMaxQPSPSlice",           &configinput.RCMaxQP[SP_SLICE],            0,   (double) MAX_QP,           3,  (double) MIN_QP,  (double) MAX_QP  },
  272.     {"RCMinQPSISlice",           &configinput.RCMinQP[SI_SLICE],            0,   (double) MIN_QP,           3,  (double) MIN_QP,  (double) MAX_QP  },
  273.     {"RCMaxQPSISlice",           &configinput.RCMaxQP[SI_SLICE],            0,   (double) MAX_QP,           3,  (double) MIN_QP,  (double) MAX_QP  },
  274.     {"RCMaxQPChange",            &configinput.RCMaxQPChange,                0,   4.0,                       1,  0.0,              10.0             },
  275.     // Q_Matrix
  276.     {"QmatrixFile",              &configinput.QmatrixFile,                  1,   0.0,                       0,  0.0,              0.0              },
  277.     {"ScalingMatrixPresentFlag", &configinput.ScalingMatrixPresentFlag,     0,   0.0,                       1,  0.0,              3.0              },
  278.     {"ScalingListPresentFlag0",  &configinput.ScalingListPresentFlag[0],    0,   0.0,                       1,  0.0,              3.0              },
  279.     {"ScalingListPresentFlag1",  &configinput.ScalingListPresentFlag[1],    0,   0.0,                       1,  0.0,              3.0              },
  280.     {"ScalingListPresentFlag2",  &configinput.ScalingListPresentFlag[2],    0,   0.0,                       1,  0.0,              3.0              },
  281.     {"ScalingListPresentFlag3",  &configinput.ScalingListPresentFlag[3],    0,   0.0,                       1,  0.0,              3.0              },
  282.     {"ScalingListPresentFlag4",  &configinput.ScalingListPresentFlag[4],    0,   0.0,                       1,  0.0,              3.0              },
  283.     {"ScalingListPresentFlag5",  &configinput.ScalingListPresentFlag[5],    0,   0.0,                       1,  0.0,              3.0              },
  284.     {"ScalingListPresentFlag6",  &configinput.ScalingListPresentFlag[6],    0,   0.0,                       1,  0.0,              3.0              },
  285.     {"ScalingListPresentFlag7",  &configinput.ScalingListPresentFlag[7],    0,   0.0,                       1,  0.0,              3.0              },
  286.     {"ScalingListPresentFlag8",  &configinput.ScalingListPresentFlag[8],    0,   0.0,                       1,  0.0,              3.0              },
  287.     {"ScalingListPresentFlag9",  &configinput.ScalingListPresentFlag[9],    0,   0.0,                       1,  0.0,              3.0              },
  288.     {"ScalingListPresentFlag10", &configinput.ScalingListPresentFlag[10],   0,   0.0,                       1,  0.0,              3.0              },
  289.     {"ScalingListPresentFlag11", &configinput.ScalingListPresentFlag[11],   0,   0.0,                       1,  0.0,              3.0              },
  290.     // Chroma QP Offset
  291.     {"ChromaQPOffset",           &configinput.chroma_qp_index_offset,       0,   0.0,                       1,-51.0,             51.0              },
  292.     // Fidelity Range Extensions
  293. // New Input bit-depth entries
  294.     {"SourceBitDepthLuma",       &configinput.source.bit_depth[0],          0,   8.0,                       1,  8.0,             14.0              },
  295.     {"SourceBitDepthChroma",     &configinput.source.bit_depth[1],          0,   8.0,                       1,  8.0,             14.0              },
  296.     {"SourceBitDepthRescale",    &configinput.src_BitDepthRescale,          0,   0.0,                       1,  0.0,              1.0              },
  297. // Old variables replaced from BitDepthLuma and BitDepthChroma. Considered only if SourceBitDepthRescale is 1.
  298.     {"OutputBitDepthLuma",       &configinput.output.bit_depth[0],          0,   8.0,                       1,  8.0,             14.0              },
  299.     {"OutputBitDepthChroma",     &configinput.output.bit_depth[1],          0,   8.0,                       1,  8.0,             14.0              },
  300.     {"YUVFormat",                &configinput.yuv_format,                   0,   1.0,                       1,  0.0,              3.0              },
  301.     {"RGBInput",                 &configinput.rgb_input_flag,               0,   0.0,                       1,  0.0,              1.0              },
  302.     {"CbQPOffset",               &configinput.cb_qp_index_offset,           0,   0.0,                       1,-51.0,             51.0              },
  303.     {"CrQPOffset",               &configinput.cr_qp_index_offset,           0,   0.0,                       1,-51.0,             51.0              },
  304.     {"Transform8x8Mode",         &configinput.Transform8x8Mode,             0,   0.0,                       1,  0.0,              2.0              },
  305.     // Lossless Coding
  306.     {"QPPrimeYZeroTransformBypassFlag", &configinput.lossless_qpprime_y_zero_flag,      0,   0.0,           1,  0.0,              1.0              },
  307.     // Explicit Lambda Parameters for RDO
  308.     {"UseExplicitLambdaParams",  &configinput.UseExplicitLambdaParams,      0,   0.0,                       1,  0.0,              3.0              },
  309.     {"UpdateLambdaChromaME",     &configinput.UpdateLambdaChromaME,         0,   0.0,                       1,  0.0,              3.0              },    
  310.     {"FixedLambdaPSlice",        &configinput.FixedLambda[0],               2,   0.1,                       2,  0.0,              0.0              },
  311.     {"FixedLambdaBSlice",        &configinput.FixedLambda[1],               2,   0.1,                       2,  0.0,              0.0              },
  312.     {"FixedLambdaISlice",        &configinput.FixedLambda[2],               2,   0.1,                       2,  0.0,              0.0              },
  313.     {"FixedLambdaSPSlice",       &configinput.FixedLambda[3],               2,   0.1,                       2,  0.0,              0.0              },
  314.     {"FixedLambdaSISlice",       &configinput.FixedLambda[4],               2,   0.1,                       2,  0.0,              0.0              },
  315.     {"FixedLambdaRefBSlice",     &configinput.FixedLambda[5],               2,   0.1,                       2,  0.0,              0.0              },
  316.     {"LambdaWeightPSlice",       &configinput.LambdaWeight[0],              2,   0.68,                      2,  0.0,              0.0              },
  317.     {"LambdaWeightBSlice",       &configinput.LambdaWeight[1],              2,   2.00,                      2,  0.0,              0.0              },
  318.     {"LambdaWeightISlice",       &configinput.LambdaWeight[2],              2,   0.65,                      2,  0.0,              0.0              },
  319.     {"LambdaWeightSPSlice",      &configinput.LambdaWeight[3],              2,   1.50,                      2,  0.0,              0.0              },
  320.     {"LambdaWeightSISlice",      &configinput.LambdaWeight[4],              2,   0.65,                      2,  0.0,              0.0              },
  321.     {"LambdaWeightRefBSlice",    &configinput.LambdaWeight[5],              2,   1.50,                      2,  0.0,              0.0              },
  322.     
  323.     // Usage of explicit "initial" offsets for quantization
  324.     {"QOffsetMatrixFile",        &configinput.QOffsetMatrixFile,            1,   0.0,                       0,  0.0,              0.0              },
  325.     {"OffsetMatrixPresentFlag",  &configinput.OffsetMatrixPresentFlag,      0,   0.0,                       1,  0.0,              1.0              },
  326.     // Adaptive rounding technique based on JVT-N011
  327.     {"AdaptiveRounding",         &configinput.AdaptiveRounding,             0,   0.0,                       1,  0.0,              1.0              },
  328.     {"AdaptRoundingFixed",       &configinput.AdaptRoundingFixed,           0,   1.0,                       1,  0.0,              1.0              },    
  329.     {"AdaptRndPeriod",           &configinput.AdaptRndPeriod,               0,  16.0,                       2,  1.0,              0.0              },
  330.     {"AdaptRndChroma",           &configinput.AdaptRndChroma,               0,   0.0,                       1,  0.0,              1.0              },
  331.     {"AdaptRndWFactorIRef",      &configinput.AdaptRndWFactor[1][I_SLICE],  0,   4.0,                       1,  0.0,           4096.0              },
  332.     {"AdaptRndWFactorPRef",      &configinput.AdaptRndWFactor[1][P_SLICE],  0,   4.0,                       1,  0.0,           4096.0              },
  333.     {"AdaptRndWFactorBRef",      &configinput.AdaptRndWFactor[1][B_SLICE],  0,   4.0,                       1,  0.0,           4096.0              },
  334.     {"AdaptRndWFactorINRef",     &configinput.AdaptRndWFactor[0][I_SLICE],  0,   4.0,                       1,  0.0,           4096.0              },
  335.     {"AdaptRndWFactorPNRef",     &configinput.AdaptRndWFactor[0][P_SLICE],  0,   4.0,                       1,  0.0,           4096.0              },
  336.     {"AdaptRndWFactorBNRef",     &configinput.AdaptRndWFactor[0][B_SLICE],  0,   4.0,                       1,  0.0,           4096.0              },
  337.     {"AdaptRndCrWFactorIRef",    &configinput.AdaptRndCrWFactor[1][I_SLICE],0,   4.0,                       1,  0.0,           4096.0              },
  338.     {"AdaptRndCrWFactorPRef",    &configinput.AdaptRndCrWFactor[1][P_SLICE],0,   4.0,                       1,  0.0,           4096.0              },
  339.     {"AdaptRndCrWFactorBRef",    &configinput.AdaptRndCrWFactor[1][B_SLICE],0,   4.0,                       1,  0.0,           4096.0              },
  340.     {"AdaptRndCrWFactorINRef",   &configinput.AdaptRndCrWFactor[0][I_SLICE],0,   4.0,                       1,  0.0,           4096.0              },
  341.     {"AdaptRndCrWFactorPNRef",   &configinput.AdaptRndCrWFactor[0][P_SLICE],0,   4.0,                       1,  0.0,           4096.0              },
  342.     {"AdaptRndCrWFactorBNRef",   &configinput.AdaptRndCrWFactor[0][B_SLICE],0,   4.0,                       1,  0.0,           4096.0              },
  343.     // Fast Mode Decision
  344.     {"EarlySkipEnable",          &configinput.EarlySkipEnable,              0,   0.0,                       1,  0.0,              1.0              },
  345.     {"SelectiveIntraEnable",     &configinput.SelectiveIntraEnable,         0,   0.0,                       1,  0.0,              1.0              },
  346.     //================================
  347.     // Motion Estimation (ME) Parameters
  348.     //================================
  349.     {"RestrictSearchRange",      &configinput.full_search,                  0,   2.0,                       1,  0.0,              2.0              },
  350.     // Fast ME enable
  351.     {"SearchMode",               &configinput.SearchMode,                   0,   0.0,                       1, -1.0,              4.0              },
  352.     // Parameters for UMHEX control
  353.     {"UMHexDSR",                 &configinput.UMHexDSR,                     0,   1.0,                       1,  0.0,              1.0              },
  354.     {"UMHexScale",               &configinput.UMHexScale,                   0,   1.0,                       0,  0.0,              0.0              },
  355.     // Parameters for EPZS control
  356.     {"EPZSPattern",              &configinput.EPZSPattern,                  0,   2.0,                       1,  0.0,              5.0              },
  357.     {"EPZSDualRefinement",       &configinput.EPZSDual,                     0,   3.0,                       1,  0.0,              6.0              },
  358.     {"EPZSFixedPredictors",      &configinput.EPZSFixed,                    0,   2.0,                       1,  0.0,              2.0              },
  359.     {"EPZSTemporal",             &configinput.EPZSTemporal,                 0,   1.0,                       1,  0.0,              1.0              },
  360.     {"EPZSSpatialMem",           &configinput.EPZSSpatialMem,               0,   1.0,                       1,  0.0,              1.0              },
  361.     {"EPZSBlockType",            &configinput.EPZSBlockType,                0,   1.0,                       1,  0.0,              1.0              },
  362.     {"EPZSMinThresScale",        &configinput.EPZSMinThresScale,            0,   0.0,                       0,  0.0,              0.0              },
  363.     {"EPZSMaxThresScale",        &configinput.EPZSMaxThresScale,            0,   2.0,                       0,  0.0,              0.0              },
  364.     {"EPZSMedThresScale",        &configinput.EPZSMedThresScale,            0,   1.0,                       0,  0.0,              0.0              },
  365.     {"EPZSSubPelME",             &configinput.EPZSSubPelME,                 0,   1.0,                       1,  0.0,              1.0              },
  366.     {"EPZSSubPelMEBiPred",       &configinput.EPZSSubPelMEBiPred,           0,   1.0,                       1,  0.0,              1.0              },
  367.     {"EPZSSubPelGrid",           &configinput.EPZSSubPelGrid,               0,   0.0,                       1,  0.0,              1.0              },
  368.     {"EPZSSubPelThresScale",     &configinput.EPZSSubPelThresScale,         0,   2.0,                       0,  0.0,              0.0              },
  369.     // Tone mapping SEI cfg file
  370.     {"ToneMappingSEIPresentFlag",&configinput.ToneMappingSEIPresentFlag,    0,   0.0,                       1,  0.0,              1.0              },
  371.     {"ToneMappingFile",          &configinput.ToneMappingFile,              1,   0.0,                       0,  0.0,              0.0              },
  372.     {"SeparateColourPlane",      &configinput.separate_colour_plane_flag,   0,   0.0,                       1,  0.0,              1.0              },
  373.     {"WeightY",                  &configinput.WeightY,                      2,   1.00,                      1,  0.0,              4.0              },
  374.     {"WeightCb",                 &configinput.WeightCb,                     2,   1.00,                      1,  0.0,              4.0              },
  375.     {"WeightCr",                 &configinput.WeightCr,                     2,   1.00,                      1,  0.0,              4.0              },
  376.     {"WPMCPrecision",            &configinput.WPMCPrecision,                0,   0.0,                       1,  0.0,              2.0              },
  377.     {"WPMCPrecFullRef",          &configinput.WPMCPrecFullRef,              0,   0.0,                       1,  0.0,              1.0              },
  378.     {"WPMCPrecBSlice",           &configinput.WPMCPrecBSlice,               0,   1.0,                       1,  0.0,              2.0              },
  379.     // Trellis based quantization
  380.     {"UseRDOQuant",              &configinput.UseRDOQuant,                  0,   0.0,                       1,  0.0,              1.0              },
  381.     {"RDOQ_DC",                  &configinput.RDOQ_DC,                      0,   1.0,                       1,  0.0,              1.0              },
  382.     {"RDOQ_CR",                  &configinput.RDOQ_CR,                      0,   1.0,                       1,  0.0,              1.0              },
  383.     {"RDOQ_QP_Num",              &configinput.RDOQ_QP_Num,                  0,   1.0,                       1,  1.0,              9.0              },
  384.     {"RDOQ_CP_Mode",             &configinput.RDOQ_CP_Mode,                 0,   0.0,                       1,  0.0,              1.0              },
  385.     {"RDOQ_CP_MV",               &configinput.RDOQ_CP_MV,                   0,   0.0,                       1,  0.0,              1.0              },
  386.     {"RDOQ_Fast",                &configinput.RDOQ_Fast,                    0,   0.0,                       1,  0.0,              1.0              },
  387.     // VUI parameters
  388.     {"GenerateSEIMessage",       &configinput.GenerateSEIMessage,           0,   0.0,                       1,  0.0,              1.0              },
  389.     {"EnableVUISupport",         &configinput.EnableVUISupport,             0,   0.0,                       1,  0.0,              1.0              },
  390.     {"VUI_aspect_ratio_info_present_flag",     &configinput.VUI.aspect_ratio_info_present_flag,     0,   0.0,                       1,  0.0,              1.0              },
  391.     {"VUI_aspect_ratio_idc",                   &configinput.VUI.aspect_ratio_idc,                   0,   0.0,                       1,  0.0,            255.0              },
  392.     {"VUI_sar_width",                          &configinput.VUI.sar_width,                          0,   0.0,                       2,  0.0,              0.0              },
  393.     {"VUI_sar_height",                         &configinput.VUI.sar_height,                         0,   0.0,                       2,  0.0,              0.0              },
  394.     {"VUI_overscan_info_present_flag",         &configinput.VUI.overscan_info_present_flag,         0,   0.0,                       1,  0.0,              1.0              },
  395.     {"VUI_overscan_appropriate_flag",          &configinput.VUI.overscan_appropriate_flag,          0,   0.0,                       1,  0.0,              1.0              },
  396.     {"VUI_video_signal_type_present_flag",     &configinput.VUI.video_signal_type_present_flag,     0,   0.0,                       1,  0.0,              1.0              },
  397.     {"VUI_video_format",                       &configinput.VUI.video_format,                       0,   5.0,                       1,  0.0,              7.0              },
  398.     {"VUI_video_full_range_flag",              &configinput.VUI.video_full_range_flag,              0,   0.0,                       1,  0.0,              1.0              },
  399.     {"VUI_colour_description_present_flag",    &configinput.VUI.colour_description_present_flag,    0,   0.0,                       1,  0.0,              1.0              },
  400.     {"VUI_colour_primaries",                   &configinput.VUI.colour_primaries,                   0,   2.0,                       1,  0.0,            255.0              },
  401.     {"VUI_transfer_characteristics",           &configinput.VUI.transfer_characteristics,           0,   2.0,                       1,  0.0,            255.0              },
  402.     {"VUI_matrix_coefficients",                &configinput.VUI.matrix_coefficients,                0,   2.0,                       1,  0.0,            255.0              },
  403.     {"VUI_chroma_location_info_present_flag",  &configinput.VUI.chroma_location_info_present_flag,  0,   0.0,                       1,  0.0,              1.0              },
  404.     {"VUI_chroma_sample_loc_type_top_field",   &configinput.VUI.chroma_sample_loc_type_top_field,   0,   0.0,                       1,  0.0,              5.0              },
  405.     {"VUI_chroma_sample_loc_type_bottom_field",&configinput.VUI.chroma_sample_loc_type_bottom_field,0,   0.0,                       1,  0.0,              5.0              },
  406.     {"VUI_timing_info_present_flag",           &configinput.VUI.timing_info_present_flag,           0,   0.0,                       1,  0.0,              1.0              },
  407.     {"VUI_num_units_in_tick",                  &configinput.VUI.num_units_in_tick,                  0,1000.0,                       2,  0.0,              0.0              },
  408.     {"VUI_time_scale",                         &configinput.VUI.time_scale,                         0,60000.0,                      2,  0.0,              0.0              },
  409.     {"VUI_fixed_frame_rate_flag",              &configinput.VUI.fixed_frame_rate_flag,              0,   0.0,                       1,  0.0,              1.0              },
  410.     {"VUI_nal_hrd_parameters_present_flag",    &configinput.VUI.nal_hrd_parameters_present_flag,    0,   0.0,                       1,  0.0,              1.0              },
  411.     {"VUI_nal_cpb_cnt_minus1",                 &configinput.VUI.nal_cpb_cnt_minus1,                 0,   0.0,                       1,  0.0,             31.0              },
  412.     {"VUI_nal_bit_rate_scale",                 &configinput.VUI.nal_bit_rate_scale,                 0,   0.0,                       2,  0.0,              0.0              },
  413.     {"VUI_nal_cpb_size_scale",                 &configinput.VUI.nal_cpb_size_scale,                 0,   0.0,                       2,  0.0,              0.0              },
  414.     {"VUI_nal_bit_rate_value_minus1",          &configinput.VUI.nal_bit_rate_value_minus1,          0,   0.0,                       2,  0.0,              0.0              },
  415.     {"VUI_nal_cpb_size_value_minus1",          &configinput.VUI.nal_cpb_size_value_minus1,          0,   0.0,                       2,  0.0,              0.0              },
  416.     {"VUI_nal_vbr_cbr_flag",                   &configinput.VUI.nal_vbr_cbr_flag,                   0,   1.0,                       1,  0.0,              1.0              },
  417.     {"VUI_nal_initial_cpb_removal_delay_length_minus1", &configinput.VUI.nal_initial_cpb_removal_delay_length_minus1,  0, 23.0,     2,  0.0,              0.0              },
  418.     {"VUI_nal_cpb_removal_delay_length_minus1",&configinput.VUI.nal_cpb_removal_delay_length_minus1,0,  23.0,                       2,  0.0,              0.0              },
  419.     {"VUI_nal_dpb_output_delay_length_minus1", &configinput.VUI.nal_dpb_output_delay_length_minus1, 0,  23.0,                       2,  0.0,              0.0              },
  420.     {"VUI_nal_time_offset_length",             &configinput.VUI.nal_time_offset_length,             0,  24.0,                       2,  0.0,              0.0              },
  421.     {"VUI_vcl_hrd_parameters_present_flag",    &configinput.VUI.vcl_hrd_parameters_present_flag,    0,   0.0,                       1,  0.0,              1.0              },
  422.     {"VUI_vcl_cpb_cnt_minus1",                 &configinput.VUI.vcl_cpb_cnt_minus1,                 0,   0.0,                       1,  0.0,             31.0              },
  423.     {"VUI_vcl_bit_rate_scale",                 &configinput.VUI.vcl_bit_rate_scale,                 0,   0.0,                       2,  0.0,              0.0              },
  424.     {"VUI_vcl_cpb_size_scale",                 &configinput.VUI.vcl_cpb_size_scale,                 0,   0.0,                       2,  0.0,              0.0              },
  425.     {"VUI_vcl_bit_rate_value_minus1",          &configinput.VUI.vcl_bit_rate_value_minus1,          0,   0.0,                       2,  0.0,              0.0              },
  426.     {"VUI_vcl_cpb_size_value_minus1",          &configinput.VUI.vcl_cpb_size_value_minus1,          0,   0.0,                       2,  0.0,              0.0              },
  427.     {"VUI_vcl_vbr_cbr_flag",                   &configinput.VUI.vcl_vbr_cbr_flag,                   0,   0.0,                       1,  0.0,              1.0              },
  428.     {"VUI_vcl_initial_cpb_removal_delay_length_minus1", &configinput.VUI.vcl_initial_cpb_removal_delay_length_minus1,  0,  23.0,    2,  0.0,              0.0              },
  429.     {"VUI_vcl_cpb_removal_delay_length_minus1",&configinput.VUI.vcl_cpb_removal_delay_length_minus1,0,  23.0,                       2,  0.0,              0.0              },
  430.     {"VUI_vcl_dpb_output_delay_length_minus1", &configinput.VUI.vcl_dpb_output_delay_length_minus1, 0,  23.0,                       2,  0.0,              0.0              },
  431.     {"VUI_vcl_time_offset_length",             &configinput.VUI.vcl_time_offset_length,             0,  24.0,                       2,  0.0,              0.0              },
  432.     {"VUI_low_delay_hrd_flag",                 &configinput.VUI.low_delay_hrd_flag,                 0,   0.0,                       1,  0.0,              1.0              },
  433.     {"VUI_pic_struct_present_flag",            &configinput.VUI.pic_struct_present_flag,            0,   0.0,                       1,  0.0,              1.0              },
  434.     {"VUI_bitstream_restriction_flag",         &configinput.VUI.bitstream_restriction_flag,         0,   0.0,                       1,  0.0,              1.0              },
  435.     {"VUI_motion_vectors_over_pic_boundaries_flag", &configinput.VUI.motion_vectors_over_pic_boundaries_flag,      0,   1.0,        1,  0.0,              1.0              },
  436.     {"VUI_max_bytes_per_pic_denom",            &configinput.VUI.max_bytes_per_pic_denom,            0,   2.0,                       1,  0.0,             16.0              },
  437.     {"VUI_max_bits_per_mb_denom",              &configinput.VUI.max_bits_per_mb_denom,              0,   1.0,                       1,  0.0,             16.0              },
  438.     {"VUI_log2_max_mv_length_vertical",        &configinput.VUI.log2_max_mv_length_vertical,        0,  16.0,                       1,  0.0,             16.0              },
  439.     {"VUI_log2_max_mv_length_horizontal",      &configinput.VUI.log2_max_mv_length_horizontal,      0,  16.0,                       1,  0.0,             16.0              },
  440.     {"VUI_num_reorder_frames",                 &configinput.VUI.num_reorder_frames,                 0,  16.0,                       1,  0.0,             16.0              },
  441.     {"VUI_max_dec_frame_buffering",            &configinput.VUI.max_dec_frame_buffering,            0,  16.0,                       1,  0.0,             16.0              },
  442.     {"SEIMessageText",           &configinput.SEIMessageText,               1,   0.0,                       0,  0.0,              0.0              },
  443.     {NULL,                       NULL,                                     -1,   0.0,                       0,  0.0,              0.0              }
  444. };
  445. #endif
  446. #ifndef INCLUDED_BY_CONFIGFILE_C
  447. extern Mapping Map[];
  448. #endif
  449. void Configure (int ac, char *av[]);
  450. void PatchInputNoFrames(void);
  451. #endif