source: roaraudio/include/roaraudio/audio.h @ 636:4a2ecb926a0e

Last change on this file since 636:4a2ecb926a0e was 636:4a2ecb926a0e, checked in by phi, 16 years ago

added ROAR_CELT_MAGIC :)

File size: 2.9 KB
Line 
1//audio.h:
2
3#ifndef _ROARAUDIO_AUDIO_H_
4#define _ROARAUDIO_AUDIO_H_
5
6#define ROAR_CODEC_PCM_LE  ROAR_CODEC_PCM_S_LE
7#define ROAR_CODEC_PCM_BE  ROAR_CODEC_PCM_S_BE
8#define ROAR_CODEC_PCM_PDP ROAR_CODEC_PCM_S_PDP
9
10/*
11 Bits:
12 76543210
13   |||||\---\ byte-
14   ||||\----/ order
15   |||\-----> unsigned?
16   ||\------> PCM(0) or MIDI(1)?
17   |\-------> PCM/MIDI(0) or hi-level codecs(1)
18   \--------> MISC(0) or RIFF/WAVE like(1)
19
20 MIDI 0x08:
21 76543210
22      000 0x08 -> MIDI File
23
24 hi-level 0x10:
25 76543210
26     0000 0x10 -> Ogg Vorbis
27     0001 0x11 -> Native FLAC
28     0010 0x12 -> Ogg Speex
29     0011 0x13 -> Reserved for CELT
30     0100 0x14 -> Ogg FLAC
31     0101 0x15 -> Ogg General
32     0110 0x16 -> Ogg CELT
33     [...]
34     **** 0x1a -> ROAR CELT
35     **** 0x1b -> ROAR SPEEX
36
37 RIFF/WAVE like 0x20:
38  76543210
39     00000 0x20 -> RIFF/WAVE
40*/
41
42#define ROAR_CODEC_IS_SIGNED(x)  (((x) & ROAR_CODEC_UNSIGNED) == 0 ? 1 : 0)
43#define ROAR_CODEC_BYTE_ORDER(x) ((x) & 0x03)
44
45#define ROAR_CODEC_UNSIGNED    (1 << 2)
46
47#define ROAR_CODEC_PCM_S_LE  0x01
48#define ROAR_CODEC_PCM_S_BE  0x02
49#define ROAR_CODEC_PCM_S_PDP 0x03
50
51#define ROAR_CODEC_PCM_U_LE  (ROAR_CODEC_PCM_S_LE  | ROAR_CODEC_UNSIGNED)
52#define ROAR_CODEC_PCM_U_BE  (ROAR_CODEC_PCM_S_BE  | ROAR_CODEC_UNSIGNED)
53#define ROAR_CODEC_PCM_U_PDP (ROAR_CODEC_PCM_S_PDP | ROAR_CODEC_UNSIGNED)
54
55#define ROAR_CODEC_MIDI_FILE    0x08
56
57#define ROAR_CODEC_OGG_VORBIS   0x10
58#define ROAR_CODEC_FLAC         0x11 /* native FLAC without Ogg container */
59#define ROAR_CODEC_OGG_SPEEX    0x12
60/* #define ROAR_CODEC_CELT/OGG_CELT 0x13 Reserved for CELT */
61#define ROAR_CODEC_OGG_FLAC     0x14
62#define ROAR_CODEC_OGG_GENERAL  0x15
63
64#define ROAR_CODEC_ROAR_CELT    0x1a
65#define ROAR_CODEC_ROAR_SPEEX   0x1b
66
67
68#define ROAR_CODEC_RIFF_WAVE    0x20
69
70#if BYTE_ORDER == BIG_ENDIAN
71
72#define ROAR_CODEC_DEFAULT ROAR_CODEC_PCM_BE
73#define ROAR_BE2DEF(x) (x)
74
75#elif BYTE_ORDER == LITTLE_ENDIAN
76
77#define ROAR_CODEC_DEFAULT ROAR_CODEC_PCM_LE
78#define ROAR_LE2DEF(x) (x)
79
80#else
81
82#define ROAR_CODEC_DEFAULT ROAR_CODEC_PCM_PDP
83#define ROAR_PDP2DEF(x) (x)
84
85#endif
86
87
88#define ROAR_CODEC_NATIVE ROAR_CODEC_DEFAULT
89
90#define ROAR_BITS_MAX             32
91
92#define ROAR_BITS_DEFAULT         16
93#define ROAR_CHANNELS_DEFAULT      2
94#define ROAR_RATE_DEFAULT      44100
95
96#define ROAR_MAX_CHANNELS         64
97
98#define ROAR_SET_VOL_ALL           1
99#define ROAR_SET_VOL_ONE           2
100
101
102#define ROAR_SPEEX_MAX_CC          256
103#define ROAR_SPEEX_MAGIC           "RoarSpeex"
104#define ROAR_SPEEX_MAGIC_LEN       9
105#define ROAR_SPEEX_MODE_NB         1
106#define ROAR_SPEEX_MODE_WB         2
107#define ROAR_SPEEX_MODE_UWB        3
108
109#define ROAR_CELT_MAGIC            "RoarCELT0"
110#define ROAR_CELT_MAGIC_LEN        9
111
112struct roar_audio_info {
113 unsigned int rate;
114 unsigned int bits;
115 unsigned int channels;
116 unsigned int codec;
117};
118
119struct roar_mixer_settings {
120 //unsigned      channels;
121 roar_intm16   scale;
122 roar_intm16   rpg_mul; // rpg = ReplayGain
123 roar_intm16   rpg_div;
124 roar_intm16   mixer[ROAR_MAX_CHANNELS];
125};
126
127#endif
128
129//ll
Note: See TracBrowser for help on using the repository browser.