- logging extended for AQuA analyzer invocation

This commit is contained in:
Dmytro Bogovych 2020-09-18 15:34:37 +03:00
parent 3ed35e00d2
commit 95f61f9f9b
1 changed files with 26 additions and 18 deletions

View File

@ -552,37 +552,45 @@ void AgentImpl::processGetMediaStats(Json::Value& request, Json::Value& answer)
#if defined(USE_AQUA_LIBRARY) #if defined(USE_AQUA_LIBRARY)
if (includeAqua) if (includeAqua)
{ {
ICELogInfo(<< "Running AQuA analyzer.");
ByteBuffer referenceAudio; ByteBuffer referenceAudio;
// Read AQuA reference audio from file if available // Read AQuA reference audio from file if available
if (!aquaReference.empty()) if (aquaReference.empty())
{ {
ICELogCritical(<< "AQuA reference audio file is not set, skipping analyzing.");
}
else {
Audio::WavFileReader reader; Audio::WavFileReader reader;
reader.open(StringHelper::makeTstring(aquaReference)); reader.open(StringHelper::makeTstring(aquaReference));
if (reader.isOpened()) if (reader.isOpened()) {
{
char buffer[1024]; char buffer[1024];
int wasRead = 0; int wasRead = 0;
do do {
{
wasRead = reader.read(buffer, 1024); wasRead = reader.read(buffer, 1024);
if (wasRead > 0) if (wasRead > 0)
referenceAudio.appendBuffer(buffer, wasRead); referenceAudio.appendBuffer(buffer, wasRead);
} } while (wasRead == 1024);
while (wasRead == 1024);
} }
auto sa = mAquaMap[sessionIter->first];
sevana::aqua::audio_buffer test(mAquaIncoming.data(), mAquaIncoming.size()),
reference(referenceAudio.data(), referenceAudio.size());
test.mRate = AUDIO_SAMPLERATE;
reference.mRate = AUDIO_SAMPLERATE;
test.mChannels = AUDIO_CHANNELS;
reference.mChannels = AUDIO_CHANNELS;
auto r = sa->compare(reference, test);
std::cout << r.mFaultsText << std::endl;
answer["aqua_mos"] = r.mMos;
answer["aqua_report"] = r.mFaultsText;
// Remove test audio
mAquaIncoming.clear();
} }
} else {
auto sa = mAquaMap[sessionIter->first]; ICELogInfo(<< "AQuA analyzer is not configured to run.");
sevana::aqua::audio_buffer test(mAquaIncoming.data(), mAquaIncoming.size()),
reference(referenceAudio.data(), referenceAudio.size());
test.mRate = AUDIO_SAMPLERATE; reference.mRate = AUDIO_SAMPLERATE;
test.mChannels = AUDIO_CHANNELS; reference.mChannels = AUDIO_CHANNELS;
auto r = sa->compare(reference, test);
std::cout << r.mFaultsText << std::endl;
answer["aqua_mos"] = r.mMos;
answer["aqua_report"] = r.mFaultsText;
} }
#endif #endif