comparison snow.c @ 3766:acf9ca729bd2 libavcodec

Handle possible failure of ff_eval.
author takis
date Tue, 26 Sep 2006 14:04:36 +0000
parents fc714e9a5419
children 3a151ccc6ed7
comparison
equal deleted inserted replaced
3765:c38b14835b62 3766:acf9ca729bd2
3873 s->m.current_picture.mc_mb_var_sum= coef_sum; 3873 s->m.current_picture.mc_mb_var_sum= coef_sum;
3874 s->m.current_picture.mb_var_sum= 0; 3874 s->m.current_picture.mb_var_sum= 0;
3875 } 3875 }
3876 3876
3877 pict->quality= ff_rate_estimate_qscale(&s->m, 1); 3877 pict->quality= ff_rate_estimate_qscale(&s->m, 1);
3878 if (pict->quality < 0)
3879 return -1;
3878 s->lambda= pict->quality * 3/2; 3880 s->lambda= pict->quality * 3/2;
3879 delta_qlog= qscale2qlog(pict->quality) - s->qlog; 3881 delta_qlog= qscale2qlog(pict->quality) - s->qlog;
3880 s->qlog+= delta_qlog; 3882 s->qlog+= delta_qlog;
3881 return delta_qlog; 3883 return delta_qlog;
3882 } 3884 }
4058 s->m.picture_number= avctx->frame_number; 4060 s->m.picture_number= avctx->frame_number;
4059 if(avctx->flags&CODEC_FLAG_PASS2){ 4061 if(avctx->flags&CODEC_FLAG_PASS2){
4060 s->m.pict_type = 4062 s->m.pict_type =
4061 pict->pict_type= s->m.rc_context.entry[avctx->frame_number].new_pict_type; 4063 pict->pict_type= s->m.rc_context.entry[avctx->frame_number].new_pict_type;
4062 s->keyframe= pict->pict_type==FF_I_TYPE; 4064 s->keyframe= pict->pict_type==FF_I_TYPE;
4063 if(!(avctx->flags&CODEC_FLAG_QSCALE)) 4065 if(!(avctx->flags&CODEC_FLAG_QSCALE)) {
4064 pict->quality= ff_rate_estimate_qscale(&s->m, 0); 4066 pict->quality= ff_rate_estimate_qscale(&s->m, 0);
4067 if (pict->quality < 0)
4068 return -1;
4069 }
4065 }else{ 4070 }else{
4066 s->keyframe= avctx->gop_size==0 || avctx->frame_number % avctx->gop_size == 0; 4071 s->keyframe= avctx->gop_size==0 || avctx->frame_number % avctx->gop_size == 0;
4067 s->m.pict_type= 4072 s->m.pict_type=
4068 pict->pict_type= s->keyframe ? FF_I_TYPE : FF_P_TYPE; 4073 pict->pict_type= s->keyframe ? FF_I_TYPE : FF_P_TYPE;
4069 } 4074 }
4179 4184
4180 ff_spatial_dwt(s->spatial_dwt_buffer, w, h, w, s->spatial_decomposition_type, s->spatial_decomposition_count); 4185 ff_spatial_dwt(s->spatial_dwt_buffer, w, h, w, s->spatial_decomposition_type, s->spatial_decomposition_count);
4181 4186
4182 if(s->pass1_rc && plane_index==0){ 4187 if(s->pass1_rc && plane_index==0){
4183 int delta_qlog = ratecontrol_1pass(s, pict); 4188 int delta_qlog = ratecontrol_1pass(s, pict);
4189 if (delta_qlog < 0)
4190 return -1;
4184 if(delta_qlog){ 4191 if(delta_qlog){
4185 //reordering qlog in the bitstream would eliminate this reset 4192 //reordering qlog in the bitstream would eliminate this reset
4186 ff_init_range_encoder(c, buf, buf_size); 4193 ff_init_range_encoder(c, buf, buf_size);
4187 memcpy(s->header_state, rc_header_bak, sizeof(s->header_state)); 4194 memcpy(s->header_state, rc_header_bak, sizeof(s->header_state));
4188 memcpy(s->block_state, rc_block_bak, sizeof(s->block_state)); 4195 memcpy(s->block_state, rc_block_bak, sizeof(s->block_state));
4265 s->m.current_picture.display_picture_number = 4272 s->m.current_picture.display_picture_number =
4266 s->m.current_picture.coded_picture_number = avctx->frame_number; 4273 s->m.current_picture.coded_picture_number = avctx->frame_number;
4267 s->m.current_picture.quality = pict->quality; 4274 s->m.current_picture.quality = pict->quality;
4268 s->m.total_bits += 8*(s->c.bytestream - s->c.bytestream_start); 4275 s->m.total_bits += 8*(s->c.bytestream - s->c.bytestream_start);
4269 if(s->pass1_rc) 4276 if(s->pass1_rc)
4270 ff_rate_estimate_qscale(&s->m, 0); 4277 if (ff_rate_estimate_qscale(&s->m, 0) < 0)
4278 return -1;
4271 if(avctx->flags&CODEC_FLAG_PASS1) 4279 if(avctx->flags&CODEC_FLAG_PASS1)
4272 ff_write_pass1_stats(&s->m); 4280 ff_write_pass1_stats(&s->m);
4273 s->m.last_pict_type = s->m.pict_type; 4281 s->m.last_pict_type = s->m.pict_type;
4274 4282
4275 emms_c(); 4283 emms_c();