Adding some debug stuff...

This commit is contained in:
Zach Fox 2018-10-15 11:33:42 -07:00
parent 34befd4a52
commit d9873d3633
2 changed files with 35 additions and 18 deletions

View file

@ -1095,7 +1095,8 @@ void AudioClient::handleAudioInput(QByteArray& audioBuffer) {
void AudioClient::processAudioAndAddToRingBuffer(QByteArray& inputByteArray, void AudioClient::processAudioAndAddToRingBuffer(QByteArray& inputByteArray,
const uchar& channelCount, const uchar& channelCount,
const qint32& bytesForDuration) { const qint32& bytesForDuration,
QByteArray& rollingBuffer) {
// input samples required to produce exactly NETWORK_FRAME_SAMPLES of output // input samples required to produce exactly NETWORK_FRAME_SAMPLES of output
const int inputSamplesRequired = const int inputSamplesRequired =
(_inputToNetworkResampler ? _inputToNetworkResampler->getMinInput(AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL) (_inputToNetworkResampler ? _inputToNetworkResampler->getMinInput(AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL)
@ -1131,6 +1132,7 @@ void AudioClient::processAudioAndAddToRingBuffer(QByteArray& inputByteArray,
_stats.updateInputMsUnplayed(msecsInInputRingBuffer); _stats.updateInputMsUnplayed(msecsInInputRingBuffer);
QByteArray audioBuffer(reinterpret_cast<char*>(networkAudioSamples), numNetworkBytes); QByteArray audioBuffer(reinterpret_cast<char*>(networkAudioSamples), numNetworkBytes);
rollingBuffer.append(audioBuffer);
handleAudioInput(audioBuffer); handleAudioInput(audioBuffer);
} }
} }
@ -1144,8 +1146,10 @@ void AudioClient::handleMicAudioInput() {
_inputReadsSinceLastCheck++; _inputReadsSinceLastCheck++;
#endif #endif
QByteArray temp;
processAudioAndAddToRingBuffer(_inputDevice->readAll(), _inputFormat.channelCount(), processAudioAndAddToRingBuffer(_inputDevice->readAll(), _inputFormat.channelCount(),
_inputFormat.bytesForDuration(USECS_PER_MSEC)); _inputFormat.bytesForDuration(USECS_PER_MSEC), temp);
} }
void AudioClient::handleDummyAudioInput() { void AudioClient::handleDummyAudioInput() {
@ -1161,9 +1165,7 @@ void AudioClient::handleRecordedAudioInput(const QByteArray& audio) {
handleAudioInput(audioBuffer); handleAudioInput(audioBuffer);
} }
int rawToWav(const char* rawData, const int& rawLength, const char* wavfn, long frequency) { int rawToWav(const char* rawData, const int& rawLength, const char* wavfn, long frequency, unsigned short channels) {
long chunksize = 0x10;
struct { struct {
unsigned short wFormatTag; unsigned short wFormatTag;
unsigned short wChannels; unsigned short wChannels;
@ -1174,47 +1176,59 @@ void AudioClient::handleRecordedAudioInput(const QByteArray& audio) {
} fmt; } fmt;
long samplecount = rawLength / 2; long samplecount = rawLength / 2;
long riffsize = samplecount * 2 + 0x24;
long datasize = samplecount * 2;
FILE* wav = fopen(wavfn, "wb"); FILE* wav = fopen(wavfn, "wb");
if (!wav) { if (!wav) {
return -3; return -1;
} }
fwrite("RIFF", 1, 4, wav); fwrite("RIFF", 1, 4, wav);
long riffsize = samplecount * 2 + 0x24;
fwrite(&riffsize, 4, 1, wav); fwrite(&riffsize, 4, 1, wav);
fwrite("WAVEfmt ", 1, 8, wav); fwrite("WAVEfmt ", 1, 8, wav);
long chunksize = 0x10;
fwrite(&chunksize, 4, 1, wav); fwrite(&chunksize, 4, 1, wav);
fmt.wFormatTag = 1; // PCM fmt.wFormatTag = 1; // WAVE_FORMAT_PCM
fmt.wChannels = 1; // MONO fmt.wChannels = channels;
fmt.dwSamplesPerSec = frequency * 1; fmt.dwSamplesPerSec = frequency * 1;
fmt.dwAvgBytesPerSec = frequency * 1 * 2; // 16 bit
fmt.wBlockAlign = 2;
fmt.wBitsPerSample = 16; fmt.wBitsPerSample = 16;
fmt.wBlockAlign = fmt.wChannels * fmt.wBitsPerSample / 8;
fmt.dwAvgBytesPerSec = fmt.dwSamplesPerSec * fmt.wBlockAlign;
fwrite(&fmt, sizeof(fmt), 1, wav); fwrite(&fmt, sizeof(fmt), 1, wav);
fwrite("data", 1, 4, wav); fwrite("data", 1, 4, wav);
long datasize = samplecount * 2;
fwrite(&datasize, 4, 1, wav); fwrite(&datasize, 4, 1, wav);
fwrite(rawData, 1, rawLength, wav); fwrite(rawData, 1, rawLength, wav);
fclose(wav); fclose(wav);
return 0;
} }
void AudioClient::handleTTSAudioInput(const QByteArray& audio) { void AudioClient::handleTTSAudioInput(const QByteArray& audio) {
QByteArray audioBuffer(audio); QByteArray audioBuffer(audio);
QVector<int16_t> audioBufferReal;
QString filename = QString::number(usecTimestampNow()); QString filename = QString::number(usecTimestampNow());
QString path = PathUtils::getAppDataPath() + "Audio/" + filename + ".wav"; QString path = PathUtils::getAppDataPath() + "Audio/" + filename + "-before.wav";
rawToWav(audioBuffer.data(), audioBuffer.size(), path.toLocal8Bit(), 24000); rawToWav(audioBuffer.data(), audioBuffer.size(), path.toLocal8Bit(), 24000, 1);
QByteArray temp;
while (audioBuffer.size() > 0) { while (audioBuffer.size() > 0) {
QByteArray part; QByteArray part;
part.append(audioBuffer.data(), AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL); part.append(audioBuffer.data(), AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL);
audioBuffer.remove(0, AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL); audioBuffer.remove(0, AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL);
processAudioAndAddToRingBuffer(part, 1, 48); processAudioAndAddToRingBuffer(part, 1, 48, temp);
} }
filename = QString::number(usecTimestampNow());
path = PathUtils::getAppDataPath() + "Audio/" + filename + "-after.wav";
rawToWav(temp.data(), temp.size(), path.toLocal8Bit(), 12000, 1);
} }
void AudioClient::prepareLocalAudioInjectors(std::unique_ptr<Lock> localAudioLock) { void AudioClient::prepareLocalAudioInjectors(std::unique_ptr<Lock> localAudioLock) {

View file

@ -290,7 +290,10 @@ private:
float azimuthForSource(const glm::vec3& relativePosition); float azimuthForSource(const glm::vec3& relativePosition);
float gainForSource(float distance, float volume); float gainForSource(float distance, float volume);
void processAudioAndAddToRingBuffer(QByteArray& inputByteArray, const uchar& channelCount, const qint32& bytesForDuration); void processAudioAndAddToRingBuffer(QByteArray& inputByteArray,
const uchar& channelCount,
const qint32& bytesForDuration,
QByteArray& rollingBuffer);
#ifdef Q_OS_ANDROID #ifdef Q_OS_ANDROID
QTimer _checkInputTimer; QTimer _checkInputTimer;