Skip to content

Commit

Permalink
VCEEnc.auoでのコマンドライン生成改善。
Browse files Browse the repository at this point in the history
  • Loading branch information
rigaya committed Dec 10, 2024
1 parent dafba58 commit 70faab3
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 13 deletions.
20 changes: 11 additions & 9 deletions VCECore/vce_cmd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1703,13 +1703,13 @@ tstring gen_cmd(const VCEParam *pParams, bool save_disabled_prm) {
VCEParam encPrmDefault;

#define OPT_NUM(str, opt) if ((pParams->opt) != (encPrmDefault.opt)) cmd << _T(" ") << (str) << _T(" ") << (int)(pParams->opt);
#define OPT_NUM_OPTIONAL(str, opt) if ((pParams->opt.has_value())) cmd << _T(" ") << (str) << _T(" ") << (int)(pParams->opt.value());
#define OPT_NUM_OPTIONAL(str, opt) if ((pParams->opt) != (encPrmDefault.opt)) cmd << _T(" ") << (str) << _T(" ") << (int)(pParams->opt.value());
#define OPT_NUM_HEVC(str, codec, opt) if ((pParams->codecParam[RGY_CODEC_HEVC].opt) != (encPrmDefault.codecParam[RGY_CODEC_HEVC].opt)) cmd << _T(" ") << (str) << ((save_disabled_prm) ? codec : _T("")) << _T(" ") << (int)(pParams->codecParam[RGY_CODEC_HEVC].opt);
#define OPT_NUM_H264(str, codec, opt) if ((pParams->codecParam[RGY_CODEC_H264].opt) != (encPrmDefault.codecParam[RGY_CODEC_H264].opt)) cmd << _T(" ") << (str) << ((save_disabled_prm) ? codec : _T("")) << _T(" ") << (int)(pParams->codecParam[RGY_CODEC_H264].opt);
#define OPT_GUID(str, opt, list) if ((pParams->opt) != (encPrmDefault.opt)) cmd << _T(" ") << (str) << _T(" ") << get_name_from_guid((pParams->opt), list);
#define OPT_GUID_HEVC(str, codec, opt, list) if ((pParams->codecParam[RGY_CODEC_HEVC].opt) != (encPrmDefault.codecParam[RGY_CODEC_HEVC].opt)) cmd << _T(" ") << (str) << ((save_disabled_prm) ? codec : _T("")) << _T(" ") << get_name_from_value((pParams->codecParam[RGY_CODEC_HEVC].opt), list);
#define OPT_LST(str, opt, list) if ((pParams->opt) != (encPrmDefault.opt)) cmd << _T(" ") << (str) << _T(" ") << get_chr_from_value(list, (pParams->opt));
#define OPT_LST_OPTIONAL(str, opt, list) if (pParams->opt.has_value()) cmd << _T(" ") << (str) << _T(" ") << get_chr_from_value(list, (pParams->opt.value()));
#define OPT_LST_OPTIONAL(str, opt, list) if ((pParams->opt) != (encPrmDefault.opt)) cmd << _T(" ") << (str) << _T(" ") << get_chr_from_value(list, (pParams->opt.value()));
#define OPT_LST_AV1(str, codec, opt, list) if ((pParams->codecParam[RGY_CODEC_AV1].opt) != (encPrmDefault.codecParam[RGY_CODEC_AV1].opt)) cmd << _T(" ") << (str) << ((save_disabled_prm) ? codec : _T("")) << _T(" ") << get_chr_from_value(list, (pParams->codecParam[RGY_CODEC_AV1].opt));
#define OPT_LST_HEVC(str, codec, opt, list) if ((pParams->codecParam[RGY_CODEC_HEVC].opt) != (encPrmDefault.codecParam[RGY_CODEC_HEVC].opt)) cmd << _T(" ") << (str) << ((save_disabled_prm) ? codec : _T("")) << _T(" ") << get_chr_from_value(list, (pParams->codecParam[RGY_CODEC_HEVC].opt));
#define OPT_LST_H264(str, codec, opt, list) if ((pParams->codecParam[RGY_CODEC_H264].opt) != (encPrmDefault.codecParam[RGY_CODEC_H264].opt)) cmd << _T(" ") << (str) << ((save_disabled_prm) ? codec : _T("")) << _T(" ") << get_chr_from_value(list, (pParams->codecParam[RGY_CODEC_H264].opt));
Expand All @@ -1731,7 +1731,7 @@ tstring gen_cmd(const VCEParam *pParams, bool save_disabled_prm) {
} \
}
#define OPT_BOOL(str_true, str_false, opt) if ((pParams->opt) != (encPrmDefault.opt)) cmd << _T(" ") << ((pParams->opt) ? (str_true) : (str_false));
#define OPT_BOOL_OPTIONAL(str_true, str_false, opt) if (pParams->opt.has_value()) cmd << _T(" ") << ((pParams->opt.value()) ? (str_true) : (str_false));
#define OPT_BOOL_OPTIONAL(str_true, str_false, opt) if ((pParams->opt) != (encPrmDefault.opt)) cmd << _T(" ") << ((pParams->opt.value()) ? (str_true) : (str_false));
#define OPT_BOOL_HEVC(str_true, str_false, codec, opt) \
if ((pParams->codecParam[RGY_CODEC_HEVC].opt) != (encPrmDefault.codecParam[RGY_CODEC_HEVC].opt)) { \
cmd << _T(" "); \
Expand Down Expand Up @@ -1759,7 +1759,7 @@ tstring gen_cmd(const VCEParam *pParams, bool save_disabled_prm) {
#define ADD_FLOAT(str, opt, prec) if ((pParams->opt) != (encPrmDefault.opt)) tmp << _T(",") << (str) << _T("=") << std::setprecision(prec) << (pParams->opt);
#define ADD_LST(str, opt, list) if ((pParams->opt) != (encPrmDefault.opt)) tmp << _T(",") << (str) << _T("=") << get_chr_from_value(list, (int)(pParams->opt));
#define ADD_BOOL(str, opt) if ((pParams->opt) != (encPrmDefault.opt)) tmp << _T(",") << (str) << _T("=") << ((pParams->opt) ? (_T("true")) : (_T("false")));
#define ADD_BOOL_OPTIONAL(str, opt) if (pParams->opt.has_value()) tmp << _T(",") << (str) << _T("=") << ((pParams->opt.value()) ? (_T("true")) : (_T("false")));
#define ADD_BOOL_OPTIONAL(str, opt) if ((pParams->opt) != (encPrmDefault.opt)) tmp << _T(",") << (str) << _T("=") << ((pParams->opt.value()) ? (_T("true")) : (_T("false")));


OPT_NUM(_T("-d"), deviceID);
Expand Down Expand Up @@ -1802,9 +1802,11 @@ tstring gen_cmd(const VCEParam *pParams, bool save_disabled_prm) {
OPT_NUM(_T("--gop-len"), nGOPLen);
}
OPT_NUM_OPTIONAL(_T("-b"), bframes);
OPT_BOOL_OPTIONAL(_T("--b-pyramid"), _T("--no-b-pyramid"), bPyramid);
OPT_NUM_OPTIONAL(_T("--b-deltaqp"), deltaQPBFrame);
OPT_NUM_OPTIONAL(_T("--bref-deltaqp"), deltaQPBFrameRef);
if (pParams->bframes.value_or(VCE_DEFAULT_B_FRAMES) || save_disabled_prm) {
OPT_BOOL_OPTIONAL(_T("--b-pyramid"), _T("--no-b-pyramid"), bPyramid);
OPT_NUM_OPTIONAL(_T("--b-deltaqp"), deltaQPBFrame);
OPT_NUM_OPTIONAL(_T("--bref-deltaqp"), deltaQPBFrameRef);
}
OPT_BOOL_OPTIONAL(_T("--adapt-minigop"), _T("--no-adapt-minigop"), adaptMiniGOP);
OPT_NUM_OPTIONAL(_T("--ref"), refFrames);
OPT_NUM_OPTIONAL(_T("--ltr"), LTRFrames);
Expand All @@ -1830,10 +1832,10 @@ tstring gen_cmd(const VCEParam *pParams, bool save_disabled_prm) {
ADD_BOOL(_T("force-integer-mv"), forceIntegerMV);
if (!tmp.str().empty()) {
cmd << _T(" --screen-content-tools ") << tmp.str().substr(1);
} else if (pParams->screenContentTools) {
} else if (pParams->screenContentTools != encPrmDefault.screenContentTools) {
cmd << _T(" --screen-content-tools");
}
} else {
} else if (pParams->screenContentTools != encPrmDefault.screenContentTools) {
cmd << _T(" --no-screen-content-tools");
}
OPT_BOOL_OPTIONAL(_T("--cdf-update"), _T("--no-cdf-update"), cdfUpdate);
Expand Down
5 changes: 5 additions & 0 deletions VCECore/vce_param.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,11 @@ static const AMF_FRC_PROFILE_TYPE VCE_FILTER_FRC_PROFILE_DEFAULT = FRC_PROFILE_H
static const AMF_FRC_MV_SEARCH_MODE_TYPE VCE_FILTER_FRC_MV_SEARCH_DEFAULT = FRC_MV_SEARCH_NATIVE;
static const bool VCE_FILTER_FRC_BLEND_DEFAULT = true;

static const int VCE_PARAM_DEFAULT_DELTA_QPB = 6;
static const int VCE_PARAM_DEFAULT_DELTA_QPB_REF = 4;
static const int VCE_DEFAULT_REF_FRAMES = 2;
static const int VCE_DEFAULT_B_FRAMES = 0;

static const double VCE_FILTER_HQ_SCALER_SHARPNESS_DEFAULT = 0.5;

enum {
Expand Down
8 changes: 4 additions & 4 deletions VCEEnc/frm/frmConfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1389,7 +1389,7 @@ System::Void frmConfig::ConfToFrm(CONF_GUIEX *cnf) {
SetNUValue(fcgNUQPP, enc.qp.qpP);
SetNUValue(fcgNUQPB, enc.qp.qpB);
SetNUValue(fcgNUGopLength, enc.nGOPLen);
SetNUValue(fcgNUBframes, enc.bframes.value_or(0));
SetNUValue(fcgNUBframes, enc.bframes.value_or(VCE_DEFAULT_B_FRAMES));
fcgCBBPyramid->Checked = enc.bPyramid.value_or(false);
SetCXIndex(fcgCXCodecLevel, get_cx_index(list_avc_level, enc.codecParam[RGY_CODEC_H264].nLevel));
SetCXIndex(fcgCXCodecProfile, get_cx_index(list_avc_profile, enc.codecParam[RGY_CODEC_H264].nProfile));
Expand All @@ -1407,11 +1407,11 @@ System::Void frmConfig::ConfToFrm(CONF_GUIEX *cnf) {

SetNUValue(fcgNUQPMax, enc.nQPMax.value_or(0));
SetNUValue(fcgNUQPMin, enc.nQPMin.value_or(0));
SetNUValue(fcgNUBDeltaQP, enc.deltaQPBFrame.value_or(0));
SetNUValue(fcgNUBRefDeltaQP, enc.deltaQPBFrameRef.value_or(0));
SetNUValue(fcgNUBDeltaQP, enc.deltaQPBFrame.value_or(VCE_PARAM_DEFAULT_DELTA_QPB));
SetNUValue(fcgNUBRefDeltaQP, enc.deltaQPBFrameRef.value_or(VCE_PARAM_DEFAULT_DELTA_QPB_REF));

SetNUValue(fcgNUSlices, enc.nSlices);
SetNUValue(fcgNURefFrames, enc.refFrames.value_or(0));
SetNUValue(fcgNURefFrames, enc.refFrames.value_or(VCE_DEFAULT_REF_FRAMES));

fcgCBDeblock->Checked = enc.deblockFilter.value_or(true);
fcgCBSkipFrame->Checked = enc.enableSkipFrame.value_or(false);
Expand Down

0 comments on commit 70faab3

Please sign in to comment.