diff options
-rw-r--r-- | apps/codecs/libwmapro/Makefile | 11 | ||||
-rw-r--r-- | apps/codecs/libwmapro/README.rockbox | 33 | ||||
-rw-r--r-- | apps/codecs/libwmapro/avcodec.h | 12 | ||||
-rw-r--r-- | apps/codecs/libwmapro/bitstream.c | 3 | ||||
-rw-r--r-- | apps/codecs/libwmapro/dsputil.c | 49 | ||||
-rw-r--r-- | apps/codecs/libwmapro/fft.c | 4 | ||||
-rw-r--r-- | apps/codecs/libwmapro/fft.h | 2 | ||||
-rw-r--r-- | apps/codecs/libwmapro/libavutil/avutil.h | 6 | ||||
-rw-r--r-- | apps/codecs/libwmapro/libavutil/bswap.h | 2 | ||||
-rw-r--r-- | apps/codecs/libwmapro/libavutil/common.h | 3 | ||||
-rw-r--r-- | apps/codecs/libwmapro/libavutil/internal.h | 6 | ||||
-rw-r--r-- | apps/codecs/libwmapro/libavutil/intreadwrite.h | 2 | ||||
-rw-r--r-- | apps/codecs/libwmapro/libavutil/mathematics.c | 4 | ||||
-rw-r--r-- | apps/codecs/libwmapro/libavutil/mathematics.h | 6 | ||||
-rw-r--r-- | apps/codecs/libwmapro/libavutil/mem.c | 2 | ||||
-rw-r--r-- | apps/codecs/libwmapro/mdct_tablegen.h | 2 | ||||
-rw-r--r-- | apps/codecs/libwmapro/wma.c | 8 | ||||
-rw-r--r-- | apps/codecs/libwmapro/wmaprodec.c | 20 |
18 files changed, 123 insertions, 52 deletions
diff --git a/apps/codecs/libwmapro/Makefile b/apps/codecs/libwmapro/Makefile new file mode 100644 index 0000000000..74334ffad5 --- /dev/null +++ b/apps/codecs/libwmapro/Makefile @@ -0,0 +1,11 @@ +STD = c99 +LINK = -lm +CFLAGS = -Wall -std=$(STD) +TARGET = test +OBJS = wmaprodec.c wma.c dsputil.c mdct.c fft.c bitstream.c libavutil/log.c libavutil/mem.c libavutil/mathematics.c +$(TARGET): $(OBJS) + gcc $(CFLAGS) $(OBJS) $(LINK) -o $(TARGET) + +clean: + rm -f $(TARGET) *~ *.o libavutil/*.o + diff --git a/apps/codecs/libwmapro/README.rockbox b/apps/codecs/libwmapro/README.rockbox new file mode 100644 index 0000000000..9b6e7d7507 --- /dev/null +++ b/apps/codecs/libwmapro/README.rockbox @@ -0,0 +1,33 @@ +Library: libwmapro +Imported: 2010-04-30 by Mohamed Tarek + +This set of files form the files needed from ffmpeg's libavcodec and libavutil +to build a standalone wma professional decoder. + +LICENSING INFORMATION + +ffmpeg is licensed under the Lesser GNU General Public License and the file +wmaprodec.c is copyright (c) 2007 Baptiste Coudurier, Benjamin Larsson, Ulion +and copyright (c) 2008 - 2009 Sascha Sommer, Benjamin Larsson. + +IMPORT DETAILS + +Based on ffmpeg svn r228866 dated 15 April 2010. + +Currently, the files contain minimal changes from their original state in order +to be able to compile cleanly. + +The file wmaprodec.c contains a main function that is just a stub to make sure +linking is done properly and without errors. + +COMPILING + +A make file is included that would compile and link the files when the "make" +command is executed without arguments in any Unix-like environment. + +The file porduces an output binary called "test" that, as of now (30 April 2010) +, is still useless. + +To clean the compiler output and retain just the source code, the following +command should be executed: +make clean diff --git a/apps/codecs/libwmapro/avcodec.h b/apps/codecs/libwmapro/avcodec.h index add4b100ae..da67b32fa2 100644 --- a/apps/codecs/libwmapro/avcodec.h +++ b/apps/codecs/libwmapro/avcodec.h @@ -1090,7 +1090,7 @@ typedef struct AVCodecContext { * - encoding: MUST be set by user. * - decoding: Set by libavcodec. */ - AVRational time_base; + //AVRational time_base; /* video only */ /** @@ -1116,7 +1116,7 @@ typedef struct AVCodecContext { * - encoding: Set by user. * - decoding: Set by libavcodec. */ - enum PixelFormat pix_fmt; + //enum PixelFormat pix_fmt; /** * Frame rate emulation. If not zero, the lower layer (i.e. format handler) @@ -1660,7 +1660,7 @@ typedef struct AVCodecContext { * - encoding: Set by user. * - decoding: Set by libavcodec. */ - AVRational sample_aspect_ratio; + //AVRational sample_aspect_ratio; /** * the picture in the bitstream @@ -2677,7 +2677,7 @@ typedef struct AVCodec { * Will be called when seeking */ void (*flush)(AVCodecContext *); - const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0} + //const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0} const enum PixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1 /** * Descriptive name for the codec, meant to be more human readable than name. @@ -2719,7 +2719,7 @@ typedef struct AVHWAccel { * * Only hardware accelerated formats are supported here. */ - enum PixelFormat pix_fmt; + //enum PixelFormat pix_fmt; /** * Hardware accelerated codec capabilities. @@ -3885,7 +3885,7 @@ int av_parse_video_frame_size(int *width_ptr, int *height_ptr, const char *str); * @param[in,out] frame_rate pointer to the AVRational which will contain the detected * frame rate */ -int av_parse_video_frame_rate(AVRational *frame_rate, const char *str); +//int av_parse_video_frame_rate(AVRational *frame_rate, const char *str); /** * Logs a generic warning message about a missing feature. This function is diff --git a/apps/codecs/libwmapro/bitstream.c b/apps/codecs/libwmapro/bitstream.c index 1e24099cc8..47234e10e1 100644 --- a/apps/codecs/libwmapro/bitstream.c +++ b/apps/codecs/libwmapro/bitstream.c @@ -65,7 +65,8 @@ void ff_copy_bits(PutBitContext *pb, const uint8_t *src, int length) int i; if(length==0) return; - +/* The following define was just added to make the codec (wma pro) compile */ +#define CONFIG_SMALL 0 if(CONFIG_SMALL || words < 16 || put_bits_count(pb)&7){ for(i=0; i<words; i++) put_bits(pb, 16, AV_RB16(src + 2*i)); }else{ diff --git a/apps/codecs/libwmapro/dsputil.c b/apps/codecs/libwmapro/dsputil.c index bbfdb6ae8d..b09311925a 100644 --- a/apps/codecs/libwmapro/dsputil.c +++ b/apps/codecs/libwmapro/dsputil.c @@ -29,17 +29,18 @@ #include "avcodec.h" #include "dsputil.h" -#include "simple_idct.h" -#include "faandct.h" -#include "faanidct.h" +//#include "simple_idct.h" +//#include "faandct.h" +//#include "faanidct.h" #include "mathops.h" -#include "mpegvideo.h" -#include "config.h" -#include "lpc.h" -#include "ac3dec.h" -#include "vorbis.h" -#include "png.h" +//#include "mpegvideo.h" +//#include "config.h" +//#include "lpc.h" +//#include "ac3dec.h" +//#include "vorbis.h" +//#include "png.h" +#if 0 uint8_t ff_cropTbl[256 + 2 * MAX_NEG_CROP] = {0, }; uint32_t ff_squareTbl[512] = {0, }; @@ -3797,6 +3798,8 @@ WRAPPER8_16_SQ(quant_psnr8x8_c, quant_psnr16_c) WRAPPER8_16_SQ(rd8x8_c, rd16_c) WRAPPER8_16_SQ(bit8x8_c, bit16_c) +#endif /* 0 */ + static void vector_fmul_c(float *dst, const float *src, int len){ int i; for(i=0; i<len; i++) @@ -3838,7 +3841,7 @@ static void vector_fmul_scalar_c(float *dst, const float *src, float mul, for (i = 0; i < len; i++) dst[i] = src[i] * mul; } - +#if 0 static void vector_fmul_sv_scalar_2_c(float *dst, const float *src, const float **sv, float mul, int len) { @@ -3911,6 +3914,7 @@ static void int32_to_float_fmul_scalar_c(float *dst, const int *src, float mul, dst[i] = src[i] * mul; } + static inline uint32_t clipf_c_one(uint32_t a, uint32_t mini, uint32_t maxi, uint32_t maxisign) { @@ -4176,9 +4180,10 @@ int ff_check_alignment(void){ } return 0; } - +#endif av_cold void dsputil_init(DSPContext* c, AVCodecContext *avctx) { +#if 0 int i; ff_check_alignment(); @@ -4486,20 +4491,22 @@ av_cold void dsputil_init(DSPContext* c, AVCodecContext *avctx) #if CONFIG_LPC c->lpc_compute_autocorr = ff_lpc_compute_autocorr; #endif + +#endif /* 0 */ c->vector_fmul = vector_fmul_c; c->vector_fmul_reverse = vector_fmul_reverse_c; c->vector_fmul_add = vector_fmul_add_c; c->vector_fmul_window = ff_vector_fmul_window_c; - c->int32_to_float_fmul_scalar = int32_to_float_fmul_scalar_c; - c->vector_clipf = vector_clipf_c; - c->float_to_int16 = ff_float_to_int16_c; - c->float_to_int16_interleave = ff_float_to_int16_interleave_c; - c->scalarproduct_int16 = scalarproduct_int16_c; - c->scalarproduct_and_madd_int16 = scalarproduct_and_madd_int16_c; - c->scalarproduct_float = scalarproduct_float_c; - c->butterflies_float = butterflies_float_c; + //c->int32_to_float_fmul_scalar = int32_to_float_fmul_scalar_c; + //c->vector_clipf = vector_clipf_c; + //c->float_to_int16 = ff_float_to_int16_c; + //c->float_to_int16_interleave = ff_float_to_int16_interleave_c; + //c->scalarproduct_int16 = scalarproduct_int16_c; + //c->scalarproduct_and_madd_int16 = scalarproduct_and_madd_int16_c; + //c->scalarproduct_float = scalarproduct_float_c; + //c->butterflies_float = butterflies_float_c; c->vector_fmul_scalar = vector_fmul_scalar_c; - +#if 0 c->vector_fmul_sv_scalar[0] = vector_fmul_sv_scalar_2_c; c->vector_fmul_sv_scalar[1] = vector_fmul_sv_scalar_4_c; @@ -4561,5 +4568,5 @@ av_cold void dsputil_init(DSPContext* c, AVCodecContext *avctx) default: av_log(avctx, AV_LOG_ERROR, "Internal error, IDCT permutation not set\n"); } +#endif /* 0 */ } - diff --git a/apps/codecs/libwmapro/fft.c b/apps/codecs/libwmapro/fft.c index 7275d98e9f..bc1b4f1796 100644 --- a/apps/codecs/libwmapro/fft.c +++ b/apps/codecs/libwmapro/fft.c @@ -109,11 +109,11 @@ av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse) #endif s->exptab1 = NULL; s->split_radix = 1; - +#if 0 if (ARCH_ARM) ff_fft_init_arm(s); if (HAVE_ALTIVEC) ff_fft_init_altivec(s); if (HAVE_MMX) ff_fft_init_mmx(s); - +#endif if (s->split_radix) { for(j=4; j<=nbits; j++) { ff_init_ff_cos_tabs(j); diff --git a/apps/codecs/libwmapro/fft.h b/apps/codecs/libwmapro/fft.h index 1f5b2e86da..26d51e984a 100644 --- a/apps/codecs/libwmapro/fft.h +++ b/apps/codecs/libwmapro/fft.h @@ -23,7 +23,7 @@ #define AVCODEC_FFT_H #include <stdint.h> -#include "config.h" +//#include "config.h" #include "libavutil/mem.h" #include "avfft.h" diff --git a/apps/codecs/libwmapro/libavutil/avutil.h b/apps/codecs/libwmapro/libavutil/avutil.h index 1523de6753..1b858f1fe6 100644 --- a/apps/codecs/libwmapro/libavutil/avutil.h +++ b/apps/codecs/libwmapro/libavutil/avutil.h @@ -81,9 +81,9 @@ enum AVMediaType { #include "common.h" #include "error.h" #include "mathematics.h" -#include "rational.h" -#include "intfloat_readwrite.h" +//#include "rational.h" +//#include "intfloat_readwrite.h" #include "log.h" -#include "pixfmt.h" +//#include "pixfmt.h" #endif /* AVUTIL_AVUTIL_H */ diff --git a/apps/codecs/libwmapro/libavutil/bswap.h b/apps/codecs/libwmapro/libavutil/bswap.h index 74c7af3026..5743e126b8 100644 --- a/apps/codecs/libwmapro/libavutil/bswap.h +++ b/apps/codecs/libwmapro/libavutil/bswap.h @@ -27,7 +27,7 @@ #define AVUTIL_BSWAP_H #include <stdint.h> -#include "config.h" +//#include "config.h" #include "attributes.h" #if ARCH_ARM diff --git a/apps/codecs/libwmapro/libavutil/common.h b/apps/codecs/libwmapro/libavutil/common.h index fae0b5b09b..48732a29dd 100644 --- a/apps/codecs/libwmapro/libavutil/common.h +++ b/apps/codecs/libwmapro/libavutil/common.h @@ -290,7 +290,8 @@ static inline av_const int av_ceil_log2(int x) #include "mem.h" -#ifdef HAVE_AV_CONFIG_H +//#ifdef HAVE_AV_CONFIG_H +#if 1 # include "internal.h" #endif /* HAVE_AV_CONFIG_H */ diff --git a/apps/codecs/libwmapro/libavutil/internal.h b/apps/codecs/libwmapro/libavutil/internal.h index b47db3d8c6..2b8da1d8c2 100644 --- a/apps/codecs/libwmapro/libavutil/internal.h +++ b/apps/codecs/libwmapro/libavutil/internal.h @@ -34,9 +34,9 @@ #include <stdint.h> #include <stddef.h> #include <assert.h> -#include "config.h" +//#include "config.h" #include "attributes.h" -#include "timer.h" +//#include "timer.h" #ifndef attribute_align_arg #if (!defined(__ICC) || __ICC > 1110) && AV_GCC_VERSION_AT_LEAST(4,2) @@ -191,7 +191,7 @@ }\ } -#include "libm.h" +//#include "libm.h" /** * Returns NULL if CONFIG_SMALL is true, otherwise the argument diff --git a/apps/codecs/libwmapro/libavutil/intreadwrite.h b/apps/codecs/libwmapro/libavutil/intreadwrite.h index c8026f0872..87098d707d 100644 --- a/apps/codecs/libwmapro/libavutil/intreadwrite.h +++ b/apps/codecs/libwmapro/libavutil/intreadwrite.h @@ -20,7 +20,7 @@ #define AVUTIL_INTREADWRITE_H #include <stdint.h> -#include "config.h" +//#include "config.h" #include "bswap.h" #include "common.h" diff --git a/apps/codecs/libwmapro/libavutil/mathematics.c b/apps/codecs/libwmapro/libavutil/mathematics.c index 81d47c1bf1..04f3e870d1 100644 --- a/apps/codecs/libwmapro/libavutil/mathematics.c +++ b/apps/codecs/libwmapro/libavutil/mathematics.c @@ -129,7 +129,7 @@ int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd){ int64_t av_rescale(int64_t a, int64_t b, int64_t c){ return av_rescale_rnd(a, b, c, AV_ROUND_NEAR_INF); } - +#if 0 int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq){ int64_t b= bq.num * (int64_t)cq.den; int64_t c= cq.num * (int64_t)bq.den; @@ -143,7 +143,7 @@ int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b){ if (av_rescale_rnd(ts_b, b, a, AV_ROUND_DOWN) < ts_a) return 1; return 0; } - +#endif #ifdef TEST #include "integer.h" #undef printf diff --git a/apps/codecs/libwmapro/libavutil/mathematics.h b/apps/codecs/libwmapro/libavutil/mathematics.h index e198aef8cb..a09d3e9ad8 100644 --- a/apps/codecs/libwmapro/libavutil/mathematics.h +++ b/apps/codecs/libwmapro/libavutil/mathematics.h @@ -24,7 +24,7 @@ #include <stdint.h> #include <math.h> #include "attributes.h" -#include "rational.h" +//#include "rational.h" #ifndef M_E #define M_E 2.7182818284590452354 /* e */ @@ -84,7 +84,7 @@ int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_cons /** * Rescales a 64-bit integer by 2 rational numbers. */ -int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; +//int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; /** * Compares 2 timestamps each in its own timebases. @@ -92,7 +92,7 @@ int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; * is outside the int64_t range when represented in the others timebase. * @return -1 if ts_a is before ts_b, 1 if ts_a is after ts_b or 0 if they represent the same position */ -int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b); +//int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b); #endif /* AVUTIL_MATHEMATICS_H */ diff --git a/apps/codecs/libwmapro/libavutil/mem.c b/apps/codecs/libwmapro/libavutil/mem.c index 4d776d4450..7c37e9be9f 100644 --- a/apps/codecs/libwmapro/libavutil/mem.c +++ b/apps/codecs/libwmapro/libavutil/mem.c @@ -24,7 +24,7 @@ * default memory allocator for libavutil */ -#include "config.h" +//#include "config.h" #include <limits.h> #include <stdlib.h> diff --git a/apps/codecs/libwmapro/mdct_tablegen.h b/apps/codecs/libwmapro/mdct_tablegen.h index 1722c3b4d0..9f130aa6b5 100644 --- a/apps/codecs/libwmapro/mdct_tablegen.h +++ b/apps/codecs/libwmapro/mdct_tablegen.h @@ -24,7 +24,7 @@ // do not use libavutil/mathematics.h since this is compiled both // for the host and the target and config.h is only valid for the target #include <math.h> -#include "../libavutil/attributes.h" +#include "libavutil/attributes.h" #if !CONFIG_HARDCODED_TABLES SINETABLE( 32); diff --git a/apps/codecs/libwmapro/wma.c b/apps/codecs/libwmapro/wma.c index 65780459aa..5306634c7c 100644 --- a/apps/codecs/libwmapro/wma.c +++ b/apps/codecs/libwmapro/wma.c @@ -21,11 +21,11 @@ #include "avcodec.h" #include "wma.h" -#include "wmadata.h" +//#include "wmadata.h" #undef NDEBUG #include <assert.h> - +#if 0 /* XXX: use same run/length optimization as mpeg decoders */ //FIXME maybe split decode / encode or pass flag static void init_coef_vlc(VLC *vlc, uint16_t **prun_table, @@ -65,6 +65,7 @@ static void init_coef_vlc(VLC *vlc, uint16_t **prun_table, *pint_table = int_table; av_free(level_table); } +#endif /* 0 */ /** *@brief Get the samples per frame for this stream. @@ -106,6 +107,7 @@ int av_cold ff_wma_get_frame_len_bits(int sample_rate, int version, return frame_len_bits; } +#if 0 int ff_wma_init(AVCodecContext *avctx, int flags2) { WMACodecContext *s = avctx->priv_data; @@ -426,7 +428,7 @@ int ff_wma_end(AVCodecContext *avctx) return 0; } - +#endif /* 0 */ /** * Decode an uncompressed coefficient. * @param s codec context diff --git a/apps/codecs/libwmapro/wmaprodec.c b/apps/codecs/libwmapro/wmaprodec.c index 82f1b3623b..88d317d5f6 100644 --- a/apps/codecs/libwmapro/wmaprodec.c +++ b/apps/codecs/libwmapro/wmaprodec.c @@ -94,6 +94,14 @@ #include "dsputil.h" #include "wma.h" +/* Some defines to make it compile */ +#define AVERROR_INVALIDDATA -1 +#define AVERROR_PATCHWELCOME -2 +#ifndef M_PI +#define M_PI 3.14159265358979323846 /* pi */ +#endif +#define av_log_ask_for_sample(...) + /** current decoder limitations */ #define WMAPRO_MAX_CHANNELS 8 ///< max number of handled channels #define MAX_SUBFRAMES 32 ///< max number of subframes per channel @@ -444,9 +452,10 @@ static av_cold int decode_init(AVCodecContext *avctx) /** calculate sine values for the decorrelation matrix */ for (i = 0; i < 33; i++) sin64[i] = sin(i*M_PI / 64.0); - +#if 0 if (avctx->debug & FF_DEBUG_BITSTREAM) dump_context(s); +#endif avctx->channel_layout = channel_mask; return 0; @@ -1559,7 +1568,7 @@ static void flush(AVCodecContext *avctx) s->packet_loss = 1; } - +#if 0 /** *@brief wmapro decoder */ @@ -1576,3 +1585,10 @@ AVCodec wmapro_decoder = { .flush= flush, .long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio 9 Professional"), }; +#endif + +int main(void) +{ + /* possible test program - just here now to ensure linking is done properly */ + return 0; +} |