cannam@85: cannam@85: libmad - MPEG audio decoder library cannam@85: Copyright (C) 2000-2004 Underbit Technologies, Inc. cannam@85: cannam@85: $Id: TODO,v 1.3 2004/02/05 09:02:39 rob Exp $ cannam@85: cannam@85: =============================================================================== cannam@85: cannam@85: libmad: cannam@85: - more API layers (buffering, PCM samples, dithering, etc.) cannam@85: - x86 performance optimization compiler flags cannam@85: - function documentation, general docs cannam@85: - finish async API cannam@85: - parse system streams? cannam@85: - MPEG-2 MC, AAC? cannam@85: - logarithmic multiplication? cannam@85: - multiple frame decoding for better locality of reference? cannam@85: - frame serial numbers, Layer III frame continuity checks cannam@85: cannam@85: fixed.h: cannam@85: - experiment with FPM_INTEL: cannam@85: cannam@85: # if 1 cannam@85: # define mad_f_scale64(hi, lo) \ cannam@85: ({ mad_fixed_t __result; \ cannam@85: asm ("shrl %3,%1\n\t" \ cannam@85: "shll %4,%2\n\t" \ cannam@85: "orl %2,%1" \ cannam@85: : "=rm" (__result) \ cannam@85: : "0" (lo), "r" (hi), \ cannam@85: "I" (MAD_F_SCALEBITS), "I" (32 - MAD_F_SCALEBITS) \ cannam@85: : "cc"); \ cannam@85: __result; \ cannam@85: }) cannam@85: # else cannam@85: # define mad_f_scale64(hi, lo) \ cannam@85: ({ mad_fixed64hi_t __hi_; \ cannam@85: mad_fixed64lo_t __lo_; \ cannam@85: mad_fixed_t __result; \ cannam@85: asm ("sall %2,%1" \ cannam@85: : "=r" (__hi_) \ cannam@85: : "0" (hi), "I" (32 - MAD_F_SCALEBITS) \ cannam@85: : "cc"); \ cannam@85: asm ("shrl %2,%1" \ cannam@85: : "=r" (__lo_) \ cannam@85: : "0" (lo), "I" (MAD_F_SCALEBITS) \ cannam@85: : "cc"); \ cannam@85: asm ("orl %1,%2" \ cannam@85: : "=rm" (__result) \ cannam@85: : "r" (__hi_), "0" (__lo_) \ cannam@85: : "cc"); \ cannam@85: __result; \ cannam@85: }) cannam@85: # endif cannam@85: cannam@85: libmad Layer I: cannam@85: - check frame length sanity cannam@85: cannam@85: libmad Layer II: cannam@85: - check frame length sanity cannam@85: cannam@85: libmad Layer III: cannam@85: - circular buffer cannam@85: - optimize zero_part from Huffman decoding throughout cannam@85: - MPEG 2.5 8000 Hz sf bands? mixed blocks? cannam@85: - stereo->mono conversion optimization? cannam@85: - enable frame-at-a-time decoding cannam@85: - improve portability of huffman.c cannam@85: