annotate libinterp/dldfcn/audiodevinfo.cc @ 33634:4a70f390c85e default tip @

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