1 2 libmad - MPEG audio decoder library 3 Copyright (C) 2000-2004 Underbit Technologies, Inc. 4 5 $Id: TODO,v 1.3 2004/02/05 09:02:39 rob Exp $ 6 7=============================================================================== 8 9libmad: 10 - more API layers (buffering, PCM samples, dithering, etc.) 11 - x86 performance optimization compiler flags 12 - function documentation, general docs 13 - finish async API 14 - parse system streams? 15 - MPEG-2 MC, AAC? 16 - logarithmic multiplication? 17 - multiple frame decoding for better locality of reference? 18 - frame serial numbers, Layer III frame continuity checks 19 20fixed.h: 21 - experiment with FPM_INTEL: 22 23# if 1 24# define mad_f_scale64(hi, lo) \ 25 ({ mad_fixed_t __result; \ 26 asm ("shrl %3,%1\n\t" \ 27 "shll %4,%2\n\t" \ 28 "orl %2,%1" \ 29 : "=rm" (__result) \ 30 : "0" (lo), "r" (hi), \ 31 "I" (MAD_F_SCALEBITS), "I" (32 - MAD_F_SCALEBITS) \ 32 : "cc"); \ 33 __result; \ 34 }) 35# else 36# define mad_f_scale64(hi, lo) \ 37 ({ mad_fixed64hi_t __hi_; \ 38 mad_fixed64lo_t __lo_; \ 39 mad_fixed_t __result; \ 40 asm ("sall %2,%1" \ 41 : "=r" (__hi_) \ 42 : "0" (hi), "I" (32 - MAD_F_SCALEBITS) \ 43 : "cc"); \ 44 asm ("shrl %2,%1" \ 45 : "=r" (__lo_) \ 46 : "0" (lo), "I" (MAD_F_SCALEBITS) \ 47 : "cc"); \ 48 asm ("orl %1,%2" \ 49 : "=rm" (__result) \ 50 : "r" (__hi_), "0" (__lo_) \ 51 : "cc"); \ 52 __result; \ 53 }) 54# endif 55 56libmad Layer I: 57 - check frame length sanity 58 59libmad Layer II: 60 - check frame length sanity 61 62libmad Layer III: 63 - circular buffer 64 - optimize zero_part from Huffman decoding throughout 65 - MPEG 2.5 8000 Hz sf bands? mixed blocks? 66 - stereo->mono conversion optimization? 67 - enable frame-at-a-time decoding 68 - improve portability of huffman.c 69 70