LCOV - code coverage report
Current view: top level - third_party/aom/aom_scale/generic - gen_scalers.c (source / functions) Hit Total Coverage
Test: output.info Lines: 0 78 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 7 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2016, Alliance for Open Media. All rights reserved
       3             :  *
       4             :  * This source code is subject to the terms of the BSD 2 Clause License and
       5             :  * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
       6             :  * was not distributed with this source code in the LICENSE file, you can
       7             :  * obtain it at www.aomedia.org/license/software. If the Alliance for Open
       8             :  * Media Patent License 1.0 was not distributed with this source code in the
       9             :  * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
      10             :  */
      11             : 
      12             : #include "./aom_scale_rtcd.h"
      13             : #include "aom_scale/aom_scale.h"
      14             : #include "aom_mem/aom_mem.h"
      15             : /****************************************************************************
      16             : *  Imports
      17             : ****************************************************************************/
      18             : 
      19             : /****************************************************************************
      20             :  *
      21             :  *
      22             :  *  INPUTS        : const unsigned char *source : Pointer to source data.
      23             :  *                  unsigned int source_width   : Stride of source.
      24             :  *                  unsigned char *dest         : Pointer to destination data.
      25             :  *                  unsigned int dest_width     : Stride of destination
      26             :  *                                                (NOT USED).
      27             :  *
      28             :  *  OUTPUTS       : None.
      29             :  *
      30             :  *  RETURNS       : void
      31             :  *
      32             :  *  FUNCTION      : Copies horizontal line of pixels from source to
      33             :  *                  destination scaling up by 4 to 5.
      34             :  *
      35             :  *  SPECIAL NOTES : None.
      36             :  *
      37             :  ****************************************************************************/
      38           0 : void aom_horizontal_line_5_4_scale_c(const unsigned char *source,
      39             :                                      unsigned int source_width,
      40             :                                      unsigned char *dest,
      41             :                                      unsigned int dest_width) {
      42           0 :   const unsigned char *const source_end = source + source_width;
      43             :   (void)dest_width;
      44             : 
      45           0 :   while (source < source_end) {
      46           0 :     const unsigned int a = source[0];
      47           0 :     const unsigned int b = source[1];
      48           0 :     const unsigned int c = source[2];
      49           0 :     const unsigned int d = source[3];
      50           0 :     const unsigned int e = source[4];
      51             : 
      52           0 :     dest[0] = (unsigned char)a;
      53           0 :     dest[1] = (unsigned char)((b * 192 + c * 64 + 128) >> 8);
      54           0 :     dest[2] = (unsigned char)((c * 128 + d * 128 + 128) >> 8);
      55           0 :     dest[3] = (unsigned char)((d * 64 + e * 192 + 128) >> 8);
      56             : 
      57           0 :     source += 5;
      58           0 :     dest += 4;
      59             :   }
      60           0 : }
      61             : 
      62           0 : void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch,
      63             :                                    unsigned char *dest, int dest_pitch,
      64             :                                    unsigned int dest_width) {
      65           0 :   const unsigned char *const dest_end = dest + dest_width;
      66           0 :   while (dest < dest_end) {
      67           0 :     const unsigned int a = source[0 * src_pitch];
      68           0 :     const unsigned int b = source[1 * src_pitch];
      69           0 :     const unsigned int c = source[2 * src_pitch];
      70           0 :     const unsigned int d = source[3 * src_pitch];
      71           0 :     const unsigned int e = source[4 * src_pitch];
      72             : 
      73           0 :     dest[0 * dest_pitch] = (unsigned char)a;
      74           0 :     dest[1 * dest_pitch] = (unsigned char)((b * 192 + c * 64 + 128) >> 8);
      75           0 :     dest[2 * dest_pitch] = (unsigned char)((c * 128 + d * 128 + 128) >> 8);
      76           0 :     dest[3 * dest_pitch] = (unsigned char)((d * 64 + e * 192 + 128) >> 8);
      77             : 
      78           0 :     ++source;
      79           0 :     ++dest;
      80             :   }
      81           0 : }
      82             : 
      83             : /*7***************************************************************************
      84             :  *
      85             :  *  ROUTINE       : aom_horizontal_line_3_5_scale_c
      86             :  *
      87             :  *  INPUTS        : const unsigned char *source : Pointer to source data.
      88             :  *                  unsigned int source_width   : Stride of source.
      89             :  *                  unsigned char *dest         : Pointer to destination data.
      90             :  *                  unsigned int dest_width     : Stride of destination
      91             :  *                                                (NOT USED).
      92             :  *
      93             :  *  OUTPUTS       : None.
      94             :  *
      95             :  *  RETURNS       : void
      96             :  *
      97             :  *  FUNCTION      : Copies horizontal line of pixels from source to
      98             :  *                  destination scaling up by 3 to 5.
      99             :  *
     100             :  *  SPECIAL NOTES : None.
     101             :  *
     102             :  *
     103             :  ****************************************************************************/
     104           0 : void aom_horizontal_line_5_3_scale_c(const unsigned char *source,
     105             :                                      unsigned int source_width,
     106             :                                      unsigned char *dest,
     107             :                                      unsigned int dest_width) {
     108           0 :   const unsigned char *const source_end = source + source_width;
     109             :   (void)dest_width;
     110           0 :   while (source < source_end) {
     111           0 :     const unsigned int a = source[0];
     112           0 :     const unsigned int b = source[1];
     113           0 :     const unsigned int c = source[2];
     114           0 :     const unsigned int d = source[3];
     115           0 :     const unsigned int e = source[4];
     116             : 
     117           0 :     dest[0] = (unsigned char)a;
     118           0 :     dest[1] = (unsigned char)((b * 85 + c * 171 + 128) >> 8);
     119           0 :     dest[2] = (unsigned char)((d * 171 + e * 85 + 128) >> 8);
     120             : 
     121           0 :     source += 5;
     122           0 :     dest += 3;
     123             :   }
     124           0 : }
     125             : 
     126           0 : void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch,
     127             :                                    unsigned char *dest, int dest_pitch,
     128             :                                    unsigned int dest_width) {
     129           0 :   const unsigned char *const dest_end = dest + dest_width;
     130           0 :   while (dest < dest_end) {
     131           0 :     const unsigned int a = source[0 * src_pitch];
     132           0 :     const unsigned int b = source[1 * src_pitch];
     133           0 :     const unsigned int c = source[2 * src_pitch];
     134           0 :     const unsigned int d = source[3 * src_pitch];
     135           0 :     const unsigned int e = source[4 * src_pitch];
     136             : 
     137           0 :     dest[0 * dest_pitch] = (unsigned char)a;
     138           0 :     dest[1 * dest_pitch] = (unsigned char)((b * 85 + c * 171 + 128) >> 8);
     139           0 :     dest[2 * dest_pitch] = (unsigned char)((d * 171 + e * 85 + 128) >> 8);
     140             : 
     141           0 :     ++source;
     142           0 :     ++dest;
     143             :   }
     144           0 : }
     145             : 
     146             : /****************************************************************************
     147             :  *
     148             :  *  ROUTINE       : aom_horizontal_line_1_2_scale_c
     149             :  *
     150             :  *  INPUTS        : const unsigned char *source : Pointer to source data.
     151             :  *                  unsigned int source_width   : Stride of source.
     152             :  *                  unsigned char *dest         : Pointer to destination data.
     153             :  *                  unsigned int dest_width     : Stride of destination
     154             :  *                                                (NOT USED).
     155             :  *
     156             :  *  OUTPUTS       : None.
     157             :  *
     158             :  *  RETURNS       : void
     159             :  *
     160             :  *  FUNCTION      : Copies horizontal line of pixels from source to
     161             :  *                  destination scaling up by 1 to 2.
     162             :  *
     163             :  *  SPECIAL NOTES : None.
     164             :  *
     165             :  ****************************************************************************/
     166           0 : void aom_horizontal_line_2_1_scale_c(const unsigned char *source,
     167             :                                      unsigned int source_width,
     168             :                                      unsigned char *dest,
     169             :                                      unsigned int dest_width) {
     170           0 :   const unsigned char *const source_end = source + source_width;
     171             :   (void)dest_width;
     172           0 :   while (source < source_end) {
     173           0 :     dest[0] = source[0];
     174           0 :     source += 2;
     175           0 :     ++dest;
     176             :   }
     177           0 : }
     178             : 
     179           0 : void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch,
     180             :                                    unsigned char *dest, int dest_pitch,
     181             :                                    unsigned int dest_width) {
     182             :   (void)dest_pitch;
     183             :   (void)src_pitch;
     184           0 :   memcpy(dest, source, dest_width);
     185           0 : }
     186             : 
     187           0 : void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch,
     188             :                                      unsigned char *dest, int dest_pitch,
     189             :                                      unsigned int dest_width) {
     190           0 :   const unsigned char *const dest_end = dest + dest_width;
     191             :   (void)dest_pitch;
     192           0 :   while (dest < dest_end) {
     193           0 :     const unsigned int a = source[-src_pitch] * 3;
     194           0 :     const unsigned int b = source[0] * 10;
     195           0 :     const unsigned int c = source[src_pitch] * 3;
     196           0 :     dest[0] = (unsigned char)((8 + a + b + c) >> 4);
     197           0 :     ++source;
     198           0 :     ++dest;
     199             :   }
     200           0 : }

Generated by: LCOV version 1.13