if(undamaged_count < 5) return 0; //almost all MBs damaged -> use temporal prediction
-#if CONFIG_MPEG_XVMC_DECODER
//prevent dsp.sad() check, that requires access to the image
- if(s->avctx->xvmc_acceleration && s->pict_type==FF_I_TYPE) return 1;
-#endif
+ if(CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration && s->pict_type == FF_I_TYPE)
+ return 1;
skip_amount= FFMAX(undamaged_count/50, 1); //check only upto 50 MBs
is_intra_likely=0;
}else
guess_mv(s);
-#if CONFIG_MPEG_XVMC_DECODER
/* the filters below are not XvMC compatible, skip them */
- if(s->avctx->xvmc_acceleration) goto ec_clean;
-#endif
+ if(CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration)
+ goto ec_clean;
/* fill DC for inter blocks */
for(mb_y=0; mb_y<s->mb_height; mb_y++){
for(mb_x=0; mb_x<s->mb_width; mb_x++){
v_block_filter(s, s->current_picture.data[2], s->mb_width , s->mb_height , s->uvlinesize, 0);
}
-#if CONFIG_MPEG_XVMC_DECODER
ec_clean:
-#endif
/* clean a few tables */
for(i=0; i<s->mb_num; i++){
const int mb_xy= s->mb_index2xy[i];
update_noise_reduction(s);
}
-#if CONFIG_MPEG_XVMC_DECODER
- if(s->avctx->xvmc_acceleration)
+ if(CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration)
return ff_xvmc_field_start(s, avctx);
-#endif
+
return 0;
}
{
int i;
/* draw edge for correct motion prediction if outside */
-#if CONFIG_MPEG_XVMC_DECODER
//just to make sure that all data is rendered.
- if(s->avctx->xvmc_acceleration){
+ if(CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration){
ff_xvmc_field_end(s);
}else
-#endif
if(!(s->avctx->codec->capabilities&CODEC_CAP_HWACCEL_VDPAU)
&& s->unrestricted_mv
&& s->current_picture.reference
{
int mb_x, mb_y;
const int mb_xy = s->mb_y * s->mb_stride + s->mb_x;
-#if CONFIG_MPEG_XVMC_DECODER
- if(s->avctx->xvmc_acceleration){
+ if(CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration){
ff_xvmc_decode_mb(s);//xvmc uses pblocks
return;
}
-#endif
mb_x = s->mb_x;
mb_y = s->mb_y;