This file is indexed.

/usr/include/roaraudio/audio.h is in libroar-dev 1.0~beta11-10.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
//audio.h:

/*
 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2014
 *
 *  This file is part of RoarAudio,
 *  a cross-platform sound system for both, home and professional use.
 *  See README for details.
 *
 *  This file is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU Lesser General Public License version 3
 *  as published by the Free Software Foundation.
 *
 *  RoarAudio is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public License
 *  along with this software; see the file COPYING.  If not, write to
 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 *  Boston, MA 02110-1301, USA.
 *
 *  NOTE: Even though this file is LGPLed it (may) include GPLed files
 *  so the license of this file is/may therefore downgraded to GPL.
 *  See HACKING for details.
 */

#ifndef _ROARAUDIO_AUDIO_H_
#define _ROARAUDIO_AUDIO_H_

// TODO: move this block to a more logical location.
#define ROAR_CODEC_PCM_LE  ROAR_CODEC_PCM_S_LE
#define ROAR_CODEC_PCM_BE  ROAR_CODEC_PCM_S_BE
#define ROAR_CODEC_PCM_PDP ROAR_CODEC_PCM_S_PDP


/*
 Bits:
 76543210
 |||||||\---\ byte-
 ||||||\----/ order
 |||||\-----> unsigned?
 ||||\------> PCM(0) or MIDI(1)?
 |||\-------> PCM/MIDI(0) or hi-level codecs(1)
 ||\--------> MISC(0) or RIFF/WAVE like(1)
 |\---------> first set(0) or second set(1)
 \----------> (0)

 BB = Byte order / MSB/LSB

 -- First Set:

 MIDI 0x08:
 76543210
      000 0x08 -> MIDI File

 hi-level 0x10:
  76543210
      0000 0x10 -> Ogg Vorbis
      0001 0x11 -> Native FLAC
      0010 0x12 -> Ogg Speex
      0011 0x13 -> Reserved for CELT
      0100 0x14 -> Ogg FLAC
      0101 0x15 -> Ogg General
      0110 0x16 -> Ogg CELT
      0111 0x17 -> Ogg
      [...]
      **** 0x1a -> ROAR CELT
      **** 0x1b -> ROAR SPEEX
      **** 0x1c -> RAUM
      **** 0x1d -> RAUM Vorbis
      **** 0x1e -> RAUM FLAC

 RIFF/WAVE like 0x20:
  76543210
      0000 0x20 -> RIFF/WAVE

 LOG Codecs 0x30:
  76543210
      00BB 0x30 -> A-Law (base)
      01BB 0x34 -> mu-Law (base)

 -- Second Set:

 Bits:
 76543210
 |||||||\---\ byte-
 ||||||\----/ order
 |||||\-----> unsigned? (or other flags)
 ||||\------> META: text(0) or binary(1)
 |||\-------> META(0)/CONTAINER(1)
 ||\--------> Specal codecs(0)
 |\---------> second set(1)
 \----------> (0)

 Meta Codecs 0x40:
  76543210
      0000 0x40 -> Meta Text: Vorbis Comment Like
      [...]
      0100 0x44 -> Meta Text: RoarAudio Like
      [...]
      11BB 0x4c -> Meta Binary: RoarAudio Like

 Container 0x50:
  76543210
      0000 0x50 -> Null container: pass
      0001 0x51 -> Gzip
      0010 0x52 -> Bzip2
      0011 0x53 -> OpenPGP bin
      0100 0x54 -> OpenPGP asc
      0101 0x55 -> TAR

 Bits:
 76543210
 |||||||\---\ byte-
 ||||||\----/ order
 |||||\-----> unsigned? (or other flags)
 ||||\------> (0)
 |||\-------> MIDI(0)/Light(1)
 ||\--------> MIDI and Light(1)
 |\---------> second set(1)
 \----------> (0)

 MIDI 0x60:
  76543210
      0000 -> MIDI

 Light 0x70:
  76543210
      0000 -> DMX512
      0001 -> RoarDMX

 Bits:
 76543210
 |||||||\---\ byte-
 ||||||\----/ order
 |||||\-----> unsigned? (or other flags)
 ||||\------> ID
 |||\-------> RDTCS(0) / User/Vendor Specific(1)
 ||\--------> first subset(0)
 |\---------> first set(0)
 \----------> (1)

 RDTCS 0x80:
  76543210
      0000 -> RDS

 User  0x90:
  76543210
      0000 -> USER0
      [...]
      1111 -> USER15

*/

#define ROAR_CODEC_IS_SIGNED(x)  (((x) & ROAR_CODEC_UNSIGNED) == 0 ? 1 : 0)
#define ROAR_CODEC_BYTE_ORDER(x) ((x) & 0x03)

#define ROAR_CODEC_UNSIGNED    (1 << 2)
#define ROAR_CODEC_LE          0x01
#define ROAR_CODEC_BE          0x02
#define ROAR_CODEC_PDP         0x03

#define ROAR_CODEC_MSB         0x00
#define ROAR_CODEC_LSB         0x01

