diff options
author | Mans Rullgard <mans@mansr.com> | 2010-04-21 00:09:00 +0100 |
---|---|---|
committer | Mans Rullgard <mans@mansr.com> | 2011-03-16 23:19:40 +0000 |
commit | 381d37fda91494e312ab2938080a379c5e11998b (patch) | |
tree | 4643fe3926b5fe37f7a0319e02eac02c1bb96830 | |
parent | dff68563d846274cee0a2cd2430d6f1a2cb51eaa (diff) | |
download | ffmpeg-381d37fda91494e312ab2938080a379c5e11998b.tar.gz |
dsputil: add bswap16_buf()
There are several places where a buffer is byte-swapped in 16-bit units.
This allows them to share code which can be optimised for various
architectures.
Signed-off-by: Mans Rullgard <mans@mansr.com>
-rw-r--r-- | libavcodec/dsputil.c | 7 | ||||
-rw-r--r-- | libavcodec/dsputil.h | 1 |
2 files changed, 8 insertions, 0 deletions
diff --git a/libavcodec/dsputil.c b/libavcodec/dsputil.c index 1f7bd4cbc0..b293642b1d 100644 --- a/libavcodec/dsputil.c +++ b/libavcodec/dsputil.c @@ -222,6 +222,12 @@ static void bswap_buf(uint32_t *dst, const uint32_t *src, int w){ } } +static void bswap16_buf(uint16_t *dst, const uint16_t *src, int len) +{ + while (len--) + *dst++ = av_bswap16(*src++); +} + static int sse4_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h) { int s, i; @@ -4324,6 +4330,7 @@ av_cold void dsputil_init(DSPContext* c, AVCodecContext *avctx) c->add_hfyu_left_prediction = add_hfyu_left_prediction_c; c->add_hfyu_left_prediction_bgr32 = add_hfyu_left_prediction_bgr32_c; c->bswap_buf= bswap_buf; + c->bswap16_buf = bswap16_buf; #if CONFIG_PNG_DECODER c->add_png_paeth_prediction= ff_add_png_paeth_prediction; #endif diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h index b4798b3de8..a37475f24b 100644 --- a/libavcodec/dsputil.h +++ b/libavcodec/dsputil.h @@ -369,6 +369,7 @@ typedef struct DSPContext { /* this might write to dst[w] */ void (*add_png_paeth_prediction)(uint8_t *dst, uint8_t *src, uint8_t *top, int w, int bpp); void (*bswap_buf)(uint32_t *dst, const uint32_t *src, int w); + void (*bswap16_buf)(uint16_t *dst, const uint16_t *src, int len); void (*h263_v_loop_filter)(uint8_t *src, int stride, int qscale); void (*h263_h_loop_filter)(uint8_t *src, int stride, int qscale); |