Changeset 741:9be48345d290 in roaraudio


Ignore:
Timestamp:
09/04/08 19:46:49 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

tryed a lot with libvorbisfile to use stream_vio*, seems to to work very well

Location:
roard
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • roard/codecfilter_vorbis.c

    r717 r741  
    2626 
    2727#ifdef ROAR_HAVE_LIBVORBISFILE 
     28 
     29int _g_cf_vorbis_vfvio_return_err (void) { 
     30 return -1; 
     31} 
     32 
     33ov_callbacks _g_cf_vorbis_vfvio = { 
     34  .read_func  = cf_vorbis_vfvio_read, 
     35  .seek_func  = _g_cf_vorbis_vfvio_return_err, 
     36  .close_func = _g_cf_vorbis_vfvio_return_err, 
     37  .tell_func  = _g_cf_vorbis_vfvio_return_err 
     38}; 
     39 
     40size_t cf_vorbis_vfvio_read (void *ptr, size_t size, size_t nmemb, void *datasource) { 
     41 ssize_t r; 
     42 r = stream_vio_s_read(ROAR_STREAM_SERVER(datasource), ptr, size*nmemb); 
     43 
     44 ROAR_WARN("cf_vorbis_vfvio_read(ptr=%p, size=%lu, nmemb=%lu, datasource=%p): r=%i", ptr, size, nmemb, datasource, r); 
     45 
     46 if ( r == -1 ) 
     47  return 0; 
     48 
     49 if ( r > 0 ) 
     50  errno = 0; 
     51  
     52 return r/nmemb; 
     53} 
    2854 
    2955int cf_vorbis_open(CODECFILTER_USERDATA_T * inst, int codec, 
     
    4874 ROAR_DBG("cf_vorbis_open(*): info->id=%i", ROAR_STREAM(info)->id); 
    4975 
     76/* 
    5077 if ( (self->in = fdopen(s->fh, "r")) == NULL ) { 
    5178  free((void*)self); 
    5279  return -1; 
    5380 } 
     81*/ 
    5482 
    5583 *inst = (CODECFILTER_USERDATA_T) self; 
     
    210238 if ( self->opened == 16 ) { 
    211239  //printf("cf_vorbis_read(*): opening...\n"); 
    212   if ( ov_open(self->in, &(self->vf), NULL, 0) < 0 ) { 
     240//int ov_open_callbacks(void *datasource, OggVorbis_File *vf, char *initial, long ibytes, ov_callbacks callbacks); 
     241  if ( ov_open_callbacks((void*)self->stream, &(self->vf), NULL, 0, _g_cf_vorbis_vfvio) < 0 ) { 
     242//  if ( ov_open(self->in, &(self->vf), NULL, 0) < 0 ) { 
    213243//   free((void*)self); 
    214244   return 0; 
  • roard/include/codecfilter_vorbis.h

    r668 r741  
    6262}; 
    6363 
     64size_t cf_vorbis_vfvio_read (void *ptr, size_t size, size_t nmemb, void *datasource); 
     65 
    6466int cf_vorbis_open(CODECFILTER_USERDATA_T * inst, int codec, 
    6567                                            struct roar_stream_server * info, 
  • roard/streams.c

    r740 r741  
    805805 
    806806ssize_t stream_vio_s_read (struct roar_stream_server * stream, void *buf, size_t count) { 
    807  size_t len =  0; 
    808  size_t r   = -1; 
     807  size_t len =  0; 
     808 ssize_t r   = -1; 
    809809 
    810810 errno = 0; 
Note: See TracChangeset for help on using the changeset viewer.