changeset 11421:438b6d4096a8 libavcodec

vp3: use FF_BUFFER_TYPE_COPY
author conrad
date Tue, 09 Mar 2010 00:29:19 +0000
parents 57e3c39078bf
children 56266eb23fb7
files vp3.c
diffstat 1 files changed, 4 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/vp3.c	Tue Mar 09 00:29:16 2010 +0000
+++ b/vp3.c	Tue Mar 09 00:29:19 2010 +0000
@@ -1889,8 +1889,7 @@
 
     /* release the last frame, if it is allocated and if it is not the
      * golden frame */
-    if ((s->last_frame.data[0]) &&
-        (s->last_frame.data[0] != s->golden_frame.data[0]))
+    if (s->last_frame.data[0] && s->last_frame.type != FF_BUFFER_TYPE_COPY)
         avctx->release_buffer(avctx, &s->last_frame);
 
     /* shuffle frames (last = current) */
@@ -1900,6 +1899,7 @@
         if (s->golden_frame.data[0])
             avctx->release_buffer(avctx, &s->golden_frame);
         s->golden_frame = s->current_frame;
+        s->last_frame.type = FF_BUFFER_TYPE_COPY;
     }
 
     s->current_frame.data[0]= NULL; /* ensure that we catch any access to this released frame */
@@ -1941,9 +1941,9 @@
     free_vlc(&s->motion_vector_vlc);
 
     /* release all frames */
-    if (s->golden_frame.data[0] && s->golden_frame.data[0] != s->last_frame.data[0])
+    if (s->golden_frame.data[0])
         avctx->release_buffer(avctx, &s->golden_frame);
-    if (s->last_frame.data[0])
+    if (s->last_frame.data[0] && s->last_frame.type != FF_BUFFER_TYPE_COPY)
         avctx->release_buffer(avctx, &s->last_frame);
     /* no need to release the current_frame since it will always be pointing
      * to the same frame as either the golden or last frame */