12 #ifndef hifi_AbstractAudioInterface_h
13 #define hifi_AbstractAudioInterface_h
15 #include <QtCore/QObject>
16 #include <QtMultimedia/qaudiooutput.h>
18 #include <udt/PacketHeaders.h>
20 #include "AudioInjectorOptions.h"
21 #include "AudioInjector.h"
22 #include "AudioSolo.h"
25 class AudioInjectorLocalBuffer;
28 class AbstractAudioInterface :
public QObject {
31 AbstractAudioInterface(QObject* parent = 0) : QObject(parent) {};
33 static void emitAudioPacket(
const void* audioData,
size_t bytes, quint16& sequenceNumber,
bool isStereo,
34 const Transform& transform, glm::vec3 avatarBoundingBoxCorner, glm::vec3 avatarBoundingBoxScale,
35 PacketType packetType, QString codecName = QString(
""));
40 virtual bool outputLocalInjector(
const AudioInjectorPointer& injector) = 0;
42 virtual AudioSolo& getAudioSolo() = 0;
45 virtual bool shouldLoopbackInjectors() {
return false; }
47 virtual bool setIsStereoInput(
bool stereo) = 0;
48 virtual bool isStereoInput() = 0;
50 virtual bool getLocalEcho() = 0;
51 virtual void setLocalEcho(
bool localEcho) = 0;
52 virtual void toggleLocalEcho() = 0;
54 virtual bool getServerEcho() = 0;
55 virtual void setServerEcho(
bool serverEcho) = 0;
56 virtual void toggleServerEcho() = 0;
59 void isStereoInputChanged(
bool isStereo);
62 Q_DECLARE_METATYPE(AbstractAudioInterface*)