source: roaraudio/include/libroar/config.h @ 5465:d5e7bc292531

Last change on this file since 5465:d5e7bc292531 was 5465:d5e7bc292531, checked in by phi, 12 years ago

no longer use fixed protocol version (_ROAR_MESSAGE_VERSION=0).
protocol version is now used by setting in message object.
If using connection based req (roar_req()) it will use version from connection
object setting. The connection object get's a default from the config.
The config key is "protocolversion".
roard will answer in the same version as the request was send in.

File size: 5.1 KB
Line 
1//config.h:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2012
5 *
6 *  This file is part of libroar 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 *  libroar 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 *  NOTE for everyone want's to change something and send patches:
25 *  read README and HACKING! There a addition information on
26 *  the license of this document you need to read before you send
27 *  any patches.
28 *
29 *  NOTE for uses of non-GPL (LGPL,...) software using libesd, libartsc
30 *  or libpulse*:
31 *  The libs libroaresd, libroararts and libroarpulse link this lib
32 *  and are therefore GPL. Because of this it may be illigal to use
33 *  them with any software that uses libesd, libartsc or libpulse*.
34 */
35
36#ifndef _LIBROARCONFIG_H_
37#define _LIBROARCONFIG_H_
38
39#include "libroar.h"
40
41struct roar_connection;
42
43// WorkAroundS:
44#define ROAR_LIBROAR_CONFIG_WAS_NONE        0x00
45#define ROAR_LIBROAR_CONFIG_WAS_USE_EXECED  0x01
46#define ROAR_LIBROAR_CONFIG_WAS_NO_SLP      0x02
47
48#define ROAR_LIBROAR_CONFIG_PSET_Q          0x0001
49#define ROAR_LIBROAR_CONFIG_PSET_COMPLEXITY 0x0002
50#define ROAR_LIBROAR_CONFIG_PSET_DTX        0x0004
51#define ROAR_LIBROAR_CONFIG_PSET_MAX_CC     0x0008
52#define ROAR_LIBROAR_CONFIG_PSET_ABR        0x0010 /* need to implement */
53#define ROAR_LIBROAR_CONFIG_PSET_VAD        0x0020 /* need to implement */
54#define ROAR_LIBROAR_CONFIG_PSET_AGC        0x0040 /* need to implement */
55#define ROAR_LIBROAR_CONFIG_PSET_DENOISE    0x0080 /* need to implement */
56#define ROAR_LIBROAR_CONFIG_PSET_VBR        0x0100
57#define ROAR_LIBROAR_CONFIG_PSET_MODE       0x0200
58
59#define ROAR_LIBROAR_CONFIG_MODE_NB         ROAR_SPEEX_MODE_NB
60#define ROAR_LIBROAR_CONFIG_MODE_WB         ROAR_SPEEX_MODE_WB
61#define ROAR_LIBROAR_CONFIG_MODE_UWB        ROAR_SPEEX_MODE_UWB
62
63// mode of operation:
64enum roar_libroar_config_opmode {
65 ROAR_LIBROAR_CONFIG_OPMODE_NORMAL = 0,
66#define ROAR_LIBROAR_CONFIG_OPMODE_NORMAL   ROAR_LIBROAR_CONFIG_OPMODE_NORMAL
67 ROAR_LIBROAR_CONFIG_OPMODE_FUNNY  = 1,
68#define ROAR_LIBROAR_CONFIG_OPMODE_FUNNY    ROAR_LIBROAR_CONFIG_OPMODE_FUNNY
69 ROAR_LIBROAR_CONFIG_OPMODE_MS     = 2,
70#define ROAR_LIBROAR_CONFIG_OPMODE_MS       ROAR_LIBROAR_CONFIG_OPMODE_MS
71};
72
73struct roar_libroar_forkapi {
74 int   (*prefork)(void ** context, void * userdata);
75 pid_t (*fork   )(void ** context, void * userdata);
76 int   (*failed )(void ** context, void * userdata);
77 int   (*parent )(void ** context, void * userdata, pid_t child);
78 int   (*child  )(void ** context, void * userdata);
79 void * userdata;
80};
81
82struct roar_libroar_config_codec {
83 uint32_t codec; // Codec ID
84
85 // parameters which are set:
86 unsigned int para_set;
87
88 // the folloing ints are 256 times there correct value
89 // to emulate a .8 bit fixed point float.
90 int q;
91 int complexity;
92
93 // currectly bools:
94 int dtx;
95 int vbr;
96
97 // sizes:
98 size_t max_cc;
99
100 // enums:
101 int mode;
102};
103
104struct roar_libroar_config {
105 struct {
106  int workarounds;
107 } workaround;
108 const char * server;
109 struct {
110  int sysio;
111  int obsolete;
112 } warnings;
113 struct {
114  size_t num;
115  struct roar_libroar_config_codec * codec;
116 } codecs;
117 struct roar_audio_info info;
118 char * authfile;
119 char * serversfile;
120 struct {
121  char * display;
122 } x11;
123 size_t nowarncounter;
124#ifdef ROAR_SUPPORT_TRAP
125 enum roar_trap_policy trap_policy;
126#endif
127 enum roar_libroar_config_opmode opmode;
128 struct roar_libroar_forkapi * forkapi;
129 struct roar_vio_calls * (*connect_internal)(struct roar_connection * con, const char * server, int type, int flags, uint_least32_t timeout);
130 char * daemonimage;
131 int serverflags;
132 int protocolversion;
133};
134
135struct roar_libroar_config * roar_libroar_get_config_ptr(void) _LIBROAR_ATTR_USE_RESULT;
136struct roar_libroar_config * roar_libroar_get_config(void) _LIBROAR_ATTR_USE_RESULT;
137
138int    roar_libroar_reset_config(void);
139
140int    roar_libroar_config_parse(char * txt, char * delm) _LIBROAR_ATTR_NONNULL(1);
141
142struct roar_libroar_config_codec * roar_libroar_config_codec_get(int32_t codec, int create);
143
144int    roar_libroar_set_server(const char * server);
145const char * roar_libroar_get_server(void) _LIBROAR_ATTR_USE_RESULT;
146
147int    roar_libroar_set_forkapi(struct roar_libroar_forkapi * api);
148
149int    roar_libroar_set_connect_internal(struct roar_vio_calls * (*func)(struct roar_connection * con, const char * server, int type, int flags, uint_least32_t timeout));
150
151void   roar_libroar_nowarn(void);
152void   roar_libroar_warn(void);
153#define roar_libroar_iswarn(cfg) (((cfg) == NULL ? roar_libroar_get_config_ptr() : (cfg))->nowarncounter ? 0 : 1)
154
155#endif
156
157//ll
Note: See TracBrowser for help on using the repository browser.