From 6674014077a0ac5fe6f709aba386ee1601533871 Mon Sep 17 00:00:00 2001 From: Vikas Arora Date: Fri, 12 Jul 2013 11:00:05 -0700 Subject: [PATCH] Speedup Alpha plane encoding. Disable costly 'BackwardReferencesTraceBackwards' for encoding Alpha plane. Increase the threshold for triggering 'BackwardReferencesTraceBackwards' to quality 25 and above. Also lower the Alpha quality (at method 3) to be lesser than this threshold (25). Change-Id: Ic29fb2e6943472c564223df9fe099b19ccda0f31 --- src/enc/alpha.c | 6 ++++-- src/enc/backward_references.c | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/enc/alpha.c b/src/enc/alpha.c index 5ba04149..b6168cdf 100644 --- a/src/enc/alpha.c +++ b/src/enc/alpha.c @@ -81,8 +81,10 @@ static int EncodeLossless(const uint8_t* const data, int width, int height, WebPConfigInit(&config); config.lossless = 1; config.method = effort_level; // impact is very small - // Set a moderate default quality setting for alpha. - config.quality = 10.f * effort_level; + // Set a low default quality for encoding alpha. Ensure that Alpha quality at + // lower methods (3 and below) is less than the threshold for triggering + // costly 'BackwardReferencesTraceBackwards'. + config.quality = 8.f * effort_level; assert(config.quality >= 0 && config.quality <= 100.f); ok = VP8LBitWriterInit(&tmp_bw, (width * height) >> 3); diff --git a/src/enc/backward_references.c b/src/enc/backward_references.c index db4f430d..e40182e0 100644 --- a/src/enc/backward_references.c +++ b/src/enc/backward_references.c @@ -780,8 +780,8 @@ int VP8LGetBackwardReferences(int width, int height, // Choose appropriate backward reference. if (lz77_is_useful) { - // TraceBackwards is costly. Don't execute it at lower quality (q <= 10). - const int try_lz77_trace_backwards = (quality > 10); + // TraceBackwards is costly. Don't execute it at lower quality. + const int try_lz77_trace_backwards = (quality >= 25); *best = refs_lz77; // default guess: lz77 is better VP8LClearBackwardRefs(&refs_rle); if (try_lz77_trace_backwards) {