// Copyright (C) 1999 Jean-Marc Valin
#include "MMIScore.h"
#include "net_types.h"
#include "Buffer.h"
#include "Cell.h"
#include "Vector.h"
using namespace std;
namespace FD {
DECLARE_NODE(MMIScore)
/*Node
*
* @name MMIScore
* @category VQ
* @description No description available
*
* @input_name FRAMES
* @input_description No description available
*
* @input_name MMI
* @input_description No description available
*
* @output_name OUTPUT
* @output_description No description available
*
END*/
MMIScore::MMIScore(string nodeName, ParameterSet params)
: Node(nodeName, params)
{
outputID = addOutput("OUTPUT");
mmiInputID = addInput("MMI");
framesInputID = addInput("FRAMES");
}
void MMIScore::initialize()
{
processCount=-1;
this->Node::initialize();
}
void MMIScore::reset()
{
processCount=-1;
this->Node::reset();
}
ObjectRef MMIScore::getOutput(int output_id, int count)
{
//cerr << "Getting output in MMIScore with count = " << count << endl;
if (output_id==outputID)
{
if (count != processCount)
{
int i;
NodeInput framesInput = inputs[framesInputID];
NodeInput mmiInput = inputs[mmiInputID];
ObjectRef inputValue = framesInput.node->getOutput(framesInput.outputID,count);
//FUTURE: return the right "empty object" instead of inputValue (for buffer reasons)
Vector<float> &inputFrame = object_cast<Vector<float> > (inputValue);
Cell &mmi = object_cast<Cell> (mmiInput.node->getOutput(mmiInput.outputID,count));
int cellID = mmi.belongs(&inputFrame[0]);
//cerr << "Cell: " << cellID << endl;
currentScore = ObjectRef(Int::alloc(cellID));
processCount=count;
}
//cerr << "MMIScore returning: " << currentScore << " (" << typeid(currentScore).name() << ")" << endl;
return currentScore;
}
else
throw new NodeException (this, "MMIScore: Unknown output id", __FILE__, __LINE__);
}
}//namespace FD
syntax highlighted by Code2HTML, v. 0.9.1