Skip to content
Snippets Groups Projects
Commit 2eeae20b authored by Junru Li's avatar Junru Li
Browse files

issue72: bugfix for "Variable "bestPrmId" is overrode"

parent 6d3b1d83
No related branches found
No related tags found
No related merge requests found
...@@ -133,26 +133,15 @@ void EncNNFilterHOP::chooseParameters(Picture &pic) ...@@ -133,26 +133,15 @@ void EncNNFilterHOP::chooseParameters(Picture &pic)
getScaledBuf(scaleId, prmId).copyFrom(getScaledBuf(0, prmId)); getScaledBuf(scaleId, prmId).copyFrom(getScaledBuf(0, prmId));
} }
} }
double minCost = MAX_DOUBLE, minScaledCost = MAX_DOUBLE;
std::vector<int> bestPrmId(picprms.prmId);
// find best parameters without scaling and store them
parameterSearch(pic, minCost, bestPrmId, -1);
int mode = picprms.sprm.mode;
// find best parameters with scaling double minCost = MAX_DOUBLE;
for (int scaleId = 0; scaleId < 4; scaleId++) std::vector<int> bestPrmId;
// find best parameters without or with scaling
for (int scaleId = -1; scaleId < 4; scaleId++)
{ {
scalePicture(pic, scaleId); scalePicture(pic, scaleId);
parameterSearch(pic, minScaledCost, bestPrmId, scaleId); parameterSearch(pic, minCost, bestPrmId, scaleId);
}
// compare w/ scaling and w/o scaling
if (minCost <= minScaledCost)
{
picprms.sprm.mode = mode;
picprms.sprm.scaleFlag = -1;
} }
picprms.prmId = bestPrmId; picprms.prmId = bestPrmId;
...@@ -234,10 +223,6 @@ void EncNNFilterHOP::parameterSearch(Picture &pic, double &minCost, std::vector< ...@@ -234,10 +223,6 @@ void EncNNFilterHOP::parameterSearch(Picture &pic, double &minCost, std::vector<
int tempMode = picprms.sprm.mode; int tempMode = picprms.sprm.mode;
if (scaleId == -1 || scaleId == 0)
{
picprms.sprm.scaleFlag = scaleId;
}
picprms.sprm.mode = prmNum; picprms.sprm.mode = prmNum;
double rateAdpt = getSignalingCost(pic); // rate of adaptation double rateAdpt = getSignalingCost(pic); // rate of adaptation
double rateScale = MAX_NUM_COMPONENT * (log2ResidueScale + 1); //rate of signalling scales double rateScale = MAX_NUM_COMPONENT * (log2ResidueScale + 1); //rate of signalling scales
...@@ -326,6 +311,9 @@ void EncNNFilterHOP::scaleFactorDerivation(Picture &pic, FilterParameters &prms, ...@@ -326,6 +311,9 @@ void EncNNFilterHOP::scaleFactorDerivation(Picture &pic, FilterParameters &prms,
void EncNNFilterHOP::scalePicture(Picture &pic, int scaleId) void EncNNFilterHOP::scalePicture(Picture &pic, int scaleId)
{ {
if (scaleId < 0 || scaleId > 3)
return;
CodingStructure& cs = *pic.cs; CodingStructure& cs = *pic.cs;
const PreCalcValues& pcv = *cs.pcv; const PreCalcValues& pcv = *cs.pcv;
FilterParameters &prms = getPicprms(); FilterParameters &prms = getPicprms();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment