Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/alexmarsev/libbs2b.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorboris_mikhaylov <boris_mikhaylov@bc0edfbe-c936-4687-b64d-f70bc3985e72>2009-05-19 10:40:16 +0400
committerboris_mikhaylov <boris_mikhaylov@bc0edfbe-c936-4687-b64d-f70bc3985e72>2009-05-19 10:40:16 +0400
commit3a7ee9589c89b0d292357b8dc962251885b84d3a (patch)
tree89eeee0c21744c558106ab21a8f4edf03ddf617b
parente63973a84331e8bf829395cca68c3a54f6f2a051 (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--ChangeLog4
-rw-r--r--src/bs2bstream.c87
-rw-r--r--src/bs2bversion.h2
-rw-r--r--win32/bs2bstream/bs2bstream-readme.txt20
4 files changed, 70 insertions, 43 deletions
diff --git a/ChangeLog b/ChangeLog
index 1ea2009..55cb87b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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