Olive
audio.h
1 #ifndef AUDIO_H
2 #define AUDIO_H
3 
4 #include <QVector>
5 #include <QThread>
6 #include <QWaitCondition>
7 #include <QMutex>
8 
9 //#define INT16_MAX 0x7fff
10 //#define INT16_MIN (-INT16_MAX-1)
11 
12 class QIODevice;
13 class QAudioOutput;
14 class QComboBox;
15 
16 struct Sequence;
17 
18 class AudioSenderThread : public QThread {
19  Q_OBJECT
20 public:
22  void run();
23  void stop();
24  QWaitCondition cond;
25  bool close;
26  QMutex lock;
27 public slots:
28  void notifyReceiver();
29 private:
30  QVector<qint16> samples;
31  int send_audio_to_output(qint64 offset, int max);
32 };
33 
34 double log_volume(double linear);
35 
36 extern QAudioOutput* audio_output;
37 extern QIODevice* audio_io_device;
38 extern AudioSenderThread* audio_thread;
39 extern QMutex audio_write_lock;
40 
41 #define audio_ibuffer_size 192000
42 extern qint8 audio_ibuffer[audio_ibuffer_size];
43 extern qint64 audio_ibuffer_read;
44 extern long audio_ibuffer_frame;
45 extern double audio_ibuffer_timecode;
46 extern bool audio_scrub;
47 extern bool recording;
48 extern bool audio_rendering;
49 void clear_audio_ibuffer();
50 
51 int current_audio_freq();
52 
53 bool is_audio_device_set();
54 
55 void init_audio();
56 void stop_audio();
57 qint64 get_buffer_offset_from_frame(double framerate, long frame);
58 
59 bool start_recording();
60 void stop_recording();
61 QString get_recorded_audio_filename();
62 
63 void combobox_audio_sample_rates(QComboBox* combobox);
64 
65 #endif // AUDIO_H
Definition: sequence.h:13
Definition: audio.h:18