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>
This commit is contained in:
@@ -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)
|
static int sse4_c(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h)
|
||||||
{
|
{
|
||||||
int s, i;
|
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 = add_hfyu_left_prediction_c;
|
||||||
c->add_hfyu_left_prediction_bgr32 = add_hfyu_left_prediction_bgr32_c;
|
c->add_hfyu_left_prediction_bgr32 = add_hfyu_left_prediction_bgr32_c;
|
||||||
c->bswap_buf= bswap_buf;
|
c->bswap_buf= bswap_buf;
|
||||||
|
c->bswap16_buf = bswap16_buf;
|
||||||
#if CONFIG_PNG_DECODER
|
#if CONFIG_PNG_DECODER
|
||||||
c->add_png_paeth_prediction= ff_add_png_paeth_prediction;
|
c->add_png_paeth_prediction= ff_add_png_paeth_prediction;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -369,6 +369,7 @@ typedef struct DSPContext {
|
|||||||
/* this might write to dst[w] */
|
/* 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 (*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 (*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_v_loop_filter)(uint8_t *src, int stride, int qscale);
|
||||||
void (*h263_h_loop_filter)(uint8_t *src, int stride, int qscale);
|
void (*h263_h_loop_filter)(uint8_t *src, int stride, int qscale);
|
||||||
|
Reference in New Issue
Block a user