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