unsigned int vp9_sub_pixel_avg_variance4x4_c(const uint8_t *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, const uint8_t *dst_ptr, int dst_pixels_per_line, unsigned int *sse, const uint8_t *second_pred) { uint8_t temp2[20 * 16]; const int16_t *hfilter, *vfilter; DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 4 * 4); uint16_t fdata3[5 * 4]; hfilter = BILINEAR_FILTERS_2TAP(xoffset); vfilter = BILINEAR_FILTERS_2TAP(yoffset); var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, 1, 5, 4, hfilter); var_filter_block2d_bil_second_pass(fdata3, temp2, 4, 4, 4, 4, vfilter); comp_avg_pred(temp3, second_pred, 4, 4, temp2, 4); return vp9_variance4x4(temp3, 4, dst_ptr, dst_pixels_per_line, sse); }
unsigned int vp9_sub_pixel_variance16x8_c(const uint8_t *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, const uint8_t *dst_ptr, int dst_pixels_per_line, unsigned int *sse) { uint16_t FData3[16 * 9]; // Temp data bufffer used in filtering uint8_t temp2[20 * 16]; const int16_t *HFilter, *VFilter; HFilter = vp9_bilinear_filters[xoffset]; VFilter = vp9_bilinear_filters[yoffset]; var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 9, 16, HFilter); var_filter_block2d_bil_second_pass(FData3, temp2, 16, 16, 8, 16, VFilter); return vp9_variance16x8_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse); }
unsigned int vp9_sub_pixel_variance8x4_c(const uint8_t *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, const uint8_t *dst_ptr, int dst_pixels_per_line, unsigned int *sse) { uint16_t fdata3[8 * 5]; uint8_t temp2[20 * 16]; const int16_t *hfilter, *vfilter; hfilter = BILINEAR_FILTERS_2TAP(xoffset); vfilter = BILINEAR_FILTERS_2TAP(yoffset); var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, 1, 5, 8, hfilter); var_filter_block2d_bil_second_pass(fdata3, temp2, 8, 8, 4, 8, vfilter); return vp9_variance8x4(temp2, 8, dst_ptr, dst_pixels_per_line, sse); }
unsigned int vp9_sub_pixel_variance32x32_c(const uint8_t *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, const uint8_t *dst_ptr, int dst_pixels_per_line, unsigned int *sse) { uint16_t fdata3[33 * 32]; uint8_t temp2[36 * 32]; const int16_t *hfilter, *vfilter; hfilter = BILINEAR_FILTERS_2TAP(xoffset); vfilter = BILINEAR_FILTERS_2TAP(yoffset); var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, 1, 33, 32, hfilter); var_filter_block2d_bil_second_pass(fdata3, temp2, 32, 32, 32, 32, vfilter); return vp9_variance32x32(temp2, 32, dst_ptr, dst_pixels_per_line, sse); }
unsigned int vp9_sub_pixel_variance4x4_c(const uint8_t *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, const uint8_t *dst_ptr, int dst_pixels_per_line, unsigned int *sse) { uint8_t temp2[20 * 16]; const int16_t *HFilter, *VFilter; uint16_t FData3[5 * 4]; // Temp data bufffer used in filtering HFilter = vp9_bilinear_filters[xoffset]; VFilter = vp9_bilinear_filters[yoffset]; // First filter 1d Horizontal var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 5, 4, HFilter); // Now filter Verticaly var_filter_block2d_bil_second_pass(FData3, temp2, 4, 4, 4, 4, VFilter); return vp9_variance4x4_c(temp2, 4, dst_ptr, dst_pixels_per_line, sse); }
unsigned int vp9_sub_pixel_avg_variance16x32_c(const uint8_t *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, const uint8_t *dst_ptr, int dst_pixels_per_line, unsigned int *sse, const uint8_t *second_pred) { uint16_t fdata3[33 * 32]; uint8_t temp2[36 * 32]; DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 16 * 32); const int16_t *hfilter, *vfilter; hfilter = BILINEAR_FILTERS_2TAP(xoffset); vfilter = BILINEAR_FILTERS_2TAP(yoffset); var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, 1, 33, 16, hfilter); var_filter_block2d_bil_second_pass(fdata3, temp2, 16, 16, 32, 16, vfilter); comp_avg_pred(temp3, second_pred, 16, 32, temp2, 16); return vp9_variance16x32(temp3, 16, dst_ptr, dst_pixels_per_line, sse); }
unsigned int vp9_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, const uint8_t *dst_ptr, int dst_pixels_per_line, unsigned int *sse, const uint8_t *second_pred) { uint16_t fdata3[65 * 64]; uint8_t temp2[68 * 64]; DECLARE_ALIGNED_ARRAY(16, uint8_t, temp3, 32 * 64); const int16_t *hfilter, *vfilter; hfilter = BILINEAR_FILTERS_2TAP(xoffset); vfilter = BILINEAR_FILTERS_2TAP(yoffset); var_filter_block2d_bil_first_pass(src_ptr, fdata3, src_pixels_per_line, 1, 65, 32, hfilter); var_filter_block2d_bil_second_pass(fdata3, temp2, 32, 32, 64, 32, vfilter); comp_avg_pred(temp3, second_pred, 32, 64, temp2, 32); return vp9_variance32x64(temp3, 32, dst_ptr, dst_pixels_per_line, sse); }