mirror of https://git.ffmpeg.org/ffmpeg.git
Use skip_frame for keyframe-only decoding rather than #ifdef
Originally committed as revision 15463 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
bf615b89e3
commit
068e82bac1
|
@ -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 @@
|
||||||
* 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,
|
||||||
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,
|
||||||
|
|
||||||
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) {
|
||||||
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;
|
||||||
|
|
Loading…
Reference in New Issue