Changeset 625:49e04c35dc9e in roaraudio


Ignore:
Timestamp:
08/20/08 13:00:46 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added roar_conv() support for monetoring clients

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/streams.c

    r609 r625  
    615615 struct roar_stream        *   s; 
    616616 struct roar_stream_server *  ss; 
     617 void * obuf; 
     618 int    olen; 
     619 int    need_to_free = 0; 
    617620 
    618621 if ( g_streams[id] == NULL ) 
     
    631634 ROAR_DBG("streams_send_mon(id=%i): fh = %i", id, fh); 
    632635 
     636 if ( s->info.channels != g_sa->channels || s->info.bits  != g_sa->bits || 
     637      s->info.rate     != g_sa->rate     || s->info.codec != g_sa->codec  ) { 
     638  olen = ROAR_OUTPUT_CALC_OUTBUFSIZE(&(s->info)); // we hope g_output_buffer_len 
     639                                                  // is ROAR_OUTPUT_CALC_OUTBUFSIZE(g_sa) here 
     640  if ( (obuf = malloc(olen)) == NULL ) 
     641   return -1; 
     642 
     643  need_to_free = 1; 
     644 
     645  ROAR_DBG("streams_send_mon(id=%i): obuf=%p, olen=%i", id, obuf, olen); 
     646 
     647  if ( roar_conv(obuf, g_output_buffer, ROAR_OUTPUT_BUFFER_SAMPLES*g_sa->channels, g_sa, &(s->info)) == -1 ) { 
     648   free(obuf); 
     649   return -1; 
     650  } 
     651 } else { 
     652  obuf = g_output_buffer; 
     653  olen = g_output_buffer_len; 
     654 } 
     655 
    633656 errno = 0; 
    634657 
    635658 if ( ss->codecfilter == -1 ) { 
    636   if ( write(fh, g_output_buffer, g_output_buffer_len) == g_output_buffer_len ) 
     659  if ( write(fh, obuf, olen) == olen ) { 
     660   if ( need_to_free ) free(obuf); 
    637661   return 0; 
     662  } 
    638663 } else { 
    639   if ( codecfilter_write(ss->codecfilter_inst, ss->codecfilter, g_output_buffer, g_output_buffer_len) 
    640             == g_output_buffer_len ) { 
     664  if ( codecfilter_write(ss->codecfilter_inst, ss->codecfilter, obuf, olen) 
     665            == olen ) { 
     666   if ( need_to_free ) free(obuf); 
    641667   return 0; 
    642668  } else { // we cann't retry on codec filetered streams 
     669   if ( need_to_free ) free(obuf); 
    643670   streams_delete(id); 
    644671   return -1; 
     
    652679  usleep(100); // 0.1ms 
    653680 
    654   if ( write(fh, g_output_buffer, g_output_buffer_len) == g_output_buffer_len ) 
     681  if ( write(fh, obuf, olen) == olen ) { 
     682   if ( need_to_free ) free(obuf); 
    655683   return 0; 
     684  } 
    656685 } 
    657686 
    658687 // ug... error... delete stream! 
    659688 
     689 if ( need_to_free ) free(obuf); 
    660690 streams_delete(id); 
    661691 
Note: See TracChangeset for help on using the changeset viewer.