diff options
author | boris_mikhaylov <boris_mikhaylov@bc0edfbe-c936-4687-b64d-f70bc3985e72> | 2009-05-19 10:40:16 +0400 |
---|---|---|
committer | boris_mikhaylov <boris_mikhaylov@bc0edfbe-c936-4687-b64d-f70bc3985e72> | 2009-05-19 10:40:16 +0400 |
commit | 3a7ee9589c89b0d292357b8dc962251885b84d3a (patch) | |
tree | 89eeee0c21744c558106ab21a8f4edf03ddf617b | |
parent | e63973a84331e8bf829395cca68c3a54f6f2a051 (diff) |
bs2bstream - add switch of crossfeed level by feed level and cut frequency.
git-svn-id: svn://svn.code.sf.net/p/bs2b/code/trunk/libbs2b@141 bc0edfbe-c936-4687-b64d-f70bc3985e72
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/bs2bstream.c | 87 | ||||
-rw-r--r-- | src/bs2bversion.h | 2 | ||||
-rw-r--r-- | win32/bs2bstream/bs2bstream-readme.txt | 20 |
4 files changed, 70 insertions, 43 deletions
@@ -1,3 +1,7 @@ +2009-05-19 Boris Mikhaylov <http://www.tmn.ru/~bor> + * bs2bstream - add switch of crossfeed level by feed level + and cut frequency. + 2009-05-18 Boris Mikhaylov <http://www.tmn.ru/~bor> * Fixed for higher compile warning level. * Extended cut frequency set from [300..1000] to [300..2000] Hz diff --git a/src/bs2bstream.c b/src/bs2bstream.c index c880c53..5c5e787 100644 --- a/src/bs2bstream.c +++ b/src/bs2bstream.c @@ -36,20 +36,25 @@ static void print_usage( char *progname ) { fprintf( stderr, "\n" "Bauer stereophonic-to-binaural DSP stream converter. Version %s\n" - "LPCM stdin-stdout\n\n", + "Stereo interleaved LPCM raw data stdin-stdout converting.\n\n", BS2B_VERSION_STR ); - fprintf( stderr, "Usage : %s [-h] [-u] [-e E] [-b B] [-r R] [-l L]\n", + fprintf( stderr, "Usage : %s [-h] [-u] [-e E] [-b B] [-r R] [-l L|(L1 L2)]\n", progname ); fprintf( stderr, "-h - this help.\n" "-u - unsigned data. Default is signed.\n" "-e - endians, E = b|l|n (big|little|native). Default is native.\n" - "-b - bits per integer sample, B=8|16|24|32. Default is 16 bit.\n" - "-r - sample rate, R = <value by kHz>. Default is 44.1 kHz.\n" - "-l - crossfeed level, L=d|c|m:\n" + "-b - bits per integer sample, B = 8|16|24|32. Default is 16 bit.\n" + "-r - sample rate, R = <value by kHz>. Default is %.3f kHz.\n" + "-l - crossfeed level, L = d|c|m:\n" " d - default preset - 700Hz/260us, 4.5 dB;\n" " c - Chu Moy's preset - 700Hz/260us, 6.0 dB;\n" - " m - Jan Meier's preset - 650Hz/280us, 9.5 dB.\n" ); + " m - Jan Meier's preset - 650Hz/280us, 9.5 dB.\n" + " Or L1 = [%d..%d] mB of feed level (%d..%d dB)\n" + " and L2 = [%d..%d] Hz of cut frequency.\n", + BS2B_DEFAULT_SRATE / 1000.0, + BS2B_MINFEED, BS2B_MAXFEED, BS2B_MINFEED / 10, BS2B_MAXFEED / 10, + BS2B_MINFCUT, BS2B_MAXFCUT ); } /* print_usage() */ int main( int argc, char *argv[] ) @@ -59,8 +64,8 @@ int main( int argc, char *argv[] ) t_bs2bdp bs2bdp; - uint32_t srate = 44100; - uint32_t level = 'd'; + uint32_t srate = BS2B_DEFAULT_SRATE; + uint32_t level = BS2B_DEFAULT_CLEVEL; int bits = 16; int unsigned_flag = 0; int endians = 'n'; @@ -72,8 +77,6 @@ int main( int argc, char *argv[] ) for( i = 1; i < argc; i++ ) { - double df; - if( '-' != argv[ i ][ 0 ] ) { print_usage( progname ); @@ -130,9 +133,8 @@ int main( int argc, char *argv[] ) print_usage( progname ); return 1; } - df = atof( argv[ i ] ); - srate = ( uint32_t )( df * 1000 ); - if( srate > 384000 || srate < 2000 ) + srate = ( uint32_t )( atof( argv[ i ] ) * 1000.0 ); + if( srate < BS2B_MINSRATE || srate > BS2B_MAXSRATE ) { print_usage( progname ); return 1; @@ -145,14 +147,38 @@ int main( int argc, char *argv[] ) print_usage( progname ); return 1; } - level = argv[ i ][ 0 ]; - if( level != 'd' && - level != 'c' && - level != 'm' ) + + switch( argv[ i ][ 0 ] ) { - print_usage( progname ); - return 1; - } + case 'd': + level = BS2B_DEFAULT_CLEVEL; + break; + case 'c': + level = BS2B_CMOY_CLEVEL; + break; + case 'm': + level = BS2B_JMEIER_CLEVEL; + break; + default: + { + int feed, fcut; + + feed = atoi( argv[ i ] ); + if( ++i >= argc ) + { + print_usage( progname ); + return 1; + } + fcut = atoi( argv[ i ] ); + if( feed < BS2B_MINFEED || feed > BS2B_MAXFEED || + fcut < BS2B_MINFCUT || fcut > BS2B_MAXFCUT ) + { + print_usage( progname ); + return 1; + } + level = ( ( uint32_t )feed << 16 ) | ( uint32_t )fcut; + } + } /* switch */ break; default: print_usage( progname ); @@ -161,19 +187,6 @@ int main( int argc, char *argv[] ) } /* if */ } /* for */ - switch( level ) - { - case 'c': - level = BS2B_CMOY_CLEVEL; - break; - case 'm': - level = BS2B_JMEIER_CLEVEL; - break; - default: - level = BS2B_DEFAULT_CLEVEL; - break; - } /* switch */ - #if defined( _O_BINARY ) _setmode( _fileno( stdin ), _O_BINARY ); _setmode( _fileno( stdout ), _O_BINARY ); @@ -187,6 +200,14 @@ int main( int argc, char *argv[] ) bs2b_set_srate( bs2bdp, srate ); bs2b_set_level( bs2bdp, level ); + fprintf( stderr, + "Crossfeed level: %.1f dB, %d Hz, %d us.\n" + "LPCM stream: %d Hz, %d bits, %s, byte order '%c'.\n", + ( double )bs2b_get_level_feed( bs2bdp ) / 10.0, + bs2b_get_level_fcut( bs2bdp ), bs2b_get_level_delay( bs2bdp ), + bs2b_get_srate( bs2bdp ), + bits, unsigned_flag ? "unsigned" : "signed", endians ); + switch( bits ) { case 8: diff --git a/src/bs2bversion.h b/src/bs2bversion.h index af93b99..fcdba01 100644 --- a/src/bs2bversion.h +++ b/src/bs2bversion.h @@ -25,7 +25,7 @@ #define BS2BVERSION_H #define BS2B_VERSION_MAJOR 3 -#define BS2B_VERSION_MINOR 0 +#define BS2B_VERSION_MINOR 1 #define BS2B_VERSION_RELEASE 0 #define BS2B_STRINGIFY_HELPER(X) #X diff --git a/win32/bs2bstream/bs2bstream-readme.txt b/win32/bs2bstream/bs2bstream-readme.txt index 992c3b7..58fed7f 100644 --- a/win32/bs2bstream/bs2bstream-readme.txt +++ b/win32/bs2bstream/bs2bstream-readme.txt @@ -8,20 +8,22 @@ http://bs2b.sourceforge.net/ bs2bstream.exe - win32 x86 binary.
-Applying bs2b effect to standart input of stereo raw LPCM stream.
+Applying bs2b effect to standart input of
+stereo interleaved raw LPCM stream.
-Usage : bs2bstream.exe [-h] [-u] [-e E] [-b B] [-r R] [-l L]
+Usage : bs2bstream.exe [-h] [-u] [-e E] [-b B] [-r R] [-l L|(L1 L2)]
-h - this help.
-u - unsigned data. Default is signed.
-e - endians, E = b|l|n (big|little|native). Default is native.
--b - bits per integer sample, B=8|16|24|32. Default is 16 bit.
--r - sample rate, R = <value by kHz>. Default is 44.1 kHz.
--l - crossfeed level, L=d|c|m:
+-b - bits per integer sample, B = 8|16|24|32. Default is 16 bit.
+-r - sample rate, R = <value by kHz>. Default is 44.100 kHz.
+-l - crossfeed level, L = d|c|m:
d - default preset - 700Hz/260us, 4.5 dB;
c - Chu Moy's preset - 700Hz/260us, 6.0 dB;
m - Jan Meier's preset - 650Hz/280us, 9.5 dB.
+ Or L1 = [10..150] mB of feed level (1..15 dB)
+ and L2 = [300..2000] Hz of cut frequency.
-Example of usage (with lame):
- lame -t --decode test-44-16.wav - | \
- bs2bstream -l c -b 16 -r 44.1 | \
- lame -r -x -m j -s 44.1 --bitwidth 16 --preset extreme - test.mp3
+Example of usage with lame:
+lame -t --decode test.wav - | bs2bstream | \
+ lame -r -x -m j -s 44.1 --bitwidth 16 --preset extreme - test.mp3
|