1*09537850SAkhilesh Sanikop /* 2*09537850SAkhilesh Sanikop * Copyright 2019 The libgav1 Authors 3*09537850SAkhilesh Sanikop * 4*09537850SAkhilesh Sanikop * Licensed under the Apache License, Version 2.0 (the "License"); 5*09537850SAkhilesh Sanikop * you may not use this file except in compliance with the License. 6*09537850SAkhilesh Sanikop * You may obtain a copy of the License at 7*09537850SAkhilesh Sanikop * 8*09537850SAkhilesh Sanikop * http://www.apache.org/licenses/LICENSE-2.0 9*09537850SAkhilesh Sanikop * 10*09537850SAkhilesh Sanikop * Unless required by applicable law or agreed to in writing, software 11*09537850SAkhilesh Sanikop * distributed under the License is distributed on an "AS IS" BASIS, 12*09537850SAkhilesh Sanikop * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*09537850SAkhilesh Sanikop * See the License for the specific language governing permissions and 14*09537850SAkhilesh Sanikop * limitations under the License. 15*09537850SAkhilesh Sanikop */ 16*09537850SAkhilesh Sanikop 17*09537850SAkhilesh Sanikop #ifndef LIBGAV1_SRC_RECONSTRUCTION_H_ 18*09537850SAkhilesh Sanikop #define LIBGAV1_SRC_RECONSTRUCTION_H_ 19*09537850SAkhilesh Sanikop 20*09537850SAkhilesh Sanikop #include <cstdint> 21*09537850SAkhilesh Sanikop 22*09537850SAkhilesh Sanikop #include "src/dsp/constants.h" 23*09537850SAkhilesh Sanikop #include "src/dsp/dsp.h" 24*09537850SAkhilesh Sanikop #include "src/utils/array_2d.h" 25*09537850SAkhilesh Sanikop #include "src/utils/constants.h" 26*09537850SAkhilesh Sanikop #include "src/utils/types.h" 27*09537850SAkhilesh Sanikop 28*09537850SAkhilesh Sanikop namespace libgav1 { 29*09537850SAkhilesh Sanikop 30*09537850SAkhilesh Sanikop // Steps 2 and 3 of section 7.12.3 (contains the implementation of section 31*09537850SAkhilesh Sanikop // 7.13.3). 32*09537850SAkhilesh Sanikop // Apply the inverse transforms and add the residual to the frame for the 33*09537850SAkhilesh Sanikop // transform block size |tx_size| starting at position |start_x| and |start_y|. 34*09537850SAkhilesh Sanikop template <typename Residual, typename Pixel> 35*09537850SAkhilesh Sanikop void Reconstruct(const dsp::Dsp& dsp, TransformType tx_type, 36*09537850SAkhilesh Sanikop TransformSize tx_size, bool lossless, Residual* buffer, 37*09537850SAkhilesh Sanikop int start_x, int start_y, Array2DView<Pixel>* frame, 38*09537850SAkhilesh Sanikop int non_zero_coeff_count); 39*09537850SAkhilesh Sanikop 40*09537850SAkhilesh Sanikop extern template void Reconstruct(const dsp::Dsp& dsp, TransformType tx_type, 41*09537850SAkhilesh Sanikop TransformSize tx_size, bool lossless, 42*09537850SAkhilesh Sanikop int16_t* buffer, int start_x, int start_y, 43*09537850SAkhilesh Sanikop Array2DView<uint8_t>* frame, 44*09537850SAkhilesh Sanikop int non_zero_coeff_count); 45*09537850SAkhilesh Sanikop #if LIBGAV1_MAX_BITDEPTH >= 10 46*09537850SAkhilesh Sanikop extern template void Reconstruct(const dsp::Dsp& dsp, TransformType tx_type, 47*09537850SAkhilesh Sanikop TransformSize tx_size, bool lossless, 48*09537850SAkhilesh Sanikop int32_t* buffer, int start_x, int start_y, 49*09537850SAkhilesh Sanikop Array2DView<uint16_t>* frame, 50*09537850SAkhilesh Sanikop int non_zero_coeff_count); 51*09537850SAkhilesh Sanikop #endif 52*09537850SAkhilesh Sanikop 53*09537850SAkhilesh Sanikop } // namespace libgav1 54*09537850SAkhilesh Sanikop #endif // LIBGAV1_SRC_RECONSTRUCTION_H_ 55