Commit afa61290 authored by Michael Niedermayer's avatar Michael Niedermayer Committed by Diego Biurrun

zerocodec: factorize loop

Signed-off-by: 's avatarDiego Biurrun <diego@biurrun.de>
parent 4094fc99
...@@ -62,49 +62,30 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data, ...@@ -62,49 +62,30 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data,
*/ */
if (avpkt->flags & AV_PKT_FLAG_KEY) { if (avpkt->flags & AV_PKT_FLAG_KEY) {
pic->key_frame = 1; pic->key_frame = 1;
pic->pict_type = AV_PICTURE_TYPE_I; 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 { } else {
pic->key_frame = 0; pic->key_frame = 0;
pic->pict_type = AV_PICTURE_TYPE_P; pic->pict_type = AV_PICTURE_TYPE_P;
}
for (i = 0; i < avctx->height; i++) { for (i = 0; i < avctx->height; i++) {
zstream->next_out = dst;
zstream->next_out = dst; zstream->avail_out = avctx->width << 1;
zstream->avail_out = avctx->width << 1;
zret = inflate(zstream, Z_SYNC_FLUSH);
if (zret != Z_OK && zret != Z_STREAM_END) { zret = inflate(zstream, Z_SYNC_FLUSH);
av_log(avctx, AV_LOG_ERROR, if (zret != Z_OK && zret != Z_STREAM_END) {
"Inflate failed with return code: %d\n", zret); av_log(avctx, AV_LOG_ERROR,
return AVERROR(EINVAL); "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++) for (j = 0; j < avctx->width << 1; j++)
dst[j] += prev[j] & -!dst[j]; dst[j] += prev[j] & -!dst[j];
prev += prev_pic->linesize[0]; prev += prev_pic->linesize[0];
dst += pic->linesize[0]; dst += pic->linesize[0];
}
} }
/* Release the previous buffer if need be */ /* Release the previous buffer if need be */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment