| @@ -21,7 +21,7 @@ | |||||
| #include "libavutil/arm/cpu.h" | #include "libavutil/arm/cpu.h" | ||||
| #include "libavutil/attributes.h" | #include "libavutil/attributes.h" | ||||
| #include "libavcodec/rnd_avg.h" | |||||
| #include "libavcodec/pixels.h" | |||||
| #include "hpeldsp_arm.h" | #include "hpeldsp_arm.h" | ||||
| void ff_put_pixels8_arm(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int 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 | #define AVCODEC_DSPUTIL_H | ||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| #include "rnd_avg.h" | |||||
| /* encoding scans */ | /* encoding scans */ | ||||
| extern const uint8_t ff_alternate_horizontal_scan[64]; | 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]; | 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_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_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); | void ff_put_pixels16x16_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride); | ||||
| @@ -27,6 +27,8 @@ | |||||
| * DSP utils | * DSP utils | ||||
| */ | */ | ||||
| #include "pixels.h" | |||||
| #include "bit_depth_template.c" | #include "bit_depth_template.c" | ||||
| #if BIT_DEPTH == 8 | #if BIT_DEPTH == 8 | ||||
| @@ -19,6 +19,8 @@ | |||||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
| */ | */ | ||||
| #include "pixels.h" | |||||
| #define DEF_HPEL(OPNAME, OP) \ | #define DEF_HPEL(OPNAME, OP) \ | ||||
| static inline void FUNCC(OPNAME ## _pixels2)(uint8_t *block, \ | static inline void FUNCC(OPNAME ## _pixels2)(uint8_t *block, \ | ||||
| const uint8_t *pixels, \ | const uint8_t *pixels, \ | ||||
| @@ -28,6 +28,8 @@ | |||||
| * Half-pel DSP functions | * Half-pel DSP functions | ||||
| */ | */ | ||||
| #include "pixels.h" | |||||
| #include "bit_depth_template.c" | #include "bit_depth_template.c" | ||||
| #include "hpel_template.c" | #include "hpel_template.c" | ||||
| @@ -0,0 +1,37 @@ | |||||
| /* | |||||
| * 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 | |||||
| */ | |||||
| #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 */ | |||||
| @@ -22,14 +22,6 @@ | |||||
| #include <stddef.h> | #include <stddef.h> | ||||
| #include <stdint.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_VEC32(c) ((c) * 0x01010101UL) | ||||
| #define BYTE_VEC64(c) ((c) * 0x0001000100010001UL) | #define BYTE_VEC64(c) ((c) * 0x0001000100010001UL) | ||||
| @@ -24,6 +24,7 @@ | |||||
| #include "libavutil/x86/cpu.h" | #include "libavutil/x86/cpu.h" | ||||
| #include "libavcodec/avcodec.h" | #include "libavcodec/avcodec.h" | ||||
| #include "libavcodec/dsputil.h" | #include "libavcodec/dsputil.h" | ||||
| #include "libavcodec/pixels.h" | |||||
| #include "libavcodec/simple_idct.h" | #include "libavcodec/simple_idct.h" | ||||
| #include "libavcodec/version.h" | #include "libavcodec/version.h" | ||||
| #include "dsputil_x86.h" | #include "dsputil_x86.h" | ||||
| @@ -107,8 +108,8 @@ void ff_vector_clip_int32_sse4(int32_t *dst, const int32_t *src, | |||||
| #if HAVE_YASM | #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) \ | #define QPEL_OP(OPNAME, RND, MMX) \ | ||||
| static void OPNAME ## qpel8_mc00_ ## MMX(uint8_t *dst, uint8_t *src, \ | static void OPNAME ## qpel8_mc00_ ## MMX(uint8_t *dst, uint8_t *src, \ | ||||
| @@ -91,16 +91,4 @@ void ff_put_pixels8_xy2_mmx(uint8_t *block, const uint8_t *pixels, | |||||
| void ff_put_pixels16_xy2_mmx(uint8_t *block, const uint8_t *pixels, | void ff_put_pixels16_xy2_mmx(uint8_t *block, const uint8_t *pixels, | ||||
| ptrdiff_t line_size, int h); | ptrdiff_t line_size, int h); | ||||
| #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 */ | #endif /* AVCODEC_X86_DSPUTIL_X86_H */ | ||||
| @@ -25,6 +25,7 @@ | |||||
| #include "libavutil/x86/cpu.h" | #include "libavutil/x86/cpu.h" | ||||
| #include "libavcodec/h264qpel.h" | #include "libavcodec/h264qpel.h" | ||||
| #include "libavcodec/mpegvideo.h" | #include "libavcodec/mpegvideo.h" | ||||
| #include "libavcodec/pixels.h" | |||||
| #include "dsputil_x86.h" | #include "dsputil_x86.h" | ||||
| #if HAVE_YASM | #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_put_pixels16_l2_sse2 ff_put_pixels16_l2_mmxext | ||||
| #define ff_avg_pixels16_l2_sse2 ff_avg_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)\ | #define DEF_QPEL(OPNAME)\ | ||||
| void ff_ ## OPNAME ## _h264_qpel4_h_lowpass_mmxext(uint8_t *dst, uint8_t *src, int dstStride, int srcStride);\ | 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 "libavutil/x86/cpu.h" | ||||
| #include "libavcodec/avcodec.h" | #include "libavcodec/avcodec.h" | ||||
| #include "libavcodec/hpeldsp.h" | #include "libavcodec/hpeldsp.h" | ||||
| #include "libavcodec/pixels.h" | |||||
| #include "dsputil_x86.h" | #include "dsputil_x86.h" | ||||
| void ff_put_pixels8_x2_mmxext(uint8_t *block, const uint8_t *pixels, | 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 PAVGB | ||||
| #undef STATIC | #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 */ | /* MMX rounding */ | ||||
| @@ -130,22 +131,22 @@ PIXELS16(static, put_no_rnd, , _xy2, _mmx) | |||||
| #undef PAVGBP | #undef PAVGBP | ||||
| #undef PAVGB | #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 */ | #endif /* HAVE_INLINE_ASM */ | ||||
| #if HAVE_YASM | #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(_3dnow) | ||||
| HPELDSP_AVG_PIXELS16(_mmxext) | HPELDSP_AVG_PIXELS16(_mmxext) | ||||
| @@ -17,6 +17,7 @@ | |||||
| */ | */ | ||||
| #include "config.h" | #include "config.h" | ||||
| #include "libavcodec/pixels.h" | |||||
| #include "dsputil_x86.h" | #include "dsputil_x86.h" | ||||
| #include "inline_asm.h" | #include "inline_asm.h" | ||||
| @@ -30,7 +31,7 @@ | |||||
| #include "rnd_template.c" | #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 */ | #endif /* HAVE_INLINE_ASM */ | ||||