mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-28 10:22:10 +00:00
Merge commit '95c0cec03acec0a80cc1c7db48f3b2355d9e767b'
* commit '95c0cec03acec0a80cc1c7db48f3b2355d9e767b': idctdsp: Add global function pointers for {add|put}_pixels_clamped functions Conflicts: libavcodec/arm/idctdsp_init_arm.c libavcodec/dct.h libavcodec/idctdsp.c libavcodec/jrevdct.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
5db23c07a3
@ -29,10 +29,6 @@
|
||||
#include "idct.h"
|
||||
#include "idctdsp_arm.h"
|
||||
|
||||
/* XXX: local hack */
|
||||
static void (*put_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
|
||||
static void (*add_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
|
||||
|
||||
void ff_add_pixels_clamped_arm(const int16_t *block, uint8_t *dest,
|
||||
int line_size);
|
||||
|
||||
@ -41,25 +37,25 @@ void ff_add_pixels_clamped_arm(const int16_t *block, uint8_t *dest,
|
||||
static void j_rev_dct_arm_put(uint8_t *dest, int line_size, int16_t *block)
|
||||
{
|
||||
ff_j_rev_dct_arm(block);
|
||||
put_pixels_clamped(block, dest, line_size);
|
||||
ff_put_pixels_clamped(block, dest, line_size);
|
||||
}
|
||||
|
||||
static void j_rev_dct_arm_add(uint8_t *dest, int line_size, int16_t *block)
|
||||
{
|
||||
ff_j_rev_dct_arm(block);
|
||||
add_pixels_clamped(block, dest, line_size);
|
||||
ff_add_pixels_clamped(block, dest, line_size);
|
||||
}
|
||||
|
||||
static void simple_idct_arm_put(uint8_t *dest, int line_size, int16_t *block)
|
||||
{
|
||||
ff_simple_idct_arm(block);
|
||||
put_pixels_clamped(block, dest, line_size);
|
||||
ff_put_pixels_clamped(block, dest, line_size);
|
||||
}
|
||||
|
||||
static void simple_idct_arm_add(uint8_t *dest, int line_size, int16_t *block)
|
||||
{
|
||||
ff_simple_idct_arm(block);
|
||||
add_pixels_clamped(block, dest, line_size);
|
||||
ff_add_pixels_clamped(block, dest, line_size);
|
||||
}
|
||||
|
||||
av_cold void ff_idctdsp_init_arm(IDCTDSPContext *c, AVCodecContext *avctx,
|
||||
@ -67,9 +63,6 @@ av_cold void ff_idctdsp_init_arm(IDCTDSPContext *c, AVCodecContext *avctx,
|
||||
{
|
||||
int cpu_flags = av_get_cpu_flags();
|
||||
|
||||
put_pixels_clamped = c->put_pixels_clamped;
|
||||
add_pixels_clamped = c->add_pixels_clamped;
|
||||
|
||||
if (!avctx->lowres && !high_bit_depth) {
|
||||
if ((avctx->idct_algo == FF_IDCT_AUTO && !(avctx->flags & CODEC_FLAG_BITEXACT)) ||
|
||||
avctx->idct_algo == FF_IDCT_ARM) {
|
||||
|
@ -62,5 +62,7 @@ void ff_j_rev_dct(int16_t *data);
|
||||
void ff_j_rev_dct4(int16_t *data);
|
||||
void ff_j_rev_dct2(int16_t *data);
|
||||
void ff_j_rev_dct1(int16_t *data);
|
||||
void ff_jref_idct_put(uint8_t *dest, int line_size, int16_t *block);
|
||||
void ff_jref_idct_add(uint8_t *dest, int line_size, int16_t *block);
|
||||
|
||||
#endif /* AVCODEC_DCT_H */
|
||||
|
@ -80,8 +80,11 @@ av_cold void ff_init_scantable_permutation(uint8_t *idct_permutation,
|
||||
}
|
||||
}
|
||||
|
||||
void ff_put_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels,
|
||||
int line_size)
|
||||
void (*ff_put_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
|
||||
void (*ff_add_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
|
||||
|
||||
static void put_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels,
|
||||
int line_size)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -154,8 +157,8 @@ static void put_signed_pixels_clamped_c(const int16_t *block,
|
||||
}
|
||||
}
|
||||
|
||||
void ff_add_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels,
|
||||
int line_size)
|
||||
static void add_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels,
|
||||
int line_size)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -204,17 +207,6 @@ static void add_pixels_clamped2_c(const int16_t *block, uint8_t *av_restrict pix
|
||||
}
|
||||
}
|
||||
|
||||
static void jref_idct_put(uint8_t *dest, int line_size, int16_t *block)
|
||||
{
|
||||
ff_j_rev_dct(block);
|
||||
ff_put_pixels_clamped(block, dest, line_size);
|
||||
}
|
||||
|
||||
static void jref_idct_add(uint8_t *dest, int line_size, int16_t *block)
|
||||
{
|
||||
ff_j_rev_dct(block);
|
||||
ff_add_pixels_clamped(block, dest, line_size);
|
||||
}
|
||||
static void ff_jref_idct4_put(uint8_t *dest, int line_size, int16_t *block)
|
||||
{
|
||||
ff_j_rev_dct4 (block);
|
||||
@ -278,8 +270,8 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
|
||||
c->perm_type = FF_IDCT_PERM_NONE;
|
||||
} else {
|
||||
if (avctx->idct_algo == FF_IDCT_INT) {
|
||||
c->idct_put = jref_idct_put;
|
||||
c->idct_add = jref_idct_add;
|
||||
c->idct_put = ff_jref_idct_put;
|
||||
c->idct_add = ff_jref_idct_add;
|
||||
c->idct = ff_j_rev_dct;
|
||||
c->perm_type = FF_IDCT_PERM_LIBMPEG2;
|
||||
} else if (avctx->idct_algo == FF_IDCT_FAAN) {
|
||||
@ -296,9 +288,12 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
|
||||
}
|
||||
}
|
||||
|
||||
c->put_pixels_clamped = ff_put_pixels_clamped;
|
||||
c->put_pixels_clamped = put_pixels_clamped_c;
|
||||
c->put_signed_pixels_clamped = put_signed_pixels_clamped_c;
|
||||
c->add_pixels_clamped = ff_add_pixels_clamped;
|
||||
c->add_pixels_clamped = add_pixels_clamped_c;
|
||||
|
||||
ff_put_pixels_clamped = c->put_pixels_clamped;
|
||||
ff_add_pixels_clamped = c->add_pixels_clamped;
|
||||
|
||||
if (CONFIG_MPEG4_DECODER && avctx->idct_algo == FF_IDCT_XVID)
|
||||
ff_xvid_idct_init(c, avctx);
|
||||
|
@ -48,11 +48,6 @@ void ff_init_scantable_permutation(uint8_t *idct_permutation,
|
||||
int ff_init_scantable_permutation_x86(uint8_t *idct_permutation,
|
||||
enum idct_permutation_type perm_type);
|
||||
|
||||
void ff_put_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels,
|
||||
int line_size);
|
||||
void ff_add_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels,
|
||||
int line_size);
|
||||
|
||||
typedef struct IDCTDSPContext {
|
||||
/* pixel ops : interface with DCT */
|
||||
void (*put_pixels_clamped)(const int16_t *block /* align 16 */,
|
||||
@ -100,6 +95,9 @@ typedef struct IDCTDSPContext {
|
||||
enum idct_permutation_type perm_type;
|
||||
} IDCTDSPContext;
|
||||
|
||||
extern void (*ff_put_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
|
||||
extern void (*ff_add_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
|
||||
|
||||
void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx);
|
||||
|
||||
void ff_idctdsp_init_alpha(IDCTDSPContext *c, AVCodecContext *avctx,
|
||||
|
@ -63,7 +63,9 @@
|
||||
*/
|
||||
|
||||
#include "libavutil/common.h"
|
||||
|
||||
#include "dct.h"
|
||||
#include "idctdsp.h"
|
||||
|
||||
#define EIGHT_BIT_SAMPLES
|
||||
|
||||
@ -1153,3 +1155,15 @@ void ff_j_rev_dct1(DCTBLOCK data){
|
||||
|
||||
#undef FIX
|
||||
#undef CONST_BITS
|
||||
|
||||
void ff_jref_idct_put(uint8_t *dest, int line_size, int16_t *block)
|
||||
{
|
||||
ff_j_rev_dct(block);
|
||||
ff_put_pixels_clamped(block, dest, line_size);
|
||||
}
|
||||
|
||||
void ff_jref_idct_add(uint8_t *dest, int line_size, int16_t *block)
|
||||
{
|
||||
ff_j_rev_dct(block);
|
||||
ff_add_pixels_clamped(block, dest, line_size);
|
||||
}
|
||||
|
@ -22,6 +22,9 @@
|
||||
|
||||
#include "libavutil/mem.h"
|
||||
#include "libavutil/x86/asm.h"
|
||||
|
||||
#include "libavcodec/idctdsp.h"
|
||||
|
||||
#include "idctdsp.h"
|
||||
#include "simple_idct.h"
|
||||
|
||||
@ -1159,12 +1162,12 @@ void ff_simple_idct_mmx(int16_t *block)
|
||||
void ff_simple_idct_put_mmx(uint8_t *dest, int line_size, int16_t *block)
|
||||
{
|
||||
idct(block);
|
||||
ff_put_pixels_clamped_mmx(block, dest, line_size);
|
||||
ff_put_pixels_clamped(block, dest, line_size);
|
||||
}
|
||||
void ff_simple_idct_add_mmx(uint8_t *dest, int line_size, int16_t *block)
|
||||
{
|
||||
idct(block);
|
||||
ff_add_pixels_clamped_mmx(block, dest, line_size);
|
||||
ff_add_pixels_clamped(block, dest, line_size);
|
||||
}
|
||||
|
||||
#endif /* HAVE_INLINE_ASM */
|
||||
|
Loading…
Reference in New Issue
Block a user