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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
27 // <cstdint> requires c++11
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
28 #include <stdint.h>
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
29
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
30 #include <string>
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
31 #include <vector>
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
45
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
7aaf756b1532 use "!", not "not"
John W. Eaton <jwe@octave.org>
parents: 19861
diff changeset
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
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
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
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
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
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
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
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
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
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
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
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
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
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
419 %! assert (rows (devinfo.input), 1);
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
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
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
424 %! nout = audiodevinfo (0);
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
425 %! nin = audiodevinfo (1);
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
426 %! assert (columns (devinfo.output), nout);
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
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
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
431 %! nout = audiodevinfo (0);
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
432 %! nin = audiodevinfo (1);
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
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
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
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
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
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
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
442 %! nout = audiodevinfo (0);
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
443 %! nin = audiodevinfo (1);
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
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
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
446 %! endfor
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
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
2a16dac2176f fix audioplayer tests
John W. Eaton <jwe@octave.org>
parents: 19505
diff changeset
449 %! endfor
19500
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19498
diff changeset
450 */
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
455
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
456 class audioplayer : public octave_base_value
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
457 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
458 public:
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
461
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
462 // Overloaded base functions
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
466 void print_raw (std::ostream& os, bool pr_as_read_syntax) const;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
467
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
468 // Properties
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
469 bool is_constant (void) const { return true; }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
470 bool is_defined (void) const { return true; }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
471 bool print_as_scalar (void) const { return true; }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
472
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
473 void init (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
476 void set_y (octave_function *fn);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
477 void set_y (std::string fn);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
481 void set_fs (int fs);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
482 int get_fs (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
483 void set_nbits (int nbits);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
484 int get_nbits (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
485 void set_id (int id);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
486 int get_id (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
487 int get_channels (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
488 audio_type get_type (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
489
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
490 void set_sample_number (unsigned int sample);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
491 unsigned int get_sample_number (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
492 unsigned int get_total_samples (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
493 void set_end_sample (unsigned int sample);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
494 unsigned int get_end_sample (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
499 octave_value get_userdata (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
500 PaStream *get_stream (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
501
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
502 void playblocking (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
503 void play (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
504 void pause (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
505 void resume (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
506 void stop (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
507 bool isplaying (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
521 RowVector left;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
522 RowVector right;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
523 PaStream *stream;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
524 PaStreamParameters output_parameters;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
525 audio_type type;
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
526
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
527 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
528 };
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
529
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
530 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (audioplayer, "audioplayer", "audioplayer");
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
531
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
532 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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
633 return return_status;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
634 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
635
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
810 return paContinue;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
811 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
838 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
839 print_raw (os, pr_as_read_syntax);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
840 newline (os);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
841 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
842
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
845 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
846 os << 0;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
847 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
848
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
849 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
850 audioplayer::init_fn (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
861 device = Pa_GetDefaultOutputDevice ();
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
862
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
863 output_parameters.device = device;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
876 output_parameters.hostApiSpecificStreamInfo = 0;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
877 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
878
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
879 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
880 audioplayer::init (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
897 device = Pa_GetDefaultOutputDevice ();
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
898
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
899 output_parameters.device = device;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
900 output_parameters.channelCount = 2;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
909 output_parameters.sampleFormat = paInt16;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
920 output_parameters.hostApiSpecificStreamInfo = 0;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
921 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
922
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
947 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
948
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
949 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
950 audioplayer::set_y (octave_function *fn)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
955 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
956
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
957 Matrix&
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
958 audioplayer::get_y (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
959 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
960 return y;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
961 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
967 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
973 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
974
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
977 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
978 fs = fs_arg;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
979 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
980
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
981 int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
982 audioplayer::get_fs (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
983 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
984 return fs;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
985 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
986
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
989 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
990 nbits = nbits_arg;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
991 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
992
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
993 int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
994 audioplayer::get_nbits (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
995 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
996 return nbits;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
997 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
998
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1001 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1002 id = id_arg;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1003 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1004
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1005 int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1006 audioplayer::get_id (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1007 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1008 return id;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1009 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1010
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1011 int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1012 audioplayer::get_channels (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1013 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1014 return channels;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1015 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1016
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1017 audio_type
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1018 audioplayer::get_type (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1019 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1020 return type;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1021 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1022
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1027 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1028
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1029 unsigned int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1030 audioplayer::get_sample_number (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1031 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1032 return sample_number;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1033 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1034
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1035 unsigned int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1036 audioplayer::get_total_samples (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1039 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1040
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1045 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1046
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1047 unsigned int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1048 audioplayer::get_end_sample (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1049 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1050 return end_sample;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1051 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1052
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1053 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1054 audioplayer::reset_end_sample (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1057 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1058
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1061 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1062 tag = tag_arg;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1063 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1064
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1065 charMatrix
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1066 audioplayer::get_tag (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1067 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1068 return tag;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1069 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1070
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1073 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1074 userdata = userdata_arg;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1075 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1076
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1077 octave_value
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1078 audioplayer::get_userdata (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1079 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1080 return userdata;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1081 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1082
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1083 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1084 audioplayer::playblocking (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1092 PaError err;
19518
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1097
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1098 err = Pa_StartStream (stream);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1101
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1119 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1120 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1121
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1122 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1123 audioplayer::play (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1135 else
19518
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1139
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1142
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1143 err = Pa_StartStream (stream);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1146 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1147
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1148 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1149 audioplayer::pause (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1152 return;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1153
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1154 PaError err;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1155 err = Pa_StopStream (stream);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1158 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1159
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1160 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1161 audioplayer::resume (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1164 return;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1165
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1166 PaError err;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1167 err = Pa_StartStream (stream);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1170 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1171
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1172 PaStream *
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1173 audioplayer::get_stream (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1174 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1175 return stream;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1176 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1177
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1178 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1179 audioplayer::stop (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1182 return;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1183
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
7aaf756b1532 use "!", not "not"
John W. Eaton <jwe@octave.org>
parents: 19861
diff changeset
1187 if (! Pa_IsStreamStopped (get_stream ()))
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1192 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1197
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1198 stream = 0;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1199 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1200
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1201 bool
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1202 audioplayer::isplaying (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1205 return false;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1206
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1207 PaError err;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1211
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1212 return (err == 1);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1213 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1214
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1215 class audiorecorder : public octave_base_value
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1216 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1217 public:
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1220
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1221 // Overloaded base functions
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1225 void print_raw (std::ostream& os, bool pr_as_read_syntax) const;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1226
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1227 // Properties
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1228 bool is_constant (void) const { return true; }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1229 bool is_defined (void) const { return true; }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1230 bool print_as_scalar (void) const { return true; }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1231
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1232 void init (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1233 void set_fs (int fs);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1234 int get_fs (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1235 void set_nbits (int nbits);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1236 int get_nbits (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1237 void set_id (int id);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1238 int get_id (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1239 void set_channels (int channels);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1240 int get_channels (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1241 audio_type get_type (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1242
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1243 void set_sample_number (unsigned int sample);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1244 unsigned int get_sample_number (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1245 unsigned int get_total_samples (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1246 void set_end_sample (unsigned int sample);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1247 unsigned int get_end_sample (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1252 octave_value get_userdata (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1253 PaStream *get_stream (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1254
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1255 octave_value getaudiodata (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1256 audioplayer *getplayer (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1257 bool isrecording (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1258 audioplayer play (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1259 void record (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1260 void recordblocking (float seconds);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1261 void pause (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1262 void resume (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1263 void stop (void);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1264 void append (float sample_l, float sample_r);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1278 std::vector<float> left;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1279 std::vector<float> right;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1280 PaStream *stream;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1281 PaStreamParameters input_parameters;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1282 audio_type type;
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1283
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1284 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1285 };
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1286
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1287 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (audiorecorder, "audiorecorder", "audiorecorder");
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1288
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1304 if (recorder->get_nbits () == 8)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1317 }
19571
72304a4e010a Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents: 19570
diff changeset
1318 }
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1319 else if (recorder->get_nbits () == 16)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1332 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1333 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1334 else if (recorder->get_nbits () == 24)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1347 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1348 for (int j = 0; j < 3; j++)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1352 }
19519
e616c2830413 various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents: 19518
diff changeset
1353
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1354 if (sample_l32 & 0x00800000)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1355 sample_l32 |= 0xff000000;
19519
e616c2830413 various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents: 19518
diff changeset
1356
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1357 if (sample_r32 & 0x00800000)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1362 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1363 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1368 return retval(0).int_value ();
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1369 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1370
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1383 if (recorder->get_nbits () == 8)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1394 recorder->append (sample_l, sample_r);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1395 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1396 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1397 else if (recorder->get_nbits () == 16)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1408 recorder->append (sample_l, sample_r);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1409 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1410 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1411 else if (recorder->get_nbits () == 24)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1424 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1425 for (int j = 0; j < 3; j++)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1429 }
19519
e616c2830413 various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents: 19518
diff changeset
1430
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1431 if (sample_l32 & 0x00800000)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1432 sample_l32 |= 0xff000000;
19519
e616c2830413 various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents: 19518
diff changeset
1433
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1434 if (sample_r32 & 0x00800000)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1439 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1440 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1443 return paComplete;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1444
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1445 return paContinue;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1446 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1473 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1474 print_raw (os, pr_as_read_syntax);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1475 newline (os);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1476 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1477
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1480 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1481 os << 0;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1482 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1483
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1484 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1485 audiorecorder::init (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1496 device = Pa_GetDefaultInputDevice ();
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
1511 input_parameters.hostApiSpecificStreamInfo = 0;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1512 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1513
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1516 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1517 fs = fs_arg;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1518 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1519
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1520 int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1521 audiorecorder::get_fs (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1522 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1523 return fs;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1524 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1525
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1528 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1529 nbits = nbits_arg;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1530 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1531
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1532 int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1533 audiorecorder::get_nbits (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1534 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1535 return nbits;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1536 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1537
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1540 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1541 id = id_arg;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1542 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1543
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1544 int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1545 audiorecorder::get_id (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1546 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1547 return id;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1548 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1549
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1550 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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1555 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1556
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1557 int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1558 audiorecorder::get_channels (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1559 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1560 return channels;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1561 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1562
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1563 audio_type
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1564 audiorecorder::get_type (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1565 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1566 return type;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1567 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1568
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1573 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1574
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1575 unsigned int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1576 audiorecorder::get_sample_number (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1577 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1578 return sample_number;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1579 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1580
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1581 unsigned int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1582 audiorecorder::get_total_samples (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1583 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1584 return left.size ();
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1585 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1586
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1591 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1592
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1593 unsigned int
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1594 audiorecorder::get_end_sample (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1595 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1596 return end_sample;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1597 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1598
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1599 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1600 audiorecorder::reset_end_sample (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1603 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1604
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1607 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1608 tag = tag_arg;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1609 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1610
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1611 charMatrix
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1612 audiorecorder::get_tag (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1613 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1614 return tag;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1615 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1616
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1619 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1620 userdata = userdata_arg;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1621 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1622
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1623 octave_value
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1624 audiorecorder::get_userdata (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1625 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1626 return userdata;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1627 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1628
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1629 octave_value
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1630 audiorecorder::getaudiodata (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1641 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1642
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1643 audioplayer *
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1644 audiorecorder::getplayer (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1645 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1646 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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1651 player->init ();
19519
e616c2830413 various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents: 19518
diff changeset
1652
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1653 return player;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1654 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1655
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1656 bool
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1657 audiorecorder::isrecording (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1660 return false;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1661
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1662 PaError err;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1666
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1667 return (err == 1);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1668 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1669
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1670 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1671 audiorecorder::record (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1683 {
19518
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1687 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1688 else
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1689 {
19518
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1693 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1694 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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1697 err = Pa_StartStream (stream);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1700 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1701
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1702 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1703 audiorecorder::recordblocking (float seconds)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1714 PaError err;
19518
572b9bd43e92 use 0 instead of NULL
John W. Eaton <jwe@octave.org>
parents: 19517
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1719
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1720 err = Pa_StartStream (stream);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1739 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1740 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1741
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1742 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1743 audiorecorder::pause (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1746 return;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1747
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1748 PaError err;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1749 err = Pa_StopStream (stream);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1752 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1753
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1754 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1755 audiorecorder::resume (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1758 return;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1759
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1760 PaError err;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1761 err = Pa_StartStream (stream);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1764 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1765
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1766 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1767 audiorecorder::stop (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1770 return;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1771
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1772 PaError err;
19973
7aaf756b1532 use "!", not "not"
John W. Eaton <jwe@octave.org>
parents: 19861
diff changeset
1773 if (! Pa_IsStreamStopped (get_stream ()))
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1778 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1779
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1780 err = Pa_CloseStream (stream);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1786 stream = 0;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1787 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1788
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1789 void
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1790 audiorecorder::append (float sample_l, float sample_r)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1795 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1796
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1797 PaStream *
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1798 audiorecorder::get_stream (void)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1799 {
19517
22e2f11424b3 avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents: 19516
diff changeset
1800 return stream;
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1801 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1810 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1811 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1826 if (nargin > 0)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1852 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1853 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1876 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1877 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1878 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1887 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1888 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1889 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1890
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1894 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1895 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1896 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1905 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1906 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1907 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1908
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1912 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1913 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1914 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1923 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1924 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1925 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1926
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1930 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1931 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1932 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1941 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1942 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1943 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1944
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1948 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1949 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1950 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1959 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1960 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1961 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1962
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1966 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1967 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1968 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1977 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1978 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1979 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1980
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1981 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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1984 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1985 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1986 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1995 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1996 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1997 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
1998
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2002 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2003 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2004 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2013 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2014 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2015 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2016
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2020 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2021 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2022 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2031 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2032 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2033 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2034
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2038 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2039 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2040 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2041 octave_value retval;
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2049 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2050 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2051 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2052
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2056 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2057 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2067 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2068 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2069
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2073 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2074 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2085 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2086 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2087
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2092 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2093 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2108 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2109 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2110
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2114 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2115 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2126 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2127 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2128
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2132 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2133 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2144 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2145 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2146
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2150 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2151 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2162 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2163 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2164
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2168 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2169 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2180 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2181 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2182
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2186 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2187 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2198 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2199 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2200
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2206 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2207 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2233 switch (nargin)
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2243 }
19519
e616c2830413 various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents: 19518
diff changeset
2244
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2252 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2253 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2276 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2277 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2278 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2288 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2289 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2290 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2291
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2295 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2296 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2297 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2307 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2308 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2309 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2310
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2314 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2315 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2316 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2326 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2327 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2328 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2329
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2333 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2334 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2335 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2345 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2346 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2347 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2348
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2352 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2353 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2354 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2364 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2365 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2366 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2367
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2371 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2372 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2373 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2383 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2384 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2385 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2386
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2390 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2391 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2392 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2402 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2403 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2404 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2405
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2409 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2410 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2411 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2412 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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2421 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2422 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2423 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2424
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2428 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2429 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2430 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2440 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2441 return retval;
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2442 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2443
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2447 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2448 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2459 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2460 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2461
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2467 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2468 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2484 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2485 if (args(1).is_matrix_type ())
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2486 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2496 player->set_sample_number (start);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2497 player->set_end_sample (end);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2498 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2499 else
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2506 player->set_sample_number (start);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2507 }
19519
e616c2830413 various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents: 19518
diff changeset
2508
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2509 player->playblocking ();
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2513 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2514 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2515
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2521 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2522 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2539 if (args(1).is_matrix_type ())
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2540 {
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2550 player->set_sample_number (start);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2551 player->set_end_sample (end);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2552 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2553 else
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2560 player->set_sample_number (start);
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2561 }
19519
e616c2830413 various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents: 19518
diff changeset
2562
19510
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2563 player->play ();
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2567 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2568 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2569
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2573 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2574 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2585 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2586 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2587
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2591 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2592 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2603 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2604 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2605
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2609 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2610 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2621 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2622 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2623
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2627 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2628 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2639 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2640 }
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2641
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2645 Undocumented internal function.\n\
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2646 @end deftypefn")
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
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
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2657 #endif
99522db5b911 merge audio source files
John W. Eaton <jwe@octave.org>
parents: 19509
diff changeset
2658 }