Changeset 1144:a17ed9fd2af0 in roaraudio
- Timestamp:
- 01/21/09 22:56:24 (15 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- roard
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/codecfilter.c
r1065 r1144 26 26 27 27 struct roar_codecfilter g_codecfilter[] = { 28 {-1, "null", "null codec filter", NULL, ROAR_CODECFILTER_NONE, NULL, NULL, NULL, NULL, NULL, NULL}, 28 {-1, "null", "null codec filter", NULL, ROAR_CODECFILTER_NONE, 29 NULL, NULL, NULL, NULL, NULL, NULL, NULL}, 29 30 30 31 /* … … 35 36 */ 36 37 {ROAR_CODEC_RIFF_WAVE, "RIFF/WAVE", "RIFF/WAVE", NULL, ROAR_CODECFILTER_READ|ROAR_CODECFILTER_WRITE, 37 cf_wave_open, cf_wave_close, NULL, cf_wave_write, cf_wave_read, NULL },38 cf_wave_open, cf_wave_close, NULL, cf_wave_write, cf_wave_read, NULL, NULL}, 38 39 //#endif 39 40 … … 51 52 NULL, 52 53 #endif 53 cf_alaw_read, NULL },54 cf_alaw_read, NULL, cf_alaw_delay}, 54 55 #endif 55 56 … … 67 68 NULL, 68 69 #endif 69 cf_mulaw_read, NULL },70 cf_mulaw_read, NULL, cf_alaw_delay}, 70 71 #endif 71 72 … … 73 74 {ROAR_CODEC_OGG_GENERAL, "cmd", "ogg123", 74 75 ROAR_HAVE_BIN_OGG123 " -q -d raw -f - -", ROAR_CODECFILTER_READ, 75 cf_cmd_open, NULL, NULL, NULL, NULL, NULL },76 cf_cmd_open, NULL, NULL, NULL, NULL, NULL, codecfilter_delay_fulldyn}, 76 77 #endif 77 78 … … 83 84 ROAR_CODECFILTER_READ, 84 85 #endif 85 cf_vorbis_open, cf_vorbis_close, NULL, cf_vorbis_write, cf_vorbis_read, NULL },86 cf_vorbis_open, cf_vorbis_close, NULL, cf_vorbis_write, cf_vorbis_read, NULL, codecfilter_delay_fulldyn}, 86 87 #else 87 88 #ifdef ROAR_HAVE_BIN_OGG123 88 89 {ROAR_CODEC_OGG_VORBIS, "cmd", "ogg123", 89 90 ROAR_HAVE_BIN_OGG123 " -q -d raw -f - -", ROAR_CODECFILTER_READ, 90 cf_cmd_open, NULL, NULL, NULL, NULL, NULL },91 cf_cmd_open, NULL, NULL, NULL, NULL, NULL, codecfilter_delay_fulldyn}, 91 92 #endif 92 93 #endif … … 95 96 {ROAR_CODEC_OGG_SPEEX, "fishsound", "libfishsound Xiph Codec library", 96 97 NULL, ROAR_CODECFILTER_READ, 97 cf_fishsound_open, cf_fishsound_close, NULL, NULL, cf_fishsound_read, NULL },98 cf_fishsound_open, cf_fishsound_close, NULL, NULL, cf_fishsound_read, NULL, codecfilter_delay_fulldyn}, 98 99 99 100 {ROAR_CODEC_OGG_FLAC, "fishsound", "libfishsound Xiph Codec library", 100 101 NULL, ROAR_CODECFILTER_READ, 101 cf_fishsound_open, cf_fishsound_close, NULL, NULL, cf_fishsound_read, NULL },102 cf_fishsound_open, cf_fishsound_close, NULL, NULL, cf_fishsound_read, NULL, codecfilter_delay_fulldyn}, 102 103 #endif 103 104 … … 105 106 {ROAR_CODEC_MIDI_FILE, "MIDIFILE", "timidity MIDI synth", 106 107 ROAR_HAVE_BIN_TIMIDITY " -Or1sl -s %R -o - -", ROAR_CODECFILTER_READ, 107 cf_cmd_open, NULL, NULL, NULL, NULL, NULL },108 cf_cmd_open, NULL, NULL, NULL, NULL, NULL, codecfilter_delay_fulldyn}, 108 109 #endif 109 110 110 111 #ifdef ROAR_HAVE_LIBCELT 111 112 {ROAR_CODEC_ROAR_CELT, "RoarCELT", "RoarAudio CELT", NULL, ROAR_CODECFILTER_READ|ROAR_CODECFILTER_WRITE, 112 cf_celt_open, cf_celt_close, NULL, cf_celt_write, cf_celt_read, NULL },113 cf_celt_open, cf_celt_close, NULL, cf_celt_write, cf_celt_read, NULL, cf_celt_delay}, 113 114 #endif 114 115 115 116 #ifdef ROAR_HAVE_LIBSPEEX 116 117 {ROAR_CODEC_ROAR_SPEEX, "RoarSpeex", "RoarAudio Speex", NULL, ROAR_CODECFILTER_READ|ROAR_CODECFILTER_WRITE, 117 cf_speex_open, cf_speex_close, NULL, cf_speex_write, cf_speex_read, NULL },118 cf_speex_open, cf_speex_close, NULL, cf_speex_write, cf_speex_read, NULL, NULL}, 118 119 #endif 119 120 … … 128 129 #endif 129 130 ROAR_CODECFILTER_READ, 130 cf_cmd_open, NULL, NULL, NULL, NULL, NULL },131 #endif 132 133 {-1, NULL, NULL, NULL, ROAR_CODECFILTER_NONE, NULL, NULL, NULL, NULL, NULL, NULL } // end of list131 cf_cmd_open, NULL, NULL, NULL, NULL, NULL, codecfilter_delay_fulldyn}, 132 #endif 133 134 {-1, NULL, NULL, NULL, ROAR_CODECFILTER_NONE, NULL, NULL, NULL, NULL, NULL, NULL, NULL} // end of list 134 135 }; 135 136 … … 138 139 int flags; 139 140 char mode[5]; 140 141 printf(" Codec Filtername Mode - Description\n"); 141 char delay[6]; 142 uint_least32_t d; 143 144 printf(" Codec Filtername Mode Delay - Description\n"); 142 145 printf("------------------------------------------------------\n"); 143 146 … … 154 157 mode[1] = 'w'; 155 158 } 159 160 *delay = 0; 161 if ( g_codecfilter[i].codec == -1 ) { // null codec filter 162 strcpy(delay, "0ms"); 163 } else if ( g_codecfilter[i].delay == NULL ) { 164 strcpy(delay, "?"); 165 } else { 166 if ( codecfilter_delay(NULL, i, &d) == -1 ) { 167 strcpy(delay, "dyn"); 168 } else { 169 snprintf(delay, 5, "%ims", d/1000); 170 } 171 } 156 172 157 printf(" %-12s %-12s %-4s - %s\n",173 printf(" %-12s %-12s %-4s %-5s - %s\n", 158 174 roar_codec2str(g_codecfilter[i].codec), 159 175 g_codecfilter[i].name, 160 176 mode, 177 delay, 161 178 g_codecfilter[i].desc 162 179 ); … … 253 270 } 254 271 272 int codecfilter_delay(CODECFILTER_USERDATA_T inst, int codecfilter, uint_least32_t * delay) { 273 ROAR_DBG("codecfilter_delay(inst=%p, codecfilter=%i, *delay=?) = ?", inst, codecfilter); 274 275 if ( codecfilter == -1 ) 276 return -1; 277 278 if ( g_codecfilter[codecfilter].delay ) 279 return g_codecfilter[codecfilter].delay(inst, delay); 280 281 return -1; 282 } 283 284 int codecfilter_delay_fulldyn(CODECFILTER_USERDATA_T inst, uint_least32_t * delay) { 285 *delay = 0; // just to be sure 286 return -1; 287 } 288 255 289 //ll -
roard/codecfilter_alaw.c
r1065 r1144 87 87 #endif 88 88 89 #if defined(ROAR_SUPPORT_ALAW) || defined(ROAR_SUPPORT_MULAW) 90 int cf_alaw_delay(CODECFILTER_USERDATA_T inst, uint_least32_t * delay) { 91 // this codec does not create any addition latency. 92 93 *delay = 0; 94 return 0; 95 } 96 #endif 97 89 98 //ll -
roard/codecfilter_celt.c
r967 r1144 266 266 } 267 267 268 int cf_celt_delay(CODECFILTER_USERDATA_T inst, uint_least32_t * delay) { 269 struct codecfilter_celt_inst * self = (struct codecfilter_celt_inst *) inst; 270 271 ROAR_DBG("cf_celt_delay(*) = ?"); 272 273 if ( self == NULL ) { 274 *delay = (1000000 * 256) / ROAR_RATE_DEFAULT; 275 return 0; 276 } else { 277 *delay = (1000000 * self->frame_size) / ROAR_STREAM(self->stream)->info.rate; 278 ROAR_DBG("cf_celt_delay(*): frame_size=%i, rate=%i, *delay=%i", 279 self->frame_size, ROAR_STREAM(self->stream)->info.rate, *delay); 280 return 0; 281 } 282 283 return -1; 284 } 285 268 286 #endif 269 287 //ll -
roard/include/codecfilter.h
r992 r1144 50 50 int (*read )(CODECFILTER_USERDATA_T inst, char * buf, int len); 51 51 int (*flush)(CODECFILTER_USERDATA_T inst); 52 int (*delay)(CODECFILTER_USERDATA_T inst, uint_least32_t * delay); 52 53 }; 53 54 … … 90 91 int codecfilter_read (CODECFILTER_USERDATA_T inst, int codecfilter, char * buf, int len); 91 92 int codecfilter_flush(CODECFILTER_USERDATA_T inst, int codecfilter); 93 int codecfilter_delay(CODECFILTER_USERDATA_T inst, int codecfilter, uint_least32_t * delay); 94 95 int codecfilter_delay_fulldyn(CODECFILTER_USERDATA_T inst, uint_least32_t * delay); 96 92 97 93 98 // codecfilter without a own .h: … … 100 105 int cf_alaw_read(CODECFILTER_USERDATA_T inst, char * buf, int len); 101 106 int cf_alaw_write(CODECFILTER_USERDATA_T inst, char * buf, int len); 107 int cf_alaw_delay(CODECFILTER_USERDATA_T inst, uint_least32_t * delay); 102 108 103 109 int cf_mulaw_open(CODECFILTER_USERDATA_T * inst, int codec, … … 109 115 int cf_mulaw_read(CODECFILTER_USERDATA_T inst, char * buf, int len); 110 116 int cf_mulaw_write(CODECFILTER_USERDATA_T inst, char * buf, int len); 111 117 // cf_mulaw_delay() would be exactly the same as cf_alaw_delay() so it is just used by mulaw, too. 112 118 113 119 #endif -
roard/include/codecfilter_celt.h
r668 r1144 60 60 int cf_celt_write(CODECFILTER_USERDATA_T inst, char * buf, int len); 61 61 62 int cf_celt_delay(CODECFILTER_USERDATA_T inst, uint_least32_t * delay); 63 62 64 #endif 63 65
Note: See TracChangeset
for help on using the changeset viewer.