source: roaraudio/roard/include/streams.h @ 1223:29f5a58d63ce

Last change on this file since 1223:29f5a58d63ce was 1223:29f5a58d63ce, checked in by phi, 15 years ago

typo in 'streams_calc_delay' and added cf ctl, prototype for a stream ctl...

File size: 3.3 KB
Line 
1//streams.h:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008
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, 675 Mass Ave, Cambridge, MA 02139, USA.
22 *
23 */
24
25#ifndef _STREAMS_H_
26#define _STREAMS_H_
27
28#include <roaraudio.h>
29
30/*
31  Defined in <roaraudio/streams.h>
32
33#define ROAR_STREAMS_MAX  64
34*/
35
36//#define ROAR_STREAM(x)        ((struct roar_stream*)(x))
37#define ROAR_STREAM_SERVER(x) ((struct roar_stream_server*)(x))
38
39struct roar_stream_server {
40 struct roar_stream _stream;
41 unsigned int pos_abs;
42 int client;
43 struct roar_buffer * buffer;
44 size_t need_extra;
45 void  * output;
46 struct roar_mixer_settings mixer;
47 struct roar_meta meta[ROAR_META_MAX_PER_STREAM];
48 int is_new;
49 int codecfilter;
50 int codec_orgi;
51 CODECFILTER_USERDATA_T codecfilter_inst;
52 int socktype;
53 int pre_underruns;
54 int post_underruns;
55 struct roar_vio_calls vio;
56 int primary;
57 int driver_id;
58 struct roardsp_filterchain fc;
59 int flags;
60 uint_least32_t delay;
61} * g_streams[ROAR_STREAMS_MAX];
62
63int streams_init   (void);
64int streams_free   (void);
65
66int streams_new    (void);
67int streams_delete (int id);
68
69int streams_set_client (int id, int client);
70int streams_get_client (int id);
71
72int streams_set_fh     (int id, int fh);
73int streams_get_fh     (int id);
74int streams_get        (int id, struct roar_stream_server ** stream);
75
76int streams_set_socktype (int id, int socktype);
77int streams_get_socktype (int id);
78
79int streams_set_primary  (int id, int prim);
80int streams_mark_primary (int id);
81int streams_set_sync     (int id, int sync);
82int streams_set_flag     (int id, int flag);
83int streams_reset_flag   (int id, int flag);
84int streams_get_flag     (int id, int flag);
85
86int streams_calc_delay   (int id);
87
88int streams_ctl          (int id, int cmd, void * data);
89
90int stream_add_buffer     (int id, struct roar_buffer *  buf);
91//int stream_get_buffer     (int id, struct roar_buffer ** buf);
92int stream_shift_buffer   (int id, struct roar_buffer ** buf);
93int stream_unshift_buffer (int id, struct roar_buffer *  buf);
94
95int streams_check      (int id);
96int streams_send_mon   (int id);
97int streams_send_filter(int id);
98
99int streams_get_mixbuffers   (void *** bufferlist, struct roar_audio_info * info, unsigned int pos);
100int streams_get_outputbuffer (int id, void ** buffer, size_t size);
101int streams_fill_mixbuffer   (int id, struct roar_audio_info * info);
102
103ssize_t stream_vio_read (int stream, void *buf, size_t count);
104ssize_t stream_vio_write(int stream, void *buf, size_t count);
105ssize_t stream_vio_s_read (struct roar_stream_server * stream, void *buf, size_t count);
106ssize_t stream_vio_s_write(struct roar_stream_server * stream, void *buf, size_t count);
107
108#endif
109
110//ll
Note: See TracBrowser for help on using the repository browser.