diff options
-rw-r--r-- | src/libffmpeg/libavcodec/Makefile.am | 4 | ||||
-rw-r--r-- | src/libffmpeg/libavcodec/lzo.h | 14 | ||||
-rw-r--r-- | src/libffmpeg/libavcodec/rtjpeg.h | 19 | ||||
-rw-r--r-- | src/libffmpeg/libavcodec/snow.h | 170 | ||||
-rw-r--r-- | src/libffmpeg/libavcodec/swscale.h | 32 | ||||
-rw-r--r-- | src/libffmpeg/libavutil/Makefile.am | 4 | ||||
-rw-r--r-- | src/libffmpeg/libavutil/x86_cpu.h | 38 |
7 files changed, 280 insertions, 1 deletions
diff --git a/src/libffmpeg/libavcodec/Makefile.am b/src/libffmpeg/libavcodec/Makefile.am index d94646f59..49e8f3b33 100644 --- a/src/libffmpeg/libavcodec/Makefile.am +++ b/src/libffmpeg/libavcodec/Makefile.am @@ -143,6 +143,7 @@ noinst_HEADERS = \ h261data.h \ h263data.h \ h264data.h \ + lzo.h \ mpeg4data.h \ mpeg12data.h \ mpegaudio.h \ @@ -155,10 +156,13 @@ noinst_HEADERS = \ ra144.h \ ra288.h \ rangecoder.h \ + rtjpeg.h \ simple_idct.h \ + snow.h \ sp5x.h \ svq1_cb.h \ svq1_vlc.h \ + swscale.h \ truemotion1data.h \ truespeech_data.h \ ulti_cb.h \ diff --git a/src/libffmpeg/libavcodec/lzo.h b/src/libffmpeg/libavcodec/lzo.h new file mode 100644 index 000000000..dbce13770 --- /dev/null +++ b/src/libffmpeg/libavcodec/lzo.h @@ -0,0 +1,14 @@ +#ifndef _LZO_H +#define LZO_H + +#define LZO_INPUT_DEPLETED 1 +#define LZO_OUTPUT_FULL 2 +#define LZO_INVALID_BACKPTR 4 +#define LZO_ERROR 8 + +#define LZO_INPUT_PADDING 4 +#define LZO_OUTPUT_PADDING 12 + +int lzo1x_decode(void *out, int *outlen, void *in, int *inlen); + +#endif diff --git a/src/libffmpeg/libavcodec/rtjpeg.h b/src/libffmpeg/libavcodec/rtjpeg.h new file mode 100644 index 000000000..1fc2fc934 --- /dev/null +++ b/src/libffmpeg/libavcodec/rtjpeg.h @@ -0,0 +1,19 @@ +#ifndef RTJPEG_H +#define RTJPEG_H + +typedef struct { + int w, h; + DSPContext *dsp; + DCTELEM block[64]; + uint8_t scan[64]; + uint32_t lquant[64]; + uint32_t cquant[64]; +} RTJpegContext; + +void rtjpeg_decode_init(RTJpegContext *c, DSPContext *dsp, + int width, int height, + uint32_t *lquant, uint32_t *cquant); + +int rtjpeg_decode_frame_yuv420(RTJpegContext *c, AVFrame *f, + uint8_t *buf, int buf_size); +#endif diff --git a/src/libffmpeg/libavcodec/snow.h b/src/libffmpeg/libavcodec/snow.h new file mode 100644 index 000000000..26b30abe5 --- /dev/null +++ b/src/libffmpeg/libavcodec/snow.h @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2004 Michael Niedermayer <michaelni@gmx.at> + * Copyright (C) 2006 Robert Edele <yartrebo@earthlink.net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef _SNOW_H +#define _SNOW_H + +#include "dsputil.h" + +#define MID_STATE 128 + +#define MAX_DECOMPOSITIONS 8 +#define MAX_PLANES 4 +#define QSHIFT 5 +#define QROOT (1<<QSHIFT) +#define LOSSLESS_QLOG -128 +#define FRAC_BITS 8 +#define MAX_REF_FRAMES 8 + +#define LOG2_OBMC_MAX 8 +#define OBMC_MAX (1<<(LOG2_OBMC_MAX)) + +#define DWT_97 0 +#define DWT_53 1 +#define DWT_X 2 + +/** Used to minimize the amount of memory used in order to optimize cache performance. **/ +struct slice_buffer_s { + DWTELEM * * line; ///< For use by idwt and predict_slices. + DWTELEM * * data_stack; ///< Used for internal purposes. + int data_stack_top; + int line_count; + int line_width; + int data_count; + DWTELEM * base_buffer; ///< Buffer that this structure is caching. +}; + +#define liftS lift +#define lift5 lift +#if 1 +#define W_AM 3 +#define W_AO 0 +#define W_AS 1 + +#undef liftS +#define W_BM 1 +#define W_BO 8 +#define W_BS 4 + +#define W_CM 1 +#define W_CO 0 +#define W_CS 0 + +#define W_DM 3 +#define W_DO 4 +#define W_DS 3 +#elif 0 +#define W_AM 55 +#define W_AO 16 +#define W_AS 5 + +#define W_BM 3 +#define W_BO 32 +#define W_BS 6 + +#define W_CM 127 +#define W_CO 64 +#define W_CS 7 + +#define W_DM 7 +#define W_DO 8 +#define W_DS 4 +#elif 0 +#define W_AM 97 +#define W_AO 32 +#define W_AS 6 + +#define W_BM 63 +#define W_BO 512 +#define W_BS 10 + +#define W_CM 13 +#define W_CO 8 +#define W_CS 4 + +#define W_DM 15 +#define W_DO 16 +#define W_DS 5 + +#else + +#define W_AM 203 +#define W_AO 64 +#define W_AS 7 + +#define W_BM 217 +#define W_BO 2048 +#define W_BS 12 + +#define W_CM 113 +#define W_CO 64 +#define W_CS 7 + +#define W_DM 227 +#define W_DO 128 +#define W_DS 9 +#endif + +extern void ff_snow_vertical_compose97i(DWTELEM *b0, DWTELEM *b1, DWTELEM *b2, DWTELEM *b3, DWTELEM *b4, DWTELEM *b5, int width); +extern void ff_snow_horizontal_compose97i(DWTELEM *b, int width); +extern void ff_snow_inner_add_yblock(uint8_t *obmc, const int obmc_stride, uint8_t * * block, int b_w, int b_h, int src_x, int src_y, int src_stride, slice_buffer * sb, int add, uint8_t * dst8); + +int w53_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h); +int w97_32_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h); + + +/* C bits used by mmx/sse2/altivec */ + +static always_inline void snow_interleave_line_header(int * i, int width, DWTELEM * low, DWTELEM * high){ + (*i) = (width) - 2; + + if (width & 1){ + low[(*i)+1] = low[((*i)+1)>>1]; + (*i)--; + } +} + +static always_inline void snow_interleave_line_footer(int * i, DWTELEM * low, DWTELEM * high){ + for (; (*i)>=0; (*i)-=2){ + low[(*i)+1] = high[(*i)>>1]; + low[*i] = low[(*i)>>1]; + } +} + +static always_inline void snow_horizontal_compose_lift_lead_out(int i, DWTELEM * dst, DWTELEM * src, DWTELEM * ref, int width, int w, int lift_high, int mul, int add, int shift){ + for(; i<w; i++){ + dst[i] = src[i] - ((mul * (ref[i] + ref[i + 1]) + add) >> shift); + } + + if((width^lift_high)&1){ + dst[w] = src[w] - ((mul * 2 * ref[w] + add) >> shift); + } +} + +static always_inline void snow_horizontal_compose_liftS_lead_out(int i, DWTELEM * dst, DWTELEM * src, DWTELEM * ref, int width, int w){ + for(; i<w; i++){ + dst[i] = src[i] - (((-(ref[i] + ref[(i+1)])+W_BO) - 4 * src[i]) >> W_BS); + } + + if(width&1){ + dst[w] = src[w] - (((-2 * ref[w] + W_BO) - 4 * src[w]) >> W_BS); + } +} + +#endif diff --git a/src/libffmpeg/libavcodec/swscale.h b/src/libffmpeg/libavcodec/swscale.h new file mode 100644 index 000000000..5d13f90da --- /dev/null +++ b/src/libffmpeg/libavcodec/swscale.h @@ -0,0 +1,32 @@ +#ifndef SWSCALE_EMU_H +#define SWSCALE_EMU_H +/* Dummy, only useful for compilation! */ +#define SWS_FAST_BILINEAR 1 +#define SWS_BILINEAR 2 +#define SWS_BICUBIC 4 +#define SWS_X 8 +#define SWS_POINT 0x10 +#define SWS_AREA 0x20 +#define SWS_BICUBLIN 0x40 +#define SWS_GAUSS 0x80 +#define SWS_SINC 0x100 +#define SWS_LANCZOS 0x200 +#define SWS_SPLINE 0x400 + +#define SwsFilter void +struct SwsContext { + struct ImgReSampleContext *resampling_ctx; + enum PixelFormat src_pix_fmt, dst_pix_fmt; +}; + +struct SwsContext *sws_getContext(int srcW, int srcH, int srcFormat, + int dstW, int dstH, int dstFormat, + int flags, SwsFilter *srcFilter, + SwsFilter *dstFilter, double *param); + +int sws_scale(struct SwsContext *ctx, uint8_t* src[], int srcStride[], + int srcSliceY, int srcSliceH, uint8_t* dst[], int dstStride[]); + +void sws_freeContext(struct SwsContext *swsContext); + +#endif /* SWSCALE_EMU_H */ diff --git a/src/libffmpeg/libavutil/Makefile.am b/src/libffmpeg/libavutil/Makefile.am index f4aeee569..117240447 100644 --- a/src/libffmpeg/libavutil/Makefile.am +++ b/src/libffmpeg/libavutil/Makefile.am @@ -25,9 +25,11 @@ noinst_HEADERS = \ common.h \ crc.h \ integer.h \ + internal.h intfloat_readwrite.h \ lls.h \ log.h \ mathematics.c \ md5.h \ - rational.h + rational.h \ + x86_cpu.h diff --git a/src/libffmpeg/libavutil/x86_cpu.h b/src/libffmpeg/libavutil/x86_cpu.h new file mode 100644 index 000000000..8fd5f8600 --- /dev/null +++ b/src/libffmpeg/libavutil/x86_cpu.h @@ -0,0 +1,38 @@ +#ifndef AVUTIL_X86CPU_H +#define AVUTIL_X86CPU_H + +#ifdef ARCH_X86_64 +# define REG_a "rax" +# define REG_b "rbx" +# define REG_c "rcx" +# define REG_d "rdx" +# define REG_D "rdi" +# define REG_S "rsi" +# define PTR_SIZE "8" + +# define REG_SP "rsp" +# define REG_BP "rbp" +# define REGBP rbp +# define REGa rax +# define REGb rbx +# define REGSP rsp + +#else + +# define REG_a "eax" +# define REG_b "ebx" +# define REG_c "ecx" +# define REG_d "edx" +# define REG_D "edi" +# define REG_S "esi" +# define PTR_SIZE "4" + +# define REG_SP "esp" +# define REG_BP "ebp" +# define REGBP ebp +# define REGa eax +# define REGb ebx +# define REGSP esp +#endif + +#endif /* AVUTIL_X86CPU_H */ |