diff options
Diffstat (limited to 'sbc/sbcenc.c')
| -rw-r--r-- | sbc/sbcenc.c | 30 | 
1 files changed, 25 insertions, 5 deletions
| diff --git a/sbc/sbcenc.c b/sbc/sbcenc.c index cf5e1533..e17f8fdb 100644 --- a/sbc/sbcenc.c +++ b/sbc/sbcenc.c @@ -140,11 +140,31 @@ static void encode(char *filename, int subbands, int joint)  	sbc_init(&sbc, 0L); -	sbc.rate = BE_INT(au_hdr->sample_rate); -	sbc.channels = BE_INT(au_hdr->channels); -	sbc.subbands = subbands; -	sbc.joint = joint; -	sbc.swap = 1; +	switch (BE_INT(au_hdr->sample_rate)) { +	case 16000: +		sbc.frequency = SBC_FREQ_16000; +		break; +	case 32000: +		sbc.frequency = SBC_FREQ_32000; +		break; +	case 44100: +		sbc.frequency = SBC_FREQ_44100; +		break; +	case 48000: +		sbc.frequency = SBC_FREQ_48000; +		break; +	} + +	sbc.subbands = subbands == 4 ? SBC_SB_4 : SBC_SB_8; + +	if (BE_INT(au_hdr->channels) == 1) +		sbc.mode = SBC_MODE_MONO; +	else if (joint) +		sbc.mode = SBC_MODE_JOINT_STEREO; +	else +		sbc.mode = SBC_MODE_STEREO; + +	sbc.endian = SBC_BE;  	count = BE_INT(au_hdr->data_size);  	size = len - BE_INT(au_hdr->hdr_size);  	memmove(input, input + BE_INT(au_hdr->hdr_size), size); | 
