Changeset 1226:c14eba752b62 in roaraudio for roard/codecfilter_vorbis.c
- Timestamp:
- 02/25/09 01:44:46 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/codecfilter_vorbis.c
r1185 r1226 75 75 // self->outlen = ROAR_OUTPUT_BUFFER_SAMPLES * s->info.channels * s->info.bits / 8; // optimal size 76 76 #ifdef ROAR_HAVE_LIBVORBISENC 77 self->encoding = 0; 77 self->encoding = 0; 78 self->encoder.v_base_quality = 0.3; 78 79 #endif 79 80 … … 90 91 #ifdef ROAR_HAVE_LIBVORBISENC 91 92 // set up the encoder here 92 93 memset(&(self->encoder), 0, sizeof(self->encoder)); 94 95 self->encoding = 1; 96 97 vorbis_info_init(&(self->encoder.vi)); 98 vorbis_comment_init(&(self->encoder.vc)); 99 vorbis_comment_add_tag(&(self->encoder.vc), "SERVER", "RoarAudio"); 100 vorbis_comment_add_tag(&(self->encoder.vc), "ENCODER", "RoarAudio Vorbis codecfilter"); 101 102 if( vorbis_encode_init_vbr(&(self->encoder.vi), (long) s->info.channels, (long) s->info.rate, 103 self->encoder.v_base_quality) != 0 ) { 104 ROAR_ERR("cf_vorbis_open(*): Can not vorbis_encode_init_vbr(*)!"); 105 vorbis_info_clear(&(self->encoder.vi)); // TODO: do we need to free vc also? 106 free(self); 107 return -1; 108 } 109 110 vorbis_analysis_init(&(self->encoder.vd), &(self->encoder.vi)); 111 vorbis_block_init(&(self->encoder.vd), &(self->encoder.vb)); 112 113 // "RA"<<16 + PID<<8 + Stream ID 114 ogg_stream_init(&(self->encoder.os), 0x52410000 + ((getpid() & 0xff)<<8) + s->id); 115 93 if ( cf_vorbis_encode_start(self) == -1 ) { 94 free(self); 95 return -1; 96 } 116 97 #else 117 98 free(self); … … 137 118 #ifdef ROAR_HAVE_LIBVORBISENC 138 119 if ( self->encoding ) { 139 ogg_stream_clear(&(self->encoder.os)); 140 vorbis_block_clear(&(self->encoder.vb)); 141 vorbis_dsp_clear(&(self->encoder.vd)); 142 vorbis_info_clear(&(self->encoder.vi)); 120 cf_vorbis_encode_end(self); 143 121 } 144 122 #endif … … 362 340 } 363 341 364 #endif 365 342 int cf_vorbis_encode_start (struct codecfilter_vorbis_inst * self) { 343 #ifdef ROAR_HAVE_LIBVORBISENC 344 memset(&(self->encoder), 0, sizeof(self->encoder)); 345 346 self->encoding = 1; 347 348 vorbis_info_init(&(self->encoder.vi)); 349 vorbis_comment_init(&(self->encoder.vc)); 350 vorbis_comment_add_tag(&(self->encoder.vc), "SERVER", "RoarAudio"); 351 vorbis_comment_add_tag(&(self->encoder.vc), "ENCODER", "RoarAudio Vorbis codecfilter"); 352 353 if( vorbis_encode_init_vbr(&(self->encoder.vi), (long) ROAR_STREAM(self->stream)->info.channels, 354 (long) ROAR_STREAM(self->stream)->info.rate, 355 self->encoder.v_base_quality) != 0 ) { 356 ROAR_ERR("cf_vorbis_encode_start(*): Can not vorbis_encode_init_vbr(*)!"); 357 vorbis_info_clear(&(self->encoder.vi)); // TODO: do we need to free vc also? 358 return -1; 359 } 360 361 vorbis_analysis_init(&(self->encoder.vd), &(self->encoder.vi)); 362 vorbis_block_init(&(self->encoder.vd), &(self->encoder.vb)); 363 364 // "RA"<<16 + PID<<8 + Stream ID 365 ogg_stream_init(&(self->encoder.os), 0x52410000 + ((getpid() & 0xff)<<8) + (ROAR_STREAM(self->stream)->id & 0xff)); 366 return 0; 367 #else 368 return -1; 369 #endif 370 } 371 372 int cf_vorbis_encode_end (struct codecfilter_vorbis_inst * self) { 373 #ifdef ROAR_HAVE_LIBVORBISENC 374 if ( self->encoding ) { 375 ogg_stream_clear(&(self->encoder.os)); 376 vorbis_block_clear(&(self->encoder.vb)); 377 vorbis_dsp_clear(&(self->encoder.vd)); 378 vorbis_info_clear(&(self->encoder.vi)); 379 self->opened = 0; 380 } 381 382 return 0; 383 #else 384 return -1; 385 #endif 386 } 387 388 #endif 366 389 //ll
Note: See TracChangeset
for help on using the changeset viewer.