Changeset 5547:3f5d08ba722e in roaraudio
- Timestamp:
- 06/17/12 16:17:06 (11 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroardsp/dtmf.h
r5546 r5547 41 41 #define ROAR_DTMF_OPTIONS_NONE 0 42 42 43 #define ROAR_DTMF_CHAR_DTMF(x) (((x) & 0xFF) + 0x0000) 44 #define ROAR_DTMF_CHAR_ROAR(x) (((x) & 0xFF) + 0x0100) 45 #define ROAR_DTMF_CHAR_BYTE(x) (((x) & 0xFF) + 0x0200) 46 47 #define ROAR_DTMF_CHAR_NOOP ROAR_DTMF_CHAR_ROAR(0) 48 #define ROAR_DTMF_CHAR_ESCAPE ROAR_DTMF_CHAR_ROAR(27) 49 43 50 ssize_t roar_dtmf_mus2samples(const int_least32_t t, const uint32_t rate); 44 51 -
libroardsp/dtmf.c
r5546 r5547 53 53 return 0; 54 54 } 55 56 #define _FQL0 697 57 #define _FQL1 770 58 #define _FQL2 852 59 #define _FQL3 941 60 #define _FQH0 1209 61 #define _FQH1 1336 62 #define _FQH2 1477 63 #define _FQH3 1633 64 65 #define _FRL0 571 66 #define _FRL1 631 67 #define _FRL2 _FQL0 68 #define _FRL3 _FQL1 69 #define _FRL4 _FQL2 70 #define _FRL5 _FQL3 71 #define _FRL6 1040 72 #define _FRH0 _FQH0 73 #define _FRH1 _FQH1 74 #define _FRH2 _FQH2 75 #define _FRH3 _FQH3 76 #define _FRH4 1805 77 #define _FRH5 1995 78 #define _FRH6 2205 55 79 56 80 static const struct tone { … … 59 83 const float f1; 60 84 } _roardsp_tones[] = { 61 {'1', 697, 1209}, 62 {'2', 697, 1336}, 63 {'3', 697, 1477}, 64 {'A', 697, 1633}, 65 66 {'4', 770, 1209}, 67 {'5', 770, 1336}, 68 {'6', 770, 1477}, 69 {'B', 770, 1633}, 70 71 {'7', 852, 1209}, 72 {'8', 852, 1336}, 73 {'9', 852, 1477}, 74 {'C', 852, 1633}, 75 76 {'*', 941, 1209}, 77 {'0', 941, 1336}, 78 {'#', 941, 1477}, 79 {'D', 941, 1633}, 85 {ROAR_DTMF_CHAR_DTMF('1'), _FQL0, _FQH0}, 86 {ROAR_DTMF_CHAR_DTMF('2'), _FQL0, _FQH1}, 87 {ROAR_DTMF_CHAR_DTMF('3'), _FQL0, _FQH2}, 88 {ROAR_DTMF_CHAR_DTMF('A'), _FQL0, _FQH3}, 89 90 {ROAR_DTMF_CHAR_DTMF('4'), _FQL1, _FQH0}, 91 {ROAR_DTMF_CHAR_DTMF('5'), _FQL1, _FQH1}, 92 {ROAR_DTMF_CHAR_DTMF('6'), _FQL1, _FQH2}, 93 {ROAR_DTMF_CHAR_DTMF('B'), _FQL1, _FQH3}, 94 95 {ROAR_DTMF_CHAR_DTMF('7'), _FQL2, _FQH0}, 96 {ROAR_DTMF_CHAR_DTMF('8'), _FQL2, _FQH1}, 97 {ROAR_DTMF_CHAR_DTMF('9'), _FQL2, _FQH2}, 98 {ROAR_DTMF_CHAR_DTMF('C'), _FQL2, _FQH3}, 99 100 {ROAR_DTMF_CHAR_DTMF('*'), _FQL3, _FQH0}, 101 {ROAR_DTMF_CHAR_DTMF('0'), _FQL3, _FQH1}, 102 {ROAR_DTMF_CHAR_DTMF('#'), _FQL3, _FQH2}, 103 {ROAR_DTMF_CHAR_DTMF('D'), _FQL3, _FQH3}, 104 105 106 {ROAR_DTMF_CHAR_NOOP, _FRL0, _FRH0}, 107 {ROAR_DTMF_CHAR_ESCAPE, _FRL0, _FRH1}, 108 109 {ROAR_DTMF_CHAR_ROAR('"'), _FRL0, _FRH2}, 110 {ROAR_DTMF_CHAR_ROAR(' '), _FRL0, _FRH3}, 111 {ROAR_DTMF_CHAR_ROAR('F'), _FRL0, _FRH4}, 112 {ROAR_DTMF_CHAR_ROAR('M'), _FRL0, _FRH5}, 113 {ROAR_DTMF_CHAR_ROAR('T'), _FRL0, _FRH6}, 114 {ROAR_DTMF_CHAR_ROAR('.'), _FRL1, _FRH0}, 115 {ROAR_DTMF_CHAR_ROAR('?'), _FRL1, _FRH1}, 116 {ROAR_DTMF_CHAR_ROAR('!'), _FRL1, _FRH2}, 117 {ROAR_DTMF_CHAR_ROAR(','), _FRL1, _FRH3}, 118 {ROAR_DTMF_CHAR_ROAR('G'), _FRL1, _FRH4}, 119 {ROAR_DTMF_CHAR_ROAR('N'), _FRL1, _FRH5}, 120 {ROAR_DTMF_CHAR_ROAR('U'), _FRL1, _FRH6}, 121 {ROAR_DTMF_CHAR_ROAR('1'), _FRL2, _FRH0}, 122 {ROAR_DTMF_CHAR_ROAR('2'), _FRL2, _FRH1}, 123 {ROAR_DTMF_CHAR_ROAR('3'), _FRL2, _FRH2}, 124 {ROAR_DTMF_CHAR_ROAR('A'), _FRL2, _FRH3}, 125 {ROAR_DTMF_CHAR_ROAR('H'), _FRL2, _FRH4}, 126 {ROAR_DTMF_CHAR_ROAR('O'), _FRL2, _FRH5}, 127 {ROAR_DTMF_CHAR_ROAR('V'), _FRL2, _FRH6}, 128 {ROAR_DTMF_CHAR_ROAR('4'), _FRL3, _FRH0}, 129 {ROAR_DTMF_CHAR_ROAR('5'), _FRL3, _FRH1}, 130 {ROAR_DTMF_CHAR_ROAR('6'), _FRL3, _FRH2}, 131 {ROAR_DTMF_CHAR_ROAR('B'), _FRL3, _FRH3}, 132 {ROAR_DTMF_CHAR_ROAR('I'), _FRL3, _FRH4}, 133 {ROAR_DTMF_CHAR_ROAR('P'), _FRL3, _FRH5}, 134 {ROAR_DTMF_CHAR_ROAR('W'), _FRL3, _FRH6}, 135 {ROAR_DTMF_CHAR_ROAR('7'), _FRL4, _FRH0}, 136 {ROAR_DTMF_CHAR_ROAR('8'), _FRL4, _FRH1}, 137 {ROAR_DTMF_CHAR_ROAR('9'), _FRL4, _FRH2}, 138 {ROAR_DTMF_CHAR_ROAR('C'), _FRL4, _FRH3}, 139 {ROAR_DTMF_CHAR_ROAR('J'), _FRL4, _FRH4}, 140 {ROAR_DTMF_CHAR_ROAR('Q'), _FRL4, _FRH5}, 141 {ROAR_DTMF_CHAR_ROAR('X'), _FRL4, _FRH6}, 142 {ROAR_DTMF_CHAR_ROAR('*'), _FRL5, _FRH0}, 143 {ROAR_DTMF_CHAR_ROAR('0'), _FRL5, _FRH1}, 144 {ROAR_DTMF_CHAR_ROAR('#'), _FRL5, _FRH2}, 145 {ROAR_DTMF_CHAR_ROAR('D'), _FRL5, _FRH3}, 146 {ROAR_DTMF_CHAR_ROAR('K'), _FRL5, _FRH4}, 147 {ROAR_DTMF_CHAR_ROAR('R'), _FRL5, _FRH5}, 148 {ROAR_DTMF_CHAR_ROAR('Y'), _FRL5, _FRH6}, 149 {ROAR_DTMF_CHAR_ROAR('@'), _FRL6, _FRH0}, 150 {ROAR_DTMF_CHAR_ROAR('+'), _FRL6, _FRH1}, 151 {ROAR_DTMF_CHAR_ROAR('-'), _FRL6, _FRH2}, 152 {ROAR_DTMF_CHAR_ROAR('E'), _FRL6, _FRH3}, 153 {ROAR_DTMF_CHAR_ROAR('L'), _FRL6, _FRH4}, 154 {ROAR_DTMF_CHAR_ROAR('S'), _FRL6, _FRH5}, 155 {ROAR_DTMF_CHAR_ROAR('Z'), _FRL6, _FRH6}, 80 156 81 157 {0, -1, -1} -
roarclients/roardtmf.c
r5546 r5547 48 48 " --rate -R RATE - Set sample rate\n" 49 49 " --help - Show this help\n" 50 " --mode-dtmf - Use standard DTMF (default)\n" 51 " --mode-roar - Use RoarAudio extended DTMF\n" 50 52 ); 51 53 … … 53 55 54 56 int main (int argc, char * argv[]) { 57 enum { 58 MODE_DTMF, 59 MODE_ROAR 60 } mode = MODE_DTMF; 55 61 int rate = ROAR_RATE_DEFAULT; 56 62 const char * server = NULL; … … 65 71 size_t samples; 66 72 size_t len; 67 charc;73 uint16_t c; 68 74 int err; 69 75 … … 75 81 } else if ( !strcmp(k, "--rate") || !strcmp(k, "-r") || !strcmp(k, "-R") ) { 76 82 rate = roar_str2rate(argv[++i]); 83 } else if ( !strcmp(k, "--mode-dtmf") ) { 84 mode = MODE_DTMF; 85 } else if ( !strcmp(k, "--mode-roar") ) { 86 mode = MODE_ROAR; 77 87 } else if ( !strcmp(k, "--help") ) { 78 88 usage(); … … 95 105 samples = len_break + len_tone; 96 106 107 /* 97 108 printf("samples=%llu\n", (long long unsigned int)samples); 98 /*99 109 return 0; 100 110 */ … … 112 122 tones++; 113 123 114 if ( c == '+' || c == '.' || c == '_' ) 115 continue; 124 if ( mode == MODE_DTMF ) { 125 if ( c == '+' || c == '.' || c == '_' ) 126 continue; 127 } else if ( mode == MODE_ROAR ) { 128 c = ROAR_DTMF_CHAR_ROAR(c); 129 } 116 130 117 if ( c == ' ' ) {131 if ( mode == MODE_DTMF && c == ' ' ) { 118 132 roar_dtmf_break(buf, len_tone, rate, ROAR_DTMF_OPTIONS_NONE); 119 133 } else {
Note: See TracChangeset
for help on using the changeset viewer.