Commit 068e82ba authored by David Conrad's avatar David Conrad

Use skip_frame for keyframe-only decoding rather than #ifdef

Originally committed as revision 15463 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent bf615b89
...@@ -49,7 +49,6 @@ ...@@ -49,7 +49,6 @@
* Define one or more of the following compile-time variables to 1 to obtain * Define one or more of the following compile-time variables to 1 to obtain
* elaborate information about certain aspects of the decoding process. * 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_VP3: high-level decoding flow
* DEBUG_INIT: initialization parameters * DEBUG_INIT: initialization parameters
* DEBUG_DEQUANTIZERS: display how the dequanization tables are built * DEBUG_DEQUANTIZERS: display how the dequanization tables are built
...@@ -62,8 +61,6 @@ ...@@ -62,8 +61,6 @@
* DEBUG_IDCT: show every detail of the IDCT process * DEBUG_IDCT: show every detail of the IDCT process
*/ */
#define KEYFRAMES_ONLY 0
#define DEBUG_VP3 0 #define DEBUG_VP3 0
#define DEBUG_INIT 0 #define DEBUG_INIT 0
#define DEBUG_DEQUANTIZERS 0 #define DEBUG_DEQUANTIZERS 0
...@@ -2176,6 +2173,9 @@ static int vp3_decode_frame(AVCodecContext *avctx, ...@@ -2176,6 +2173,9 @@ static int vp3_decode_frame(AVCodecContext *avctx,
init_loop_filter(s); init_loop_filter(s);
} }
if (avctx->skip_frame >= AVDISCARD_NONKEY && !s->keyframe)
return buf_size;
if (s->keyframe) { if (s->keyframe) {
if (!s->theora) if (!s->theora)
{ {
...@@ -2242,19 +2242,6 @@ static int vp3_decode_frame(AVCodecContext *avctx, ...@@ -2242,19 +2242,6 @@ static int vp3_decode_frame(AVCodecContext *avctx,
init_frame(s, &gb); 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)){ if (unpack_superblocks(s, &gb)){
av_log(s->avctx, AV_LOG_ERROR, "error in unpack_superblocks\n"); av_log(s->avctx, AV_LOG_ERROR, "error in unpack_superblocks\n");
return -1; return -1;
...@@ -2284,9 +2271,6 @@ if (!s->keyframe) { ...@@ -2284,9 +2271,6 @@ if (!s->keyframe) {
render_slice(s, i); render_slice(s, i);
apply_loop_filter(s); apply_loop_filter(s);
#if KEYFRAMES_ONLY
}
#endif
*data_size=sizeof(AVFrame); *data_size=sizeof(AVFrame);
*(AVFrame*)data= s->current_frame; *(AVFrame*)data= s->current_frame;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment