Merge remote-tracking branch 'qatar/master'

* 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>
This commit is contained in:
Michael Niedermayer 2011-05-22 04:53:19 +02:00
commit bf8bb94322
58 changed files with 500 additions and 387 deletions

View File

@ -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*)&copy_ts}, "copy timestamps" },
{ "copytb", OPT_BOOL | OPT_EXPERT, {(void*)&copy_tb}, "copy input stream time base when stream copying" },
{ "shortest", OPT_BOOL | OPT_EXPERT, {(void*)&opt_shortest}, "finish encoding within shortest input" }, //

View File

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

View File

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

View File

@ -1887,4 +1887,4 @@ static const uint16_t cf_sizes_wb[] = {
40 /// SID/comfort noise frame
};
#endif
#endif /* AVCODEC_AMRWBDATA_H */

View File

@ -36,4 +36,4 @@
#define H263_AIC 0xf0
#define INTER_SCANTAB_RASTER_END 0x138
#endif
#endif /* AVCODEC_ARM_ASM_OFFSETS_H */

View File

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

View File

@ -24,4 +24,4 @@
void MPV_common_init_iwmmxt(MpegEncContext *s);
void MPV_common_init_armv5te(MpegEncContext *s);
#endif
#endif /* AVCODEC_ARM_MPEGVIDEO_H */

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -49,4 +49,4 @@ void ff_dct_end (DCTContext *s);
void ff_dct_init_mmx(DCTContext *s);
#endif
#endif /* AVCODEC_DCT_H */

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -32,4 +32,4 @@
*/
void ff_kbd_window_init(float *window, float alpha, int n);
#endif
#endif /* AVCODEC_KBDWIN_H */

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -13,4 +13,4 @@
#include "libavutil/opt.h"
#endif
#endif
#endif /* AVCODEC_OPT_H */

View File

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

View File

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

View File

@ -71,4 +71,4 @@ void ff_rdft_end(RDFTContext *s);
void ff_rdft_init_arm(RDFTContext *s);
#endif
#endif /* AVCODEC_RDFT_H */

View File

@ -25,4 +25,4 @@
void idct_sh4(DCTELEM *block);
void dsputil_init_align(DSPContext* c, AVCodecContext *avctx);
#endif
#endif /* AVCODEC_SH4_DSPUTIL_SH4_H */

View File

@ -56,4 +56,4 @@ extern SINETABLE(4096);
extern SINETABLE_CONST float * const ff_sine_windows[13];
#endif
#endif /* AVCODEC_SINEWIN_H */

View File

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

View File

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

View File

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

View File

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

View File

@ -239,4 +239,4 @@ typedef struct {
AVFrame frames[5];
} VP8Context;
#endif
#endif /* AVCODEC_VP8_H */

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -69,4 +69,4 @@
#define FF_API_SDP_CREATE (LIBAVFORMAT_VERSION_MAJOR < 54)
#endif
#endif //AVFORMAT_VERSION_H
#endif /* AVFORMAT_VERSION_H */

View File

@ -63,4 +63,4 @@
#define av_assert2(cond) ((void)0)
#endif
#endif
#endif /* AVUTIL_AVASSERT_H */

View File

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

View File

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