source: roaraudio/include/roaraudio/audio.h @ 393:698f0de23178

Last change on this file since 393:698f0de23178 was 393:698f0de23178, checked in by phi, 16 years ago

cf speex: detect mode on first read

File size: 2.6 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
19 MIDI 0x08:
20 76543210
21      000 0x08 -> MIDI File
22
23 hi-level 0x10:
24 76543210
25     0000 0x10 -> Ogg Vorbis
26     0001 0x11 -> Native FLAC
27     0010 0x12 -> Ogg Speex
28     0011 0x13 -> Reserved for CELT
29     0100 0x14 -> Ogg FLAC
30     0101 0x15 -> Ogg General
31     0110 0x16 -> Ogg CELT
32     [...]
33     **** 0x1a -> ROAR CELT
34     **** 0x1b -> ROAR SPEEX
35*/
36
37#define ROAR_CODEC_IS_SIGNED(x)  (((x) & ROAR_CODEC_UNSIGNED) == 0 ? 1 : 0)
38#define ROAR_CODEC_BYTE_ORDER(x) ((x) & 0x03)
39
40#define ROAR_CODEC_UNSIGNED    (1 << 2)
41
42#define ROAR_CODEC_PCM_S_LE  0x01
43#define ROAR_CODEC_PCM_S_BE  0x02
44#define ROAR_CODEC_PCM_S_PDP 0x03
45
46#define ROAR_CODEC_PCM_U_LE  (ROAR_CODEC_PCM_S_LE  | ROAR_CODEC_UNSIGNED)
47#define ROAR_CODEC_PCM_U_BE  (ROAR_CODEC_PCM_S_BE  | ROAR_CODEC_UNSIGNED)
48#define ROAR_CODEC_PCM_U_PDP (ROAR_CODEC_PCM_S_PDP | ROAR_CODEC_UNSIGNED)
49
50#define ROAR_CODEC_MIDI_FILE    0x08
51
52#define ROAR_CODEC_OGG_VORBIS   0x10
53#define ROAR_CODEC_FLAC         0x11 /* native FLAC without Ogg container */
54#define ROAR_CODEC_OGG_SPEEX    0x12
55/* #define ROAR_CODEC_CELT/OGG_CELT 0x13 Reserved for CELT */
56#define ROAR_CODEC_OGG_FLAC     0x14
57#define ROAR_CODEC_OGG_GENERAL  0x15
58
59#define ROAR_CODEC_ROAR_CELT    0x1a
60#define ROAR_CODEC_ROAR_SPEEX   0x1b
61
62#if BYTE_ORDER == BIG_ENDIAN
63
64#define ROAR_CODEC_DEFAULT ROAR_CODEC_PCM_BE
65#define ROAR_BE2DEF(x) (x)
66
67#elif BYTE_ORDER == LITTLE_ENDIAN
68
69#define ROAR_CODEC_DEFAULT ROAR_CODEC_PCM_LE
70#define ROAR_LE2DEF(x) (x)
71
72#else
73
74#define ROAR_CODEC_DEFAULT ROAR_CODEC_PCM_PDP
75#define ROAR_PDP2DEF(x) (x)
76
77#endif
78
79
80#define ROAR_CODEC_NATIVE ROAR_CODEC_DEFAULT
81
82#define ROAR_BITS_MAX             32
83
84#define ROAR_BITS_DEFAULT         16
85#define ROAR_CHANNELS_DEFAULT      2
86#define ROAR_RATE_DEFAULT      44100
87
88#define ROAR_MAX_CHANNELS         64
89
90#define ROAR_SET_VOL_ALL           1
91#define ROAR_SET_VOL_ONE           2
92
93
94#define ROAR_SPEEX_MODE_NB         1
95#define ROAR_SPEEX_MODE_WB         2
96#define ROAR_SPEEX_MODE_UWB        3
97
98
99struct roar_audio_info {
100 unsigned int rate;
101 unsigned int bits;
102 unsigned int channels;
103 unsigned int codec;
104};
105
106struct roar_mixer_settings {
107 //unsigned      channels;
108 roar_intm16   scale;
109 roar_intm16   rpg_mul; // rpg = ReplayGain
110 roar_intm16   rpg_div;
111 roar_intm16   mixer[ROAR_MAX_CHANNELS];
112};
113
114#endif
115
116//ll
Note: See TracBrowser for help on using the repository browser.