diff options
| author | Brad Midgley <bmidgley@xmission.com> | 2007-11-29 21:48:12 +0000 | 
|---|---|---|
| committer | Brad Midgley <bmidgley@xmission.com> | 2007-11-29 21:48:12 +0000 | 
| commit | 4161e8201ea54fe605b2aa14d864e0bad941c5d8 (patch) | |
| tree | 6cae8fba006b89a7c1e8e3f5e8a0fdcc2c623171 /sbc/sbc.c | |
| parent | 56dc26cadc212be0727b64e522723d45673d67a3 (diff) | |
don't use the audio_sample array inside the frame struct
it's totally unnecessary to keep all these temporary results around
Diffstat (limited to 'sbc/sbc.c')
| -rw-r--r-- | sbc/sbc.c | 12 | 
1 files changed, 5 insertions, 7 deletions
| @@ -969,6 +969,7 @@ static int sbc_pack_frame(uint8_t *data, struct sbc_frame *frame, size_t len)  	/* Sampling frequency as temporary value for table lookup */  	uint8_t sf; +	uint16_t audio_sample;  	int ch, sb, blk, bit;	/* channel, subband, block and bit counters */  	int bits[2][8];		/* bits distribution */ @@ -1153,19 +1154,19 @@ static int sbc_pack_frame(uint8_t *data, struct sbc_frame *frame, size_t len)  		for (ch = 0; ch < frame->channels; ch++) {  			for (sb = 0; sb < frame->subbands; sb++) {  				if (levels[ch][sb] > 0) -					frame->audio_sample[blk][ch][sb] = +					audio_sample =  						(uint16_t) ((((frame->sb_sample_f[blk][ch][sb]*levels[ch][sb]) >>  									(frame->scale_factor[ch][sb] + 1)) +  								levels[ch][sb]) >> 1);  				else -					frame->audio_sample[blk][ch][sb] = 0; +					audio_sample = 0;  				if (bits[ch][sb] != 0) {  					for (bit = 0; bit < bits[ch][sb]; bit++) {  						int b;	/* A bit */  						if (produced % 8 == 0)  							data[produced >> 3] = 0; -						b = ((frame->audio_sample[blk][ch][sb]) >> +						b = ((audio_sample) >>  								(bits[ch][sb] - bit - 1)) & 0x01;  						data[produced >> 3] |= b << (7 - (produced % 8));  						produced++; @@ -1175,10 +1176,7 @@ static int sbc_pack_frame(uint8_t *data, struct sbc_frame *frame, size_t len)  		}  	} -	if (produced % 8 != 0) -		produced += 8 - (produced % 8); - -	return produced >> 3; +	return (produced + 7) >> 3;  }  struct sbc_priv { | 
