|
|
@ -22,6 +22,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
#include "libavcodec/avcodec.h" |
|
|
|
#include "libavcodec/avcodec.h" |
|
|
|
#include "libavcodec/rv34dsp.h" |
|
|
|
#include "libavcodec/rv34dsp.h" |
|
|
|
|
|
|
|
#include "libavutil/arm/cpu.h" |
|
|
|
|
|
|
|
|
|
|
|
#define DECL_QPEL3(type, w, pos) \ |
|
|
|
#define DECL_QPEL3(type, w, pos) \ |
|
|
|
void ff_##type##_rv40_qpel##w##_mc##pos##_neon(uint8_t *dst, uint8_t *src,\
|
|
|
|
void ff_##type##_rv40_qpel##w##_mc##pos##_neon(uint8_t *dst, uint8_t *src,\
|
|
|
@ -68,7 +69,7 @@ void ff_rv40_v_weak_loop_filter_neon(uint8_t *src, ptrdiff_t stride, int filter_ |
|
|
|
int filter_q1, int alpha, int beta, |
|
|
|
int filter_q1, int alpha, int beta, |
|
|
|
int lim_p0q0, int lim_q1, int lim_p1); |
|
|
|
int lim_p0q0, int lim_q1, int lim_p1); |
|
|
|
|
|
|
|
|
|
|
|
void ff_rv40dsp_init_neon(RV34DSPContext *c, DSPContext* dsp) |
|
|
|
static void ff_rv40dsp_init_neon(RV34DSPContext *c) |
|
|
|
{ |
|
|
|
{ |
|
|
|
c->put_pixels_tab[0][ 1] = ff_put_rv40_qpel16_mc10_neon; |
|
|
|
c->put_pixels_tab[0][ 1] = ff_put_rv40_qpel16_mc10_neon; |
|
|
|
c->put_pixels_tab[0][ 3] = ff_put_rv40_qpel16_mc30_neon; |
|
|
|
c->put_pixels_tab[0][ 3] = ff_put_rv40_qpel16_mc30_neon; |
|
|
@ -136,3 +137,11 @@ void ff_rv40dsp_init_neon(RV34DSPContext *c, DSPContext* dsp) |
|
|
|
c->rv40_weak_loop_filter[0] = ff_rv40_h_weak_loop_filter_neon; |
|
|
|
c->rv40_weak_loop_filter[0] = ff_rv40_h_weak_loop_filter_neon; |
|
|
|
c->rv40_weak_loop_filter[1] = ff_rv40_v_weak_loop_filter_neon; |
|
|
|
c->rv40_weak_loop_filter[1] = ff_rv40_v_weak_loop_filter_neon; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ff_rv40dsp_init_arm(RV34DSPContext *c, DSPContext* dsp) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
int cpu_flags = av_get_cpu_flags(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (have_neon(cpu_flags)) |
|
|
|
|
|
|
|
ff_rv40dsp_init_neon(c); |
|
|
|
|
|
|
|
} |