dsputil: Move Bink-specific add_pixels8 to binkdsp

pull/74/head
Diego Biurrun 11 years ago
parent 054013a0fc
commit cb52a17cb6
  1. 4
      libavcodec/bink.c
  2. 21
      libavcodec/binkdsp.c
  3. 1
      libavcodec/binkdsp.h
  4. 21
      libavcodec/dsputil.c
  5. 1
      libavcodec/dsputil.h

@ -883,7 +883,7 @@ static int binkb_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb,
c->dsp.clear_block(block); c->dsp.clear_block(block);
v = binkb_get_value(c, BINKB_SRC_INTER_COEFS); v = binkb_get_value(c, BINKB_SRC_INTER_COEFS);
read_residue(gb, block, v); read_residue(gb, block, v);
c->dsp.add_pixels8(dst, block, stride); c->bdsp.add_pixels8(dst, block, stride);
break; break;
case 4: case 4:
xoff = binkb_get_value(c, BINKB_SRC_X_OFF); xoff = binkb_get_value(c, BINKB_SRC_X_OFF);
@ -1120,7 +1120,7 @@ static int bink_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb,
c->dsp.clear_block(block); c->dsp.clear_block(block);
v = get_bits(gb, 7); v = get_bits(gb, 7);
read_residue(gb, block, v); read_residue(gb, block, v);
c->dsp.add_pixels8(dst, block, stride); c->bdsp.add_pixels8(dst, block, stride);
break; break;
case INTRA_BLOCK: case INTRA_BLOCK:
memset(dctblock, 0, sizeof(*dctblock) * 64); memset(dctblock, 0, sizeof(*dctblock) * 64);

@ -24,6 +24,7 @@
* Bink DSP routines * Bink DSP routines
*/ */
#include "config.h"
#include "libavutil/attributes.h" #include "libavutil/attributes.h"
#include "binkdsp.h" #include "binkdsp.h"
@ -128,9 +129,29 @@ static void scale_block_c(const uint8_t src[64]/*align 8*/, uint8_t *dst/*align
} }
} }
static void add_pixels8_c(uint8_t *restrict pixels, int16_t *block,
int line_size)
{
int i;
for (i = 0; i < 8; i++) {
pixels[0] += block[0];
pixels[1] += block[1];
pixels[2] += block[2];
pixels[3] += block[3];
pixels[4] += block[4];
pixels[5] += block[5];
pixels[6] += block[6];
pixels[7] += block[7];
pixels += line_size;
block += 8;
}
}
av_cold void ff_binkdsp_init(BinkDSPContext *c) av_cold void ff_binkdsp_init(BinkDSPContext *c)
{ {
c->idct_add = bink_idct_add_c; c->idct_add = bink_idct_add_c;
c->idct_put = bink_idct_put_c; c->idct_put = bink_idct_put_c;
c->scale_block = scale_block_c; c->scale_block = scale_block_c;
c->add_pixels8 = add_pixels8_c;
} }

@ -33,6 +33,7 @@ typedef struct BinkDSPContext {
void (*idct_put)(uint8_t *dest/*align 8*/, int line_size, int32_t *block/*align 16*/); void (*idct_put)(uint8_t *dest/*align 8*/, int line_size, int32_t *block/*align 16*/);
void (*idct_add)(uint8_t *dest/*align 8*/, int line_size, int32_t *block/*align 16*/); void (*idct_add)(uint8_t *dest/*align 8*/, int line_size, int32_t *block/*align 16*/);
void (*scale_block)(const uint8_t src[64]/*align 8*/, uint8_t *dst/*align 8*/, int linesize); void (*scale_block)(const uint8_t src[64]/*align 8*/, uint8_t *dst/*align 8*/, int linesize);
void (*add_pixels8)(uint8_t *pixels, int16_t *block, int line_size);
} BinkDSPContext; } BinkDSPContext;
void ff_binkdsp_init(BinkDSPContext *c); void ff_binkdsp_init(BinkDSPContext *c);

@ -347,25 +347,6 @@ static void put_signed_pixels_clamped_c(const int16_t *block,
} }
} }
static void add_pixels8_c(uint8_t *restrict pixels, int16_t *block,
int line_size)
{
int i;
for (i = 0; i < 8; i++) {
pixels[0] += block[0];
pixels[1] += block[1];
pixels[2] += block[2];
pixels[3] += block[3];
pixels[4] += block[4];
pixels[5] += block[5];
pixels[6] += block[6];
pixels[7] += block[7];
pixels += line_size;
block += 8;
}
}
static void add_pixels_clamped_c(const int16_t *block, uint8_t *restrict pixels, static void add_pixels_clamped_c(const int16_t *block, uint8_t *restrict pixels,
int line_size) int line_size)
{ {
@ -2290,8 +2271,6 @@ av_cold void ff_dsputil_init(DSPContext *c, AVCodecContext *avctx)
c->shrink[2] = ff_shrink44; c->shrink[2] = ff_shrink44;
c->shrink[3] = ff_shrink88; c->shrink[3] = ff_shrink88;
c->add_pixels8 = add_pixels8_c;
c->draw_edges = draw_edges_8_c; c->draw_edges = draw_edges_8_c;
c->clear_block = clear_block_8_c; c->clear_block = clear_block_8_c;

@ -136,7 +136,6 @@ typedef struct DSPContext {
void (*add_pixels_clamped)(const int16_t *block /* align 16 */, void (*add_pixels_clamped)(const int16_t *block /* align 16 */,
uint8_t *pixels /* align 8 */, uint8_t *pixels /* align 8 */,
int line_size); int line_size);
void (*add_pixels8)(uint8_t *pixels, int16_t *block, int line_size);
int (*sum_abs_dctelem)(int16_t *block /* align 16 */); int (*sum_abs_dctelem)(int16_t *block /* align 16 */);
/** /**
* translational global motion compensation. * translational global motion compensation.

Loading…
Cancel
Save