1
0
Fork 0
forked from len0rd/rockbox

Modify the ffmpeg source files in apps/codecs/libwmapro in order to compile the codec standalone.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25764 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Mohamed Tarek 2010-04-30 12:20:25 +00:00
parent cf43e5083b
commit fe147cec65
18 changed files with 123 additions and 52 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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{

View file

@ -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 */
}

View file

@ -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);

View file

@ -23,7 +23,7 @@
#define AVCODEC_FFT_H
#include <stdint.h>
#include "config.h"
//#include "config.h"
#include "libavutil/mem.h"
#include "avfft.h"

View file

@ -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 */

View file

@ -27,7 +27,7 @@
#define AVUTIL_BSWAP_H
#include <stdint.h>
#include "config.h"
//#include "config.h"
#include "attributes.h"
#if ARCH_ARM

View file

@ -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 */

View file

@ -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

View file

@ -20,7 +20,7 @@
#define AVUTIL_INTREADWRITE_H
#include <stdint.h>
#include "config.h"
//#include "config.h"
#include "bswap.h"
#include "common.h"

View file

@ -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

View file

@ -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 */

View file

@ -24,7 +24,7 @@
* default memory allocator for libavutil
*/
#include "config.h"
//#include "config.h"
#include <limits.h>
#include <stdlib.h>

View file

@ -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);

View file

@ -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

View file

@ -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;
}