Mercurial > octave
annotate libinterp/dldfcn/audiodevinfo.cc @ 28851:1ac5a76ae91d
use [=] capture default specification where possible
Files affected: Canvas.cc, GLCanvas.cc, file-editor-tab.cc,
file-editor.cc, octave-qscintilla.cc, main-window.cc,
octave-qobject.cc, set-path-model.cc, variable-editor-model.cc,
workspace-view.cc, call-stack.cc, graphics.cc, input.cc,
interpreter.cc, load-path.cc, pr-output.cc, strfns.cc, sysdep.cc,
audiodevinfo.cc, audioread.cc, convhulln.cc, oct-parse.yy, pt-eval.cc,
lo-sysdep.cc, oct-glob.cc, oct-string.cc, and url-transfer.cc.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 02 Oct 2020 13:25:00 -0400 |
parents | 445e5ac1f58d |
children | c40a367a84c0 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
3 // Copyright (C) 2013-2020 The Octave Project Developers |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
19500
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19498
diff
changeset
|
25 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21691
diff
changeset
|
26 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21200
diff
changeset
|
27 # include "config.h" |
19501
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19500
diff
changeset
|
28 #endif |
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19500
diff
changeset
|
29 |
21912
d92dcbcd7691
prefer C++ wrappers for C standard headers in C++ code
John W. Eaton <jwe@octave.org>
parents:
21743
diff
changeset
|
30 #include <cstdint> |
19510 | 31 |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
32 #include <algorithm> |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
33 #include <ostream> |
19510 | 34 #include <string> |
35 #include <vector> | |
36 | |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
37 #include "Matrix.h" |
19556
d7057df2968e
use existing function to determine endianness in audiodevinfo.cc
John W. Eaton <jwe@octave.org>
parents:
19555
diff
changeset
|
38 #include "mach-info.h" |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
39 #include "oct-locbuf.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
40 #include "quit.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
41 #include "unwind-prot.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
42 |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
43 #include "Cell.h" |
19511
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19510
diff
changeset
|
44 #include "defun-dld.h" |
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19510
diff
changeset
|
45 #include "error.h" |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
46 #include "errwarn.h" |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
47 #include "interpreter.h" |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
48 #include "oct-map.h" |
19511
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19510
diff
changeset
|
49 #include "ov-int32.h" |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
50 #include "ov.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
51 #include "ovl.h" |
19510 | 52 #include "parse.h" |
53 | |
54 #if defined (HAVE_PORTAUDIO) | |
19526
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
55 |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
56 #include <portaudio.h> |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
57 |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
58 PaSampleFormat |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
59 bits_to_format (int bits) |
19473
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19472
diff
changeset
|
60 { |
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19472
diff
changeset
|
61 if (bits == 8) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
62 return paInt8; |
19473
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19472
diff
changeset
|
63 else if (bits == 16) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
64 return paInt16; |
19473
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19472
diff
changeset
|
65 else if (bits == 24) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
66 return paInt24; |
19473
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19472
diff
changeset
|
67 else if (bits == 32) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
68 return paInt32; |
19473
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19472
diff
changeset
|
69 else if (bits == -1) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
70 return paFloat32; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
71 else |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
72 return 0; |
19473
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19472
diff
changeset
|
73 } |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
74 |
19526
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
75 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
76 |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
77 DEFUN_DLD (audiodevinfo, args, , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
78 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
79 @deftypefn {} {@var{devinfo} =} audiodevinfo () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
80 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
81 @deftypefnx {} {@var{devs} =} audiodevinfo (@var{io}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
82 @deftypefnx {} {@var{name} =} audiodevinfo (@var{io}, @var{id}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
83 @deftypefnx {} {@var{id} =} audiodevinfo (@var{io}, @var{name}) |
27888
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
84 @deftypefnx {} {@var{driverversion} =} audiodevinfo (@var{io}, @var{id}, "DriverVersion") |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
85 @deftypefnx {} {@var{id} =} audiodevinfo (@var{io}, @var{rate}, @var{bits}, @var{chans}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
86 @deftypefnx {} {@var{supports} =} audiodevinfo (@var{io}, @var{id}, @var{rate}, @var{bits}, @var{chans}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
87 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
88 Return a structure describing the available audio input and output devices. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
89 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
90 The @var{devinfo} structure has two fields @qcode{"input"} and |
27884 | 91 @qcode{"output"}. The value of each field is a structure array with fields |
28713
28d2511f2af2
maint: grammarcheck documentation ahead of 6.1 release.
Rik <rik@octave.org>
parents:
28387
diff
changeset
|
92 @qcode{"Name"}, @nospell{@qcode{"DriverVersion"}} and @qcode{"ID"} describing |
27917
248b7b8f5a65
doc: Spellcheck documentation ahead of 6.1 release.
Rik <rik@octave.org>
parents:
27889
diff
changeset
|
93 an audio device. |
27884 | 94 |
95 If the optional argument @var{io} is 1, return information about input devices | |
96 only. If it is 0, return information about output devices only. If @var{io} | |
97 is the only argument supplied, return the number of input or output devices | |
98 available. | |
99 | |
100 If the optional argument @var{id} is provided, return information about the | |
101 corresponding device. | |
102 | |
103 If the optional argument @var{name} is provided, return the ID of the named | |
104 device. | |
105 | |
28713
28d2511f2af2
maint: grammarcheck documentation ahead of 6.1 release.
Rik <rik@octave.org>
parents:
28387
diff
changeset
|
106 If the optional argument @nospell{@qcode{"DriverVersion"}} is given, return the |
27917
248b7b8f5a65
doc: Spellcheck documentation ahead of 6.1 release.
Rik <rik@octave.org>
parents:
27889
diff
changeset
|
107 name of the driver for the specified device. |
27888
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
108 |
27884 | 109 Given a sampling rate, bits per sample, and number of channels for an input or |
110 output device, return the ID of the first device that supports playback or | |
111 recording using the specified parameters. | |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
112 |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
113 If also given a device ID, return true if the device supports playback or |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
114 recording using those parameters. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
115 @end deftypefn */) |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
116 { |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21691
diff
changeset
|
117 #if defined (HAVE_PORTAUDIO) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
118 |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
119 int nargin = args.length (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
120 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20868
diff
changeset
|
121 if (nargin > 5) |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20868
diff
changeset
|
122 print_usage (); |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20868
diff
changeset
|
123 |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
124 octave_scalar_map devinfo; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
125 octave_value_list input; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
126 octave_value_list output; |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
127 |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
128 PaError err = Pa_Initialize (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
129 |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
130 if (err != paNoError) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
131 error ("audiodevinfo: PortAudio initialization failed"); |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
132 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
133 int num_devices = Pa_GetDeviceCount (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
134 |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
135 if (num_devices < 0) |
23279
67d741321e21
allow skipping of tests based on run-time conditions
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
136 num_devices = 0; |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
137 |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
138 octave_idx_type numinput, numoutput; |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
139 numinput = numoutput = 0; |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
140 for (int i = 0; i < num_devices; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
141 { |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
142 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (i); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
143 |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
144 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
145 { |
26148
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
146 warning_with_id ("Octave:invalid-audio-device", |
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
147 "invalid audio device ID = %d", i); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
148 continue; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
149 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
150 |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
151 if (device_info->maxInputChannels != 0) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
152 numinput++; |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
153 |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
154 if (device_info->maxOutputChannels != 0) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
155 numoutput++; |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
156 } |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
157 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
158 Cell input_name (dim_vector (1, numinput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
159 Cell input_driver_version (dim_vector (1, numinput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
160 Cell input_id (dim_vector (1, numinput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
161 Cell output_name (dim_vector (1, numoutput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
162 Cell output_driver_version (dim_vector (1, numoutput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
163 Cell output_id (dim_vector (1, numoutput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
164 |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
165 octave_idx_type idx_i, idx_o; |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
166 idx_i = idx_o = 0; |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
167 for (int i = 0; i < num_devices; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
168 { |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
169 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (i); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
170 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
171 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
172 { |
26148
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
173 warning_with_id ("Octave:invalid-audio-device", |
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
174 "invalid audio device ID = %d", i); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
175 continue; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
176 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
177 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
178 const PaHostApiInfo *api_info = Pa_GetHostApiInfo (device_info->hostApi); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
179 |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
180 const char *driver = (api_info ? api_info->name : ""); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
181 |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
182 char name[128]; |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
183 sprintf (name, "%s (%s)", device_info->name, driver); |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
184 |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
185 if (device_info->maxInputChannels != 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
186 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
187 input_name(idx_i) = name; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
188 input_driver_version(idx_i) = driver; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
189 input_id(idx_i) = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
190 idx_i++; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
191 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
192 |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
193 if (device_info->maxOutputChannels != 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
194 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
195 output_name(idx_o) = name; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
196 output_driver_version(idx_o) = driver; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
197 output_id(idx_o) = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
198 idx_o++; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
199 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
200 } |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
201 |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
202 octave_map inputdev, outputdev; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
203 inputdev.setfield ("Name", input_name); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
204 inputdev.setfield ("DriverVersion", input_driver_version); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
205 inputdev.setfield ("ID", input_id); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
206 outputdev.setfield ("Name", output_name); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
207 outputdev.setfield ("DriverVersion", output_driver_version); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
208 outputdev.setfield ("ID", output_id); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
209 devinfo.setfield ("input", inputdev); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
210 devinfo.setfield ("output", outputdev); |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
211 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20868
diff
changeset
|
212 octave_value retval; |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20868
diff
changeset
|
213 |
27884 | 214 // Return information about input & output audio devices and their properties. |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
215 if (nargin == 0) |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
216 { |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
217 retval = devinfo; |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
218 } |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
219 // Return the number of input or output devices |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
220 else if (nargin == 1) |
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 (args(0).int_value () == 0) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
223 retval = numoutput; |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
224 else if (args(0).int_value () == 1) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
225 retval = numinput; |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
226 else |
27884 | 227 error ("audiodevinfo: specify 0 for output and 1 for input devices"); |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
228 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
229 // 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
|
230 else if (nargin == 2) |
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 bool found = false; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
233 int outin = args(0).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
234 if (args(1).is_string ()) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
235 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
236 std::string name = args(1).string_value (); |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
237 if (outin == 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
238 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
239 for (int i = 0; i < numoutput; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
240 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
241 if (output_name(i).string_value () == name) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
242 { |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
243 retval = output_id(i); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
244 found = true; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
245 break; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
246 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
247 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
248 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
249 else if (outin == 1) |
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 for (int i = 0; i < numinput; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
252 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
253 if (input_name(i).string_value () == name) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
254 { |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
255 retval = input_id(i); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
256 found = true; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
257 break; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
258 } |
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 } |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
261 else |
27884 | 262 error ("audiodevinfo: specify 0 for output and 1 for input devices"); |
19469
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 else |
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 if (outin == 0) |
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 < numoutput; 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 (output_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 = output_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 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
278 else if (outin == 1) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
279 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
280 for (int i = 0; i < numinput; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
281 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
282 if (input_id(i).int_value () == args(1).int_value ()) |
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 retval = input_name(i); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
285 found = true; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
286 break; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
287 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
288 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
289 } |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
290 else |
27884 | 291 error ("audiodevinfo: specify 0 for output and 1 for input devices"); |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
292 } |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
293 |
19973 | 294 if (! found) |
27884 | 295 error ("audiodevinfo: no device found for the specified criteria"); |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
296 } |
27888
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
297 // Return the DriverVersion (really, name of driver) of the specified device |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
298 else if (nargin == 3) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
299 { |
27888
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
300 bool found = false; |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
301 int outin = args(0).int_value (); |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
302 int id = args(1).int_value (); |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
303 |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
304 std::string arg3 = args(2).string_value (); |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
305 std::transform (arg3.begin (), arg3.end (), arg3.begin (), tolower); |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
306 if (arg3 != "driverversion") |
28752
810eb29fc227
maint: Use C++ raw string literals to simplify backlsashing.
Rik <rik@octave.org>
parents:
28713
diff
changeset
|
307 error (R"(audiodevinfo: third argument must be "DriverVersion")"); |
27888
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
308 |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
309 if (outin == 0) |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
310 { |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
311 for (int i = 0; i < numoutput; i++) |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
312 { |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
313 if (output_id(i).int_value () == id) |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
314 { |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
315 found = true; |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
316 retval = output_driver_version(i); |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
317 break; |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
318 } |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
319 } |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
320 } |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
321 else if (outin == 1) |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
322 { |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
323 for (int i = 0; i < numinput; i++) |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
324 { |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
325 if (input_id(i).int_value () == id) |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
326 { |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
327 found = true; |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
328 retval = input_driver_version(i); |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
329 break; |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
330 } |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
331 } |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
332 } |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
333 else |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
334 error ("audiodevinfo: specify 0 for output and 1 for input devices"); |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
335 |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
336 if (! found) |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
337 error ("audiodevinfo: no device found for the specified criteria"); |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
338 } |
27888
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
339 // Return the ID of the first device meeting specified criteria. |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
340 else if (nargin == 4) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
341 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
342 int io = args(0).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
343 int rate = args(1).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
344 int bits = args(2).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
345 int chans = args(3).int_value (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
346 |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
347 for (int i = 0; i < num_devices; i++) |
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 PaStreamParameters stream_parameters; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
350 stream_parameters.device = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
351 stream_parameters.channelCount = chans; |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
352 PaSampleFormat format = bits_to_format (bits); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
353 |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
354 if (format != 0) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
355 stream_parameters.sampleFormat = format; |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
356 else |
27884 | 357 error ("audiodevinfo: invalid bits per sample format"); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
358 |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
359 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (i); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
360 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
361 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
362 { |
26148
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
363 warning_with_id ("Octave:invalid-audio-device", |
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
364 "invalid audio device ID = %d", i); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
365 continue; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
366 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
367 |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
368 stream_parameters.suggestedLatency |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
369 = device_info->defaultLowInputLatency; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
370 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
371 stream_parameters.hostApiSpecificStreamInfo = nullptr; |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
372 |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
373 if (io == 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
374 { |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
375 if (device_info->maxOutputChannels < chans) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
376 continue; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
377 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
378 err = Pa_IsFormatSupported (nullptr, &stream_parameters, rate); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
379 |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
380 if (err == paFormatIsSupported) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
381 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
382 retval = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
383 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
384 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
385 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
386 else if (io == 1) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
387 { |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
388 if (device_info->maxInputChannels < chans) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
389 continue; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
390 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
391 err = Pa_IsFormatSupported (&stream_parameters, nullptr, rate); |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
392 if (err == paFormatIsSupported) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
393 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
394 retval = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
395 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
396 } |
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 } |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
399 retval = -1; |
19469
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 // Check if given device supports specified playback or recording modes. |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
402 else if (nargin == 5) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
403 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
404 int io = args(0).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
405 int id = args(1).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
406 int rate = args(2).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
407 int bits = args(3).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
408 int chans = args(4).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
409 PaStreamParameters stream_parameters; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
410 stream_parameters.device = id; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
411 stream_parameters.channelCount = chans; |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
412 PaSampleFormat format = bits_to_format (bits); |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
413 if (format != 0) |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
414 stream_parameters.sampleFormat = format; |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
415 else |
27884 | 416 error ("audiodevinfo: invalid bits per sample format"); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
417 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
418 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (id); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
419 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
420 if (! device_info) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
421 error ("audiodevinfo: invalid audio device ID = %d", id); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
422 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
423 stream_parameters.suggestedLatency |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
424 = device_info->defaultLowInputLatency; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
425 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
426 stream_parameters.hostApiSpecificStreamInfo = nullptr; |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
427 if (io == 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
428 { |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
429 if (device_info->maxOutputChannels < chans) |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
430 { |
27887
7ddba4f6f450
Return logical value from audiodevinfo called with 5 inputs (bug #57511)
Rik <rik@octave.org>
parents:
27884
diff
changeset
|
431 retval = false; |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
432 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
433 } |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
434 err = Pa_IsFormatSupported (nullptr, &stream_parameters, rate); |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
435 if (err == paFormatIsSupported) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
436 { |
27887
7ddba4f6f450
Return logical value from audiodevinfo called with 5 inputs (bug #57511)
Rik <rik@octave.org>
parents:
27884
diff
changeset
|
437 retval = true; |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
438 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
439 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
440 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
441 else if (io == 1) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
442 { |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
443 if (device_info->maxInputChannels < chans) |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
444 { |
27887
7ddba4f6f450
Return logical value from audiodevinfo called with 5 inputs (bug #57511)
Rik <rik@octave.org>
parents:
27884
diff
changeset
|
445 retval = false; |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
446 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
447 } |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
448 err = Pa_IsFormatSupported (&stream_parameters, nullptr, rate); |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
449 if (err == paFormatIsSupported) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
450 { |
27887
7ddba4f6f450
Return logical value from audiodevinfo called with 5 inputs (bug #57511)
Rik <rik@octave.org>
parents:
27884
diff
changeset
|
451 retval = true; |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
452 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
453 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
454 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
455 else |
27884 | 456 error ("audiodevinfo: specify 0 for output and 1 for input devices"); |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
457 |
27887
7ddba4f6f450
Return logical value from audiodevinfo called with 5 inputs (bug #57511)
Rik <rik@octave.org>
parents:
27884
diff
changeset
|
458 retval = false; |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
459 } |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20868
diff
changeset
|
460 |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20868
diff
changeset
|
461 return retval; |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
462 |
19483
abde714a4f88
let audiodevinfo be built even when PortAudio is not present
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19473
diff
changeset
|
463 #else |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
464 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
465 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
466 err_disabled_feature ("audiodevinfo", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
467 "audio playback and recording through PortAudio"); |
19483
abde714a4f88
let audiodevinfo be built even when PortAudio is not present
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19473
diff
changeset
|
468 #endif |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
469 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
470 |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
471 /* |
19528
4f615cd9a68d
Use "testif HAVE_PORTAUDIO" for new audio function tests
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19526
diff
changeset
|
472 %!testif HAVE_PORTAUDIO |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
473 %! devinfo = audiodevinfo; |
19509 | 474 %! assert (rows (devinfo.input), 1); |
475 %! assert (rows (devinfo.output), 1); | |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
476 |
19528
4f615cd9a68d
Use "testif HAVE_PORTAUDIO" for new audio function tests
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19526
diff
changeset
|
477 %!testif HAVE_PORTAUDIO |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
478 %! devinfo = audiodevinfo; |
19509 | 479 %! nout = audiodevinfo (0); |
480 %! nin = audiodevinfo (1); | |
481 %! assert (columns (devinfo.output), nout); | |
482 %! assert (columns (devinfo.input), nin); | |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
483 |
19528
4f615cd9a68d
Use "testif HAVE_PORTAUDIO" for new audio function tests
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19526
diff
changeset
|
484 %!testif HAVE_PORTAUDIO |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
485 %! devinfo = audiodevinfo; |
19509 | 486 %! nout = audiodevinfo (0); |
487 %! nin = audiodevinfo (1); | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
488 %! for i = 1:nout |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21547
diff
changeset
|
489 %! assert (devinfo.output(i).Name, audiodevinfo (0, devinfo.output(i).ID)); |
19509 | 490 %! endfor |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
491 %! for i=1:nin |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21547
diff
changeset
|
492 %! assert (devinfo.input(i).Name, audiodevinfo (1, devinfo.input(i).ID)); |
19509 | 493 %! endfor |
19469
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
494 |
19528
4f615cd9a68d
Use "testif HAVE_PORTAUDIO" for new audio function tests
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19526
diff
changeset
|
495 %!testif HAVE_PORTAUDIO |
19503
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19501
diff
changeset
|
496 %! devinfo = audiodevinfo; |
19509 | 497 %! nout = audiodevinfo (0); |
498 %! nin = audiodevinfo (1); | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
499 %! for i = 1:nout |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21547
diff
changeset
|
500 %! assert (devinfo.output(i).ID, audiodevinfo (0, devinfo.output(i).Name)); |
19509 | 501 %! endfor |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
502 %! for i = 1:nin |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21547
diff
changeset
|
503 %! assert (devinfo.input(i).ID, audiodevinfo (1, devinfo.input(i).Name)); |
19509 | 504 %! endfor |
19500
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19498
diff
changeset
|
505 */ |
19510 | 506 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21691
diff
changeset
|
507 #if defined (HAVE_PORTAUDIO) |
19526
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
508 |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
509 enum audio_type { TYPE_INT8, TYPE_UINT8, TYPE_UINT16, TYPE_DOUBLE }; |
19510 | 510 |
511 class audioplayer : public octave_base_value | |
512 { | |
513 public: | |
514 audioplayer (void); | |
19570
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
515 ~audioplayer (void); |
19510 | 516 |
517 // Overloaded base functions | |
518 double player_value (void) const { return 0; } | |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
519 virtual double scalar_value (bool = false) const { return 0; } |
21333
c4690d9ff566
avoid warnings about overloading virtual functions from a base class
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
520 void print (std::ostream& os, bool pr_as_read_syntax = false); |
19510 | 521 void print_raw (std::ostream& os, bool pr_as_read_syntax) const; |
522 | |
523 // Properties | |
524 bool is_constant (void) const { return true; } | |
525 bool is_defined (void) const { return true; } | |
526 bool print_as_scalar (void) const { return true; } | |
527 | |
528 void init (void); | |
529 void init_fn (void); | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
530 void set_y (const octave_value& y); |
19510 | 531 void set_y (octave_function *fn); |
532 void set_y (std::string fn); | |
533 Matrix& get_y (void); | |
19547
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
534 RowVector get_left (void) const; |
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
535 RowVector get_right (void) const; |
19510 | 536 void set_fs (int fs); |
537 int get_fs (void); | |
538 void set_nbits (int nbits); | |
539 int get_nbits (void); | |
540 void set_id (int id); | |
541 int get_id (void); | |
542 int get_channels (void); | |
543 audio_type get_type (void); | |
544 | |
545 void set_sample_number (unsigned int sample); | |
546 unsigned int get_sample_number (void); | |
547 unsigned int get_total_samples (void); | |
548 void set_end_sample (unsigned int sample); | |
549 unsigned int get_end_sample (void); | |
550 void reset_end_sample (void); | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
551 void set_tag (const charMatrix& tag); |
19510 | 552 charMatrix get_tag (void); |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
553 void set_userdata (const octave_value& userdata); |
19510 | 554 octave_value get_userdata (void); |
23446
cd4e1ee28716
maint: Use convention 'void * fcn ()' for functions which return pointers.
Rik <rik@octave.org>
parents:
23362
diff
changeset
|
555 PaStream * get_stream (void); |
19510 | 556 |
557 void playblocking (void); | |
558 void play (void); | |
559 void pause (void); | |
560 void resume (void); | |
561 void stop (void); | |
562 bool isplaying (void); | |
563 | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
564 octave_function *octave_callback_function; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
565 |
19510 | 566 private: |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
567 int id; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
568 int fs; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
569 int nbits; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
570 int channels; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
571 unsigned int sample_number; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
572 unsigned int end_sample; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
573 charMatrix tag; |
19510 | 574 Matrix y; |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
575 octave_value userdata; |
19510 | 576 RowVector left; |
577 RowVector right; | |
578 PaStream *stream; | |
579 PaStreamParameters output_parameters; | |
580 audio_type type; | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
581 |
19510 | 582 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA |
583 }; | |
584 | |
585 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (audioplayer, "audioplayer", "audioplayer"); | |
586 | |
587 static int | |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
588 octave_play_callback (const void *, void *output, unsigned long frames, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
589 const PaStreamCallbackTimeInfo *, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
590 PaStreamCallbackFlags, void *data) |
19510 | 591 { |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
592 audioplayer *player = static_cast<audioplayer *> (data); |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
593 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
594 if (! player) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
595 error ("audio player callback function called without player"); |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
596 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23024
diff
changeset
|
597 octave_value_list retval |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23024
diff
changeset
|
598 = octave::feval (player->octave_callback_function, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23024
diff
changeset
|
599 ovl (static_cast<double> (frames)), 1); |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
600 |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
601 if (retval.length () < 2) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
602 error ("audio player callback function failed"); |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
603 |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
604 const Matrix sound = retval(0).matrix_value (); |
19510 | 605 int return_status = retval(1).int_value (); |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
606 |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
607 if (frames - sound.rows () != 0 || sound.columns () < 1 |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20232
diff
changeset
|
608 || sound.columns () > 2) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
609 error ("audio player callback function failed"); |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
610 |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
611 // 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:
19552
diff
changeset
|
612 // 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:
19552
diff
changeset
|
613 // a second copy of the data array to be made. |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
614 |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
615 const ColumnVector sound_l = sound.column (0); |
19574
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19573
diff
changeset
|
616 const ColumnVector sound_r = (sound.columns () == 1 |
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19573
diff
changeset
|
617 ? sound_l : sound.column (1)); |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
618 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
619 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:
19550
diff
changeset
|
620 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:
19550
diff
changeset
|
621 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
622 switch (player->get_nbits ()) |
19510 | 623 { |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
624 case 8: |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
625 { |
19557
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19556
diff
changeset
|
626 static double scale_factor = std::pow (2.0, 7) - 1.0; |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
627 |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
628 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:
19550
diff
changeset
|
629 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
630 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:
19550
diff
changeset
|
631 { |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
632 buffer[2*i] = p_l[i] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
633 buffer[2*i+1] = p_r[i] * scale_factor; |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
634 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
635 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
636 break; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
637 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
638 case 16: |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
639 { |
19557
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19556
diff
changeset
|
640 static double scale_factor = std::pow (2.0, 15) - 1.0; |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
641 |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
642 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:
19550
diff
changeset
|
643 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
644 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:
19550
diff
changeset
|
645 { |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
646 buffer[2*i] = p_l[i] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
647 buffer[2*i+1] = p_r[i] * scale_factor; |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
648 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
649 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
650 break; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
651 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
652 case 24: |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
653 { |
19557
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19556
diff
changeset
|
654 static double scale_factor = std::pow (2.0, 23) - 1.0; |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
655 |
21739
c4ab2e54f100
use namespace for oct_mach_info class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
656 static int big_endian = octave::mach_info::words_big_endian (); |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
657 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
658 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:
19550
diff
changeset
|
659 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
660 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:
19550
diff
changeset
|
661 { |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
662 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:
19550
diff
changeset
|
663 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:
19550
diff
changeset
|
664 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
665 sample_l &= 0x00ffffff; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
666 sample_r &= 0x00ffffff; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
667 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
668 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:
19550
diff
changeset
|
669 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:
19550
diff
changeset
|
670 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
671 unsigned long offset = i * 6; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
672 |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
673 buffer[offset+0] = _sample_l[0+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
674 buffer[offset+1] = _sample_l[1+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
675 buffer[offset+2] = _sample_l[2+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
676 |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
677 buffer[offset+3] = _sample_r[0+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
678 buffer[offset+4] = _sample_r[1+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
679 buffer[offset+5] = _sample_r[2+big_endian] * scale_factor; |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
680 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
681 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
682 break; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
683 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
684 default: |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
685 error ("invalid player bit depth in callback function"); |
19510 | 686 } |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
687 |
19510 | 688 return return_status; |
689 } | |
690 | |
691 static int | |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
692 portaudio_play_callback (const void *, void *output, unsigned long frames, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
693 const PaStreamCallbackTimeInfo*, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
694 PaStreamCallbackFlags, void *data) |
19510 | 695 { |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
696 audioplayer *player = static_cast<audioplayer *> (data); |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
697 |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
698 if (! player) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
699 error ("audio player callback function called without player"); |
19551
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
700 |
27884 | 701 // Don't multiply the audio data by scale_factor here. Although it would |
702 // move the operation outside of the loops below, it also causes a second | |
703 // copy of the *entire* data array to be made when only a small portion | |
704 // (buffer_size elements) is usually needed for this callback. | |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
705 |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
706 const RowVector sound_l = player->get_left (); |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
707 const RowVector sound_r = player->get_right (); |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
708 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
709 const double *pl = sound_l.data (); |
19565
810cfb00b72b
portaudio_play_callback: Fix stereo playback (bug #43965)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19561
diff
changeset
|
710 const double *pr = sound_r.data (); |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
711 |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
712 if (player->get_type () == TYPE_DOUBLE) |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
713 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
714 switch (player->get_nbits ()) |
19510 | 715 { |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
716 case 8: |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
717 { |
19557
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19556
diff
changeset
|
718 static double scale_factor = std::pow (2.0, 7) - 1.0; |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
719 |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
720 int8_t *buffer = static_cast<int8_t *> (output); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
721 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
722 for (unsigned long j = 0; j < frames; j++) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
723 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
724 unsigned int sample_number = player->get_sample_number (); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
725 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
726 if (sample_number >= player->get_end_sample ()) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
727 return paComplete; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
728 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
729 unsigned long offset = j * 2; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
730 |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
731 buffer[offset+0] = pl[sample_number] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
732 buffer[offset+1] = pr[sample_number] * scale_factor; |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
733 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
734 player->set_sample_number (sample_number + 1); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
735 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
736 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
737 break; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
738 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
739 case 16: |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
740 { |
19557
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19556
diff
changeset
|
741 static double scale_factor = std::pow (2.0, 15) - 1.0; |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
742 |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
743 int16_t *buffer = static_cast<int16_t *> (output); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
744 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
745 for (unsigned long j = 0; j < frames; j++) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
746 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
747 unsigned int sample_number = player->get_sample_number (); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
748 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
749 if (sample_number >= player->get_end_sample ()) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
750 return paComplete; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
751 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
752 unsigned long offset = j * 2; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
753 |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
754 buffer[offset+0] = pl[sample_number] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
755 buffer[offset+1] = pr[sample_number] * scale_factor; |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
756 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
757 player->set_sample_number (sample_number + 1); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
758 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
759 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
760 break; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
761 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
762 case 24: |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
763 { |
19557
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19556
diff
changeset
|
764 static double scale_factor = std::pow (2.0, 23) - 1.0; |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
765 |
21739
c4ab2e54f100
use namespace for oct_mach_info class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
766 static int big_endian = octave::mach_info::words_big_endian (); |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
767 |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
768 uint8_t *buffer = static_cast<uint8_t *> (output); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
769 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
770 for (unsigned long j = 0; j < frames; j++) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
771 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
772 unsigned int sample_number = player->get_sample_number (); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
773 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
774 if (sample_number >= player->get_end_sample ()) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
775 return paComplete; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
776 |
19555
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
777 int32_t sample_l = pl[sample_number] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
778 int32_t sample_r = pr[sample_number] * scale_factor; |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
779 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
780 sample_l &= 0x00ffffff; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
781 sample_r &= 0x00ffffff; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
782 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
783 uint8_t *_sample_l = reinterpret_cast<uint8_t *> (&sample_l); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
784 uint8_t *_sample_r = reinterpret_cast<uint8_t *> (&sample_r); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
785 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
786 unsigned long offset = j * 6; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
787 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
788 buffer[offset+0] = _sample_l[0+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
789 buffer[offset+1] = _sample_l[1+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
790 buffer[offset+2] = _sample_l[2+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
791 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
792 buffer[offset+3] = _sample_r[0+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
793 buffer[offset+4] = _sample_r[1+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
794 buffer[offset+5] = _sample_r[2+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
795 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
796 player->set_sample_number (sample_number + 1); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
797 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
798 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
799 break; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
800 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
801 default: |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
802 error ("invalid player bit depth in callback function"); |
19510 | 803 } |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
804 } |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
805 else if (player->get_type () == TYPE_INT8) |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
806 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
807 int8_t *buffer = static_cast<int8_t *> (output); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
808 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
809 for (unsigned long j = 0; j < frames; j++) |
19510 | 810 { |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
811 unsigned int sample_number = player->get_sample_number (); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
812 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
813 if (sample_number >= player->get_end_sample ()) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
814 return paComplete; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
815 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
816 unsigned long offset = j * 2; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
817 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
818 buffer[offset+0] = pl[sample_number]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
819 buffer[offset+1] = pr[sample_number]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
820 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
821 player->set_sample_number (sample_number + 1); |
19550
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
822 } |
19543
5f313345912f
avoid indexing before beginning of string
John W. Eaton <jwe@octave.org>
parents:
19528
diff
changeset
|
823 } |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
824 else if (player->get_type () == TYPE_UINT8) |
19550
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
825 { |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
826 uint8_t *buffer = static_cast<uint8_t *> (output); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
827 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
828 for (unsigned long j = 0; j < frames; j++) |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
829 { |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
830 unsigned int sample_number = player->get_sample_number (); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
831 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
832 if (sample_number >= player->get_end_sample ()) |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
833 return paComplete; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
834 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
835 unsigned long offset = j * 2; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
836 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
837 buffer[offset+0] = pl[sample_number]; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
838 buffer[offset+1] = pr[sample_number]; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
839 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
840 player->set_sample_number (sample_number + 1); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
841 } |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
842 } |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
843 else if (player->get_type () == TYPE_UINT16) |
19550
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
844 { |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
845 int16_t *buffer = static_cast<int16_t *> (output); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
846 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
847 for (unsigned long j = 0; j < frames; j++) |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
848 { |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
849 unsigned int sample_number = player->get_sample_number (); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
850 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
851 if (sample_number >= player->get_end_sample ()) |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
852 return paComplete; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
853 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
854 unsigned long offset = j * 2; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
855 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
856 buffer[offset+0] = pl[sample_number]; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
857 buffer[offset+1] = pr[sample_number]; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
858 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
859 player->set_sample_number (sample_number + 1); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
860 } |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
861 } |
19548
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
862 |
19510 | 863 return paContinue; |
864 } | |
865 | |
866 audioplayer::audioplayer (void) | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
867 : octave_callback_function (nullptr), |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
868 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:
19516
diff
changeset
|
869 end_sample (-1), tag (""), y (), userdata (Matrix ()), |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
870 left (), right (), stream (nullptr), output_parameters (), type () |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
871 { } |
19510 | 872 |
19570
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
873 audioplayer::~audioplayer (void) |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
874 { |
19583
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
875 if (isplaying ()) |
19570
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
876 { |
26148
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
877 warning_with_id ("Octave:audio-interrupt", |
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
878 "interrupting playing audioplayer"); |
19570
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
879 stop (); |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
880 } |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
881 } |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
882 |
19510 | 883 void |
21333
c4690d9ff566
avoid warnings about overloading virtual functions from a base class
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
884 audioplayer::print (std::ostream& os, bool pr_as_read_syntax) |
19510 | 885 { |
886 print_raw (os, pr_as_read_syntax); | |
887 newline (os); | |
888 } | |
889 | |
890 void | |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
891 audioplayer::print_raw (std::ostream& os, bool) const |
19510 | 892 { |
893 os << 0; | |
894 } | |
895 | |
896 void | |
897 audioplayer::init_fn (void) | |
898 { | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
899 if (Pa_Initialize () != paNoError) |
27884 | 900 error ("audioplayer: initialization error"); |
19510 | 901 |
19566
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19565
diff
changeset
|
902 if (Pa_GetDeviceCount () < 1) |
27884 | 903 error ("audioplayer: no audio devices found or available"); |
19510 | 904 |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
905 int device = get_id (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
906 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
907 if (device == -1) |
19510 | 908 device = Pa_GetDefaultOutputDevice (); |
909 | |
910 output_parameters.device = device; | |
911 output_parameters.channelCount = 2; | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
912 output_parameters.sampleFormat = bits_to_format (get_nbits ()); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
913 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
914 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
915 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
916 if (! device_info) |
26148
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
917 warning_with_id ("Octave:invalid-default-audio-device", |
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
918 "invalid default audio device ID = %d", device); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
919 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
920 output_parameters.suggestedLatency |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
921 = (device_info ? device_info->defaultHighOutputLatency : -1); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
922 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
923 output_parameters.hostApiSpecificStreamInfo = nullptr; |
19510 | 924 } |
925 | |
926 void | |
927 audioplayer::init (void) | |
928 { | |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
929 // FIXME: Both of these variables are unused. |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
930 // Should they be eliminated or is something not yet implemented? |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
931 // |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
932 // int channels = y.rows (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
933 // RowVector *sound_l = get_left (); |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
934 |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
935 if (Pa_Initialize () != paNoError) |
27884 | 936 error ("audioplayer: initialization error"); |
19510 | 937 |
19566
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19565
diff
changeset
|
938 if (Pa_GetDeviceCount () < 1) |
27884 | 939 error ("audioplayer: no audio devices found or available"); |
19510 | 940 |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
941 int device = get_id (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
942 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
943 if (device == -1) |
19510 | 944 device = Pa_GetDefaultOutputDevice (); |
945 | |
946 output_parameters.device = device; | |
947 output_parameters.channelCount = 2; | |
948 | |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
949 if (type == TYPE_DOUBLE) |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
950 output_parameters.sampleFormat = bits_to_format (get_nbits ()); |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
951 else if (type == TYPE_INT8) |
19510 | 952 output_parameters.sampleFormat = paInt8; |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
953 else if (type == TYPE_UINT8) |
19510 | 954 output_parameters.sampleFormat = paUInt8; |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
955 else if (type == TYPE_UINT16) |
19510 | 956 output_parameters.sampleFormat = paInt16; |
957 | |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
958 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
959 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
960 if (! device_info) |
26148
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
961 warning_with_id ("Octave:invalid-default-audio-device", |
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
962 "invalid default audio device ID = %d", device); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
963 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
964 output_parameters.suggestedLatency |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
965 = (device_info ? device_info->defaultHighOutputLatency : -1); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
966 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
967 output_parameters.hostApiSpecificStreamInfo = nullptr; |
19510 | 968 } |
969 | |
970 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
971 audioplayer::set_y (const octave_value& y_arg) |
19510 | 972 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
973 if (y_arg.is_int8_type ()) |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
974 type = TYPE_INT8; |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
975 else if (y_arg.is_uint8_type ()) |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
976 type = TYPE_UINT8; |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
977 else if (y_arg.is_int16_type ()) |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
978 type = TYPE_UINT16; |
19510 | 979 else |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
980 type = TYPE_DOUBLE; |
19510 | 981 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
982 y = y_arg.matrix_value (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
983 |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
984 if (y.rows () > 2) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
985 y = y.transpose (); |
19510 | 986 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
987 channels = y.rows (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
988 left = y.row (0); |
19510 | 989 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
990 if (channels == 2) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
991 right = y.row (1); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
992 |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
993 reset_end_sample (); |
19510 | 994 } |
995 | |
996 void | |
997 audioplayer::set_y (octave_function *fn) | |
998 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
999 octave_callback_function = fn; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1000 channels = 2; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1001 reset_end_sample (); |
19510 | 1002 } |
1003 | |
1004 Matrix& | |
1005 audioplayer::get_y (void) | |
1006 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1007 return y; |
19510 | 1008 } |
1009 | |
19547
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
1010 RowVector |
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
1011 audioplayer::get_left (void) const |
19510 | 1012 { |
19547
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
1013 return left; |
19510 | 1014 } |
1015 | |
19547
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
1016 RowVector |
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
1017 audioplayer::get_right (void) const |
19510 | 1018 { |
19547
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
1019 return channels == 1 ? left : right; |
19510 | 1020 } |
1021 | |
1022 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1023 audioplayer::set_fs (int fs_arg) |
19510 | 1024 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1025 fs = fs_arg; |
19510 | 1026 } |
1027 | |
1028 int | |
1029 audioplayer::get_fs (void) | |
1030 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1031 return fs; |
19510 | 1032 } |
1033 | |
1034 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1035 audioplayer::set_nbits (int nbits_arg) |
19510 | 1036 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1037 nbits = nbits_arg; |
19510 | 1038 } |
1039 | |
1040 int | |
1041 audioplayer::get_nbits (void) | |
1042 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1043 return nbits; |
19510 | 1044 } |
1045 | |
1046 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1047 audioplayer::set_id (int id_arg) |
19510 | 1048 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1049 id = id_arg; |
19510 | 1050 } |
1051 | |
1052 int | |
1053 audioplayer::get_id (void) | |
1054 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1055 return id; |
19510 | 1056 } |
1057 | |
1058 int | |
1059 audioplayer::get_channels (void) | |
1060 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1061 return channels; |
19510 | 1062 } |
1063 | |
1064 audio_type | |
1065 audioplayer::get_type (void) | |
1066 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1067 return type; |
19510 | 1068 } |
1069 | |
1070 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1071 audioplayer::set_sample_number (unsigned int sample_number_arg) |
19510 | 1072 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1073 sample_number = sample_number_arg; |
19510 | 1074 } |
1075 | |
1076 unsigned int | |
1077 audioplayer::get_sample_number (void) | |
1078 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1079 return sample_number; |
19510 | 1080 } |
1081 | |
1082 unsigned int | |
1083 audioplayer::get_total_samples (void) | |
1084 { | |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
1085 return left.numel (); |
19510 | 1086 } |
1087 | |
1088 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1089 audioplayer::set_end_sample (unsigned int end_sample_arg) |
19510 | 1090 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1091 end_sample = end_sample_arg; |
19510 | 1092 } |
1093 | |
1094 unsigned int | |
1095 audioplayer::get_end_sample (void) | |
1096 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1097 return end_sample; |
19510 | 1098 } |
1099 | |
1100 void | |
1101 audioplayer::reset_end_sample (void) | |
1102 { | |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
1103 set_end_sample (left.numel ()); |
19510 | 1104 } |
1105 | |
1106 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1107 audioplayer::set_tag (const charMatrix& tag_arg) |
19510 | 1108 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1109 tag = tag_arg; |
19510 | 1110 } |
1111 | |
1112 charMatrix | |
1113 audioplayer::get_tag (void) | |
1114 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1115 return tag; |
19510 | 1116 } |
1117 | |
1118 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1119 audioplayer::set_userdata (const octave_value& userdata_arg) |
19510 | 1120 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1121 userdata = userdata_arg; |
19510 | 1122 } |
1123 | |
1124 octave_value | |
1125 audioplayer::get_userdata (void) | |
1126 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1127 return userdata; |
19510 | 1128 } |
1129 | |
1130 void | |
1131 audioplayer::playblocking (void) | |
1132 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1133 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1134 stop (); |
19510 | 1135 |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1136 const unsigned int buffer_size = get_fs () / 20; |
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1137 OCTAVE_LOCAL_BUFFER (uint32_t, buffer, buffer_size * 2); |
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1138 |
19510 | 1139 PaError err; |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1140 err = Pa_OpenStream (&stream, nullptr, &(output_parameters), get_fs (), |
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1141 buffer_size, paClipOff, nullptr, nullptr); |
19510 | 1142 if (err != paNoError) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1143 error ("audioplayer: unable to open audio playback stream"); |
19510 | 1144 |
1145 err = Pa_StartStream (stream); | |
1146 if (err != paNoError) | |
22173
8de49f15e182
doc: Fix "doubled words" typos (\b(\w+)\s+\1\b)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
21966
diff
changeset
|
1147 error ("audioplayer: unable to start audio playback stream"); |
19510 | 1148 |
1149 unsigned int start, end; | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1150 start = get_sample_number (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1151 end = get_end_sample (); |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1152 |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28850
diff
changeset
|
1153 octave::unwind_action stop_audioplayer ([=] () { stop (); }); |
19674
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1154 |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1155 for (unsigned int i = start; i < end; i += buffer_size) |
19510 | 1156 { |
22860
0b1e25cc4457
eliminate use of OCTAVE_QUIT macro in C++ sources
John W. Eaton <jwe@octave.org>
parents:
22772
diff
changeset
|
1157 octave_quit (); |
0b1e25cc4457
eliminate use of OCTAVE_QUIT macro in C++ sources
John W. Eaton <jwe@octave.org>
parents:
22772
diff
changeset
|
1158 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1159 if (octave_callback_function != nullptr) |
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1160 octave_play_callback (nullptr, buffer, buffer_size, nullptr, 0, this); |
19510 | 1161 else |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1162 portaudio_play_callback (nullptr, buffer, buffer_size, nullptr, 0, this); |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1163 |
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1164 err = Pa_WriteStream (stream, buffer, buffer_size); |
19510 | 1165 } |
1166 } | |
1167 | |
1168 void | |
1169 audioplayer::play (void) | |
1170 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1171 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1172 stop (); |
19510 | 1173 |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1174 const unsigned int buffer_size = get_fs () / 20; |
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1175 |
19510 | 1176 PaError err; |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1177 if (octave_callback_function != nullptr) |
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1178 err = Pa_OpenStream (&stream, nullptr, &(output_parameters), |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1179 get_fs (), buffer_size, paClipOff, |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1180 octave_play_callback, this); |
19510 | 1181 else |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1182 err = Pa_OpenStream (&stream, nullptr, &(output_parameters), |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1183 get_fs (), buffer_size, paClipOff, |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1184 portaudio_play_callback, this); |
19510 | 1185 |
1186 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1187 error ("audioplayer: failed to open audio playback stream"); |
19510 | 1188 |
1189 err = Pa_StartStream (stream); | |
1190 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1191 error ("audioplayer: failed to start audio playback stream"); |
19510 | 1192 } |
1193 | |
1194 void | |
1195 audioplayer::pause (void) | |
1196 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1197 if (get_stream () == nullptr) |
19510 | 1198 return; |
1199 | |
1200 PaError err; | |
1201 err = Pa_StopStream (stream); | |
1202 if (err != paNoError) | |
25910
b4bf418dfc74
Correct audioplayer message strings (bug #54748).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
25054
diff
changeset
|
1203 error ("audioplayer: failed to stop audio playback stream"); |
19510 | 1204 } |
1205 | |
1206 void | |
1207 audioplayer::resume (void) | |
1208 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1209 if (get_stream () == nullptr) |
19510 | 1210 return; |
1211 | |
1212 PaError err; | |
1213 err = Pa_StartStream (stream); | |
1214 if (err != paNoError) | |
25910
b4bf418dfc74
Correct audioplayer message strings (bug #54748).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
25054
diff
changeset
|
1215 error ("audioplayer: failed to start audio playback stream"); |
19510 | 1216 } |
1217 | |
1218 PaStream * | |
1219 audioplayer::get_stream (void) | |
1220 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1221 return stream; |
19510 | 1222 } |
1223 | |
1224 void | |
1225 audioplayer::stop (void) | |
1226 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1227 if (get_stream () == nullptr) |
19510 | 1228 return; |
1229 | |
1230 PaError err; | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1231 set_sample_number (0); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1232 reset_end_sample (); |
19973 | 1233 if (! Pa_IsStreamStopped (get_stream ())) |
19510 | 1234 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1235 err = Pa_AbortStream (get_stream ()); |
19510 | 1236 if (err != paNoError) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1237 error ("audioplayer: failed to stop audio playback stream"); |
19510 | 1238 } |
1239 | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1240 err = Pa_CloseStream (get_stream ()); |
19510 | 1241 if (err != paNoError) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1242 error ("audioplayer: failed to close audio playback stream"); |
19510 | 1243 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1244 stream = nullptr; |
19510 | 1245 } |
1246 | |
1247 bool | |
1248 audioplayer::isplaying (void) | |
1249 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1250 if (get_stream () == nullptr) |
19510 | 1251 return false; |
1252 | |
1253 PaError err; | |
1254 err = Pa_IsStreamActive (stream); | |
19515
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19514
diff
changeset
|
1255 if (err != 0 && err != 1) |
25910
b4bf418dfc74
Correct audioplayer message strings (bug #54748).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
25054
diff
changeset
|
1256 error ("audioplayer: checking stream activity status failed"); |
19510 | 1257 |
1258 return (err == 1); | |
1259 } | |
1260 | |
1261 class audiorecorder : public octave_base_value | |
1262 { | |
1263 public: | |
1264 audiorecorder (void); | |
19580
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1265 ~audiorecorder (void); |
19510 | 1266 |
1267 // Overloaded base functions | |
1268 double player_value (void) const { return 0; } | |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1269 virtual double scalar_value (bool = false) const { return 0; } |
21333
c4690d9ff566
avoid warnings about overloading virtual functions from a base class
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
1270 void print (std::ostream& os, bool pr_as_read_syntax = false); |
19510 | 1271 void print_raw (std::ostream& os, bool pr_as_read_syntax) const; |
1272 | |
1273 // Properties | |
1274 bool is_constant (void) const { return true; } | |
1275 bool is_defined (void) const { return true; } | |
1276 bool print_as_scalar (void) const { return true; } | |
1277 | |
1278 void init (void); | |
1279 void set_fs (int fs); | |
1280 int get_fs (void); | |
1281 void set_nbits (int nbits); | |
1282 int get_nbits (void); | |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1283 PaSampleFormat get_sampleFormat (void); |
19510 | 1284 void set_id (int id); |
1285 int get_id (void); | |
1286 void set_channels (int channels); | |
1287 int get_channels (void); | |
1288 audio_type get_type (void); | |
1289 | |
1290 void set_sample_number (unsigned int sample); | |
1291 unsigned int get_sample_number (void); | |
1292 unsigned int get_total_samples (void); | |
1293 void set_end_sample (unsigned int sample); | |
1294 unsigned int get_end_sample (void); | |
1295 void reset_end_sample (void); | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1296 void set_tag (const charMatrix& tag); |
19510 | 1297 charMatrix get_tag (void); |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1298 void set_userdata (const octave_value& userdata); |
19510 | 1299 octave_value get_userdata (void); |
23446
cd4e1ee28716
maint: Use convention 'void * fcn ()' for functions which return pointers.
Rik <rik@octave.org>
parents:
23362
diff
changeset
|
1300 PaStream * get_stream (void); |
19510 | 1301 |
1302 octave_value getaudiodata (void); | |
23446
cd4e1ee28716
maint: Use convention 'void * fcn ()' for functions which return pointers.
Rik <rik@octave.org>
parents:
23362
diff
changeset
|
1303 audioplayer * getplayer (void); |
19510 | 1304 bool isrecording (void); |
1305 audioplayer play (void); | |
1306 void record (void); | |
1307 void recordblocking (float seconds); | |
1308 void pause (void); | |
1309 void resume (void); | |
1310 void stop (void); | |
1311 void append (float sample_l, float sample_r); | |
1312 | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1313 octave_function *octave_callback_function; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1314 |
19510 | 1315 private: |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1316 int id; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1317 int fs; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1318 int nbits; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1319 int channels; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1320 unsigned int sample_number; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1321 unsigned int end_sample; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1322 charMatrix tag; |
19510 | 1323 Matrix y; |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1324 octave_value userdata; |
19510 | 1325 std::vector<float> left; |
1326 std::vector<float> right; | |
1327 PaStream *stream; | |
1328 PaStreamParameters input_parameters; | |
1329 audio_type type; | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1330 |
19510 | 1331 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA |
1332 }; | |
1333 | |
1334 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (audiorecorder, "audiorecorder", "audiorecorder"); | |
1335 | |
1336 static int | |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1337 octave_record_callback (const void *input, void *, unsigned long frames, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1338 const PaStreamCallbackTimeInfo *, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1339 PaStreamCallbackFlags, void *data) |
19510 | 1340 { |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1341 audiorecorder *recorder = static_cast<audiorecorder *> (data); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1342 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1343 if (! recorder) |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1344 error ("audio recorder callback function called without recorder"); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1345 |
19510 | 1346 int channels = recorder->get_channels (); |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1347 |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1348 Matrix sound (frames, 2); |
19510 | 1349 sound.resize (frames, 2); |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1350 |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1351 if (recorder->get_sampleFormat () == bits_to_format (8)) |
19510 | 1352 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1353 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:
19557
diff
changeset
|
1354 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1355 const int8_t *input8 = static_cast<const int8_t *> (input); |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1356 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
1357 for (unsigned long i = 0; i < frames; i++) |
19510 | 1358 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1359 float sample_l = input8[i*channels] / scale_factor; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1360 float sample_r = input8[i*channels + (channels - 1)] / scale_factor; |
19557
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19556
diff
changeset
|
1361 |
19583
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1362 sound(i,0) = sample_l; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1363 sound(i,1) = sample_r; |
19510 | 1364 } |
19571
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19570
diff
changeset
|
1365 } |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1366 // FIXME: This is a workaround for a bug in PortAudio affecting 8-Bit |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1367 // recording (see Octave bug #44305). |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1368 // Remove this clause once the bug in PortAudio has been fixed. |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1369 else if (recorder->get_sampleFormat () == bits_to_format (16) |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1370 && recorder->get_nbits () == 8) |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1371 { |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1372 static double scale_factor = std::pow (2.0, 7) - 1.0; |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1373 |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1374 const int16_t *input16 = static_cast<const int16_t *> (input); |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1375 |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1376 for (unsigned long i = 0; i < frames; i++) |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1377 { |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1378 float sample_l = (input16[i*channels] >> 8) / scale_factor; |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1379 float sample_r = (input16[i*channels + (channels - 1)] >> 8) |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1380 / scale_factor; |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1381 |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1382 sound(i,0) = sample_l; |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1383 sound(i,1) = sample_r; |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1384 } |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1385 } |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1386 else if (recorder->get_sampleFormat () == bits_to_format (16)) |
19510 | 1387 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1388 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:
19557
diff
changeset
|
1389 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1390 const int16_t *input16 = static_cast<const int16_t *> (input); |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1391 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
1392 for (unsigned long i = 0; i < frames; i++) |
19510 | 1393 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1394 float sample_l = input16[i*channels] / scale_factor; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1395 float sample_r = input16[i*channels + (channels - 1)] / scale_factor; |
19557
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19556
diff
changeset
|
1396 |
19583
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1397 sound(i,0) = sample_l; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1398 sound(i,1) = sample_r; |
19510 | 1399 } |
1400 } | |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1401 else if (recorder->get_sampleFormat () == bits_to_format (24)) |
19510 | 1402 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1403 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:
19557
diff
changeset
|
1404 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1405 // FIXME: Is there a better way? |
27884 | 1406 // Could use union of int32_t, uint8_t[3:0]? (12/31/19) |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1407 const uint8_t *input24 = static_cast<const uint8_t *> (input); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1408 |
26218
29387b9ccfbb
Fix audiodevinfo recording when using 24-bit samples (bug #52228).
Rik <rik@octave.org>
parents:
26148
diff
changeset
|
1409 int32_t sample_l32, sample_r32; |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1410 |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1411 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:
19557
diff
changeset
|
1412 uint8_t *sample_r = reinterpret_cast<uint8_t *> (&sample_r32); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1413 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
1414 for (unsigned long i = 0; i < frames; i++) |
19510 | 1415 { |
26218
29387b9ccfbb
Fix audiodevinfo recording when using 24-bit samples (bug #52228).
Rik <rik@octave.org>
parents:
26148
diff
changeset
|
1416 sample_l32 = sample_r32 = 0; |
19510 | 1417 for (int j = 0; j < 3; j++) |
1418 { | |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1419 sample_l[j] = input24[i*channels*3 + j]; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1420 sample_r[j] = input24[i*channels*3 + (channels - 1)*3 + j]; |
19510 | 1421 } |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1422 |
19510 | 1423 if (sample_l32 & 0x00800000) |
1424 sample_l32 |= 0xff000000; | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1425 |
19510 | 1426 if (sample_r32 & 0x00800000) |
1427 sample_r32 |= 0xff000000; | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1428 |
19583
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1429 sound(i,0) = sample_l32 / scale_factor; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1430 sound(i,1) = sample_r32 / scale_factor; |
19510 | 1431 } |
1432 } | |
1433 | |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1434 octave_value_list retval |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23024
diff
changeset
|
1435 = octave::feval (recorder->octave_callback_function, ovl (sound), 1); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1436 |
19510 | 1437 return retval(0).int_value (); |
1438 } | |
1439 | |
1440 static int | |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1441 portaudio_record_callback (const void *input, void *, unsigned long frames, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1442 const PaStreamCallbackTimeInfo *, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1443 PaStreamCallbackFlags, void *data) |
19510 | 1444 { |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1445 audiorecorder *recorder = static_cast<audiorecorder *> (data); |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1446 |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1447 if (! recorder) |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1448 error ("audio recorder callback function called without recorder"); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1449 |
19510 | 1450 int channels = recorder->get_channels (); |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1451 |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1452 if (recorder->get_sampleFormat () == bits_to_format (8)) |
19510 | 1453 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1454 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:
19557
diff
changeset
|
1455 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1456 const int8_t *input8 = static_cast<const int8_t *> (input); |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1457 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
1458 for (unsigned long i = 0; i < frames; i++) |
19510 | 1459 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1460 float sample_l = input8[i*channels] / scale_factor; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1461 float sample_r = input8[i*channels + (channels - 1)] / scale_factor; |
19557
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19556
diff
changeset
|
1462 |
19510 | 1463 recorder->append (sample_l, sample_r); |
1464 } | |
1465 } | |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1466 // FIXME: This is a workaround for a bug in PortAudio affecting 8-Bit |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1467 // recording (see Octave bug #44305). |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1468 // Remove this clause once the bug in PortAudio has been fixed. |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1469 else if (recorder->get_sampleFormat () == bits_to_format (16) |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1470 && recorder->get_nbits () == 8) |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1471 { |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1472 static double scale_factor = std::pow (2.0, 7) - 1.0; |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1473 |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1474 const int16_t *input16 = static_cast<const int16_t *> (input); |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1475 |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1476 for (unsigned long i = 0; i < frames; i++) |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1477 { |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1478 float sample_l = (input16[i*channels] >> 8) / scale_factor; |
27884 | 1479 float sample_r = (input16[i*channels + (channels - 1)] >> 8) |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1480 / scale_factor; |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1481 |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1482 recorder->append (sample_l, sample_r); |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1483 } |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1484 } |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1485 else if (recorder->get_sampleFormat () == bits_to_format (16)) |
19510 | 1486 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
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:
19557
diff
changeset
|
1488 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1489 const int16_t *input16 = static_cast<const int16_t *> (input); |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1490 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
1491 for (unsigned long i = 0; i < frames; i++) |
19510 | 1492 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
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:
19557
diff
changeset
|
1494 float sample_r = input16[i*channels + (channels - 1)] / scale_factor; |
19557
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19556
diff
changeset
|
1495 |
19510 | 1496 recorder->append (sample_l, sample_r); |
1497 } | |
1498 } | |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1499 else if (recorder->get_sampleFormat () == bits_to_format (24)) |
19510 | 1500 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
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:
19557
diff
changeset
|
1502 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1503 // FIXME: Is there a better way? |
27884 | 1504 // Could use union of int32_t, uint8_t[3:0]? (12/31/19) |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1505 const uint8_t *input24 = static_cast<const uint8_t *> (input); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1506 |
26218
29387b9ccfbb
Fix audiodevinfo recording when using 24-bit samples (bug #52228).
Rik <rik@octave.org>
parents:
26148
diff
changeset
|
1507 int32_t sample_l32, sample_r32; |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1508 |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1509 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:
19557
diff
changeset
|
1510 uint8_t *sample_r = reinterpret_cast<uint8_t *> (&sample_r32); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1511 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
1512 for (unsigned long i = 0; i < frames; i++) |
19510 | 1513 { |
26218
29387b9ccfbb
Fix audiodevinfo recording when using 24-bit samples (bug #52228).
Rik <rik@octave.org>
parents:
26148
diff
changeset
|
1514 sample_l32 = sample_r32 = 0; |
19510 | 1515 for (int j = 0; j < 3; j++) |
1516 { | |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1517 sample_l[j] = input24[i*channels*3 + j]; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1518 sample_r[j] = input24[i*channels*3 + (channels - 1)*3 + j]; |
19510 | 1519 } |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1520 |
19510 | 1521 if (sample_l32 & 0x00800000) |
1522 sample_l32 |= 0xff000000; | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1523 |
19510 | 1524 if (sample_r32 & 0x00800000) |
1525 sample_r32 |= 0xff000000; | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1526 |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1527 recorder->append (sample_l32 / scale_factor, |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1528 sample_r32 / scale_factor); |
19510 | 1529 } |
1530 } | |
1531 | |
19673
cdf9c83b0e79
Correctly check for end of audio recording
Mike Miller <mtmiller@ieee.org>
parents:
19672
diff
changeset
|
1532 if (recorder->get_sample_number () >= recorder->get_end_sample ()) |
19510 | 1533 return paComplete; |
1534 | |
1535 return paContinue; | |
1536 } | |
1537 | |
1538 audiorecorder::audiorecorder (void) | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1539 : octave_callback_function (nullptr), |
27883
8675d88a0e26
Change audiorecorder default settings to Matlab compatible values (bug #55530).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
27882
diff
changeset
|
1540 id (-1), fs (8000), nbits (8), channels (1), sample_number (0), |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1541 end_sample (-1), tag (""), y (), userdata (Matrix ()), |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1542 left (), right (), stream (nullptr), input_parameters (), type () |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1543 { } |
19510 | 1544 |
19580
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1545 audiorecorder::~audiorecorder (void) |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1546 { |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1547 if (isrecording ()) |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1548 { |
26148
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
1549 warning_with_id ("Octave:audio-interrupt", |
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
1550 "interrupting recording audiorecorder"); |
19580
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1551 stop (); |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1552 } |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1553 } |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1554 |
19510 | 1555 void |
21333
c4690d9ff566
avoid warnings about overloading virtual functions from a base class
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
1556 audiorecorder::print (std::ostream& os, bool pr_as_read_syntax) |
19510 | 1557 { |
1558 print_raw (os, pr_as_read_syntax); | |
1559 newline (os); | |
1560 } | |
1561 | |
1562 void | |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1563 audiorecorder::print_raw (std::ostream& os, bool) const |
19510 | 1564 { |
1565 os << 0; | |
1566 } | |
1567 | |
1568 void | |
1569 audiorecorder::init (void) | |
1570 { | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1571 if (Pa_Initialize () != paNoError) |
27884 | 1572 error ("audiorecorder: initialization error"); |
19510 | 1573 |
19566
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19565
diff
changeset
|
1574 if (Pa_GetDeviceCount () < 1) |
27884 | 1575 error ("audiorecorder: no audio devices found or available"); |
19510 | 1576 |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1577 int device = get_id (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1578 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1579 if (device == -1) |
19510 | 1580 device = Pa_GetDefaultInputDevice (); |
1581 | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1582 input_parameters.device = device; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1583 input_parameters.channelCount = get_channels (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1584 input_parameters.sampleFormat = bits_to_format (get_nbits ()); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1585 |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1586 // FIXME: This is a workaround for a bug in PortAudio affecting 8-Bit |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1587 // recording (see Octave bug #44305). |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1588 // Remove this clause once the bug in PortAudio has been fixed. |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1589 if (get_nbits () == 8) |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1590 input_parameters.sampleFormat = bits_to_format (16); |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1591 |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1592 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1593 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1594 if (! device_info) |
26148
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
1595 warning_with_id ("Octave:invalid-default-audio-device", |
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
1596 "invalid default audio device ID = %d", device); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1597 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1598 input_parameters.suggestedLatency |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
1599 = (device_info ? device_info->defaultHighInputLatency : -1); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1600 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1601 input_parameters.hostApiSpecificStreamInfo = nullptr; |
19510 | 1602 } |
1603 | |
1604 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1605 audiorecorder::set_fs (int fs_arg) |
19510 | 1606 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1607 fs = fs_arg; |
19510 | 1608 } |
1609 | |
1610 int | |
1611 audiorecorder::get_fs (void) | |
1612 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1613 return fs; |
19510 | 1614 } |
1615 | |
1616 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1617 audiorecorder::set_nbits (int nbits_arg) |
19510 | 1618 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1619 nbits = nbits_arg; |
19510 | 1620 } |
1621 | |
1622 int | |
1623 audiorecorder::get_nbits (void) | |
1624 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1625 return nbits; |
19510 | 1626 } |
1627 | |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1628 PaSampleFormat |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1629 audiorecorder::get_sampleFormat (void) |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1630 { |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1631 return input_parameters.sampleFormat; |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1632 } |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1633 |
19510 | 1634 void |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1635 audiorecorder::set_id (int id_arg) |
19510 | 1636 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1637 id = id_arg; |
19510 | 1638 } |
1639 | |
1640 int | |
1641 audiorecorder::get_id (void) | |
1642 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1643 return id; |
19510 | 1644 } |
1645 | |
1646 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1647 audiorecorder::set_channels (int channels_arg) |
19510 | 1648 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1649 assert (channels_arg == 1 || channels_arg == 2); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1650 channels = channels_arg; |
19510 | 1651 } |
1652 | |
1653 int | |
1654 audiorecorder::get_channels (void) | |
1655 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1656 return channels; |
19510 | 1657 } |
1658 | |
1659 audio_type | |
1660 audiorecorder::get_type (void) | |
1661 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1662 return type; |
19510 | 1663 } |
1664 | |
1665 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1666 audiorecorder::set_sample_number (unsigned int sample_number_arg) |
19510 | 1667 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1668 sample_number = sample_number_arg; |
19510 | 1669 } |
1670 | |
1671 unsigned int | |
1672 audiorecorder::get_sample_number (void) | |
1673 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1674 return sample_number; |
19510 | 1675 } |
1676 | |
1677 unsigned int | |
1678 audiorecorder::get_total_samples (void) | |
1679 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1680 return left.size (); |
19510 | 1681 } |
1682 | |
1683 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1684 audiorecorder::set_end_sample (unsigned int end_sample_arg) |
19510 | 1685 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1686 end_sample = end_sample_arg; |
19510 | 1687 } |
1688 | |
1689 unsigned int | |
1690 audiorecorder::get_end_sample (void) | |
1691 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1692 return end_sample; |
19510 | 1693 } |
1694 | |
1695 void | |
1696 audiorecorder::reset_end_sample (void) | |
1697 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1698 set_end_sample (left.size ()); |
19510 | 1699 } |
1700 | |
1701 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1702 audiorecorder::set_tag (const charMatrix& tag_arg) |
19510 | 1703 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1704 tag = tag_arg; |
19510 | 1705 } |
1706 | |
1707 charMatrix | |
1708 audiorecorder::get_tag (void) | |
1709 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1710 return tag; |
19510 | 1711 } |
1712 | |
1713 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1714 audiorecorder::set_userdata (const octave_value& userdata_arg) |
19510 | 1715 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1716 userdata = userdata_arg; |
19510 | 1717 } |
1718 | |
1719 octave_value | |
1720 audiorecorder::get_userdata (void) | |
1721 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1722 return userdata; |
19510 | 1723 } |
1724 | |
1725 octave_value | |
1726 audiorecorder::getaudiodata (void) | |
1727 { | |
26219
471513a016ec
Fix audiorecorder() crash in getaudiodata() (bug #50674)
Lars Kindermann
parents:
26218
diff
changeset
|
1728 // Must get size before entering loop as the value of left.size() may change |
471513a016ec
Fix audiorecorder() crash in getaudiodata() (bug #50674)
Lars Kindermann
parents:
26218
diff
changeset
|
1729 // during loop with simultaneous recording and playback (bug #50674). |
471513a016ec
Fix audiorecorder() crash in getaudiodata() (bug #50674)
Lars Kindermann
parents:
26218
diff
changeset
|
1730 unsigned int ls = left.size (); |
471513a016ec
Fix audiorecorder() crash in getaudiodata() (bug #50674)
Lars Kindermann
parents:
26218
diff
changeset
|
1731 Matrix audio (2, ls); |
471513a016ec
Fix audiorecorder() crash in getaudiodata() (bug #50674)
Lars Kindermann
parents:
26218
diff
changeset
|
1732 |
471513a016ec
Fix audiorecorder() crash in getaudiodata() (bug #50674)
Lars Kindermann
parents:
26218
diff
changeset
|
1733 for (unsigned int i = 0; i < ls; i++) |
19510 | 1734 { |
19583
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1735 audio(0,i) = left[i]; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1736 audio(1,i) = right[i]; |
19510 | 1737 } |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1738 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1739 return audio; |
19510 | 1740 } |
1741 | |
1742 audioplayer * | |
1743 audiorecorder::getplayer (void) | |
1744 { | |
1745 audioplayer *player = new audioplayer (); | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1746 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1747 player->set_y (getaudiodata ()); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1748 player->set_fs (get_fs ()); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1749 player->set_nbits (get_nbits ()); |
19510 | 1750 player->init (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1751 |
19510 | 1752 return player; |
1753 } | |
1754 | |
1755 bool | |
1756 audiorecorder::isrecording (void) | |
1757 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1758 if (get_stream () == nullptr) |
19510 | 1759 return false; |
1760 | |
1761 PaError err; | |
1762 err = Pa_IsStreamActive (stream); | |
19515
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19514
diff
changeset
|
1763 if (err != 0 && err != 1) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1764 error ("audiorecorder: checking stream activity status failed"); |
19510 | 1765 |
1766 return (err == 1); | |
1767 } | |
1768 | |
1769 void | |
1770 audiorecorder::record (void) | |
1771 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1772 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1773 stop (); |
19510 | 1774 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1775 left.clear (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1776 right.clear (); |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1777 |
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1778 const unsigned int buffer_size = get_fs () / 20; |
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1779 |
19510 | 1780 PaError err; |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1781 if (octave_callback_function != nullptr) |
19510 | 1782 { |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1783 err = Pa_OpenStream (&stream, &(input_parameters), nullptr, |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1784 get_fs (), buffer_size, paClipOff, |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1785 octave_record_callback, this); |
19510 | 1786 } |
1787 else | |
1788 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1789 err = Pa_OpenStream (&stream, &(input_parameters), nullptr, |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1790 get_fs (), buffer_size, paClipOff, |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1791 portaudio_record_callback, this); |
19510 | 1792 } |
1793 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1794 error ("audiorecorder: unable to open audio recording stream"); |
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1795 |
19510 | 1796 err = Pa_StartStream (stream); |
1797 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1798 error ("audiorecorder: unable to start audio recording stream"); |
19510 | 1799 } |
1800 | |
1801 void | |
1802 audiorecorder::recordblocking (float seconds) | |
1803 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1804 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1805 stop (); |
19510 | 1806 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1807 left.clear (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1808 right.clear (); |
19510 | 1809 |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1810 const unsigned int buffer_size = get_fs () / 20; |
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1811 OCTAVE_LOCAL_BUFFER (uint8_t, buffer, buffer_size * 2 * 3); |
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1812 |
19510 | 1813 PaError err; |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1814 err = Pa_OpenStream (&stream, &(input_parameters), nullptr, |
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1815 get_fs (), buffer_size, paClipOff, nullptr, this); |
19510 | 1816 if (err != paNoError) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1817 error ("audiorecorder: unable to open audio recording stream"); |
19510 | 1818 |
1819 err = Pa_StartStream (stream); | |
1820 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1821 error ("audiorecorder: unable to start audio recording stream"); |
19510 | 1822 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1823 unsigned int frames = seconds * get_fs (); |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1824 |
28851
1ac5a76ae91d
use [=] capture default specification where possible
John W. Eaton <jwe@octave.org>
parents:
28850
diff
changeset
|
1825 octave::unwind_action stop_audiorecorder ([=] () { stop (); }); |
19674
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1826 |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1827 for (unsigned int i = 0; i < frames; i += buffer_size) |
19510 | 1828 { |
22860
0b1e25cc4457
eliminate use of OCTAVE_QUIT macro in C++ sources
John W. Eaton <jwe@octave.org>
parents:
22772
diff
changeset
|
1829 octave_quit (); |
0b1e25cc4457
eliminate use of OCTAVE_QUIT macro in C++ sources
John W. Eaton <jwe@octave.org>
parents:
22772
diff
changeset
|
1830 |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1831 Pa_ReadStream (get_stream (), buffer, buffer_size); |
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1832 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1833 if (octave_callback_function != nullptr) |
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1834 octave_record_callback (buffer, nullptr, buffer_size, nullptr, 0, this); |
19510 | 1835 else |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1836 portaudio_record_callback (buffer, nullptr, buffer_size, nullptr, 0, this); |
19510 | 1837 } |
1838 } | |
1839 | |
1840 void | |
1841 audiorecorder::pause (void) | |
1842 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1843 if (get_stream () == nullptr) |
19510 | 1844 return; |
1845 | |
1846 PaError err; | |
1847 err = Pa_StopStream (stream); | |
1848 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1849 error ("audiorecorder: unable to stop audio recording stream"); |
19510 | 1850 } |
1851 | |
1852 void | |
1853 audiorecorder::resume (void) | |
1854 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1855 if (get_stream () == nullptr) |
19510 | 1856 return; |
1857 | |
1858 PaError err; | |
1859 err = Pa_StartStream (stream); | |
1860 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1861 error ("audiorecorder: unable to start audio recording stream"); |
19510 | 1862 } |
1863 | |
1864 void | |
1865 audiorecorder::stop (void) | |
1866 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1867 if (get_stream () == nullptr) |
19510 | 1868 return; |
1869 | |
1870 PaError err; | |
19973 | 1871 if (! Pa_IsStreamStopped (get_stream ())) |
19510 | 1872 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1873 err = Pa_AbortStream (get_stream ()); |
19510 | 1874 if (err != paNoError) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1875 error ("audioplayer: unable to stop audio playback stream"); |
19510 | 1876 } |
1877 | |
1878 err = Pa_CloseStream (stream); | |
1879 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1880 error ("audiorecorder: unable to close audio recording stream"); |
19510 | 1881 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1882 set_sample_number (0); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1883 reset_end_sample (); |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1884 stream = nullptr; |
19510 | 1885 } |
1886 | |
1887 void | |
1888 audiorecorder::append (float sample_l, float sample_r) | |
1889 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1890 left.push_back (sample_l); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1891 right.push_back (sample_r); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1892 set_sample_number (get_sample_number () + 1); |
19510 | 1893 } |
1894 | |
1895 PaStream * | |
1896 audiorecorder::get_stream (void) | |
1897 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1898 return stream; |
19510 | 1899 } |
1900 | |
19526
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
1901 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
1902 |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1903 DEFMETHOD_DLD (__recorder_audiorecorder__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1904 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
1905 @deftypefn {} {@var{recorder} =} __recorder_audiorecorder__ (@var{fs}, @var{nbits}, @var{channels}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
1906 @deftypefnx {} {@var{recorder} =} __recorder_audiorecorder__ (@var{fs}, @var{nbits}, @var{channels}, @var{id}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
1907 @deftypefnx {} {@var{recorder} =} __recorder_audiorecorder__ (@var{fcn}, @dots{}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
1908 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
1909 @end deftypefn */) |
19510 | 1910 { |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1911 octave_value retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1912 |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1913 #if defined (HAVE_PORTAUDIO) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1914 |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1915 interp.mlock (); |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1916 |
19510 | 1917 int nargin = args.length (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1918 |
23449
c763214a8260
maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents:
23446
diff
changeset
|
1919 audiorecorder *recorder = new audiorecorder (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1920 |
19510 | 1921 if (nargin > 0) |
1922 { | |
19574
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19573
diff
changeset
|
1923 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:
19573
diff
changeset
|
1924 || args(0).is_inline_function ()); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1925 |
19510 | 1926 if (is_function) |
25910
b4bf418dfc74
Correct audioplayer message strings (bug #54748).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
25054
diff
changeset
|
1927 error ("audiorecorder: callbacks not yet implemented"); |
19510 | 1928 } |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1929 |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1930 if (nargin >= 3) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1931 { |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1932 recorder->set_fs (args(0).int_value ()); |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1933 recorder->set_nbits (args(1).int_value ()); |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1934 recorder->set_channels (args(2).int_value ()); |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1935 } |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1936 |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1937 if (nargin == 4) |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1938 { |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1939 recorder->set_id (args(3).int_value ()); |
19510 | 1940 } |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1941 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1942 recorder->init (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1943 retval = recorder; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1944 |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1945 #else |
28306
21970ad14781
Suppress unnecessary warning messages when configure --without-fltk, --without-portaudio (bug #58385).
Rik <rik@octave.org>
parents:
28162
diff
changeset
|
1946 octave_unused_parameter (interp); |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1947 octave_unused_parameter (args); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1948 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1949 err_disabled_feature ("__recorder_audiorecorder__", |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1950 "audio playback and recording through PortAudio"); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1951 #endif |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1952 |
19510 | 1953 return retval; |
1954 } | |
1955 | |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21691
diff
changeset
|
1956 #if defined (HAVE_PORTAUDIO) |
19526
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
1957 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1958 static audiorecorder * |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1959 get_recorder (octave::interpreter& interp, const octave_value& ov) |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1960 { |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1961 interp.mlock (); |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1962 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1963 const octave_base_value& rep = ov.get_rep (); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1964 |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1965 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:
19512
diff
changeset
|
1966 |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1967 audiorecorder *rec = dynamic_cast<audiorecorder *> (ncrep); |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1968 if (! rec) |
27884 | 1969 error ("audiodevinfo.cc (get_recorder): dynamic_cast to audiorecorder failed"); |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1970 |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1971 return rec; |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1972 } |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1973 |
19526
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
1974 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
1975 |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1976 DEFMETHOD_DLD (__recorder_getaudiodata__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1977 doc: /* -*- texinfo -*- |
24998
7feafd20703f
doc: fix doc string declarations (bug #53416)
Mike Miller <mtmiller@octave.org>
parents:
24534
diff
changeset
|
1978 @deftypefn {} {@var{data} =} __recorder_getaudiodata__ (@var{recorder}) |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
1979 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
1980 @end deftypefn */) |
19510 | 1981 { |
1982 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1983 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1984 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1985 retval = get_recorder (interp, args(0))->getaudiodata (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1986 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1987 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
1988 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
1989 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
1990 err_disabled_feature ("__recorder_getaudiodata__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
1991 "audio playback and recording through PortAudio"); |
19510 | 1992 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1993 |
19510 | 1994 return retval; |
1995 } | |
1996 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1997 DEFMETHOD_DLD (__recorder_get_channels__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1998 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
1999 @deftypefn {} {@var{n} =} __recorder_get_channels__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2000 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2001 @end deftypefn */) |
19510 | 2002 { |
2003 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2004 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2005 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2006 retval = get_recorder (interp, args(0))->get_channels (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2007 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2008 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2009 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2010 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2011 err_disabled_feature ("__recorder_get_channels__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2012 "audio playback and recording through PortAudio"); |
19510 | 2013 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2014 |
19510 | 2015 return retval; |
2016 } | |
2017 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2018 DEFMETHOD_DLD (__recorder_get_fs__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2019 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2020 @deftypefn {} {@var{fs} =} __recorder_get_fs__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2021 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2022 @end deftypefn */) |
19510 | 2023 { |
2024 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2025 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2026 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2027 retval = get_recorder (interp, args(0))->get_fs (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2028 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2029 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2030 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2031 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2032 err_disabled_feature ("__recorder_get_fs__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2033 "audio playback and recording through PortAudio"); |
19510 | 2034 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2035 |
19510 | 2036 return retval; |
2037 } | |
2038 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2039 DEFMETHOD_DLD (__recorder_get_id__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2040 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2041 @deftypefn {} {@var{id} =} __recorder_get_id__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2042 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2043 @end deftypefn */) |
19510 | 2044 { |
2045 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2046 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2047 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2048 retval = get_recorder (interp, args(0))->get_id (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2049 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2050 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2051 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2052 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2053 err_disabled_feature ("__recorder_get_id__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2054 "audio playback and recording through PortAudio"); |
19510 | 2055 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2056 |
19510 | 2057 return retval; |
2058 } | |
2059 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2060 DEFMETHOD_DLD (__recorder_get_nbits__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2061 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2062 @deftypefn {} {@var{nbits} =} __recorder_get_nbits__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2063 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2064 @end deftypefn */) |
19510 | 2065 { |
2066 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2067 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2068 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2069 retval = get_recorder (interp, args(0))->get_nbits (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2070 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2071 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2072 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2073 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2074 err_disabled_feature ("__recorder_get_nbits__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2075 "audio playback and recording through PortAudio"); |
19510 | 2076 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2077 |
19510 | 2078 return retval; |
2079 } | |
2080 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2081 DEFMETHOD_DLD (__recorder_get_sample_number__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2082 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2083 @deftypefn {} {@var{n} =} __recorder_get_sample_number__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2084 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2085 @end deftypefn */) |
19510 | 2086 { |
2087 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2088 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2089 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2090 retval = get_recorder (interp, args(0))->get_sample_number (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2091 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2092 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2093 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2094 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2095 err_disabled_feature ("__recorder_get_sample_number__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2096 "audio playback and recording through PortAudio"); |
19510 | 2097 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2098 |
19510 | 2099 return retval; |
2100 } | |
2101 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2102 DEFMETHOD_DLD (__recorder_get_tag__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2103 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2104 @deftypefn {} {@var{tag} =} __recorder_get_tag__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2105 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2106 @end deftypefn */) |
19510 | 2107 { |
2108 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2109 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2110 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2111 retval = get_recorder (interp, args(0))->get_tag (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2112 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2113 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2114 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2115 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2116 err_disabled_feature ("__recorder_get_tag__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2117 "audio playback and recording through PortAudio"); |
19510 | 2118 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2119 |
19510 | 2120 return retval; |
2121 } | |
2122 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2123 DEFMETHOD_DLD (__recorder_get_total_samples__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2124 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2125 @deftypefn {} {@var{n} =} __recorder_get_total_samples__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2126 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2127 @end deftypefn */) |
19510 | 2128 { |
2129 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2130 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2131 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2132 retval = get_recorder (interp, args(0))->get_total_samples (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2133 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2134 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2135 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2136 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2137 err_disabled_feature ("__recorder_get_total_samples__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2138 "audio playback and recording through PortAudio"); |
19510 | 2139 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2140 |
19510 | 2141 return retval; |
2142 } | |
2143 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2144 DEFMETHOD_DLD (__recorder_get_userdata__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2145 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2146 @deftypefn {} {@var{data} =} __recorder_get_userdata__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2147 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2148 @end deftypefn */) |
19510 | 2149 { |
2150 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2151 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2152 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2153 retval = get_recorder (interp, args(0))->get_userdata (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2154 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2155 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2156 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2157 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2158 err_disabled_feature ("__recorder_get_userdata__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2159 "audio playback and recording through PortAudio"); |
19510 | 2160 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2161 |
19510 | 2162 return retval; |
2163 } | |
2164 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2165 DEFMETHOD_DLD (__recorder_isrecording__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2166 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2167 @deftypefn {} {} __recorder_isrecording__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2168 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2169 @end deftypefn */) |
19510 | 2170 { |
2171 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2172 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2173 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2174 retval = get_recorder (interp, args(0))->isrecording (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2175 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2176 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2177 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2178 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2179 err_disabled_feature ("__recorder_isrecording__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2180 "audio playback and recording through PortAudio"); |
19510 | 2181 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2182 |
19510 | 2183 return retval; |
2184 } | |
2185 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2186 DEFMETHOD_DLD (__recorder_pause__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2187 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2188 @deftypefn {} {} __recorder_pause__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2189 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2190 @end deftypefn */) |
19510 | 2191 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2192 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2193 get_recorder (interp, args(0))->pause (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2194 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2195 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2196 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2197 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2198 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2199 err_disabled_feature ("__recorder_pause__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2200 "audio playback and recording through PortAudio"); |
19510 | 2201 #endif |
2202 } | |
2203 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2204 DEFMETHOD_DLD (__recorder_recordblocking__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2205 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2206 @deftypefn {} {} __recorder_recordblocking__ (@var{recorder}, @var{seconds}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2207 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2208 @end deftypefn */) |
19510 | 2209 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2210 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2211 float seconds = args(1).float_value (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2212 get_recorder (interp, args(0))->recordblocking (seconds); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2213 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2214 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2215 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2216 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2217 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2218 err_disabled_feature ("__recorder_recordblocking__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2219 "audio playback and recording through PortAudio"); |
19510 | 2220 #endif |
2221 } | |
2222 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2223 DEFMETHOD_DLD (__recorder_record__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2224 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2225 @deftypefn {} {} __recorder_record__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2226 @deftypefnx {} {} __recorder_record__ (@var{recorder}, @var{seconds}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2227 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2228 @end deftypefn */) |
19510 | 2229 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2230 #if defined (HAVE_PORTAUDIO) |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2231 audiorecorder *recorder = get_recorder (interp, args(0)); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2232 |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2233 if (args.length () == 2) |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2234 recorder->set_end_sample (args(1).int_value () * recorder->get_fs ()); |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2235 |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2236 recorder->record (); |
21125
8f76684324b5
maint: change "return octave_value ()" to "return ovl ()".
Rik <rik@octave.org>
parents:
21103
diff
changeset
|
2237 return ovl (); |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2238 #else |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2239 octave_unused_parameter (interp); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2240 octave_unused_parameter (args); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2241 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2242 err_disabled_feature ("__recorder_record__", |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2243 "audio playback and recording through PortAudio"); |
19510 | 2244 #endif |
2245 } | |
2246 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2247 DEFMETHOD_DLD (__recorder_resume__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2248 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2249 @deftypefn {} {} __recorder_resume__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2250 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2251 @end deftypefn */) |
19510 | 2252 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2253 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2254 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2255 get_recorder (interp, args(0))->resume (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2256 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2257 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2258 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2259 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2260 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2261 err_disabled_feature ("__recorder_resume__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2262 "audio playback and recording through PortAudio"); |
19510 | 2263 #endif |
2264 } | |
2265 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2266 DEFMETHOD_DLD (__recorder_set_fs__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2267 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2268 @deftypefn {} {} __recorder_set_fs__ (@var{recorder}, @var{fs}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2269 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2270 @end deftypefn */) |
19510 | 2271 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2272 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2273 if (args.length () == 2) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2274 get_recorder (interp, args(0))->set_fs (args(1).int_value ()); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2275 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2276 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2277 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2278 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2279 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2280 err_disabled_feature ("__recorder_set_fs__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2281 "audio playback and recording through PortAudio"); |
19510 | 2282 #endif |
2283 } | |
2284 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2285 DEFMETHOD_DLD (__recorder_set_tag__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2286 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2287 @deftypefn {} {} __recorder_set_tag__ (@var{recorder}, @var{tag}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2288 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2289 @end deftypefn */) |
19510 | 2290 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2291 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2292 if (args.length () == 2) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2293 get_recorder (interp, args(0))->set_tag (args(1).char_matrix_value ()); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2294 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2295 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2296 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2297 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2298 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2299 err_disabled_feature ("__recorder_set_tag__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2300 "audio playback and recording through PortAudio"); |
19510 | 2301 #endif |
2302 } | |
2303 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2304 DEFMETHOD_DLD (__recorder_set_userdata__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2305 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2306 @deftypefn {} {} __recorder_set_userdata__ (@var{recorder}, @var{data}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2307 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2308 @end deftypefn */) |
19510 | 2309 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2310 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2311 if (args.length () == 2) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2312 get_recorder (interp, args(0))->set_userdata (args(1)); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2313 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2314 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2315 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2316 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2317 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2318 err_disabled_feature ("__recorder_set_userdata__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2319 "audio playback and recording through PortAudio"); |
19510 | 2320 #endif |
2321 } | |
2322 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2323 DEFMETHOD_DLD (__recorder_stop__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2324 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2325 @deftypefn {} {} __recorder_stop__ (@var{recorder}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2326 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2327 @end deftypefn */) |
19510 | 2328 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2329 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2330 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2331 get_recorder (interp, args(0))->stop (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2332 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2333 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2334 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2335 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2336 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2337 err_disabled_feature ("__recorder_stop__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2338 "audio playback and recording through PortAudio"); |
19510 | 2339 #endif |
2340 } | |
2341 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2342 DEFMETHOD_DLD (__player_audioplayer__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2343 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2344 @deftypefn {} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2345 @deftypefnx {} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs}, @var{nbits}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2346 @deftypefnx {} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs}, @var{nbits}, @var{id}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2347 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2348 @end deftypefn */) |
19510 | 2349 { |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2350 octave_value retval; |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2351 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2352 #if defined (HAVE_PORTAUDIO) |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2353 interp.mlock (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2354 |
23449
c763214a8260
maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents:
23446
diff
changeset
|
2355 audioplayer *recorder = new audioplayer (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2356 |
19574
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19573
diff
changeset
|
2357 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:
19573
diff
changeset
|
2358 || args(0).is_inline_function ()); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2359 |
19510 | 2360 if (is_function) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
2361 error ("audioplayer: callbacks not yet implemented"); |
21055
5e00ed38a58b
maint: Replace if/error/else paradigm with just if/error.
Rik <rik@octave.org>
parents:
20946
diff
changeset
|
2362 |
5e00ed38a58b
maint: Replace if/error/else paradigm with just if/error.
Rik <rik@octave.org>
parents:
20946
diff
changeset
|
2363 recorder->set_y (args(0)); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2364 recorder->set_fs (args(1).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2365 |
28162
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2366 if (args.length () > 2) |
19510 | 2367 { |
28162
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2368 // FIXME: Should be able to support 32-bit streams (bug #57939) |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2369 int nbits = args(2).int_value (); |
28387
28676df1deaf
Fix input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
28306
diff
changeset
|
2370 if (nbits != 8 && nbits != 16 && nbits != 24) |
28162
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2371 error ("audioplayer: NBITS must be 8, 16, or 24"); |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2372 |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2373 switch (args.length ()) |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2374 { |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2375 case 3: |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2376 recorder->set_nbits (nbits); |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2377 break; |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2378 |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2379 case 4: |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2380 recorder->set_nbits (nbits); |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2381 recorder->set_id (args(3).int_value ()); |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2382 break; |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2383 } |
19510 | 2384 } |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2385 |
19510 | 2386 if (is_function) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2387 recorder->init_fn (); |
19510 | 2388 else |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2389 recorder->init (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2390 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2391 retval = recorder; |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2392 #else |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2393 octave_unused_parameter (interp); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2394 octave_unused_parameter (args); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2395 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2396 err_disabled_feature ("__player_audioplayer__", |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2397 "audio playback and recording through PortAudio"); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2398 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2399 |
19510 | 2400 return retval; |
2401 } | |
2402 | |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21691
diff
changeset
|
2403 #if defined (HAVE_PORTAUDIO) |
19526
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
2404 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
2405 static audioplayer * |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2406 get_player (octave::interpreter& interp, const octave_value& ov) |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
2407 { |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2408 interp.mlock (); |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2409 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
2410 const octave_base_value& rep = ov.get_rep (); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
2411 |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
2412 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:
19512
diff
changeset
|
2413 |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2414 audioplayer *pl = dynamic_cast<audioplayer *> (ncrep); |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2415 if (! pl) |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2416 error ("audiodevinfo.cc get_player: dynamic_cast to audioplayer failed"); |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2417 |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2418 return pl; |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
2419 } |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
2420 |
19526
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
2421 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
2422 |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2423 DEFMETHOD_DLD (__player_get_channels__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2424 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2425 @deftypefn {} {@var{n} =} __player_get_channels__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2426 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2427 @end deftypefn */) |
19510 | 2428 { |
2429 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2430 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2431 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2432 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2433 retval = get_player (interp, args(0))->get_channels (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2434 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2435 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2436 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2437 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2438 err_disabled_feature ("__player_get_channels__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2439 "audio playback and recording through PortAudio"); |
19510 | 2440 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2441 |
19510 | 2442 return retval; |
2443 } | |
2444 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2445 DEFMETHOD_DLD (__player_get_fs__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2446 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2447 @deftypefn {} {@var{fs} =} __player_get_fs__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2448 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2449 @end deftypefn */) |
19510 | 2450 { |
2451 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2452 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2453 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2454 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2455 retval = get_player (interp, args(0))->get_fs (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2456 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2457 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2458 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2459 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2460 err_disabled_feature ("__player_get_fs__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2461 "audio playback and recording through PortAudio"); |
19510 | 2462 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2463 |
19510 | 2464 return retval; |
2465 } | |
2466 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2467 DEFMETHOD_DLD (__player_get_id__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2468 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2469 @deftypefn {} {@var{id} =} __player_get_id__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2470 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2471 @end deftypefn */) |
19510 | 2472 { |
2473 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2474 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2475 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2476 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2477 retval = get_player (interp, args(0))->get_id (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2478 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2479 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2480 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2481 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2482 err_disabled_feature ("__player_get_id__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2483 "audio playback and recording through PortAudio"); |
19510 | 2484 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2485 |
19510 | 2486 return retval; |
2487 } | |
2488 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2489 DEFMETHOD_DLD (__player_get_nbits__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2490 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2491 @deftypefn {} {@var{nbits} =} __player_get_nbits__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2492 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2493 @end deftypefn */) |
19510 | 2494 { |
2495 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2496 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2497 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2498 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2499 retval = get_player (interp, args(0))->get_nbits (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2500 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2501 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2502 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2503 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2504 err_disabled_feature ("__player_get_nbits__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2505 "audio playback and recording through PortAudio"); |
19510 | 2506 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2507 |
19510 | 2508 return retval; |
2509 } | |
2510 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2511 DEFMETHOD_DLD (__player_get_sample_number__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2512 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2513 @deftypefn {} {@var{n} =} __player_get_sample_number__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2514 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2515 @end deftypefn */) |
19510 | 2516 { |
2517 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2518 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2519 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2520 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2521 retval = get_player (interp, args(0))->get_sample_number (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2522 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2523 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2524 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2525 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2526 err_disabled_feature ("__player_get_sample_number__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2527 "audio playback and recording through PortAudio"); |
19510 | 2528 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2529 |
19510 | 2530 return retval; |
2531 } | |
2532 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2533 DEFMETHOD_DLD (__player_get_tag__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2534 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2535 @deftypefn {} {@var{tag} =} __player_get_tag__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2536 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2537 @end deftypefn */) |
19510 | 2538 { |
2539 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2540 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2541 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2542 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2543 retval = get_player (interp, args(0))->get_tag (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2544 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2545 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2546 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2547 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2548 err_disabled_feature ("__player_get_tag__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2549 "audio playback and recording through PortAudio"); |
19510 | 2550 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2551 |
19510 | 2552 return retval; |
2553 } | |
2554 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2555 DEFMETHOD_DLD (__player_get_total_samples__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2556 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2557 @deftypefn {} {@var{n} =} __player_get_total_samples__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2558 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2559 @end deftypefn */) |
19510 | 2560 { |
2561 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2562 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2563 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2564 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2565 retval = get_player (interp, args(0))->get_total_samples (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2566 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2567 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2568 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2569 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2570 err_disabled_feature ("__player_get_total_samples__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2571 "audio playback and recording through PortAudio"); |
19510 | 2572 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2573 |
19510 | 2574 return retval; |
2575 } | |
2576 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2577 DEFMETHOD_DLD (__player_get_userdata__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2578 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2579 @deftypefn {} {@var{data} =} __player_get_userdata__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2580 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2581 @end deftypefn */) |
19510 | 2582 { |
2583 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2584 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2585 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2586 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2587 retval = get_player (interp, args(0))->get_userdata (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2588 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2589 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2590 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2591 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2592 err_disabled_feature ("__player_get_userdata__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2593 "audio playback and recording through PortAudio"); |
19510 | 2594 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2595 |
19510 | 2596 return retval; |
2597 } | |
2598 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2599 DEFMETHOD_DLD (__player_isplaying__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2600 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2601 @deftypefn {} {} __player_isplaying__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2602 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2603 @end deftypefn */) |
19510 | 2604 { |
2605 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2606 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2607 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2608 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2609 retval = get_player (interp, args(0))->isplaying (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2610 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2611 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2612 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2613 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2614 err_disabled_feature ("__player_isplaying__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2615 "audio playback and recording through PortAudio"); |
19510 | 2616 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2617 |
19510 | 2618 return retval; |
2619 } | |
2620 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2621 DEFMETHOD_DLD (__player_pause__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2622 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2623 @deftypefn {} {} __player_pause__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2624 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2625 @end deftypefn */) |
19510 | 2626 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2627 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2628 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2629 get_player (interp, args(0))->pause (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2630 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2631 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2632 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2633 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2634 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2635 err_disabled_feature ("__player_pause__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2636 "audio playback and recording through PortAudio"); |
19510 | 2637 #endif |
2638 } | |
2639 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2640 DEFMETHOD_DLD (__player_playblocking__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2641 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2642 @deftypefn {} {} __player_playblocking__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2643 @deftypefnx {} {} __player_playblocking__ (@var{player}, @var{start}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2644 @deftypefnx {} {} __player_playblocking__ (@var{player}, [@var{start}, @var{end}]) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2645 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2646 @end deftypefn */) |
19510 | 2647 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2648 #if defined (HAVE_PORTAUDIO) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2649 |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2650 audioplayer *player = get_player (interp, args(0)); |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
2651 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
2652 if (args.length () == 1) |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2653 { |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2654 player->playblocking (); |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2655 } |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2656 else if (args.length () == 2) |
19510 | 2657 { |
2658 if (args(1).is_matrix_type ()) | |
2659 { | |
2660 RowVector range = args(1).row_vector_value (); | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2661 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2662 unsigned int start = range.elem (0) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2663 unsigned int end = range.elem (1) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2664 |
19515
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19514
diff
changeset
|
2665 if (start > player->get_total_samples () |
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19514
diff
changeset
|
2666 || start > end || end > player->get_total_samples ()) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
2667 error ("audioplayer: invalid range specified for playback"); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2668 |
19510 | 2669 player->set_sample_number (start); |
2670 player->set_end_sample (end); | |
2671 } | |
2672 else | |
2673 { | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2674 unsigned int start = args(1).int_value () - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2675 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
2676 if (start > player->get_total_samples ()) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
2677 error ("audioplayer: invalid range specified for playback"); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2678 |
19510 | 2679 player->set_sample_number (start); |
2680 } | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2681 |
19510 | 2682 player->playblocking (); |
2683 } | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2684 |
21125
8f76684324b5
maint: change "return octave_value ()" to "return ovl ()".
Rik <rik@octave.org>
parents:
21103
diff
changeset
|
2685 return ovl (); |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2686 #else |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2687 octave_unused_parameter (interp); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2688 octave_unused_parameter (args); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2689 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2690 err_disabled_feature ("__player_playblocking__", |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2691 "audio playback and recording through PortAudio"); |
19510 | 2692 #endif |
2693 } | |
2694 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2695 DEFMETHOD_DLD (__player_play__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2696 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2697 @deftypefn {} {} __player_play__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2698 @deftypefnx {} {} __player_play__ (@var{player}, @var{start}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2699 @deftypefnx {} {} __player_play__ (@var{player}, [@var{start}, @var{end}]) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2700 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2701 @end deftypefn */) |
19510 | 2702 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2703 #if defined (HAVE_PORTAUDIO) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2704 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2705 if (args.length () == 1) |
19510 | 2706 { |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2707 get_player (interp, args(0))->play (); |
19510 | 2708 } |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2709 else if (args.length () == 2) |
19510 | 2710 { |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2711 audioplayer *player = get_player (interp, args(0)); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2712 |
19510 | 2713 if (args(1).is_matrix_type ()) |
2714 { | |
2715 RowVector range = args(1).row_vector_value (); | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2716 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2717 unsigned int start = range.elem (0) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2718 unsigned int end = range.elem (1) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2719 |
19515
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19514
diff
changeset
|
2720 if (start > player->get_total_samples () |
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19514
diff
changeset
|
2721 || start > end || end > player->get_total_samples ()) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
2722 error ("audioplayer: invalid range specified for playback"); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2723 |
19510 | 2724 player->set_sample_number (start); |
2725 player->set_end_sample (end); | |
2726 } | |
2727 else | |
2728 { | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2729 unsigned int start = args(1).int_value () - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2730 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
2731 if (start > player->get_total_samples ()) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
2732 error ("audioplayer: invalid range specified for playback"); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2733 |
19510 | 2734 player->set_sample_number (start); |
2735 } | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2736 |
19510 | 2737 player->play (); |
2738 } | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2739 |
21125
8f76684324b5
maint: change "return octave_value ()" to "return ovl ()".
Rik <rik@octave.org>
parents:
21103
diff
changeset
|
2740 return ovl (); |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2741 #else |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2742 octave_unused_parameter (interp); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2743 octave_unused_parameter (args); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2744 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2745 err_disabled_feature ("__player_play__", |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2746 "audio playback and recording through PortAudio"); |
19510 | 2747 #endif |
2748 } | |
2749 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2750 DEFMETHOD_DLD (__player_resume__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2751 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2752 @deftypefn {} {} __player_resume__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2753 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2754 @end deftypefn */) |
19510 | 2755 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2756 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2757 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2758 get_player (interp, args(0))->resume (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2759 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2760 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2761 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2762 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2763 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2764 err_disabled_feature ("__player_resume__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2765 "audio playback and recording through PortAudio"); |
19510 | 2766 #endif |
2767 } | |
2768 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2769 DEFMETHOD_DLD (__player_set_fs__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2770 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2771 @deftypefn {} {} __player_set_fs__ (@var{player}, @var{fs}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2772 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2773 @end deftypefn */) |
19510 | 2774 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2775 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2776 if (args.length () == 2) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2777 get_player (interp, args(0))->set_fs (args(1).int_value ()); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2778 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2779 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2780 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2781 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2782 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2783 err_disabled_feature ("__player_set_fs__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2784 "audio playback and recording through PortAudio"); |
19510 | 2785 #endif |
2786 } | |
2787 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2788 DEFMETHOD_DLD (__player_set_tag__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2789 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2790 @deftypefn {} {} __player_set_tag__ (@var{player}, @var{tag}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2791 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2792 @end deftypefn */) |
19510 | 2793 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2794 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2795 if (args.length () == 2) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2796 get_player (interp, args(0))->set_tag (args(1).char_matrix_value ()); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2797 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2798 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2799 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2800 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2801 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2802 err_disabled_feature ("__player_set_tag__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2803 "audio playback and recording through PortAudio"); |
19510 | 2804 #endif |
2805 } | |
2806 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2807 DEFMETHOD_DLD (__player_set_userdata__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2808 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2809 @deftypefn {} {} __player_set_userdata__ (@var{player}, @var{data}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2810 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2811 @end deftypefn */) |
19510 | 2812 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2813 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2814 if (args.length () == 2) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2815 get_player (interp, args(0))->set_userdata (args(1)); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2816 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2817 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2818 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2819 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2820 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2821 err_disabled_feature ("__player_set_userdata__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2822 "audio playback and recording through PortAudio"); |
19510 | 2823 #endif |
2824 } | |
2825 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2826 DEFMETHOD_DLD (__player_stop__, interp, args, , |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2827 doc: /* -*- texinfo -*- |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2828 @deftypefn {} {} __player_stop__ (@var{player}) |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2829 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21912
diff
changeset
|
2830 @end deftypefn */) |
19510 | 2831 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2832 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2833 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2834 get_player (interp, args(0))->stop (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2835 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2836 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2837 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2838 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2839 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2840 err_disabled_feature ("__player_stop__", |
21103
5a83a422d8a7
Don't set 3rd argument to err_disabled_feature within core Octave.
Rik <rik@octave.org>
parents:
21100
diff
changeset
|
2841 "audio playback and recording through PortAudio"); |
19510 | 2842 #endif |
2843 } |