* qatar/master: ffmpeg: get rid of the -vglobal option. dct32: Add AVX implementation of 32-point DCT dct32: Change pass 6 permutation to allow for AVX implementation dct32: port SSE 32-point DCT to YASM multiple inclusion guard cleanup avio: document buffer must created with av_malloc() and friends avio: check AVIOContext malloc failure swscale: point out an alternative to sws_getContext svq3: Do initialization after parsing the extradata add changelog entries for 0.7_beta2 mp3lame: add #include required for AV_RB32 macro. Conflicts: Changelog libavcodec/svq3.c libavcodec/x86/dct32_sse.c libavfilter/vsrc_buffer.h Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n0.8
| @@ -218,7 +218,6 @@ static float audio_drift_threshold= 0.1; | |||
| static int copy_ts= 0; | |||
| static int copy_tb= 0; | |||
| static int opt_shortest = 0; | |||
| static int video_global_header = 0; | |||
| static char *vstats_filename; | |||
| static FILE *vstats_file; | |||
| static int opt_programid = 0; | |||
| @@ -3555,15 +3554,10 @@ static void new_video_stream(AVFormatContext *oc, int file_idx) | |||
| if(video_codec_tag) | |||
| video_enc->codec_tag= video_codec_tag; | |||
| if( (video_global_header&1) | |||
| || (video_global_header==0 && (oc->oformat->flags & AVFMT_GLOBALHEADER))){ | |||
| if(oc->oformat->flags & AVFMT_GLOBALHEADER) { | |||
| video_enc->flags |= CODEC_FLAG_GLOBAL_HEADER; | |||
| avcodec_opts[AVMEDIA_TYPE_VIDEO]->flags|= CODEC_FLAG_GLOBAL_HEADER; | |||
| } | |||
| if(video_global_header&2){ | |||
| video_enc->flags2 |= CODEC_FLAG2_LOCAL_HEADER; | |||
| avcodec_opts[AVMEDIA_TYPE_VIDEO]->flags2|= CODEC_FLAG2_LOCAL_HEADER; | |||
| } | |||
| if (video_stream_copy) { | |||
| st->stream_copy = 1; | |||
| @@ -4408,7 +4402,6 @@ static const OptionDef options[] = { | |||
| { "vsync", HAS_ARG | OPT_INT | OPT_EXPERT, {(void*)&video_sync_method}, "video sync method", "" }, | |||
| { "async", HAS_ARG | OPT_INT | OPT_EXPERT, {(void*)&audio_sync_method}, "audio sync method", "" }, | |||
| { "adrift_threshold", HAS_ARG | OPT_FLOAT | OPT_EXPERT, {(void*)&audio_drift_threshold}, "audio drift threshold", "threshold" }, | |||
| { "vglobal", HAS_ARG | OPT_INT | OPT_EXPERT, {(void*)&video_global_header}, "video global header storage type", "" }, | |||
| { "copyts", OPT_BOOL | OPT_EXPERT, {(void*)©_ts}, "copy timestamps" }, | |||
| { "copytb", OPT_BOOL | OPT_EXPERT, {(void*)©_tb}, "copy input stream time base when stream copying" }, | |||
| { "shortest", OPT_BOOL | OPT_EXPERT, {(void*)&opt_shortest}, "finish encoding within shortest input" }, // | |||
| @@ -20,8 +20,8 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef AAC_TABLEGEN_H | |||
| #define AAC_TABLEGEN_H | |||
| #ifndef AVCODEC_AAC_TABLEGEN_H | |||
| #define AVCODEC_AAC_TABLEGEN_H | |||
| #include "aac_tablegen_decl.h" | |||
| @@ -40,4 +40,4 @@ void ff_aac_tableinit(void) | |||
| } | |||
| #endif /* CONFIG_HARDCODED_TABLES */ | |||
| #endif /* AAC_TABLEGEN_H */ | |||
| #endif /* AVCODEC_AAC_TABLEGEN_H */ | |||
| @@ -20,8 +20,8 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef AAC_TABLEGEN_DECL_H | |||
| #define AAC_TABLEGEN_DECL_H | |||
| #ifndef AVCODEC_AAC_TABLEGEN_DECL_H | |||
| #define AVCODEC_AAC_TABLEGEN_DECL_H | |||
| #if CONFIG_HARDCODED_TABLES | |||
| #define ff_aac_tableinit() | |||
| @@ -31,4 +31,4 @@ void ff_aac_tableinit(void); | |||
| extern float ff_aac_pow2sf_tab[428]; | |||
| #endif /* CONFIG_HARDCODED_TABLES */ | |||
| #endif /* AAC_TABLEGEN_DECL_H */ | |||
| #endif /* AVCODEC_AAC_TABLEGEN_DECL_H */ | |||
| @@ -1887,4 +1887,4 @@ static const uint16_t cf_sizes_wb[] = { | |||
| 40 /// SID/comfort noise frame | |||
| }; | |||
| #endif | |||
| #endif /* AVCODEC_AMRWBDATA_H */ | |||
| @@ -36,4 +36,4 @@ | |||
| #define H263_AIC 0xf0 | |||
| #define INTER_SCANTAB_RASTER_END 0x138 | |||
| #endif | |||
| #endif /* AVCODEC_ARM_ASM_OFFSETS_H */ | |||
| @@ -30,4 +30,4 @@ void ff_dsputil_init_vfp(DSPContext* c, AVCodecContext *avctx); | |||
| void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx); | |||
| void ff_dsputil_init_iwmmxt(DSPContext* c, AVCodecContext *avctx); | |||
| #endif | |||
| #endif /* AVCODEC_ARM_DSPUTIL_H */ | |||
| @@ -24,4 +24,4 @@ | |||
| void MPV_common_init_iwmmxt(MpegEncContext *s); | |||
| void MPV_common_init_armv5te(MpegEncContext *s); | |||
| #endif | |||
| #endif /* AVCODEC_ARM_MPEGVIDEO_H */ | |||
| @@ -89,4 +89,4 @@ static inline int vp56_rac_get_prob_branchy_armv6(VP56RangeCoder *c, int pr) | |||
| #endif | |||
| #endif | |||
| #endif /* AVCODEC_ARM_VP56_ARITH_H */ | |||
| @@ -26,4 +26,4 @@ int ff_decode_block_coeffs_armv6(VP56RangeCoder *rc, DCTELEM block[16], | |||
| int i, uint8_t *token_prob, int16_t qmul[2]); | |||
| #endif | |||
| #endif | |||
| #endif /* AVCODEC_ARM_VP8_H */ | |||
| @@ -38,4 +38,4 @@ typedef struct CAVSDSPContext { | |||
| void ff_cavsdsp_init(CAVSDSPContext* c, AVCodecContext *avctx); | |||
| void ff_cavsdsp_init_mmx(CAVSDSPContext* c, AVCodecContext *avctx); | |||
| #endif | |||
| #endif /* AVCODEC_CAVSDSP_H */ | |||
| @@ -20,8 +20,8 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef CBRT_TABLEGEN_H | |||
| #define CBRT_TABLEGEN_H | |||
| #ifndef AVCODEC_CBRT_TABLEGEN_H | |||
| #define AVCODEC_CBRT_TABLEGEN_H | |||
| #include <stdint.h> | |||
| #include <math.h> | |||
| @@ -48,4 +48,4 @@ static void cbrt_tableinit(void) | |||
| } | |||
| #endif /* CONFIG_HARDCODED_TABLES */ | |||
| #endif /* CBRT_TABLEGEN_H */ | |||
| #endif /* AVCODEC_CBRT_TABLEGEN_H */ | |||
| @@ -45,4 +45,4 @@ extern const uint32_t ff_ega_palette[64]; | |||
| */ | |||
| void ff_draw_pc_font(uint8_t *dst, int linesize, const uint8_t *font, int font_height, int ch, int fg, int bg); | |||
| #endif | |||
| #endif /* AVCODEC_CGA_DATA_H */ | |||
| @@ -49,4 +49,4 @@ void ff_dct_end (DCTContext *s); | |||
| void ff_dct_init_mmx(DCTContext *s); | |||
| #endif | |||
| #endif /* AVCODEC_DCT_H */ | |||
| @@ -28,4 +28,4 @@ void ff_ref_fdct(DCTELEM *block); | |||
| void ff_ref_idct(DCTELEM *block); | |||
| void ff_ref_dct_init(void); | |||
| #endif | |||
| #endif /* AVCODEC_DCTREF_H */ | |||
| @@ -20,8 +20,8 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef DV_TABLEGEN_H | |||
| #define DV_TABLEGEN_H | |||
| #ifndef AVCODEC_DV_TABLEGEN_H | |||
| #define AVCODEC_DV_TABLEGEN_H | |||
| #include <stdint.h> | |||
| #include "dv_vlc_data.h" | |||
| @@ -93,4 +93,4 @@ static void dv_vlc_map_tableinit(void) | |||
| } | |||
| #endif /* CONFIG_HARDCODED_TABLES */ | |||
| #endif /* DV_TABLEGEN_H */ | |||
| #endif /* AVCODEC_DV_TABLEGEN_H */ | |||
| @@ -30,5 +30,4 @@ void ff_flv2_encode_ac_esc(PutBitContext *pb, int slevel, int level, int run, in | |||
| int ff_flv_decode_picture_header(MpegEncContext *s); | |||
| void ff_flv2_decode_ac_esc(GetBitContext *gb, int *level, int *run, int *last); | |||
| #endif | |||
| #endif /* AVCODEC_FLV_H */ | |||
| @@ -19,8 +19,8 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef GSMDEC_DATA | |||
| #define GSMDEC_DATA | |||
| #ifndef AVCODEC_GSMDEC_DATA | |||
| #define AVCODEC_GSMDEC_DATA | |||
| #include <stdint.h> | |||
| @@ -44,4 +44,4 @@ typedef struct { | |||
| extern const uint16_t ff_gsm_long_term_gain_tab[4]; | |||
| extern const int16_t ff_gsm_dequant_tab[64][8]; | |||
| #endif | |||
| #endif /* AVCODEC_GSMDEC_DATA */ | |||
| @@ -248,4 +248,5 @@ static inline void memsetw(short *tab, int val, int n) | |||
| for(i=0;i<n;i++) | |||
| tab[i] = val; | |||
| } | |||
| #endif | |||
| #endif /* AVCODEC_H263_H */ | |||
| @@ -32,4 +32,4 @@ | |||
| */ | |||
| void ff_kbd_window_init(float *window, float alpha, int n); | |||
| #endif | |||
| #endif /* AVCODEC_KBDWIN_H */ | |||
| @@ -20,8 +20,8 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef MOTIONPIXELS_TABLEGEN_H | |||
| #define MOTIONPIXELS_TABLEGEN_H | |||
| #ifndef AVCODEC_MOTIONPIXELS_TABLEGEN_H | |||
| #define AVCODEC_MOTIONPIXELS_TABLEGEN_H | |||
| #include <stdint.h> | |||
| @@ -88,4 +88,4 @@ static void motionpixels_tableinit(void) | |||
| } | |||
| #endif /* CONFIG_HARDCODED_TABLES */ | |||
| #endif /* MOTIONPIXELS_TABLEGEN_H */ | |||
| #endif /* AVCODEC_MOTIONPIXELS_TABLEGEN_H */ | |||
| @@ -196,4 +196,4 @@ static inline int ff_mpeg4_pred_dc(MpegEncContext * s, int n, int level, int *di | |||
| return ret; | |||
| } | |||
| #endif | |||
| #endif /* AVCODEC_MPEG4VIDEO_H */ | |||
| @@ -20,8 +20,8 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef MPEGAUDIO_TABLEGEN_H | |||
| #define MPEGAUDIO_TABLEGEN_H | |||
| #ifndef AVCODEC_MPEGAUDIO_TABLEGEN_H | |||
| #define AVCODEC_MPEGAUDIO_TABLEGEN_H | |||
| #include <stdint.h> | |||
| #include <math.h> | |||
| @@ -68,4 +68,4 @@ static void mpegaudio_tableinit(void) | |||
| } | |||
| #endif /* CONFIG_HARDCODED_TABLES */ | |||
| #endif /* MPEGAUDIO_TABLEGEN_H */ | |||
| #endif /* AVCODEC_MPEGAUDIO_TABLEGEN_H */ | |||
| @@ -69,9 +69,9 @@ typedef struct MPADecodeContext { | |||
| uint32_t free_format_next_header; | |||
| GetBitContext gb; | |||
| GetBitContext in_gb; | |||
| DECLARE_ALIGNED(16, MPA_INT, synth_buf)[MPA_MAX_CHANNELS][512 * 2]; | |||
| DECLARE_ALIGNED(32, MPA_INT, synth_buf)[MPA_MAX_CHANNELS][512 * 2]; | |||
| int synth_buf_offset[MPA_MAX_CHANNELS]; | |||
| DECLARE_ALIGNED(16, INTFLOAT, sb_samples)[MPA_MAX_CHANNELS][36][SBLIMIT]; | |||
| DECLARE_ALIGNED(32, INTFLOAT, sb_samples)[MPA_MAX_CHANNELS][36][SBLIMIT]; | |||
| INTFLOAT mdct_buf[MPA_MAX_CHANNELS][SBLIMIT * 18]; /* previous samples, for layer 3 MDCT */ | |||
| GranuleDef granules[2][2]; /* Used in Layer 3 */ | |||
| #ifdef DEBUG | |||
| @@ -60,4 +60,4 @@ void ff_mpadsp_apply_window_fixed(int32_t *synth_buf, int32_t *window, | |||
| int *dither_state, int16_t *samples, | |||
| int incr); | |||
| #endif | |||
| #endif /* AVCODEC_MPEGAUDIODSP_H */ | |||
| @@ -19,12 +19,12 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef MSGSMDEC_H | |||
| #define MSGSMDEC_H | |||
| #ifndef AVCODEC_MSGSMDEC_H | |||
| #define AVCODEC_MSGSMDEC_H | |||
| #include "avcodec.h" | |||
| int ff_msgsm_decode_block(AVCodecContext *avctx, int16_t *samples, | |||
| const uint8_t *buf); | |||
| #endif | |||
| #endif /* AVCODEC_MSGSMDEC_H */ | |||
| @@ -54,4 +54,4 @@ extern const int16_t ff_nelly_delta_table[32]; | |||
| void ff_nelly_get_sample_bits(const float *buf, int *bits); | |||
| #endif | |||
| #endif /* AVCODEC_NELLYMOSER_H */ | |||
| @@ -13,4 +13,4 @@ | |||
| #include "libavutil/opt.h" | |||
| #endif | |||
| #endif | |||
| #endif /* AVCODEC_OPT_H */ | |||
| @@ -20,8 +20,8 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef PCM_TABLEGEN_H | |||
| #define PCM_TABLEGEN_H | |||
| #ifndef AVCODEC_PCM_TABLEGEN_H | |||
| #define AVCODEC_PCM_TABLEGEN_H | |||
| #include <stdint.h> | |||
| #include "libavutil/attributes.h" | |||
| @@ -116,4 +116,4 @@ static void pcm_ulaw_tableinit(void) | |||
| } | |||
| #endif /* CONFIG_HARDCODED_TABLES */ | |||
| #endif /* PCM_TABLEGEN_H */ | |||
| #endif /* AVCODEC_PCM_TABLEGEN_H */ | |||
| @@ -20,8 +20,8 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef QDM2_TABLEGEN_H | |||
| #define QDM2_TABLEGEN_H | |||
| #ifndef AVCODEC_QDM2_TABLEGEN_H | |||
| #define AVCODEC_QDM2_TABLEGEN_H | |||
| #include <stdint.h> | |||
| #include <math.h> | |||
| @@ -99,4 +99,4 @@ static av_cold void init_noise_samples(void) { | |||
| } | |||
| #endif /* CONFIG_HARDCODED_TABLES */ | |||
| #endif /* QDM2_TABLEGEN_H */ | |||
| #endif /* AVCODEC_QDM2_TABLEGEN_H */ | |||
| @@ -71,4 +71,4 @@ void ff_rdft_end(RDFTContext *s); | |||
| void ff_rdft_init_arm(RDFTContext *s); | |||
| #endif | |||
| #endif /* AVCODEC_RDFT_H */ | |||
| @@ -25,4 +25,4 @@ | |||
| void idct_sh4(DCTELEM *block); | |||
| void dsputil_init_align(DSPContext* c, AVCodecContext *avctx); | |||
| #endif | |||
| #endif /* AVCODEC_SH4_DSPUTIL_SH4_H */ | |||
| @@ -56,4 +56,4 @@ extern SINETABLE(4096); | |||
| extern SINETABLE_CONST float * const ff_sine_windows[13]; | |||
| #endif | |||
| #endif /* AVCODEC_SINEWIN_H */ | |||
| @@ -20,6 +20,9 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef AVCODEC_SINEWIN_TABLEGEN_H | |||
| #define AVCODEC_SINEWIN_TABLEGEN_H | |||
| #include <assert.h> | |||
| // do not use libavutil/libm.h since this is compiled both | |||
| // for the host and the target and config.h is only valid for the target | |||
| @@ -58,3 +61,5 @@ av_cold void ff_init_ff_sine_windows(int index) { | |||
| ff_sine_window_init(ff_sine_windows[index], 1 << index); | |||
| #endif | |||
| } | |||
| #endif /* AVCODEC_SINEWIN_TABLEGEN_H */ | |||
| @@ -26,4 +26,4 @@ void ff_simple_idct_put_vis(uint8_t *dest, int line_size, DCTELEM *data); | |||
| void ff_simple_idct_add_vis(uint8_t *dest, int line_size, DCTELEM *data); | |||
| void ff_simple_idct_vis(DCTELEM *data); | |||
| #endif | |||
| #endif /* AVCODEC_SPARC_DSPUTIL_VIS_H */ | |||
| @@ -819,21 +819,12 @@ static av_cold int svq3_decode_init(AVCodecContext *avctx) | |||
| avctx->pix_fmt = avctx->codec->pix_fmts[0]; | |||
| if (!s->context_initialized) { | |||
| s->width = avctx->width; | |||
| s->height = avctx->height; | |||
| h->chroma_qp[0] = h->chroma_qp[1] = 4; | |||
| svq3->halfpel_flag = 1; | |||
| svq3->thirdpel_flag = 1; | |||
| svq3->unknown_flag = 0; | |||
| if (MPV_common_init(s) < 0) | |||
| return -1; | |||
| h->b_stride = 4*s->mb_width; | |||
| ff_h264_alloc_tables(h); | |||
| /* prowl for the "SEQH" marker in the extradata */ | |||
| extradata = (unsigned char *)avctx->extradata; | |||
| for (m = 0; m < avctx->extradata_size; m++) { | |||
| @@ -920,6 +911,16 @@ static av_cold int svq3_decode_init(AVCodecContext *avctx) | |||
| #endif | |||
| } | |||
| } | |||
| s->width = avctx->width; | |||
| s->height = avctx->height; | |||
| if (MPV_common_init(s) < 0) | |||
| return -1; | |||
| h->b_stride = 4*s->mb_width; | |||
| ff_h264_alloc_tables(h); | |||
| } | |||
| return 0; | |||
| @@ -16,6 +16,9 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef AVCODEC_TARGA_H | |||
| #define AVCODEC_TARGA_H | |||
| /** | |||
| * @file | |||
| * targa file common definitions | |||
| @@ -34,3 +37,5 @@ enum TargaCompr { | |||
| TGA_BW = 3, // black & white or grayscale | |||
| TGA_RLE = 8, // flag pointing that data is RLE-coded | |||
| }; | |||
| #endif /* AVCODEC_TARGA_H */ | |||
| @@ -239,4 +239,4 @@ typedef struct { | |||
| AVFrame frames[5]; | |||
| } VP8Context; | |||
| #endif | |||
| #endif /* AVCODEC_VP8_H */ | |||
| @@ -685,4 +685,4 @@ static const uint8_t vp8_mv_default_prob[2][19] = { | |||
| 128, 130, 130, 74, 148, 180, 203, 236, 254, 254 } | |||
| }; | |||
| #endif | |||
| #endif /* AVCODEC_VP8DATA_H */ | |||
| @@ -1,6 +1,8 @@ | |||
| OBJS-$(CONFIG_MLP_DECODER) += x86/mlpdsp.o | |||
| OBJS-$(CONFIG_TRUEHD_DECODER) += x86/mlpdsp.o | |||
| YASM-OBJS-$(CONFIG_DCT) += x86/dct32_sse.o | |||
| YASM-OBJS-FFT-$(HAVE_AMD3DNOW) += x86/fft_3dn.o | |||
| YASM-OBJS-FFT-$(HAVE_AMD3DNOWEXT) += x86/fft_3dn2.o | |||
| YASM-OBJS-FFT-$(HAVE_SSE) += x86/fft_sse.o | |||
| @@ -55,4 +57,3 @@ OBJS-$(HAVE_MMX) += x86/dnxhd_mmx.o \ | |||
| x86/mpegvideo_mmx.o \ | |||
| x86/simple_idct_mmx.o \ | |||
| MMX-OBJS-$(CONFIG_DCT) += x86/dct32_sse.o | |||
| @@ -0,0 +1,391 @@ | |||
| ;****************************************************************************** | |||
| ;* 32 point SSE-optimized DCT transform | |||
| ;* Copyright (c) 2010 Vitor Sessak | |||
| ;* | |||
| ;* This file is part of Libav. | |||
| ;* | |||
| ;* Libav 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.1 of the License, or (at your option) any later version. | |||
| ;* | |||
| ;* Libav 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 Libav; if not, write to the Free Software | |||
| ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| ;****************************************************************************** | |||
| %include "x86inc.asm" | |||
| %include "config.asm" | |||
| SECTION_RODATA 32 | |||
| align 32 | |||
| ps_cos_vec: dd 0.500603, 0.505471, 0.515447, 0.531043 | |||
| dd 0.553104, 0.582935, 0.622504, 0.674808 | |||
| dd -10.190008, -3.407609, -2.057781, -1.484165 | |||
| dd -1.169440, -0.972568, -0.839350, -0.744536 | |||
| dd 0.502419, 0.522499, 0.566944, 0.646822 | |||
| dd 0.788155, 1.060678, 1.722447, 5.101149 | |||
| dd 0.509796, 0.601345, 0.899976, 2.562916 | |||
| dd 0.509796, 0.601345, 0.899976, 2.562916 | |||
| dd 1.000000, 1.000000, 1.306563, 0.541196 | |||
| dd 1.000000, 1.000000, 1.306563, 0.541196 | |||
| dd 1.000000, 0.707107, 1.000000, -0.707107 | |||
| dd 1.000000, 0.707107, 1.000000, -0.707107 | |||
| ps_p1p1m1m1: dd 0, 0, 0x80000000, 0x80000000, 0, 0, 0x80000000, 0x80000000 | |||
| %macro BUTTERFLY_SSE 4 | |||
| movaps %4, %1 | |||
| subps %1, %2 | |||
| addps %2, %4 | |||
| mulps %1, %3 | |||
| %endmacro | |||
| %macro BUTTERFLY_AVX 4 | |||
| vsubps %4, %1, %2 | |||
| vaddps %2, %2, %1 | |||
| vmulps %1, %4, %3 | |||
| %endmacro | |||
| %macro BUTTERFLY0_SSE 5 | |||
| movaps %4, %1 | |||
| shufps %1, %1, %5 | |||
| xorps %4, %2 | |||
| addps %1, %4 | |||
| mulps %1, %3 | |||
| %endmacro | |||
| %macro BUTTERFLY0_AVX 5 | |||
| vshufps %4, %1, %1, %5 | |||
| vxorps %1, %1, %2 | |||
| vaddps %4, %4, %1 | |||
| vmulps %1, %4, %3 | |||
| %endmacro | |||
| %macro BUTTERFLY2 4 | |||
| BUTTERFLY0 %1, %2, %3, %4, 0x1b | |||
| %endmacro | |||
| %macro BUTTERFLY3 4 | |||
| BUTTERFLY0 %1, %2, %3, %4, 0xb1 | |||
| %endmacro | |||
| %macro PASS6_AND_PERMUTE 0 | |||
| mov tmpd, [outq+4] | |||
| movss m7, [outq+72] | |||
| addss m7, [outq+76] | |||
| movss m3, [outq+56] | |||
| addss m3, [outq+60] | |||
| addss m4, m3 | |||
| movss m2, [outq+52] | |||
| addss m2, m3 | |||
| movss m3, [outq+104] | |||
| addss m3, [outq+108] | |||
| addss m1, m3 | |||
| addss m5, m4 | |||
| movss [outq+ 16], m1 | |||
| movss m1, [outq+100] | |||
| addss m1, m3 | |||
| movss m3, [outq+40] | |||
| movss [outq+ 48], m1 | |||
| addss m3, [outq+44] | |||
| movss m1, [outq+100] | |||
| addss m4, m3 | |||
| addss m3, m2 | |||
| addss m1, [outq+108] | |||
| movss [outq+ 40], m3 | |||
| addss m2, [outq+36] | |||
| movss m3, [outq+8] | |||
| movss [outq+ 56], m2 | |||
| addss m3, [outq+12] | |||
| movss [outq+ 32], m3 | |||
| movss m3, [outq+80] | |||
| movss [outq+ 8], m5 | |||
| movss [outq+ 80], m1 | |||
| movss m2, [outq+52] | |||
| movss m5, [outq+120] | |||
| addss m5, [outq+124] | |||
| movss m1, [outq+64] | |||
| addss m2, [outq+60] | |||
| addss m0, m5 | |||
| addss m5, [outq+116] | |||
| mov [outq+64], tmpd | |||
| addss m6, m0 | |||
| addss m1, m6 | |||
| mov tmpd, [outq+12] | |||
| mov [outq+ 96], tmpd | |||
| movss [outq+ 4], m1 | |||
| movss m1, [outq+24] | |||
| movss [outq+ 24], m4 | |||
| movss m4, [outq+88] | |||
| addss m4, [outq+92] | |||
| addss m3, m4 | |||
| addss m4, [outq+84] | |||
| mov tmpd, [outq+108] | |||
| addss m1, [outq+28] | |||
| addss m0, m1 | |||
| addss m1, m5 | |||
| addss m6, m3 | |||
| addss m3, m0 | |||
| addss m0, m7 | |||
| addss m5, [outq+20] | |||
| addss m7, m1 | |||
| movss [outq+ 12], m6 | |||
| mov [outq+112], tmpd | |||
| movss m6, [outq+28] | |||
| movss [outq+ 28], m0 | |||
| movss m0, [outq+36] | |||
| movss [outq+ 36], m7 | |||
| addss m1, m4 | |||
| movss m7, [outq+116] | |||
| addss m0, m2 | |||
| addss m7, [outq+124] | |||
| movss [outq+ 72], m0 | |||
| movss m0, [outq+44] | |||
| addss m2, m0 | |||
| movss [outq+ 44], m1 | |||
| movss [outq+ 88], m2 | |||
| addss m0, [outq+60] | |||
| mov tmpd, [outq+60] | |||
| mov [outq+120], tmpd | |||
| movss [outq+104], m0 | |||
| addss m4, m5 | |||
| addss m5, [outq+68] | |||
| movss [outq+52], m4 | |||
| movss [outq+60], m5 | |||
| movss m4, [outq+68] | |||
| movss m5, [outq+20] | |||
| movss [outq+ 20], m3 | |||
| addss m5, m7 | |||
| addss m7, m6 | |||
| addss m4, m5 | |||
| movss m2, [outq+84] | |||
| addss m2, [outq+92] | |||
| addss m5, m2 | |||
| movss [outq+ 68], m4 | |||
| addss m2, m7 | |||
| movss m4, [outq+76] | |||
| movss [outq+ 84], m2 | |||
| movss [outq+ 76], m5 | |||
| addss m7, m4 | |||
| addss m6, [outq+124] | |||
| addss m4, m6 | |||
| addss m6, [outq+92] | |||
| movss [outq+100], m4 | |||
| movss [outq+108], m6 | |||
| movss m6, [outq+92] | |||
| movss [outq+92], m7 | |||
| addss m6, [outq+124] | |||
| movss [outq+116], m6 | |||
| %endmacro | |||
| %define BUTTERFLY BUTTERFLY_AVX | |||
| %define BUTTERFLY0 BUTTERFLY0_AVX | |||
| INIT_YMM | |||
| section .text align=16 | |||
| %ifdef HAVE_AVX | |||
| ; void ff_dct32_float_avx(FFTSample *out, const FFTSample *in) | |||
| cglobal dct32_float_avx, 2,3,8, out, in, tmp | |||
| ; pass 1 | |||
| vmovaps m4, [inq+0] | |||
| vinsertf128 m5, m5, [inq+96], 1 | |||
| vinsertf128 m5, m5, [inq+112], 0 | |||
| vshufps m5, m5, m5, 0x1b | |||
| BUTTERFLY m4, m5, [ps_cos_vec], m6 | |||
| vmovaps m2, [inq+64] | |||
| vinsertf128 m6, m6, [inq+32], 1 | |||
| vinsertf128 m6, m6, [inq+48], 0 | |||
| vshufps m6, m6, m6, 0x1b | |||
| BUTTERFLY m2, m6, [ps_cos_vec+32], m0 | |||
| ; pass 2 | |||
| BUTTERFLY m5, m6, [ps_cos_vec+64], m0 | |||
| BUTTERFLY m4, m2, [ps_cos_vec+64], m7 | |||
| ; pass 3 | |||
| vperm2f128 m3, m6, m4, 0x31 | |||
| vperm2f128 m1, m6, m4, 0x20 | |||
| vshufps m3, m3, m3, 0x1b | |||
| BUTTERFLY m1, m3, [ps_cos_vec+96], m6 | |||
| vperm2f128 m4, m5, m2, 0x20 | |||
| vperm2f128 m5, m5, m2, 0x31 | |||
| vshufps m5, m5, m5, 0x1b | |||
| BUTTERFLY m4, m5, [ps_cos_vec+96], m6 | |||
| ; pass 4 | |||
| vmovaps m6, [ps_p1p1m1m1+0] | |||
| vmovaps m2, [ps_cos_vec+128] | |||
| BUTTERFLY2 m5, m6, m2, m7 | |||
| BUTTERFLY2 m4, m6, m2, m7 | |||
| BUTTERFLY2 m1, m6, m2, m7 | |||
| BUTTERFLY2 m3, m6, m2, m7 | |||
| ; pass 5 | |||
| vshufps m6, m6, m6, 0xcc | |||
| vmovaps m2, [ps_cos_vec+160] | |||
| BUTTERFLY3 m5, m6, m2, m7 | |||
| BUTTERFLY3 m4, m6, m2, m7 | |||
| BUTTERFLY3 m1, m6, m2, m7 | |||
| BUTTERFLY3 m3, m6, m2, m7 | |||
| vperm2f128 m6, m3, m3, 0x31 | |||
| vmovaps [outq], m3 | |||
| vextractf128 [outq+64], m5, 1 | |||
| vextractf128 [outq+32], m5, 0 | |||
| vextractf128 [outq+80], m4, 1 | |||
| vextractf128 [outq+48], m4, 0 | |||
| vperm2f128 m0, m1, m1, 0x31 | |||
| vmovaps [outq+96], m1 | |||
| vzeroupper | |||
| ; pass 6, no SIMD... | |||
| INIT_XMM | |||
| PASS6_AND_PERMUTE | |||
| RET | |||
| %endif | |||
| %define BUTTERFLY BUTTERFLY_SSE | |||
| %define BUTTERFLY0 BUTTERFLY0_SSE | |||
| INIT_XMM | |||
| ; void ff_dct32_float_sse(FFTSample *out, const FFTSample *in) | |||
| cglobal dct32_float_sse, 2,3,8, out, in, tmp | |||
| ; pass 1 | |||
| movaps m0, [inq+0] | |||
| movaps m1, [inq+112] | |||
| shufps m1, m1, 0x1b | |||
| BUTTERFLY m0, m1, [ps_cos_vec], m3 | |||
| movaps m7, [inq+64] | |||
| movaps m4, [inq+48] | |||
| shufps m4, m4, 0x1b | |||
| BUTTERFLY m7, m4, [ps_cos_vec+32], m3 | |||
| ; pass 2 | |||
| movaps m2, [ps_cos_vec+64] | |||
| BUTTERFLY m1, m4, m2, m3 | |||
| movaps [outq+48], m1 | |||
| movaps [outq+ 0], m4 | |||
| ; pass 1 | |||
| movaps m1, [inq+16] | |||
| movaps m6, [inq+96] | |||
| shufps m6, m6, 0x1b | |||
| BUTTERFLY m1, m6, [ps_cos_vec+16], m3 | |||
| movaps m4, [inq+80] | |||
| movaps m5, [inq+32] | |||
| shufps m5, m5, 0x1b | |||
| BUTTERFLY m4, m5, [ps_cos_vec+48], m3 | |||
| ; pass 2 | |||
| BUTTERFLY m0, m7, m2, m3 | |||
| movaps m2, [ps_cos_vec+80] | |||
| BUTTERFLY m6, m5, m2, m3 | |||
| BUTTERFLY m1, m4, m2, m3 | |||
| ; pass 3 | |||
| movaps m2, [ps_cos_vec+96] | |||
| shufps m1, m1, 0x1b | |||
| BUTTERFLY m0, m1, m2, m3 | |||
| movaps [outq+112], m0 | |||
| movaps [outq+ 96], m1 | |||
| movaps m0, [outq+0] | |||
| shufps m5, m5, 0x1b | |||
| BUTTERFLY m0, m5, m2, m3 | |||
| movaps m1, [outq+48] | |||
| shufps m6, m6, 0x1b | |||
| BUTTERFLY m1, m6, m2, m3 | |||
| movaps [outq+48], m1 | |||
| shufps m4, m4, 0x1b | |||
| BUTTERFLY m7, m4, m2, m3 | |||
| ; pass 4 | |||
| movaps m3, [ps_p1p1m1m1+0] | |||
| movaps m2, [ps_cos_vec+128] | |||
| BUTTERFLY2 m5, m3, m2, m1 | |||
| BUTTERFLY2 m0, m3, m2, m1 | |||
| movaps [outq+16], m0 | |||
| BUTTERFLY2 m6, m3, m2, m1 | |||
| movaps [outq+32], m6 | |||
| movaps m0, [outq+48] | |||
| BUTTERFLY2 m0, m3, m2, m1 | |||
| movaps [outq+48], m0 | |||
| BUTTERFLY2 m4, m3, m2, m1 | |||
| BUTTERFLY2 m7, m3, m2, m1 | |||
| movaps m6, [outq+96] | |||
| BUTTERFLY2 m6, m3, m2, m1 | |||
| movaps m0, [outq+112] | |||
| BUTTERFLY2 m0, m3, m2, m1 | |||
| ; pass 5 | |||
| movaps m2, [ps_cos_vec+160] | |||
| shufps m3, m3, 0xcc | |||
| BUTTERFLY3 m5, m3, m2, m1 | |||
| movaps [outq+0], m5 | |||
| movaps m1, [outq+16] | |||
| BUTTERFLY3 m1, m3, m2, m5 | |||
| movaps [outq+96], m1 | |||
| BUTTERFLY3 m4, m3, m2, m5 | |||
| movaps [outq+64], m4 | |||
| BUTTERFLY3 m7, m3, m2, m5 | |||
| movaps [outq+80], m7 | |||
| movaps m5, [outq+32] | |||
| BUTTERFLY3 m5, m3, m2, m7 | |||
| movaps [outq+32], m5 | |||
| movaps m4, [outq+48] | |||
| BUTTERFLY3 m4, m3, m2, m7 | |||
| movaps [outq+48], m4 | |||
| BUTTERFLY3 m6, m3, m2, m7 | |||
| movaps [outq+16], m6 | |||
| BUTTERFLY3 m0, m3, m2, m7 | |||
| movaps [outq+112], m0 | |||
| ; pass 6, no SIMD... | |||
| PASS6_AND_PERMUTE | |||
| RET | |||
| @@ -1,296 +0,0 @@ | |||
| /* | |||
| * 32 point SSE-optimized DCT transform | |||
| * Copyright (c) 2010 Vitor Sessak | |||
| * | |||
| * This file is part of FFmpeg. | |||
| * | |||
| * FFmpeg 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.1 of the License, or (at your option) any later version. | |||
| * | |||
| * FFmpeg 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 FFmpeg; if not, write to the Free Software | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #include <stdint.h> | |||
| #include "libavutil/x86_cpu.h" | |||
| #include "libavutil/mem.h" | |||
| #include "libavcodec/dsputil.h" | |||
| #include "fft.h" | |||
| DECLARE_ALIGNED(16, static const float, b1)[] = { | |||
| 0.500603, 0.505471, 0.515447, 0.531043, | |||
| 0.553104, 0.582935, 0.622504, 0.674808, | |||
| -1.169440, -0.972568, -0.839350, -0.744536, | |||
| -10.190008, -3.407609, -2.057781, -1.484165, | |||
| 0.502419, 0.522499, 0.566944, 0.646822, | |||
| 0.788155, 1.060678, 1.722447, 5.101149, | |||
| 0.509796, 0.601345, 0.899976, 2.562916, | |||
| 1.000000, 1.000000, 1.306563, 0.541196, | |||
| 1.000000, 0.707107, 1.000000, -0.707107 | |||
| }; | |||
| DECLARE_ALIGNED(16, static const int32_t, smask)[4] = { | |||
| 0, 0, 0x80000000, 0x80000000 | |||
| }; | |||
| /* butterfly operator */ | |||
| #define BUTTERFLY(a,b,c,tmp) \ | |||
| "movaps %%" #a ", %%" #tmp " \n\t" \ | |||
| "subps %%" #b ", %%" #a " \n\t" \ | |||
| "addps %%" #tmp ", %%" #b " \n\t" \ | |||
| "mulps " #c ", %%" #a " \n\t" | |||
| ///* Same as BUTTERFLY when vectors a and b overlap */ | |||
| #define BUTTERFLY0(val, mask, cos, tmp, shuf) \ | |||
| "movaps %%" #val ", %%" #tmp " \n\t" \ | |||
| "shufps " #shuf ", %%" #val ",%%" #val " \n\t" \ | |||
| "xorps %%" #mask ", %%" #tmp " \n\t" /* flip signs */ \ | |||
| "addps %%" #tmp ", %%" #val " \n\t" \ | |||
| "mulps %%" #cos ", %%" #val " \n\t" | |||
| #define BUTTERFLY2(val, mask, cos, tmp) BUTTERFLY0(val, mask, cos, tmp, $0x1b) | |||
| #define BUTTERFLY3(val, mask, cos, tmp) BUTTERFLY0(val, mask, cos, tmp, $0xb1) | |||
| void ff_dct32_float_sse(FFTSample *out, const FFTSample *in) | |||
| { | |||
| int32_t tmp1 = 0; | |||
| __asm__ volatile( | |||
| /* pass 1 */ | |||
| "movaps (%4), %%xmm0 \n\t" | |||
| "movaps 112(%4), %%xmm1 \n\t" | |||
| "shufps $0x1b, %%xmm1, %%xmm1 \n\t" | |||
| BUTTERFLY(xmm0, xmm1, (%2), xmm3) | |||
| "movaps 64(%4), %%xmm7 \n\t" | |||
| "movaps 48(%4), %%xmm4 \n\t" | |||
| "shufps $0x1b, %%xmm4, %%xmm4 \n\t" | |||
| BUTTERFLY(xmm7, xmm4, 48(%2), xmm3) | |||
| /* pass 2 */ | |||
| "movaps 64(%2), %%xmm2 \n\t" | |||
| BUTTERFLY(xmm1, xmm4, %%xmm2, xmm3) | |||
| "movaps %%xmm1, 48(%1) \n\t" | |||
| "movaps %%xmm4, (%1) \n\t" | |||
| /* pass 1 */ | |||
| "movaps 16(%4), %%xmm1 \n\t" | |||
| "movaps 96(%4), %%xmm6 \n\t" | |||
| "shufps $0x1b, %%xmm6, %%xmm6 \n\t" | |||
| BUTTERFLY(xmm1, xmm6, 16(%2), xmm3) | |||
| "movaps 80(%4), %%xmm4 \n\t" | |||
| "movaps 32(%4), %%xmm5 \n\t" | |||
| "shufps $0x1b, %%xmm5, %%xmm5 \n\t" | |||
| BUTTERFLY(xmm4, xmm5, 32(%2), xmm3) | |||
| /* pass 2 */ | |||
| BUTTERFLY(xmm0, xmm7, %%xmm2, xmm3) | |||
| "movaps 80(%2), %%xmm2 \n\t" | |||
| BUTTERFLY(xmm6, xmm5, %%xmm2, xmm3) | |||
| BUTTERFLY(xmm1, xmm4, %%xmm2, xmm3) | |||
| /* pass 3 */ | |||
| "movaps 96(%2), %%xmm2 \n\t" | |||
| "shufps $0x1b, %%xmm1, %%xmm1 \n\t" | |||
| BUTTERFLY(xmm0, xmm1, %%xmm2, xmm3) | |||
| "movaps %%xmm0, 112(%1) \n\t" | |||
| "movaps %%xmm1, 96(%1) \n\t" | |||
| "movaps 0(%1), %%xmm0 \n\t" | |||
| "shufps $0x1b, %%xmm5, %%xmm5 \n\t" | |||
| BUTTERFLY(xmm0, xmm5, %%xmm2, xmm3) | |||
| "movaps 48(%1), %%xmm1 \n\t" | |||
| "shufps $0x1b, %%xmm6, %%xmm6 \n\t" | |||
| BUTTERFLY(xmm1, xmm6, %%xmm2, xmm3) | |||
| "movaps %%xmm1, 48(%1) \n\t" | |||
| "shufps $0x1b, %%xmm4, %%xmm4 \n\t" | |||
| BUTTERFLY(xmm7, xmm4, %%xmm2, xmm3) | |||
| /* pass 4 */ | |||
| "movaps (%3), %%xmm3 \n\t" | |||
| "movaps 112(%2), %%xmm2 \n\t" | |||
| BUTTERFLY2(xmm5, xmm3, xmm2, xmm1) | |||
| BUTTERFLY2(xmm0, xmm3, xmm2, xmm1) | |||
| "movaps %%xmm0, 16(%1) \n\t" | |||
| BUTTERFLY2(xmm6, xmm3, xmm2, xmm1) | |||
| "movaps %%xmm6, 32(%1) \n\t" | |||
| "movaps 48(%1), %%xmm0 \n\t" | |||
| BUTTERFLY2(xmm0, xmm3, xmm2, xmm1) | |||
| "movaps %%xmm0, 48(%1) \n\t" | |||
| BUTTERFLY2(xmm4, xmm3, xmm2, xmm1) | |||
| BUTTERFLY2(xmm7, xmm3, xmm2, xmm1) | |||
| "movaps 96(%1), %%xmm6 \n\t" | |||
| BUTTERFLY2(xmm6, xmm3, xmm2, xmm1) | |||
| "movaps 112(%1), %%xmm0 \n\t" | |||
| BUTTERFLY2(xmm0, xmm3, xmm2, xmm1) | |||
| /* pass 5 */ | |||
| "movaps 128(%2), %%xmm2 \n\t" | |||
| "shufps $0xCC, %%xmm3,%%xmm3 \n\t" | |||
| BUTTERFLY3(xmm5, xmm3, xmm2, xmm1) | |||
| "movaps %%xmm5, (%1) \n\t" | |||
| "movaps 16(%1), %%xmm1 \n\t" | |||
| BUTTERFLY3(xmm1, xmm3, xmm2, xmm5) | |||
| "movaps %%xmm1, 16(%1) \n\t" | |||
| BUTTERFLY3(xmm4, xmm3, xmm2, xmm5) | |||
| "movaps %%xmm4, 64(%1) \n\t" | |||
| BUTTERFLY3(xmm7, xmm3, xmm2, xmm5) | |||
| "movaps %%xmm7, 80(%1) \n\t" | |||
| "movaps 32(%1), %%xmm5 \n\t" | |||
| BUTTERFLY3(xmm5, xmm3, xmm2, xmm7) | |||
| "movaps %%xmm5, 32(%1) \n\t" | |||
| "movaps 48(%1), %%xmm4 \n\t" | |||
| BUTTERFLY3(xmm4, xmm3, xmm2, xmm7) | |||
| "movaps %%xmm4, 48(%1) \n\t" | |||
| BUTTERFLY3(xmm6, xmm3, xmm2, xmm7) | |||
| "movaps %%xmm6, 96(%1) \n\t" | |||
| BUTTERFLY3(xmm0, xmm3, xmm2, xmm7) | |||
| "movaps %%xmm0, 112(%1) \n\t" | |||
| /* pass 6, no SIMD... */ | |||
| "movss 56(%1), %%xmm3 \n\t" | |||
| "movl 4(%1), %0 \n\t" | |||
| "addss 60(%1), %%xmm3 \n\t" | |||
| "movss 72(%1), %%xmm7 \n\t" | |||
| "addss %%xmm3, %%xmm4 \n\t" | |||
| "movss 52(%1), %%xmm2 \n\t" | |||
| "addss %%xmm3, %%xmm2 \n\t" | |||
| "movss 24(%1), %%xmm3 \n\t" | |||
| "addss 28(%1), %%xmm3 \n\t" | |||
| "addss 76(%1), %%xmm7 \n\t" | |||
| "addss %%xmm3, %%xmm1 \n\t" | |||
| "addss %%xmm4, %%xmm5 \n\t" | |||
| "movss %%xmm1, 16(%1) \n\t" | |||
| "movss 20(%1), %%xmm1 \n\t" | |||
| "addss %%xmm3, %%xmm1 \n\t" | |||
| "movss 40(%1), %%xmm3 \n\t" | |||
| "movss %%xmm1, 48(%1) \n\t" | |||
| "addss 44(%1), %%xmm3 \n\t" | |||
| "movss 20(%1), %%xmm1 \n\t" | |||
| "addss %%xmm3, %%xmm4 \n\t" | |||
| "addss %%xmm2, %%xmm3 \n\t" | |||
| "addss 28(%1), %%xmm1 \n\t" | |||
| "movss %%xmm3, 40(%1) \n\t" | |||
| "addss 36(%1), %%xmm2 \n\t" | |||
| "movss 8(%1), %%xmm3 \n\t" | |||
| "movss %%xmm2, 56(%1) \n\t" | |||
| "addss 12(%1), %%xmm3 \n\t" | |||
| "movss %%xmm5, 8(%1) \n\t" | |||
| "movss %%xmm3, 32(%1) \n\t" | |||
| "movss 52(%1), %%xmm2 \n\t" | |||
| "movss 80(%1), %%xmm3 \n\t" | |||
| "movss 120(%1), %%xmm5 \n\t" | |||
| "movss %%xmm1, 80(%1) \n\t" | |||
| "movss %%xmm4, 24(%1) \n\t" | |||
| "addss 124(%1), %%xmm5 \n\t" | |||
| "movss 64(%1), %%xmm1 \n\t" | |||
| "addss 60(%1), %%xmm2 \n\t" | |||
| "addss %%xmm5, %%xmm0 \n\t" | |||
| "addss 116(%1), %%xmm5 \n\t" | |||
| "movl %0, 64(%1) \n\t" | |||
| "addss %%xmm0, %%xmm6 \n\t" | |||
| "addss %%xmm6, %%xmm1 \n\t" | |||
| "movl 12(%1), %0 \n\t" | |||
| "movss %%xmm1, 4(%1) \n\t" | |||
| "movss 88(%1), %%xmm1 \n\t" | |||
| "movl %0, 96(%1) \n\t" | |||
| "addss 92(%1), %%xmm1 \n\t" | |||
| "movss 104(%1), %%xmm4 \n\t" | |||
| "movl 28(%1), %0 \n\t" | |||
| "addss 108(%1), %%xmm4 \n\t" | |||
| "addss %%xmm4, %%xmm0 \n\t" | |||
| "addss %%xmm1, %%xmm3 \n\t" | |||
| "addss 84(%1), %%xmm1 \n\t" | |||
| "addss %%xmm5, %%xmm4 \n\t" | |||
| "addss %%xmm3, %%xmm6 \n\t" | |||
| "addss %%xmm0, %%xmm3 \n\t" | |||
| "addss %%xmm7, %%xmm0 \n\t" | |||
| "addss 100(%1), %%xmm5 \n\t" | |||
| "addss %%xmm4, %%xmm7 \n\t" | |||
| "movl %0, 112(%1) \n\t" | |||
| "movss %%xmm0, 28(%1) \n\t" | |||
| "movss 36(%1), %%xmm0 \n\t" | |||
| "movss %%xmm7, 36(%1) \n\t" | |||
| "addss %%xmm1, %%xmm4 \n\t" | |||
| "movss 116(%1), %%xmm7 \n\t" | |||
| "addss %%xmm2, %%xmm0 \n\t" | |||
| "addss 124(%1), %%xmm7 \n\t" | |||
| "movss %%xmm0, 72(%1) \n\t" | |||
| "movss 44(%1), %%xmm0 \n\t" | |||
| "movss %%xmm6, 12(%1) \n\t" | |||
| "movss %%xmm3, 20(%1) \n\t" | |||
| "addss %%xmm0, %%xmm2 \n\t" | |||
| "movss %%xmm4, 44(%1) \n\t" | |||
| "movss %%xmm2, 88(%1) \n\t" | |||
| "addss 60(%1), %%xmm0 \n\t" | |||
| "movl 60(%1), %0 \n\t" | |||
| "movl %0, 120(%1) \n\t" | |||
| "movss %%xmm0, 104(%1) \n\t" | |||
| "addss %%xmm5, %%xmm1 \n\t" | |||
| "addss 68(%1), %%xmm5 \n\t" | |||
| "movss %%xmm1, 52(%1) \n\t" | |||
| "movss %%xmm5, 60(%1) \n\t" | |||
| "movss 68(%1), %%xmm1 \n\t" | |||
| "movss 100(%1), %%xmm5 \n\t" | |||
| "addss %%xmm7, %%xmm5 \n\t" | |||
| "addss 108(%1), %%xmm7 \n\t" | |||
| "addss %%xmm5, %%xmm1 \n\t" | |||
| "movss 84(%1), %%xmm2 \n\t" | |||
| "addss 92(%1), %%xmm2 \n\t" | |||
| "addss %%xmm2, %%xmm5 \n\t" | |||
| "movss %%xmm1, 68(%1) \n\t" | |||
| "addss %%xmm7, %%xmm2 \n\t" | |||
| "movss 76(%1), %%xmm1 \n\t" | |||
| "movss %%xmm2, 84(%1) \n\t" | |||
| "movss %%xmm5, 76(%1) \n\t" | |||
| "movss 108(%1), %%xmm2 \n\t" | |||
| "addss %%xmm1, %%xmm7 \n\t" | |||
| "addss 124(%1), %%xmm2 \n\t" | |||
| "addss %%xmm2, %%xmm1 \n\t" | |||
| "addss 92(%1), %%xmm2 \n\t" | |||
| "movss %%xmm1, 100(%1) \n\t" | |||
| "movss %%xmm2, 108(%1) \n\t" | |||
| "movss 92(%1), %%xmm2 \n\t" | |||
| "movss %%xmm7, 92(%1) \n\t" | |||
| "addss 124(%1), %%xmm2 \n\t" | |||
| "movss %%xmm2, 116(%1) \n\t" | |||
| :"+&r"(tmp1) | |||
| :"r"(out), "r"(b1), "r"(smask), "r"(in) | |||
| :XMM_CLOBBERS("%xmm0", "%xmm1", "%xmm2", "%xmm3", | |||
| "%xmm4", "%xmm5", "%xmm6", "%xmm7",) | |||
| "memory" | |||
| ); | |||
| } | |||
| @@ -57,7 +57,9 @@ av_cold void ff_fft_init_mmx(FFTContext *s) | |||
| av_cold void ff_dct_init_mmx(DCTContext *s) | |||
| { | |||
| int has_vectors = av_get_cpu_flags(); | |||
| if (has_vectors & AV_CPU_FLAG_SSE && HAVE_SSE) | |||
| if (has_vectors & AV_CPU_FLAG_AVX && HAVE_AVX) | |||
| s->dct32 = ff_dct32_float_avx; | |||
| else if (has_vectors & AV_CPU_FLAG_SSE && HAVE_SSE) | |||
| s->dct32 = ff_dct32_float_sse; | |||
| } | |||
| #endif | |||
| @@ -35,5 +35,6 @@ void ff_imdct_calc_sse(FFTContext *s, FFTSample *output, const FFTSample *input) | |||
| void ff_imdct_half_sse(FFTContext *s, FFTSample *output, const FFTSample *input); | |||
| void ff_imdct_half_avx(FFTContext *s, FFTSample *output, const FFTSample *input); | |||
| void ff_dct32_float_sse(FFTSample *out, const FFTSample *in); | |||
| void ff_dct32_float_avx(FFTSample *out, const FFTSample *in); | |||
| #endif | |||
| #endif /* AVCODEC_X86_FFT_H */ | |||
| @@ -18,8 +18,8 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef AVCODEC_INTERNAL_XVMC_H | |||
| #define AVCODEC_INTERNAL_XVMC_H | |||
| #ifndef AVCODEC_XVMC_INTERNAL_H | |||
| #define AVCODEC_XVMC_INTERNAL_H | |||
| #include "avcodec.h" | |||
| #include "mpegvideo.h" | |||
| @@ -30,4 +30,4 @@ int ff_xvmc_field_start(MpegEncContext*s, AVCodecContext *avctx); | |||
| void ff_xvmc_field_end(MpegEncContext *s); | |||
| void ff_xvmc_decode_mb(MpegEncContext *s); | |||
| #endif /* AVCODEC_INTERNAL_XVMC_H */ | |||
| #endif /* AVCODEC_XVMC_INTERNAL_H */ | |||
| @@ -861,4 +861,4 @@ static inline void avfilter_insert_outpad(AVFilterContext *f, unsigned index, | |||
| &f->output_pads, &f->outputs, p); | |||
| } | |||
| #endif /* AVFILTER_AVFILTER_H */ | |||
| #endif /* AVFILTER_AVFILTER_H */ | |||
| @@ -120,4 +120,4 @@ int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, | |||
| AVFilterInOut *inputs, AVFilterInOut *outputs, | |||
| AVClass *log_ctx); | |||
| #endif /* AVFILTER_AVFILTERGRAPH_H */ | |||
| #endif /* AVFILTER_AVFILTERGRAPH_H */ | |||
| @@ -58,4 +58,4 @@ int ff_avfilter_graph_config_formats(AVFilterGraph *graphctx, AVClass *log_ctx); | |||
| /** default handler for freeing audio/video buffer when there are no references left */ | |||
| void ff_avfilter_default_free_buffer(AVFilterBuffer *buf); | |||
| #endif /* AVFILTER_INTERNAL_H */ | |||
| #endif /* AVFILTER_INTERNAL_H */ | |||
| @@ -370,6 +370,7 @@ void avio_set_interrupt_cb(int (*interrupt_cb)(void)); | |||
| * freed with av_free(). | |||
| * | |||
| * @param buffer Memory block for input/output operations via AVIOContext. | |||
| * The buffer must be allocated with av_malloc() and friends. | |||
| * @param buffer_size The buffer size is very important for performance. | |||
| * For protocols with fixed blocksize it should be set to this blocksize. | |||
| * For others a typical size is a cache page, e.g. 4kb. | |||
| @@ -98,4 +98,4 @@ int ffio_open_dyn_packet_buf(AVIOContext **s, int max_packet_size); | |||
| */ | |||
| int ffio_fdopen(AVIOContext **s, URLContext *h); | |||
| #endif // AVFORMAT_AVIO_INTERNAL_H | |||
| #endif /* AVFORMAT_AVIO_INTERNAL_H */ | |||
| @@ -113,6 +113,8 @@ AVIOContext *avio_alloc_context( | |||
| int64_t (*seek)(void *opaque, int64_t offset, int whence)) | |||
| { | |||
| AVIOContext *s = av_mallocz(sizeof(AVIOContext)); | |||
| if (!s) | |||
| return NULL; | |||
| ffio_init_context(s, buffer, buffer_size, write_flag, opaque, | |||
| read_packet, write_packet, seek); | |||
| return s; | |||
| @@ -19,11 +19,11 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef AVFORMAT_META_H | |||
| #define AVFORMAT_META_H | |||
| #ifndef AVFORMAT_FFMETA_H | |||
| #define AVFORMAT_FFMETA_H | |||
| #define ID_STRING ";FFMETADATA" | |||
| #define ID_CHAPTER "[CHAPTER]" | |||
| #define ID_STREAM "[STREAM]" | |||
| #endif /* AVFORMAT_META_H */ | |||
| #endif /* AVFORMAT_FFMETA_H */ | |||
| @@ -60,4 +60,5 @@ typedef struct { | |||
| int ff_mms_asf_header_parser(MMSContext * mms); | |||
| int ff_mms_read_data(MMSContext *mms, uint8_t *buf, const int size); | |||
| int ff_mms_read_header(MMSContext * mms, uint8_t * buf, const int size); | |||
| #endif | |||
| #endif /* AVFORMAT_MMS_H */ | |||
| @@ -19,6 +19,9 @@ | |||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
| */ | |||
| #ifndef AVFORMAT_SPDIF_H | |||
| #define AVFORMAT_SPDIF_H | |||
| #include <stdint.h> | |||
| #define SYNCWORD1 0xF872 | |||
| @@ -55,3 +58,5 @@ static const uint16_t spdif_mpeg_pkt_offset[2][3] = { | |||
| }; | |||
| void ff_spdif_bswap_buf16(uint16_t *dst, const uint16_t *src, int w); | |||
| #endif /* AVFORMAT_SPDIF_H */ | |||
| @@ -173,4 +173,4 @@ int ffurl_register_protocol(URLProtocol *protocol, int size); | |||
| int ff_udp_set_remote_url(URLContext *h, const char *uri); | |||
| int ff_udp_get_local_port(URLContext *h); | |||
| #endif //AVFORMAT_URL_H | |||
| #endif /* AVFORMAT_URL_H */ | |||
| @@ -69,4 +69,4 @@ | |||
| #define FF_API_SDP_CREATE (LIBAVFORMAT_VERSION_MAJOR < 54) | |||
| #endif | |||
| #endif //AVFORMAT_VERSION_H | |||
| #endif /* AVFORMAT_VERSION_H */ | |||
| @@ -63,4 +63,4 @@ | |||
| #define av_assert2(cond) ((void)0) | |||
| #endif | |||
| #endif | |||
| #endif /* AVUTIL_AVASSERT_H */ | |||
| @@ -51,4 +51,4 @@ int ff_get_cpu_flags_arm(void); | |||
| int ff_get_cpu_flags_ppc(void); | |||
| int ff_get_cpu_flags_x86(void); | |||
| #endif /* AVUTIL_CPU_H */ | |||
| #endif /* AVUTIL_CPU_H */ | |||
| @@ -187,6 +187,7 @@ void sws_freeContext(struct SwsContext *swsContext); | |||
| * @return a pointer to an allocated context, or NULL in case of error | |||
| * @note this function is to be removed after a saner alternative is | |||
| * written | |||
| * @deprecated Use sws_getCachedContext() instead. | |||
| */ | |||
| struct SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, | |||
| int dstW, int dstH, enum PixelFormat dstFormat, | |||