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