mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-27 13:30:45 +00:00
Merge commit '322a1dda973e802db7b57f2007fad3efcd5bab81'
* commit '322a1dda973e802db7b57f2007fad3efcd5bab81': dsputil: Refactor duplicated CALL_2X_PIXELS / PIXELS16 macros Conflicts: libavcodec/arm/hpeldsp_init_arm.c libavcodec/x86/dsputil_x86.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
77bc342975
@ -21,8 +21,7 @@
|
||||
|
||||
#include "libavutil/arm/cpu.h"
|
||||
#include "libavutil/attributes.h"
|
||||
#include "libavcodec/bit_depth_template.c" // for CALL_2X_PIXELS
|
||||
#include "libavcodec/rnd_avg.h"
|
||||
#include "libavcodec/pixels.h"
|
||||
#include "hpeldsp_arm.h"
|
||||
|
||||
void ff_put_pixels8_arm(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h);
|
||||
|
@ -31,7 +31,6 @@
|
||||
#define AVCODEC_DSPUTIL_H
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "rnd_avg.h"
|
||||
|
||||
/* encoding scans */
|
||||
extern const uint8_t ff_alternate_horizontal_scan[64];
|
||||
@ -40,7 +39,6 @@ extern const uint8_t ff_zigzag248_direct[64];
|
||||
|
||||
extern uint32_t ff_square_tab[512];
|
||||
|
||||
/* pixel operations */
|
||||
void ff_put_pixels8x8_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride);
|
||||
void ff_avg_pixels8x8_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride);
|
||||
void ff_put_pixels16x16_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride);
|
||||
|
@ -27,6 +27,8 @@
|
||||
* DSP utils
|
||||
*/
|
||||
|
||||
#include "pixels.h"
|
||||
|
||||
#include "bit_depth_template.c"
|
||||
|
||||
#if BIT_DEPTH == 8
|
||||
|
@ -19,6 +19,8 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "pixels.h"
|
||||
|
||||
#define DEF_HPEL(OPNAME, OP) \
|
||||
static inline void FUNCC(OPNAME ## _pixels2)(uint8_t *block, \
|
||||
const uint8_t *pixels, \
|
||||
|
@ -28,6 +28,8 @@
|
||||
* Half-pel DSP functions
|
||||
*/
|
||||
|
||||
#include "pixels.h"
|
||||
|
||||
#include "bit_depth_template.c"
|
||||
|
||||
#include "hpel_template.c"
|
||||
|
37
libavcodec/pixels.h
Normal file
37
libavcodec/pixels.h
Normal file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_PIXELS_H
|
||||
#define AVCODEC_PIXELS_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/* pixel operations */
|
||||
#define CALL_2X_PIXELS_MACRO(STATIC, a, b, n) \
|
||||
STATIC void a(uint8_t *block, const uint8_t *pixels, \
|
||||
ptrdiff_t line_size, int h) \
|
||||
{ \
|
||||
b(block, pixels, line_size, h); \
|
||||
b(block + n, pixels + n, line_size, h); \
|
||||
}
|
||||
|
||||
#define CALL_2X_PIXELS(a, b, n) CALL_2X_PIXELS_MACRO(static, a, b, n)
|
||||
#define CALL_2X_PIXELS_EXPORT(a, b, n) CALL_2X_PIXELS_MACRO(, a, b, n)
|
||||
|
||||
#endif /* AVCODEC_PIXELS_H */
|
@ -25,14 +25,6 @@
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define CALL_2X_PIXELS(a, b, n) \
|
||||
static void a(uint8_t *block, const uint8_t *pixels, \
|
||||
ptrdiff_t line_size, int h) \
|
||||
{ \
|
||||
b(block, pixels, line_size, h); \
|
||||
b(block + n, pixels + n, line_size, h); \
|
||||
}
|
||||
|
||||
#define BYTE_VEC32(c) ((c) * 0x01010101UL)
|
||||
#define BYTE_VEC64(c) ((c) * 0x0001000100010001UL)
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "libavutil/x86/cpu.h"
|
||||
#include "libavcodec/avcodec.h"
|
||||
#include "libavcodec/dsputil.h"
|
||||
#include "libavcodec/pixels.h"
|
||||
#include "libavcodec/simple_idct.h"
|
||||
#include "libavcodec/version.h"
|
||||
#include "dsputil_x86.h"
|
||||
@ -110,8 +111,8 @@ void ff_vector_clip_int32_sse4(int32_t *dst, const int32_t *src,
|
||||
|
||||
#if HAVE_YASM
|
||||
|
||||
PIXELS16(static, ff_avg, , , _mmxext)
|
||||
PIXELS16(static, ff_put, , , _mmxext)
|
||||
CALL_2X_PIXELS(ff_avg_pixels16_mmxext, ff_avg_pixels8_mmxext, 8)
|
||||
CALL_2X_PIXELS(ff_put_pixels16_mmxext, ff_put_pixels8_mmxext, 8)
|
||||
|
||||
#define QPEL_OP(OPNAME, RND, MMX) \
|
||||
static void OPNAME ## qpel8_mc00_ ## MMX(uint8_t *dst, uint8_t *src, \
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/cpu.h"
|
||||
#include "libavutil/x86/asm.h"
|
||||
#include "libavcodec/pixels.h"
|
||||
#include "libavcodec/videodsp.h"
|
||||
#include "constants.h"
|
||||
#include "diracdsp_mmx.h"
|
||||
@ -554,7 +555,7 @@ void ff_ ## OPNAME2 ## _dirac_pixels32_ ## EXT(uint8_t *dst, const uint8_t *src[
|
||||
}
|
||||
|
||||
#if HAVE_MMX_INLINE
|
||||
PIXELS16(static, ff_avg, , , _mmxext)
|
||||
CALL_2X_PIXELS(ff_avg_pixels16_mmxext, ff_avg_pixels8_mmxext, 8)
|
||||
DIRAC_PIXOP(put, ff_put, mmx)
|
||||
DIRAC_PIXOP(avg, ff_avg, mmx)
|
||||
#endif
|
||||
|
@ -100,16 +100,4 @@ void ff_put_pixels16_xy2_mmx(uint8_t *block, const uint8_t *pixels,
|
||||
void ff_mmx_idct(int16_t *block);
|
||||
void ff_mmxext_idct(int16_t *block);
|
||||
|
||||
#define PIXELS16(STATIC, PFX1, PFX2, TYPE, CPUEXT) \
|
||||
STATIC void PFX1 ## _pixels16 ## TYPE ## CPUEXT(uint8_t *block, \
|
||||
const uint8_t *pixels, \
|
||||
ptrdiff_t line_size, \
|
||||
int h) \
|
||||
{ \
|
||||
PFX2 ## PFX1 ## _pixels8 ## TYPE ## CPUEXT(block, pixels, \
|
||||
line_size, h); \
|
||||
PFX2 ## PFX1 ## _pixels8 ## TYPE ## CPUEXT(block + 8, pixels + 8, \
|
||||
line_size, h); \
|
||||
}
|
||||
|
||||
#endif /* AVCODEC_X86_DSPUTIL_X86_H */
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "libavutil/x86/cpu.h"
|
||||
#include "libavcodec/h264qpel.h"
|
||||
#include "libavcodec/mpegvideo.h"
|
||||
#include "libavcodec/pixels.h"
|
||||
#include "dsputil_x86.h"
|
||||
|
||||
#if HAVE_YASM
|
||||
@ -49,8 +50,8 @@ void ff_avg_pixels16_l2_mmxext(uint8_t *dst, uint8_t *src1, uint8_t *src2,
|
||||
#define ff_put_pixels16_l2_sse2 ff_put_pixels16_l2_mmxext
|
||||
#define ff_avg_pixels16_l2_sse2 ff_avg_pixels16_l2_mmxext
|
||||
|
||||
PIXELS16(static, ff_avg, , , _mmxext)
|
||||
PIXELS16(static, ff_put, , , _mmxext)
|
||||
CALL_2X_PIXELS(ff_avg_pixels16_mmxext, ff_avg_pixels8_mmxext, 8)
|
||||
CALL_2X_PIXELS(ff_put_pixels16_mmxext, ff_avg_pixels8_mmxext, 8)
|
||||
|
||||
#define DEF_QPEL(OPNAME)\
|
||||
void ff_ ## OPNAME ## _h264_qpel4_h_lowpass_mmxext(uint8_t *dst, uint8_t *src, int dstStride, int srcStride);\
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "libavutil/x86/cpu.h"
|
||||
#include "libavcodec/avcodec.h"
|
||||
#include "libavcodec/hpeldsp.h"
|
||||
#include "libavcodec/pixels.h"
|
||||
#include "dsputil_x86.h"
|
||||
|
||||
void ff_put_pixels8_x2_mmxext(uint8_t *block, const uint8_t *pixels,
|
||||
@ -109,11 +110,11 @@ void ff_avg_pixels8_xy2_3dnow(uint8_t *block, const uint8_t *pixels,
|
||||
#undef PAVGB
|
||||
#undef STATIC
|
||||
|
||||
PIXELS16(static, avg_no_rnd, , _y2, _mmx)
|
||||
PIXELS16(static, put_no_rnd, , _y2, _mmx)
|
||||
CALL_2X_PIXELS(avg_no_rnd_pixels16_y2_mmx, avg_no_rnd_pixels8_y2_mmx, 8)
|
||||
CALL_2X_PIXELS(put_no_rnd_pixels16_y2_mmx, put_no_rnd_pixels8_y2_mmx, 8)
|
||||
|
||||
PIXELS16(static, avg_no_rnd, , _xy2, _mmx)
|
||||
PIXELS16(static, put_no_rnd, , _xy2, _mmx)
|
||||
CALL_2X_PIXELS(avg_no_rnd_pixels16_xy2_mmx, avg_no_rnd_pixels8_xy2_mmx, 8)
|
||||
CALL_2X_PIXELS(put_no_rnd_pixels16_xy2_mmx, put_no_rnd_pixels8_xy2_mmx, 8)
|
||||
|
||||
/***********************************/
|
||||
/* MMX rounding */
|
||||
@ -130,22 +131,22 @@ PIXELS16(static, put_no_rnd, , _xy2, _mmx)
|
||||
#undef PAVGBP
|
||||
#undef PAVGB
|
||||
|
||||
PIXELS16(static, avg, , _y2, _mmx)
|
||||
PIXELS16(static, put, , _y2, _mmx)
|
||||
CALL_2X_PIXELS(avg_pixels16_y2_mmx, avg_pixels8_y2_mmx, 8)
|
||||
CALL_2X_PIXELS(put_pixels16_y2_mmx, put_pixels8_y2_mmx, 8)
|
||||
|
||||
#endif /* HAVE_INLINE_ASM */
|
||||
|
||||
|
||||
#if HAVE_YASM
|
||||
|
||||
#define HPELDSP_AVG_PIXELS16(CPUEXT) \
|
||||
PIXELS16(static, put_no_rnd, ff_, _x2, CPUEXT) \
|
||||
PIXELS16(static, put, ff_, _y2, CPUEXT) \
|
||||
PIXELS16(static, put_no_rnd, ff_, _y2, CPUEXT) \
|
||||
PIXELS16(static, avg, ff_, , CPUEXT) \
|
||||
PIXELS16(static, avg, ff_, _x2, CPUEXT) \
|
||||
PIXELS16(static, avg, ff_, _y2, CPUEXT) \
|
||||
PIXELS16(static, avg, ff_, _xy2, CPUEXT)
|
||||
#define HPELDSP_AVG_PIXELS16(CPUEXT) \
|
||||
CALL_2X_PIXELS(put_no_rnd_pixels16_x2 ## CPUEXT, ff_put_no_rnd_pixels8_x2 ## CPUEXT, 8) \
|
||||
CALL_2X_PIXELS(put_pixels16_y2 ## CPUEXT, ff_put_pixels8_y2 ## CPUEXT, 8) \
|
||||
CALL_2X_PIXELS(put_no_rnd_pixels16_y2 ## CPUEXT, ff_put_no_rnd_pixels8_y2 ## CPUEXT, 8) \
|
||||
CALL_2X_PIXELS(avg_pixels16 ## CPUEXT, ff_avg_pixels8 ## CPUEXT, 8) \
|
||||
CALL_2X_PIXELS(avg_pixels16_x2 ## CPUEXT, ff_avg_pixels8_x2 ## CPUEXT, 8) \
|
||||
CALL_2X_PIXELS(avg_pixels16_y2 ## CPUEXT, ff_avg_pixels8_y2 ## CPUEXT, 8) \
|
||||
CALL_2X_PIXELS(avg_pixels16_xy2 ## CPUEXT, ff_avg_pixels8_xy2 ## CPUEXT, 8)
|
||||
|
||||
HPELDSP_AVG_PIXELS16(_3dnow)
|
||||
HPELDSP_AVG_PIXELS16(_mmxext)
|
||||
|
@ -17,6 +17,7 @@
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "libavcodec/pixels.h"
|
||||
#include "dsputil_x86.h"
|
||||
#include "inline_asm.h"
|
||||
|
||||
@ -30,7 +31,7 @@
|
||||
|
||||
#include "rnd_template.c"
|
||||
|
||||
PIXELS16(, ff_avg, , _xy2, _mmx)
|
||||
PIXELS16(, ff_put, , _xy2, _mmx)
|
||||
CALL_2X_PIXELS_EXPORT(ff_avg_pixels16_xy2_mmx, ff_avg_pixels8_xy2_mmx, 8)
|
||||
CALL_2X_PIXELS_EXPORT(ff_put_pixels16_xy2_mmx, ff_put_pixels8_xy2_mmx, 8)
|
||||
|
||||
#endif /* HAVE_INLINE_ASM */
|
||||
|
Loading…
Reference in New Issue
Block a user