File: NotificationAudio.h

package info (click to toggle)
js8call 2.2.0%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 22,416 kB
  • sloc: cpp: 563,285; f90: 9,265; ansic: 937; python: 132; sh: 93; makefile: 6
file content (52 lines) | stat: -rw-r--r-- 1,164 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#ifndef NOTIFICATIONAUDIO_H
#define NOTIFICATIONAUDIO_H

#include <QIODevice>
#include <QBuffer>
#include <QAudioDeviceInfo>
#include <QAudioFormat>
#include <QAudioOutput>
#include <QFile>
#include <QPair>
#include <QPointer>
#include <QByteArray>
#include <QCache>
#include <QScopedPointer>

#include "AudioDevice.hpp"
#include "AudioDecoder.h"
#include "Audio/BWFFile.hpp"
#include "soundout.h"


class NotificationAudio :
    public QObject
{
    Q_OBJECT

public:
    NotificationAudio(QObject * parent=nullptr);
    ~NotificationAudio();

public slots:
    void status(QString message);
    void error(QString message);
    void setDevice(const QAudioDeviceInfo &device, unsigned channels, unsigned msBuffer=0);
    void play(const QString &filePath);
    void stop();

private:
    void playBytes(const QAudioFormat &format, QByteArray *bytes);

private:
    QMap<QString, QPair<QAudioFormat, QByteArray*>> m_cache;
    QPointer<SoundOutput> m_stream;
    QPointer<AudioDecoder> m_decoder;
    QPointer<BWFFile> m_file;
    QAudioDeviceInfo m_device;
    QBuffer m_buffer;
    unsigned m_channels;
    unsigned m_msBuffer;
};

#endif // NOTIFICATIONAUDIO_H