Mercurial > octave-nkf
annotate libinterp/dldfcn/audiodevinfo.cc @ 19617:6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 15 Jan 2015 15:36:54 -0500 |
parents | 478d35191196 |
children | 76478d2da117 |
rev | line source |
---|---|
19534
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
1 /* |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
2 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
3 Copyright (C) 2013 Vytautas JanĨauskas |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
4 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
5 This file is part of Octave. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
6 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
7 Octave is free software; you can redistribute it and/or modify it |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
8 under the terms of the GNU General Public License as published by the |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
9 Free Software Foundation; either version 3 of the License, or (at your |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
10 option) any later version. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
11 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but WITHOUT |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
15 for more details. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
16 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
18 along with Octave; see the file COPYING. If not, see |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
19 <http://www.gnu.org/licenses/>. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
20 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
21 */ |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
22 |
19535
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19534
diff
changeset
|
23 #ifdef HAVE_CONFIG_H |
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19534
diff
changeset
|
24 #include <config.h> |
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19534
diff
changeset
|
25 #endif |
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19534
diff
changeset
|
26 |
19544 | 27 // <cstdint> requires c++11 |
28 #include <stdint.h> | |
29 | |
30 #include <string> | |
31 #include <vector> | |
32 | |
19590
d7057df2968e
use existing function to determine endianness in audiodevinfo.cc
John W. Eaton <jwe@octave.org>
parents:
19589
diff
changeset
|
33 #include "mach-info.h" |
d7057df2968e
use existing function to determine endianness in audiodevinfo.cc
John W. Eaton <jwe@octave.org>
parents:
19589
diff
changeset
|
34 |
19545
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
35 #include "defun-dld.h" |
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
36 #include "error.h" |
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
37 #include "gripes.h" |
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
38 #include "oct-obj.h" |
19544 | 39 #include "ov.h" |
19545
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
40 #include "ov-int32.h" |
19506
c2031ad6dbe7
Fix octave header includes in audiodevinfo
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19503
diff
changeset
|
41 #include "ov-struct.h" |
19544 | 42 #include "parse.h" |
43 | |
44 #if defined (HAVE_PORTAUDIO) | |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
45 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
46 #include <portaudio.h> |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
47 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
48 PaSampleFormat |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
49 bits_to_format (int bits) |
19507
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
50 { |
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
51 if (bits == 8) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
52 return paInt8; |
19507
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
53 else if (bits == 16) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
54 return paInt16; |
19507
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
55 else if (bits == 24) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
56 return paInt24; |
19507
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
57 else if (bits == 32) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
58 return paInt32; |
19507
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
59 else if (bits == -1) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
60 return paFloat32; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
61 else |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
62 return 0; |
19507
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
63 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
64 |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
65 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
66 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
67 DEFUN_DLD (audiodevinfo, args, , |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
68 "-*- texinfo -*-\n\ |
19539
ce02743b6f2a
Fix texinfo docstring syntax for all audio functions
Mike Miller <mtmiller@ieee.org>
parents:
19537
diff
changeset
|
69 @deftypefn {Loadable Function} {@var{devinfo} =} audiodevinfo ()\n\ |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
70 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
71 @deftypefnx {Loadable Function} {@var{devs} =} audiodevinfo (@var{io})\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
72 @deftypefnx {Loadable Function} {@var{name} =} audiodevinfo (@var{io}, @var{id})\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
73 @deftypefnx {Loadable Function} {@var{id} =} audiodevinfo (@var{io}, @var{name})\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
74 @deftypefnx {Loadable Function} {@var{id} =} audiodevinfo (@var{io}, @var{rate}, @var{bits}, @var{chans})\n\ |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
75 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
76 @deftypefnx {Loadable Function} {@var{supports} =} audiodevinfo (@var{io}, @var{id}, @var{rate}, @var{bits}, @var{chans})\n\ |
19532
0ac6a4e7369b
change docstrings in audio defundld cc files to work with new texinfo
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19517
diff
changeset
|
77 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
78 Return a structure with fields \"input\" and \"output\".\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
79 The value of each field is a structure array with fields\n\ |
19611
f64cdbe11621
doc: Periodic spellcheck of documentation.
Rik <rik@octave.org>
parents:
19608
diff
changeset
|
80 \"Name\", @nospell{\"DriverVersion\"} and \"ID\" describing an audio device.\n\ |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
81 \n\ |
19532
0ac6a4e7369b
change docstrings in audio defundld cc files to work with new texinfo
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19517
diff
changeset
|
82 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
83 If the optional argument @var{io} is 1, return information about input\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
84 devices only. If it is 0, return information about output devices only.\n\ |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
85 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
86 If the optional argument @var{id} is provided, return information about\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
87 corresponding device.\n\ |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
88 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
89 If the optional argument @var{name} is provided, return the id of the\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
90 named device.\n\ |
19532
0ac6a4e7369b
change docstrings in audio defundld cc files to work with new texinfo
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19517
diff
changeset
|
91 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
92 Given a sampling rate, bits per sample, and number of channels for\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
93 an input or output device, return the ID of the first device that\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
94 supports playback or recording using the specified parameters.\n\ |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
95 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
96 If also given a device ID, return true if the device supports playback\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
97 or recording using those parameters.\n\ |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
98 @end deftypefn") |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
99 { |
19517
abde714a4f88
let audiodevinfo be built even when PortAudio is not present
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19507
diff
changeset
|
100 octave_value retval; |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
101 |
19517
abde714a4f88
let audiodevinfo be built even when PortAudio is not present
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19507
diff
changeset
|
102 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
103 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
104 int nargin = args.length (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
105 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
106 octave_scalar_map devinfo; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
107 octave_value_list input; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
108 octave_value_list output; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
109 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
110 PaError err = Pa_Initialize (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
111 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
112 if (err != paNoError) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
113 { |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
114 error ("audiodevinfo: PortAudio initialization failed"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
115 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
116 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
117 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
118 int num_devices = Pa_GetDeviceCount (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
119 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
120 if (num_devices < 0) |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
121 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
122 error ("audiodevinfo: no audio device found"); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
123 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
124 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
125 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
126 octave_idx_type numinput = 0, numoutput = 0; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
127 for (int i = 0; i < num_devices; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
128 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
129 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (i); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
130 |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
131 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
132 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
133 warning ("Octave:invalid-audio-device", |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
134 "invalid audio device ID = %d", i); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
135 continue; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
136 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
137 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
138 if (device_info->maxInputChannels != 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
139 numinput++; |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
140 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
141 if (device_info->maxOutputChannels != 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
142 numoutput++; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
143 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
144 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
145 Cell input_name (dim_vector (1, numinput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
146 Cell input_driver_version (dim_vector (1, numinput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
147 Cell input_id (dim_vector (1, numinput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
148 Cell output_name (dim_vector (1, numoutput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
149 Cell output_driver_version (dim_vector (1, numoutput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
150 Cell output_id (dim_vector (1, numoutput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
151 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
152 octave_idx_type idx_i = 0, idx_o = 0; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
153 for (int i = 0; i < num_devices; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
154 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
155 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (i); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
156 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
157 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
158 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
159 warning ("Octave:invalid-audio-device", |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
160 "invalid audio device ID = %d", i); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
161 continue; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
162 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
163 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
164 const PaHostApiInfo *api_info = Pa_GetHostApiInfo (device_info->hostApi); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
165 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
166 const char *driver = api_info ? api_info->name : ""; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
167 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
168 char name[128]; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
169 sprintf (name, "%s (%s)", device_info->name, driver); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
170 |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
171 if (device_info->maxInputChannels != 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
172 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
173 input_name(idx_i) = name; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
174 input_driver_version(idx_i) = driver; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
175 input_id(idx_i) = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
176 idx_i++; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
177 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
178 |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
179 if (device_info->maxOutputChannels != 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
180 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
181 output_name(idx_o) = name; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
182 output_driver_version(idx_o) = driver; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
183 output_id(idx_o) = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
184 idx_o++; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
185 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
186 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
187 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
188 octave_map inputdev, outputdev; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
189 inputdev.setfield ("Name", input_name); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
190 inputdev.setfield ("DriverVersion", input_driver_version); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
191 inputdev.setfield ("ID", input_id); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
192 outputdev.setfield ("Name", output_name); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
193 outputdev.setfield ("DriverVersion", output_driver_version); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
194 outputdev.setfield ("ID", output_id); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
195 devinfo.setfield ("input", inputdev); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
196 devinfo.setfield ("output", outputdev); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
197 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
198 // Return information about input and output audio devices and |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
199 // their properties. |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
200 if (nargin == 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
201 retval = devinfo; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
202 // Return the number of input or output devices |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
203 else if (nargin == 1) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
204 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
205 if (args(0).int_value () == 0) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
206 retval = numoutput; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
207 else if (args(0).int_value () == 1) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
208 retval = numinput; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
209 else |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
210 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
211 error ("audiodevinfo: please specify 0 for output and 1 for input devices"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
212 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
213 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
214 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
215 // Return device name when given id or id when given device name. |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
216 else if (nargin == 2) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
217 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
218 bool found = false; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
219 int outin = args(0).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
220 if (args(1).is_string ()) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
221 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
222 if (outin == 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
223 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
224 for (int i = 0; i < numoutput; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
225 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
226 if (output_name(i).string_value () == args(1).string_value ()) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
227 { |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
228 retval = output_id(i); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
229 found = true; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
230 break; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
231 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
232 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
233 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
234 else if (outin == 1) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
235 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
236 for (int i = 0; i < numinput; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
237 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
238 if (input_name(i).string_value () == args(1).string_value ()) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
239 { |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
240 retval = input_id(i); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
241 found = true; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
242 break; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
243 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
244 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
245 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
246 else |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
247 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
248 error ("audiodevinfo: please specify 0 for output and 1 for input devices"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
249 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
250 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
251 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
252 else |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
253 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
254 if (outin == 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
255 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
256 for (int i = 0; i < numoutput; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
257 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
258 if (output_id(i).int_value () == args(1).int_value ()) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
259 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
260 retval = output_name(i); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
261 found = true; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
262 break; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
263 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
264 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
265 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
266 else if (outin == 1) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
267 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
268 for (int i = 0; i < numinput; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
269 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
270 if (input_id(i).int_value () == args(1).int_value ()) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
271 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
272 retval = input_name(i); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
273 found = true; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
274 break; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
275 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
276 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
277 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
278 else |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
279 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
280 error ("audiodevinfo: please specify 0 for output and 1 for input devices"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
281 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
282 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
283 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
284 if (not found) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
285 error ("audiodevinfo: no device meeting the specified criteria found"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
286 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
287 else if (nargin == 3) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
288 { |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
289 // FIXME: what was supposed to happen here? |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
290 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
291 // Return the id of the first device meeting specified criteria. |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
292 else if (nargin == 4) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
293 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
294 int io = args(0).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
295 int rate = args(1).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
296 int bits = args(2).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
297 int chans = args(3).int_value (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
298 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
299 for (int i = 0; i < num_devices; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
300 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
301 PaStreamParameters stream_parameters; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
302 stream_parameters.device = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
303 stream_parameters.channelCount = chans; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
304 PaSampleFormat format = bits_to_format (bits); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
305 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
306 if (format != 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
307 stream_parameters.sampleFormat = format; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
308 else |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
309 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
310 error ("audiodevinfo: no such bits per sample format"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
311 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
312 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
313 |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
314 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (i); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
315 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
316 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
317 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
318 warning ("Octave:invalid-audio-device", |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
319 "invalid audio device ID = %d", i); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
320 continue; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
321 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
322 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
323 stream_parameters.suggestedLatency |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
324 = device_info->defaultLowInputLatency; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
325 |
19552 | 326 stream_parameters.hostApiSpecificStreamInfo = 0; |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
327 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
328 if (io == 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
329 { |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
330 if (device_info->maxOutputChannels < chans) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
331 continue; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
332 |
19552 | 333 err = Pa_IsFormatSupported (0, &stream_parameters, rate); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
334 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
335 if (err == paFormatIsSupported) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
336 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
337 retval = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
338 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
339 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
340 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
341 else if (io == 1) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
342 { |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
343 if (device_info->maxInputChannels < chans) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
344 continue; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
345 |
19552 | 346 err = Pa_IsFormatSupported (&stream_parameters, 0, rate); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
347 if (err == paFormatIsSupported) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
348 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
349 retval = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
350 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
351 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
352 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
353 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
354 retval = -1; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
355 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
356 // Check if given device supports specified playback or recording modes. |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
357 else if (nargin == 5) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
358 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
359 int io = args(0).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
360 int id = args(1).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
361 int rate = args(2).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
362 int bits = args(3).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
363 int chans = args(4).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
364 PaStreamParameters stream_parameters; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
365 stream_parameters.device = id; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
366 stream_parameters.channelCount = chans; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
367 PaSampleFormat format = bits_to_format (bits); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
368 if (format != 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
369 stream_parameters.sampleFormat = format; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
370 else |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
371 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
372 error ("audiodevinfo: no such bits per sample format"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
373 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
374 } |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
375 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
376 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (id); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
377 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
378 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
379 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
380 error ("invalid audio device ID = %d", id); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
381 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
382 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
383 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
384 stream_parameters.suggestedLatency |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
385 = device_info->defaultLowInputLatency; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
386 |
19552 | 387 stream_parameters.hostApiSpecificStreamInfo = 0; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
388 if (io == 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
389 { |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
390 if (device_info->maxOutputChannels < chans) |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
391 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
392 retval = 0; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
393 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
394 } |
19552 | 395 err = Pa_IsFormatSupported (0, &stream_parameters, rate); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
396 if (err == paFormatIsSupported) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
397 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
398 retval = 1; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
399 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
400 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
401 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
402 else if (io == 1) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
403 { |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
404 if (device_info->maxInputChannels < chans) |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
405 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
406 retval = 0; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
407 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
408 } |
19552 | 409 err = Pa_IsFormatSupported (&stream_parameters, 0, rate); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
410 if (err == paFormatIsSupported) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
411 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
412 retval = 1; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
413 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
414 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
415 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
416 else |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
417 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
418 error ("audiodevinfo: please specify 0 for output and 1 for input devices"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
419 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
420 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
421 retval = 0; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
422 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
423 else |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
424 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
425 error ("audiodevinfo: wrong number of arguments"); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
426 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
427 } |
19517
abde714a4f88
let audiodevinfo be built even when PortAudio is not present
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19507
diff
changeset
|
428 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
429 |
19517
abde714a4f88
let audiodevinfo be built even when PortAudio is not present
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19507
diff
changeset
|
430 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
431 |
19517
abde714a4f88
let audiodevinfo be built even when PortAudio is not present
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19507
diff
changeset
|
432 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
433 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
434 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
435 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
436 |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
437 /* |
19562
4f615cd9a68d
Use "testif HAVE_PORTAUDIO" for new audio function tests
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19560
diff
changeset
|
438 %!testif HAVE_PORTAUDIO |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
439 %! devinfo = audiodevinfo; |
19543 | 440 %! assert (rows (devinfo.input), 1); |
441 %! assert (rows (devinfo.output), 1); | |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
442 |
19562
4f615cd9a68d
Use "testif HAVE_PORTAUDIO" for new audio function tests
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19560
diff
changeset
|
443 %!testif HAVE_PORTAUDIO |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
444 %! devinfo = audiodevinfo; |
19543 | 445 %! nout = audiodevinfo (0); |
446 %! nin = audiodevinfo (1); | |
447 %! assert (columns (devinfo.output), nout); | |
448 %! assert (columns (devinfo.input), nin); | |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
449 |
19562
4f615cd9a68d
Use "testif HAVE_PORTAUDIO" for new audio function tests
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19560
diff
changeset
|
450 %!testif HAVE_PORTAUDIO |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
451 %! devinfo = audiodevinfo; |
19543 | 452 %! nout = audiodevinfo (0); |
453 %! nin = audiodevinfo (1); | |
454 %! for i = 1:nout, | |
455 %! assert (devinfo.output(i).Name, audiodevinfo (0, devinfo.output(i).ID)) | |
456 %! endfor | |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
457 %! for i=1:nin, |
19543 | 458 %! assert (devinfo.input(i).Name, audiodevinfo (1, devinfo.input(i).ID)) |
459 %! endfor | |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
460 |
19562
4f615cd9a68d
Use "testif HAVE_PORTAUDIO" for new audio function tests
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19560
diff
changeset
|
461 %!testif HAVE_PORTAUDIO |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
462 %! devinfo = audiodevinfo; |
19543 | 463 %! nout = audiodevinfo (0); |
464 %! nin = audiodevinfo (1); | |
465 %! for i = 1:nout, | |
466 %! assert (devinfo.output(i).ID, audiodevinfo (0, devinfo.output(i).Name)) | |
467 %! endfor | |
468 %! for i = 1:nin, | |
469 %! assert (devinfo.input(i).ID, audiodevinfo (1, devinfo.input(i).Name)) | |
470 %! endfor | |
19534
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
471 */ |
19544 | 472 |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
473 #ifdef HAVE_PORTAUDIO |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
474 |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
475 enum audio_type { TYPE_INT8, TYPE_UINT8, TYPE_UINT16, TYPE_DOUBLE }; |
19544 | 476 |
477 class audioplayer : public octave_base_value | |
478 { | |
479 public: | |
480 audioplayer (void); | |
19604
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
481 ~audioplayer (void); |
19544 | 482 |
483 // Overloaded base functions | |
484 double player_value (void) const { return 0; } | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
485 virtual double scalar_value (bool = false) const { return 0; } |
19544 | 486 void print (std::ostream& os, bool pr_as_read_syntax = false) const; |
487 void print_raw (std::ostream& os, bool pr_as_read_syntax) const; | |
488 | |
489 // Properties | |
490 bool is_constant (void) const { return true; } | |
491 bool is_defined (void) const { return true; } | |
492 bool print_as_scalar (void) const { return true; } | |
493 | |
494 void init (void); | |
495 void init_fn (void); | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
496 void set_y (const octave_value& y); |
19544 | 497 void set_y (octave_function *fn); |
498 void set_y (std::string fn); | |
499 Matrix& get_y (void); | |
19581
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
500 RowVector get_left (void) const; |
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
501 RowVector get_right (void) const; |
19544 | 502 void set_fs (int fs); |
503 int get_fs (void); | |
504 void set_nbits (int nbits); | |
505 int get_nbits (void); | |
506 void set_id (int id); | |
507 int get_id (void); | |
508 int get_channels (void); | |
509 audio_type get_type (void); | |
510 | |
511 void set_sample_number (unsigned int sample); | |
512 unsigned int get_sample_number (void); | |
513 unsigned int get_total_samples (void); | |
514 void set_end_sample (unsigned int sample); | |
515 unsigned int get_end_sample (void); | |
516 void reset_end_sample (void); | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
517 void set_tag (const charMatrix& tag); |
19544 | 518 charMatrix get_tag (void); |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
519 void set_userdata (const octave_value& userdata); |
19544 | 520 octave_value get_userdata (void); |
521 PaStream *get_stream (void); | |
522 | |
523 void playblocking (void); | |
524 void play (void); | |
525 void pause (void); | |
526 void resume (void); | |
527 void stop (void); | |
528 bool isplaying (void); | |
529 | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
530 octave_function *octave_callback_function; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
531 |
19544 | 532 private: |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
533 int id; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
534 int fs; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
535 int nbits; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
536 int channels; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
537 unsigned int sample_number; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
538 unsigned int end_sample; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
539 charMatrix tag; |
19544 | 540 Matrix y; |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
541 octave_value userdata; |
19544 | 542 RowVector left; |
543 RowVector right; | |
544 PaStream *stream; | |
545 PaStreamParameters output_parameters; | |
546 audio_type type; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
547 |
19544 | 548 DECLARE_OCTAVE_ALLOCATOR |
549 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA | |
550 }; | |
551 | |
19586
8dce81f7448d
increase audio buffer size
John W. Eaton <jwe@octave.org>
parents:
19585
diff
changeset
|
552 static const unsigned int BUFFER_SIZE = 8192; |
19544 | 553 |
554 DEFINE_OCTAVE_ALLOCATOR (audioplayer); | |
555 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (audioplayer, "audioplayer", "audioplayer"); | |
556 | |
557 static int | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
558 octave_play_callback (const void *, void *output, unsigned long frames, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
559 const PaStreamCallbackTimeInfo *, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
560 PaStreamCallbackFlags, void *data) |
19544 | 561 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
562 audioplayer *player = static_cast<audioplayer *> (data); |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
563 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
564 if (! player) |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
565 { |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
566 error ("audio player callback function called without player"); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
567 return paAbort; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
568 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
569 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
570 octave_value_list retval = feval (player->octave_callback_function, |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
571 ovl (static_cast<double> (frames)), 1); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
572 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
573 if (error_state || retval.length () < 2) |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
574 { |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
575 error ("audio player callback function failed"); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
576 return paAbort; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
577 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
578 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
579 const Matrix sound = retval(0).matrix_value (); |
19544 | 580 int return_status = retval(1).int_value (); |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
581 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
582 if (error_state || frames != sound.rows () |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
583 || sound.columns () < 1 || sound.columns () > 2) |
19544 | 584 { |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
585 error ("audio player callback function failed"); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
586 return paAbort; |
19544 | 587 } |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
588 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
589 // Don't multiply the audio data by scale_factor here. Although it |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
590 // does move the operation outside of the loops below, it also causes |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
591 // a second copy of the data array to be made. |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
592 |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
593 const ColumnVector sound_l = sound.column (0); |
19608
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19607
diff
changeset
|
594 const ColumnVector sound_r = (sound.columns () == 1 |
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19607
diff
changeset
|
595 ? sound_l : sound.column (1)); |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
596 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
597 const double *p_l = sound_l.data (); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
598 const double *p_r = sound_r.data (); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
599 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
600 switch (player->get_nbits ()) |
19544 | 601 { |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
602 case 8: |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
603 { |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
604 static double scale_factor = std::pow (2.0, 7) - 1.0; |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
605 |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
606 int8_t *buffer = static_cast<int8_t *> (output); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
607 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
608 for (unsigned long i = 0; i < frames; i++) |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
609 { |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
610 buffer[2*i] = p_l[i] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
611 buffer[2*i+1] = p_r[i] * scale_factor; |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
612 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
613 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
614 break; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
615 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
616 case 16: |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
617 { |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
618 static double scale_factor = std::pow (2.0, 15) - 1.0; |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
619 |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
620 int16_t *buffer = static_cast<int16_t *> (output); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
621 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
622 for (unsigned long i = 0; i < frames; i++) |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
623 { |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
624 buffer[2*i] = p_l[i] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
625 buffer[2*i+1] = p_r[i] * scale_factor; |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
626 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
627 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
628 break; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
629 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
630 case 24: |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
631 { |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
632 static double scale_factor = std::pow (2.0, 23) - 1.0; |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
633 |
19590
d7057df2968e
use existing function to determine endianness in audiodevinfo.cc
John W. Eaton <jwe@octave.org>
parents:
19589
diff
changeset
|
634 static int big_endian = oct_mach_info::words_big_endian (); |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
635 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
636 uint8_t *buffer = static_cast<uint8_t *> (output); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
637 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
638 for (unsigned long i = 0; i < frames; i++) |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
639 { |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
640 int32_t sample_l = p_l[i]; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
641 int32_t sample_r = p_r[i]; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
642 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
643 sample_l &= 0x00ffffff; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
644 sample_r &= 0x00ffffff; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
645 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
646 // FIXME: Would a mask work better? |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
647 uint8_t *_sample_l = reinterpret_cast<uint8_t *> (&sample_l); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
648 uint8_t *_sample_r = reinterpret_cast<uint8_t *> (&sample_r); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
649 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
650 unsigned long offset = i * 6; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
651 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
652 buffer[offset+0] = _sample_l[0+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
653 buffer[offset+1] = _sample_l[1+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
654 buffer[offset+2] = _sample_l[2+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
655 |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
656 buffer[offset+3] = _sample_r[0+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
657 buffer[offset+4] = _sample_r[1+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
658 buffer[offset+5] = _sample_r[2+big_endian] * scale_factor; |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
659 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
660 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
661 break; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
662 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
663 default: |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
664 error ("invalid player bit depth in callback function"); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
665 break; |
19544 | 666 } |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
667 |
19544 | 668 return return_status; |
669 } | |
670 | |
671 static int | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
672 portaudio_play_callback (const void *, void *output, unsigned long frames, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
673 const PaStreamCallbackTimeInfo*, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
674 PaStreamCallbackFlags, void *data) |
19544 | 675 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
676 audioplayer *player = static_cast<audioplayer *> (data); |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
677 |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
678 if (! player) |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
679 { |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
680 error ("audio player callback function called without player"); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
681 return paAbort; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
682 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
683 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
684 // Don't multiply the audio data by scale_factor here. Although it |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
685 // would move the operation outside of the loops below, it also causes |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
686 // a second copy of the *entire* data array to be made when only a |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
687 // small portion (BUFFER_SIZE elements) is usually needed for this |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
688 // callback. |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
689 |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
690 const RowVector sound_l = player->get_left (); |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
691 const RowVector sound_r = player->get_right (); |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
692 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
693 const double *pl = sound_l.data (); |
19599
810cfb00b72b
portaudio_play_callback: Fix stereo playback (bug #43965)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19595
diff
changeset
|
694 const double *pr = sound_r.data (); |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
695 |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
696 if (player->get_type () == TYPE_DOUBLE) |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
697 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
698 switch (player->get_nbits ()) |
19544 | 699 { |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
700 case 8: |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
701 { |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
702 static double scale_factor = std::pow (2.0, 7) - 1.0; |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
703 |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
704 int8_t *buffer = static_cast<int8_t *> (output); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
705 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
706 for (unsigned long j = 0; j < frames; j++) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
707 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
708 unsigned int sample_number = player->get_sample_number (); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
709 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
710 if (sample_number >= player->get_end_sample ()) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
711 return paComplete; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
712 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
713 unsigned long offset = j * 2; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
714 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
715 buffer[offset+0] = pl[sample_number] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
716 buffer[offset+1] = pr[sample_number] * scale_factor; |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
717 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
718 player->set_sample_number (sample_number + 1); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
719 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
720 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
721 break; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
722 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
723 case 16: |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
724 { |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
725 static double scale_factor = std::pow (2.0, 15) - 1.0; |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
726 |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
727 int16_t *buffer = static_cast<int16_t *> (output); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
728 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
729 for (unsigned long j = 0; j < frames; j++) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
730 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
731 unsigned int sample_number = player->get_sample_number (); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
732 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
733 if (sample_number >= player->get_end_sample ()) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
734 return paComplete; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
735 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
736 unsigned long offset = j * 2; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
737 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
738 buffer[offset+0] = pl[sample_number] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
739 buffer[offset+1] = pr[sample_number] * scale_factor; |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
740 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
741 player->set_sample_number (sample_number + 1); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
742 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
743 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
744 break; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
745 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
746 case 24: |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
747 { |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
748 static double scale_factor = std::pow (2.0, 23) - 1.0; |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
749 |
19590
d7057df2968e
use existing function to determine endianness in audiodevinfo.cc
John W. Eaton <jwe@octave.org>
parents:
19589
diff
changeset
|
750 static int big_endian = oct_mach_info::words_big_endian (); |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
751 |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
752 uint8_t *buffer = static_cast<uint8_t *> (output); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
753 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
754 for (unsigned long j = 0; j < frames; j++) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
755 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
756 unsigned int sample_number = player->get_sample_number (); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
757 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
758 if (sample_number >= player->get_end_sample ()) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
759 return paComplete; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
760 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
761 int32_t sample_l = pl[sample_number] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
762 int32_t sample_r = pr[sample_number] * scale_factor; |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
763 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
764 sample_l &= 0x00ffffff; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
765 sample_r &= 0x00ffffff; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
766 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
767 // FIXME: Would a mask work better? |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
768 uint8_t *_sample_l = reinterpret_cast<uint8_t *> (&sample_l); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
769 uint8_t *_sample_r = reinterpret_cast<uint8_t *> (&sample_r); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
770 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
771 unsigned long offset = j * 6; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
772 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
773 buffer[offset+0] = _sample_l[0+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
774 buffer[offset+1] = _sample_l[1+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
775 buffer[offset+2] = _sample_l[2+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
776 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
777 buffer[offset+3] = _sample_r[0+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
778 buffer[offset+4] = _sample_r[1+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
779 buffer[offset+5] = _sample_r[2+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
780 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
781 player->set_sample_number (sample_number + 1); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
782 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
783 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
784 break; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
785 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
786 default: |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
787 error ("invalid player bit depth in callback function"); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
788 break; |
19544 | 789 } |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
790 } |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
791 else if (player->get_type () == TYPE_INT8) |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
792 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
793 int8_t *buffer = static_cast<int8_t *> (output); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
794 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
795 for (unsigned long j = 0; j < frames; j++) |
19544 | 796 { |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
797 unsigned int sample_number = player->get_sample_number (); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
798 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
799 if (sample_number >= player->get_end_sample ()) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
800 return paComplete; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
801 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
802 unsigned long offset = j * 2; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
803 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
804 buffer[offset+0] = pl[sample_number]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
805 buffer[offset+1] = pr[sample_number]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
806 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
807 player->set_sample_number (sample_number + 1); |
19584
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
808 } |
19577
5f313345912f
avoid indexing before beginning of string
John W. Eaton <jwe@octave.org>
parents:
19562
diff
changeset
|
809 } |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
810 else if (player->get_type () == TYPE_UINT8) |
19584
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
811 { |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
812 uint8_t *buffer = static_cast<uint8_t *> (output); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
813 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
814 for (unsigned long j = 0; j < frames; j++) |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
815 { |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
816 unsigned int sample_number = player->get_sample_number (); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
817 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
818 if (sample_number >= player->get_end_sample ()) |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
819 return paComplete; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
820 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
821 unsigned long offset = j * 2; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
822 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
823 buffer[offset+0] = pl[sample_number]; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
824 buffer[offset+1] = pr[sample_number]; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
825 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
826 player->set_sample_number (sample_number + 1); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
827 } |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
828 } |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
829 else if (player->get_type () == TYPE_UINT16) |
19584
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
830 { |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
831 int16_t *buffer = static_cast<int16_t *> (output); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
832 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
833 for (unsigned long j = 0; j < frames; j++) |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
834 { |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
835 unsigned int sample_number = player->get_sample_number (); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
836 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
837 if (sample_number >= player->get_end_sample ()) |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
838 return paComplete; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
839 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
840 unsigned long offset = j * 2; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
841 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
842 buffer[offset+0] = pl[sample_number]; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
843 buffer[offset+1] = pr[sample_number]; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
844 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
845 player->set_sample_number (sample_number + 1); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
846 } |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
847 } |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
848 |
19544 | 849 return paContinue; |
850 } | |
851 | |
852 audioplayer::audioplayer (void) | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
853 : octave_callback_function (0), |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
854 id (-1), fs (0), nbits (16), channels (0), sample_number (0), |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
855 end_sample (-1), tag (""), y (), userdata (Matrix ()), |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
856 left (), right (), stream (0), output_parameters (), type () |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
857 { } |
19544 | 858 |
19604
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
859 audioplayer::~audioplayer (void) |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
860 { |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
861 if (isplaying ()) |
19604
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
862 { |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
863 warning ("Octave:audio-interrupt", |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
864 "interrupting playing audioplayer"); |
19604
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
865 stop (); |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
866 } |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
867 } |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
868 |
19544 | 869 void |
870 audioplayer::print (std::ostream& os, bool pr_as_read_syntax) const | |
871 { | |
872 print_raw (os, pr_as_read_syntax); | |
873 newline (os); | |
874 } | |
875 | |
876 void | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
877 audioplayer::print_raw (std::ostream& os, bool) const |
19544 | 878 { |
879 os << 0; | |
880 } | |
881 | |
882 void | |
883 audioplayer::init_fn (void) | |
884 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
885 if (Pa_Initialize () != paNoError) |
19544 | 886 { |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
887 error ("audioplayer: initialization error!"); |
19544 | 888 return; |
889 } | |
890 | |
19600
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19599
diff
changeset
|
891 if (Pa_GetDeviceCount () < 1) |
19544 | 892 { |
19600
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19599
diff
changeset
|
893 error ("audioplayer: no audio devices found or available!"); |
19544 | 894 return; |
895 } | |
896 | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
897 int device = get_id (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
898 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
899 if (device == -1) |
19544 | 900 device = Pa_GetDefaultOutputDevice (); |
901 | |
902 output_parameters.device = device; | |
903 output_parameters.channelCount = 2; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
904 output_parameters.sampleFormat = bits_to_format (get_nbits ()); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
905 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
906 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
907 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
908 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
909 warning ("Octave:invalid-default-audio-device", |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
910 "invalid default audio device ID = %d", device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
911 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
912 output_parameters.suggestedLatency |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
913 = device_info ? device_info->defaultHighOutputLatency : -1; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
914 |
19552 | 915 output_parameters.hostApiSpecificStreamInfo = 0; |
19544 | 916 } |
917 | |
918 void | |
919 audioplayer::init (void) | |
920 { | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
921 // Both of these variables are unused. Should they be |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
922 // eliminated or is something not yet implemented? |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
923 // |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
924 // int channels = y.rows (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
925 // RowVector *sound_l = get_left (); |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
926 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
927 if (Pa_Initialize () != paNoError) |
19544 | 928 { |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
929 error ("audioplayer: initialization error!"); |
19544 | 930 return; |
931 } | |
932 | |
19600
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19599
diff
changeset
|
933 if (Pa_GetDeviceCount () < 1) |
19544 | 934 { |
19600
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19599
diff
changeset
|
935 error ("audioplayer: no audio devices found or available!"); |
19544 | 936 return; |
937 } | |
938 | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
939 int device = get_id (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
940 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
941 if (device == -1) |
19544 | 942 device = Pa_GetDefaultOutputDevice (); |
943 | |
944 output_parameters.device = device; | |
945 output_parameters.channelCount = 2; | |
946 | |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
947 if (type == TYPE_DOUBLE) |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
948 output_parameters.sampleFormat = bits_to_format (get_nbits ()); |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
949 else if (type == TYPE_INT8) |
19544 | 950 output_parameters.sampleFormat = paInt8; |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
951 else if (type == TYPE_UINT8) |
19544 | 952 output_parameters.sampleFormat = paUInt8; |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
953 else if (type == TYPE_UINT16) |
19544 | 954 output_parameters.sampleFormat = paInt16; |
955 | |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
956 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
957 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
958 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
959 warning ("Octave:invalid-default-audio-device", |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
960 "invalid default audio device ID = %d", device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
961 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
962 output_parameters.suggestedLatency |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
963 = device_info ? device_info->defaultHighOutputLatency : -1; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
964 |
19552 | 965 output_parameters.hostApiSpecificStreamInfo = 0; |
19544 | 966 } |
967 | |
968 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
969 audioplayer::set_y (const octave_value& y_arg) |
19544 | 970 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
971 if (y_arg.is_int8_type ()) |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
972 type = TYPE_INT8; |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
973 else if (y_arg.is_uint8_type ()) |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
974 type = TYPE_UINT8; |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
975 else if (y_arg.is_int16_type ()) |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
976 type = TYPE_UINT16; |
19544 | 977 else |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
978 type = TYPE_DOUBLE; |
19544 | 979 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
980 y = y_arg.matrix_value (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
981 |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
982 if (y.rows () > 2) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
983 y = y.transpose (); |
19544 | 984 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
985 channels = y.rows (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
986 left = y.row (0); |
19544 | 987 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
988 if (channels == 2) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
989 right = y.row (1); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
990 |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
991 reset_end_sample (); |
19544 | 992 } |
993 | |
994 void | |
995 audioplayer::set_y (octave_function *fn) | |
996 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
997 octave_callback_function = fn; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
998 channels = 2; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
999 reset_end_sample (); |
19544 | 1000 } |
1001 | |
1002 Matrix& | |
1003 audioplayer::get_y (void) | |
1004 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1005 return y; |
19544 | 1006 } |
1007 | |
19581
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
1008 RowVector |
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
1009 audioplayer::get_left (void) const |
19544 | 1010 { |
19581
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
1011 return left; |
19544 | 1012 } |
1013 | |
19581
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
1014 RowVector |
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
1015 audioplayer::get_right (void) const |
19544 | 1016 { |
19581
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
1017 return channels == 1 ? left : right; |
19544 | 1018 } |
1019 | |
1020 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1021 audioplayer::set_fs (int fs_arg) |
19544 | 1022 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1023 fs = fs_arg; |
19544 | 1024 } |
1025 | |
1026 int | |
1027 audioplayer::get_fs (void) | |
1028 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1029 return fs; |
19544 | 1030 } |
1031 | |
1032 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1033 audioplayer::set_nbits (int nbits_arg) |
19544 | 1034 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1035 nbits = nbits_arg; |
19544 | 1036 } |
1037 | |
1038 int | |
1039 audioplayer::get_nbits (void) | |
1040 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1041 return nbits; |
19544 | 1042 } |
1043 | |
1044 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1045 audioplayer::set_id (int id_arg) |
19544 | 1046 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1047 id = id_arg; |
19544 | 1048 } |
1049 | |
1050 int | |
1051 audioplayer::get_id (void) | |
1052 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1053 return id; |
19544 | 1054 } |
1055 | |
1056 int | |
1057 audioplayer::get_channels (void) | |
1058 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1059 return channels; |
19544 | 1060 } |
1061 | |
1062 audio_type | |
1063 audioplayer::get_type (void) | |
1064 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1065 return type; |
19544 | 1066 } |
1067 | |
1068 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1069 audioplayer::set_sample_number (unsigned int sample_number_arg) |
19544 | 1070 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1071 sample_number = sample_number_arg; |
19544 | 1072 } |
1073 | |
1074 unsigned int | |
1075 audioplayer::get_sample_number (void) | |
1076 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1077 return sample_number; |
19544 | 1078 } |
1079 | |
1080 unsigned int | |
1081 audioplayer::get_total_samples (void) | |
1082 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1083 return left.length (); |
19544 | 1084 } |
1085 | |
1086 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1087 audioplayer::set_end_sample (unsigned int end_sample_arg) |
19544 | 1088 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1089 end_sample = end_sample_arg; |
19544 | 1090 } |
1091 | |
1092 unsigned int | |
1093 audioplayer::get_end_sample (void) | |
1094 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1095 return end_sample; |
19544 | 1096 } |
1097 | |
1098 void | |
1099 audioplayer::reset_end_sample (void) | |
1100 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1101 set_end_sample (left.length ()); |
19544 | 1102 } |
1103 | |
1104 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1105 audioplayer::set_tag (const charMatrix& tag_arg) |
19544 | 1106 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1107 tag = tag_arg; |
19544 | 1108 } |
1109 | |
1110 charMatrix | |
1111 audioplayer::get_tag (void) | |
1112 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1113 return tag; |
19544 | 1114 } |
1115 | |
1116 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1117 audioplayer::set_userdata (const octave_value& userdata_arg) |
19544 | 1118 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1119 userdata = userdata_arg; |
19544 | 1120 } |
1121 | |
1122 octave_value | |
1123 audioplayer::get_userdata (void) | |
1124 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1125 return userdata; |
19544 | 1126 } |
1127 | |
1128 void | |
1129 audioplayer::playblocking (void) | |
1130 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1131 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1132 stop (); |
19544 | 1133 |
1134 PaError err; | |
1135 uint32_t buffer[BUFFER_SIZE * 2]; | |
19552 | 1136 err = Pa_OpenStream (&stream, 0, &(output_parameters), get_fs (), |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
1137 BUFFER_SIZE, paClipOff, 0, 0); |
19544 | 1138 if (err != paNoError) |
1139 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1140 error ("audioplayer: unable to open audio playback stream"); |
19544 | 1141 return; |
1142 } | |
1143 | |
1144 err = Pa_StartStream (stream); | |
1145 if (err != paNoError) | |
1146 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1147 error ("audioplayer: unable to start start audio playback stream"); |
19544 | 1148 return; |
1149 } | |
1150 | |
1151 unsigned int start, end; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1152 start = get_sample_number (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1153 end = get_end_sample (); |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1154 for (unsigned int i = start; i < end; i += BUFFER_SIZE) |
19544 | 1155 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1156 if (octave_callback_function != 0) |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1157 octave_play_callback (0, buffer, BUFFER_SIZE, 0, 0, this); |
19544 | 1158 else |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1159 portaudio_play_callback (0, buffer, BUFFER_SIZE, 0, 0, this); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1160 |
19544 | 1161 err = Pa_WriteStream (stream, buffer, BUFFER_SIZE); |
1162 } | |
1163 | |
1164 err = Pa_StopStream (stream); | |
1165 if (err != paNoError) | |
1166 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1167 error ("audioplayer: failed to stop audio playback stream"); |
19544 | 1168 return; |
1169 } | |
1170 | |
1171 err = Pa_CloseStream (stream); | |
1172 if (err != paNoError) | |
1173 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1174 error ("audioplayer: failed to close audio playback stream"); |
19544 | 1175 return; |
1176 } | |
1177 | |
1178 stream = 0; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1179 set_sample_number (0); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1180 reset_end_sample (); |
19544 | 1181 } |
1182 | |
1183 void | |
1184 audioplayer::play (void) | |
1185 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1186 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1187 stop (); |
19544 | 1188 |
1189 PaError err; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1190 if (octave_callback_function != 0) |
19552 | 1191 err = Pa_OpenStream (&stream, 0, &(output_parameters), |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1192 get_fs (), BUFFER_SIZE, paClipOff, |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1193 octave_play_callback, this); |
19544 | 1194 else |
19552 | 1195 err = Pa_OpenStream (&stream, 0, &(output_parameters), |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1196 get_fs (), BUFFER_SIZE, paClipOff, |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1197 portaudio_play_callback, this); |
19544 | 1198 |
1199 if (err != paNoError) | |
1200 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1201 error ("audioplayer: failed to open audio playback stream"); |
19544 | 1202 return; |
1203 } | |
1204 | |
1205 err = Pa_StartStream (stream); | |
1206 if (err != paNoError) | |
1207 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1208 error ("audioplayer: failed to start audio playback stream"); |
19544 | 1209 return; |
1210 } | |
1211 } | |
1212 | |
1213 void | |
1214 audioplayer::pause (void) | |
1215 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1216 if (get_stream () == 0) |
19544 | 1217 return; |
1218 | |
1219 PaError err; | |
1220 err = Pa_StopStream (stream); | |
1221 if (err != paNoError) | |
1222 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1223 error ("audiorecorder: failed to stop audio recording stream"); |
19544 | 1224 return; |
1225 } | |
1226 } | |
1227 | |
1228 void | |
1229 audioplayer::resume (void) | |
1230 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1231 if (get_stream () == 0) |
19544 | 1232 return; |
1233 | |
1234 PaError err; | |
1235 err = Pa_StartStream (stream); | |
1236 if (err != paNoError) | |
1237 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1238 error ("audiorecorder: failed to start audio recording stream"); |
19544 | 1239 return; |
1240 } | |
1241 } | |
1242 | |
1243 PaStream * | |
1244 audioplayer::get_stream (void) | |
1245 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1246 return stream; |
19544 | 1247 } |
1248 | |
1249 void | |
1250 audioplayer::stop (void) | |
1251 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1252 if (get_stream () == 0) |
19544 | 1253 return; |
1254 | |
1255 PaError err; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1256 set_sample_number (0); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1257 reset_end_sample (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1258 if (not Pa_IsStreamStopped (get_stream ())) |
19544 | 1259 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1260 err = Pa_AbortStream (get_stream ()); |
19544 | 1261 if (err != paNoError) |
1262 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1263 error ("audioplayer: failed to stop audio playback stream"); |
19544 | 1264 return; |
1265 } | |
1266 } | |
1267 | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1268 err = Pa_CloseStream (get_stream ()); |
19544 | 1269 if (err != paNoError) |
1270 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1271 error ("audioplayer: failed to close audio playback stream"); |
19544 | 1272 return; |
1273 } | |
1274 | |
1275 stream = 0; | |
1276 } | |
1277 | |
1278 bool | |
1279 audioplayer::isplaying (void) | |
1280 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1281 if (get_stream () == 0) |
19544 | 1282 return false; |
1283 | |
1284 PaError err; | |
1285 err = Pa_IsStreamActive (stream); | |
19549
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19548
diff
changeset
|
1286 if (err != 0 && err != 1) |
19544 | 1287 { |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1288 error ("audiorecorder: checking stream activity status failed"); |
19544 | 1289 return false; |
1290 } | |
1291 | |
1292 return (err == 1); | |
1293 } | |
1294 | |
1295 class audiorecorder : public octave_base_value | |
1296 { | |
1297 public: | |
1298 audiorecorder (void); | |
19614
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1299 ~audiorecorder (void); |
19544 | 1300 |
1301 // Overloaded base functions | |
1302 double player_value (void) const { return 0; } | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1303 virtual double scalar_value (bool = false) const { return 0; } |
19544 | 1304 void print (std::ostream& os, bool pr_as_read_syntax = false) const; |
1305 void print_raw (std::ostream& os, bool pr_as_read_syntax) const; | |
1306 | |
1307 // Properties | |
1308 bool is_constant (void) const { return true; } | |
1309 bool is_defined (void) const { return true; } | |
1310 bool print_as_scalar (void) const { return true; } | |
1311 | |
1312 void init (void); | |
1313 void set_fs (int fs); | |
1314 int get_fs (void); | |
1315 void set_nbits (int nbits); | |
1316 int get_nbits (void); | |
1317 void set_id (int id); | |
1318 int get_id (void); | |
1319 void set_channels (int channels); | |
1320 int get_channels (void); | |
1321 audio_type get_type (void); | |
1322 | |
1323 void set_sample_number (unsigned int sample); | |
1324 unsigned int get_sample_number (void); | |
1325 unsigned int get_total_samples (void); | |
1326 void set_end_sample (unsigned int sample); | |
1327 unsigned int get_end_sample (void); | |
1328 void reset_end_sample (void); | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1329 void set_tag (const charMatrix& tag); |
19544 | 1330 charMatrix get_tag (void); |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1331 void set_userdata (const octave_value& userdata); |
19544 | 1332 octave_value get_userdata (void); |
1333 PaStream *get_stream (void); | |
1334 | |
1335 octave_value getaudiodata (void); | |
1336 audioplayer *getplayer (void); | |
1337 bool isrecording (void); | |
1338 audioplayer play (void); | |
1339 void record (void); | |
1340 void recordblocking (float seconds); | |
1341 void pause (void); | |
1342 void resume (void); | |
1343 void stop (void); | |
1344 void append (float sample_l, float sample_r); | |
1345 | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1346 octave_function *octave_callback_function; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1347 |
19544 | 1348 private: |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1349 int id; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1350 int fs; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1351 int nbits; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1352 int channels; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1353 unsigned int sample_number; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1354 unsigned int end_sample; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1355 charMatrix tag; |
19544 | 1356 Matrix y; |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1357 octave_value userdata; |
19544 | 1358 std::vector<float> left; |
1359 std::vector<float> right; | |
1360 PaStream *stream; | |
1361 PaStreamParameters input_parameters; | |
1362 audio_type type; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1363 |
19544 | 1364 DECLARE_OCTAVE_ALLOCATOR |
1365 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA | |
1366 }; | |
1367 | |
1368 DEFINE_OCTAVE_ALLOCATOR (audiorecorder); | |
1369 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (audiorecorder, "audiorecorder", "audiorecorder"); | |
1370 | |
1371 static int | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1372 octave_record_callback (const void *input, void *, unsigned long frames, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1373 const PaStreamCallbackTimeInfo *, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1374 PaStreamCallbackFlags, void *data) |
19544 | 1375 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1376 audiorecorder *recorder = static_cast<audiorecorder *> (data); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1377 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1378 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1379 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1380 error ("audio recorder callback function called without player"); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1381 return paAbort; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1382 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1383 |
19544 | 1384 int channels = recorder->get_channels (); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1385 |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1386 Matrix sound (frames, 2); |
19544 | 1387 sound.resize (frames, 2); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1388 |
19544 | 1389 if (recorder->get_nbits () == 8) |
1390 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1391 static double scale_factor = std::pow (2.0, 7) - 1.0; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1392 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1393 const int8_t *input8 = static_cast<const int8_t *> (input); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1394 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1395 for (unsigned long i = 0; i < frames; i++) |
19544 | 1396 { |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1397 float sample_l = input8[i*channels] / scale_factor; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1398 float sample_r = input8[i*channels + (channels - 1)] / scale_factor; |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
1399 |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1400 sound(i,0) = sample_l; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1401 sound(i,1) = sample_r; |
19544 | 1402 } |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
1403 } |
19544 | 1404 else if (recorder->get_nbits () == 16) |
1405 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1406 static double scale_factor = std::pow (2.0, 15) - 1.0; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1407 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1408 const int16_t *input16 = static_cast<const int16_t *> (input); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1409 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1410 for (unsigned long i = 0; i < frames; i++) |
19544 | 1411 { |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1412 float sample_l = input16[i*channels] / scale_factor; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1413 float sample_r = input16[i*channels + (channels - 1)] / scale_factor; |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
1414 |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1415 sound(i,0) = sample_l; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1416 sound(i,1) = sample_r; |
19544 | 1417 } |
1418 } | |
1419 else if (recorder->get_nbits () == 24) | |
1420 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1421 static double scale_factor = std::pow (2.0, 23); |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1422 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1423 // FIXME: Is there a better way? |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1424 const uint8_t *input24 = static_cast<const uint8_t *> (input); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1425 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1426 int32_t sample_l32 = 0, sample_r32 = 0; |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1427 |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1428 uint8_t *sample_l = reinterpret_cast<uint8_t *> (&sample_l32); |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1429 uint8_t *sample_r = reinterpret_cast<uint8_t *> (&sample_r32); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1430 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1431 for (unsigned long i = 0; i < frames; i++) |
19544 | 1432 { |
1433 for (int j = 0; j < 3; j++) | |
1434 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1435 sample_l[j] = input24[i*channels*3 + j]; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1436 sample_r[j] = input24[i*channels*3 + (channels - 1)*3 + j]; |
19544 | 1437 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1438 |
19544 | 1439 if (sample_l32 & 0x00800000) |
1440 sample_l32 |= 0xff000000; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1441 |
19544 | 1442 if (sample_r32 & 0x00800000) |
1443 sample_r32 |= 0xff000000; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1444 |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1445 sound(i,0) = sample_l32 / scale_factor; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1446 sound(i,1) = sample_r32 / scale_factor; |
19544 | 1447 } |
1448 } | |
1449 | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1450 octave_value_list retval |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1451 = feval (recorder->octave_callback_function, ovl (sound), 1); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1452 |
19544 | 1453 return retval(0).int_value (); |
1454 } | |
1455 | |
1456 static int | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1457 portaudio_record_callback (const void *input, void *, unsigned long frames, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1458 const PaStreamCallbackTimeInfo *, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1459 PaStreamCallbackFlags, void *data) |
19544 | 1460 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1461 audiorecorder *recorder = static_cast<audiorecorder *> (data); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1462 |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1463 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1464 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1465 error ("audio recorder callback function called without player"); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1466 return paAbort; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1467 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1468 |
19544 | 1469 int channels = recorder->get_channels (); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1470 |
19544 | 1471 if (recorder->get_nbits () == 8) |
1472 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1473 static float scale_factor = std::pow (2.0f, 7) - 1.0f; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1474 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1475 const int8_t *input8 = static_cast<const int8_t *> (input); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1476 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1477 for (unsigned long i = 0; i < frames; i++) |
19544 | 1478 { |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1479 float sample_l = input8[i*channels] / scale_factor; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1480 float sample_r = input8[i*channels + (channels - 1)] / scale_factor; |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
1481 |
19544 | 1482 recorder->append (sample_l, sample_r); |
1483 } | |
1484 } | |
1485 else if (recorder->get_nbits () == 16) | |
1486 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1487 static float scale_factor = std::pow (2.0f, 15) - 1.0f; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1488 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1489 const int16_t *input16 = static_cast<const int16_t *> (input); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1490 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1491 for (unsigned long i = 0; i < frames; i++) |
19544 | 1492 { |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1493 float sample_l = input16[i*channels] / scale_factor; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1494 float sample_r = input16[i*channels + (channels - 1)] / scale_factor; |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
1495 |
19544 | 1496 recorder->append (sample_l, sample_r); |
1497 } | |
1498 } | |
1499 else if (recorder->get_nbits () == 24) | |
1500 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1501 static float scale_factor = std::pow (2.0f, 23); |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1502 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1503 // FIXME: Is there a better way? |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1504 const uint8_t *input24 = static_cast<const uint8_t *> (input); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1505 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1506 int32_t sample_l32 = 0, sample_r32 = 0; |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1507 |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1508 uint8_t *sample_l = reinterpret_cast<uint8_t *> (&sample_l32); |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1509 uint8_t *sample_r = reinterpret_cast<uint8_t *> (&sample_r32); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1510 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1511 for (unsigned long i = 0; i < frames; i++) |
19544 | 1512 { |
1513 for (int j = 0; j < 3; j++) | |
1514 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1515 sample_l[j] = input24[i*channels*3 + j]; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1516 sample_r[j] = input24[i*channels*3 + (channels - 1)*3 + j]; |
19544 | 1517 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1518 |
19544 | 1519 if (sample_l32 & 0x00800000) |
1520 sample_l32 |= 0xff000000; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1521 |
19544 | 1522 if (sample_r32 & 0x00800000) |
1523 sample_r32 |= 0xff000000; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1524 |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1525 recorder->append (sample_l32 / scale_factor, |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1526 sample_r32 / scale_factor); |
19544 | 1527 } |
1528 } | |
1529 | |
1530 if (recorder->get_sample_number () > recorder->get_end_sample ()) | |
1531 return paComplete; | |
1532 | |
1533 return paContinue; | |
1534 } | |
1535 | |
1536 audiorecorder::audiorecorder (void) | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1537 : octave_callback_function (0), |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1538 id (-1), fs (44100), nbits (16), channels (2), sample_number (0), |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1539 end_sample (-1), tag (""), y (), userdata (Matrix ()), |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1540 left (), right (), stream (0), input_parameters (), type () |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1541 { } |
19544 | 1542 |
19614
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1543 audiorecorder::~audiorecorder (void) |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1544 { |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1545 if (isrecording ()) |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1546 { |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1547 warning ("Octave:audio-interrupt", |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1548 "interrupting recording audiorecorder"); |
19614
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1549 stop (); |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1550 } |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1551 } |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1552 |
19544 | 1553 void |
1554 audiorecorder::print (std::ostream& os, bool pr_as_read_syntax) const | |
1555 { | |
1556 print_raw (os, pr_as_read_syntax); | |
1557 newline (os); | |
1558 } | |
1559 | |
1560 void | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1561 audiorecorder::print_raw (std::ostream& os, bool) const |
19544 | 1562 { |
1563 os << 0; | |
1564 } | |
1565 | |
1566 void | |
1567 audiorecorder::init (void) | |
1568 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1569 if (Pa_Initialize () != paNoError) |
19544 | 1570 { |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1571 error ("audiorecorder: initialization error!"); |
19544 | 1572 return; |
1573 } | |
1574 | |
19600
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19599
diff
changeset
|
1575 if (Pa_GetDeviceCount () < 1) |
19544 | 1576 { |
19600
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19599
diff
changeset
|
1577 error ("audiorecorder: no audio devices found or available!"); |
19544 | 1578 return; |
1579 } | |
1580 | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1581 int device = get_id (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1582 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1583 if (device == -1) |
19544 | 1584 device = Pa_GetDefaultInputDevice (); |
1585 | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1586 input_parameters.device = device; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1587 input_parameters.channelCount = get_channels (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1588 input_parameters.sampleFormat = bits_to_format (get_nbits ()); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1589 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1590 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1591 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1592 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1593 warning ("Octave:invalid-default-audio-device", |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1594 "invalid default audio device ID = %d", device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1595 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1596 input_parameters.suggestedLatency |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1597 = device_info ? device_info->defaultHighInputLatency : -1; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1598 |
19552 | 1599 input_parameters.hostApiSpecificStreamInfo = 0; |
19544 | 1600 } |
1601 | |
1602 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1603 audiorecorder::set_fs (int fs_arg) |
19544 | 1604 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1605 fs = fs_arg; |
19544 | 1606 } |
1607 | |
1608 int | |
1609 audiorecorder::get_fs (void) | |
1610 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1611 return fs; |
19544 | 1612 } |
1613 | |
1614 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1615 audiorecorder::set_nbits (int nbits_arg) |
19544 | 1616 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1617 nbits = nbits_arg; |
19544 | 1618 } |
1619 | |
1620 int | |
1621 audiorecorder::get_nbits (void) | |
1622 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1623 return nbits; |
19544 | 1624 } |
1625 | |
1626 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1627 audiorecorder::set_id (int id_arg) |
19544 | 1628 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1629 id = id_arg; |
19544 | 1630 } |
1631 | |
1632 int | |
1633 audiorecorder::get_id (void) | |
1634 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1635 return id; |
19544 | 1636 } |
1637 | |
1638 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1639 audiorecorder::set_channels (int channels_arg) |
19544 | 1640 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1641 assert (channels_arg == 1 || channels_arg == 2); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1642 channels = channels_arg; |
19544 | 1643 } |
1644 | |
1645 int | |
1646 audiorecorder::get_channels (void) | |
1647 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1648 return channels; |
19544 | 1649 } |
1650 | |
1651 audio_type | |
1652 audiorecorder::get_type (void) | |
1653 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1654 return type; |
19544 | 1655 } |
1656 | |
1657 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1658 audiorecorder::set_sample_number (unsigned int sample_number_arg) |
19544 | 1659 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1660 sample_number = sample_number_arg; |
19544 | 1661 } |
1662 | |
1663 unsigned int | |
1664 audiorecorder::get_sample_number (void) | |
1665 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1666 return sample_number; |
19544 | 1667 } |
1668 | |
1669 unsigned int | |
1670 audiorecorder::get_total_samples (void) | |
1671 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1672 return left.size (); |
19544 | 1673 } |
1674 | |
1675 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1676 audiorecorder::set_end_sample (unsigned int end_sample_arg) |
19544 | 1677 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1678 end_sample = end_sample_arg; |
19544 | 1679 } |
1680 | |
1681 unsigned int | |
1682 audiorecorder::get_end_sample (void) | |
1683 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1684 return end_sample; |
19544 | 1685 } |
1686 | |
1687 void | |
1688 audiorecorder::reset_end_sample (void) | |
1689 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1690 set_end_sample (left.size ()); |
19544 | 1691 } |
1692 | |
1693 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1694 audiorecorder::set_tag (const charMatrix& tag_arg) |
19544 | 1695 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1696 tag = tag_arg; |
19544 | 1697 } |
1698 | |
1699 charMatrix | |
1700 audiorecorder::get_tag (void) | |
1701 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1702 return tag; |
19544 | 1703 } |
1704 | |
1705 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1706 audiorecorder::set_userdata (const octave_value& userdata_arg) |
19544 | 1707 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1708 userdata = userdata_arg; |
19544 | 1709 } |
1710 | |
1711 octave_value | |
1712 audiorecorder::get_userdata (void) | |
1713 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1714 return userdata; |
19544 | 1715 } |
1716 | |
1717 octave_value | |
1718 audiorecorder::getaudiodata (void) | |
1719 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1720 Matrix audio (2, left.size ()); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1721 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1722 for (unsigned int i = 0; i < left.size (); i++) |
19544 | 1723 { |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1724 audio(0,i) = left[i]; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1725 audio(1,i) = right[i]; |
19544 | 1726 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1727 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1728 return audio; |
19544 | 1729 } |
1730 | |
1731 audioplayer * | |
1732 audiorecorder::getplayer (void) | |
1733 { | |
1734 audioplayer *player = new audioplayer (); | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1735 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1736 player->set_y (getaudiodata ()); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1737 player->set_fs (get_fs ()); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1738 player->set_nbits (get_nbits ()); |
19544 | 1739 player->init (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1740 |
19544 | 1741 return player; |
1742 } | |
1743 | |
1744 bool | |
1745 audiorecorder::isrecording (void) | |
1746 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1747 if (get_stream () == 0) |
19544 | 1748 return false; |
1749 | |
1750 PaError err; | |
1751 err = Pa_IsStreamActive (stream); | |
19549
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19548
diff
changeset
|
1752 if (err != 0 && err != 1) |
19544 | 1753 { |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1754 error ("audiorecorder: checking stream activity status failed"); |
19544 | 1755 return false; |
1756 } | |
1757 | |
1758 return (err == 1); | |
1759 } | |
1760 | |
1761 void | |
1762 audiorecorder::record (void) | |
1763 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1764 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1765 stop (); |
19544 | 1766 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1767 left.clear (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1768 right.clear (); |
19544 | 1769 PaError err; |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1770 if (octave_callback_function != 0) |
19544 | 1771 { |
19552 | 1772 err = Pa_OpenStream (&stream, &(input_parameters), 0, |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1773 get_fs (), BUFFER_SIZE, paClipOff, |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1774 octave_record_callback, this); |
19544 | 1775 } |
1776 else | |
1777 { | |
19552 | 1778 err = Pa_OpenStream (&stream, &(input_parameters), 0, |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1779 get_fs (), BUFFER_SIZE, paClipOff, |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1780 portaudio_record_callback, this); |
19544 | 1781 } |
1782 if (err != paNoError) | |
1783 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1784 error ("audiorecorder: unable to open audio recording stream"); |
19544 | 1785 return; |
1786 } | |
1787 err = Pa_StartStream (stream); | |
1788 if (err != paNoError) | |
1789 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1790 error ("audiorecorder: unable to start audio recording stream"); |
19544 | 1791 return; |
1792 } | |
1793 } | |
1794 | |
1795 void | |
1796 audiorecorder::recordblocking (float seconds) | |
1797 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1798 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1799 stop (); |
19544 | 1800 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1801 left.clear (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1802 right.clear (); |
19544 | 1803 |
1804 PaError err; | |
19552 | 1805 err = Pa_OpenStream (&stream, &(input_parameters), 0, |
1806 get_fs (), BUFFER_SIZE, paClipOff, 0, this); | |
19544 | 1807 if (err != paNoError) |
1808 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1809 error ("audiorecorder: unable to open audio recording stream"); |
19544 | 1810 return; |
1811 } | |
1812 | |
1813 err = Pa_StartStream (stream); | |
1814 if (err != paNoError) | |
1815 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1816 error ("audiorecorder: unable to start audio recording stream"); |
19544 | 1817 return; |
1818 } | |
1819 | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1820 unsigned int frames = seconds * get_fs (); |
19544 | 1821 uint8_t buffer[BUFFER_SIZE * 2 * 3]; |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1822 for (unsigned long i = 0; i < frames / BUFFER_SIZE; i++) |
19544 | 1823 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1824 Pa_ReadStream (get_stream (), buffer, BUFFER_SIZE); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1825 if (octave_callback_function != 0) |
19552 | 1826 octave_record_callback (buffer, 0, BUFFER_SIZE, 0, 0, this); |
19544 | 1827 else |
19552 | 1828 portaudio_record_callback (buffer, 0, BUFFER_SIZE, 0, 0, this); |
19544 | 1829 } |
1830 } | |
1831 | |
1832 void | |
1833 audiorecorder::pause (void) | |
1834 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1835 if (get_stream () == 0) |
19544 | 1836 return; |
1837 | |
1838 PaError err; | |
1839 err = Pa_StopStream (stream); | |
1840 if (err != paNoError) | |
1841 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1842 error ("audiorecorder: unable to stop audio recording stream"); |
19544 | 1843 return; |
1844 } | |
1845 } | |
1846 | |
1847 void | |
1848 audiorecorder::resume (void) | |
1849 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1850 if (get_stream () == 0) |
19544 | 1851 return; |
1852 | |
1853 PaError err; | |
1854 err = Pa_StartStream (stream); | |
1855 if (err != paNoError) | |
1856 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1857 error ("audiorecorder: unable to start audio recording stream"); |
19544 | 1858 return; |
1859 } | |
1860 } | |
1861 | |
1862 void | |
1863 audiorecorder::stop (void) | |
1864 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1865 if (get_stream () == 0) |
19544 | 1866 return; |
1867 | |
1868 PaError err; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1869 if (not Pa_IsStreamStopped (get_stream ())) |
19544 | 1870 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1871 err = Pa_AbortStream (get_stream ()); |
19544 | 1872 if (err != paNoError) |
1873 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1874 error ("audioplayer: unable to stop audio playback stream"); |
19544 | 1875 return; |
1876 } | |
1877 } | |
1878 | |
1879 err = Pa_CloseStream (stream); | |
1880 if (err != paNoError) | |
1881 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1882 error ("audiorecorder: unable to close audio recording stream"); |
19544 | 1883 return; |
1884 } | |
1885 | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1886 set_sample_number (0); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1887 reset_end_sample (); |
19544 | 1888 stream = 0; |
1889 } | |
1890 | |
1891 void | |
1892 audiorecorder::append (float sample_l, float sample_r) | |
1893 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1894 left.push_back (sample_l); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1895 right.push_back (sample_r); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1896 set_sample_number (get_sample_number () + 1); |
19544 | 1897 } |
1898 | |
1899 PaStream * | |
1900 audiorecorder::get_stream (void) | |
1901 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1902 return stream; |
19544 | 1903 } |
1904 | |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
1905 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
1906 |
19544 | 1907 DEFUN_DLD (__recorder_audiorecorder__, args, , |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
1908 "-*- texinfo -*-\n\ |
19544 | 1909 @deftypefn {Loadable Function} {@var{recorder} =} __recorder_audiorecorder__ (@var{fs}, @var{nbits}, @var{channels})\n\ |
1910 @deftypefnx {Loadable Function} {@var{recorder} =} __recorder_audiorecorder__ (@var{fs}, @var{nbits}, @var{channels}, @var{id})\n\ | |
1911 @deftypefnx {Loadable Function} {@var{recorder} =} __recorder_audiorecorder__ (@var{fcn}, @dots{})\n\ | |
1912 Undocumented internal function.\n\ | |
1913 @end deftypefn") | |
1914 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1915 octave_value retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1916 |
19544 | 1917 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1918 |
19544 | 1919 int nargin = args.length (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1920 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1921 audiorecorder* recorder = new audiorecorder (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1922 |
19544 | 1923 int offset = 0; |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1924 |
19544 | 1925 if (nargin > 0) |
1926 { | |
19608
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19607
diff
changeset
|
1927 bool is_function = (args(0).is_string () || args(0).is_function_handle () |
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19607
diff
changeset
|
1928 || args(0).is_inline_function ()); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1929 |
19544 | 1930 if (is_function) |
1931 { | |
19594
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
1932 error ("audioplayer: callbacks not yet implemented"); |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
1933 return retval; |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
1934 |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
1935 // recorder->octave_callback_function = args(0).function_value (); |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
1936 // offset = 1; |
19544 | 1937 } |
1938 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1939 |
19544 | 1940 switch (nargin - offset) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1941 { |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1942 case 3: |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1943 recorder->set_fs (args(0 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1944 recorder->set_nbits (args(1 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1945 recorder->set_channels (args(2 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1946 break; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1947 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1948 case 4: |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1949 recorder->set_fs (args(0 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1950 recorder->set_nbits (args(1 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1951 recorder->set_channels (args(2 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1952 recorder->set_id (args(3 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1953 break; |
19544 | 1954 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1955 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1956 recorder->init (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1957 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1958 retval = recorder; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1959 |
19544 | 1960 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1961 |
19544 | 1962 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1963 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1964 #endif |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1965 |
19544 | 1966 return retval; |
1967 } | |
1968 | |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
1969 #ifdef HAVE_PORTAUDIO |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
1970 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1971 static audiorecorder * |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1972 get_recorder (const octave_value& ov) |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1973 { |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1974 const octave_base_value& rep = ov.get_rep (); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1975 |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1976 octave_base_value *ncrep = const_cast<octave_base_value *> (&rep); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1977 |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1978 return dynamic_cast<audiorecorder *> (ncrep); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1979 } |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1980 |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
1981 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
1982 |
19544 | 1983 DEFUN_DLD (__recorder_getaudiodata__, args, , |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
1984 "-*- texinfo -*-\n\ |
19544 | 1985 @deftypefn {Loadable Function} {@var{data}} __recorder_getaudiodata__ (@var{recorder})\n\ |
1986 Undocumented internal function.\n\ | |
1987 @end deftypefn") | |
1988 { | |
1989 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1990 |
19544 | 1991 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1992 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1993 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1994 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1995 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1996 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1997 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1998 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1999 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2000 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2001 retval = recorder->getaudiodata (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2002 |
19544 | 2003 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2004 |
19544 | 2005 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2006 |
19544 | 2007 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2008 |
19544 | 2009 return retval; |
2010 } | |
2011 | |
2012 DEFUN_DLD (__recorder_get_channels__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2013 "-*- texinfo -*-\n\ |
19544 | 2014 @deftypefn {Loadable Function} {@var{n} =} __recorder_get_channels__ (@var{recorder})\n\ |
2015 Undocumented internal function.\n\ | |
2016 @end deftypefn") | |
2017 { | |
2018 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2019 |
19544 | 2020 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2021 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2022 if (args.length () == 1) |
19544 | 2023 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2024 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2025 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2026 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2027 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2028 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2029 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2030 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2031 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2032 retval = recorder->get_channels (); |
19544 | 2033 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2034 |
19544 | 2035 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2036 |
19544 | 2037 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2038 |
19544 | 2039 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2040 |
19544 | 2041 return retval; |
2042 } | |
2043 | |
2044 DEFUN_DLD (__recorder_get_fs__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2045 "-*- texinfo -*-\n\ |
19544 | 2046 @deftypefn {Loadable Function} {@var{fs} =} __recorder_get_fs__ (@var{recorder})\n\ |
2047 Undocumented internal function.\n\ | |
2048 @end deftypefn") | |
2049 { | |
2050 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2051 |
19544 | 2052 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2053 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2054 if (args.length () == 1) |
19544 | 2055 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2056 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2057 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2058 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2059 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2060 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2061 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2062 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2063 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2064 retval = recorder->get_fs (); |
19544 | 2065 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2066 |
19544 | 2067 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2068 |
19544 | 2069 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2070 |
19544 | 2071 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2072 |
19544 | 2073 return retval; |
2074 } | |
2075 | |
2076 DEFUN_DLD (__recorder_get_id__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2077 "-*- texinfo -*-\n\ |
19544 | 2078 @deftypefn {Loadable Function} {@var{id} =} __recorder_get_id__ (@var{recorder})\n\ |
2079 Undocumented internal function.\n\ | |
2080 @end deftypefn") | |
2081 { | |
2082 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2083 |
19544 | 2084 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2085 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2086 if (args.length () == 1) |
19544 | 2087 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2088 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2089 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2090 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2091 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2092 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2093 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2094 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2095 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2096 retval = recorder->get_id (); |
19544 | 2097 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2098 |
19544 | 2099 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2100 |
19544 | 2101 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2102 |
19544 | 2103 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2104 |
19544 | 2105 return retval; |
2106 } | |
2107 | |
2108 DEFUN_DLD (__recorder_get_nbits__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2109 "-*- texinfo -*-\n\ |
19544 | 2110 @deftypefn {Loadable Function} {@var{nbits} =} __recorder_get_nbits__ (@var{recorder})\n\ |
2111 Undocumented internal function.\n\ | |
2112 @end deftypefn") | |
2113 { | |
2114 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2115 |
19544 | 2116 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2117 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2118 if (args.length () == 1) |
19544 | 2119 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2120 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2121 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2122 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2123 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2124 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2125 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2126 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2127 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2128 retval = recorder->get_nbits (); |
19544 | 2129 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2130 |
19544 | 2131 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2132 |
19544 | 2133 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2134 |
19544 | 2135 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2136 |
19544 | 2137 return retval; |
2138 } | |
2139 | |
2140 DEFUN_DLD (__recorder_get_sample_number__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2141 "-*- texinfo -*-\n\ |
19544 | 2142 @deftypefn {Loadable Function} {@var{n} =} __recorder_get_sample_number__ (@var{recorder})\n\ |
2143 Undocumented internal function.\n\ | |
2144 @end deftypefn") | |
2145 { | |
2146 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2147 |
19544 | 2148 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2149 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2150 if (args.length () == 1) |
19544 | 2151 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2152 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2153 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2154 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2155 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2156 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2157 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2158 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2159 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2160 retval = recorder->get_sample_number (); |
19544 | 2161 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2162 |
19544 | 2163 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2164 |
19544 | 2165 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2166 |
19544 | 2167 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2168 |
19544 | 2169 return retval; |
2170 } | |
2171 | |
2172 DEFUN_DLD (__recorder_get_tag__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2173 "-*- texinfo -*-\n\ |
19544 | 2174 @deftypefn {Loadable Function} {@var{tag} =} __recorder_get_tag__ (@var{recorder})\n\ |
2175 Undocumented internal function.\n\ | |
2176 @end deftypefn") | |
2177 { | |
2178 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2179 |
19544 | 2180 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2181 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2182 if (args.length () == 1) |
19544 | 2183 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2184 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2185 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2186 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2187 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2188 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2189 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2190 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2191 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2192 retval = recorder->get_tag (); |
19544 | 2193 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2194 |
19544 | 2195 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2196 |
19544 | 2197 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2198 |
19544 | 2199 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2200 |
19544 | 2201 return retval; |
2202 } | |
2203 | |
2204 DEFUN_DLD (__recorder_get_total_samples__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2205 "-*- texinfo -*-\n\ |
19544 | 2206 @deftypefn {Loadable Function} {@var{n} =} __recorder_get_total_samples__ (@var{recorder})\n\ |
2207 Undocumented internal function.\n\ | |
2208 @end deftypefn") | |
2209 { | |
2210 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2211 |
19544 | 2212 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2213 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2214 if (args.length () == 1) |
19544 | 2215 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2216 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2217 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2218 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2219 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2220 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2221 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2222 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2223 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2224 retval = recorder->get_total_samples (); |
19544 | 2225 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2226 |
19544 | 2227 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2228 |
19544 | 2229 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2230 |
19544 | 2231 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2232 |
19544 | 2233 return retval; |
2234 } | |
2235 | |
2236 DEFUN_DLD (__recorder_get_userdata__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2237 "-*- texinfo -*-\n\ |
19544 | 2238 @deftypefn {Loadable Function} {@var{data} =} __recorder_get_userdata__ (@var{recorder})\n\ |
2239 Undocumented internal function.\n\ | |
2240 @end deftypefn") | |
2241 { | |
2242 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2243 |
19544 | 2244 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2245 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2246 if (args.length () == 1) |
19544 | 2247 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2248 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2249 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2250 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2251 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2252 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2253 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2254 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2255 |
19544 | 2256 retval = recorder->get_userdata (); |
2257 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2258 |
19544 | 2259 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2260 |
19544 | 2261 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2262 |
19544 | 2263 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2264 |
19544 | 2265 return retval; |
2266 } | |
2267 | |
2268 DEFUN_DLD (__recorder_isrecording__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2269 "-*- texinfo -*-\n\ |
19544 | 2270 @deftypefn {Loadable Function} {} __recorder_isrecording__ (@var{recorder})\n\ |
2271 Undocumented internal function.\n\ | |
2272 @end deftypefn") | |
2273 { | |
2274 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2275 |
19544 | 2276 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2277 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2278 if (args.length () == 1) |
19544 | 2279 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2280 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2281 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2282 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2283 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2284 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2285 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2286 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2287 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2288 retval = recorder->isrecording () ? true : false; |
19544 | 2289 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2290 |
19544 | 2291 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2292 |
19544 | 2293 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2294 |
19544 | 2295 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2296 |
19544 | 2297 return retval; |
2298 } | |
2299 | |
2300 DEFUN_DLD (__recorder_pause__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2301 "-*- texinfo -*-\n\ |
19544 | 2302 @deftypefn {Loadable Function} {} __recorder_pause__ (@var{recorder})\n\ |
2303 Undocumented internal function.\n\ | |
2304 @end deftypefn") | |
2305 { | |
2306 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2307 |
19544 | 2308 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2309 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2310 if (args.length () == 1) |
19544 | 2311 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2312 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2313 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2314 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2315 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2316 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2317 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2318 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2319 |
19544 | 2320 recorder->pause (); |
2321 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2322 |
19544 | 2323 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2324 |
19544 | 2325 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2326 |
19544 | 2327 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2328 |
19544 | 2329 return retval; |
2330 } | |
2331 | |
2332 DEFUN_DLD (__recorder_recordblocking__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2333 "-*- texinfo -*-\n\ |
19544 | 2334 @deftypefn {Loadable Function} {} __recorder_recordblocking__ (@var{recorder}, @var{seconds})\n\ |
2335 Undocumented internal function.\n\ | |
2336 @end deftypefn") | |
2337 { | |
2338 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2339 |
19544 | 2340 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2341 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2342 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2343 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2344 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2345 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2346 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2347 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2348 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2349 |
19544 | 2350 recorder->recordblocking (args(1).float_value ()); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2351 |
19544 | 2352 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2353 |
19544 | 2354 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2355 |
19544 | 2356 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2357 |
19544 | 2358 return retval; |
2359 } | |
2360 | |
2361 DEFUN_DLD (__recorder_record__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2362 "-*- texinfo -*-\n\ |
19544 | 2363 @deftypefn {Loadable Function} {} __recorder_record__ (@var{recorder})\n\ |
2364 @deftypefnx {Loadable Function} {} __recorder_record__ (@var{recorder}, @var{seconds})\n\ | |
2365 Undocumented internal function.\n\ | |
2366 @end deftypefn") | |
2367 { | |
2368 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2369 |
19544 | 2370 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2371 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2372 audiorecorder *recorder = get_recorder (args(0)); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2373 |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2374 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2375 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2376 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2377 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2378 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2379 |
19544 | 2380 if (args.length () == 1) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2381 recorder->record (); |
19544 | 2382 else if (args.length () == 2) |
2383 { | |
2384 recorder->set_end_sample (args(1).int_value () * recorder->get_fs ()); | |
2385 recorder->record (); | |
2386 } | |
2387 else | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2388 error ("audiorecorder: wrong number of arguments passed to record"); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2389 |
19544 | 2390 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2391 |
19544 | 2392 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2393 |
19544 | 2394 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2395 |
19544 | 2396 return retval; |
2397 } | |
2398 | |
2399 DEFUN_DLD (__recorder_resume__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2400 "-*- texinfo -*-\n\ |
19544 | 2401 @deftypefn {Loadable Function} {} __recorder_resume__ (@var{recorder})\n\ |
2402 Undocumented internal function.\n\ | |
2403 @end deftypefn") | |
2404 { | |
2405 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2406 |
19544 | 2407 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2408 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2409 if (args.length () == 1) |
19544 | 2410 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2411 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2412 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2413 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2414 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2415 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2416 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2417 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2418 |
19544 | 2419 recorder->resume (); |
2420 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2421 |
19544 | 2422 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2423 |
19544 | 2424 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2425 |
19544 | 2426 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2427 |
19544 | 2428 return retval; |
2429 } | |
2430 | |
2431 DEFUN_DLD (__recorder_set_fs__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2432 "-*- texinfo -*-\n\ |
19544 | 2433 @deftypefn {Loadable Function} {} __recorder_set_fs__ (@var{recorder}, @var{fs})\n\ |
2434 Undocumented internal function.\n\ | |
2435 @end deftypefn") | |
2436 { | |
2437 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2438 |
19544 | 2439 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2440 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2441 if (args.length () == 2) |
19544 | 2442 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2443 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2444 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2445 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2446 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2447 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2448 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2449 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2450 |
19544 | 2451 recorder->set_fs (args(1).int_value ()); |
2452 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2453 |
19544 | 2454 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2455 |
19544 | 2456 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2457 |
19544 | 2458 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2459 |
19544 | 2460 return retval; |
2461 } | |
2462 | |
2463 DEFUN_DLD (__recorder_set_tag__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2464 "-*- texinfo -*-\n\ |
19544 | 2465 @deftypefn {Loadable Function} {} __recorder_set_tag__ (@var{recorder}, @var{tag})\n\ |
2466 Undocumented internal function.\n\ | |
2467 @end deftypefn") | |
2468 { | |
2469 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2470 |
19544 | 2471 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2472 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2473 if (args.length () == 2) |
19544 | 2474 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2475 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2476 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2477 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2478 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2479 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2480 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2481 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2482 |
19544 | 2483 recorder->set_tag (args(1).char_matrix_value ()); |
2484 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2485 |
19544 | 2486 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2487 |
19544 | 2488 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2489 |
19544 | 2490 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2491 |
19544 | 2492 return retval; |
2493 } | |
2494 | |
2495 DEFUN_DLD (__recorder_set_userdata__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2496 "-*- texinfo -*-\n\ |
19544 | 2497 @deftypefn {Loadable Function} {} __recorder_set_userdata__ (@var{recorder}, @var{data})\n\ |
2498 Undocumented internal function.\n\ | |
2499 @end deftypefn") | |
2500 { | |
2501 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2502 |
19544 | 2503 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2504 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2505 if (args.length () == 2) |
19544 | 2506 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2507 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2508 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2509 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2510 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2511 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2512 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2513 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2514 |
19544 | 2515 recorder->set_userdata (args(1)); |
2516 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2517 |
19544 | 2518 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2519 |
19544 | 2520 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2521 |
19544 | 2522 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2523 |
19544 | 2524 return retval; |
2525 } | |
2526 | |
2527 DEFUN_DLD (__recorder_stop__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2528 "-*- texinfo -*-\n\ |
19544 | 2529 @deftypefn {Loadable Function} {} __recorder_stop__ (@var{recorder})\n\ |
2530 Undocumented internal function.\n\ | |
2531 @end deftypefn") | |
2532 { | |
2533 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2534 |
19544 | 2535 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2536 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2537 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2538 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2539 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2540 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2541 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2542 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2543 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2544 |
19544 | 2545 recorder->stop (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2546 |
19544 | 2547 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2548 |
19544 | 2549 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2550 |
19544 | 2551 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2552 |
19544 | 2553 return retval; |
2554 } | |
2555 | |
2556 DEFUN_DLD (__player_audioplayer__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2557 "-*- texinfo -*-\n\ |
19544 | 2558 @deftypefn {Loadable Function} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs})\n\ |
2559 @deftypefnx {Loadable Function} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs}, @var{nbits})\n\ | |
2560 @deftypefnx {Loadable Function} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs}, @var{nbits}, @var{id})\n\ | |
2561 Undocumented internal function.\n\ | |
2562 @end deftypefn") | |
2563 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2564 octave_value retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2565 |
19544 | 2566 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2567 |
19544 | 2568 int nargin = args.length (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2569 |
19583
c332c72d4960
prevent completely invalid call to __player_audioplayer__
John W. Eaton <jwe@octave.org>
parents:
19582
diff
changeset
|
2570 if (nargin < 2 || nargin > 4) |
c332c72d4960
prevent completely invalid call to __player_audioplayer__
John W. Eaton <jwe@octave.org>
parents:
19582
diff
changeset
|
2571 { |
c332c72d4960
prevent completely invalid call to __player_audioplayer__
John W. Eaton <jwe@octave.org>
parents:
19582
diff
changeset
|
2572 print_usage (); |
c332c72d4960
prevent completely invalid call to __player_audioplayer__
John W. Eaton <jwe@octave.org>
parents:
19582
diff
changeset
|
2573 return retval; |
c332c72d4960
prevent completely invalid call to __player_audioplayer__
John W. Eaton <jwe@octave.org>
parents:
19582
diff
changeset
|
2574 } |
c332c72d4960
prevent completely invalid call to __player_audioplayer__
John W. Eaton <jwe@octave.org>
parents:
19582
diff
changeset
|
2575 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2576 audioplayer* recorder = new audioplayer (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2577 |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2578 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2579 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2580 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2581 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2582 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2583 |
19608
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19607
diff
changeset
|
2584 bool is_function = (args(0).is_string () || args(0).is_function_handle () |
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19607
diff
changeset
|
2585 || args(0).is_inline_function ()); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2586 |
19544 | 2587 if (is_function) |
19594
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
2588 { |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
2589 error ("audioplayer: callbacks not yet implemented"); |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
2590 return retval; |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
2591 |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
2592 // recorder->set_y (args(0).function_value ()); |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
2593 } |
19544 | 2594 else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2595 recorder->set_y (args(0)); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2596 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2597 recorder->set_fs (args(1).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2598 |
19544 | 2599 switch (nargin) |
2600 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2601 case 3: |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2602 recorder->set_nbits (args(2).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2603 break; |
19584
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
2604 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2605 case 4: |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2606 recorder->set_nbits (args(2).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2607 recorder->set_id (args(3).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2608 break; |
19544 | 2609 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2610 |
19544 | 2611 if (is_function) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2612 recorder->init_fn (); |
19544 | 2613 else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2614 recorder->init (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2615 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2616 retval = recorder; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2617 |
19544 | 2618 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2619 |
19544 | 2620 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2621 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2622 #endif |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2623 |
19544 | 2624 return retval; |
2625 } | |
2626 | |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
2627 #ifdef HAVE_PORTAUDIO |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
2628 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2629 static audioplayer * |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2630 get_player (const octave_value& ov) |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2631 { |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2632 const octave_base_value& rep = ov.get_rep (); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2633 |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2634 octave_base_value *ncrep = const_cast<octave_base_value *> (&rep); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2635 |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2636 return dynamic_cast<audioplayer *> (ncrep); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2637 } |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2638 |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
2639 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
2640 |
19544 | 2641 DEFUN_DLD (__player_get_channels__, args, , |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2642 "-*- texinfo -*-\n\ |
19544 | 2643 @deftypefn {Loadable Function} {@var{n} =} __player_get_channels__ (@var{player})\n\ |
2644 Undocumented internal function.\n\ | |
2645 @end deftypefn") | |
2646 { | |
2647 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2648 |
19544 | 2649 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2650 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2651 if (args.length () == 1) |
19544 | 2652 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2653 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2654 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2655 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2656 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2657 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2658 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2659 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2660 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2661 retval = player->get_channels (); |
19544 | 2662 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2663 |
19544 | 2664 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2665 |
19544 | 2666 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2667 |
19544 | 2668 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2669 |
19544 | 2670 return retval; |
2671 } | |
2672 | |
2673 DEFUN_DLD (__player_get_fs__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2674 "-*- texinfo -*-\n\ |
19544 | 2675 @deftypefn {Loadable Function} {@var{fs} =} __player_get_fs__ (@var{player})\n\ |
2676 Undocumented internal function.\n\ | |
2677 @end deftypefn") | |
2678 { | |
2679 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2680 |
19544 | 2681 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2682 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2683 if (args.length () == 1) |
19544 | 2684 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2685 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2686 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2687 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2688 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2689 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2690 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2691 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2692 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2693 retval = player->get_fs (); |
19544 | 2694 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2695 |
19544 | 2696 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2697 |
19544 | 2698 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2699 |
19544 | 2700 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2701 |
19544 | 2702 return retval; |
2703 } | |
2704 | |
2705 DEFUN_DLD (__player_get_id__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2706 "-*- texinfo -*-\n\ |
19544 | 2707 @deftypefn {Loadable Function} {@var{id} =} __player_get_id__ (@var{player})\n\ |
2708 Undocumented internal function.\n\ | |
2709 @end deftypefn") | |
2710 { | |
2711 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2712 |
19544 | 2713 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2714 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2715 if (args.length () == 1) |
19544 | 2716 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2717 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2718 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2719 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2720 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2721 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2722 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2723 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2724 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2725 retval = player->get_id (); |
19544 | 2726 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2727 |
19544 | 2728 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2729 |
19544 | 2730 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2731 |
19544 | 2732 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2733 |
19544 | 2734 return retval; |
2735 } | |
2736 | |
2737 DEFUN_DLD (__player_get_nbits__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2738 "-*- texinfo -*-\n\ |
19544 | 2739 @deftypefn {Loadable Function} {@var{nbits} =} __player_get_nbits__ (@var{player})\n\ |
2740 Undocumented internal function.\n\ | |
2741 @end deftypefn") | |
2742 { | |
2743 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2744 |
19544 | 2745 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2746 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2747 if (args.length () == 1) |
19544 | 2748 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2749 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2750 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2751 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2752 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2753 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2754 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2755 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2756 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2757 retval = player->get_nbits (); |
19544 | 2758 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2759 |
19544 | 2760 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2761 |
19544 | 2762 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2763 |
19544 | 2764 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2765 |
19544 | 2766 return retval; |
2767 } | |
2768 | |
2769 DEFUN_DLD (__player_get_sample_number__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2770 "-*- texinfo -*-\n\ |
19544 | 2771 @deftypefn {Loadable Function} {@var{n} =} __player_get_sample_number__ (@var{player})\n\ |
2772 Undocumented internal function.\n\ | |
2773 @end deftypefn") | |
2774 { | |
2775 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2776 |
19544 | 2777 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2778 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2779 if (args.length () == 1) |
19544 | 2780 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2781 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2782 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2783 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2784 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2785 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2786 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2787 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2788 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2789 retval = player->get_sample_number (); |
19544 | 2790 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2791 |
19544 | 2792 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2793 |
19544 | 2794 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2795 |
19544 | 2796 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2797 |
19544 | 2798 return retval; |
2799 } | |
2800 | |
2801 DEFUN_DLD (__player_get_tag__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2802 "-*- texinfo -*-\n\ |
19544 | 2803 @deftypefn {Loadable Function} {@var{tag} =} __player_get_tag__ (@var{player})\n\ |
2804 Undocumented internal function.\n\ | |
2805 @end deftypefn") | |
2806 { | |
2807 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2808 |
19544 | 2809 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2810 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2811 if (args.length () == 1) |
19544 | 2812 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2813 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2814 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2815 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2816 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2817 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2818 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2819 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2820 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2821 retval = player->get_tag (); |
19544 | 2822 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2823 |
19544 | 2824 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2825 |
19544 | 2826 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2827 |
19544 | 2828 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2829 |
19544 | 2830 return retval; |
2831 } | |
2832 | |
2833 DEFUN_DLD (__player_get_total_samples__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2834 "-*- texinfo -*-\n\ |
19544 | 2835 @deftypefn {Loadable Function} {@var{n} =} __player_get_total_samples__ (@var{player})\n\ |
2836 Undocumented internal function.\n\ | |
2837 @end deftypefn") | |
2838 { | |
2839 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2840 |
19544 | 2841 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2842 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2843 if (args.length () == 1) |
19544 | 2844 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2845 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2846 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2847 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2848 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2849 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2850 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2851 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2852 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2853 retval = player->get_total_samples (); |
19544 | 2854 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2855 |
19544 | 2856 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2857 |
19544 | 2858 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2859 |
19544 | 2860 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2861 |
19544 | 2862 return retval; |
2863 } | |
2864 | |
2865 DEFUN_DLD (__player_get_userdata__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2866 "-*- texinfo -*-\n\ |
19544 | 2867 @deftypefn {Loadable Function} {@var{data} =} __player_get_userdata__ (@var{player})\n\ |
2868 Undocumented internal function.\n\ | |
2869 @end deftypefn") | |
2870 { | |
2871 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2872 |
19544 | 2873 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2874 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2875 if (args.length () == 1) |
19544 | 2876 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2877 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2878 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2879 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2880 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2881 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2882 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2883 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2884 |
19544 | 2885 retval = player->get_userdata (); |
2886 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2887 |
19544 | 2888 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2889 |
19544 | 2890 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2891 |
19544 | 2892 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2893 |
19544 | 2894 return retval; |
2895 } | |
2896 | |
2897 DEFUN_DLD (__player_isplaying__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2898 "-*- texinfo -*-\n\ |
19544 | 2899 @deftypefn {Loadable Function} {} __player_isplaying__ (@var{player})\n\ |
2900 Undocumented internal function.\n\ | |
2901 @end deftypefn") | |
2902 { | |
2903 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2904 |
19544 | 2905 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2906 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2907 if (args.length () == 1) |
19544 | 2908 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2909 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2910 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2911 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2912 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2913 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2914 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2915 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2916 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2917 retval = player->isplaying () ? true : false; |
19544 | 2918 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2919 |
19544 | 2920 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2921 |
19544 | 2922 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2923 |
19544 | 2924 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2925 |
19544 | 2926 return retval; |
2927 } | |
2928 | |
2929 DEFUN_DLD (__player_pause__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2930 "-*- texinfo -*-\n\ |
19544 | 2931 @deftypefn {Loadable Function} {} __player_pause__ (@var{player})\n\ |
2932 Undocumented internal function.\n\ | |
2933 @end deftypefn") | |
2934 { | |
2935 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2936 |
19544 | 2937 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2938 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2939 if (args.length () == 1) |
19544 | 2940 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2941 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2942 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2943 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2944 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2945 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2946 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2947 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2948 |
19544 | 2949 player->pause (); |
2950 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2951 |
19544 | 2952 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2953 |
19544 | 2954 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2955 |
19544 | 2956 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2957 |
19544 | 2958 return retval; |
2959 } | |
2960 | |
2961 DEFUN_DLD (__player_playblocking__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2962 "-*- texinfo -*-\n\ |
19544 | 2963 @deftypefn {Loadable Function} {} __player_playblocking__ (@var{player})\n\ |
2964 @deftypefnx {Loadable Function} {} __player_playblocking__ (@var{player}, @var{start})\n\ | |
2965 @deftypefnx {Loadable Function} {} __player_playblocking__ (@var{player}, [@var{start}, @var{end}])\n\ | |
2966 Undocumented internal function.\n\ | |
2967 @end deftypefn") | |
2968 { | |
2969 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2970 |
19544 | 2971 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2972 |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2973 audioplayer *player = get_player (args(0)); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2974 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2975 if (! player) |
19544 | 2976 { |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2977 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2978 return retval; |
19544 | 2979 } |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2980 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2981 if (args.length () == 1) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2982 player->playblocking (); |
19544 | 2983 else |
2984 { | |
2985 if (args(1).is_matrix_type ()) | |
2986 { | |
2987 RowVector range = args(1).row_vector_value (); | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2988 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2989 unsigned int start = range.elem (0) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2990 unsigned int end = range.elem (1) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2991 |
19549
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19548
diff
changeset
|
2992 if (start > player->get_total_samples () |
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19548
diff
changeset
|
2993 || start > end || end > player->get_total_samples ()) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2994 { |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2995 error ("audioplayer: invalid range specified for playback"); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2996 return retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2997 } |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2998 |
19544 | 2999 player->set_sample_number (start); |
3000 player->set_end_sample (end); | |
3001 } | |
3002 else | |
3003 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3004 unsigned int start = args(1).int_value () - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3005 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
3006 if (start > player->get_total_samples ()) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3007 { |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3008 error ("audioplayer: invalid range specified for playback"); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3009 return retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3010 } |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3011 |
19544 | 3012 player->set_sample_number (start); |
3013 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3014 |
19544 | 3015 player->playblocking (); |
3016 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3017 |
19544 | 3018 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3019 |
19544 | 3020 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3021 |
19544 | 3022 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3023 |
19544 | 3024 return retval; |
3025 } | |
3026 | |
3027 DEFUN_DLD (__player_play__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
3028 "-*- texinfo -*-\n\ |
19544 | 3029 @deftypefn {Loadable Function} {} __player_play__ (@var{player})\n\ |
3030 @deftypefnx {Loadable Function} {} __player_play__ (@var{player}, @var{start})\n\ | |
3031 @deftypefnx {Loadable Function} {} __player_play__ (@var{player}, [@var{start}, @var{end}])\n\ | |
3032 Undocumented internal function.\n\ | |
3033 @end deftypefn") | |
3034 { | |
3035 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3036 |
19544 | 3037 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3038 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3039 if (args.length () == 1) |
19544 | 3040 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3041 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3042 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3043 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3044 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3045 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3046 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3047 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3048 |
19544 | 3049 player->play (); |
3050 } | |
3051 else | |
3052 { | |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3053 audioplayer *player = get_player (args(0)); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3054 |
19544 | 3055 if (args(1).is_matrix_type ()) |
3056 { | |
3057 RowVector range = args(1).row_vector_value (); | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3058 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3059 unsigned int start = range.elem (0) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3060 unsigned int end = range.elem (1) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3061 |
19549
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19548
diff
changeset
|
3062 if (start > player->get_total_samples () |
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19548
diff
changeset
|
3063 || start > end || end > player->get_total_samples ()) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3064 { |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3065 error ("audioplayer: invalid range specified for playback"); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3066 return retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3067 } |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3068 |
19544 | 3069 player->set_sample_number (start); |
3070 player->set_end_sample (end); | |
3071 } | |
3072 else | |
3073 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3074 unsigned int start = args(1).int_value () - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3075 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
3076 if (start > player->get_total_samples ()) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3077 { |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3078 error ("audioplayer: invalid range specified for playback"); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3079 return retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3080 } |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3081 |
19544 | 3082 player->set_sample_number (start); |
3083 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3084 |
19544 | 3085 player->play (); |
3086 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3087 |
19544 | 3088 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3089 |
19544 | 3090 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3091 |
19544 | 3092 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3093 |
19544 | 3094 return retval; |
3095 } | |
3096 | |
3097 DEFUN_DLD (__player_resume__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
3098 "-*- texinfo -*-\n\ |
19544 | 3099 @deftypefn {Loadable Function} {} __player_resume__ (@var{player})\n\ |
3100 Undocumented internal function.\n\ | |
3101 @end deftypefn") | |
3102 { | |
3103 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3104 |
19544 | 3105 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3106 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3107 if (args.length () == 1) |
19544 | 3108 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3109 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3110 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3111 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3112 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3113 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3114 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3115 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3116 |
19544 | 3117 player->resume (); |
3118 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3119 |
19544 | 3120 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3121 |
19544 | 3122 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3123 |
19544 | 3124 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3125 |
19544 | 3126 return retval; |
3127 } | |
3128 | |
3129 DEFUN_DLD (__player_set_fs__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
3130 "-*- texinfo -*-\n\ |
19544 | 3131 @deftypefn {Loadable Function} {} __player_set_fs__ (@var{player}, @var{fs})\n\ |
3132 Undocumented internal function.\n\ | |
3133 @end deftypefn") | |
3134 { | |
3135 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3136 |
19544 | 3137 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3138 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3139 if (args.length () == 2) |
19544 | 3140 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3141 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3142 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3143 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3144 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3145 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3146 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3147 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3148 |
19544 | 3149 player->set_fs (args(1).int_value ()); |
3150 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3151 |
19544 | 3152 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3153 |
19544 | 3154 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3155 |
19544 | 3156 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3157 |
19544 | 3158 return retval; |
3159 } | |
3160 | |
3161 DEFUN_DLD (__player_set_tag__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
3162 "-*- texinfo -*-\n\ |
19544 | 3163 @deftypefn {Loadable Function} {} __player_set_tag__ (@var{player}, @var{tag})\n\ |
3164 Undocumented internal function.\n\ | |
3165 @end deftypefn") | |
3166 { | |
3167 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3168 |
19544 | 3169 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3170 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3171 if (args.length () == 2) |
19544 | 3172 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3173 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3174 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3175 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3176 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3177 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3178 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3179 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3180 |
19544 | 3181 player->set_tag (args(1).char_matrix_value ()); |
3182 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3183 |
19544 | 3184 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3185 |
19544 | 3186 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3187 |
19544 | 3188 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3189 |
19544 | 3190 return retval; |
3191 } | |
3192 | |
3193 DEFUN_DLD (__player_set_userdata__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
3194 "-*- texinfo -*-\n\ |
19544 | 3195 @deftypefn {Loadable Function} {} __player_set_userdata__ (@var{player}, @var{data})\n\ |
3196 Undocumented internal function.\n\ | |
3197 @end deftypefn") | |
3198 { | |
3199 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3200 |
19544 | 3201 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3202 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3203 if (args.length () == 2) |
19544 | 3204 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3205 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3206 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3207 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3208 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3209 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3210 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3211 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3212 |
19544 | 3213 player->set_userdata (args(1)); |
3214 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3215 |
19544 | 3216 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3217 |
19544 | 3218 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3219 |
19544 | 3220 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3221 |
19544 | 3222 return retval; |
3223 } | |
3224 | |
3225 DEFUN_DLD (__player_stop__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
3226 "-*- texinfo -*-\n\ |
19544 | 3227 @deftypefn {Loadable Function} {} __player_stop__ (@var{player})\n\ |
3228 Undocumented internal function.\n\ | |
3229 @end deftypefn") | |
3230 { | |
3231 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3232 |
19544 | 3233 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3234 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3235 if (args.length () == 1) |
19544 | 3236 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3237 audioplayer *player = get_player (args (0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3238 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3239 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3240 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3241 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3242 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3243 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3244 |
19544 | 3245 player->stop (); |
3246 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3247 |
19544 | 3248 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3249 |
19544 | 3250 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3251 |
19544 | 3252 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3253 |
19544 | 3254 return retval; |
3255 } |