diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2012-12-09 13:24:16 +0400 |
---|---|---|
committer | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2012-12-10 20:19:42 +0400 |
commit | 2ddf7c88d162473e84417e94e1fb7e4375ecfdae (patch) | |
tree | 608a85a185870901d77806f7c393f1bd74d52419 /libavcodec/zerocodec.c | |
parent | ccb59c106a4361b9655aa094b042863d655860c4 (diff) |
ZeroCodec: Flip output
The initial testing of the VFW binary codec was flawed,
likely due to an AviSynth bug.
Re-testing using VirtualDub and various professional editing
applications has revealed it should have been flipped.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Diffstat (limited to 'libavcodec/zerocodec.c')
-rw-r--r-- | libavcodec/zerocodec.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libavcodec/zerocodec.c b/libavcodec/zerocodec.c index f54abb1c1b..cba3198473 100644 --- a/libavcodec/zerocodec.c +++ b/libavcodec/zerocodec.c @@ -49,6 +49,9 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data, av_log(avctx, AV_LOG_ERROR, "Missing reference frame.\n"); return AVERROR_INVALIDDATA; } + + prev += (avctx->height - 1) * prev_pic->linesize[0]; + pic->key_frame = 0; pic->pict_type = AV_PICTURE_TYPE_P; } @@ -67,7 +70,7 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data, zstream->next_in = avpkt->data; zstream->avail_in = avpkt->size; - dst = pic->data[0]; + dst = pic->data[0] + (avctx->height - 1) * pic->linesize[0]; /** * ZeroCodec has very simple interframe compression. If a value @@ -90,8 +93,8 @@ static int zerocodec_decode_frame(AVCodecContext *avctx, void *data, 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 */ |