Changeset 206:c57fd131ee04 in roaraudio


Ignore:
Timestamp:
07/21/08 01:29:53 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

got codec filter vorbis basicly working

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/codecfilter_vorbis.c

    r205 r206  
    2424 *inst = (CODECFILTER_USERDATA_T) self; 
    2525 
    26  return -1; 
     26 ((struct roar_stream*)info)->info.codec = ROAR_CODEC_DEFAULT; 
     27 
     28 return 0; 
    2729} 
    2830 
     
    3638 
    3739 free(inst); 
    38  return -1; 
     40 return 0; 
    3941} 
    4042 
     
    4244 struct codecfilter_vorbis_inst * self = (struct codecfilter_vorbis_inst *) inst; 
    4345 long r; 
     46 long todo = len; 
     47 long done = 0; 
    4448 
    45  if ( !self->opened == 2 ) { 
     49// printf("cf_vorbis_read(inst=%p, buf=%p, len=%i) = ?\n", inst, buf, len); 
     50 
     51 self->opened++; 
     52 if ( self->opened == 16 ) { 
     53  //printf("cf_vorbis_read(*): opening...\n"); 
    4654  if ( ov_open(self->in, &(self->vf), NULL, 0) < 0 ) { 
    4755   free((void*)self); 
    48    return -1; 
     56   return 0; 
    4957  } 
    5058 } 
    51  self->opened++; 
    5259 
    53  r = ov_read(&(self->vf), buf, len, 0, 2, 1, &(self->current_section)); 
     60 if ( self->opened < 16 ) { 
     61  return -1; 
     62 } 
    5463 
    55  if ( r == 0 ) { 
     64 while (todo) { 
     65  r = ov_read(&(self->vf), buf+done, todo, 0, 2, 1, &(self->current_section)); 
     66  if ( r < 1 ) { 
     67   break; 
     68  } else { 
     69   todo -= r; 
     70   done += r; 
     71  } 
     72 } 
     73 
     74 //printf("ov_read(*) = %i\n", done); 
     75 
     76 if ( done == 0 ) { 
    5677  // do some EOF handling... 
    57   return -1; 
    58  } else if ( r < 0 ) { 
    59   return -1; // error in stream 
     78  return 0; 
    6079 } else { 
    61   return r; 
     80  return len; 
    6281 } 
    6382} 
Note: See TracChangeset for help on using the changeset viewer.