annotate libinterp/dldfcn/player_class.h @ 19534:8bb399569393

Add Octave copyright header block to audio project files * libinterp/dldfcn/__player_audioplayer__.cc, libinterp/dldfcn/__recorder_audiorecorder__.cc, libinterp/dldfcn/audiodevinfo.cc, libinterp/dldfcn/audioinfo.cc, libinterp/dldfcn/audioread.cc, libinterp/dldfcn/audiowrite.cc, libinterp/dldfcn/player_class.cc, libinterp/dldfcn/player_class.h, libinterp/dldfcn/recorder_class.cc, libinterp/dldfcn/recorder_class.h, scripts/audio/@audioplayer/__get_properties__.m, scripts/audio/@audioplayer/audioplayer.m, scripts/audio/@audioplayer/display.m, scripts/audio/@audioplayer/get.m, scripts/audio/@audioplayer/isplaying.m, scripts/audio/@audioplayer/pause.m, scripts/audio/@audioplayer/play.m, scripts/audio/@audioplayer/playblocking.m, scripts/audio/@audioplayer/resume.m, scripts/audio/@audioplayer/set.m, scripts/audio/@audioplayer/stop.m, scripts/audio/@audioplayer/subsasgn.m, scripts/audio/@audioplayer/subsref.m, scripts/audio/@audiorecorder/__get_properties__.m, scripts/audio/@audiorecorder/audiorecorder.m, scripts/audio/@audiorecorder/display.m, scripts/audio/@audiorecorder/get.m, scripts/audio/@audiorecorder/getaudiodata.m, scripts/audio/@audiorecorder/getplayer.m, scripts/audio/@audiorecorder/isrecording.m, scripts/audio/@audiorecorder/pause.m, scripts/audio/@audiorecorder/play.m, scripts/audio/@audiorecorder/record.m, scripts/audio/@audiorecorder/recordblocking.m, scripts/audio/@audiorecorder/resume.m, scripts/audio/@audiorecorder/set.m, scripts/audio/@audiorecorder/stop.m, scripts/audio/@audiorecorder/subsasgn.m, scripts/audio/@audiorecorder/subsref.m: Add Octave copyright header.
author Mike Miller <mtmiller@ieee.org>
date Tue, 01 Oct 2013 23:36:37 -0400
parents b9df6b3fd5ef
children 36a26a131209
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19534
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
1 /*
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
2
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
3 Copyright (C) 2013 Vytautas JanĨauskas
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
4
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
5 This file is part of Octave.
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
6
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
8 under the terms of the GNU General Public License as published by the
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
10 option) any later version.
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
11
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
15 for more details.
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
16
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
17 You should have received a copy of the GNU General Public License
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
18 along with Octave; see the file COPYING. If not, see
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
19 <http://www.gnu.org/licenses/>.
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
20
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
21 */
8bb399569393 Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents: 19509
diff changeset
22
19508
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
23 #ifndef PLAYER_CLASS_H
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
24 #define PLAYER_CLASS_H
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
25
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
26 #include <string>
19509
b9df6b3fd5ef Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents: 19508
diff changeset
27 #include "oct.h"
b9df6b3fd5ef Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents: 19508
diff changeset
28 #include "ov-int32.h"
19508
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
29 #include <portaudio.h>
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
30
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
31 #include "player_class.h"
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
32
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
33 enum audio_type {INT8, UINT8, INT16, DOUBLE};
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
34
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
35 class audioplayer : public octave_base_value
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
36 {
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
37 public:
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
38 audioplayer();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
39 ~audioplayer();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
40 // Overloaded base functions
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
41 double player_value() const { return 0; }
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
42 virtual double scalar_value (bool frc_str_conv = false) const
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
43 {
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
44 return 0;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
45 }
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
46 void print (std::ostream& os, bool pr_as_read_syntax = false) const;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
47 void print_raw (std::ostream& os, bool pr_as_read_syntax) const;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
48 // Properties
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
49 bool is_constant (void) const { return true;}
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
50 bool is_defined (void) const { return true;}
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
51 bool print_as_scalar (void) const { return true;}
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
52
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
53 void init();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
54 void init_fn();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
55 void set_y(octave_value y);
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
56 void set_y(octave_function *fn);
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
57 void set_y(std::string fn);
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
58 Matrix &get_y();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
59 RowVector *get_left();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
60 RowVector *get_right();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
61 void set_fs(int fs);
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
62 int get_fs();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
63 void set_nbits(int nbits);
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
64 int get_nbits();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
65 void set_id(int id);
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
66 int get_id();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
67 int get_channels();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
68 audio_type get_type();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
69
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
70 void set_sample_number(unsigned int sample);
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
71 unsigned int get_sample_number();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
72 unsigned int get_total_samples();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
73 void set_end_sample(unsigned int sample);
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
74 unsigned int get_end_sample();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
75 void reset_end_sample();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
76 void set_tag(charMatrix tag);
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
77 charMatrix get_tag();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
78 void set_userdata(octave_value userdata);
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
79 octave_value get_userdata();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
80 PaStream *get_stream();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
81 octave_function *octave_callback_function;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
82
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
83 void playblocking();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
84 void play();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
85 void pause();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
86 void resume();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
87 void stop();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
88 bool isplaying();
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
89 private:
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
90 Matrix y;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
91 RowVector left;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
92 RowVector right;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
93 charMatrix tag;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
94 octave_value userdata;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
95 int channels;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
96 int fs;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
97 int nbits;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
98 int id;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
99 unsigned int sample_number;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
100 unsigned int end_sample;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
101 PaStream *stream;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
102 PaStreamParameters output_parameters;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
103 audio_type type;
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
104 DECLARE_OCTAVE_ALLOCATOR
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
105 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
106 };
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
107
91ee78cdba6c New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff changeset
108 #endif // PLAYER_CLASS_H