Changeset 2098:e9932b68c679 in roaraudio
- Timestamp:
- 07/21/09 12:53:42 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroardsp/convert.c
r2097 r2098 740 740 void * cin = in; 741 741 struct roar_audio_info cinfo; 742 int need_signed = 0; 742 743 743 744 memcpy(&cinfo, from, sizeof(cinfo)); … … 753 754 if ( from->rate < to->rate ) 754 755 needed_buffer *= (float)to->rate/(float)from->rate; 756 757 ROAR_WARN("roar_conv2(*): needed_buffer=%u, bufsize=%u", needed_buffer, bufsize); 755 758 756 759 // chjeck if we have enogth RAM to convert … … 758 761 return -1; 759 762 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 760 768 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"); 762 770 if ( roar_conv_endian(out, cin, samples, 763 771 ROAR_CODEC_BYTE_ORDER(from->codec), ROAR_CODEC_NATIVE_ENDIAN, from->bits) == -1 ) { … … 768 776 769 777 if ( to->bits > from->bits ) { 778 ROAR_WARN("roar_conv2(*): bits: %i->%i", from->bits, to->bits); 770 779 if ( roar_conv_bits(out, cin, samples, from->bits, to->bits) == -1 ) 771 780 return -1; … … 775 784 } 776 785 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"); 786 788 if ( roar_conv_signedness(out, cin, samples, 787 789 ROAR_CODEC_IS_SIGNED(from->codec), ROAR_CODEC_IS_SIGNED(to->codec), … … 790 792 791 793 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 ) 797 800 return -1; 798 801 … … 801 804 } 802 805 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 803 826 if ( cinfo.bits != to->bits ) { 827 ROAR_WARN("roar_conv2(*): bits: %i->%i", cinfo.bits, to->bits); 804 828 if ( roar_conv_bits(out, cin, samples, cinfo.bits, to->bits) == -1 ) 805 829 return -1; … … 810 834 811 835 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"); 813 837 if ( roar_conv_endian(out, cin, samples, 814 838 ROAR_CODEC_NATIVE_ENDIAN, ROAR_CODEC_BYTE_ORDER(to->codec), to->bits) == -1 ) { … … 818 842 } 819 843 844 ROAR_WARN("roar_conv2(*) = 0"); 820 845 return 0; 821 846 }
Note: See TracChangeset
for help on using the changeset viewer.