summaryrefslogtreecommitdiffstats
path: root/sbc/sbcdec.c
diff options
context:
space:
mode:
Diffstat (limited to 'sbc/sbcdec.c')
-rw-r--r--sbc/sbcdec.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/sbc/sbcdec.c b/sbc/sbcdec.c
index 2464c421..140f1547 100644
--- a/sbc/sbcdec.c
+++ b/sbc/sbcdec.c
@@ -41,6 +41,8 @@
#define BUF_SIZE 8192
+static int verbose = 0;
+
static void decode(char *filename, char *output, int tofile)
{
unsigned char buf[BUF_SIZE], *stream;
@@ -120,7 +122,16 @@ static void decode(char *filename, char *output, int tofile)
frequency = 0;
}
- printf("%d Hz, %d channels\n", frequency, channels);
+ if (verbose) {
+ fprintf(stderr,"decoding %s with rate %d, %d subbands, "
+ "%d bits, allocation method %s and mode %s\n",
+ filename, frequency, sbc.subbands * 4 + 4, sbc.bitpool,
+ sbc.allocation == SBC_AM_SNR ? "SNR" : "LOUDNESS",
+ sbc.mode == SBC_MODE_MONO ? "MONO" :
+ sbc.mode == SBC_MODE_STEREO ?
+ "STEREO" : "JOINTSTEREO");
+ }
+
if (tofile) {
struct au_header au_hdr;
@@ -139,25 +150,25 @@ static void decode(char *filename, char *output, int tofile)
} else {
if (ioctl(ad, SNDCTL_DSP_SETFMT, &format) < 0) {
fprintf(stderr, "Can't set audio format on %s: %s\n",
- output, strerror(errno));
+ output, strerror(errno));
goto close;
}
if (ioctl(ad, SNDCTL_DSP_CHANNELS, &channels) < 0) {
- fprintf(stderr,
- "Can't set number of channels on %s: %s\n",
- output, strerror(errno));
+ fprintf(stderr, "Can't set number of channels on %s: %s\n",
+ output, strerror(errno));
goto close;
}
if (ioctl(ad, SNDCTL_DSP_SPEED, &frequency) < 0) {
fprintf(stderr, "Can't set audio rate on %s: %s\n",
- output, strerror(errno));
+ output, strerror(errno));
goto close;
}
}
count = len;
+
while (framelen > 0) {
/* we have completed an sbc_decode at this point sbc.len is the
* length of the frame we just decoded count is the number of
@@ -233,9 +244,10 @@ static struct option main_options[] = {
int main(int argc, char *argv[])
{
char *output = NULL;
- int i, opt, verbose = 0, tofile = 0;
+ int i, opt, tofile = 0;
- while ((opt = getopt_long(argc, argv, "+hvd:f:", main_options, NULL)) != -1) {
+ while ((opt = getopt_long(argc, argv, "+hvd:f:",
+ main_options, NULL)) != -1) {
switch(opt) {
case 'h':
usage();