source: roaraudio/roard/include/light.h @ 5982:c38f275b38ae

Last change on this file since 5982:c38f275b38ae was 5982:c38f275b38ae, checked in by phi, 10 years ago

Added support to load light control filters into roard.

File size: 2.4 KB
Line 
1//light.h:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2014
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 _LIGHT_H_
27#define _LIGHT_H_
28
29#include <roaraudio.h>
30
31#ifndef ROAR_WITHOUT_DCOMP_LIGHT
32
33#define LIGHT_CHANNELS_DEFAULT 512 /* one DMX Universe */
34#define MAX_EVENTS_PER_CYCLE   16  /* this*cfreq is event thruput (16*100Hz = 1.6kEvents/s) */
35
36extern struct light_state {
37 unsigned int    channels;
38 uint8_t events[MAX_EVENTS_PER_CYCLE];
39 size_t eventsqueuelen;
40 uint8_t * state;
41 uint8_t * changes;
42 uint8_t * output;
43 uint8_t * outputchanges;
44 struct roar_slfi_inst * filter;
45} g_light_state;
46
47extern struct light_mixer {
48 int stream;
49} g_light_mixer;
50
51int light_init  (uint32_t channels);
52int light_free  (void);
53
54int light_update(void);
55int light_reset (void);
56int light_reinit(void);
57
58int light_check_stream  (int id);
59int light_send_stream   (int id);
60
61int light_filter_load(int primary, const char * name, int autoload, const struct roar_keyval * para, ssize_t paralen);
62
63// for plugins:
64int     light_dmxchannel_get(size_t index);
65int     light_dmxchannel_set(size_t index, uint8_t val);
66ssize_t light_dmxchannel_num(void);
67int     light_dmxchannel_swap_universe(uint8_t * universe, size_t len);
68
69int light_dmxevent_add(const uint8_t * events, size_t len);
70int light_dmxevent_read(const uint8_t ** events, size_t * len);
71#define light_dmxevent_addone(event) light_dmxevent_add(&(uint8_t){(event)}, 1)
72
73// codec filters:
74int cf_light_roardmx_read(int id, struct roar_stream_server * ss);
75int cf_light_roardmx_write(int id, struct roar_stream_server * ss);
76
77#endif
78
79#endif
80
81//ll
Note: See TracBrowser for help on using the repository browser.