diff options
author | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2012-05-08 19:20:39 +0200 |
---|---|---|
committer | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2012-05-08 23:18:48 +0200 |
commit | badb0c07d4b9cec5b041200e585bdc2b25f7d05b (patch) | |
tree | ed0a72d1f3c16b5fda26a66ec6b824b4d29d2813 | |
parent | 1ebf6f941e0fd5d2f5df19a122a93a351b42ae20 (diff) | |
download | ffmpeg-badb0c07d4b9cec5b041200e585bdc2b25f7d05b.tar.gz |
CSCD: must use reget_buffer.
Using release_buffer and get_buffer as currently might
not prefer the previous frame contents which the
decoder relies on.
This leads to horrible playback in players using direct
rendering like MPlayer.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
-rw-r--r-- | libavcodec/cscd.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/libavcodec/cscd.c b/libavcodec/cscd.c index 01abeda5ea..b0b4893ca1 100644 --- a/libavcodec/cscd.c +++ b/libavcodec/cscd.c @@ -72,12 +72,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, return -1; } - if (c->pic.data[0]) - avctx->release_buffer(avctx, &c->pic); c->pic.reference = 3; c->pic.buffer_hints = FF_BUFFER_HINTS_VALID | FF_BUFFER_HINTS_READABLE | FF_BUFFER_HINTS_PRESERVE | FF_BUFFER_HINTS_REUSABLE; - if (avctx->get_buffer(avctx, &c->pic) < 0) { + if (avctx->reget_buffer(avctx, &c->pic) < 0) { av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); return -1; } |