Changeset 1144:a17ed9fd2af0 in roaraudio for roard/codecfilter.c


Ignore:
Timestamp:
01/21/09 22:56:24 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added support to some codec filters to calc the codec delay

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/codecfilter.c

    r1065 r1144  
    2626 
    2727struct 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}, 
    2930 
    3031/* 
     
    3536*/ 
    3637 {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}, 
    3839//#endif 
    3940 
     
    5152  NULL, 
    5253#endif 
    53   cf_alaw_read, NULL}, 
     54  cf_alaw_read, NULL, cf_alaw_delay}, 
    5455#endif 
    5556 
     
    6768  NULL, 
    6869#endif 
    69   cf_mulaw_read, NULL}, 
     70  cf_mulaw_read, NULL, cf_alaw_delay}, 
    7071#endif 
    7172 
     
    7374 {ROAR_CODEC_OGG_GENERAL, "cmd",  "ogg123", 
    7475  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}, 
    7677#endif 
    7778 
     
    8384 ROAR_CODECFILTER_READ, 
    8485#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}, 
    8687#else 
    8788#ifdef ROAR_HAVE_BIN_OGG123 
    8889 {ROAR_CODEC_OGG_VORBIS, "cmd",  "ogg123", 
    8990  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}, 
    9192#endif 
    9293#endif 
     
    9596 {ROAR_CODEC_OGG_SPEEX, "fishsound",  "libfishsound Xiph Codec library", 
    9697  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}, 
    9899 
    99100 {ROAR_CODEC_OGG_FLAC, "fishsound",  "libfishsound Xiph Codec library", 
    100101  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}, 
    102103#endif 
    103104 
     
    105106 {ROAR_CODEC_MIDI_FILE, "MIDIFILE", "timidity MIDI synth", 
    106107  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}, 
    108109#endif 
    109110 
    110111#ifdef ROAR_HAVE_LIBCELT 
    111112 {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}, 
    113114#endif 
    114115 
    115116#ifdef ROAR_HAVE_LIBSPEEX 
    116117 {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}, 
    118119#endif 
    119120 
     
    128129#endif 
    129130  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 list 
     131  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 
    134135}; 
    135136 
     
    138139 int flags; 
    139140 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"); 
    142145 printf("------------------------------------------------------\n"); 
    143146 
     
    154157    mode[1] = 'w'; 
    155158  } 
     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  } 
    156172  
    157   printf("  %-12s %-12s %-4s - %s\n", 
     173  printf("  %-12s %-12s %-4s %-5s - %s\n", 
    158174             roar_codec2str(g_codecfilter[i].codec), 
    159175             g_codecfilter[i].name, 
    160176             mode, 
     177             delay, 
    161178             g_codecfilter[i].desc 
    162179             ); 
     
    253270} 
    254271 
     272int 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 
     284int codecfilter_delay_fulldyn(CODECFILTER_USERDATA_T   inst, uint_least32_t * delay) { 
     285 *delay = 0; // just to be sure 
     286 return -1; 
     287} 
     288 
    255289//ll 
Note: See TracChangeset for help on using the changeset viewer.