[x264-devel] commit: Fix regression in r736 (Jason Garrett-Glaser )
git version control
git at videolan.org
Thu Jun 12 02:21:46 CEST 2008
x264 | branch: master | Jason Garrett-Glaser <darkshikari at gmail.com> | Wed Jun 11 18:23:00 2008 -0600| [e098505c3329ebacdb479b40969fa22502e2091f]
Fix regression in r736
r736 added intra RD refinement to B-frames; however, it is possible for subme=7 to be used without b-rdo.
This means intra RD isn't run, and therefore it is possible for intra chroma analysis to not have been run, since update_cache was never called for an intra block, and chroma ME is not required even at subme=7.
r801, which removed a memset, made this worse because previously the chroma prediction mode was at least initialized to zero; now it was not initialized at all.
Therefore, --no-chroma-me, --subme 7, and no --b-rdo had the potential to crash.
This change restricts intra RD refinement to only be run when --b-rdo is enabled (sensible to begin with), thus preventing a crash in this case.
> http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=e098505c3329ebacdb479b40969fa22502e2091f
---
encoder/analyse.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/encoder/analyse.c b/encoder/analyse.c
index 0d3831a..17efe03 100644
--- a/encoder/analyse.c
+++ b/encoder/analyse.c
@@ -2580,7 +2580,7 @@ void x264_macroblock_analyse( x264_t *h )
h->mb.i_type = i_type;
h->mb.i_partition = i_partition;
- if( h->mb.i_subpel_refine >= 7 && IS_INTRA( i_type ) )
+ if( analysis.b_mbrd && h->mb.i_subpel_refine >= 7 && IS_INTRA( i_type ) )
x264_intra_rd_refine( h, &analysis );
else if( h->param.analyse.b_bidir_me )
refine_bidir( h, &analysis );
More information about the x264-devel
mailing list