Mercurial > octave
annotate libinterp/dldfcn/audiodevinfo.cc @ 28387:28676df1deaf
Fix input validation for audioplayer (bug #57939).
* audiodevinfo.cc (F__player_audioplayer__): Replace '||' with '&&' in if
conditional checking for correct NBITS input.
* audioplayer.m: Add BIST tests for checking NBITS input.
author | Rik <rik@octave.org> |
---|---|
date | Sun, 31 May 2020 09:56:56 -0700 |
parents | 21970ad14781 |
children | 28d2511f2af2 |
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 |
27917
248b7b8f5a65
doc: Spellcheck documentation ahead of 6.1 release.
Rik <rik@octave.org>
parents:
27889
diff
changeset
|
92 @qcode{"Name"}, @qcode{@nospell{"DriverVersion"}} and @qcode{"ID"} describing |
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 | |
27917
248b7b8f5a65
doc: Spellcheck documentation ahead of 6.1 release.
Rik <rik@octave.org>
parents:
27889
diff
changeset
|
106 If the optional argument @qcode{@nospell{"DriverVersion"}} is given, return the |
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") |
7418b95cd15b
Implement 3-input calling form of audiodevinfo (bug #57512)
Rik <rik@octave.org>
parents:
27887
diff
changeset
|
307 error ("audiodevinfo: third argument must be \"DriverVersion\""); |
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 | |
19674
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
866 static void |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
867 safe_audioplayer_stop (audioplayer *player) |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
868 { |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
869 player->stop (); |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
870 } |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
871 |
19510 | 872 audioplayer::audioplayer (void) |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
873 : octave_callback_function (nullptr), |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
874 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
|
875 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
|
876 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
|
877 { } |
19510 | 878 |
19570
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
879 audioplayer::~audioplayer (void) |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
880 { |
19583
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
881 if (isplaying ()) |
19570
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
882 { |
26148
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
883 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
|
884 "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
|
885 stop (); |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
886 } |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
887 } |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19566
diff
changeset
|
888 |
19510 | 889 void |
21333
c4690d9ff566
avoid warnings about overloading virtual functions from a base class
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
890 audioplayer::print (std::ostream& os, bool pr_as_read_syntax) |
19510 | 891 { |
892 print_raw (os, pr_as_read_syntax); | |
893 newline (os); | |
894 } | |
895 | |
896 void | |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
897 audioplayer::print_raw (std::ostream& os, bool) const |
19510 | 898 { |
899 os << 0; | |
900 } | |
901 | |
902 void | |
903 audioplayer::init_fn (void) | |
904 { | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
905 if (Pa_Initialize () != paNoError) |
27884 | 906 error ("audioplayer: initialization error"); |
19510 | 907 |
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
|
908 if (Pa_GetDeviceCount () < 1) |
27884 | 909 error ("audioplayer: no audio devices found or available"); |
19510 | 910 |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
911 int device = get_id (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
912 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
913 if (device == -1) |
19510 | 914 device = Pa_GetDefaultOutputDevice (); |
915 | |
916 output_parameters.device = device; | |
917 output_parameters.channelCount = 2; | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
918 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
|
919 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
920 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
|
921 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
922 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
|
923 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
|
924 "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
|
925 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
926 output_parameters.suggestedLatency |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
927 = (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
|
928 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
929 output_parameters.hostApiSpecificStreamInfo = nullptr; |
19510 | 930 } |
931 | |
932 void | |
933 audioplayer::init (void) | |
934 { | |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
935 // FIXME: Both of these variables are unused. |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22860
diff
changeset
|
936 // 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
|
937 // |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
938 // int channels = y.rows (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
939 // RowVector *sound_l = get_left (); |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
940 |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
941 if (Pa_Initialize () != paNoError) |
27884 | 942 error ("audioplayer: initialization error"); |
19510 | 943 |
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
|
944 if (Pa_GetDeviceCount () < 1) |
27884 | 945 error ("audioplayer: no audio devices found or available"); |
19510 | 946 |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
947 int device = get_id (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
948 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
949 if (device == -1) |
19510 | 950 device = Pa_GetDefaultOutputDevice (); |
951 | |
952 output_parameters.device = device; | |
953 output_parameters.channelCount = 2; | |
954 | |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
955 if (type == TYPE_DOUBLE) |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
956 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
|
957 else if (type == TYPE_INT8) |
19510 | 958 output_parameters.sampleFormat = paInt8; |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
959 else if (type == TYPE_UINT8) |
19510 | 960 output_parameters.sampleFormat = paUInt8; |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
961 else if (type == TYPE_UINT16) |
19510 | 962 output_parameters.sampleFormat = paInt16; |
963 | |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
964 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
|
965 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
966 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
|
967 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
|
968 "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
|
969 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
970 output_parameters.suggestedLatency |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
971 = (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
|
972 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
973 output_parameters.hostApiSpecificStreamInfo = nullptr; |
19510 | 974 } |
975 | |
976 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
977 audioplayer::set_y (const octave_value& y_arg) |
19510 | 978 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
979 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
|
980 type = TYPE_INT8; |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
981 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
|
982 type = TYPE_UINT8; |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
983 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
|
984 type = TYPE_UINT16; |
19510 | 985 else |
19561
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19560
diff
changeset
|
986 type = TYPE_DOUBLE; |
19510 | 987 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
988 y = y_arg.matrix_value (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
989 |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
990 if (y.rows () > 2) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
991 y = y.transpose (); |
19510 | 992 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
993 channels = y.rows (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
994 left = y.row (0); |
19510 | 995 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
996 if (channels == 2) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
997 right = y.row (1); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
998 |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
999 reset_end_sample (); |
19510 | 1000 } |
1001 | |
1002 void | |
1003 audioplayer::set_y (octave_function *fn) | |
1004 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1005 octave_callback_function = fn; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1006 channels = 2; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1007 reset_end_sample (); |
19510 | 1008 } |
1009 | |
1010 Matrix& | |
1011 audioplayer::get_y (void) | |
1012 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1013 return y; |
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_left (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 left; |
19510 | 1020 } |
1021 | |
19547
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
1022 RowVector |
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
1023 audioplayer::get_right (void) const |
19510 | 1024 { |
19547
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
1025 return channels == 1 ? left : right; |
19510 | 1026 } |
1027 | |
1028 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1029 audioplayer::set_fs (int fs_arg) |
19510 | 1030 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1031 fs = fs_arg; |
19510 | 1032 } |
1033 | |
1034 int | |
1035 audioplayer::get_fs (void) | |
1036 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1037 return fs; |
19510 | 1038 } |
1039 | |
1040 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1041 audioplayer::set_nbits (int nbits_arg) |
19510 | 1042 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1043 nbits = nbits_arg; |
19510 | 1044 } |
1045 | |
1046 int | |
1047 audioplayer::get_nbits (void) | |
1048 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1049 return nbits; |
19510 | 1050 } |
1051 | |
1052 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1053 audioplayer::set_id (int id_arg) |
19510 | 1054 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1055 id = id_arg; |
19510 | 1056 } |
1057 | |
1058 int | |
1059 audioplayer::get_id (void) | |
1060 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1061 return id; |
19510 | 1062 } |
1063 | |
1064 int | |
1065 audioplayer::get_channels (void) | |
1066 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1067 return channels; |
19510 | 1068 } |
1069 | |
1070 audio_type | |
1071 audioplayer::get_type (void) | |
1072 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1073 return type; |
19510 | 1074 } |
1075 | |
1076 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1077 audioplayer::set_sample_number (unsigned int sample_number_arg) |
19510 | 1078 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1079 sample_number = sample_number_arg; |
19510 | 1080 } |
1081 | |
1082 unsigned int | |
1083 audioplayer::get_sample_number (void) | |
1084 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1085 return sample_number; |
19510 | 1086 } |
1087 | |
1088 unsigned int | |
1089 audioplayer::get_total_samples (void) | |
1090 { | |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
1091 return left.numel (); |
19510 | 1092 } |
1093 | |
1094 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1095 audioplayer::set_end_sample (unsigned int end_sample_arg) |
19510 | 1096 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1097 end_sample = end_sample_arg; |
19510 | 1098 } |
1099 | |
1100 unsigned int | |
1101 audioplayer::get_end_sample (void) | |
1102 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1103 return end_sample; |
19510 | 1104 } |
1105 | |
1106 void | |
1107 audioplayer::reset_end_sample (void) | |
1108 { | |
20232
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20163
diff
changeset
|
1109 set_end_sample (left.numel ()); |
19510 | 1110 } |
1111 | |
1112 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1113 audioplayer::set_tag (const charMatrix& tag_arg) |
19510 | 1114 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1115 tag = tag_arg; |
19510 | 1116 } |
1117 | |
1118 charMatrix | |
1119 audioplayer::get_tag (void) | |
1120 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1121 return tag; |
19510 | 1122 } |
1123 | |
1124 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1125 audioplayer::set_userdata (const octave_value& userdata_arg) |
19510 | 1126 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1127 userdata = userdata_arg; |
19510 | 1128 } |
1129 | |
1130 octave_value | |
1131 audioplayer::get_userdata (void) | |
1132 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1133 return userdata; |
19510 | 1134 } |
1135 | |
1136 void | |
1137 audioplayer::playblocking (void) | |
1138 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1139 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1140 stop (); |
19510 | 1141 |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1142 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
|
1143 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
|
1144 |
19510 | 1145 PaError err; |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1146 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
|
1147 buffer_size, paClipOff, nullptr, nullptr); |
19510 | 1148 if (err != paNoError) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1149 error ("audioplayer: unable to open audio playback stream"); |
19510 | 1150 |
1151 err = Pa_StartStream (stream); | |
1152 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
|
1153 error ("audioplayer: unable to start audio playback stream"); |
19510 | 1154 |
1155 unsigned int start, end; | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1156 start = get_sample_number (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1157 end = get_end_sample (); |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1158 |
21743
f4d7d0eb5b0c
use namespace for unwind_protect class
John W. Eaton <jwe@octave.org>
parents:
21739
diff
changeset
|
1159 octave::unwind_protect frame; |
19674
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1160 |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1161 frame.add_fcn (safe_audioplayer_stop, this); |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1162 |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1163 for (unsigned int i = start; i < end; i += buffer_size) |
19510 | 1164 { |
22860
0b1e25cc4457
eliminate use of OCTAVE_QUIT macro in C++ sources
John W. Eaton <jwe@octave.org>
parents:
22772
diff
changeset
|
1165 octave_quit (); |
0b1e25cc4457
eliminate use of OCTAVE_QUIT macro in C++ sources
John W. Eaton <jwe@octave.org>
parents:
22772
diff
changeset
|
1166 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1167 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
|
1168 octave_play_callback (nullptr, buffer, buffer_size, nullptr, 0, this); |
19510 | 1169 else |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1170 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
|
1171 |
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1172 err = Pa_WriteStream (stream, buffer, buffer_size); |
19510 | 1173 } |
1174 } | |
1175 | |
1176 void | |
1177 audioplayer::play (void) | |
1178 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1179 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1180 stop (); |
19510 | 1181 |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1182 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
|
1183 |
19510 | 1184 PaError err; |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1185 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
|
1186 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
|
1187 get_fs (), buffer_size, paClipOff, |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1188 octave_play_callback, this); |
19510 | 1189 else |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1190 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
|
1191 get_fs (), buffer_size, paClipOff, |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1192 portaudio_play_callback, this); |
19510 | 1193 |
1194 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1195 error ("audioplayer: failed to open audio playback stream"); |
19510 | 1196 |
1197 err = Pa_StartStream (stream); | |
1198 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1199 error ("audioplayer: failed to start audio playback stream"); |
19510 | 1200 } |
1201 | |
1202 void | |
1203 audioplayer::pause (void) | |
1204 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1205 if (get_stream () == nullptr) |
19510 | 1206 return; |
1207 | |
1208 PaError err; | |
1209 err = Pa_StopStream (stream); | |
1210 if (err != paNoError) | |
25910
b4bf418dfc74
Correct audioplayer message strings (bug #54748).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
25054
diff
changeset
|
1211 error ("audioplayer: failed to stop audio playback stream"); |
19510 | 1212 } |
1213 | |
1214 void | |
1215 audioplayer::resume (void) | |
1216 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1217 if (get_stream () == nullptr) |
19510 | 1218 return; |
1219 | |
1220 PaError err; | |
1221 err = Pa_StartStream (stream); | |
1222 if (err != paNoError) | |
25910
b4bf418dfc74
Correct audioplayer message strings (bug #54748).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
25054
diff
changeset
|
1223 error ("audioplayer: failed to start audio playback stream"); |
19510 | 1224 } |
1225 | |
1226 PaStream * | |
1227 audioplayer::get_stream (void) | |
1228 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1229 return stream; |
19510 | 1230 } |
1231 | |
1232 void | |
1233 audioplayer::stop (void) | |
1234 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1235 if (get_stream () == nullptr) |
19510 | 1236 return; |
1237 | |
1238 PaError err; | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1239 set_sample_number (0); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1240 reset_end_sample (); |
19973 | 1241 if (! Pa_IsStreamStopped (get_stream ())) |
19510 | 1242 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1243 err = Pa_AbortStream (get_stream ()); |
19510 | 1244 if (err != paNoError) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1245 error ("audioplayer: failed to stop audio playback stream"); |
19510 | 1246 } |
1247 | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1248 err = Pa_CloseStream (get_stream ()); |
19510 | 1249 if (err != paNoError) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1250 error ("audioplayer: failed to close audio playback stream"); |
19510 | 1251 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1252 stream = nullptr; |
19510 | 1253 } |
1254 | |
1255 bool | |
1256 audioplayer::isplaying (void) | |
1257 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1258 if (get_stream () == nullptr) |
19510 | 1259 return false; |
1260 | |
1261 PaError err; | |
1262 err = Pa_IsStreamActive (stream); | |
19515
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19514
diff
changeset
|
1263 if (err != 0 && err != 1) |
25910
b4bf418dfc74
Correct audioplayer message strings (bug #54748).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
25054
diff
changeset
|
1264 error ("audioplayer: checking stream activity status failed"); |
19510 | 1265 |
1266 return (err == 1); | |
1267 } | |
1268 | |
1269 class audiorecorder : public octave_base_value | |
1270 { | |
1271 public: | |
1272 audiorecorder (void); | |
19580
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1273 ~audiorecorder (void); |
19510 | 1274 |
1275 // Overloaded base functions | |
1276 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
|
1277 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
|
1278 void print (std::ostream& os, bool pr_as_read_syntax = false); |
19510 | 1279 void print_raw (std::ostream& os, bool pr_as_read_syntax) const; |
1280 | |
1281 // Properties | |
1282 bool is_constant (void) const { return true; } | |
1283 bool is_defined (void) const { return true; } | |
1284 bool print_as_scalar (void) const { return true; } | |
1285 | |
1286 void init (void); | |
1287 void set_fs (int fs); | |
1288 int get_fs (void); | |
1289 void set_nbits (int nbits); | |
1290 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
|
1291 PaSampleFormat get_sampleFormat (void); |
19510 | 1292 void set_id (int id); |
1293 int get_id (void); | |
1294 void set_channels (int channels); | |
1295 int get_channels (void); | |
1296 audio_type get_type (void); | |
1297 | |
1298 void set_sample_number (unsigned int sample); | |
1299 unsigned int get_sample_number (void); | |
1300 unsigned int get_total_samples (void); | |
1301 void set_end_sample (unsigned int sample); | |
1302 unsigned int get_end_sample (void); | |
1303 void reset_end_sample (void); | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1304 void set_tag (const charMatrix& tag); |
19510 | 1305 charMatrix get_tag (void); |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1306 void set_userdata (const octave_value& userdata); |
19510 | 1307 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
|
1308 PaStream * get_stream (void); |
19510 | 1309 |
1310 octave_value getaudiodata (void); | |
23446
cd4e1ee28716
maint: Use convention 'void * fcn ()' for functions which return pointers.
Rik <rik@octave.org>
parents:
23362
diff
changeset
|
1311 audioplayer * getplayer (void); |
19510 | 1312 bool isrecording (void); |
1313 audioplayer play (void); | |
1314 void record (void); | |
1315 void recordblocking (float seconds); | |
1316 void pause (void); | |
1317 void resume (void); | |
1318 void stop (void); | |
1319 void append (float sample_l, float sample_r); | |
1320 | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1321 octave_function *octave_callback_function; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1322 |
19510 | 1323 private: |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1324 int id; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1325 int fs; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1326 int nbits; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1327 int channels; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1328 unsigned int sample_number; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1329 unsigned int end_sample; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1330 charMatrix tag; |
19510 | 1331 Matrix y; |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1332 octave_value userdata; |
19510 | 1333 std::vector<float> left; |
1334 std::vector<float> right; | |
1335 PaStream *stream; | |
1336 PaStreamParameters input_parameters; | |
1337 audio_type type; | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1338 |
19510 | 1339 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA |
1340 }; | |
1341 | |
1342 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (audiorecorder, "audiorecorder", "audiorecorder"); | |
1343 | |
1344 static int | |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1345 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
|
1346 const PaStreamCallbackTimeInfo *, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1347 PaStreamCallbackFlags, void *data) |
19510 | 1348 { |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1349 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
|
1350 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1351 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
|
1352 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
|
1353 |
19510 | 1354 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
|
1355 |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1356 Matrix sound (frames, 2); |
19510 | 1357 sound.resize (frames, 2); |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1358 |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1359 if (recorder->get_sampleFormat () == bits_to_format (8)) |
19510 | 1360 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1361 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
|
1362 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1363 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
|
1364 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
1365 for (unsigned long i = 0; i < frames; i++) |
19510 | 1366 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1367 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
|
1368 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
|
1369 |
19583
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1370 sound(i,0) = sample_l; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1371 sound(i,1) = sample_r; |
19510 | 1372 } |
19571
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19570
diff
changeset
|
1373 } |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1374 // 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
|
1375 // 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
|
1376 // 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
|
1377 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
|
1378 && 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
|
1379 { |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1380 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
|
1381 |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1382 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
|
1383 |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1384 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
|
1385 { |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1386 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
|
1387 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
|
1388 / scale_factor; |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1389 |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1390 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
|
1391 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
|
1392 } |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1393 } |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1394 else if (recorder->get_sampleFormat () == bits_to_format (16)) |
19510 | 1395 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1396 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
|
1397 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1398 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
|
1399 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
1400 for (unsigned long i = 0; i < frames; i++) |
19510 | 1401 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1402 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
|
1403 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
|
1404 |
19583
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1405 sound(i,0) = sample_l; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1406 sound(i,1) = sample_r; |
19510 | 1407 } |
1408 } | |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1409 else if (recorder->get_sampleFormat () == bits_to_format (24)) |
19510 | 1410 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1411 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
|
1412 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1413 // FIXME: Is there a better way? |
27884 | 1414 // 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
|
1415 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
|
1416 |
26218
29387b9ccfbb
Fix audiodevinfo recording when using 24-bit samples (bug #52228).
Rik <rik@octave.org>
parents:
26148
diff
changeset
|
1417 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
|
1418 |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1419 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
|
1420 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
|
1421 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
1422 for (unsigned long i = 0; i < frames; i++) |
19510 | 1423 { |
26218
29387b9ccfbb
Fix audiodevinfo recording when using 24-bit samples (bug #52228).
Rik <rik@octave.org>
parents:
26148
diff
changeset
|
1424 sample_l32 = sample_r32 = 0; |
19510 | 1425 for (int j = 0; j < 3; j++) |
1426 { | |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1427 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
|
1428 sample_r[j] = input24[i*channels*3 + (channels - 1)*3 + j]; |
19510 | 1429 } |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1430 |
19510 | 1431 if (sample_l32 & 0x00800000) |
1432 sample_l32 |= 0xff000000; | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1433 |
19510 | 1434 if (sample_r32 & 0x00800000) |
1435 sample_r32 |= 0xff000000; | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1436 |
19583
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1437 sound(i,0) = sample_l32 / scale_factor; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1438 sound(i,1) = sample_r32 / scale_factor; |
19510 | 1439 } |
1440 } | |
1441 | |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1442 octave_value_list retval |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23024
diff
changeset
|
1443 = 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
|
1444 |
19510 | 1445 return retval(0).int_value (); |
1446 } | |
1447 | |
1448 static int | |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1449 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
|
1450 const PaStreamCallbackTimeInfo *, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1451 PaStreamCallbackFlags, void *data) |
19510 | 1452 { |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1453 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
|
1454 |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1455 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
|
1456 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
|
1457 |
19510 | 1458 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
|
1459 |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1460 if (recorder->get_sampleFormat () == bits_to_format (8)) |
19510 | 1461 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1462 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
|
1463 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1464 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
|
1465 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
1466 for (unsigned long i = 0; i < frames; i++) |
19510 | 1467 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1468 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
|
1469 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
|
1470 |
19510 | 1471 recorder->append (sample_l, sample_r); |
1472 } | |
1473 } | |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1474 // 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
|
1475 // 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
|
1476 // 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
|
1477 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
|
1478 && 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
|
1479 { |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1480 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
|
1481 |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1482 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
|
1483 |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1484 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
|
1485 { |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1486 float sample_l = (input16[i*channels] >> 8) / scale_factor; |
27884 | 1487 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
|
1488 / scale_factor; |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1489 |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1490 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
|
1491 } |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1492 } |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1493 else if (recorder->get_sampleFormat () == bits_to_format (16)) |
19510 | 1494 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1495 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
|
1496 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1497 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
|
1498 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
1499 for (unsigned long i = 0; i < frames; i++) |
19510 | 1500 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1501 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
|
1502 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
|
1503 |
19510 | 1504 recorder->append (sample_l, sample_r); |
1505 } | |
1506 } | |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1507 else if (recorder->get_sampleFormat () == bits_to_format (24)) |
19510 | 1508 { |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1509 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
|
1510 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1511 // FIXME: Is there a better way? |
27884 | 1512 // 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
|
1513 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
|
1514 |
26218
29387b9ccfbb
Fix audiodevinfo recording when using 24-bit samples (bug #52228).
Rik <rik@octave.org>
parents:
26148
diff
changeset
|
1515 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
|
1516 |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1517 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
|
1518 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
|
1519 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
1520 for (unsigned long i = 0; i < frames; i++) |
19510 | 1521 { |
26218
29387b9ccfbb
Fix audiodevinfo recording when using 24-bit samples (bug #52228).
Rik <rik@octave.org>
parents:
26148
diff
changeset
|
1522 sample_l32 = sample_r32 = 0; |
19510 | 1523 for (int j = 0; j < 3; j++) |
1524 { | |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1525 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
|
1526 sample_r[j] = input24[i*channels*3 + (channels - 1)*3 + j]; |
19510 | 1527 } |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1528 |
19510 | 1529 if (sample_l32 & 0x00800000) |
1530 sample_l32 |= 0xff000000; | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1531 |
19510 | 1532 if (sample_r32 & 0x00800000) |
1533 sample_r32 |= 0xff000000; | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1534 |
19558
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19557
diff
changeset
|
1535 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
|
1536 sample_r32 / scale_factor); |
19510 | 1537 } |
1538 } | |
1539 | |
19673
cdf9c83b0e79
Correctly check for end of audio recording
Mike Miller <mtmiller@ieee.org>
parents:
19672
diff
changeset
|
1540 if (recorder->get_sample_number () >= recorder->get_end_sample ()) |
19510 | 1541 return paComplete; |
1542 | |
1543 return paContinue; | |
1544 } | |
1545 | |
19674
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1546 static void |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1547 safe_audiorecorder_stop (audiorecorder *recorder) |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1548 { |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1549 recorder->stop (); |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1550 } |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1551 |
19510 | 1552 audiorecorder::audiorecorder (void) |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1553 : 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
|
1554 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
|
1555 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
|
1556 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
|
1557 { } |
19510 | 1558 |
19580
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1559 audiorecorder::~audiorecorder (void) |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1560 { |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1561 if (isrecording ()) |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1562 { |
26148
8c72f0345ee8
maint: Silence compiler warnings about unused or too many parameters.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents:
25910
diff
changeset
|
1563 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
|
1564 "interrupting recording audiorecorder"); |
19580
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1565 stop (); |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1566 } |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1567 } |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19577
diff
changeset
|
1568 |
19510 | 1569 void |
21333
c4690d9ff566
avoid warnings about overloading virtual functions from a base class
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
1570 audiorecorder::print (std::ostream& os, bool pr_as_read_syntax) |
19510 | 1571 { |
1572 print_raw (os, pr_as_read_syntax); | |
1573 newline (os); | |
1574 } | |
1575 | |
1576 void | |
19512
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19511
diff
changeset
|
1577 audiorecorder::print_raw (std::ostream& os, bool) const |
19510 | 1578 { |
1579 os << 0; | |
1580 } | |
1581 | |
1582 void | |
1583 audiorecorder::init (void) | |
1584 { | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1585 if (Pa_Initialize () != paNoError) |
27884 | 1586 error ("audiorecorder: initialization error"); |
19510 | 1587 |
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
|
1588 if (Pa_GetDeviceCount () < 1) |
27884 | 1589 error ("audiorecorder: no audio devices found or available"); |
19510 | 1590 |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1591 int device = get_id (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1592 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1593 if (device == -1) |
19510 | 1594 device = Pa_GetDefaultInputDevice (); |
1595 | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1596 input_parameters.device = device; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1597 input_parameters.channelCount = get_channels (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1598 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
|
1599 |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1600 // 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
|
1601 // 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
|
1602 // 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
|
1603 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
|
1604 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
|
1605 |
19573
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1606 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
|
1607 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1608 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
|
1609 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
|
1610 "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
|
1611 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
1612 input_parameters.suggestedLatency |
23450
855122b993da
maint: Wrap tertiary operator in parentheses "(COND ? x : y)".
Rik <rik@octave.org>
parents:
23449
diff
changeset
|
1613 = (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
|
1614 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1615 input_parameters.hostApiSpecificStreamInfo = nullptr; |
19510 | 1616 } |
1617 | |
1618 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1619 audiorecorder::set_fs (int fs_arg) |
19510 | 1620 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1621 fs = fs_arg; |
19510 | 1622 } |
1623 | |
1624 int | |
1625 audiorecorder::get_fs (void) | |
1626 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1627 return fs; |
19510 | 1628 } |
1629 | |
1630 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1631 audiorecorder::set_nbits (int nbits_arg) |
19510 | 1632 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1633 nbits = nbits_arg; |
19510 | 1634 } |
1635 | |
1636 int | |
1637 audiorecorder::get_nbits (void) | |
1638 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1639 return nbits; |
19510 | 1640 } |
1641 | |
27882
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1642 PaSampleFormat |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1643 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
|
1644 { |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1645 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
|
1646 } |
65a54ab6ceaa
Workaround for a bug in PortAudio 8-bit recording (bug #44305).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
26561
diff
changeset
|
1647 |
19510 | 1648 void |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1649 audiorecorder::set_id (int id_arg) |
19510 | 1650 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1651 id = id_arg; |
19510 | 1652 } |
1653 | |
1654 int | |
1655 audiorecorder::get_id (void) | |
1656 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1657 return id; |
19510 | 1658 } |
1659 | |
1660 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1661 audiorecorder::set_channels (int channels_arg) |
19510 | 1662 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1663 assert (channels_arg == 1 || channels_arg == 2); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1664 channels = channels_arg; |
19510 | 1665 } |
1666 | |
1667 int | |
1668 audiorecorder::get_channels (void) | |
1669 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1670 return channels; |
19510 | 1671 } |
1672 | |
1673 audio_type | |
1674 audiorecorder::get_type (void) | |
1675 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1676 return type; |
19510 | 1677 } |
1678 | |
1679 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1680 audiorecorder::set_sample_number (unsigned int sample_number_arg) |
19510 | 1681 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1682 sample_number = sample_number_arg; |
19510 | 1683 } |
1684 | |
1685 unsigned int | |
1686 audiorecorder::get_sample_number (void) | |
1687 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1688 return sample_number; |
19510 | 1689 } |
1690 | |
1691 unsigned int | |
1692 audiorecorder::get_total_samples (void) | |
1693 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1694 return left.size (); |
19510 | 1695 } |
1696 | |
1697 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1698 audiorecorder::set_end_sample (unsigned int end_sample_arg) |
19510 | 1699 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1700 end_sample = end_sample_arg; |
19510 | 1701 } |
1702 | |
1703 unsigned int | |
1704 audiorecorder::get_end_sample (void) | |
1705 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1706 return end_sample; |
19510 | 1707 } |
1708 | |
1709 void | |
1710 audiorecorder::reset_end_sample (void) | |
1711 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1712 set_end_sample (left.size ()); |
19510 | 1713 } |
1714 | |
1715 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1716 audiorecorder::set_tag (const charMatrix& tag_arg) |
19510 | 1717 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1718 tag = tag_arg; |
19510 | 1719 } |
1720 | |
1721 charMatrix | |
1722 audiorecorder::get_tag (void) | |
1723 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1724 return tag; |
19510 | 1725 } |
1726 | |
1727 void | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1728 audiorecorder::set_userdata (const octave_value& userdata_arg) |
19510 | 1729 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1730 userdata = userdata_arg; |
19510 | 1731 } |
1732 | |
1733 octave_value | |
1734 audiorecorder::get_userdata (void) | |
1735 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1736 return userdata; |
19510 | 1737 } |
1738 | |
1739 octave_value | |
1740 audiorecorder::getaudiodata (void) | |
1741 { | |
26219
471513a016ec
Fix audiorecorder() crash in getaudiodata() (bug #50674)
Lars Kindermann
parents:
26218
diff
changeset
|
1742 // 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
|
1743 // during loop with simultaneous recording and playback (bug #50674). |
471513a016ec
Fix audiorecorder() crash in getaudiodata() (bug #50674)
Lars Kindermann
parents:
26218
diff
changeset
|
1744 unsigned int ls = left.size (); |
471513a016ec
Fix audiorecorder() crash in getaudiodata() (bug #50674)
Lars Kindermann
parents:
26218
diff
changeset
|
1745 Matrix audio (2, ls); |
471513a016ec
Fix audiorecorder() crash in getaudiodata() (bug #50674)
Lars Kindermann
parents:
26218
diff
changeset
|
1746 |
471513a016ec
Fix audiorecorder() crash in getaudiodata() (bug #50674)
Lars Kindermann
parents:
26218
diff
changeset
|
1747 for (unsigned int i = 0; i < ls; i++) |
19510 | 1748 { |
19583
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1749 audio(0,i) = left[i]; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19580
diff
changeset
|
1750 audio(1,i) = right[i]; |
19510 | 1751 } |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1752 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1753 return audio; |
19510 | 1754 } |
1755 | |
1756 audioplayer * | |
1757 audiorecorder::getplayer (void) | |
1758 { | |
1759 audioplayer *player = new audioplayer (); | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1760 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1761 player->set_y (getaudiodata ()); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1762 player->set_fs (get_fs ()); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1763 player->set_nbits (get_nbits ()); |
19510 | 1764 player->init (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1765 |
19510 | 1766 return player; |
1767 } | |
1768 | |
1769 bool | |
1770 audiorecorder::isrecording (void) | |
1771 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1772 if (get_stream () == nullptr) |
19510 | 1773 return false; |
1774 | |
1775 PaError err; | |
1776 err = Pa_IsStreamActive (stream); | |
19515
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19514
diff
changeset
|
1777 if (err != 0 && err != 1) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1778 error ("audiorecorder: checking stream activity status failed"); |
19510 | 1779 |
1780 return (err == 1); | |
1781 } | |
1782 | |
1783 void | |
1784 audiorecorder::record (void) | |
1785 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1786 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1787 stop (); |
19510 | 1788 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1789 left.clear (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1790 right.clear (); |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1791 |
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1792 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
|
1793 |
19510 | 1794 PaError err; |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1795 if (octave_callback_function != nullptr) |
19510 | 1796 { |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1797 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
|
1798 get_fs (), buffer_size, paClipOff, |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1799 octave_record_callback, this); |
19510 | 1800 } |
1801 else | |
1802 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1803 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
|
1804 get_fs (), buffer_size, paClipOff, |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1805 portaudio_record_callback, this); |
19510 | 1806 } |
1807 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1808 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
|
1809 |
19510 | 1810 err = Pa_StartStream (stream); |
1811 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1812 error ("audiorecorder: unable to start audio recording stream"); |
19510 | 1813 } |
1814 | |
1815 void | |
1816 audiorecorder::recordblocking (float seconds) | |
1817 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1818 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1819 stop (); |
19510 | 1820 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1821 left.clear (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1822 right.clear (); |
19510 | 1823 |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1824 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
|
1825 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
|
1826 |
19510 | 1827 PaError err; |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1828 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
|
1829 get_fs (), buffer_size, paClipOff, nullptr, this); |
19510 | 1830 if (err != paNoError) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1831 error ("audiorecorder: unable to open audio recording stream"); |
19510 | 1832 |
1833 err = Pa_StartStream (stream); | |
1834 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1835 error ("audiorecorder: unable to start audio recording stream"); |
19510 | 1836 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1837 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
|
1838 |
21743
f4d7d0eb5b0c
use namespace for unwind_protect class
John W. Eaton <jwe@octave.org>
parents:
21739
diff
changeset
|
1839 octave::unwind_protect frame; |
19674
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1840 |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1841 frame.add_fcn (safe_audiorecorder_stop, this); |
b3363c531662
Stop audioplayer and audiorecorder when done or interrupted
Mike Miller <mtmiller@ieee.org>
parents:
19673
diff
changeset
|
1842 |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1843 for (unsigned int i = 0; i < frames; i += buffer_size) |
19510 | 1844 { |
22860
0b1e25cc4457
eliminate use of OCTAVE_QUIT macro in C++ sources
John W. Eaton <jwe@octave.org>
parents:
22772
diff
changeset
|
1845 octave_quit (); |
0b1e25cc4457
eliminate use of OCTAVE_QUIT macro in C++ sources
John W. Eaton <jwe@octave.org>
parents:
22772
diff
changeset
|
1846 |
19671
322d0fe84a8c
Make audio buffer size dependent on sample rate
Mike Miller <mtmiller@ieee.org>
parents:
19598
diff
changeset
|
1847 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
|
1848 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1849 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
|
1850 octave_record_callback (buffer, nullptr, buffer_size, nullptr, 0, this); |
19510 | 1851 else |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1852 portaudio_record_callback (buffer, nullptr, buffer_size, nullptr, 0, this); |
19510 | 1853 } |
1854 } | |
1855 | |
1856 void | |
1857 audiorecorder::pause (void) | |
1858 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1859 if (get_stream () == nullptr) |
19510 | 1860 return; |
1861 | |
1862 PaError err; | |
1863 err = Pa_StopStream (stream); | |
1864 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1865 error ("audiorecorder: unable to stop audio recording stream"); |
19510 | 1866 } |
1867 | |
1868 void | |
1869 audiorecorder::resume (void) | |
1870 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1871 if (get_stream () == nullptr) |
19510 | 1872 return; |
1873 | |
1874 PaError err; | |
1875 err = Pa_StartStream (stream); | |
1876 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1877 error ("audiorecorder: unable to start audio recording stream"); |
19510 | 1878 } |
1879 | |
1880 void | |
1881 audiorecorder::stop (void) | |
1882 { | |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1883 if (get_stream () == nullptr) |
19510 | 1884 return; |
1885 | |
1886 PaError err; | |
19973 | 1887 if (! Pa_IsStreamStopped (get_stream ())) |
19510 | 1888 { |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1889 err = Pa_AbortStream (get_stream ()); |
19510 | 1890 if (err != paNoError) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1891 error ("audioplayer: unable to stop audio playback stream"); |
19510 | 1892 } |
1893 | |
1894 err = Pa_CloseStream (stream); | |
1895 if (err != paNoError) | |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
1896 error ("audiorecorder: unable to close audio recording stream"); |
19510 | 1897 |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1898 set_sample_number (0); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1899 reset_end_sample (); |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23567
diff
changeset
|
1900 stream = nullptr; |
19510 | 1901 } |
1902 | |
1903 void | |
1904 audiorecorder::append (float sample_l, float sample_r) | |
1905 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1906 left.push_back (sample_l); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1907 right.push_back (sample_r); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1908 set_sample_number (get_sample_number () + 1); |
19510 | 1909 } |
1910 | |
1911 PaStream * | |
1912 audiorecorder::get_stream (void) | |
1913 { | |
19517
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19516
diff
changeset
|
1914 return stream; |
19510 | 1915 } |
1916 | |
19526
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
1917 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
1918 |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1919 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
|
1920 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
|
1921 @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
|
1922 @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
|
1923 @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
|
1924 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
|
1925 @end deftypefn */) |
19510 | 1926 { |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1927 octave_value retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1928 |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1929 #if defined (HAVE_PORTAUDIO) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1930 |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1931 interp.mlock (); |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1932 |
19510 | 1933 int nargin = args.length (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1934 |
23449
c763214a8260
maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents:
23446
diff
changeset
|
1935 audiorecorder *recorder = new audiorecorder (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1936 |
19510 | 1937 if (nargin > 0) |
1938 { | |
19574
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19573
diff
changeset
|
1939 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
|
1940 || args(0).is_inline_function ()); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1941 |
19510 | 1942 if (is_function) |
25910
b4bf418dfc74
Correct audioplayer message strings (bug #54748).
Lars Kindermann <lars.kindermann@reglos.de>
parents:
25054
diff
changeset
|
1943 error ("audiorecorder: callbacks not yet implemented"); |
19510 | 1944 } |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1945 |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1946 if (nargin >= 3) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1947 { |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1948 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
|
1949 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
|
1950 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
|
1951 } |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1952 |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1953 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
|
1954 { |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1955 recorder->set_id (args(3).int_value ()); |
19510 | 1956 } |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1957 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1958 recorder->init (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1959 retval = recorder; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1960 |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1961 #else |
28306
21970ad14781
Suppress unnecessary warning messages when configure --without-fltk, --without-portaudio (bug #58385).
Rik <rik@octave.org>
parents:
28162
diff
changeset
|
1962 octave_unused_parameter (interp); |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1963 octave_unused_parameter (args); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1964 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1965 err_disabled_feature ("__recorder_audiorecorder__", |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1966 "audio playback and recording through PortAudio"); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1967 #endif |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
1968 |
19510 | 1969 return retval; |
1970 } | |
1971 | |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21691
diff
changeset
|
1972 #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
|
1973 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1974 static audiorecorder * |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1975 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
|
1976 { |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1977 interp.mlock (); |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1978 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1979 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
|
1980 |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1981 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
|
1982 |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1983 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
|
1984 if (! rec) |
27884 | 1985 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
|
1986 |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
1987 return rec; |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1988 } |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
1989 |
19526
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
1990 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
1991 |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
1992 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
|
1993 doc: /* -*- texinfo -*- |
24998
7feafd20703f
doc: fix doc string declarations (bug #53416)
Mike Miller <mtmiller@octave.org>
parents:
24534
diff
changeset
|
1994 @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
|
1995 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
|
1996 @end deftypefn */) |
19510 | 1997 { |
1998 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
1999 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2000 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2001 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
|
2002 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2003 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2004 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2005 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2006 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
|
2007 "audio playback and recording through PortAudio"); |
19510 | 2008 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2009 |
19510 | 2010 return retval; |
2011 } | |
2012 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2013 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
|
2014 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
|
2015 @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
|
2016 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
|
2017 @end deftypefn */) |
19510 | 2018 { |
2019 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2020 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2021 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2022 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
|
2023 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2024 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2025 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2026 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2027 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
|
2028 "audio playback and recording through PortAudio"); |
19510 | 2029 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2030 |
19510 | 2031 return retval; |
2032 } | |
2033 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2034 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
|
2035 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
|
2036 @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
|
2037 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
|
2038 @end deftypefn */) |
19510 | 2039 { |
2040 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2041 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2042 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2043 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
|
2044 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2045 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2046 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2047 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2048 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
|
2049 "audio playback and recording through PortAudio"); |
19510 | 2050 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2051 |
19510 | 2052 return retval; |
2053 } | |
2054 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2055 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
|
2056 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
|
2057 @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
|
2058 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
|
2059 @end deftypefn */) |
19510 | 2060 { |
2061 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2062 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2063 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2064 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
|
2065 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2066 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2067 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2068 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2069 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
|
2070 "audio playback and recording through PortAudio"); |
19510 | 2071 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2072 |
19510 | 2073 return retval; |
2074 } | |
2075 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2076 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
|
2077 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
|
2078 @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
|
2079 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
|
2080 @end deftypefn */) |
19510 | 2081 { |
2082 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2083 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2084 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2085 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
|
2086 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2087 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2088 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2089 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2090 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
|
2091 "audio playback and recording through PortAudio"); |
19510 | 2092 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2093 |
19510 | 2094 return retval; |
2095 } | |
2096 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2097 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
|
2098 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
|
2099 @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
|
2100 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
|
2101 @end deftypefn */) |
19510 | 2102 { |
2103 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2104 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2105 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2106 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
|
2107 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2108 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2109 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2110 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2111 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
|
2112 "audio playback and recording through PortAudio"); |
19510 | 2113 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2114 |
19510 | 2115 return retval; |
2116 } | |
2117 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2118 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
|
2119 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
|
2120 @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
|
2121 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
|
2122 @end deftypefn */) |
19510 | 2123 { |
2124 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2125 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2126 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2127 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
|
2128 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2129 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2130 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2131 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2132 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
|
2133 "audio playback and recording through PortAudio"); |
19510 | 2134 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2135 |
19510 | 2136 return retval; |
2137 } | |
2138 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2139 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
|
2140 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
|
2141 @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
|
2142 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
|
2143 @end deftypefn */) |
19510 | 2144 { |
2145 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2146 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2147 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2148 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
|
2149 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2150 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2151 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2152 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2153 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
|
2154 "audio playback and recording through PortAudio"); |
19510 | 2155 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2156 |
19510 | 2157 return retval; |
2158 } | |
2159 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2160 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
|
2161 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
|
2162 @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
|
2163 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
|
2164 @end deftypefn */) |
19510 | 2165 { |
2166 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2167 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2168 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2169 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
|
2170 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2171 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2172 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2173 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2174 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
|
2175 "audio playback and recording through PortAudio"); |
19510 | 2176 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2177 |
19510 | 2178 return retval; |
2179 } | |
2180 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2181 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
|
2182 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
|
2183 @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
|
2184 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
|
2185 @end deftypefn */) |
19510 | 2186 { |
2187 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2188 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2189 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2190 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
|
2191 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2192 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2193 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2194 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2195 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
|
2196 "audio playback and recording through PortAudio"); |
19510 | 2197 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2198 |
19510 | 2199 return retval; |
2200 } | |
2201 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2202 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
|
2203 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
|
2204 @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
|
2205 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
|
2206 @end deftypefn */) |
19510 | 2207 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2208 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2209 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
|
2210 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2211 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2212 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2213 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2214 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2215 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
|
2216 "audio playback and recording through PortAudio"); |
19510 | 2217 #endif |
2218 } | |
2219 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2220 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
|
2221 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
|
2222 @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
|
2223 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
|
2224 @end deftypefn */) |
19510 | 2225 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2226 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2227 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
|
2228 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
|
2229 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2230 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2231 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2232 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2233 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2234 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
|
2235 "audio playback and recording through PortAudio"); |
19510 | 2236 #endif |
2237 } | |
2238 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2239 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
|
2240 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
|
2241 @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
|
2242 @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
|
2243 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
|
2244 @end deftypefn */) |
19510 | 2245 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2246 #if defined (HAVE_PORTAUDIO) |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2247 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
|
2248 |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2249 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
|
2250 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
|
2251 |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2252 recorder->record (); |
21125
8f76684324b5
maint: change "return octave_value ()" to "return ovl ()".
Rik <rik@octave.org>
parents:
21103
diff
changeset
|
2253 return ovl (); |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2254 #else |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2255 octave_unused_parameter (interp); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2256 octave_unused_parameter (args); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2257 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2258 err_disabled_feature ("__recorder_record__", |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2259 "audio playback and recording through PortAudio"); |
19510 | 2260 #endif |
2261 } | |
2262 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2263 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
|
2264 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
|
2265 @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
|
2266 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
|
2267 @end deftypefn */) |
19510 | 2268 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2269 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2270 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2271 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
|
2272 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2273 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2274 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2275 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2276 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2277 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
|
2278 "audio playback and recording through PortAudio"); |
19510 | 2279 #endif |
2280 } | |
2281 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2282 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
|
2283 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
|
2284 @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
|
2285 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
|
2286 @end deftypefn */) |
19510 | 2287 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2288 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2289 if (args.length () == 2) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2290 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
|
2291 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2292 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2293 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2294 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2295 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2296 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
|
2297 "audio playback and recording through PortAudio"); |
19510 | 2298 #endif |
2299 } | |
2300 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2301 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
|
2302 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
|
2303 @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
|
2304 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
|
2305 @end deftypefn */) |
19510 | 2306 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2307 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2308 if (args.length () == 2) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2309 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
|
2310 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2311 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2312 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2313 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2314 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2315 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
|
2316 "audio playback and recording through PortAudio"); |
19510 | 2317 #endif |
2318 } | |
2319 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2320 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
|
2321 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
|
2322 @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
|
2323 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
|
2324 @end deftypefn */) |
19510 | 2325 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2326 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2327 if (args.length () == 2) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2328 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
|
2329 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2330 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2331 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2332 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2333 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2334 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
|
2335 "audio playback and recording through PortAudio"); |
19510 | 2336 #endif |
2337 } | |
2338 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2339 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
|
2340 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
|
2341 @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
|
2342 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
|
2343 @end deftypefn */) |
19510 | 2344 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2345 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2346 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2347 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
|
2348 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2349 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2350 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2351 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2352 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2353 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
|
2354 "audio playback and recording through PortAudio"); |
19510 | 2355 #endif |
2356 } | |
2357 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2358 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
|
2359 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
|
2360 @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
|
2361 @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
|
2362 @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
|
2363 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
|
2364 @end deftypefn */) |
19510 | 2365 { |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2366 octave_value retval; |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2367 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2368 #if defined (HAVE_PORTAUDIO) |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2369 interp.mlock (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2370 |
23449
c763214a8260
maint: Use convention 'int *x' for naming pointers.
Rik <rik@octave.org>
parents:
23446
diff
changeset
|
2371 audioplayer *recorder = new audioplayer (); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2372 |
19574
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19573
diff
changeset
|
2373 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
|
2374 || args(0).is_inline_function ()); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2375 |
19510 | 2376 if (is_function) |
20825
66cd994d1b79
eliminate return statements after calls to error
John W. Eaton <jwe@octave.org>
parents:
20812
diff
changeset
|
2377 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
|
2378 |
5e00ed38a58b
maint: Replace if/error/else paradigm with just if/error.
Rik <rik@octave.org>
parents:
20946
diff
changeset
|
2379 recorder->set_y (args(0)); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2380 recorder->set_fs (args(1).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2381 |
28162
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2382 if (args.length () > 2) |
19510 | 2383 { |
28162
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2384 // 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
|
2385 int nbits = args(2).int_value (); |
28387
28676df1deaf
Fix input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
28306
diff
changeset
|
2386 if (nbits != 8 && nbits != 16 && nbits != 24) |
28162
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2387 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
|
2388 |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2389 switch (args.length ()) |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2390 { |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2391 case 3: |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2392 recorder->set_nbits (nbits); |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2393 break; |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2394 |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2395 case 4: |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2396 recorder->set_nbits (nbits); |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2397 recorder->set_id (args(3).int_value ()); |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2398 break; |
41750ce4752c
Better input validation for audioplayer (bug #57939).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
2399 } |
19510 | 2400 } |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2401 |
19510 | 2402 if (is_function) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2403 recorder->init_fn (); |
19510 | 2404 else |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2405 recorder->init (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2406 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2407 retval = recorder; |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2408 #else |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2409 octave_unused_parameter (interp); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2410 octave_unused_parameter (args); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2411 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2412 err_disabled_feature ("__player_audioplayer__", |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2413 "audio playback and recording through PortAudio"); |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2414 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2415 |
19510 | 2416 return retval; |
2417 } | |
2418 | |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21691
diff
changeset
|
2419 #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
|
2420 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
2421 static audioplayer * |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2422 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
|
2423 { |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2424 interp.mlock (); |
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2425 |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
2426 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
|
2427 |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
2428 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
|
2429 |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2430 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
|
2431 if (! pl) |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2432 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
|
2433 |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2434 return pl; |
19513
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
2435 } |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19512
diff
changeset
|
2436 |
19526
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
2437 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19519
diff
changeset
|
2438 |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2439 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
|
2440 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
|
2441 @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
|
2442 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
|
2443 @end deftypefn */) |
19510 | 2444 { |
2445 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2446 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2447 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2448 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2449 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
|
2450 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2451 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2452 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2453 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2454 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
|
2455 "audio playback and recording through PortAudio"); |
19510 | 2456 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2457 |
19510 | 2458 return retval; |
2459 } | |
2460 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2461 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
|
2462 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
|
2463 @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
|
2464 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
|
2465 @end deftypefn */) |
19510 | 2466 { |
2467 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2468 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2469 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2470 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2471 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
|
2472 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2473 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2474 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2475 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2476 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
|
2477 "audio playback and recording through PortAudio"); |
19510 | 2478 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2479 |
19510 | 2480 return retval; |
2481 } | |
2482 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2483 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
|
2484 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
|
2485 @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
|
2486 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
|
2487 @end deftypefn */) |
19510 | 2488 { |
2489 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2490 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2491 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2492 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2493 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
|
2494 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2495 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2496 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2497 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2498 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
|
2499 "audio playback and recording through PortAudio"); |
19510 | 2500 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2501 |
19510 | 2502 return retval; |
2503 } | |
2504 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2505 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
|
2506 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
|
2507 @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
|
2508 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
|
2509 @end deftypefn */) |
19510 | 2510 { |
2511 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2512 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2513 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2514 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2515 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
|
2516 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2517 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2518 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2519 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2520 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
|
2521 "audio playback and recording through PortAudio"); |
19510 | 2522 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2523 |
19510 | 2524 return retval; |
2525 } | |
2526 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2527 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
|
2528 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
|
2529 @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
|
2530 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
|
2531 @end deftypefn */) |
19510 | 2532 { |
2533 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2534 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2535 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2536 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2537 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
|
2538 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2539 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2540 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2541 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2542 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
|
2543 "audio playback and recording through PortAudio"); |
19510 | 2544 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2545 |
19510 | 2546 return retval; |
2547 } | |
2548 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2549 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
|
2550 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
|
2551 @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
|
2552 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
|
2553 @end deftypefn */) |
19510 | 2554 { |
2555 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2556 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2557 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2558 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2559 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
|
2560 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2561 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2562 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2563 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2564 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
|
2565 "audio playback and recording through PortAudio"); |
19510 | 2566 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2567 |
19510 | 2568 return retval; |
2569 } | |
2570 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2571 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
|
2572 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
|
2573 @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
|
2574 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
|
2575 @end deftypefn */) |
19510 | 2576 { |
2577 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2578 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2579 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2580 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2581 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
|
2582 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2583 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2584 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2585 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2586 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
|
2587 "audio playback and recording through PortAudio"); |
19510 | 2588 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2589 |
19510 | 2590 return retval; |
2591 } | |
2592 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2593 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
|
2594 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
|
2595 @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
|
2596 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
|
2597 @end deftypefn */) |
19510 | 2598 { |
2599 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2600 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2601 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2602 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2603 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
|
2604 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2605 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2606 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2607 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2608 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
|
2609 "audio playback and recording through PortAudio"); |
19510 | 2610 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2611 |
19510 | 2612 return retval; |
2613 } | |
2614 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2615 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
|
2616 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
|
2617 @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
|
2618 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
|
2619 @end deftypefn */) |
19510 | 2620 { |
2621 octave_value retval; | |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2622 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2623 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2624 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2625 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
|
2626 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2627 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2628 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2629 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2630 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
|
2631 "audio playback and recording through PortAudio"); |
19510 | 2632 #endif |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2633 |
19510 | 2634 return retval; |
2635 } | |
2636 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2637 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
|
2638 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
|
2639 @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
|
2640 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
|
2641 @end deftypefn */) |
19510 | 2642 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2643 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2644 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2645 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
|
2646 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2647 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2648 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2649 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2650 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2651 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
|
2652 "audio playback and recording through PortAudio"); |
19510 | 2653 #endif |
2654 } | |
2655 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2656 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
|
2657 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
|
2658 @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
|
2659 @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
|
2660 @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
|
2661 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
|
2662 @end deftypefn */) |
19510 | 2663 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2664 #if defined (HAVE_PORTAUDIO) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2665 |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2666 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
|
2667 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19571
diff
changeset
|
2668 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
|
2669 { |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2670 player->playblocking (); |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2671 } |
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2672 else if (args.length () == 2) |
19510 | 2673 { |
2674 if (args(1).is_matrix_type ()) | |
2675 { | |
2676 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
|
2677 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2678 unsigned int start = range.elem (0) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2679 unsigned int end = range.elem (1) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2680 |
19515
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19514
diff
changeset
|
2681 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
|
2682 || 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
|
2683 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
|
2684 |
19510 | 2685 player->set_sample_number (start); |
2686 player->set_end_sample (end); | |
2687 } | |
2688 else | |
2689 { | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2690 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
|
2691 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
2692 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
|
2693 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
|
2694 |
19510 | 2695 player->set_sample_number (start); |
2696 } | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2697 |
19510 | 2698 player->playblocking (); |
2699 } | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2700 |
21125
8f76684324b5
maint: change "return octave_value ()" to "return ovl ()".
Rik <rik@octave.org>
parents:
21103
diff
changeset
|
2701 return ovl (); |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2702 #else |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2703 octave_unused_parameter (interp); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2704 octave_unused_parameter (args); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2705 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2706 err_disabled_feature ("__player_playblocking__", |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2707 "audio playback and recording through PortAudio"); |
19510 | 2708 #endif |
2709 } | |
2710 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2711 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
|
2712 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
|
2713 @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
|
2714 @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
|
2715 @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
|
2716 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
|
2717 @end deftypefn */) |
19510 | 2718 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2719 #if defined (HAVE_PORTAUDIO) |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2720 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2721 if (args.length () == 1) |
19510 | 2722 { |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2723 get_player (interp, args(0))->play (); |
19510 | 2724 } |
20868
04748b009201
audiodevinfo.cc:code sprint: remove print_usage () in internal functions
Andreas Weber <andy.weber.aw@gmail.com>
parents:
20853
diff
changeset
|
2725 else if (args.length () == 2) |
19510 | 2726 { |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2727 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
|
2728 |
19510 | 2729 if (args(1).is_matrix_type ()) |
2730 { | |
2731 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
|
2732 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2733 unsigned int start = range.elem (0) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2734 unsigned int end = range.elem (1) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2735 |
19515
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19514
diff
changeset
|
2736 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
|
2737 || 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
|
2738 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
|
2739 |
19510 | 2740 player->set_sample_number (start); |
2741 player->set_end_sample (end); | |
2742 } | |
2743 else | |
2744 { | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2745 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
|
2746 |
19514
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19513
diff
changeset
|
2747 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
|
2748 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
|
2749 |
19510 | 2750 player->set_sample_number (start); |
2751 } | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2752 |
19510 | 2753 player->play (); |
2754 } | |
19519
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19518
diff
changeset
|
2755 |
21125
8f76684324b5
maint: change "return octave_value ()" to "return ovl ()".
Rik <rik@octave.org>
parents:
21103
diff
changeset
|
2756 return ovl (); |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2757 #else |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2758 octave_unused_parameter (interp); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2759 octave_unused_parameter (args); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2760 |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2761 err_disabled_feature ("__player_play__", |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2762 "audio playback and recording through PortAudio"); |
19510 | 2763 #endif |
2764 } | |
2765 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2766 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
|
2767 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
|
2768 @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
|
2769 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
|
2770 @end deftypefn */) |
19510 | 2771 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2772 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2773 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2774 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
|
2775 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2776 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2777 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2778 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2779 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2780 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
|
2781 "audio playback and recording through PortAudio"); |
19510 | 2782 #endif |
2783 } | |
2784 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2785 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
|
2786 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
|
2787 @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
|
2788 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
|
2789 @end deftypefn */) |
19510 | 2790 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2791 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2792 if (args.length () == 2) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2793 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
|
2794 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2795 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2796 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2797 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2798 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2799 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
|
2800 "audio playback and recording through PortAudio"); |
19510 | 2801 #endif |
2802 } | |
2803 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2804 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
|
2805 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
|
2806 @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
|
2807 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
|
2808 @end deftypefn */) |
19510 | 2809 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2810 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2811 if (args.length () == 2) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2812 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
|
2813 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2814 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2815 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2816 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2817 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2818 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
|
2819 "audio playback and recording through PortAudio"); |
19510 | 2820 #endif |
2821 } | |
2822 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2823 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
|
2824 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
|
2825 @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
|
2826 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
|
2827 @end deftypefn */) |
19510 | 2828 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2829 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2830 if (args.length () == 2) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2831 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
|
2832 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2833 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2834 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2835 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2836 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2837 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
|
2838 "audio playback and recording through PortAudio"); |
19510 | 2839 #endif |
2840 } | |
2841 | |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2842 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
|
2843 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
|
2844 @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
|
2845 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
|
2846 @end deftypefn */) |
19510 | 2847 { |
27889
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2848 #if defined (HAVE_PORTAUDIO) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2849 if (args.length () == 1) |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2850 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
|
2851 return ovl (); |
51343fd2423f
audiodevinfo.cc: Re-order #ifdef code and use "#if defined"
Rik <rik@octave.org>
parents:
27888
diff
changeset
|
2852 #else |
26559
5ace3d2b4674
avoid crash with audioplayer and audiorecorder (bug #55254)
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
2853 octave_unused_parameter (interp); |
21691
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2854 octave_unused_parameter (args); |
263d18409fdf
Eliminate unused variable warnings for conditionally compiled code.
John W. Eaton <jwe@octave.org>
parents:
21580
diff
changeset
|
2855 |
21100
e39e05d90788
Switch gripe_XXX to either err_XXX or warn_XXX naming scheme.
Rik <rik@octave.org>
parents:
21096
diff
changeset
|
2856 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
|
2857 "audio playback and recording through PortAudio"); |
19510 | 2858 #endif |
2859 } |