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