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