Changeset 2098:e9932b68c679 in roaraudio


Ignore:
Timestamp:
07/21/09 12:53:42 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added a lot debug lions, changed sign-convert code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroardsp/convert.c

    r2097 r2098  
    740740 void   * cin = in; 
    741741 struct roar_audio_info cinfo; 
     742 int    need_signed = 0; 
    742743 
    743744 memcpy(&cinfo, from, sizeof(cinfo)); 
     
    753754 if ( from->rate < to->rate ) 
    754755  needed_buffer *= (float)to->rate/(float)from->rate; 
     756 
     757 ROAR_WARN("roar_conv2(*): needed_buffer=%u, bufsize=%u", needed_buffer, bufsize); 
    755758 
    756759 // chjeck if we have enogth RAM to convert 
     
    758761  return -1; 
    759762 
     763 if ( from->rate != to->rate || from->channels != to->channels ) 
     764  need_signed = 1; 
     765 
     766  ROAR_WARN("roar_conv2(*): need_signed=%i", need_signed); 
     767 
    760768 if ( ROAR_CODEC_BYTE_ORDER(from->codec) != ROAR_CODEC_NATIVE_ENDIAN ) { 
    761   ROAR_DBG("roar_conv(*): doing bo input conv"); 
     769  ROAR_WARN("roar_conv2(*): doing bo input conv"); 
    762770  if ( roar_conv_endian(out, cin, samples, 
    763771       ROAR_CODEC_BYTE_ORDER(from->codec), ROAR_CODEC_NATIVE_ENDIAN, from->bits) == -1 ) { 
     
    768776 
    769777 if ( to->bits > from->bits ) { 
     778  ROAR_WARN("roar_conv2(*): bits: %i->%i", from->bits, to->bits); 
    770779  if ( roar_conv_bits(out, cin, samples, from->bits, to->bits) == -1 ) 
    771780   return -1; 
     
    775784 } 
    776785 
    777  if ( to->channels > from->channels ) { 
    778   if ( roar_conv_chans(out, cin, samples, from->channels, to->channels, cinfo.bits) == -1 ) 
    779    return -1; 
    780  
    781   cin            = out; 
    782   cinfo.channels = to->channels; 
    783  } 
    784  
    785  if ( ROAR_CODEC_IS_SIGNED(from->codec) != ROAR_CODEC_IS_SIGNED(to->codec) ) { 
     786 if ( need_signed && ! ROAR_CODEC_IS_SIGNED(from->codec) ) { 
     787  ROAR_WARN("roar_conv2(*): sign: unsigned->signed"); 
    786788  if ( roar_conv_signedness(out, cin, samples, 
    787789                            ROAR_CODEC_IS_SIGNED(from->codec), ROAR_CODEC_IS_SIGNED(to->codec), 
     
    790792 
    791793  cin            = out; 
    792   cinfo.codec    = to->codec; 
    793  } 
    794  
    795  if ( cinfo.channels != to->channels ) { 
    796   if ( roar_conv_chans(out, cin, samples, cinfo.channels, to->channels, cinfo.bits) == -1 ) 
     794  cinfo.codec    = ROAR_CODEC_PCM_S_LE; // just a signed PCM, which is of no intrest 
     795 } 
     796 
     797 if ( to->channels > from->channels ) { 
     798  ROAR_WARN("roar_conv2(*): channels: %i->%i", from->channels, to->channels); 
     799  if ( roar_conv_chans(out, cin, samples, from->channels, to->channels, cinfo.bits) == -1 ) 
    797800   return -1; 
    798801 
     
    801804 } 
    802805 
     806 if ( cinfo.channels != to->channels ) { 
     807  ROAR_WARN("roar_conv2(*): channels: %i->%i", cinfo.channels, to->channels); 
     808  if ( roar_conv_chans(out, cin, samples, cinfo.channels, to->channels, cinfo.bits) == -1 ) 
     809   return -1; 
     810 
     811  cin            = out; 
     812  cinfo.channels = to->channels; 
     813 } 
     814 
     815 if ( ROAR_CODEC_IS_SIGNED(cinfo.codec) != ROAR_CODEC_IS_SIGNED(to->codec) ) { 
     816  ROAR_WARN("roar_conv2(*): sign: ?(%i)->?(%i)", ROAR_CODEC_IS_SIGNED(cinfo.codec), ROAR_CODEC_IS_SIGNED(to->codec)); 
     817  if ( roar_conv_signedness(out, cin, samples, 
     818                            ROAR_CODEC_IS_SIGNED(cinfo.codec), ROAR_CODEC_IS_SIGNED(to->codec), 
     819                            cinfo.bits) == -1 ) 
     820   return -1; 
     821 
     822  cin            = out; 
     823  cinfo.codec    = to->codec; 
     824 } 
     825 
    803826 if ( cinfo.bits != to->bits ) { 
     827  ROAR_WARN("roar_conv2(*): bits: %i->%i", cinfo.bits, to->bits); 
    804828  if ( roar_conv_bits(out, cin, samples, cinfo.bits, to->bits) == -1 ) 
    805829   return -1; 
     
    810834 
    811835 if ( ROAR_CODEC_BYTE_ORDER(to->codec) != ROAR_CODEC_NATIVE_ENDIAN ) { 
    812   ROAR_DBG("roar_conv(*): doing bo output conv"); 
     836  ROAR_WARN("roar_conv2(*): doing bo output conv"); 
    813837  if ( roar_conv_endian(out, cin, samples, 
    814838       ROAR_CODEC_NATIVE_ENDIAN, ROAR_CODEC_BYTE_ORDER(to->codec), to->bits) == -1 ) { 
     
    818842 } 
    819843 
     844 ROAR_WARN("roar_conv2(*) = 0"); 
    820845 return 0; 
    821846} 
Note: See TracChangeset for help on using the changeset viewer.