У меня есть следующий код для передачи значений вектора с плавающей точкой. Вектор содержит аудио данные.
Однако принимающий объект ожидает временный вектор, поэтому я преобразовываю числа с плавающей точкой в шорты, а затем передаю этот вектор:
HRESULT CApp::PassAudio(ISpTTSEngineSite * pOutputSite, const SPVTEXTFRAG * uFragList, vector<float>&uFloats,int &uSamplesWritten)
{
vector<short>nShortsFromFloats;
nShortsFromFloats.resize(uFloats.size());
for (int i = 0; i < (int)uFloats.size(); i++)
{
nShortsFromFloats[i] = (int)(uFloats[i] * 32767);
}
//Pass the audio (shorts now!) back to the requesting site
ULONG iSizeShorts = nShortsFromFloats.size();
uSamplesWritten += (iSizeShorts * 2);
HRESULT hr;
hr = pOutputSite->Write((short *)&nShortsFromFloats[0], (iSizeShorts * 2), NULL);
if (hr == S_OK)
{
//fine :-)
}
else
{
//some warning
}
return hr;
}
Я хотел бы знать, нужно ли мне впоследствии удалять вектор или это делается автоматически.
Я не уверен, какая другая информация нужна. Я использую этот код в DLL.
Спасибо.