/* * Copyright (c) 2018, Alliance for Open Media. All rights reserved. * * This source code is subject to the terms of the BSD 2 Clause License and * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License * was not distributed with this source code in the LICENSE file, you can * obtain it at www.aomedia.org/license/software. If the Alliance for Open * Media Patent License 1.0 was not distributed with this source code in the * PATENTS file, you can obtain it at www.aomedia.org/license/patent. */ #include <assert.h> #include <immintrin.h> #include "aom_dsp/x86/mem_sse2.h" #include "aom_dsp/x86/synonyms_avx2.h" #include "config/av1_rtcd.h" #include "av1/encoder/rdopt.h" // Process horizontal and vertical correlations in a 4x4 block of pixels. // We actually use the 4x4 pixels to calculate correlations corresponding to // the top-left 3x3 pixels, so this function must be called with 1x1 overlap, // moving the window along/down by 3 pixels at a time. static inline void horver_correlation_4x4(const int16_t *diff, int stride, __m256i *xy_sum_32, __m256i *xz_sum_32, __m256i *x_sum_32, __m256i *x2_sum_32) { … } void av1_get_horver_correlation_full_avx2(const int16_t *diff, int stride, int width, int height, float *hcorr, float *vcorr) { … }