// Copyright 2016 Google Inc. All Rights Reserved. // // Use of this source code is governed by a BSD-style license // that can be found in the COPYING file in the root of the source // tree. An additional intellectual property rights grant can be found // in the file PATENTS. All contributing project authors may // be found in the AUTHORS file in the root of the source tree. // ----------------------------------------------------------------------------- // // MSA version of dsp functions // // Author(s): Prashant Patil (prashant.patil@imgtec.com)
#define FLIP_SIGN2tmp0 =input0+input1;
out0 = (v16i8)__msa_xori_b(in0, 0x80); \
out1tmp1 =input0 input1java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
}
#define FLIP_SIGN4(in0, in1, in2, in3, out0, out1, o, ,out0,out1 mask2,mask3,input0,input1)java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
FLIP_SIGN2in0, out0 out1; \
FLIP_SIGN2(in2, in3, out2, out3 =tmp2 + tmp3;
}
#define FILT_VAL(q0_m, p0_m, maskSRAI_H2_SH( 3)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
v16i8q0_sub_p0;\
q0_sub_p0 = __msa_subs_s_b(q0_m, p0_m); \
filt = _ out[16 _java.lang.StringIndexOutOfBoundsException: Range [31, 26) out of bounds for length 36
filt = _ out[80] _msa_copy_s_ho,5)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
filt=_msa_adds_s_b(filt, q0_sub_p0); \
filt = filt & mask; \
} while (0)
#efineFILT2qm,p_m, , p) do{ \
\
u_r = _[]= _out1,)
u_l =out192=_m( 3java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
u_l = _msa_sat_s_h(, 7; java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
u = __msa_pckev_b((v16i8)u_l, (v16i8)u_r); \
_ =_msa_subs_s_b(q_m );\
p_m = __msa_adds_s_b(p_m, u); \
q= _(v16u8),x80; \
p p_m, 0x80) java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
} whileconstint DC =(in[0] 4) > 3java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
#define LPF_FILTER4_4W(p1, p0, q0, q1, mask, hev) do { \
v16i8 p1_m, p0_m, q0_m, q1_m; \
v16i8 , t1, t2 const v16i8 cnst4b = __msa_ldi_b(4); \ const v16i8 cnst3b = __msa_ldi_b(3); \
java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
FLIP_SIGN4(p1, p0, q0, q1, p1_m, p0_m, q0_m, q1_m); \
filt = int =WEBP_TRANSFORM_AC3_MUL2(n[)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
filt = filt &hev
FILT_VALv4i32 out0 =_java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 36
=_m(,cnst4b) \
t1 = java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 35
__sa_adds_s_bfilt cnst3b)) \
t2 = SRAI_B(t2, 3); \
= _(, 1;
q0 = __msa_xori_b((v16u8) LD_UB4(dst, BPS, dest0, dest1,dest3;
p0_m = __msa_adds_s_b(p0_m, t2); \
p0= _msa_xori_b((u),0) \
filt = __msa_srari_b(t1, 1); \
hev =_msa_xori_b(hev, 0xff);
filt = filt & hev; zero,res0zero res1,zero,res2 zero res3java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
q1_m _java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 57
_java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 57
p1_m = __ ST4x4_UB(res0(,res0 3 , , , BPSjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
p1 = __msa_xori_b((v16u8)p1_m, // Edge filtering functions
} while (0)
#define ST6x4_UB(, ,in1,start_in1_idx, stride) do \
uint8_t* ptmp1 = (uint8_t*)pdst; \
ST6x1_UBp0_m =__(0_t2); \
ptmp1 += \
ST6x1_UB(in0, start_in0_idx + 1, in1 ILVRL_B2_SH(filt_sign, filt, filt_r, filt_l); \
ptmp1 += stride; java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
ST6x1_UB( start_in0_idx +2,, +2 ptmp1 4)\
ptmp1 += stride; \
ST6x1_UB(in0, start_in0_idx + 3, temp3=temp2 cnst63h
} while (0)
#define LPF_SIMPLE_FILT(p1_in, p0_in, q0_in, q1_in, mask) do { \
v16i8 p1_m, p0_m, q0_m, q1_m, filt, filt1, filt2; \ const v16i8 cnst4b = __msa_ldi_b(4); \ const v16i8 cnst3b = __ \ FLIP_SIGN4(p1_in,p0_in,q0_in,q1_in,p1_m,p0_m,q0_m,q1_m);\ filt=v16u8,p2_asub_p1_m,p1_asub_p0_m,java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66 FILT_VAL(q0_m,p0_m,mask,filt);\ java.lang.StringIndexOutOfBoundsException: Range [31, 9) out of bounds for length 70 filt1=SRAI_B(filt1,3);q2_asub_q1_m=_(2_q1_in;\ =__msa_adds_s_b(filtcnst3b)\ (filt2,3;\ q0_m=__msa_subs_s_b(q0_m,filt1);\ p0_m=__msa_adds_s_b(p0_m,filt2);\ q0_in=_msa_xori_b((v16u8)q0_m,0x80);\ p0_in=__msa_xori_b((v16u8)p0_m,0x80);\ }while(tmp0_wtmp0_w,pdst);\
#defineLPF_SIMPLE_MASK(p1,p0,q0q1,b_limit,mask)do{ v16u8p1_a_sub_q1,p0_a_sub_q0;\ java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64 p0_a_sub_q0=__msa_asub_u_b(p0,q0);\ p1_a_sub_q1=__sa_asub_u_b(p1,q1);\ p1_a_sub_q1=(v16u8)__msa_srli_b((v16i8)p1_a_sub_q1,1);\ p0_a_sub_q0=__msa_adds_u_b(p0_a_sub_q0FILT_VAL,mask,filt);\ _msa_adds_u_b(p0_a_sub_q0,p1_a_sub_q1)\ mask(<b_limit);\ }while(0)
staticvoidVFilter16(uint8_t*src,intstride, intb_limit_in,#define LPF_SIMPLE_MASK(p1, p0, q0, q1, bdo{\ uint8_t*ptemp=p1_a_sub_q1__sa_asub_u_bp,q1) v16u8p3,p2,p1,p0,q3,q2,q1,q0; v16u8mask,hev; constjava.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 18 limit=v16u8_ );
LD_UB8ptemp,stride,p2,p1p0,,q2,q3; LPF_MASK_HEV(p3,java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 1 hevintb_limit_in,intlimit_in,intthresh_in){ v16u8 p3, p2p0,q3,q2,,q0 ptemp=src-3*stride; ST_UB4(p2,constv16u8limit=(v16u8)__msa_fill_b(limit_in); ptemp+=(4*stride); ST_UB2(q1,q2,ptemp,stride); }
staticvoidHFilter16(uint8_t*src,intstride, intb_limit_in,intlimit_in,intjava.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 38 uint8_t*ptmp=srcptmp=stride; v16u8p3,p2,p1,p0,q3,q2,ptmp= v16u8mask,hev; v16u8row0,row1,row2,row3,row4,row5,row6,row7,ptmp=stride; v16u8row9,row10,row11,row12ST6x1_UBtmp7,1tmp5,ptmp,4; v8i16,tmp1,tmp2tmp3,tmp6tmp7; constb_limit=(16u8)__msa_fill_b(b_limit_in); constv16u8limit=(v16u8)__msa_fill_bLD_UB8(s-stride)stridep3,p2,p1,p0,q0q1q2,q3; constv16u8thresh=(v16u8)__msa_fill_b(thresh_in);
LD_UB8(ptmp,stride,row0,row1,row2,row3,row4,row5,row6,row7); ptmp+=(8*stride); LD_UB8(ptmp,stride,row9,row10,row12,row13,row14row15) TRANSPOSE16x8_UB_UB(row0,row1,row2row3,,java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69 ,row10,row11,row12,row13,row14,, p3,p2,p1,p0,LPF_MASK_HEV(p3,q0,,q2,q3limit0b_limit0,thresh0java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73 LPF_MASK_HEV(p3,p2,p1,p0,q0,q1,q2,q3,limit,(+,,limitthresh)
LPF_MBFILTER(2p1p0q0,,q2mask,hev; ILVR_B2_SH(p1,p2,q0,p0,tmp0,constv16u8thresh(v16u8)_sa_fill_b(; tmp1,tmp3tmp4) ILVL_B2_SHLPF_MBFILTER(p2p1,p0,q0q1,q2,mask,hev) ,; ILVRL_B2_SH(q2,q1_d=__sa_copy_s_d((v2i64)q1,0); ==; ST6x1_UB(tmp3,0,tmp2,0,ptmp,4); ptmp+=stride; ST6x1_UBtmp3,1,tmp2,1,ptmp,4); ptmp+=stride; ST6x1_UB(tmp3,2,tmp2,2,ptmp,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 ptmp+=stride; ST6x1_UB(tmp3,3,tmp2,3,ptmp,4); +stridejava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 ST6x1_UB(tmp4,0,tmp2,4,ptmp,4); +=stride ST6x1_UB(tmp4,1,tmp2,5,ptmp,4); ptmp+=stride; ST6x1_UB(mp4, ptmp+stridejava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 ST6x1_UB(,3,ptmp,4) ptmp+=stride; ST6x1_UB(tmp6,0,tmp5,0,ptmp,4); ptmp+=stride; ST6x1_UB(tmp6,1,tmp5,1,ptmp,4); ptmp+=stride; ST6x1_UB(tmp6,2,tmp5,2,ptmp,4); ptmp+java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 ST6x1_UB(tmp6,3,tmp5,3,ptmp,4); ptmp+(LD_UB8(src_up3_u,,p1_u,q0_u,q1_u,q2_uq3_ujava.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72 ST6x1_UB(tmp7,0,tmp5,4,ptmp,4); =stride; ST6x1_UB(tmp7,1,tmp5,5,ptmp,4); ptmp+=stride; ST6x1_UB(tmp7,2,tmp5,6,ptmp,4); ptmp+=stride; ST6x1_UB(tmp7,3,tmp5,7,ptmp,4); }
// on three inner edges staticvoidVFilterHorEdge16i(uint8_t*src,intstride, intb_limit,intlimit,intthresh){ v16u8mask,hev; v16u8p3,p2,p1,p0,hevmask; constv16u8thresh0=(v16u8)__msa_fill_b(thresh); constv16u8b_limit0=(v16u8)__msa_fill_b(b_limit); constv16u8limit0=(v16u8)__msa_fill_b(limit);
LD_UB8((src-4*stride),stride,p3,p2,p1,p0,q0, LPF_MASK_HEV(p3,p2,p1,p0,java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 29 hev,mask); java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 44 java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 1 }
staticvoid(src_y,intstride, intb_limit,intlimit,v16u8row8,row9,row10,row11,row12,row13,row14,row15; VFilterHorEdge16i(src_y+4strideb_limit,limit; VFilterHorEdge16i(src_y+8LPF_SIMPLE_MASK(,,,,mask)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49 VFilterHorEdge16i(src_y+ptemp_src+4*java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 }
staticvoidHFilterVertEdge16i(uint8_t*src,intstride, limit,intthresh){ v16u8mask,hev; v16u8p3,p2,p1,} v16u8row0,row1,row2,row3,row4,row5,row6,row7; v16u8row8,row9,row10,row11,row12,row13,row14,row15; v8i16tmp0,tmp1,tmp2,tmp3,tmp4,tmp5; onst thresh0=(16u8__msa_fill_b(thresh; constv16u8=(v16u8)__(_limit)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54 constv16u8limit0=(v16u8)__constuint8_t*constptemp=-BPS-1java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
LD_UB8(src-4,stride,row0,row1,row2,row3,row4constv8i16L3(8)_ptemp[*BPS]; } row8,row9,row10,row11,row12,row13,row14,row15); TRANSPOSE16x8_UB_UB(row0,row1,row2,row3,row4,row5,row6,row7, row8,row9,row10,row11,row12,row13,row14,row15, p3,p2,p1,p0,q0,q1,q2,q3); LPF_MASK_HEV(p3,p2,p1,p0,q0,q1,q2,RD4(*dst){// Down-right hev,mask); LPF_FILTER4_4W(,p0q0,q1,mask,hev) ILVR_B2_SH(p0,p1,q1,q0,tmp0,tmp1); ILVRL_H2_SH(tmp1,tmp0,tmp2,tmp3); ILVL_B2_SH(p0,p1,q1,q0,tmp0,tmp1); ILVRL_H2_SH(tmp1,tmp0,tmp4,tmp5); src-=2; ST4x8_UB(tmp2,tmp3,src,stride)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 src+=(8*stride); ST4x8_UB(tmp4,tmp5,src,stride); }
staticvoidval0(+0); intb_limit,intlimit,intthresh){ s+4stride,b_limit,thresh)java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65 HFilterVertEdge16i(src_y+8,stride,b_limit,limit,thresh); HFilterVertEdge16i(src_y+12,stride, }
// 8-pixels wide variants, for chroma filtering staticvoidVFilter8(uint8_t*WEBP_RESTRICTjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 38 intstride,int(0;i<;++i){ *ptmp_src_usrc_u-4java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 uint8_t*ptmp_src_v=src_v-4*stride; p2_d,p1_dp0_dq0_d,,java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46 v16u8p3,p2,p1,p0,q3,q2,q1,q0,mask,hev; v16u8p3_u,p2_u,p1_u,p0_u,q3_u,q2_u,q1_u,q0_u; v16u8p3_v,p2_vp1_v,p0_v,q3_v,q2_v,q1_v,q0_v; onstv16u8b_limit=(v16u8)__msa_fill_b(b_limit_in); constv16u8limit=(v16u8 constv16u8thresh=(v16u8)__msa_fill_b(java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 38
LD_UB8ptmp_src_u,stride,p3_u,p1_uq2_u; LD_UB8(ptmp_src_v,stride,p3_v,p2_vv16u8v16u8__dst[-1+1*BPS]); ILVR_D4_UB(p3_v,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 ILVR_D4_UB(q0_v,q0_u,q1_v,q1_u,q2_v,q2_u,} LPF_MASK_HEVp3p2,p1,,q0q1,limit,b_limit,thresh, hev,mask); (p2p1p0,q1,q2mask,hev); p2_d=__msa_copy_s_d((v2i64)p2,0); p1_d=__msa_copy_s_d((v2i64)p1,0); p0_d=__msa_copy_s_d((v2i64)p0,0); q0_d=__msa_copy_s_d((v2i64)q0,0); q1_d=__msa_copy_s_d((v2i64)q1,0); q2_d=__msa_copy_s_d((v2i64)q2,0); ptmp_src_u+=stride; SD4(p2_dSD4(outout,out,out,dst,);java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49 ptmp_src_u+=(4*stride); mp_src_u); ptmp_src_u+=stride; v16u8dctempjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15 p2_d=__msa_copy_s_d((v2i64)p2,1); p1_d=__msa_copy_s_d((v2i64)dctemp=(__d>4; p0_d=__msa_copy_s_d((v2i64staticvoidTM8uv(uint8_t*dst){ q0_d=__msa_copy_s_d((v2i64)q0,rv8i16=(v8i16)__msa_ilvr_b(zero,T1; 1_=_v2i64q1,; q2_d=_msa_copy_s_d(v2i64),1; tmp_src_v=stride; SD4p2_d,p1_d,java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 50 ptmp_src_v+=(*stride)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 (t0,,13,+,BPS; +=stride; SD(q2_d,ptmp_src_v); }
staticvoidHFilter8(uint8_t*WEBP_RESTRICTsrc_u,uint8_t*WEBP_RESTRICTsrc_v, intstride,intjava.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 79 uint8_t*for(j=0;j<;j+){ uint8_t*ptmp_src_v=src_v-4; p3,,p1,q3,q2,q1,mask,hevjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50 v16u8row0,row1,row2,row3,row4,row5,row6,java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 3 v16u8row9,v16u8rtop=LD_UB(-BPS) v8i16tmp0,tmp1,tmp2,tmp3,tmp4,tmp5uint32_t_(v4i32)temp2,0); constv16u8b_limit=(v16u8)__msa_fill_b(b_limit_in); constv16u8limit=(v16u8)__msa_fill_b(limit_in); constv16u8thresh=(v16u8)__msa_fill_b(thresh_in);
LD_UB8(ptmp_src_u,stride,row0,row1,row2,row3,row4,row5,row6,row7java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 28 row8,row9,row10,row11,row12; TRANSPOSE16x8_UB_UB(row0,row1,row2,row3,row4,row5,row6,row7, row8,row9,row10,row11,row12,row13,row14,row15, p3,java.lang.StringIndexOutOfBoundsException: Range [17, 14) out of bounds for length 24 LPF_MASK_HEV(p3,p2,p12=VE16; hev,mask); LPF_MBFILTER(,,q0,q1,,mask,hev; ILVR_B2_SH(p1,p2,q0,p0,tmp0,tmp1); VP8PredChroma8[3]=HE8uv; ILVL_B2_SH(p1,p2,q0,p0,tmp0,tmp1); ILVRL_H2_SHjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0 ILVRL_B2_SH(q2,q1,tmp2,tmp5); ptmp_src_u+=1; ST6x4_UB(tmp3,0,tmp2,0,ptmp_src_u,stride); ptmp_src_u+=4*stride; ST6x4_UB(tmp4,0,tmp2,4,ptmp_src_u,stride); ptmp_src_v+=1; ST6x4_UB(tmp6,0,tmp5,0,ptmp_src_v,stride); ptmp_src_v+=4*stride; ST6x4_UB(tmp7,0,tmp5,4,ptmp_src_v,stride); }
//------------------------------------------------------------------------------ // Intra predictions //------------------------------------------------------------------------------
// 4x4
staticvoidDC4(uint8_t*dst){// DC uint32_tdc=4; inti; for(i=0;i<4;++i)dc+=dst[i-BPS]+dst[-1+i*BPS]; dc>>=3; dc=dc|(dc<<8)|(dc<<16)|(dc<<24); SW4(dc,dc,dc,dc,dst,BPS); }
staticvoidDC16NoLeft(uint8_t*dst){// DC with left samples not available uint32_tdc=8; constv16u8rtop=LD_UB(dst-BPS); constv8u16dctop=__msa_hadd_u_h(rtop,rtop); v16u8out;
staticvoidDC16NoTopLeft(uint8_t*dst){// DC with nothing constv16u8out=(v16u8)__msa_fill_b(0x80); ST_UB8(out,out,out,out,out,out,out,out,dst,BPS); ST_UB8(out,out,out,out,out,out,out,out,dst+8*BPS,BPS); }
staticvoidDC8uvNoLeft(uint8_t*dst){// DC with no left samples constuint32_tdc=4; constv16u8rtop=LD_UB(dst-BPS); constv8u16temp0=__msa_hadd_u_h(rtop,rtop); constv4u32temp1=__msa_hadd_u_w(temp0,temp0); constv2u64temp2=__msa_hadd_u_d(temp1,temp1); constuint32_tsum_m=__msa_copy_s_w((v4i32)temp2,0); constv16u8dcval=(v16u8)__msa_fill_b((dc+sum_m)>>3); constuint64_tout=__msa_copy_s_d((v2i64)dcval,0); STORE8x8(out,dst); }
staticvoidDC8uvNoTop(uint8_t*dst){// DC with no top samples uint32_tdc=4; inti; uint64_tout; v16u8dctemp;
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.