diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-03-22 15:50:58 -0400 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2012-03-23 12:10:41 +0100 |
commit | afa612901615cca6c0160b5e6c18ffcacf0add46 (patch) | |
tree | 7da27fc5189e834a694c9e6ef986a2ae5df6364d /libavcodec/zerocodec.c | |
parent | 4094fc9971058b5a11c38d3294141c3220a2b691 (diff) | |
download | ffmpeg-afa612901615cca6c0160b5e6c18ffcacf0add46.tar.gz |
zerocodec: factorize loop
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Diffstat (limited to 'libavcodec/zerocodec.c')
-rw-r--r-- | libavcodec/zerocodec.c | 45 |
1 files changed, 13 insertions, 32 deletions
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 */ |