Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Video Encoding > New and alternative video codecs

Reply
 
Thread Tools Search this Thread Display Modes
Old 28th March 2021, 22:33   #421  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 807
Quote:
Originally Posted by Marsu42 View Post
The more probably progress of AV2 will be including more patented stuff from AVC, HEVC and VVC once it expires - which might take some time.
The number of VVC patches has decreased. We'll see what time will tell.
Jamaika is offline   Reply With Quote
Old 28th March 2021, 22:38   #422  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 807
Test
avifenc.exe -a tune=butteraugli -j 4 160011_architecture-air-conditioner-building.jpg 160011_architecture-air-conditioner-building.avif
ERROR: Failed to finish encoding: Encoding of color planes failed

heifenc.exe image_21447_48bit.png -v -L -q 100 --avif -b 8 --no-alpha -p chroma=444 -p speed=5 -p tune=butteraugli --matrix_coefficients=1 --full_range_flag=0 -o image_21447_36bit.avif
ERROR:
Jamaika is offline   Reply With Quote
Old 29th March 2021, 22:15   #423  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 807
New codecs for maniac 2021.03.29
https://www.sendspace.com/file/zu5ipq

Problem with webp2:
Code:
#if !defined(_MSC_VER)
#ifdef WP2_HAVE_BOOST
#include <boost/stacktrace.hpp>
#include <sstream>
#else
#include "execinfo.h"
#endif
#endif
Fix
#if !defined(_WIN32) || !defined(_WIN64)

libyuv 1785 - problem with SIMD AVX2 GCC
C:\Users\KOMPUT~1\AppData\Local\Temp\ccLXwvku.s: Assembler messages:
C:\Users\KOMPUT~1\AppData\Local\Temp\ccLXwvku.s:7873: Error: operand type mismatch for `vbroadcastss'
C:\Users\KOMPUT~1\AppData\Local\Temp\ccLXwvku.s:7948: Error: operand type mismatch for `vbroadcastss'
Change:
Code:
#ifdef HAS_ARGBTOAR30ROW_SSSE3
void ARGBToAR30Row_SSSE3(const uint8_t* src, uint8_t* dst, int width) { ... }

void ABGRToAR30Row_SSSE3(const uint8_t* src, uint8_t* dst, int width) { ... }
#endif
Code:
#ifdef HAS_ARGBTOAR64ROW_SSSE3
void ARGBToAR64Row_SSSE3(const uint8_t* src_argb,
                         uint16_t* dst_ar64,
                         int width) { ... }

void AR64ToARGBRow_SSSE3(const uint16_t* src_ar64,
                         uint8_t* dst_argb,
                         int width) { ... }

void AB64ToARGBRow_SSSE3(const uint16_t* src_ab64,
                         uint8_t* dst_argb,
                         int width) { ... }
#endif
Code:
#if defined(HAS_ARGBTOYROW_SSSE3) || defined(HAS_I422TOARGBROW_SSSE3)
void BGRAToYRow_SSSE3(const uint8_t* src_bgra, uint8_t* dst_y, int width) { ... }

void BGRAToUVRow_SSSE3(const uint8_t* src_bgra,
                       int src_stride_bgra,
                       uint8_t* dst_u,
                       uint8_t* dst_v,
                       int width) { ... }

void ABGRToYRow_SSSE3(const uint8_t* src_abgr, uint8_t* dst_y, int width) { ... }

void RGBAToYRow_SSSE3(const uint8_t* src_rgba, uint8_t* dst_y, int width) { ... }

void ABGRToUVRow_SSSE3(const uint8_t* src_abgr,
                       int src_stride_abgr,
                       uint8_t* dst_u,
                       uint8_t* dst_v,
                       int width) { ... }

void RGBAToUVRow_SSSE3(const uint8_t* src_rgba,
                       int src_stride_rgba,
                       uint8_t* dst_u,
                       uint8_t* dst_v,
                       int width) { ... }
#endif
Code:
#ifdef HAS_CONVERT16TO8ROW_SSSE3
void Convert16To8Row_SSSE3(const uint16_t* src_y,
                           uint8_t* dst_y,
                           int scale,
                           int width) { ... }
#endif
Code:
#ifdef HAS_HALFMERGEUVROW_SSSE3
void HalfMergeUVRow_SSSE3(const uint8_t* src_u,
                          int src_stride_u,
                          const uint8_t* src_v,
                          int src_stride_v,
                          uint8_t* dst_uv,
                          int width) { ... }
#endif
Code:
#ifdef HAS_HALFMERGEUVROW_AVX2
void HalfMergeUVRow_AVX2(const uint8_t* src_u,
                         int src_stride_u,
                         const uint8_t* src_v,
                         int src_stride_v,
                         uint8_t* dst_uv,
                         int width) { ... }
#endif
Code:
ANY11(RGB565ToARGBRow_Any_SSE2, RGB565ToARGBRow_SSE2, 0, 2, 4, 7)
ANY11(ARGB1555ToARGBRow_Any_SSE2, ARGB1555ToARGBRow_SSE2, 0, 2, 4, 7)
ANY11(ARGB4444ToARGBRow_Any_SSE2, ARGB4444ToARGBRow_SSE2, 0, 2, 4, 7)
#if defined(HAS_RGB24TOARGBROW_SSSE3)
ANY11(RGB24ToARGBRow_Any_SSSE3, RGB24ToARGBRow_SSSE3, 0, 3, 4, 15)
ANY11(RAWToARGBRow_Any_SSSE3, RAWToARGBRow_SSSE3, 0, 3, 4, 15)
#endif
Code:
ANY11(YUY2ToYRow_Any_SSE2, YUY2ToYRow_SSE2, 1, 4, 1, 15)
ANY11(UYVYToYRow_Any_SSE2, UYVYToYRow_SSE2, 1, 4, 1, 15)
#ifdef HAS_BGRATOYROW_SSSE3
ANY11(BGRAToYRow_Any_SSSE3, BGRAToYRow_SSSE3, 0, 4, 1, 15)
ANY11(ABGRToYRow_Any_SSSE3, ABGRToYRow_SSSE3, 0, 4, 1, 15)
ANY11(RGBAToYRow_Any_SSSE3, RGBAToYRow_SSSE3, 0, 4, 1, 15)
#endif
Code:
#ifdef HAS_SCALEROWUP2BILINEAR_16_SSE2
SU2BLANY(ScaleRowUp2_Bilinear_16_Any_SSE2,
         ScaleRowUp2_Bilinear_16_SSE2,
         ScaleRowUp2_Bilinear_16_C,
         7,
         uint16_t)
#endif
Code:
#ifdef HAS_SCALEROWUP2BILINEAR_16_SSSE3
  if (TestCpuFlag(kCpuHasSSSE3)) {
    Scale2RowUp = ScaleRowUp2_Bilinear_16_Any_SSSE3;
  }
#endif
Code:
#ifdef HAS_SCALEROWDOWN2_SSSE3
void ScaleRowDown2_SSSE3(const uint8_t* src_ptr,
                         ptrdiff_t src_stride,
                         uint8_t* dst_ptr,
                         int dst_width) { ... }

void ScaleRowDown2Linear_SSSE3(const uint8_t* src_ptr,
                               ptrdiff_t src_stride,
                               uint8_t* dst_ptr,
                               int dst_width) { ... }

void ScaleRowDown2Box_SSSE3(const uint8_t* src_ptr,
                            ptrdiff_t src_stride,
                            uint8_t* dst_ptr,
                            int dst_width) { ... }
#endif
Code:
#ifdef HAS_SCALEROWDOWN4_SSSE3
void ScaleRowDown4_SSSE3(const uint8_t* src_ptr,
                         ptrdiff_t src_stride,
                         uint8_t* dst_ptr,
                         int dst_width) { ... }

void ScaleRowDown4Box_SSSE3(const uint8_t* src_ptr,
                            ptrdiff_t src_stride,
                            uint8_t* dst_ptr,
                            int dst_width) { ... }
#endif
Code:
#ifdef HAS_SCALEROWDOWN34_SSSE3
void ScaleRowDown34_SSSE3(const uint8_t* src_ptr,
                          ptrdiff_t src_stride,
                          uint8_t* dst_ptr,
                          int dst_width) { ... }

void ScaleRowDown34_1_Box_SSSE3(const uint8_t* src_ptr,
                                ptrdiff_t src_stride,
                                uint8_t* dst_ptr,
                                int dst_width) { ... }

void ScaleRowDown34_0_Box_SSSE3(const uint8_t* src_ptr,
                                ptrdiff_t src_stride,
                                uint8_t* dst_ptr,
                                int dst_width) { ... }

void ScaleRowDown38_SSSE3(const uint8_t* src_ptr,
                          ptrdiff_t src_stride,
                          uint8_t* dst_ptr,
                          int dst_width) { ... }

void ScaleRowDown38_2_Box_SSSE3(const uint8_t* src_ptr,
                                ptrdiff_t src_stride,
                                uint8_t* dst_ptr,
                                int dst_width) { ... }

void ScaleRowDown38_3_Box_SSSE3(const uint8_t* src_ptr,
                                ptrdiff_t src_stride,
                                uint8_t* dst_ptr,
                                int dst_width) { ... }
#endif
Code:
#ifdef HAS_SCALEFILTERCOLS_SSSE3
void ScaleFilterCols_SSSE3(uint8_t* dst_ptr,
                           const uint8_t* src_ptr,
                           int dst_width,
                           int x,
                           int dx) { ... }
#endif
Code:
#ifdef HAS_SCALEARGBFILTERCOLS_SSSE3
void ScaleARGBFilterCols_SSSE3(uint8_t* dst_argb,
                               const uint8_t* src_argb,
                               int dst_width,
                               int x,
                               int dx) { ... }
#endif
Code:
#ifdef __AVX2__
// Visual C 2012 required for AVX2.
#if defined(_M_IX86) && !defined(__clang__) && defined(_MSC_VER) && \
    _MSC_VER >= 1700
#define VISUALC_HAS_AVX2
#endif  // VisualStudio >= 2012

// clang >= 3.4.0 required for AVX2.
#if defined(__clang__) && (defined(__x86_64__) || defined(__i386__))
#if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 4))
#define CLANG_HAS_AVX2
#endif  // clang >= 3.4
#endif  // __clang__

#if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
#if (__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7))
#define GCC_HAS_AVX2
#endif  // GNUC >= 4.7
#endif  // __GNUC__
#endif

// The following are available for Visual C and GCC:
#if !defined(LIBYUV_DISABLE_X86) && \
    (defined(__x86_64__) || defined(__i386__) || defined(_M_IX86))
#ifdef __SSE4_1__
#define HAS_HASHDJB2_SSE41
#endif
#define HAS_SUMSQUAREERROR_SSE2
#ifdef __SSE4_2__
#define HAS_HAMMINGDISTANCE_SSE42
#endif
#endif
Code:
// The following are available for GCC and clangcl 64 bit:
#if !defined(LIBYUV_DISABLE_X86) && defined(__SSSE3__) && \
    (defined(__x86_64__) || defined(__i386__)) && !defined(_MSC_VER)
#define HAS_HAMMINGDISTANCE_SSSE3
#endif

// The following are available for GCC and clangcl 64 bit:
#if !defined(LIBYUV_DISABLE_X86) && \
    (defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2)) && \
    (defined(__x86_64__) || defined(__i386__)) && !defined(_MSC_VER)
#define HAS_HAMMINGDISTANCE_AVX2
#endif
Code:
#ifdef __AVX2__
// GCC >= 4.7.0 required for AVX2.
#if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
#if (__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7))
#define GCC_HAS_AVX2
#endif  // GNUC >= 4.7
#endif  // __GNUC__

// clang >= 3.4.0 required for AVX2.
#if defined(__clang__) && (defined(__x86_64__) || defined(__i386__))
#if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 4))
#define CLANG_HAS_AVX2
#endif  // clang >= 3.4
#endif  // __clang__

// Visual C 2012 required for AVX2.
#if defined(_M_IX86) && !defined(__clang__) && defined(_MSC_VER) && \
    _MSC_VER >= 1700
#define VISUALC_HAS_AVX2
#endif  // VisualStudio >= 2012
#endif

// clang >= 6.0.0 required for AVX512.
#if defined(__clang__) && (defined(__x86_64__) || defined(__i386__))
// clang in xcode follows a different versioning scheme.
// TODO(fbarchard): fix xcode 9 ios b/789.
#if (__clang_major__ >= 7) && !defined(__APPLE__)
#define CLANG_HAS_AVX512
#endif  // clang >= 7
#endif  // __clang__
Code:
#if  (defined(__x86_64__) || defined(__i386__)) && !defined(_MSC_VER)

Last edited by Jamaika; 5th April 2021 at 12:03.
Jamaika is offline   Reply With Quote
Old 4th April 2021, 08:21   #424  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 807
Opensource 2021.04.04
https://www.sendspace.com/file/9dnpbl

Test new GCC 11.0.1 with codec google
https://www.sendspace.com/file/59w1iw

Test new GCC 11.0.1 with codec google with AVX2
https://www.sendspace.com/file/42l6fk
Observed differences. I don't know why I can run AVX2 codecs on my old computer. Either changes have been made to GCC 11 or Windows, or something compiles badly.

Last edited by Jamaika; 5th April 2021 at 18:49.
Jamaika is offline   Reply With Quote
Old 7th April 2021, 11:14   #425  |  Link
skal
Registered User
 
Join Date: Jun 2003
Posts: 129
Quote:
Originally Posted by Jamaika View Post
New codecs for maniac 2021.03.29
https://www.sendspace.com/file/zu5ipq

Problem with webp2:
Code:
#if !defined(_MSC_VER)
#ifdef WP2_HAVE_BOOST
#include <boost/stacktrace.hpp>
#include <sstream>
#else
#include "execinfo.h"
#endif
#endif
Fix
#if !defined(_WIN32) || !defined(_WIN64)
Should be fixed with e8e25a
Thanks!
skal is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 04:51.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, vBulletin Solutions Inc.