diff options
author | Thom Johansen <thomj@rockbox.org> | 2007-11-10 14:57:49 +0000 |
---|---|---|
committer | Thom Johansen <thomj@rockbox.org> | 2007-11-10 14:57:49 +0000 |
commit | 1730e406ed8f1db32e9755bbfedcb192ff153cb7 (patch) | |
tree | a49cb4371cb94031126b401136451bd8103cecfd /apps/codecs/speex.c | |
parent | ec6569ed22d27eb6eb5a3902502eecc59d83de7a (diff) | |
download | rockbox-1730e406ed8f1db32e9755bbfedcb192ff153cb7.tar.gz rockbox-1730e406ed8f1db32e9755bbfedcb192ff153cb7.zip |
Strip out a large unneeded portion of the Speex stereo decoding function, and port the rest of it to fixed point. Disable the unneeded stereo float decoding function. Correct the output buffer size and change some minor syntactic stuff in speex.c
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15554 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/speex.c')
-rw-r--r-- | apps/codecs/speex.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/apps/codecs/speex.c b/apps/codecs/speex.c index 7edda4b6db..2cd547a84d 100644 --- a/apps/codecs/speex.c +++ b/apps/codecs/speex.c | |||
@@ -26,7 +26,8 @@ | |||
26 | #include "libspeex/speex/speex_config_types.h" | 26 | #include "libspeex/speex/speex_config_types.h" |
27 | #include "codeclib.h" | 27 | #include "codeclib.h" |
28 | 28 | ||
29 | #define MAX_FRAME_SIZE 2000 | 29 | // Room for one stereo frame of max size, 2*640 |
30 | #define MAX_FRAME_SIZE 1280 | ||
30 | #define CHUNKSIZE 10000 /*2kb*/ | 31 | #define CHUNKSIZE 10000 /*2kb*/ |
31 | #define SEEK_CHUNKSIZE 7*CHUNKSIZE | 32 | #define SEEK_CHUNKSIZE 7*CHUNKSIZE |
32 | 33 | ||
@@ -346,7 +347,7 @@ static void *process_header(spx_ogg_packet *op, | |||
346 | speex_decoder_ctl(st, SPEEX_SET_ENH, &enh_enabled); | 347 | speex_decoder_ctl(st, SPEEX_SET_ENH, &enh_enabled); |
347 | speex_decoder_ctl(st, SPEEX_GET_FRAME_SIZE, frame_size); | 348 | speex_decoder_ctl(st, SPEEX_GET_FRAME_SIZE, frame_size); |
348 | 349 | ||
349 | if (!(*channels==1)){ | 350 | if (*channels!=1){ |
350 | callback.callback_id = SPEEX_INBAND_STEREO; | 351 | callback.callback_id = SPEEX_INBAND_STEREO; |
351 | callback.func = speex_std_stereo_request_handler; | 352 | callback.func = speex_std_stereo_request_handler; |
352 | callback.data = stereo; | 353 | callback.data = stereo; |
@@ -381,7 +382,8 @@ enum codec_status codec_main(void) | |||
381 | int enh_enabled = 1; | 382 | int enh_enabled = 1; |
382 | int nframes = 2; | 383 | int nframes = 2; |
383 | int eos = 0; | 384 | int eos = 0; |
384 | SpeexStereoState stereo = SPEEX_STEREO_STATE_INIT; | 385 | static const SpeexStereoState stereo_init = SPEEX_STEREO_STATE_INIT; |
386 | SpeexStereoState stereo = stereo_init; | ||
385 | int channels = -1; | 387 | int channels = -1; |
386 | int rate = 0, samplerate = 0; | 388 | int rate = 0, samplerate = 0; |
387 | int extra_headers = 0; | 389 | int extra_headers = 0; |
@@ -531,13 +533,11 @@ next_page: | |||
531 | if (channels == 2) | 533 | if (channels == 2) |
532 | speex_decode_stereo_int(output, frame_size, &stereo); | 534 | speex_decode_stereo_int(output, frame_size, &stereo); |
533 | 535 | ||
534 | int new_frame_size = frame_size; | 536 | if (frame_size > 0) { |
535 | 537 | ci->pcmbuf_insert(output, NULL, frame_size); | |
536 | if (new_frame_size > 0) { | ||
537 | ci->pcmbuf_insert(output, NULL, new_frame_size); | ||
538 | 538 | ||
539 | /* 2 bytes/sample */ | 539 | /* 2 bytes/sample */ |
540 | cur_granule += new_frame_size / 2; | 540 | cur_granule += frame_size / 2; |
541 | 541 | ||
542 | ci->set_offset((long) ci->curpos); | 542 | ci->set_offset((long) ci->curpos); |
543 | 543 | ||
@@ -566,9 +566,7 @@ done: | |||
566 | cur_granule = stream_init = rate = samplerate = headerssize | 566 | cur_granule = stream_init = rate = samplerate = headerssize |
567 | = packet_count = eos = 0; | 567 | = packet_count = eos = 0; |
568 | 568 | ||
569 | stereo.balance = stereo.smooth_left = stereo.smooth_right = 1; | 569 | stereo = stereo_init; |
570 | stereo.e_ratio = .5; | ||
571 | stereo.reserved1 = stereo.reserved2 = 0; | ||
572 | 570 | ||
573 | goto next_track; | 571 | goto next_track; |
574 | } | 572 | } |