#define ROAR_CODEC_PCM       0x00
#define ROAR_CODEC_PCM_S_LE  (ROAR_CODEC_PCM | ROAR_CODEC_LE )
#define ROAR_CODEC_PCM_S_BE  (ROAR_CODEC_PCM | ROAR_CODEC_BE )
#define ROAR_CODEC_PCM_S_PDP (ROAR_CODEC_PCM | ROAR_CODEC_PDP)

#define ROAR_CODEC_PCM_U_LE  (ROAR_CODEC_PCM_S_LE  | ROAR_CODEC_UNSIGNED)
#define ROAR_CODEC_PCM_U_BE  (ROAR_CODEC_PCM_S_BE  | ROAR_CODEC_UNSIGNED)
#define ROAR_CODEC_PCM_U_PDP (ROAR_CODEC_PCM_S_PDP | ROAR_CODEC_UNSIGNED)

#define ROAR_CODEC_MIDI_FILE    0x08

#define ROAR_CODEC_OGG_VORBIS   0x10
#define ROAR_CODEC_FLAC         0x11 /* native FLAC without Ogg container */
#define ROAR_CODEC_OGG_SPEEX    0x12
/* #define ROAR_CODEC_CELT/OGG_CELT 0x13 Reserved for CELT */
#define ROAR_CODEC_OGG_FLAC     0x14
#define ROAR_CODEC_OGG_GENERAL  0x15
#define ROAR_CODEC_OGG_CELT     0x16
#define ROAR_CODEC_OGG          0x17
#define ROAR_CODEC_OGG_OPUS     0x18

#define ROAR_CODEC_ROAR_OPUS    0x19
#define ROAR_CODEC_ROAR_CELT    0x1a
#define ROAR_CODEC_ROAR_SPEEX   0x1b

#define ROAR_CODEC_RAUM         0x1c
#define ROAR_CODEC_RAUM_VORBIS  0x1d
#define ROAR_CODEC_RAUM_FLAC    0x1e

#define ROAR_CODEC_RIFF_WAVE    0x20
#define ROAR_CODEC_RIFX         (ROAR_CODEC_RIFF_WAVE | ROAR_CODEC_BE)
#define ROAR_CODEC_AU           0x24
#define ROAR_CODEC_AIFF         0x28

#define ROAR_CODEC_ALAW         0x30
#define ROAR_CODEC_AUTLAW_LE    (ROAR_CODEC_ALAW|ROAR_CODEC_LE)
#define ROAR_CODEC_AUTLAW_BE    (ROAR_CODEC_ALAW|ROAR_CODEC_BE)
#define ROAR_CODEC_AUTLAW       ROAR_CODEC_AUTLAW_BE
#define ROAR_CODEC_MULAW        0x34
#define ROAR_CODEC_MUUTLAW_LE   (ROAR_CODEC_MULAW|ROAR_CODEC_LE)
#define ROAR_CODEC_MUUTLAW_BE   (ROAR_CODEC_MULAW|ROAR_CODEC_BE)
#define ROAR_CODEC_MUUTLAW      ROAR_CODEC_MUUTLAW_BE
#define ROAR_CODEC_GSM          0x38
#define ROAR_CODEC_GSM49        0x39
#define ROAR_CODEC_BRR          0x3c /* SPC-700 Bit Rate Reduction of              */
                                     /* Super Nintendo Entertainment System (SNES) */

// Meta Codecs:
#define ROAR_CODEC_META_VCLT    0x40 /* VCLT = Vorbis Comment Like Text */
#define ROAR_CODEC_META_RALT    0x44 /* RALT = RoarAudio Like Text      */
#define ROAR_CODEC_META_RALB    0x4c /* RALB = RoarAudio Like Binary    */
                                     /* if no byte order is given then you
                                        should assume BE as it is network
                                        byte order                     */
#define ROAR_CODEC_META_RALB_LE  (ROAR_CODEC_META_RALB | ROAR_CODEC_LE )
#define ROAR_CODEC_META_RALB_BE  (ROAR_CODEC_META_RALB | ROAR_CODEC_BE )
#define ROAR_CODEC_META_RALB_PDP (ROAR_CODEC_META_RALB | ROAR_CODEC_PDP)

// Container Codecs:
/*
 Container 0x50:
  76543210
      0000 0x50 -> Null container: pass
      0001 0x51 -> Gzip
      0010 0x52 -> Bzip2
      0011 0x53 -> OpenPGP bin
      0100 0x54 -> OpenPGP asc
      0101 0x55 -> TAR
*/
#define ROAR_CODEC_CONT_NULL    0x50
#define ROAR_CODEC_CONT_BASE    ROAR_CODEC_CONT_NULL
#define ROAR_CODEC_CONT_GZIP    0x51
#define ROAR_CODEC_CONT_BZIP2   0x52
#define ROAR_CODEC_CONT_OPGPBIN 0x53
#define ROAR_CODEC_CONT_OPGPASC 0x54
#define ROAR_CODEC_CONT_TAR     0x55


