Only the pixel format is required in that init function. This will also simplify the incoming merge.tags/n3.3
| @@ -297,7 +297,7 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||||
| if (ret < 0) | if (ret < 0) | ||||
| return ret; | return ret; | ||||
| ff_huffyuvdsp_init(&s->hdsp, avctx); | |||||
| ff_huffyuvdsp_init(&s->hdsp, avctx->pix_fmt); | |||||
| ff_llviddsp_init(&s->llviddsp); | ff_llviddsp_init(&s->llviddsp); | ||||
| memset(s->vlc, 0, 4 * sizeof(VLC)); | memset(s->vlc, 0, 4 * sizeof(VLC)); | ||||
| @@ -80,12 +80,12 @@ static void add_hfyu_left_pred_bgr32_c(uint8_t *dst, const uint8_t *src, | |||||
| left[A] = a; | left[A] = a; | ||||
| } | } | ||||
| av_cold void ff_huffyuvdsp_init(HuffYUVDSPContext *c, AVCodecContext *avctx) | |||||
| av_cold void ff_huffyuvdsp_init(HuffYUVDSPContext *c, enum AVPixelFormat pix_fmt) | |||||
| { | { | ||||
| c->add_int16 = add_int16_c; | c->add_int16 = add_int16_c; | ||||
| c->add_hfyu_median_pred_int16 = add_hfyu_median_pred_int16_c; | c->add_hfyu_median_pred_int16 = add_hfyu_median_pred_int16_c; | ||||
| c->add_hfyu_left_pred_bgr32 = add_hfyu_left_pred_bgr32_c; | c->add_hfyu_left_pred_bgr32 = add_hfyu_left_pred_bgr32_c; | ||||
| if (ARCH_X86) | if (ARCH_X86) | ||||
| ff_huffyuvdsp_init_x86(c, avctx); | |||||
| ff_huffyuvdsp_init_x86(c, pix_fmt); | |||||
| } | } | ||||
| @@ -20,8 +20,8 @@ | |||||
| #define AVCODEC_HUFFYUVDSP_H | #define AVCODEC_HUFFYUVDSP_H | ||||
| #include <stdint.h> | #include <stdint.h> | ||||
| #include "libavutil/pixfmt.h" | |||||
| #include "config.h" | #include "config.h" | ||||
| #include "avcodec.h" | |||||
| #if HAVE_BIGENDIAN | #if HAVE_BIGENDIAN | ||||
| #define B 3 | #define B 3 | ||||
| @@ -46,7 +46,7 @@ typedef struct HuffYUVDSPContext { | |||||
| intptr_t w, uint8_t *left); | intptr_t w, uint8_t *left); | ||||
| } HuffYUVDSPContext; | } HuffYUVDSPContext; | ||||
| void ff_huffyuvdsp_init(HuffYUVDSPContext *c, AVCodecContext *avctx); | |||||
| void ff_huffyuvdsp_init_x86(HuffYUVDSPContext *c, AVCodecContext *avctx); | |||||
| void ff_huffyuvdsp_init(HuffYUVDSPContext *c, enum AVPixelFormat pix_fmt); | |||||
| void ff_huffyuvdsp_init_x86(HuffYUVDSPContext *c, enum AVPixelFormat pix_fmt); | |||||
| #endif /* AVCODEC_HUFFYUVDSP_H */ | #endif /* AVCODEC_HUFFYUVDSP_H */ | ||||
| @@ -34,10 +34,10 @@ void ff_add_hfyu_left_pred_bgr32_sse2(uint8_t *dst, const uint8_t *src, | |||||
| intptr_t w, uint8_t *left); | intptr_t w, uint8_t *left); | ||||
| void ff_add_hfyu_median_pred_int16_mmxext(uint16_t *dst, const uint16_t *top, const uint16_t *diff, unsigned mask, int w, int *left, int *left_top); | void ff_add_hfyu_median_pred_int16_mmxext(uint16_t *dst, const uint16_t *top, const uint16_t *diff, unsigned mask, int w, int *left, int *left_top); | ||||
| av_cold void ff_huffyuvdsp_init_x86(HuffYUVDSPContext *c, AVCodecContext *avctx) | |||||
| av_cold void ff_huffyuvdsp_init_x86(HuffYUVDSPContext *c, enum AVPixelFormat pix_fmt) | |||||
| { | { | ||||
| int cpu_flags = av_get_cpu_flags(); | int cpu_flags = av_get_cpu_flags(); | ||||
| const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(avctx->pix_fmt); | |||||
| const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(pix_fmt); | |||||
| if (ARCH_X86_32 && EXTERNAL_MMX(cpu_flags)) { | if (ARCH_X86_32 && EXTERNAL_MMX(cpu_flags)) { | ||||
| c->add_hfyu_left_pred_bgr32 = ff_add_hfyu_left_pred_bgr32_mmx; | c->add_hfyu_left_pred_bgr32 = ff_add_hfyu_left_pred_bgr32_mmx; | ||||