source: roaraudio/roard/include/container_framework.h @ 2696:26ceae3107d4

Last change on this file since 2696:26ceae3107d4 was 2696:26ceae3107d4, checked in by phi, 15 years ago

get basics working together with RAUM

File size: 4.0 KB
Line 
1//container_framework.h:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009
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 _CONTAINER_FRAMEWORK_H_
26#define _CONTAINER_FRAMEWORK_H_
27
28#include <roaraudio.h>
29
30#define CONT_FW_MAX_CHILDS 8
31
32#define CONT_FW_SETUP_TYPE(f) int (f)(struct cont_fw_parent_inst * self, int codec, struct roar_codecfilter    * filter)
33
34struct cont_fw_parent_inst;
35
36struct cont_fw_child_vio_inst {
37 int child;
38 void * u_inst;
39 struct cont_fw_parent_inst * parent;
40};
41
42struct cont_fw_parent_inst {
43 struct cont_fw_child_vio_inst * child[CONT_FW_MAX_CHILDS];
44 void * u_inst;
45 int state;
46 struct {
47  int id;
48  int codec;
49  struct roar_stream_server  * stream;
50  struct roar_codecfilter    * filter;
51 } stream;
52 struct {
53  ssize_t (*read) (struct cont_fw_parent_inst * self, struct cont_fw_child_vio_inst * child, void *buf, size_t len);
54  ssize_t (*write)(struct cont_fw_parent_inst * self, struct cont_fw_child_vio_inst * child, void *buf, size_t len);
55  int     (*flush)(struct cont_fw_parent_inst * self, struct cont_fw_child_vio_inst * child);
56  int     (*close)(struct cont_fw_parent_inst * self, struct cont_fw_child_vio_inst * child);
57 } ccb;
58 struct {
59  int     (*open     )(struct cont_fw_parent_inst * self,
60                       int                          codec,
61                       struct roar_stream_server  * stream,
62                       struct roar_codecfilter    * filter);
63  int     (*close    )(struct cont_fw_parent_inst * self);
64  int     (*flush    )(struct cont_fw_parent_inst * self);
65  int     (*new_child)(struct cont_fw_parent_inst * self, struct cont_fw_child_vio_inst * child);
66 } pcb;
67};
68
69// Parent:
70int     cont_fw_new      (struct cont_fw_parent_inst ** inst);
71int     cont_fw_delete   (struct cont_fw_parent_inst  * inst);
72int     cont_fw_set_uinst(struct cont_fw_parent_inst  * inst, void  * u_inst);
73int     cont_fw_get_uinst(struct cont_fw_parent_inst  * inst, void ** u_inst);
74
75// Child:
76int     cont_fw_new_child(struct cont_fw_parent_inst  * inst, int id);
77int     cont_fw_init_vio(struct roar_vio_calls * vio, void * inst);
78
79// VIO:
80ssize_t cont_fw_read    (struct roar_vio_calls * vio, void *buf, size_t count);
81ssize_t cont_fw_write   (struct roar_vio_calls * vio, void *buf, size_t count);
82off_t   cont_fw_lseek   (struct roar_vio_calls * vio, off_t offset, int whence);
83int     cont_fw_nonblock(struct roar_vio_calls * vio, int state);
84int     cont_fw_sync    (struct roar_vio_calls * vio);
85int     cont_fw_ctl     (struct roar_vio_calls * vio, int cmd, void * data);
86int     cont_fw_close   (struct roar_vio_calls * vio);
87
88// CF:
89int cont_fw_cf_open(CODECFILTER_USERDATA_T * inst, int codec,
90                                             struct roar_stream_server * info,
91                                             struct roar_codecfilter   * filter);
92int cont_fw_cf_close(CODECFILTER_USERDATA_T   inst);
93int cont_fw_cf_pause(CODECFILTER_USERDATA_T   inst, int newstate);
94int cont_fw_cf_write(CODECFILTER_USERDATA_T   inst, char * buf, int len);
95int cont_fw_cf_read (CODECFILTER_USERDATA_T   inst, char * buf, int len);
96int cont_fw_cf_flush(CODECFILTER_USERDATA_T   inst);
97int cont_fw_cf_delay(CODECFILTER_USERDATA_T   inst, uint_least32_t * delay);
98int cont_fw_cf_ctl  (CODECFILTER_USERDATA_T   inst, int cmd, void * data);
99
100#endif
101
102//ll
Note: See TracBrowser for help on using the repository browser.