mirror of https://git.ffmpeg.org/ffmpeg.git
zerocodec: factorize loop
Signed-off-by: Diego Biurrun <diego@biurrun.de>
This commit is contained in:
parent
4094fc9971
commit
afa6129016
|
@ -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->avail_out = avctx->width << 1;
|
||||||
|
|
||||||
zstream->next_out = dst;
|
zret = inflate(zstream, Z_SYNC_FLUSH);
|
||||||
zstream->avail_out = avctx->width << 1;
|
if (zret != Z_OK && zret != Z_STREAM_END) {
|
||||||
|
av_log(avctx, AV_LOG_ERROR,
|
||||||
zret = inflate(zstream, Z_SYNC_FLUSH);
|
"Inflate failed with return code: %d\n", zret);
|
||||||
|
return AVERROR(EINVAL);
|
||||||
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++)
|
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 */
|
||||||
|
|
Loading…
Reference in New Issue