LCOV - code coverage report
Current view: top level - libavcodec - proresdsp.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 17 17 100.0 %
Date: 2017-12-17 11:58:42 Functions: 3 3 100.0 %

          Line data    Source code
       1             : /*
       2             :  * Apple ProRes compatible decoder
       3             :  *
       4             :  * Copyright (c) 2010-2011 Maxim Poliakovski
       5             :  *
       6             :  * This file is part of FFmpeg.
       7             :  *
       8             :  * FFmpeg is free software; you can redistribute it and/or
       9             :  * modify it under the terms of the GNU Lesser General Public
      10             :  * License as published by the Free Software Foundation; either
      11             :  * version 2.1 of the License, or (at your option) any later version.
      12             :  *
      13             :  * FFmpeg is distributed in the hope that it will be useful,
      14             :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      15             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      16             :  * Lesser General Public License for more details.
      17             :  *
      18             :  * You should have received a copy of the GNU Lesser General Public
      19             :  * License along with FFmpeg; if not, write to the Free Software
      20             :  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
      21             :  */
      22             : 
      23             : #include "config.h"
      24             : #include "libavutil/attributes.h"
      25             : #include "libavutil/common.h"
      26             : #include "idctdsp.h"
      27             : #include "proresdsp.h"
      28             : #include "simple_idct.h"
      29             : 
      30             : #define BIAS     (1 << (PRORES_BITS_PER_SAMPLE - 1))           ///< bias value for converting signed pixels into unsigned ones
      31             : #define CLIP_MIN (1 << (PRORES_BITS_PER_SAMPLE - 8))           ///< minimum value for clipping resulting pixels
      32             : #define CLIP_MAX (1 << PRORES_BITS_PER_SAMPLE) - CLIP_MIN - 1  ///< maximum value for clipping resulting pixels
      33             : 
      34             : #define CLIP(x) (av_clip((x), CLIP_MIN, CLIP_MAX))
      35             : 
      36             : /**
      37             :  * Add bias value, clamp and output pixels of a slice
      38             :  */
      39     2758752 : static void put_pixels(uint16_t *dst, ptrdiff_t linesize, const int16_t *in)
      40             : {
      41             :     int x, y, src_offset, dst_offset;
      42             : 
      43    24828768 :     for (y = 0, dst_offset = 0; y < 8; y++, dst_offset += linesize) {
      44   198630144 :         for (x = 0; x < 8; x++) {
      45   176560128 :             src_offset = (y << 3) + x;
      46             : 
      47   176560128 :             dst[dst_offset + x] = CLIP(in[src_offset]);
      48             :         }
      49             :     }
      50     2758752 : }
      51             : 
      52     2758752 : static void prores_idct_put_c(uint16_t *out, ptrdiff_t linesize, int16_t *block, const int16_t *qmat)
      53             : {
      54     2758752 :     ff_prores_idct(block, qmat);
      55     2758752 :     put_pixels(out, linesize >> 1, block);
      56     2758752 : }
      57             : 
      58          34 : av_cold void ff_proresdsp_init(ProresDSPContext *dsp, AVCodecContext *avctx)
      59             : {
      60          34 :     dsp->idct_put = prores_idct_put_c;
      61          34 :     dsp->idct_permutation_type = FF_IDCT_PERM_NONE;
      62             : 
      63             :     if (ARCH_X86)
      64          34 :         ff_proresdsp_init_x86(dsp, avctx);
      65             : 
      66          34 :     ff_init_scantable_permutation(dsp->idct_permutation,
      67          34 :                                   dsp->idct_permutation_type);
      68          34 : }

Generated by: LCOV version 1.13