| @@ -1314,16 +1314,6 @@ typedef struct AVCodecContext { | |||||
| int b_frame_strategy; | 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. | |||||
| */ | |||||
| attribute_deprecated int hurry_up; | |||||
| #endif | |||||
| struct AVCodec *codec; | struct AVCodec *codec; | ||||
| void *priv_data; | void *priv_data; | ||||
| @@ -599,10 +599,6 @@ retry: | |||||
| s->current_picture.pict_type= s->pict_type; | s->current_picture.pict_type= s->pict_type; | ||||
| s->current_picture.key_frame= s->pict_type == FF_I_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) | 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_NONKEY && s->pict_type!=FF_I_TYPE) | ||||
| || avctx->skip_frame >= AVDISCARD_ALL) | || avctx->skip_frame >= AVDISCARD_ALL) | ||||
| @@ -597,18 +597,10 @@ retry: | |||||
| /* skip B-frames if we don't have reference frames */ | /* 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(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) | 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_NONKEY && s->pict_type!=FF_I_TYPE) | ||||
| || avctx->skip_frame >= AVDISCARD_ALL) | || avctx->skip_frame >= AVDISCARD_ALL) | ||||
| return get_consumed_bytes(s, buf_size); | 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->next_p_frame_damaged){ | ||||
| if(s->pict_type==FF_B_TYPE) | if(s->pict_type==FF_B_TYPE) | ||||
| @@ -2821,11 +2821,7 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){ | |||||
| buf_index += consumed; | buf_index += consumed; | ||||
| //FIXME do not discard SEI id | //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)) | |||||
| if(avctx->skip_frame >= AVDISCARD_NONREF && h->nal_ref_idc == 0) | |||||
| continue; | continue; | ||||
| again: | again: | ||||
| @@ -2857,9 +2853,6 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){ | |||||
| (hx->nal_unit_type == NAL_IDR_SLICE) || | (hx->nal_unit_type == NAL_IDR_SLICE) || | ||||
| (h->sei_recovery_frame_cnt >= 0); | (h->sei_recovery_frame_cnt >= 0); | ||||
| if(hx->redundant_pic_count==0 | 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_NONREF || hx->nal_ref_idc) | ||||
| && (avctx->skip_frame < AVDISCARD_BIDIR || hx->slice_type_nos!=FF_B_TYPE) | && (avctx->skip_frame < AVDISCARD_BIDIR || hx->slice_type_nos!=FF_B_TYPE) | ||||
| && (avctx->skip_frame < AVDISCARD_NONKEY || hx->slice_type_nos==FF_I_TYPE) | && (avctx->skip_frame < AVDISCARD_NONKEY || hx->slice_type_nos==FF_I_TYPE) | ||||
| @@ -2897,9 +2890,6 @@ 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 | if(hx->redundant_pic_count==0 && hx->intra_gb_ptr && hx->s.data_partitioning | ||||
| && s->context_initialized | && 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_NONREF || hx->nal_ref_idc) | ||||
| && (avctx->skip_frame < AVDISCARD_BIDIR || hx->slice_type_nos!=FF_B_TYPE) | && (avctx->skip_frame < AVDISCARD_BIDIR || hx->slice_type_nos!=FF_B_TYPE) | ||||
| && (avctx->skip_frame < AVDISCARD_NONKEY || hx->slice_type_nos==FF_I_TYPE) | && (avctx->skip_frame < AVDISCARD_NONKEY || hx->slice_type_nos==FF_I_TYPE) | ||||
| @@ -3020,11 +3010,7 @@ static int decode_frame(AVCodecContext *avctx, | |||||
| } | } | ||||
| if(!(s->flags2 & CODEC_FLAG2_CHUNKS) && !s->current_picture_ptr){ | if(!(s->flags2 & CODEC_FLAG2_CHUNKS) && !s->current_picture_ptr){ | ||||
| if (avctx->skip_frame >= AVDISCARD_NONREF | |||||
| #if FF_API_HURRY_UP | |||||
| || s->hurry_up | |||||
| #endif | |||||
| ) | |||||
| if (avctx->skip_frame >= AVDISCARD_NONREF) | |||||
| return 0; | return 0; | ||||
| av_log(avctx, AV_LOG_ERROR, "no frame!\n"); | av_log(avctx, AV_LOG_ERROR, "no frame!\n"); | ||||
| return -1; | return -1; | ||||
| @@ -2398,18 +2398,10 @@ static int decode_chunks(AVCodecContext *avctx, | |||||
| /* Skip P-frames if we do not have a reference frame or we have an invalid header. */ | /* 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(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) | 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_NONKEY && s2->pict_type!=FF_I_TYPE) | ||||
| || avctx->skip_frame >= AVDISCARD_ALL) | || avctx->skip_frame >= AVDISCARD_ALL) | ||||
| break; | 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; | if (!s->mpeg_enc_ctx_allocated) break; | ||||
| @@ -1025,9 +1025,6 @@ 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; | s->error_recognition= avctx->error_recognition; | ||||
| /* set dequantizer, we can't do it during init as it might change for mpeg4 | /* set dequantizer, we can't do it during init as it might change for mpeg4 | ||||
| @@ -1964,9 +1961,6 @@ void MPV_decode_mb_internal(MpegEncContext *s, DCTELEM block[12][64], | |||||
| } | } | ||||
| /* skip dequant / idct if we are really late ;) */ | /* 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){ | ||||
| if( (s->avctx->skip_idct >= AVDISCARD_NONREF && s->pict_type == FF_B_TYPE) | 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) | ||(s->avctx->skip_idct >= AVDISCARD_NONKEY && s->pict_type != FF_I_TYPE) | ||||
| @@ -387,11 +387,6 @@ typedef struct MpegEncContext { | |||||
| int no_rounding; /**< apply no rounding to motion compensation (MPEG4, msmpeg4, ...) | int no_rounding; /**< apply no rounding to motion compensation (MPEG4, msmpeg4, ...) | ||||
| for b-frames rounding mode is always 0 */ | 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 */ | /* macroblock layer */ | ||||
| int mb_x, mb_y; | int mb_x, mb_y; | ||||
| int mb_skip_run; | int mb_skip_run; | ||||
| @@ -124,9 +124,6 @@ static const AVOption options[]={ | |||||
| {"rc_strategy", "ratecontrol method", OFFSET(rc_strategy), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, | {"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}, | {"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}, | {"wpredp", "weighted prediction analysis method", OFFSET(weighted_p_pred), FF_OPT_TYPE_INT, 0, INT_MIN, INT_MAX, V|E}, | ||||
| #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}, | {"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}, | {"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}, | {"header_bits", NULL, OFFSET(header_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | ||||
| @@ -380,9 +380,6 @@ static void update_context_from_user(AVCodecContext *dst, AVCodecContext *src) | |||||
| dst->release_buffer = src->release_buffer; | dst->release_buffer = src->release_buffer; | ||||
| dst->opaque = src->opaque; | dst->opaque = src->opaque; | ||||
| #if FF_API_HURRY_UP | |||||
| dst->hurry_up = src->hurry_up; | |||||
| #endif | |||||
| dst->dsp_mask = src->dsp_mask; | dst->dsp_mask = src->dsp_mask; | ||||
| dst->debug = src->debug; | dst->debug = src->debug; | ||||
| dst->debug_mv = src->debug_mv; | dst->debug_mv = src->debug_mv; | ||||
| @@ -1454,19 +1454,10 @@ int ff_rv34_decode_frame(AVCodecContext *avctx, | |||||
| } | } | ||||
| if((!s->last_picture_ptr || !s->last_picture_ptr->data[0]) && si.type == FF_B_TYPE) | if((!s->last_picture_ptr || !s->last_picture_ptr->data[0]) && si.type == FF_B_TYPE) | ||||
| return -1; | 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) | 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_NONKEY && si.type!=FF_I_TYPE) | ||||
| || avctx->skip_frame >= AVDISCARD_ALL) | || avctx->skip_frame >= AVDISCARD_ALL) | ||||
| return buf_size; | 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++){ | for(i=0; i<slice_count; i++){ | ||||
| int offset= get_slice_offset(avctx, slices_hdr, i); | int offset= get_slice_offset(avctx, slices_hdr, i); | ||||
| @@ -684,9 +684,6 @@ static int svq1_decode_frame(AVCodecContext *avctx, | |||||
| //this should be removed after libavcodec can handle more flexible picture types & ordering | //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(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) | 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_NONKEY && s->pict_type!=FF_I_TYPE) | ||||
| || avctx->skip_frame >= AVDISCARD_ALL) | || avctx->skip_frame >= AVDISCARD_ALL) | ||||
| @@ -952,14 +952,6 @@ static int svq3_decode_frame(AVCodecContext *avctx, | |||||
| /* Skip B-frames if we do not have reference frames. */ | /* Skip B-frames if we do not have reference frames. */ | ||||
| if (s->last_picture_ptr == NULL && s->pict_type == FF_B_TYPE) | if (s->last_picture_ptr == NULL && s->pict_type == FF_B_TYPE) | ||||
| return 0; | 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) | 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_NONKEY && s->pict_type != FF_I_TYPE) | ||||
| || avctx->skip_frame >= AVDISCARD_ALL) | || avctx->skip_frame >= AVDISCARD_ALL) | ||||
| @@ -3510,21 +3510,11 @@ static int vc1_decode_frame(AVCodecContext *avctx, | |||||
| if(s->last_picture_ptr==NULL && (s->pict_type==FF_B_TYPE || s->dropable)){ | if(s->last_picture_ptr==NULL && (s->pict_type==FF_B_TYPE || s->dropable)){ | ||||
| goto err; | 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) | 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_NONKEY && s->pict_type!=FF_I_TYPE) | ||||
| || avctx->skip_frame >= AVDISCARD_ALL) { | || avctx->skip_frame >= AVDISCARD_ALL) { | ||||
| goto end; | 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->next_p_frame_damaged){ | ||||
| if(s->pict_type==FF_B_TYPE) | if(s->pict_type==FF_B_TYPE) | ||||
| @@ -47,9 +47,6 @@ | |||||
| #ifndef FF_API_OLD_AUDIOCONVERT | #ifndef FF_API_OLD_AUDIOCONVERT | ||||
| #define FF_API_OLD_AUDIOCONVERT (LIBAVCODEC_VERSION_MAJOR < 54) | #define FF_API_OLD_AUDIOCONVERT (LIBAVCODEC_VERSION_MAJOR < 54) | ||||
| #endif | #endif | ||||
| #ifndef FF_API_HURRY_UP | |||||
| #define FF_API_HURRY_UP (LIBAVCODEC_VERSION_MAJOR < 53) | |||||
| #endif | |||||
| #ifndef FF_API_RATE_EMU | #ifndef FF_API_RATE_EMU | ||||
| #define FF_API_RATE_EMU (LIBAVCODEC_VERSION_MAJOR < 53) | #define FF_API_RATE_EMU (LIBAVCODEC_VERSION_MAJOR < 53) | ||||
| #endif | #endif | ||||