Beispiel #1
0
    Promise getInputPromise(const std::string& portName)
    {
        if (!hasInputPort(portName))
            throwPortError(portName);

        const auto& itPromise = _manuallySetPortsMap.find(portName);
        if (itPromise != _manuallySetPortsMap.end())
            return itPromise->second.getPromise();

        InputPort& inputPort = _inputMap.find(portName)->second;
        const auto& itPort = _manuallySetPortsMap.emplace(
            std::piecewise_construct,
            std::forward_as_tuple(inputPort.getName()),
            std::forward_as_tuple(
                DataInfo(inputPort.getName(), inputPort.getDataType())));
        OutputPort& outputPort = itPort.first->second;
        inputPort.connect(outputPort);
        return outputPort.getPromise();
    }
Beispiel #2
0
void WAVStream::run()
{
	//char chunkID[5];
	//chunkID[4] = 0;
	//input_->getStream()->read(chunkID, 4);
	
	//cout << "CHUNK ID: " << chunkID << endl;
	
	streamInfo_ = StreamInfo();
	
	string chunkId = readString(4);
	if (chunkId.compare(WAVFormat::CHUNK_ID) != 0) {
		cerr << "ERROR: Invalid chunk ID. Stream may not be in WAV format." << endl;
		return;
	}
	
	int32_t chunkSize = readInt32();
	
	string chunkFormat = readString(4);
	if (chunkFormat.compare(WAVFormat::CHUNK_FORMAT) != 0) {
		cerr << "ERROR: Invalid chunk format. Stream may not be in WAV format." << endl;
		return;
	}
	
	chunkSize -= 4;
	
	formatRead_ = false;
	dataRead_ = false;
	
	dataInfo_ = DataInfo();
	
	while (chunkSize > 0) {
		chunkSize -= readSubchunk();
	}
	
	endStream();
	//if (backend_.isNotNull())
	//	backend_->endStream();
}