Ignore:
Timestamp:
Nov 21, 2017 9:25:11 AM (3 years ago)
Author:
riza
Message:

Close #2065: Update libyuv to fix linker error when building libyuv as dll on Visual Studio 2015.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/third_party/yuv/source/row_any.cc

    r5633 r5699  
    8585           SS(r, DUVSHIFT) * BPP);                                         \ 
    8686  } 
     87 
     88// Merge functions. 
     89#ifdef HAS_MERGERGBROW_SSSE3 
     90ANY31(MergeRGBRow_Any_SSSE3, MergeRGBRow_SSSE3, 0, 0, 3, 15) 
     91#endif 
     92#ifdef HAS_MERGERGBROW_NEON 
     93ANY31(MergeRGBRow_Any_NEON, MergeRGBRow_NEON, 0, 0, 3, 15) 
     94#endif 
    8795#ifdef HAS_I422TOYUY2ROW_SSE2 
    8896ANY31(I422ToYUY2Row_Any_SSE2, I422ToYUY2Row_SSE2, 1, 1, 4, 15) 
     
    622630ANY11(ARGBExtractAlphaRow_Any_NEON, ARGBExtractAlphaRow_NEON, 0, 4, 1, 15) 
    623631#endif 
     632#ifdef HAS_ARGBEXTRACTALPHAROW_MSA 
     633ANY11(ARGBExtractAlphaRow_Any_MSA, ARGBExtractAlphaRow_MSA, 0, 4, 1, 15) 
     634#endif 
    624635#undef ANY11 
    625636 
     
    746757ANY11P16(HalfFloatRow_Any_NEON, HalfFloatRow_NEON, float, 2, 2, 7) 
    747758ANY11P16(HalfFloat1Row_Any_NEON, HalfFloat1Row_NEON, float, 2, 2, 7) 
     759#endif 
     760#ifdef HAS_HALFFLOATROW_MSA 
     761ANY11P16(HalfFloatRow_Any_MSA, HalfFloatRow_MSA, float, 2, 2, 31) 
    748762#endif 
    749763#undef ANY11P16 
     
    912926ANY12(SplitUVRow_Any_DSPR2, SplitUVRow_DSPR2, 0, 2, 0, 15) 
    913927#endif 
     928#ifdef HAS_SPLITUVROW_MSA 
     929ANY12(SplitUVRow_Any_MSA, SplitUVRow_MSA, 0, 2, 0, 31) 
     930#endif 
    914931#ifdef HAS_ARGBTOUV444ROW_SSSE3 
    915932ANY12(ARGBToUV444Row_Any_SSSE3, ARGBToUV444Row_SSSE3, 0, 4, 0, 15) 
     
    934951#endif 
    935952#undef ANY12 
     953 
     954// Any 1 to 3.  Outputs RGB planes. 
     955#define ANY13(NAMEANY, ANY_SIMD, BPP, MASK)                                    \ 
     956  void NAMEANY(const uint8* src_ptr, uint8* dst_r, uint8* dst_g, uint8* dst_b, \ 
     957               int width) {                                                    \ 
     958    SIMD_ALIGNED(uint8 temp[16 * 6]);                                          \ 
     959    memset(temp, 0, 16 * 3); /* for msan */                                    \ 
     960    int r = width & MASK;                                                      \ 
     961    int n = width & ~MASK;                                                     \ 
     962    if (n > 0) {                                                               \ 
     963      ANY_SIMD(src_ptr, dst_r, dst_g, dst_b, n);                               \ 
     964    }                                                                          \ 
     965    memcpy(temp, src_ptr + n * BPP, r * BPP);                                  \ 
     966    ANY_SIMD(temp, temp + 16 * 3, temp + 16 * 4, temp + 16 * 5, MASK + 1);     \ 
     967    memcpy(dst_r + n, temp + 16 * 3, r);                                       \ 
     968    memcpy(dst_g + n, temp + 16 * 4, r);                                       \ 
     969    memcpy(dst_b + n, temp + 16 * 5, r);                                       \ 
     970  } 
     971 
     972#ifdef HAS_SPLITRGBROW_SSSE3 
     973ANY13(SplitRGBRow_Any_SSSE3, SplitRGBRow_SSSE3, 3, 15) 
     974#endif 
     975#ifdef HAS_SPLITRGBROW_NEON 
     976ANY13(SplitRGBRow_Any_NEON, SplitRGBRow_NEON, 3, 15) 
     977#endif 
    936978 
    937979// Any 1 to 2 with source stride (2 rows of source).  Outputs UV planes. 
Note: See TracChangeset for help on using the changeset viewer.