[SCM] libav/experimental: Fix FFv1 decoder buffer releasing.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 17:18:40 UTC 2013


The following commit has been merged in the experimental branch:
commit 58b4e5407d05164f1874ffb32612237253411093
Author: Stefano Sabatini <stefano.sabatini-lala at poste.it>
Date:   Thu Nov 4 22:45:46 2010 +0000

    Fix FFv1 decoder buffer releasing.
    
    Previously it was releasing the buffer which was returned to the user,
    which was resulting in a crash in case of direct rendering.
    
    Originally committed as revision 25678 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/ffv1.c b/libavcodec/ffv1.c
index 813e41d..9bc97e8 100644
--- a/libavcodec/ffv1.c
+++ b/libavcodec/ffv1.c
@@ -1274,6 +1274,9 @@ static av_cold int common_end(AVCodecContext *avctx){
     FFV1Context *s = avctx->priv_data;
     int i, j;
 
+    if (avctx->codec->decode && s->picture.data[0])
+        avctx->release_buffer(avctx, &s->picture);
+
     for(j=0; j<s->slice_count; j++){
         FFV1Context *fs= s->slice_context[j];
         for(i=0; i<s->plane_count; i++){
@@ -1712,6 +1715,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
 
     AVFrame *picture = data;
 
+    /* release previously stored data */
+    if (p->data[0])
+        avctx->release_buffer(avctx, p);
+
     ff_init_range_decoder(c, buf, buf_size);
     ff_build_rac_states(c, 0.05*(1LL<<32), 256-8);
 
@@ -1774,9 +1781,6 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
     f->picture_number++;
 
     *picture= *p;
-
-    avctx->release_buffer(avctx, p); //FIXME
-
     *data_size = sizeof(AVFrame);
 
     return buf_size;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list