source: roaraudio/roard/include/streams.h @ 4270:66fc69cc26a9

Last change on this file since 4270:66fc69cc26a9 was 4270:66fc69cc26a9, checked in by phi, 14 years ago

prepair structs for LTM

File size: 5.8 KB
Line 
1//streams.h:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2010
5 *
6 *  This file is part of roard a part of RoarAudio,
7 *  a cross-platform sound system for both, home and professional use.
8 *  See README for details.
9 *
10 *  This file is free software; you can redistribute it and/or modify
11 *  it under the terms of the GNU General Public License version 3
12 *  as published by the Free Software Foundation.
13 *
14 *  RoarAudio is distributed in the hope that it will be useful,
15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 *  GNU General Public License for more details.
18 *
19 *  You should have received a copy of the GNU General Public License
20 *  along with this software; see the file COPYING.  If not, write to
21 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22 *  Boston, MA 02110-1301, USA.
23 *
24 */
25
26#ifndef _STREAMS_H_
27#define _STREAMS_H_
28
29#include <roaraudio.h>
30
31/*
32  Defined in <roaraudio/streams.h>
33
34#define ROAR_STREAMS_MAX  64
35*/
36
37//#define ROAR_STREAM(x)        ((struct roar_stream*)(x))
38#define ROAR_STREAM_SERVER(x) ((struct roar_stream_server*)(x))
39
40// stream ctls...:
41
42#define ROAR_STREAM_CTL_COMPMASK  0xFF000000
43#define ROAR_STREAM_CTL_TYPEMASK  0x00FF0000
44#define ROAR_STREAM_CTL_CMDMASK   0x0000FFFF
45
46#define ROAR_STREAM_CTL_COMP_BASE 0x00000000
47#define ROAR_STREAM_CTL_COMP_CF   0x01000000
48#define ROAR_STREAM_CTL_COMP_DRV  0x02000000
49
50#define ROAR_STREAM_CTL_TYPE_VOID   0x00000000
51#define ROAR_STREAM_CTL_TYPE_INT    0x00010000
52#define ROAR_STREAM_CTL_TYPE_FLOAT  0x00020000
53#define ROAR_STREAM_CTL_TYPE_FPI100 0x00030000 /* fix point integter int/100 */
54
55#define STREAM_DIR_NONE             0x00
56#define STREAM_DIR_IN               0x01
57#define STREAM_DIR_OUT              0x02
58#define STREAM_DIR_BIDIR            (STREAM_DIR_IN|STREAM_DIR_OUT)
59
60#define MAX_LTM_WINDOWS_PER_STREAM  1
61
62struct roar_ltm_vals {
63 int64_t rms;
64};
65
66struct roar_stream_ltm {
67 int window;
68 int parent_window;
69 size_t refc;
70 struct roar_ltm_vals cur;
71 struct roar_ltm_vals * history;
72};
73
74struct roar_stream_server {
75 struct roar_stream _stream;
76 unsigned int pos_abs;
77 int client;
78 struct roar_buffer * buffer;
79 size_t need_extra;
80 void  * output;
81 struct roar_mixer_settings mixer;
82#ifdef ROAR_SUPPORT_META
83 struct roar_meta meta[ROAR_META_MAX_PER_STREAM];
84#endif
85 int is_new;
86 int codecfilter;
87 int codec_orgi;
88 CODECFILTER_USERDATA_T codecfilter_inst;
89 int socktype;
90 int pre_underruns;
91 int post_underruns;
92 struct roar_vio_calls vio;
93 int primary;
94 int driver_id;
95// struct roardsp_filterchain fc;
96 int flags;
97 uint_least32_t delay;
98 char * name;
99 int ready;
100 struct roar_buffer * outputbuffer;
101 int state;
102 struct roar_buffer * prethru;
103 struct roar_vio_calls jumbo;
104 struct roar_vio_calls * viop;
105 int mixer_stream;
106 struct roardsp_chanmap chanmap;
107 int role;
108 int parent_stream;
109 struct roar_stream_ltm ltm[MAX_LTM_WINDOWS_PER_STREAM];
110} * g_streams[ROAR_STREAMS_MAX];
111
112int streams_thru_num;
113int streams_recsource_id;
114
115int streams_init   (void);
116int streams_free   (void);
117
118int streams_new    (void);
119int streams_delete (int id);
120
121int streams_set_client (int id, int client);
122int streams_get_client (int id);
123
124int streams_set_dir    (int id, int dir, int defaults);
125int streams_get_dir    (int id);
126
127int streams_set_mixer_stream(int id, int mixer);
128int streams_get_mixer_stream(int id, int mixer);
129
130int streams_set_role   (int id, int role);
131
132int streams_get_subsys (int id);
133int streams_get_ssdir  (int id);
134
135int streams_new_virtual (int parent, struct roar_stream_server ** stream);
136
137int streams_set_fh     (int id, int fh);
138int streams_get_fh     (int id);
139int streams_set_null_io(int id);
140int streams_get        (int id, struct roar_stream_server ** stream);
141
142int streams_set_socktype (int id, int socktype);
143int streams_get_socktype (int id);
144
145int streams_is_ready     (int id);
146
147int streams_set_primary  (int id, int prim);
148int streams_mark_primary (int id);
149int streams_set_sync     (int id, int sync);
150int streams_set_mmap     (int id, int reset);
151int streams_set_flag     (int id, int flag);
152int streams_set_rawflag  (int id, int flag);
153int streams_reset_flag   (int id, int flag);
154int streams_get_flag     (int id, int flag);
155
156int streams_set_name     (int id, char * name);
157char * streams_get_name  (int id);
158
159int streams_calc_delay   (int id);
160int streams_set_mixer    (int id);
161
162int streams_set_map      (int id, char * map, size_t len);
163
164int streams_ctl          (int id, int_least32_t cmd, void * data);
165
166int stream_add_buffer     (int id, struct roar_buffer *  buf);
167//int stream_get_buffer     (int id, struct roar_buffer ** buf);
168int stream_shift_out_buffer   (int id, void * data, size_t * len);
169int stream_shift_buffer   (int id, struct roar_buffer ** buf);
170int stream_unshift_buffer (int id, struct roar_buffer *  buf);
171
172int stream_outputbuffer_request(int id, struct roar_buffer ** buf, size_t len);
173int stream_outputbuffer_destroy(int id);
174
175int stream_prethru_add(int id, struct roar_buffer * buf);
176int stream_prethru_add_data(int id, void ** buf, size_t len);
177int stream_prethru_destroy(int id);
178int stream_prethru_send(int dst, int src);
179
180int streams_check      (int id);
181int streams_send_mon   (int id);
182int streams_send_filter(int id);
183
184int streams_get_mixbuffers   (void *** bufferlist, struct roar_audio_info * info, unsigned int pos);
185int streams_get_outputbuffer (int id, void ** buffer, size_t size);
186int streams_fill_mixbuffer   (int id, struct roar_audio_info * info);
187int streams_fill_mixbuffer2  (int id, struct roar_audio_info * info);
188
189ssize_t stream_vio_read (int stream, void *buf, size_t count);
190ssize_t stream_vio_write(int stream, void *buf, size_t count);
191ssize_t stream_vio_s_read (struct roar_stream_server * stream, void *buf, size_t count);
192ssize_t stream_vio_s_write(struct roar_stream_server * stream, void *buf, size_t count);
193
194#endif
195
196//ll
Note: See TracBrowser for help on using the repository browser.