tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

blend_a64_hmask.c (2366B)


      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 <assert.h>
     13 
     14 #include "aom/aom_integer.h"
     15 #include "aom_ports/mem.h"
     16 #include "aom_dsp/aom_dsp_common.h"
     17 #include "aom_dsp/blend.h"
     18 
     19 #include "config/aom_dsp_rtcd.h"
     20 
     21 void aom_blend_a64_hmask_c(uint8_t *dst, uint32_t dst_stride,
     22                           const uint8_t *src0, uint32_t src0_stride,
     23                           const uint8_t *src1, uint32_t src1_stride,
     24                           const uint8_t *mask, int w, int h) {
     25  int i, j;
     26 
     27  assert(IMPLIES(src0 == dst, src0_stride == dst_stride));
     28  assert(IMPLIES(src1 == dst, src1_stride == dst_stride));
     29 
     30  assert(h >= 1);
     31  assert(w >= 1);
     32  assert(IS_POWER_OF_TWO(h));
     33  assert(IS_POWER_OF_TWO(w));
     34 
     35  for (i = 0; i < h; ++i) {
     36    for (j = 0; j < w; ++j) {
     37      dst[i * dst_stride + j] = AOM_BLEND_A64(
     38          mask[j], src0[i * src0_stride + j], src1[i * src1_stride + j]);
     39    }
     40  }
     41 }
     42 
     43 #if CONFIG_AV1_HIGHBITDEPTH
     44 void aom_highbd_blend_a64_hmask_c(uint8_t *dst_8, uint32_t dst_stride,
     45                                  const uint8_t *src0_8, uint32_t src0_stride,
     46                                  const uint8_t *src1_8, uint32_t src1_stride,
     47                                  const uint8_t *mask, int w, int h, int bd) {
     48  int i, j;
     49  uint16_t *dst = CONVERT_TO_SHORTPTR(dst_8);
     50  const uint16_t *src0 = CONVERT_TO_SHORTPTR(src0_8);
     51  const uint16_t *src1 = CONVERT_TO_SHORTPTR(src1_8);
     52  (void)bd;
     53 
     54  assert(IMPLIES(src0 == dst, src0_stride == dst_stride));
     55  assert(IMPLIES(src1 == dst, src1_stride == dst_stride));
     56 
     57  assert(h >= 1);
     58  assert(w >= 1);
     59  assert(IS_POWER_OF_TWO(h));
     60  assert(IS_POWER_OF_TWO(w));
     61 
     62  assert(bd == 8 || bd == 10 || bd == 12);
     63 
     64  for (i = 0; i < h; ++i) {
     65    for (j = 0; j < w; ++j) {
     66      dst[i * dst_stride + j] = AOM_BLEND_A64(
     67          mask[j], src0[i * src0_stride + j], src1[i * src1_stride + j]);
     68    }
     69  }
     70 }
     71 #endif