Changeset 582:dd12ba513b27 in roaraudio
- Timestamp:
- 08/19/08 16:08:07 (16 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- roard
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/codecfilter.c
r571 r582 15 15 #ifdef ROAR_HAVE_LIBVORBISFILE 16 16 {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}, 18 18 #endif 19 19 -
roard/codecfilter_vorbis.c
r572 r582 10 10 struct codecfilter_vorbis_inst * self = malloc(sizeof(struct codecfilter_vorbis_inst)); 11 11 struct roar_stream * s = ROAR_STREAM(info); 12 ogg_packet header;13 ogg_packet header_comm;14 ogg_packet header_code;15 12 16 13 if ( !self ) … … 68 65 ogg_stream_init(&(self->encoder.os), 0x52410000 + ((getpid() & 0xff)<<8) + s->id); 69 66 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 79 int 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 101 int 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 70 109 vorbis_analysis_headerout(&(self->encoder.vd), &(self->encoder.vc), &header, &header_comm, &header_code); 71 110 … … 82 121 } 83 122 123 return len; // we assume every thing was written (at least into our dsp anaylises buffer 84 124 #else 85 free(self);125 errno = ENOSYS; 86 126 return -1; 87 127 #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 } 118 129 int cf_vorbis_read(CODECFILTER_USERDATA_T inst, char * buf, int len) { 119 130 struct codecfilter_vorbis_inst * self = (struct codecfilter_vorbis_inst *) inst; -
roard/include/codecfilter_vorbis.h
r569 r582 46 46 int cf_vorbis_close(CODECFILTER_USERDATA_T inst); 47 47 48 int cf_vorbis_write(CODECFILTER_USERDATA_T inst, char * buf, int len); 48 49 int cf_vorbis_read(CODECFILTER_USERDATA_T inst, char * buf, int len); 49 50
Note: See TracChangeset
for help on using the changeset viewer.