# HG changeset patch # User conrad # Date 1222725875 0 # Node ID 66226ee647a43164ca0aecff09e566eec1173fc6 # Parent 50516d28608a29345a9cc8b8b1e48bddf71d6c5a Use skip_frame for keyframe-only decoding rather than #ifdef diff -r 50516d28608a -r 66226ee647a4 vp3.c --- 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;