1*09537850SAkhilesh Sanikop /* 2*09537850SAkhilesh Sanikop * Copyright 2020 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_TESTS_BLOCK_UTILS_H_ 18*09537850SAkhilesh Sanikop #define LIBGAV1_TESTS_BLOCK_UTILS_H_ 19*09537850SAkhilesh Sanikop 20*09537850SAkhilesh Sanikop #include <cstdint> 21*09537850SAkhilesh Sanikop 22*09537850SAkhilesh Sanikop namespace libgav1 { 23*09537850SAkhilesh Sanikop namespace test_utils { 24*09537850SAkhilesh Sanikop 25*09537850SAkhilesh Sanikop //------------------------------------------------------------------------------ 26*09537850SAkhilesh Sanikop // Prints |block| pixel by pixel with |width| pixels per row if |print_padding| 27*09537850SAkhilesh Sanikop // is false, |stride| otherwise. If |print_padding| is true padding pixels are 28*09537850SAkhilesh Sanikop // surrounded in '[]'. 29*09537850SAkhilesh Sanikop template <typename Pixel> 30*09537850SAkhilesh Sanikop void PrintBlock(const Pixel* block, int width, int height, int stride, 31*09537850SAkhilesh Sanikop bool print_padding = false); 32*09537850SAkhilesh Sanikop 33*09537850SAkhilesh Sanikop extern template void PrintBlock(const uint8_t* block, int width, int height, 34*09537850SAkhilesh Sanikop int stride, bool print_padding /*= false*/); 35*09537850SAkhilesh Sanikop extern template void PrintBlock(const uint16_t* block, int width, int height, 36*09537850SAkhilesh Sanikop int stride, bool print_padding /*= false*/); 37*09537850SAkhilesh Sanikop 38*09537850SAkhilesh Sanikop //------------------------------------------------------------------------------ 39*09537850SAkhilesh Sanikop // Compares |block1| and |block2| pixel by pixel checking |width| pixels per row 40*09537850SAkhilesh Sanikop // if |check_padding| is false, min(|stride1|, |stride2|) pixels otherwise. 41*09537850SAkhilesh Sanikop // Prints the blocks with differences marked with a '*' if |print_diff| is 42*09537850SAkhilesh Sanikop // true (the default). 43*09537850SAkhilesh Sanikop 44*09537850SAkhilesh Sanikop template <typename Pixel> 45*09537850SAkhilesh Sanikop bool CompareBlocks(const Pixel* block1, const Pixel* block2, int width, 46*09537850SAkhilesh Sanikop int height, int stride1, int stride2, bool check_padding, 47*09537850SAkhilesh Sanikop bool print_diff = true); 48*09537850SAkhilesh Sanikop 49*09537850SAkhilesh Sanikop extern template bool CompareBlocks(const uint8_t* block1, const uint8_t* block2, 50*09537850SAkhilesh Sanikop int width, int height, int stride1, 51*09537850SAkhilesh Sanikop int stride2, bool check_padding, 52*09537850SAkhilesh Sanikop bool print_diff /*= true*/); 53*09537850SAkhilesh Sanikop extern template bool CompareBlocks(const uint16_t* block1, 54*09537850SAkhilesh Sanikop const uint16_t* block2, int width, 55*09537850SAkhilesh Sanikop int height, int stride1, int stride2, 56*09537850SAkhilesh Sanikop bool check_padding, 57*09537850SAkhilesh Sanikop bool print_diff /*= true*/); 58*09537850SAkhilesh Sanikop 59*09537850SAkhilesh Sanikop } // namespace test_utils 60*09537850SAkhilesh Sanikop } // namespace libgav1 61*09537850SAkhilesh Sanikop 62*09537850SAkhilesh Sanikop #endif // LIBGAV1_TESTS_BLOCK_UTILS_H_ 63