📄 configfile.h
字号:
/*!
***********************************************************************
* \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;
int char_size;
} Mapping;
InputParameters cfgparams;
#ifdef INCLUDED_BY_CONFIGFILE_C
// Mapping_Map Syntax:
// {NAMEinConfigFile, &cfgparams.VariableName, Type, InitialValue, LimitType, MinLimit, MaxLimit, CharSize}
// 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", &cfgparams.ProfileIDC, 0, (double) PROFILE_IDC, 0, 0.0, 0.0, },
{"IntraProfile", &cfgparams.IntraProfile, 0, 0.0, 1, 0.0, 1.0, },
{"LevelIDC", &cfgparams.LevelIDC, 0, (double) LEVEL_IDC, 0, 0.0, 0.0, },
{"FrameRate", &cfgparams.source.frame_rate, 2, (double) INIT_FRAME_RATE, 1, 0.0, 100.0, },
{"ResendSPS", &cfgparams.ResendSPS, 0, 0.0, 1, 0.0, 3.0, },
{"StartFrame", &cfgparams.start_frame, 0, 0.0, 2, 0.0, 0.0, },
{"IntraPeriod", &cfgparams.intra_period, 0, 0.0, 2, 0.0, 0.0, },
{"IDRPeriod", &cfgparams.idr_period, 0, 0.0, 2, 0.0, 0.0, },
{"IntraDelay", &cfgparams.intra_delay, 0, 0.0, 2, 0.0, 0.0, },
{"AdaptiveIntraPeriod", &cfgparams.adaptive_intra_period, 0, 0.0, 1, 0.0, 1.0, },
{"AdaptiveIDRPeriod", &cfgparams.adaptive_idr_period, 0, 0.0, 1, 0.0, 2.0, },
{"EnableOpenGOP", &cfgparams.EnableOpenGOP, 0, 0.0, 1, 0.0, 1.0, },
{"EnableIDRGOP", &cfgparams.EnableIDRGOP, 0, 0.0, 1, 0.0, 1.0, },
{"FramesToBeEncoded", &cfgparams.no_frames, 0, 1.0, 2, -1.0, 0.0, },
{"QPISlice", &cfgparams.qp[0][I_SLICE], 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP, },
{"QPPSlice", &cfgparams.qp[0][P_SLICE], 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP, },
{"QPBSlice", &cfgparams.qp[0][B_SLICE], 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP, },
{"QPSPSlice", &cfgparams.qp[0][SP_SLICE], 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP, },
{"QPSISlice", &cfgparams.qp[0][SI_SLICE], 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP, },
{"QPSP2Slice", &cfgparams.qpsp[0], 0, 24.0, 3, (double) MIN_QP, (double) MAX_QP, },
{"FrameSkip", &cfgparams.frame_skip, 0, 0.0, 2, 0.0, 0.0, },
{"DisableSubpelME", &cfgparams.DisableSubpelME, 0, 0.0, 1, 0.0, 1.0, },
{"SearchRange", &cfgparams.search_range, 0, 16.0, 2, 0.0, 0.0, },
{"NumberReferenceFrames", &cfgparams.num_ref_frames, 0, 1.0, 1, 0.0, 16.0, },
{"PList0References", &cfgparams.P_List0_refs, 0, 0.0, 1, 0.0, 16.0, },
{"BList0References", &cfgparams.B_List0_refs, 0, 0.0, 1, 0.0, 16.0, },
{"BList1References", &cfgparams.B_List1_refs, 0, 1.0, 1, 0.0, 16.0, },
{"Log2MaxFNumMinus4", &cfgparams.Log2MaxFNumMinus4, 0, 0.0, 1, -1.0, 12.0, },
{"Log2MaxPOCLsbMinus4", &cfgparams.Log2MaxPOCLsbMinus4, 0, 2.0, 1, -1.0, 12.0, },
{"GenerateMultiplePPS", &cfgparams.GenerateMultiplePPS, 0, 0.0, 1, 0.0, 1.0, },
{"ResendPPS", &cfgparams.ResendPPS, 0, 0.0, 1, 0.0, 1.0, },
{"SendAUD", &cfgparams.SendAUD, 0, 0.0, 1, 0.0, 1.0, },
{"SourceWidth", &cfgparams.source.width, 0, 176.0, 2, 0.0, 0.0, },
{"SourceHeight", &cfgparams.source.height, 0, 144.0, 2, 0.0, 0.0, },
{"SourceResize", &cfgparams.src_resize, 0, 0.0, 1, 0.0, 1.0, },
{"OutputWidth", &cfgparams.output.width, 0, 176.0, 2, 16.0, 0.0, },
{"OutputHeight", &cfgparams.output.height, 0, 144.0, 2, 16.0, 0.0, },
{"Grayscale", &cfgparams.grayscale, 0, 0.0, 0, 0.0, 1.0, },
{"MbLineIntraUpdate", &cfgparams.intra_upd, 0, 0.0, 1, 0.0, 1.0, },
{"SliceMode", &cfgparams.slice_mode, 0, 0.0, 1, 0.0, 3.0, },
{"SliceArgument", &cfgparams.slice_argument, 0, 1.0, 2, 1.0, 1.0, },
{"UseConstrainedIntraPred", &cfgparams.UseConstrainedIntraPred, 0, 0.0, 1, 0.0, 1.0, },
{"InputFile", &cfgparams.input_file1.fname, 1, 0.0, 0, 0.0, 0.0, FILE_NAME_SIZE, },
{"InputHeaderLength", &cfgparams.infile_header, 0, 0.0, 2, 0.0, 1.0, },
{"OutputFile", &cfgparams.outfile, 1, 0.0, 0, 0.0, 0.0, FILE_NAME_SIZE, },
{"ReconFile", &cfgparams.ReconFile, 1, 0.0, 0, 0.0, 0.0, FILE_NAME_SIZE, },
{"TraceFile", &cfgparams.TraceFile, 1, 0.0, 0, 0.0, 0.0, FILE_NAME_SIZE, },
{"StatsFile", &cfgparams.StatsFile, 1, 0.0, 0, 0.0, 0.0, FILE_NAME_SIZE, },
{"DisposableP", &cfgparams.DisposableP, 0, 0.0, 1, 0.0, 1.0, },
{"ProcessInput", &cfgparams.ProcessInput, 0, 0.0, 1, 0.0, 2.0, },
{"DispPQPOffset", &cfgparams.DispPQPOffset, 0, 0.0, 0,-51.0, 51.0, },
{"NumberBFrames", &cfgparams.NumberBFrames, 0, 0.0, 2, 0.0, 0.0, },
{"PReplaceBSlice", &cfgparams.PReplaceBSlice, 0, 0.0, 1, 0.0, 1.0, },
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -