Changeset 582:dd12ba513b27 in roaraudio


Ignore:
Timestamp:
08/19/08 16:08:07 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added cf_vorbis_write()

Location:
roard
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • roard/codecfilter.c

    r571 r582  
    1515#ifdef ROAR_HAVE_LIBVORBISFILE 
    1616 {ROAR_CODEC_OGG_VORBIS, "oggvorbis", "Ogg Vorbis decoder", NULL, 
    17  cf_vorbis_open, cf_vorbis_close, NULL, NULL, cf_vorbis_read, NULL}, 
     17 cf_vorbis_open, cf_vorbis_close, NULL, cf_vorbis_write, cf_vorbis_read, NULL}, 
    1818#endif 
    1919 
  • roard/codecfilter_vorbis.c

    r572 r582  
    1010 struct codecfilter_vorbis_inst * self = malloc(sizeof(struct codecfilter_vorbis_inst)); 
    1111 struct roar_stream * s = ROAR_STREAM(info); 
    12  ogg_packet header; 
    13  ogg_packet header_comm; 
    14  ogg_packet header_code; 
    1512 
    1613 if ( !self ) 
     
    6865  ogg_stream_init(&(self->encoder.os), 0x52410000 + ((getpid() & 0xff)<<8) + s->id); 
    6966 
     67#else 
     68 free(self); 
     69 return -1; 
     70#endif 
     71 } else { 
     72  free(self); 
     73  return -1; 
     74 } 
     75 
     76 return 0; 
     77} 
     78 
     79int cf_vorbis_close(CODECFILTER_USERDATA_T   inst) { 
     80 struct codecfilter_vorbis_inst * self = (struct codecfilter_vorbis_inst *) inst; 
     81 
     82 if ( !inst ) 
     83  return -1; 
     84 
     85 if ( self->got_it_running ) 
     86  ov_clear(&(self->vf)); 
     87 
     88#ifdef ROAR_HAVE_LIBVORBISENC 
     89 if ( self->encoding ) { 
     90  ogg_stream_clear(&(self->encoder.os)); 
     91  vorbis_block_clear(&(self->encoder.vb)); 
     92  vorbis_dsp_clear(&(self->encoder.vd)); 
     93  vorbis_info_clear(&(self->encoder.vi)); 
     94 } 
     95#endif 
     96 
     97 free(inst); 
     98 return 0; 
     99} 
     100 
     101int cf_vorbis_write(CODECFILTER_USERDATA_T   inst, char * buf, int len) { 
     102#ifdef ROAR_HAVE_LIBVORBISENC 
     103 struct codecfilter_vorbis_inst * self = (struct codecfilter_vorbis_inst *) inst; 
     104 struct roar_stream * s = ROAR_STREAM(self->stream); 
     105 ogg_packet header; 
     106 ogg_packet header_comm; 
     107 ogg_packet header_code; 
     108 
    70109  vorbis_analysis_headerout(&(self->encoder.vd), &(self->encoder.vc), &header, &header_comm, &header_code); 
    71110 
     
    82121  } 
    83122 
     123  return len; // we assume every thing was written (at least into our dsp anaylises buffer 
    84124#else 
    85  free(self); 
     125 errno = ENOSYS; 
    86126 return -1; 
    87127#endif 
    88  } else { 
    89   free(self); 
    90   return -1; 
    91  } 
    92  
    93  return 0; 
    94 } 
    95  
    96 int cf_vorbis_close(CODECFILTER_USERDATA_T   inst) { 
    97  struct codecfilter_vorbis_inst * self = (struct codecfilter_vorbis_inst *) inst; 
    98  
    99  if ( !inst ) 
    100   return -1; 
    101  
    102  if ( self->got_it_running ) 
    103   ov_clear(&(self->vf)); 
    104  
    105 #ifdef ROAR_HAVE_LIBVORBISENC 
    106  if ( self->encoding ) { 
    107   ogg_stream_clear(&(self->encoder.os)); 
    108   vorbis_block_clear(&(self->encoder.vb)); 
    109   vorbis_dsp_clear(&(self->encoder.vd)); 
    110   vorbis_info_clear(&(self->encoder.vi)); 
    111  } 
    112 #endif 
    113  
    114  free(inst); 
    115  return 0; 
    116 } 
    117  
     128} 
    118129int cf_vorbis_read(CODECFILTER_USERDATA_T   inst, char * buf, int len) { 
    119130 struct codecfilter_vorbis_inst * self = (struct codecfilter_vorbis_inst *) inst; 
  • roard/include/codecfilter_vorbis.h

    r569 r582  
    4646int cf_vorbis_close(CODECFILTER_USERDATA_T   inst); 
    4747 
     48int cf_vorbis_write(CODECFILTER_USERDATA_T   inst, char * buf, int len); 
    4849int cf_vorbis_read(CODECFILTER_USERDATA_T   inst, char * buf, int len); 
    4950 
Note: See TracChangeset for help on using the changeset viewer.