mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 07:53:08 +02:00
Update options position and orientation correctly in the AudioInjector
This commit is contained in:
parent
c113dd350e
commit
45ccb01297
4 changed files with 22 additions and 3 deletions
|
@ -27,7 +27,6 @@ AudioInjector::AudioInjector(QObject* parent) :
|
||||||
_options(),
|
_options(),
|
||||||
_shouldStop(false)
|
_shouldStop(false)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AudioInjector::AudioInjector(Sound* sound, const AudioInjectorOptions& injectorOptions) :
|
AudioInjector::AudioInjector(Sound* sound, const AudioInjectorOptions& injectorOptions) :
|
||||||
|
@ -35,7 +34,10 @@ AudioInjector::AudioInjector(Sound* sound, const AudioInjectorOptions& injectorO
|
||||||
_options(injectorOptions),
|
_options(injectorOptions),
|
||||||
_shouldStop(false)
|
_shouldStop(false)
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void AudioInjector::setOptions(AudioInjectorOptions& options) {
|
||||||
|
_options = options;
|
||||||
}
|
}
|
||||||
|
|
||||||
const uchar MAX_INJECTOR_VOLUME = 0xFF;
|
const uchar MAX_INJECTOR_VOLUME = 0xFF;
|
||||||
|
@ -73,9 +75,11 @@ void AudioInjector::injectAudio() {
|
||||||
packetStream << loopbackFlag;
|
packetStream << loopbackFlag;
|
||||||
|
|
||||||
// pack the position for injected audio
|
// pack the position for injected audio
|
||||||
|
int positionOptionOffset = injectAudioPacket.size();
|
||||||
packetStream.writeRawData(reinterpret_cast<const char*>(&_options.getPosition()), sizeof(_options.getPosition()));
|
packetStream.writeRawData(reinterpret_cast<const char*>(&_options.getPosition()), sizeof(_options.getPosition()));
|
||||||
|
|
||||||
// pack our orientation for injected audio
|
// pack our orientation for injected audio
|
||||||
|
int orientationOptionOffset = injectAudioPacket.size();
|
||||||
packetStream.writeRawData(reinterpret_cast<const char*>(&_options.getOrientation()), sizeof(_options.getOrientation()));
|
packetStream.writeRawData(reinterpret_cast<const char*>(&_options.getOrientation()), sizeof(_options.getOrientation()));
|
||||||
|
|
||||||
// pack zero for radius
|
// pack zero for radius
|
||||||
|
@ -101,6 +105,12 @@ void AudioInjector::injectAudio() {
|
||||||
|
|
||||||
int bytesToCopy = std::min(NETWORK_BUFFER_LENGTH_BYTES_PER_CHANNEL,
|
int bytesToCopy = std::min(NETWORK_BUFFER_LENGTH_BYTES_PER_CHANNEL,
|
||||||
soundByteArray.size() - currentSendPosition);
|
soundByteArray.size() - currentSendPosition);
|
||||||
|
memcpy(injectAudioPacket.data() + positionOptionOffset,
|
||||||
|
&_options.getPosition(),
|
||||||
|
sizeof(_options.getPosition()));
|
||||||
|
memcpy(injectAudioPacket.data() + orientationOptionOffset,
|
||||||
|
&_options.getOrientation(),
|
||||||
|
sizeof(_options.getOrientation()));
|
||||||
|
|
||||||
// resize the QByteArray to the right size
|
// resize the QByteArray to the right size
|
||||||
injectAudioPacket.resize(numPreAudioDataBytes + bytesToCopy);
|
injectAudioPacket.resize(numPreAudioDataBytes + bytesToCopy);
|
||||||
|
|
|
@ -29,6 +29,7 @@ public:
|
||||||
public slots:
|
public slots:
|
||||||
void injectAudio();
|
void injectAudio();
|
||||||
void stop() { _shouldStop = true; }
|
void stop() { _shouldStop = true; }
|
||||||
|
void setOptions(AudioInjectorOptions& options);
|
||||||
signals:
|
signals:
|
||||||
void finished();
|
void finished();
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -19,7 +19,6 @@ AudioInjectorOptions::AudioInjectorOptions(QObject* parent) :
|
||||||
_orientation(glm::vec3(0.0f, 0.0f, 0.0f)),
|
_orientation(glm::vec3(0.0f, 0.0f, 0.0f)),
|
||||||
_loopbackAudioInterface(NULL)
|
_loopbackAudioInterface(NULL)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AudioInjectorOptions::AudioInjectorOptions(const AudioInjectorOptions& other) {
|
AudioInjectorOptions::AudioInjectorOptions(const AudioInjectorOptions& other) {
|
||||||
|
@ -29,3 +28,11 @@ AudioInjectorOptions::AudioInjectorOptions(const AudioInjectorOptions& other) {
|
||||||
_orientation = other._orientation;
|
_orientation = other._orientation;
|
||||||
_loopbackAudioInterface = other._loopbackAudioInterface;
|
_loopbackAudioInterface = other._loopbackAudioInterface;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AudioInjectorOptions::operator=(const AudioInjectorOptions& other) {
|
||||||
|
_position = other._position;
|
||||||
|
_volume = other._volume;
|
||||||
|
_loop = other._loop;
|
||||||
|
_orientation = other._orientation;
|
||||||
|
_loopbackAudioInterface = other._loopbackAudioInterface;
|
||||||
|
}
|
|
@ -30,6 +30,7 @@ class AudioInjectorOptions : public QObject {
|
||||||
public:
|
public:
|
||||||
AudioInjectorOptions(QObject* parent = 0);
|
AudioInjectorOptions(QObject* parent = 0);
|
||||||
AudioInjectorOptions(const AudioInjectorOptions& other);
|
AudioInjectorOptions(const AudioInjectorOptions& other);
|
||||||
|
void operator=(const AudioInjectorOptions& other);
|
||||||
|
|
||||||
const glm::vec3& getPosition() const { return _position; }
|
const glm::vec3& getPosition() const { return _position; }
|
||||||
void setPosition(const glm::vec3& position) { _position = position; }
|
void setPosition(const glm::vec3& position) { _position = position; }
|
||||||
|
|
Loading…
Reference in a new issue