// MIDI:
#define ROAR_CODEC_MIDI         0x60
#define ROAR_CODEC_ROARMIDI     0x64

// Light Control:
#define ROAR_CODEC_DMX512       0x70
#define ROAR_CODEC_ROARDMX      0x71

// RDTCS:
#define ROAR_CODEC_RDS          0x80

// User specific:
#define ROAR_CODEC_USER0        0x90
#define ROAR_CODEC_USER1        0x91
#define ROAR_CODEC_USER2        0x92
#define ROAR_CODEC_USER3        0x93
#define ROAR_CODEC_USER4        0x94
#define ROAR_CODEC_USER5        0x95
#define ROAR_CODEC_USER6        0x96
#define ROAR_CODEC_USER7        0x97
#define ROAR_CODEC_USER8        0x98
#define ROAR_CODEC_USER9        0x99
#define ROAR_CODEC_USER10       0x9a
#define ROAR_CODEC_USER11       0x9b
#define ROAR_CODEC_USER12       0x9c
#define ROAR_CODEC_USER13       0x9d
#define ROAR_CODEC_USER14       0x9e
#define ROAR_CODEC_USER15       0x9f

#if BYTE_ORDER == BIG_ENDIAN

#define ROAR_CODEC_NATIVE_ENDIAN ROAR_CODEC_BE

#define ROAR_CODEC_PCM_S   ROAR_CODEC_PCM_S_BE
#define ROAR_CODEC_PCM_U   ROAR_CODEC_PCM_U_BE
#define ROAR_BE2DEF(x) (x)

#elif BYTE_ORDER == LITTLE_ENDIAN

#define ROAR_CODEC_NATIVE_ENDIAN ROAR_CODEC_LE

#define ROAR_CODEC_PCM_S   ROAR_CODEC_PCM_S_LE
#define ROAR_CODEC_PCM_U   ROAR_CODEC_PCM_U_LE
#define ROAR_LE2DEF(x) (x)

#else

#define ROAR_CODEC_NATIVE_ENDIAN ROAR_CODEC_PDP

#define ROAR_CODEC_PCM_S   ROAR_CODEC_PCM_S_PDP
#define ROAR_CODEC_PCM_U   ROAR_CODEC_PCM_U_PDP
#define ROAR_PDP2DEF(x) (x)

#endif

#define ROAR_CODEC_DEFAULT ROAR_CODEC_PCM_S


#define ROAR_CODEC_NATIVE ROAR_CODEC_DEFAULT

#define ROAR_BITS_MAX             32

#ifndef ROAR_BITS_DEFAULT
#define ROAR_BITS_DEFAULT         16
#endif
#ifndef ROAR_CHANNELS_DEFAULT
#define ROAR_CHANNELS_DEFAULT      2
#endif
#ifndef ROAR_RATE_DEFAULT
#define ROAR_RATE_DEFAULT      44100
#endif

#define ROAR_MIDI_TICKS_PER_BEAT  96
#define ROAR_MIDI_BITS             8
#define ROAR_MIDI_CHANNELS_DEFAULT 16

#define ROAR_MAX_CHANNELS         64

#define ROAR_SET_VOL_ALL           1
#define ROAR_SET_VOL_ONE           2
#define ROAR_SET_VOL_MS            3
#define ROAR_SET_VOL_UNMAPPED      4


#define ROAR_SPEEX_MAX_CC          256
#define ROAR_SPEEX_MAGIC           "RoarSpeex"
#define ROAR_SPEEX_MAGIC_LEN       9
#define ROAR_SPEEX_MODE_NB         1
#define ROAR_SPEEX_MODE_WB         2
#define ROAR_SPEEX_MODE_UWB        3

#define ROAR_CELT_MAGIC_0          "RoarCELT0"
#define ROAR_CELT_MAGIC_1          "RoarCELT1"
#define ROAR_CELT_MAGIC_LEN        9

#ifdef ROAR_HAVE_CELT_VERSION_0_7_1
#define ROAR_CELT_MAGIC            ROAR_CELT_MAGIC_1
#else
#define ROAR_CELT_MAGIC            ROAR_CELT_MAGIC_0
#endif

#define ROAR_AUDIO_INFO_TYPE    uint32_t
#define ROAR_AUDIO_INFO_INVALID ((ROAR_AUDIO_INFO_TYPE)-1)

struct roar_audio_info {
 ROAR_AUDIO_INFO_TYPE rate;
 ROAR_AUDIO_INFO_TYPE bits;
 ROAR_AUDIO_INFO_TYPE channels;
 ROAR_AUDIO_INFO_TYPE codec;
};

struct roar_mixer_settings {
 //unsigned      channels;
 uint16_t   scale;
 uint16_t   rpg_mul; // rpg = ReplayGain
 uint16_t   rpg_div;
 uint16_t   mixer[ROAR_MAX_CHANNELS];
};

#define ROAR_MIXER(x) ((struct roar_mixer_settings *)x)

#endif

//ll