diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-04-03 02:28:01 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-04-03 02:28:01 +0200 |
commit | f35439699f5546774b840ae9fba7df82729ef0ff (patch) | |
tree | 92c22313b8eda656421372955598d647aa64242e /libavcodec | |
parent | 85c9365d65c4d03c468cead13f722ddce89d8495 (diff) | |
parent | bc154882e11f4a218cc8cfb10ae0b4cbc83b5f9f (diff) | |
download | ffmpeg-f35439699f5546774b840ae9fba7df82729ef0ff.tar.gz |
Merge remote branch 'qatar/master'
* qatar/master:
Fixed-point MDCT with 32-bit unscaled output
lavc: deprecate rate_emu
lavc: mark hurry_up for removal on next major bump
parser: mark av_parser_parse() for removal on next major bump
lavc: add missing audioconvert includes
jvdec: don't use deprecated CODEC_TYPE_*/PKT_FLAG_KEY
Conflicts:
libavcodec/h264.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/avcodec.h | 8 | ||||
-rw-r--r-- | libavcodec/fft-internal.h | 14 | ||||
-rw-r--r-- | libavcodec/fft.c | 3 | ||||
-rw-r--r-- | libavcodec/fft.h | 5 | ||||
-rw-r--r-- | libavcodec/h261dec.c | 4 | ||||
-rw-r--r-- | libavcodec/h263dec.c | 6 | ||||
-rw-r--r-- | libavcodec/h264.c | 22 | ||||
-rw-r--r-- | libavcodec/jvdec.c | 2 | ||||
-rw-r--r-- | libavcodec/mdct_fixed.c | 44 | ||||
-rw-r--r-- | libavcodec/mlp_parser.c | 1 | ||||
-rw-r--r-- | libavcodec/mpeg12.c | 4 | ||||
-rw-r--r-- | libavcodec/mpegaudiodec.c | 1 | ||||
-rw-r--r-- | libavcodec/mpegvideo.c | 4 | ||||
-rw-r--r-- | libavcodec/mpegvideo.h | 2 | ||||
-rw-r--r-- | libavcodec/options.c | 6 | ||||
-rw-r--r-- | libavcodec/parser.c | 2 | ||||
-rw-r--r-- | libavcodec/pthread.c | 2 | ||||
-rw-r--r-- | libavcodec/rv34.c | 4 | ||||
-rw-r--r-- | libavcodec/svq1dec.c | 2 | ||||
-rw-r--r-- | libavcodec/svq3.c | 4 | ||||
-rw-r--r-- | libavcodec/vc1dec.c | 6 | ||||
-rw-r--r-- | libavcodec/version.h | 6 |
22 files changed, 137 insertions, 15 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 893822b3ab..712a34af31 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1218,13 +1218,15 @@ typedef struct AVCodecContext { */ enum PixelFormat pix_fmt; +#if FF_API_RATE_EMU /** * Frame rate emulation. If not zero, the lower layer (i.e. format handler) * has to read frames at native frame rate. * - encoding: Set by user. * - decoding: unused */ - int rate_emu; + attribute_deprecated int rate_emu; +#endif /** * If non NULL, 'draw_horiz_band' is called by the libavcodec @@ -1330,13 +1332,15 @@ typedef struct AVCodecContext { int b_frame_strategy; +#if FF_API_HURRY_UP /** * hurry up amount * - encoding: unused * - decoding: Set by user. 1-> Skip B-frames, 2-> Skip IDCT/dequant too, 5-> Skip everything except header * @deprecated Deprecated in favor of skip_idct and skip_frame. */ - int hurry_up; + attribute_deprecated int hurry_up; +#endif struct AVCodec *codec; diff --git a/libavcodec/fft-internal.h b/libavcodec/fft-internal.h index ae76eafc4e..61066bb18b 100644 --- a/libavcodec/fft-internal.h +++ b/libavcodec/fft-internal.h @@ -39,6 +39,8 @@ #include "libavutil/intmath.h" #include "mathops.h" +void ff_mdct_calcw_c(FFTContext *s, FFTDouble *output, const FFTSample *input); + #define SCALE_FLOAT(a, bits) lrint((a) * (double)(1 << (bits))) #define FIX15(a) av_clip(SCALE_FLOAT(a, 15), -32767, 32767) @@ -49,11 +51,17 @@ y = (a + b) >> 1; \ } while (0) -#define CMUL(dre, dim, are, aim, bre, bim) do { \ - (dre) = (MUL16(are, bre) - MUL16(aim, bim)) >> 15; \ - (dim) = (MUL16(are, bim) + MUL16(aim, bre)) >> 15; \ +#define CMULS(dre, dim, are, aim, bre, bim, sh) do { \ + (dre) = (MUL16(are, bre) - MUL16(aim, bim)) >> sh; \ + (dim) = (MUL16(are, bim) + MUL16(aim, bre)) >> sh; \ } while (0) +#define CMUL(dre, dim, are, aim, bre, bim) \ + CMULS(dre, dim, are, aim, bre, bim, 15) + +#define CMULL(dre, dim, are, aim, bre, bim) \ + CMULS(dre, dim, are, aim, bre, bim, 0) + #endif /* CONFIG_FFT_FLOAT */ #define ff_imdct_calc_c FFT_NAME(ff_imdct_calc_c) diff --git a/libavcodec/fft.c b/libavcodec/fft.c index d12d9f7f99..c8f74a2d89 100644 --- a/libavcodec/fft.c +++ b/libavcodec/fft.c @@ -123,6 +123,9 @@ av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse) if (ARCH_ARM) ff_fft_init_arm(s); if (HAVE_ALTIVEC) ff_fft_init_altivec(s); if (HAVE_MMX) ff_fft_init_mmx(s); + if (CONFIG_MDCT) s->mdct_calcw = s->mdct_calc; +#else + if (CONFIG_MDCT) s->mdct_calcw = ff_mdct_calcw_c; #endif for(j=4; j<=nbits; j++) { diff --git a/libavcodec/fft.h b/libavcodec/fft.h index b913ae6a66..f3f0f18289 100644 --- a/libavcodec/fft.h +++ b/libavcodec/fft.h @@ -53,6 +53,10 @@ typedef struct FFTContext FFTContext; #endif /* CONFIG_FFT_FLOAT */ +typedef struct FFTDComplex { + FFTDouble re, im; +} FFTDComplex; + /* FFT computation */ struct FFTContext { @@ -77,6 +81,7 @@ struct FFTContext { void (*imdct_calc)(struct FFTContext *s, FFTSample *output, const FFTSample *input); void (*imdct_half)(struct FFTContext *s, FFTSample *output, const FFTSample *input); void (*mdct_calc)(struct FFTContext *s, FFTSample *output, const FFTSample *input); + void (*mdct_calcw)(struct FFTContext *s, FFTDouble *output, const FFTSample *input); int fft_permutation; #define FF_FFT_PERM_DEFAULT 0 #define FF_FFT_PERM_SWAP_LSBS 1 diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index 9f18199b04..060aef6173 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -595,12 +595,14 @@ retry: goto retry; } - // for hurry_up==5 + // for skipping the frame s->current_picture.pict_type= s->pict_type; s->current_picture.key_frame= s->pict_type == FF_I_TYPE; +#if FF_API_HURRY_UP /* skip everything if we are in a hurry>=5 */ if(avctx->hurry_up>=5) return get_consumed_bytes(s, buf_size); +#endif if( (avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type==FF_B_TYPE) ||(avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type!=FF_I_TYPE) || avctx->skip_frame >= AVDISCARD_ALL) diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 4830202634..4151f4b012 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -606,20 +606,24 @@ retry: if((s->codec_id==CODEC_ID_H263 || s->codec_id==CODEC_ID_H263P || s->codec_id == CODEC_ID_H263I)) s->gob_index = ff_h263_get_gob_height(s); - // for hurry_up==5 + // for skipping the frame s->current_picture.pict_type= s->pict_type; s->current_picture.key_frame= s->pict_type == FF_I_TYPE; /* skip B-frames if we don't have reference frames */ if(s->last_picture_ptr==NULL && (s->pict_type==FF_B_TYPE || s->dropable)) return get_consumed_bytes(s, buf_size); +#if FF_API_HURRY_UP /* skip b frames if we are in a hurry */ if(avctx->hurry_up && s->pict_type==FF_B_TYPE) return get_consumed_bytes(s, buf_size); +#endif if( (avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type==FF_B_TYPE) || (avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type!=FF_I_TYPE) || avctx->skip_frame >= AVDISCARD_ALL) return get_consumed_bytes(s, buf_size); +#if FF_API_HURRY_UP /* skip everything if we are in a hurry>=5 */ if(avctx->hurry_up>=5) return get_consumed_bytes(s, buf_size); +#endif if(s->next_p_frame_damaged){ if(s->pict_type==FF_B_TYPE) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index d48aa3ea8a..e082320ec5 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -3313,8 +3313,12 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){ buf_index += consumed; - if( (s->hurry_up == 1 && h->nal_ref_idc == 0) //FIXME do not discard SEI id - ||(avctx->skip_frame >= AVDISCARD_NONREF && h->nal_ref_idc == 0)) + //FIXME do not discard SEI id + if( +#if FF_API_HURRY_UP + (s->hurry_up == 1 && h->nal_ref_idc == 0) || +#endif + (avctx->skip_frame >= AVDISCARD_NONREF && h->nal_ref_idc == 0)) continue; again: @@ -3350,7 +3354,10 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){ ff_vdpau_h264_picture_start(s); } - if(hx->redundant_pic_count==0 && hx->s.hurry_up < 5 + if(hx->redundant_pic_count==0 +#if FF_API_HURRY_UP + && hx->s.hurry_up < 5 +#endif && (avctx->skip_frame < AVDISCARD_NONREF || hx->nal_ref_idc) && (avctx->skip_frame < AVDISCARD_BIDIR || hx->slice_type_nos!=FF_B_TYPE) && (avctx->skip_frame < AVDISCARD_NONKEY || hx->slice_type_nos==FF_I_TYPE) @@ -3388,7 +3395,9 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){ if(hx->redundant_pic_count==0 && hx->intra_gb_ptr && hx->s.data_partitioning && s->context_initialized +#if FF_API_HURRY_UP && s->hurry_up < 5 +#endif && (avctx->skip_frame < AVDISCARD_NONREF || hx->nal_ref_idc) && (avctx->skip_frame < AVDISCARD_BIDIR || hx->slice_type_nos!=FF_B_TYPE) && (avctx->skip_frame < AVDISCARD_NONKEY || hx->slice_type_nos==FF_I_TYPE) @@ -3511,7 +3520,12 @@ static int decode_frame(AVCodecContext *avctx, } if(!(s->flags2 & CODEC_FLAG2_CHUNKS) && !s->current_picture_ptr){ - if (avctx->skip_frame >= AVDISCARD_NONREF || s->hurry_up) return 0; + if (avctx->skip_frame >= AVDISCARD_NONREF +#if FF_API_HURRY_UP + || s->hurry_up +#endif + ) + return 0; av_log(avctx, AV_LOG_ERROR, "no frame!\n"); return -1; } diff --git a/libavcodec/jvdec.c b/libavcodec/jvdec.c index 61faef6a54..9e978521ba 100644 --- a/libavcodec/jvdec.c +++ b/libavcodec/jvdec.c @@ -205,7 +205,7 @@ static av_cold int decode_close(AVCodecContext *avctx) AVCodec ff_jv_decoder = { .name = "jv", .long_name = NULL_IF_CONFIG_SMALL("Bitmap Brothers JV video"), - .type = CODEC_TYPE_VIDEO, + .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_JV, .priv_data_size = sizeof(JvContext), .init = decode_init, diff --git a/libavcodec/mdct_fixed.c b/libavcodec/mdct_fixed.c index 5e5819ee34..794a3e0bc2 100644 --- a/libavcodec/mdct_fixed.c +++ b/libavcodec/mdct_fixed.c @@ -18,3 +18,47 @@ #define CONFIG_FFT_FLOAT 0 #include "mdct.c" + +/* same as ff_mdct_calcw_c with double-width unscaled output */ +void ff_mdct_calcw_c(FFTContext *s, FFTDouble *out, const FFTSample *input) +{ + int i, j, n, n8, n4, n2, n3; + FFTDouble re, im; + const uint16_t *revtab = s->revtab; + const FFTSample *tcos = s->tcos; + const FFTSample *tsin = s->tsin; + FFTComplex *x = s->tmp_buf; + FFTDComplex *o = (FFTDComplex *)out; + + n = 1 << s->mdct_bits; + n2 = n >> 1; + n4 = n >> 2; + n8 = n >> 3; + n3 = 3 * n4; + + /* pre rotation */ + for(i=0;i<n8;i++) { + re = RSCALE(-input[2*i+n3] - input[n3-1-2*i]); + im = RSCALE(-input[n4+2*i] + input[n4-1-2*i]); + j = revtab[i]; + CMUL(x[j].re, x[j].im, re, im, -tcos[i], tsin[i]); + + re = RSCALE( input[2*i] - input[n2-1-2*i]); + im = RSCALE(-input[n2+2*i] - input[ n-1-2*i]); + j = revtab[n8 + i]; + CMUL(x[j].re, x[j].im, re, im, -tcos[n8 + i], tsin[n8 + i]); + } + + s->fft_calc(s, x); + + /* post rotation */ + for(i=0;i<n8;i++) { + FFTDouble r0, i0, r1, i1; + CMULL(i1, r0, x[n8-i-1].re, x[n8-i-1].im, -tsin[n8-i-1], -tcos[n8-i-1]); + CMULL(i0, r1, x[n8+i ].re, x[n8+i ].im, -tsin[n8+i ], -tcos[n8+i ]); + o[n8-i-1].re = r0; + o[n8-i-1].im = i0; + o[n8+i ].re = r1; + o[n8+i ].im = i1; + } +} diff --git a/libavcodec/mlp_parser.c b/libavcodec/mlp_parser.c index 38b80e0dfc..5f0b49a0af 100644 --- a/libavcodec/mlp_parser.c +++ b/libavcodec/mlp_parser.c @@ -27,6 +27,7 @@ #include <stdint.h> #include "libavutil/crc.h" +#include "libavutil/audioconvert.h" #include "get_bits.h" #include "parser.h" #include "mlp_parser.h" diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 774ac83a3e..e2633c9eaa 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -2459,14 +2459,18 @@ static int decode_chunks(AVCodecContext *avctx, /* Skip P-frames if we do not have a reference frame or we have an invalid header. */ if(s2->pict_type==FF_P_TYPE && !s->sync) break; } +#if FF_API_HURRY_UP /* Skip B-frames if we are in a hurry. */ if(avctx->hurry_up && s2->pict_type==FF_B_TYPE) break; +#endif if( (avctx->skip_frame >= AVDISCARD_NONREF && s2->pict_type==FF_B_TYPE) ||(avctx->skip_frame >= AVDISCARD_NONKEY && s2->pict_type!=FF_I_TYPE) || avctx->skip_frame >= AVDISCARD_ALL) break; +#if FF_API_HURRY_UP /* Skip everything if we are in a hurry>=5. */ if(avctx->hurry_up>=5) break; +#endif if (!s->mpeg_enc_ctx_allocated) break; diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c index aa31e46aca..5d420dca3e 100644 --- a/libavcodec/mpegaudiodec.c +++ b/libavcodec/mpegaudiodec.c @@ -24,6 +24,7 @@ * MPEG Audio decoder. */ +#include "libavutil/audioconvert.h" #include "avcodec.h" #include "get_bits.h" #include "dsputil.h" diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index dd003b48c3..fb6df40447 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -1120,7 +1120,9 @@ int MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx) } } +#if FF_API_HURRY_UP s->hurry_up= s->avctx->hurry_up; +#endif s->error_recognition= avctx->error_recognition; /* set dequantizer, we can't do it during init as it might change for mpeg4 @@ -2112,7 +2114,9 @@ void MPV_decode_mb_internal(MpegEncContext *s, DCTELEM block[12][64], } /* skip dequant / idct if we are really late ;) */ +#if FF_API_HURRY_UP if(s->hurry_up>1) goto skip_idct; +#endif if(s->avctx->skip_idct){ if( (s->avctx->skip_idct >= AVDISCARD_NONREF && s->pict_type == FF_B_TYPE) ||(s->avctx->skip_idct >= AVDISCARD_NONKEY && s->pict_type != FF_I_TYPE) diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 3e447abd23..3a47ebe2bc 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -390,8 +390,10 @@ typedef struct MpegEncContext { int no_rounding; /**< apply no rounding to motion compensation (MPEG4, msmpeg4, ...) for b-frames rounding mode is always 0 */ +#if FF_API_HURRY_UP int hurry_up; /**< when set to 1 during decoding, b frames will be skipped when set to 2 idct/dequant will be skipped too */ +#endif /* macroblock layer */ int mb_x, mb_y; diff --git a/libavcodec/options.c b/libavcodec/options.c index 47854d9d08..a5fa5eb606 100644 --- a/libavcodec/options.c +++ b/libavcodec/options.c @@ -105,7 +105,9 @@ static const AVOption options[]={ {"extradata_size", NULL, OFFSET(extradata_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, {"time_base", NULL, OFFSET(time_base), FF_OPT_TYPE_RATIONAL, DEFAULT, INT_MIN, INT_MAX}, {"g", "set the group of picture size", OFFSET(gop_size), FF_OPT_TYPE_INT, 12, INT_MIN, INT_MAX, V|E}, +#if FF_API_RATE_EMU {"rate_emu", "frame rate emulation", OFFSET(rate_emu), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, +#endif {"ar", "set audio sampling rate (in Hz)", OFFSET(sample_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, {"ac", "set number of audio channels", OFFSET(channels), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, {"cutoff", "set cutoff bandwidth", OFFSET(cutoff), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, A|E}, @@ -125,7 +127,9 @@ static const AVOption options[]={ {"rc_strategy", "ratecontrol method", OFFSET(rc_strategy), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, {"b_strategy", "strategy to choose between I/P/B-frames", OFFSET(b_frame_strategy), FF_OPT_TYPE_INT, 0, INT_MIN, INT_MAX, V|E}, {"wpredp", "weighted prediction analysis method", OFFSET(weighted_p_pred), FF_OPT_TYPE_INT, 0, INT_MIN, INT_MAX, V|E}, -{"hurry_up", NULL, OFFSET(hurry_up), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D}, +#if FF_API_HURRY_UP +{"hurry_up", "deprecated, use skip_idct/skip_frame instead", OFFSET(hurry_up), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D}, +#endif {"ps", "rtp payload size in bytes", OFFSET(rtp_payload_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, {"mv_bits", NULL, OFFSET(mv_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, {"header_bits", NULL, OFFSET(header_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, diff --git a/libavcodec/parser.c b/libavcodec/parser.c index d877f5d411..414a564b7d 100644 --- a/libavcodec/parser.c +++ b/libavcodec/parser.c @@ -105,6 +105,7 @@ void ff_fetch_timestamp(AVCodecParserContext *s, int off, int remove){ } } +#if LIBAVCODEC_VERSION_MINOR < 53 /** * * @param buf input @@ -139,6 +140,7 @@ int av_parser_parse(AVCodecParserContext *s, { return av_parser_parse2(s, avctx, poutbuf, poutbuf_size, buf, buf_size, pts, dts, AV_NOPTS_VALUE); } +#endif int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, diff --git a/libavcodec/pthread.c b/libavcodec/pthread.c index 380edaa4c5..da63234887 100644 --- a/libavcodec/pthread.c +++ b/libavcodec/pthread.c @@ -380,7 +380,9 @@ static void update_context_from_user(AVCodecContext *dst, AVCodecContext *src) dst->release_buffer = src->release_buffer; dst->opaque = src->opaque; +#if FF_API_HURRY_UP dst->hurry_up = src->hurry_up; +#endif dst->dsp_mask = src->dsp_mask; dst->debug = src->debug; dst->debug_mv = src->debug_mv; diff --git a/libavcodec/rv34.c b/libavcodec/rv34.c index 08fa8a90ff..fbfe034b43 100644 --- a/libavcodec/rv34.c +++ b/libavcodec/rv34.c @@ -1454,15 +1454,19 @@ int ff_rv34_decode_frame(AVCodecContext *avctx, } if((!s->last_picture_ptr || !s->last_picture_ptr->data[0]) && si.type == FF_B_TYPE) return -1; +#if FF_API_HURRY_UP /* skip b frames if we are in a hurry */ if(avctx->hurry_up && si.type==FF_B_TYPE) return buf_size; +#endif if( (avctx->skip_frame >= AVDISCARD_NONREF && si.type==FF_B_TYPE) || (avctx->skip_frame >= AVDISCARD_NONKEY && si.type!=FF_I_TYPE) || avctx->skip_frame >= AVDISCARD_ALL) return buf_size; +#if FF_API_HURRY_UP /* skip everything if we are in a hurry>=5 */ if(avctx->hurry_up>=5) return buf_size; +#endif for(i=0; i<slice_count; i++){ int offset= get_slice_offset(avctx, slices_hdr, i); diff --git a/libavcodec/svq1dec.c b/libavcodec/svq1dec.c index eb7100713e..cb84ea98a3 100644 --- a/libavcodec/svq1dec.c +++ b/libavcodec/svq1dec.c @@ -684,7 +684,9 @@ static int svq1_decode_frame(AVCodecContext *avctx, //this should be removed after libavcodec can handle more flexible picture types & ordering if(s->pict_type==FF_B_TYPE && s->last_picture_ptr==NULL) return buf_size; +#if FF_API_HURRY_UP if(avctx->hurry_up && s->pict_type==FF_B_TYPE) return buf_size; +#endif if( (avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type==FF_B_TYPE) ||(avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type!=FF_I_TYPE) || avctx->skip_frame >= AVDISCARD_ALL) diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c index 5162e99243..c7119b975b 100644 --- a/libavcodec/svq3.c +++ b/libavcodec/svq3.c @@ -945,19 +945,21 @@ static int svq3_decode_frame(AVCodecContext *avctx, s->adaptive_quant, s->qscale, h->slice_num); } - /* for hurry_up == 5 */ + /* for skipping the frame */ s->current_picture.pict_type = s->pict_type; s->current_picture.key_frame = (s->pict_type == FF_I_TYPE); /* Skip B-frames if we do not have reference frames. */ if (s->last_picture_ptr == NULL && s->pict_type == FF_B_TYPE) return 0; +#if FF_API_HURRY_UP /* Skip B-frames if we are in a hurry. */ if (avctx->hurry_up && s->pict_type == FF_B_TYPE) return 0; /* Skip everything if we are in a hurry >= 5. */ if (avctx->hurry_up >= 5) return 0; +#endif if ( (avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type == FF_B_TYPE) ||(avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type != FF_I_TYPE) || avctx->skip_frame >= AVDISCARD_ALL) diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index 4bc7c9d962..c3b4b83367 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -3374,7 +3374,7 @@ static int vc1_decode_frame(AVCodecContext *avctx, goto err; } - // for hurry_up==5 + // for skipping the frame s->current_picture.pict_type= s->pict_type; s->current_picture.key_frame= s->pict_type == FF_I_TYPE; @@ -3382,17 +3382,21 @@ static int vc1_decode_frame(AVCodecContext *avctx, if(s->last_picture_ptr==NULL && (s->pict_type==FF_B_TYPE || s->dropable)){ goto err; } +#if FF_API_HURRY_UP /* skip b frames if we are in a hurry */ if(avctx->hurry_up && s->pict_type==FF_B_TYPE) return -1;//buf_size; +#endif if( (avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type==FF_B_TYPE) || (avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type!=FF_I_TYPE) || avctx->skip_frame >= AVDISCARD_ALL) { goto end; } +#if FF_API_HURRY_UP /* skip everything if we are in a hurry>=5 */ if(avctx->hurry_up>=5) { goto err; } +#endif if(s->next_p_frame_damaged){ if(s->pict_type==FF_B_TYPE) diff --git a/libavcodec/version.h b/libavcodec/version.h index 5aa0b82c45..9d211b90fe 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -71,5 +71,11 @@ #ifndef FF_API_OLD_AUDIOCONVERT #define FF_API_OLD_AUDIOCONVERT (LIBAVCODEC_VERSION_MAJOR < 53) #endif +#ifndef FF_API_HURRY_UP +#define FF_API_HURRY_UP (LIBAVCODEC_VERSION_MAJOR < 53) +#endif +#ifndef FF_API_RATE_EMU +#define FF_API_RATE_EMU (LIBAVCODEC_VERSION_MAJOR < 53) +#endif #endif /* AVCODEC_VERSION_H */ |