mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-25 16:55:07 +02:00
Recording audio fixes
This commit is contained in:
parent
07b3597ae3
commit
ffafd3194e
4 changed files with 11 additions and 14 deletions
|
@ -604,7 +604,7 @@ void MyAvatar::startRecording() {
|
|||
// connect to AudioClient's signal so we get input audio
|
||||
auto audioClient = DependencyManager::get<AudioClient>();
|
||||
connect(audioClient.data(), &AudioClient::inputReceived, _recorder.data(),
|
||||
&Recorder::recordAudio, Qt::BlockingQueuedConnection);
|
||||
&Recorder::recordAudio, Qt::QueuedConnection);
|
||||
|
||||
_recorder->startRecording();
|
||||
}
|
||||
|
|
|
@ -802,16 +802,14 @@ void AudioClient::handleAudioInput() {
|
|||
_timeSinceLastClip += (float) numNetworkSamples / (float) AudioConstants::SAMPLE_RATE;
|
||||
}
|
||||
|
||||
int16_t* inputAudioSamples = new int16_t[inputSamplesRequired];
|
||||
_inputRingBuffer.readSamples(inputAudioSamples, inputSamplesRequired);
|
||||
auto inputAudioSamples = std::unique_ptr<int16_t[]>(new int16_t[inputSamplesRequired]);
|
||||
_inputRingBuffer.readSamples(inputAudioSamples.get(), inputSamplesRequired);
|
||||
|
||||
possibleResampling(_inputToNetworkResampler,
|
||||
inputAudioSamples, networkAudioSamples,
|
||||
inputAudioSamples.get(), networkAudioSamples,
|
||||
inputSamplesRequired, numNetworkSamples,
|
||||
_inputFormat, _desiredInputFormat);
|
||||
|
||||
delete[] inputAudioSamples;
|
||||
|
||||
// Remove DC offset
|
||||
if (!_isStereoInput && !_audioSourceInjectEnabled) {
|
||||
_inputGate.removeDCOffset(networkAudioSamples, numNetworkSamples);
|
||||
|
@ -842,8 +840,7 @@ void AudioClient::handleAudioInput() {
|
|||
_lastInputLoudness = fabs(loudness / numNetworkSamples);
|
||||
}
|
||||
|
||||
emit inputReceived(QByteArray(reinterpret_cast<const char*>(networkAudioSamples),
|
||||
AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * sizeof(AudioConstants::AudioSample)));
|
||||
emit inputReceived({reinterpret_cast<char*>(networkAudioSamples), numNetworkBytes});
|
||||
|
||||
} else {
|
||||
// our input loudness is 0, since we're muted
|
||||
|
|
|
@ -205,7 +205,7 @@ void AudioInjector::injectToMixer() {
|
|||
|
||||
while (_currentSendOffset < _audioData.size() && !_shouldStop) {
|
||||
|
||||
int bytesToCopy = std::min(((_options.stereo) ? 2 : 1) * AudioConstants::NETWORK_FRAME_BYTES_PER_CHANNEL,
|
||||
int bytesToCopy = std::min((_options.stereo ? 2 : 1) * AudioConstants::NETWORK_FRAME_BYTES_PER_CHANNEL,
|
||||
_audioData.size() - _currentSendOffset);
|
||||
|
||||
// Measure the loudness of this frame
|
||||
|
@ -261,7 +261,7 @@ void AudioInjector::injectToMixer() {
|
|||
|
||||
// not the first packet and not done
|
||||
// sleep for the appropriate time
|
||||
int usecToSleep = (++nextFrame * AudioConstants::NETWORK_FRAME_USECS) - timer.nsecsElapsed() / 1000;
|
||||
int usecToSleep = (++nextFrame * (_options.stereo ? 2 : 1) * AudioConstants::NETWORK_FRAME_USECS) - timer.nsecsElapsed() / 1000;
|
||||
|
||||
if (usecToSleep > 0) {
|
||||
usleep(usecToSleep);
|
||||
|
|
|
@ -69,10 +69,10 @@ const RecordingFrame& Recording::getFrame(int i) const {
|
|||
|
||||
int Recording::numberAudioChannel() const {
|
||||
// Check for stereo audio
|
||||
int MSEC_PER_SEC = 1000;
|
||||
int channelLength = (getLength() / MSEC_PER_SEC) *
|
||||
AudioConstants::SAMPLE_RATE * sizeof(AudioConstants::AudioSample);
|
||||
return glm::round((float)channelLength / (float)getAudioData().size());
|
||||
float MSEC_PER_SEC = 1000.0f;
|
||||
float channelLength = ((float)getLength() / MSEC_PER_SEC) * AudioConstants::SAMPLE_RATE *
|
||||
sizeof(AudioConstants::AudioSample);
|
||||
return glm::round((float)getAudioData().size() / channelLength);
|
||||
}
|
||||
|
||||
void Recording::addFrame(int timestamp, RecordingFrame &frame) {
|
||||
|
|
Loading…
Reference in a new issue