Mercurial > octave-nkf
annotate libinterp/dldfcn/player_class.cc @ 19508:91ee78cdba6c
New files for audio playback and recording
* player_class.cc, player_class.h: source files implementing player class
for audio playback
* recorder_class.cc, recorder_class.h: source files implementing recorder
class for audio recording
author | Vytautas Jančauskas <unaudio@gmail.com> |
---|---|
date | Wed, 11 Sep 2013 22:08:20 +0300 |
parents | |
children | b9df6b3fd5ef |
rev | line source |
---|---|
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
1 #include <octave/oct.h> |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
2 #include <octave/ov.h> |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
3 #include <octave/parse.h> |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
4 #include <portaudio.h> |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
5 #include <stdint.h> |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
6 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
7 #include "common.h" |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
8 #include "player_class.h" |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
9 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
10 #define BUFFER_SIZE 512 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
11 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
12 DEFINE_OCTAVE_ALLOCATOR (audioplayer); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
13 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (audioplayer, "audioplayer", "audioplayer"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
14 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
15 int is_big_endian (void) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
16 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
17 union |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
18 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
19 uint32_t i; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
20 char c[4]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
21 } bint = {0x01020304}; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
22 return bint.c[0] == 1; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
23 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
24 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
25 static int octave_play_callback(const void *input, void *output, |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
26 unsigned long frames, |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
27 const PaStreamCallbackTimeInfo *time, |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
28 PaStreamCallbackFlags status, |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
29 void *data) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
30 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
31 audioplayer *player = (audioplayer *)data; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
32 int big_endian = is_big_endian (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
33 octave_value_list args, retval; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
34 args(0) = frames; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
35 retval = feval (player->octave_callback_function, args, 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
36 RowVector sound_l, sound_r; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
37 Matrix sound = retval(0).matrix_value (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
38 int return_status = retval(1).int_value (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
39 sound_l.resize(frames); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
40 sound_r.resize(frames); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
41 if (sound.cols () == 1) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
42 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
43 for (int i = 0; i < frames; i++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
44 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
45 sound_l(i) = sound(i, 0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
46 sound_r(i) = sound(i, 0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
47 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
48 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
49 else if (sound.cols () == 2) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
50 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
51 for (int i = 0; i < frames; i++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
52 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
53 sound_l(i) = sound(i, 0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
54 sound_r(i) = sound(i, 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
55 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
56 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
57 else |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
58 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
59 return paAbort; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
60 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
61 for (int i = 0; i < frames; i++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
62 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
63 if (player->get_nbits () == 8) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
64 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
65 int8_t *buffer = (int8_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
66 buffer[2 * i] = sound_l.elem(i) * (pow (2.0, 7) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
67 buffer[2 * i + 1] = sound_r.elem(i) * (pow (2.0, 7) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
68 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
69 else if (player->get_nbits () == 16) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
70 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
71 int16_t *buffer = (int16_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
72 buffer[2 * i] = sound_l.elem(i) * (pow (2.0, 15) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
73 buffer[2 * i + 1] = sound_r.elem(i) * (pow (2.0, 15) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
74 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
75 else if (player->get_nbits() == 24) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
76 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
77 uint8_t *buffer = (uint8_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
78 int32_t sample_l = sound_l.elem(i) * (pow (2.0, 23) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
79 int32_t sample_r = sound_r.elem(i) * (pow (2.0, 23) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
80 sample_l &= 0x00ffffff; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
81 sample_r &= 0x00ffffff; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
82 uint8_t *_sample_l = (uint8_t *)&sample_l; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
83 uint8_t *_sample_r = (uint8_t *)&sample_r; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
84 buffer[i * 6 + 0] = _sample_l[0 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
85 buffer[i * 6 + 1] = _sample_l[1 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
86 buffer[i * 6 + 2] = _sample_l[2 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
87 buffer[i * 6 + 3] = _sample_r[0 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
88 buffer[i * 6 + 4] = _sample_r[1 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
89 buffer[i * 6 + 5] = _sample_r[2 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
90 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
91 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
92 return return_status; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
93 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
94 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
95 static int portaudio_play_callback (const void *input, void *output, |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
96 unsigned long frames, |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
97 const PaStreamCallbackTimeInfo* time, |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
98 PaStreamCallbackFlags status, |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
99 void *data) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
100 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
101 audioplayer *player = (audioplayer *)data; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
102 int big_endian = is_big_endian (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
103 int channels = player->get_channels (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
104 RowVector *sound_l = player->get_left (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
105 RowVector *sound_r; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
106 if (channels > 1) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
107 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
108 sound_r = player->get_right (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
109 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
110 else |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
111 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
112 sound_r = sound_l; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
113 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
114 for (int j = 0, k = 0; j < frames; j++, k += 2) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
115 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
116 unsigned int sample_number = player->get_sample_number(); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
117 if (sample_number > player->get_end_sample ()) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
118 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
119 return paAbort; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
120 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
121 if (player->get_type () == DOUBLE) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
122 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
123 if (player->get_nbits () == 8) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
124 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
125 int8_t *buffer = (int8_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
126 buffer[k] = sound_l->elem (sample_number) * (pow (2.0, 7) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
127 buffer[k + 1] = sound_r->elem (sample_number) * (pow (2.0, 7) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
128 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
129 else if (player->get_nbits () == 16) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
130 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
131 int16_t *buffer = (int16_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
132 buffer[k] = sound_l->elem (sample_number) * (pow (2.0, 15) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
133 buffer[k + 1] = sound_r->elem (sample_number) * (pow (2.0, 15) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
134 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
135 else if (player->get_nbits() == 24) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
136 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
137 uint8_t *buffer = (uint8_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
138 int32_t sample_l = sound_l->elem(sample_number) * (pow (2.0, 23) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
139 int32_t sample_r = sound_r->elem(sample_number) * (pow (2.0, 23) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
140 sample_l &= 0x00ffffff; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
141 sample_r &= 0x00ffffff; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
142 uint8_t *_sample_l = (uint8_t *)&sample_l; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
143 uint8_t *_sample_r = (uint8_t *)&sample_r; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
144 buffer[j * 6 + 0] = _sample_l[0 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
145 buffer[j * 6 + 1] = _sample_l[1 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
146 buffer[j * 6 + 2] = _sample_l[2 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
147 buffer[j * 6 + 3] = _sample_r[0 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
148 buffer[j * 6 + 4] = _sample_r[1 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
149 buffer[j * 6 + 5] = _sample_r[2 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
150 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
151 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
152 else if (player->get_type () == INT8) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
153 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
154 int8_t *buffer = (int8_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
155 buffer[k] = sound_l->elem (sample_number); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
156 buffer[k + 1] = sound_r->elem (sample_number); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
157 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
158 else if (player->get_type () == UINT8) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
159 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
160 uint8_t *buffer = (uint8_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
161 buffer[k] = sound_l->elem (sample_number); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
162 buffer[k + 1] = sound_r->elem (sample_number); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
163 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
164 else if (player->get_type () == INT16) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
165 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
166 int16_t *buffer = (int16_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
167 buffer[k] = sound_l->elem (sample_number); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
168 buffer[k + 1] = sound_r->elem (sample_number); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
169 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
170 player->set_sample_number (sample_number + 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
171 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
172 return paContinue; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
173 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
174 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
175 audioplayer::audioplayer () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
176 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
177 this->nbits = 16; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
178 this->id = -1; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
179 this->sample_number = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
180 this->tag = charMatrix (""); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
181 Matrix userdata; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
182 this->userdata = octave_value (userdata); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
183 this->stream = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
184 this->octave_callback_function = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
185 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
186 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
187 audioplayer::~audioplayer () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
188 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
189 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
190 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
191 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
192 void audioplayer::print (std::ostream& os, bool pr_as_read_syntax ) const |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
193 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
194 print_raw (os, pr_as_read_syntax); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
195 newline (os); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
196 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
197 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
198 void audioplayer::print_raw (std::ostream& os, bool pr_as_read_syntax) const |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
199 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
200 os << 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
201 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
202 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
203 void audioplayer::init_fn() |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
204 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
205 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
206 int device; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
207 err = Pa_Initialize (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
208 if (err != paNoError) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
209 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
210 error ("audioplayer: Initialization error!"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
211 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
212 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
213 int numDevices; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
214 numDevices = Pa_GetDeviceCount (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
215 if (numDevices < 0) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
216 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
217 error ("audioplayer: No audio devices found!"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
218 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
219 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
220 if (this->get_id () == -1) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
221 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
222 device = Pa_GetDefaultOutputDevice (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
223 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
224 else |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
225 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
226 device = this->get_id (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
227 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
228 output_parameters.device = device; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
229 output_parameters.channelCount = 2; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
230 output_parameters.sampleFormat = bits_to_format (this->get_nbits ()); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
231 output_parameters.suggestedLatency = Pa_GetDeviceInfo (device)->defaultHighOutputLatency; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
232 output_parameters.hostApiSpecificStreamInfo = NULL; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
233 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
234 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
235 void audioplayer::init () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
236 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
237 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
238 int channels = this->y.rows (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
239 RowVector *sound_l = this->get_left (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
240 int device; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
241 err = Pa_Initialize (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
242 if (err != paNoError) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
243 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
244 error ("audioplayer: Initialization error!"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
245 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
246 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
247 int numDevices; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
248 numDevices = Pa_GetDeviceCount (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
249 if (numDevices < 0) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
250 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
251 error ("audioplayer: No audio devices found!"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
252 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
253 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
254 if (this->get_id () == -1) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
255 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
256 device = Pa_GetDefaultOutputDevice (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
257 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
258 else |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
259 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
260 device = this->get_id (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
261 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
262 output_parameters.device = device; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
263 output_parameters.channelCount = 2; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
264 if (this->type == DOUBLE) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
265 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
266 output_parameters.sampleFormat = bits_to_format (this->get_nbits ()); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
267 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
268 else if (this->type == INT8) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
269 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
270 output_parameters.sampleFormat = paInt8; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
271 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
272 else if (this->type == UINT8) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
273 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
274 output_parameters.sampleFormat = paUInt8; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
275 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
276 else if (this->type == INT16) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
277 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
278 output_parameters.sampleFormat = paInt16; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
279 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
280 output_parameters.suggestedLatency = Pa_GetDeviceInfo (device)->defaultHighOutputLatency; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
281 output_parameters.hostApiSpecificStreamInfo = NULL; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
282 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
283 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
284 void audioplayer::set_y (octave_value y) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
285 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
286 if (y.is_int8_type ()) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
287 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
288 this->type = INT8; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
289 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
290 else if (y.is_uint8_type ()) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
291 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
292 this->type = UINT8; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
293 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
294 else if (y.is_int16_type ()) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
295 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
296 this->type = INT16; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
297 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
298 else |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
299 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
300 this->type = DOUBLE; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
301 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
302 this->y = y.matrix_value (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
303 if (this->y.rows () > 2) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
304 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
305 this->y = this->y.transpose (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
306 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
307 this->channels = this->y.rows (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
308 this->left = this->y.row (0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
309 if (this->channels == 2) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
310 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
311 this->right = this->y.row (1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
312 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
313 this->reset_end_sample (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
314 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
315 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
316 void audioplayer::set_y (octave_function *fn) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
317 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
318 this->octave_callback_function = fn; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
319 this->channels = 2; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
320 this->reset_end_sample (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
321 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
322 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
323 Matrix &audioplayer::get_y () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
324 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
325 return this->y; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
326 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
327 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
328 RowVector *audioplayer::get_left () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
329 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
330 return &(this->left); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
331 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
332 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
333 RowVector *audioplayer::get_right () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
334 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
335 return &(this->right); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
336 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
337 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
338 void audioplayer::set_fs (int fs) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
339 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
340 this->fs = fs; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
341 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
342 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
343 int audioplayer::get_fs () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
344 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
345 return this->fs; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
346 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
347 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
348 void audioplayer::set_nbits (int nbits) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
349 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
350 this->nbits = nbits; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
351 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
352 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
353 int audioplayer::get_nbits () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
354 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
355 return this->nbits; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
356 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
357 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
358 void audioplayer::set_id (int id) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
359 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
360 this->id = id; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
361 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
362 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
363 int audioplayer::get_id () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
364 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
365 return this->id; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
366 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
367 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
368 int audioplayer::get_channels () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
369 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
370 return this->channels; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
371 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
372 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
373 audio_type audioplayer::get_type () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
374 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
375 return this->type; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
376 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
377 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
378 void audioplayer::set_sample_number (unsigned int sample_number) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
379 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
380 this->sample_number = sample_number; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
381 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
382 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
383 unsigned int audioplayer::get_sample_number () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
384 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
385 return this->sample_number; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
386 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
387 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
388 unsigned int audioplayer::get_total_samples () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
389 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
390 return this->left.length (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
391 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
392 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
393 void audioplayer::set_end_sample (unsigned int end_sample) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
394 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
395 this->end_sample = end_sample; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
396 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
397 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
398 unsigned int audioplayer::get_end_sample () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
399 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
400 return this->end_sample; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
401 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
402 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
403 void audioplayer::reset_end_sample () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
404 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
405 this->set_end_sample (this->left.length ()); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
406 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
407 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
408 void audioplayer::set_tag (charMatrix tag) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
409 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
410 this->tag = tag; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
411 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
412 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
413 charMatrix audioplayer::get_tag () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
414 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
415 return this->tag; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
416 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
417 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
418 void audioplayer::set_userdata (octave_value userdata) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
419 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
420 this->userdata = userdata; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
421 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
422 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
423 octave_value audioplayer::get_userdata () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
424 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
425 return this->userdata; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
426 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
427 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
428 void audioplayer::playblocking () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
429 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
430 if (this->get_stream ()) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
431 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
432 this->stop (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
433 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
434 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
435 uint32_t buffer[BUFFER_SIZE * 2]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
436 err = Pa_OpenStream (&stream, NULL, &(this->output_parameters), this->get_fs (), BUFFER_SIZE, paClipOff, NULL, NULL); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
437 if (err != paNoError) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
438 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
439 error ("audioplayer: Error opening audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
440 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
441 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
442 err = Pa_StartStream (stream); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
443 if (err != paNoError) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
444 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
445 error ("audioplayer: Error starting audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
446 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
447 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
448 unsigned int start, end; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
449 start = this->get_sample_number (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
450 end = this->get_end_sample (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
451 for (int i = start; i < end; i += BUFFER_SIZE) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
452 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
453 if (this->octave_callback_function != 0) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
454 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
455 octave_play_callback (0, (void *)buffer, BUFFER_SIZE, 0, 0, (void *)this); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
456 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
457 else |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
458 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
459 portaudio_play_callback (0, (void *)buffer, BUFFER_SIZE, 0, 0, (void *)this); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
460 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
461 err = Pa_WriteStream (stream, buffer, BUFFER_SIZE); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
462 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
463 err = Pa_StopStream (stream); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
464 if (err != paNoError) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
465 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
466 error ("audioplayer: Error stoping audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
467 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
468 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
469 err = Pa_CloseStream (stream); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
470 if (err != paNoError) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
471 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
472 error ("audioplayer: Error closing audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
473 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
474 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
475 stream = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
476 this->set_sample_number (0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
477 this->reset_end_sample (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
478 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
479 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
480 void audioplayer::play () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
481 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
482 if (this->get_stream ()) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
483 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
484 this->stop (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
485 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
486 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
487 if (this->octave_callback_function != 0) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
488 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
489 err = Pa_OpenStream (&stream, NULL, &(this->output_parameters), this->get_fs (), BUFFER_SIZE, paClipOff, octave_play_callback, (void *)this); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
490 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
491 else |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
492 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
493 err = Pa_OpenStream (&stream, NULL, &(this->output_parameters), this->get_fs (), BUFFER_SIZE, paClipOff, portaudio_play_callback, (void *)this); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
494 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
495 if (err != paNoError) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
496 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
497 error ("audioplayer: Error opening audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
498 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
499 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
500 err = Pa_StartStream (stream); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
501 if (err != paNoError) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
502 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
503 error ("audioplayer: Error starting audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
504 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
505 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
506 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
507 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
508 void audioplayer::pause () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
509 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
510 if (this->get_stream () == 0) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
511 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
512 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
513 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
514 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
515 err = Pa_StopStream (stream); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
516 if (err != paNoError) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
517 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
518 error ("audiorecorder: Error stoping audio recording stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
519 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
520 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
521 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
522 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
523 void audioplayer::resume () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
524 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
525 if (this->get_stream() == 0) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
526 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
527 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
528 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
529 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
530 err = Pa_StartStream (stream); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
531 if (err != paNoError) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
532 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
533 error ("audiorecorder: Error starting audio recording stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
534 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
535 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
536 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
537 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
538 PaStream *audioplayer::get_stream() |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
539 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
540 return this->stream; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
541 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
542 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
543 void audioplayer::stop() |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
544 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
545 if (this->get_stream () == 0) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
546 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
547 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
548 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
549 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
550 this->set_sample_number (0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
551 this->reset_end_sample (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
552 if (not Pa_IsStreamStopped (this->get_stream ())) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
553 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
554 err = Pa_AbortStream (this->get_stream ()); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
555 if (err != paNoError) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
556 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
557 error ("audioplayer: Error stopping audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
558 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
559 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
560 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
561 err = Pa_CloseStream (this->get_stream ()); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
562 if (err != paNoError) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
563 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
564 error ("audioplayer: Error closing audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
565 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
566 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
567 stream = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
568 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
569 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
570 bool audioplayer::isplaying () |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
571 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
572 if (this->get_stream() == 0) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
573 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
574 return false; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
575 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
576 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
577 err = Pa_IsStreamActive (stream); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
578 if (err != 0 and err != 1) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
579 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
580 error ("audiorecorder: Error checking stream activity status"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
581 return false; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
582 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
583 return bool(err); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
584 } |