LCOV - code coverage report
Current view: top level - tests/checkasm - exrdsp.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 37 39 94.9 %
Date: 2017-12-17 23:02:56 Functions: 3 3 100.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2017 James Almer
       3             :  *
       4             :  * This file is part of FFmpeg.
       5             :  *
       6             :  * FFmpeg is free software; you can redistribute it and/or modify
       7             :  * it under the terms of the GNU General Public License as published by
       8             :  * the Free Software Foundation; either version 2 of the License, or
       9             :  * (at your option) any later version.
      10             :  *
      11             :  * FFmpeg is distributed in the hope that it will be useful,
      12             :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      13             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14             :  * GNU General Public License for more details.
      15             :  *
      16             :  * You should have received a copy of the GNU General Public License along
      17             :  * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
      18             :  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
      19             :  */
      20             : 
      21             : #include <string.h>
      22             : 
      23             : #include "checkasm.h"
      24             : #include "libavcodec/avcodec.h"
      25             : #include "libavcodec/exrdsp.h"
      26             : #include "libavutil/intreadwrite.h"
      27             : 
      28             : #define BUF_SIZE 5120
      29             : #define PADDED_BUF_SIZE BUF_SIZE+AV_INPUT_BUFFER_PADDING_SIZE*2
      30             : 
      31             : #define randomize_buffers()                 \
      32             :     do {                                    \
      33             :         int i;                              \
      34             :         for (i = 0; i < BUF_SIZE; i += 4) { \
      35             :             uint32_t r = rnd();             \
      36             :             AV_WN32A(src + i, r);           \
      37             :         }                                   \
      38             :     } while (0)
      39             : 
      40           3 : static void check_reorder_pixels(void) {
      41           3 :     LOCAL_ALIGNED_32(uint8_t, src,     [PADDED_BUF_SIZE]);
      42           3 :     LOCAL_ALIGNED_32(uint8_t, dst_ref, [PADDED_BUF_SIZE]);
      43           3 :     LOCAL_ALIGNED_32(uint8_t, dst_new, [PADDED_BUF_SIZE]);
      44             : 
      45           3 :     declare_func(void, uint8_t *dst, const uint8_t *src, ptrdiff_t size);
      46             : 
      47           3 :     memset(src,     0, PADDED_BUF_SIZE);
      48           3 :     memset(dst_ref, 0, PADDED_BUF_SIZE);
      49           3 :     memset(dst_new, 0, PADDED_BUF_SIZE);
      50           3 :     randomize_buffers();
      51           3 :     call_ref(dst_ref, src, BUF_SIZE);
      52           3 :     call_new(dst_new, src, BUF_SIZE);
      53           3 :     if (memcmp(dst_ref, dst_new, BUF_SIZE))
      54           0 :         fail();
      55           3 :     bench_new(dst_new, src, BUF_SIZE);
      56           3 : }
      57             : 
      58           4 : static void check_predictor(void) {
      59           4 :     LOCAL_ALIGNED_32(uint8_t, src,     [PADDED_BUF_SIZE]);
      60           4 :     LOCAL_ALIGNED_32(uint8_t, dst_ref, [PADDED_BUF_SIZE]);
      61           4 :     LOCAL_ALIGNED_32(uint8_t, dst_new, [PADDED_BUF_SIZE]);
      62             : 
      63           4 :     declare_func(void, uint8_t *src, ptrdiff_t size);
      64             : 
      65           4 :     memset(src,     0, PADDED_BUF_SIZE);
      66           4 :     randomize_buffers();
      67           4 :     memcpy(dst_ref, src, PADDED_BUF_SIZE);
      68           4 :     memcpy(dst_new, src, PADDED_BUF_SIZE);
      69           4 :     call_ref(dst_ref, BUF_SIZE);
      70           4 :     call_new(dst_new, BUF_SIZE);
      71           4 :     if (memcmp(dst_ref, dst_new, BUF_SIZE))
      72           0 :         fail();
      73           4 :     bench_new(dst_new, BUF_SIZE);
      74           4 : }
      75             : 
      76          13 : void checkasm_check_exrdsp(void)
      77             : {
      78             :     ExrDSPContext h;
      79             : 
      80          13 :     ff_exrdsp_init(&h);
      81             : 
      82          13 :     if (check_func(h.reorder_pixels, "reorder_pixels"))
      83           3 :         check_reorder_pixels();
      84             : 
      85          13 :     report("reorder_pixels");
      86             : 
      87          13 :     if (check_func(h.predictor, "predictor"))
      88           4 :         check_predictor();
      89             : 
      90          13 :     report("predictor");
      91          13 : }

Generated by: LCOV version 1.13