LGTM On 10/17/19, Andreas Rheinhardt <andreas.rheinha...@gmail.com> wrote: > zmbv has only one function for decoding intra frames, namely > decode_intra; and yet up until now it has been called via a function > pointer. This has been changed. > > This also removes spec-incompliant conversions between function pointers > and pointers of type void * and thereby fixes the warning "ISO C forbids > assignment between function pointer and ‘void *’" that GCC emits with > the -pedantic option. > > Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@gmail.com> > --- > This patch replaces [1] according to a suggestion by Tomas. > > [1]: https://ffmpeg.org/pipermail/ffmpeg-devel/2019-October/251083.html > > libavcodec/zmbv.c | 16 +++++----------- > 1 file changed, 5 insertions(+), 11 deletions(-) > > diff --git a/libavcodec/zmbv.c b/libavcodec/zmbv.c > index 99e735cfd9..02599bf03d 100644 > --- a/libavcodec/zmbv.c > +++ b/libavcodec/zmbv.c > @@ -69,8 +69,8 @@ typedef struct ZmbvContext { > int stride; > int bw, bh, bx, by; > int decomp_len; > + int got_keyframe; > z_stream zstream; > - int (*decode_intra)(struct ZmbvContext *c); > int (*decode_xor)(struct ZmbvContext *c); > } ZmbvContext; > > @@ -425,8 +425,7 @@ static int decode_frame(AVCodecContext *avctx, void > *data, int *got_frame, AVPac > c->flags = buf[0]; > buf++; len--; > if (c->flags & ZMBV_KEYFRAME) { > - void *decode_intra = NULL; > - c->decode_intra= NULL; > + c->got_keyframe = 0; > > if (len < 6) > return AVERROR_INVALIDDATA; > @@ -436,7 +435,6 @@ static int decode_frame(AVCodecContext *avctx, void > *data, int *got_frame, AVPac > c->fmt = buf[3]; > c->bw = buf[4]; > c->bh = buf[5]; > - c->decode_intra = NULL; > c->decode_xor = NULL; > > buf += 6; > @@ -460,7 +458,6 @@ static int decode_frame(AVCodecContext *avctx, void > *data, int *got_frame, AVPac > switch (c->fmt) { > case ZMBV_FMT_8BPP: > c->bpp = 8; > - decode_intra = zmbv_decode_intra; > c->decode_xor = zmbv_decode_xor_8; > avctx->pix_fmt = AV_PIX_FMT_PAL8; > c->stride = c->width; > @@ -468,7 +465,6 @@ static int decode_frame(AVCodecContext *avctx, void > *data, int *got_frame, AVPac > case ZMBV_FMT_15BPP: > case ZMBV_FMT_16BPP: > c->bpp = 16; > - decode_intra = zmbv_decode_intra; > c->decode_xor = zmbv_decode_xor_16; > if (c->fmt == ZMBV_FMT_15BPP) > avctx->pix_fmt = AV_PIX_FMT_RGB555LE; > @@ -479,7 +475,6 @@ static int decode_frame(AVCodecContext *avctx, void > *data, int *got_frame, AVPac > #ifdef ZMBV_ENABLE_24BPP > case ZMBV_FMT_24BPP: > c->bpp = 24; > - decode_intra = zmbv_decode_intra; > c->decode_xor = zmbv_decode_xor_24; > avctx->pix_fmt = AV_PIX_FMT_BGR24; > c->stride = c->width * 3; > @@ -487,7 +482,6 @@ static int decode_frame(AVCodecContext *avctx, void > *data, int *got_frame, AVPac > #endif //ZMBV_ENABLE_24BPP > case ZMBV_FMT_32BPP: > c->bpp = 32; > - decode_intra = zmbv_decode_intra; > c->decode_xor = zmbv_decode_xor_32; > avctx->pix_fmt = AV_PIX_FMT_BGR0; > c->stride = c->width * 4; > @@ -517,7 +511,7 @@ static int decode_frame(AVCodecContext *avctx, void > *data, int *got_frame, AVPac > } > memset(c->cur, 0, avctx->width * avctx->height * (c->bpp / 8)); > memset(c->prev, 0, avctx->width * avctx->height * (c->bpp / 8)); > - c->decode_intra= decode_intra; > + c->got_keyframe = 1; > } > if (c->flags & ZMBV_KEYFRAME) { > expected_size = avctx->width * avctx->height * (c->bpp / 8); > @@ -528,7 +522,7 @@ static int decode_frame(AVCodecContext *avctx, void > *data, int *got_frame, AVPac > (c->flags & (ZMBV_DELTAPAL | ZMBV_KEYFRAME))) > expected_size += 768; > > - if (!c->decode_intra) { > + if (!c->got_keyframe) { > av_log(avctx, AV_LOG_ERROR, "Error! Got no format or no > keyframe!\n"); > return AVERROR_INVALIDDATA; > } > @@ -564,7 +558,7 @@ static int decode_frame(AVCodecContext *avctx, void > *data, int *got_frame, AVPac > if (c->flags & ZMBV_KEYFRAME) { > frame->key_frame = 1; > frame->pict_type = AV_PICTURE_TYPE_I; > - c->decode_intra(c); > + zmbv_decode_intra(c); > } else { > frame->key_frame = 0; > frame->pict_type = AV_PICTURE_TYPE_P; > -- > 2.20.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". _______________________________________________ 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".