diff --git a/examples.mk b/examples.mk index c17fac9cae90a1b585899a04c1b03449a9f52681..7b47ade8683a3e4a43671140235afae18e3cbb87 100644 --- a/examples.mk +++ b/examples.mk @@ -49,9 +49,9 @@ vpxenc.DESCRIPTION = Full featured encoder UTILS-$(CONFIG_VP8_ENCODER) += vp8_scalable_patterns.c vp8_scalable_patterns.GUID = 0D6A210B-F482-4D6F-8570-4A9C01ACC88C vp8_scalable_patterns.DESCRIPTION = Temporal Scalability Encoder -UTILS-$(CONFIG_VP8_ENCODER) += vp9_spatial_scalable_encoder.c -vp8_scalable_patterns.GUID = 4A38598D-627D-4505-9C7B-D4020C84100D -vp8_scalable_patterns.DESCRIPTION = Spatial Scalable Encoder +UTILS-$(CONFIG_VP9_ENCODER) += vp9_spatial_scalable_encoder.c +vp9_spatial_scalable_encoder.GUID = 4A38598D-627D-4505-9C7B-D4020C84100D +vp9_spatial_scalable_encoder.DESCRIPTION = Spatial Scalable Encoder # Clean up old ivfenc, ivfdec binaries. ifeq ($(CONFIG_MSVS),yes) diff --git a/test/variance_test.cc b/test/variance_test.cc index ca53ffb2104473fc9f526fd1ce11d55710f82141..3f5560170007981143cedb19f52e1386d391526d 100644 --- a/test/variance_test.cc +++ b/test/variance_test.cc @@ -78,34 +78,6 @@ static unsigned int subpel_variance_ref(const uint8_t *ref, const uint8_t *src, return sse - (((int64_t) se * se) >> (l2w + l2h)); } -static unsigned int subpel_avg_variance_ref(const uint8_t *ref, - const uint8_t *src, - const uint8_t *second_pred, - int l2w, int l2h, - int xoff, int yoff, - unsigned int *sse_ptr) { - int se = 0; - unsigned int sse = 0; - const int w = 1 << l2w, h = 1 << l2h; - for (int y = 0; y < h; y++) { - for (int x = 0; x < w; x++) { - // bilinear interpolation at a 16th pel step - const int a1 = ref[(w + 1) * (y + 0) + x + 0]; - const int a2 = ref[(w + 1) * (y + 0) + x + 1]; - const int b1 = ref[(w + 1) * (y + 1) + x + 0]; - const int b2 = ref[(w + 1) * (y + 1) + x + 1]; - const int a = a1 + (((a2 - a1) * xoff + 8) >> 4); - const int b = b1 + (((b2 - b1) * xoff + 8) >> 4); - const int r = a + (((b - a) * yoff + 8) >> 4); - int diff = ((r + second_pred[w * y + x] + 1) >> 1) - src[w * y + x]; - se += diff; - sse += diff * diff; - } - } - *sse_ptr = sse; - return sse - (((int64_t) se * se) >> (l2w + l2h)); -} - template<typename VarianceFunctionType> class VarianceTest : public ::testing::TestWithParam<tuple<int, int, VarianceFunctionType> > { @@ -190,6 +162,36 @@ void VarianceTest<VarianceFunctionType>::OneQuarterTest() { EXPECT_EQ(expected, var); } +#if CONFIG_VP9_ENCODER + +unsigned int subpel_avg_variance_ref(const uint8_t *ref, + const uint8_t *src, + const uint8_t *second_pred, + int l2w, int l2h, + int xoff, int yoff, + unsigned int *sse_ptr) { + int se = 0; + unsigned int sse = 0; + const int w = 1 << l2w, h = 1 << l2h; + for (int y = 0; y < h; y++) { + for (int x = 0; x < w; x++) { + // bilinear interpolation at a 16th pel step + const int a1 = ref[(w + 1) * (y + 0) + x + 0]; + const int a2 = ref[(w + 1) * (y + 0) + x + 1]; + const int b1 = ref[(w + 1) * (y + 1) + x + 0]; + const int b2 = ref[(w + 1) * (y + 1) + x + 1]; + const int a = a1 + (((a2 - a1) * xoff + 8) >> 4); + const int b = b1 + (((b2 - b1) * xoff + 8) >> 4); + const int r = a + (((b - a) * yoff + 8) >> 4); + int diff = ((r + second_pred[w * y + x] + 1) >> 1) - src[w * y + x]; + se += diff; + sse += diff * diff; + } + } + *sse_ptr = sse; + return sse - (((int64_t) se * se) >> (l2w + l2h)); +} + template<typename SubpelVarianceFunctionType> class SubpelVarianceTest : public ::testing::TestWithParam<tuple<int, int, @@ -280,6 +282,8 @@ void SubpelVarianceTest<vp9_subp_avg_variance_fn_t>::RefTest() { } } +#endif // CONFIG_VP9_ENCODER + // ----------------------------------------------------------------------------- // VP8 test cases. diff --git a/vpxenc.c b/vpxenc.c index 5970fd817710804f77d0daf8e203de151e44d9a5..c618ef89132233579e5b0cdf0bcbce58c7a3453e 100644 --- a/vpxenc.c +++ b/vpxenc.c @@ -1765,9 +1765,13 @@ static void parse_global_config(struct global_config *global, char **argv) { /* Validate global config */ if (global->passes == 0) { +#if CONFIG_VP9_ENCODER // Make default VP9 passes = 2 until there is a better quality 1-pass // encoder global->passes = (global->codec->iface == vpx_codec_vp9_cx ? 2 : 1); +#else + global->passes = 1; +#endif } if (global->pass) {