summaryrefslogtreecommitdiff
path: root/apps/plugins/mpegplayer/decode.c
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2007-10-16 22:55:40 +0000
committerJens Arnold <amiconn@rockbox.org>2007-10-16 22:55:40 +0000
commitfc43b9df823af80dd1c9cf7dc1b5de6703944043 (patch)
treebb17b985d00d13bc6fce61823acbe50ed1e003b0 /apps/plugins/mpegplayer/decode.c
parent84f5c5c3e3590cb993f4cf2a7eba5979e3bc825b (diff)
downloadrockbox-fc43b9df823af80dd1c9cf7dc1b5de6703944043.tar.gz
rockbox-fc43b9df823af80dd1c9cf7dc1b5de6703944043.zip
Mpegplayer: Assembler optimised IDCT for coldfire, based on FS #5995 by Karim Boucher. Put the IDCT block buffer in IRAM for better performance. The whole libmpeg2 decoder struct doesn't fit without throwing some libmad buffers out of IRAM, but then doesn't change performance significantly. Mpegplayer is quite usable now on X5; H300 is sort-of usable for widescreen.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15156 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/mpegplayer/decode.c')
-rw-r--r--apps/plugins/mpegplayer/decode.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/apps/plugins/mpegplayer/decode.c b/apps/plugins/mpegplayer/decode.c
index 299abc9663..ca3d29a952 100644
--- a/apps/plugins/mpegplayer/decode.c
+++ b/apps/plugins/mpegplayer/decode.c
@@ -401,6 +401,12 @@ void mpeg2_reset (mpeg2dec_t * mpeg2dec, int full_reset)
401 401
402} 402}
403 403
404#ifdef CPU_COLDFIRE
405/* twice as large as on other targets because coldfire uses
406 * a secondary, transposed buffer for optimisation */
407static int16_t static_dct_block[128] IBSS_ATTR ATTR_ALIGN(16);
408#endif
409
404mpeg2dec_t * mpeg2_init (void) 410mpeg2dec_t * mpeg2_init (void)
405{ 411{
406 mpeg2dec_t * mpeg2dec; 412 mpeg2dec_t * mpeg2dec;
@@ -410,7 +416,11 @@ mpeg2dec_t * mpeg2_init (void)
410 mpeg2dec = (mpeg2dec_t *) mpeg2_malloc (sizeof (mpeg2dec_t), 416 mpeg2dec = (mpeg2dec_t *) mpeg2_malloc (sizeof (mpeg2dec_t),
411 MPEG2_ALLOC_MPEG2DEC); 417 MPEG2_ALLOC_MPEG2DEC);
412 if (mpeg2dec == NULL) 418 if (mpeg2dec == NULL)
413 return NULL; 419 return NULL;
420
421#ifdef CPU_COLDFIRE
422 mpeg2dec->decoder.DCTblock = static_dct_block;
423#endif
414 424
415 rb->memset (mpeg2dec->decoder.DCTblock, 0, 64 * sizeof (int16_t)); 425 rb->memset (mpeg2dec->decoder.DCTblock, 0, 64 * sizeof (int16_t));
416 rb->memset (mpeg2dec->quantizer_matrix, 0, 4 * 64 * sizeof (uint8_t)); 426 rb->memset (mpeg2dec->quantizer_matrix, 0, 4 * 64 * sizeof (uint8_t));