1 /*
2 * Copyright(c) 2019 Intel Corporation
3 * Copyright (c) 2019, Alliance for Open Media. All rights reserved
4 *
5 * This source code is subject to the terms of the BSD 2 Clause License and
6 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
7 * was not distributed with this source code in the LICENSE file, you can
8 * obtain it at https://www.aomedia.org/license/software-license. If the Alliance for Open
9 * Media Patent License 1.0 was not distributed with this source code in the
10 * PATENTS file, you can obtain it at https://www.aomedia.org/license/patent-license.
11 */
12
13 #ifndef EbPictureOperators_h
14 #define EbPictureOperators_h
15
16 #include "EbPictureOperators_C.h"
17 #include "EbDefinitions.h"
18 #include "EbPictureBufferDesc.h"
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23 extern EbErrorType picture_full_distortion32_bits(
24 EbPictureBufferDesc *coeff, uint32_t coeff_luma_origin_index,
25 uint32_t coeff_chroma_origin_index, EbPictureBufferDesc *recon_coeff,
26 uint32_t recon_coeff_luma_origin_index, uint32_t recon_coeff_chroma_origin_index,
27 uint32_t bwidth, uint32_t bheight, uint32_t bwidth_uv, uint32_t bheight_uv,
28 uint64_t y_distortion[DIST_CALC_TOTAL], uint64_t cb_distortion[DIST_CALC_TOTAL],
29 uint64_t cr_distortion[DIST_CALC_TOTAL], uint32_t y_count_non_zero_coeffs,
30 uint32_t cb_count_non_zero_coeffs, uint32_t cr_count_non_zero_coeffs,
31 COMPONENT_TYPE component_type);
32 //Residual Data
33
34 void compressed_pack_sb(uint8_t *in8_bit_buffer, uint32_t in8_stride, uint8_t *inn_bit_buffer,
35 uint32_t inn_stride, uint16_t *out16_bit_buffer, uint32_t out_stride,
36 uint32_t width, uint32_t height);
37
38 void pack2d_src(uint8_t *in8_bit_buffer, uint32_t in8_stride, uint8_t *inn_bit_buffer,
39 uint32_t inn_stride, uint16_t *out16_bit_buffer, uint32_t out_stride,
40 uint32_t width, uint32_t height);
41
42 void un_pack2d(uint16_t *in16_bit_buffer, uint32_t in_stride, uint8_t *out8_bit_buffer,
43 uint32_t out8_stride, uint8_t *outn_bit_buffer, uint32_t outn_stride, uint32_t width,
44 uint32_t height);
45
memset16bit(uint16_t * in_ptr,uint16_t value,uint64_t num_of_elements)46 static INLINE void memset16bit(uint16_t *in_ptr, uint16_t value, uint64_t num_of_elements) {
47 uint64_t i;
48
49 for (i = 0; i < num_of_elements; i++) in_ptr[i] = value;
50 }
51
memset32bit(uint32_t * in_ptr,uint32_t value,uint64_t num_of_elements)52 static INLINE void memset32bit(uint32_t *in_ptr, uint32_t value, uint64_t num_of_elements) {
53 uint64_t i;
54
55 for (i = 0; i < num_of_elements; i++) in_ptr[i] = value;
56 }
57
58 void svt_full_distortion_kernel_cbf_zero32_bits_c(int32_t *coeff, uint32_t coeff_stride,
59 uint64_t distortion_result[DIST_CALC_TOTAL],
60 uint32_t area_width, uint32_t area_height);
61
62 void svt_full_distortion_kernel32_bits_c(int32_t *coeff, uint32_t coeff_stride,
63 int32_t *recon_coeff, uint32_t recon_coeff_stride,
64 uint64_t distortion_result[DIST_CALC_TOTAL],
65 uint32_t area_width, uint32_t area_height);
66
67 uint64_t svt_full_distortion_kernel16_bits_c(uint8_t *input, uint32_t input_offset,
68 uint32_t input_stride, uint8_t *pred,
69 int32_t pred_offset, uint32_t pred_stride,
70 uint32_t area_width, uint32_t area_height);
71
72 void svt_residual_kernel16bit_c(uint16_t *input, uint32_t input_stride, uint16_t *pred,
73 uint32_t pred_stride, int16_t *residual, uint32_t residual_stride,
74 uint32_t area_width, uint32_t area_height);
75
76 void svt_residual_kernel8bit_c(uint8_t *input, uint32_t input_stride, uint8_t *pred,
77 uint32_t pred_stride, int16_t *residual, uint32_t residual_stride,
78 uint32_t area_width, uint32_t area_height);
79 void pic_copy_kernel_8bit(EbByte src, uint32_t src_stride, EbByte dst, uint32_t dst_stride,
80 uint32_t area_width, uint32_t area_height);
81
82 void pic_copy_kernel_16bit(uint16_t *src, uint32_t src_stride, uint16_t *dst, uint32_t dst_stride,
83 uint32_t width, uint32_t height);
84
85 EbErrorType svt_av1_picture_copy(EbPictureBufferDesc *src, uint32_t src_luma_origin_index,
86 uint32_t src_chroma_origin_index, EbPictureBufferDesc *dst,
87 uint32_t dst_luma_origin_index, uint32_t dst_chroma_origin_index,
88 uint32_t area_width, uint32_t area_height,
89 uint32_t chroma_area_width, uint32_t chroma_area_height,
90 uint32_t component_mask, uint8_t hbd);
91
92 #ifdef __cplusplus
93 }
94 #endif
95 #endif // EbPictureOperators_h
96