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