From afa612901615cca6c0160b5e6c18ffcacf0add46 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Thu, 22 Mar 2012 15:50:58 -0400 Subject: zerocodec: factorize loop Signed-off-by: Diego Biurrun --- libavcodec/zerocodec.c | 45 +++++++++++++-------------------------------- 1 file changed, 13 insertions(+), 32 deletions(-) (limited to 'libavcodec/zerocodec.c') diff --git a/libavcodec/zerocodec.c b/libavcodec/zerocodec.c index 3bf1fd93f4..6c57e05197 100644 --- a/libavcodec/zerocodec.c +++ b/libavcodec/zerocodec.c @@ -62,49 +62,30 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data, */ if (avpkt->flags & AV_PKT_FLAG_KEY) { - pic->key_frame = 1; pic->pict_type = AV_PICTURE_TYPE_I; - - for (i = 0; i < avctx->height; i++) { - - zstream->next_out = dst; - zstream->avail_out = avctx->width << 1; - - zret = inflate(zstream, Z_SYNC_FLUSH); - - if (zret != Z_OK && zret != Z_STREAM_END) { - av_log(avctx, AV_LOG_ERROR, - "Inflate failed with return code: %d\n", zret); - return AVERROR(EINVAL); - } - - dst += pic->linesize[0]; - } } else { - pic->key_frame = 0; pic->pict_type = AV_PICTURE_TYPE_P; + } - for (i = 0; i < avctx->height; i++) { - - zstream->next_out = dst; - zstream->avail_out = avctx->width << 1; - - zret = inflate(zstream, Z_SYNC_FLUSH); + for (i = 0; i < avctx->height; i++) { + zstream->next_out = dst; + zstream->avail_out = avctx->width << 1; - if (zret != Z_OK && zret != Z_STREAM_END) { - av_log(avctx, AV_LOG_ERROR, - "Inflate failed with return code: %d\n", zret); - return AVERROR(EINVAL); - } + zret = inflate(zstream, Z_SYNC_FLUSH); + if (zret != Z_OK && zret != Z_STREAM_END) { + av_log(avctx, AV_LOG_ERROR, + "Inflate failed with return code: %d\n", zret); + return AVERROR(EINVAL); + } + if (!(avpkt->flags & AV_PKT_FLAG_KEY)) for (j = 0; j < avctx->width << 1; j++) dst[j] += prev[j] & -!dst[j]; - prev += prev_pic->linesize[0]; - dst += pic->linesize[0]; - } + prev += prev_pic->linesize[0]; + dst += pic->linesize[0]; } /* Release the previous buffer if need be */ -- cgit v1.2.3