mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
dsputil_template: Move bits that are used templatized into separate file
This allows detemplatizing the bits that are not instantiated twice.
This commit is contained in:
parent
d3c3c1664a
commit
e7373585f8
@ -44,13 +44,14 @@
|
|||||||
uint32_t ff_square_tab[512] = { 0, };
|
uint32_t ff_square_tab[512] = { 0, };
|
||||||
|
|
||||||
#define BIT_DEPTH 16
|
#define BIT_DEPTH 16
|
||||||
#include "dsputil_template.c"
|
#include "dsputilenc_template.c"
|
||||||
#undef BIT_DEPTH
|
#undef BIT_DEPTH
|
||||||
|
|
||||||
#define BIT_DEPTH 8
|
#define BIT_DEPTH 8
|
||||||
#include "hpel_template.c"
|
#include "hpel_template.c"
|
||||||
#include "tpel_template.c"
|
#include "tpel_template.c"
|
||||||
#include "dsputil_template.c"
|
#include "dsputil_template.c"
|
||||||
|
#include "dsputilenc_template.c"
|
||||||
|
|
||||||
// 0x7f7f7f7f or 0x7f7f7f7f7f7f7f7f or whatever, depending on the cpu's native arithmetic size
|
// 0x7f7f7f7f or 0x7f7f7f7f7f7f7f7f or whatever, depending on the cpu's native arithmetic size
|
||||||
#define pb_7f (~0UL / 255 * 0x7f)
|
#define pb_7f (~0UL / 255 * 0x7f)
|
||||||
|
@ -31,7 +31,6 @@
|
|||||||
|
|
||||||
#include "bit_depth_template.c"
|
#include "bit_depth_template.c"
|
||||||
|
|
||||||
#if BIT_DEPTH == 8
|
|
||||||
/* draw the edges of width 'w' of an image of size width, height */
|
/* draw the edges of width 'w' of an image of size width, height */
|
||||||
// FIXME: Check that this is OK for MPEG-4 interlaced.
|
// FIXME: Check that this is OK for MPEG-4 interlaced.
|
||||||
static void FUNCC(draw_edges)(uint8_t *_buf, int _wrap, int width, int height,
|
static void FUNCC(draw_edges)(uint8_t *_buf, int _wrap, int width, int height,
|
||||||
@ -62,30 +61,7 @@ static void FUNCC(draw_edges)(uint8_t *_buf, int _wrap, int width, int height,
|
|||||||
memcpy(last_line + (i + 1) * wrap, last_line,
|
memcpy(last_line + (i + 1) * wrap, last_line,
|
||||||
(width + w + w) * sizeof(pixel));
|
(width + w + w) * sizeof(pixel));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void FUNCC(get_pixels)(int16_t *restrict block, const uint8_t *_pixels,
|
|
||||||
int line_size)
|
|
||||||
{
|
|
||||||
const pixel *pixels = (const pixel *) _pixels;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
/* read the pixels */
|
|
||||||
for (i = 0; i < 8; i++) {
|
|
||||||
block[0] = pixels[0];
|
|
||||||
block[1] = pixels[1];
|
|
||||||
block[2] = pixels[2];
|
|
||||||
block[3] = pixels[3];
|
|
||||||
block[4] = pixels[4];
|
|
||||||
block[5] = pixels[5];
|
|
||||||
block[6] = pixels[6];
|
|
||||||
block[7] = pixels[7];
|
|
||||||
pixels += line_size / sizeof(pixel);
|
|
||||||
block += 8;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if BIT_DEPTH == 8
|
|
||||||
static void FUNCC(clear_block)(int16_t *block)
|
static void FUNCC(clear_block)(int16_t *block)
|
||||||
{
|
{
|
||||||
memset(block, 0, sizeof(int16_t) * 64);
|
memset(block, 0, sizeof(int16_t) * 64);
|
||||||
@ -95,7 +71,6 @@ static void FUNCC(clear_blocks)(int16_t *blocks)
|
|||||||
{
|
{
|
||||||
memset(blocks, 0, sizeof(int16_t) * 6 * 64);
|
memset(blocks, 0, sizeof(int16_t) * 6 * 64);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#define PIXOP2(OPNAME, OP) \
|
#define PIXOP2(OPNAME, OP) \
|
||||||
static inline void FUNC(OPNAME ## _no_rnd_pixels8_l2)(uint8_t *dst, \
|
static inline void FUNC(OPNAME ## _no_rnd_pixels8_l2)(uint8_t *dst, \
|
||||||
@ -338,10 +313,8 @@ CALL_2X_PIXELS(FUNCC(OPNAME ## _pixels16_xy2), \
|
|||||||
|
|
||||||
#define op_avg(a, b) a = rnd_avg_pixel4(a, b)
|
#define op_avg(a, b) a = rnd_avg_pixel4(a, b)
|
||||||
#define op_put(a, b) a = b
|
#define op_put(a, b) a = b
|
||||||
#if BIT_DEPTH == 8
|
|
||||||
#define put_no_rnd_pixels8_8_c put_pixels8_8_c
|
#define put_no_rnd_pixels8_8_c put_pixels8_8_c
|
||||||
PIXOP2(avg, op_avg)
|
PIXOP2(avg, op_avg)
|
||||||
PIXOP2(put, op_put)
|
PIXOP2(put, op_put)
|
||||||
#endif
|
|
||||||
#undef op_avg
|
#undef op_avg
|
||||||
#undef op_put
|
#undef op_put
|
||||||
|
51
libavcodec/dsputilenc_template.c
Normal file
51
libavcodec/dsputilenc_template.c
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* DSP utils
|
||||||
|
* Copyright (c) 2000, 2001 Fabrice Bellard
|
||||||
|
* Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* gmc & q-pel & 32/64 bit based MC by Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* DSP utils
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "bit_depth_template.c"
|
||||||
|
|
||||||
|
static void FUNCC(get_pixels)(int16_t *restrict block, const uint8_t *_pixels,
|
||||||
|
int line_size)
|
||||||
|
{
|
||||||
|
const pixel *pixels = (const pixel *) _pixels;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* read the pixels */
|
||||||
|
for (i = 0; i < 8; i++) {
|
||||||
|
block[0] = pixels[0];
|
||||||
|
block[1] = pixels[1];
|
||||||
|
block[2] = pixels[2];
|
||||||
|
block[3] = pixels[3];
|
||||||
|
block[4] = pixels[4];
|
||||||
|
block[5] = pixels[5];
|
||||||
|
block[6] = pixels[6];
|
||||||
|
block[7] = pixels[7];
|
||||||
|
pixels += line_size / sizeof(pixel);
|
||||||
|
block += 8;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user