Changeset 393:698f0de23178 in roaraudio


Ignore:
Timestamp:
08/06/08 18:29:56 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

cf speex: detect mode on first read

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • include/roaraudio/audio.h

    r329 r393  
    9191#define ROAR_SET_VOL_ONE           2 
    9292 
     93 
     94#define ROAR_SPEEX_MODE_NB         1 
     95#define ROAR_SPEEX_MODE_WB         2 
     96#define ROAR_SPEEX_MODE_UWB        3 
     97 
     98 
    9399struct roar_audio_info { 
    94100 unsigned int rate; 
  • roard/codecfilter_speex.c

    r392 r393  
    1616 self->encoder = NULL; 
    1717 self->decoder = NULL; 
     18 
     19 self->stream  = info; 
    1820 
    1921 speex_bits_init(&(self->bits)); 
     
    4951int cf_speex_read(CODECFILTER_USERDATA_T   inst, char * buf, int len) { 
    5052 struct codecfilter_speex_inst * self = (struct codecfilter_speex_inst *) inst; 
     53  struct roar_stream * s = (struct roar_stream *) self->stream; 
     54 int mode; 
     55 uint16_t ui; 
     56 
     57 if ( ! self->decoder ) { 
     58  if ( read(s->fh, &ui, 2) != 2 ) 
     59   return 0; 
     60 
     61  mode = ntohs(ui); 
     62 
     63  if ( mode == ROAR_SPEEX_MODE_NB ) { 
     64   self->decoder = speex_decoder_init(&speex_nb_mode); 
     65  } else if ( mode == ROAR_SPEEX_MODE_WB ) { 
     66   self->decoder = speex_decoder_init(&speex_wb_mode); 
     67  } else if ( mode == ROAR_SPEEX_MODE_UWB ) { 
     68   self->decoder = speex_decoder_init(&speex_uwb_mode); 
     69  } else { 
     70   return 0; 
     71  } 
     72 } 
    5173 
    5274 return -1; 
    5375} 
     76 
    5477int cf_speex_write(CODECFILTER_USERDATA_T   inst, char * buf, int len) { 
    5578 struct codecfilter_speex_inst * self = (struct codecfilter_speex_inst *) inst; 
Note: See TracChangeset for help on using the changeset viewer.