[FFmpeg-cvslog] CSCD: must use reget_buffer.

Reimar Döffinger git at videolan.org
Tue May 8 23:19:13 CEST 2012


ffmpeg | branch: master | Reimar Döffinger <Reimar.Doeffinger at gmx.de> | Tue May  8 19:20:39 2012 +0200| [badb0c07d4b9cec5b041200e585bdc2b25f7d05b] | committer: Reimar Döffinger

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 at gmx.de>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=badb0c07d4b9cec5b041200e585bdc2b25f7d05b
---

 libavcodec/cscd.c |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/libavcodec/cscd.c b/libavcodec/cscd.c
index 01abeda..b0b4893 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;
     }



More information about the ffmpeg-cvslog mailing list