summaryrefslogtreecommitdiff
path: root/libavcodec/zerocodec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-03-22 15:50:58 -0400
committerDiego Biurrun <diego@biurrun.de>2012-03-23 12:10:41 +0100
commitafa612901615cca6c0160b5e6c18ffcacf0add46 (patch)
tree7da27fc5189e834a694c9e6ef986a2ae5df6364d /libavcodec/zerocodec.c
parent4094fc9971058b5a11c38d3294141c3220a2b691 (diff)
zerocodec: factorize loop
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Diffstat (limited to 'libavcodec/zerocodec.c')
-rw-r--r--libavcodec/zerocodec.c45
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 */