Commit e2cbf24f authored by James Darnley's avatar James Darnley

avcodec/v210dec: move DSP function setting into dedicated function

Prepare for checkasm test.
parent e427ba5c
...@@ -50,6 +50,13 @@ static void v210_planar_unpack_c(const uint32_t *src, uint16_t *y, uint16_t *u, ...@@ -50,6 +50,13 @@ static void v210_planar_unpack_c(const uint32_t *src, uint16_t *y, uint16_t *u,
} }
} }
av_cold void ff_v210dec_init(V210DecContext *s)
{
s->unpack_frame = v210_planar_unpack_c;
if (ARCH_X86)
ff_v210_x86_init(s);
}
static av_cold int decode_init(AVCodecContext *avctx) static av_cold int decode_init(AVCodecContext *avctx)
{ {
V210DecContext *s = avctx->priv_data; V210DecContext *s = avctx->priv_data;
...@@ -57,10 +64,8 @@ static av_cold int decode_init(AVCodecContext *avctx) ...@@ -57,10 +64,8 @@ static av_cold int decode_init(AVCodecContext *avctx)
avctx->pix_fmt = AV_PIX_FMT_YUV422P10; avctx->pix_fmt = AV_PIX_FMT_YUV422P10;
avctx->bits_per_raw_sample = 10; avctx->bits_per_raw_sample = 10;
s->unpack_frame = v210_planar_unpack_c; s->aligned_input = 0;
ff_v210dec_init(s);
if (HAVE_MMX)
ff_v210_x86_init(s);
return 0; return 0;
} }
...@@ -102,8 +107,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, ...@@ -102,8 +107,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
aligned_input = !((uintptr_t)psrc & 0xf) && !(stride & 0xf); aligned_input = !((uintptr_t)psrc & 0xf) && !(stride & 0xf);
if (aligned_input != s->aligned_input) { if (aligned_input != s->aligned_input) {
s->aligned_input = aligned_input; s->aligned_input = aligned_input;
if (HAVE_MMX) ff_v210dec_init(s);
ff_v210_x86_init(s);
} }
if ((ret = ff_get_buffer(avctx, pic, 0)) < 0) if ((ret = ff_get_buffer(avctx, pic, 0)) < 0)
......
...@@ -31,6 +31,7 @@ typedef struct { ...@@ -31,6 +31,7 @@ typedef struct {
void (*unpack_frame)(const uint32_t *src, uint16_t *y, uint16_t *u, uint16_t *v, int width); void (*unpack_frame)(const uint32_t *src, uint16_t *y, uint16_t *u, uint16_t *v, int width);
} V210DecContext; } V210DecContext;
void ff_v210dec_init(V210DecContext *s);
void ff_v210_x86_init(V210DecContext *s); void ff_v210_x86_init(V210DecContext *s);
#endif /* AVCODEC_V210DEC_H */ #endif /* AVCODEC_V210DEC_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment