diff options
| author | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2008-02-19 19:47:25 +0000 | 
|---|---|---|
| committer | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2008-02-19 19:47:25 +0000 | 
| commit | ce342bf2524b69b19ea5a4ad604faf1aa40ad19c (patch) | |
| tree | bfc6130a2e8ddc83ad883f42e31b4f1e8b41f599 /sbc/sbcdec.c | |
| parent | a8bdd2f6be0cdb932110290f3534a525d99c5031 (diff) | |
Introduce sbc new API.
Diffstat (limited to 'sbc/sbcdec.c')
| -rw-r--r-- | sbc/sbcdec.c | 31 | 
1 files changed, 26 insertions, 5 deletions
| diff --git a/sbc/sbcdec.c b/sbc/sbcdec.c index 6c0b4bfa..5ac02b44 100644 --- a/sbc/sbcdec.c +++ b/sbc/sbcdec.c @@ -47,7 +47,7 @@ static void decode(char *filename, char *output, int tofile)  	off_t filesize;  	sbc_t sbc;  	int fd, ad, pos, streamlen, framelen, count, written, len; -	int format = AFMT_S16_BE; +	int format = AFMT_S16_BE, frequency, channels;  	if (stat(filename, &st) < 0) {  		fprintf(stderr, "Can't get size of file %s: %s\n", @@ -95,24 +95,45 @@ static void decode(char *filename, char *output, int tofile)  	}  	sbc_init(&sbc, 0L); -	sbc.swap = 1; +	sbc.endian = SBC_BE;  	framelen = sbc_decode(&sbc, stream, streamlen, buf, sizeof(buf), &len); -	printf("%d Hz, %d channels\n", sbc.rate, sbc.channels); +	channels = sbc.mode == SBC_MODE_MONO ? 1 : 2; +	switch (sbc.frequency) { +	case SBC_FREQ_16000: +		frequency = 16000; +		break; + +	case SBC_FREQ_32000: +		frequency = 32000; +		break; + +	case SBC_FREQ_44100: +		frequency = 44100; +		break; + +	case SBC_FREQ_48000: +		frequency = 48000; +		break; +	default: +		frequency = 0; +	} + +	printf("%d Hz, %d channels\n", frequency, channels);  	if (!tofile) {  		if (ioctl(ad, SNDCTL_DSP_SETFMT, &format) < 0) {  			fprintf(stderr, "Can't set audio format on %s: %s\n",  					output, strerror(errno));  			goto close;  		} -		if (ioctl(ad, SNDCTL_DSP_CHANNELS, &sbc.channels) < 0) { +		if (ioctl(ad, SNDCTL_DSP_CHANNELS, &channels) < 0) {  			fprintf(stderr,  				"Can't set number of channels on %s: %s\n",  				output, strerror(errno));  			goto close;  		} -		if (ioctl(ad, SNDCTL_DSP_SPEED, &sbc.rate) < 0) { +		if (ioctl(ad, SNDCTL_DSP_SPEED, &frequency) < 0) {  			fprintf(stderr, "Can't set audio rate on %s: %s\n",  					output, strerror(errno));  			goto close; | 
