Not every type of comparison function implements every function. Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> --- libavcodec/dvenc.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/libavcodec/dvenc.c b/libavcodec/dvenc.c index 3afeedbb87..08ed53d823 100644 --- a/libavcodec/dvenc.c +++ b/libavcodec/dvenc.c @@ -70,7 +70,6 @@ static av_cold int dvvideo_encode_init(AVCodecContext *avctx) { DVEncContext *s = avctx->priv_data; FDCTDSPContext fdsp; - MECmpContext mecc; PixblockDSPContext pdsp; int ret; @@ -95,19 +94,24 @@ static av_cold int dvvideo_encode_init(AVCodecContext *avctx) ff_dv_init_dynamic_tables(s->work_chunks, s->sys); + if (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) { + MECmpContext mecc; + + memset(&mecc,0, sizeof(mecc)); + ff_me_cmp_init(&mecc, avctx); + ret = ff_set_cmp(&mecc, mecc.ildct_cmp, avctx->ildct_cmp); + if (ret < 0) + return ret; + if (!mecc.ildct_cmp[5]) + return AVERROR(EINVAL); + s->ildct_cmp = mecc.ildct_cmp[5]; + } + memset(&fdsp,0, sizeof(fdsp)); - memset(&mecc,0, sizeof(mecc)); memset(&pdsp,0, sizeof(pdsp)); ff_fdctdsp_init(&fdsp, avctx); - ff_me_cmp_init(&mecc, avctx); ff_pixblockdsp_init(&pdsp, avctx); - ret = ff_set_cmp(&mecc, mecc.ildct_cmp, avctx->ildct_cmp); - if (ret < 0) - return AVERROR(EINVAL); - s->get_pixels = pdsp.get_pixels; - s->ildct_cmp = mecc.ildct_cmp[5]; - s->fdct[0] = fdsp.fdct; s->fdct[1] = fdsp.fdct248; -- 2.40.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".