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 "idct.h"
|
||||||
#include "idctdsp_arm.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,
|
void ff_add_pixels_clamped_arm(const int16_t *block, uint8_t *dest,
|
||||||
int line_size);
|
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)
|
static void j_rev_dct_arm_put(uint8_t *dest, int line_size, int16_t *block)
|
||||||
{
|
{
|
||||||
ff_j_rev_dct_arm(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)
|
static void j_rev_dct_arm_add(uint8_t *dest, int line_size, int16_t *block)
|
||||||
{
|
{
|
||||||
ff_j_rev_dct_arm(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)
|
static void simple_idct_arm_put(uint8_t *dest, int line_size, int16_t *block)
|
||||||
{
|
{
|
||||||
ff_simple_idct_arm(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)
|
static void simple_idct_arm_add(uint8_t *dest, int line_size, int16_t *block)
|
||||||
{
|
{
|
||||||
ff_simple_idct_arm(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,
|
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();
|
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->lowres && !high_bit_depth) {
|
||||||
if ((avctx->idct_algo == FF_IDCT_AUTO && !(avctx->flags & CODEC_FLAG_BITEXACT)) ||
|
if ((avctx->idct_algo == FF_IDCT_AUTO && !(avctx->flags & CODEC_FLAG_BITEXACT)) ||
|
||||||
avctx->idct_algo == FF_IDCT_ARM) {
|
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_dct4(int16_t *data);
|
||||||
void ff_j_rev_dct2(int16_t *data);
|
void ff_j_rev_dct2(int16_t *data);
|
||||||
void ff_j_rev_dct1(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 */
|
#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,
|
void (*ff_put_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
|
||||||
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;
|
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,
|
static void add_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels,
|
||||||
int line_size)
|
int line_size)
|
||||||
{
|
{
|
||||||
int i;
|
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)
|
static void ff_jref_idct4_put(uint8_t *dest, int line_size, int16_t *block)
|
||||||
{
|
{
|
||||||
ff_j_rev_dct4 (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;
|
c->perm_type = FF_IDCT_PERM_NONE;
|
||||||
} else {
|
} else {
|
||||||
if (avctx->idct_algo == FF_IDCT_INT) {
|
if (avctx->idct_algo == FF_IDCT_INT) {
|
||||||
c->idct_put = jref_idct_put;
|
c->idct_put = ff_jref_idct_put;
|
||||||
c->idct_add = jref_idct_add;
|
c->idct_add = ff_jref_idct_add;
|
||||||
c->idct = ff_j_rev_dct;
|
c->idct = ff_j_rev_dct;
|
||||||
c->perm_type = FF_IDCT_PERM_LIBMPEG2;
|
c->perm_type = FF_IDCT_PERM_LIBMPEG2;
|
||||||
} else if (avctx->idct_algo == FF_IDCT_FAAN) {
|
} 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->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)
|
if (CONFIG_MPEG4_DECODER && avctx->idct_algo == FF_IDCT_XVID)
|
||||||
ff_xvid_idct_init(c, avctx);
|
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,
|
int ff_init_scantable_permutation_x86(uint8_t *idct_permutation,
|
||||||
enum idct_permutation_type perm_type);
|
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 {
|
typedef struct IDCTDSPContext {
|
||||||
/* pixel ops : interface with DCT */
|
/* pixel ops : interface with DCT */
|
||||||
void (*put_pixels_clamped)(const int16_t *block /* align 16 */,
|
void (*put_pixels_clamped)(const int16_t *block /* align 16 */,
|
||||||
@ -100,6 +95,9 @@ typedef struct IDCTDSPContext {
|
|||||||
enum idct_permutation_type perm_type;
|
enum idct_permutation_type perm_type;
|
||||||
} IDCTDSPContext;
|
} 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(IDCTDSPContext *c, AVCodecContext *avctx);
|
||||||
|
|
||||||
void ff_idctdsp_init_alpha(IDCTDSPContext *c, AVCodecContext *avctx,
|
void ff_idctdsp_init_alpha(IDCTDSPContext *c, AVCodecContext *avctx,
|
||||||
|
@ -63,7 +63,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "libavutil/common.h"
|
#include "libavutil/common.h"
|
||||||
|
|
||||||
#include "dct.h"
|
#include "dct.h"
|
||||||
|
#include "idctdsp.h"
|
||||||
|
|
||||||
#define EIGHT_BIT_SAMPLES
|
#define EIGHT_BIT_SAMPLES
|
||||||
|
|
||||||
@ -1153,3 +1155,15 @@ void ff_j_rev_dct1(DCTBLOCK data){
|
|||||||
|
|
||||||
#undef FIX
|
#undef FIX
|
||||||
#undef CONST_BITS
|
#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/mem.h"
|
||||||
#include "libavutil/x86/asm.h"
|
#include "libavutil/x86/asm.h"
|
||||||
|
|
||||||
|
#include "libavcodec/idctdsp.h"
|
||||||
|
|
||||||
#include "idctdsp.h"
|
#include "idctdsp.h"
|
||||||
#include "simple_idct.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)
|
void ff_simple_idct_put_mmx(uint8_t *dest, int line_size, int16_t *block)
|
||||||
{
|
{
|
||||||
idct(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)
|
void ff_simple_idct_add_mmx(uint8_t *dest, int line_size, int16_t *block)
|
||||||
{
|
{
|
||||||
idct(block);
|
idct(block);
|
||||||
ff_add_pixels_clamped_mmx(block, dest, line_size);
|
ff_add_pixels_clamped(block, dest, line_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* HAVE_INLINE_ASM */
|
#endif /* HAVE_INLINE_ASM */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user