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