mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Merge remote-tracking branch 'qatar/master'
* qatar/master: opt/eval: Include mathematics.h for NAN/INFINITY mathematics: Don't use division by zero in NAN/INFINITY macros wma: Lower the maximum number of channels to 2 x86: cpu: clean up check for cpuid instruction support ARM: generate position independent code to access data symbols Conflicts: libavutil/opt.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
5eb353e0cd
@ -26,8 +26,8 @@ function ff_ac3_bit_alloc_calc_bap_armv6, export=1
|
||||
beq 4f
|
||||
push {r4-r11,lr}
|
||||
add r5, sp, #40
|
||||
movrel r4, X(ff_ac3_bin_to_band_tab)
|
||||
movrel lr, X(ff_ac3_band_start_tab)
|
||||
movrelx r4, X(ff_ac3_bin_to_band_tab), r11
|
||||
movrelx lr, X(ff_ac3_band_start_tab)
|
||||
ldm r5, {r5-r7}
|
||||
ldrb r4, [r4, r2]
|
||||
add r1, r1, r2, lsl #1 @ psd + start
|
||||
|
@ -214,7 +214,7 @@ function fft\n\()_neon
|
||||
bl fft\n4\()_neon
|
||||
mov r0, r4
|
||||
pop {r4, lr}
|
||||
movrel r1, X(ff_cos_\n\()_fixed)
|
||||
movrelx r1, X(ff_cos_\n\()_fixed)
|
||||
mov r2, #\n4/2
|
||||
b fft_pass_neon
|
||||
endfunc
|
||||
|
@ -143,7 +143,7 @@ function fft16_neon
|
||||
vswp d29, d30 @ q14{r12,i12,i14,r15} q15{r13,i13,i15,r14}
|
||||
vadd.f32 q0, q12, q13 @ {t1,t2,t5,t6}
|
||||
vadd.f32 q1, q14, q15 @ {t1a,t2a,t5a,t6a}
|
||||
movrel r2, X(ff_cos_16)
|
||||
movrelx r2, X(ff_cos_16)
|
||||
vsub.f32 q13, q12, q13 @ {t3,t4,t7,t8}
|
||||
vrev64.32 d1, d1
|
||||
vsub.f32 q15, q14, q15 @ {t3a,t4a,t7a,t8a}
|
||||
@ -290,7 +290,7 @@ function fft\n\()_neon
|
||||
bl fft\n4\()_neon
|
||||
mov r0, r4
|
||||
pop {r4, lr}
|
||||
movrel r1, X(ff_cos_\n)
|
||||
movrelx r1, X(ff_cos_\n)
|
||||
mov r2, #\n4/2
|
||||
b fft_pass_neon
|
||||
endfunc
|
||||
|
@ -307,8 +307,8 @@ function ff_sbr_hf_apply_noise_0_neon, export=1
|
||||
vmov.i32 d3, #0
|
||||
.Lhf_apply_noise_0:
|
||||
push {r4,lr}
|
||||
movrelx r4, X(ff_sbr_noise_table)
|
||||
ldr r12, [sp, #12]
|
||||
movrel r4, X(ff_sbr_noise_table)
|
||||
add r3, r3, #1
|
||||
bfc r3, #9, #23
|
||||
sub r12, r12, #1
|
||||
@ -355,8 +355,8 @@ function ff_sbr_hf_apply_noise_1_neon, export=1
|
||||
eor lr, r12, #1<<31
|
||||
vmov d3, r12, lr
|
||||
.Lhf_apply_noise_1:
|
||||
movrelx r4, X(ff_sbr_noise_table)
|
||||
ldr r12, [sp, #12]
|
||||
movrel r4, X(ff_sbr_noise_table)
|
||||
add r3, r3, #1
|
||||
bfc r3, #9, #23
|
||||
sub r12, r12, #1
|
||||
|
@ -116,9 +116,8 @@ function vp3_idct_start_neon
|
||||
vadd.s16 q1, q8, q12
|
||||
vsub.s16 q8, q8, q12
|
||||
vld1.64 {d28-d31}, [r2,:128]!
|
||||
endfunc
|
||||
|
||||
function vp3_idct_core_neon
|
||||
vp3_idct_core_neon:
|
||||
vmull.s16 q2, d18, xC1S7 // (ip[1] * C1) << 16
|
||||
vmull.s16 q3, d19, xC1S7
|
||||
vmull.s16 q4, d2, xC4S4 // ((ip[0] + ip[4]) * C4) << 16
|
||||
|
@ -65,7 +65,7 @@ T orrcs \cw, \cw, \t1
|
||||
|
||||
function ff_decode_block_coeffs_armv6, export=1
|
||||
push {r0,r1,r4-r11,lr}
|
||||
movrel lr, X(ff_vp56_norm_shift)
|
||||
movrelx lr, X(ff_vp56_norm_shift)
|
||||
ldrd r4, r5, [sp, #44] @ token_prob, qmul
|
||||
cmp r3, #0
|
||||
ldr r11, [r5]
|
||||
@ -206,7 +206,7 @@ A orrcs r8, r8, r10, lsl r6
|
||||
mov r9, #8
|
||||
it ge
|
||||
addge r12, r12, #1
|
||||
movrel r4, X(ff_vp8_dct_cat_prob)
|
||||
movrelx r4, X(ff_vp8_dct_cat_prob), r1
|
||||
lsl r9, r9, r12
|
||||
ldr r4, [r4, r12, lsl #2]
|
||||
add r12, r9, #3
|
||||
|
@ -78,7 +78,7 @@ int ff_wma_init(AVCodecContext *avctx, int flags2)
|
||||
int coef_vlc_table;
|
||||
|
||||
if ( avctx->sample_rate <= 0 || avctx->sample_rate > 50000
|
||||
|| avctx->channels <= 0 || avctx->channels > 8
|
||||
|| avctx->channels <= 0 || avctx->channels > 2
|
||||
|| avctx->bit_rate <= 0)
|
||||
return -1;
|
||||
|
||||
|
@ -109,11 +109,6 @@ static int wma_decode_init(AVCodecContext * avctx)
|
||||
}
|
||||
}
|
||||
|
||||
if(avctx->channels > MAX_CHANNELS){
|
||||
av_log(avctx, AV_LOG_ERROR, "Invalid number of channels (%d)\n", avctx->channels);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(ff_wma_init(avctx, flags2)<0)
|
||||
return -1;
|
||||
|
||||
|
@ -62,7 +62,14 @@ ELF .eabi_attribute 25, \val
|
||||
.endm
|
||||
|
||||
.macro function name, export=0
|
||||
.set .Lpic_idx, 0
|
||||
.set .Lpic_gp, 0
|
||||
.macro endfunc
|
||||
.if .Lpic_idx
|
||||
.altmacro
|
||||
put_pic %(.Lpic_idx - 1)
|
||||
.noaltmacro
|
||||
.endif
|
||||
ELF .size \name, . - \name
|
||||
.endfunc
|
||||
.purgem endfunc
|
||||
@ -106,8 +113,44 @@ ELF .size \name, . - \name
|
||||
#endif
|
||||
.endm
|
||||
|
||||
.macro put_pic num
|
||||
put_pic_\num
|
||||
.endm
|
||||
|
||||
.macro do_def_pic num, val, label
|
||||
.macro put_pic_\num
|
||||
.if \num
|
||||
.altmacro
|
||||
put_pic %(\num - 1)
|
||||
.noaltmacro
|
||||
.endif
|
||||
\label: .word \val
|
||||
.purgem put_pic_\num
|
||||
.endm
|
||||
.endm
|
||||
|
||||
.macro def_pic val, label
|
||||
.altmacro
|
||||
do_def_pic %.Lpic_idx, \val, \label
|
||||
.noaltmacro
|
||||
.set .Lpic_idx, .Lpic_idx + 1
|
||||
.endm
|
||||
|
||||
.macro ldpic rd, val, indir=0
|
||||
ldr \rd, .Lpicoff\@
|
||||
.Lpic\@:
|
||||
.if \indir
|
||||
ldr \rd, [pc, \rd]
|
||||
.else
|
||||
add \rd, pc, \rd
|
||||
.endif
|
||||
def_pic \val - (.Lpic\@ + (8 >> CONFIG_THUMB)), .Lpicoff\@
|
||||
.endm
|
||||
|
||||
.macro movrel rd, val
|
||||
#if HAVE_ARMV6T2 && !CONFIG_PIC && !defined(__APPLE__)
|
||||
#if CONFIG_PIC
|
||||
ldpic \rd, \val
|
||||
#elif HAVE_ARMV6T2 && !defined(__APPLE__)
|
||||
movw \rd, #:lower16:\val
|
||||
movt \rd, #:upper16:\val
|
||||
#else
|
||||
@ -115,6 +158,34 @@ ELF .size \name, . - \name
|
||||
#endif
|
||||
.endm
|
||||
|
||||
.macro movrelx rd, val, gp
|
||||
#if CONFIG_PIC && defined(__ELF__)
|
||||
.ifnb \gp
|
||||
.if .Lpic_gp
|
||||
.unreq gp
|
||||
.endif
|
||||
gp .req \gp
|
||||
ldpic gp, _GLOBAL_OFFSET_TABLE_
|
||||
.elseif !.Lpic_gp
|
||||
gp .req r12
|
||||
ldpic gp, _GLOBAL_OFFSET_TABLE_
|
||||
.endif
|
||||
.set .Lpic_gp, 1
|
||||
ldr \rd, .Lpicoff\@
|
||||
ldr \rd, [gp, \rd]
|
||||
def_pic \val(GOT), .Lpicoff\@
|
||||
#elif CONFIG_PIC && defined(__APPLE__)
|
||||
ldpic \rd, .Lpic\@, indir=1
|
||||
.non_lazy_symbol_pointer
|
||||
.Lpic\@:
|
||||
.indirect_symbol \val
|
||||
.word 0
|
||||
.text
|
||||
#else
|
||||
movrel \rd, \val
|
||||
#endif
|
||||
.endm
|
||||
|
||||
.macro ldr_pre rt, rn, rm:vararg
|
||||
A ldr \rt, [\rn, \rm]!
|
||||
T add \rn, \rn, \rm
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "avutil.h"
|
||||
#include "eval.h"
|
||||
#include "log.h"
|
||||
#include "mathematics.h"
|
||||
|
||||
typedef struct Parser {
|
||||
const AVClass *class;
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include <math.h>
|
||||
#include "attributes.h"
|
||||
#include "rational.h"
|
||||
#include "intfloat.h"
|
||||
|
||||
#ifndef M_E
|
||||
#define M_E 2.7182818284590452354 /* e */
|
||||
@ -51,10 +52,10 @@
|
||||
#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */
|
||||
#endif
|
||||
#ifndef NAN
|
||||
#define NAN (0.0/0.0)
|
||||
#define NAN av_int2float(0x7fc00000)
|
||||
#endif
|
||||
#ifndef INFINITY
|
||||
#define INFINITY (1.0/0.0)
|
||||
#define INFINITY av_int2float(0x7f800000)
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "log.h"
|
||||
#include "parseutils.h"
|
||||
#include "pixdesc.h"
|
||||
#include "mathematics.h"
|
||||
|
||||
#if FF_API_FIND_OPT
|
||||
//FIXME order them and do a bin search
|
||||
|
Loading…
Reference in New Issue
Block a user