Mercurial > octave-nkf
annotate libinterp/dldfcn/audiodevinfo.cc @ 19632:76478d2da117
unconditionally disable the octave_allocator class
* configure.ac: Delete the --enable-octave-allocator option.
* oct-alloc.h: Delete octave_allocator class. Warn if file is
included. Unconditionally define macros to be empty.
* NEWS: Make note of these changes.
* oct-alloc.cc: Delete.
* liboctave/util/module.mk (UTIL_SRC): Remove it from the list.
* make_int.cc, Cell.h, oct-obj.cc, oct-obj.h, audiodevinfo.cc,
ov-base-int.h, ov-base-scalar.h, ov-bool-mat.cc, ov-bool-mat.h,
ov-bool-sparse.cc, ov-bool-sparse.h, ov-bool.cc, ov-bool.h,
ov-builtin.cc, ov-builtin.h, ov-cell.cc, ov-cell.h, ov-ch-mat.h,
ov-class.cc, ov-class.h, ov-classdef.cc, ov-classdef.h, ov-complex.cc,
ov-complex.h, ov-cs-list.cc, ov-cs-list.h, ov-cx-diag.cc,
ov-cx-diag.h, ov-cx-mat.cc, ov-cx-mat.h, ov-cx-sparse.cc,
ov-cx-sparse.h, ov-dld-fcn.cc, ov-dld-fcn.h, ov-fcn-handle.cc,
ov-fcn-handle.h, ov-fcn-inline.cc, ov-fcn-inline.h, ov-fcn.cc,
ov-fcn.h, ov-float.cc, ov-float.h, ov-flt-complex.cc,
ov-flt-complex.h, ov-flt-cx-diag.cc, ov-flt-cx-diag.h,
ov-flt-cx-mat.cc, ov-flt-cx-mat.h, ov-flt-re-diag.cc,
ov-flt-re-diag.h, ov-flt-re-mat.cc, ov-flt-re-mat.h, ov-int16.cc,
ov-int32.cc, ov-int64.cc, ov-int8.cc, ov-intx.h, ov-java.cc,
ov-java.h, ov-mex-fcn.cc, ov-mex-fcn.h, ov-perm.cc, ov-perm.h,
ov-range.cc, ov-range.h, ov-re-diag.cc, ov-re-diag.h, ov-re-mat.cc,
ov-re-mat.h, ov-re-sparse.cc, ov-re-sparse.h, ov-scalar.cc,
ov-scalar.h, ov-str-mat.cc, ov-str-mat.h, ov-struct.cc, ov-struct.h,
ov-uint16.cc, ov-uint32.cc, ov-uint64.cc, ov-uint8.cc, ov-usr-fcn.cc,
ov-usr-fcn.h, ov.cc, ov.h, pt-const.cc, pt-const.h, idx-vector.cc,
idx-vector.h: Delete uses of oct-alloc.h and OCTAVE_ALLOCATOR macros.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 20 Jan 2015 13:43:29 -0500 |
parents | 6464cd19e0f4 |
children | 322d0fe84a8c |
rev | line source |
---|---|
19534
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
1 /* |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
2 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
3 Copyright (C) 2013 Vytautas JanĨauskas |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
4 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
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:
19532
diff
changeset
|
6 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
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:
19532
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:
19532
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:
19532
diff
changeset
|
10 option) any later version. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
11 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
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:
19532
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:
19532
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:
19532
diff
changeset
|
15 for more details. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
16 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
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:
19532
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:
19532
diff
changeset
|
19 <http://www.gnu.org/licenses/>. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
20 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
21 */ |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
22 |
19535
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19534
diff
changeset
|
23 #ifdef HAVE_CONFIG_H |
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19534
diff
changeset
|
24 #include <config.h> |
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19534
diff
changeset
|
25 #endif |
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19534
diff
changeset
|
26 |
19544 | 27 // <cstdint> requires c++11 |
28 #include <stdint.h> | |
29 | |
30 #include <string> | |
31 #include <vector> | |
32 | |
19590
d7057df2968e
use existing function to determine endianness in audiodevinfo.cc
John W. Eaton <jwe@octave.org>
parents:
19589
diff
changeset
|
33 #include "mach-info.h" |
d7057df2968e
use existing function to determine endianness in audiodevinfo.cc
John W. Eaton <jwe@octave.org>
parents:
19589
diff
changeset
|
34 |
19545
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
35 #include "defun-dld.h" |
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
36 #include "error.h" |
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
37 #include "gripes.h" |
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
38 #include "oct-obj.h" |
19544 | 39 #include "ov.h" |
19545
19f75d156ffe
don't include oct.h in Octave source files
John W. Eaton <jwe@octave.org>
parents:
19544
diff
changeset
|
40 #include "ov-int32.h" |
19506
c2031ad6dbe7
Fix octave header includes in audiodevinfo
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19503
diff
changeset
|
41 #include "ov-struct.h" |
19544 | 42 #include "parse.h" |
43 | |
44 #if defined (HAVE_PORTAUDIO) | |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
45 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
46 #include <portaudio.h> |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
47 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
48 PaSampleFormat |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
49 bits_to_format (int bits) |
19507
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
50 { |
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
51 if (bits == 8) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
52 return paInt8; |
19507
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
53 else if (bits == 16) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
54 return paInt16; |
19507
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
55 else if (bits == 24) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
56 return paInt24; |
19507
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
57 else if (bits == 32) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
58 return paInt32; |
19507
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
59 else if (bits == -1) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
60 return paFloat32; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
61 else |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
62 return 0; |
19507
2e174b5e7703
Fix audiodevinfo, audioinfo, audioread and audiowrite build process
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19506
diff
changeset
|
63 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
64 |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
65 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
66 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
67 DEFUN_DLD (audiodevinfo, args, , |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
68 "-*- texinfo -*-\n\ |
19539
ce02743b6f2a
Fix texinfo docstring syntax for all audio functions
Mike Miller <mtmiller@ieee.org>
parents:
19537
diff
changeset
|
69 @deftypefn {Loadable Function} {@var{devinfo} =} audiodevinfo ()\n\ |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
70 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
71 @deftypefnx {Loadable Function} {@var{devs} =} audiodevinfo (@var{io})\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
72 @deftypefnx {Loadable Function} {@var{name} =} audiodevinfo (@var{io}, @var{id})\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
73 @deftypefnx {Loadable Function} {@var{id} =} audiodevinfo (@var{io}, @var{name})\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
74 @deftypefnx {Loadable Function} {@var{id} =} audiodevinfo (@var{io}, @var{rate}, @var{bits}, @var{chans})\n\ |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
75 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
76 @deftypefnx {Loadable Function} {@var{supports} =} audiodevinfo (@var{io}, @var{id}, @var{rate}, @var{bits}, @var{chans})\n\ |
19532
0ac6a4e7369b
change docstrings in audio defundld cc files to work with new texinfo
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19517
diff
changeset
|
77 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
78 Return a structure with fields \"input\" and \"output\".\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
79 The value of each field is a structure array with fields\n\ |
19611
f64cdbe11621
doc: Periodic spellcheck of documentation.
Rik <rik@octave.org>
parents:
19608
diff
changeset
|
80 \"Name\", @nospell{\"DriverVersion\"} and \"ID\" describing an audio device.\n\ |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
81 \n\ |
19532
0ac6a4e7369b
change docstrings in audio defundld cc files to work with new texinfo
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19517
diff
changeset
|
82 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
83 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:
19549
diff
changeset
|
84 devices only. If it is 0, return information about output devices only.\n\ |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
85 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
86 If the optional argument @var{id} is provided, return information about\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
87 corresponding device.\n\ |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
88 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
89 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:
19549
diff
changeset
|
90 named device.\n\ |
19532
0ac6a4e7369b
change docstrings in audio defundld cc files to work with new texinfo
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19517
diff
changeset
|
91 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
92 Given a sampling rate, bits per sample, and number of channels for\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
93 an input or output device, return the ID of the first device that\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
94 supports playback or recording using the specified parameters.\n\ |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
95 \n\ |
19550
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
96 If also given a device ID, return true if the device supports playback\n\ |
fc85d9026bb6
doc fixes for audio functions
John W. Eaton <jwe@octave.org>
parents:
19549
diff
changeset
|
97 or recording using those parameters.\n\ |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
98 @end deftypefn") |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
99 { |
19517
abde714a4f88
let audiodevinfo be built even when PortAudio is not present
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19507
diff
changeset
|
100 octave_value retval; |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
101 |
19517
abde714a4f88
let audiodevinfo be built even when PortAudio is not present
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19507
diff
changeset
|
102 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
103 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
104 int nargin = args.length (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
105 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
106 octave_scalar_map devinfo; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
107 octave_value_list input; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
108 octave_value_list output; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
109 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
110 PaError err = Pa_Initialize (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
111 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
112 if (err != paNoError) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
113 { |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
114 error ("audiodevinfo: PortAudio initialization failed"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
115 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
116 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
117 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
118 int num_devices = Pa_GetDeviceCount (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
119 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
120 if (num_devices < 0) |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
121 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
122 error ("audiodevinfo: no audio device found"); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
123 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
124 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
125 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
126 octave_idx_type numinput = 0, numoutput = 0; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
127 for (int i = 0; i < num_devices; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
128 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
129 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (i); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
130 |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
131 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
132 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
133 warning ("Octave:invalid-audio-device", |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
134 "invalid audio device ID = %d", i); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
135 continue; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
136 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
137 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
138 if (device_info->maxInputChannels != 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
139 numinput++; |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
140 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
141 if (device_info->maxOutputChannels != 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
142 numoutput++; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
143 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
144 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
145 Cell input_name (dim_vector (1, numinput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
146 Cell input_driver_version (dim_vector (1, numinput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
147 Cell input_id (dim_vector (1, numinput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
148 Cell output_name (dim_vector (1, numoutput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
149 Cell output_driver_version (dim_vector (1, numoutput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
150 Cell output_id (dim_vector (1, numoutput)); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
151 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
152 octave_idx_type idx_i = 0, idx_o = 0; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
153 for (int i = 0; i < num_devices; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
154 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
155 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (i); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
156 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
157 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
158 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
159 warning ("Octave:invalid-audio-device", |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
160 "invalid audio device ID = %d", i); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
161 continue; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
162 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
163 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
164 const PaHostApiInfo *api_info = Pa_GetHostApiInfo (device_info->hostApi); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
165 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
166 const char *driver = api_info ? api_info->name : ""; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
167 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
168 char name[128]; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
169 sprintf (name, "%s (%s)", device_info->name, driver); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
170 |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
171 if (device_info->maxInputChannels != 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
172 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
173 input_name(idx_i) = name; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
174 input_driver_version(idx_i) = driver; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
175 input_id(idx_i) = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
176 idx_i++; |
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 |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
179 if (device_info->maxOutputChannels != 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
180 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
181 output_name(idx_o) = name; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
182 output_driver_version(idx_o) = driver; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
183 output_id(idx_o) = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
184 idx_o++; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
185 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
186 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
187 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
188 octave_map inputdev, outputdev; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
189 inputdev.setfield ("Name", input_name); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
190 inputdev.setfield ("DriverVersion", input_driver_version); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
191 inputdev.setfield ("ID", input_id); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
192 outputdev.setfield ("Name", output_name); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
193 outputdev.setfield ("DriverVersion", output_driver_version); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
194 outputdev.setfield ("ID", output_id); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
195 devinfo.setfield ("input", inputdev); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
196 devinfo.setfield ("output", outputdev); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
197 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
198 // Return information about input and output audio devices and |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
199 // their properties. |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
200 if (nargin == 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
201 retval = devinfo; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
202 // Return the number of input or output devices |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
203 else if (nargin == 1) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
204 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
205 if (args(0).int_value () == 0) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
206 retval = numoutput; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
207 else if (args(0).int_value () == 1) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
208 retval = numinput; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
209 else |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
210 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
211 error ("audiodevinfo: please specify 0 for output and 1 for input devices"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
212 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
213 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
214 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
215 // 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
|
216 else if (nargin == 2) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
217 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
218 bool found = false; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
219 int outin = args(0).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
220 if (args(1).is_string ()) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
221 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
222 if (outin == 0) |
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 for (int i = 0; i < numoutput; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
225 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
226 if (output_name(i).string_value () == args(1).string_value ()) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
227 { |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
228 retval = output_id(i); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
229 found = true; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
230 break; |
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 } |
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 else if (outin == 1) |
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 for (int i = 0; i < numinput; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
237 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
238 if (input_name(i).string_value () == args(1).string_value ()) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
239 { |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
240 retval = input_id(i); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
241 found = true; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
242 break; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
243 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
244 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
245 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
246 else |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
247 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
248 error ("audiodevinfo: please specify 0 for output and 1 for input devices"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
249 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
250 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
251 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
252 else |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
253 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
254 if (outin == 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
255 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
256 for (int i = 0; i < numoutput; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
257 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
258 if (output_id(i).int_value () == args(1).int_value ()) |
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 retval = output_name(i); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
261 found = true; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
262 break; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
263 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
264 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
265 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
266 else if (outin == 1) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
267 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
268 for (int i = 0; i < numinput; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
269 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
270 if (input_id(i).int_value () == args(1).int_value ()) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
271 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
272 retval = input_name(i); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
273 found = true; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
274 break; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
275 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
276 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
277 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
278 else |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
279 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
280 error ("audiodevinfo: please specify 0 for output and 1 for input devices"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
281 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
282 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
283 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
284 if (not found) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
285 error ("audiodevinfo: no device meeting the specified criteria found"); |
19503
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 else if (nargin == 3) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
288 { |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
289 // FIXME: what was supposed to happen here? |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
290 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
291 // Return the id of the first device meeting specified criteria. |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
292 else if (nargin == 4) |
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 int io = args(0).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
295 int rate = args(1).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
296 int bits = args(2).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
297 int chans = args(3).int_value (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
298 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
299 for (int i = 0; i < num_devices; i++) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
300 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
301 PaStreamParameters stream_parameters; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
302 stream_parameters.device = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
303 stream_parameters.channelCount = chans; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
304 PaSampleFormat format = bits_to_format (bits); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
305 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
306 if (format != 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
307 stream_parameters.sampleFormat = format; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
308 else |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
309 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
310 error ("audiodevinfo: no such bits per sample format"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
311 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
312 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
313 |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
314 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (i); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
315 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
316 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
317 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
318 warning ("Octave:invalid-audio-device", |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
319 "invalid audio device ID = %d", i); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
320 continue; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
321 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
322 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
323 stream_parameters.suggestedLatency |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
324 = device_info->defaultLowInputLatency; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
325 |
19552 | 326 stream_parameters.hostApiSpecificStreamInfo = 0; |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
327 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
328 if (io == 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
329 { |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
330 if (device_info->maxOutputChannels < chans) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
331 continue; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
332 |
19552 | 333 err = Pa_IsFormatSupported (0, &stream_parameters, rate); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
334 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
335 if (err == paFormatIsSupported) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
336 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
337 retval = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
338 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
339 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
340 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
341 else if (io == 1) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
342 { |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
343 if (device_info->maxInputChannels < chans) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
344 continue; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
345 |
19552 | 346 err = Pa_IsFormatSupported (&stream_parameters, 0, rate); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
347 if (err == paFormatIsSupported) |
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 retval = i; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
350 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
351 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
352 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
353 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
354 retval = -1; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
355 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
356 // Check if given device supports specified playback or recording modes. |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
357 else if (nargin == 5) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
358 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
359 int io = args(0).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
360 int id = args(1).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
361 int rate = args(2).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
362 int bits = args(3).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
363 int chans = args(4).int_value (); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
364 PaStreamParameters stream_parameters; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
365 stream_parameters.device = id; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
366 stream_parameters.channelCount = chans; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
367 PaSampleFormat format = bits_to_format (bits); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
368 if (format != 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
369 stream_parameters.sampleFormat = format; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
370 else |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
371 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
372 error ("audiodevinfo: no such bits per sample format"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
373 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
374 } |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
375 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
376 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (id); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
377 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
378 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
379 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
380 error ("invalid audio device ID = %d", id); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
381 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
382 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
383 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
384 stream_parameters.suggestedLatency |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
385 = device_info->defaultLowInputLatency; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
386 |
19552 | 387 stream_parameters.hostApiSpecificStreamInfo = 0; |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
388 if (io == 0) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
389 { |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
390 if (device_info->maxOutputChannels < chans) |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
391 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
392 retval = 0; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
393 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
394 } |
19552 | 395 err = Pa_IsFormatSupported (0, &stream_parameters, rate); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
396 if (err == paFormatIsSupported) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
397 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
398 retval = 1; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
399 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
400 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
401 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
402 else if (io == 1) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
403 { |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
404 if (device_info->maxInputChannels < chans) |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
405 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
406 retval = 0; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
407 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
408 } |
19552 | 409 err = Pa_IsFormatSupported (&stream_parameters, 0, rate); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
410 if (err == paFormatIsSupported) |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
411 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
412 retval = 1; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
413 return retval; |
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 else |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
417 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
418 error ("audiodevinfo: please specify 0 for output and 1 for input devices"); |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
419 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
420 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
421 retval = 0; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
422 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
423 else |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
424 { |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
425 error ("audiodevinfo: wrong number of arguments"); |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
426 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
427 } |
19517
abde714a4f88
let audiodevinfo be built even when PortAudio is not present
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19507
diff
changeset
|
428 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
429 |
19517
abde714a4f88
let audiodevinfo be built even when PortAudio is not present
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19507
diff
changeset
|
430 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
431 |
19517
abde714a4f88
let audiodevinfo be built even when PortAudio is not present
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19507
diff
changeset
|
432 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
433 |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
434 return retval; |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
435 } |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
436 |
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
437 /* |
19562
4f615cd9a68d
Use "testif HAVE_PORTAUDIO" for new audio function tests
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19560
diff
changeset
|
438 %!testif HAVE_PORTAUDIO |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
439 %! devinfo = audiodevinfo; |
19543 | 440 %! assert (rows (devinfo.input), 1); |
441 %! assert (rows (devinfo.output), 1); | |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
442 |
19562
4f615cd9a68d
Use "testif HAVE_PORTAUDIO" for new audio function tests
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19560
diff
changeset
|
443 %!testif HAVE_PORTAUDIO |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
444 %! devinfo = audiodevinfo; |
19543 | 445 %! nout = audiodevinfo (0); |
446 %! nin = audiodevinfo (1); | |
447 %! assert (columns (devinfo.output), nout); | |
448 %! assert (columns (devinfo.input), nin); | |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
449 |
19562
4f615cd9a68d
Use "testif HAVE_PORTAUDIO" for new audio function tests
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19560
diff
changeset
|
450 %!testif HAVE_PORTAUDIO |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
451 %! devinfo = audiodevinfo; |
19543 | 452 %! nout = audiodevinfo (0); |
453 %! nin = audiodevinfo (1); | |
454 %! for i = 1:nout, | |
455 %! assert (devinfo.output(i).Name, audiodevinfo (0, devinfo.output(i).ID)) | |
456 %! endfor | |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
457 %! for i=1:nin, |
19543 | 458 %! assert (devinfo.input(i).Name, audiodevinfo (1, devinfo.input(i).ID)) |
459 %! endfor | |
19503
ea5c156aa804
audiodevinfo.cc: new file
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
460 |
19562
4f615cd9a68d
Use "testif HAVE_PORTAUDIO" for new audio function tests
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19560
diff
changeset
|
461 %!testif HAVE_PORTAUDIO |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
462 %! devinfo = audiodevinfo; |
19543 | 463 %! nout = audiodevinfo (0); |
464 %! nin = audiodevinfo (1); | |
465 %! for i = 1:nout, | |
466 %! assert (devinfo.output(i).ID, audiodevinfo (0, devinfo.output(i).Name)) | |
467 %! endfor | |
468 %! for i = 1:nin, | |
469 %! assert (devinfo.input(i).ID, audiodevinfo (1, devinfo.input(i).Name)) | |
470 %! endfor | |
19534
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19532
diff
changeset
|
471 */ |
19544 | 472 |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
473 #ifdef HAVE_PORTAUDIO |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
474 |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
475 enum audio_type { TYPE_INT8, TYPE_UINT8, TYPE_UINT16, TYPE_DOUBLE }; |
19544 | 476 |
477 class audioplayer : public octave_base_value | |
478 { | |
479 public: | |
480 audioplayer (void); | |
19604
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
481 ~audioplayer (void); |
19544 | 482 |
483 // Overloaded base functions | |
484 double player_value (void) const { return 0; } | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
485 virtual double scalar_value (bool = false) const { return 0; } |
19544 | 486 void print (std::ostream& os, bool pr_as_read_syntax = false) const; |
487 void print_raw (std::ostream& os, bool pr_as_read_syntax) const; | |
488 | |
489 // Properties | |
490 bool is_constant (void) const { return true; } | |
491 bool is_defined (void) const { return true; } | |
492 bool print_as_scalar (void) const { return true; } | |
493 | |
494 void init (void); | |
495 void init_fn (void); | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
496 void set_y (const octave_value& y); |
19544 | 497 void set_y (octave_function *fn); |
498 void set_y (std::string fn); | |
499 Matrix& get_y (void); | |
19581
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
500 RowVector get_left (void) const; |
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
501 RowVector get_right (void) const; |
19544 | 502 void set_fs (int fs); |
503 int get_fs (void); | |
504 void set_nbits (int nbits); | |
505 int get_nbits (void); | |
506 void set_id (int id); | |
507 int get_id (void); | |
508 int get_channels (void); | |
509 audio_type get_type (void); | |
510 | |
511 void set_sample_number (unsigned int sample); | |
512 unsigned int get_sample_number (void); | |
513 unsigned int get_total_samples (void); | |
514 void set_end_sample (unsigned int sample); | |
515 unsigned int get_end_sample (void); | |
516 void reset_end_sample (void); | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
517 void set_tag (const charMatrix& tag); |
19544 | 518 charMatrix get_tag (void); |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
519 void set_userdata (const octave_value& userdata); |
19544 | 520 octave_value get_userdata (void); |
521 PaStream *get_stream (void); | |
522 | |
523 void playblocking (void); | |
524 void play (void); | |
525 void pause (void); | |
526 void resume (void); | |
527 void stop (void); | |
528 bool isplaying (void); | |
529 | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
530 octave_function *octave_callback_function; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
531 |
19544 | 532 private: |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
533 int id; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
534 int fs; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
535 int nbits; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
536 int channels; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
537 unsigned int sample_number; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
538 unsigned int end_sample; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
539 charMatrix tag; |
19544 | 540 Matrix y; |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
541 octave_value userdata; |
19544 | 542 RowVector left; |
543 RowVector right; | |
544 PaStream *stream; | |
545 PaStreamParameters output_parameters; | |
546 audio_type type; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
547 |
19544 | 548 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA |
549 }; | |
550 | |
19586
8dce81f7448d
increase audio buffer size
John W. Eaton <jwe@octave.org>
parents:
19585
diff
changeset
|
551 static const unsigned int BUFFER_SIZE = 8192; |
19544 | 552 |
553 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (audioplayer, "audioplayer", "audioplayer"); | |
554 | |
555 static int | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
556 octave_play_callback (const void *, void *output, unsigned long frames, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
557 const PaStreamCallbackTimeInfo *, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
558 PaStreamCallbackFlags, void *data) |
19544 | 559 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
560 audioplayer *player = static_cast<audioplayer *> (data); |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
561 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
562 if (! player) |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
563 { |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
564 error ("audio player callback function called without player"); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
565 return paAbort; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
566 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
567 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
568 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:
19584
diff
changeset
|
569 ovl (static_cast<double> (frames)), 1); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
570 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
571 if (error_state || retval.length () < 2) |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
572 { |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
573 error ("audio player callback function failed"); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
574 return paAbort; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
575 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
576 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
577 const Matrix sound = retval(0).matrix_value (); |
19544 | 578 int return_status = retval(1).int_value (); |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
579 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
580 if (error_state || frames != sound.rows () |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
581 || sound.columns () < 1 || sound.columns () > 2) |
19544 | 582 { |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
583 error ("audio player callback function failed"); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
584 return paAbort; |
19544 | 585 } |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
586 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
587 // 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:
19586
diff
changeset
|
588 // 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:
19586
diff
changeset
|
589 // a second copy of the data array to be made. |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
590 |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
591 const ColumnVector sound_l = sound.column (0); |
19608
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19607
diff
changeset
|
592 const ColumnVector sound_r = (sound.columns () == 1 |
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19607
diff
changeset
|
593 ? sound_l : sound.column (1)); |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
594 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
595 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:
19584
diff
changeset
|
596 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:
19584
diff
changeset
|
597 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
598 switch (player->get_nbits ()) |
19544 | 599 { |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
600 case 8: |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
601 { |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
602 static double scale_factor = std::pow (2.0, 7) - 1.0; |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
603 |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
604 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:
19584
diff
changeset
|
605 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
606 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:
19584
diff
changeset
|
607 { |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
608 buffer[2*i] = p_l[i] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
609 buffer[2*i+1] = p_r[i] * scale_factor; |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
610 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
611 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
612 break; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
613 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
614 case 16: |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
615 { |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
616 static double scale_factor = std::pow (2.0, 15) - 1.0; |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
617 |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
618 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:
19584
diff
changeset
|
619 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
620 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:
19584
diff
changeset
|
621 { |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
622 buffer[2*i] = p_l[i] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
623 buffer[2*i+1] = p_r[i] * scale_factor; |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
624 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
625 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
626 break; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
627 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
628 case 24: |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
629 { |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
630 static double scale_factor = std::pow (2.0, 23) - 1.0; |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
631 |
19590
d7057df2968e
use existing function to determine endianness in audiodevinfo.cc
John W. Eaton <jwe@octave.org>
parents:
19589
diff
changeset
|
632 static int big_endian = oct_mach_info::words_big_endian (); |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
633 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
634 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:
19584
diff
changeset
|
635 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
636 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:
19584
diff
changeset
|
637 { |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
638 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:
19584
diff
changeset
|
639 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:
19584
diff
changeset
|
640 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
641 sample_l &= 0x00ffffff; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
642 sample_r &= 0x00ffffff; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
643 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
644 // FIXME: Would a mask work better? |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
645 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:
19584
diff
changeset
|
646 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:
19584
diff
changeset
|
647 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
648 unsigned long offset = i * 6; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
649 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
650 buffer[offset+0] = _sample_l[0+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
651 buffer[offset+1] = _sample_l[1+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
652 buffer[offset+2] = _sample_l[2+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
653 |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
654 buffer[offset+3] = _sample_r[0+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
655 buffer[offset+4] = _sample_r[1+big_endian] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
656 buffer[offset+5] = _sample_r[2+big_endian] * scale_factor; |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
657 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
658 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
659 break; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
660 |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
661 default: |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
662 error ("invalid player bit depth in callback function"); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
663 break; |
19544 | 664 } |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
665 |
19544 | 666 return return_status; |
667 } | |
668 | |
669 static int | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
670 portaudio_play_callback (const void *, void *output, unsigned long frames, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
671 const PaStreamCallbackTimeInfo*, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
672 PaStreamCallbackFlags, void *data) |
19544 | 673 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
674 audioplayer *player = static_cast<audioplayer *> (data); |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
675 |
19585
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
676 if (! player) |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
677 { |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
678 error ("audio player callback function called without player"); |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
679 return paAbort; |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
680 } |
e4bce89532bc
improve error checking and efficiency of octave audio callback function
John W. Eaton <jwe@octave.org>
parents:
19584
diff
changeset
|
681 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
682 // 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:
19586
diff
changeset
|
683 // 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:
19586
diff
changeset
|
684 // a second copy of the *entire* data array to be made when only a |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
685 // small portion (BUFFER_SIZE elements) is usually needed for this |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
686 // callback. |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
687 |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
688 const RowVector sound_l = player->get_left (); |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
689 const RowVector sound_r = player->get_right (); |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
690 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
691 const double *pl = sound_l.data (); |
19599
810cfb00b72b
portaudio_play_callback: Fix stereo playback (bug #43965)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19595
diff
changeset
|
692 const double *pr = sound_r.data (); |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
693 |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
694 if (player->get_type () == TYPE_DOUBLE) |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
695 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
696 switch (player->get_nbits ()) |
19544 | 697 { |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
698 case 8: |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
699 { |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
700 static double scale_factor = std::pow (2.0, 7) - 1.0; |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
701 |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
702 int8_t *buffer = static_cast<int8_t *> (output); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
703 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
704 for (unsigned long j = 0; j < frames; j++) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
705 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
706 unsigned int sample_number = player->get_sample_number (); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
707 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
708 if (sample_number >= player->get_end_sample ()) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
709 return paComplete; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
710 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
711 unsigned long offset = j * 2; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
712 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
713 buffer[offset+0] = pl[sample_number] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
714 buffer[offset+1] = pr[sample_number] * scale_factor; |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
715 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
716 player->set_sample_number (sample_number + 1); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
717 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
718 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
719 break; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
720 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
721 case 16: |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
722 { |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
723 static double scale_factor = std::pow (2.0, 15) - 1.0; |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
724 |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
725 int16_t *buffer = static_cast<int16_t *> (output); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
726 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
727 for (unsigned long j = 0; j < frames; j++) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
728 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
729 unsigned int sample_number = player->get_sample_number (); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
730 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
731 if (sample_number >= player->get_end_sample ()) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
732 return paComplete; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
733 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
734 unsigned long offset = j * 2; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
735 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
736 buffer[offset+0] = pl[sample_number] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
737 buffer[offset+1] = pr[sample_number] * scale_factor; |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
738 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
739 player->set_sample_number (sample_number + 1); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
740 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
741 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
742 break; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
743 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
744 case 24: |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
745 { |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
746 static double scale_factor = std::pow (2.0, 23) - 1.0; |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
747 |
19590
d7057df2968e
use existing function to determine endianness in audiodevinfo.cc
John W. Eaton <jwe@octave.org>
parents:
19589
diff
changeset
|
748 static int big_endian = oct_mach_info::words_big_endian (); |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
749 |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
750 uint8_t *buffer = static_cast<uint8_t *> (output); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
751 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
752 for (unsigned long j = 0; j < frames; j++) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
753 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
754 unsigned int sample_number = player->get_sample_number (); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
755 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
756 if (sample_number >= player->get_end_sample ()) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
757 return paComplete; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
758 |
19589
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
759 int32_t sample_l = pl[sample_number] * scale_factor; |
9bd2f0a07c95
improve performance of audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19586
diff
changeset
|
760 int32_t sample_r = pr[sample_number] * scale_factor; |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
761 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
762 sample_l &= 0x00ffffff; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
763 sample_r &= 0x00ffffff; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
764 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
765 // FIXME: Would a mask work better? |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
766 uint8_t *_sample_l = reinterpret_cast<uint8_t *> (&sample_l); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
767 uint8_t *_sample_r = reinterpret_cast<uint8_t *> (&sample_r); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
768 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
769 unsigned long offset = j * 6; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
770 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
771 buffer[offset+0] = _sample_l[0+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
772 buffer[offset+1] = _sample_l[1+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
773 buffer[offset+2] = _sample_l[2+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
774 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
775 buffer[offset+3] = _sample_r[0+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
776 buffer[offset+4] = _sample_r[1+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
777 buffer[offset+5] = _sample_r[2+big_endian]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
778 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
779 player->set_sample_number (sample_number + 1); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
780 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
781 } |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
782 break; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
783 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
784 default: |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
785 error ("invalid player bit depth in callback function"); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
786 break; |
19544 | 787 } |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
788 } |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
789 else if (player->get_type () == TYPE_INT8) |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
790 { |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
791 int8_t *buffer = static_cast<int8_t *> (output); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
792 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
793 for (unsigned long j = 0; j < frames; j++) |
19544 | 794 { |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
795 unsigned int sample_number = player->get_sample_number (); |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
796 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
797 if (sample_number >= player->get_end_sample ()) |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
798 return paComplete; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
799 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
800 unsigned long offset = j * 2; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
801 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
802 buffer[offset+0] = pl[sample_number]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
803 buffer[offset+1] = pr[sample_number]; |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
804 |
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
805 player->set_sample_number (sample_number + 1); |
19584
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
806 } |
19577
5f313345912f
avoid indexing before beginning of string
John W. Eaton <jwe@octave.org>
parents:
19562
diff
changeset
|
807 } |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
808 else if (player->get_type () == TYPE_UINT8) |
19584
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
809 { |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
810 uint8_t *buffer = static_cast<uint8_t *> (output); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
811 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
812 for (unsigned long j = 0; j < frames; j++) |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
813 { |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
814 unsigned int sample_number = player->get_sample_number (); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
815 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
816 if (sample_number >= player->get_end_sample ()) |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
817 return paComplete; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
818 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
819 unsigned long offset = j * 2; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
820 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
821 buffer[offset+0] = pl[sample_number]; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
822 buffer[offset+1] = pr[sample_number]; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
823 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
824 player->set_sample_number (sample_number + 1); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
825 } |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
826 } |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
827 else if (player->get_type () == TYPE_UINT16) |
19584
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
828 { |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
829 int16_t *buffer = static_cast<int16_t *> (output); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
830 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
831 for (unsigned long j = 0; j < frames; j++) |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
832 { |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
833 unsigned int sample_number = player->get_sample_number (); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
834 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
835 if (sample_number >= player->get_end_sample ()) |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
836 return paComplete; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
837 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
838 unsigned long offset = j * 2; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
839 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
840 buffer[offset+0] = pl[sample_number]; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
841 buffer[offset+1] = pr[sample_number]; |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
842 |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
843 player->set_sample_number (sample_number + 1); |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
844 } |
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
845 } |
19582
7c0e20def8e3
improve efficiency of portaudio callback function
John W. Eaton <jwe@octave.org>
parents:
19581
diff
changeset
|
846 |
19544 | 847 return paContinue; |
848 } | |
849 | |
850 audioplayer::audioplayer (void) | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
851 : octave_callback_function (0), |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
852 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:
19550
diff
changeset
|
853 end_sample (-1), tag (""), y (), userdata (Matrix ()), |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
854 left (), right (), stream (0), output_parameters (), type () |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
855 { } |
19544 | 856 |
19604
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
857 audioplayer::~audioplayer (void) |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
858 { |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
859 if (isplaying ()) |
19604
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
860 { |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
861 warning ("Octave:audio-interrupt", |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
862 "interrupting playing audioplayer"); |
19604
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
863 stop (); |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
864 } |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
865 } |
62ca016dbb2a
audiodevinfo.cc: Stop playback in audioplayers destructor (bug ##43994)
Andreas Weber <andy.weber.aw@gmail.com>
parents:
19600
diff
changeset
|
866 |
19544 | 867 void |
868 audioplayer::print (std::ostream& os, bool pr_as_read_syntax) const | |
869 { | |
870 print_raw (os, pr_as_read_syntax); | |
871 newline (os); | |
872 } | |
873 | |
874 void | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
875 audioplayer::print_raw (std::ostream& os, bool) const |
19544 | 876 { |
877 os << 0; | |
878 } | |
879 | |
880 void | |
881 audioplayer::init_fn (void) | |
882 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
883 if (Pa_Initialize () != paNoError) |
19544 | 884 { |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
885 error ("audioplayer: initialization error!"); |
19544 | 886 return; |
887 } | |
888 | |
19600
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19599
diff
changeset
|
889 if (Pa_GetDeviceCount () < 1) |
19544 | 890 { |
19600
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19599
diff
changeset
|
891 error ("audioplayer: no audio devices found or available!"); |
19544 | 892 return; |
893 } | |
894 | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
895 int device = get_id (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
896 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
897 if (device == -1) |
19544 | 898 device = Pa_GetDefaultOutputDevice (); |
899 | |
900 output_parameters.device = device; | |
901 output_parameters.channelCount = 2; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
902 output_parameters.sampleFormat = bits_to_format (get_nbits ()); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
903 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
904 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
905 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
906 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
907 warning ("Octave:invalid-default-audio-device", |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
908 "invalid default audio device ID = %d", device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
909 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
910 output_parameters.suggestedLatency |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
911 = device_info ? device_info->defaultHighOutputLatency : -1; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
912 |
19552 | 913 output_parameters.hostApiSpecificStreamInfo = 0; |
19544 | 914 } |
915 | |
916 void | |
917 audioplayer::init (void) | |
918 { | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
919 // Both of these variables are unused. Should they be |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
920 // eliminated or is something not yet implemented? |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
921 // |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
922 // int channels = y.rows (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
923 // RowVector *sound_l = get_left (); |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
924 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
925 if (Pa_Initialize () != paNoError) |
19544 | 926 { |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
927 error ("audioplayer: initialization error!"); |
19544 | 928 return; |
929 } | |
930 | |
19600
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19599
diff
changeset
|
931 if (Pa_GetDeviceCount () < 1) |
19544 | 932 { |
19600
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19599
diff
changeset
|
933 error ("audioplayer: no audio devices found or available!"); |
19544 | 934 return; |
935 } | |
936 | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
937 int device = get_id (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
938 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
939 if (device == -1) |
19544 | 940 device = Pa_GetDefaultOutputDevice (); |
941 | |
942 output_parameters.device = device; | |
943 output_parameters.channelCount = 2; | |
944 | |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
945 if (type == TYPE_DOUBLE) |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
946 output_parameters.sampleFormat = bits_to_format (get_nbits ()); |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
947 else if (type == TYPE_INT8) |
19544 | 948 output_parameters.sampleFormat = paInt8; |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
949 else if (type == TYPE_UINT8) |
19544 | 950 output_parameters.sampleFormat = paUInt8; |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
951 else if (type == TYPE_UINT16) |
19544 | 952 output_parameters.sampleFormat = paInt16; |
953 | |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
954 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
955 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
956 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
957 warning ("Octave:invalid-default-audio-device", |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
958 "invalid default audio device ID = %d", device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
959 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
960 output_parameters.suggestedLatency |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
961 = device_info ? device_info->defaultHighOutputLatency : -1; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
962 |
19552 | 963 output_parameters.hostApiSpecificStreamInfo = 0; |
19544 | 964 } |
965 | |
966 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
967 audioplayer::set_y (const octave_value& y_arg) |
19544 | 968 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
969 if (y_arg.is_int8_type ()) |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
970 type = TYPE_INT8; |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
971 else if (y_arg.is_uint8_type ()) |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
972 type = TYPE_UINT8; |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
973 else if (y_arg.is_int16_type ()) |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
974 type = TYPE_UINT16; |
19544 | 975 else |
19595
0d3e67f27d57
* audiodevinfo.cc: Avoid conflict with enum names.
John Donoghue <john.donoghue@ieee.org>
parents:
19594
diff
changeset
|
976 type = TYPE_DOUBLE; |
19544 | 977 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
978 y = y_arg.matrix_value (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
979 |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
980 if (y.rows () > 2) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
981 y = y.transpose (); |
19544 | 982 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
983 channels = y.rows (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
984 left = y.row (0); |
19544 | 985 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
986 if (channels == 2) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
987 right = y.row (1); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
988 |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
989 reset_end_sample (); |
19544 | 990 } |
991 | |
992 void | |
993 audioplayer::set_y (octave_function *fn) | |
994 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
995 octave_callback_function = fn; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
996 channels = 2; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
997 reset_end_sample (); |
19544 | 998 } |
999 | |
1000 Matrix& | |
1001 audioplayer::get_y (void) | |
1002 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1003 return y; |
19544 | 1004 } |
1005 | |
19581
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
1006 RowVector |
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
1007 audioplayer::get_left (void) const |
19544 | 1008 { |
19581
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
1009 return left; |
19544 | 1010 } |
1011 | |
19581
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
1012 RowVector |
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
1013 audioplayer::get_right (void) const |
19544 | 1014 { |
19581
c5b8a91baec6
avoid unnecessary use of pointer in audio code
John W. Eaton <jwe@octave.org>
parents:
19578
diff
changeset
|
1015 return channels == 1 ? left : right; |
19544 | 1016 } |
1017 | |
1018 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1019 audioplayer::set_fs (int fs_arg) |
19544 | 1020 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1021 fs = fs_arg; |
19544 | 1022 } |
1023 | |
1024 int | |
1025 audioplayer::get_fs (void) | |
1026 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1027 return fs; |
19544 | 1028 } |
1029 | |
1030 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1031 audioplayer::set_nbits (int nbits_arg) |
19544 | 1032 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1033 nbits = nbits_arg; |
19544 | 1034 } |
1035 | |
1036 int | |
1037 audioplayer::get_nbits (void) | |
1038 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1039 return nbits; |
19544 | 1040 } |
1041 | |
1042 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1043 audioplayer::set_id (int id_arg) |
19544 | 1044 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1045 id = id_arg; |
19544 | 1046 } |
1047 | |
1048 int | |
1049 audioplayer::get_id (void) | |
1050 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1051 return id; |
19544 | 1052 } |
1053 | |
1054 int | |
1055 audioplayer::get_channels (void) | |
1056 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1057 return channels; |
19544 | 1058 } |
1059 | |
1060 audio_type | |
1061 audioplayer::get_type (void) | |
1062 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1063 return type; |
19544 | 1064 } |
1065 | |
1066 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1067 audioplayer::set_sample_number (unsigned int sample_number_arg) |
19544 | 1068 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1069 sample_number = sample_number_arg; |
19544 | 1070 } |
1071 | |
1072 unsigned int | |
1073 audioplayer::get_sample_number (void) | |
1074 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1075 return sample_number; |
19544 | 1076 } |
1077 | |
1078 unsigned int | |
1079 audioplayer::get_total_samples (void) | |
1080 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1081 return left.length (); |
19544 | 1082 } |
1083 | |
1084 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1085 audioplayer::set_end_sample (unsigned int end_sample_arg) |
19544 | 1086 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1087 end_sample = end_sample_arg; |
19544 | 1088 } |
1089 | |
1090 unsigned int | |
1091 audioplayer::get_end_sample (void) | |
1092 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1093 return end_sample; |
19544 | 1094 } |
1095 | |
1096 void | |
1097 audioplayer::reset_end_sample (void) | |
1098 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1099 set_end_sample (left.length ()); |
19544 | 1100 } |
1101 | |
1102 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1103 audioplayer::set_tag (const charMatrix& tag_arg) |
19544 | 1104 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1105 tag = tag_arg; |
19544 | 1106 } |
1107 | |
1108 charMatrix | |
1109 audioplayer::get_tag (void) | |
1110 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1111 return tag; |
19544 | 1112 } |
1113 | |
1114 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1115 audioplayer::set_userdata (const octave_value& userdata_arg) |
19544 | 1116 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1117 userdata = userdata_arg; |
19544 | 1118 } |
1119 | |
1120 octave_value | |
1121 audioplayer::get_userdata (void) | |
1122 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1123 return userdata; |
19544 | 1124 } |
1125 | |
1126 void | |
1127 audioplayer::playblocking (void) | |
1128 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1129 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1130 stop (); |
19544 | 1131 |
1132 PaError err; | |
1133 uint32_t buffer[BUFFER_SIZE * 2]; | |
19552 | 1134 err = Pa_OpenStream (&stream, 0, &(output_parameters), get_fs (), |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
1135 BUFFER_SIZE, paClipOff, 0, 0); |
19544 | 1136 if (err != paNoError) |
1137 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1138 error ("audioplayer: unable to open audio playback stream"); |
19544 | 1139 return; |
1140 } | |
1141 | |
1142 err = Pa_StartStream (stream); | |
1143 if (err != paNoError) | |
1144 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1145 error ("audioplayer: unable to start start audio playback stream"); |
19544 | 1146 return; |
1147 } | |
1148 | |
1149 unsigned int start, end; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1150 start = get_sample_number (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1151 end = get_end_sample (); |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1152 for (unsigned int i = start; i < end; i += BUFFER_SIZE) |
19544 | 1153 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1154 if (octave_callback_function != 0) |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1155 octave_play_callback (0, buffer, BUFFER_SIZE, 0, 0, this); |
19544 | 1156 else |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1157 portaudio_play_callback (0, buffer, BUFFER_SIZE, 0, 0, this); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1158 |
19544 | 1159 err = Pa_WriteStream (stream, buffer, BUFFER_SIZE); |
1160 } | |
1161 | |
1162 err = Pa_StopStream (stream); | |
1163 if (err != paNoError) | |
1164 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1165 error ("audioplayer: failed to stop audio playback stream"); |
19544 | 1166 return; |
1167 } | |
1168 | |
1169 err = Pa_CloseStream (stream); | |
1170 if (err != paNoError) | |
1171 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1172 error ("audioplayer: failed to close audio playback stream"); |
19544 | 1173 return; |
1174 } | |
1175 | |
1176 stream = 0; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1177 set_sample_number (0); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1178 reset_end_sample (); |
19544 | 1179 } |
1180 | |
1181 void | |
1182 audioplayer::play (void) | |
1183 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1184 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1185 stop (); |
19544 | 1186 |
1187 PaError err; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1188 if (octave_callback_function != 0) |
19552 | 1189 err = Pa_OpenStream (&stream, 0, &(output_parameters), |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1190 get_fs (), BUFFER_SIZE, paClipOff, |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1191 octave_play_callback, this); |
19544 | 1192 else |
19552 | 1193 err = Pa_OpenStream (&stream, 0, &(output_parameters), |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1194 get_fs (), BUFFER_SIZE, paClipOff, |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1195 portaudio_play_callback, this); |
19544 | 1196 |
1197 if (err != paNoError) | |
1198 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1199 error ("audioplayer: failed to open audio playback stream"); |
19544 | 1200 return; |
1201 } | |
1202 | |
1203 err = Pa_StartStream (stream); | |
1204 if (err != paNoError) | |
1205 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1206 error ("audioplayer: failed to start audio playback stream"); |
19544 | 1207 return; |
1208 } | |
1209 } | |
1210 | |
1211 void | |
1212 audioplayer::pause (void) | |
1213 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1214 if (get_stream () == 0) |
19544 | 1215 return; |
1216 | |
1217 PaError err; | |
1218 err = Pa_StopStream (stream); | |
1219 if (err != paNoError) | |
1220 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1221 error ("audiorecorder: failed to stop audio recording stream"); |
19544 | 1222 return; |
1223 } | |
1224 } | |
1225 | |
1226 void | |
1227 audioplayer::resume (void) | |
1228 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1229 if (get_stream () == 0) |
19544 | 1230 return; |
1231 | |
1232 PaError err; | |
1233 err = Pa_StartStream (stream); | |
1234 if (err != paNoError) | |
1235 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1236 error ("audiorecorder: failed to start audio recording stream"); |
19544 | 1237 return; |
1238 } | |
1239 } | |
1240 | |
1241 PaStream * | |
1242 audioplayer::get_stream (void) | |
1243 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1244 return stream; |
19544 | 1245 } |
1246 | |
1247 void | |
1248 audioplayer::stop (void) | |
1249 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1250 if (get_stream () == 0) |
19544 | 1251 return; |
1252 | |
1253 PaError err; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1254 set_sample_number (0); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1255 reset_end_sample (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1256 if (not Pa_IsStreamStopped (get_stream ())) |
19544 | 1257 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1258 err = Pa_AbortStream (get_stream ()); |
19544 | 1259 if (err != paNoError) |
1260 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1261 error ("audioplayer: failed to stop audio playback stream"); |
19544 | 1262 return; |
1263 } | |
1264 } | |
1265 | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1266 err = Pa_CloseStream (get_stream ()); |
19544 | 1267 if (err != paNoError) |
1268 { | |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1269 error ("audioplayer: failed to close audio playback stream"); |
19544 | 1270 return; |
1271 } | |
1272 | |
1273 stream = 0; | |
1274 } | |
1275 | |
1276 bool | |
1277 audioplayer::isplaying (void) | |
1278 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1279 if (get_stream () == 0) |
19544 | 1280 return false; |
1281 | |
1282 PaError err; | |
1283 err = Pa_IsStreamActive (stream); | |
19549
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19548
diff
changeset
|
1284 if (err != 0 && err != 1) |
19544 | 1285 { |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1286 error ("audiorecorder: checking stream activity status failed"); |
19544 | 1287 return false; |
1288 } | |
1289 | |
1290 return (err == 1); | |
1291 } | |
1292 | |
1293 class audiorecorder : public octave_base_value | |
1294 { | |
1295 public: | |
1296 audiorecorder (void); | |
19614
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1297 ~audiorecorder (void); |
19544 | 1298 |
1299 // Overloaded base functions | |
1300 double player_value (void) const { return 0; } | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1301 virtual double scalar_value (bool = false) const { return 0; } |
19544 | 1302 void print (std::ostream& os, bool pr_as_read_syntax = false) const; |
1303 void print_raw (std::ostream& os, bool pr_as_read_syntax) const; | |
1304 | |
1305 // Properties | |
1306 bool is_constant (void) const { return true; } | |
1307 bool is_defined (void) const { return true; } | |
1308 bool print_as_scalar (void) const { return true; } | |
1309 | |
1310 void init (void); | |
1311 void set_fs (int fs); | |
1312 int get_fs (void); | |
1313 void set_nbits (int nbits); | |
1314 int get_nbits (void); | |
1315 void set_id (int id); | |
1316 int get_id (void); | |
1317 void set_channels (int channels); | |
1318 int get_channels (void); | |
1319 audio_type get_type (void); | |
1320 | |
1321 void set_sample_number (unsigned int sample); | |
1322 unsigned int get_sample_number (void); | |
1323 unsigned int get_total_samples (void); | |
1324 void set_end_sample (unsigned int sample); | |
1325 unsigned int get_end_sample (void); | |
1326 void reset_end_sample (void); | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1327 void set_tag (const charMatrix& tag); |
19544 | 1328 charMatrix get_tag (void); |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1329 void set_userdata (const octave_value& userdata); |
19544 | 1330 octave_value get_userdata (void); |
1331 PaStream *get_stream (void); | |
1332 | |
1333 octave_value getaudiodata (void); | |
1334 audioplayer *getplayer (void); | |
1335 bool isrecording (void); | |
1336 audioplayer play (void); | |
1337 void record (void); | |
1338 void recordblocking (float seconds); | |
1339 void pause (void); | |
1340 void resume (void); | |
1341 void stop (void); | |
1342 void append (float sample_l, float sample_r); | |
1343 | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1344 octave_function *octave_callback_function; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1345 |
19544 | 1346 private: |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1347 int id; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1348 int fs; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1349 int nbits; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1350 int channels; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1351 unsigned int sample_number; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1352 unsigned int end_sample; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1353 charMatrix tag; |
19544 | 1354 Matrix y; |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1355 octave_value userdata; |
19544 | 1356 std::vector<float> left; |
1357 std::vector<float> right; | |
1358 PaStream *stream; | |
1359 PaStreamParameters input_parameters; | |
1360 audio_type type; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1361 |
19544 | 1362 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA |
1363 }; | |
1364 | |
1365 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (audiorecorder, "audiorecorder", "audiorecorder"); | |
1366 | |
1367 static int | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1368 octave_record_callback (const void *input, void *, unsigned long frames, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1369 const PaStreamCallbackTimeInfo *, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1370 PaStreamCallbackFlags, void *data) |
19544 | 1371 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1372 audiorecorder *recorder = static_cast<audiorecorder *> (data); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1373 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1374 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1375 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1376 error ("audio recorder callback function called without player"); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1377 return paAbort; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1378 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1379 |
19544 | 1380 int channels = recorder->get_channels (); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1381 |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1382 Matrix sound (frames, 2); |
19544 | 1383 sound.resize (frames, 2); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1384 |
19544 | 1385 if (recorder->get_nbits () == 8) |
1386 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1387 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:
19591
diff
changeset
|
1388 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1389 const int8_t *input8 = static_cast<const int8_t *> (input); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1390 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1391 for (unsigned long i = 0; i < frames; i++) |
19544 | 1392 { |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1393 float sample_l = input8[i*channels] / scale_factor; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1394 float sample_r = input8[i*channels + (channels - 1)] / scale_factor; |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
1395 |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1396 sound(i,0) = sample_l; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1397 sound(i,1) = sample_r; |
19544 | 1398 } |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
1399 } |
19544 | 1400 else if (recorder->get_nbits () == 16) |
1401 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1402 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:
19591
diff
changeset
|
1403 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1404 const int16_t *input16 = static_cast<const int16_t *> (input); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1405 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1406 for (unsigned long i = 0; i < frames; i++) |
19544 | 1407 { |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1408 float sample_l = input16[i*channels] / scale_factor; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1409 float sample_r = input16[i*channels + (channels - 1)] / scale_factor; |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
1410 |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1411 sound(i,0) = sample_l; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1412 sound(i,1) = sample_r; |
19544 | 1413 } |
1414 } | |
1415 else if (recorder->get_nbits () == 24) | |
1416 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1417 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:
19591
diff
changeset
|
1418 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1419 // FIXME: Is there a better way? |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1420 const uint8_t *input24 = static_cast<const uint8_t *> (input); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1421 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1422 int32_t sample_l32 = 0, sample_r32 = 0; |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1423 |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1424 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:
19591
diff
changeset
|
1425 uint8_t *sample_r = reinterpret_cast<uint8_t *> (&sample_r32); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1426 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1427 for (unsigned long i = 0; i < frames; i++) |
19544 | 1428 { |
1429 for (int j = 0; j < 3; j++) | |
1430 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1431 sample_l[j] = input24[i*channels*3 + j]; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1432 sample_r[j] = input24[i*channels*3 + (channels - 1)*3 + j]; |
19544 | 1433 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1434 |
19544 | 1435 if (sample_l32 & 0x00800000) |
1436 sample_l32 |= 0xff000000; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1437 |
19544 | 1438 if (sample_r32 & 0x00800000) |
1439 sample_r32 |= 0xff000000; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1440 |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1441 sound(i,0) = sample_l32 / scale_factor; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1442 sound(i,1) = sample_r32 / scale_factor; |
19544 | 1443 } |
1444 } | |
1445 | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1446 octave_value_list retval |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1447 = feval (recorder->octave_callback_function, ovl (sound), 1); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1448 |
19544 | 1449 return retval(0).int_value (); |
1450 } | |
1451 | |
1452 static int | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1453 portaudio_record_callback (const void *input, void *, unsigned long frames, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1454 const PaStreamCallbackTimeInfo *, |
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1455 PaStreamCallbackFlags, void *data) |
19544 | 1456 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1457 audiorecorder *recorder = static_cast<audiorecorder *> (data); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1458 |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1459 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1460 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1461 error ("audio recorder callback function called without player"); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1462 return paAbort; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1463 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1464 |
19544 | 1465 int channels = recorder->get_channels (); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1466 |
19544 | 1467 if (recorder->get_nbits () == 8) |
1468 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1469 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:
19591
diff
changeset
|
1470 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1471 const int8_t *input8 = static_cast<const int8_t *> (input); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1472 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1473 for (unsigned long i = 0; i < frames; i++) |
19544 | 1474 { |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1475 float sample_l = input8[i*channels] / scale_factor; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1476 float sample_r = input8[i*channels + (channels - 1)] / scale_factor; |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
1477 |
19544 | 1478 recorder->append (sample_l, sample_r); |
1479 } | |
1480 } | |
1481 else if (recorder->get_nbits () == 16) | |
1482 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1483 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:
19591
diff
changeset
|
1484 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1485 const int16_t *input16 = static_cast<const int16_t *> (input); |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1486 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1487 for (unsigned long i = 0; i < frames; i++) |
19544 | 1488 { |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1489 float sample_l = input16[i*channels] / scale_factor; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1490 float sample_r = input16[i*channels + (channels - 1)] / scale_factor; |
19591
182abae666ae
* audiodevinfo.cc: Explicitly use std::pow.
John W. Eaton <jwe@octave.org>
parents:
19590
diff
changeset
|
1491 |
19544 | 1492 recorder->append (sample_l, sample_r); |
1493 } | |
1494 } | |
1495 else if (recorder->get_nbits () == 24) | |
1496 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1497 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:
19591
diff
changeset
|
1498 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1499 // FIXME: Is there a better way? |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1500 const uint8_t *input24 = static_cast<const uint8_t *> (input); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1501 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1502 int32_t sample_l32 = 0, sample_r32 = 0; |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1503 |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1504 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:
19591
diff
changeset
|
1505 uint8_t *sample_r = reinterpret_cast<uint8_t *> (&sample_r32); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1506 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1507 for (unsigned long i = 0; i < frames; i++) |
19544 | 1508 { |
1509 for (int j = 0; j < 3; j++) | |
1510 { | |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1511 sample_l[j] = input24[i*channels*3 + j]; |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1512 sample_r[j] = input24[i*channels*3 + (channels - 1)*3 + j]; |
19544 | 1513 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1514 |
19544 | 1515 if (sample_l32 & 0x00800000) |
1516 sample_l32 |= 0xff000000; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1517 |
19544 | 1518 if (sample_r32 & 0x00800000) |
1519 sample_r32 |= 0xff000000; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1520 |
19592
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1521 recorder->append (sample_l32 / scale_factor, |
0b068273340f
style and other fixes for audiorecorder callback fucntions
John W. Eaton <jwe@octave.org>
parents:
19591
diff
changeset
|
1522 sample_r32 / scale_factor); |
19544 | 1523 } |
1524 } | |
1525 | |
1526 if (recorder->get_sample_number () > recorder->get_end_sample ()) | |
1527 return paComplete; | |
1528 | |
1529 return paContinue; | |
1530 } | |
1531 | |
1532 audiorecorder::audiorecorder (void) | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1533 : octave_callback_function (0), |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1534 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:
19550
diff
changeset
|
1535 end_sample (-1), tag (""), y (), userdata (Matrix ()), |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1536 left (), right (), stream (0), input_parameters (), type () |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1537 { } |
19544 | 1538 |
19614
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1539 audiorecorder::~audiorecorder (void) |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1540 { |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1541 if (isrecording ()) |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1542 { |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1543 warning ("Octave:audio-interrupt", |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1544 "interrupting recording audiorecorder"); |
19614
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1545 stop (); |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1546 } |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1547 } |
478d35191196
maybe stop recorder in audio recorder destructor
John W. Eaton <jwe@octave.org>
parents:
19611
diff
changeset
|
1548 |
19544 | 1549 void |
1550 audiorecorder::print (std::ostream& os, bool pr_as_read_syntax) const | |
1551 { | |
1552 print_raw (os, pr_as_read_syntax); | |
1553 newline (os); | |
1554 } | |
1555 | |
1556 void | |
19546
a5eb03a7e2a5
eliminate unused variable and parameter warnings
John W. Eaton <jwe@octave.org>
parents:
19545
diff
changeset
|
1557 audiorecorder::print_raw (std::ostream& os, bool) const |
19544 | 1558 { |
1559 os << 0; | |
1560 } | |
1561 | |
1562 void | |
1563 audiorecorder::init (void) | |
1564 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1565 if (Pa_Initialize () != paNoError) |
19544 | 1566 { |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1567 error ("audiorecorder: initialization error!"); |
19544 | 1568 return; |
1569 } | |
1570 | |
19600
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19599
diff
changeset
|
1571 if (Pa_GetDeviceCount () < 1) |
19544 | 1572 { |
19600
c36c22808d11
* audiodevinfo.cc: one audio device must be available to play or record (bug #43988)
Stefan Mahr <dac922@gmx.de>
parents:
19599
diff
changeset
|
1573 error ("audiorecorder: no audio devices found or available!"); |
19544 | 1574 return; |
1575 } | |
1576 | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1577 int device = get_id (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1578 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1579 if (device == -1) |
19544 | 1580 device = Pa_GetDefaultInputDevice (); |
1581 | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1582 input_parameters.device = device; |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1583 input_parameters.channelCount = get_channels (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1584 input_parameters.sampleFormat = bits_to_format (get_nbits ()); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1585 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1586 const PaDeviceInfo *device_info = Pa_GetDeviceInfo (device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1587 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1588 if (! device_info) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1589 warning ("Octave:invalid-default-audio-device", |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1590 "invalid default audio device ID = %d", device); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1591 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1592 input_parameters.suggestedLatency |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1593 = device_info ? device_info->defaultHighInputLatency : -1; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1594 |
19552 | 1595 input_parameters.hostApiSpecificStreamInfo = 0; |
19544 | 1596 } |
1597 | |
1598 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1599 audiorecorder::set_fs (int fs_arg) |
19544 | 1600 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1601 fs = fs_arg; |
19544 | 1602 } |
1603 | |
1604 int | |
1605 audiorecorder::get_fs (void) | |
1606 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1607 return fs; |
19544 | 1608 } |
1609 | |
1610 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1611 audiorecorder::set_nbits (int nbits_arg) |
19544 | 1612 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1613 nbits = nbits_arg; |
19544 | 1614 } |
1615 | |
1616 int | |
1617 audiorecorder::get_nbits (void) | |
1618 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1619 return nbits; |
19544 | 1620 } |
1621 | |
1622 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1623 audiorecorder::set_id (int id_arg) |
19544 | 1624 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1625 id = id_arg; |
19544 | 1626 } |
1627 | |
1628 int | |
1629 audiorecorder::get_id (void) | |
1630 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1631 return id; |
19544 | 1632 } |
1633 | |
1634 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1635 audiorecorder::set_channels (int channels_arg) |
19544 | 1636 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1637 assert (channels_arg == 1 || channels_arg == 2); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1638 channels = channels_arg; |
19544 | 1639 } |
1640 | |
1641 int | |
1642 audiorecorder::get_channels (void) | |
1643 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1644 return channels; |
19544 | 1645 } |
1646 | |
1647 audio_type | |
1648 audiorecorder::get_type (void) | |
1649 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1650 return type; |
19544 | 1651 } |
1652 | |
1653 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1654 audiorecorder::set_sample_number (unsigned int sample_number_arg) |
19544 | 1655 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1656 sample_number = sample_number_arg; |
19544 | 1657 } |
1658 | |
1659 unsigned int | |
1660 audiorecorder::get_sample_number (void) | |
1661 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1662 return sample_number; |
19544 | 1663 } |
1664 | |
1665 unsigned int | |
1666 audiorecorder::get_total_samples (void) | |
1667 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1668 return left.size (); |
19544 | 1669 } |
1670 | |
1671 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1672 audiorecorder::set_end_sample (unsigned int end_sample_arg) |
19544 | 1673 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1674 end_sample = end_sample_arg; |
19544 | 1675 } |
1676 | |
1677 unsigned int | |
1678 audiorecorder::get_end_sample (void) | |
1679 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1680 return end_sample; |
19544 | 1681 } |
1682 | |
1683 void | |
1684 audiorecorder::reset_end_sample (void) | |
1685 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1686 set_end_sample (left.size ()); |
19544 | 1687 } |
1688 | |
1689 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1690 audiorecorder::set_tag (const charMatrix& tag_arg) |
19544 | 1691 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1692 tag = tag_arg; |
19544 | 1693 } |
1694 | |
1695 charMatrix | |
1696 audiorecorder::get_tag (void) | |
1697 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1698 return tag; |
19544 | 1699 } |
1700 | |
1701 void | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1702 audiorecorder::set_userdata (const octave_value& userdata_arg) |
19544 | 1703 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1704 userdata = userdata_arg; |
19544 | 1705 } |
1706 | |
1707 octave_value | |
1708 audiorecorder::get_userdata (void) | |
1709 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1710 return userdata; |
19544 | 1711 } |
1712 | |
1713 octave_value | |
1714 audiorecorder::getaudiodata (void) | |
1715 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1716 Matrix audio (2, left.size ()); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1717 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1718 for (unsigned int i = 0; i < left.size (); i++) |
19544 | 1719 { |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1720 audio(0,i) = left[i]; |
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1721 audio(1,i) = right[i]; |
19544 | 1722 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1723 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1724 return audio; |
19544 | 1725 } |
1726 | |
1727 audioplayer * | |
1728 audiorecorder::getplayer (void) | |
1729 { | |
1730 audioplayer *player = new audioplayer (); | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1731 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1732 player->set_y (getaudiodata ()); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1733 player->set_fs (get_fs ()); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1734 player->set_nbits (get_nbits ()); |
19544 | 1735 player->init (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1736 |
19544 | 1737 return player; |
1738 } | |
1739 | |
1740 bool | |
1741 audiorecorder::isrecording (void) | |
1742 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1743 if (get_stream () == 0) |
19544 | 1744 return false; |
1745 | |
1746 PaError err; | |
1747 err = Pa_IsStreamActive (stream); | |
19549
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19548
diff
changeset
|
1748 if (err != 0 && err != 1) |
19544 | 1749 { |
19617
6464cd19e0f4
* audiodevinfo.cc: Style fixes. Warning IDs.
John W. Eaton <jwe@octave.org>
parents:
19614
diff
changeset
|
1750 error ("audiorecorder: checking stream activity status failed"); |
19544 | 1751 return false; |
1752 } | |
1753 | |
1754 return (err == 1); | |
1755 } | |
1756 | |
1757 void | |
1758 audiorecorder::record (void) | |
1759 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1760 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1761 stop (); |
19544 | 1762 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1763 left.clear (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1764 right.clear (); |
19544 | 1765 PaError err; |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1766 if (octave_callback_function != 0) |
19544 | 1767 { |
19552 | 1768 err = Pa_OpenStream (&stream, &(input_parameters), 0, |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1769 get_fs (), BUFFER_SIZE, paClipOff, |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1770 octave_record_callback, this); |
19544 | 1771 } |
1772 else | |
1773 { | |
19552 | 1774 err = Pa_OpenStream (&stream, &(input_parameters), 0, |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1775 get_fs (), BUFFER_SIZE, paClipOff, |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1776 portaudio_record_callback, this); |
19544 | 1777 } |
1778 if (err != paNoError) | |
1779 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1780 error ("audiorecorder: unable to open audio recording stream"); |
19544 | 1781 return; |
1782 } | |
1783 err = Pa_StartStream (stream); | |
1784 if (err != paNoError) | |
1785 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1786 error ("audiorecorder: unable to start audio recording stream"); |
19544 | 1787 return; |
1788 } | |
1789 } | |
1790 | |
1791 void | |
1792 audiorecorder::recordblocking (float seconds) | |
1793 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1794 if (get_stream ()) |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1795 stop (); |
19544 | 1796 |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1797 left.clear (); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1798 right.clear (); |
19544 | 1799 |
1800 PaError err; | |
19552 | 1801 err = Pa_OpenStream (&stream, &(input_parameters), 0, |
1802 get_fs (), BUFFER_SIZE, paClipOff, 0, this); | |
19544 | 1803 if (err != paNoError) |
1804 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1805 error ("audiorecorder: unable to open audio recording stream"); |
19544 | 1806 return; |
1807 } | |
1808 | |
1809 err = Pa_StartStream (stream); | |
1810 if (err != paNoError) | |
1811 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1812 error ("audiorecorder: unable to start audio recording stream"); |
19544 | 1813 return; |
1814 } | |
1815 | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1816 unsigned int frames = seconds * get_fs (); |
19544 | 1817 uint8_t buffer[BUFFER_SIZE * 2 * 3]; |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
1818 for (unsigned long i = 0; i < frames / BUFFER_SIZE; i++) |
19544 | 1819 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1820 Pa_ReadStream (get_stream (), buffer, BUFFER_SIZE); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1821 if (octave_callback_function != 0) |
19552 | 1822 octave_record_callback (buffer, 0, BUFFER_SIZE, 0, 0, this); |
19544 | 1823 else |
19552 | 1824 portaudio_record_callback (buffer, 0, BUFFER_SIZE, 0, 0, this); |
19544 | 1825 } |
1826 } | |
1827 | |
1828 void | |
1829 audiorecorder::pause (void) | |
1830 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1831 if (get_stream () == 0) |
19544 | 1832 return; |
1833 | |
1834 PaError err; | |
1835 err = Pa_StopStream (stream); | |
1836 if (err != paNoError) | |
1837 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1838 error ("audiorecorder: unable to stop audio recording stream"); |
19544 | 1839 return; |
1840 } | |
1841 } | |
1842 | |
1843 void | |
1844 audiorecorder::resume (void) | |
1845 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1846 if (get_stream () == 0) |
19544 | 1847 return; |
1848 | |
1849 PaError err; | |
1850 err = Pa_StartStream (stream); | |
1851 if (err != paNoError) | |
1852 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1853 error ("audiorecorder: unable to start audio recording stream"); |
19544 | 1854 return; |
1855 } | |
1856 } | |
1857 | |
1858 void | |
1859 audiorecorder::stop (void) | |
1860 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1861 if (get_stream () == 0) |
19544 | 1862 return; |
1863 | |
1864 PaError err; | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1865 if (not Pa_IsStreamStopped (get_stream ())) |
19544 | 1866 { |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1867 err = Pa_AbortStream (get_stream ()); |
19544 | 1868 if (err != paNoError) |
1869 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1870 error ("audioplayer: unable to stop audio playback stream"); |
19544 | 1871 return; |
1872 } | |
1873 } | |
1874 | |
1875 err = Pa_CloseStream (stream); | |
1876 if (err != paNoError) | |
1877 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1878 error ("audiorecorder: unable to close audio recording stream"); |
19544 | 1879 return; |
1880 } | |
1881 | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1882 set_sample_number (0); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1883 reset_end_sample (); |
19544 | 1884 stream = 0; |
1885 } | |
1886 | |
1887 void | |
1888 audiorecorder::append (float sample_l, float sample_r) | |
1889 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1890 left.push_back (sample_l); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1891 right.push_back (sample_r); |
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1892 set_sample_number (get_sample_number () + 1); |
19544 | 1893 } |
1894 | |
1895 PaStream * | |
1896 audiorecorder::get_stream (void) | |
1897 { | |
19551
22e2f11424b3
avoid more warnings in audio code
John W. Eaton <jwe@octave.org>
parents:
19550
diff
changeset
|
1898 return stream; |
19544 | 1899 } |
1900 | |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
1901 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
1902 |
19544 | 1903 DEFUN_DLD (__recorder_audiorecorder__, args, , |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
1904 "-*- texinfo -*-\n\ |
19544 | 1905 @deftypefn {Loadable Function} {@var{recorder} =} __recorder_audiorecorder__ (@var{fs}, @var{nbits}, @var{channels})\n\ |
1906 @deftypefnx {Loadable Function} {@var{recorder} =} __recorder_audiorecorder__ (@var{fs}, @var{nbits}, @var{channels}, @var{id})\n\ | |
1907 @deftypefnx {Loadable Function} {@var{recorder} =} __recorder_audiorecorder__ (@var{fcn}, @dots{})\n\ | |
1908 Undocumented internal function.\n\ | |
1909 @end deftypefn") | |
1910 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1911 octave_value retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1912 |
19544 | 1913 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1914 |
19544 | 1915 int nargin = args.length (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1916 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1917 audiorecorder* recorder = new audiorecorder (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1918 |
19544 | 1919 int offset = 0; |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1920 |
19544 | 1921 if (nargin > 0) |
1922 { | |
19608
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19607
diff
changeset
|
1923 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:
19607
diff
changeset
|
1924 || args(0).is_inline_function ()); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1925 |
19544 | 1926 if (is_function) |
1927 { | |
19594
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
1928 error ("audioplayer: callbacks not yet implemented"); |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
1929 return retval; |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
1930 |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
1931 // recorder->octave_callback_function = args(0).function_value (); |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
1932 // offset = 1; |
19544 | 1933 } |
1934 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1935 |
19544 | 1936 switch (nargin - offset) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1937 { |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1938 case 3: |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1939 recorder->set_fs (args(0 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1940 recorder->set_nbits (args(1 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1941 recorder->set_channels (args(2 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1942 break; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1943 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1944 case 4: |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1945 recorder->set_fs (args(0 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1946 recorder->set_nbits (args(1 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1947 recorder->set_channels (args(2 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1948 recorder->set_id (args(3 + offset).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1949 break; |
19544 | 1950 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1951 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1952 recorder->init (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1953 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1954 retval = recorder; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1955 |
19544 | 1956 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1957 |
19544 | 1958 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1959 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1960 #endif |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1961 |
19544 | 1962 return retval; |
1963 } | |
1964 | |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
1965 #ifdef HAVE_PORTAUDIO |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
1966 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1967 static audiorecorder * |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1968 get_recorder (const octave_value& ov) |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1969 { |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1970 const octave_base_value& rep = ov.get_rep (); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1971 |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1972 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:
19546
diff
changeset
|
1973 |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1974 return dynamic_cast<audiorecorder *> (ncrep); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1975 } |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1976 |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
1977 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
1978 |
19544 | 1979 DEFUN_DLD (__recorder_getaudiodata__, args, , |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
1980 "-*- texinfo -*-\n\ |
19544 | 1981 @deftypefn {Loadable Function} {@var{data}} __recorder_getaudiodata__ (@var{recorder})\n\ |
1982 Undocumented internal function.\n\ | |
1983 @end deftypefn") | |
1984 { | |
1985 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1986 |
19544 | 1987 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1988 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
1989 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1990 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1991 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1992 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1993 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1994 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1995 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
1996 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1997 retval = recorder->getaudiodata (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
1998 |
19544 | 1999 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2000 |
19544 | 2001 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2002 |
19544 | 2003 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2004 |
19544 | 2005 return retval; |
2006 } | |
2007 | |
2008 DEFUN_DLD (__recorder_get_channels__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2009 "-*- texinfo -*-\n\ |
19544 | 2010 @deftypefn {Loadable Function} {@var{n} =} __recorder_get_channels__ (@var{recorder})\n\ |
2011 Undocumented internal function.\n\ | |
2012 @end deftypefn") | |
2013 { | |
2014 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2015 |
19544 | 2016 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2017 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2018 if (args.length () == 1) |
19544 | 2019 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2020 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2021 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2022 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2023 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2024 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2025 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2026 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2027 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2028 retval = recorder->get_channels (); |
19544 | 2029 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2030 |
19544 | 2031 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2032 |
19544 | 2033 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2034 |
19544 | 2035 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2036 |
19544 | 2037 return retval; |
2038 } | |
2039 | |
2040 DEFUN_DLD (__recorder_get_fs__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2041 "-*- texinfo -*-\n\ |
19544 | 2042 @deftypefn {Loadable Function} {@var{fs} =} __recorder_get_fs__ (@var{recorder})\n\ |
2043 Undocumented internal function.\n\ | |
2044 @end deftypefn") | |
2045 { | |
2046 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2047 |
19544 | 2048 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2049 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2050 if (args.length () == 1) |
19544 | 2051 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2052 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2053 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2054 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2055 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2056 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2057 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2058 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2059 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2060 retval = recorder->get_fs (); |
19544 | 2061 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2062 |
19544 | 2063 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2064 |
19544 | 2065 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2066 |
19544 | 2067 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2068 |
19544 | 2069 return retval; |
2070 } | |
2071 | |
2072 DEFUN_DLD (__recorder_get_id__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2073 "-*- texinfo -*-\n\ |
19544 | 2074 @deftypefn {Loadable Function} {@var{id} =} __recorder_get_id__ (@var{recorder})\n\ |
2075 Undocumented internal function.\n\ | |
2076 @end deftypefn") | |
2077 { | |
2078 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2079 |
19544 | 2080 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2081 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2082 if (args.length () == 1) |
19544 | 2083 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2084 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2085 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2086 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2087 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2088 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2089 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2090 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2091 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2092 retval = recorder->get_id (); |
19544 | 2093 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2094 |
19544 | 2095 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2096 |
19544 | 2097 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2098 |
19544 | 2099 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2100 |
19544 | 2101 return retval; |
2102 } | |
2103 | |
2104 DEFUN_DLD (__recorder_get_nbits__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2105 "-*- texinfo -*-\n\ |
19544 | 2106 @deftypefn {Loadable Function} {@var{nbits} =} __recorder_get_nbits__ (@var{recorder})\n\ |
2107 Undocumented internal function.\n\ | |
2108 @end deftypefn") | |
2109 { | |
2110 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2111 |
19544 | 2112 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2113 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2114 if (args.length () == 1) |
19544 | 2115 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2116 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2117 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2118 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2119 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2120 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2121 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2122 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2123 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2124 retval = recorder->get_nbits (); |
19544 | 2125 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2126 |
19544 | 2127 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2128 |
19544 | 2129 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2130 |
19544 | 2131 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2132 |
19544 | 2133 return retval; |
2134 } | |
2135 | |
2136 DEFUN_DLD (__recorder_get_sample_number__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2137 "-*- texinfo -*-\n\ |
19544 | 2138 @deftypefn {Loadable Function} {@var{n} =} __recorder_get_sample_number__ (@var{recorder})\n\ |
2139 Undocumented internal function.\n\ | |
2140 @end deftypefn") | |
2141 { | |
2142 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2143 |
19544 | 2144 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2145 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2146 if (args.length () == 1) |
19544 | 2147 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2148 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2149 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2150 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2151 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2152 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2153 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2154 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2155 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2156 retval = recorder->get_sample_number (); |
19544 | 2157 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2158 |
19544 | 2159 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2160 |
19544 | 2161 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2162 |
19544 | 2163 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2164 |
19544 | 2165 return retval; |
2166 } | |
2167 | |
2168 DEFUN_DLD (__recorder_get_tag__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2169 "-*- texinfo -*-\n\ |
19544 | 2170 @deftypefn {Loadable Function} {@var{tag} =} __recorder_get_tag__ (@var{recorder})\n\ |
2171 Undocumented internal function.\n\ | |
2172 @end deftypefn") | |
2173 { | |
2174 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2175 |
19544 | 2176 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2177 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2178 if (args.length () == 1) |
19544 | 2179 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2180 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2181 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2182 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2183 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2184 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2185 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2186 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2187 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2188 retval = recorder->get_tag (); |
19544 | 2189 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2190 |
19544 | 2191 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2192 |
19544 | 2193 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2194 |
19544 | 2195 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2196 |
19544 | 2197 return retval; |
2198 } | |
2199 | |
2200 DEFUN_DLD (__recorder_get_total_samples__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2201 "-*- texinfo -*-\n\ |
19544 | 2202 @deftypefn {Loadable Function} {@var{n} =} __recorder_get_total_samples__ (@var{recorder})\n\ |
2203 Undocumented internal function.\n\ | |
2204 @end deftypefn") | |
2205 { | |
2206 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2207 |
19544 | 2208 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2209 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2210 if (args.length () == 1) |
19544 | 2211 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2212 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2213 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2214 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2215 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2216 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2217 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2218 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2219 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2220 retval = recorder->get_total_samples (); |
19544 | 2221 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2222 |
19544 | 2223 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2224 |
19544 | 2225 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2226 |
19544 | 2227 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2228 |
19544 | 2229 return retval; |
2230 } | |
2231 | |
2232 DEFUN_DLD (__recorder_get_userdata__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2233 "-*- texinfo -*-\n\ |
19544 | 2234 @deftypefn {Loadable Function} {@var{data} =} __recorder_get_userdata__ (@var{recorder})\n\ |
2235 Undocumented internal function.\n\ | |
2236 @end deftypefn") | |
2237 { | |
2238 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2239 |
19544 | 2240 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2241 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2242 if (args.length () == 1) |
19544 | 2243 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2244 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2245 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2246 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2247 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2248 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2249 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2250 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2251 |
19544 | 2252 retval = recorder->get_userdata (); |
2253 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2254 |
19544 | 2255 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2256 |
19544 | 2257 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2258 |
19544 | 2259 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2260 |
19544 | 2261 return retval; |
2262 } | |
2263 | |
2264 DEFUN_DLD (__recorder_isrecording__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2265 "-*- texinfo -*-\n\ |
19544 | 2266 @deftypefn {Loadable Function} {} __recorder_isrecording__ (@var{recorder})\n\ |
2267 Undocumented internal function.\n\ | |
2268 @end deftypefn") | |
2269 { | |
2270 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2271 |
19544 | 2272 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2273 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2274 if (args.length () == 1) |
19544 | 2275 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2276 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2277 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2278 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2279 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2280 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2281 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2282 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2283 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2284 retval = recorder->isrecording () ? true : false; |
19544 | 2285 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2286 |
19544 | 2287 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2288 |
19544 | 2289 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2290 |
19544 | 2291 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2292 |
19544 | 2293 return retval; |
2294 } | |
2295 | |
2296 DEFUN_DLD (__recorder_pause__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2297 "-*- texinfo -*-\n\ |
19544 | 2298 @deftypefn {Loadable Function} {} __recorder_pause__ (@var{recorder})\n\ |
2299 Undocumented internal function.\n\ | |
2300 @end deftypefn") | |
2301 { | |
2302 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2303 |
19544 | 2304 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2305 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2306 if (args.length () == 1) |
19544 | 2307 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2308 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2309 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2310 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2311 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2312 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2313 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2314 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2315 |
19544 | 2316 recorder->pause (); |
2317 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2318 |
19544 | 2319 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2320 |
19544 | 2321 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2322 |
19544 | 2323 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2324 |
19544 | 2325 return retval; |
2326 } | |
2327 | |
2328 DEFUN_DLD (__recorder_recordblocking__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2329 "-*- texinfo -*-\n\ |
19544 | 2330 @deftypefn {Loadable Function} {} __recorder_recordblocking__ (@var{recorder}, @var{seconds})\n\ |
2331 Undocumented internal function.\n\ | |
2332 @end deftypefn") | |
2333 { | |
2334 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2335 |
19544 | 2336 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2337 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2338 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2339 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2340 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2341 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2342 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2343 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2344 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2345 |
19544 | 2346 recorder->recordblocking (args(1).float_value ()); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2347 |
19544 | 2348 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2349 |
19544 | 2350 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2351 |
19544 | 2352 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2353 |
19544 | 2354 return retval; |
2355 } | |
2356 | |
2357 DEFUN_DLD (__recorder_record__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2358 "-*- texinfo -*-\n\ |
19544 | 2359 @deftypefn {Loadable Function} {} __recorder_record__ (@var{recorder})\n\ |
2360 @deftypefnx {Loadable Function} {} __recorder_record__ (@var{recorder}, @var{seconds})\n\ | |
2361 Undocumented internal function.\n\ | |
2362 @end deftypefn") | |
2363 { | |
2364 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2365 |
19544 | 2366 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2367 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2368 audiorecorder *recorder = get_recorder (args(0)); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2369 |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2370 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2371 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2372 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2373 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2374 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2375 |
19544 | 2376 if (args.length () == 1) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2377 recorder->record (); |
19544 | 2378 else if (args.length () == 2) |
2379 { | |
2380 recorder->set_end_sample (args(1).int_value () * recorder->get_fs ()); | |
2381 recorder->record (); | |
2382 } | |
2383 else | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2384 error ("audiorecorder: wrong number of arguments passed to record"); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2385 |
19544 | 2386 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2387 |
19544 | 2388 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2389 |
19544 | 2390 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2391 |
19544 | 2392 return retval; |
2393 } | |
2394 | |
2395 DEFUN_DLD (__recorder_resume__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2396 "-*- texinfo -*-\n\ |
19544 | 2397 @deftypefn {Loadable Function} {} __recorder_resume__ (@var{recorder})\n\ |
2398 Undocumented internal function.\n\ | |
2399 @end deftypefn") | |
2400 { | |
2401 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2402 |
19544 | 2403 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2404 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2405 if (args.length () == 1) |
19544 | 2406 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2407 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2408 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2409 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2410 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2411 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2412 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2413 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2414 |
19544 | 2415 recorder->resume (); |
2416 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2417 |
19544 | 2418 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2419 |
19544 | 2420 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2421 |
19544 | 2422 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2423 |
19544 | 2424 return retval; |
2425 } | |
2426 | |
2427 DEFUN_DLD (__recorder_set_fs__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2428 "-*- texinfo -*-\n\ |
19544 | 2429 @deftypefn {Loadable Function} {} __recorder_set_fs__ (@var{recorder}, @var{fs})\n\ |
2430 Undocumented internal function.\n\ | |
2431 @end deftypefn") | |
2432 { | |
2433 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2434 |
19544 | 2435 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2436 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2437 if (args.length () == 2) |
19544 | 2438 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2439 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2440 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2441 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2442 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2443 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2444 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2445 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2446 |
19544 | 2447 recorder->set_fs (args(1).int_value ()); |
2448 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2449 |
19544 | 2450 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2451 |
19544 | 2452 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2453 |
19544 | 2454 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2455 |
19544 | 2456 return retval; |
2457 } | |
2458 | |
2459 DEFUN_DLD (__recorder_set_tag__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2460 "-*- texinfo -*-\n\ |
19544 | 2461 @deftypefn {Loadable Function} {} __recorder_set_tag__ (@var{recorder}, @var{tag})\n\ |
2462 Undocumented internal function.\n\ | |
2463 @end deftypefn") | |
2464 { | |
2465 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2466 |
19544 | 2467 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2468 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2469 if (args.length () == 2) |
19544 | 2470 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2471 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2472 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2473 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2474 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2475 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2476 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2477 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2478 |
19544 | 2479 recorder->set_tag (args(1).char_matrix_value ()); |
2480 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2481 |
19544 | 2482 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2483 |
19544 | 2484 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2485 |
19544 | 2486 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2487 |
19544 | 2488 return retval; |
2489 } | |
2490 | |
2491 DEFUN_DLD (__recorder_set_userdata__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2492 "-*- texinfo -*-\n\ |
19544 | 2493 @deftypefn {Loadable Function} {} __recorder_set_userdata__ (@var{recorder}, @var{data})\n\ |
2494 Undocumented internal function.\n\ | |
2495 @end deftypefn") | |
2496 { | |
2497 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2498 |
19544 | 2499 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2500 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2501 if (args.length () == 2) |
19544 | 2502 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2503 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2504 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2505 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2506 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2507 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2508 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2509 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2510 |
19544 | 2511 recorder->set_userdata (args(1)); |
2512 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2513 |
19544 | 2514 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2515 |
19544 | 2516 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2517 |
19544 | 2518 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2519 |
19544 | 2520 return retval; |
2521 } | |
2522 | |
2523 DEFUN_DLD (__recorder_stop__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2524 "-*- texinfo -*-\n\ |
19544 | 2525 @deftypefn {Loadable Function} {} __recorder_stop__ (@var{recorder})\n\ |
2526 Undocumented internal function.\n\ | |
2527 @end deftypefn") | |
2528 { | |
2529 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2530 |
19544 | 2531 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2532 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2533 audiorecorder *recorder = get_recorder (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2534 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2535 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2536 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2537 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2538 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2539 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2540 |
19544 | 2541 recorder->stop (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2542 |
19544 | 2543 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2544 |
19544 | 2545 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2546 |
19544 | 2547 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2548 |
19544 | 2549 return retval; |
2550 } | |
2551 | |
2552 DEFUN_DLD (__player_audioplayer__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2553 "-*- texinfo -*-\n\ |
19544 | 2554 @deftypefn {Loadable Function} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs})\n\ |
2555 @deftypefnx {Loadable Function} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs}, @var{nbits})\n\ | |
2556 @deftypefnx {Loadable Function} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs}, @var{nbits}, @var{id})\n\ | |
2557 Undocumented internal function.\n\ | |
2558 @end deftypefn") | |
2559 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2560 octave_value retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2561 |
19544 | 2562 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2563 |
19544 | 2564 int nargin = args.length (); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2565 |
19583
c332c72d4960
prevent completely invalid call to __player_audioplayer__
John W. Eaton <jwe@octave.org>
parents:
19582
diff
changeset
|
2566 if (nargin < 2 || nargin > 4) |
c332c72d4960
prevent completely invalid call to __player_audioplayer__
John W. Eaton <jwe@octave.org>
parents:
19582
diff
changeset
|
2567 { |
c332c72d4960
prevent completely invalid call to __player_audioplayer__
John W. Eaton <jwe@octave.org>
parents:
19582
diff
changeset
|
2568 print_usage (); |
c332c72d4960
prevent completely invalid call to __player_audioplayer__
John W. Eaton <jwe@octave.org>
parents:
19582
diff
changeset
|
2569 return retval; |
c332c72d4960
prevent completely invalid call to __player_audioplayer__
John W. Eaton <jwe@octave.org>
parents:
19582
diff
changeset
|
2570 } |
c332c72d4960
prevent completely invalid call to __player_audioplayer__
John W. Eaton <jwe@octave.org>
parents:
19582
diff
changeset
|
2571 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2572 audioplayer* recorder = new audioplayer (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2573 |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2574 if (! recorder) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2575 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2576 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2577 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2578 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2579 |
19608
47d778e6a518
* audiodevinfo.cc: Minor style fixes.
John W. Eaton <jwe@octave.org>
parents:
19607
diff
changeset
|
2580 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:
19607
diff
changeset
|
2581 || args(0).is_inline_function ()); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2582 |
19544 | 2583 if (is_function) |
19594
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
2584 { |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
2585 error ("audioplayer: callbacks not yet implemented"); |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
2586 return retval; |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
2587 |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
2588 // recorder->set_y (args(0).function_value ()); |
e75df9e43e63
disable Octave audio callback functions
John W. Eaton <jwe@octave.org>
parents:
19592
diff
changeset
|
2589 } |
19544 | 2590 else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2591 recorder->set_y (args(0)); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2592 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2593 recorder->set_fs (args(1).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2594 |
19544 | 2595 switch (nargin) |
2596 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2597 case 3: |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2598 recorder->set_nbits (args(2).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2599 break; |
19584
0083cc91bfaa
* audiodevinfo.cc: Style fixes.
John W. Eaton <jwe@octave.org>
parents:
19583
diff
changeset
|
2600 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2601 case 4: |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2602 recorder->set_nbits (args(2).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2603 recorder->set_id (args(3).int_value ()); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2604 break; |
19544 | 2605 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2606 |
19544 | 2607 if (is_function) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2608 recorder->init_fn (); |
19544 | 2609 else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2610 recorder->init (); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2611 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2612 retval = recorder; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2613 |
19544 | 2614 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2615 |
19544 | 2616 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2617 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2618 #endif |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2619 |
19544 | 2620 return retval; |
2621 } | |
2622 | |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
2623 #ifdef HAVE_PORTAUDIO |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
2624 |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2625 static audioplayer * |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2626 get_player (const octave_value& ov) |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2627 { |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2628 const octave_base_value& rep = ov.get_rep (); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2629 |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2630 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:
19546
diff
changeset
|
2631 |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2632 return dynamic_cast<audioplayer *> (ncrep); |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2633 } |
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2634 |
19560
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
2635 #endif |
7f271cef5850
protect all portaudio and sndfile dependent code with #ifdefs
John W. Eaton <jwe@octave.org>
parents:
19553
diff
changeset
|
2636 |
19544 | 2637 DEFUN_DLD (__player_get_channels__, args, , |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2638 "-*- texinfo -*-\n\ |
19544 | 2639 @deftypefn {Loadable Function} {@var{n} =} __player_get_channels__ (@var{player})\n\ |
2640 Undocumented internal function.\n\ | |
2641 @end deftypefn") | |
2642 { | |
2643 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2644 |
19544 | 2645 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2646 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2647 if (args.length () == 1) |
19544 | 2648 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2649 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2650 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2651 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2652 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2653 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2654 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2655 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2656 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2657 retval = player->get_channels (); |
19544 | 2658 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2659 |
19544 | 2660 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2661 |
19544 | 2662 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2663 |
19544 | 2664 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2665 |
19544 | 2666 return retval; |
2667 } | |
2668 | |
2669 DEFUN_DLD (__player_get_fs__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2670 "-*- texinfo -*-\n\ |
19544 | 2671 @deftypefn {Loadable Function} {@var{fs} =} __player_get_fs__ (@var{player})\n\ |
2672 Undocumented internal function.\n\ | |
2673 @end deftypefn") | |
2674 { | |
2675 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2676 |
19544 | 2677 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2678 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2679 if (args.length () == 1) |
19544 | 2680 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2681 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2682 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2683 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2684 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2685 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2686 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2687 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2688 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2689 retval = player->get_fs (); |
19544 | 2690 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2691 |
19544 | 2692 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2693 |
19544 | 2694 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2695 |
19544 | 2696 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2697 |
19544 | 2698 return retval; |
2699 } | |
2700 | |
2701 DEFUN_DLD (__player_get_id__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2702 "-*- texinfo -*-\n\ |
19544 | 2703 @deftypefn {Loadable Function} {@var{id} =} __player_get_id__ (@var{player})\n\ |
2704 Undocumented internal function.\n\ | |
2705 @end deftypefn") | |
2706 { | |
2707 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2708 |
19544 | 2709 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2710 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2711 if (args.length () == 1) |
19544 | 2712 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2713 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2714 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2715 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2716 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2717 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2718 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2719 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2720 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2721 retval = player->get_id (); |
19544 | 2722 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2723 |
19544 | 2724 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2725 |
19544 | 2726 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2727 |
19544 | 2728 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2729 |
19544 | 2730 return retval; |
2731 } | |
2732 | |
2733 DEFUN_DLD (__player_get_nbits__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2734 "-*- texinfo -*-\n\ |
19544 | 2735 @deftypefn {Loadable Function} {@var{nbits} =} __player_get_nbits__ (@var{player})\n\ |
2736 Undocumented internal function.\n\ | |
2737 @end deftypefn") | |
2738 { | |
2739 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2740 |
19544 | 2741 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2742 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2743 if (args.length () == 1) |
19544 | 2744 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2745 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2746 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2747 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2748 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2749 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2750 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2751 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2752 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2753 retval = player->get_nbits (); |
19544 | 2754 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2755 |
19544 | 2756 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2757 |
19544 | 2758 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2759 |
19544 | 2760 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2761 |
19544 | 2762 return retval; |
2763 } | |
2764 | |
2765 DEFUN_DLD (__player_get_sample_number__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2766 "-*- texinfo -*-\n\ |
19544 | 2767 @deftypefn {Loadable Function} {@var{n} =} __player_get_sample_number__ (@var{player})\n\ |
2768 Undocumented internal function.\n\ | |
2769 @end deftypefn") | |
2770 { | |
2771 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2772 |
19544 | 2773 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2774 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2775 if (args.length () == 1) |
19544 | 2776 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2777 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2778 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2779 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2780 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2781 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2782 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2783 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2784 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2785 retval = player->get_sample_number (); |
19544 | 2786 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2787 |
19544 | 2788 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2789 |
19544 | 2790 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2791 |
19544 | 2792 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2793 |
19544 | 2794 return retval; |
2795 } | |
2796 | |
2797 DEFUN_DLD (__player_get_tag__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2798 "-*- texinfo -*-\n\ |
19544 | 2799 @deftypefn {Loadable Function} {@var{tag} =} __player_get_tag__ (@var{player})\n\ |
2800 Undocumented internal function.\n\ | |
2801 @end deftypefn") | |
2802 { | |
2803 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2804 |
19544 | 2805 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2806 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2807 if (args.length () == 1) |
19544 | 2808 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2809 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2810 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2811 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2812 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2813 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2814 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2815 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2816 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2817 retval = player->get_tag (); |
19544 | 2818 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2819 |
19544 | 2820 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2821 |
19544 | 2822 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2823 |
19544 | 2824 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2825 |
19544 | 2826 return retval; |
2827 } | |
2828 | |
2829 DEFUN_DLD (__player_get_total_samples__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2830 "-*- texinfo -*-\n\ |
19544 | 2831 @deftypefn {Loadable Function} {@var{n} =} __player_get_total_samples__ (@var{player})\n\ |
2832 Undocumented internal function.\n\ | |
2833 @end deftypefn") | |
2834 { | |
2835 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2836 |
19544 | 2837 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2838 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2839 if (args.length () == 1) |
19544 | 2840 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2841 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2842 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2843 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2844 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2845 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2846 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2847 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2848 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2849 retval = player->get_total_samples (); |
19544 | 2850 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2851 |
19544 | 2852 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2853 |
19544 | 2854 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2855 |
19544 | 2856 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2857 |
19544 | 2858 return retval; |
2859 } | |
2860 | |
2861 DEFUN_DLD (__player_get_userdata__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2862 "-*- texinfo -*-\n\ |
19544 | 2863 @deftypefn {Loadable Function} {@var{data} =} __player_get_userdata__ (@var{player})\n\ |
2864 Undocumented internal function.\n\ | |
2865 @end deftypefn") | |
2866 { | |
2867 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2868 |
19544 | 2869 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2870 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2871 if (args.length () == 1) |
19544 | 2872 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2873 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2874 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2875 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2876 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2877 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2878 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2879 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2880 |
19544 | 2881 retval = player->get_userdata (); |
2882 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2883 |
19544 | 2884 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2885 |
19544 | 2886 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2887 |
19544 | 2888 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2889 |
19544 | 2890 return retval; |
2891 } | |
2892 | |
2893 DEFUN_DLD (__player_isplaying__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2894 "-*- texinfo -*-\n\ |
19544 | 2895 @deftypefn {Loadable Function} {} __player_isplaying__ (@var{player})\n\ |
2896 Undocumented internal function.\n\ | |
2897 @end deftypefn") | |
2898 { | |
2899 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2900 |
19544 | 2901 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2902 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2903 if (args.length () == 1) |
19544 | 2904 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2905 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2906 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2907 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2908 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2909 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2910 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2911 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2912 |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2913 retval = player->isplaying () ? true : false; |
19544 | 2914 } |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2915 |
19544 | 2916 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2917 |
19544 | 2918 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2919 |
19544 | 2920 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2921 |
19544 | 2922 return retval; |
2923 } | |
2924 | |
2925 DEFUN_DLD (__player_pause__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2926 "-*- texinfo -*-\n\ |
19544 | 2927 @deftypefn {Loadable Function} {} __player_pause__ (@var{player})\n\ |
2928 Undocumented internal function.\n\ | |
2929 @end deftypefn") | |
2930 { | |
2931 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2932 |
19544 | 2933 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2934 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2935 if (args.length () == 1) |
19544 | 2936 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
2937 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2938 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2939 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2940 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2941 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2942 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2943 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2944 |
19544 | 2945 player->pause (); |
2946 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2947 |
19544 | 2948 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2949 |
19544 | 2950 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2951 |
19544 | 2952 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2953 |
19544 | 2954 return retval; |
2955 } | |
2956 | |
2957 DEFUN_DLD (__player_playblocking__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
2958 "-*- texinfo -*-\n\ |
19544 | 2959 @deftypefn {Loadable Function} {} __player_playblocking__ (@var{player})\n\ |
2960 @deftypefnx {Loadable Function} {} __player_playblocking__ (@var{player}, @var{start})\n\ | |
2961 @deftypefnx {Loadable Function} {} __player_playblocking__ (@var{player}, [@var{start}, @var{end}])\n\ | |
2962 Undocumented internal function.\n\ | |
2963 @end deftypefn") | |
2964 { | |
2965 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2966 |
19544 | 2967 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2968 |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2969 audioplayer *player = get_player (args(0)); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2970 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2971 if (! player) |
19544 | 2972 { |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2973 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2974 return retval; |
19544 | 2975 } |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2976 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2977 if (args.length () == 1) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
2978 player->playblocking (); |
19544 | 2979 else |
2980 { | |
2981 if (args(1).is_matrix_type ()) | |
2982 { | |
2983 RowVector range = args(1).row_vector_value (); | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2984 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2985 unsigned int start = range.elem (0) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2986 unsigned int end = range.elem (1) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2987 |
19549
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19548
diff
changeset
|
2988 if (start > player->get_total_samples () |
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19548
diff
changeset
|
2989 || start > end || end > player->get_total_samples ()) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2990 { |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2991 error ("audioplayer: invalid range specified for playback"); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2992 return retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2993 } |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
2994 |
19544 | 2995 player->set_sample_number (start); |
2996 player->set_end_sample (end); | |
2997 } | |
2998 else | |
2999 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3000 unsigned int start = args(1).int_value () - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3001 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
3002 if (start > player->get_total_samples ()) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3003 { |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3004 error ("audioplayer: invalid range specified for playback"); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3005 return retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3006 } |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3007 |
19544 | 3008 player->set_sample_number (start); |
3009 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3010 |
19544 | 3011 player->playblocking (); |
3012 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3013 |
19544 | 3014 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3015 |
19544 | 3016 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3017 |
19544 | 3018 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3019 |
19544 | 3020 return retval; |
3021 } | |
3022 | |
3023 DEFUN_DLD (__player_play__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
3024 "-*- texinfo -*-\n\ |
19544 | 3025 @deftypefn {Loadable Function} {} __player_play__ (@var{player})\n\ |
3026 @deftypefnx {Loadable Function} {} __player_play__ (@var{player}, @var{start})\n\ | |
3027 @deftypefnx {Loadable Function} {} __player_play__ (@var{player}, [@var{start}, @var{end}])\n\ | |
3028 Undocumented internal function.\n\ | |
3029 @end deftypefn") | |
3030 { | |
3031 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3032 |
19544 | 3033 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3034 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3035 if (args.length () == 1) |
19544 | 3036 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3037 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3038 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3039 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3040 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3041 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3042 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3043 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3044 |
19544 | 3045 player->play (); |
3046 } | |
3047 else | |
3048 { | |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3049 audioplayer *player = get_player (args(0)); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3050 |
19544 | 3051 if (args(1).is_matrix_type ()) |
3052 { | |
3053 RowVector range = args(1).row_vector_value (); | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3054 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3055 unsigned int start = range.elem (0) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3056 unsigned int end = range.elem (1) - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3057 |
19549
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19548
diff
changeset
|
3058 if (start > player->get_total_samples () |
0f7788e2d677
* audiodevinfo.cc: Use "||" and "&&", not "or" and "and".
John W. Eaton <jwe@octave.org>
parents:
19548
diff
changeset
|
3059 || start > end || end > player->get_total_samples ()) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3060 { |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3061 error ("audioplayer: invalid range specified for playback"); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3062 return retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3063 } |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3064 |
19544 | 3065 player->set_sample_number (start); |
3066 player->set_end_sample (end); | |
3067 } | |
3068 else | |
3069 { | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3070 unsigned int start = args(1).int_value () - 1; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3071 |
19548
ef6875adb053
* audiodevinfo.cc: Avoid warnings about comparision operations.
John W. Eaton <jwe@octave.org>
parents:
19547
diff
changeset
|
3072 if (start > player->get_total_samples ()) |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3073 { |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3074 error ("audioplayer: invalid range specified for playback"); |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3075 return retval; |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3076 } |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3077 |
19544 | 3078 player->set_sample_number (start); |
3079 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3080 |
19544 | 3081 player->play (); |
3082 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3083 |
19544 | 3084 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3085 |
19544 | 3086 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3087 |
19544 | 3088 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3089 |
19544 | 3090 return retval; |
3091 } | |
3092 | |
3093 DEFUN_DLD (__player_resume__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
3094 "-*- texinfo -*-\n\ |
19544 | 3095 @deftypefn {Loadable Function} {} __player_resume__ (@var{player})\n\ |
3096 Undocumented internal function.\n\ | |
3097 @end deftypefn") | |
3098 { | |
3099 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3100 |
19544 | 3101 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3102 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3103 if (args.length () == 1) |
19544 | 3104 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3105 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3106 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3107 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3108 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3109 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3110 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3111 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3112 |
19544 | 3113 player->resume (); |
3114 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3115 |
19544 | 3116 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3117 |
19544 | 3118 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3119 |
19544 | 3120 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3121 |
19544 | 3122 return retval; |
3123 } | |
3124 | |
3125 DEFUN_DLD (__player_set_fs__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
3126 "-*- texinfo -*-\n\ |
19544 | 3127 @deftypefn {Loadable Function} {} __player_set_fs__ (@var{player}, @var{fs})\n\ |
3128 Undocumented internal function.\n\ | |
3129 @end deftypefn") | |
3130 { | |
3131 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3132 |
19544 | 3133 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3134 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3135 if (args.length () == 2) |
19544 | 3136 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3137 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3138 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3139 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3140 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3141 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3142 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3143 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3144 |
19544 | 3145 player->set_fs (args(1).int_value ()); |
3146 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3147 |
19544 | 3148 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3149 |
19544 | 3150 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3151 |
19544 | 3152 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3153 |
19544 | 3154 return retval; |
3155 } | |
3156 | |
3157 DEFUN_DLD (__player_set_tag__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
3158 "-*- texinfo -*-\n\ |
19544 | 3159 @deftypefn {Loadable Function} {} __player_set_tag__ (@var{player}, @var{tag})\n\ |
3160 Undocumented internal function.\n\ | |
3161 @end deftypefn") | |
3162 { | |
3163 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3164 |
19544 | 3165 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3166 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3167 if (args.length () == 2) |
19544 | 3168 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3169 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3170 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3171 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3172 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3173 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3174 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3175 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3176 |
19544 | 3177 player->set_tag (args(1).char_matrix_value ()); |
3178 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3179 |
19544 | 3180 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3181 |
19544 | 3182 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3183 |
19544 | 3184 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3185 |
19544 | 3186 return retval; |
3187 } | |
3188 | |
3189 DEFUN_DLD (__player_set_userdata__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
3190 "-*- texinfo -*-\n\ |
19544 | 3191 @deftypefn {Loadable Function} {} __player_set_userdata__ (@var{player}, @var{data})\n\ |
3192 Undocumented internal function.\n\ | |
3193 @end deftypefn") | |
3194 { | |
3195 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3196 |
19544 | 3197 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3198 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3199 if (args.length () == 2) |
19544 | 3200 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3201 audioplayer *player = get_player (args(0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3202 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3203 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3204 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3205 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3206 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3207 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3208 |
19544 | 3209 player->set_userdata (args(1)); |
3210 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3211 |
19544 | 3212 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3213 |
19544 | 3214 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3215 |
19544 | 3216 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3217 |
19544 | 3218 return retval; |
3219 } | |
3220 | |
3221 DEFUN_DLD (__player_stop__, args, , | |
19605
72304a4e010a
Use Octave coding conventions for documentation of audio functions.
Rik <rik@octave.org>
parents:
19604
diff
changeset
|
3222 "-*- texinfo -*-\n\ |
19544 | 3223 @deftypefn {Loadable Function} {} __player_stop__ (@var{player})\n\ |
3224 Undocumented internal function.\n\ | |
3225 @end deftypefn") | |
3226 { | |
3227 octave_value retval; | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3228 |
19544 | 3229 #ifdef HAVE_PORTAUDIO |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3230 |
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3231 if (args.length () == 1) |
19544 | 3232 { |
19547
4cb4210bd392
use C++ style casts in audio code
John W. Eaton <jwe@octave.org>
parents:
19546
diff
changeset
|
3233 audioplayer *player = get_player (args (0)); |
19607
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3234 |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3235 if (! player) |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3236 { |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3237 print_usage (); |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3238 return retval; |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3239 } |
2aaf6077eb3c
avoid dereferencing null pointers in audio functions
John W. Eaton <jwe@octave.org>
parents:
19605
diff
changeset
|
3240 |
19544 | 3241 player->stop (); |
3242 } | |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3243 |
19544 | 3244 #else |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3245 |
19544 | 3246 error ("portaudio not found on your system and thus audio functionality is not present"); |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3247 |
19544 | 3248 #endif |
19553
e616c2830413
various style fixes for audio code
John W. Eaton <jwe@octave.org>
parents:
19552
diff
changeset
|
3249 |
19544 | 3250 return retval; |
3251 } |