From 7833e7bb18f8a16949e5047f0e8d081855a59c13 Mon Sep 17 00:00:00 2001 From: Fiona Glaser Date: Sun, 17 Jan 2010 19:11:05 -0500 Subject: [PATCH] Fix intra refresh with subme < 6 Also improve the quality of intra masking. --- encoder/analyse.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/encoder/analyse.c b/encoder/analyse.c index b97d4394..22b46cd4 100644 --- a/encoder/analyse.c +++ b/encoder/analyse.c @@ -2592,10 +2592,14 @@ intra_analysis: COPY2_IF_LT( i_cost, analysis.i_satd_i4x4, i_type, I_4x4 ); COPY2_IF_LT( i_cost, analysis.i_satd_pcm, i_type, I_PCM ); + h->mb.i_type = i_type; + if( analysis.b_force_intra && !IS_INTRA(i_type) ) { /* Intra masking: copy fdec to fenc and re-encode the block as intra in order to make it appear as if * it was an inter block. */ + x264_analyse_update_cache( h, &analysis ); + x264_macroblock_encode( h ); h->mc.copy[PIXEL_16x16]( h->mb.pic.p_fenc[0], FENC_STRIDE, h->mb.pic.p_fdec[0], FDEC_STRIDE, 16 ); h->mc.copy[PIXEL_8x8] ( h->mb.pic.p_fenc[1], FENC_STRIDE, h->mb.pic.p_fdec[1], FDEC_STRIDE, 8 ); h->mc.copy[PIXEL_8x8] ( h->mb.pic.p_fenc[2], FENC_STRIDE, h->mb.pic.p_fdec[2], FDEC_STRIDE, 8 ); @@ -2603,8 +2607,6 @@ intra_analysis: goto intra_analysis; } - h->mb.i_type = i_type; - if( analysis.i_mbrd >= 2 && h->mb.i_type != I_PCM ) { if( IS_INTRA( h->mb.i_type ) ) -- 2.39.5