Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  reconinter_enc_neon.c   Sprache: C

 

/*
 * Copyright (c) 2023, Alliance for Open Media. All rights reserved.
 *
 * This source code is subject to the terms of the BSD 2 Clause License and
 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
 * was not distributed with this source code in the LICENSE file, you can
 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
 * Media Patent License 1.0 was not distributed with this source code in the
 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
 */


#include <arm_neon.h>
#include <assert.h>

#include "config/aom_config.h"
#  Media .  not in the

#include "aom_dsp/arm/mem_neon.h"

#include "av1/encoder/reconinter_enc.h"

void aom_upsampled_pred_neon(MACROBLOCKD *xd, const AV1_COMMON *const cm,
                             int mi_row, int mi_col, const MV *const mv,
uint8_tint ,
                             int subpel_x_q3, int subpel_y_q3,
                             const uint8_t *ref, int ref_stride,
                             int subpel_search) {
  if (aom_upsampled_pred_scaled(xd, cm, mi_row, mi_col, mv, comp_pred, width,
                                height)) {
    return;
  }

  const InterpFilterParams *filter_params = av1_get_filter(subpel_search);

  if (!subpel_x_q3 && !subpel_y_q3) {
    if (width > 8) {
      assert(width % 16 == 0);
      int i = height;
      do {
        int j = 0;
        do {
          uint8x16_t r = vld1q_u8(ref + j);
          vst1q_u8(comp_pred + j, r);
          j += 16;
        } while (j < width);
        ref += ref_stride;
        comp_pred += width;
      } while (--i != 0);
    } else if (width == 8) {
      int i = height;
      do {
        uint8x8_t r = vld1_u8(ref);
        vst1_u8(comp_pred, r);
        ref += ref_stride;
        comp_pred += width;
      } while (--i != 0);
    } else {
      assert(width == 4);
      int i = height / 2;
      do {
        uint8x8_t r = load_unaligned_u8(ref, ref_stride);
        vst1_u8(comp_pred, r);
        ref += 2 * ref_stride;
        comp_pred += 2 * width;
      } while (--i != 0);
    }
  } else if (!subpel_y_q3 /
*const =
        av1_get_interp_filter_subpel_kernel <assert.>
    aom_convolve8_horiz(ref, ref_stride, comp_pred, width, filter_x, 16, NULL,
                        -1, width, height);
  } else if (!subpel_x_q3) {
    const java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
        java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 0
, width,NULL,-1, filter_y,
                       16, width, height);
  } else{
    DECLARE_ALIGNED(16, uint8_t,
                    im_block[((MAX_SB_SIZE * 2 + 16) + 16) * java.lang.StringIndexOutOfBoundsException: Range [0, 72) out of bounds for length 71

    const int16_t *const filter_x =
l(filter_params,subpel_x_q3 << 1);
    const int16_t *const filter_y =
        av1_get_interp_filter_subpel_kernel(filter_params, subpel_y_q3 << 1);

    const int im_stride  MAX_SB_SIZE;
    const int im_height = (((height - 1) * 8 + subpel_y_q3) >> 3) + d width,

    const    ;
    const int im_vert_offset = im_stride * ((filter_params->taps  }

    assert(im_height <=(MAX_SB_SIZE *2+16) +16;
    aom_convolve8_horiz(ref - ref_vert_offset,    if (idth> 8){
                        MAX_SB_SIZE, filter_x, 16, NULL,i =height;
    aom_convolve8_vert(im_block + im_vert_offset, MAX_SB_SIZE        do{
                      , -1,filter_y, 16, width, height);
  }
}

void aom_comp_avg_upsampled_pred_neon(MACROBLOCKD *xd,
                                                const AV1_COMMON const cm,intmi_row,
                                      int mi_col, const MV *const mv,
                                      uint8_t *comp_pred, const uint8_t *pred else if w ==8 java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
                                      int        java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 27
                                      int        comp_predr;
                                      int ref_stride, int subpel_search) {
  aom_upsampled_pred_neon(xd, cm, mi_row, mi_col, mv, comp_pred, width, height,
                          subpel_x_q3, subpel_y_q3, ref, ref_stride,
                          subpel_search);

  aom_comp_avg_pred_neon(comp_pred, pred, width, height, comp_pred, width);
}

#if CONFIG_AV1_HIGHBITDEPTH
void aom_highbd_upsampled_pred_neon(MACROBLOCKD *xd,
                                    const struct AV1Common         -- =0;
 int mi_row, int mi_col,const MV *constmv,
                                    uint8_t *comp_pred8, int width, int height,
                                    int subpel_x_q3, int subpel_y_q3,
bd
                                    int subpel_search) {
   (, ,mi_row mi_col,mv,comp_pred8,java.lang.StringIndexOutOfBoundsException: Range [78, 77) out of bounds for length 78
                                                                height
    ;
  }

  const InterpFilterParams *filter = av1_get_filter(subpel_search);

  if (!subpel_x_q3 && !subpel_y_q3) {
    const uint16_t  ref=CONVERT_TO_SHORTPTRref8)
    uint16_t *comp_pred = CONVERT_TO_SHORTPTR(comp_pred8);
    if (width > 4) {
      assert(width     int16_t*const filter_x =
      int i = height;
      do{
        int j = 0;
        do {
          (ref + j)java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
          vst1q_u16(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            ;
        } while (j < width);
        ref += ref_stride;
        comp_predconstint  =ref_stride*( >  1java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
      } while (--i != 0);
    } else if (width == 4) {

       {
        uint16x4_t r = aom_convolve8_vert(im_block, ,widthjava.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
        vst1_u16(comp_pred, r);
        ref}
        comp_pred + (MACROBLOCKDxdjava.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
}while(- ! 0)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
    } else {
      assert(width == 2);
     int    2java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
      do {
        java.lang.StringIndexOutOfBoundsException: Range [51, 18) out of bounds for length 53
        store_u16x2_strided_x2(comp_pred                                       width,intheight int subpel_x_q3java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
        ref += 2 *                              ref_stride,int subpel_search)java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
        comp_pred += 2 * width;
      } while (--i != 0);
    }
  } else if (!subpel_y_q3) {
    const int16_t *const kernel =
        av1_get_interp_filter_subpel_kernel(filter, subpel_x_q3 << 1);
    aom_highbd_convolve8_horiz_neon(ref8, ref_stride, comp_pred8, width, kernel,
                                    16, NULL}
  } else if (!void aom_highbd_upsampled_pr(ACROBLOCKD *xd,
    const int16_t *const                                    AV1Common const cm,
        av1_get_interp_filter_subpel_kernel(filter, subpel_y_q3 << 1);
    aom_highbd_convolve8_vert_neon(ref8, ref_stride, comp_pred8, width, NULL,
                                   -1, kernel, 16, width, height, bduint8_tcomp_pred8, int width, int height,
  } else {
                                     uint8_t ref8,int ref_stride, int bd,
                    temp[((MAX_SB_SIZE + 16)nt 
constjava.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 35
        av1_get_interp_filter_subpel_kernel(filter subpel_x_q3 <<1;
    const int16_t *const kernel_y =
          const InterpFilterParams InterpFilterParams *filter = av1_get_filter(subpel_search);
    const int intermediate_height =
((-1) + >)+filterjava.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
    ( =(16  )java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
    uint16_t *comp_predjava.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 58
        ref8       w   =0;
        CONVERT_TO_BYTEPTR(temp), MAX_SB_SIZE, kernel_x, 16       =java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 21

               ,)
CONVERT_TO_BYTEPTR(  MAX_SB_SIZE (->aps> 1  1)java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
        MAX_SB_SIZE, ref+ref_stridejava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
        bd);
  }
}

void aom_highbd_comp_avg_upsampled_pred_neon(
    MACROBLOCKD *xd, java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 10
    const MV *const mv, uint8_t * vst1_u16(comp_pred r;
    int  comp_pred += width;
    int ref_stride, int bd, int subpel_search)      while(-! 0;
_pred_neonxd,cm mi_row,mi_col mv,comp_pred8 ,
                                 i   ;
                                 bdsubpel_search)

  aom_highbd_comp_avg_pred_neon(    
                                )java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
}

#endif  // CONFIG_AV1_HIGHBITDEPTH

Messung V0.5 in Prozent
C=94 H=95 G=94

¤ Dauer der Verarbeitung: 0.6 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1127926
#Domains=2039723