diff vp3.c @ 7938:66226ee647a4 libavcodec

Use skip_frame for keyframe-only decoding rather than #ifdef
author conrad
date Mon, 29 Sep 2008 22:04:35 +0000
parents a57aee2e0ae0
children 3ff31e4454cd
line wrap: on
line diff
--- a/vp3.c	Mon Sep 29 15:41:55 2008 +0000
+++ b/vp3.c	Mon Sep 29 22:04:35 2008 +0000
@@ -49,7 +49,6 @@
  * Define one or more of the following compile-time variables to 1 to obtain
  * elaborate information about certain aspects of the decoding process.
  *
- * KEYFRAMES_ONLY: set this to 1 to only see keyframes (VP3 slideshow mode)
  * DEBUG_VP3: high-level decoding flow
  * DEBUG_INIT: initialization parameters
  * DEBUG_DEQUANTIZERS: display how the dequanization tables are built
@@ -62,8 +61,6 @@
  * DEBUG_IDCT: show every detail of the IDCT process
  */
 
-#define KEYFRAMES_ONLY 0
-
 #define DEBUG_VP3 0
 #define DEBUG_INIT 0
 #define DEBUG_DEQUANTIZERS 0
@@ -2176,6 +2173,9 @@
         init_loop_filter(s);
     }
 
+    if (avctx->skip_frame >= AVDISCARD_NONKEY && !s->keyframe)
+        return buf_size;
+
     if (s->keyframe) {
         if (!s->theora)
         {
@@ -2242,19 +2242,6 @@
 
     init_frame(s, &gb);
 
-#if KEYFRAMES_ONLY
-if (!s->keyframe) {
-
-    memcpy(s->current_frame.data[0], s->golden_frame.data[0],
-        s->current_frame.linesize[0] * s->height);
-    memcpy(s->current_frame.data[1], s->golden_frame.data[1],
-        s->current_frame.linesize[1] * s->height / 2);
-    memcpy(s->current_frame.data[2], s->golden_frame.data[2],
-        s->current_frame.linesize[2] * s->height / 2);
-
-} else {
-#endif
-
     if (unpack_superblocks(s, &gb)){
         av_log(s->avctx, AV_LOG_ERROR, "error in unpack_superblocks\n");
         return -1;
@@ -2284,9 +2271,6 @@
         render_slice(s, i);
 
     apply_loop_filter(s);
-#if KEYFRAMES_ONLY
-}
-#endif
 
     *data_size=sizeof(AVFrame);
     *(AVFrame*)data= s->current_frame;