source: roaraudio/roard/include/container_framework.h @ 5823:f9f70dbaa376

Last change on this file since 5823:f9f70dbaa376 was 5823:f9f70dbaa376, checked in by phi, 11 years ago

updated copyright

File size: 4.6 KB
RevLine 
[2657]1//container_framework.h:
2
3/*
[5823]4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009-2013
[2657]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
[3517]21 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22 *  Boston, MA 02110-1301, USA.
[2657]23 *
24 */
25
26#ifndef _CONTAINER_FRAMEWORK_H_
27#define _CONTAINER_FRAMEWORK_H_
28
29#include <roaraudio.h>
30
[2658]31#define CONT_FW_MAX_CHILDS 8
32
[2683]33#define CONT_FW_SETUP_TYPE(f) int (f)(struct cont_fw_parent_inst * self, int codec, struct roar_codecfilter    * filter)
34
[2659]35struct cont_fw_parent_inst;
36
[2669]37struct cont_fw_child_vio_inst {
[2658]38 int child;
39 void * u_inst;
[2659]40 struct cont_fw_parent_inst * parent;
[2658]41};
42
43struct cont_fw_parent_inst {
[2669]44 struct cont_fw_child_vio_inst * child[CONT_FW_MAX_CHILDS];
[2660]45 void * u_inst;
[2696]46 int state;
[2829]47 struct roar_vio_calls vio;
[2696]48 struct {
49  int id;
50  int codec;
51  struct roar_stream_server  * stream;
52  struct roar_codecfilter    * filter;
53 } stream;
[2660]54 struct {
[2669]55  ssize_t (*read) (struct cont_fw_parent_inst * self, struct cont_fw_child_vio_inst * child, void *buf, size_t len);
56  ssize_t (*write)(struct cont_fw_parent_inst * self, struct cont_fw_child_vio_inst * child, void *buf, size_t len);
57  int     (*flush)(struct cont_fw_parent_inst * self, struct cont_fw_child_vio_inst * child);
58  int     (*close)(struct cont_fw_parent_inst * self, struct cont_fw_child_vio_inst * child);
[2667]59 } ccb;
[2666]60 struct {
[2677]61  int     (*open     )(struct cont_fw_parent_inst * self,
62                       int                          codec,
63                       struct roar_stream_server  * stream,
64                       struct roar_codecfilter    * filter);
[2672]65  int     (*close    )(struct cont_fw_parent_inst * self);
[2675]66  int     (*flush    )(struct cont_fw_parent_inst * self);
[2672]67  int     (*new_child)(struct cont_fw_parent_inst * self, struct cont_fw_child_vio_inst * child);
[2666]68 } pcb;
[2658]69};
70
[2675]71// Parent:
[2665]72int     cont_fw_new      (struct cont_fw_parent_inst ** inst);
73int     cont_fw_delete   (struct cont_fw_parent_inst  * inst);
74int     cont_fw_set_uinst(struct cont_fw_parent_inst  * inst, void  * u_inst);
75int     cont_fw_get_uinst(struct cont_fw_parent_inst  * inst, void ** u_inst);
76
[2675]77// Child:
[2668]78int     cont_fw_new_child(struct cont_fw_parent_inst  * inst, int id);
[2661]79int     cont_fw_init_vio(struct roar_vio_calls * vio, void * inst);
[2675]80
[2829]81// VIO Childs:
[2658]82ssize_t cont_fw_read    (struct roar_vio_calls * vio, void *buf, size_t count);
83ssize_t cont_fw_write   (struct roar_vio_calls * vio, void *buf, size_t count);
[5278]84roar_off_t   cont_fw_lseek   (struct roar_vio_calls * vio, roar_off_t offset, int whence);
[2658]85int     cont_fw_sync    (struct roar_vio_calls * vio);
[5278]86int     cont_fw_ctl     (struct roar_vio_calls * vio, roar_vio_ctl_t cmd, void * data);
[2658]87int     cont_fw_close   (struct roar_vio_calls * vio);
88
[2829]89// VIO Parent:
90int     cont_pvio_open    (struct roar_vio_calls * vio, void * inst);
91ssize_t cont_pvio_read    (struct roar_vio_calls * vio, void *buf, size_t count);
92ssize_t cont_pvio_write   (struct roar_vio_calls * vio, void *buf, size_t count);
[5278]93roar_off_t   cont_pvio_lseek   (struct roar_vio_calls * vio, roar_off_t offset, int whence);
[2829]94int     cont_pvio_sync    (struct roar_vio_calls * vio);
[5278]95int     cont_pvio_ctl     (struct roar_vio_calls * vio, roar_vio_ctl_t cmd, void * data);
[2829]96int     cont_pvio_close   (struct roar_vio_calls * vio);
97
[2675]98// CF:
99int cont_fw_cf_open(CODECFILTER_USERDATA_T * inst, int codec,
100                                             struct roar_stream_server * info,
101                                             struct roar_codecfilter   * filter);
102int cont_fw_cf_close(CODECFILTER_USERDATA_T   inst);
103int cont_fw_cf_pause(CODECFILTER_USERDATA_T   inst, int newstate);
104int cont_fw_cf_write(CODECFILTER_USERDATA_T   inst, char * buf, int len);
105int cont_fw_cf_read (CODECFILTER_USERDATA_T   inst, char * buf, int len);
106int cont_fw_cf_flush(CODECFILTER_USERDATA_T   inst);
107int cont_fw_cf_delay(CODECFILTER_USERDATA_T   inst, uint_least32_t * delay);
108int cont_fw_cf_ctl  (CODECFILTER_USERDATA_T   inst, int cmd, void * data);
109
[2657]110#endif
111
112//ll
Note: See TracBrowser for help on using the repository browser.