go-libwebp

Experimental translation from libwebp to Go source.
Log | Files | Refs | README | LICENSE

commit 69259af52c815d64657b5c38782f08681c57c6e6
parent 1af6a17bd21050902fb88e6b134a0fa9273c73b2
Author: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Date:   Wed, 26 Jan 2022 00:21:30 +0800

webp: upgrade deps

Bump libc to include bsearch and regenerate libwebp.

Signed-off-by: Jack Mordaunt <jackmordaunt.dev@gmail.com>

Diffstat:
Mgo.mod | 8++++----
Mgo.sum | 9+++++++++
Mlibwebp.go | 14298+++++++++++++++++++++++++++++++++++++++----------------------------------------
Mmain.go | 49++-----------------------------------------------
4 files changed, 7015 insertions(+), 7349 deletions(-)

diff --git a/go.mod b/go.mod @@ -1,14 +1,14 @@ module git.sr.ht/~jackmordaunt/go-libwebp -go 1.18 +go 1.17 -require modernc.org/libc v1.14.4 +require modernc.org/libc v1.14.5 require ( github.com/google/uuid v1.3.0 // indirect - github.com/mattn/go-isatty v0.0.12 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect - golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac // indirect + golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 // indirect modernc.org/mathutil v1.4.1 // indirect; sindirect modernc.org/memory v1.0.5 // indirect ) diff --git a/go.sum b/go.sum @@ -5,6 +5,8 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= @@ -23,9 +25,12 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210902050250-f475640dd07b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac h1:oN6lz7iLW/YC7un8pq+9bOLyXrprv2+DKfkJY+2LJJw= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -92,6 +97,7 @@ modernc.org/ccgo/v3 v3.12.92/go.mod h1:5yDdN7ti9KWPi5bRVWPl8UNhpEAtCjuEE7ayQnzzq modernc.org/ccgo/v3 v3.13.1/go.mod h1:aBYVOUfIlcSnrsRVU8VRS35y2DIfpgkmVkYZ0tpIXi4= modernc.org/ccgo/v3 v3.15.9/go.mod h1:md59wBwDT2LznX/OTCPoVS6KIsdRgY8xqQwBV+hkTH0= modernc.org/ccgo/v3 v3.15.10/go.mod h1:wQKxoFn0ynxMuCLfFD09c8XPUCc8obfchoVR9Cn0fI8= +modernc.org/ccgo/v3 v3.15.12/go.mod h1:VFePOWoCd8uDGRJpq/zfJ29D0EVzMSyID8LCMWYbX6I= modernc.org/ccorpus v1.11.1/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= modernc.org/libc v1.9.8/go.mod h1:U1eq8YWr/Kc1RWCMFUWEdkTg8OTcfLw2kY8EDwl039w= @@ -134,8 +140,11 @@ modernc.org/libc v1.11.101/go.mod h1:wLLYgEiY2D17NbBOEp+mIJJJBGSiy7fLL4ZrGGZ+8jI modernc.org/libc v1.12.0/go.mod h1:2MH3DaF/gCU8i/UBiVE1VFRos4o523M7zipmwH8SIgQ= modernc.org/libc v1.14.1/go.mod h1:npFeGWjmZTjFeWALQLrvklVmAxv4m80jnG3+xI8FdJk= modernc.org/libc v1.14.2/go.mod h1:MX1GBLnRLNdvmK9azU9LCxZ5lMyhrbEMK8rG3X/Fe34= +modernc.org/libc v1.14.3/go.mod h1:GPIvQVOVPizzlqyRX3l756/3ppsAgg1QgPxjr5Q4agQ= modernc.org/libc v1.14.4 h1:Sw2GDhSQbQF75VKC6RSd5//QH2gj9TgBzjLNZTW6m00= modernc.org/libc v1.14.4/go.mod h1:GPIvQVOVPizzlqyRX3l756/3ppsAgg1QgPxjr5Q4agQ= +modernc.org/libc v1.14.5 h1:DAHvwGoVRDZs5iJXnX9RJrgXSsorupCWmJ2ac964Owk= +modernc.org/libc v1.14.5/go.mod h1:2PJHINagVxO4QW/5OQdRrvMYo+bm5ClpUFfyXCYl9ak= modernc.org/mathutil v1.1.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= modernc.org/mathutil v1.4.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= diff --git a/libwebp.go b/libwebp.go @@ -1,3 +1,5 @@ +// Code generated by 'ccgo -trace-translation-units cdb.json src/.libs/libwebp.a', DO NOT EDIT. + package main import ( @@ -17,8 +19,6 @@ var _ unsafe.Pointer var _ *libc.TLS var _ types.Size_t -//------------------------------------------------------------------------------ - // Copyright 2011 Google Inc. All Rights Reserved. // // Use of this source code is governed by a BSD-style license @@ -28,20 +28,7 @@ var _ types.Size_t // be found in the AUTHORS file in the root of the source tree. // ----------------------------------------------------------------------------- // -// Internal header: WebP decoding parameters and custom IO on buffer -// -// Author: somnath@google.com (Somnath Banerjee) - -// Copyright 2010 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. -// ----------------------------------------------------------------------------- -// -// VP8 decoder: internal header. +// WebP encoder: internal header. // // Author: Skal (pascal.massimino@gmail.com) @@ -194,75 +181,6 @@ const ( /* dsp.h:696:1: */ // Filter types. ) //------------------------------------------------------------------------------ -// Transform-related functions use din both encoding and decoding. - -// Macros used to create a batch predictor that iteratively uses a -// one-pixel predictor. - -// The predictor is added to the output pixel (which -// is therefore considered as a residual) to get the final prediction. - -// Copyright 2010 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. -// ----------------------------------------------------------------------------- -// -// inline YUV<->RGB conversion function -// -// The exact naming is Y'CbCr, following the ITU-R BT.601 standard. -// More information at: https://en.wikipedia.org/wiki/YCbCr -// Y = 0.2569 * R + 0.5044 * G + 0.0979 * B + 16 -// U = -0.1483 * R - 0.2911 * G + 0.4394 * B + 128 -// V = 0.4394 * R - 0.3679 * G - 0.0715 * B + 128 -// We use 16bit fixed point operations for RGB->YUV conversion (YUV_FIX). -// -// For the Y'CbCr to RGB conversion, the BT.601 specification reads: -// R = 1.164 * (Y-16) + 1.596 * (V-128) -// G = 1.164 * (Y-16) - 0.813 * (V-128) - 0.391 * (U-128) -// B = 1.164 * (Y-16) + 2.018 * (U-128) -// where Y is in the [16,235] range, and U/V in the [16,240] range. -// -// The fixed-point implementation used here is: -// R = (19077 . y + 26149 . v - 14234) >> 6 -// G = (19077 . y - 6419 . u - 13320 . v + 8708) >> 6 -// B = (19077 . y + 33050 . u - 17685) >> 6 -// where the '.' operator is the mulhi_epu16 variant: -// a . b = ((a << 8) * b) >> 16 -// that preserves 8 bits of fractional precision before final descaling. - -// Author: Skal (pascal.massimino@gmail.com) - -// Copyright 2011 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. -// ----------------------------------------------------------------------------- -// -// Speed-critical functions. -// -// Author: Skal (pascal.massimino@gmail.com) - -// Copyright 2010 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. -// ----------------------------------------------------------------------------- -// -// Low-level API for VP8 decoder -// -// Author: Skal (pascal.massimino@gmail.com) - -//------------------------------------------------------------------------------ // YUV -> RGB conversion const ( /* yuv.h:48:1: */ @@ -303,19 +221,6 @@ const ( /* backward_references_enc.h:32:1: */ //------------------------------------------------------------------------------ -// Copyright 2011 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. -// ----------------------------------------------------------------------------- -// -// WebP encoder: main interface -// -// Author: Skal (pascal.massimino@gmail.com) - //------------------------------------------------------------------------------ // Various defines and enums @@ -334,169 +239,6 @@ const ( /* vp8i_enc.h:42:1: */ // Rate-distortion optimization levels RD_OPT_TRELLIS_ALL = 3 ) -//------------------------------------------------------------------------------ - -// Copyright 2012 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. -// ----------------------------------------------------------------------------- -// -// Lossless encoder: internal header. -// -// Author: Vikas Arora (vikaas.arora@gmail.com) - -// src/webp/config.h. Generated from config.h.in by configure. -// src/webp/config.h.in. Generated from configure.ac by autoheader. - -// Define if building universal (internal helper macro) -// #undef AC_APPLE_UNIVERSAL_BUILD - -// Set to 1 if __builtin_bswap16 is available - -// Set to 1 if __builtin_bswap32 is available - -// Set to 1 if __builtin_bswap64 is available - -// Define to 1 if you have the <cpu-features.h> header file. -// #undef HAVE_CPU_FEATURES_H - -// Define to 1 if you have the <dlfcn.h> header file. - -// Define to 1 if you have the <GLUT/glut.h> header file. -// #undef HAVE_GLUT_GLUT_H - -// Define to 1 if you have the <GL/glut.h> header file. -// #undef HAVE_GL_GLUT_H - -// Define to 1 if you have the <inttypes.h> header file. - -// Define to 1 if you have the <OpenGL/glut.h> header file. -// #undef HAVE_OPENGL_GLUT_H - -// Have PTHREAD_PRIO_INHERIT. -// #undef HAVE_PTHREAD_PRIO_INHERIT - -// Define to 1 if you have the <shlwapi.h> header file. -// #undef HAVE_SHLWAPI_H - -// Define to 1 if you have the <stdint.h> header file. - -// Define to 1 if you have the <stdio.h> header file. - -// Define to 1 if you have the <stdlib.h> header file. - -// Define to 1 if you have the <strings.h> header file. - -// Define to 1 if you have the <string.h> header file. - -// Define to 1 if you have the <sys/stat.h> header file. - -// Define to 1 if you have the <sys/types.h> header file. - -// Define to 1 if you have the <unistd.h> header file. - -// Define to 1 if you have the <wincodec.h> header file. -// #undef HAVE_WINCODEC_H - -// Define to 1 if you have the <windows.h> header file. -// #undef HAVE_WINDOWS_H - -// Define to the sub-directory where libtool stores uninstalled libraries. - -// Name of package - -// Define to the address where bug reports for this package should be sent. - -// Define to the full name of this package. - -// Define to the full name and version of this package. - -// Define to the one symbol short name of this package. - -// Define to the home page for this package. - -// Define to the version of this package. - -// Define to necessary symbol if this constant uses a non-standard name on -// your system. -// #undef PTHREAD_CREATE_JOINABLE - -// Define to 1 if all of the C90 standard headers exist (not just the ones -// required in a freestanding environment). This macro is provided for -// backward compatibility; new code need not use it. - -// Version number of package - -// Set to 1 if GIF library is installed -// #undef WEBP_HAVE_GIF - -// Set to 1 if OpenGL is supported -// #undef WEBP_HAVE_GL - -// Set to 1 if JPEG library is installed -// #undef WEBP_HAVE_JPEG - -// Set to 1 if NEON is supported -// #undef WEBP_HAVE_NEON - -// Set to 1 if runtime detection of NEON is enabled -// #undef WEBP_HAVE_NEON_RTCD - -// Set to 1 if PNG library is installed -// #undef WEBP_HAVE_PNG - -// Set to 1 if SDL library is installed -// #undef WEBP_HAVE_SDL - -// Set to 1 if SSE2 is supported -// #undef WEBP_HAVE_SSE2 - -// Set to 1 if SSE4.1 is supported -// #undef WEBP_HAVE_SSE41 - -// Set to 1 if TIFF library is installed -// #undef WEBP_HAVE_TIFF - -// Enable near lossless encoding - -// Undefine this to disable thread support. -// #undef WEBP_USE_THREAD - -// Define WORDS_BIGENDIAN to 1 if your processor stores words with the most -// significant byte first (like Motorola and SPARC, unlike Intel). -// # undef WORDS_BIGENDIAN -// Either WEBP_NEAR_LOSSLESS is defined as 0 in config.h when compiling to -// disable near-lossless, or it is enabled by default. - -// Copyright 2012 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. -// ----------------------------------------------------------------------------- -// -// Author: Jyrki Alakuijala (jyrki@google.com) -// - -// Copyright 2012 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. -// ----------------------------------------------------------------------------- -// -// Author: Jyrki Alakuijala (jyrki@google.com) -// -// Models the histograms of literal and distance codes. - // Copyright 2011 Google Inc. All Rights Reserved. // // Use of this source code is governed by a BSD-style license @@ -797,8 +539,6 @@ const ( /* encode.h:86:1: */ WEBP_HINT_LAST = 4 ) -//------------------------------------------------------------------------------ - // Copyright 2012 Google Inc. All Rights Reserved. // // Use of this source code is governed by a BSD-style license @@ -2296,12 +2036,12 @@ type WebPRescaler = WebPRescaler1 /* rescaler_utils.h:30:29 */ // Return true if output is finished func WebPRescalerOutputDone(tls *libc.TLS, rescaler uintptr) int32 { /* rescaler_utils.h:86:5: */ - return (libc.Bool32((*WebPRescaler)(unsafe.Pointer(rescaler)).dst_y >= (*WebPRescaler)(unsafe.Pointer(rescaler)).dst_height)) + return libc.Bool32((*WebPRescaler)(unsafe.Pointer(rescaler)).dst_y >= (*WebPRescaler)(unsafe.Pointer(rescaler)).dst_height) } // Return true if there are pending output rows ready. func WebPRescalerHasPendingOutput(tls *libc.TLS, rescaler uintptr) int32 { /* rescaler_utils.h:92:5: */ - return (libc.Bool32(!(WebPRescalerOutputDone(tls, rescaler) != 0) && ((*WebPRescaler)(unsafe.Pointer(rescaler)).y_accum <= 0))) + return libc.Bool32(!(WebPRescalerOutputDone(tls, rescaler) != 0) && (*WebPRescaler)(unsafe.Pointer(rescaler)).y_accum <= 0) } //------------------------------------------------------------------------------ @@ -2505,15 +2245,15 @@ type WEBP_CSP_MODE = uint32 /* decode.h:162:3 */ // Some useful macros: func WebPIsPremultipliedMode(tls *libc.TLS, mode WEBP_CSP_MODE) int32 { /* decode.h:165:24: */ - return (libc.Bool32((((mode == MODE_rgbA) || (mode == MODE_bgrA)) || (mode == MODE_Argb)) || (mode == MODE_rgbA_4444))) + return libc.Bool32(mode == MODE_rgbA || mode == MODE_bgrA || mode == MODE_Argb || mode == MODE_rgbA_4444) } func WebPIsAlphaMode(tls *libc.TLS, mode WEBP_CSP_MODE) int32 { /* decode.h:170:24: */ - return (libc.Bool32((((((mode == MODE_RGBA) || (mode == MODE_BGRA)) || (mode == MODE_ARGB)) || (mode == MODE_RGBA_4444)) || (mode == MODE_YUVA)) || (WebPIsPremultipliedMode(tls, mode) != 0))) + return libc.Bool32(mode == MODE_RGBA || mode == MODE_BGRA || mode == MODE_ARGB || mode == MODE_RGBA_4444 || mode == MODE_YUVA || WebPIsPremultipliedMode(tls, mode) != 0) } func WebPIsRGBMode(tls *libc.TLS, mode WEBP_CSP_MODE) int32 { /* decode.h:176:24: */ - return (libc.Bool32(mode < MODE_YUV)) + return libc.Bool32(mode < MODE_YUV) } // Initialize the structure as empty. Must be called before any other use. @@ -3393,14 +3133,14 @@ type VP8LBitReader = struct { // Return the prefetched bits, so they can be looked up. func VP8LPrefetchBits(tls *libc.TLS, br uintptr) uint32_t { /* bit_reader_utils.h:164:29: */ - return (uint32_t((*VP8LBitReader)(unsafe.Pointer(br)).val_ >> ((*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ & (64 - 1)))) + return uint32_t((*VP8LBitReader)(unsafe.Pointer(br)).val_ >> ((*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ & (64 - 1))) } // Returns true if there was an attempt at reading bit past the end of // the buffer. Doesn't set br->eos_ flag. func VP8LIsEndOfStream(tls *libc.TLS, br uintptr) int32 { /* bit_reader_utils.h:170:24: */ - return (libc.Bool32(((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0) || (((*VP8LBitReader)(unsafe.Pointer(br)).pos_ == (*VP8LBitReader)(unsafe.Pointer(br)).len_) && ((*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ > 64)))) + return libc.Bool32((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0 || (*VP8LBitReader)(unsafe.Pointer(br)).pos_ == (*VP8LBitReader)(unsafe.Pointer(br)).len_ && (*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ > 64) } // For jumping over a number of bits in the bit stream when accessed with @@ -3514,7 +3254,7 @@ type VP8LColorCache = struct { var kHashMul uint32_t = 0x1e35a7bd /* color_cache_utils.h:34:23 */ func VP8LHashPix(tls *libc.TLS, argb uint32_t, shift int32) int32 { /* color_cache_utils.h:37:5: */ - return (int32((argb * kHashMul) >> shift)) + return int32(argb * kHashMul >> shift) } func VP8LColorCacheLookup(tls *libc.TLS, cc uintptr, key uint32_t) uint32_t { /* color_cache_utils.h:41:29: */ @@ -3821,11 +3561,11 @@ type VP8Random = struct { func VP8RandomBits2(tls *libc.TLS, rg uintptr, num_bits int32, amp int32) int32 { /* random_utils.h:39:24: */ var diff int32 - diff = (int32(*(*uint32_t)(unsafe.Pointer((rg + 8 /* &.tab_ */) + uintptr((*VP8Random)(unsafe.Pointer(rg)).index1_)*4)) - *(*uint32_t)(unsafe.Pointer((rg + 8 /* &.tab_ */) + uintptr((*VP8Random)(unsafe.Pointer(rg)).index2_)*4)))) + diff = int32(*(*uint32_t)(unsafe.Pointer(rg + 8 + uintptr((*VP8Random)(unsafe.Pointer(rg)).index1_)*4)) - *(*uint32_t)(unsafe.Pointer(rg + 8 + uintptr((*VP8Random)(unsafe.Pointer(rg)).index2_)*4))) if diff < 0 { - diff = libc.Int32FromUint32(uint32(diff) + (uint32(1) << 31)) + diff = libc.Int32FromUint32(uint32(diff) + uint32(1)<<31) } - *(*uint32_t)(unsafe.Pointer((rg + 8 /* &.tab_ */) + uintptr((*VP8Random)(unsafe.Pointer(rg)).index1_)*4)) = uint32_t(diff) + *(*uint32_t)(unsafe.Pointer(rg + 8 + uintptr((*VP8Random)(unsafe.Pointer(rg)).index1_)*4)) = uint32_t(diff) if libc.PreIncInt32(&(*VP8Random)(unsafe.Pointer(rg)).index1_, 1) == 55 { (*VP8Random)(unsafe.Pointer(rg)).index1_ = 0 } @@ -3833,9 +3573,9 @@ func VP8RandomBits2(tls *libc.TLS, rg uintptr, num_bits int32, amp int32) int32 (*VP8Random)(unsafe.Pointer(rg)).index2_ = 0 } // sign-extend, 0-center - diff = ((int32(uint32_t(diff) << 1)) >> (32 - num_bits)) - diff = ((diff * amp) >> 8) // restrict range - diff = diff + (int32(1) << (num_bits - 1)) // shift back to 0.5-center + diff = int32(uint32_t(diff)<<1) >> (32 - num_bits) + diff = diff * amp >> 8 // restrict range + diff = diff + int32(1)<<(num_bits-1) // shift back to 0.5-center return diff } @@ -4785,7 +4525,7 @@ type VP8TopSamples = struct { // This is the maximum memory amount that libwebp will ever try to allocate. func CheckSizeOverflow(tls *libc.TLS, size uint64_t) int32 { /* utils.h:45:24: */ - return (libc.Bool32(size == size)) + return libc.Bool32(size == size) } //------------------------------------------------------------------------------ @@ -4817,7 +4557,7 @@ func WebPMemToUint32(tls *libc.TLS, ptr uintptr) uint32_t { /* utils.h:71:29: */ // var A uint32_t at bp, 4 - libc.Xmemcpy(tls, (bp) /* &A */, ptr, uint64(unsafe.Sizeof(uint32_t(0)))) + libc.Xmemcpy(tls, bp, ptr, uint64(unsafe.Sizeof(uint32_t(0)))) return *(*uint32_t)(unsafe.Pointer(bp /* A */)) } @@ -4826,7 +4566,7 @@ func WebPUint32ToMem(tls *libc.TLS, ptr uintptr, val uint32_t) { /* utils.h:76:2 defer tls.Free(4) *(*uint32_t)(unsafe.Pointer(bp)) = val - libc.Xmemcpy(tls, ptr, (bp) /* &val */, uint64(unsafe.Sizeof(uint32_t(0)))) + libc.Xmemcpy(tls, ptr, bp, uint64(unsafe.Sizeof(uint32_t(0)))) } //------------------------------------------------------------------------------ @@ -4834,39 +4574,39 @@ func WebPUint32ToMem(tls *libc.TLS, ptr uintptr, val uint32_t) { /* utils.h:76:2 // Read 16, 24 or 32 bits stored in little-endian order. func GetLE16(tls *libc.TLS, data uintptr) int32 { /* utils.h:84:24: */ - return ((int32(*(*uint8_t)(unsafe.Pointer(data))) << 0) | (int32(*(*uint8_t)(unsafe.Pointer(data + 1))) << 8)) + return int32(*(*uint8_t)(unsafe.Pointer(data)))<<0 | int32(*(*uint8_t)(unsafe.Pointer(data + 1)))<<8 } func GetLE24(tls *libc.TLS, data uintptr) int32 { /* utils.h:88:24: */ - return (GetLE16(tls, data) | (int32(*(*uint8_t)(unsafe.Pointer(data + 2))) << 16)) + return GetLE16(tls, data) | int32(*(*uint8_t)(unsafe.Pointer(data + 2)))<<16 } func GetLE32(tls *libc.TLS, data uintptr) uint32_t { /* utils.h:92:29: */ - return (uint32_t(GetLE16(tls, data)) | (uint32_t(GetLE16(tls, (data+uintptr(2)))) << 16)) + return uint32_t(GetLE16(tls, data)) | uint32_t(GetLE16(tls, data+uintptr(2)))<<16 } // Store 16, 24 or 32 bits in little-endian order. func PutLE16(tls *libc.TLS, data uintptr, val int32) { /* utils.h:97:25: */ - *(*uint8_t)(unsafe.Pointer(data)) = (uint8_t((val >> 0) & 0xff)) - *(*uint8_t)(unsafe.Pointer(data + 1)) = (uint8_t((val >> 8) & 0xff)) + *(*uint8_t)(unsafe.Pointer(data)) = uint8_t(val >> 0 & 0xff) + *(*uint8_t)(unsafe.Pointer(data + 1)) = uint8_t(val >> 8 & 0xff) } func PutLE24(tls *libc.TLS, data uintptr, val int32) { /* utils.h:103:25: */ - PutLE16(tls, data, (val & 0xffff)) - *(*uint8_t)(unsafe.Pointer(data + 2)) = (uint8_t((val >> 16) & 0xff)) + PutLE16(tls, data, val&0xffff) + *(*uint8_t)(unsafe.Pointer(data + 2)) = uint8_t(val >> 16 & 0xff) } func PutLE32(tls *libc.TLS, data uintptr, val uint32_t) { /* utils.h:109:25: */ - PutLE16(tls, data, (int32(val & uint32_t(0xffff)))) - PutLE16(tls, (data + uintptr(2)), (int32(val >> 16))) + PutLE16(tls, data, int32(val&uint32_t(0xffff))) + PutLE16(tls, data+uintptr(2), int32(val>>16)) } // use GNU builtins where available. // Returns (int)floor(log2(n)). n must be > 0. func BitsLog2Floor(tls *libc.TLS, n uint32_t) int32 { /* utils.h:118:24: */ - return (31 ^ libc.X__builtin_clz(tls, n)) + return 31 ^ libc.X__builtin_clz(tls, n) } //------------------------------------------------------------------------------ @@ -4935,9 +4675,9 @@ func ALPHNew(tls *libc.TLS) uintptr { /* alpha_dec.c:27:19: */ // Clears and deallocates an alpha decoder instance. func ALPHDelete(tls *libc.TLS, dec uintptr) { /* alpha_dec.c:33:13: */ - if dec != (uintptr(0)) { + if dec != uintptr(0) { VP8LDelete(tls, (*ALPHDecoder)(unsafe.Pointer(dec)).vp8l_dec_) - (*ALPHDecoder)(unsafe.Pointer(dec)).vp8l_dec_ = (uintptr(0)) + (*ALPHDecoder)(unsafe.Pointer(dec)).vp8l_dec_ = uintptr(0) WebPSafeFree(tls, dec) } } @@ -4951,10 +4691,10 @@ func ALPHDelete(tls *libc.TLS, dec uintptr) { /* alpha_dec.c:33:13: */ // compression method or filter, error in lossless header data etc). func ALPHInit(tls *libc.TLS, dec uintptr, data uintptr, data_size size_t, src_io uintptr, output uintptr) int32 { /* alpha_dec.c:48:12: */ var ok int32 = 0 - var alpha_data uintptr = (data + uintptr(1)) - var alpha_data_size size_t = (data_size - uint64(1)) + var alpha_data uintptr = data + uintptr(1) + var alpha_data_size size_t = data_size - uint64(1) var rsrv int32 - var io uintptr = (dec + 32 /* &.io_ */) + var io uintptr = dec + 32 VP8FiltersInit(tls) (*ALPHDecoder)(unsafe.Pointer(dec)).output_ = output @@ -4965,17 +4705,17 @@ func ALPHInit(tls *libc.TLS, dec uintptr, data uintptr, data_size size_t, src_io return 0 } - (*ALPHDecoder)(unsafe.Pointer(dec)).method_ = ((int32(*(*uint8_t)(unsafe.Pointer(data))) >> 0) & 0x03) - (*ALPHDecoder)(unsafe.Pointer(dec)).filter_ = (WEBP_FILTER_TYPE((int32(*(*uint8_t)(unsafe.Pointer(data))) >> 2) & 0x03)) - (*ALPHDecoder)(unsafe.Pointer(dec)).pre_processing_ = ((int32(*(*uint8_t)(unsafe.Pointer(data))) >> 4) & 0x03) - rsrv = ((int32(*(*uint8_t)(unsafe.Pointer(data))) >> 6) & 0x03) - if (((((*ALPHDecoder)(unsafe.Pointer(dec)).method_ < 0) || ((*ALPHDecoder)(unsafe.Pointer(dec)).method_ > 1)) || ((*ALPHDecoder)(unsafe.Pointer(dec)).filter_ >= WEBP_FILTER_LAST)) || ((*ALPHDecoder)(unsafe.Pointer(dec)).pre_processing_ > 1)) || (rsrv != 0) { + (*ALPHDecoder)(unsafe.Pointer(dec)).method_ = int32(*(*uint8_t)(unsafe.Pointer(data))) >> 0 & 0x03 + (*ALPHDecoder)(unsafe.Pointer(dec)).filter_ = WEBP_FILTER_TYPE(int32(*(*uint8_t)(unsafe.Pointer(data))) >> 2 & 0x03) + (*ALPHDecoder)(unsafe.Pointer(dec)).pre_processing_ = int32(*(*uint8_t)(unsafe.Pointer(data))) >> 4 & 0x03 + rsrv = int32(*(*uint8_t)(unsafe.Pointer(data))) >> 6 & 0x03 + if (*ALPHDecoder)(unsafe.Pointer(dec)).method_ < 0 || (*ALPHDecoder)(unsafe.Pointer(dec)).method_ > 1 || (*ALPHDecoder)(unsafe.Pointer(dec)).filter_ >= WEBP_FILTER_LAST || (*ALPHDecoder)(unsafe.Pointer(dec)).pre_processing_ > 1 || rsrv != 0 { return 0 } // Copy the necessary parameters from src_io to io VP8InitIo(tls, io) - WebPInitCustomIo(tls, (uintptr(0)), io) + WebPInitCustomIo(tls, uintptr(0), io) (*VP8Io)(unsafe.Pointer(io)).opaque = dec (*VP8Io)(unsafe.Pointer(io)).width = (*VP8Io)(unsafe.Pointer(src_io)).width (*VP8Io)(unsafe.Pointer(io)).height = (*VP8Io)(unsafe.Pointer(src_io)).height @@ -4988,8 +4728,8 @@ func ALPHInit(tls *libc.TLS, dec uintptr, data uintptr, data_size size_t, src_io // No need to copy the scaling parameters. if (*ALPHDecoder)(unsafe.Pointer(dec)).method_ == 0 { - var alpha_decoded_size size_t = (size_t((*ALPHDecoder)(unsafe.Pointer(dec)).width_ * (*ALPHDecoder)(unsafe.Pointer(dec)).height_)) - ok = (libc.Bool32(alpha_data_size >= alpha_decoded_size)) + var alpha_decoded_size size_t = size_t((*ALPHDecoder)(unsafe.Pointer(dec)).width_ * (*ALPHDecoder)(unsafe.Pointer(dec)).height_) + ok = libc.Bool32(alpha_data_size >= alpha_decoded_size) } else { ok = VP8LDecodeAlphaHeader(tls, dec, alpha_data, alpha_data_size) @@ -5009,8 +4749,8 @@ func ALPHDecode(tls *libc.TLS, dec uintptr, row int32, num_rows int32) int32 { / if (*ALPHDecoder)(unsafe.Pointer(alph_dec)).method_ == 0 { var y int32 var prev_line uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).alpha_prev_line_ - var deltas uintptr = (((*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_ + uintptr(1)) + uintptr((row * width))) - var dst uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_ + uintptr((row * width))) + var deltas uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_ + uintptr(1) + uintptr(row*width) + var dst uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_ + uintptr(row*width) if (*ALPHDecoder)(unsafe.Pointer(alph_dec)).filter_ != WEBP_FILTER_NONE { @@ -5024,7 +4764,7 @@ func ALPHDecode(tls *libc.TLS, dec uintptr, row int32, num_rows int32) int32 { / } } else { for y = 0; y < num_rows; y++ { - libc.Xmemcpy(tls, dst, deltas, (uint64(width) * uint64(unsafe.Sizeof(uint8_t(0))))) + libc.Xmemcpy(tls, dst, deltas, uint64(width)*uint64(unsafe.Sizeof(uint8_t(0)))) prev_line = dst dst += uintptr(width) deltas += uintptr(width) @@ -5033,12 +4773,12 @@ func ALPHDecode(tls *libc.TLS, dec uintptr, row int32, num_rows int32) int32 { / (*VP8Decoder)(unsafe.Pointer(dec)).alpha_prev_line_ = prev_line } else { // alph_dec->method_ == ALPHA_LOSSLESS_COMPRESSION - if !(VP8LDecodeAlphaImageStream(tls, alph_dec, (row+num_rows)) != 0) { + if !(VP8LDecodeAlphaImageStream(tls, alph_dec, row+num_rows) != 0) { return 0 } } - if (row + num_rows) >= height { + if row+num_rows >= height { (*VP8Decoder)(unsafe.Pointer(dec)).is_alpha_decoded_ = 1 } return 1 @@ -5047,24 +4787,24 @@ func ALPHDecode(tls *libc.TLS, dec uintptr, row int32, num_rows int32) int32 { / func AllocateAlphaPlane(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* alpha_dec.c:150:12: */ var stride int32 = (*VP8Io)(unsafe.Pointer(io)).width var height int32 = (*VP8Io)(unsafe.Pointer(io)).crop_bottom - var alpha_size uint64_t = (uint64_t(stride) * uint64_t(height)) + var alpha_size uint64_t = uint64_t(stride) * uint64_t(height) (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_mem_ = WebPSafeMalloc(tls, alpha_size, uint64(unsafe.Sizeof(uint8_t(0)))) - if (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_mem_ == (uintptr(0)) { + if (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_mem_ == uintptr(0) { return 0 } (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_ = (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_mem_ - (*VP8Decoder)(unsafe.Pointer(dec)).alpha_prev_line_ = (uintptr(0)) + (*VP8Decoder)(unsafe.Pointer(dec)).alpha_prev_line_ = uintptr(0) return 1 } func WebPDeallocateAlphaMemory(tls *libc.TLS, dec uintptr) { /* alpha_dec.c:165:6: */ WebPSafeFree(tls, (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_mem_) - (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_mem_ = (uintptr(0)) - (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_ = (uintptr(0)) + (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_mem_ = uintptr(0) + (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_ = uintptr(0) ALPHDelete(tls, (*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_) - (*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_ = (uintptr(0)) + (*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_ = uintptr(0) } //------------------------------------------------------------------------------ @@ -5077,34 +4817,34 @@ func VP8DecompressAlphaRows(tls *libc.TLS, dec uintptr, io uintptr, row int32, n width = (*VP8Io)(unsafe.Pointer(io)).width height = (*VP8Io)(unsafe.Pointer(io)).crop_bottom - if !(((row < 0) || (num_rows <= 0)) || ((row + num_rows) > height)) { + if !(row < 0 || num_rows <= 0 || row+num_rows > height) { goto __1 } - return (uintptr(0)) + return uintptr(0) __1: ; - if !(!((*VP8Decoder)(unsafe.Pointer(dec)).is_alpha_decoded_ != 0)) { + if !!((*VP8Decoder)(unsafe.Pointer(dec)).is_alpha_decoded_ != 0) { goto __2 } - if !((*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_ == (uintptr(0))) { + if !((*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_ == uintptr(0)) { goto __3 } // Initialize decoder. (*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_ = ALPHNew(tls) - if !((*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_ == (uintptr(0))) { + if !((*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_ == uintptr(0)) { goto __4 } - return (uintptr(0)) + return uintptr(0) __4: ; - if !(!(AllocateAlphaPlane(tls, dec, io) != 0)) { + if !!(AllocateAlphaPlane(tls, dec, io) != 0) { goto __5 } goto Error __5: ; - if !(!(ALPHInit(tls, (*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_, (*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_, (*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_size_, - io, (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_) != 0)) { + if !!(ALPHInit(tls, (*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_, (*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_, (*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_size_, + io, (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_) != 0) { goto __6 } goto Error @@ -5117,13 +4857,13 @@ __6: (*VP8Decoder)(unsafe.Pointer(dec)).alpha_dithering_ = 0 // disable dithering goto __8 __7: - num_rows = (height - row) // decode everything in one pass + num_rows = height - row // decode everything in one pass __8: ; __3: ; - if !(!(ALPHDecode(tls, dec, row, num_rows) != 0)) { + if !!(ALPHDecode(tls, dec, row, num_rows) != 0) { goto __9 } goto Error @@ -5134,16 +4874,16 @@ __9: goto __10 } // finished? ALPHDelete(tls, (*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_) - (*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_ = (uintptr(0)) + (*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_ = uintptr(0) if !((*VP8Decoder)(unsafe.Pointer(dec)).alpha_dithering_ > 0) { goto __11 } - alpha = (((*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_ + uintptr(((*VP8Io)(unsafe.Pointer(io)).crop_top * width))) + - uintptr((*VP8Io)(unsafe.Pointer(io)).crop_left)) - if !(!(WebPDequantizeLevels(tls, alpha, - ((*VP8Io)(unsafe.Pointer(io)).crop_right-(*VP8Io)(unsafe.Pointer(io)).crop_left), - ((*VP8Io)(unsafe.Pointer(io)).crop_bottom-(*VP8Io)(unsafe.Pointer(io)).crop_top), - width, (*VP8Decoder)(unsafe.Pointer(dec)).alpha_dithering_) != 0)) { + alpha = (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_ + uintptr((*VP8Io)(unsafe.Pointer(io)).crop_top*width) + + uintptr((*VP8Io)(unsafe.Pointer(io)).crop_left) + if !!(WebPDequantizeLevels(tls, alpha, + (*VP8Io)(unsafe.Pointer(io)).crop_right-(*VP8Io)(unsafe.Pointer(io)).crop_left, + (*VP8Io)(unsafe.Pointer(io)).crop_bottom-(*VP8Io)(unsafe.Pointer(io)).crop_top, + width, (*VP8Decoder)(unsafe.Pointer(dec)).alpha_dithering_) != 0) { goto __12 } goto Error @@ -5157,11 +4897,11 @@ __2: ; // Return a pointer to the current decoded row. - return ((*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_ + uintptr((row * width))) + return (*VP8Decoder)(unsafe.Pointer(dec)).alpha_plane_ + uintptr(row*width) Error: WebPDeallocateAlphaMemory(tls, dec) - return (uintptr(0)) + return uintptr(0) } //------------------------------------------------------------------------------ @@ -5179,7 +4919,7 @@ var kModeBpp = [13]uint8_t{ // Convert to an integer to handle both the unsigned/signed enum cases // without the need for casting to remove type limit warnings. func IsValidColorspace(tls *libc.TLS, webp_csp_mode int32) int32 { /* buffer_dec.c:32:12: */ - return (libc.Bool32((webp_csp_mode >= MODE_RGB) && (webp_csp_mode < MODE_LAST))) + return libc.Bool32(webp_csp_mode >= MODE_RGB && webp_csp_mode < MODE_LAST) } // strictly speaking, the very last (or first, if flipped) row @@ -5193,38 +4933,38 @@ func CheckDecBuffer(tls *libc.TLS, buffer uintptr) VP8StatusCode { /* buffer_dec if !(IsValidColorspace(tls, int32(mode)) != 0) { ok = 0 } else if !(WebPIsRGBMode(tls, mode) != 0) { // YUV checks - var buf uintptr = (buffer + 16 /* &.u */) /* &.YUVA */ - var uv_width int32 = ((width + 1) / 2) - var uv_height int32 = ((height + 1) / 2) + var buf uintptr = buffer + 16 + var uv_width int32 = (width + 1) / 2 + var uv_height int32 = (height + 1) / 2 var y_stride int32 = libc.Xabs(tls, (*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride) var u_stride int32 = libc.Xabs(tls, (*WebPYUVABuffer)(unsafe.Pointer(buf)).u_stride) var v_stride int32 = libc.Xabs(tls, (*WebPYUVABuffer)(unsafe.Pointer(buf)).v_stride) var a_stride int32 = libc.Xabs(tls, (*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride) - var y_size uint64_t = (((uint64_t(y_stride)) * (uint64_t((height) - 1))) + (uint64_t(width))) - var u_size uint64_t = (((uint64_t(u_stride)) * (uint64_t((uv_height) - 1))) + (uint64_t(uv_width))) - var v_size uint64_t = (((uint64_t(v_stride)) * (uint64_t((uv_height) - 1))) + (uint64_t(uv_width))) - var a_size uint64_t = (((uint64_t(a_stride)) * (uint64_t((height) - 1))) + (uint64_t(width))) - ok = ok & (libc.Bool32(y_size <= (*WebPYUVABuffer)(unsafe.Pointer(buf)).y_size)) - ok = ok & (libc.Bool32(u_size <= (*WebPYUVABuffer)(unsafe.Pointer(buf)).u_size)) - ok = ok & (libc.Bool32(v_size <= (*WebPYUVABuffer)(unsafe.Pointer(buf)).v_size)) - ok = ok & (libc.Bool32(y_stride >= width)) - ok = ok & (libc.Bool32(u_stride >= uv_width)) - ok = ok & (libc.Bool32(v_stride >= uv_width)) - ok = ok & (libc.Bool32((*WebPYUVABuffer)(unsafe.Pointer(buf)).y != (uintptr(0)))) - ok = ok & (libc.Bool32((*WebPYUVABuffer)(unsafe.Pointer(buf)).u != (uintptr(0)))) - ok = ok & (libc.Bool32((*WebPYUVABuffer)(unsafe.Pointer(buf)).v != (uintptr(0)))) + var y_size uint64_t = uint64_t(y_stride)*uint64_t(height-1) + uint64_t(width) + var u_size uint64_t = uint64_t(u_stride)*uint64_t(uv_height-1) + uint64_t(uv_width) + var v_size uint64_t = uint64_t(v_stride)*uint64_t(uv_height-1) + uint64_t(uv_width) + var a_size uint64_t = uint64_t(a_stride)*uint64_t(height-1) + uint64_t(width) + ok = ok & libc.Bool32(y_size <= (*WebPYUVABuffer)(unsafe.Pointer(buf)).y_size) + ok = ok & libc.Bool32(u_size <= (*WebPYUVABuffer)(unsafe.Pointer(buf)).u_size) + ok = ok & libc.Bool32(v_size <= (*WebPYUVABuffer)(unsafe.Pointer(buf)).v_size) + ok = ok & libc.Bool32(y_stride >= width) + ok = ok & libc.Bool32(u_stride >= uv_width) + ok = ok & libc.Bool32(v_stride >= uv_width) + ok = ok & libc.Bool32((*WebPYUVABuffer)(unsafe.Pointer(buf)).y != uintptr(0)) + ok = ok & libc.Bool32((*WebPYUVABuffer)(unsafe.Pointer(buf)).u != uintptr(0)) + ok = ok & libc.Bool32((*WebPYUVABuffer)(unsafe.Pointer(buf)).v != uintptr(0)) if mode == MODE_YUVA { - ok = ok & (libc.Bool32(a_stride >= width)) - ok = ok & (libc.Bool32(a_size <= (*WebPYUVABuffer)(unsafe.Pointer(buf)).a_size)) - ok = ok & (libc.Bool32((*WebPYUVABuffer)(unsafe.Pointer(buf)).a != (uintptr(0)))) + ok = ok & libc.Bool32(a_stride >= width) + ok = ok & libc.Bool32(a_size <= (*WebPYUVABuffer)(unsafe.Pointer(buf)).a_size) + ok = ok & libc.Bool32((*WebPYUVABuffer)(unsafe.Pointer(buf)).a != uintptr(0)) } } else { // RGB checks - var buf uintptr = (buffer + 16 /* &.u */) /* &.RGBA */ + var buf uintptr = buffer + 16 var stride int32 = libc.Xabs(tls, (*WebPRGBABuffer)(unsafe.Pointer(buf)).stride) - var size uint64_t = (((uint64_t(stride)) * (uint64_t((height) - 1))) + (uint64_t(width * int32(kModeBpp[mode])))) - ok = ok & (libc.Bool32(size <= (*WebPRGBABuffer)(unsafe.Pointer(buf)).size)) - ok = ok & (libc.Bool32(stride >= (width * int32(kModeBpp[mode])))) - ok = ok & (libc.Bool32((*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba != (uintptr(0)))) + var size uint64_t = uint64_t(stride)*uint64_t(height-1) + uint64_t(width*int32(kModeBpp[mode])) + ok = ok & libc.Bool32(size <= (*WebPRGBABuffer)(unsafe.Pointer(buf)).size) + ok = ok & libc.Bool32(stride >= width*int32(kModeBpp[mode])) + ok = ok & libc.Bool32((*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba != uintptr(0)) } if ok != 0 { return VP8_STATUS_OK @@ -5237,11 +4977,11 @@ func AllocateBuffer(tls *libc.TLS, buffer uintptr) VP8StatusCode { /* buffer_dec var h int32 = (*WebPDecBuffer)(unsafe.Pointer(buffer)).height var mode WEBP_CSP_MODE = (*WebPDecBuffer)(unsafe.Pointer(buffer)).colorspace - if ((w <= 0) || (h <= 0)) || !(IsValidColorspace(tls, int32(mode)) != 0) { + if w <= 0 || h <= 0 || !(IsValidColorspace(tls, int32(mode)) != 0) { return VP8_STATUS_INVALID_PARAM } - if ((*WebPDecBuffer)(unsafe.Pointer(buffer)).is_external_memory <= 0) && ((*WebPDecBuffer)(unsafe.Pointer(buffer)).private_memory == (uintptr(0))) { + if (*WebPDecBuffer)(unsafe.Pointer(buffer)).is_external_memory <= 0 && (*WebPDecBuffer)(unsafe.Pointer(buffer)).private_memory == uintptr(0) { var output uintptr var uv_stride int32 = 0 var a_stride int32 = 0 @@ -5253,45 +4993,45 @@ func AllocateBuffer(tls *libc.TLS, buffer uintptr) VP8StatusCode { /* buffer_dec var stride int32 var size uint64_t - if (uint64(uint64_t(w) * uint64_t(kModeBpp[mode]))) >= (uint64(1) << 31) { + if uint64(uint64_t(w)*uint64_t(kModeBpp[mode])) >= uint64(1)<<31 { return VP8_STATUS_INVALID_PARAM } - stride = (w * int32(kModeBpp[mode])) - size = (uint64_t(stride) * uint64_t(h)) + stride = w * int32(kModeBpp[mode]) + size = uint64_t(stride) * uint64_t(h) if !(WebPIsRGBMode(tls, mode) != 0) { - uv_stride = ((w + 1) / 2) - uv_size = (uint64_t(uv_stride) * (uint64_t((h + 1) / 2))) + uv_stride = (w + 1) / 2 + uv_size = uint64_t(uv_stride) * uint64_t((h+1)/2) if mode == MODE_YUVA { a_stride = w - a_size = (uint64_t(a_stride) * uint64_t(h)) + a_size = uint64_t(a_stride) * uint64_t(h) } } - total_size = ((size + (uint64(2) * uv_size)) + a_size) + total_size = size + uint64(2)*uv_size + a_size output = WebPSafeMalloc(tls, total_size, uint64(unsafe.Sizeof(uint8_t(0)))) - if output == (uintptr(0)) { + if output == uintptr(0) { return VP8_STATUS_OUT_OF_MEMORY } (*WebPDecBuffer)(unsafe.Pointer(buffer)).private_memory = output if !(WebPIsRGBMode(tls, mode) != 0) { // YUVA initialization - var buf uintptr = (buffer + 16 /* &.u */) /* &.YUVA */ + var buf uintptr = buffer + 16 (*WebPYUVABuffer)(unsafe.Pointer(buf)).y = output (*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride = stride (*WebPYUVABuffer)(unsafe.Pointer(buf)).y_size = size - (*WebPYUVABuffer)(unsafe.Pointer(buf)).u = (output + uintptr(size)) + (*WebPYUVABuffer)(unsafe.Pointer(buf)).u = output + uintptr(size) (*WebPYUVABuffer)(unsafe.Pointer(buf)).u_stride = uv_stride (*WebPYUVABuffer)(unsafe.Pointer(buf)).u_size = uv_size - (*WebPYUVABuffer)(unsafe.Pointer(buf)).v = ((output + uintptr(size)) + uintptr(uv_size)) + (*WebPYUVABuffer)(unsafe.Pointer(buf)).v = output + uintptr(size) + uintptr(uv_size) (*WebPYUVABuffer)(unsafe.Pointer(buf)).v_stride = uv_stride (*WebPYUVABuffer)(unsafe.Pointer(buf)).v_size = uv_size if mode == MODE_YUVA { - (*WebPYUVABuffer)(unsafe.Pointer(buf)).a = ((output + uintptr(size)) + uintptr((uint64(2) * uv_size))) + (*WebPYUVABuffer)(unsafe.Pointer(buf)).a = output + uintptr(size) + uintptr(uint64(2)*uv_size) } (*WebPYUVABuffer)(unsafe.Pointer(buf)).a_size = a_size (*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride = a_stride } else { // RGBA initialization - var buf uintptr = (buffer + 16 /* &.u */) /* &.RGBA */ + var buf uintptr = buffer + 16 (*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba = output (*WebPRGBABuffer)(unsafe.Pointer(buf)).stride = stride (*WebPRGBABuffer)(unsafe.Pointer(buf)).size = size @@ -5301,24 +5041,24 @@ func AllocateBuffer(tls *libc.TLS, buffer uintptr) VP8StatusCode { /* buffer_dec } func WebPFlipBuffer(tls *libc.TLS, buffer uintptr) VP8StatusCode { /* buffer_dec.c:152:15: */ - if buffer == (uintptr(0)) { + if buffer == uintptr(0) { return VP8_STATUS_INVALID_PARAM } if WebPIsRGBMode(tls, (*WebPDecBuffer)(unsafe.Pointer(buffer)).colorspace) != 0 { - var buf uintptr = (buffer + 16 /* &.u */) /* &.RGBA */ - *(*uintptr)(unsafe.Pointer((buf /* &.rgba */))) += (uintptr((int64_t((*WebPDecBuffer)(unsafe.Pointer(buffer)).height - 1)) * int64_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride))) + var buf uintptr = buffer + 16 + *(*uintptr)(unsafe.Pointer(buf)) += uintptr(int64_t((*WebPDecBuffer)(unsafe.Pointer(buffer)).height-1) * int64_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)) (*WebPRGBABuffer)(unsafe.Pointer(buf)).stride = -(*WebPRGBABuffer)(unsafe.Pointer(buf)).stride } else { - var buf uintptr = (buffer + 16 /* &.u */) /* &.YUVA */ + var buf uintptr = buffer + 16 var H int64_t = int64_t((*WebPDecBuffer)(unsafe.Pointer(buffer)).height) - *(*uintptr)(unsafe.Pointer((buf /* &.y */))) += (uintptr((H - int64(1)) * int64_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride))) + *(*uintptr)(unsafe.Pointer(buf)) += uintptr((H - int64(1)) * int64_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride)) (*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride = -(*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride - *(*uintptr)(unsafe.Pointer((buf + 8 /* &.u */))) += (uintptr(((H - int64(1)) >> 1) * int64_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).u_stride))) + *(*uintptr)(unsafe.Pointer(buf + 8)) += uintptr((H - int64(1)) >> 1 * int64_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).u_stride)) (*WebPYUVABuffer)(unsafe.Pointer(buf)).u_stride = -(*WebPYUVABuffer)(unsafe.Pointer(buf)).u_stride - *(*uintptr)(unsafe.Pointer((buf + 16 /* &.v */))) += (uintptr(((H - int64(1)) >> 1) * int64_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).v_stride))) + *(*uintptr)(unsafe.Pointer(buf + 16)) += uintptr((H - int64(1)) >> 1 * int64_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).v_stride)) (*WebPYUVABuffer)(unsafe.Pointer(buf)).v_stride = -(*WebPYUVABuffer)(unsafe.Pointer(buf)).v_stride - if (*WebPYUVABuffer)(unsafe.Pointer(buf)).a != (uintptr(0)) { - *(*uintptr)(unsafe.Pointer((buf + 24 /* &.a */))) += (uintptr((H - int64(1)) * int64_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride))) + if (*WebPYUVABuffer)(unsafe.Pointer(buf)).a != uintptr(0) { + *(*uintptr)(unsafe.Pointer(buf + 24)) += uintptr((H - int64(1)) * int64_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride)) (*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride = -(*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride } } @@ -5330,15 +5070,15 @@ func WebPAllocateDecBuffer(tls *libc.TLS, width int32, height int32, options uin defer tls.Free(8) var status VP8StatusCode - if ((buffer == (uintptr(0))) || (width <= 0)) || (height <= 0) { + if buffer == uintptr(0) || width <= 0 || height <= 0 { return VP8_STATUS_INVALID_PARAM } - if options != (uintptr(0)) { // First, apply options if there is any. + if options != uintptr(0) { // First, apply options if there is any. if (*WebPDecoderOptions)(unsafe.Pointer(options)).use_cropping != 0 { var cw int32 = (*WebPDecoderOptions)(unsafe.Pointer(options)).crop_width var ch int32 = (*WebPDecoderOptions)(unsafe.Pointer(options)).crop_height - var x int32 = ((*WebPDecoderOptions)(unsafe.Pointer(options)).crop_left & libc.CplInt32(1)) - var y int32 = ((*WebPDecoderOptions)(unsafe.Pointer(options)).crop_top & libc.CplInt32(1)) + var x int32 = (*WebPDecoderOptions)(unsafe.Pointer(options)).crop_left & libc.CplInt32(1) + var y int32 = (*WebPDecoderOptions)(unsafe.Pointer(options)).crop_top & libc.CplInt32(1) if !(WebPCheckCropDimensions(tls, width, height, x, y, cw, ch) != 0) { return VP8_STATUS_INVALID_PARAM // out of frame boundary. } @@ -5350,7 +5090,7 @@ func WebPAllocateDecBuffer(tls *libc.TLS, width int32, height int32, options uin *(*int32)(unsafe.Pointer(bp /* scaled_width */)) = (*WebPDecoderOptions)(unsafe.Pointer(options)).scaled_width *(*int32)(unsafe.Pointer(bp + 4 /* scaled_height */)) = (*WebPDecoderOptions)(unsafe.Pointer(options)).scaled_height if !(WebPRescalerGetScaledDimensions(tls, - width, height, (bp) /* &scaled_width */, (bp+4) /* &scaled_height */) != 0) { + width, height, bp, bp+4) != 0) { return VP8_STATUS_INVALID_PARAM } width = *(*int32)(unsafe.Pointer(bp /* scaled_width */)) @@ -5367,7 +5107,7 @@ func WebPAllocateDecBuffer(tls *libc.TLS, width int32, height int32, options uin } // Use the stride trick if vertical flip is needed. - if (options != (uintptr(0))) && ((*WebPDecoderOptions)(unsafe.Pointer(options)).flip != 0) { + if options != uintptr(0) && (*WebPDecoderOptions)(unsafe.Pointer(options)).flip != 0 { status = WebPFlipBuffer(tls, buffer) } return status @@ -5377,10 +5117,10 @@ func WebPAllocateDecBuffer(tls *libc.TLS, width int32, height int32, options uin // constructors / destructors func WebPInitDecBufferInternal(tls *libc.TLS, buffer uintptr, version int32) int32 { /* buffer_dec.c:229:5: */ - if ((version) >> 8) != (int32((0x0209)) >> 8) { + if version>>8 != int32(0x0209)>>8 { return 0 // version mismatch } - if buffer == (uintptr(0)) { + if buffer == uintptr(0) { return 0 } libc.Xmemset(tls, buffer, 0, uint64(unsafe.Sizeof(WebPDecBuffer{}))) @@ -5388,31 +5128,31 @@ func WebPInitDecBufferInternal(tls *libc.TLS, buffer uintptr, version int32) int } func WebPFreeDecBuffer(tls *libc.TLS, buffer uintptr) { /* buffer_dec.c:238:6: */ - if buffer != (uintptr(0)) { + if buffer != uintptr(0) { if (*WebPDecBuffer)(unsafe.Pointer(buffer)).is_external_memory <= 0 { WebPSafeFree(tls, (*WebPDecBuffer)(unsafe.Pointer(buffer)).private_memory) } - (*WebPDecBuffer)(unsafe.Pointer(buffer)).private_memory = (uintptr(0)) + (*WebPDecBuffer)(unsafe.Pointer(buffer)).private_memory = uintptr(0) } } func WebPCopyDecBuffer(tls *libc.TLS, src uintptr, dst uintptr) { /* buffer_dec.c:247:6: */ - if (src != (uintptr(0))) && (dst != (uintptr(0))) { + if src != uintptr(0) && dst != uintptr(0) { *(*WebPDecBuffer)(unsafe.Pointer(dst)) = *(*WebPDecBuffer)(unsafe.Pointer(src)) - if (*WebPDecBuffer)(unsafe.Pointer(src)).private_memory != (uintptr(0)) { + if (*WebPDecBuffer)(unsafe.Pointer(src)).private_memory != uintptr(0) { (*WebPDecBuffer)(unsafe.Pointer(dst)).is_external_memory = 1 // dst buffer doesn't own the memory. - (*WebPDecBuffer)(unsafe.Pointer(dst)).private_memory = (uintptr(0)) + (*WebPDecBuffer)(unsafe.Pointer(dst)).private_memory = uintptr(0) } } } // Copy and transfer ownership from src to dst (beware of parameter order!) func WebPGrabDecBuffer(tls *libc.TLS, src uintptr, dst uintptr) { /* buffer_dec.c:259:6: */ - if (src != (uintptr(0))) && (dst != (uintptr(0))) { + if src != uintptr(0) && dst != uintptr(0) { *(*WebPDecBuffer)(unsafe.Pointer(dst)) = *(*WebPDecBuffer)(unsafe.Pointer(src)) - if (*WebPDecBuffer)(unsafe.Pointer(src)).private_memory != (uintptr(0)) { + if (*WebPDecBuffer)(unsafe.Pointer(src)).private_memory != uintptr(0) { (*WebPDecBuffer)(unsafe.Pointer(src)).is_external_memory = 1 // src relinquishes ownership - (*WebPDecBuffer)(unsafe.Pointer(src)).private_memory = (uintptr(0)) + (*WebPDecBuffer)(unsafe.Pointer(src)).private_memory = uintptr(0) } } } @@ -5425,20 +5165,20 @@ func WebPCopyDecBufferPixels(tls *libc.TLS, src_buf uintptr, dst_buf uintptr) VP return VP8_STATUS_INVALID_PARAM } if WebPIsRGBMode(tls, (*WebPDecBuffer)(unsafe.Pointer(src_buf)).colorspace) != 0 { - var src uintptr = (src_buf + 16 /* &.u */) /* &.RGBA */ - var dst uintptr = (dst_buf + 16 /* &.u */) /* &.RGBA */ + var src uintptr = src_buf + 16 + var dst uintptr = dst_buf + 16 WebPCopyPlane(tls, (*WebPRGBABuffer)(unsafe.Pointer(src)).rgba, (*WebPRGBABuffer)(unsafe.Pointer(src)).stride, (*WebPRGBABuffer)(unsafe.Pointer(dst)).rgba, (*WebPRGBABuffer)(unsafe.Pointer(dst)).stride, - ((*WebPDecBuffer)(unsafe.Pointer(src_buf)).width * int32(kModeBpp[(*WebPDecBuffer)(unsafe.Pointer(src_buf)).colorspace])), + (*WebPDecBuffer)(unsafe.Pointer(src_buf)).width*int32(kModeBpp[(*WebPDecBuffer)(unsafe.Pointer(src_buf)).colorspace]), (*WebPDecBuffer)(unsafe.Pointer(src_buf)).height) } else { - var src uintptr = (src_buf + 16 /* &.u */) /* &.YUVA */ - var dst uintptr = (dst_buf + 16 /* &.u */) /* &.YUVA */ + var src uintptr = src_buf + 16 + var dst uintptr = dst_buf + 16 WebPCopyPlane(tls, (*WebPYUVABuffer)(unsafe.Pointer(src)).y, (*WebPYUVABuffer)(unsafe.Pointer(src)).y_stride, (*WebPYUVABuffer)(unsafe.Pointer(dst)).y, (*WebPYUVABuffer)(unsafe.Pointer(dst)).y_stride, (*WebPDecBuffer)(unsafe.Pointer(src_buf)).width, (*WebPDecBuffer)(unsafe.Pointer(src_buf)).height) WebPCopyPlane(tls, (*WebPYUVABuffer)(unsafe.Pointer(src)).u, (*WebPYUVABuffer)(unsafe.Pointer(src)).u_stride, (*WebPYUVABuffer)(unsafe.Pointer(dst)).u, (*WebPYUVABuffer)(unsafe.Pointer(dst)).u_stride, - (((*WebPDecBuffer)(unsafe.Pointer(src_buf)).width + 1) / 2), (((*WebPDecBuffer)(unsafe.Pointer(src_buf)).height + 1) / 2)) + ((*WebPDecBuffer)(unsafe.Pointer(src_buf)).width+1)/2, ((*WebPDecBuffer)(unsafe.Pointer(src_buf)).height+1)/2) WebPCopyPlane(tls, (*WebPYUVABuffer)(unsafe.Pointer(src)).v, (*WebPYUVABuffer)(unsafe.Pointer(src)).v_stride, (*WebPYUVABuffer)(unsafe.Pointer(dst)).v, (*WebPYUVABuffer)(unsafe.Pointer(dst)).v_stride, - (((*WebPDecBuffer)(unsafe.Pointer(src_buf)).width + 1) / 2), (((*WebPDecBuffer)(unsafe.Pointer(src_buf)).height + 1) / 2)) + ((*WebPDecBuffer)(unsafe.Pointer(src_buf)).width+1)/2, ((*WebPDecBuffer)(unsafe.Pointer(src_buf)).height+1)/2) if WebPIsAlphaMode(tls, (*WebPDecBuffer)(unsafe.Pointer(src_buf)).colorspace) != 0 { WebPCopyPlane(tls, (*WebPYUVABuffer)(unsafe.Pointer(src)).a, (*WebPYUVABuffer)(unsafe.Pointer(src)).a_stride, (*WebPYUVABuffer)(unsafe.Pointer(dst)).a, (*WebPYUVABuffer)(unsafe.Pointer(dst)).a_stride, (*WebPDecBuffer)(unsafe.Pointer(src_buf)).width, (*WebPDecBuffer)(unsafe.Pointer(src_buf)).height) @@ -5449,7 +5189,7 @@ func WebPCopyDecBufferPixels(tls *libc.TLS, src_buf uintptr, dst_buf uintptr) VP func WebPAvoidSlowMemory(tls *libc.TLS, output uintptr, features uintptr) int32 { /* buffer_dec.c:302:5: */ - return (libc.Bool32((((*WebPDecBuffer)(unsafe.Pointer(output)).is_external_memory >= 2) && (WebPIsPremultipliedMode(tls, (*WebPDecBuffer)(unsafe.Pointer(output)).colorspace) != 0)) && ((features != (uintptr(0))) && ((*WebPBitstreamFeatures)(unsafe.Pointer(features)).has_alpha != 0)))) + return libc.Bool32((*WebPDecBuffer)(unsafe.Pointer(output)).is_external_memory >= 2 && WebPIsPremultipliedMode(tls, (*WebPDecBuffer)(unsafe.Pointer(output)).colorspace) != 0 && (features != uintptr(0) && (*WebPBitstreamFeatures)(unsafe.Pointer(features)).has_alpha != 0)) } //------------------------------------------------------------------------------ @@ -5460,10 +5200,10 @@ func WebPAvoidSlowMemory(tls *libc.TLS, output uintptr, features uintptr) int32 // Main reconstruction function. var kScan = [16]uint16_t{ - (uint16_t(0 + (0 * 32))), (uint16_t(4 + (0 * 32))), (uint16_t(8 + (0 * 32))), (uint16_t(12 + (0 * 32))), - (uint16_t(0 + (4 * 32))), (uint16_t(4 + (4 * 32))), (uint16_t(8 + (4 * 32))), (uint16_t(12 + (4 * 32))), - (uint16_t(0 + (8 * 32))), (uint16_t(4 + (8 * 32))), (uint16_t(8 + (8 * 32))), (uint16_t(12 + (8 * 32))), - (uint16_t(0 + (12 * 32))), (uint16_t(4 + (12 * 32))), (uint16_t(8 + (12 * 32))), (uint16_t(12 + (12 * 32))), + uint16_t(0 + 0*32), uint16_t(4 + 0*32), uint16_t(8 + 0*32), uint16_t(12 + 0*32), + uint16_t(0 + 4*32), uint16_t(4 + 4*32), uint16_t(8 + 4*32), uint16_t(12 + 4*32), + uint16_t(0 + 8*32), uint16_t(4 + 8*32), uint16_t(8 + 8*32), uint16_t(12 + 8*32), + uint16_t(0 + 12*32), uint16_t(4 + 12*32), uint16_t(8 + 12*32), uint16_t(12 + 12*32), } /* frame_dec.c:21:23 */ func CheckMode(tls *libc.TLS, mb_x int32, mb_y int32, mode int32) int32 { /* frame_dec.c:28:12: */ @@ -5510,8 +5250,8 @@ func DoTransform(tls *libc.TLS, bits uint32_t, src uintptr, dst uintptr) { /* fr } func DoUVTransform(tls *libc.TLS, bits uint32_t, src uintptr, dst uintptr) { /* frame_dec.c:60:13: */ - if (bits & uint32_t(0xff)) != 0 { // any non-zero coeff at all? - if (bits & uint32_t(0xaa)) != 0 { // any non-zero AC coefficient? + if bits&uint32_t(0xff) != 0 { // any non-zero coeff at all? + if bits&uint32_t(0xaa) != 0 { // any non-zero AC coefficient? (*struct { f func(*libc.TLS, uintptr, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8TransformUV})).f(tls, src, dst) // note we don't use the AC3 variant for U/V @@ -5528,71 +5268,71 @@ func ReconstructRow(tls *libc.TLS, dec uintptr, ctx uintptr) { /* frame_dec.c:71 var mb_x int32 var mb_y int32 = (*VP8ThreadContext)(unsafe.Pointer(ctx)).mb_y_ var cache_id int32 = (*VP8ThreadContext)(unsafe.Pointer(ctx)).id_ - var y_dst uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).yuv_b_ + uintptr(((32 * 1) + 8))) - var u_dst uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).yuv_b_ + uintptr(((((32 * 1) + 8) + (32 * 16)) + 32))) - var v_dst uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).yuv_b_ + uintptr((((((32 * 1) + 8) + (32 * 16)) + 32) + 16))) + var y_dst uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).yuv_b_ + uintptr(32*1+8) + var u_dst uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).yuv_b_ + uintptr(32*1+8+32*16+32) + var v_dst uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).yuv_b_ + uintptr(32*1+8+32*16+32+16) // Initialize left-most block. for j = 0; j < 16; j++ { - *(*uint8_t)(unsafe.Pointer(y_dst + uintptr(((j * 32) - 1)))) = uint8_t(129) + *(*uint8_t)(unsafe.Pointer(y_dst + uintptr(j*32-1))) = uint8_t(129) } for j = 0; j < 8; j++ { - *(*uint8_t)(unsafe.Pointer(u_dst + uintptr(((j * 32) - 1)))) = uint8_t(129) - *(*uint8_t)(unsafe.Pointer(v_dst + uintptr(((j * 32) - 1)))) = uint8_t(129) + *(*uint8_t)(unsafe.Pointer(u_dst + uintptr(j*32-1))) = uint8_t(129) + *(*uint8_t)(unsafe.Pointer(v_dst + uintptr(j*32-1))) = uint8_t(129) } // Init top-left sample on left column too. if mb_y > 0 { - *(*uint8_t)(unsafe.Pointer(y_dst + libc.UintptrFromInt32((-1 - 32)))) = libc.AssignPtrUint8((u_dst + libc.UintptrFromInt32((-1 - 32))), libc.AssignPtrUint8((v_dst+libc.UintptrFromInt32((-1-32))), uint8_t(129))) + *(*uint8_t)(unsafe.Pointer(y_dst + libc.UintptrFromInt32(-1-32))) = libc.AssignPtrUint8(u_dst+libc.UintptrFromInt32(-1-32), libc.AssignPtrUint8(v_dst+libc.UintptrFromInt32(-1-32), uint8_t(129))) } else { // we only need to do this init once at block (0,0). // Afterward, it remains valid for the whole topmost row. - libc.Xmemset(tls, ((y_dst - uintptr(32)) - uintptr(1)), 127, (uint64((16 + 4) + 1))) - libc.Xmemset(tls, ((u_dst - uintptr(32)) - uintptr(1)), 127, (uint64(8 + 1))) - libc.Xmemset(tls, ((v_dst - uintptr(32)) - uintptr(1)), 127, (uint64(8 + 1))) + libc.Xmemset(tls, y_dst-uintptr(32)-uintptr(1), 127, uint64(16+4+1)) + libc.Xmemset(tls, u_dst-uintptr(32)-uintptr(1), 127, uint64(8+1)) + libc.Xmemset(tls, v_dst-uintptr(32)-uintptr(1), 127, uint64(8+1)) } // Reconstruct one row. for mb_x = 0; mb_x < (*VP8Decoder)(unsafe.Pointer(dec)).mb_w_; mb_x++ { - var block uintptr = ((*VP8ThreadContext)(unsafe.Pointer(ctx)).mb_data_ + uintptr(mb_x)*800) + var block uintptr = (*VP8ThreadContext)(unsafe.Pointer(ctx)).mb_data_ + uintptr(mb_x)*800 // Rotate in the left samples from previously decoded block. We move four // pixels at a time for alignment reason, and because of in-loop filter. if mb_x > 0 { for j = -1; j < 16; j++ { - Copy32b(tls, (y_dst + uintptr(((j * 32) - 4))), (y_dst + uintptr(((j * 32) + 12)))) + Copy32b(tls, y_dst+uintptr(j*32-4), y_dst+uintptr(j*32+12)) } for j = -1; j < 8; j++ { - Copy32b(tls, (u_dst + uintptr(((j * 32) - 4))), (u_dst + uintptr(((j * 32) + 4)))) - Copy32b(tls, (v_dst + uintptr(((j * 32) - 4))), (v_dst + uintptr(((j * 32) + 4)))) + Copy32b(tls, u_dst+uintptr(j*32-4), u_dst+uintptr(j*32+4)) + Copy32b(tls, v_dst+uintptr(j*32-4), v_dst+uintptr(j*32+4)) } } { // bring top samples into the cache - var top_yuv uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).yuv_t_ + uintptr(mb_x)*32) + var top_yuv uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).yuv_t_ + uintptr(mb_x)*32 var coeffs uintptr = block /* &.coeffs_ */ var bits uint32_t = (*VP8MBData)(unsafe.Pointer(block)).non_zero_y_ var n int32 if mb_y > 0 { - libc.Xmemcpy(tls, (y_dst - uintptr(32)), (top_yuv) /* &.y */, uint64(16)) - libc.Xmemcpy(tls, (u_dst - uintptr(32)), ((top_yuv) + 16 /* &.u */), uint64(8)) - libc.Xmemcpy(tls, (v_dst - uintptr(32)), ((top_yuv) + 24 /* &.v */), uint64(8)) + libc.Xmemcpy(tls, y_dst-uintptr(32), top_yuv, uint64(16)) + libc.Xmemcpy(tls, u_dst-uintptr(32), top_yuv+16, uint64(8)) + libc.Xmemcpy(tls, v_dst-uintptr(32), top_yuv+24, uint64(8)) } // predict and add residuals if (*VP8MBData)(unsafe.Pointer(block)).is_i4x4_ != 0 { // 4x4 - var top_right uintptr = ((y_dst - uintptr(32)) + uintptr(16)) + var top_right uintptr = y_dst - uintptr(32) + uintptr(16) if mb_y > 0 { - if mb_x >= ((*VP8Decoder)(unsafe.Pointer(dec)).mb_w_ - 1) { // on rightmost border - libc.Xmemset(tls, top_right, int32(*(*uint8_t)(unsafe.Pointer((top_yuv) /* &.y */ + 15))), uint64(unsafe.Sizeof(uint32_t(0)))) + if mb_x >= (*VP8Decoder)(unsafe.Pointer(dec)).mb_w_-1 { // on rightmost border + libc.Xmemset(tls, top_right, int32(*(*uint8_t)(unsafe.Pointer(top_yuv + 15))), uint64(unsafe.Sizeof(uint32_t(0)))) } else { - libc.Xmemcpy(tls, top_right, (top_yuv + 1*32) /* &.y */, uint64(unsafe.Sizeof(uint32_t(0)))) + libc.Xmemcpy(tls, top_right, top_yuv+1*32, uint64(unsafe.Sizeof(uint32_t(0)))) } } // replicate the top-right pixels below - *(*uint32_t)(unsafe.Pointer(top_right + 32*4)) = libc.AssignPtrUint32((top_right + 64*4), libc.AssignPtrUint32((top_right+96*4), *(*uint32_t)(unsafe.Pointer(top_right)))) + *(*uint32_t)(unsafe.Pointer(top_right + 32*4)) = libc.AssignPtrUint32(top_right+64*4, libc.AssignPtrUint32(top_right+96*4, *(*uint32_t)(unsafe.Pointer(top_right)))) // predict and add residuals for all 4x4 blocks in turn. n = 0 @@ -5601,9 +5341,9 @@ func ReconstructRow(tls *libc.TLS, dec uintptr, ctx uintptr) { /* frame_dec.c:71 goto __3 } { - var dst uintptr = (y_dst + uintptr(kScan[n])) - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8PredLuma4[*(*uint8_t)(unsafe.Pointer((block + 769 /* &.imodes_ */) + uintptr(n)))]})).f(tls, dst) - DoTransform(tls, bits, (coeffs + uintptr((n*16))*2), dst) + var dst uintptr = y_dst + uintptr(kScan[n]) + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8PredLuma4[*(*uint8_t)(unsafe.Pointer(block + 769 /* &.imodes_ */ + uintptr(n)))]})).f(tls, dst) + DoTransform(tls, bits, coeffs+uintptr(n*16)*2, dst) } goto __2 @@ -5614,7 +5354,7 @@ func ReconstructRow(tls *libc.TLS, dec uintptr, ctx uintptr) { /* frame_dec.c:71 goto __3 __3: } else { // 16x16 - var pred_func int32 = CheckMode(tls, mb_x, mb_y, int32(*(*uint8_t)(unsafe.Pointer((block + 769 /* &.imodes_ */))))) + var pred_func int32 = CheckMode(tls, mb_x, mb_y, int32(*(*uint8_t)(unsafe.Pointer(block + 769)))) (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8PredLuma16[pred_func]})).f(tls, y_dst) if bits != uint32_t(0) { n = 0 @@ -5623,7 +5363,7 @@ func ReconstructRow(tls *libc.TLS, dec uintptr, ctx uintptr) { /* frame_dec.c:71 goto __6 } { - DoTransform(tls, bits, (coeffs + uintptr((n*16))*2), (y_dst + uintptr(kScan[n]))) + DoTransform(tls, bits, coeffs+uintptr(n*16)*2, y_dst+uintptr(kScan[n])) } goto __5 @@ -5641,32 +5381,32 @@ func ReconstructRow(tls *libc.TLS, dec uintptr, ctx uintptr) { /* frame_dec.c:71 var pred_func int32 = CheckMode(tls, mb_x, mb_y, int32((*VP8MBData)(unsafe.Pointer(block)).uvmode_)) (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8PredChroma8[pred_func]})).f(tls, u_dst) (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8PredChroma8[pred_func]})).f(tls, v_dst) - DoUVTransform(tls, (bits_uv >> 0), (coeffs + uintptr((16*16))*2), u_dst) - DoUVTransform(tls, (bits_uv >> 8), (coeffs + uintptr((20*16))*2), v_dst) + DoUVTransform(tls, bits_uv>>0, coeffs+uintptr(16*16)*2, u_dst) + DoUVTransform(tls, bits_uv>>8, coeffs+uintptr(20*16)*2, v_dst) } // stash away top samples for next block - if mb_y < ((*VP8Decoder)(unsafe.Pointer(dec)).mb_h_ - 1) { - libc.Xmemcpy(tls, (top_yuv) /* &.y */, (y_dst + uintptr((15 * 32))), uint64(16)) - libc.Xmemcpy(tls, ((top_yuv) + 16 /* &.u */), (u_dst + uintptr((7 * 32))), uint64(8)) - libc.Xmemcpy(tls, ((top_yuv) + 24 /* &.v */), (v_dst + uintptr((7 * 32))), uint64(8)) + if mb_y < (*VP8Decoder)(unsafe.Pointer(dec)).mb_h_-1 { + libc.Xmemcpy(tls, top_yuv, y_dst+uintptr(15*32), uint64(16)) + libc.Xmemcpy(tls, top_yuv+16, u_dst+uintptr(7*32), uint64(8)) + libc.Xmemcpy(tls, top_yuv+24, v_dst+uintptr(7*32), uint64(8)) } } // Transfer reconstructed samples from yuv_b_ cache to final destination. { - var y_offset int32 = ((cache_id * 16) * (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_) - var uv_offset int32 = ((cache_id * 8) * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_) - var y_out uintptr = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ + uintptr((mb_x * 16))) + uintptr(y_offset)) - var u_out uintptr = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ + uintptr((mb_x * 8))) + uintptr(uv_offset)) - var v_out uintptr = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ + uintptr((mb_x * 8))) + uintptr(uv_offset)) + var y_offset int32 = cache_id * 16 * (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_ + var uv_offset int32 = cache_id * 8 * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ + var y_out uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ + uintptr(mb_x*16) + uintptr(y_offset) + var u_out uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ + uintptr(mb_x*8) + uintptr(uv_offset) + var v_out uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ + uintptr(mb_x*8) + uintptr(uv_offset) for j = 0; j < 16; j++ { - libc.Xmemcpy(tls, (y_out + uintptr((j * (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_))), (y_dst + uintptr((j * 32))), uint64(16)) + libc.Xmemcpy(tls, y_out+uintptr(j*(*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_), y_dst+uintptr(j*32), uint64(16)) } for j = 0; j < 8; j++ { - libc.Xmemcpy(tls, (u_out + uintptr((j * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_))), (u_dst + uintptr((j * 32))), uint64(8)) - libc.Xmemcpy(tls, (v_out + uintptr((j * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_))), (v_dst + uintptr((j * 32))), uint64(8)) + libc.Xmemcpy(tls, u_out+uintptr(j*(*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_), u_dst+uintptr(j*32), uint64(8)) + libc.Xmemcpy(tls, v_out+uintptr(j*(*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_), v_dst+uintptr(j*32), uint64(8)) } } @@ -5684,11 +5424,11 @@ func ReconstructRow(tls *libc.TLS, dec uintptr, ctx uintptr) { /* frame_dec.c:71 var kFilterExtraRows = [3]uint8_t{uint8_t(0), uint8_t(2), uint8_t(8)} /* frame_dec.c:201:22 */ func DoFilter(tls *libc.TLS, dec uintptr, mb_x int32, mb_y int32) { /* frame_dec.c:203:13: */ - var ctx uintptr = (dec + 216 /* &.thread_ctx_ */) + var ctx uintptr = dec + 216 var cache_id int32 = (*VP8ThreadContext)(unsafe.Pointer(ctx)).id_ var y_bps int32 = (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_ - var f_info uintptr = ((*VP8ThreadContext)(unsafe.Pointer(ctx)).f_info_ + uintptr(mb_x)*4) - var y_dst uintptr = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ + uintptr(((cache_id * 16) * y_bps))) + uintptr((mb_x * 16))) + var f_info uintptr = (*VP8ThreadContext)(unsafe.Pointer(ctx)).f_info_ + uintptr(mb_x)*4 + var y_dst uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ + uintptr(cache_id*16*y_bps) + uintptr(mb_x*16) var ilevel int32 = int32((*VP8FInfo)(unsafe.Pointer(f_info)).f_ilevel_) var limit int32 = int32((*VP8FInfo)(unsafe.Pointer(f_info)).f_limit_) if limit == 0 { @@ -5699,7 +5439,7 @@ func DoFilter(tls *libc.TLS, dec uintptr, mb_x int32, mb_y int32) { /* frame_dec if mb_x > 0 { (*struct { f func(*libc.TLS, uintptr, int32, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8SimpleHFilter16})).f(tls, y_dst, y_bps, (limit + 4)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SimpleHFilter16})).f(tls, y_dst, y_bps, limit+4) } if (*VP8FInfo)(unsafe.Pointer(f_info)).f_inner_ != 0 { (*struct { @@ -5709,7 +5449,7 @@ func DoFilter(tls *libc.TLS, dec uintptr, mb_x int32, mb_y int32) { /* frame_dec if mb_y > 0 { (*struct { f func(*libc.TLS, uintptr, int32, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8SimpleVFilter16})).f(tls, y_dst, y_bps, (limit + 4)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SimpleVFilter16})).f(tls, y_dst, y_bps, limit+4) } if (*VP8FInfo)(unsafe.Pointer(f_info)).f_inner_ != 0 { (*struct { @@ -5718,16 +5458,16 @@ func DoFilter(tls *libc.TLS, dec uintptr, mb_x int32, mb_y int32) { /* frame_dec } } else { // complex var uv_bps int32 = (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ - var u_dst uintptr = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ + uintptr(((cache_id * 8) * uv_bps))) + uintptr((mb_x * 8))) - var v_dst uintptr = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ + uintptr(((cache_id * 8) * uv_bps))) + uintptr((mb_x * 8))) + var u_dst uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ + uintptr(cache_id*8*uv_bps) + uintptr(mb_x*8) + var v_dst uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ + uintptr(cache_id*8*uv_bps) + uintptr(mb_x*8) var hev_thresh int32 = int32((*VP8FInfo)(unsafe.Pointer(f_info)).hev_thresh_) if mb_x > 0 { (*struct { f func(*libc.TLS, uintptr, int32, int32, int32, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8HFilter16})).f(tls, y_dst, y_bps, (limit + 4), ilevel, hev_thresh) + })(unsafe.Pointer(&struct{ uintptr }{VP8HFilter16})).f(tls, y_dst, y_bps, limit+4, ilevel, hev_thresh) (*struct { f func(*libc.TLS, uintptr, uintptr, int32, int32, int32, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8HFilter8})).f(tls, u_dst, v_dst, uv_bps, (limit + 4), ilevel, hev_thresh) + })(unsafe.Pointer(&struct{ uintptr }{VP8HFilter8})).f(tls, u_dst, v_dst, uv_bps, limit+4, ilevel, hev_thresh) } if (*VP8FInfo)(unsafe.Pointer(f_info)).f_inner_ != 0 { (*struct { @@ -5740,10 +5480,10 @@ func DoFilter(tls *libc.TLS, dec uintptr, mb_x int32, mb_y int32) { /* frame_dec if mb_y > 0 { (*struct { f func(*libc.TLS, uintptr, int32, int32, int32, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8VFilter16})).f(tls, y_dst, y_bps, (limit + 4), ilevel, hev_thresh) + })(unsafe.Pointer(&struct{ uintptr }{VP8VFilter16})).f(tls, y_dst, y_bps, limit+4, ilevel, hev_thresh) (*struct { f func(*libc.TLS, uintptr, uintptr, int32, int32, int32, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8VFilter8})).f(tls, u_dst, v_dst, uv_bps, (limit + 4), ilevel, hev_thresh) + })(unsafe.Pointer(&struct{ uintptr }{VP8VFilter8})).f(tls, u_dst, v_dst, uv_bps, limit+4, ilevel, hev_thresh) } if (*VP8FInfo)(unsafe.Pointer(f_info)).f_inner_ != 0 { (*struct { @@ -5772,26 +5512,26 @@ func FilterRow(tls *libc.TLS, dec uintptr) { /* frame_dec.c:253:13: */ func PrecomputeFilterStrengths(tls *libc.TLS, dec uintptr) { /* frame_dec.c:265:13: */ if (*VP8Decoder)(unsafe.Pointer(dec)).filter_type_ > 0 { var s int32 - var hdr uintptr = (dec + 80 /* &.filter_hdr_ */) + var hdr uintptr = dec + 80 for s = 0; s < NUM_MB_SEGMENTS; s++ { var i4x4 int32 // First, compute the initial level var base_level int32 if (*VP8Decoder)(unsafe.Pointer(dec)).segment_hdr_.use_segment_ != 0 { - base_level = int32(*(*int8_t)(unsafe.Pointer(((dec + 128 /* &.segment_hdr_ */) + 16 /* &.filter_strength_ */) + uintptr(s)))) + base_level = int32(*(*int8_t)(unsafe.Pointer(dec + 128 + 16 + uintptr(s)))) if !((*VP8Decoder)(unsafe.Pointer(dec)).segment_hdr_.absolute_delta_ != 0) { - base_level = base_level + ((*VP8FilterHeader)(unsafe.Pointer(hdr)).level_) + base_level = base_level + (*VP8FilterHeader)(unsafe.Pointer(hdr)).level_ } } else { base_level = (*VP8FilterHeader)(unsafe.Pointer(hdr)).level_ } for i4x4 = 0; i4x4 <= 1; i4x4++ { - var info uintptr = (((dec + 2924 /* &.fstrengths_ */) + uintptr(s)*8) + uintptr(i4x4)*4) + var info uintptr = dec + 2924 + uintptr(s)*8 + uintptr(i4x4)*4 var level int32 = base_level if (*VP8FilterHeader)(unsafe.Pointer(hdr)).use_lf_delta_ != 0 { - level = level + (*(*int32)(unsafe.Pointer((hdr + 16 /* &.ref_lf_delta_ */)))) + level = level + *(*int32)(unsafe.Pointer(hdr + 16)) if i4x4 != 0 { - level = level + (*(*int32)(unsafe.Pointer((hdr + 32 /* &.mode_lf_delta_ */)))) + level = level + *(*int32)(unsafe.Pointer(hdr + 32)) } } if level < 0 { @@ -5811,15 +5551,15 @@ func PrecomputeFilterStrengths(tls *libc.TLS, dec uintptr) { /* frame_dec.c:265: } else { ilevel >>= 1 } - if ilevel > (9 - (*VP8FilterHeader)(unsafe.Pointer(hdr)).sharpness_) { - ilevel = (9 - (*VP8FilterHeader)(unsafe.Pointer(hdr)).sharpness_) + if ilevel > 9-(*VP8FilterHeader)(unsafe.Pointer(hdr)).sharpness_ { + ilevel = 9 - (*VP8FilterHeader)(unsafe.Pointer(hdr)).sharpness_ } } if ilevel < 1 { ilevel = 1 } (*VP8FInfo)(unsafe.Pointer(info)).f_ilevel_ = uint8_t(ilevel) - (*VP8FInfo)(unsafe.Pointer(info)).f_limit_ = (uint8_t((2 * level) + ilevel)) + (*VP8FInfo)(unsafe.Pointer(info)).f_limit_ = uint8_t(2*level + ilevel) (*VP8FInfo)(unsafe.Pointer(info)).hev_thresh_ = func() uint8 { if level >= 40 { return uint8(2) @@ -5852,9 +5592,9 @@ var kQuantToDitherAmp = [12]uint8_t{ func VP8InitDithering(tls *libc.TLS, options uintptr, dec uintptr) { /* frame_dec.c:328:6: */ - if options != (uintptr(0)) { + if options != uintptr(0) { var d int32 = (*WebPDecoderOptions)(unsafe.Pointer(options)).dithering_strength - var max_amp int32 = ((int32(1) << 8) - 1) + var max_amp int32 = int32(1)<<8 - 1 var f int32 if d < 0 { f = 0 @@ -5862,14 +5602,14 @@ func VP8InitDithering(tls *libc.TLS, options uintptr, dec uintptr) { /* frame_de if d > 100 { f = max_amp } else { - f = ((d * max_amp) / 100) + f = d * max_amp / 100 } } if f > 0 { var s int32 var all_amp int32 = 0 for s = 0; s < NUM_MB_SEGMENTS; s++ { - var dqm uintptr = ((dec + 1060 /* &.dqm_ */) + uintptr(s)*32) + var dqm uintptr = dec + 1060 + uintptr(s)*32 if (*VP8QuantMatrix)(unsafe.Pointer(dqm)).uv_quant_ < 12 { var idx int32 if (*VP8QuantMatrix)(unsafe.Pointer(dqm)).uv_quant_ < 0 { @@ -5877,12 +5617,12 @@ func VP8InitDithering(tls *libc.TLS, options uintptr, dec uintptr) { /* frame_de } else { idx = (*VP8QuantMatrix)(unsafe.Pointer(dqm)).uv_quant_ } - (*VP8QuantMatrix)(unsafe.Pointer(dqm)).dither_ = ((f * int32(kQuantToDitherAmp[idx])) >> 3) + (*VP8QuantMatrix)(unsafe.Pointer(dqm)).dither_ = f * int32(kQuantToDitherAmp[idx]) >> 3 } - all_amp = all_amp | ((*VP8QuantMatrix)(unsafe.Pointer(dqm)).dither_) + all_amp = all_amp | (*VP8QuantMatrix)(unsafe.Pointer(dqm)).dither_ } if all_amp != 0 { - VP8InitRandom(tls, (dec + 828 /* &.dithering_rg_ */), 1.0) + VP8InitRandom(tls, dec+828, 1.0) (*VP8Decoder)(unsafe.Pointer(dec)).dither_ = 1 } } @@ -5904,27 +5644,27 @@ func Dither8x8(tls *libc.TLS, rg uintptr, dst uintptr, bps int32, amp int32) { / // var dither [64]uint8_t at bp, 64 var i int32 - for i = 0; i < (8 * 8); i++ { - *(*uint8_t)(unsafe.Pointer((bp) /* &dither[0] */ + uintptr(i))) = uint8_t(VP8RandomBits2(tls, rg, (7 + 1), amp)) + for i = 0; i < 8*8; i++ { + *(*uint8_t)(unsafe.Pointer(bp + uintptr(i))) = uint8_t(VP8RandomBits2(tls, rg, 7+1, amp)) } (*struct { f func(*libc.TLS, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8DitherCombine8x8})).f(tls, (bp) /* &dither[0] */, dst, bps) + })(unsafe.Pointer(&struct{ uintptr }{VP8DitherCombine8x8})).f(tls, bp /* &dither[0] */, dst, bps) } func DitherRow(tls *libc.TLS, dec uintptr) { /* frame_dec.c:371:13: */ var mb_x int32 for mb_x = (*VP8Decoder)(unsafe.Pointer(dec)).tl_mb_x_; mb_x < (*VP8Decoder)(unsafe.Pointer(dec)).br_mb_x_; mb_x++ { - var ctx uintptr = (dec + 216 /* &.thread_ctx_ */) - var data uintptr = ((*VP8ThreadContext)(unsafe.Pointer(ctx)).mb_data_ + uintptr(mb_x)*800) + var ctx uintptr = dec + 216 + var data uintptr = (*VP8ThreadContext)(unsafe.Pointer(ctx)).mb_data_ + uintptr(mb_x)*800 var cache_id int32 = (*VP8ThreadContext)(unsafe.Pointer(ctx)).id_ var uv_bps int32 = (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ if int32((*VP8MBData)(unsafe.Pointer(data)).dither_) >= 4 { - var u_dst uintptr = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ + uintptr(((cache_id * 8) * uv_bps))) + uintptr((mb_x * 8))) - var v_dst uintptr = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ + uintptr(((cache_id * 8) * uv_bps))) + uintptr((mb_x * 8))) - Dither8x8(tls, (dec + 828 /* &.dithering_rg_ */), u_dst, uv_bps, int32((*VP8MBData)(unsafe.Pointer(data)).dither_)) - Dither8x8(tls, (dec + 828 /* &.dithering_rg_ */), v_dst, uv_bps, int32((*VP8MBData)(unsafe.Pointer(data)).dither_)) + var u_dst uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ + uintptr(cache_id*8*uv_bps) + uintptr(mb_x*8) + var v_dst uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ + uintptr(cache_id*8*uv_bps) + uintptr(mb_x*8) + Dither8x8(tls, dec+828, u_dst, uv_bps, int32((*VP8MBData)(unsafe.Pointer(data)).dither_)) + Dither8x8(tls, dec+828, v_dst, uv_bps, int32((*VP8MBData)(unsafe.Pointer(data)).dither_)) } } } @@ -5945,19 +5685,19 @@ func FinishRow(tls *libc.TLS, arg1 uintptr, arg2 uintptr) int32 { /* frame_dec.c var dec uintptr = arg1 var io uintptr = arg2 var ok int32 = 1 - var ctx uintptr = (dec + 216 /* &.thread_ctx_ */) + var ctx uintptr = dec + 216 var cache_id int32 = (*VP8ThreadContext)(unsafe.Pointer(ctx)).id_ var extra_y_rows int32 = int32(kFilterExtraRows[(*VP8Decoder)(unsafe.Pointer(dec)).filter_type_]) - var ysize int32 = (extra_y_rows * (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_) - var uvsize int32 = ((extra_y_rows / 2) * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_) - var y_offset int32 = ((cache_id * 16) * (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_) - var uv_offset int32 = ((cache_id * 8) * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_) - var ydst uintptr = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ - uintptr(ysize)) + uintptr(y_offset)) - var udst uintptr = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ - uintptr(uvsize)) + uintptr(uv_offset)) - var vdst uintptr = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ - uintptr(uvsize)) + uintptr(uv_offset)) + var ysize int32 = extra_y_rows * (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_ + var uvsize int32 = extra_y_rows / 2 * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ + var y_offset int32 = cache_id * 16 * (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_ + var uv_offset int32 = cache_id * 8 * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ + var ydst uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ - uintptr(ysize) + uintptr(y_offset) + var udst uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ - uintptr(uvsize) + uintptr(uv_offset) + var vdst uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ - uintptr(uvsize) + uintptr(uv_offset) var mb_y int32 = (*VP8ThreadContext)(unsafe.Pointer(ctx)).mb_y_ - var is_first_row int32 = (libc.Bool32(mb_y == 0)) - var is_last_row int32 = (libc.Bool32(mb_y >= ((*VP8Decoder)(unsafe.Pointer(dec)).br_mb_y_ - 1))) + var is_first_row int32 = libc.Bool32(mb_y == 0) + var is_last_row int32 = libc.Bool32(mb_y >= (*VP8Decoder)(unsafe.Pointer(dec)).br_mb_y_-1) if (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ == 2 { ReconstructRow(tls, dec, ctx) @@ -5971,67 +5711,67 @@ func FinishRow(tls *libc.TLS, arg1 uintptr, arg2 uintptr) int32 { /* frame_dec.c DitherRow(tls, dec) } - if (*VP8Io)(unsafe.Pointer(io)).put != (uintptr(0)) { - var y_start int32 = ((mb_y) * 16) - var y_end int32 = ((mb_y + 1) * 16) + if (*VP8Io)(unsafe.Pointer(io)).put != uintptr(0) { + var y_start int32 = mb_y * 16 + var y_end int32 = (mb_y + 1) * 16 if !(is_first_row != 0) { - y_start = y_start - (extra_y_rows) + y_start = y_start - extra_y_rows (*VP8Io)(unsafe.Pointer(io)).y = ydst (*VP8Io)(unsafe.Pointer(io)).u = udst (*VP8Io)(unsafe.Pointer(io)).v = vdst } else { - (*VP8Io)(unsafe.Pointer(io)).y = ((*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ + uintptr(y_offset)) - (*VP8Io)(unsafe.Pointer(io)).u = ((*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ + uintptr(uv_offset)) - (*VP8Io)(unsafe.Pointer(io)).v = ((*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ + uintptr(uv_offset)) + (*VP8Io)(unsafe.Pointer(io)).y = (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ + uintptr(y_offset) + (*VP8Io)(unsafe.Pointer(io)).u = (*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ + uintptr(uv_offset) + (*VP8Io)(unsafe.Pointer(io)).v = (*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ + uintptr(uv_offset) } if !(is_last_row != 0) { - y_end = y_end - (extra_y_rows) + y_end = y_end - extra_y_rows } if y_end > (*VP8Io)(unsafe.Pointer(io)).crop_bottom { y_end = (*VP8Io)(unsafe.Pointer(io)).crop_bottom // make sure we don't overflow on last row. } // If dec->alpha_data_ is not NULL, we have some alpha plane present. - (*VP8Io)(unsafe.Pointer(io)).a = (uintptr(0)) - if ((*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_ != (uintptr(0))) && (y_start < y_end) { - (*VP8Io)(unsafe.Pointer(io)).a = VP8DecompressAlphaRows(tls, dec, io, y_start, (y_end - y_start)) - if (*VP8Io)(unsafe.Pointer(io)).a == (uintptr(0)) { + (*VP8Io)(unsafe.Pointer(io)).a = uintptr(0) + if (*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_ != uintptr(0) && y_start < y_end { + (*VP8Io)(unsafe.Pointer(io)).a = VP8DecompressAlphaRows(tls, dec, io, y_start, y_end-y_start) + if (*VP8Io)(unsafe.Pointer(io)).a == uintptr(0) { return VP8SetError(tls, dec, VP8_STATUS_BITSTREAM_ERROR, - (ts) /* "Could not decode..." */) + ts) } } if y_start < (*VP8Io)(unsafe.Pointer(io)).crop_top { - var delta_y int32 = ((*VP8Io)(unsafe.Pointer(io)).crop_top - y_start) + var delta_y int32 = (*VP8Io)(unsafe.Pointer(io)).crop_top - y_start y_start = (*VP8Io)(unsafe.Pointer(io)).crop_top - *(*uintptr)(unsafe.Pointer((io + 24 /* &.y */))) += (uintptr((*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_ * delta_y)) - *(*uintptr)(unsafe.Pointer((io + 32 /* &.u */))) += (uintptr((*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ * (delta_y >> 1))) - *(*uintptr)(unsafe.Pointer((io + 40 /* &.v */))) += (uintptr((*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ * (delta_y >> 1))) - if (*VP8Io)(unsafe.Pointer(io)).a != (uintptr(0)) { - *(*uintptr)(unsafe.Pointer((io + 152 /* &.a */))) += (uintptr((*VP8Io)(unsafe.Pointer(io)).width * delta_y)) + *(*uintptr)(unsafe.Pointer(io + 24)) += uintptr((*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_ * delta_y) + *(*uintptr)(unsafe.Pointer(io + 32)) += uintptr((*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ * (delta_y >> 1)) + *(*uintptr)(unsafe.Pointer(io + 40)) += uintptr((*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ * (delta_y >> 1)) + if (*VP8Io)(unsafe.Pointer(io)).a != uintptr(0) { + *(*uintptr)(unsafe.Pointer(io + 152)) += uintptr((*VP8Io)(unsafe.Pointer(io)).width * delta_y) } } if y_start < y_end { - *(*uintptr)(unsafe.Pointer((io + 24 /* &.y */))) += (uintptr((*VP8Io)(unsafe.Pointer(io)).crop_left)) - *(*uintptr)(unsafe.Pointer((io + 32 /* &.u */))) += (uintptr((*VP8Io)(unsafe.Pointer(io)).crop_left >> 1)) - *(*uintptr)(unsafe.Pointer((io + 40 /* &.v */))) += (uintptr((*VP8Io)(unsafe.Pointer(io)).crop_left >> 1)) - if (*VP8Io)(unsafe.Pointer(io)).a != (uintptr(0)) { - *(*uintptr)(unsafe.Pointer((io + 152 /* &.a */))) += (uintptr((*VP8Io)(unsafe.Pointer(io)).crop_left)) - } - (*VP8Io)(unsafe.Pointer(io)).mb_y = (y_start - (*VP8Io)(unsafe.Pointer(io)).crop_top) - (*VP8Io)(unsafe.Pointer(io)).mb_w = ((*VP8Io)(unsafe.Pointer(io)).crop_right - (*VP8Io)(unsafe.Pointer(io)).crop_left) - (*VP8Io)(unsafe.Pointer(io)).mb_h = (y_end - y_start) + *(*uintptr)(unsafe.Pointer(io + 24)) += uintptr((*VP8Io)(unsafe.Pointer(io)).crop_left) + *(*uintptr)(unsafe.Pointer(io + 32)) += uintptr((*VP8Io)(unsafe.Pointer(io)).crop_left >> 1) + *(*uintptr)(unsafe.Pointer(io + 40)) += uintptr((*VP8Io)(unsafe.Pointer(io)).crop_left >> 1) + if (*VP8Io)(unsafe.Pointer(io)).a != uintptr(0) { + *(*uintptr)(unsafe.Pointer(io + 152)) += uintptr((*VP8Io)(unsafe.Pointer(io)).crop_left) + } + (*VP8Io)(unsafe.Pointer(io)).mb_y = y_start - (*VP8Io)(unsafe.Pointer(io)).crop_top + (*VP8Io)(unsafe.Pointer(io)).mb_w = (*VP8Io)(unsafe.Pointer(io)).crop_right - (*VP8Io)(unsafe.Pointer(io)).crop_left + (*VP8Io)(unsafe.Pointer(io)).mb_h = y_end - y_start ok = (*struct { f func(*libc.TLS, uintptr) int32 })(unsafe.Pointer(&struct{ uintptr }{(*VP8Io)(unsafe.Pointer(io)).put})).f(tls, io) } } // rotate top samples if needed - if (cache_id + 1) == (*VP8Decoder)(unsafe.Pointer(dec)).num_caches_ { + if cache_id+1 == (*VP8Decoder)(unsafe.Pointer(dec)).num_caches_ { if !(is_last_row != 0) { - libc.Xmemcpy(tls, ((*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ - uintptr(ysize)), (ydst + uintptr((16 * (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_))), uint64(ysize)) - libc.Xmemcpy(tls, ((*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ - uintptr(uvsize)), (udst + uintptr((8 * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_))), uint64(uvsize)) - libc.Xmemcpy(tls, ((*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ - uintptr(uvsize)), (vdst + uintptr((8 * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_))), uint64(uvsize)) + libc.Xmemcpy(tls, (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_-uintptr(ysize), ydst+uintptr(16*(*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_), uint64(ysize)) + libc.Xmemcpy(tls, (*VP8Decoder)(unsafe.Pointer(dec)).cache_u_-uintptr(uvsize), udst+uintptr(8*(*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_), uint64(uvsize)) + libc.Xmemcpy(tls, (*VP8Decoder)(unsafe.Pointer(dec)).cache_v_-uintptr(uvsize), vdst+uintptr(8*(*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_), uint64(uvsize)) } } @@ -6042,8 +5782,8 @@ func FinishRow(tls *libc.TLS, arg1 uintptr, arg2 uintptr) int32 { /* frame_dec.c func VP8ProcessRow(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* frame_dec.c:501:5: */ var ok int32 = 1 - var ctx uintptr = (dec + 216 /* &.thread_ctx_ */) - var filter_row int32 = (libc.Bool32((((*VP8Decoder)(unsafe.Pointer(dec)).filter_type_ > 0) && ((*VP8Decoder)(unsafe.Pointer(dec)).mb_y_ >= (*VP8Decoder)(unsafe.Pointer(dec)).tl_mb_y_)) && ((*VP8Decoder)(unsafe.Pointer(dec)).mb_y_ <= (*VP8Decoder)(unsafe.Pointer(dec)).br_mb_y_))) + var ctx uintptr = dec + 216 + var filter_row int32 = libc.Bool32((*VP8Decoder)(unsafe.Pointer(dec)).filter_type_ > 0 && (*VP8Decoder)(unsafe.Pointer(dec)).mb_y_ >= (*VP8Decoder)(unsafe.Pointer(dec)).tl_mb_y_ && (*VP8Decoder)(unsafe.Pointer(dec)).mb_y_ <= (*VP8Decoder)(unsafe.Pointer(dec)).br_mb_y_) if (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ == 0 { // ctx->id_ and ctx->f_info_ are already set (*VP8ThreadContext)(unsafe.Pointer(ctx)).mb_y_ = (*VP8Decoder)(unsafe.Pointer(dec)).mb_y_ @@ -6051,11 +5791,11 @@ func VP8ProcessRow(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* frame_dec. ReconstructRow(tls, dec, ctx) ok = FinishRow(tls, dec, io) } else { - var worker uintptr = (dec + 152 /* &.worker_ */) + var worker uintptr = dec + 152 // Finish previous job *before* updating context - ok = ok & ((*struct { + ok = ok & (*struct { f func(*libc.TLS, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Sync})).f(tls, worker)) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Sync})).f(tls, worker) if ok != 0 { // spawn a new deblocking/output job (*VP8ThreadContext)(unsafe.Pointer(ctx)).io_ = *(*VP8Io)(unsafe.Pointer(io)) @@ -6091,10 +5831,10 @@ func VP8ProcessRow(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* frame_dec. func VP8EnterCritical(tls *libc.TLS, dec uintptr, io uintptr) VP8StatusCode { /* frame_dec.c:549:15: */ // Call setup() first. This may trigger additional decoding features on 'io'. // Note: Afterward, we must call teardown() no matter what. - if ((*VP8Io)(unsafe.Pointer(io)).setup != (uintptr(0))) && !((*struct { + if (*VP8Io)(unsafe.Pointer(io)).setup != uintptr(0) && !((*struct { f func(*libc.TLS, uintptr) int32 })(unsafe.Pointer(&struct{ uintptr }{(*VP8Io)(unsafe.Pointer(io)).setup})).f(tls, io) != 0) { - VP8SetError(tls, dec, VP8_STATUS_USER_ABORT, (ts + 29) /* "Frame setup fail..." */) + VP8SetError(tls, dec, VP8_STATUS_USER_ABORT, ts+29) return (*VP8Decoder)(unsafe.Pointer(dec)).status_ } @@ -6123,8 +5863,8 @@ func VP8EnterCritical(tls *libc.TLS, dec uintptr, io uintptr) VP8StatusCode { /* // We include 'extra_pixels' on the other side of the boundary, since // vertical or horizontal filtering of the previous macroblock can // modify some abutting pixels. - (*VP8Decoder)(unsafe.Pointer(dec)).tl_mb_x_ = (((*VP8Io)(unsafe.Pointer(io)).crop_left - extra_pixels) >> 4) - (*VP8Decoder)(unsafe.Pointer(dec)).tl_mb_y_ = (((*VP8Io)(unsafe.Pointer(io)).crop_top - extra_pixels) >> 4) + (*VP8Decoder)(unsafe.Pointer(dec)).tl_mb_x_ = ((*VP8Io)(unsafe.Pointer(io)).crop_left - extra_pixels) >> 4 + (*VP8Decoder)(unsafe.Pointer(dec)).tl_mb_y_ = ((*VP8Io)(unsafe.Pointer(io)).crop_top - extra_pixels) >> 4 if (*VP8Decoder)(unsafe.Pointer(dec)).tl_mb_x_ < 0 { (*VP8Decoder)(unsafe.Pointer(dec)).tl_mb_x_ = 0 } @@ -6133,8 +5873,8 @@ func VP8EnterCritical(tls *libc.TLS, dec uintptr, io uintptr) VP8StatusCode { /* } } // We need some 'extra' pixels on the right/bottom. - (*VP8Decoder)(unsafe.Pointer(dec)).br_mb_y_ = ((((*VP8Io)(unsafe.Pointer(io)).crop_bottom + 15) + extra_pixels) >> 4) - (*VP8Decoder)(unsafe.Pointer(dec)).br_mb_x_ = ((((*VP8Io)(unsafe.Pointer(io)).crop_right + 15) + extra_pixels) >> 4) + (*VP8Decoder)(unsafe.Pointer(dec)).br_mb_y_ = ((*VP8Io)(unsafe.Pointer(io)).crop_bottom + 15 + extra_pixels) >> 4 + (*VP8Decoder)(unsafe.Pointer(dec)).br_mb_x_ = ((*VP8Io)(unsafe.Pointer(io)).crop_right + 15 + extra_pixels) >> 4 if (*VP8Decoder)(unsafe.Pointer(dec)).br_mb_x_ > (*VP8Decoder)(unsafe.Pointer(dec)).mb_w_ { (*VP8Decoder)(unsafe.Pointer(dec)).br_mb_x_ = (*VP8Decoder)(unsafe.Pointer(dec)).mb_w_ } @@ -6152,10 +5892,10 @@ func VP8ExitCritical(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* frame_de if (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ > 0 { ok = (*struct { f func(*libc.TLS, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Sync})).f(tls, (dec + 152 /* &.worker_ */)) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Sync})).f(tls, dec+152 /* &.worker_ */) } - if (*VP8Io)(unsafe.Pointer(io)).teardown != (uintptr(0)) { + if (*VP8Io)(unsafe.Pointer(io)).teardown != uintptr(0) { (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*VP8Io)(unsafe.Pointer(io)).teardown})).f(tls, io) } return ok @@ -6189,15 +5929,15 @@ func VP8ExitCritical(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* frame_de func InitThreadContext(tls *libc.TLS, dec uintptr) int32 { /* frame_dec.c:641:12: */ (*VP8Decoder)(unsafe.Pointer(dec)).cache_id_ = 0 if (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ > 0 { - var worker uintptr = (dec + 152 /* &.worker_ */) + var worker uintptr = dec + 152 if !((*struct { f func(*libc.TLS, uintptr) int32 })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Reset})).f(tls, worker) != 0) { return VP8SetError(tls, dec, VP8_STATUS_OUT_OF_MEMORY, - (ts + 48) /* "thread initializ..." */) + ts+48) } (*WebPWorker)(unsafe.Pointer(worker)).data1 = dec - (*WebPWorker)(unsafe.Pointer(worker)).data2 = ((dec + 216 /* &.thread_ctx_ */) + 32 /* &.io_ */) + (*WebPWorker)(unsafe.Pointer(worker)).data2 = dec + 216 + 32 (*WebPWorker)(unsafe.Pointer(worker)).hook = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) int32 }{FinishRow})) @@ -6205,7 +5945,7 @@ func InitThreadContext(tls *libc.TLS, dec uintptr) int32 { /* frame_dec.c:641:12 if (*VP8Decoder)(unsafe.Pointer(dec)).filter_type_ > 0 { return 3 } - return (3 - 1) + return 3 - 1 }() } else { (*VP8Decoder)(unsafe.Pointer(dec)).num_caches_ = 1 @@ -6214,7 +5954,7 @@ func InitThreadContext(tls *libc.TLS, dec uintptr) int32 { /* frame_dec.c:641:12 } func VP8GetThreadMethod(tls *libc.TLS, options uintptr, headers uintptr, width int32, height int32) int32 { /* frame_dec.c:660:5: */ - if (options == (uintptr(0))) || ((*WebPDecoderOptions)(unsafe.Pointer(options)).use_threads == 0) { + if options == uintptr(0) || (*WebPDecoderOptions)(unsafe.Pointer(options)).use_threads == 0 { return 0 } _ = headers @@ -6231,41 +5971,41 @@ func AllocateMemory(tls *libc.TLS, dec uintptr) int32 { /* frame_dec.c:682:12: * var num_caches int32 = (*VP8Decoder)(unsafe.Pointer(dec)).num_caches_ var mb_w int32 = (*VP8Decoder)(unsafe.Pointer(dec)).mb_w_ // Note: we use 'size_t' when there's no overflow risk, uint64_t otherwise. - var intra_pred_mode_size size_t = ((uint64(4 * mb_w)) * uint64(unsafe.Sizeof(uint8_t(0)))) - var top_size size_t = (uint64(unsafe.Sizeof(VP8TopSamples{})) * uint64(mb_w)) - var mb_info_size size_t = ((uint64(mb_w + 1)) * uint64(unsafe.Sizeof(VP8MB{}))) + var intra_pred_mode_size size_t = uint64(4*mb_w) * uint64(unsafe.Sizeof(uint8_t(0))) + var top_size size_t = uint64(unsafe.Sizeof(VP8TopSamples{})) * uint64(mb_w) + var mb_info_size size_t = uint64(mb_w+1) * uint64(unsafe.Sizeof(VP8MB{})) var f_info_size size_t if (*VP8Decoder)(unsafe.Pointer(dec)).filter_type_ > 0 { - f_info_size = ((uint64(mb_w * (func() int32 { + f_info_size = uint64(mb_w*func() int32 { if (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ > 0 { return 2 } return 1 - }()))) * uint64(unsafe.Sizeof(VP8FInfo{}))) + }()) * uint64(unsafe.Sizeof(VP8FInfo{})) } else { f_info_size = uint64(0) } - var yuv_size size_t = ((uint64((32 * 17) + (32 * 9))) * uint64(unsafe.Sizeof(uint8_t(0)))) - var mb_data_size size_t = ((uint64((func() int32 { + var yuv_size size_t = uint64(32*17+32*9) * uint64(unsafe.Sizeof(uint8_t(0))) + var mb_data_size size_t = uint64(func() int32 { if (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ == 2 { return 2 } return 1 - }()) * mb_w)) * uint64(unsafe.Sizeof(VP8MBData{}))) - var cache_height size_t = (size_t((((16 * num_caches) + - int32(kFilterExtraRows[(*VP8Decoder)(unsafe.Pointer(dec)).filter_type_])) * 3) / 2)) - var cache_size size_t = (top_size * cache_height) + }()*mb_w) * uint64(unsafe.Sizeof(VP8MBData{})) + var cache_height size_t = size_t((16*num_caches + + int32(kFilterExtraRows[(*VP8Decoder)(unsafe.Pointer(dec)).filter_type_])) * 3 / 2) + var cache_size size_t = top_size * cache_height // alpha_size is the only one that scales as width x height. var alpha_size uint64_t - if (*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_ != (uintptr(0)) { - alpha_size = (uint64_t((*VP8Decoder)(unsafe.Pointer(dec)).pic_hdr_.width_) * uint64_t((*VP8Decoder)(unsafe.Pointer(dec)).pic_hdr_.height_)) + if (*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_ != uintptr(0) { + alpha_size = uint64_t((*VP8Decoder)(unsafe.Pointer(dec)).pic_hdr_.width_) * uint64_t((*VP8Decoder)(unsafe.Pointer(dec)).pic_hdr_.height_) } else { alpha_size = 0 } - var needed uint64_t = ((((((((intra_pred_mode_size + - top_size) + mb_info_size) + f_info_size) + - yuv_size) + mb_data_size) + - cache_size) + alpha_size) + uint64(31)) + var needed uint64_t = intra_pred_mode_size + + top_size + mb_info_size + f_info_size + + yuv_size + mb_data_size + + cache_size + alpha_size + uint64(31) var mem uintptr if !(CheckSizeOverflow(tls, needed) != 0) { @@ -6275,9 +6015,9 @@ func AllocateMemory(tls *libc.TLS, dec uintptr) int32 { /* frame_dec.c:682:12: * WebPSafeFree(tls, (*VP8Decoder)(unsafe.Pointer(dec)).mem_) (*VP8Decoder)(unsafe.Pointer(dec)).mem_size_ = uint64(0) (*VP8Decoder)(unsafe.Pointer(dec)).mem_ = WebPSafeMalloc(tls, needed, uint64(unsafe.Sizeof(uint8_t(0)))) - if (*VP8Decoder)(unsafe.Pointer(dec)).mem_ == (uintptr(0)) { + if (*VP8Decoder)(unsafe.Pointer(dec)).mem_ == uintptr(0) { return VP8SetError(tls, dec, VP8_STATUS_OUT_OF_MEMORY, - (ts + 78) /* "no memory during..." */) + ts+78) } // down-cast is ok, thanks to WebPSafeMalloc() above. (*VP8Decoder)(unsafe.Pointer(dec)).mem_size_ = needed @@ -6290,26 +6030,26 @@ func AllocateMemory(tls *libc.TLS, dec uintptr) int32 { /* frame_dec.c:682:12: * (*VP8Decoder)(unsafe.Pointer(dec)).yuv_t_ = mem mem += uintptr(top_size) - (*VP8Decoder)(unsafe.Pointer(dec)).mb_info_ = ((mem) + uintptr(1)*2) + (*VP8Decoder)(unsafe.Pointer(dec)).mb_info_ = mem + uintptr(1)*2 mem += uintptr(mb_info_size) (*VP8Decoder)(unsafe.Pointer(dec)).f_info_ = func() uintptr { if f_info_size != 0 { return mem } - return (uintptr(0)) + return uintptr(0) }() mem += uintptr(f_info_size) (*VP8Decoder)(unsafe.Pointer(dec)).thread_ctx_.id_ = 0 (*VP8Decoder)(unsafe.Pointer(dec)).thread_ctx_.f_info_ = (*VP8Decoder)(unsafe.Pointer(dec)).f_info_ - if ((*VP8Decoder)(unsafe.Pointer(dec)).filter_type_ > 0) && ((*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ > 0) { + if (*VP8Decoder)(unsafe.Pointer(dec)).filter_type_ > 0 && (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ > 0 { // secondary cache line. The deblocking process need to make use of the // filtering strength from previous macroblock row, while the new ones // are being decoded in parallel. We'll just swap the pointers. - *(*uintptr)(unsafe.Pointer(((dec + 216 /* &.thread_ctx_ */) + 16 /* &.f_info_ */))) += (uintptr(mb_w)) * 4 + *(*uintptr)(unsafe.Pointer(dec + 216 + 16)) += uintptr(mb_w) * 4 } - mem = (uintptr((uintptr_t((mem)) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) + mem = uintptr((uintptr_t(mem) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) (*VP8Decoder)(unsafe.Pointer(dec)).yuv_b_ = mem mem += uintptr(yuv_size) @@ -6317,21 +6057,21 @@ func AllocateMemory(tls *libc.TLS, dec uintptr) int32 { /* frame_dec.c:682:12: * (*VP8Decoder)(unsafe.Pointer(dec)).mb_data_ = mem (*VP8Decoder)(unsafe.Pointer(dec)).thread_ctx_.mb_data_ = mem if (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ == 2 { - *(*uintptr)(unsafe.Pointer(((dec + 216 /* &.thread_ctx_ */) + 24 /* &.mb_data_ */))) += (uintptr(mb_w)) * 800 + *(*uintptr)(unsafe.Pointer(dec + 216 + 24)) += uintptr(mb_w) * 800 } mem += uintptr(mb_data_size) - (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_ = (16 * mb_w) - (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ = (8 * mb_w) + (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_ = 16 * mb_w + (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ = 8 * mb_w { var extra_rows int32 = int32(kFilterExtraRows[(*VP8Decoder)(unsafe.Pointer(dec)).filter_type_]) - var extra_y int32 = (extra_rows * (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_) - var extra_uv int32 = ((extra_rows / 2) * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_) - (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ = (mem + uintptr(extra_y)) - (*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ + - uintptr(((16 * num_caches) * (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_))) + uintptr(extra_uv)) - (*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ = (((*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ + - uintptr(((8 * num_caches) * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_))) + uintptr(extra_uv)) + var extra_y int32 = extra_rows * (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_ + var extra_uv int32 = extra_rows / 2 * (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ + (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ = mem + uintptr(extra_y) + (*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ = (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_ + + uintptr(16*num_caches*(*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_) + uintptr(extra_uv) + (*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ = (*VP8Decoder)(unsafe.Pointer(dec)).cache_u_ + + uintptr(8*num_caches*(*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_) + uintptr(extra_uv) (*VP8Decoder)(unsafe.Pointer(dec)).cache_id_ = 0 } @@ -6342,12 +6082,12 @@ func AllocateMemory(tls *libc.TLS, dec uintptr) int32 { /* frame_dec.c:682:12: * if alpha_size != 0 { return mem } - return (uintptr(0)) + return uintptr(0) }() mem += uintptr(alpha_size) // note: left/top-info is initialized once for all. - libc.Xmemset(tls, ((*VP8Decoder)(unsafe.Pointer(dec)).mb_info_ - uintptr(1)*2), 0, mb_info_size) + libc.Xmemset(tls, (*VP8Decoder)(unsafe.Pointer(dec)).mb_info_-uintptr(1)*2, 0, mb_info_size) VP8InitScanline(tls, dec) // initialize left too. // initialize top @@ -6364,7 +6104,7 @@ func InitIo(tls *libc.TLS, dec uintptr, io uintptr) { /* frame_dec.c:784:13: */ (*VP8Io)(unsafe.Pointer(io)).v = (*VP8Decoder)(unsafe.Pointer(dec)).cache_v_ (*VP8Io)(unsafe.Pointer(io)).y_stride = (*VP8Decoder)(unsafe.Pointer(dec)).cache_y_stride_ (*VP8Io)(unsafe.Pointer(io)).uv_stride = (*VP8Decoder)(unsafe.Pointer(dec)).cache_uv_stride_ - (*VP8Io)(unsafe.Pointer(io)).a = (uintptr(0)) + (*VP8Io)(unsafe.Pointer(io)).a = uintptr(0) } func VP8InitFrame(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* frame_dec.c:795:5: */ @@ -6424,7 +6164,7 @@ type MBContext = struct { // MemBuffer: incoming data handling func MemDataSize(tls *libc.TLS, mem uintptr) size_t { /* idec_dec.c:91:27: */ - return ((*MemBuffer)(unsafe.Pointer(mem)).end_ - (*MemBuffer)(unsafe.Pointer(mem)).start_) + return (*MemBuffer)(unsafe.Pointer(mem)).end_ - (*MemBuffer)(unsafe.Pointer(mem)).start_ } // Check if we need to preserve the compressed alpha data, as it may not have @@ -6440,50 +6180,50 @@ func NeedCompressedAlpha(tls *libc.TLS, idec uintptr) int32 { /* idec_dec.c:97:1 } else { var dec uintptr = (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ // Must be true as idec->state_ != STATE_WEBP_HEADER. - return (libc.Bool32(((*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_ != (uintptr(0))) && !((*VP8Decoder)(unsafe.Pointer(dec)).is_alpha_decoded_ != 0))) + return libc.Bool32((*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_ != uintptr(0) && !((*VP8Decoder)(unsafe.Pointer(dec)).is_alpha_decoded_ != 0)) } return int32(0) } func DoRemap(tls *libc.TLS, idec uintptr, offset ptrdiff_t) { /* idec_dec.c:112:13: */ - var mem uintptr = (idec + 296 /* &.mem_ */) - var new_base uintptr = ((*MemBuffer)(unsafe.Pointer(mem)).buf_ + uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_)) + var mem uintptr = idec + 296 + var new_base uintptr = (*MemBuffer)(unsafe.Pointer(mem)).buf_ + uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_) // note: for VP8, setting up idec->io_ is only really needed at the beginning // of the decoding, till partition #0 is complete. (*WebPIDecoder)(unsafe.Pointer(idec)).io_.data = new_base (*WebPIDecoder)(unsafe.Pointer(idec)).io_.data_size = MemDataSize(tls, mem) - if (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ != (uintptr(0)) { + if (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ != uintptr(0) { if !((*WebPIDecoder)(unsafe.Pointer(idec)).is_lossless_ != 0) { var dec uintptr = (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ var last_part uint32_t = (*VP8Decoder)(unsafe.Pointer(dec)).num_parts_minus_one_ if offset != int64(0) { var p uint32_t for p = uint32_t(0); p <= last_part; p++ { - VP8RemapBitReader(tls, ((dec + 440 /* &.parts_ */) + uintptr(p)*48), offset) + VP8RemapBitReader(tls, dec+440+uintptr(p)*48, offset) } // Remap partition #0 data pointer to new offset, but only in MAP // mode (in APPEND mode, partition #0 is copied into a fixed memory). if (*MemBuffer)(unsafe.Pointer(mem)).mode_ == MEM_MODE_MAP { - VP8RemapBitReader(tls, (dec + 16 /* &.br_ */), offset) + VP8RemapBitReader(tls, dec+16, offset) } } { - var last_start uintptr = (*VP8BitReader)(unsafe.Pointer((dec + 440 /* &.parts_ */) + uintptr(last_part)*48)).buf_ - VP8BitReaderSetBuffer(tls, ((dec + 440 /* &.parts_ */) + uintptr(last_part)*48), last_start, - (uint64(((int64((*MemBuffer)(unsafe.Pointer(mem)).buf_ + uintptr((*MemBuffer)(unsafe.Pointer(mem)).end_))) - int64(last_start)) / 1))) + var last_start uintptr = (*VP8BitReader)(unsafe.Pointer(dec + 440 + uintptr(last_part)*48)).buf_ + VP8BitReaderSetBuffer(tls, dec+440+uintptr(last_part)*48, last_start, + uint64((int64((*MemBuffer)(unsafe.Pointer(mem)).buf_+uintptr((*MemBuffer)(unsafe.Pointer(mem)).end_))-int64(last_start))/1)) } if NeedCompressedAlpha(tls, idec) != 0 { var alph_dec uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).alph_dec_ - *(*uintptr)(unsafe.Pointer((dec + 2968 /* &.alpha_data_ */))) += (uintptr(offset)) - if (alph_dec != (uintptr(0))) && ((*ALPHDecoder)(unsafe.Pointer(alph_dec)).vp8l_dec_ != (uintptr(0))) { + *(*uintptr)(unsafe.Pointer(dec + 2968)) += uintptr(offset) + if alph_dec != uintptr(0) && (*ALPHDecoder)(unsafe.Pointer(alph_dec)).vp8l_dec_ != uintptr(0) { if (*ALPHDecoder)(unsafe.Pointer(alph_dec)).method_ == 1 { var alph_vp8l_dec uintptr = (*ALPHDecoder)(unsafe.Pointer(alph_dec)).vp8l_dec_ - VP8LBitReaderSetBuffer(tls, (alph_vp8l_dec + 40 /* &.br_ */), - ((*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_ + uintptr(1)), - ((*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_size_ - uint64(1))) + VP8LBitReaderSetBuffer(tls, alph_vp8l_dec+40, + (*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_+uintptr(1), + (*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_size_-uint64(1)) } else { // alph_dec->method_ == ALPHA_NO_COMPRESSION // Nothing special to do in this case. } @@ -6491,7 +6231,7 @@ func DoRemap(tls *libc.TLS, idec uintptr, offset ptrdiff_t) { /* idec_dec.c:112: } } else { // Resize lossless bitreader var dec uintptr = (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ - VP8LBitReaderSetBuffer(tls, (dec + 40 /* &.br_ */), new_base, MemDataSize(tls, mem)) + VP8LBitReaderSetBuffer(tls, dec+40, new_base, MemDataSize(tls, mem)) } } } @@ -6500,13 +6240,13 @@ func DoRemap(tls *libc.TLS, idec uintptr, offset ptrdiff_t) { /* idec_dec.c:112: // size if required and also updates VP8BitReader's if new memory is allocated. func AppendToMemBuffer(tls *libc.TLS, idec uintptr, data uintptr, data_size size_t) int32 { /* idec_dec.c:164:12: */ var dec uintptr = (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ - var mem uintptr = (idec + 296 /* &.mem_ */) + var mem uintptr = idec + 296 var need_compressed_alpha int32 = NeedCompressedAlpha(tls, idec) var old_start uintptr - if (*MemBuffer)(unsafe.Pointer(mem)).buf_ == (uintptr(0)) { - old_start = (uintptr(0)) + if (*MemBuffer)(unsafe.Pointer(mem)).buf_ == uintptr(0) { + old_start = uintptr(0) } else { - old_start = ((*MemBuffer)(unsafe.Pointer(mem)).buf_ + uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_)) + old_start = (*MemBuffer)(unsafe.Pointer(mem)).buf_ + uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_) } var old_base uintptr if need_compressed_alpha != 0 { @@ -6515,22 +6255,22 @@ func AppendToMemBuffer(tls *libc.TLS, idec uintptr, data uintptr, data_size size old_base = old_start } - if data_size > (uint64((libc.CplUint32(0) - uint32(8)) - uint32(1))) { + if data_size > uint64(libc.CplUint32(0)-uint32(8)-uint32(1)) { // security safeguard: trying to allocate more than what the format // allows for a chunk should be considered a smoke smell. return 0 } - if ((*MemBuffer)(unsafe.Pointer(mem)).end_ + data_size) > (*MemBuffer)(unsafe.Pointer(mem)).buf_size_ { // Need some free memory - var new_mem_start size_t = (size_t((int64(old_start) - int64(old_base)) / 1)) - var current_size size_t = (MemDataSize(tls, mem) + new_mem_start) - var new_size uint64_t = (current_size + data_size) - var extra_size uint64_t = (((new_size + uint64(4096)) - uint64(1)) & libc.Uint64FromInt32(libc.CplInt32((4096 - 1)))) + if (*MemBuffer)(unsafe.Pointer(mem)).end_+data_size > (*MemBuffer)(unsafe.Pointer(mem)).buf_size_ { // Need some free memory + var new_mem_start size_t = size_t((int64(old_start) - int64(old_base)) / 1) + var current_size size_t = MemDataSize(tls, mem) + new_mem_start + var new_size uint64_t = current_size + data_size + var extra_size uint64_t = (new_size + uint64(4096) - uint64(1)) & libc.Uint64FromInt32(libc.CplInt32(4096-1)) var new_buf uintptr = WebPSafeMalloc(tls, extra_size, uint64(unsafe.Sizeof(uint8_t(0)))) - if new_buf == (uintptr(0)) { + if new_buf == uintptr(0) { return 0 } - if old_base != (uintptr(0)) { + if old_base != uintptr(0) { libc.Xmemcpy(tls, new_buf, old_base, current_size) } WebPSafeFree(tls, (*MemBuffer)(unsafe.Pointer(mem)).buf_) @@ -6540,21 +6280,21 @@ func AppendToMemBuffer(tls *libc.TLS, idec uintptr, data uintptr, data_size size (*MemBuffer)(unsafe.Pointer(mem)).end_ = current_size } - libc.Xmemcpy(tls, ((*MemBuffer)(unsafe.Pointer(mem)).buf_ + uintptr((*MemBuffer)(unsafe.Pointer(mem)).end_)), data, data_size) - *(*size_t)(unsafe.Pointer((mem + 16 /* &.end_ */))) += (data_size) + libc.Xmemcpy(tls, (*MemBuffer)(unsafe.Pointer(mem)).buf_+uintptr((*MemBuffer)(unsafe.Pointer(mem)).end_), data, data_size) + *(*size_t)(unsafe.Pointer(mem + 16)) += data_size - DoRemap(tls, idec, (((int64((*MemBuffer)(unsafe.Pointer(mem)).buf_ + uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_))) - int64(old_start)) / 1)) + DoRemap(tls, idec, (int64((*MemBuffer)(unsafe.Pointer(mem)).buf_+uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_))-int64(old_start))/1) return 1 } func RemapMemBuffer(tls *libc.TLS, idec uintptr, data uintptr, data_size size_t) int32 { /* idec_dec.c:206:12: */ - var mem uintptr = (idec + 296 /* &.mem_ */) + var mem uintptr = idec + 296 var old_buf uintptr = (*MemBuffer)(unsafe.Pointer(mem)).buf_ var old_start uintptr - if old_buf == (uintptr(0)) { - old_start = (uintptr(0)) + if old_buf == uintptr(0) { + old_start = uintptr(0) } else { - old_start = (old_buf + uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_)) + old_start = old_buf + uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_) } if data_size < (*MemBuffer)(unsafe.Pointer(mem)).buf_size_ { @@ -6562,17 +6302,17 @@ func RemapMemBuffer(tls *libc.TLS, idec uintptr, data uintptr, data_size size_t) } // can't remap to a shorter buffer! (*MemBuffer)(unsafe.Pointer(mem)).buf_ = data - (*MemBuffer)(unsafe.Pointer(mem)).end_ = libc.AssignPtrUint64((mem + 24 /* &.buf_size_ */), data_size) + (*MemBuffer)(unsafe.Pointer(mem)).end_ = libc.AssignPtrUint64(mem+24, data_size) - DoRemap(tls, idec, (((int64((*MemBuffer)(unsafe.Pointer(mem)).buf_ + uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_))) - int64(old_start)) / 1)) + DoRemap(tls, idec, (int64((*MemBuffer)(unsafe.Pointer(mem)).buf_+uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_))-int64(old_start))/1) return 1 } func InitMemBuffer(tls *libc.TLS, mem uintptr) { /* idec_dec.c:224:13: */ (*MemBuffer)(unsafe.Pointer(mem)).mode_ = MEM_MODE_NONE - (*MemBuffer)(unsafe.Pointer(mem)).buf_ = (uintptr(0)) + (*MemBuffer)(unsafe.Pointer(mem)).buf_ = uintptr(0) (*MemBuffer)(unsafe.Pointer(mem)).buf_size_ = uint64(0) - (*MemBuffer)(unsafe.Pointer(mem)).part0_buf_ = (uintptr(0)) + (*MemBuffer)(unsafe.Pointer(mem)).part0_buf_ = uintptr(0) (*MemBuffer)(unsafe.Pointer(mem)).part0_size_ = uint64(0) } @@ -6600,17 +6340,17 @@ func FinishDecoding(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c:2 var output uintptr = (*WebPIDecoder)(unsafe.Pointer(idec)).params_.output (*WebPIDecoder)(unsafe.Pointer(idec)).state_ = STATE_DONE - if (options != (uintptr(0))) && ((*WebPDecoderOptions)(unsafe.Pointer(options)).flip != 0) { + if options != uintptr(0) && (*WebPDecoderOptions)(unsafe.Pointer(options)).flip != 0 { var status VP8StatusCode = WebPFlipBuffer(tls, output) if status != VP8_STATUS_OK { return status } } - if (*WebPIDecoder)(unsafe.Pointer(idec)).final_output_ != (uintptr(0)) { + if (*WebPIDecoder)(unsafe.Pointer(idec)).final_output_ != uintptr(0) { WebPCopyDecBufferPixels(tls, output, (*WebPIDecoder)(unsafe.Pointer(idec)).final_output_) // do the slow-copy - WebPFreeDecBuffer(tls, (idec + 352 /* &.output_ */)) + WebPFreeDecBuffer(tls, idec+352) *(*WebPDecBuffer)(unsafe.Pointer(output)) = *(*WebPDecBuffer)(unsafe.Pointer((*WebPIDecoder)(unsafe.Pointer(idec)).final_output_)) - (*WebPIDecoder)(unsafe.Pointer(idec)).final_output_ = (uintptr(0)) + (*WebPIDecoder)(unsafe.Pointer(idec)).final_output_ = uintptr(0) } return VP8_STATUS_OK } @@ -6635,18 +6375,18 @@ func RestoreContext(tls *libc.TLS, context uintptr, dec uintptr, token_br uintpt func IDecError(tls *libc.TLS, idec uintptr, error VP8StatusCode) VP8StatusCode { /* idec_dec.c:288:22: */ if (*WebPIDecoder)(unsafe.Pointer(idec)).state_ == STATE_VP8_DATA { // Synchronize the thread, clean-up and check for errors. - VP8ExitCritical(tls, (*WebPIDecoder)(unsafe.Pointer(idec)).dec_, (idec + 136 /* &.io_ */)) + VP8ExitCritical(tls, (*WebPIDecoder)(unsafe.Pointer(idec)).dec_, idec+136) } (*WebPIDecoder)(unsafe.Pointer(idec)).state_ = STATE_ERROR return error } func ChangeState(tls *libc.TLS, idec uintptr, new_state DecState, consumed_bytes size_t) { /* idec_dec.c:297:13: */ - var mem uintptr = (idec + 296 /* &.mem_ */) + var mem uintptr = idec + 296 (*WebPIDecoder)(unsafe.Pointer(idec)).state_ = new_state - *(*size_t)(unsafe.Pointer((mem + 8 /* &.start_ */))) += (consumed_bytes) + *(*size_t)(unsafe.Pointer(mem + 8)) += consumed_bytes - (*WebPIDecoder)(unsafe.Pointer(idec)).io_.data = ((*MemBuffer)(unsafe.Pointer(mem)).buf_ + uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_)) + (*WebPIDecoder)(unsafe.Pointer(idec)).io_.data = (*MemBuffer)(unsafe.Pointer(mem)).buf_ + uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_) (*WebPIDecoder)(unsafe.Pointer(idec)).io_.data_size = MemDataSize(tls, mem) } @@ -6655,8 +6395,8 @@ func DecodeWebPHeaders(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec. bp := tls.Alloc(72) defer tls.Free(72) - var mem uintptr = (idec + 296 /* &.mem_ */) - var data uintptr = ((*MemBuffer)(unsafe.Pointer(mem)).buf_ + uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_)) + var mem uintptr = idec + 296 + var data uintptr = (*MemBuffer)(unsafe.Pointer(mem)).buf_ + uintptr((*MemBuffer)(unsafe.Pointer(mem)).start_) var curr_size size_t = MemDataSize(tls, mem) var status VP8StatusCode // var headers WebPHeaderStructure at bp, 72 @@ -6664,7 +6404,7 @@ func DecodeWebPHeaders(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec. (*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).data = data (*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).data_size = curr_size (*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).have_all_data = 0 - status = WebPParseHeaders(tls, (bp) /* &headers */) + status = WebPParseHeaders(tls, bp) if status == VP8_STATUS_NOT_ENOUGH_DATA { return VP8_STATUS_SUSPENDED // We haven't found a VP8 chunk yet. } else if status != VP8_STATUS_OK { @@ -6675,7 +6415,7 @@ func DecodeWebPHeaders(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec. (*WebPIDecoder)(unsafe.Pointer(idec)).is_lossless_ = (*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).is_lossless if !((*WebPIDecoder)(unsafe.Pointer(idec)).is_lossless_ != 0) { var dec uintptr = VP8New(tls) - if dec == (uintptr(0)) { + if dec == uintptr(0) { return VP8_STATUS_OUT_OF_MEMORY } (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ = dec @@ -6684,7 +6424,7 @@ func DecodeWebPHeaders(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec. ChangeState(tls, idec, STATE_VP8_HEADER, (*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).offset) } else { var dec uintptr = VP8LNew(tls) - if dec == (uintptr(0)) { + if dec == uintptr(0) { return VP8_STATUS_OUT_OF_MEMORY } (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ = dec @@ -6697,8 +6437,8 @@ func DecodeVP8FrameHeader(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_d bp := tls.Alloc(8) defer tls.Free(8) - var data uintptr = ((*WebPIDecoder)(unsafe.Pointer(idec)).mem_.buf_ + uintptr((*WebPIDecoder)(unsafe.Pointer(idec)).mem_.start_)) - var curr_size size_t = MemDataSize(tls, (idec + 296 /* &.mem_ */)) + var data uintptr = (*WebPIDecoder)(unsafe.Pointer(idec)).mem_.buf_ + uintptr((*WebPIDecoder)(unsafe.Pointer(idec)).mem_.start_) + var curr_size size_t = MemDataSize(tls, idec+296) // var width int32 at bp, 4 // var height int32 at bp+4, 4 @@ -6709,12 +6449,12 @@ func DecodeVP8FrameHeader(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_d // Not enough data bytes to extract VP8 Frame Header. return VP8_STATUS_SUSPENDED } - if !(VP8GetInfo(tls, data, curr_size, (*WebPIDecoder)(unsafe.Pointer(idec)).chunk_size_, (bp) /* &width */, (bp+4) /* &height */) != 0) { + if !(VP8GetInfo(tls, data, curr_size, (*WebPIDecoder)(unsafe.Pointer(idec)).chunk_size_, bp, bp+4) != 0) { return IDecError(tls, idec, VP8_STATUS_BITSTREAM_ERROR) } - bits = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(data))) | (int32(*(*uint8_t)(unsafe.Pointer(data + 1))) << 8)) | (int32(*(*uint8_t)(unsafe.Pointer(data + 2))) << 16))) - (*WebPIDecoder)(unsafe.Pointer(idec)).mem_.part0_size_ = (size_t((bits >> 5) + uint32_t(10))) + bits = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(data))) | int32(*(*uint8_t)(unsafe.Pointer(data + 1)))<<8 | int32(*(*uint8_t)(unsafe.Pointer(data + 2)))<<16) + (*WebPIDecoder)(unsafe.Pointer(idec)).mem_.part0_size_ = size_t(bits>>5 + uint32_t(10)) (*WebPIDecoder)(unsafe.Pointer(idec)).io_.data = data (*WebPIDecoder)(unsafe.Pointer(idec)).io_.data_size = curr_size @@ -6725,9 +6465,9 @@ func DecodeVP8FrameHeader(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_d // Partition #0 func CopyParts0Data(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c:371:22: */ var dec uintptr = (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ - var br uintptr = (dec + 16 /* &.br_ */) - var part_size size_t = (size_t((int64((*VP8BitReader)(unsafe.Pointer(br)).buf_end_) - int64((*VP8BitReader)(unsafe.Pointer(br)).buf_)) / 1)) - var mem uintptr = (idec + 296 /* &.mem_ */) + var br uintptr = dec + 16 + var part_size size_t = size_t((int64((*VP8BitReader)(unsafe.Pointer(br)).buf_end_) - int64((*VP8BitReader)(unsafe.Pointer(br)).buf_)) / 1) + var mem uintptr = idec + 296 // the following is a format limitation, no need for runtime check: @@ -6737,7 +6477,7 @@ func CopyParts0Data(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c:3 if (*MemBuffer)(unsafe.Pointer(mem)).mode_ == MEM_MODE_APPEND { // We copy and grab ownership of the partition #0 data. var part0_buf uintptr = WebPSafeMalloc(tls, 1, part_size) - if part0_buf == (uintptr(0)) { + if part0_buf == uintptr(0) { return VP8_STATUS_OUT_OF_MEMORY } libc.Xmemcpy(tls, part0_buf, (*VP8BitReader)(unsafe.Pointer(br)).buf_, part_size) @@ -6746,24 +6486,24 @@ func CopyParts0Data(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c:3 } else { // Else: just keep pointers to the partition #0's data in dec_->br_. } - *(*size_t)(unsafe.Pointer((mem + 8 /* &.start_ */))) += (part_size) + *(*size_t)(unsafe.Pointer(mem + 8)) += part_size return VP8_STATUS_OK } func DecodePartition0(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c:399:22: */ var dec uintptr = (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ - var io uintptr = (idec + 136 /* &.io_ */) - var params uintptr = (idec + 8 /* &.params_ */) + var io uintptr = idec + 136 + var params uintptr = idec + 8 var output uintptr = (*WebPDecParams)(unsafe.Pointer(params)).output // Wait till we have enough data for the whole partition #0 - if MemDataSize(tls, (idec+296 /* &.mem_ */)) < (*WebPIDecoder)(unsafe.Pointer(idec)).mem_.part0_size_ { + if MemDataSize(tls, idec+296) < (*WebPIDecoder)(unsafe.Pointer(idec)).mem_.part0_size_ { return VP8_STATUS_SUSPENDED } if !(VP8GetHeaders(tls, dec, io) != 0) { var status VP8StatusCode = (*VP8Decoder)(unsafe.Pointer(dec)).status_ - if (status == VP8_STATUS_SUSPENDED) || (status == VP8_STATUS_NOT_ENOUGH_DATA) { + if status == VP8_STATUS_SUSPENDED || status == VP8_STATUS_NOT_ENOUGH_DATA { // treating NOT_ENOUGH_DATA as SUSPENDED state return VP8_STATUS_SUSPENDED } @@ -6777,7 +6517,7 @@ func DecodePartition0(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c return IDecError(tls, idec, (*VP8Decoder)(unsafe.Pointer(dec)).status_) } // This change must be done before calling VP8InitFrame() - (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ = VP8GetThreadMethod(tls, (*WebPDecParams)(unsafe.Pointer(params)).options, (uintptr(0)), + (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ = VP8GetThreadMethod(tls, (*WebPDecParams)(unsafe.Pointer(params)).options, uintptr(0), (*VP8Io)(unsafe.Pointer(io)).width, (*VP8Io)(unsafe.Pointer(io)).height) VP8InitDithering(tls, (*WebPDecParams)(unsafe.Pointer(params)).options, dec) @@ -6807,7 +6547,7 @@ func DecodeRemaining(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c: defer tls.Free(56) var dec uintptr = (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ - var io uintptr = (idec + 136 /* &.io_ */) + var io uintptr = idec + 136 // Make sure partition #0 has been read before, to set dec to ready_. if !((*VP8Decoder)(unsafe.Pointer(dec)).ready_ != 0) { @@ -6815,7 +6555,7 @@ func DecodeRemaining(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c: } for ; (*VP8Decoder)(unsafe.Pointer(dec)).mb_y_ < (*VP8Decoder)(unsafe.Pointer(dec)).mb_h_; (*VP8Decoder)(unsafe.Pointer(dec)).mb_y_++ { if (*WebPIDecoder)(unsafe.Pointer(idec)).last_mb_y_ != (*VP8Decoder)(unsafe.Pointer(dec)).mb_y_ { - if !(VP8ParseIntraModeRow(tls, (dec+16 /* &.br_ */), dec) != 0) { + if !(VP8ParseIntraModeRow(tls, dec+16, dec) != 0) { // note: normally, error shouldn't occur since we already have the whole // partition0 available here in DecodeRemaining(). Reaching EOF while // reading intra modes really means a BITSTREAM_ERROR. @@ -6824,29 +6564,29 @@ func DecodeRemaining(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c: (*WebPIDecoder)(unsafe.Pointer(idec)).last_mb_y_ = (*VP8Decoder)(unsafe.Pointer(dec)).mb_y_ } for ; (*VP8Decoder)(unsafe.Pointer(dec)).mb_x_ < (*VP8Decoder)(unsafe.Pointer(dec)).mb_w_; (*VP8Decoder)(unsafe.Pointer(dec)).mb_x_++ { - var token_br uintptr = ((dec + 440 /* &.parts_ */) + uintptr((uint32_t((*VP8Decoder)(unsafe.Pointer(dec)).mb_y_)&(*VP8Decoder)(unsafe.Pointer(dec)).num_parts_minus_one_))*48) + var token_br uintptr = dec + 440 + uintptr(uint32_t((*VP8Decoder)(unsafe.Pointer(dec)).mb_y_)&(*VP8Decoder)(unsafe.Pointer(dec)).num_parts_minus_one_)*48 // var context MBContext at bp, 56 - SaveContext(tls, dec, token_br, (bp) /* &context */) + SaveContext(tls, dec, token_br, bp) if !(VP8DecodeMB(tls, dec, token_br) != 0) { // We shouldn't fail when MAX_MB data was available - if ((*VP8Decoder)(unsafe.Pointer(dec)).num_parts_minus_one_ == uint32_t(0)) && (MemDataSize(tls, (idec+296 /* &.mem_ */)) > uint64(4096)) { + if (*VP8Decoder)(unsafe.Pointer(dec)).num_parts_minus_one_ == uint32_t(0) && MemDataSize(tls, idec+296) > uint64(4096) { return IDecError(tls, idec, VP8_STATUS_BITSTREAM_ERROR) } // Synchronize the threads. if (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ > 0 { if !((*struct { f func(*libc.TLS, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Sync})).f(tls, (dec+152 /* &.worker_ */)) != 0) { + })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Sync})).f(tls, dec+152) != 0) { return IDecError(tls, idec, VP8_STATUS_BITSTREAM_ERROR) } } - RestoreContext(tls, (bp) /* &context */, dec, token_br) + RestoreContext(tls, bp, dec, token_br) return VP8_STATUS_SUSPENDED } // Release buffer only if there is only one partition if (*VP8Decoder)(unsafe.Pointer(dec)).num_parts_minus_one_ == uint32_t(0) { - (*WebPIDecoder)(unsafe.Pointer(idec)).mem_.start_ = (size_t((int64((*VP8BitReader)(unsafe.Pointer(token_br)).buf_) - int64((*WebPIDecoder)(unsafe.Pointer(idec)).mem_.buf_)) / 1)) + (*WebPIDecoder)(unsafe.Pointer(idec)).mem_.start_ = size_t((int64((*VP8BitReader)(unsafe.Pointer(token_br)).buf_) - int64((*WebPIDecoder)(unsafe.Pointer(idec)).mem_.buf_)) / 1) } } @@ -6867,27 +6607,27 @@ func DecodeRemaining(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c: } func ErrorStatusLossless(tls *libc.TLS, idec uintptr, status VP8StatusCode) VP8StatusCode { /* idec_dec.c:512:22: */ - if (status == VP8_STATUS_SUSPENDED) || (status == VP8_STATUS_NOT_ENOUGH_DATA) { + if status == VP8_STATUS_SUSPENDED || status == VP8_STATUS_NOT_ENOUGH_DATA { return VP8_STATUS_SUSPENDED } return IDecError(tls, idec, status) } func DecodeVP8LHeader(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c:520:22: */ - var io uintptr = (idec + 136 /* &.io_ */) + var io uintptr = idec + 136 var dec uintptr = (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ - var params uintptr = (idec + 8 /* &.params_ */) + var params uintptr = idec + 8 var output uintptr = (*WebPDecParams)(unsafe.Pointer(params)).output - var curr_size size_t = MemDataSize(tls, (idec + 296 /* &.mem_ */)) + var curr_size size_t = MemDataSize(tls, idec+296) // Wait until there's enough data for decoding header. - if curr_size < ((*WebPIDecoder)(unsafe.Pointer(idec)).chunk_size_ >> 3) { + if curr_size < (*WebPIDecoder)(unsafe.Pointer(idec)).chunk_size_>>3 { (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_SUSPENDED return ErrorStatusLossless(tls, idec, (*VP8LDecoder)(unsafe.Pointer(dec)).status_) } if !(VP8LDecodeHeader(tls, dec, io) != 0) { - if ((*VP8LDecoder)(unsafe.Pointer(dec)).status_ == VP8_STATUS_BITSTREAM_ERROR) && (curr_size < (*WebPIDecoder)(unsafe.Pointer(idec)).chunk_size_) { + if (*VP8LDecoder)(unsafe.Pointer(dec)).status_ == VP8_STATUS_BITSTREAM_ERROR && curr_size < (*WebPIDecoder)(unsafe.Pointer(idec)).chunk_size_ { (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_SUSPENDED } return ErrorStatusLossless(tls, idec, (*VP8LDecoder)(unsafe.Pointer(dec)).status_) @@ -6905,10 +6645,10 @@ func DecodeVP8LHeader(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c func DecodeVP8LData(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c:552:22: */ var dec uintptr = (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ - var curr_size size_t = MemDataSize(tls, (idec + 296 /* &.mem_ */)) + var curr_size size_t = MemDataSize(tls, idec+296) // Switch to incremental decoding if we don't have all the bytes available. - (*VP8LDecoder)(unsafe.Pointer(dec)).incremental_ = (libc.Bool32(curr_size < (*WebPIDecoder)(unsafe.Pointer(idec)).chunk_size_)) + (*VP8LDecoder)(unsafe.Pointer(dec)).incremental_ = libc.Bool32(curr_size < (*WebPIDecoder)(unsafe.Pointer(idec)).chunk_size_) if !(VP8LDecodeImage(tls, dec) != 0) { return ErrorStatusLossless(tls, idec, (*VP8LDecoder)(unsafe.Pointer(dec)).status_) @@ -6927,7 +6667,7 @@ func IDecode(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c:569:22: if (*WebPIDecoder)(unsafe.Pointer(idec)).state_ == STATE_WEBP_HEADER { status = DecodeWebPHeaders(tls, idec) } else { - if (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ == (uintptr(0)) { + if (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ == uintptr(0) { return VP8_STATUS_SUSPENDED // can't continue if we have no decoder. } } @@ -6939,7 +6679,7 @@ func IDecode(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c:569:22: } if (*WebPIDecoder)(unsafe.Pointer(idec)).state_ == STATE_VP8_DATA { var dec uintptr = (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ - if dec == (uintptr(0)) { + if dec == uintptr(0) { return VP8_STATUS_SUSPENDED // can't continue if we have no decoder. } status = DecodeRemaining(tls, idec) @@ -6958,8 +6698,8 @@ func IDecode(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c:569:22: func NewDecoder(tls *libc.TLS, output_buffer uintptr, features uintptr) uintptr { /* idec_dec.c:604:20: */ var idec uintptr = WebPSafeCalloc(tls, 1, uint64(unsafe.Sizeof(WebPIDecoder{}))) - if idec == (uintptr(0)) { - return (uintptr(0)) + if idec == uintptr(0) { + return uintptr(0) } (*WebPIDecoder)(unsafe.Pointer(idec)).state_ = STATE_WEBP_HEADER @@ -6967,22 +6707,22 @@ func NewDecoder(tls *libc.TLS, output_buffer uintptr, features uintptr) uintptr (*WebPIDecoder)(unsafe.Pointer(idec)).last_mb_y_ = -1 - InitMemBuffer(tls, (idec + 296 /* &.mem_ */)) - WebPInitDecBuffer(tls, (idec + 352 /* &.output_ */)) - VP8InitIo(tls, (idec + 136 /* &.io_ */)) + InitMemBuffer(tls, idec+296) + WebPInitDecBuffer(tls, idec+352) + VP8InitIo(tls, idec+136) - WebPResetDecParams(tls, (idec + 8 /* &.params_ */)) - if (output_buffer == (uintptr(0))) || (WebPAvoidSlowMemory(tls, output_buffer, features) != 0) { - (*WebPIDecoder)(unsafe.Pointer(idec)).params_.output = (idec + 352 /* &.output_ */) + WebPResetDecParams(tls, idec+8) + if output_buffer == uintptr(0) || WebPAvoidSlowMemory(tls, output_buffer, features) != 0 { + (*WebPIDecoder)(unsafe.Pointer(idec)).params_.output = idec + 352 (*WebPIDecoder)(unsafe.Pointer(idec)).final_output_ = output_buffer - if output_buffer != (uintptr(0)) { + if output_buffer != uintptr(0) { (*WebPDecBuffer)(unsafe.Pointer((*WebPIDecoder)(unsafe.Pointer(idec)).params_.output)).colorspace = (*WebPDecBuffer)(unsafe.Pointer(output_buffer)).colorspace } } else { (*WebPIDecoder)(unsafe.Pointer(idec)).params_.output = output_buffer - (*WebPIDecoder)(unsafe.Pointer(idec)).final_output_ = (uintptr(0)) + (*WebPIDecoder)(unsafe.Pointer(idec)).final_output_ = uintptr(0) } - WebPInitCustomIo(tls, (idec + 8 /* &.params_ */), (idec + 136 /* &.io_ */)) // Plug the I/O functions. + WebPInitCustomIo(tls, idec+8, idec+136) // Plug the I/O functions. return idec } @@ -6991,7 +6731,7 @@ func NewDecoder(tls *libc.TLS, output_buffer uintptr, features uintptr) uintptr // Public functions func WebPINewDecoder(tls *libc.TLS, output_buffer uintptr) uintptr { /* idec_dec.c:639:13: */ - return NewDecoder(tls, output_buffer, (uintptr(0))) + return NewDecoder(tls, output_buffer, uintptr(0)) } func WebPIDecode(tls *libc.TLS, data uintptr, data_size size_t, config uintptr) uintptr { /* idec_dec.c:643:13: */ @@ -7002,53 +6742,53 @@ func WebPIDecode(tls *libc.TLS, data uintptr, data_size size_t, config uintptr) // var tmp_features WebPBitstreamFeatures at bp, 40 var features uintptr - if config == (uintptr(0)) { - features = (bp) /* &tmp_features */ + if config == uintptr(0) { + features = bp /* &tmp_features */ } else { - features = (config /* &.input */) + features = config /* &.input */ } - libc.Xmemset(tls, (bp) /* &tmp_features */, 0, uint64(unsafe.Sizeof(WebPBitstreamFeatures{}))) + libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(WebPBitstreamFeatures{}))) // Parse the bitstream's features, if requested: - if (data != (uintptr(0))) && (data_size > uint64(0)) { + if data != uintptr(0) && data_size > uint64(0) { if WebPGetFeatures(tls, data, data_size, features) != VP8_STATUS_OK { - return (uintptr(0)) + return uintptr(0) } } // Create an instance of the incremental decoder - if config != (uintptr(0)) { - idec = NewDecoder(tls, (config + 40 /* &.output */), features) + if config != uintptr(0) { + idec = NewDecoder(tls, config+40, features) } else { - idec = NewDecoder(tls, (uintptr(0)), features) + idec = NewDecoder(tls, uintptr(0), features) } - if idec == (uintptr(0)) { - return (uintptr(0)) + if idec == uintptr(0) { + return uintptr(0) } // Finish initialization - if config != (uintptr(0)) { - (*WebPIDecoder)(unsafe.Pointer(idec)).params_.options = (config + 160 /* &.options */) + if config != uintptr(0) { + (*WebPIDecoder)(unsafe.Pointer(idec)).params_.options = config + 160 } return idec } func WebPIDelete(tls *libc.TLS, idec uintptr) { /* idec_dec.c:671:6: */ - if idec == (uintptr(0)) { + if idec == uintptr(0) { return } - if (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ != (uintptr(0)) { + if (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ != uintptr(0) { if !((*WebPIDecoder)(unsafe.Pointer(idec)).is_lossless_ != 0) { if (*WebPIDecoder)(unsafe.Pointer(idec)).state_ == STATE_VP8_DATA { // Synchronize the thread, clean-up and check for errors. - VP8ExitCritical(tls, (*WebPIDecoder)(unsafe.Pointer(idec)).dec_, (idec + 136 /* &.io_ */)) + VP8ExitCritical(tls, (*WebPIDecoder)(unsafe.Pointer(idec)).dec_, idec+136) } VP8Delete(tls, (*WebPIDecoder)(unsafe.Pointer(idec)).dec_) } else { VP8LDelete(tls, (*WebPIDecoder)(unsafe.Pointer(idec)).dec_) } } - ClearMemBuffer(tls, (idec + 296 /* &.mem_ */)) - WebPFreeDecBuffer(tls, (idec + 352 /* &.output_ */)) + ClearMemBuffer(tls, idec+296) + WebPFreeDecBuffer(tls, idec+352) WebPSafeFree(tls, idec) } @@ -7057,7 +6797,7 @@ func WebPIDelete(tls *libc.TLS, idec uintptr) { /* idec_dec.c:671:6: */ func WebPINewRGB(tls *libc.TLS, csp WEBP_CSP_MODE, output_buffer uintptr, output_buffer_size size_t, output_stride int32) uintptr { /* idec_dec.c:692:13: */ var is_external_memory int32 - if output_buffer != (uintptr(0)) { + if output_buffer != uintptr(0) { is_external_memory = 1 } else { is_external_memory = 0 @@ -7065,31 +6805,31 @@ func WebPINewRGB(tls *libc.TLS, csp WEBP_CSP_MODE, output_buffer uintptr, output var idec uintptr if csp >= MODE_YUV { - return (uintptr(0)) + return uintptr(0) } if is_external_memory == 0 { // Overwrite parameters to sane values. output_buffer_size = uint64(0) output_stride = 0 } else { // A buffer was passed. Validate the other params. - if (output_stride == 0) || (output_buffer_size == uint64(0)) { - return (uintptr(0)) // invalid parameter. + if output_stride == 0 || output_buffer_size == uint64(0) { + return uintptr(0) // invalid parameter. } } - idec = WebPINewDecoder(tls, (uintptr(0))) - if idec == (uintptr(0)) { - return (uintptr(0)) + idec = WebPINewDecoder(tls, uintptr(0)) + if idec == uintptr(0) { + return uintptr(0) } (*WebPIDecoder)(unsafe.Pointer(idec)).output_.colorspace = csp (*WebPIDecoder)(unsafe.Pointer(idec)).output_.is_external_memory = is_external_memory - (*WebPRGBABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).rgba = output_buffer - (*WebPRGBABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).stride = output_stride - (*WebPRGBABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).size = output_buffer_size + (*WebPRGBABuffer)(unsafe.Pointer(idec + 352 + 16)).rgba = output_buffer + (*WebPRGBABuffer)(unsafe.Pointer(idec + 352 + 16)).stride = output_stride + (*WebPRGBABuffer)(unsafe.Pointer(idec + 352 + 16)).size = output_buffer_size return idec } func WebPINewYUVA(tls *libc.TLS, luma uintptr, luma_size size_t, luma_stride int32, u uintptr, u_size size_t, u_stride int32, v uintptr, v_size size_t, v_stride int32, a uintptr, a_size size_t, a_stride int32) uintptr { /* idec_dec.c:716:13: */ var is_external_memory int32 - if luma != (uintptr(0)) { + if luma != uintptr(0) { is_external_memory = 1 } else { is_external_memory = 0 @@ -7100,49 +6840,49 @@ func WebPINewYUVA(tls *libc.TLS, luma uintptr, luma_size size_t, luma_stride int if is_external_memory == 0 { // Overwrite parameters to sane values. luma_size = libc.AssignUint64(&u_size, libc.AssignUint64(&v_size, libc.AssignUint64(&a_size, uint64(0)))) luma_stride = libc.AssignInt32(&u_stride, libc.AssignInt32(&v_stride, libc.AssignInt32(&a_stride, 0))) - u = libc.AssignUintptr(&v, libc.AssignUintptr(&a, (uintptr(0)))) + u = libc.AssignUintptr(&v, libc.AssignUintptr(&a, uintptr(0))) colorspace = MODE_YUVA } else { // A luma buffer was passed. Validate the other parameters. - if (u == (uintptr(0))) || (v == (uintptr(0))) { - return (uintptr(0)) + if u == uintptr(0) || v == uintptr(0) { + return uintptr(0) } - if ((luma_size == uint64(0)) || (u_size == uint64(0))) || (v_size == uint64(0)) { - return (uintptr(0)) + if luma_size == uint64(0) || u_size == uint64(0) || v_size == uint64(0) { + return uintptr(0) } - if ((luma_stride == 0) || (u_stride == 0)) || (v_stride == 0) { - return (uintptr(0)) + if luma_stride == 0 || u_stride == 0 || v_stride == 0 { + return uintptr(0) } - if a != (uintptr(0)) { - if (a_size == uint64(0)) || (a_stride == 0) { - return (uintptr(0)) + if a != uintptr(0) { + if a_size == uint64(0) || a_stride == 0 { + return uintptr(0) } } - if a == (uintptr(0)) { + if a == uintptr(0) { colorspace = MODE_YUV } else { colorspace = MODE_YUVA } } - idec = WebPINewDecoder(tls, (uintptr(0))) - if idec == (uintptr(0)) { - return (uintptr(0)) + idec = WebPINewDecoder(tls, uintptr(0)) + if idec == uintptr(0) { + return uintptr(0) } (*WebPIDecoder)(unsafe.Pointer(idec)).output_.colorspace = colorspace (*WebPIDecoder)(unsafe.Pointer(idec)).output_.is_external_memory = is_external_memory - (*WebPYUVABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).y = luma - (*WebPYUVABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).y_stride = luma_stride - (*WebPYUVABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).y_size = luma_size - (*WebPYUVABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).u = u - (*WebPYUVABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).u_stride = u_stride - (*WebPYUVABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).u_size = u_size - (*WebPYUVABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).v = v - (*WebPYUVABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).v_stride = v_stride - (*WebPYUVABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).v_size = v_size - (*WebPYUVABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).a = a - (*WebPYUVABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).a_stride = a_stride - (*WebPYUVABuffer)(unsafe.Pointer(((idec + 352 /* &.output_ */) + 16 /* &.u */))).a_size = a_size + (*WebPYUVABuffer)(unsafe.Pointer(idec + 352 + 16)).y = luma + (*WebPYUVABuffer)(unsafe.Pointer(idec + 352 + 16)).y_stride = luma_stride + (*WebPYUVABuffer)(unsafe.Pointer(idec + 352 + 16)).y_size = luma_size + (*WebPYUVABuffer)(unsafe.Pointer(idec + 352 + 16)).u = u + (*WebPYUVABuffer)(unsafe.Pointer(idec + 352 + 16)).u_stride = u_stride + (*WebPYUVABuffer)(unsafe.Pointer(idec + 352 + 16)).u_size = u_size + (*WebPYUVABuffer)(unsafe.Pointer(idec + 352 + 16)).v = v + (*WebPYUVABuffer)(unsafe.Pointer(idec + 352 + 16)).v_stride = v_stride + (*WebPYUVABuffer)(unsafe.Pointer(idec + 352 + 16)).v_size = v_size + (*WebPYUVABuffer)(unsafe.Pointer(idec + 352 + 16)).a = a + (*WebPYUVABuffer)(unsafe.Pointer(idec + 352 + 16)).a_stride = a_stride + (*WebPYUVABuffer)(unsafe.Pointer(idec + 352 + 16)).a_size = a_size return idec } @@ -7150,7 +6890,7 @@ func WebPINewYUV(tls *libc.TLS, luma uintptr, luma_size size_t, luma_stride int3 return WebPINewYUVA(tls, luma, luma_size, luma_stride, u, u_size, u_stride, v, v_size, v_stride, - (uintptr(0)), uint64(0), 0) + uintptr(0), uint64(0), 0) } //------------------------------------------------------------------------------ @@ -7168,7 +6908,7 @@ func IDecCheckStatus(tls *libc.TLS, idec uintptr) VP8StatusCode { /* idec_dec.c: func WebPIAppend(tls *libc.TLS, idec uintptr, data uintptr, data_size size_t) VP8StatusCode { /* idec_dec.c:781:15: */ var status VP8StatusCode - if (idec == (uintptr(0))) || (data == (uintptr(0))) { + if idec == uintptr(0) || data == uintptr(0) { return VP8_STATUS_INVALID_PARAM } status = IDecCheckStatus(tls, idec) @@ -7176,7 +6916,7 @@ func WebPIAppend(tls *libc.TLS, idec uintptr, data uintptr, data_size size_t) VP return status } // Check mixed calls between RemapMemBuffer and AppendToMemBuffer. - if !(CheckMemBufferMode(tls, (idec+296 /* &.mem_ */), MEM_MODE_APPEND) != 0) { + if !(CheckMemBufferMode(tls, idec+296, MEM_MODE_APPEND) != 0) { return VP8_STATUS_INVALID_PARAM } // Append data to memory buffer @@ -7188,7 +6928,7 @@ func WebPIAppend(tls *libc.TLS, idec uintptr, data uintptr, data_size size_t) VP func WebPIUpdate(tls *libc.TLS, idec uintptr, data uintptr, data_size size_t) VP8StatusCode { /* idec_dec.c:802:15: */ var status VP8StatusCode - if (idec == (uintptr(0))) || (data == (uintptr(0))) { + if idec == uintptr(0) || data == uintptr(0) { return VP8_STATUS_INVALID_PARAM } status = IDecCheckStatus(tls, idec) @@ -7196,7 +6936,7 @@ func WebPIUpdate(tls *libc.TLS, idec uintptr, data uintptr, data_size size_t) VP return status } // Check mixed calls between RemapMemBuffer and AppendToMemBuffer. - if !(CheckMemBufferMode(tls, (idec+296 /* &.mem_ */), MEM_MODE_MAP) != 0) { + if !(CheckMemBufferMode(tls, idec+296, MEM_MODE_MAP) != 0) { return VP8_STATUS_INVALID_PARAM } // Make the memory buffer point to the new buffer @@ -7209,38 +6949,38 @@ func WebPIUpdate(tls *libc.TLS, idec uintptr, data uintptr, data_size size_t) VP //------------------------------------------------------------------------------ func GetOutputBuffer(tls *libc.TLS, idec uintptr) uintptr { /* idec_dec.c:825:27: */ - if (idec == (uintptr(0))) || ((*WebPIDecoder)(unsafe.Pointer(idec)).dec_ == (uintptr(0))) { - return (uintptr(0)) + if idec == uintptr(0) || (*WebPIDecoder)(unsafe.Pointer(idec)).dec_ == uintptr(0) { + return uintptr(0) } if (*WebPIDecoder)(unsafe.Pointer(idec)).state_ <= STATE_VP8_PARTS0 { - return (uintptr(0)) + return uintptr(0) } - if (*WebPIDecoder)(unsafe.Pointer(idec)).final_output_ != (uintptr(0)) { - return (uintptr(0)) // not yet slow-copied + if (*WebPIDecoder)(unsafe.Pointer(idec)).final_output_ != uintptr(0) { + return uintptr(0) // not yet slow-copied } return (*WebPIDecoder)(unsafe.Pointer(idec)).params_.output } func WebPIDecodedArea(tls *libc.TLS, idec uintptr, left uintptr, top uintptr, width uintptr, height uintptr) uintptr { /* idec_dec.c:838:20: */ var src uintptr = GetOutputBuffer(tls, idec) - if left != (uintptr(0)) { + if left != uintptr(0) { *(*int32)(unsafe.Pointer(left)) = 0 } - if top != (uintptr(0)) { + if top != uintptr(0) { *(*int32)(unsafe.Pointer(top)) = 0 } - if src != (uintptr(0)) { - if width != (uintptr(0)) { + if src != uintptr(0) { + if width != uintptr(0) { *(*int32)(unsafe.Pointer(width)) = (*WebPDecBuffer)(unsafe.Pointer(src)).width } - if height != (uintptr(0)) { + if height != uintptr(0) { *(*int32)(unsafe.Pointer(height)) = (*WebPIDecoder)(unsafe.Pointer(idec)).params_.last_y } } else { - if width != (uintptr(0)) { + if width != uintptr(0) { *(*int32)(unsafe.Pointer(width)) = 0 } - if height != (uintptr(0)) { + if height != uintptr(0) { *(*int32)(unsafe.Pointer(height)) = 0 } } @@ -7249,71 +6989,71 @@ func WebPIDecodedArea(tls *libc.TLS, idec uintptr, left uintptr, top uintptr, wi func WebPIDecGetRGB(tls *libc.TLS, idec uintptr, last_y uintptr, width uintptr, height uintptr, stride uintptr) uintptr { /* idec_dec.c:854:8: */ var src uintptr = GetOutputBuffer(tls, idec) - if src == (uintptr(0)) { - return (uintptr(0)) + if src == uintptr(0) { + return uintptr(0) } if (*WebPDecBuffer)(unsafe.Pointer(src)).colorspace >= MODE_YUV { - return (uintptr(0)) + return uintptr(0) } - if last_y != (uintptr(0)) { + if last_y != uintptr(0) { *(*int32)(unsafe.Pointer(last_y)) = (*WebPIDecoder)(unsafe.Pointer(idec)).params_.last_y } - if width != (uintptr(0)) { + if width != uintptr(0) { *(*int32)(unsafe.Pointer(width)) = (*WebPDecBuffer)(unsafe.Pointer(src)).width } - if height != (uintptr(0)) { + if height != uintptr(0) { *(*int32)(unsafe.Pointer(height)) = (*WebPDecBuffer)(unsafe.Pointer(src)).height } - if stride != (uintptr(0)) { - *(*int32)(unsafe.Pointer(stride)) = (*WebPRGBABuffer)(unsafe.Pointer((src + 16 /* &.u */))).stride + if stride != uintptr(0) { + *(*int32)(unsafe.Pointer(stride)) = (*WebPRGBABuffer)(unsafe.Pointer(src + 16)).stride } - return (*WebPRGBABuffer)(unsafe.Pointer((src + 16 /* &.u */))).rgba + return (*WebPRGBABuffer)(unsafe.Pointer(src + 16)).rgba } func WebPIDecGetYUVA(tls *libc.TLS, idec uintptr, last_y uintptr, u uintptr, v uintptr, a uintptr, width uintptr, height uintptr, stride uintptr, uv_stride uintptr, a_stride uintptr) uintptr { /* idec_dec.c:870:8: */ var src uintptr = GetOutputBuffer(tls, idec) - if src == (uintptr(0)) { - return (uintptr(0)) + if src == uintptr(0) { + return uintptr(0) } if (*WebPDecBuffer)(unsafe.Pointer(src)).colorspace < MODE_YUV { - return (uintptr(0)) + return uintptr(0) } - if last_y != (uintptr(0)) { + if last_y != uintptr(0) { *(*int32)(unsafe.Pointer(last_y)) = (*WebPIDecoder)(unsafe.Pointer(idec)).params_.last_y } - if u != (uintptr(0)) { - *(*uintptr)(unsafe.Pointer(u)) = (*WebPYUVABuffer)(unsafe.Pointer((src + 16 /* &.u */))).u + if u != uintptr(0) { + *(*uintptr)(unsafe.Pointer(u)) = (*WebPYUVABuffer)(unsafe.Pointer(src + 16)).u } - if v != (uintptr(0)) { - *(*uintptr)(unsafe.Pointer(v)) = (*WebPYUVABuffer)(unsafe.Pointer((src + 16 /* &.u */))).v + if v != uintptr(0) { + *(*uintptr)(unsafe.Pointer(v)) = (*WebPYUVABuffer)(unsafe.Pointer(src + 16)).v } - if a != (uintptr(0)) { - *(*uintptr)(unsafe.Pointer(a)) = (*WebPYUVABuffer)(unsafe.Pointer((src + 16 /* &.u */))).a + if a != uintptr(0) { + *(*uintptr)(unsafe.Pointer(a)) = (*WebPYUVABuffer)(unsafe.Pointer(src + 16)).a } - if width != (uintptr(0)) { + if width != uintptr(0) { *(*int32)(unsafe.Pointer(width)) = (*WebPDecBuffer)(unsafe.Pointer(src)).width } - if height != (uintptr(0)) { + if height != uintptr(0) { *(*int32)(unsafe.Pointer(height)) = (*WebPDecBuffer)(unsafe.Pointer(src)).height } - if stride != (uintptr(0)) { - *(*int32)(unsafe.Pointer(stride)) = (*WebPYUVABuffer)(unsafe.Pointer((src + 16 /* &.u */))).y_stride + if stride != uintptr(0) { + *(*int32)(unsafe.Pointer(stride)) = (*WebPYUVABuffer)(unsafe.Pointer(src + 16)).y_stride } - if uv_stride != (uintptr(0)) { - *(*int32)(unsafe.Pointer(uv_stride)) = (*WebPYUVABuffer)(unsafe.Pointer((src + 16 /* &.u */))).u_stride + if uv_stride != uintptr(0) { + *(*int32)(unsafe.Pointer(uv_stride)) = (*WebPYUVABuffer)(unsafe.Pointer(src + 16)).u_stride } - if a_stride != (uintptr(0)) { - *(*int32)(unsafe.Pointer(a_stride)) = (*WebPYUVABuffer)(unsafe.Pointer((src + 16 /* &.u */))).a_stride + if a_stride != uintptr(0) { + *(*int32)(unsafe.Pointer(a_stride)) = (*WebPYUVABuffer)(unsafe.Pointer(src + 16)).a_stride } - return (*WebPYUVABuffer)(unsafe.Pointer((src + 16 /* &.u */))).y + return (*WebPYUVABuffer)(unsafe.Pointer(src + 16)).y } func WebPISetIOHooks(tls *libc.TLS, idec uintptr, put VP8IoPutHook, setup VP8IoSetupHook, teardown VP8IoTeardownHook, user_data uintptr) int32 { /* idec_dec.c:893:5: */ - if (idec == (uintptr(0))) || ((*WebPIDecoder)(unsafe.Pointer(idec)).state_ > STATE_WEBP_HEADER) { + if idec == uintptr(0) || (*WebPIDecoder)(unsafe.Pointer(idec)).state_ > STATE_WEBP_HEADER { return 0 } @@ -7329,12 +7069,12 @@ func WebPISetIOHooks(tls *libc.TLS, idec uintptr, put VP8IoPutHook, setup VP8IoS // slower on x86 by ~7-8%, but bit-exact with the SSE2/NEON version func MultHi(tls *libc.TLS, v int32, coeff int32) int32 { /* yuv.h:59:24: */ // _mm_mulhi_epu16 emulation - return ((v * coeff) >> 8) + return v * coeff >> 8 } func VP8Clip8(tls *libc.TLS, v int32) int32 { /* yuv.h:63:24: */ - if (v & libc.CplInt32(YUV_MASK2)) == 0 { - return (v >> YUV_FIX2) + if v&libc.CplInt32(YUV_MASK2) == 0 { + return v >> YUV_FIX2 } if v < 0 { return 0 @@ -7343,15 +7083,15 @@ func VP8Clip8(tls *libc.TLS, v int32) int32 { /* yuv.h:63:24: */ } func VP8YUVToR(tls *libc.TLS, y int32, v int32) int32 { /* yuv.h:67:24: */ - return VP8Clip8(tls, ((MultHi(tls, y, 19077) + MultHi(tls, v, 26149)) - 14234)) + return VP8Clip8(tls, MultHi(tls, y, 19077)+MultHi(tls, v, 26149)-14234) } func VP8YUVToG(tls *libc.TLS, y int32, u int32, v int32) int32 { /* yuv.h:71:24: */ - return VP8Clip8(tls, (((MultHi(tls, y, 19077) - MultHi(tls, u, 6419)) - MultHi(tls, v, 13320)) + 8708)) + return VP8Clip8(tls, MultHi(tls, y, 19077)-MultHi(tls, u, 6419)-MultHi(tls, v, 13320)+8708) } func VP8YUVToB(tls *libc.TLS, y int32, u int32) int32 { /* yuv.h:75:24: */ - return VP8Clip8(tls, ((MultHi(tls, y, 19077) + MultHi(tls, u, 33050)) - 17685)) + return VP8Clip8(tls, MultHi(tls, y, 19077)+MultHi(tls, u, 33050)-17685) } func VP8YuvToRgb(tls *libc.TLS, y int32, u int32, v int32, rgb uintptr) { /* yuv.h:79:25: */ @@ -7370,8 +7110,8 @@ func VP8YuvToRgb565(tls *libc.TLS, y int32, u int32, v int32, rgb uintptr) { /* var r int32 = VP8YUVToR(tls, y, v) // 5 usable bits var g int32 = VP8YUVToG(tls, y, u, v) // 6 usable bits var b int32 = VP8YUVToB(tls, y, u) // 5 usable bits - var rg int32 = ((r & 0xf8) | (g >> 5)) - var gb int32 = (((g << 3) & 0xe0) | (b >> 3)) + var rg int32 = r&0xf8 | g>>5 + var gb int32 = g<<3&0xe0 | b>>3 *(*uint8_t)(unsafe.Pointer(rgb)) = uint8_t(rg) *(*uint8_t)(unsafe.Pointer(rgb + 1)) = uint8_t(gb) } @@ -7380,8 +7120,8 @@ func VP8YuvToRgba4444(tls *libc.TLS, y int32, u int32, v int32, argb uintptr) { var r int32 = VP8YUVToR(tls, y, v) // 4 usable bits var g int32 = VP8YUVToG(tls, y, u, v) // 4 usable bits var b int32 = VP8YUVToB(tls, y, u) // 4 usable bits - var rg int32 = ((r & 0xf0) | (g >> 4)) - var ba int32 = ((b & 0xf0) | 0x0f) // overwrite the lower 4 bits + var rg int32 = r&0xf0 | g>>4 + var ba int32 = b&0xf0 | 0x0f // overwrite the lower 4 bits *(*uint8_t)(unsafe.Pointer(argb)) = uint8_t(rg) *(*uint8_t)(unsafe.Pointer(argb + 1)) = uint8_t(ba) } @@ -7391,7 +7131,7 @@ func VP8YuvToRgba4444(tls *libc.TLS, y int32, u int32, v int32, argb uintptr) { func VP8YuvToArgb(tls *libc.TLS, y uint8_t, u uint8_t, v uint8_t, argb uintptr) { /* yuv.h:128:25: */ *(*uint8_t)(unsafe.Pointer(argb)) = uint8_t(0xff) - VP8YuvToRgb(tls, int32(y), int32(u), int32(v), (argb + uintptr(1))) + VP8YuvToRgb(tls, int32(y), int32(u), int32(v), argb+uintptr(1)) } func VP8YuvToBgra(tls *libc.TLS, y uint8_t, u uint8_t, v uint8_t, bgra uintptr) { /* yuv.h:134:25: */ @@ -7415,8 +7155,8 @@ func VP8YuvToRgba(tls *libc.TLS, y uint8_t, u uint8_t, v uint8_t, rgba uintptr) // Stub functions that can be called with various rounding values: func VP8ClipUV(tls *libc.TLS, uv int32, rounding int32) int32 { /* yuv.h:186:24: */ - uv = (((uv + rounding) + (int32(128) << (YUV_FIX + 2))) >> (YUV_FIX + 2)) - if (uv & libc.CplInt32(0xff)) == 0 { + uv = (uv + rounding + int32(128)<<(YUV_FIX+2)) >> (YUV_FIX + 2) + if uv&libc.CplInt32(0xff) == 0 { return uv } if uv < 0 { @@ -7426,17 +7166,17 @@ func VP8ClipUV(tls *libc.TLS, uv int32, rounding int32) int32 { /* yuv.h:186:24: } func VP8RGBToY(tls *libc.TLS, r int32, g int32, b int32, rounding int32) int32 { /* yuv.h:191:24: */ - var luma int32 = (((16839 * r) + (33059 * g)) + (6420 * b)) - return (((luma + rounding) + (int32(16) << YUV_FIX)) >> YUV_FIX) // no need to clip + var luma int32 = 16839*r + 33059*g + 6420*b + return (luma + rounding + int32(16)<<YUV_FIX) >> YUV_FIX // no need to clip } func VP8RGBToU(tls *libc.TLS, r int32, g int32, b int32, rounding int32) int32 { /* yuv.h:196:24: */ - var u int32 = (((-9719 * r) - (19081 * g)) + (28800 * b)) + var u int32 = -9719*r - 19081*g + 28800*b return VP8ClipUV(tls, u, rounding) } func VP8RGBToV(tls *libc.TLS, r int32, g int32, b int32, rounding int32) int32 { /* yuv.h:201:24: */ - var v int32 = (((+28800 * r) - (24116 * g)) - (4684 * b)) + var v int32 = +28800*r - 24116*g - 4684*b return VP8ClipUV(tls, v, rounding) } @@ -7447,14 +7187,14 @@ func VP8RGBToV(tls *libc.TLS, r int32, g int32, b int32, rounding int32) int32 { func EmitYUV(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:25:12: */ var output uintptr = (*WebPDecParams)(unsafe.Pointer(p)).output - var buf uintptr = (output + 16 /* &.u */) /* &.YUVA */ - var y_dst uintptr = ((*WebPYUVABuffer)(unsafe.Pointer(buf)).y + uintptr((size_t((*VP8Io)(unsafe.Pointer(io)).mb_y) * size_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride)))) - var u_dst uintptr = ((*WebPYUVABuffer)(unsafe.Pointer(buf)).u + uintptr(((size_t((*VP8Io)(unsafe.Pointer(io)).mb_y >> 1)) * size_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).u_stride)))) - var v_dst uintptr = ((*WebPYUVABuffer)(unsafe.Pointer(buf)).v + uintptr(((size_t((*VP8Io)(unsafe.Pointer(io)).mb_y >> 1)) * size_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).v_stride)))) + var buf uintptr = output + 16 + var y_dst uintptr = (*WebPYUVABuffer)(unsafe.Pointer(buf)).y + uintptr(size_t((*VP8Io)(unsafe.Pointer(io)).mb_y)*size_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride)) + var u_dst uintptr = (*WebPYUVABuffer)(unsafe.Pointer(buf)).u + uintptr(size_t((*VP8Io)(unsafe.Pointer(io)).mb_y>>1)*size_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).u_stride)) + var v_dst uintptr = (*WebPYUVABuffer)(unsafe.Pointer(buf)).v + uintptr(size_t((*VP8Io)(unsafe.Pointer(io)).mb_y>>1)*size_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).v_stride)) var mb_w int32 = (*VP8Io)(unsafe.Pointer(io)).mb_w var mb_h int32 = (*VP8Io)(unsafe.Pointer(io)).mb_h - var uv_w int32 = ((mb_w + 1) / 2) - var uv_h int32 = ((mb_h + 1) / 2) + var uv_w int32 = (mb_w + 1) / 2 + var uv_h int32 = (mb_h + 1) / 2 WebPCopyPlane(tls, (*VP8Io)(unsafe.Pointer(io)).y, (*VP8Io)(unsafe.Pointer(io)).y_stride, y_dst, (*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride, mb_w, mb_h) WebPCopyPlane(tls, (*VP8Io)(unsafe.Pointer(io)).u, (*VP8Io)(unsafe.Pointer(io)).uv_stride, u_dst, (*WebPYUVABuffer)(unsafe.Pointer(buf)).u_stride, uv_w, uv_h) WebPCopyPlane(tls, (*VP8Io)(unsafe.Pointer(io)).v, (*VP8Io)(unsafe.Pointer(io)).uv_stride, v_dst, (*WebPYUVABuffer)(unsafe.Pointer(buf)).v_stride, uv_w, uv_h) @@ -7464,8 +7204,8 @@ func EmitYUV(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:25:12: */ // Point-sampling U/V sampler. func EmitSampledRGB(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:42:12: */ var output uintptr = (*WebPDecParams)(unsafe.Pointer(p)).output - var buf uintptr = (output + 16 /* &.u */) /* &.RGBA */ - var dst uintptr = ((*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr((size_t((*VP8Io)(unsafe.Pointer(io)).mb_y) * size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)))) + var buf uintptr = output + 16 + var dst uintptr = (*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr(size_t((*VP8Io)(unsafe.Pointer(io)).mb_y)*size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)) WebPSamplerProcessPlane(tls, (*VP8Io)(unsafe.Pointer(io)).y, (*VP8Io)(unsafe.Pointer(io)).y_stride, (*VP8Io)(unsafe.Pointer(io)).u, (*VP8Io)(unsafe.Pointer(io)).v, (*VP8Io)(unsafe.Pointer(io)).uv_stride, dst, (*WebPRGBABuffer)(unsafe.Pointer(buf)).stride, (*VP8Io)(unsafe.Pointer(io)).mb_w, (*VP8Io)(unsafe.Pointer(io)).mb_h, @@ -7477,9 +7217,9 @@ func EmitSampledRGB(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:42 // Fancy upsampling func EmitFancyRGB(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:57:12: */ - var num_lines_out int32 = (*VP8Io)(unsafe.Pointer(io)).mb_h // a priori guess - var buf uintptr = ((*WebPDecParams)(unsafe.Pointer(p)).output + 16 /* &.u */) /* &.RGBA */ - var dst uintptr = ((*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr((size_t((*VP8Io)(unsafe.Pointer(io)).mb_y) * size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)))) + var num_lines_out int32 = (*VP8Io)(unsafe.Pointer(io)).mb_h // a priori guess + var buf uintptr = (*WebPDecParams)(unsafe.Pointer(p)).output + 16 + var dst uintptr = (*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr(size_t((*VP8Io)(unsafe.Pointer(io)).mb_y)*size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)) var upsample WebPUpsampleLinePairFunc = WebPUpsamplers[(*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace] var cur_y uintptr = (*VP8Io)(unsafe.Pointer(io)).y var cur_u uintptr = (*VP8Io)(unsafe.Pointer(io)).u @@ -7487,54 +7227,54 @@ func EmitFancyRGB(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:57:1 var top_u uintptr = (*WebPDecParams)(unsafe.Pointer(p)).tmp_u var top_v uintptr = (*WebPDecParams)(unsafe.Pointer(p)).tmp_v var y int32 = (*VP8Io)(unsafe.Pointer(io)).mb_y - var y_end int32 = ((*VP8Io)(unsafe.Pointer(io)).mb_y + (*VP8Io)(unsafe.Pointer(io)).mb_h) + var y_end int32 = (*VP8Io)(unsafe.Pointer(io)).mb_y + (*VP8Io)(unsafe.Pointer(io)).mb_h var mb_w int32 = (*VP8Io)(unsafe.Pointer(io)).mb_w - var uv_w int32 = ((mb_w + 1) / 2) + var uv_w int32 = (mb_w + 1) / 2 if y == 0 { // First line is special cased. We mirror the u/v samples at boundary. (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, cur_y, (uintptr(0)), cur_u, cur_v, cur_u, cur_v, dst, (uintptr(0)), mb_w) + })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, cur_y, uintptr(0), cur_u, cur_v, cur_u, cur_v, dst, uintptr(0), mb_w) } else { // We can finish the left-over line from previous call. (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, int32) })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, (*WebPDecParams)(unsafe.Pointer(p)).tmp_y, cur_y, top_u, top_v, cur_u, cur_v, - (dst - uintptr((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)), dst, mb_w) + dst-uintptr((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride), dst, mb_w) num_lines_out++ } // Loop over each output pairs of row. - for ; (y + 2) < y_end; y = y + (2) { + for ; y+2 < y_end; y = y + 2 { top_u = cur_u top_v = cur_v cur_u += uintptr((*VP8Io)(unsafe.Pointer(io)).uv_stride) cur_v += uintptr((*VP8Io)(unsafe.Pointer(io)).uv_stride) - dst += (uintptr(2 * (*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)) - cur_y += (uintptr(2 * (*VP8Io)(unsafe.Pointer(io)).y_stride)) + dst += uintptr(2 * (*WebPRGBABuffer)(unsafe.Pointer(buf)).stride) + cur_y += uintptr(2 * (*VP8Io)(unsafe.Pointer(io)).y_stride) (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, (cur_y - uintptr((*VP8Io)(unsafe.Pointer(io)).y_stride)), cur_y, + })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, cur_y-uintptr((*VP8Io)(unsafe.Pointer(io)).y_stride), cur_y, top_u, top_v, cur_u, cur_v, - (dst - uintptr((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)), dst, mb_w) + dst-uintptr((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride), dst, mb_w) } // move to last row cur_y += uintptr((*VP8Io)(unsafe.Pointer(io)).y_stride) - if ((*VP8Io)(unsafe.Pointer(io)).crop_top + y_end) < (*VP8Io)(unsafe.Pointer(io)).crop_bottom { + if (*VP8Io)(unsafe.Pointer(io)).crop_top+y_end < (*VP8Io)(unsafe.Pointer(io)).crop_bottom { // Save the unfinished samples for next call (as we're not done yet). - libc.Xmemcpy(tls, (*WebPDecParams)(unsafe.Pointer(p)).tmp_y, cur_y, (uint64(mb_w) * uint64(unsafe.Sizeof(uint8_t(0))))) - libc.Xmemcpy(tls, (*WebPDecParams)(unsafe.Pointer(p)).tmp_u, cur_u, (uint64(uv_w) * uint64(unsafe.Sizeof(uint8_t(0))))) - libc.Xmemcpy(tls, (*WebPDecParams)(unsafe.Pointer(p)).tmp_v, cur_v, (uint64(uv_w) * uint64(unsafe.Sizeof(uint8_t(0))))) + libc.Xmemcpy(tls, (*WebPDecParams)(unsafe.Pointer(p)).tmp_y, cur_y, uint64(mb_w)*uint64(unsafe.Sizeof(uint8_t(0)))) + libc.Xmemcpy(tls, (*WebPDecParams)(unsafe.Pointer(p)).tmp_u, cur_u, uint64(uv_w)*uint64(unsafe.Sizeof(uint8_t(0)))) + libc.Xmemcpy(tls, (*WebPDecParams)(unsafe.Pointer(p)).tmp_v, cur_v, uint64(uv_w)*uint64(unsafe.Sizeof(uint8_t(0)))) // The fancy upsampler leaves a row unfinished behind // (except for the very last row) num_lines_out-- } else { // Process the very last row of even-sized picture - if !((y_end & 1) != 0) { + if !(y_end&1 != 0) { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, cur_y, (uintptr(0)), cur_u, cur_v, cur_u, cur_v, - (dst + uintptr((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)), (uintptr(0)), mb_w) + })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, cur_y, uintptr(0), cur_u, cur_v, cur_u, cur_v, + dst+uintptr((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride), uintptr(0), mb_w) } } return num_lines_out @@ -7545,27 +7285,27 @@ func EmitFancyRGB(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:57:1 func FillAlphaPlane(tls *libc.TLS, dst uintptr, w int32, h int32, stride int32) { /* io_dec.c:117:13: */ var j int32 for j = 0; j < h; j++ { - libc.Xmemset(tls, dst, 0xff, (uint64(w) * uint64(unsafe.Sizeof(uint8_t(0))))) + libc.Xmemset(tls, dst, 0xff, uint64(w)*uint64(unsafe.Sizeof(uint8_t(0)))) dst += uintptr(stride) } } func EmitAlphaYUV(tls *libc.TLS, io uintptr, p uintptr, expected_num_lines_out int32) int32 { /* io_dec.c:125:12: */ var alpha uintptr = (*VP8Io)(unsafe.Pointer(io)).a - var buf uintptr = ((*WebPDecParams)(unsafe.Pointer(p)).output + 16 /* &.u */) /* &.YUVA */ + var buf uintptr = (*WebPDecParams)(unsafe.Pointer(p)).output + 16 var mb_w int32 = (*VP8Io)(unsafe.Pointer(io)).mb_w var mb_h int32 = (*VP8Io)(unsafe.Pointer(io)).mb_h - var dst uintptr = ((*WebPYUVABuffer)(unsafe.Pointer(buf)).a + uintptr((size_t((*VP8Io)(unsafe.Pointer(io)).mb_y) * size_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride)))) + var dst uintptr = (*WebPYUVABuffer)(unsafe.Pointer(buf)).a + uintptr(size_t((*VP8Io)(unsafe.Pointer(io)).mb_y)*size_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride)) var j int32 _ = expected_num_lines_out - if alpha != (uintptr(0)) { + if alpha != uintptr(0) { for j = 0; j < mb_h; j++ { - libc.Xmemcpy(tls, dst, alpha, (uint64(mb_w) * uint64(unsafe.Sizeof(uint8_t(0))))) + libc.Xmemcpy(tls, dst, alpha, uint64(mb_w)*uint64(unsafe.Sizeof(uint8_t(0)))) alpha += uintptr((*VP8Io)(unsafe.Pointer(io)).width) dst += uintptr((*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride) } - } else if (*WebPYUVABuffer)(unsafe.Pointer(buf)).a != (uintptr(0)) { + } else if (*WebPYUVABuffer)(unsafe.Pointer(buf)).a != uintptr(0) { // the user requested alpha, but there is none, set it to opaque. FillAlphaPlane(tls, dst, mb_w, mb_h, (*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride) } @@ -7587,11 +7327,11 @@ func GetAlphaSourceRow(tls *libc.TLS, io uintptr, alpha uintptr, num_rows uintpt // Fortunately, *alpha data is persistent, so we can go back // one row and finish alpha blending, now that the fancy upscaler // completed the YUV->RGB interpolation. - *(*uintptr)(unsafe.Pointer(alpha)) -= (uintptr((*VP8Io)(unsafe.Pointer(io)).width)) + *(*uintptr)(unsafe.Pointer(alpha)) -= uintptr((*VP8Io)(unsafe.Pointer(io)).width) } - if (((*VP8Io)(unsafe.Pointer(io)).crop_top + (*VP8Io)(unsafe.Pointer(io)).mb_y) + (*VP8Io)(unsafe.Pointer(io)).mb_h) == (*VP8Io)(unsafe.Pointer(io)).crop_bottom { + if (*VP8Io)(unsafe.Pointer(io)).crop_top+(*VP8Io)(unsafe.Pointer(io)).mb_y+(*VP8Io)(unsafe.Pointer(io)).mb_h == (*VP8Io)(unsafe.Pointer(io)).crop_bottom { // If it's the very last call, we process all the remaining rows! - *(*int32)(unsafe.Pointer(num_rows)) = (((*VP8Io)(unsafe.Pointer(io)).crop_bottom - (*VP8Io)(unsafe.Pointer(io)).crop_top) - start_y) + *(*int32)(unsafe.Pointer(num_rows)) = (*VP8Io)(unsafe.Pointer(io)).crop_bottom - (*VP8Io)(unsafe.Pointer(io)).crop_top - start_y } } return start_y @@ -7602,21 +7342,21 @@ func EmitAlphaRGB(tls *libc.TLS, io uintptr, p uintptr, expected_num_lines_out i defer tls.Free(12) *(*uintptr)(unsafe.Pointer(bp /* alpha */)) = (*VP8Io)(unsafe.Pointer(io)).a - if *(*uintptr)(unsafe.Pointer(bp /* alpha */)) != (uintptr(0)) { + if *(*uintptr)(unsafe.Pointer(bp)) != uintptr(0) { var mb_w int32 = (*VP8Io)(unsafe.Pointer(io)).mb_w var colorspace WEBP_CSP_MODE = (*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace - var alpha_first int32 = (libc.Bool32((colorspace == MODE_ARGB) || (colorspace == MODE_Argb))) - var buf uintptr = ((*WebPDecParams)(unsafe.Pointer(p)).output + 16 /* &.u */) /* &.RGBA */ + var alpha_first int32 = libc.Bool32(colorspace == MODE_ARGB || colorspace == MODE_Argb) + var buf uintptr = (*WebPDecParams)(unsafe.Pointer(p)).output + 16 // var num_rows int32 at bp+8, 4 - var start_y size_t = size_t(GetAlphaSourceRow(tls, io, (bp) /* &alpha */, (bp + 8) /* &num_rows */)) - var base_rgba uintptr = ((*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr((start_y * size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)))) - var dst uintptr = (base_rgba + uintptr((func() int32 { + var start_y size_t = size_t(GetAlphaSourceRow(tls, io, bp, bp+8)) + var base_rgba uintptr = (*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr(start_y*size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)) + var dst uintptr = base_rgba + uintptr(func() int32 { if alpha_first != 0 { return 0 } return 3 - }()))) + }()) var has_alpha int32 = (*struct { f func(*libc.TLS, uintptr, int32, int32, int32, uintptr, int32) int32 })(unsafe.Pointer(&struct{ uintptr }{WebPDispatchAlpha})).f(tls, *(*uintptr)(unsafe.Pointer(bp /* alpha */)), (*VP8Io)(unsafe.Pointer(io)).width, mb_w, @@ -7624,7 +7364,7 @@ func EmitAlphaRGB(tls *libc.TLS, io uintptr, p uintptr, expected_num_lines_out i _ = expected_num_lines_out // has_alpha is true if there's non-trivial alpha to premultiply with. - if (has_alpha != 0) && (WebPIsPremultipliedMode(tls, colorspace) != 0) { + if has_alpha != 0 && WebPIsPremultipliedMode(tls, colorspace) != 0 { (*struct { f func(*libc.TLS, uintptr, int32, int32, int32, int32) })(unsafe.Pointer(&struct{ uintptr }{WebPApplyAlphaMultiply})).f(tls, base_rgba, alpha_first, @@ -7639,31 +7379,31 @@ func EmitAlphaRGBA4444(tls *libc.TLS, io uintptr, p uintptr, expected_num_lines_ defer tls.Free(12) *(*uintptr)(unsafe.Pointer(bp /* alpha */)) = (*VP8Io)(unsafe.Pointer(io)).a - if *(*uintptr)(unsafe.Pointer(bp /* alpha */)) != (uintptr(0)) { + if *(*uintptr)(unsafe.Pointer(bp)) != uintptr(0) { var mb_w int32 = (*VP8Io)(unsafe.Pointer(io)).mb_w var colorspace WEBP_CSP_MODE = (*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace - var buf uintptr = ((*WebPDecParams)(unsafe.Pointer(p)).output + 16 /* &.u */) /* &.RGBA */ + var buf uintptr = (*WebPDecParams)(unsafe.Pointer(p)).output + 16 // var num_rows int32 at bp+8, 4 - var start_y size_t = size_t(GetAlphaSourceRow(tls, io, (bp) /* &alpha */, (bp + 8) /* &num_rows */)) - var base_rgba uintptr = ((*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr((start_y * size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)))) - var alpha_dst uintptr = (base_rgba + uintptr(1)) + var start_y size_t = size_t(GetAlphaSourceRow(tls, io, bp, bp+8)) + var base_rgba uintptr = (*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr(start_y*size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)) + var alpha_dst uintptr = base_rgba + uintptr(1) var alpha_mask uint32_t = uint32_t(0x0f) var i int32 var j int32 for j = 0; j < *(*int32)(unsafe.Pointer(bp + 8 /* num_rows */)); j++ { for i = 0; i < mb_w; i++ { // Fill in the alpha value (converted to 4 bits). - var alpha_value uint32_t = (uint32_t(int32(*(*uint8_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp /* alpha */)) + uintptr(i)))) >> 4)) - *(*uint8_t)(unsafe.Pointer(alpha_dst + uintptr((2 * i)))) = (uint8_t((uint32_t(int32(*(*uint8_t)(unsafe.Pointer(alpha_dst + uintptr((2 * i))))) & 0xf0)) | alpha_value)) - alpha_mask = alpha_mask & (alpha_value) + var alpha_value uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + uintptr(i)))) >> 4) + *(*uint8_t)(unsafe.Pointer(alpha_dst + uintptr(2*i))) = uint8_t(uint32_t(int32(*(*uint8_t)(unsafe.Pointer(alpha_dst + uintptr(2*i))))&0xf0) | alpha_value) + alpha_mask = alpha_mask & alpha_value } *(*uintptr)(unsafe.Pointer(bp /* alpha */)) += uintptr((*VP8Io)(unsafe.Pointer(io)).width) alpha_dst += uintptr((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride) } _ = expected_num_lines_out - if (alpha_mask != uint32_t(0x0f)) && (WebPIsPremultipliedMode(tls, colorspace) != 0) { + if alpha_mask != uint32_t(0x0f) && WebPIsPremultipliedMode(tls, colorspace) != 0 { (*struct { f func(*libc.TLS, uintptr, int32, int32, int32) })(unsafe.Pointer(&struct{ uintptr }{WebPApplyAlphaMultiply4444})).f(tls, base_rgba, mb_w, *(*int32)(unsafe.Pointer(bp + 8 /* num_rows */)), (*WebPRGBABuffer)(unsafe.Pointer(buf)).stride) @@ -7679,19 +7419,19 @@ func Rescale(tls *libc.TLS, src uintptr, src_stride int32, new_lines int32, wrk var num_lines_out int32 = 0 for new_lines > 0 { // import new contributions of source rows. var lines_in int32 = WebPRescalerImport(tls, wrk, new_lines, src, src_stride) - src += (uintptr(lines_in * src_stride)) - new_lines = new_lines - (lines_in) - num_lines_out = num_lines_out + (WebPRescalerExport(tls, wrk)) // emit output row(s) + src += uintptr(lines_in * src_stride) + new_lines = new_lines - lines_in + num_lines_out = num_lines_out + WebPRescalerExport(tls, wrk) // emit output row(s) } return num_lines_out } func EmitRescaledYUV(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:252:12: */ var mb_h int32 = (*VP8Io)(unsafe.Pointer(io)).mb_h - var uv_mb_h int32 = ((mb_h + 1) >> 1) + var uv_mb_h int32 = (mb_h + 1) >> 1 var scaler uintptr = (*WebPDecParams)(unsafe.Pointer(p)).scaler_y var num_lines_out int32 = 0 - if (WebPIsAlphaMode(tls, (*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace) != 0) && ((*VP8Io)(unsafe.Pointer(io)).a != (uintptr(0))) { + if WebPIsAlphaMode(tls, (*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace) != 0 && (*VP8Io)(unsafe.Pointer(io)).a != uintptr(0) { // Before rescaling, we premultiply the luma directly into the io->y // internal buffer. This is OK since these samples are not used for // intra-prediction (the top samples are saved in cache_y_/u_/v_). @@ -7706,17 +7446,17 @@ func EmitRescaledYUV(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:2 } func EmitRescaledAlphaYUV(tls *libc.TLS, io uintptr, p uintptr, expected_num_lines_out int32) int32 { /* io_dec.c:271:12: */ - var buf uintptr = ((*WebPDecParams)(unsafe.Pointer(p)).output + 16 /* &.u */) /* &.YUVA */ - var dst_a uintptr = ((*WebPYUVABuffer)(unsafe.Pointer(buf)).a + uintptr((size_t((*WebPDecParams)(unsafe.Pointer(p)).last_y) * size_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride)))) - if (*VP8Io)(unsafe.Pointer(io)).a != (uintptr(0)) { - var dst_y uintptr = ((*WebPYUVABuffer)(unsafe.Pointer(buf)).y + uintptr((size_t((*WebPDecParams)(unsafe.Pointer(p)).last_y) * size_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride)))) + var buf uintptr = (*WebPDecParams)(unsafe.Pointer(p)).output + 16 + var dst_a uintptr = (*WebPYUVABuffer)(unsafe.Pointer(buf)).a + uintptr(size_t((*WebPDecParams)(unsafe.Pointer(p)).last_y)*size_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride)) + if (*VP8Io)(unsafe.Pointer(io)).a != uintptr(0) { + var dst_y uintptr = (*WebPYUVABuffer)(unsafe.Pointer(buf)).y + uintptr(size_t((*WebPDecParams)(unsafe.Pointer(p)).last_y)*size_t((*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride)) var num_lines_out int32 = Rescale(tls, (*VP8Io)(unsafe.Pointer(io)).a, (*VP8Io)(unsafe.Pointer(io)).width, (*VP8Io)(unsafe.Pointer(io)).mb_h, (*WebPDecParams)(unsafe.Pointer(p)).scaler_a) if num_lines_out > 0 { // unmultiply the Y WebPMultRows(tls, dst_y, (*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride, dst_a, (*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride, (*WebPRescaler)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).scaler_a)).dst_width, num_lines_out, 1) } - } else if (*WebPYUVABuffer)(unsafe.Pointer(buf)).a != (uintptr(0)) { + } else if (*WebPYUVABuffer)(unsafe.Pointer(buf)).a != uintptr(0) { // the user requested alpha, but there is none, set it to opaque. FillAlphaPlane(tls, dst_a, (*VP8Io)(unsafe.Pointer(io)).scaled_width, expected_num_lines_out, @@ -7727,16 +7467,16 @@ func EmitRescaledAlphaYUV(tls *libc.TLS, io uintptr, p uintptr, expected_num_lin func InitYUVRescaler(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:292:12: */ var has_alpha int32 = WebPIsAlphaMode(tls, (*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace) - var buf uintptr = ((*WebPDecParams)(unsafe.Pointer(p)).output + 16 /* &.u */) /* &.YUVA */ + var buf uintptr = (*WebPDecParams)(unsafe.Pointer(p)).output + 16 var out_width int32 = (*VP8Io)(unsafe.Pointer(io)).scaled_width var out_height int32 = (*VP8Io)(unsafe.Pointer(io)).scaled_height - var uv_out_width int32 = ((out_width + 1) >> 1) - var uv_out_height int32 = ((out_height + 1) >> 1) - var uv_in_width int32 = (((*VP8Io)(unsafe.Pointer(io)).mb_w + 1) >> 1) - var uv_in_height int32 = (((*VP8Io)(unsafe.Pointer(io)).mb_h + 1) >> 1) + var uv_out_width int32 = (out_width + 1) >> 1 + var uv_out_height int32 = (out_height + 1) >> 1 + var uv_in_width int32 = ((*VP8Io)(unsafe.Pointer(io)).mb_w + 1) >> 1 + var uv_in_height int32 = ((*VP8Io)(unsafe.Pointer(io)).mb_h + 1) >> 1 // scratch memory for luma rescaler - var work_size size_t = (uint64(2) * size_t(out_width)) - var uv_work_size size_t = (size_t(2 * uv_out_width)) // and for each u/v ones + var work_size size_t = uint64(2) * size_t(out_width) + var uv_work_size size_t = size_t(2 * uv_out_width) // and for each u/v ones var total_size uint64_t var rescaler_size size_t var work uintptr @@ -7748,40 +7488,40 @@ func InitYUVRescaler(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:2 num_rescalers = 3 } - total_size = ((work_size + (uint64(2) * uv_work_size)) * uint64_t(unsafe.Sizeof(rescaler_t(0)))) + total_size = (work_size + uint64(2)*uv_work_size) * uint64_t(unsafe.Sizeof(rescaler_t(0))) if has_alpha != 0 { - total_size = total_size + (work_size * uint64_t(unsafe.Sizeof(rescaler_t(0)))) + total_size = total_size + work_size*uint64_t(unsafe.Sizeof(rescaler_t(0))) } - rescaler_size = ((uint64(num_rescalers) * uint64(unsafe.Sizeof(WebPRescaler{}))) + uint64(31)) - total_size = total_size + (rescaler_size) + rescaler_size = uint64(num_rescalers)*uint64(unsafe.Sizeof(WebPRescaler{})) + uint64(31) + total_size = total_size + rescaler_size if !(CheckSizeOverflow(tls, total_size) != 0) { return 0 } (*WebPDecParams)(unsafe.Pointer(p)).memory = WebPSafeMalloc(tls, 1, total_size) - if (*WebPDecParams)(unsafe.Pointer(p)).memory == (uintptr(0)) { + if (*WebPDecParams)(unsafe.Pointer(p)).memory == uintptr(0) { return 0 // memory error } work = (*WebPDecParams)(unsafe.Pointer(p)).memory - scalers = (uintptr((uintptr_t(((work + uintptr(total_size)) - uintptr(rescaler_size))) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) - (*WebPDecParams)(unsafe.Pointer(p)).scaler_y = (scalers) - (*WebPDecParams)(unsafe.Pointer(p)).scaler_u = (scalers + 1*104) - (*WebPDecParams)(unsafe.Pointer(p)).scaler_v = (scalers + 2*104) + scalers = uintptr((uintptr_t(work+uintptr(total_size)-uintptr(rescaler_size)) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) + (*WebPDecParams)(unsafe.Pointer(p)).scaler_y = scalers + (*WebPDecParams)(unsafe.Pointer(p)).scaler_u = scalers + 1*104 + (*WebPDecParams)(unsafe.Pointer(p)).scaler_v = scalers + 2*104 (*WebPDecParams)(unsafe.Pointer(p)).scaler_a = func() uintptr { if has_alpha != 0 { - return (scalers + 3*104) + return scalers + 3*104 } - return (uintptr(0)) + return uintptr(0) }() - if (!(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_y, (*VP8Io)(unsafe.Pointer(io)).mb_w, (*VP8Io)(unsafe.Pointer(io)).mb_h, + if !(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_y, (*VP8Io)(unsafe.Pointer(io)).mb_w, (*VP8Io)(unsafe.Pointer(io)).mb_h, (*WebPYUVABuffer)(unsafe.Pointer(buf)).y, out_width, out_height, (*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride, 1, work) != 0) || !(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_u, uv_in_width, uv_in_height, (*WebPYUVABuffer)(unsafe.Pointer(buf)).u, uv_out_width, uv_out_height, (*WebPYUVABuffer)(unsafe.Pointer(buf)).u_stride, 1, - (work+uintptr(work_size)*4)) != 0)) || !(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_v, uv_in_width, uv_in_height, + work+uintptr(work_size)*4) != 0) || !(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_v, uv_in_width, uv_in_height, (*WebPYUVABuffer)(unsafe.Pointer(buf)).v, uv_out_width, uv_out_height, (*WebPYUVABuffer)(unsafe.Pointer(buf)).v_stride, 1, - ((work+uintptr(work_size)*4)+uintptr(uv_work_size)*4)) != 0) { + work+uintptr(work_size)*4+uintptr(uv_work_size)*4) != 0) { return 0 } (*WebPDecParams)(unsafe.Pointer(p)).emit = *(*uintptr)(unsafe.Pointer(&struct { @@ -7791,7 +7531,7 @@ func InitYUVRescaler(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:2 if has_alpha != 0 { if !(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_a, (*VP8Io)(unsafe.Pointer(io)).mb_w, (*VP8Io)(unsafe.Pointer(io)).mb_h, (*WebPYUVABuffer)(unsafe.Pointer(buf)).a, out_width, out_height, (*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride, 1, - ((work+uintptr(work_size)*4)+uintptr((uint64(2)*uv_work_size))*4)) != 0) { + work+uintptr(work_size)*4+uintptr(uint64(2)*uv_work_size)*4) != 0) { return 0 } (*WebPDecParams)(unsafe.Pointer(p)).emit_alpha = *(*uintptr)(unsafe.Pointer(&struct { @@ -7807,12 +7547,12 @@ func InitYUVRescaler(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:2 func ExportRGB(tls *libc.TLS, p uintptr, y_pos int32) int32 { /* io_dec.c:361:12: */ var convert WebPYUV444Converter = WebPYUV444Converters[(*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace] - var buf uintptr = ((*WebPDecParams)(unsafe.Pointer(p)).output + 16 /* &.u */) /* &.RGBA */ - var dst uintptr = ((*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr((size_t(y_pos) * size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)))) + var buf uintptr = (*WebPDecParams)(unsafe.Pointer(p)).output + 16 + var dst uintptr = (*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr(size_t(y_pos)*size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)) var num_lines_out int32 = 0 // For RGB rescaling, because of the YUV420, current scan position // U/V can be +1/-1 line from the Y one. Hence the double test. - for (WebPRescalerHasPendingOutput(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_y) != 0) && (WebPRescalerHasPendingOutput(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_u) != 0) { + for WebPRescalerHasPendingOutput(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_y) != 0 && WebPRescalerHasPendingOutput(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_u) != 0 { WebPRescalerExportRow(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_y) WebPRescalerExportRow(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_u) @@ -7829,57 +7569,57 @@ func ExportRGB(tls *libc.TLS, p uintptr, y_pos int32) int32 { /* io_dec.c:361:12 func EmitRescaledRGB(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:384:12: */ var mb_h int32 = (*VP8Io)(unsafe.Pointer(io)).mb_h - var uv_mb_h int32 = ((mb_h + 1) >> 1) + var uv_mb_h int32 = (mb_h + 1) >> 1 var j int32 = 0 var uv_j int32 = 0 var num_lines_out int32 = 0 for j < mb_h { - var y_lines_in int32 = WebPRescalerImport(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_y, (mb_h - j), - ((*VP8Io)(unsafe.Pointer(io)).y + uintptr((size_t(j) * size_t((*VP8Io)(unsafe.Pointer(io)).y_stride)))), (*VP8Io)(unsafe.Pointer(io)).y_stride) - j = j + (y_lines_in) - if WebPRescaleNeededLines(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_u, (uv_mb_h-uv_j)) != 0 { + var y_lines_in int32 = WebPRescalerImport(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_y, mb_h-j, + (*VP8Io)(unsafe.Pointer(io)).y+uintptr(size_t(j)*size_t((*VP8Io)(unsafe.Pointer(io)).y_stride)), (*VP8Io)(unsafe.Pointer(io)).y_stride) + j = j + y_lines_in + if WebPRescaleNeededLines(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_u, uv_mb_h-uv_j) != 0 { var u_lines_in int32 = WebPRescalerImport(tls, - (*WebPDecParams)(unsafe.Pointer(p)).scaler_u, (uv_mb_h - uv_j), ((*VP8Io)(unsafe.Pointer(io)).u + uintptr((size_t(uv_j) * size_t((*VP8Io)(unsafe.Pointer(io)).uv_stride)))), + (*WebPDecParams)(unsafe.Pointer(p)).scaler_u, uv_mb_h-uv_j, (*VP8Io)(unsafe.Pointer(io)).u+uintptr(size_t(uv_j)*size_t((*VP8Io)(unsafe.Pointer(io)).uv_stride)), (*VP8Io)(unsafe.Pointer(io)).uv_stride) var v_lines_in int32 = WebPRescalerImport(tls, - (*WebPDecParams)(unsafe.Pointer(p)).scaler_v, (uv_mb_h - uv_j), ((*VP8Io)(unsafe.Pointer(io)).v + uintptr((size_t(uv_j) * size_t((*VP8Io)(unsafe.Pointer(io)).uv_stride)))), + (*WebPDecParams)(unsafe.Pointer(p)).scaler_v, uv_mb_h-uv_j, (*VP8Io)(unsafe.Pointer(io)).v+uintptr(size_t(uv_j)*size_t((*VP8Io)(unsafe.Pointer(io)).uv_stride)), (*VP8Io)(unsafe.Pointer(io)).uv_stride) _ = v_lines_in _ = v_lines_in // remove a gcc warning - uv_j = uv_j + (u_lines_in) + uv_j = uv_j + u_lines_in } - num_lines_out = num_lines_out + (ExportRGB(tls, p, ((*WebPDecParams)(unsafe.Pointer(p)).last_y + num_lines_out))) + num_lines_out = num_lines_out + ExportRGB(tls, p, (*WebPDecParams)(unsafe.Pointer(p)).last_y+num_lines_out) } return num_lines_out } func ExportAlpha(tls *libc.TLS, p uintptr, y_pos int32, max_lines_out int32) int32 { /* io_dec.c:410:12: */ - var buf uintptr = ((*WebPDecParams)(unsafe.Pointer(p)).output + 16 /* &.u */) /* &.RGBA */ - var base_rgba uintptr = ((*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr((size_t(y_pos) * size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)))) + var buf uintptr = (*WebPDecParams)(unsafe.Pointer(p)).output + 16 + var base_rgba uintptr = (*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr(size_t(y_pos)*size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)) var colorspace WEBP_CSP_MODE = (*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace - var alpha_first int32 = (libc.Bool32((colorspace == MODE_ARGB) || (colorspace == MODE_Argb))) - var dst uintptr = (base_rgba + uintptr((func() int32 { + var alpha_first int32 = libc.Bool32(colorspace == MODE_ARGB || colorspace == MODE_Argb) + var dst uintptr = base_rgba + uintptr(func() int32 { if alpha_first != 0 { return 0 } return 3 - }()))) + }()) var num_lines_out int32 = 0 var is_premult_alpha int32 = WebPIsPremultipliedMode(tls, colorspace) var non_opaque uint32_t = uint32_t(0) var width int32 = (*WebPRescaler)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).scaler_a)).dst_width - for (WebPRescalerHasPendingOutput(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_a) != 0) && (num_lines_out < max_lines_out) { + for WebPRescalerHasPendingOutput(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_a) != 0 && num_lines_out < max_lines_out { WebPRescalerExportRow(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_a) - non_opaque = non_opaque | (uint32_t((*struct { + non_opaque = non_opaque | uint32_t((*struct { f func(*libc.TLS, uintptr, int32, int32, int32, uintptr, int32) int32 - })(unsafe.Pointer(&struct{ uintptr }{WebPDispatchAlpha})).f(tls, (*WebPRescaler)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).scaler_a)).dst, 0, width, 1, dst, 0))) + })(unsafe.Pointer(&struct{ uintptr }{WebPDispatchAlpha})).f(tls, (*WebPRescaler)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).scaler_a)).dst, 0, width, 1, dst, 0)) dst += uintptr((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride) num_lines_out++ } - if (is_premult_alpha != 0) && (non_opaque != 0) { + if is_premult_alpha != 0 && non_opaque != 0 { (*struct { f func(*libc.TLS, uintptr, int32, int32, int32, int32) })(unsafe.Pointer(&struct{ uintptr }{WebPApplyAlphaMultiply})).f(tls, base_rgba, alpha_first, @@ -7889,29 +7629,29 @@ func ExportAlpha(tls *libc.TLS, p uintptr, y_pos int32, max_lines_out int32) int } func ExportAlphaRGBA4444(tls *libc.TLS, p uintptr, y_pos int32, max_lines_out int32) int32 { /* io_dec.c:437:12: */ - var buf uintptr = ((*WebPDecParams)(unsafe.Pointer(p)).output + 16 /* &.u */) /* &.RGBA */ - var base_rgba uintptr = ((*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr((size_t(y_pos) * size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)))) - var alpha_dst uintptr = (base_rgba + uintptr(1)) + var buf uintptr = (*WebPDecParams)(unsafe.Pointer(p)).output + 16 + var base_rgba uintptr = (*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr(size_t(y_pos)*size_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)) + var alpha_dst uintptr = base_rgba + uintptr(1) var num_lines_out int32 = 0 var colorspace WEBP_CSP_MODE = (*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace var width int32 = (*WebPRescaler)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).scaler_a)).dst_width var is_premult_alpha int32 = WebPIsPremultipliedMode(tls, colorspace) var alpha_mask uint32_t = uint32_t(0x0f) - for (WebPRescalerHasPendingOutput(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_a) != 0) && (num_lines_out < max_lines_out) { + for WebPRescalerHasPendingOutput(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_a) != 0 && num_lines_out < max_lines_out { var i int32 WebPRescalerExportRow(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_a) for i = 0; i < width; i++ { // Fill in the alpha value (converted to 4 bits). - var alpha_value uint32_t = (uint32_t(int32(*(*uint8_t)(unsafe.Pointer((*WebPRescaler)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).scaler_a)).dst + uintptr(i)))) >> 4)) - *(*uint8_t)(unsafe.Pointer(alpha_dst + uintptr((2 * i)))) = (uint8_t((uint32_t(int32(*(*uint8_t)(unsafe.Pointer(alpha_dst + uintptr((2 * i))))) & 0xf0)) | alpha_value)) - alpha_mask = alpha_mask & (alpha_value) + var alpha_value uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer((*WebPRescaler)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).scaler_a)).dst + uintptr(i)))) >> 4) + *(*uint8_t)(unsafe.Pointer(alpha_dst + uintptr(2*i))) = uint8_t(uint32_t(int32(*(*uint8_t)(unsafe.Pointer(alpha_dst + uintptr(2*i))))&0xf0) | alpha_value) + alpha_mask = alpha_mask & alpha_value } alpha_dst += uintptr((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride) num_lines_out++ } - if (is_premult_alpha != 0) && (alpha_mask != uint32_t(0x0f)) { + if is_premult_alpha != 0 && alpha_mask != uint32_t(0x0f) { (*struct { f func(*libc.TLS, uintptr, int32, int32, int32) })(unsafe.Pointer(&struct{ uintptr }{WebPApplyAlphaMultiply4444})).f(tls, base_rgba, width, num_lines_out, (*WebPRGBABuffer)(unsafe.Pointer(buf)).stride) @@ -7920,17 +7660,17 @@ func ExportAlphaRGBA4444(tls *libc.TLS, p uintptr, y_pos int32, max_lines_out in } func EmitRescaledAlphaRGB(tls *libc.TLS, io uintptr, p uintptr, expected_num_out_lines int32) int32 { /* io_dec.c:472:12: */ - if (*VP8Io)(unsafe.Pointer(io)).a != (uintptr(0)) { + if (*VP8Io)(unsafe.Pointer(io)).a != uintptr(0) { var scaler uintptr = (*WebPDecParams)(unsafe.Pointer(p)).scaler_a var lines_left int32 = expected_num_out_lines - var y_end int32 = ((*WebPDecParams)(unsafe.Pointer(p)).last_y + lines_left) + var y_end int32 = (*WebPDecParams)(unsafe.Pointer(p)).last_y + lines_left for lines_left > 0 { - var row_offset int64_t = (int64_t((*WebPRescaler)(unsafe.Pointer(scaler)).src_y) - int64_t((*VP8Io)(unsafe.Pointer(io)).mb_y)) - WebPRescalerImport(tls, scaler, (((*VP8Io)(unsafe.Pointer(io)).mb_h + (*VP8Io)(unsafe.Pointer(io)).mb_y) - (*WebPRescaler)(unsafe.Pointer(scaler)).src_y), - ((*VP8Io)(unsafe.Pointer(io)).a + uintptr((row_offset * int64_t((*VP8Io)(unsafe.Pointer(io)).width)))), (*VP8Io)(unsafe.Pointer(io)).width) - lines_left = lines_left - ((*struct { + var row_offset int64_t = int64_t((*WebPRescaler)(unsafe.Pointer(scaler)).src_y) - int64_t((*VP8Io)(unsafe.Pointer(io)).mb_y) + WebPRescalerImport(tls, scaler, (*VP8Io)(unsafe.Pointer(io)).mb_h+(*VP8Io)(unsafe.Pointer(io)).mb_y-(*WebPRescaler)(unsafe.Pointer(scaler)).src_y, + (*VP8Io)(unsafe.Pointer(io)).a+uintptr(row_offset*int64_t((*VP8Io)(unsafe.Pointer(io)).width)), (*VP8Io)(unsafe.Pointer(io)).width) + lines_left = lines_left - (*struct { f func(*libc.TLS, uintptr, int32, int32) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPDecParams)(unsafe.Pointer(p)).emit_alpha_row})).f(tls, p, (y_end - lines_left), lines_left)) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPDecParams)(unsafe.Pointer(p)).emit_alpha_row})).f(tls, p, y_end-lines_left, lines_left) } } return 0 @@ -7940,10 +7680,10 @@ func InitRGBRescaler(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:4 var has_alpha int32 = WebPIsAlphaMode(tls, (*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace) var out_width int32 = (*VP8Io)(unsafe.Pointer(io)).scaled_width var out_height int32 = (*VP8Io)(unsafe.Pointer(io)).scaled_height - var uv_in_width int32 = (((*VP8Io)(unsafe.Pointer(io)).mb_w + 1) >> 1) - var uv_in_height int32 = (((*VP8Io)(unsafe.Pointer(io)).mb_h + 1) >> 1) + var uv_in_width int32 = ((*VP8Io)(unsafe.Pointer(io)).mb_w + 1) >> 1 + var uv_in_height int32 = ((*VP8Io)(unsafe.Pointer(io)).mb_h + 1) >> 1 // scratch memory for one rescaler - var work_size size_t = (uint64(2) * size_t(out_width)) + var work_size size_t = uint64(2) * size_t(out_width) var work uintptr // rescalers work area var tmp uintptr // tmp storage for scaled YUV444 samples before RGB conversion var tmp_size1 uint64_t @@ -7958,40 +7698,40 @@ func InitRGBRescaler(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:4 num_rescalers = 3 } - tmp_size1 = (uint64_t(num_rescalers) * work_size) - tmp_size2 = (uint64_t(num_rescalers) * uint64_t(out_width)) - total_size = ((tmp_size1 * uint64_t(unsafe.Sizeof(rescaler_t(0)))) + (tmp_size2 * uint64_t(unsafe.Sizeof(uint8_t(0))))) - rescaler_size = ((uint64(num_rescalers) * uint64(unsafe.Sizeof(WebPRescaler{}))) + uint64(31)) - total_size = total_size + (rescaler_size) + tmp_size1 = uint64_t(num_rescalers) * work_size + tmp_size2 = uint64_t(num_rescalers) * uint64_t(out_width) + total_size = tmp_size1*uint64_t(unsafe.Sizeof(rescaler_t(0))) + tmp_size2*uint64_t(unsafe.Sizeof(uint8_t(0))) + rescaler_size = uint64(num_rescalers)*uint64(unsafe.Sizeof(WebPRescaler{})) + uint64(31) + total_size = total_size + rescaler_size if !(CheckSizeOverflow(tls, total_size) != 0) { return 0 } (*WebPDecParams)(unsafe.Pointer(p)).memory = WebPSafeMalloc(tls, 1, total_size) - if (*WebPDecParams)(unsafe.Pointer(p)).memory == (uintptr(0)) { + if (*WebPDecParams)(unsafe.Pointer(p)).memory == uintptr(0) { return 0 // memory error } work = (*WebPDecParams)(unsafe.Pointer(p)).memory - tmp = (work + uintptr(tmp_size1)*4) + tmp = work + uintptr(tmp_size1)*4 - scalers = (uintptr((uintptr_t(((work + uintptr(total_size)) - uintptr(rescaler_size))) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) - (*WebPDecParams)(unsafe.Pointer(p)).scaler_y = (scalers) - (*WebPDecParams)(unsafe.Pointer(p)).scaler_u = (scalers + 1*104) - (*WebPDecParams)(unsafe.Pointer(p)).scaler_v = (scalers + 2*104) + scalers = uintptr((uintptr_t(work+uintptr(total_size)-uintptr(rescaler_size)) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) + (*WebPDecParams)(unsafe.Pointer(p)).scaler_y = scalers + (*WebPDecParams)(unsafe.Pointer(p)).scaler_u = scalers + 1*104 + (*WebPDecParams)(unsafe.Pointer(p)).scaler_v = scalers + 2*104 (*WebPDecParams)(unsafe.Pointer(p)).scaler_a = func() uintptr { if has_alpha != 0 { - return (scalers + 3*104) + return scalers + 3*104 } - return (uintptr(0)) + return uintptr(0) }() - if (!(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_y, (*VP8Io)(unsafe.Pointer(io)).mb_w, (*VP8Io)(unsafe.Pointer(io)).mb_h, - (tmp+uintptr((0*out_width))), out_width, out_height, 0, 1, - (work+uintptr((uint64(0)*work_size))*4)) != 0) || !(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_u, uv_in_width, uv_in_height, - (tmp+uintptr((1*out_width))), out_width, out_height, 0, 1, - (work+uintptr((uint64(1)*work_size))*4)) != 0)) || !(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_v, uv_in_width, uv_in_height, - (tmp+uintptr((2*out_width))), out_width, out_height, 0, 1, - (work+uintptr((uint64(2)*work_size))*4)) != 0) { + if !(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_y, (*VP8Io)(unsafe.Pointer(io)).mb_w, (*VP8Io)(unsafe.Pointer(io)).mb_h, + tmp+uintptr(0*out_width), out_width, out_height, 0, 1, + work+uintptr(uint64(0)*work_size)*4) != 0) || !(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_u, uv_in_width, uv_in_height, + tmp+uintptr(1*out_width), out_width, out_height, 0, 1, + work+uintptr(uint64(1)*work_size)*4) != 0) || !(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_v, uv_in_width, uv_in_height, + tmp+uintptr(2*out_width), out_width, out_height, 0, 1, + work+uintptr(uint64(2)*work_size)*4) != 0) { return 0 } (*WebPDecParams)(unsafe.Pointer(p)).emit = *(*uintptr)(unsafe.Pointer(&struct { @@ -8001,14 +7741,14 @@ func InitRGBRescaler(tls *libc.TLS, io uintptr, p uintptr) int32 { /* io_dec.c:4 if has_alpha != 0 { if !(WebPRescalerInit(tls, (*WebPDecParams)(unsafe.Pointer(p)).scaler_a, (*VP8Io)(unsafe.Pointer(io)).mb_w, (*VP8Io)(unsafe.Pointer(io)).mb_h, - (tmp+uintptr((3*out_width))), out_width, out_height, 0, 1, - (work+uintptr((uint64(3)*work_size))*4)) != 0) { + tmp+uintptr(3*out_width), out_width, out_height, 0, 1, + work+uintptr(uint64(3)*work_size)*4) != 0) { return 0 } (*WebPDecParams)(unsafe.Pointer(p)).emit_alpha = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32) int32 }{EmitRescaledAlphaRGB})) - if ((*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace == MODE_RGBA_4444) || ((*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace == MODE_rgbA_4444) { + if (*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace == MODE_RGBA_4444 || (*WebPDecBuffer)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(p)).output)).colorspace == MODE_rgbA_4444 { (*WebPDecParams)(unsafe.Pointer(p)).emit_alpha_row = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, int32, int32) int32 }{ExportAlphaRGBA4444})) @@ -8031,10 +7771,10 @@ func CustomSetup(tls *libc.TLS, io uintptr) int32 { /* io_dec.c:563:12: */ var is_rgb int32 = WebPIsRGBMode(tls, colorspace) var is_alpha int32 = WebPIsAlphaMode(tls, colorspace) - (*WebPDecParams)(unsafe.Pointer(p)).memory = (uintptr(0)) - (*WebPDecParams)(unsafe.Pointer(p)).emit = (uintptr(0)) - (*WebPDecParams)(unsafe.Pointer(p)).emit_alpha = (uintptr(0)) - (*WebPDecParams)(unsafe.Pointer(p)).emit_alpha_row = (uintptr(0)) + (*WebPDecParams)(unsafe.Pointer(p)).memory = uintptr(0) + (*WebPDecParams)(unsafe.Pointer(p)).emit = uintptr(0) + (*WebPDecParams)(unsafe.Pointer(p)).emit_alpha = uintptr(0) + (*WebPDecParams)(unsafe.Pointer(p)).emit_alpha_row = uintptr(0) if !(WebPIoInitFromOptions(tls, (*WebPDecParams)(unsafe.Pointer(p)).options, io, func() uint32 { if is_alpha != 0 { return MODE_YUV @@ -8043,7 +7783,7 @@ func CustomSetup(tls *libc.TLS, io uintptr) int32 { /* io_dec.c:563:12: */ }()) != 0) { return 0 } - if (is_alpha != 0) && (WebPIsPremultipliedMode(tls, colorspace) != 0) { + if is_alpha != 0 && WebPIsPremultipliedMode(tls, colorspace) != 0 { WebPInitUpsamplers(tls) } if (*VP8Io)(unsafe.Pointer(io)).use_scaling != 0 { @@ -8063,14 +7803,14 @@ func CustomSetup(tls *libc.TLS, io uintptr) int32 { /* io_dec.c:563:12: */ f func(*libc.TLS, uintptr, uintptr) int32 }{EmitSampledRGB})) // default if (*VP8Io)(unsafe.Pointer(io)).fancy_upsampling != 0 { - var uv_width int32 = (((*VP8Io)(unsafe.Pointer(io)).mb_w + 1) >> 1) - (*WebPDecParams)(unsafe.Pointer(p)).memory = WebPSafeMalloc(tls, 1, (size_t((*VP8Io)(unsafe.Pointer(io)).mb_w + (2 * uv_width)))) - if (*WebPDecParams)(unsafe.Pointer(p)).memory == (uintptr(0)) { + var uv_width int32 = ((*VP8Io)(unsafe.Pointer(io)).mb_w + 1) >> 1 + (*WebPDecParams)(unsafe.Pointer(p)).memory = WebPSafeMalloc(tls, 1, size_t((*VP8Io)(unsafe.Pointer(io)).mb_w+2*uv_width)) + if (*WebPDecParams)(unsafe.Pointer(p)).memory == uintptr(0) { return 0 // memory error. } (*WebPDecParams)(unsafe.Pointer(p)).tmp_y = (*WebPDecParams)(unsafe.Pointer(p)).memory - (*WebPDecParams)(unsafe.Pointer(p)).tmp_u = ((*WebPDecParams)(unsafe.Pointer(p)).tmp_y + uintptr((*VP8Io)(unsafe.Pointer(io)).mb_w)) - (*WebPDecParams)(unsafe.Pointer(p)).tmp_v = ((*WebPDecParams)(unsafe.Pointer(p)).tmp_u + uintptr(uv_width)) + (*WebPDecParams)(unsafe.Pointer(p)).tmp_u = (*WebPDecParams)(unsafe.Pointer(p)).tmp_y + uintptr((*VP8Io)(unsafe.Pointer(io)).mb_w) + (*WebPDecParams)(unsafe.Pointer(p)).tmp_v = (*WebPDecParams)(unsafe.Pointer(p)).tmp_u + uintptr(uv_width) (*WebPDecParams)(unsafe.Pointer(p)).emit = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) int32 }{EmitFancyRGB})) @@ -8083,7 +7823,7 @@ func CustomSetup(tls *libc.TLS, io uintptr) int32 { /* io_dec.c:563:12: */ } if is_alpha != 0 { // need transparency output (*WebPDecParams)(unsafe.Pointer(p)).emit_alpha = func() uintptr { - if (colorspace == MODE_RGBA_4444) || (colorspace == MODE_rgbA_4444) { + if colorspace == MODE_RGBA_4444 || colorspace == MODE_rgbA_4444 { return *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32) int32 }{EmitAlphaRGBA4444})) @@ -8116,18 +7856,18 @@ func CustomPut(tls *libc.TLS, io uintptr) int32 { /* io_dec.c:626:12: */ var mb_h int32 = (*VP8Io)(unsafe.Pointer(io)).mb_h var num_lines_out int32 - if (mb_w <= 0) || (mb_h <= 0) { + if mb_w <= 0 || mb_h <= 0 { return 0 } num_lines_out = (*struct { f func(*libc.TLS, uintptr, uintptr) int32 })(unsafe.Pointer(&struct{ uintptr }{(*WebPDecParams)(unsafe.Pointer(p)).emit})).f(tls, io, p) - if (*WebPDecParams)(unsafe.Pointer(p)).emit_alpha != (uintptr(0)) { + if (*WebPDecParams)(unsafe.Pointer(p)).emit_alpha != uintptr(0) { (*struct { f func(*libc.TLS, uintptr, uintptr, int32) int32 })(unsafe.Pointer(&struct{ uintptr }{(*WebPDecParams)(unsafe.Pointer(p)).emit_alpha})).f(tls, io, p, num_lines_out) } - *(*int32)(unsafe.Pointer((p + 32 /* &.last_y */))) += (num_lines_out) + *(*int32)(unsafe.Pointer(p + 32)) += num_lines_out return 1 } @@ -8136,7 +7876,7 @@ func CustomPut(tls *libc.TLS, io uintptr) int32 { /* io_dec.c:626:12: */ func CustomTeardown(tls *libc.TLS, io uintptr) { /* io_dec.c:646:13: */ var p uintptr = (*VP8Io)(unsafe.Pointer(io)).opaque WebPSafeFree(tls, (*WebPDecParams)(unsafe.Pointer(p)).memory) - (*WebPDecParams)(unsafe.Pointer(p)).memory = (uintptr(0)) + (*WebPDecParams)(unsafe.Pointer(p)).memory = uintptr(0) } //------------------------------------------------------------------------------ @@ -8210,7 +7950,7 @@ var kAcTable = [128]uint16_t{ // Paragraph 9.6 func VP8ParseQuant(tls *libc.TLS, dec uintptr) { /* quant_dec.c:62:6: */ - var br uintptr = (dec + 16 /* &.br_ */) + var br uintptr = dec + 16 var base_q0 int32 = int32(VP8GetValue(tls, br, 7)) var dqy1_dc int32 if VP8GetValue(tls, br, 1) != 0 { @@ -8243,42 +7983,42 @@ func VP8ParseQuant(tls *libc.TLS, dec uintptr) { /* quant_dec.c:62:6: */ dquv_ac = 0 } - var hdr uintptr = (dec + 128 /* &.segment_hdr_ */) + var hdr uintptr = dec + 128 var i int32 for i = 0; i < NUM_MB_SEGMENTS; i++ { var q int32 if (*VP8SegmentHeader)(unsafe.Pointer(hdr)).use_segment_ != 0 { - q = int32(*(*int8_t)(unsafe.Pointer((hdr + 12 /* &.quantizer_ */) + uintptr(i)))) + q = int32(*(*int8_t)(unsafe.Pointer(hdr + 12 + uintptr(i)))) if !((*VP8SegmentHeader)(unsafe.Pointer(hdr)).absolute_delta_ != 0) { - q = q + (base_q0) + q = q + base_q0 } } else { if i > 0 { - *(*VP8QuantMatrix)(unsafe.Pointer((dec + 1060 /* &.dqm_ */) + uintptr(i)*32)) = *(*VP8QuantMatrix)(unsafe.Pointer((dec + 1060 /* &.dqm_ */))) + *(*VP8QuantMatrix)(unsafe.Pointer(dec + 1060 + uintptr(i)*32)) = *(*VP8QuantMatrix)(unsafe.Pointer(dec + 1060)) continue } else { q = base_q0 } } { - var m uintptr = ((dec + 1060 /* &.dqm_ */) + uintptr(i)*32) - *(*int32)(unsafe.Pointer((m /* &.y1_mat_ */))) = int32(kDcTable[clip(tls, (q+dqy1_dc), 127)]) - *(*int32)(unsafe.Pointer((m /* &.y1_mat_ */) + 1*4)) = int32(kAcTable[clip(tls, (q+0), 127)]) + var m uintptr = dec + 1060 + uintptr(i)*32 + *(*int32)(unsafe.Pointer(m)) = int32(kDcTable[clip(tls, q+dqy1_dc, 127)]) + *(*int32)(unsafe.Pointer(m + 1*4)) = int32(kAcTable[clip(tls, q+0, 127)]) - *(*int32)(unsafe.Pointer((m + 8 /* &.y2_mat_ */))) = (int32(kDcTable[clip(tls, (q+dqy2_dc), 127)]) * 2) + *(*int32)(unsafe.Pointer(m + 8)) = int32(kDcTable[clip(tls, q+dqy2_dc, 127)]) * 2 // For all x in [0..284], x*155/100 is bitwise equal to (x*101581) >> 16. // The smallest precision for that is '(x*6349) >> 12' but 16 is a good // word size. - *(*int32)(unsafe.Pointer((m + 8 /* &.y2_mat_ */) + 1*4)) = ((int32(kAcTable[clip(tls, (q+dqy2_ac), 127)]) * 101581) >> 16) - if *(*int32)(unsafe.Pointer((m + 8 /* &.y2_mat_ */) + 1*4)) < 8 { - *(*int32)(unsafe.Pointer((m + 8 /* &.y2_mat_ */) + 1*4)) = 8 + *(*int32)(unsafe.Pointer(m + 8 + 1*4)) = int32(kAcTable[clip(tls, q+dqy2_ac, 127)]) * 101581 >> 16 + if *(*int32)(unsafe.Pointer(m + 8 + 1*4)) < 8 { + *(*int32)(unsafe.Pointer(m + 8 + 1*4)) = 8 } - *(*int32)(unsafe.Pointer((m + 16 /* &.uv_mat_ */))) = int32(kDcTable[clip(tls, (q+dquv_dc), 117)]) - *(*int32)(unsafe.Pointer((m + 16 /* &.uv_mat_ */) + 1*4)) = int32(kAcTable[clip(tls, (q+dquv_ac), 127)]) + *(*int32)(unsafe.Pointer(m + 16)) = int32(kDcTable[clip(tls, q+dquv_dc, 117)]) + *(*int32)(unsafe.Pointer(m + 16 + 1*4)) = int32(kAcTable[clip(tls, q+dquv_ac, 127)]) - (*VP8QuantMatrix)(unsafe.Pointer(m)).uv_quant_ = (q + dquv_ac) // for dithering strength evaluation + (*VP8QuantMatrix)(unsafe.Pointer(m)).uv_quant_ = q + dquv_ac // for dithering strength evaluation } } @@ -8315,12 +8055,12 @@ func VP8LoadNewBytes(tls *libc.TLS, br uintptr) { /* bit_reader_inl_utils.h:58:6 var bits bit_t // var in_bits lbit_t at bp, 8 - libc.Xmemcpy(tls, (bp) /* &in_bits */, (*VP8BitReader)(unsafe.Pointer(br)).buf_, uint64(unsafe.Sizeof(lbit_t(0)))) - *(*uintptr)(unsafe.Pointer((br + 16 /* &.buf_ */))) += (uintptr(int32(56) >> 3)) + libc.Xmemcpy(tls, bp, (*VP8BitReader)(unsafe.Pointer(br)).buf_, uint64(unsafe.Sizeof(lbit_t(0)))) + *(*uintptr)(unsafe.Pointer(br + 16)) += uintptr(int32(56) >> 3) bits = BSwap64(tls, *(*lbit_t)(unsafe.Pointer(bp /* in_bits */))) - bits >>= (64 - 56) - (*VP8BitReader)(unsafe.Pointer(br)).value_ = (bits | ((*VP8BitReader)(unsafe.Pointer(br)).value_ << 56)) - *(*int32)(unsafe.Pointer((br + 12 /* &.bits_ */))) += (56) + bits >>= 64 - 56 + (*VP8BitReader)(unsafe.Pointer(br)).value_ = bits | (*VP8BitReader)(unsafe.Pointer(br)).value_<<56 + *(*int32)(unsafe.Pointer(br + 12)) += 56 } else { VP8LoadFinalBytes(tls, br) // no need to be inlined } @@ -8337,22 +8077,22 @@ func VP8GetBit(tls *libc.TLS, br uintptr, prob int32) int32 { /* bit_reader_inl_ } { var pos int32 = (*VP8BitReader)(unsafe.Pointer(br)).bits_ - var split range_t = ((range1 * range_t(prob)) >> 8) - var value range_t = (range_t((*VP8BitReader)(unsafe.Pointer(br)).value_ >> pos)) - var bit int32 = (libc.Bool32(value > split)) + var split range_t = range1 * range_t(prob) >> 8 + var value range_t = range_t((*VP8BitReader)(unsafe.Pointer(br)).value_ >> pos) + var bit int32 = libc.Bool32(value > split) if bit != 0 { - range1 = range1 - (split) - *(*bit_t)(unsafe.Pointer((br /* &.value_ */))) -= ((bit_t(split + range_t(1))) << pos) + range1 = range1 - split + *(*bit_t)(unsafe.Pointer(br)) -= bit_t(split+range_t(1)) << pos } else { - range1 = (split + range_t(1)) + range1 = split + range_t(1) } { - var shift int32 = (7 ^ BitsLog2Floor(tls, range1)) + var shift int32 = 7 ^ BitsLog2Floor(tls, range1) range1 <<= shift - *(*int32)(unsafe.Pointer((br + 12 /* &.bits_ */))) -= (shift) + *(*int32)(unsafe.Pointer(br + 12)) -= shift } - (*VP8BitReader)(unsafe.Pointer(br)).range_ = (range1 - range_t(1)) + (*VP8BitReader)(unsafe.Pointer(br)).range_ = range1 - range_t(1) return bit @@ -8367,15 +8107,15 @@ func VP8GetSigned(tls *libc.TLS, br uintptr, v int32) int32 { /* bit_reader_inl_ } { var pos int32 = (*VP8BitReader)(unsafe.Pointer(br)).bits_ - var split range_t = ((*VP8BitReader)(unsafe.Pointer(br)).range_ >> 1) - var value range_t = (range_t((*VP8BitReader)(unsafe.Pointer(br)).value_ >> pos)) - var mask int32_t = ((int32_t(split - value)) >> 31) // -1 or 0 - *(*int32)(unsafe.Pointer((br + 12 /* &.bits_ */))) -= (1) - *(*range_t)(unsafe.Pointer((br + 8 /* &.range_ */))) += (range_t(mask)) - *(*range_t)(unsafe.Pointer((br + 8 /* &.range_ */))) |= (range_t(1)) - *(*bit_t)(unsafe.Pointer((br /* &.value_ */))) -= ((bit_t((split + range_t(1)) & range_t(mask))) << pos) + var split range_t = (*VP8BitReader)(unsafe.Pointer(br)).range_ >> 1 + var value range_t = range_t((*VP8BitReader)(unsafe.Pointer(br)).value_ >> pos) + var mask int32_t = int32_t(split-value) >> 31 // -1 or 0 + *(*int32)(unsafe.Pointer(br + 12)) -= 1 + *(*range_t)(unsafe.Pointer(br + 8)) += range_t(mask) + *(*range_t)(unsafe.Pointer(br + 8)) |= range_t(1) + *(*bit_t)(unsafe.Pointer(br)) -= bit_t((split+range_t(1))&range_t(mask)) << pos - return ((v ^ mask) - mask) + return v ^ mask - mask } return int32(0) @@ -8391,12 +8131,12 @@ func VP8GetBitAlt(tls *libc.TLS, br uintptr, prob int32) int32 { /* bit_reader_i } { var pos int32 = (*VP8BitReader)(unsafe.Pointer(br)).bits_ - var split range_t = ((range1 * range_t(prob)) >> 8) - var value range_t = (range_t((*VP8BitReader)(unsafe.Pointer(br)).value_ >> pos)) + var split range_t = range1 * range_t(prob) >> 8 + var value range_t = range_t((*VP8BitReader)(unsafe.Pointer(br)).value_ >> pos) var bit int32 // Don't use 'const int bit = (value > split);", it's slower. if value > split { range1 = range1 - (split + range_t(1)) - *(*bit_t)(unsafe.Pointer((br /* &.value_ */))) -= ((bit_t(split + range_t(1))) << pos) + *(*bit_t)(unsafe.Pointer(br)) -= bit_t(split+range_t(1)) << pos bit = 1 } else { range1 = split @@ -8405,7 +8145,7 @@ func VP8GetBitAlt(tls *libc.TLS, br uintptr, prob int32) int32 { /* bit_reader_i if range1 <= range_t(0x7e) { var shift int32 = int32(kVP8Log2Range[range1]) range1 = range_t(kVP8NewRange[range1]) - *(*int32)(unsafe.Pointer((br + 12 /* &.bits_ */))) -= (shift) + *(*int32)(unsafe.Pointer(br + 12)) -= shift } (*VP8BitReader)(unsafe.Pointer(br)).range_ = range1 @@ -8433,266 +8173,266 @@ var kYModesIntra4 = [18]int8_t{ // Default probabilities // Paragraph 13.5 -var CoeffsProba0 = [4][8][3][11]uint8_t{[8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, +var CoeffsProba0 = [4][8][3][11]uint8_t{{ + {{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(253), uint8_t(136), uint8_t(254), uint8_t(255), uint8_t(228), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(189), uint8_t(129), uint8_t(242), uint8_t(255), uint8_t(227), uint8_t(213), uint8_t(255), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(106), uint8_t(126), uint8_t(227), uint8_t(252), uint8_t(214), uint8_t(209), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(253), uint8_t(136), uint8_t(254), uint8_t(255), uint8_t(228), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(189), uint8_t(129), uint8_t(242), uint8_t(255), uint8_t(227), uint8_t(213), uint8_t(255), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(106), uint8_t(126), uint8_t(227), uint8_t(252), uint8_t(214), uint8_t(209), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(98), uint8_t(248), uint8_t(255), uint8_t(236), uint8_t(226), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(181), uint8_t(133), uint8_t(238), uint8_t(254), uint8_t(221), uint8_t(234), uint8_t(255), uint8_t(154), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(78), uint8_t(134), uint8_t(202), uint8_t(247), uint8_t(198), uint8_t(180), uint8_t(255), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(98), uint8_t(248), uint8_t(255), uint8_t(236), uint8_t(226), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(181), uint8_t(133), uint8_t(238), uint8_t(254), uint8_t(221), uint8_t(234), uint8_t(255), uint8_t(154), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(78), uint8_t(134), uint8_t(202), uint8_t(247), uint8_t(198), uint8_t(180), uint8_t(255), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(185), uint8_t(249), uint8_t(255), uint8_t(243), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(184), uint8_t(150), uint8_t(247), uint8_t(255), uint8_t(236), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(77), uint8_t(110), uint8_t(216), uint8_t(255), uint8_t(236), uint8_t(230), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(185), uint8_t(249), uint8_t(255), uint8_t(243), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(184), uint8_t(150), uint8_t(247), uint8_t(255), uint8_t(236), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(77), uint8_t(110), uint8_t(216), uint8_t(255), uint8_t(236), uint8_t(230), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(101), uint8_t(251), uint8_t(255), uint8_t(241), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(170), uint8_t(139), uint8_t(241), uint8_t(252), uint8_t(236), uint8_t(209), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(37), uint8_t(116), uint8_t(196), uint8_t(243), uint8_t(228), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(101), uint8_t(251), uint8_t(255), uint8_t(241), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(170), uint8_t(139), uint8_t(241), uint8_t(252), uint8_t(236), uint8_t(209), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(37), uint8_t(116), uint8_t(196), uint8_t(243), uint8_t(228), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(204), uint8_t(254), uint8_t(255), uint8_t(245), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(207), uint8_t(160), uint8_t(250), uint8_t(255), uint8_t(238), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(102), uint8_t(103), uint8_t(231), uint8_t(255), uint8_t(211), uint8_t(171), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(204), uint8_t(254), uint8_t(255), uint8_t(245), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(207), uint8_t(160), uint8_t(250), uint8_t(255), uint8_t(238), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(102), uint8_t(103), uint8_t(231), uint8_t(255), uint8_t(211), uint8_t(171), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(152), uint8_t(252), uint8_t(255), uint8_t(240), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(177), uint8_t(135), uint8_t(243), uint8_t(255), uint8_t(234), uint8_t(225), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(80), uint8_t(129), uint8_t(211), uint8_t(255), uint8_t(194), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(152), uint8_t(252), uint8_t(255), uint8_t(240), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(177), uint8_t(135), uint8_t(243), uint8_t(255), uint8_t(234), uint8_t(225), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(80), uint8_t(129), uint8_t(211), uint8_t(255), uint8_t(194), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(246), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(246), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, }, - [8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(198), uint8_t(35), uint8_t(237), uint8_t(223), uint8_t(193), uint8_t(187), uint8_t(162), uint8_t(160), uint8_t(145), uint8_t(155), uint8_t(62)}, - [11]uint8_t{uint8_t(131), uint8_t(45), uint8_t(198), uint8_t(221), uint8_t(172), uint8_t(176), uint8_t(220), uint8_t(157), uint8_t(252), uint8_t(221), uint8_t(1)}, - [11]uint8_t{uint8_t(68), uint8_t(47), uint8_t(146), uint8_t(208), uint8_t(149), uint8_t(167), uint8_t(221), uint8_t(162), uint8_t(255), uint8_t(223), uint8_t(128)}, + { + {{uint8_t(198), uint8_t(35), uint8_t(237), uint8_t(223), uint8_t(193), uint8_t(187), uint8_t(162), uint8_t(160), uint8_t(145), uint8_t(155), uint8_t(62)}, + {uint8_t(131), uint8_t(45), uint8_t(198), uint8_t(221), uint8_t(172), uint8_t(176), uint8_t(220), uint8_t(157), uint8_t(252), uint8_t(221), uint8_t(1)}, + {uint8_t(68), uint8_t(47), uint8_t(146), uint8_t(208), uint8_t(149), uint8_t(167), uint8_t(221), uint8_t(162), uint8_t(255), uint8_t(223), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(149), uint8_t(241), uint8_t(255), uint8_t(221), uint8_t(224), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(184), uint8_t(141), uint8_t(234), uint8_t(253), uint8_t(222), uint8_t(220), uint8_t(255), uint8_t(199), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(81), uint8_t(99), uint8_t(181), uint8_t(242), uint8_t(176), uint8_t(190), uint8_t(249), uint8_t(202), uint8_t(255), uint8_t(255), uint8_t(128)}, + {{uint8_t(1), uint8_t(149), uint8_t(241), uint8_t(255), uint8_t(221), uint8_t(224), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(184), uint8_t(141), uint8_t(234), uint8_t(253), uint8_t(222), uint8_t(220), uint8_t(255), uint8_t(199), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(81), uint8_t(99), uint8_t(181), uint8_t(242), uint8_t(176), uint8_t(190), uint8_t(249), uint8_t(202), uint8_t(255), uint8_t(255), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(129), uint8_t(232), uint8_t(253), uint8_t(214), uint8_t(197), uint8_t(242), uint8_t(196), uint8_t(255), uint8_t(255), uint8_t(128)}, - [11]uint8_t{uint8_t(99), uint8_t(121), uint8_t(210), uint8_t(250), uint8_t(201), uint8_t(198), uint8_t(255), uint8_t(202), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(23), uint8_t(91), uint8_t(163), uint8_t(242), uint8_t(170), uint8_t(187), uint8_t(247), uint8_t(210), uint8_t(255), uint8_t(255), uint8_t(128)}, + {{uint8_t(1), uint8_t(129), uint8_t(232), uint8_t(253), uint8_t(214), uint8_t(197), uint8_t(242), uint8_t(196), uint8_t(255), uint8_t(255), uint8_t(128)}, + {uint8_t(99), uint8_t(121), uint8_t(210), uint8_t(250), uint8_t(201), uint8_t(198), uint8_t(255), uint8_t(202), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(23), uint8_t(91), uint8_t(163), uint8_t(242), uint8_t(170), uint8_t(187), uint8_t(247), uint8_t(210), uint8_t(255), uint8_t(255), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(200), uint8_t(246), uint8_t(255), uint8_t(234), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(109), uint8_t(178), uint8_t(241), uint8_t(255), uint8_t(231), uint8_t(245), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(44), uint8_t(130), uint8_t(201), uint8_t(253), uint8_t(205), uint8_t(192), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(200), uint8_t(246), uint8_t(255), uint8_t(234), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(109), uint8_t(178), uint8_t(241), uint8_t(255), uint8_t(231), uint8_t(245), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(44), uint8_t(130), uint8_t(201), uint8_t(253), uint8_t(205), uint8_t(192), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(132), uint8_t(239), uint8_t(251), uint8_t(219), uint8_t(209), uint8_t(255), uint8_t(165), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(94), uint8_t(136), uint8_t(225), uint8_t(251), uint8_t(218), uint8_t(190), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(22), uint8_t(100), uint8_t(174), uint8_t(245), uint8_t(186), uint8_t(161), uint8_t(255), uint8_t(199), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(132), uint8_t(239), uint8_t(251), uint8_t(219), uint8_t(209), uint8_t(255), uint8_t(165), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(94), uint8_t(136), uint8_t(225), uint8_t(251), uint8_t(218), uint8_t(190), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(22), uint8_t(100), uint8_t(174), uint8_t(245), uint8_t(186), uint8_t(161), uint8_t(255), uint8_t(199), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(182), uint8_t(249), uint8_t(255), uint8_t(232), uint8_t(235), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(124), uint8_t(143), uint8_t(241), uint8_t(255), uint8_t(227), uint8_t(234), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(35), uint8_t(77), uint8_t(181), uint8_t(251), uint8_t(193), uint8_t(211), uint8_t(255), uint8_t(205), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(182), uint8_t(249), uint8_t(255), uint8_t(232), uint8_t(235), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(124), uint8_t(143), uint8_t(241), uint8_t(255), uint8_t(227), uint8_t(234), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(35), uint8_t(77), uint8_t(181), uint8_t(251), uint8_t(193), uint8_t(211), uint8_t(255), uint8_t(205), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(157), uint8_t(247), uint8_t(255), uint8_t(236), uint8_t(231), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(121), uint8_t(141), uint8_t(235), uint8_t(255), uint8_t(225), uint8_t(227), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(45), uint8_t(99), uint8_t(188), uint8_t(251), uint8_t(195), uint8_t(217), uint8_t(255), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(157), uint8_t(247), uint8_t(255), uint8_t(236), uint8_t(231), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(121), uint8_t(141), uint8_t(235), uint8_t(255), uint8_t(225), uint8_t(227), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(45), uint8_t(99), uint8_t(188), uint8_t(251), uint8_t(195), uint8_t(217), uint8_t(255), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(1), uint8_t(251), uint8_t(255), uint8_t(213), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(203), uint8_t(1), uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(137), uint8_t(1), uint8_t(177), uint8_t(255), uint8_t(224), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(1), uint8_t(251), uint8_t(255), uint8_t(213), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(203), uint8_t(1), uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(137), uint8_t(1), uint8_t(177), uint8_t(255), uint8_t(224), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, }, - [8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(253), uint8_t(9), uint8_t(248), uint8_t(251), uint8_t(207), uint8_t(208), uint8_t(255), uint8_t(192), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(175), uint8_t(13), uint8_t(224), uint8_t(243), uint8_t(193), uint8_t(185), uint8_t(249), uint8_t(198), uint8_t(255), uint8_t(255), uint8_t(128)}, - [11]uint8_t{uint8_t(73), uint8_t(17), uint8_t(171), uint8_t(221), uint8_t(161), uint8_t(179), uint8_t(236), uint8_t(167), uint8_t(255), uint8_t(234), uint8_t(128)}, + { + {{uint8_t(253), uint8_t(9), uint8_t(248), uint8_t(251), uint8_t(207), uint8_t(208), uint8_t(255), uint8_t(192), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(175), uint8_t(13), uint8_t(224), uint8_t(243), uint8_t(193), uint8_t(185), uint8_t(249), uint8_t(198), uint8_t(255), uint8_t(255), uint8_t(128)}, + {uint8_t(73), uint8_t(17), uint8_t(171), uint8_t(221), uint8_t(161), uint8_t(179), uint8_t(236), uint8_t(167), uint8_t(255), uint8_t(234), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(95), uint8_t(247), uint8_t(253), uint8_t(212), uint8_t(183), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(239), uint8_t(90), uint8_t(244), uint8_t(250), uint8_t(211), uint8_t(209), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(155), uint8_t(77), uint8_t(195), uint8_t(248), uint8_t(188), uint8_t(195), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(95), uint8_t(247), uint8_t(253), uint8_t(212), uint8_t(183), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(239), uint8_t(90), uint8_t(244), uint8_t(250), uint8_t(211), uint8_t(209), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(155), uint8_t(77), uint8_t(195), uint8_t(248), uint8_t(188), uint8_t(195), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(24), uint8_t(239), uint8_t(251), uint8_t(218), uint8_t(219), uint8_t(255), uint8_t(205), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(201), uint8_t(51), uint8_t(219), uint8_t(255), uint8_t(196), uint8_t(186), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(69), uint8_t(46), uint8_t(190), uint8_t(239), uint8_t(201), uint8_t(218), uint8_t(255), uint8_t(228), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(24), uint8_t(239), uint8_t(251), uint8_t(218), uint8_t(219), uint8_t(255), uint8_t(205), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(201), uint8_t(51), uint8_t(219), uint8_t(255), uint8_t(196), uint8_t(186), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(69), uint8_t(46), uint8_t(190), uint8_t(239), uint8_t(201), uint8_t(218), uint8_t(255), uint8_t(228), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(191), uint8_t(251), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(223), uint8_t(165), uint8_t(249), uint8_t(255), uint8_t(213), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(141), uint8_t(124), uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(191), uint8_t(251), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(223), uint8_t(165), uint8_t(249), uint8_t(255), uint8_t(213), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(141), uint8_t(124), uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(16), uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(190), uint8_t(36), uint8_t(230), uint8_t(255), uint8_t(236), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(149), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(16), uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(190), uint8_t(36), uint8_t(230), uint8_t(255), uint8_t(236), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(149), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(226), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(247), uint8_t(192), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(240), uint8_t(128), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(226), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(247), uint8_t(192), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(240), uint8_t(128), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(134), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(213), uint8_t(62), uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(55), uint8_t(93), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(134), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(213), uint8_t(62), uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(55), uint8_t(93), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, }, - [8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(202), uint8_t(24), uint8_t(213), uint8_t(235), uint8_t(186), uint8_t(191), uint8_t(220), uint8_t(160), uint8_t(240), uint8_t(175), uint8_t(255)}, - [11]uint8_t{uint8_t(126), uint8_t(38), uint8_t(182), uint8_t(232), uint8_t(169), uint8_t(184), uint8_t(228), uint8_t(174), uint8_t(255), uint8_t(187), uint8_t(128)}, - [11]uint8_t{uint8_t(61), uint8_t(46), uint8_t(138), uint8_t(219), uint8_t(151), uint8_t(178), uint8_t(240), uint8_t(170), uint8_t(255), uint8_t(216), uint8_t(128)}, + { + {{uint8_t(202), uint8_t(24), uint8_t(213), uint8_t(235), uint8_t(186), uint8_t(191), uint8_t(220), uint8_t(160), uint8_t(240), uint8_t(175), uint8_t(255)}, + {uint8_t(126), uint8_t(38), uint8_t(182), uint8_t(232), uint8_t(169), uint8_t(184), uint8_t(228), uint8_t(174), uint8_t(255), uint8_t(187), uint8_t(128)}, + {uint8_t(61), uint8_t(46), uint8_t(138), uint8_t(219), uint8_t(151), uint8_t(178), uint8_t(240), uint8_t(170), uint8_t(255), uint8_t(216), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(112), uint8_t(230), uint8_t(250), uint8_t(199), uint8_t(191), uint8_t(247), uint8_t(159), uint8_t(255), uint8_t(255), uint8_t(128)}, - [11]uint8_t{uint8_t(166), uint8_t(109), uint8_t(228), uint8_t(252), uint8_t(211), uint8_t(215), uint8_t(255), uint8_t(174), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(39), uint8_t(77), uint8_t(162), uint8_t(232), uint8_t(172), uint8_t(180), uint8_t(245), uint8_t(178), uint8_t(255), uint8_t(255), uint8_t(128)}, + {{uint8_t(1), uint8_t(112), uint8_t(230), uint8_t(250), uint8_t(199), uint8_t(191), uint8_t(247), uint8_t(159), uint8_t(255), uint8_t(255), uint8_t(128)}, + {uint8_t(166), uint8_t(109), uint8_t(228), uint8_t(252), uint8_t(211), uint8_t(215), uint8_t(255), uint8_t(174), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(39), uint8_t(77), uint8_t(162), uint8_t(232), uint8_t(172), uint8_t(180), uint8_t(245), uint8_t(178), uint8_t(255), uint8_t(255), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(52), uint8_t(220), uint8_t(246), uint8_t(198), uint8_t(199), uint8_t(249), uint8_t(220), uint8_t(255), uint8_t(255), uint8_t(128)}, - [11]uint8_t{uint8_t(124), uint8_t(74), uint8_t(191), uint8_t(243), uint8_t(183), uint8_t(193), uint8_t(250), uint8_t(221), uint8_t(255), uint8_t(255), uint8_t(128)}, - [11]uint8_t{uint8_t(24), uint8_t(71), uint8_t(130), uint8_t(219), uint8_t(154), uint8_t(170), uint8_t(243), uint8_t(182), uint8_t(255), uint8_t(255), uint8_t(128)}, + {{uint8_t(1), uint8_t(52), uint8_t(220), uint8_t(246), uint8_t(198), uint8_t(199), uint8_t(249), uint8_t(220), uint8_t(255), uint8_t(255), uint8_t(128)}, + {uint8_t(124), uint8_t(74), uint8_t(191), uint8_t(243), uint8_t(183), uint8_t(193), uint8_t(250), uint8_t(221), uint8_t(255), uint8_t(255), uint8_t(128)}, + {uint8_t(24), uint8_t(71), uint8_t(130), uint8_t(219), uint8_t(154), uint8_t(170), uint8_t(243), uint8_t(182), uint8_t(255), uint8_t(255), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(182), uint8_t(225), uint8_t(249), uint8_t(219), uint8_t(240), uint8_t(255), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(149), uint8_t(150), uint8_t(226), uint8_t(252), uint8_t(216), uint8_t(205), uint8_t(255), uint8_t(171), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(28), uint8_t(108), uint8_t(170), uint8_t(242), uint8_t(183), uint8_t(194), uint8_t(254), uint8_t(223), uint8_t(255), uint8_t(255), uint8_t(128)}, + {{uint8_t(1), uint8_t(182), uint8_t(225), uint8_t(249), uint8_t(219), uint8_t(240), uint8_t(255), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(149), uint8_t(150), uint8_t(226), uint8_t(252), uint8_t(216), uint8_t(205), uint8_t(255), uint8_t(171), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(28), uint8_t(108), uint8_t(170), uint8_t(242), uint8_t(183), uint8_t(194), uint8_t(254), uint8_t(223), uint8_t(255), uint8_t(255), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(81), uint8_t(230), uint8_t(252), uint8_t(204), uint8_t(203), uint8_t(255), uint8_t(192), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(123), uint8_t(102), uint8_t(209), uint8_t(247), uint8_t(188), uint8_t(196), uint8_t(255), uint8_t(233), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(20), uint8_t(95), uint8_t(153), uint8_t(243), uint8_t(164), uint8_t(173), uint8_t(255), uint8_t(203), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(81), uint8_t(230), uint8_t(252), uint8_t(204), uint8_t(203), uint8_t(255), uint8_t(192), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(123), uint8_t(102), uint8_t(209), uint8_t(247), uint8_t(188), uint8_t(196), uint8_t(255), uint8_t(233), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(20), uint8_t(95), uint8_t(153), uint8_t(243), uint8_t(164), uint8_t(173), uint8_t(255), uint8_t(203), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(222), uint8_t(248), uint8_t(255), uint8_t(216), uint8_t(213), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(168), uint8_t(175), uint8_t(246), uint8_t(252), uint8_t(235), uint8_t(205), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(47), uint8_t(116), uint8_t(215), uint8_t(255), uint8_t(211), uint8_t(212), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(222), uint8_t(248), uint8_t(255), uint8_t(216), uint8_t(213), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(168), uint8_t(175), uint8_t(246), uint8_t(252), uint8_t(235), uint8_t(205), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(47), uint8_t(116), uint8_t(215), uint8_t(255), uint8_t(211), uint8_t(212), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(121), uint8_t(236), uint8_t(253), uint8_t(212), uint8_t(214), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(141), uint8_t(84), uint8_t(213), uint8_t(252), uint8_t(201), uint8_t(202), uint8_t(255), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(42), uint8_t(80), uint8_t(160), uint8_t(240), uint8_t(162), uint8_t(185), uint8_t(255), uint8_t(205), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(121), uint8_t(236), uint8_t(253), uint8_t(212), uint8_t(214), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(141), uint8_t(84), uint8_t(213), uint8_t(252), uint8_t(201), uint8_t(202), uint8_t(255), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(42), uint8_t(80), uint8_t(160), uint8_t(240), uint8_t(162), uint8_t(185), uint8_t(255), uint8_t(205), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(244), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(238), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(244), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(238), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, }, } /* tree_dec.c:45:3 */ // Paragraph 11.5 -var kBModesProba = [10][10][9]uint8_t{[10][9]uint8_t{ - [9]uint8_t{uint8_t(231), uint8_t(120), uint8_t(48), uint8_t(89), uint8_t(115), uint8_t(113), uint8_t(120), uint8_t(152), uint8_t(112)}, - [9]uint8_t{uint8_t(152), uint8_t(179), uint8_t(64), uint8_t(126), uint8_t(170), uint8_t(118), uint8_t(46), uint8_t(70), uint8_t(95)}, - [9]uint8_t{uint8_t(175), uint8_t(69), uint8_t(143), uint8_t(80), uint8_t(85), uint8_t(82), uint8_t(72), uint8_t(155), uint8_t(103)}, - [9]uint8_t{uint8_t(56), uint8_t(58), uint8_t(10), uint8_t(171), uint8_t(218), uint8_t(189), uint8_t(17), uint8_t(13), uint8_t(152)}, - [9]uint8_t{uint8_t(114), uint8_t(26), uint8_t(17), uint8_t(163), uint8_t(44), uint8_t(195), uint8_t(21), uint8_t(10), uint8_t(173)}, - [9]uint8_t{uint8_t(121), uint8_t(24), uint8_t(80), uint8_t(195), uint8_t(26), uint8_t(62), uint8_t(44), uint8_t(64), uint8_t(85)}, - [9]uint8_t{uint8_t(144), uint8_t(71), uint8_t(10), uint8_t(38), uint8_t(171), uint8_t(213), uint8_t(144), uint8_t(34), uint8_t(26)}, - [9]uint8_t{uint8_t(170), uint8_t(46), uint8_t(55), uint8_t(19), uint8_t(136), uint8_t(160), uint8_t(33), uint8_t(206), uint8_t(71)}, - [9]uint8_t{uint8_t(63), uint8_t(20), uint8_t(8), uint8_t(114), uint8_t(114), uint8_t(208), uint8_t(12), uint8_t(9), uint8_t(226)}, - [9]uint8_t{uint8_t(81), uint8_t(40), uint8_t(11), uint8_t(96), uint8_t(182), uint8_t(84), uint8_t(29), uint8_t(16), uint8_t(36)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(134), uint8_t(183), uint8_t(89), uint8_t(137), uint8_t(98), uint8_t(101), uint8_t(106), uint8_t(165), uint8_t(148)}, - [9]uint8_t{uint8_t(72), uint8_t(187), uint8_t(100), uint8_t(130), uint8_t(157), uint8_t(111), uint8_t(32), uint8_t(75), uint8_t(80)}, - [9]uint8_t{uint8_t(66), uint8_t(102), uint8_t(167), uint8_t(99), uint8_t(74), uint8_t(62), uint8_t(40), uint8_t(234), uint8_t(128)}, - [9]uint8_t{uint8_t(41), uint8_t(53), uint8_t(9), uint8_t(178), uint8_t(241), uint8_t(141), uint8_t(26), uint8_t(8), uint8_t(107)}, - [9]uint8_t{uint8_t(74), uint8_t(43), uint8_t(26), uint8_t(146), uint8_t(73), uint8_t(166), uint8_t(49), uint8_t(23), uint8_t(157)}, - [9]uint8_t{uint8_t(65), uint8_t(38), uint8_t(105), uint8_t(160), uint8_t(51), uint8_t(52), uint8_t(31), uint8_t(115), uint8_t(128)}, - [9]uint8_t{uint8_t(104), uint8_t(79), uint8_t(12), uint8_t(27), uint8_t(217), uint8_t(255), uint8_t(87), uint8_t(17), uint8_t(7)}, - [9]uint8_t{uint8_t(87), uint8_t(68), uint8_t(71), uint8_t(44), uint8_t(114), uint8_t(51), uint8_t(15), uint8_t(186), uint8_t(23)}, - [9]uint8_t{uint8_t(47), uint8_t(41), uint8_t(14), uint8_t(110), uint8_t(182), uint8_t(183), uint8_t(21), uint8_t(17), uint8_t(194)}, - [9]uint8_t{uint8_t(66), uint8_t(45), uint8_t(25), uint8_t(102), uint8_t(197), uint8_t(189), uint8_t(23), uint8_t(18), uint8_t(22)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(88), uint8_t(88), uint8_t(147), uint8_t(150), uint8_t(42), uint8_t(46), uint8_t(45), uint8_t(196), uint8_t(205)}, - [9]uint8_t{uint8_t(43), uint8_t(97), uint8_t(183), uint8_t(117), uint8_t(85), uint8_t(38), uint8_t(35), uint8_t(179), uint8_t(61)}, - [9]uint8_t{uint8_t(39), uint8_t(53), uint8_t(200), uint8_t(87), uint8_t(26), uint8_t(21), uint8_t(43), uint8_t(232), uint8_t(171)}, - [9]uint8_t{uint8_t(56), uint8_t(34), uint8_t(51), uint8_t(104), uint8_t(114), uint8_t(102), uint8_t(29), uint8_t(93), uint8_t(77)}, - [9]uint8_t{uint8_t(39), uint8_t(28), uint8_t(85), uint8_t(171), uint8_t(58), uint8_t(165), uint8_t(90), uint8_t(98), uint8_t(64)}, - [9]uint8_t{uint8_t(34), uint8_t(22), uint8_t(116), uint8_t(206), uint8_t(23), uint8_t(34), uint8_t(43), uint8_t(166), uint8_t(73)}, - [9]uint8_t{uint8_t(107), uint8_t(54), uint8_t(32), uint8_t(26), uint8_t(51), uint8_t(1), uint8_t(81), uint8_t(43), uint8_t(31)}, - [9]uint8_t{uint8_t(68), uint8_t(25), uint8_t(106), uint8_t(22), uint8_t(64), uint8_t(171), uint8_t(36), uint8_t(225), uint8_t(114)}, - [9]uint8_t{uint8_t(34), uint8_t(19), uint8_t(21), uint8_t(102), uint8_t(132), uint8_t(188), uint8_t(16), uint8_t(76), uint8_t(124)}, - [9]uint8_t{uint8_t(62), uint8_t(18), uint8_t(78), uint8_t(95), uint8_t(85), uint8_t(57), uint8_t(50), uint8_t(48), uint8_t(51)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(193), uint8_t(101), uint8_t(35), uint8_t(159), uint8_t(215), uint8_t(111), uint8_t(89), uint8_t(46), uint8_t(111)}, - [9]uint8_t{uint8_t(60), uint8_t(148), uint8_t(31), uint8_t(172), uint8_t(219), uint8_t(228), uint8_t(21), uint8_t(18), uint8_t(111)}, - [9]uint8_t{uint8_t(112), uint8_t(113), uint8_t(77), uint8_t(85), uint8_t(179), uint8_t(255), uint8_t(38), uint8_t(120), uint8_t(114)}, - [9]uint8_t{uint8_t(40), uint8_t(42), uint8_t(1), uint8_t(196), uint8_t(245), uint8_t(209), uint8_t(10), uint8_t(25), uint8_t(109)}, - [9]uint8_t{uint8_t(88), uint8_t(43), uint8_t(29), uint8_t(140), uint8_t(166), uint8_t(213), uint8_t(37), uint8_t(43), uint8_t(154)}, - [9]uint8_t{uint8_t(61), uint8_t(63), uint8_t(30), uint8_t(155), uint8_t(67), uint8_t(45), uint8_t(68), uint8_t(1), uint8_t(209)}, - [9]uint8_t{uint8_t(100), uint8_t(80), uint8_t(8), uint8_t(43), uint8_t(154), uint8_t(1), uint8_t(51), uint8_t(26), uint8_t(71)}, - [9]uint8_t{uint8_t(142), uint8_t(78), uint8_t(78), uint8_t(16), uint8_t(255), uint8_t(128), uint8_t(34), uint8_t(197), uint8_t(171)}, - [9]uint8_t{uint8_t(41), uint8_t(40), uint8_t(5), uint8_t(102), uint8_t(211), uint8_t(183), uint8_t(4), uint8_t(1), uint8_t(221)}, - [9]uint8_t{uint8_t(51), uint8_t(50), uint8_t(17), uint8_t(168), uint8_t(209), uint8_t(192), uint8_t(23), uint8_t(25), uint8_t(82)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(138), uint8_t(31), uint8_t(36), uint8_t(171), uint8_t(27), uint8_t(166), uint8_t(38), uint8_t(44), uint8_t(229)}, - [9]uint8_t{uint8_t(67), uint8_t(87), uint8_t(58), uint8_t(169), uint8_t(82), uint8_t(115), uint8_t(26), uint8_t(59), uint8_t(179)}, - [9]uint8_t{uint8_t(63), uint8_t(59), uint8_t(90), uint8_t(180), uint8_t(59), uint8_t(166), uint8_t(93), uint8_t(73), uint8_t(154)}, - [9]uint8_t{uint8_t(40), uint8_t(40), uint8_t(21), uint8_t(116), uint8_t(143), uint8_t(209), uint8_t(34), uint8_t(39), uint8_t(175)}, - [9]uint8_t{uint8_t(47), uint8_t(15), uint8_t(16), uint8_t(183), uint8_t(34), uint8_t(223), uint8_t(49), uint8_t(45), uint8_t(183)}, - [9]uint8_t{uint8_t(46), uint8_t(17), uint8_t(33), uint8_t(183), uint8_t(6), uint8_t(98), uint8_t(15), uint8_t(32), uint8_t(183)}, - [9]uint8_t{uint8_t(57), uint8_t(46), uint8_t(22), uint8_t(24), uint8_t(128), uint8_t(1), uint8_t(54), uint8_t(17), uint8_t(37)}, - [9]uint8_t{uint8_t(65), uint8_t(32), uint8_t(73), uint8_t(115), uint8_t(28), uint8_t(128), uint8_t(23), uint8_t(128), uint8_t(205)}, - [9]uint8_t{uint8_t(40), uint8_t(3), uint8_t(9), uint8_t(115), uint8_t(51), uint8_t(192), uint8_t(18), uint8_t(6), uint8_t(223)}, - [9]uint8_t{uint8_t(87), uint8_t(37), uint8_t(9), uint8_t(115), uint8_t(59), uint8_t(77), uint8_t(64), uint8_t(21), uint8_t(47)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(104), uint8_t(55), uint8_t(44), uint8_t(218), uint8_t(9), uint8_t(54), uint8_t(53), uint8_t(130), uint8_t(226)}, - [9]uint8_t{uint8_t(64), uint8_t(90), uint8_t(70), uint8_t(205), uint8_t(40), uint8_t(41), uint8_t(23), uint8_t(26), uint8_t(57)}, - [9]uint8_t{uint8_t(54), uint8_t(57), uint8_t(112), uint8_t(184), uint8_t(5), uint8_t(41), uint8_t(38), uint8_t(166), uint8_t(213)}, - [9]uint8_t{uint8_t(30), uint8_t(34), uint8_t(26), uint8_t(133), uint8_t(152), uint8_t(116), uint8_t(10), uint8_t(32), uint8_t(134)}, - [9]uint8_t{uint8_t(39), uint8_t(19), uint8_t(53), uint8_t(221), uint8_t(26), uint8_t(114), uint8_t(32), uint8_t(73), uint8_t(255)}, - [9]uint8_t{uint8_t(31), uint8_t(9), uint8_t(65), uint8_t(234), uint8_t(2), uint8_t(15), uint8_t(1), uint8_t(118), uint8_t(73)}, - [9]uint8_t{uint8_t(75), uint8_t(32), uint8_t(12), uint8_t(51), uint8_t(192), uint8_t(255), uint8_t(160), uint8_t(43), uint8_t(51)}, - [9]uint8_t{uint8_t(88), uint8_t(31), uint8_t(35), uint8_t(67), uint8_t(102), uint8_t(85), uint8_t(55), uint8_t(186), uint8_t(85)}, - [9]uint8_t{uint8_t(56), uint8_t(21), uint8_t(23), uint8_t(111), uint8_t(59), uint8_t(205), uint8_t(45), uint8_t(37), uint8_t(192)}, - [9]uint8_t{uint8_t(55), uint8_t(38), uint8_t(70), uint8_t(124), uint8_t(73), uint8_t(102), uint8_t(1), uint8_t(34), uint8_t(98)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(125), uint8_t(98), uint8_t(42), uint8_t(88), uint8_t(104), uint8_t(85), uint8_t(117), uint8_t(175), uint8_t(82)}, - [9]uint8_t{uint8_t(95), uint8_t(84), uint8_t(53), uint8_t(89), uint8_t(128), uint8_t(100), uint8_t(113), uint8_t(101), uint8_t(45)}, - [9]uint8_t{uint8_t(75), uint8_t(79), uint8_t(123), uint8_t(47), uint8_t(51), uint8_t(128), uint8_t(81), uint8_t(171), uint8_t(1)}, - [9]uint8_t{uint8_t(57), uint8_t(17), uint8_t(5), uint8_t(71), uint8_t(102), uint8_t(57), uint8_t(53), uint8_t(41), uint8_t(49)}, - [9]uint8_t{uint8_t(38), uint8_t(33), uint8_t(13), uint8_t(121), uint8_t(57), uint8_t(73), uint8_t(26), uint8_t(1), uint8_t(85)}, - [9]uint8_t{uint8_t(41), uint8_t(10), uint8_t(67), uint8_t(138), uint8_t(77), uint8_t(110), uint8_t(90), uint8_t(47), uint8_t(114)}, - [9]uint8_t{uint8_t(115), uint8_t(21), uint8_t(2), uint8_t(10), uint8_t(102), uint8_t(255), uint8_t(166), uint8_t(23), uint8_t(6)}, - [9]uint8_t{uint8_t(101), uint8_t(29), uint8_t(16), uint8_t(10), uint8_t(85), uint8_t(128), uint8_t(101), uint8_t(196), uint8_t(26)}, - [9]uint8_t{uint8_t(57), uint8_t(18), uint8_t(10), uint8_t(102), uint8_t(102), uint8_t(213), uint8_t(34), uint8_t(20), uint8_t(43)}, - [9]uint8_t{uint8_t(117), uint8_t(20), uint8_t(15), uint8_t(36), uint8_t(163), uint8_t(128), uint8_t(68), uint8_t(1), uint8_t(26)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(102), uint8_t(61), uint8_t(71), uint8_t(37), uint8_t(34), uint8_t(53), uint8_t(31), uint8_t(243), uint8_t(192)}, - [9]uint8_t{uint8_t(69), uint8_t(60), uint8_t(71), uint8_t(38), uint8_t(73), uint8_t(119), uint8_t(28), uint8_t(222), uint8_t(37)}, - [9]uint8_t{uint8_t(68), uint8_t(45), uint8_t(128), uint8_t(34), uint8_t(1), uint8_t(47), uint8_t(11), uint8_t(245), uint8_t(171)}, - [9]uint8_t{uint8_t(62), uint8_t(17), uint8_t(19), uint8_t(70), uint8_t(146), uint8_t(85), uint8_t(55), uint8_t(62), uint8_t(70)}, - [9]uint8_t{uint8_t(37), uint8_t(43), uint8_t(37), uint8_t(154), uint8_t(100), uint8_t(163), uint8_t(85), uint8_t(160), uint8_t(1)}, - [9]uint8_t{uint8_t(63), uint8_t(9), uint8_t(92), uint8_t(136), uint8_t(28), uint8_t(64), uint8_t(32), uint8_t(201), uint8_t(85)}, - [9]uint8_t{uint8_t(75), uint8_t(15), uint8_t(9), uint8_t(9), uint8_t(64), uint8_t(255), uint8_t(184), uint8_t(119), uint8_t(16)}, - [9]uint8_t{uint8_t(86), uint8_t(6), uint8_t(28), uint8_t(5), uint8_t(64), uint8_t(255), uint8_t(25), uint8_t(248), uint8_t(1)}, - [9]uint8_t{uint8_t(56), uint8_t(8), uint8_t(17), uint8_t(132), uint8_t(137), uint8_t(255), uint8_t(55), uint8_t(116), uint8_t(128)}, - [9]uint8_t{uint8_t(58), uint8_t(15), uint8_t(20), uint8_t(82), uint8_t(135), uint8_t(57), uint8_t(26), uint8_t(121), uint8_t(40)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(164), uint8_t(50), uint8_t(31), uint8_t(137), uint8_t(154), uint8_t(133), uint8_t(25), uint8_t(35), uint8_t(218)}, - [9]uint8_t{uint8_t(51), uint8_t(103), uint8_t(44), uint8_t(131), uint8_t(131), uint8_t(123), uint8_t(31), uint8_t(6), uint8_t(158)}, - [9]uint8_t{uint8_t(86), uint8_t(40), uint8_t(64), uint8_t(135), uint8_t(148), uint8_t(224), uint8_t(45), uint8_t(183), uint8_t(128)}, - [9]uint8_t{uint8_t(22), uint8_t(26), uint8_t(17), uint8_t(131), uint8_t(240), uint8_t(154), uint8_t(14), uint8_t(1), uint8_t(209)}, - [9]uint8_t{uint8_t(45), uint8_t(16), uint8_t(21), uint8_t(91), uint8_t(64), uint8_t(222), uint8_t(7), uint8_t(1), uint8_t(197)}, - [9]uint8_t{uint8_t(56), uint8_t(21), uint8_t(39), uint8_t(155), uint8_t(60), uint8_t(138), uint8_t(23), uint8_t(102), uint8_t(213)}, - [9]uint8_t{uint8_t(83), uint8_t(12), uint8_t(13), uint8_t(54), uint8_t(192), uint8_t(255), uint8_t(68), uint8_t(47), uint8_t(28)}, - [9]uint8_t{uint8_t(85), uint8_t(26), uint8_t(85), uint8_t(85), uint8_t(128), uint8_t(128), uint8_t(32), uint8_t(146), uint8_t(171)}, - [9]uint8_t{uint8_t(18), uint8_t(11), uint8_t(7), uint8_t(63), uint8_t(144), uint8_t(171), uint8_t(4), uint8_t(4), uint8_t(246)}, - [9]uint8_t{uint8_t(35), uint8_t(27), uint8_t(10), uint8_t(146), uint8_t(174), uint8_t(171), uint8_t(12), uint8_t(26), uint8_t(128)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(190), uint8_t(80), uint8_t(35), uint8_t(99), uint8_t(180), uint8_t(80), uint8_t(126), uint8_t(54), uint8_t(45)}, - [9]uint8_t{uint8_t(85), uint8_t(126), uint8_t(47), uint8_t(87), uint8_t(176), uint8_t(51), uint8_t(41), uint8_t(20), uint8_t(32)}, - [9]uint8_t{uint8_t(101), uint8_t(75), uint8_t(128), uint8_t(139), uint8_t(118), uint8_t(146), uint8_t(116), uint8_t(128), uint8_t(85)}, - [9]uint8_t{uint8_t(56), uint8_t(41), uint8_t(15), uint8_t(176), uint8_t(236), uint8_t(85), uint8_t(37), uint8_t(9), uint8_t(62)}, - [9]uint8_t{uint8_t(71), uint8_t(30), uint8_t(17), uint8_t(119), uint8_t(118), uint8_t(255), uint8_t(17), uint8_t(18), uint8_t(138)}, - [9]uint8_t{uint8_t(101), uint8_t(38), uint8_t(60), uint8_t(138), uint8_t(55), uint8_t(70), uint8_t(43), uint8_t(26), uint8_t(142)}, - [9]uint8_t{uint8_t(146), uint8_t(36), uint8_t(19), uint8_t(30), uint8_t(171), uint8_t(255), uint8_t(97), uint8_t(27), uint8_t(20)}, - [9]uint8_t{uint8_t(138), uint8_t(45), uint8_t(61), uint8_t(62), uint8_t(219), uint8_t(1), uint8_t(81), uint8_t(188), uint8_t(64)}, - [9]uint8_t{uint8_t(32), uint8_t(41), uint8_t(20), uint8_t(117), uint8_t(151), uint8_t(142), uint8_t(20), uint8_t(21), uint8_t(163)}, - [9]uint8_t{uint8_t(112), uint8_t(19), uint8_t(12), uint8_t(61), uint8_t(195), uint8_t(128), uint8_t(48), uint8_t(4), uint8_t(24)}}} /* tree_dec.c:181:22 */ +var kBModesProba = [10][10][9]uint8_t{{ + {uint8_t(231), uint8_t(120), uint8_t(48), uint8_t(89), uint8_t(115), uint8_t(113), uint8_t(120), uint8_t(152), uint8_t(112)}, + {uint8_t(152), uint8_t(179), uint8_t(64), uint8_t(126), uint8_t(170), uint8_t(118), uint8_t(46), uint8_t(70), uint8_t(95)}, + {uint8_t(175), uint8_t(69), uint8_t(143), uint8_t(80), uint8_t(85), uint8_t(82), uint8_t(72), uint8_t(155), uint8_t(103)}, + {uint8_t(56), uint8_t(58), uint8_t(10), uint8_t(171), uint8_t(218), uint8_t(189), uint8_t(17), uint8_t(13), uint8_t(152)}, + {uint8_t(114), uint8_t(26), uint8_t(17), uint8_t(163), uint8_t(44), uint8_t(195), uint8_t(21), uint8_t(10), uint8_t(173)}, + {uint8_t(121), uint8_t(24), uint8_t(80), uint8_t(195), uint8_t(26), uint8_t(62), uint8_t(44), uint8_t(64), uint8_t(85)}, + {uint8_t(144), uint8_t(71), uint8_t(10), uint8_t(38), uint8_t(171), uint8_t(213), uint8_t(144), uint8_t(34), uint8_t(26)}, + {uint8_t(170), uint8_t(46), uint8_t(55), uint8_t(19), uint8_t(136), uint8_t(160), uint8_t(33), uint8_t(206), uint8_t(71)}, + {uint8_t(63), uint8_t(20), uint8_t(8), uint8_t(114), uint8_t(114), uint8_t(208), uint8_t(12), uint8_t(9), uint8_t(226)}, + {uint8_t(81), uint8_t(40), uint8_t(11), uint8_t(96), uint8_t(182), uint8_t(84), uint8_t(29), uint8_t(16), uint8_t(36)}}, + {{uint8_t(134), uint8_t(183), uint8_t(89), uint8_t(137), uint8_t(98), uint8_t(101), uint8_t(106), uint8_t(165), uint8_t(148)}, + {uint8_t(72), uint8_t(187), uint8_t(100), uint8_t(130), uint8_t(157), uint8_t(111), uint8_t(32), uint8_t(75), uint8_t(80)}, + {uint8_t(66), uint8_t(102), uint8_t(167), uint8_t(99), uint8_t(74), uint8_t(62), uint8_t(40), uint8_t(234), uint8_t(128)}, + {uint8_t(41), uint8_t(53), uint8_t(9), uint8_t(178), uint8_t(241), uint8_t(141), uint8_t(26), uint8_t(8), uint8_t(107)}, + {uint8_t(74), uint8_t(43), uint8_t(26), uint8_t(146), uint8_t(73), uint8_t(166), uint8_t(49), uint8_t(23), uint8_t(157)}, + {uint8_t(65), uint8_t(38), uint8_t(105), uint8_t(160), uint8_t(51), uint8_t(52), uint8_t(31), uint8_t(115), uint8_t(128)}, + {uint8_t(104), uint8_t(79), uint8_t(12), uint8_t(27), uint8_t(217), uint8_t(255), uint8_t(87), uint8_t(17), uint8_t(7)}, + {uint8_t(87), uint8_t(68), uint8_t(71), uint8_t(44), uint8_t(114), uint8_t(51), uint8_t(15), uint8_t(186), uint8_t(23)}, + {uint8_t(47), uint8_t(41), uint8_t(14), uint8_t(110), uint8_t(182), uint8_t(183), uint8_t(21), uint8_t(17), uint8_t(194)}, + {uint8_t(66), uint8_t(45), uint8_t(25), uint8_t(102), uint8_t(197), uint8_t(189), uint8_t(23), uint8_t(18), uint8_t(22)}}, + {{uint8_t(88), uint8_t(88), uint8_t(147), uint8_t(150), uint8_t(42), uint8_t(46), uint8_t(45), uint8_t(196), uint8_t(205)}, + {uint8_t(43), uint8_t(97), uint8_t(183), uint8_t(117), uint8_t(85), uint8_t(38), uint8_t(35), uint8_t(179), uint8_t(61)}, + {uint8_t(39), uint8_t(53), uint8_t(200), uint8_t(87), uint8_t(26), uint8_t(21), uint8_t(43), uint8_t(232), uint8_t(171)}, + {uint8_t(56), uint8_t(34), uint8_t(51), uint8_t(104), uint8_t(114), uint8_t(102), uint8_t(29), uint8_t(93), uint8_t(77)}, + {uint8_t(39), uint8_t(28), uint8_t(85), uint8_t(171), uint8_t(58), uint8_t(165), uint8_t(90), uint8_t(98), uint8_t(64)}, + {uint8_t(34), uint8_t(22), uint8_t(116), uint8_t(206), uint8_t(23), uint8_t(34), uint8_t(43), uint8_t(166), uint8_t(73)}, + {uint8_t(107), uint8_t(54), uint8_t(32), uint8_t(26), uint8_t(51), uint8_t(1), uint8_t(81), uint8_t(43), uint8_t(31)}, + {uint8_t(68), uint8_t(25), uint8_t(106), uint8_t(22), uint8_t(64), uint8_t(171), uint8_t(36), uint8_t(225), uint8_t(114)}, + {uint8_t(34), uint8_t(19), uint8_t(21), uint8_t(102), uint8_t(132), uint8_t(188), uint8_t(16), uint8_t(76), uint8_t(124)}, + {uint8_t(62), uint8_t(18), uint8_t(78), uint8_t(95), uint8_t(85), uint8_t(57), uint8_t(50), uint8_t(48), uint8_t(51)}}, + {{uint8_t(193), uint8_t(101), uint8_t(35), uint8_t(159), uint8_t(215), uint8_t(111), uint8_t(89), uint8_t(46), uint8_t(111)}, + {uint8_t(60), uint8_t(148), uint8_t(31), uint8_t(172), uint8_t(219), uint8_t(228), uint8_t(21), uint8_t(18), uint8_t(111)}, + {uint8_t(112), uint8_t(113), uint8_t(77), uint8_t(85), uint8_t(179), uint8_t(255), uint8_t(38), uint8_t(120), uint8_t(114)}, + {uint8_t(40), uint8_t(42), uint8_t(1), uint8_t(196), uint8_t(245), uint8_t(209), uint8_t(10), uint8_t(25), uint8_t(109)}, + {uint8_t(88), uint8_t(43), uint8_t(29), uint8_t(140), uint8_t(166), uint8_t(213), uint8_t(37), uint8_t(43), uint8_t(154)}, + {uint8_t(61), uint8_t(63), uint8_t(30), uint8_t(155), uint8_t(67), uint8_t(45), uint8_t(68), uint8_t(1), uint8_t(209)}, + {uint8_t(100), uint8_t(80), uint8_t(8), uint8_t(43), uint8_t(154), uint8_t(1), uint8_t(51), uint8_t(26), uint8_t(71)}, + {uint8_t(142), uint8_t(78), uint8_t(78), uint8_t(16), uint8_t(255), uint8_t(128), uint8_t(34), uint8_t(197), uint8_t(171)}, + {uint8_t(41), uint8_t(40), uint8_t(5), uint8_t(102), uint8_t(211), uint8_t(183), uint8_t(4), uint8_t(1), uint8_t(221)}, + {uint8_t(51), uint8_t(50), uint8_t(17), uint8_t(168), uint8_t(209), uint8_t(192), uint8_t(23), uint8_t(25), uint8_t(82)}}, + {{uint8_t(138), uint8_t(31), uint8_t(36), uint8_t(171), uint8_t(27), uint8_t(166), uint8_t(38), uint8_t(44), uint8_t(229)}, + {uint8_t(67), uint8_t(87), uint8_t(58), uint8_t(169), uint8_t(82), uint8_t(115), uint8_t(26), uint8_t(59), uint8_t(179)}, + {uint8_t(63), uint8_t(59), uint8_t(90), uint8_t(180), uint8_t(59), uint8_t(166), uint8_t(93), uint8_t(73), uint8_t(154)}, + {uint8_t(40), uint8_t(40), uint8_t(21), uint8_t(116), uint8_t(143), uint8_t(209), uint8_t(34), uint8_t(39), uint8_t(175)}, + {uint8_t(47), uint8_t(15), uint8_t(16), uint8_t(183), uint8_t(34), uint8_t(223), uint8_t(49), uint8_t(45), uint8_t(183)}, + {uint8_t(46), uint8_t(17), uint8_t(33), uint8_t(183), uint8_t(6), uint8_t(98), uint8_t(15), uint8_t(32), uint8_t(183)}, + {uint8_t(57), uint8_t(46), uint8_t(22), uint8_t(24), uint8_t(128), uint8_t(1), uint8_t(54), uint8_t(17), uint8_t(37)}, + {uint8_t(65), uint8_t(32), uint8_t(73), uint8_t(115), uint8_t(28), uint8_t(128), uint8_t(23), uint8_t(128), uint8_t(205)}, + {uint8_t(40), uint8_t(3), uint8_t(9), uint8_t(115), uint8_t(51), uint8_t(192), uint8_t(18), uint8_t(6), uint8_t(223)}, + {uint8_t(87), uint8_t(37), uint8_t(9), uint8_t(115), uint8_t(59), uint8_t(77), uint8_t(64), uint8_t(21), uint8_t(47)}}, + {{uint8_t(104), uint8_t(55), uint8_t(44), uint8_t(218), uint8_t(9), uint8_t(54), uint8_t(53), uint8_t(130), uint8_t(226)}, + {uint8_t(64), uint8_t(90), uint8_t(70), uint8_t(205), uint8_t(40), uint8_t(41), uint8_t(23), uint8_t(26), uint8_t(57)}, + {uint8_t(54), uint8_t(57), uint8_t(112), uint8_t(184), uint8_t(5), uint8_t(41), uint8_t(38), uint8_t(166), uint8_t(213)}, + {uint8_t(30), uint8_t(34), uint8_t(26), uint8_t(133), uint8_t(152), uint8_t(116), uint8_t(10), uint8_t(32), uint8_t(134)}, + {uint8_t(39), uint8_t(19), uint8_t(53), uint8_t(221), uint8_t(26), uint8_t(114), uint8_t(32), uint8_t(73), uint8_t(255)}, + {uint8_t(31), uint8_t(9), uint8_t(65), uint8_t(234), uint8_t(2), uint8_t(15), uint8_t(1), uint8_t(118), uint8_t(73)}, + {uint8_t(75), uint8_t(32), uint8_t(12), uint8_t(51), uint8_t(192), uint8_t(255), uint8_t(160), uint8_t(43), uint8_t(51)}, + {uint8_t(88), uint8_t(31), uint8_t(35), uint8_t(67), uint8_t(102), uint8_t(85), uint8_t(55), uint8_t(186), uint8_t(85)}, + {uint8_t(56), uint8_t(21), uint8_t(23), uint8_t(111), uint8_t(59), uint8_t(205), uint8_t(45), uint8_t(37), uint8_t(192)}, + {uint8_t(55), uint8_t(38), uint8_t(70), uint8_t(124), uint8_t(73), uint8_t(102), uint8_t(1), uint8_t(34), uint8_t(98)}}, + {{uint8_t(125), uint8_t(98), uint8_t(42), uint8_t(88), uint8_t(104), uint8_t(85), uint8_t(117), uint8_t(175), uint8_t(82)}, + {uint8_t(95), uint8_t(84), uint8_t(53), uint8_t(89), uint8_t(128), uint8_t(100), uint8_t(113), uint8_t(101), uint8_t(45)}, + {uint8_t(75), uint8_t(79), uint8_t(123), uint8_t(47), uint8_t(51), uint8_t(128), uint8_t(81), uint8_t(171), uint8_t(1)}, + {uint8_t(57), uint8_t(17), uint8_t(5), uint8_t(71), uint8_t(102), uint8_t(57), uint8_t(53), uint8_t(41), uint8_t(49)}, + {uint8_t(38), uint8_t(33), uint8_t(13), uint8_t(121), uint8_t(57), uint8_t(73), uint8_t(26), uint8_t(1), uint8_t(85)}, + {uint8_t(41), uint8_t(10), uint8_t(67), uint8_t(138), uint8_t(77), uint8_t(110), uint8_t(90), uint8_t(47), uint8_t(114)}, + {uint8_t(115), uint8_t(21), uint8_t(2), uint8_t(10), uint8_t(102), uint8_t(255), uint8_t(166), uint8_t(23), uint8_t(6)}, + {uint8_t(101), uint8_t(29), uint8_t(16), uint8_t(10), uint8_t(85), uint8_t(128), uint8_t(101), uint8_t(196), uint8_t(26)}, + {uint8_t(57), uint8_t(18), uint8_t(10), uint8_t(102), uint8_t(102), uint8_t(213), uint8_t(34), uint8_t(20), uint8_t(43)}, + {uint8_t(117), uint8_t(20), uint8_t(15), uint8_t(36), uint8_t(163), uint8_t(128), uint8_t(68), uint8_t(1), uint8_t(26)}}, + {{uint8_t(102), uint8_t(61), uint8_t(71), uint8_t(37), uint8_t(34), uint8_t(53), uint8_t(31), uint8_t(243), uint8_t(192)}, + {uint8_t(69), uint8_t(60), uint8_t(71), uint8_t(38), uint8_t(73), uint8_t(119), uint8_t(28), uint8_t(222), uint8_t(37)}, + {uint8_t(68), uint8_t(45), uint8_t(128), uint8_t(34), uint8_t(1), uint8_t(47), uint8_t(11), uint8_t(245), uint8_t(171)}, + {uint8_t(62), uint8_t(17), uint8_t(19), uint8_t(70), uint8_t(146), uint8_t(85), uint8_t(55), uint8_t(62), uint8_t(70)}, + {uint8_t(37), uint8_t(43), uint8_t(37), uint8_t(154), uint8_t(100), uint8_t(163), uint8_t(85), uint8_t(160), uint8_t(1)}, + {uint8_t(63), uint8_t(9), uint8_t(92), uint8_t(136), uint8_t(28), uint8_t(64), uint8_t(32), uint8_t(201), uint8_t(85)}, + {uint8_t(75), uint8_t(15), uint8_t(9), uint8_t(9), uint8_t(64), uint8_t(255), uint8_t(184), uint8_t(119), uint8_t(16)}, + {uint8_t(86), uint8_t(6), uint8_t(28), uint8_t(5), uint8_t(64), uint8_t(255), uint8_t(25), uint8_t(248), uint8_t(1)}, + {uint8_t(56), uint8_t(8), uint8_t(17), uint8_t(132), uint8_t(137), uint8_t(255), uint8_t(55), uint8_t(116), uint8_t(128)}, + {uint8_t(58), uint8_t(15), uint8_t(20), uint8_t(82), uint8_t(135), uint8_t(57), uint8_t(26), uint8_t(121), uint8_t(40)}}, + {{uint8_t(164), uint8_t(50), uint8_t(31), uint8_t(137), uint8_t(154), uint8_t(133), uint8_t(25), uint8_t(35), uint8_t(218)}, + {uint8_t(51), uint8_t(103), uint8_t(44), uint8_t(131), uint8_t(131), uint8_t(123), uint8_t(31), uint8_t(6), uint8_t(158)}, + {uint8_t(86), uint8_t(40), uint8_t(64), uint8_t(135), uint8_t(148), uint8_t(224), uint8_t(45), uint8_t(183), uint8_t(128)}, + {uint8_t(22), uint8_t(26), uint8_t(17), uint8_t(131), uint8_t(240), uint8_t(154), uint8_t(14), uint8_t(1), uint8_t(209)}, + {uint8_t(45), uint8_t(16), uint8_t(21), uint8_t(91), uint8_t(64), uint8_t(222), uint8_t(7), uint8_t(1), uint8_t(197)}, + {uint8_t(56), uint8_t(21), uint8_t(39), uint8_t(155), uint8_t(60), uint8_t(138), uint8_t(23), uint8_t(102), uint8_t(213)}, + {uint8_t(83), uint8_t(12), uint8_t(13), uint8_t(54), uint8_t(192), uint8_t(255), uint8_t(68), uint8_t(47), uint8_t(28)}, + {uint8_t(85), uint8_t(26), uint8_t(85), uint8_t(85), uint8_t(128), uint8_t(128), uint8_t(32), uint8_t(146), uint8_t(171)}, + {uint8_t(18), uint8_t(11), uint8_t(7), uint8_t(63), uint8_t(144), uint8_t(171), uint8_t(4), uint8_t(4), uint8_t(246)}, + {uint8_t(35), uint8_t(27), uint8_t(10), uint8_t(146), uint8_t(174), uint8_t(171), uint8_t(12), uint8_t(26), uint8_t(128)}}, + {{uint8_t(190), uint8_t(80), uint8_t(35), uint8_t(99), uint8_t(180), uint8_t(80), uint8_t(126), uint8_t(54), uint8_t(45)}, + {uint8_t(85), uint8_t(126), uint8_t(47), uint8_t(87), uint8_t(176), uint8_t(51), uint8_t(41), uint8_t(20), uint8_t(32)}, + {uint8_t(101), uint8_t(75), uint8_t(128), uint8_t(139), uint8_t(118), uint8_t(146), uint8_t(116), uint8_t(128), uint8_t(85)}, + {uint8_t(56), uint8_t(41), uint8_t(15), uint8_t(176), uint8_t(236), uint8_t(85), uint8_t(37), uint8_t(9), uint8_t(62)}, + {uint8_t(71), uint8_t(30), uint8_t(17), uint8_t(119), uint8_t(118), uint8_t(255), uint8_t(17), uint8_t(18), uint8_t(138)}, + {uint8_t(101), uint8_t(38), uint8_t(60), uint8_t(138), uint8_t(55), uint8_t(70), uint8_t(43), uint8_t(26), uint8_t(142)}, + {uint8_t(146), uint8_t(36), uint8_t(19), uint8_t(30), uint8_t(171), uint8_t(255), uint8_t(97), uint8_t(27), uint8_t(20)}, + {uint8_t(138), uint8_t(45), uint8_t(61), uint8_t(62), uint8_t(219), uint8_t(1), uint8_t(81), uint8_t(188), uint8_t(64)}, + {uint8_t(32), uint8_t(41), uint8_t(20), uint8_t(117), uint8_t(151), uint8_t(142), uint8_t(20), uint8_t(21), uint8_t(163)}, + {uint8_t(112), uint8_t(19), uint8_t(12), uint8_t(61), uint8_t(195), uint8_t(128), uint8_t(48), uint8_t(4), uint8_t(24)}}} /* tree_dec.c:181:22 */ func VP8ResetProba(tls *libc.TLS, proba uintptr) { /* tree_dec.c:284:6: */ - libc.Xmemset(tls, (proba /* &.segments_ */), int32(255), uint64(unsafe.Sizeof([3]uint8_t{}))) + libc.Xmemset(tls, proba, int32(255), uint64(unsafe.Sizeof([3]uint8_t{}))) // proba->bands_[][] is initialized later } func ParseIntraMode(tls *libc.TLS, br uintptr, dec uintptr, mb_x int32) { /* tree_dec.c:289:13: */ - var top uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).intra_t_ + uintptr((4 * mb_x))) + var top uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).intra_t_ + uintptr(4*mb_x) var left uintptr = dec + 2816 /* &.intra_l_ */ - var block uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).mb_data_ + uintptr(mb_x)*800) + var block uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).mb_data_ + uintptr(mb_x)*800 // Note: we don't save segment map (yet), as we don't expect // to decode more than 1 keyframe. if (*VP8Decoder)(unsafe.Pointer(dec)).segment_hdr_.update_map_ != 0 { // Hardcoded tree parsing (*VP8MBData)(unsafe.Pointer(block)).segment_ = func() uint8 { - if !(VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer((dec + 1192 /* &.proba_ */) /* &.segments_ */)))) != 0) { - return uint8(VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer((dec + 1192 /* &.proba_ */) /* &.segments_ */ + 1))))) + if !(VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(dec + 1192)))) != 0) { + return uint8(VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(dec + 1192 + 1))))) } - return (uint8(VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer((dec + 1192 /* &.proba_ */) /* &.segments_ */ + 2)))) + 2)) + return uint8(VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(dec + 1192 + 2)))) + 2) }() } else { (*VP8MBData)(unsafe.Pointer(block)).segment_ = uint8_t(0) // default for intra @@ -8706,23 +8446,23 @@ func ParseIntraMode(tls *libc.TLS, br uintptr, dec uintptr, mb_x int32) { /* tre // Hardcoded 16x16 intra-mode decision tree. var ymode int32 if VP8GetBit(tls, br, 156) != 0 { - ymode = (func() int32 { + ymode = func() int32 { if VP8GetBit(tls, br, 128) != 0 { return TM_PRED } return H_PRED - }()) + }() } else { - ymode = (func() int32 { + ymode = func() int32 { if VP8GetBit(tls, br, 163) != 0 { return V_PRED } return DC_PRED - }()) + }() } - *(*uint8_t)(unsafe.Pointer((block + 769 /* &.imodes_ */))) = uint8_t(ymode) - libc.Xmemset(tls, top, ymode, (uint64(4) * uint64(unsafe.Sizeof(uint8_t(0))))) - libc.Xmemset(tls, left, ymode, (uint64(4) * uint64(unsafe.Sizeof(uint8_t(0))))) + *(*uint8_t)(unsafe.Pointer(block + 769)) = uint8_t(ymode) + libc.Xmemset(tls, top, ymode, uint64(4)*uint64(unsafe.Sizeof(uint8_t(0)))) + libc.Xmemset(tls, left, ymode, uint64(4)*uint64(unsafe.Sizeof(uint8_t(0)))) } else { var modes uintptr = block + 769 /* &.imodes_ */ var y int32 @@ -8730,16 +8470,16 @@ func ParseIntraMode(tls *libc.TLS, br uintptr, dec uintptr, mb_x int32) { /* tre var ymode int32 = int32(*(*uint8_t)(unsafe.Pointer(left + uintptr(y)))) var x int32 for x = 0; x < 4; x++ { - var prob uintptr = ((uintptr(unsafe.Pointer(&kBModesProba)) + uintptr(*(*uint8_t)(unsafe.Pointer(top + uintptr(x))))*90) + uintptr(ymode)*9) + var prob uintptr = uintptr(unsafe.Pointer(&kBModesProba)) + uintptr(*(*uint8_t)(unsafe.Pointer(top + uintptr(x))))*90 + uintptr(ymode)*9 // Generic tree-parsing var i int32 = int32(kYModesIntra4[VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(prob))))]) for i > 0 { - i = int32(kYModesIntra4[((2 * i) + VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(prob + uintptr(i))))))]) + i = int32(kYModesIntra4[2*i+VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(prob + uintptr(i)))))]) } ymode = -i *(*uint8_t)(unsafe.Pointer(top + uintptr(x))) = uint8_t(ymode) } - libc.Xmemcpy(tls, modes, top, (uint64(4) * uint64(unsafe.Sizeof(uint8_t(0))))) + libc.Xmemcpy(tls, modes, top, uint64(4)*uint64(unsafe.Sizeof(uint8_t(0)))) modes += uintptr(4) *(*uint8_t)(unsafe.Pointer(left + uintptr(y))) = uint8_t(ymode) } @@ -8774,140 +8514,140 @@ func VP8ParseIntraModeRow(tls *libc.TLS, br uintptr, dec uintptr) int32 { /* tre //------------------------------------------------------------------------------ // Paragraph 13 -var CoeffsUpdateProba = [4][8][3][11]uint8_t{[8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, +var CoeffsUpdateProba = [4][8][3][11]uint8_t{{ + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(176), uint8_t(246), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(223), uint8_t(241), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(249), uint8_t(253), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(176), uint8_t(246), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(223), uint8_t(241), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(249), uint8_t(253), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(244), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(234), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(244), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(234), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(246), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(239), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(246), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(239), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(248), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(251), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(248), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(251), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(251), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(251), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(253), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(250), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(253), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(250), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, }, - [8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(217), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(225), uint8_t(252), uint8_t(241), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(234), uint8_t(250), uint8_t(241), uint8_t(250), uint8_t(253), uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255)}, + { + {{uint8_t(217), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(225), uint8_t(252), uint8_t(241), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(234), uint8_t(250), uint8_t(241), uint8_t(250), uint8_t(253), uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(223), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(238), uint8_t(253), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(223), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(238), uint8_t(253), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(248), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(249), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(248), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(249), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(247), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(247), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, }, - [8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(186), uint8_t(251), uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(234), uint8_t(251), uint8_t(244), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(251), uint8_t(251), uint8_t(243), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + { + {{uint8_t(186), uint8_t(251), uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(234), uint8_t(251), uint8_t(244), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(251), uint8_t(251), uint8_t(243), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(236), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(251), uint8_t(253), uint8_t(253), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(236), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(251), uint8_t(253), uint8_t(253), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, }, - [8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(250), uint8_t(254), uint8_t(252), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(248), uint8_t(254), uint8_t(249), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + { + {{uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(250), uint8_t(254), uint8_t(252), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(248), uint8_t(254), uint8_t(249), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(253), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(246), uint8_t(253), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(252), uint8_t(254), uint8_t(251), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(253), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(246), uint8_t(253), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(252), uint8_t(254), uint8_t(251), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(248), uint8_t(254), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(253), uint8_t(255), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(248), uint8_t(254), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(253), uint8_t(255), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(251), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(245), uint8_t(251), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(253), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(251), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(245), uint8_t(251), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(253), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(251), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(252), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(251), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(252), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(249), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(249), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, }, } /* tree_dec.c:372:5 */ @@ -8920,7 +8660,7 @@ var kBands = [17]uint8_t{ } /* tree_dec.c:509:22 */ func VP8ParseProba(tls *libc.TLS, br uintptr, dec uintptr) { /* tree_dec.c:514:6: */ - var proba uintptr = (dec + 1192 /* &.proba_ */) + var proba uintptr = dec + 1192 var t int32 var b int32 var c int32 @@ -8930,17 +8670,17 @@ func VP8ParseProba(tls *libc.TLS, br uintptr, dec uintptr) { /* tree_dec.c:514:6 for c = 0; c < NUM_CTX; c++ { for p = 0; p < NUM_PROBAS; p++ { var v int32 - if VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer((((uintptr(unsafe.Pointer(&CoeffsUpdateProba)) + uintptr(t)*264) + uintptr(b)*33) + uintptr(c)*11) + uintptr(p))))) != 0 { + if VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&CoeffsUpdateProba)) + uintptr(t)*264 + uintptr(b)*33 + uintptr(c)*11 + uintptr(p))))) != 0 { v = int32(VP8GetValue(tls, br, 8)) } else { - v = int32(*(*uint8_t)(unsafe.Pointer((((uintptr(unsafe.Pointer(&CoeffsProba0)) + uintptr(t)*264) + uintptr(b)*33) + uintptr(c)*11) + uintptr(p)))) + v = int32(*(*uint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&CoeffsProba0)) + uintptr(t)*264 + uintptr(b)*33 + uintptr(c)*11 + uintptr(p)))) } - *(*uint8_t)(unsafe.Pointer(((((proba + 3 /* &.bands_ */) + uintptr(t)*264) + uintptr(b)*33) /* &.probas_ */ + uintptr(c)*11) + uintptr(p))) = uint8_t(v) + *(*uint8_t)(unsafe.Pointer(proba + 3 + uintptr(t)*264 + uintptr(b)*33 + uintptr(c)*11 + uintptr(p))) = uint8_t(v) } } } - for b = 0; b < (16 + 1); b++ { - *(*uintptr)(unsafe.Pointer(((proba + 1064 /* &.bands_ptr_ */) + uintptr(t)*136) + uintptr(b)*8)) = (((proba + 3 /* &.bands_ */) + uintptr(t)*264) + uintptr(kBands[b])*33) + for b = 0; b < 16+1; b++ { + *(*uintptr)(unsafe.Pointer(proba + 1064 + uintptr(t)*136 + uintptr(b)*8)) = proba + 3 + uintptr(t)*264 + uintptr(kBands[b])*33 } } (*VP8Decoder)(unsafe.Pointer(dec)).use_skip_proba_ = int32(VP8GetValue(tls, br, 1)) @@ -8966,28 +8706,28 @@ func VP8ParseProba(tls *libc.TLS, br uintptr, dec uintptr) { /* tree_dec.c:514:6 //------------------------------------------------------------------------------ func WebPGetDecoderVersion(tls *libc.TLS) int32 { /* vp8_dec.c:25:5: */ - return (((int32(1) << 16) | (int32(2) << 8)) | 2) + return int32(1)<<16 | int32(2)<<8 | 2 } //------------------------------------------------------------------------------ // Signature and pointer-to-function for GetCoeffs() variants below. -type GetCoeffsFunc = uintptr /* vp8_dec.c:32:13 */ -var GetCoeffs GetCoeffsFunc = (uintptr(0)) /* vp8_dec.c:35:31 */ +type GetCoeffsFunc = uintptr /* vp8_dec.c:32:13 */ +var GetCoeffs GetCoeffsFunc = uintptr(0) /* vp8_dec.c:35:31 */ //------------------------------------------------------------------------------ // VP8Decoder func SetOk(tls *libc.TLS, dec uintptr) { /* vp8_dec.c:42:13: */ (*VP8Decoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OK - (*VP8Decoder)(unsafe.Pointer(dec)).error_msg_ = (ts + 117) /* "OK" */ + (*VP8Decoder)(unsafe.Pointer(dec)).error_msg_ = ts + 117 /* "OK" */ } func VP8InitIoInternal(tls *libc.TLS, io uintptr, version int32) int32 { /* vp8_dec.c:47:5: */ - if ((version) >> 8) != (int32((0x0209)) >> 8) { + if version>>8 != int32(0x0209)>>8 { return 0 // mismatch error } - if io != (uintptr(0)) { + if io != uintptr(0) { libc.Xmemset(tls, io, 0, uint64(unsafe.Sizeof(VP8Io{}))) } return 1 @@ -8995,9 +8735,9 @@ func VP8InitIoInternal(tls *libc.TLS, io uintptr, version int32) int32 { /* vp8_ func VP8New(tls *libc.TLS) uintptr { /* vp8_dec.c:57:11: */ var dec uintptr = WebPSafeCalloc(tls, 1, uint64(unsafe.Sizeof(VP8Decoder{}))) - if dec != (uintptr(0)) { + if dec != uintptr(0) { SetOk(tls, dec) - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Init})).f(tls, (dec + 152 /* &.worker_ */)) + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Init})).f(tls, dec+152 /* &.worker_ */) (*VP8Decoder)(unsafe.Pointer(dec)).ready_ = 0 (*VP8Decoder)(unsafe.Pointer(dec)).num_parts_minus_one_ = uint32_t(0) InitGetCoeffs(tls) @@ -9013,17 +8753,17 @@ func VP8Status(tls *libc.TLS, dec uintptr) VP8StatusCode { /* vp8_dec.c:69:15: * } func VP8StatusMessage(tls *libc.TLS, dec uintptr) uintptr { /* vp8_dec.c:74:11: */ - if dec == (uintptr(0)) { - return (ts + 120) /* "no object" */ + if dec == uintptr(0) { + return ts + 120 /* "no object" */ } if !(int32((*VP8Decoder)(unsafe.Pointer(dec)).error_msg_) != 0) { - return (ts + 117) /* "OK" */ + return ts + 117 /* "OK" */ } return (*VP8Decoder)(unsafe.Pointer(dec)).error_msg_ } func VP8Delete(tls *libc.TLS, dec uintptr) { /* vp8_dec.c:80:6: */ - if dec != (uintptr(0)) { + if dec != uintptr(0) { VP8Clear(tls, dec) WebPSafeFree(tls, dec) } @@ -9042,36 +8782,36 @@ func VP8SetError(tls *libc.TLS, dec uintptr, error VP8StatusCode, msg uintptr) i //------------------------------------------------------------------------------ func VP8CheckSignature(tls *libc.TLS, data uintptr, data_size size_t) int32 { /* vp8_dec.c:100:5: */ - return (libc.Bool32((((data_size >= uint64(3)) && (int32(*(*uint8_t)(unsafe.Pointer(data))) == 0x9d)) && (int32(*(*uint8_t)(unsafe.Pointer(data + 1))) == 0x01)) && (int32(*(*uint8_t)(unsafe.Pointer(data + 2))) == 0x2a))) + return libc.Bool32(data_size >= uint64(3) && int32(*(*uint8_t)(unsafe.Pointer(data))) == 0x9d && int32(*(*uint8_t)(unsafe.Pointer(data + 1))) == 0x01 && int32(*(*uint8_t)(unsafe.Pointer(data + 2))) == 0x2a) } func VP8GetInfo(tls *libc.TLS, data uintptr, data_size size_t, chunk_size size_t, width uintptr, height uintptr) int32 { /* vp8_dec.c:105:5: */ - if (data == (uintptr(0))) || (data_size < uint64(10)) { + if data == uintptr(0) || data_size < uint64(10) { return 0 // not enough data } // check signature - if !(VP8CheckSignature(tls, (data+uintptr(3)), (data_size-uint64(3))) != 0) { + if !(VP8CheckSignature(tls, data+uintptr(3), data_size-uint64(3)) != 0) { return 0 // Wrong signature. } else { - var bits uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(data))) | (int32(*(*uint8_t)(unsafe.Pointer(data + 1))) << 8)) | (int32(*(*uint8_t)(unsafe.Pointer(data + 2))) << 16))) - var key_frame int32 = libc.BoolInt32(!((bits & uint32_t(1)) != 0)) - var w int32 = (((int32(*(*uint8_t)(unsafe.Pointer(data + 7))) << 8) | int32(*(*uint8_t)(unsafe.Pointer(data + 6)))) & 0x3fff) - var h int32 = (((int32(*(*uint8_t)(unsafe.Pointer(data + 9))) << 8) | int32(*(*uint8_t)(unsafe.Pointer(data + 8)))) & 0x3fff) + var bits uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(data))) | int32(*(*uint8_t)(unsafe.Pointer(data + 1)))<<8 | int32(*(*uint8_t)(unsafe.Pointer(data + 2)))<<16) + var key_frame int32 = libc.BoolInt32(!(bits&uint32_t(1) != 0)) + var w int32 = (int32(*(*uint8_t)(unsafe.Pointer(data + 7)))<<8 | int32(*(*uint8_t)(unsafe.Pointer(data + 6)))) & 0x3fff + var h int32 = (int32(*(*uint8_t)(unsafe.Pointer(data + 9)))<<8 | int32(*(*uint8_t)(unsafe.Pointer(data + 8)))) & 0x3fff if !(key_frame != 0) { // Not a keyframe. return 0 } - if ((bits >> 1) & uint32_t(7)) > uint32_t(3) { + if bits>>1&uint32_t(7) > uint32_t(3) { return 0 // unknown profile } - if !(((bits >> 4) & uint32_t(1)) != 0) { + if !(bits>>4&uint32_t(1) != 0) { return 0 // first frame is invisible! } - if (size_t(bits >> 5)) >= chunk_size { // partition_length + if size_t(bits>>5) >= chunk_size { // partition_length return 0 // inconsistent size information. } - if (w == 0) || (h == 0) { + if w == 0 || h == 0 { return 0 // We don't support both width and height to be zero. } @@ -9095,8 +8835,8 @@ func ResetSegmentHeader(tls *libc.TLS, hdr uintptr) { /* vp8_dec.c:150:13: */ (*VP8SegmentHeader)(unsafe.Pointer(hdr)).use_segment_ = 0 (*VP8SegmentHeader)(unsafe.Pointer(hdr)).update_map_ = 0 (*VP8SegmentHeader)(unsafe.Pointer(hdr)).absolute_delta_ = 1 - libc.Xmemset(tls, (hdr + 12 /* &.quantizer_ */), 0, uint64(unsafe.Sizeof([4]int8_t{}))) - libc.Xmemset(tls, (hdr + 16 /* &.filter_strength_ */), 0, uint64(unsafe.Sizeof([4]int8_t{}))) + libc.Xmemset(tls, hdr+12, 0, uint64(unsafe.Sizeof([4]int8_t{}))) + libc.Xmemset(tls, hdr+16, 0, uint64(unsafe.Sizeof([4]int8_t{}))) } // Paragraph 9.3 @@ -9109,7 +8849,7 @@ func ParseSegmentHeader(tls *libc.TLS, br uintptr, hdr uintptr, proba uintptr) i var s int32 (*VP8SegmentHeader)(unsafe.Pointer(hdr)).absolute_delta_ = int32(VP8GetValue(tls, br, 1)) for s = 0; s < NUM_MB_SEGMENTS; s++ { - *(*int8_t)(unsafe.Pointer((hdr + 12 /* &.quantizer_ */) + uintptr(s))) = func() int8 { + *(*int8_t)(unsafe.Pointer(hdr + 12 + uintptr(s))) = func() int8 { if VP8GetValue(tls, br, 1) != 0 { return int8(VP8GetSignedValue(tls, br, 7)) } @@ -9117,7 +8857,7 @@ func ParseSegmentHeader(tls *libc.TLS, br uintptr, hdr uintptr, proba uintptr) i }() } for s = 0; s < NUM_MB_SEGMENTS; s++ { - *(*int8_t)(unsafe.Pointer((hdr + 16 /* &.filter_strength_ */) + uintptr(s))) = func() int8 { + *(*int8_t)(unsafe.Pointer(hdr + 16 + uintptr(s))) = func() int8 { if VP8GetValue(tls, br, 1) != 0 { return int8(VP8GetSignedValue(tls, br, 6)) } @@ -9128,7 +8868,7 @@ func ParseSegmentHeader(tls *libc.TLS, br uintptr, hdr uintptr, proba uintptr) i if (*VP8SegmentHeader)(unsafe.Pointer(hdr)).update_map_ != 0 { var s int32 for s = 0; s < MB_FEATURE_TREE_PROBS; s++ { - *(*uint8_t)(unsafe.Pointer((proba /* &.segments_ */) + uintptr(s))) = func() uint8 { + *(*uint8_t)(unsafe.Pointer(proba + uintptr(s))) = func() uint8 { if VP8GetValue(tls, br, 1) != 0 { return uint8(VP8GetValue(tls, br, 8)) } @@ -9152,33 +8892,33 @@ func ParseSegmentHeader(tls *libc.TLS, br uintptr, hdr uintptr, proba uintptr) i // is returned, and this is an unrecoverable error. // If the partitions were positioned ok, VP8_STATUS_OK is returned. func ParsePartitions(tls *libc.TLS, dec uintptr, buf uintptr, size size_t) VP8StatusCode { /* vp8_dec.c:201:22: */ - var br uintptr = (dec + 16 /* &.br_ */) + var br uintptr = dec + 16 var sz uintptr = buf - var buf_end uintptr = (buf + uintptr(size)) + var buf_end uintptr = buf + uintptr(size) var part_start uintptr var size_left size_t = size var last_part size_t var p size_t - (*VP8Decoder)(unsafe.Pointer(dec)).num_parts_minus_one_ = (uint32_t((int32(1) << VP8GetValue(tls, br, 2)) - 1)) + (*VP8Decoder)(unsafe.Pointer(dec)).num_parts_minus_one_ = uint32_t(int32(1)<<VP8GetValue(tls, br, 2) - 1) last_part = size_t((*VP8Decoder)(unsafe.Pointer(dec)).num_parts_minus_one_) - if size < (uint64(3) * last_part) { + if size < uint64(3)*last_part { // we can't even read the sizes with sz[]! That's a failure. return VP8_STATUS_NOT_ENOUGH_DATA } - part_start = (buf + uintptr((last_part * uint64(3)))) - size_left = size_left - (last_part * uint64(3)) + part_start = buf + uintptr(last_part*uint64(3)) + size_left = size_left - last_part*uint64(3) for p = uint64(0); p < last_part; p++ { - var psize size_t = (size_t((int32(*(*uint8_t)(unsafe.Pointer(sz))) | (int32(*(*uint8_t)(unsafe.Pointer(sz + 1))) << 8)) | (int32(*(*uint8_t)(unsafe.Pointer(sz + 2))) << 16))) + var psize size_t = size_t(int32(*(*uint8_t)(unsafe.Pointer(sz))) | int32(*(*uint8_t)(unsafe.Pointer(sz + 1)))<<8 | int32(*(*uint8_t)(unsafe.Pointer(sz + 2)))<<16) if psize > size_left { psize = size_left } - VP8InitBitReader(tls, ((dec + 440 /* &.parts_ */) + uintptr(p)*48), part_start, psize) + VP8InitBitReader(tls, dec+440+uintptr(p)*48, part_start, psize) part_start += uintptr(psize) - size_left = size_left - (psize) + size_left = size_left - psize sz += uintptr(3) } - VP8InitBitReader(tls, ((dec + 440 /* &.parts_ */) + uintptr(last_part)*48), part_start, size_left) + VP8InitBitReader(tls, dec+440+uintptr(last_part)*48, part_start, size_left) if part_start < buf_end { return VP8_STATUS_OK } @@ -9187,7 +8927,7 @@ func ParsePartitions(tls *libc.TLS, dec uintptr, buf uintptr, size size_t) VP8St // Paragraph 9.4 func ParseFilterHeader(tls *libc.TLS, br uintptr, dec uintptr) int32 { /* vp8_dec.c:233:12: */ - var hdr uintptr = (dec + 80 /* &.filter_hdr_ */) + var hdr uintptr = dec + 80 (*VP8FilterHeader)(unsafe.Pointer(hdr)).simple_ = int32(VP8GetValue(tls, br, 1)) (*VP8FilterHeader)(unsafe.Pointer(hdr)).level_ = int32(VP8GetValue(tls, br, 6)) (*VP8FilterHeader)(unsafe.Pointer(hdr)).sharpness_ = int32(VP8GetValue(tls, br, 3)) @@ -9197,12 +8937,12 @@ func ParseFilterHeader(tls *libc.TLS, br uintptr, dec uintptr) int32 { /* vp8_de var i int32 for i = 0; i < NUM_REF_LF_DELTAS; i++ { if VP8GetValue(tls, br, 1) != 0 { - *(*int32)(unsafe.Pointer((hdr + 16 /* &.ref_lf_delta_ */) + uintptr(i)*4)) = VP8GetSignedValue(tls, br, 6) + *(*int32)(unsafe.Pointer(hdr + 16 + uintptr(i)*4)) = VP8GetSignedValue(tls, br, 6) } } for i = 0; i < NUM_MODE_LF_DELTAS; i++ { if VP8GetValue(tls, br, 1) != 0 { - *(*int32)(unsafe.Pointer((hdr + 32 /* &.mode_lf_delta_ */) + uintptr(i)*4)) = VP8GetSignedValue(tls, br, 6) + *(*int32)(unsafe.Pointer(hdr + 32 + uintptr(i)*4)) = VP8GetSignedValue(tls, br, 6) } } } @@ -9230,62 +8970,62 @@ func VP8GetHeaders(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* vp8_dec.c: var br uintptr var status VP8StatusCode - if dec == (uintptr(0)) { + if dec == uintptr(0) { return 0 } SetOk(tls, dec) - if io == (uintptr(0)) { + if io == uintptr(0) { return VP8SetError(tls, dec, VP8_STATUS_INVALID_PARAM, - (ts + 130) /* "null VP8Io passe..." */) + ts+130) } buf = (*VP8Io)(unsafe.Pointer(io)).data buf_size = (*VP8Io)(unsafe.Pointer(io)).data_size if buf_size < uint64(4) { return VP8SetError(tls, dec, VP8_STATUS_NOT_ENOUGH_DATA, - (ts + 167) /* "Truncated header..." */) + ts+167) } // Paragraph 9.1 { - var bits uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(buf))) | (int32(*(*uint8_t)(unsafe.Pointer(buf + 1))) << 8)) | (int32(*(*uint8_t)(unsafe.Pointer(buf + 2))) << 16))) - frm_hdr = (dec + 64 /* &.frm_hdr_ */) - (*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).key_frame_ = libc.BoolUint8(!((bits & uint32_t(1)) != 0)) - (*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).profile_ = (uint8_t((bits >> 1) & uint32_t(7))) - (*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).show_ = (uint8_t((bits >> 4) & uint32_t(1))) - (*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).partition_length_ = (bits >> 5) + var bits uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(buf))) | int32(*(*uint8_t)(unsafe.Pointer(buf + 1)))<<8 | int32(*(*uint8_t)(unsafe.Pointer(buf + 2)))<<16) + frm_hdr = dec + 64 + (*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).key_frame_ = libc.BoolUint8(!(bits&uint32_t(1) != 0)) + (*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).profile_ = uint8_t(bits >> 1 & uint32_t(7)) + (*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).show_ = uint8_t(bits >> 4 & uint32_t(1)) + (*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).partition_length_ = bits >> 5 if int32((*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).profile_) > 3 { return VP8SetError(tls, dec, VP8_STATUS_BITSTREAM_ERROR, - (ts + 185) /* "Incorrect keyfra..." */) + ts+185) } if !(int32((*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).show_) != 0) { return VP8SetError(tls, dec, VP8_STATUS_UNSUPPORTED_FEATURE, - (ts + 216) /* "Frame not displa..." */) + ts+216) } buf += uintptr(3) - buf_size = buf_size - (uint64(3)) + buf_size = buf_size - uint64(3) } - pic_hdr = (dec + 72 /* &.pic_hdr_ */) + pic_hdr = dec + 72 if (*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).key_frame_ != 0 { // Paragraph 9.2 if buf_size < uint64(7) { return VP8SetError(tls, dec, VP8_STATUS_NOT_ENOUGH_DATA, - (ts + 239) /* "cannot parse pic..." */) + ts+239) } if !(VP8CheckSignature(tls, buf, buf_size) != 0) { return VP8SetError(tls, dec, VP8_STATUS_BITSTREAM_ERROR, - (ts + 267) /* "Bad code word" */) + ts+267) } - (*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).width_ = (uint16_t(((int32(*(*uint8_t)(unsafe.Pointer(buf + 4))) << 8) | int32(*(*uint8_t)(unsafe.Pointer(buf + 3)))) & 0x3fff)) - (*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).xscale_ = (uint8_t(int32(*(*uint8_t)(unsafe.Pointer(buf + 4))) >> 6)) // ratio: 1, 5/4 5/3 or 2 - (*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).height_ = (uint16_t(((int32(*(*uint8_t)(unsafe.Pointer(buf + 6))) << 8) | int32(*(*uint8_t)(unsafe.Pointer(buf + 5)))) & 0x3fff)) - (*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).yscale_ = (uint8_t(int32(*(*uint8_t)(unsafe.Pointer(buf + 6))) >> 6)) + (*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).width_ = uint16_t((int32(*(*uint8_t)(unsafe.Pointer(buf + 4)))<<8 | int32(*(*uint8_t)(unsafe.Pointer(buf + 3)))) & 0x3fff) + (*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).xscale_ = uint8_t(int32(*(*uint8_t)(unsafe.Pointer(buf + 4))) >> 6) // ratio: 1, 5/4 5/3 or 2 + (*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).height_ = uint16_t((int32(*(*uint8_t)(unsafe.Pointer(buf + 6)))<<8 | int32(*(*uint8_t)(unsafe.Pointer(buf + 5)))) & 0x3fff) + (*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).yscale_ = uint8_t(int32(*(*uint8_t)(unsafe.Pointer(buf + 6))) >> 6) buf += uintptr(7) - buf_size = buf_size - (uint64(7)) + buf_size = buf_size - uint64(7) - (*VP8Decoder)(unsafe.Pointer(dec)).mb_w_ = ((int32((*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).width_) + 15) >> 4) - (*VP8Decoder)(unsafe.Pointer(dec)).mb_h_ = ((int32((*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).height_) + 15) >> 4) + (*VP8Decoder)(unsafe.Pointer(dec)).mb_w_ = (int32((*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).width_) + 15) >> 4 + (*VP8Decoder)(unsafe.Pointer(dec)).mb_h_ = (int32((*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).height_) + 15) >> 4 // Setup default output area (can be later modified during io->setup()) (*VP8Io)(unsafe.Pointer(io)).width = int32((*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).width_) @@ -9305,38 +9045,38 @@ func VP8GetHeaders(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* vp8_dec.c: (*VP8Io)(unsafe.Pointer(io)).mb_w = (*VP8Io)(unsafe.Pointer(io)).width // for soundness (*VP8Io)(unsafe.Pointer(io)).mb_h = (*VP8Io)(unsafe.Pointer(io)).height // ditto - VP8ResetProba(tls, (dec + 1192 /* &.proba_ */)) - ResetSegmentHeader(tls, (dec + 128 /* &.segment_hdr_ */)) + VP8ResetProba(tls, dec+1192) + ResetSegmentHeader(tls, dec+128) } // Check if we have all the partition #0 available, and initialize dec->br_ // to read this partition (and this partition only). if size_t((*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).partition_length_) > buf_size { return VP8SetError(tls, dec, VP8_STATUS_NOT_ENOUGH_DATA, - (ts + 281) /* "bad partition le..." */) + ts+281) } - br = (dec + 16 /* &.br_ */) + br = dec + 16 VP8InitBitReader(tls, br, buf, uint64((*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).partition_length_)) buf += uintptr((*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).partition_length_) - buf_size = buf_size - (size_t((*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).partition_length_)) + buf_size = buf_size - size_t((*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).partition_length_) if (*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).key_frame_ != 0 { (*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).colorspace_ = uint8_t(VP8GetValue(tls, br, 1)) (*VP8PictureHeader)(unsafe.Pointer(pic_hdr)).clamp_type_ = uint8_t(VP8GetValue(tls, br, 1)) } - if !(ParseSegmentHeader(tls, br, (dec+128 /* &.segment_hdr_ */), (dec+1192 /* &.proba_ */)) != 0) { + if !(ParseSegmentHeader(tls, br, dec+128, dec+1192) != 0) { return VP8SetError(tls, dec, VP8_STATUS_BITSTREAM_ERROR, - (ts + 302) /* "cannot parse seg..." */) + ts+302) } // Filter specs if !(ParseFilterHeader(tls, br, dec) != 0) { return VP8SetError(tls, dec, VP8_STATUS_BITSTREAM_ERROR, - (ts + 330) /* "cannot parse fil..." */) + ts+330) } status = ParsePartitions(tls, dec, buf, buf_size) if status != VP8_STATUS_OK { - return VP8SetError(tls, dec, status, (ts + 357) /* "cannot parse par..." */) + return VP8SetError(tls, dec, status, ts+357) } // quantizer change @@ -9345,7 +9085,7 @@ func VP8GetHeaders(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* vp8_dec.c: // Frame buffer marking if !(int32((*VP8FrameHeader)(unsafe.Pointer(frm_hdr)).key_frame_) != 0) { return VP8SetError(tls, dec, VP8_STATUS_UNSUPPORTED_FEATURE, - (ts + 381) /* "Not a key frame." */) + ts+381) } VP8GetValue(tls, br, 1) // ignore the value of update_proba_ @@ -9376,26 +9116,26 @@ func GetLargeValue(tls *libc.TLS, br uintptr, p uintptr) int32 { /* vp8_dec.c:40 if !(VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p + 4)))) != 0) { v = 2 } else { - v = (3 + VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p + 5))))) + v = 3 + VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p + 5)))) } } else { if !(VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p + 6)))) != 0) { if !(VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p + 7)))) != 0) { - v = (5 + VP8GetBit(tls, br, 159)) + v = 5 + VP8GetBit(tls, br, 159) } else { - v = (7 + (2 * VP8GetBit(tls, br, 165))) - v = v + (VP8GetBit(tls, br, 145)) + v = 7 + 2*VP8GetBit(tls, br, 165) + v = v + VP8GetBit(tls, br, 145) } } else { var tab uintptr var bit1 int32 = VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p + 8)))) - var bit0 int32 = VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((9 + bit1)))))) - var cat int32 = ((2 * bit1) + bit0) + var bit0 int32 = VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(9+bit1))))) + var cat int32 = 2*bit1 + bit0 v = 0 for tab = kCat3456[cat]; *(*uint8_t)(unsafe.Pointer(tab)) != 0; tab++ { v = v + (v + VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(tab))))) } - v = v + (3 + (int32(8) << cat)) + v = v + (3 + int32(8)<<cat) } } return v @@ -9403,28 +9143,28 @@ func GetLargeValue(tls *libc.TLS, br uintptr, p uintptr) int32 { /* vp8_dec.c:40 // Returns the position of the last non-zero coeff plus one func GetCoeffsFast(tls *libc.TLS, br uintptr, prob uintptr, ctx int32, dq uintptr, n int32, out uintptr) int32 { /* vp8_dec.c:439:12: */ - var p uintptr = (*(*uintptr)(unsafe.Pointer(prob + uintptr(n)*8)) /* &.probas_ */ + uintptr(ctx)*11) + var p uintptr = *(*uintptr)(unsafe.Pointer(prob + uintptr(n)*8)) + uintptr(ctx)*11 for ; n < 16; n++ { if !(VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p)))) != 0) { return n // previous coeff was last non-zero coeff } for !(VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p + 1)))) != 0) { // sequence of zero coeffs - p = (*(*uintptr)(unsafe.Pointer(prob + uintptr(libc.PreIncInt32(&n, 1))*8)) /* &.probas_ */) + p = *(*uintptr)(unsafe.Pointer(prob + uintptr(libc.PreIncInt32(&n, 1))*8)) if n == 16 { return 16 } } { // non zero coeff - var p_ctx uintptr = (*(*uintptr)(unsafe.Pointer(prob + uintptr((n+1))*8)) /* &.probas_ */) + var p_ctx uintptr = *(*uintptr)(unsafe.Pointer(prob + uintptr(n+1)*8)) var v int32 if !(VP8GetBit(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p + 2)))) != 0) { v = 1 - p = (p_ctx + 1*11) + p = p_ctx + 1*11 } else { v = GetLargeValue(tls, br, p) - p = (p_ctx + 2*11) + p = p_ctx + 2*11 } - *(*int16_t)(unsafe.Pointer(out + uintptr(kZigzag[n])*2)) = (int16_t(VP8GetSigned(tls, br, v) * *(*int32)(unsafe.Pointer(dq + uintptr((libc.Bool32(n > 0)))*4)))) + *(*int16_t)(unsafe.Pointer(out + uintptr(kZigzag[n])*2)) = int16_t(VP8GetSigned(tls, br, v) * *(*int32)(unsafe.Pointer(dq + uintptr(libc.Bool32(n > 0))*4))) } } @@ -9434,28 +9174,28 @@ func GetCoeffsFast(tls *libc.TLS, br uintptr, prob uintptr, ctx int32, dq uintpt // This version of GetCoeffs() uses VP8GetBitAlt() which is an alternate version // of VP8GetBitAlt() targeting specific platforms. func GetCoeffsAlt(tls *libc.TLS, br uintptr, prob uintptr, ctx int32, dq uintptr, n int32, out uintptr) int32 { /* vp8_dec.c:469:12: */ - var p uintptr = (*(*uintptr)(unsafe.Pointer(prob + uintptr(n)*8)) /* &.probas_ */ + uintptr(ctx)*11) + var p uintptr = *(*uintptr)(unsafe.Pointer(prob + uintptr(n)*8)) + uintptr(ctx)*11 for ; n < 16; n++ { if !(VP8GetBitAlt(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p)))) != 0) { return n // previous coeff was last non-zero coeff } for !(VP8GetBitAlt(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p + 1)))) != 0) { // sequence of zero coeffs - p = (*(*uintptr)(unsafe.Pointer(prob + uintptr(libc.PreIncInt32(&n, 1))*8)) /* &.probas_ */) + p = *(*uintptr)(unsafe.Pointer(prob + uintptr(libc.PreIncInt32(&n, 1))*8)) if n == 16 { return 16 } } { // non zero coeff - var p_ctx uintptr = (*(*uintptr)(unsafe.Pointer(prob + uintptr((n+1))*8)) /* &.probas_ */) + var p_ctx uintptr = *(*uintptr)(unsafe.Pointer(prob + uintptr(n+1)*8)) var v int32 if !(VP8GetBitAlt(tls, br, int32(*(*uint8_t)(unsafe.Pointer(p + 2)))) != 0) { v = 1 - p = (p_ctx + 1*11) + p = p_ctx + 1*11 } else { v = GetLargeValue(tls, br, p) - p = (p_ctx + 2*11) + p = p_ctx + 2*11 } - *(*int16_t)(unsafe.Pointer(out + uintptr(kZigzag[n])*2)) = (int16_t(VP8GetSigned(tls, br, v) * *(*int32)(unsafe.Pointer(dq + uintptr((libc.Bool32(n > 0)))*4)))) + *(*int16_t)(unsafe.Pointer(out + uintptr(kZigzag[n])*2)) = int16_t(VP8GetSigned(tls, br, v) * *(*int32)(unsafe.Pointer(dq + uintptr(libc.Bool32(n > 0))*4))) } } @@ -9463,7 +9203,7 @@ func GetCoeffsAlt(tls *libc.TLS, br uintptr, prob uintptr, ctx int32, dq uintptr } func InitGetCoeffs(tls *libc.TLS) { /* vp8_dec.c:497:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if InitGetCoeffs_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -9475,9 +9215,9 @@ func InitGetCoeffs(tls *libc.TLS) { /* vp8_dec.c:497:1: */ var InitGetCoeffs_body_last_cpuinfo_used VP8CPUInfo = 0 /* vp8_dec.c:497:1 */ func InitGetCoeffs_body(tls *libc.TLS) { /* vp8_dec.c:497:1: */ - if (VP8GetCPUInfo != (uintptr(0))) && ((*struct { + if VP8GetCPUInfo != uintptr(0) && (*struct { f func(*libc.TLS, CPUFeature) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8GetCPUInfo})).f(tls, kSlowSSSE3) != 0) { + })(unsafe.Pointer(&struct{ uintptr }{VP8GetCPUInfo})).f(tls, kSlowSSSE3) != 0 { GetCoeffs = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32 }{GetCoeffsAlt})) @@ -9490,7 +9230,7 @@ func InitGetCoeffs_body(tls *libc.TLS) { /* vp8_dec.c:497:1: */ func NzCodeBits(tls *libc.TLS, nz_coeffs uint32_t, nz int32, dc_nz int32) uint32_t { /* vp8_dec.c:505:29: */ nz_coeffs <<= 2 - nz_coeffs = nz_coeffs | (func() uint32 { + nz_coeffs = nz_coeffs | func() uint32 { if nz > 3 { return uint32(3) } @@ -9500,7 +9240,7 @@ func NzCodeBits(tls *libc.TLS, nz_coeffs uint32_t, nz int32, dc_nz int32) uint32 } return uint32(dc_nz) }() - }()) + }() return nz_coeffs } @@ -9508,12 +9248,12 @@ func ParseResiduals(tls *libc.TLS, dec uintptr, mb uintptr, token_br uintptr) in bp := tls.Alloc(32) defer tls.Free(32) - var bands uintptr = ((dec + 1192 /* &.proba_ */) + 1064 /* &.bands_ptr_ */) + var bands uintptr = dec + 1192 + 1064 var ac_proba uintptr - var block uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).mb_data_ + uintptr((*VP8Decoder)(unsafe.Pointer(dec)).mb_x_)*800) - var q uintptr = ((dec + 1060 /* &.dqm_ */) + uintptr((*VP8MBData)(unsafe.Pointer(block)).segment_)*32) + var block uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).mb_data_ + uintptr((*VP8Decoder)(unsafe.Pointer(dec)).mb_x_)*800 + var q uintptr = dec + 1060 + uintptr((*VP8MBData)(unsafe.Pointer(block)).segment_)*32 var dst uintptr = block /* &.coeffs_ */ - var left_mb uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).mb_info_ - uintptr(1)*2) + var left_mb uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).mb_info_ - uintptr(1)*2 var tnz uint8_t var lnz uint8_t var non_zero_y uint32_t = uint32_t(0) @@ -9525,77 +9265,77 @@ func ParseResiduals(tls *libc.TLS, dec uintptr, mb uintptr, token_br uintptr) in var out_l_nz uint32_t var first int32 - libc.Xmemset(tls, dst, 0, (uint64(384) * uint64(unsafe.Sizeof(int16_t(0))))) + libc.Xmemset(tls, dst, 0, uint64(384)*uint64(unsafe.Sizeof(int16_t(0)))) if !(int32((*VP8MBData)(unsafe.Pointer(block)).is_i4x4_) != 0) { // parse DC *(*[16]int16_t)(unsafe.Pointer(bp /* dc */)) = [16]int16_t{0: int16(0)} - var ctx int32 = (int32((*VP8MB)(unsafe.Pointer(mb)).nz_dc_) + int32((*VP8MB)(unsafe.Pointer(left_mb)).nz_dc_)) + var ctx int32 = int32((*VP8MB)(unsafe.Pointer(mb)).nz_dc_) + int32((*VP8MB)(unsafe.Pointer(left_mb)).nz_dc_) var nz int32 = (*struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{GetCoeffs})).f(tls, token_br, (bands + 1*136), ctx, (q + 8 /* &.y2_mat_ */), 0, (bp) /* &dc[0] */) - (*VP8MB)(unsafe.Pointer(mb)).nz_dc_ = libc.AssignPtrUint8((left_mb + 1 /* &.nz_dc_ */), (uint8_t(libc.Bool32(nz > 0)))) + })(unsafe.Pointer(&struct{ uintptr }{GetCoeffs})).f(tls, token_br, bands+1*136, ctx, q+8 /* &.y2_mat_ */, 0, bp /* &dc[0] */) + (*VP8MB)(unsafe.Pointer(mb)).nz_dc_ = libc.AssignPtrUint8(left_mb+1, uint8_t(libc.Bool32(nz > 0))) if nz > 1 { // more than just the DC -> perform the full transform (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8TransformWHT})).f(tls, (bp) /* &dc[0] */, dst) + })(unsafe.Pointer(&struct{ uintptr }{VP8TransformWHT})).f(tls, bp /* &dc[0] */, dst) } else { // only DC is non-zero -> inlined simplified transform var i int32 - var dc0 int32 = ((int32(*(*int16_t)(unsafe.Pointer((bp) /* &dc[0] */))) + 3) >> 3) - for i = 0; i < (16 * 16); i = i + (16) { + var dc0 int32 = (int32(*(*int16_t)(unsafe.Pointer(bp))) + 3) >> 3 + for i = 0; i < 16*16; i = i + 16 { *(*int16_t)(unsafe.Pointer(dst + uintptr(i)*2)) = int16_t(dc0) } } first = 1 - ac_proba = (bands) + ac_proba = bands } else { first = 0 - ac_proba = (bands + 3*136) + ac_proba = bands + 3*136 } - tnz = (uint8_t(int32((*VP8MB)(unsafe.Pointer(mb)).nz_) & 0x0f)) - lnz = (uint8_t(int32((*VP8MB)(unsafe.Pointer(left_mb)).nz_) & 0x0f)) + tnz = uint8_t(int32((*VP8MB)(unsafe.Pointer(mb)).nz_) & 0x0f) + lnz = uint8_t(int32((*VP8MB)(unsafe.Pointer(left_mb)).nz_) & 0x0f) for y = 0; y < 4; y++ { - var l int32 = (int32(lnz) & 1) + var l int32 = int32(lnz) & 1 var nz_coeffs uint32_t = uint32_t(0) for x = 0; x < 4; x++ { - var ctx int32 = (l + (int32(tnz) & 1)) + var ctx int32 = l + int32(tnz)&1 var nz int32 = (*struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{GetCoeffs})).f(tls, token_br, ac_proba, ctx, (q /* &.y1_mat_ */), first, dst) - l = (libc.Bool32(nz > first)) - tnz = (uint8_t((int32(tnz) >> 1) | (l << 7))) - nz_coeffs = NzCodeBits(tls, nz_coeffs, nz, (libc.Bool32(int32(*(*int16_t)(unsafe.Pointer(dst))) != 0))) - dst += 2 * (uintptr(16)) + })(unsafe.Pointer(&struct{ uintptr }{GetCoeffs})).f(tls, token_br, ac_proba, ctx, q /* &.y1_mat_ */, first, dst) + l = libc.Bool32(nz > first) + tnz = uint8_t(int32(tnz)>>1 | l<<7) + nz_coeffs = NzCodeBits(tls, nz_coeffs, nz, libc.Bool32(int32(*(*int16_t)(unsafe.Pointer(dst))) != 0)) + dst += 2 * uintptr(16) } tnz >>= 4 - lnz = (uint8_t((int32(lnz) >> 1) | (l << 7))) - non_zero_y = ((non_zero_y << 8) | nz_coeffs) + lnz = uint8_t(int32(lnz)>>1 | l<<7) + non_zero_y = non_zero_y<<8 | nz_coeffs } out_t_nz = uint32_t(tnz) - out_l_nz = (uint32_t(int32(lnz) >> 4)) + out_l_nz = uint32_t(int32(lnz) >> 4) - for ch = 0; ch < 4; ch = ch + (2) { + for ch = 0; ch < 4; ch = ch + 2 { var nz_coeffs uint32_t = uint32_t(0) - tnz = (uint8_t(int32((*VP8MB)(unsafe.Pointer(mb)).nz_) >> (4 + ch))) - lnz = (uint8_t(int32((*VP8MB)(unsafe.Pointer(left_mb)).nz_) >> (4 + ch))) + tnz = uint8_t(int32((*VP8MB)(unsafe.Pointer(mb)).nz_) >> (4 + ch)) + lnz = uint8_t(int32((*VP8MB)(unsafe.Pointer(left_mb)).nz_) >> (4 + ch)) for y = 0; y < 2; y++ { - var l int32 = (int32(lnz) & 1) + var l int32 = int32(lnz) & 1 for x = 0; x < 2; x++ { - var ctx int32 = (l + (int32(tnz) & 1)) + var ctx int32 = l + int32(tnz)&1 var nz int32 = (*struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{GetCoeffs})).f(tls, token_br, (bands + 2*136), ctx, (q + 16 /* &.uv_mat_ */), 0, dst) - l = (libc.Bool32(nz > 0)) - tnz = (uint8_t((int32(tnz) >> 1) | (l << 3))) - nz_coeffs = NzCodeBits(tls, nz_coeffs, nz, (libc.Bool32(int32(*(*int16_t)(unsafe.Pointer(dst))) != 0))) - dst += 2 * (uintptr(16)) + })(unsafe.Pointer(&struct{ uintptr }{GetCoeffs})).f(tls, token_br, bands+2*136, ctx, q+16 /* &.uv_mat_ */, 0, dst) + l = libc.Bool32(nz > 0) + tnz = uint8_t(int32(tnz)>>1 | l<<3) + nz_coeffs = NzCodeBits(tls, nz_coeffs, nz, libc.Bool32(int32(*(*int16_t)(unsafe.Pointer(dst))) != 0)) + dst += 2 * uintptr(16) } tnz >>= 2 - lnz = (uint8_t((int32(lnz) >> 1) | (l << 5))) + lnz = uint8_t(int32(lnz)>>1 | l<<5) } // Note: we don't really need the per-4x4 details for U/V blocks. - non_zero_uv = non_zero_uv | (nz_coeffs << (4 * ch)) - out_t_nz = out_t_nz | (uint32_t((int32(tnz) << 4) << ch)) - out_l_nz = out_l_nz | (uint32_t((int32(lnz) & 0xf0) << ch)) + non_zero_uv = non_zero_uv | nz_coeffs<<(4*ch) + out_t_nz = out_t_nz | uint32_t(int32(tnz)<<4<<ch) + out_l_nz = out_l_nz | uint32_t(int32(lnz)&0xf0<<ch) } (*VP8MB)(unsafe.Pointer(mb)).nz_ = uint8_t(out_t_nz) (*VP8MB)(unsafe.Pointer(left_mb)).nz_ = uint8_t(out_l_nz) @@ -9607,22 +9347,22 @@ func ParseResiduals(tls *libc.TLS, dec uintptr, mb uintptr, token_br uintptr) in // than three non-zero coeffs (code < 2). This is to avoid dithering flat and // empty blocks. (*VP8MBData)(unsafe.Pointer(block)).dither_ = func() uint8 { - if (non_zero_uv & uint32_t(0xaaaa)) != 0 { + if non_zero_uv&uint32_t(0xaaaa) != 0 { return uint8(0) } return uint8((*VP8QuantMatrix)(unsafe.Pointer(q)).dither_) }() - return libc.BoolInt32(!((non_zero_y | non_zero_uv) != 0)) // will be used for further optimization + return libc.BoolInt32(!(non_zero_y|non_zero_uv != 0)) // will be used for further optimization } //------------------------------------------------------------------------------ // Main loop func VP8DecodeMB(tls *libc.TLS, dec uintptr, token_br uintptr) int32 { /* vp8_dec.c:605:5: */ - var left uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).mb_info_ - uintptr(1)*2) - var mb uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).mb_info_ + uintptr((*VP8Decoder)(unsafe.Pointer(dec)).mb_x_)*2) - var block uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).mb_data_ + uintptr((*VP8Decoder)(unsafe.Pointer(dec)).mb_x_)*800) + var left uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).mb_info_ - uintptr(1)*2 + var mb uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).mb_info_ + uintptr((*VP8Decoder)(unsafe.Pointer(dec)).mb_x_)*2 + var block uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).mb_data_ + uintptr((*VP8Decoder)(unsafe.Pointer(dec)).mb_x_)*800 var skip int32 if (*VP8Decoder)(unsafe.Pointer(dec)).use_skip_proba_ != 0 { skip = int32((*VP8MBData)(unsafe.Pointer(block)).skip_) @@ -9633,9 +9373,9 @@ func VP8DecodeMB(tls *libc.TLS, dec uintptr, token_br uintptr) int32 { /* vp8_de if !(skip != 0) { skip = ParseResiduals(tls, dec, mb, token_br) } else { - (*VP8MB)(unsafe.Pointer(left)).nz_ = libc.AssignPtrUint8((mb /* &.nz_ */), uint8_t(0)) + (*VP8MB)(unsafe.Pointer(left)).nz_ = libc.AssignPtrUint8(mb, uint8_t(0)) if !(int32((*VP8MBData)(unsafe.Pointer(block)).is_i4x4_) != 0) { - (*VP8MB)(unsafe.Pointer(left)).nz_dc_ = libc.AssignPtrUint8((mb + 1 /* &.nz_dc_ */), uint8_t(0)) + (*VP8MB)(unsafe.Pointer(left)).nz_dc_ = libc.AssignPtrUint8(mb+1, uint8_t(0)) } (*VP8MBData)(unsafe.Pointer(block)).non_zero_y_ = uint32_t(0) (*VP8MBData)(unsafe.Pointer(block)).non_zero_uv_ = uint32_t(0) @@ -9643,47 +9383,47 @@ func VP8DecodeMB(tls *libc.TLS, dec uintptr, token_br uintptr) int32 { /* vp8_de } if (*VP8Decoder)(unsafe.Pointer(dec)).filter_type_ > 0 { // store filter info - var finfo uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).f_info_ + uintptr((*VP8Decoder)(unsafe.Pointer(dec)).mb_x_)*4) - *(*VP8FInfo)(unsafe.Pointer(finfo)) = *(*VP8FInfo)(unsafe.Pointer(((dec + 2924 /* &.fstrengths_ */) + uintptr((*VP8MBData)(unsafe.Pointer(block)).segment_)*8) + uintptr((*VP8MBData)(unsafe.Pointer(block)).is_i4x4_)*4)) - *(*uint8_t)(unsafe.Pointer((finfo + 2 /* &.f_inner_ */))) |= uint8_t((libc.BoolInt32(!(skip != 0)))) + var finfo uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).f_info_ + uintptr((*VP8Decoder)(unsafe.Pointer(dec)).mb_x_)*4 + *(*VP8FInfo)(unsafe.Pointer(finfo)) = *(*VP8FInfo)(unsafe.Pointer(dec + 2924 + uintptr((*VP8MBData)(unsafe.Pointer(block)).segment_)*8 + uintptr((*VP8MBData)(unsafe.Pointer(block)).is_i4x4_)*4)) + *(*uint8_t)(unsafe.Pointer(finfo + 2)) |= uint8_t(libc.BoolInt32(!(skip != 0))) } return libc.BoolInt32(!((*VP8BitReader)(unsafe.Pointer(token_br)).eof_ != 0)) } func VP8InitScanline(tls *libc.TLS, dec uintptr) { /* vp8_dec.c:632:6: */ - var left uintptr = ((*VP8Decoder)(unsafe.Pointer(dec)).mb_info_ - uintptr(1)*2) + var left uintptr = (*VP8Decoder)(unsafe.Pointer(dec)).mb_info_ - uintptr(1)*2 (*VP8MB)(unsafe.Pointer(left)).nz_ = uint8_t(0) (*VP8MB)(unsafe.Pointer(left)).nz_dc_ = uint8_t(0) - libc.Xmemset(tls, (dec + 2816 /* &.intra_l_ */), B_DC_PRED, uint64(unsafe.Sizeof([4]uint8_t{}))) + libc.Xmemset(tls, dec+2816, B_DC_PRED, uint64(unsafe.Sizeof([4]uint8_t{}))) (*VP8Decoder)(unsafe.Pointer(dec)).mb_x_ = 0 } func ParseFrame(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* vp8_dec.c:640:12: */ for (*VP8Decoder)(unsafe.Pointer(dec)).mb_y_ = 0; (*VP8Decoder)(unsafe.Pointer(dec)).mb_y_ < (*VP8Decoder)(unsafe.Pointer(dec)).br_mb_y_; (*VP8Decoder)(unsafe.Pointer(dec)).mb_y_++ { // Parse bitstream for this row. - var token_br uintptr = ((dec + 440 /* &.parts_ */) + uintptr((uint32_t((*VP8Decoder)(unsafe.Pointer(dec)).mb_y_)&(*VP8Decoder)(unsafe.Pointer(dec)).num_parts_minus_one_))*48) - if !(VP8ParseIntraModeRow(tls, (dec+16 /* &.br_ */), dec) != 0) { + var token_br uintptr = dec + 440 + uintptr(uint32_t((*VP8Decoder)(unsafe.Pointer(dec)).mb_y_)&(*VP8Decoder)(unsafe.Pointer(dec)).num_parts_minus_one_)*48 + if !(VP8ParseIntraModeRow(tls, dec+16, dec) != 0) { return VP8SetError(tls, dec, VP8_STATUS_NOT_ENOUGH_DATA, - (ts + 398) /* "Premature end-of..." */) + ts+398) } for ; (*VP8Decoder)(unsafe.Pointer(dec)).mb_x_ < (*VP8Decoder)(unsafe.Pointer(dec)).mb_w_; (*VP8Decoder)(unsafe.Pointer(dec)).mb_x_++ { if !(VP8DecodeMB(tls, dec, token_br) != 0) { return VP8SetError(tls, dec, VP8_STATUS_NOT_ENOUGH_DATA, - (ts + 439) /* "Premature end-of..." */) + ts+439) } } VP8InitScanline(tls, dec) // Prepare for next scanline // Reconstruct, filter and emit the row. if !(VP8ProcessRow(tls, dec, io) != 0) { - return VP8SetError(tls, dec, VP8_STATUS_USER_ABORT, (ts + 474) /* "Output aborted." */) + return VP8SetError(tls, dec, VP8_STATUS_USER_ABORT, ts+474) } } if (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ > 0 { if !((*struct { f func(*libc.TLS, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Sync})).f(tls, (dec+152 /* &.worker_ */)) != 0) { + })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Sync})).f(tls, dec+152) != 0) { return 0 } } @@ -9694,12 +9434,12 @@ func ParseFrame(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* vp8_dec.c:640 // Main entry point func VP8Decode(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* vp8_dec.c:670:5: */ var ok int32 = 0 - if dec == (uintptr(0)) { + if dec == uintptr(0) { return 0 } - if io == (uintptr(0)) { + if io == uintptr(0) { return VP8SetError(tls, dec, VP8_STATUS_INVALID_PARAM, - (ts + 490) /* "NULL VP8Io param..." */) + ts+490) } if !((*VP8Decoder)(unsafe.Pointer(dec)).ready_ != 0) { @@ -9709,7 +9449,7 @@ func VP8Decode(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* vp8_dec.c:670: } // Finish setting up the decoding parameter. Will call io->setup(). - ok = (libc.Bool32(VP8EnterCritical(tls, dec, io) == VP8_STATUS_OK)) + ok = libc.Bool32(VP8EnterCritical(tls, dec, io) == VP8_STATUS_OK) if ok != 0 { // good to go. // Will allocate memory and prepare everything. if ok != 0 { @@ -9722,7 +9462,7 @@ func VP8Decode(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* vp8_dec.c:670: } // Exit. - ok = ok & (VP8ExitCritical(tls, dec, io)) + ok = ok & VP8ExitCritical(tls, dec, io) } if !(ok != 0) { @@ -9735,15 +9475,15 @@ func VP8Decode(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* vp8_dec.c:670: } func VP8Clear(tls *libc.TLS, dec uintptr) { /* vp8_dec.c:709:6: */ - if dec == (uintptr(0)) { + if dec == uintptr(0) { return } - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).End})).f(tls, (dec + 152 /* &.worker_ */)) + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).End})).f(tls, dec+152 /* &.worker_ */) WebPDeallocateAlphaMemory(tls, dec) WebPSafeFree(tls, (*VP8Decoder)(unsafe.Pointer(dec)).mem_) - (*VP8Decoder)(unsafe.Pointer(dec)).mem_ = (uintptr(0)) + (*VP8Decoder)(unsafe.Pointer(dec)).mem_ = uintptr(0) (*VP8Decoder)(unsafe.Pointer(dec)).mem_size_ = uint64(0) - libc.Xmemset(tls, (dec + 16 /* &.br_ */), 0, uint64(unsafe.Sizeof(VP8BitReader{}))) + libc.Xmemset(tls, dec+16, 0, uint64(unsafe.Sizeof(VP8BitReader{}))) (*VP8Decoder)(unsafe.Pointer(dec)).ready_ = 0 } @@ -10322,20 +10062,20 @@ func PixOrCopyCreateLiteral(tls *libc.TLS, argb uint32_t) PixOrCopy { /* backwar } func PixOrCopyIsLiteral(tls *libc.TLS, p uintptr) int32 { /* backward_references_enc.h:73:24: */ - return (libc.Bool32(int32((*PixOrCopy)(unsafe.Pointer(p)).mode) == kLiteral)) + return libc.Bool32(int32((*PixOrCopy)(unsafe.Pointer(p)).mode) == kLiteral) } func PixOrCopyIsCacheIdx(tls *libc.TLS, p uintptr) int32 { /* backward_references_enc.h:77:24: */ - return (libc.Bool32(int32((*PixOrCopy)(unsafe.Pointer(p)).mode) == kCacheIdx)) + return libc.Bool32(int32((*PixOrCopy)(unsafe.Pointer(p)).mode) == kCacheIdx) } func PixOrCopyIsCopy(tls *libc.TLS, p uintptr) int32 { /* backward_references_enc.h:81:24: */ - return (libc.Bool32(int32((*PixOrCopy)(unsafe.Pointer(p)).mode) == kCopy)) + return libc.Bool32(int32((*PixOrCopy)(unsafe.Pointer(p)).mode) == kCopy) } func PixOrCopyLiteral(tls *libc.TLS, p uintptr, component int32) uint32_t { /* backward_references_enc.h:85:29: */ - return (((*PixOrCopy)(unsafe.Pointer(p)).argb_or_distance >> (component * 8)) & uint32_t(0xff)) + return (*PixOrCopy)(unsafe.Pointer(p)).argb_or_distance >> (component * 8) & uint32_t(0xff) } func PixOrCopyLength(tls *libc.TLS, p uintptr) uint32_t { /* backward_references_enc.h:91:29: */ @@ -10377,11 +10117,11 @@ type VP8LHashChain = VP8LHashChain1 /* backward_references_enc.h:122:30 */ // release memory func VP8LHashChainFindOffset(tls *libc.TLS, p uintptr, base_position int32) int32 { /* backward_references_enc.h:143:24: */ - return (int32(*(*uint32_t)(unsafe.Pointer((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ + uintptr(base_position)*4)) >> 12)) + return int32(*(*uint32_t)(unsafe.Pointer((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ + uintptr(base_position)*4)) >> 12) } func VP8LHashChainFindLength(tls *libc.TLS, p uintptr, base_position int32) int32 { /* backward_references_enc.h:148:24: */ - return (int32(*(*uint32_t)(unsafe.Pointer((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ + uintptr(base_position)*4)) & ((uint32(1) << 12) - uint32(1)))) + return int32(*(*uint32_t)(unsafe.Pointer((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ + uintptr(base_position)*4)) & (uint32(1)<<12 - uint32(1))) } func VP8LHashChainFindCopy(tls *libc.TLS, p uintptr, base_position int32, offset_ptr uintptr, length_ptr uintptr) { /* backward_references_enc.h:153:25: */ @@ -10423,7 +10163,7 @@ type VP8LRefsCursor = struct { // Returns true if cursor is pointing at a valid position. func VP8LRefsCursorOk(tls *libc.TLS, c uintptr) int32 { /* backward_references_enc.h:198:24: */ - return (libc.Bool32((*VP8LRefsCursor)(unsafe.Pointer(c)).cur_pos != (uintptr(0)))) + return libc.Bool32((*VP8LRefsCursor)(unsafe.Pointer(c)).cur_pos != uintptr(0)) } // Move to next position, or NULL. Should not be called if !VP8LRefsCursorOk(). @@ -10488,12 +10228,12 @@ type VP8LHistogramSet = struct { } /* histogram_enc.h:56:3 */ func VP8LHistogramNumCodes(tls *libc.TLS, palette_code_bits int32) int32 { /* histogram_enc.h:103:24: */ - return ((256 + 24) + (func() int32 { + return 256 + 24 + func() int32 { if palette_code_bits > 0 { - return (int32(1) << palette_code_bits) + return int32(1) << palette_code_bits } return 0 - }())) + }() } //------------------------------------------------------------------------------ @@ -10617,7 +10357,7 @@ type VP8LBundleColorMapFunc = uintptr /* lossless.h:244:14 */ // color mapping related functions. func VP8GetARGBIndex(tls *libc.TLS, idx uint32_t) uint32_t { /* lossless_common.h:31:29: */ - return ((idx >> 8) & uint32_t(0xff)) + return idx >> 8 & uint32_t(0xff) } func VP8GetAlphaIndex(tls *libc.TLS, idx uint8_t) uint8_t { /* lossless_common.h:35:28: */ @@ -10629,7 +10369,7 @@ func VP8GetARGBValue(tls *libc.TLS, val uint32_t) uint32_t { /* lossless_common. } func VP8GetAlphaValue(tls *libc.TLS, val uint32_t) uint8_t { /* lossless_common.h:43:28: */ - return (uint8_t((val >> 8) & uint32_t(0xff))) + return uint8_t(val >> 8 & uint32_t(0xff)) } //------------------------------------------------------------------------------ @@ -10637,7 +10377,7 @@ func VP8GetAlphaValue(tls *libc.TLS, val uint32_t) uint8_t { /* lossless_common. // Computes sampled size of 'size' when sampling using 'sampling bits'. func VP8LSubSampleSize(tls *libc.TLS, size uint32_t, sampling_bits uint32_t) uint32_t { /* lossless_common.h:51:29: */ - return (((size + (uint32_t(int32(1) << sampling_bits))) - uint32_t(1)) >> sampling_bits) + return (size + uint32_t(int32(1)<<sampling_bits) - uint32_t(1)) >> sampling_bits } // Converts near lossless quality into max number of bits shaved off. @@ -10648,7 +10388,7 @@ func VP8LNearLosslessBits(tls *libc.TLS, near_lossless_quality int32) int32 { /* // 40..59 -> 3 // 20..39 -> 4 // 0..19 -> 5 - return (5 - (near_lossless_quality / 20)) + return 5 - near_lossless_quality/20 } type VP8LFastLog2SlowFunc = uintptr /* lossless_common.h:80:15 */ @@ -10680,17 +10420,17 @@ func VP8LFastSLog2(tls *libc.TLS, v uint32_t) float32 { /* lossless_common.h:89: // while the extra bits are stored just as normal bits. func VP8LPrefixEncodeBitsNoLUT(tls *libc.TLS, distance int32, code uintptr, extra_bits uintptr) { /* lossless_common.h:99:25: */ var highest_bit int32 = BitsLog2Floor(tls, uint32(libc.PreDecInt32(&distance, 1))) - var second_highest_bit int32 = ((distance >> (highest_bit - 1)) & 1) - *(*int32)(unsafe.Pointer(extra_bits)) = (highest_bit - 1) - *(*int32)(unsafe.Pointer(code)) = ((2 * highest_bit) + second_highest_bit) + var second_highest_bit int32 = distance >> (highest_bit - 1) & 1 + *(*int32)(unsafe.Pointer(extra_bits)) = highest_bit - 1 + *(*int32)(unsafe.Pointer(code)) = 2*highest_bit + second_highest_bit } func VP8LPrefixEncodeNoLUT(tls *libc.TLS, distance int32, code uintptr, extra_bits uintptr, extra_bits_value uintptr) { /* lossless_common.h:107:25: */ var highest_bit int32 = BitsLog2Floor(tls, uint32(libc.PreDecInt32(&distance, 1))) - var second_highest_bit int32 = ((distance >> (highest_bit - 1)) & 1) - *(*int32)(unsafe.Pointer(extra_bits)) = (highest_bit - 1) - *(*int32)(unsafe.Pointer(extra_bits_value)) = (distance & ((int32(1) << *(*int32)(unsafe.Pointer(extra_bits))) - 1)) - *(*int32)(unsafe.Pointer(code)) = ((2 * highest_bit) + second_highest_bit) + var second_highest_bit int32 = distance >> (highest_bit - 1) & 1 + *(*int32)(unsafe.Pointer(extra_bits)) = highest_bit - 1 + *(*int32)(unsafe.Pointer(extra_bits_value)) = distance & (int32(1)<<*(*int32)(unsafe.Pointer(extra_bits)) - 1) + *(*int32)(unsafe.Pointer(code)) = 2*highest_bit + second_highest_bit } type VP8LPrefixCode = struct { @@ -10721,16 +10461,16 @@ func VP8LPrefixEncode(tls *libc.TLS, distance int32, code uintptr, extra_bits ui // Sum of each component, mod 256. func VP8LAddPixels(tls *libc.TLS, a uint32_t, b uint32_t) uint32_t { /* lossless_common.h:152:10: */ - var alpha_and_green uint32_t = ((a & 0xff00ff00) + (b & 0xff00ff00)) - var red_and_blue uint32_t = ((a & 0x00ff00ff) + (b & 0x00ff00ff)) - return ((alpha_and_green & 0xff00ff00) | (red_and_blue & 0x00ff00ff)) + var alpha_and_green uint32_t = a&0xff00ff00 + b&0xff00ff00 + var red_and_blue uint32_t = a&0x00ff00ff + b&0x00ff00ff + return alpha_and_green&0xff00ff00 | red_and_blue&0x00ff00ff } // Difference of each component, mod 256. func VP8LSubPixels(tls *libc.TLS, a uint32_t, b uint32_t) uint32_t { /* lossless_common.h:160:10: */ - var alpha_and_green uint32_t = ((0x00ff00ff + (a & 0xff00ff00)) - (b & 0xff00ff00)) - var red_and_blue uint32_t = ((0xff00ff00 + (a & 0x00ff00ff)) - (b & 0x00ff00ff)) - return ((alpha_and_green & 0xff00ff00) | (red_and_blue & 0x00ff00ff)) + var alpha_and_green uint32_t = 0x00ff00ff + a&0xff00ff00 - b&0xff00ff00 + var red_and_blue uint32_t = 0xff00ff00 + a&0x00ff00ff - b&0x00ff00ff + return alpha_and_green&0xff00ff00 | red_and_blue&0x00ff00ff } // Copyright 2012 Google Inc. All Rights Reserved. @@ -10775,7 +10515,7 @@ var kCodeLengthRepeatOffsets = [3]uint8_t{uint8_t(3), uint8_t(3), uint8_t(11)} / type HuffIndex = uint32 /* vp8l_dec.c:47:3 */ var kAlphabetSize = [5]uint16_t{ - (uint16_t(256 + 24)), + uint16_t(256 + 24), uint16_t(256), uint16_t(256), uint16_t(256), uint16_t(40), } /* vp8l_dec.c:49:23 */ @@ -10812,32 +10552,32 @@ var kCodeToPlane = [120]uint8_t{ // All values computed for 8-bit first level lookup with Mark Adler's tool: // https://github.com/madler/zlib/blob/v1.2.5/examples/enough.c var kTableSize = [12]uint16_t{ - (uint16_t(((630 * 3) + 410) + 654)), - (uint16_t(((630 * 3) + 410) + 656)), - (uint16_t(((630 * 3) + 410) + 658)), - (uint16_t(((630 * 3) + 410) + 662)), - (uint16_t(((630 * 3) + 410) + 670)), - (uint16_t(((630 * 3) + 410) + 686)), - (uint16_t(((630 * 3) + 410) + 718)), - (uint16_t(((630 * 3) + 410) + 782)), - (uint16_t(((630 * 3) + 410) + 912)), - (uint16_t(((630 * 3) + 410) + 1168)), - (uint16_t(((630 * 3) + 410) + 1680)), - (uint16_t(((630 * 3) + 410) + 2704)), + uint16_t(630*3 + 410 + 654), + uint16_t(630*3 + 410 + 656), + uint16_t(630*3 + 410 + 658), + uint16_t(630*3 + 410 + 662), + uint16_t(630*3 + 410 + 670), + uint16_t(630*3 + 410 + 686), + uint16_t(630*3 + 410 + 718), + uint16_t(630*3 + 410 + 782), + uint16_t(630*3 + 410 + 912), + uint16_t(630*3 + 410 + 1168), + uint16_t(630*3 + 410 + 1680), + uint16_t(630*3 + 410 + 2704), } /* vp8l_dec.c:89:23 */ //------------------------------------------------------------------------------ func VP8LCheckSignature(tls *libc.TLS, data uintptr, size size_t) int32 { /* vp8l_dec.c:111:5: */ - return (libc.Bool32(((size >= uint64(5)) && (int32(*(*uint8_t)(unsafe.Pointer(data))) == 0x2f)) && ((int32(*(*uint8_t)(unsafe.Pointer(data + 4))) >> 5) == 0))) // version + return libc.Bool32(size >= uint64(5) && int32(*(*uint8_t)(unsafe.Pointer(data))) == 0x2f && int32(*(*uint8_t)(unsafe.Pointer(data + 4)))>>5 == 0) // version } func ReadImageInfo(tls *libc.TLS, br uintptr, width uintptr, height uintptr, has_alpha uintptr) int32 { /* vp8l_dec.c:117:12: */ if VP8LReadBits(tls, br, 8) != uint32_t(0x2f) { return 0 } - *(*int32)(unsafe.Pointer(width)) = (int32(VP8LReadBits(tls, br, 14) + uint32_t(1))) - *(*int32)(unsafe.Pointer(height)) = (int32(VP8LReadBits(tls, br, 14) + uint32_t(1))) + *(*int32)(unsafe.Pointer(width)) = int32(VP8LReadBits(tls, br, 14) + uint32_t(1)) + *(*int32)(unsafe.Pointer(height)) = int32(VP8LReadBits(tls, br, 14) + uint32_t(1)) *(*int32)(unsafe.Pointer(has_alpha)) = int32(VP8LReadBits(tls, br, 1)) if VP8LReadBits(tls, br, 3) != uint32_t(0) { return 0 @@ -10849,7 +10589,7 @@ func VP8LGetInfo(tls *libc.TLS, data uintptr, data_size size_t, width uintptr, h bp := tls.Alloc(52) defer tls.Free(52) - if (data == (uintptr(0))) || (data_size < uint64(5)) { + if data == uintptr(0) || data_size < uint64(5) { return 0 // not enough data } else if !(VP8LCheckSignature(tls, data, data_size) != 0) { return 0 // bad signature @@ -10862,17 +10602,17 @@ func VP8LGetInfo(tls *libc.TLS, data uintptr, data_size size_t, width uintptr, h // var br VP8LBitReader at bp, 40 - VP8LInitBitReader(tls, (bp) /* &br */, data, data_size) - if !(ReadImageInfo(tls, (bp) /* &br */, (bp+40) /* &w */, (bp+44) /* &h */, (bp+48) /* &a */) != 0) { + VP8LInitBitReader(tls, bp, data, data_size) + if !(ReadImageInfo(tls, bp, bp+40, bp+44, bp+48) != 0) { return 0 } - if width != (uintptr(0)) { + if width != uintptr(0) { *(*int32)(unsafe.Pointer(width)) = *(*int32)(unsafe.Pointer(bp + 40 /* w */)) } - if height != (uintptr(0)) { + if height != uintptr(0) { *(*int32)(unsafe.Pointer(height)) = *(*int32)(unsafe.Pointer(bp + 44 /* h */)) } - if has_alpha != (uintptr(0)) { + if has_alpha != uintptr(0) { *(*int32)(unsafe.Pointer(has_alpha)) = *(*int32)(unsafe.Pointer(bp + 48 /* a */)) } return 1 @@ -10886,11 +10626,11 @@ func GetCopyDistance(tls *libc.TLS, distance_symbol int32, br uintptr) int32 { / var extra_bits int32 var offset int32 if distance_symbol < 4 { - return (distance_symbol + 1) + return distance_symbol + 1 } - extra_bits = ((distance_symbol - 2) >> 1) - offset = ((2 + (distance_symbol & 1)) << extra_bits) - return (int32((uint32_t(offset) + VP8LReadBits(tls, br, extra_bits)) + uint32_t(1))) + extra_bits = (distance_symbol - 2) >> 1 + offset = (2 + distance_symbol&1) << extra_bits + return int32(uint32_t(offset) + VP8LReadBits(tls, br, extra_bits) + uint32_t(1)) } func GetCopyLength(tls *libc.TLS, length_symbol int32, br uintptr) int32 { /* vp8l_dec.c:161:24: */ @@ -10900,12 +10640,12 @@ func GetCopyLength(tls *libc.TLS, length_symbol int32, br uintptr) int32 { /* vp func PlaneCodeToDistance(tls *libc.TLS, xsize int32, plane_code int32) int32 { /* vp8l_dec.c:167:24: */ if plane_code > 120 { - return (plane_code - 120) + return plane_code - 120 } else { - var dist_code int32 = int32(kCodeToPlane[(plane_code - 1)]) - var yoffset int32 = (dist_code >> 4) - var xoffset int32 = (8 - (dist_code & 0xf)) - var dist int32 = ((yoffset * xsize) + xoffset) + var dist_code int32 = int32(kCodeToPlane[plane_code-1]) + var yoffset int32 = dist_code >> 4 + var xoffset int32 = 8 - dist_code&0xf + var dist int32 = yoffset*xsize + xoffset if dist >= 1 { return dist } @@ -10921,29 +10661,29 @@ func PlaneCodeToDistance(tls *libc.TLS, xsize int32, plane_code int32) int32 { / func ReadSymbol(tls *libc.TLS, table uintptr, br uintptr) int32 { /* vp8l_dec.c:183:24: */ var nbits int32 var val uint32_t = VP8LPrefetchBits(tls, br) - table += 4 * (uintptr(val & (uint32_t((int32(1) << 8) - 1)))) - nbits = (int32((*HuffmanCode)(unsafe.Pointer(table)).bits) - 8) + table += 4 * uintptr(val&uint32_t(int32(1)<<8-1)) + nbits = int32((*HuffmanCode)(unsafe.Pointer(table)).bits) - 8 if nbits > 0 { - VP8LSetBitPos(tls, br, ((*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ + 8)) + VP8LSetBitPos(tls, br, (*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_+8) val = VP8LPrefetchBits(tls, br) - table += 4 * (uintptr((*HuffmanCode)(unsafe.Pointer(table)).value)) - table += 4 * (uintptr(val & (uint32_t((int32(1) << nbits) - 1)))) + table += 4 * uintptr((*HuffmanCode)(unsafe.Pointer(table)).value) + table += 4 * uintptr(val&uint32_t(int32(1)<<nbits-1)) } - VP8LSetBitPos(tls, br, ((*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ + int32((*HuffmanCode)(unsafe.Pointer(table)).bits))) + VP8LSetBitPos(tls, br, (*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_+int32((*HuffmanCode)(unsafe.Pointer(table)).bits)) return int32((*HuffmanCode)(unsafe.Pointer(table)).value) } // Reads packed symbol depending on GREEN channel func ReadPackedSymbols(tls *libc.TLS, group uintptr, br uintptr, dst uintptr) int32 { /* vp8l_dec.c:202:24: */ - var val uint32_t = (VP8LPrefetchBits(tls, br) & ((uint32(1) << 6) - uint32(1))) - var code = *(*HuffmanCode32)(unsafe.Pointer((group + 56 /* &.packed_table */) + uintptr(val)*8)) + var val uint32_t = VP8LPrefetchBits(tls, br) & (uint32(1)<<6 - uint32(1)) + var code = *(*HuffmanCode32)(unsafe.Pointer(group + 56 + uintptr(val)*8)) if code.bits < 0x100 { - VP8LSetBitPos(tls, br, ((*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ + code.bits)) + VP8LSetBitPos(tls, br, (*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_+code.bits) *(*uint32_t)(unsafe.Pointer(dst)) = code.value return 0 } else { - VP8LSetBitPos(tls, br, (((*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ + code.bits) - 0x100)) + VP8LSetBitPos(tls, br, (*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_+code.bits-0x100) return int32(code.value) } @@ -10951,29 +10691,29 @@ func ReadPackedSymbols(tls *libc.TLS, group uintptr, br uintptr, dst uintptr) in } func AccumulateHCode(tls *libc.TLS, hcode HuffmanCode, shift int32, huff uintptr) int32 { /* vp8l_dec.c:219:12: */ - *(*int32)(unsafe.Pointer((huff /* &.bits */))) += (int32(hcode.bits)) - *(*uint32_t)(unsafe.Pointer((huff + 4 /* &.value */))) |= (uint32_t(hcode.value) << shift) + *(*int32)(unsafe.Pointer(huff)) += int32(hcode.bits) + *(*uint32_t)(unsafe.Pointer(huff + 4)) |= uint32_t(hcode.value) << shift return int32(hcode.bits) } func BuildPackedTable(tls *libc.TLS, htree_group uintptr) { /* vp8l_dec.c:227:13: */ var code uint32_t - for code = uint32_t(0); code < (uint32(1) << 6); code++ { + for code = uint32_t(0); code < uint32(1)<<6; code++ { var bits uint32_t = code _ = bits - var huff uintptr = ((htree_group + 56 /* &.packed_table */) + uintptr(bits)*8) - var hcode = *(*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer((htree_group /* &.htrees */))) + uintptr(bits)*4)) + var huff uintptr = htree_group + 56 + uintptr(bits)*8 + var hcode = *(*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(htree_group)) + uintptr(bits)*4)) if int32(hcode.value) >= 256 { - (*HuffmanCode32)(unsafe.Pointer(huff)).bits = (int32(hcode.bits) + 0x100) + (*HuffmanCode32)(unsafe.Pointer(huff)).bits = int32(hcode.bits) + 0x100 (*HuffmanCode32)(unsafe.Pointer(huff)).value = uint32_t(hcode.value) } else { (*HuffmanCode32)(unsafe.Pointer(huff)).bits = 0 (*HuffmanCode32)(unsafe.Pointer(huff)).value = uint32_t(0) bits >>= AccumulateHCode(tls, hcode, 8, huff) - bits >>= AccumulateHCode(tls, *(*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer((htree_group /* &.htrees */) + 1*8)) + uintptr(bits)*4)), 16, huff) - bits >>= AccumulateHCode(tls, *(*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer((htree_group /* &.htrees */) + 2*8)) + uintptr(bits)*4)), 0, huff) - bits >>= AccumulateHCode(tls, *(*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer((htree_group /* &.htrees */) + 3*8)) + uintptr(bits)*4)), 24, huff) + bits >>= AccumulateHCode(tls, *(*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(htree_group + 1*8)) + uintptr(bits)*4)), 16, huff) + bits >>= AccumulateHCode(tls, *(*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(htree_group + 2*8)) + uintptr(bits)*4)), 0, huff) + bits >>= AccumulateHCode(tls, *(*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(htree_group + 3*8)) + uintptr(bits)*4)), 24, huff) _ = bits } } @@ -11000,12 +10740,12 @@ func ReadHuffmanCodeLengths(tls *libc.TLS, dec uintptr, code_length_code_lengths var p uintptr var code_len int32 ok = 0 - br = (dec + 40 /* &.br_ */) + br = dec + 40 prev_code_len = 8 - if !(!(VP8LBuildHuffmanTable(tls, (bp) /* &table[0] */, 7, + if !!(VP8LBuildHuffmanTable(tls, bp, 7, code_length_code_lengths, - 19) != 0)) { + 19) != 0) { goto __1 } goto End @@ -11015,8 +10755,8 @@ __1: if !(VP8LReadBits(tls, br, 1) != 0) { goto __2 } // use length - length_nbits = (int32(uint32_t(2) + (uint32_t(2) * VP8LReadBits(tls, br, 3)))) - max_symbol = (int32(uint32_t(2) + VP8LReadBits(tls, br, length_nbits))) + length_nbits = int32(uint32_t(2) + uint32_t(2)*VP8LReadBits(tls, br, 3)) + max_symbol = int32(uint32_t(2) + VP8LReadBits(tls, br, length_nbits)) if !(max_symbol > num_symbols) { goto __4 } @@ -11041,8 +10781,8 @@ __5: __7: ; VP8LFillBitWindow(tls, br) - p = ((bp) /* &table */ + uintptr((VP8LPrefetchBits(tls, br)&(uint32_t((int32(1)<<7)-1))))*4) - VP8LSetBitPos(tls, br, ((*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ + int32((*HuffmanCode)(unsafe.Pointer(p)).bits))) + p = bp + uintptr(VP8LPrefetchBits(tls, br)&uint32_t(int32(1)<<7-1))*4 + VP8LSetBitPos(tls, br, (*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_+int32((*HuffmanCode)(unsafe.Pointer(p)).bits)) code_len = int32((*HuffmanCode)(unsafe.Pointer(p)).value) if !(code_len < kCodeLengthLiterals) { goto __8 @@ -11056,12 +10796,12 @@ __10: ; goto __9 __8: - use_prev = (libc.Bool32(code_len == kCodeLengthRepeatCode)) - slot = (code_len - kCodeLengthLiterals) + use_prev = libc.Bool32(code_len == kCodeLengthRepeatCode) + slot = code_len - kCodeLengthLiterals extra_bits = int32(kCodeLengthExtraBits[slot]) repeat_offset = int32(kCodeLengthRepeatOffsets[slot]) - repeat = (int32(VP8LReadBits(tls, br, extra_bits) + uint32_t(repeat_offset))) - if !((symbol + repeat) > num_symbols) { + repeat = int32(VP8LReadBits(tls, br, extra_bits) + uint32_t(repeat_offset)) + if !(symbol+repeat > num_symbols) { goto __11 } goto End @@ -11090,7 +10830,7 @@ __6: ok = 1 End: - if !(!(ok != 0)) { + if !!(ok != 0) { goto __15 } (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_BITSTREAM_ERROR @@ -11107,13 +10847,13 @@ func ReadHuffmanCode(tls *libc.TLS, alphabet_size int32, dec uintptr, code_lengt var ok int32 = 0 var size int32 = 0 - var br uintptr = (dec + 40 /* &.br_ */) + var br uintptr = dec + 40 var simple_code int32 = int32(VP8LReadBits(tls, br, 1)) - libc.Xmemset(tls, code_lengths, 0, (uint64(alphabet_size) * uint64(unsafe.Sizeof(int32(0))))) + libc.Xmemset(tls, code_lengths, 0, uint64(alphabet_size)*uint64(unsafe.Sizeof(int32(0)))) if simple_code != 0 { // Read symbols, codes & code lengths directly. - var num_symbols int32 = (int32(VP8LReadBits(tls, br, 1) + uint32_t(1))) + var num_symbols int32 = int32(VP8LReadBits(tls, br, 1) + uint32_t(1)) var first_symbol_len_code int32 = int32(VP8LReadBits(tls, br, 1)) // The first code is either 1 bit or 8 bit code. var symbol int32 = int32(VP8LReadBits(tls, br, func() int32 { @@ -11132,25 +10872,25 @@ func ReadHuffmanCode(tls *libc.TLS, alphabet_size int32, dec uintptr, code_lengt } else { // Decode Huffman-coded code lengths. var i int32 *(*[19]int32)(unsafe.Pointer(bp /* code_length_code_lengths */)) = [19]int32{0: 0} - var num_codes int32 = (int32(VP8LReadBits(tls, br, 4) + uint32_t(4))) + var num_codes int32 = int32(VP8LReadBits(tls, br, 4) + uint32_t(4)) if num_codes > 19 { (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_BITSTREAM_ERROR return 0 } for i = 0; i < num_codes; i++ { - *(*int32)(unsafe.Pointer((bp) /* &code_length_code_lengths[0] */ + uintptr(kCodeLengthCodeOrder[i])*4)) = int32(VP8LReadBits(tls, br, 3)) + *(*int32)(unsafe.Pointer(bp + uintptr(kCodeLengthCodeOrder[i])*4)) = int32(VP8LReadBits(tls, br, 3)) } - ok = ReadHuffmanCodeLengths(tls, dec, (bp) /* &code_length_code_lengths[0] */, alphabet_size, + ok = ReadHuffmanCodeLengths(tls, dec, bp, alphabet_size, code_lengths) } - ok = (libc.Bool32((ok != 0) && !((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0))) + ok = libc.Bool32(ok != 0 && !((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0)) if ok != 0 { size = VP8LBuildHuffmanTable(tls, table, 8, code_lengths, alphabet_size) } - if !(ok != 0) || (size == 0) { + if !(ok != 0) || size == 0 { (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_BITSTREAM_ERROR return 0 } @@ -11200,30 +10940,30 @@ func ReadHuffmanCodes(tls *libc.TLS, dec uintptr, xsize int32, ysize int32, colo var total_size int32 var is_trivial_literal int32 var max_bits int32 - br = (dec + 40 /* &.br_ */) - hdr = (dec + 152 /* &.hdr_ */) - *(*uintptr)(unsafe.Pointer(bp /* huffman_image */)) = (uintptr(0)) - htree_groups = (uintptr(0)) - huffman_tables = (uintptr(0)) - huffman_table = (uintptr(0)) + br = dec + 40 + hdr = dec + 152 + *(*uintptr)(unsafe.Pointer(bp /* huffman_image */)) = uintptr(0) + htree_groups = uintptr(0) + huffman_tables = uintptr(0) + huffman_table = uintptr(0) num_htree_groups = 1 num_htree_groups_max = 1 max_alphabet_size = 0 - code_lengths = (uintptr(0)) + code_lengths = uintptr(0) table_size = int32(kTableSize[color_cache_bits]) - mapping = (uintptr(0)) + mapping = uintptr(0) ok = 0 - if !((allow_recursion != 0) && (VP8LReadBits(tls, br, 1) != 0)) { + if !(allow_recursion != 0 && VP8LReadBits(tls, br, 1) != 0) { goto __1 } // use meta Huffman codes. - huffman_precision = (int32(VP8LReadBits(tls, br, 3) + uint32_t(2))) + huffman_precision = int32(VP8LReadBits(tls, br, 3) + uint32_t(2)) huffman_xsize = int32(VP8LSubSampleSize(tls, uint32(xsize), uint32(huffman_precision))) huffman_ysize = int32(VP8LSubSampleSize(tls, uint32(ysize), uint32(huffman_precision))) - huffman_pixs = (huffman_xsize * huffman_ysize) - if !(!(DecodeImageStream(tls, huffman_xsize, huffman_ysize, 0, dec, - (bp) /* &huffman_image */) != 0)) { + huffman_pixs = huffman_xsize * huffman_ysize + if !!(DecodeImageStream(tls, huffman_xsize, huffman_ysize, 0, dec, + bp) != 0) { goto __2 } goto Error @@ -11236,12 +10976,12 @@ __3: goto __5 } // The huffman data is stored in red and green bytes. - group = (int32((*(*uint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp /* huffman_image */)) + uintptr(i)*4)) >> 8) & uint32_t(0xffff))) + group = int32(*(*uint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + uintptr(i)*4)) >> 8 & uint32_t(0xffff)) *(*uint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp /* huffman_image */)) + uintptr(i)*4)) = uint32_t(group) if !(group >= num_htree_groups_max) { goto __6 } - num_htree_groups_max = (group + 1) + num_htree_groups_max = group + 1 __6: ; goto __4 @@ -11257,13 +10997,13 @@ __5: // The value of 1000 is totally arbitrary. We know that num_htree_groups_max // is smaller than (1 << 16) and should be smaller than the number of pixels // (though the format allows it to be bigger). - if !((num_htree_groups_max > 1000) || (num_htree_groups_max > (xsize * ysize))) { + if !(num_htree_groups_max > 1000 || num_htree_groups_max > xsize*ysize) { goto __7 } // Create a mapping from the used indices to the minimal set of used // values [0, num_htree_groups) mapping = WebPSafeMalloc(tls, uint64(num_htree_groups_max), uint64(unsafe.Sizeof(int32(0)))) - if !(mapping == (uintptr(0))) { + if !(mapping == uintptr(0)) { goto __9 } (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OUT_OF_MEMORY @@ -11272,7 +11012,7 @@ __9: ; // -1 means a value is unmapped, and therefore unused in the Huffman // image. - libc.Xmemset(tls, mapping, 0xff, (uint64(num_htree_groups_max) * uint64(unsafe.Sizeof(int32(0))))) + libc.Xmemset(tls, mapping, 0xff, uint64(num_htree_groups_max)*uint64(unsafe.Sizeof(int32(0)))) num_htree_groups = 0 i = 0 __10: @@ -11280,7 +11020,7 @@ __10: goto __12 } // Get the current mapping for the group and remap the Huffman image. - mapped_group = (mapping + uintptr(*(*uint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp /* huffman_image */)) + uintptr(i)*4)))*4) + mapped_group = mapping + uintptr(*(*uint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + uintptr(i)*4)))*4 if !(*(*int32)(unsafe.Pointer(mapped_group)) == -1) { goto __13 } @@ -11317,10 +11057,10 @@ __15: goto __17 } alphabet_size = int32(kAlphabetSize[j]) - if !((j == 0) && (color_cache_bits > 0)) { + if !(j == 0 && color_cache_bits > 0) { goto __18 } - alphabet_size = alphabet_size + (int32(1) << color_cache_bits) + alphabet_size = alphabet_size + int32(1)<<color_cache_bits __18: ; if !(max_alphabet_size < alphabet_size) { @@ -11339,11 +11079,11 @@ __17: code_lengths = WebPSafeCalloc(tls, uint64_t(max_alphabet_size), uint64(unsafe.Sizeof(int32(0)))) - huffman_tables = WebPSafeMalloc(tls, (uint64(num_htree_groups * table_size)), + huffman_tables = WebPSafeMalloc(tls, uint64(num_htree_groups*table_size), uint64(unsafe.Sizeof(HuffmanCode{}))) htree_groups = VP8LHtreeGroupsNew(tls, num_htree_groups) - if !(((htree_groups == (uintptr(0))) || (code_lengths == (uintptr(0)))) || (huffman_tables == (uintptr(0)))) { + if !(htree_groups == uintptr(0) || code_lengths == uintptr(0) || huffman_tables == uintptr(0)) { goto __20 } (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OUT_OF_MEMORY @@ -11359,7 +11099,7 @@ __21: } // If the index "i" is unused in the Huffman image, just make sure the // coefficients are valid but do not store them. - if !((mapping != (uintptr(0))) && (*(*int32)(unsafe.Pointer(mapping + uintptr(i)*4)) == -1)) { + if !(mapping != uintptr(0) && *(*int32)(unsafe.Pointer(mapping + uintptr(i)*4)) == -1) { goto __24 } j = 0 @@ -11368,14 +11108,14 @@ __26: goto __28 } alphabet_size1 = int32(kAlphabetSize[j]) - if !((j == 0) && (color_cache_bits > 0)) { + if !(j == 0 && color_cache_bits > 0) { goto __29 } - alphabet_size1 = alphabet_size1 + (int32(1) << color_cache_bits) + alphabet_size1 = alphabet_size1 + int32(1)<<color_cache_bits __29: ; // Passing in NULL so that nothing gets filled. - if !(!(ReadHuffmanCode(tls, alphabet_size1, dec, code_lengths, (uintptr(0))) != 0)) { + if !!(ReadHuffmanCode(tls, alphabet_size1, dec, code_lengths, uintptr(0)) != 0) { goto __30 } goto Error @@ -11391,12 +11131,12 @@ __28: goto __25 __24: htree_group = - (htree_groups + uintptr(func() int32 { - if mapping == (uintptr(0)) { + htree_groups + uintptr(func() int32 { + if mapping == uintptr(0) { return i } return *(*int32)(unsafe.Pointer(mapping + uintptr(i)*4)) - }())*568) + }())*568 htrees = htree_group /* &.htrees */ total_size = 0 is_trivial_literal = 1 @@ -11408,10 +11148,10 @@ __31: } alphabet_size2 = int32(kAlphabetSize[j]) *(*uintptr)(unsafe.Pointer(htrees + uintptr(j)*8)) = huffman_table - if !((j == 0) && (color_cache_bits > 0)) { + if !(j == 0 && color_cache_bits > 0) { goto __34 } - alphabet_size2 = alphabet_size2 + (int32(1) << color_cache_bits) + alphabet_size2 = alphabet_size2 + int32(1)<<color_cache_bits __34: ; size = ReadHuffmanCode(tls, alphabet_size2, dec, code_lengths, huffman_table) @@ -11421,14 +11161,14 @@ __34: goto Error __35: ; - if !((is_trivial_literal != 0) && (int32(kLiteralMap[j]) == 1)) { + if !(is_trivial_literal != 0 && int32(kLiteralMap[j]) == 1) { goto __36 } - is_trivial_literal = (libc.Bool32(int32((*HuffmanCode)(unsafe.Pointer(huffman_table)).bits) == 0)) + is_trivial_literal = libc.Bool32(int32((*HuffmanCode)(unsafe.Pointer(huffman_table)).bits) == 0) __36: ; - total_size = total_size + (int32((*HuffmanCode)(unsafe.Pointer(huffman_table)).bits)) - huffman_table += 4 * (uintptr(size)) + total_size = total_size + int32((*HuffmanCode)(unsafe.Pointer(huffman_table)).bits) + huffman_table += 4 * uintptr(size) if !(j <= ALPHA) { goto __37 } @@ -11451,7 +11191,7 @@ __39: goto __40 __40: ; - max_bits = max_bits + (local_max_bits) + max_bits = max_bits + local_max_bits __37: ; goto __32 @@ -11469,17 +11209,17 @@ __33: red = int32((*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(htrees + 1*8)))).value) blue = int32((*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(htrees + 2*8)))).value) alpha = int32((*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(htrees + 3*8)))).value) - (*HTreeGroup)(unsafe.Pointer(htree_group)).literal_arb = (((uint32_t(alpha) << 24) | (uint32_t(red << 16))) | uint32_t(blue)) - if !((total_size == 0) && (int32((*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(htrees)))).value) < 256)) { + (*HTreeGroup)(unsafe.Pointer(htree_group)).literal_arb = uint32_t(alpha)<<24 | uint32_t(red<<16) | uint32_t(blue) + if !(total_size == 0 && int32((*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(htrees)))).value) < 256) { goto __43 } (*HTreeGroup)(unsafe.Pointer(htree_group)).is_trivial_code = 1 - *(*uint32_t)(unsafe.Pointer((htree_group + 44 /* &.literal_arb */))) |= (uint32_t(int32((*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(htrees)))).value) << 8)) + *(*uint32_t)(unsafe.Pointer(htree_group + 44)) |= uint32_t(int32((*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(htrees)))).value) << 8) __43: ; __42: ; - (*HTreeGroup)(unsafe.Pointer(htree_group)).use_packed_table = (libc.Bool32(!((*HTreeGroup)(unsafe.Pointer(htree_group)).is_trivial_code != 0) && (max_bits < 6))) + (*HTreeGroup)(unsafe.Pointer(htree_group)).use_packed_table = libc.Bool32(!((*HTreeGroup)(unsafe.Pointer(htree_group)).is_trivial_code != 0) && max_bits < 6) if !((*HTreeGroup)(unsafe.Pointer(htree_group)).use_packed_table != 0) { goto __44 } @@ -11506,7 +11246,7 @@ __23: Error: WebPSafeFree(tls, code_lengths) WebPSafeFree(tls, mapping) - if !(!(ok != 0)) { + if !!(ok != 0) { goto __45 } WebPSafeFree(tls, *(*uintptr)(unsafe.Pointer(bp /* huffman_image */))) @@ -11526,13 +11266,13 @@ func AllocateAndInitRescaler(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* var out_width int32 = (*VP8Io)(unsafe.Pointer(io)).scaled_width var in_height int32 = (*VP8Io)(unsafe.Pointer(io)).mb_h var out_height int32 = (*VP8Io)(unsafe.Pointer(io)).scaled_height - var work_size uint64_t = ((uint64_t(2 * num_channels)) * uint64_t(out_width)) + var work_size uint64_t = uint64_t(2*num_channels) * uint64_t(out_width) var work uintptr // Rescaler work area. var scaled_data_size uint64_t = uint64_t(out_width) var scaled_data uintptr // Temporary storage for scaled BGRA data. - var memory_size uint64_t = ((uint64(unsafe.Sizeof(WebPRescaler{})) + (work_size * uint64_t(unsafe.Sizeof(rescaler_t(0))))) + (scaled_data_size * uint64_t(unsafe.Sizeof(uint32_t(0))))) + var memory_size uint64_t = uint64(unsafe.Sizeof(WebPRescaler{})) + work_size*uint64_t(unsafe.Sizeof(rescaler_t(0))) + scaled_data_size*uint64_t(unsafe.Sizeof(uint32_t(0))) var memory uintptr = WebPSafeMalloc(tls, memory_size, uint64(unsafe.Sizeof(uint8_t(0)))) - if memory == (uintptr(0)) { + if memory == uintptr(0) { (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OUT_OF_MEMORY return 0 } @@ -11542,7 +11282,7 @@ func AllocateAndInitRescaler(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* (*VP8LDecoder)(unsafe.Pointer(dec)).rescaler = memory memory += uintptr(unsafe.Sizeof(WebPRescaler{})) work = memory - memory += (uintptr(work_size * uint64_t(unsafe.Sizeof(rescaler_t(0))))) + memory += uintptr(work_size * uint64_t(unsafe.Sizeof(rescaler_t(0)))) scaled_data = memory if !(WebPRescalerInit(tls, (*VP8LDecoder)(unsafe.Pointer(dec)).rescaler, in_width, in_height, @@ -11580,9 +11320,9 @@ func EmitRescaledRowsRGBA(tls *libc.TLS, dec uintptr, in uintptr, in_stride int3 var num_lines_in int32 = 0 var num_lines_out int32 = 0 for num_lines_in < mb_h { - var row_in uintptr = (in + uintptr((uint64_t(num_lines_in) * uint64_t(in_stride)))) - var row_out uintptr = (out + uintptr((uint64_t(num_lines_out) * uint64_t(out_stride)))) - var lines_left int32 = (mb_h - num_lines_in) + var row_in uintptr = in + uintptr(uint64_t(num_lines_in)*uint64_t(in_stride)) + var row_out uintptr = out + uintptr(uint64_t(num_lines_out)*uint64_t(out_stride)) + var lines_left int32 = mb_h - num_lines_in var needed_lines int32 = WebPRescaleNeededLines(tls, (*VP8LDecoder)(unsafe.Pointer(dec)).rescaler, lines_left) var lines_imported int32 @@ -11590,8 +11330,8 @@ func EmitRescaledRowsRGBA(tls *libc.TLS, dec uintptr, in uintptr, in_stride int3 (*WebPRescaler)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).rescaler)).src_width, needed_lines, 0) lines_imported = WebPRescalerImport(tls, (*VP8LDecoder)(unsafe.Pointer(dec)).rescaler, lines_left, row_in, in_stride) - num_lines_in = num_lines_in + (lines_imported) - num_lines_out = num_lines_out + (Export(tls, (*VP8LDecoder)(unsafe.Pointer(dec)).rescaler, colorspace, out_stride, row_out)) + num_lines_in = num_lines_in + lines_imported + num_lines_out = num_lines_out + Export(tls, (*VP8LDecoder)(unsafe.Pointer(dec)).rescaler, colorspace, out_stride, row_out) } return num_lines_out } @@ -11612,30 +11352,30 @@ func EmitRows(tls *libc.TLS, colorspace WEBP_CSP_MODE, row_in uintptr, in_stride // Export to YUVA func ConvertToYUVA(tls *libc.TLS, src uintptr, width int32, y_pos int32, output uintptr) { /* vp8l_dec.c:638:13: */ - var buf uintptr = (output + 16 /* &.u */) /* &.YUVA */ + var buf uintptr = output + 16 // first, the luma plane (*struct { f func(*libc.TLS, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{WebPConvertARGBToY})).f(tls, src, ((*WebPYUVABuffer)(unsafe.Pointer(buf)).y + uintptr((y_pos * (*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride))), width) + })(unsafe.Pointer(&struct{ uintptr }{WebPConvertARGBToY})).f(tls, src, (*WebPYUVABuffer)(unsafe.Pointer(buf)).y+uintptr(y_pos*(*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride), width) // then U/V planes { - var u uintptr = ((*WebPYUVABuffer)(unsafe.Pointer(buf)).u + uintptr(((y_pos >> 1) * (*WebPYUVABuffer)(unsafe.Pointer(buf)).u_stride))) - var v uintptr = ((*WebPYUVABuffer)(unsafe.Pointer(buf)).v + uintptr(((y_pos >> 1) * (*WebPYUVABuffer)(unsafe.Pointer(buf)).v_stride))) + var u uintptr = (*WebPYUVABuffer)(unsafe.Pointer(buf)).u + uintptr(y_pos>>1*(*WebPYUVABuffer)(unsafe.Pointer(buf)).u_stride) + var v uintptr = (*WebPYUVABuffer)(unsafe.Pointer(buf)).v + uintptr(y_pos>>1*(*WebPYUVABuffer)(unsafe.Pointer(buf)).v_stride) // even lines: store values // odd lines: average with previous values (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32, int32) - })(unsafe.Pointer(&struct{ uintptr }{WebPConvertARGBToUV})).f(tls, src, u, v, width, libc.BoolInt32(!((y_pos & 1) != 0))) + })(unsafe.Pointer(&struct{ uintptr }{WebPConvertARGBToUV})).f(tls, src, u, v, width, libc.BoolInt32(!(y_pos&1 != 0))) } // Lastly, store alpha if needed. - if (*WebPYUVABuffer)(unsafe.Pointer(buf)).a != (uintptr(0)) { - var a uintptr = ((*WebPYUVABuffer)(unsafe.Pointer(buf)).a + uintptr((y_pos * (*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride))) + if (*WebPYUVABuffer)(unsafe.Pointer(buf)).a != uintptr(0) { + var a uintptr = (*WebPYUVABuffer)(unsafe.Pointer(buf)).a + uintptr(y_pos*(*WebPYUVABuffer)(unsafe.Pointer(buf)).a_stride) (*struct { f func(*libc.TLS, uintptr, int32, int32, int32, uintptr, int32) int32 - })(unsafe.Pointer(&struct{ uintptr }{WebPExtractAlpha})).f(tls, (src + uintptr(3)), 0, width, 1, a, 0) + })(unsafe.Pointer(&struct{ uintptr }{WebPExtractAlpha})).f(tls, src+uintptr(3), 0, width, 1, a, 0) } } @@ -11660,15 +11400,15 @@ func EmitRescaledRowsYUVA(tls *libc.TLS, dec uintptr, in uintptr, in_stride int3 var num_lines_in int32 = 0 var y_pos int32 = (*VP8LDecoder)(unsafe.Pointer(dec)).last_out_row_ for num_lines_in < mb_h { - var lines_left int32 = (mb_h - num_lines_in) + var lines_left int32 = mb_h - num_lines_in var needed_lines int32 = WebPRescaleNeededLines(tls, (*VP8LDecoder)(unsafe.Pointer(dec)).rescaler, lines_left) var lines_imported int32 WebPMultARGBRows(tls, in, in_stride, (*WebPRescaler)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).rescaler)).src_width, needed_lines, 0) lines_imported = WebPRescalerImport(tls, (*VP8LDecoder)(unsafe.Pointer(dec)).rescaler, lines_left, in, in_stride) - num_lines_in = num_lines_in + (lines_imported) - in += (uintptr(needed_lines * in_stride)) - y_pos = y_pos + (ExportYUVA(tls, dec, y_pos)) + num_lines_in = num_lines_in + lines_imported + in += uintptr(needed_lines * in_stride) + y_pos = y_pos + ExportYUVA(tls, dec, y_pos) } return y_pos } @@ -11697,19 +11437,19 @@ func SetCropWindow(tls *libc.TLS, io uintptr, y_start int32, y_end int32, in_dat y_end = (*VP8Io)(unsafe.Pointer(io)).crop_bottom // make sure we don't overflow on last row. } if y_start < (*VP8Io)(unsafe.Pointer(io)).crop_top { - var delta int32 = ((*VP8Io)(unsafe.Pointer(io)).crop_top - y_start) + var delta int32 = (*VP8Io)(unsafe.Pointer(io)).crop_top - y_start y_start = (*VP8Io)(unsafe.Pointer(io)).crop_top - *(*uintptr)(unsafe.Pointer(in_data)) += (uintptr(delta * pixel_stride)) + *(*uintptr)(unsafe.Pointer(in_data)) += uintptr(delta * pixel_stride) } if y_start >= y_end { return 0 } // Crop window is empty. - *(*uintptr)(unsafe.Pointer(in_data)) += (uintptr(uint64((*VP8Io)(unsafe.Pointer(io)).crop_left) * uint64(unsafe.Sizeof(uint32_t(0))))) + *(*uintptr)(unsafe.Pointer(in_data)) += uintptr(uint64((*VP8Io)(unsafe.Pointer(io)).crop_left) * uint64(unsafe.Sizeof(uint32_t(0)))) - (*VP8Io)(unsafe.Pointer(io)).mb_y = (y_start - (*VP8Io)(unsafe.Pointer(io)).crop_top) - (*VP8Io)(unsafe.Pointer(io)).mb_w = ((*VP8Io)(unsafe.Pointer(io)).crop_right - (*VP8Io)(unsafe.Pointer(io)).crop_left) - (*VP8Io)(unsafe.Pointer(io)).mb_h = (y_end - y_start) + (*VP8Io)(unsafe.Pointer(io)).mb_y = y_start - (*VP8Io)(unsafe.Pointer(io)).crop_top + (*VP8Io)(unsafe.Pointer(io)).mb_w = (*VP8Io)(unsafe.Pointer(io)).crop_right - (*VP8Io)(unsafe.Pointer(io)).crop_left + (*VP8Io)(unsafe.Pointer(io)).mb_h = y_end - y_start return 1 // Non-empty crop window. } @@ -11719,14 +11459,14 @@ func GetMetaIndex(tls *libc.TLS, image uintptr, xsize int32, bits int32, x int32 if bits == 0 { return 0 } - return int32(*(*uint32_t)(unsafe.Pointer(image + uintptr(((xsize*(y>>bits))+(x>>bits)))*4))) + return int32(*(*uint32_t)(unsafe.Pointer(image + uintptr(xsize*(y>>bits)+x>>bits)*4))) } func GetHtreeGroupForPos(tls *libc.TLS, hdr uintptr, x int32, y int32) uintptr { /* vp8l_dec.c:748:30: */ var meta_index int32 = GetMetaIndex(tls, (*VP8LMetadata)(unsafe.Pointer(hdr)).huffman_image_, (*VP8LMetadata)(unsafe.Pointer(hdr)).huffman_xsize_, (*VP8LMetadata)(unsafe.Pointer(hdr)).huffman_subsample_bits_, x, y) - return ((*VP8LMetadata)(unsafe.Pointer(hdr)).htree_groups_ + uintptr(meta_index)*568) + return (*VP8LMetadata)(unsafe.Pointer(hdr)).htree_groups_ + uintptr(meta_index)*568 } //------------------------------------------------------------------------------ @@ -11736,20 +11476,20 @@ type ProcessRowsFunc = uintptr /* vp8l_dec.c:759:14 */ func ApplyInverseTransforms(tls *libc.TLS, dec uintptr, start_row int32, num_rows int32, rows uintptr) { /* vp8l_dec.c:761:13: */ var n int32 = (*VP8LDecoder)(unsafe.Pointer(dec)).next_transform_ - var cache_pixs int32 = ((*VP8LDecoder)(unsafe.Pointer(dec)).width_ * num_rows) - var end_row int32 = (start_row + num_rows) + var cache_pixs int32 = (*VP8LDecoder)(unsafe.Pointer(dec)).width_ * num_rows + var end_row int32 = start_row + num_rows var rows_in uintptr = rows var rows_out uintptr = (*VP8LDecoder)(unsafe.Pointer(dec)).argb_cache_ // Inverse transforms. for libc.PostDecInt32(&n, 1) > 0 { - var transform uintptr = ((dec + 248 /* &.transforms_ */) + uintptr(n)*24) + var transform uintptr = dec + 248 + uintptr(n)*24 VP8LInverseTransform(tls, transform, start_row, end_row, rows_in, rows_out) rows_in = rows_out } if rows_in != rows_out { // No transform called, hence just copy. - libc.Xmemcpy(tls, rows_out, rows_in, (uint64(cache_pixs) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, rows_out, rows_in, uint64(cache_pixs)*uint64(unsafe.Sizeof(uint32_t(0)))) } } @@ -11759,8 +11499,8 @@ func ProcessRows(tls *libc.TLS, dec uintptr, row int32) { /* vp8l_dec.c:784:13: bp := tls.Alloc(8) defer tls.Free(8) - var rows uintptr = ((*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ + uintptr(((*VP8LDecoder)(unsafe.Pointer(dec)).width_*(*VP8LDecoder)(unsafe.Pointer(dec)).last_row_))*4) - var num_rows int32 = (row - (*VP8LDecoder)(unsafe.Pointer(dec)).last_row_) + var rows uintptr = (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ + uintptr((*VP8LDecoder)(unsafe.Pointer(dec)).width_*(*VP8LDecoder)(unsafe.Pointer(dec)).last_row_)*4 + var num_rows int32 = row - (*VP8LDecoder)(unsafe.Pointer(dec)).last_row_ // We can't process more than NUM_ARGB_CACHE_ROWS at a time (that's the size // of argb_cache_), but we currently don't need more than that. @@ -11768,15 +11508,15 @@ func ProcessRows(tls *libc.TLS, dec uintptr, row int32) { /* vp8l_dec.c:784:13: if num_rows > 0 { // Emit output. var io uintptr = (*VP8LDecoder)(unsafe.Pointer(dec)).io_ *(*uintptr)(unsafe.Pointer(bp /* rows_data */)) = (*VP8LDecoder)(unsafe.Pointer(dec)).argb_cache_ - var in_stride int32 = (int32(uint64((*VP8Io)(unsafe.Pointer(io)).width) * uint64(unsafe.Sizeof(uint32_t(0))))) // in unit of RGBA + var in_stride int32 = int32(uint64((*VP8Io)(unsafe.Pointer(io)).width) * uint64(unsafe.Sizeof(uint32_t(0)))) // in unit of RGBA ApplyInverseTransforms(tls, dec, (*VP8LDecoder)(unsafe.Pointer(dec)).last_row_, num_rows, rows) - if !(SetCropWindow(tls, io, (*VP8LDecoder)(unsafe.Pointer(dec)).last_row_, row, (bp) /* &rows_data */, in_stride) != 0) { + if !(SetCropWindow(tls, io, (*VP8LDecoder)(unsafe.Pointer(dec)).last_row_, row, bp, in_stride) != 0) { // Nothing to output (this time). } else { var output uintptr = (*VP8LDecoder)(unsafe.Pointer(dec)).output_ if WebPIsRGBMode(tls, (*WebPDecBuffer)(unsafe.Pointer(output)).colorspace) != 0 { // convert to RGBA - var buf uintptr = (output + 16 /* &.u */) /* &.RGBA */ - var rgba uintptr = ((*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr((int64_t((*VP8LDecoder)(unsafe.Pointer(dec)).last_out_row_) * int64_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)))) + var buf uintptr = output + 16 + var rgba uintptr = (*WebPRGBABuffer)(unsafe.Pointer(buf)).rgba + uintptr(int64_t((*VP8LDecoder)(unsafe.Pointer(dec)).last_out_row_)*int64_t((*WebPRGBABuffer)(unsafe.Pointer(buf)).stride)) var num_rows_out int32 if (*VP8Io)(unsafe.Pointer(io)).use_scaling != 0 { num_rows_out = EmitRescaledRowsRGBA(tls, dec, *(*uintptr)(unsafe.Pointer(bp /* rows_data */)), in_stride, (*VP8Io)(unsafe.Pointer(io)).mb_h, @@ -11786,7 +11526,7 @@ func ProcessRows(tls *libc.TLS, dec uintptr, row int32) { /* vp8l_dec.c:784:13: (*VP8Io)(unsafe.Pointer(io)).mb_w, (*VP8Io)(unsafe.Pointer(io)).mb_h, rgba, (*WebPRGBABuffer)(unsafe.Pointer(buf)).stride) } // Update 'last_out_row_'. - *(*int32)(unsafe.Pointer((dec + 148 /* &.last_out_row_ */))) += (num_rows_out) + *(*int32)(unsafe.Pointer(dec + 148)) += num_rows_out } else { // convert to YUVA (*VP8LDecoder)(unsafe.Pointer(dec)).last_out_row_ = func() int32 { if (*VP8Io)(unsafe.Pointer(io)).use_scaling != 0 { @@ -11814,7 +11554,7 @@ func Is8bOptimizable(tls *libc.TLS, hdr uintptr) int32 { /* vp8l_dec.c:831:12: * // When the Huffman tree contains only one symbol, we can skip the // call to ReadSymbol() for red/blue/alpha channels. for i = 0; i < (*VP8LMetadata)(unsafe.Pointer(hdr)).num_htree_groups_; i++ { - var htrees uintptr = ((*VP8LMetadata)(unsafe.Pointer(hdr)).htree_groups_ + uintptr(i)*568) /* &.htrees */ + var htrees uintptr = (*VP8LMetadata)(unsafe.Pointer(hdr)).htree_groups_ + uintptr(i)*568 if int32((*HuffmanCode)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(htrees + 1*8)))).bits) > 0 { return 0 } @@ -11849,7 +11589,7 @@ func ExtractPalettedAlphaRows(tls *libc.TLS, dec uintptr, last_row int32) { /* v // crop_top row, in order to have the correct spatial predictors. var alph_dec uintptr = (*VP8Io)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).io_)).opaque var top_row int32 - if ((*ALPHDecoder)(unsafe.Pointer(alph_dec)).filter_ == WEBP_FILTER_NONE) || ((*ALPHDecoder)(unsafe.Pointer(alph_dec)).filter_ == WEBP_FILTER_HORIZONTAL) { + if (*ALPHDecoder)(unsafe.Pointer(alph_dec)).filter_ == WEBP_FILTER_NONE || (*ALPHDecoder)(unsafe.Pointer(alph_dec)).filter_ == WEBP_FILTER_HORIZONTAL { top_row = (*VP8Io)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).io_)).crop_top } else { top_row = (*VP8LDecoder)(unsafe.Pointer(dec)).last_row_ @@ -11864,15 +11604,15 @@ func ExtractPalettedAlphaRows(tls *libc.TLS, dec uintptr, last_row int32) { /* v if last_row > first_row { // Special method for paletted alpha data. We only process the cropped area. var width int32 = (*VP8Io)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).io_)).width - var out uintptr = ((*ALPHDecoder)(unsafe.Pointer(alph_dec)).output_ + uintptr((width * first_row))) - var in uintptr = ((*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ + uintptr(((*VP8LDecoder)(unsafe.Pointer(dec)).width_ * first_row))) - var transform uintptr = (dec + 248 /* &.transforms_ */) + var out uintptr = (*ALPHDecoder)(unsafe.Pointer(alph_dec)).output_ + uintptr(width*first_row) + var in uintptr = (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ + uintptr((*VP8LDecoder)(unsafe.Pointer(dec)).width_*first_row) + var transform uintptr = dec + 248 VP8LColorIndexInverseTransformAlpha(tls, transform, first_row, last_row, in, out) AlphaApplyFilter(tls, alph_dec, first_row, last_row, out, width) } - (*VP8LDecoder)(unsafe.Pointer(dec)).last_row_ = libc.AssignPtrInt32((dec + 148 /* &.last_out_row_ */), last_row) + (*VP8LDecoder)(unsafe.Pointer(dec)).last_row_ = libc.AssignPtrInt32(dec+148, last_row) } //------------------------------------------------------------------------------ @@ -11880,21 +11620,21 @@ func ExtractPalettedAlphaRows(tls *libc.TLS, dec uintptr, last_row int32) { /* v // cyclic rotation of pattern word func Rotate8b(tls *libc.TLS, V uint32_t) uint32_t { /* vp8l_dec.c:891:29: */ - return (((V & 0xff) << 24) | (V >> 8)) + return V&0xff<<24 | V>>8 } // copy 1, 2 or 4-bytes pattern func CopySmallPattern8b(tls *libc.TLS, src uintptr, dst uintptr, length int32, pattern uint32_t) { /* vp8l_dec.c:900:25: */ var i int32 // align 'dst' to 4-bytes boundary. Adjust the pattern along the way. - for (uintptr_t(dst) & uint64(3)) != 0 { + for uintptr_t(dst)&uint64(3) != 0 { *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&src, 1))) pattern = Rotate8b(tls, pattern) length-- } // Copy the pattern 4 bytes at a time. - for i = 0; i < (length >> 2); i++ { - *(*uint32_t)(unsafe.Pointer((dst) + uintptr(i)*4)) = pattern + for i = 0; i < length>>2; i++ { + *(*uint32_t)(unsafe.Pointer(dst + uintptr(i)*4)) = pattern } // Finish with left-overs. 'pattern' is still correctly positioned, // so no Rotate8b() call is needed. @@ -11911,7 +11651,7 @@ func CopyBlock8b(tls *libc.TLS, dst uintptr, dist int32, length int32) { /* vp8l // var pattern uint32_t at bp, 4 var i int32 - src = (dst - uintptr(dist)) + src = dst - uintptr(dist) if !(length >= 8) { goto __1 } @@ -11929,14 +11669,14 @@ func CopyBlock8b(tls *libc.TLS, dst uintptr, dist int32, length int32) { /* vp8l goto __2 __3: *(*uint32_t)(unsafe.Pointer(bp /* pattern */)) = uint32_t(*(*uint8_t)(unsafe.Pointer(src))) - *(*uint32_t)(unsafe.Pointer(bp /* pattern */)) = (0x01010101 * *(*uint32_t)(unsafe.Pointer(bp /* pattern */))) + *(*uint32_t)(unsafe.Pointer(bp /* pattern */)) = 0x01010101 * *(*uint32_t)(unsafe.Pointer(bp)) goto __2 __4: - libc.Xmemcpy(tls, (bp) /* &pattern */, src, uint64(unsafe.Sizeof(uint16_t(0)))) - *(*uint32_t)(unsafe.Pointer(bp /* pattern */)) = (0x00010001 * *(*uint32_t)(unsafe.Pointer(bp /* pattern */))) + libc.Xmemcpy(tls, bp, src, uint64(unsafe.Sizeof(uint16_t(0)))) + *(*uint32_t)(unsafe.Pointer(bp /* pattern */)) = 0x00010001 * *(*uint32_t)(unsafe.Pointer(bp)) goto __2 __5: - libc.Xmemcpy(tls, (bp) /* &pattern */, src, uint64(unsafe.Sizeof(uint32_t(0)))) + libc.Xmemcpy(tls, bp, src, uint64(unsafe.Sizeof(uint32_t(0)))) goto __2 __6: goto Copy @@ -11950,7 +11690,7 @@ Copy: if !(dist >= length) { goto __7 } // no overlap -> use memcpy() - libc.Xmemcpy(tls, dst, src, (uint64(length) * uint64(unsafe.Sizeof(uint8_t(0))))) + libc.Xmemcpy(tls, dst, src, uint64(length)*uint64(unsafe.Sizeof(uint8_t(0)))) goto __8 __7: i = 0 @@ -11972,17 +11712,17 @@ __8: // copy pattern of 1 or 2 uint32_t's func CopySmallPattern32b(tls *libc.TLS, src uintptr, dst uintptr, length int32, pattern uint64_t) { /* vp8l_dec.c:969:25: */ var i int32 - if (uintptr_t(dst) & uint64(4)) != 0 { // Align 'dst' to 8-bytes boundary. + if uintptr_t(dst)&uint64(4) != 0 { // Align 'dst' to 8-bytes boundary. *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 4))) = *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&src, 4))) - pattern = ((pattern >> 32) | (pattern << 32)) + pattern = pattern>>32 | pattern<<32 length-- } - for i = 0; i < (length >> 1); i++ { - *(*uint64_t)(unsafe.Pointer((dst) + uintptr(i)*8)) = pattern // Copy the pattern 8 bytes at a time. + for i = 0; i < length>>1; i++ { + *(*uint64_t)(unsafe.Pointer(dst + uintptr(i)*8)) = pattern // Copy the pattern 8 bytes at a time. } - if (length & 1) != 0 { // Finish with left-over. - *(*uint32_t)(unsafe.Pointer(dst + uintptr((i<<1))*4)) = *(*uint32_t)(unsafe.Pointer(src + uintptr((i<<1))*4)) + if length&1 != 0 { // Finish with left-over. + *(*uint32_t)(unsafe.Pointer(dst + uintptr(i<<1)*4)) = *(*uint32_t)(unsafe.Pointer(src + uintptr(i<<1)*4)) } } @@ -11990,19 +11730,19 @@ func CopyBlock32b(tls *libc.TLS, dst uintptr, dist int32, length int32) { /* vp8 bp := tls.Alloc(8) defer tls.Free(8) - var src uintptr = (dst - uintptr(dist)*4) - if ((dist <= 2) && (length >= 4)) && ((uintptr_t(dst) & uint64(3)) == uint64(0)) { + var src uintptr = dst - uintptr(dist)*4 + if dist <= 2 && length >= 4 && uintptr_t(dst)&uint64(3) == uint64(0) { // var pattern uint64_t at bp, 8 if dist == 1 { *(*uint64_t)(unsafe.Pointer(bp /* pattern */)) = uint64_t(*(*uint32_t)(unsafe.Pointer(src))) - *(*uint64_t)(unsafe.Pointer(bp /* pattern */)) |= (*(*uint64_t)(unsafe.Pointer(bp /* pattern */)) << 32) + *(*uint64_t)(unsafe.Pointer(bp /* pattern */)) |= *(*uint64_t)(unsafe.Pointer(bp)) << 32 } else { - libc.Xmemcpy(tls, (bp) /* &pattern */, src, uint64(unsafe.Sizeof(uint64_t(0)))) + libc.Xmemcpy(tls, bp, src, uint64(unsafe.Sizeof(uint64_t(0)))) } CopySmallPattern32b(tls, src, dst, length, *(*uint64_t)(unsafe.Pointer(bp /* pattern */))) } else if dist >= length { // no overlap - libc.Xmemcpy(tls, dst, src, (uint64(length) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, dst, src, uint64(length)*uint64(unsafe.Sizeof(uint32_t(0)))) } else { var i int32 for i = 0; i < length; i++ { @@ -12032,27 +11772,27 @@ func DecodeAlphaData(tls *libc.TLS, dec uintptr, data uintptr, width int32, heig var dist_symbol int32 var code int32 ok = 1 - row = ((*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ / width) - col = ((*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ % width) - br = (dec + 40 /* &.br_ */) - hdr = (dec + 152 /* &.hdr_ */) + row = (*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ / width + col = (*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ % width + br = dec + 40 + hdr = dec + 152 pos = (*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ - end = (width * height) - last = (width * last_row) - len_code_limit = (256 + 24) + end = width * height + last = width * last_row + len_code_limit = 256 + 24 mask = (*VP8LMetadata)(unsafe.Pointer(hdr)).huffman_mask_ if pos < last { htree_group = GetHtreeGroupForPos(tls, hdr, col, row) } else { - htree_group = (uintptr(0)) + htree_group = uintptr(0) } __1: - if !(!((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0) && (pos < last)) { + if !(!((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0) && pos < last) { goto __2 } // Only update when changing tile. - if !((col & mask) == 0) { + if !(col&mask == 0) { goto __3 } htree_group = GetHtreeGroupForPos(tls, hdr, col, row) @@ -12060,7 +11800,7 @@ __3: ; VP8LFillBitWindow(tls, br) - code = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer((htree_group /* &.htrees */))), br) + code = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer(htree_group)), br) if !(code < 256) { goto __4 } // Literal @@ -12072,7 +11812,7 @@ __3: } col = 0 row++ - if !((row <= last_row) && ((row % 16) == 0)) { + if !(row <= last_row && row%16 == 0) { goto __7 } ExtractPalettedAlphaRows(tls, dec, row) @@ -12085,31 +11825,31 @@ __4: if !(code < len_code_limit) { goto __8 } - length_sym = (code - 256) + length_sym = code - 256 length = GetCopyLength(tls, length_sym, br) - dist_symbol = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer((htree_group /* &.htrees */) + 4*8)), br) + dist_symbol = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer(htree_group + 4*8)), br) VP8LFillBitWindow(tls, br) dist_code = GetCopyDistance(tls, dist_symbol, br) dist = PlaneCodeToDistance(tls, width, dist_code) - if !((pos >= dist) && ((end - pos) >= length)) { + if !(pos >= dist && end-pos >= length) { goto __10 } - CopyBlock8b(tls, (data + uintptr(pos)), dist, length) + CopyBlock8b(tls, data+uintptr(pos), dist, length) goto __11 __10: ok = 0 goto End __11: ; - pos = pos + (length) - col = col + (length) + pos = pos + length + col = col + length __12: if !(col >= width) { goto __13 } - col = col - (width) + col = col - width row++ - if !((row <= last_row) && ((row % 16) == 0)) { + if !(row <= last_row && row%16 == 0) { goto __14 } ExtractPalettedAlphaRows(tls, dec, row) @@ -12118,7 +11858,7 @@ __14: goto __12 __13: ; - if !((pos < last) && ((col & mask) != 0)) { + if !(pos < last && col&mask != 0) { goto __15 } htree_group = GetHtreeGroupForPos(tls, hdr, col, row) @@ -12146,7 +11886,7 @@ __2: End: (*VP8LBitReader)(unsafe.Pointer(br)).eos_ = VP8LIsEndOfStream(tls, br) - if !(!(ok != 0) || (((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0) && (pos < end))) { + if !(!(ok != 0) || (*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0 && pos < end) { goto __16 } ok = 0 @@ -12169,7 +11909,7 @@ func SaveState(tls *libc.TLS, dec uintptr, last_pixel int32) { /* vp8l_dec.c:109 (*VP8LDecoder)(unsafe.Pointer(dec)).saved_br_ = (*VP8LDecoder)(unsafe.Pointer(dec)).br_ (*VP8LDecoder)(unsafe.Pointer(dec)).saved_last_pixel_ = last_pixel if (*VP8LDecoder)(unsafe.Pointer(dec)).hdr_.color_cache_size_ > 0 { - VP8LColorCacheCopy(tls, ((dec + 152 /* &.hdr_ */) + 8 /* &.color_cache_ */), ((dec + 152 /* &.hdr_ */) + 24 /* &.saved_color_cache_ */)) + VP8LColorCacheCopy(tls, dec+152+8, dec+152+24) } } @@ -12179,7 +11919,7 @@ func RestoreState(tls *libc.TLS, dec uintptr) { /* vp8l_dec.c:1103:13: */ (*VP8LDecoder)(unsafe.Pointer(dec)).br_ = (*VP8LDecoder)(unsafe.Pointer(dec)).saved_br_ (*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ = (*VP8LDecoder)(unsafe.Pointer(dec)).saved_last_pixel_ if (*VP8LDecoder)(unsafe.Pointer(dec)).hdr_.color_cache_size_ > 0 { - VP8LColorCacheCopy(tls, ((dec + 152 /* &.hdr_ */) + 24 /* &.saved_color_cache_ */), ((dec + 152 /* &.hdr_ */) + 8 /* &.color_cache_ */)) + VP8LColorCacheCopy(tls, dec+152+24, dec+152+8) } } @@ -12208,31 +11948,31 @@ func DecodeImageData(tls *libc.TLS, dec uintptr, data uintptr, width int32, heig var dist_symbol int32 // Color cache var key int32 var code int32 - row = ((*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ / width) - col = ((*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ % width) - br = (dec + 40 /* &.br_ */) - hdr = (dec + 152 /* &.hdr_ */) - src = (data + uintptr((*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_)*4) + row = (*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ / width + col = (*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ % width + br = dec + 40 + hdr = dec + 152 + src = data + uintptr((*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_)*4 last_cached = src - src_end = (data + uintptr((width*height))*4) - src_last = (data + uintptr((width*last_row))*4) - len_code_limit = (256 + 24) - color_cache_limit = (len_code_limit + (*VP8LMetadata)(unsafe.Pointer(hdr)).color_cache_size_) + src_end = data + uintptr(width*height)*4 + src_last = data + uintptr(width*last_row)*4 + len_code_limit = 256 + 24 + color_cache_limit = len_code_limit + (*VP8LMetadata)(unsafe.Pointer(hdr)).color_cache_size_ if (*VP8LDecoder)(unsafe.Pointer(dec)).incremental_ != 0 { next_sync_row = row } else { - next_sync_row = (int32(1) << 24) + next_sync_row = int32(1) << 24 } if (*VP8LMetadata)(unsafe.Pointer(hdr)).color_cache_size_ > 0 { - color_cache = (hdr + 8 /* &.color_cache_ */) + color_cache = hdr + 8 } else { - color_cache = (uintptr(0)) + color_cache = uintptr(0) } mask = (*VP8LMetadata)(unsafe.Pointer(hdr)).huffman_mask_ if src < src_last { htree_group = GetHtreeGroupForPos(tls, hdr, col, row) } else { - htree_group = (uintptr(0)) + htree_group = uintptr(0) } __1: @@ -12242,14 +11982,14 @@ __1: if !(row >= next_sync_row) { goto __3 } - SaveState(tls, dec, (int32((int64(src) - int64(data)) / 4))) - next_sync_row = (row + 8) + SaveState(tls, dec, int32((int64(src)-int64(data))/4)) + next_sync_row = row + 8 __3: ; // Only update when changing tile. Note we could use this test: // if "((((prev_col ^ col) | prev_row ^ row)) > mask)" -> tile changed // but that's actually slower and needs storing the previous col/row. - if !((col & mask) == 0) { + if !(col&mask == 0) { goto __4 } htree_group = GetHtreeGroupForPos(tls, hdr, col, row) @@ -12282,7 +12022,7 @@ __9: ; goto __7 __6: - code = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer((htree_group /* &.htrees */))), br) + code = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer(htree_group)), br) __7: ; if !(VP8LIsEndOfStream(tls, br) != 0) { @@ -12297,20 +12037,20 @@ __10: if !((*HTreeGroup)(unsafe.Pointer(htree_group)).is_trivial_literal != 0) { goto __13 } - *(*uint32_t)(unsafe.Pointer(src)) = ((*HTreeGroup)(unsafe.Pointer(htree_group)).literal_arb | (uint32_t(code << 8))) + *(*uint32_t)(unsafe.Pointer(src)) = (*HTreeGroup)(unsafe.Pointer(htree_group)).literal_arb | uint32_t(code<<8) goto __14 __13: - red = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer((htree_group /* &.htrees */) + 1*8)), br) + red = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer(htree_group + 1*8)), br) VP8LFillBitWindow(tls, br) - blue = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer((htree_group /* &.htrees */) + 2*8)), br) - alpha = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer((htree_group /* &.htrees */) + 3*8)), br) + blue = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer(htree_group + 2*8)), br) + alpha = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer(htree_group + 3*8)), br) if !(VP8LIsEndOfStream(tls, br) != 0) { goto __15 } goto __2 __15: ; - *(*uint32_t)(unsafe.Pointer(src)) = ((((uint32_t(alpha) << 24) | (uint32_t(red << 16))) | (uint32_t(code << 8))) | uint32_t(blue)) + *(*uint32_t)(unsafe.Pointer(src)) = uint32_t(alpha)<<24 | uint32_t(red<<16) | uint32_t(code<<8) | uint32_t(blue) __14: ; AdvanceByOne: @@ -12321,10 +12061,10 @@ AdvanceByOne: } col = 0 row++ - if !(process_func != (uintptr(0))) { + if !(process_func != uintptr(0)) { goto __17 } - if !((row <= last_row) && ((row % 16) == 0)) { + if !(row <= last_row && row%16 == 0) { goto __18 } (*struct { @@ -12334,7 +12074,7 @@ __18: ; __17: ; - if !(color_cache != (uintptr(0))) { + if !(color_cache != uintptr(0)) { goto __19 } __20: @@ -12354,9 +12094,9 @@ __11: if !(code < len_code_limit) { goto __22 } - length_sym = (code - 256) + length_sym = code - 256 length = GetCopyLength(tls, length_sym, br) - dist_symbol = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer((htree_group /* &.htrees */) + 4*8)), br) + dist_symbol = ReadSymbol(tls, *(*uintptr)(unsafe.Pointer(htree_group + 4*8)), br) VP8LFillBitWindow(tls, br) dist_code = GetCopyDistance(tls, dist_symbol, br) dist = PlaneCodeToDistance(tls, width, dist_code) @@ -12367,7 +12107,7 @@ __11: goto __2 __24: ; - if !((((int64(src) - int64(data)) / 4) < ptrdiff_t(dist)) || (((int64(src_end) - int64(src)) / 4) < ptrdiff_t(length))) { + if !((int64(src)-int64(data))/4 < ptrdiff_t(dist) || (int64(src_end)-int64(src))/4 < ptrdiff_t(length)) { goto __25 } goto Error @@ -12376,18 +12116,18 @@ __25: CopyBlock32b(tls, src, dist, length) __26: ; - src += 4 * (uintptr(length)) - col = col + (length) + src += 4 * uintptr(length) + col = col + length __27: if !(col >= width) { goto __28 } - col = col - (width) + col = col - width row++ - if !(process_func != (uintptr(0))) { + if !(process_func != uintptr(0)) { goto __29 } - if !((row <= last_row) && ((row % 16) == 0)) { + if !(row <= last_row && row%16 == 0) { goto __30 } (*struct { @@ -12403,13 +12143,13 @@ __28: // Because of the check done above (before 'src' was incremented by // 'length'), the following holds true. - if !((col & mask) != 0) { + if !(col&mask != 0) { goto __31 } htree_group = GetHtreeGroupForPos(tls, hdr, col, row) __31: ; - if !(color_cache != (uintptr(0))) { + if !(color_cache != uintptr(0)) { goto __32 } __33: @@ -12427,7 +12167,7 @@ __22: if !(code < color_cache_limit) { goto __35 } // Color cache - key = (code - len_code_limit) + key = code - len_code_limit __37: if !(last_cached < src) { @@ -12453,17 +12193,17 @@ __2: ; (*VP8LBitReader)(unsafe.Pointer(br)).eos_ = VP8LIsEndOfStream(tls, br) - if !((((*VP8LDecoder)(unsafe.Pointer(dec)).incremental_ != 0) && ((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0)) && (src < src_end)) { + if !((*VP8LDecoder)(unsafe.Pointer(dec)).incremental_ != 0 && (*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0 && src < src_end) { goto __39 } RestoreState(tls, dec) goto __40 __39: - if !(!((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0)) { + if !!((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0) { goto __41 } // Process the remaining rows corresponding to last row-block. - if !(process_func != (uintptr(0))) { + if !(process_func != uintptr(0)) { goto __43 } (*struct { @@ -12477,7 +12217,7 @@ __39: __43: ; (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OK - (*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ = (int32((int64(src) - int64(data)) / 4)) // end-of-scan marker + (*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ = int32((int64(src) - int64(data)) / 4) // end-of-scan marker goto __42 __41: // if not incremental, and we are past the end of buffer (eos_=1), then this @@ -12499,27 +12239,27 @@ Error: func ClearTransform(tls *libc.TLS, transform uintptr) { /* vp8l_dec.c:1264:13: */ WebPSafeFree(tls, (*VP8LTransform)(unsafe.Pointer(transform)).data_) - (*VP8LTransform)(unsafe.Pointer(transform)).data_ = (uintptr(0)) + (*VP8LTransform)(unsafe.Pointer(transform)).data_ = uintptr(0) } // For security reason, we need to remap the color map to span // the total possible bundled values, and not just the num_colors. func ExpandColorMap(tls *libc.TLS, num_colors int32, transform uintptr) int32 { /* vp8l_dec.c:1271:12: */ var i int32 - var final_num_colors int32 = (int32(1) << (int32(8) >> (*VP8LTransform)(unsafe.Pointer(transform)).bits_)) + var final_num_colors int32 = int32(1) << (int32(8) >> (*VP8LTransform)(unsafe.Pointer(transform)).bits_) var new_color_map uintptr = WebPSafeMalloc(tls, uint64_t(final_num_colors), uint64(unsafe.Sizeof(uint32_t(0)))) - if new_color_map == (uintptr(0)) { + if new_color_map == uintptr(0) { return 0 } else { var data uintptr = (*VP8LTransform)(unsafe.Pointer(transform)).data_ var new_data uintptr = new_color_map *(*uint32_t)(unsafe.Pointer(new_color_map)) = *(*uint32_t)(unsafe.Pointer((*VP8LTransform)(unsafe.Pointer(transform)).data_)) - for i = 4; i < (4 * num_colors); i++ { + for i = 4; i < 4*num_colors; i++ { // Equivalent to AddPixelEq(), on a byte-basis. - *(*uint8_t)(unsafe.Pointer(new_data + uintptr(i))) = (uint8_t((int32(*(*uint8_t)(unsafe.Pointer(data + uintptr(i)))) + int32(*(*uint8_t)(unsafe.Pointer(new_data + uintptr((i - 4)))))) & 0xff)) + *(*uint8_t)(unsafe.Pointer(new_data + uintptr(i))) = uint8_t((int32(*(*uint8_t)(unsafe.Pointer(data + uintptr(i)))) + int32(*(*uint8_t)(unsafe.Pointer(new_data + uintptr(i-4))))) & 0xff) } - for ; i < (4 * final_num_colors); i++ { + for ; i < 4*final_num_colors; i++ { *(*uint8_t)(unsafe.Pointer(new_data + uintptr(i))) = uint8_t(0) // black tail. } WebPSafeFree(tls, (*VP8LTransform)(unsafe.Pointer(transform)).data_) @@ -12530,36 +12270,36 @@ func ExpandColorMap(tls *libc.TLS, num_colors int32, transform uintptr) int32 { func ReadTransform(tls *libc.TLS, xsize uintptr, ysize uintptr, dec uintptr) int32 { /* vp8l_dec.c:1296:12: */ var ok int32 = 1 - var br uintptr = (dec + 40 /* &.br_ */) - var transform uintptr = ((dec + 248 /* &.transforms_ */) + uintptr((*VP8LDecoder)(unsafe.Pointer(dec)).next_transform_)*24) + var br uintptr = dec + 40 + var transform uintptr = dec + 248 + uintptr((*VP8LDecoder)(unsafe.Pointer(dec)).next_transform_)*24 var type1 VP8LImageTransformType = VP8LReadBits(tls, br, 2) // Each transform type can only be present once in the stream. - if ((*VP8LDecoder)(unsafe.Pointer(dec)).transforms_seen_ & (uint32(1) << type1)) != 0 { + if (*VP8LDecoder)(unsafe.Pointer(dec)).transforms_seen_&(uint32(1)<<type1) != 0 { return 0 // Already there, let's not accept the second same transform. } - *(*uint32_t)(unsafe.Pointer((dec + 344 /* &.transforms_seen_ */))) |= (uint32(1) << type1) + *(*uint32_t)(unsafe.Pointer(dec + 344)) |= uint32(1) << type1 (*VP8LTransform)(unsafe.Pointer(transform)).type_ = type1 (*VP8LTransform)(unsafe.Pointer(transform)).xsize_ = *(*int32)(unsafe.Pointer(xsize)) (*VP8LTransform)(unsafe.Pointer(transform)).ysize_ = *(*int32)(unsafe.Pointer(ysize)) - (*VP8LTransform)(unsafe.Pointer(transform)).data_ = (uintptr(0)) + (*VP8LTransform)(unsafe.Pointer(transform)).data_ = uintptr(0) (*VP8LDecoder)(unsafe.Pointer(dec)).next_transform_++ switch type1 { case PREDICTOR_TRANSFORM: fallthrough case CROSS_COLOR_TRANSFORM: - (*VP8LTransform)(unsafe.Pointer(transform)).bits_ = (int32(VP8LReadBits(tls, br, 3) + uint32_t(2))) + (*VP8LTransform)(unsafe.Pointer(transform)).bits_ = int32(VP8LReadBits(tls, br, 3) + uint32_t(2)) ok = DecodeImageStream(tls, int32(VP8LSubSampleSize(tls, uint32((*VP8LTransform)(unsafe.Pointer(transform)).xsize_), uint32((*VP8LTransform)(unsafe.Pointer(transform)).bits_))), int32(VP8LSubSampleSize(tls, uint32((*VP8LTransform)(unsafe.Pointer(transform)).ysize_), uint32((*VP8LTransform)(unsafe.Pointer(transform)).bits_))), - 0, dec, (transform + 16 /* &.data_ */)) + 0, dec, transform+16) break case COLOR_INDEXING_TRANSFORM: { - var num_colors int32 = (int32(VP8LReadBits(tls, br, 8) + uint32_t(1))) + var num_colors int32 = int32(VP8LReadBits(tls, br, 8) + uint32_t(1)) var bits int32 if num_colors > 16 { bits = 0 @@ -12576,8 +12316,8 @@ func ReadTransform(tls *libc.TLS, xsize uintptr, ysize uintptr, dec uintptr) int } *(*int32)(unsafe.Pointer(xsize)) = int32(VP8LSubSampleSize(tls, uint32((*VP8LTransform)(unsafe.Pointer(transform)).xsize_), uint32(bits))) (*VP8LTransform)(unsafe.Pointer(transform)).bits_ = bits - ok = DecodeImageStream(tls, num_colors, 1, 0, dec, (transform + 16 /* &.data_ */)) - ok = (libc.Bool32((ok != 0) && (ExpandColorMap(tls, num_colors, transform) != 0))) + ok = DecodeImageStream(tls, num_colors, 1, 0, dec, transform+16) + ok = libc.Bool32(ok != 0 && ExpandColorMap(tls, num_colors, transform) != 0) break } @@ -12604,8 +12344,8 @@ func ClearMetadata(tls *libc.TLS, hdr uintptr) { /* vp8l_dec.c:1357:13: */ WebPSafeFree(tls, (*VP8LMetadata)(unsafe.Pointer(hdr)).huffman_image_) WebPSafeFree(tls, (*VP8LMetadata)(unsafe.Pointer(hdr)).huffman_tables_) VP8LHtreeGroupsFree(tls, (*VP8LMetadata)(unsafe.Pointer(hdr)).htree_groups_) - VP8LColorCacheClear(tls, (hdr + 8 /* &.color_cache_ */)) - VP8LColorCacheClear(tls, (hdr + 24 /* &.saved_color_cache_ */)) + VP8LColorCacheClear(tls, hdr+8) + VP8LColorCacheClear(tls, hdr+24) InitMetadata(tls, hdr) } @@ -12614,8 +12354,8 @@ func ClearMetadata(tls *libc.TLS, hdr uintptr) { /* vp8l_dec.c:1357:13: */ func VP8LNew(tls *libc.TLS) uintptr { /* vp8l_dec.c:1371:12: */ var dec uintptr = WebPSafeCalloc(tls, 1, uint64(unsafe.Sizeof(VP8LDecoder{}))) - if dec == (uintptr(0)) { - return (uintptr(0)) + if dec == uintptr(0) { + return uintptr(0) } (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OK (*VP8LDecoder)(unsafe.Pointer(dec)).state_ = READ_DIM @@ -12627,34 +12367,34 @@ func VP8LNew(tls *libc.TLS) uintptr { /* vp8l_dec.c:1371:12: */ func VP8LClear(tls *libc.TLS, dec uintptr) { /* vp8l_dec.c:1382:6: */ var i int32 - if dec == (uintptr(0)) { + if dec == uintptr(0) { return } - ClearMetadata(tls, (dec + 152 /* &.hdr_ */)) + ClearMetadata(tls, dec+152) WebPSafeFree(tls, (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_) - (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ = (uintptr(0)) + (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ = uintptr(0) for i = 0; i < (*VP8LDecoder)(unsafe.Pointer(dec)).next_transform_; i++ { - ClearTransform(tls, ((dec + 248 /* &.transforms_ */) + uintptr(i)*24)) + ClearTransform(tls, dec+248+uintptr(i)*24) } (*VP8LDecoder)(unsafe.Pointer(dec)).next_transform_ = 0 (*VP8LDecoder)(unsafe.Pointer(dec)).transforms_seen_ = uint32_t(0) WebPSafeFree(tls, (*VP8LDecoder)(unsafe.Pointer(dec)).rescaler_memory) - (*VP8LDecoder)(unsafe.Pointer(dec)).rescaler_memory = (uintptr(0)) + (*VP8LDecoder)(unsafe.Pointer(dec)).rescaler_memory = uintptr(0) - (*VP8LDecoder)(unsafe.Pointer(dec)).output_ = (uintptr(0)) // leave no trace behind + (*VP8LDecoder)(unsafe.Pointer(dec)).output_ = uintptr(0) // leave no trace behind } func VP8LDelete(tls *libc.TLS, dec uintptr) { /* vp8l_dec.c:1401:6: */ - if dec != (uintptr(0)) { + if dec != uintptr(0) { VP8LClear(tls, dec) WebPSafeFree(tls, dec) } } func UpdateDecoder(tls *libc.TLS, dec uintptr, width int32, height int32) { /* vp8l_dec.c:1408:13: */ - var hdr uintptr = (dec + 152 /* &.hdr_ */) + var hdr uintptr = dec + 152 var num_bits int32 = (*VP8LMetadata)(unsafe.Pointer(hdr)).huffman_subsample_bits_ (*VP8LDecoder)(unsafe.Pointer(dec)).width_ = width (*VP8LDecoder)(unsafe.Pointer(dec)).height_ = height @@ -12664,7 +12404,7 @@ func UpdateDecoder(tls *libc.TLS, dec uintptr, width int32, height int32) { /* v if num_bits == 0 { return libc.CplInt32(0) } - return ((int32(1) << num_bits) - 1) + return int32(1)<<num_bits - 1 }() } @@ -12685,9 +12425,9 @@ func DecodeImageStream(tls *libc.TLS, xsize int32, ysize int32, is_level0 int32, ok = 1 *(*int32)(unsafe.Pointer(bp /* transform_xsize */)) = xsize *(*int32)(unsafe.Pointer(bp + 4 /* transform_ysize */)) = ysize - br = (dec + 40 /* &.br_ */) - hdr = (dec + 152 /* &.hdr_ */) - data = (uintptr(0)) + br = dec + 40 + hdr = dec + 152 + data = uintptr(0) color_cache_bits = 0 // Read the transforms (may recurse). @@ -12695,10 +12435,10 @@ func DecodeImageStream(tls *libc.TLS, xsize int32, ysize int32, is_level0 int32, goto __1 } __2: - if !((ok != 0) && (VP8LReadBits(tls, br, 1) != 0)) { + if !(ok != 0 && VP8LReadBits(tls, br, 1) != 0) { goto __3 } - ok = ReadTransform(tls, (bp) /* &transform_xsize */, (bp + 4) /* &transform_ysize */, dec) + ok = ReadTransform(tls, bp, bp+4, dec) goto __2 __3: ; @@ -12706,12 +12446,12 @@ __1: ; // Color cache - if !((ok != 0) && (VP8LReadBits(tls, br, 1) != 0)) { + if !(ok != 0 && VP8LReadBits(tls, br, 1) != 0) { goto __4 } color_cache_bits = int32(VP8LReadBits(tls, br, 4)) - ok = (libc.Bool32((color_cache_bits >= 1) && (color_cache_bits <= 11))) - if !(!(ok != 0)) { + ok = libc.Bool32(color_cache_bits >= 1 && color_cache_bits <= 11) + if !!(ok != 0) { goto __5 } (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_BITSTREAM_ERROR @@ -12722,9 +12462,9 @@ __4: ; // Read the Huffman codes (may recurse). - ok = (libc.Bool32((ok != 0) && (ReadHuffmanCodes(tls, dec, *(*int32)(unsafe.Pointer(bp /* transform_xsize */)), *(*int32)(unsafe.Pointer(bp + 4 /* transform_ysize */)), - color_cache_bits, is_level0) != 0))) - if !(!(ok != 0)) { + ok = libc.Bool32(ok != 0 && ReadHuffmanCodes(tls, dec, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)), + color_cache_bits, is_level0) != 0) + if !!(ok != 0) { goto __6 } (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_BITSTREAM_ERROR @@ -12736,8 +12476,8 @@ __6: if !(color_cache_bits > 0) { goto __7 } - (*VP8LMetadata)(unsafe.Pointer(hdr)).color_cache_size_ = (int32(1) << color_cache_bits) - if !(!(VP8LColorCacheInit(tls, (hdr+8 /* &.color_cache_ */), color_cache_bits) != 0)) { + (*VP8LMetadata)(unsafe.Pointer(hdr)).color_cache_size_ = int32(1) << color_cache_bits + if !!(VP8LColorCacheInit(tls, hdr+8, color_cache_bits) != 0) { goto __9 } (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OUT_OF_MEMORY @@ -12760,9 +12500,9 @@ __8: __10: ; - total_size = (uint64_t(*(*int32)(unsafe.Pointer(bp /* transform_xsize */))) * uint64_t(*(*int32)(unsafe.Pointer(bp + 4 /* transform_ysize */)))) + total_size = uint64_t(*(*int32)(unsafe.Pointer(bp))) * uint64_t(*(*int32)(unsafe.Pointer(bp + 4))) data = WebPSafeMalloc(tls, total_size, uint64(unsafe.Sizeof(uint32_t(0)))) - if !(data == (uintptr(0))) { + if !(data == uintptr(0)) { goto __11 } (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OUT_OF_MEMORY @@ -12773,18 +12513,18 @@ __11: // Use the Huffman trees to decode the LZ77 encoded data. ok = DecodeImageData(tls, dec, data, *(*int32)(unsafe.Pointer(bp /* transform_xsize */)), *(*int32)(unsafe.Pointer(bp + 4 /* transform_ysize */)), - *(*int32)(unsafe.Pointer(bp + 4 /* transform_ysize */)), (uintptr(0))) - ok = (libc.Bool32((ok != 0) && !((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0))) + *(*int32)(unsafe.Pointer(bp + 4 /* transform_ysize */)), uintptr(0)) + ok = libc.Bool32(ok != 0 && !((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0)) End: - if !(!(ok != 0)) { + if !!(ok != 0) { goto __12 } WebPSafeFree(tls, data) ClearMetadata(tls, hdr) goto __13 __12: - if !(decoded_data != (uintptr(0))) { + if !(decoded_data != uintptr(0)) { goto __14 } *(*uintptr)(unsafe.Pointer(decoded_data)) = data @@ -12797,7 +12537,7 @@ __14: __15: ; (*VP8LDecoder)(unsafe.Pointer(dec)).last_pixel_ = 0 // Reset for future DECODE_DATA_FUNC() calls. - if !(!(is_level0 != 0)) { + if !!(is_level0 != 0) { goto __16 } ClearMetadata(tls, hdr) @@ -12811,29 +12551,29 @@ __13: //------------------------------------------------------------------------------ // Allocate internal buffers dec->pixels_ and dec->argb_cache_. func AllocateInternalBuffers32b(tls *libc.TLS, dec uintptr, final_width int32) int32 { /* vp8l_dec.c:1509:12: */ - var num_pixels uint64_t = (uint64_t((*VP8LDecoder)(unsafe.Pointer(dec)).width_) * uint64_t((*VP8LDecoder)(unsafe.Pointer(dec)).height_)) + var num_pixels uint64_t = uint64_t((*VP8LDecoder)(unsafe.Pointer(dec)).width_) * uint64_t((*VP8LDecoder)(unsafe.Pointer(dec)).height_) // Scratch buffer corresponding to top-prediction row for transforming the // first row in the row-blocks. Not needed for paletted alpha. var cache_top_pixels uint64_t = uint64_t(uint16_t(final_width)) // Scratch buffer for temporary BGRA storage. Not needed for paletted alpha. - var cache_pixels uint64_t = (uint64_t(final_width) * uint64(16)) - var total_num_pixels uint64_t = ((num_pixels + cache_top_pixels) + cache_pixels) + var cache_pixels uint64_t = uint64_t(final_width) * uint64(16) + var total_num_pixels uint64_t = num_pixels + cache_top_pixels + cache_pixels (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ = WebPSafeMalloc(tls, total_num_pixels, uint64(unsafe.Sizeof(uint32_t(0)))) - if (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ == (uintptr(0)) { - (*VP8LDecoder)(unsafe.Pointer(dec)).argb_cache_ = (uintptr(0)) // for soundness + if (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ == uintptr(0) { + (*VP8LDecoder)(unsafe.Pointer(dec)).argb_cache_ = uintptr(0) // for soundness (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OUT_OF_MEMORY return 0 } - (*VP8LDecoder)(unsafe.Pointer(dec)).argb_cache_ = (((*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ + uintptr(num_pixels)*4) + uintptr(cache_top_pixels)*4) + (*VP8LDecoder)(unsafe.Pointer(dec)).argb_cache_ = (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ + uintptr(num_pixels)*4 + uintptr(cache_top_pixels)*4 return 1 } func AllocateInternalBuffers8b(tls *libc.TLS, dec uintptr) int32 { /* vp8l_dec.c:1530:12: */ - var total_num_pixels uint64_t = (uint64_t((*VP8LDecoder)(unsafe.Pointer(dec)).width_) * uint64_t((*VP8LDecoder)(unsafe.Pointer(dec)).height_)) - (*VP8LDecoder)(unsafe.Pointer(dec)).argb_cache_ = (uintptr(0)) // for soundness + var total_num_pixels uint64_t = uint64_t((*VP8LDecoder)(unsafe.Pointer(dec)).width_) * uint64_t((*VP8LDecoder)(unsafe.Pointer(dec)).height_) + (*VP8LDecoder)(unsafe.Pointer(dec)).argb_cache_ = uintptr(0) // for soundness (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ = WebPSafeMalloc(tls, total_num_pixels, uint64(unsafe.Sizeof(uint8_t(0)))) - if (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ == (uintptr(0)) { + if (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ == uintptr(0) { (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OUT_OF_MEMORY return 0 } @@ -12845,8 +12585,8 @@ func AllocateInternalBuffers8b(tls *libc.TLS, dec uintptr) int32 { /* vp8l_dec.c // Special row-processing that only stores the alpha data. func ExtractAlphaRows(tls *libc.TLS, dec uintptr, last_row int32) { /* vp8l_dec.c:1544:13: */ var cur_row int32 = (*VP8LDecoder)(unsafe.Pointer(dec)).last_row_ - var num_rows int32 = (last_row - cur_row) - var in uintptr = ((*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ + uintptr(((*VP8LDecoder)(unsafe.Pointer(dec)).width_*cur_row))*4) + var num_rows int32 = last_row - cur_row + var in uintptr = (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_ + uintptr((*VP8LDecoder)(unsafe.Pointer(dec)).width_*cur_row)*4 for num_rows > 0 { var num_rows_to_process int32 @@ -12859,21 +12599,21 @@ func ExtractAlphaRows(tls *libc.TLS, dec uintptr, last_row int32) { /* vp8l_dec. var alph_dec uintptr = (*VP8Io)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).io_)).opaque var output uintptr = (*ALPHDecoder)(unsafe.Pointer(alph_dec)).output_ var width int32 = (*VP8Io)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).io_)).width // the final width (!= dec->width_) - var cache_pixs int32 = (width * num_rows_to_process) - var dst uintptr = (output + uintptr((width * cur_row))) + var cache_pixs int32 = width * num_rows_to_process + var dst uintptr = output + uintptr(width*cur_row) var src uintptr = (*VP8LDecoder)(unsafe.Pointer(dec)).argb_cache_ ApplyInverseTransforms(tls, dec, cur_row, num_rows_to_process, in) (*struct { f func(*libc.TLS, uintptr, uintptr, int32) })(unsafe.Pointer(&struct{ uintptr }{WebPExtractGreen})).f(tls, src, dst, cache_pixs) AlphaApplyFilter(tls, alph_dec, - cur_row, (cur_row + num_rows_to_process), dst, width) - num_rows = num_rows - (num_rows_to_process) - in += 4 * (uintptr(num_rows_to_process * (*VP8LDecoder)(unsafe.Pointer(dec)).width_)) - cur_row = cur_row + (num_rows_to_process) + cur_row, cur_row+num_rows_to_process, dst, width) + num_rows = num_rows - num_rows_to_process + in += 4 * uintptr(num_rows_to_process*(*VP8LDecoder)(unsafe.Pointer(dec)).width_) + cur_row = cur_row + num_rows_to_process } - (*VP8LDecoder)(unsafe.Pointer(dec)).last_row_ = libc.AssignPtrInt32((dec + 148 /* &.last_out_row_ */), last_row) + (*VP8LDecoder)(unsafe.Pointer(dec)).last_row_ = libc.AssignPtrInt32(dec+148, last_row) } func VP8LDecodeAlphaHeader(tls *libc.TLS, alph_dec uintptr, data uintptr, data_size size_t) int32 { /* vp8l_dec.c:1572:5: */ @@ -12882,7 +12622,7 @@ func VP8LDecodeAlphaHeader(tls *libc.TLS, alph_dec uintptr, data uintptr, data_s ok = 0 dec = VP8LNew(tls) - if !(dec == (uintptr(0))) { + if !(dec == uintptr(0)) { goto __1 } return 0 @@ -12891,15 +12631,15 @@ __1: (*VP8LDecoder)(unsafe.Pointer(dec)).width_ = (*ALPHDecoder)(unsafe.Pointer(alph_dec)).width_ (*VP8LDecoder)(unsafe.Pointer(dec)).height_ = (*ALPHDecoder)(unsafe.Pointer(alph_dec)).height_ - (*VP8LDecoder)(unsafe.Pointer(dec)).io_ = (alph_dec + 32 /* &.io_ */) + (*VP8LDecoder)(unsafe.Pointer(dec)).io_ = alph_dec + 32 (*VP8Io)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).io_)).opaque = alph_dec (*VP8Io)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).io_)).width = (*ALPHDecoder)(unsafe.Pointer(alph_dec)).width_ (*VP8Io)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).io_)).height = (*ALPHDecoder)(unsafe.Pointer(alph_dec)).height_ (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OK - VP8LInitBitReader(tls, (dec + 40 /* &.br_ */), data, data_size) + VP8LInitBitReader(tls, dec+40, data, data_size) - if !(!(DecodeImageStream(tls, (*ALPHDecoder)(unsafe.Pointer(alph_dec)).width_, (*ALPHDecoder)(unsafe.Pointer(alph_dec)).height_, 1, dec, (uintptr(0))) != 0)) { + if !!(DecodeImageStream(tls, (*ALPHDecoder)(unsafe.Pointer(alph_dec)).width_, (*ALPHDecoder)(unsafe.Pointer(alph_dec)).height_, 1, dec, uintptr(0)) != 0) { goto __2 } goto Err @@ -12909,7 +12649,7 @@ __2: // Special case: if alpha data uses only the color indexing transform and // doesn't use color cache (a frequent case), we will use DecodeAlphaData() // method that only needs allocation of 1 byte per pixel (alpha channel). - if !((((*VP8LDecoder)(unsafe.Pointer(dec)).next_transform_ == 1) && ((*VP8LTransform)(unsafe.Pointer((dec + 248 /* &.transforms_ */))).type_ == COLOR_INDEXING_TRANSFORM)) && (Is8bOptimizable(tls, (dec+152 /* &.hdr_ */)) != 0)) { + if !((*VP8LDecoder)(unsafe.Pointer(dec)).next_transform_ == 1 && (*VP8LTransform)(unsafe.Pointer(dec+248)).type_ == COLOR_INDEXING_TRANSFORM && Is8bOptimizable(tls, dec+152) != 0) { goto __3 } (*ALPHDecoder)(unsafe.Pointer(alph_dec)).use_8b_decode_ = 1 @@ -12922,7 +12662,7 @@ __3: __4: ; - if !(!(ok != 0)) { + if !!(ok != 0) { goto __5 } goto Err @@ -12972,13 +12712,13 @@ func VP8LDecodeHeader(tls *libc.TLS, dec uintptr, io uintptr) int32 { /* vp8l_de // var has_alpha int32 at bp+8, 4 - if !(dec == (uintptr(0))) { + if !(dec == uintptr(0)) { goto __1 } return 0 __1: ; - if !(io == (uintptr(0))) { + if !(io == uintptr(0)) { goto __2 } (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_INVALID_PARAM @@ -12988,8 +12728,8 @@ __2: (*VP8LDecoder)(unsafe.Pointer(dec)).io_ = io (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OK - VP8LInitBitReader(tls, (dec + 40 /* &.br_ */), (*VP8Io)(unsafe.Pointer(io)).data, (*VP8Io)(unsafe.Pointer(io)).data_size) - if !(!(ReadImageInfo(tls, (dec+40 /* &.br_ */), (bp) /* &width */, (bp+4) /* &height */, (bp+8) /* &has_alpha */) != 0)) { + VP8LInitBitReader(tls, dec+40, (*VP8Io)(unsafe.Pointer(io)).data, (*VP8Io)(unsafe.Pointer(io)).data_size) + if !!(ReadImageInfo(tls, dec+40, bp, bp+4, bp+8) != 0) { goto __3 } (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_BITSTREAM_ERROR @@ -13000,7 +12740,7 @@ __3: (*VP8Io)(unsafe.Pointer(io)).width = *(*int32)(unsafe.Pointer(bp /* width */)) (*VP8Io)(unsafe.Pointer(io)).height = *(*int32)(unsafe.Pointer(bp + 4 /* height */)) - if !(!(DecodeImageStream(tls, *(*int32)(unsafe.Pointer(bp /* width */)), *(*int32)(unsafe.Pointer(bp + 4 /* height */)), 1, dec, (uintptr(0))) != 0)) { + if !!(DecodeImageStream(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)), 1, dec, uintptr(0)) != 0) { goto __4 } goto Error @@ -13017,10 +12757,10 @@ Error: func VP8LDecodeImage(tls *libc.TLS, dec uintptr) int32 { /* vp8l_dec.c:1670:5: */ var io uintptr var params uintptr - io = (uintptr(0)) - params = (uintptr(0)) + io = uintptr(0) + params = uintptr(0) - if !(dec == (uintptr(0))) { + if !(dec == uintptr(0)) { goto __1 } return 0 @@ -13037,7 +12777,7 @@ __1: } (*VP8LDecoder)(unsafe.Pointer(dec)).output_ = (*WebPDecParams)(unsafe.Pointer(params)).output - if !(!(WebPIoInitFromOptions(tls, (*WebPDecParams)(unsafe.Pointer(params)).options, io, MODE_BGRA) != 0)) { + if !!(WebPIoInitFromOptions(tls, (*WebPDecParams)(unsafe.Pointer(params)).options, io, MODE_BGRA) != 0) { goto __3 } (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_INVALID_PARAM @@ -13045,20 +12785,20 @@ __1: __3: ; - if !(!(AllocateInternalBuffers32b(tls, dec, (*VP8Io)(unsafe.Pointer(io)).width) != 0)) { + if !!(AllocateInternalBuffers32b(tls, dec, (*VP8Io)(unsafe.Pointer(io)).width) != 0) { goto __4 } goto Err __4: ; - if !(((*VP8Io)(unsafe.Pointer(io)).use_scaling != 0) && !(AllocateAndInitRescaler(tls, dec, io) != 0)) { + if !((*VP8Io)(unsafe.Pointer(io)).use_scaling != 0 && !(AllocateAndInitRescaler(tls, dec, io) != 0)) { goto __5 } goto Err __5: ; - if !(((*VP8Io)(unsafe.Pointer(io)).use_scaling != 0) || (WebPIsPremultipliedMode(tls, (*WebPDecBuffer)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).output_)).colorspace) != 0)) { + if !((*VP8Io)(unsafe.Pointer(io)).use_scaling != 0 || WebPIsPremultipliedMode(tls, (*WebPDecBuffer)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).output_)).colorspace) != 0) { goto __6 } // need the alpha-multiply functions for premultiplied output or rescaling @@ -13066,11 +12806,11 @@ __5: __6: ; - if !(!(WebPIsRGBMode(tls, (*WebPDecBuffer)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).output_)).colorspace) != 0)) { + if !!(WebPIsRGBMode(tls, (*WebPDecBuffer)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).output_)).colorspace) != 0) { goto __7 } WebPInitConvertARGBToYUV(tls) - if !((*WebPYUVABuffer)(unsafe.Pointer(((*VP8LDecoder)(unsafe.Pointer(dec)).output_ + 16 /* &.u */))).a != (uintptr(0))) { + if !((*WebPYUVABuffer)(unsafe.Pointer((*VP8LDecoder)(unsafe.Pointer(dec)).output_+16)).a != uintptr(0)) { goto __8 } WebPInitAlphaProcessing(tls) @@ -13081,11 +12821,11 @@ __7: if !((*VP8LDecoder)(unsafe.Pointer(dec)).incremental_ != 0) { goto __9 } - if !(((*VP8LDecoder)(unsafe.Pointer(dec)).hdr_.color_cache_size_ > 0) && ((*VP8LDecoder)(unsafe.Pointer(dec)).hdr_.saved_color_cache_.colors_ == (uintptr(0)))) { + if !((*VP8LDecoder)(unsafe.Pointer(dec)).hdr_.color_cache_size_ > 0 && (*VP8LDecoder)(unsafe.Pointer(dec)).hdr_.saved_color_cache_.colors_ == uintptr(0)) { goto __10 } - if !(!(VP8LColorCacheInit(tls, ((dec+152 /* &.hdr_ */)+24 /* &.saved_color_cache_ */), - (*VP8LDecoder)(unsafe.Pointer(dec)).hdr_.color_cache_.hash_bits_) != 0)) { + if !!(VP8LColorCacheInit(tls, dec+152+24, + (*VP8LDecoder)(unsafe.Pointer(dec)).hdr_.color_cache_.hash_bits_) != 0) { goto __11 } (*VP8LDecoder)(unsafe.Pointer(dec)).status_ = VP8_STATUS_OUT_OF_MEMORY @@ -13101,10 +12841,10 @@ __2: ; // Decode. - if !(!(DecodeImageData(tls, dec, (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_, (*VP8LDecoder)(unsafe.Pointer(dec)).width_, (*VP8LDecoder)(unsafe.Pointer(dec)).height_, + if !!(DecodeImageData(tls, dec, (*VP8LDecoder)(unsafe.Pointer(dec)).pixels_, (*VP8LDecoder)(unsafe.Pointer(dec)).width_, (*VP8LDecoder)(unsafe.Pointer(dec)).height_, (*VP8Io)(unsafe.Pointer(io)).crop_bottom, *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, int32) - }{ProcessRows}))) != 0)) { + }{ProcessRows}))) != 0) { goto __12 } goto Err @@ -13246,7 +12986,7 @@ type WebPMuxAnimBlend = uint32 /* mux_types.h:54:3 */ // Initializes the contents of the 'webp_data' object with default values. func WebPDataInit(tls *libc.TLS, webp_data uintptr) { /* mux_types.h:65:25: */ - if webp_data != (uintptr(0)) { + if webp_data != uintptr(0) { libc.Xmemset(tls, webp_data, 0, uint64(unsafe.Sizeof(WebPData{}))) } } @@ -13286,25 +13026,25 @@ func WebPDataInit(tls *libc.TLS, webp_data uintptr) { /* mux_types.h:65:25: */ func ParseRIFF(tls *libc.TLS, data uintptr, data_size uintptr, have_all_data int32, riff_size uintptr) VP8StatusCode { /* webp_dec.c:54:22: */ *(*size_t)(unsafe.Pointer(riff_size)) = uint64(0) // Default: no RIFF present. - if (*(*size_t)(unsafe.Pointer(data_size)) >= uint64(12)) && !(libc.Xmemcmp(tls, *(*uintptr)(unsafe.Pointer(data)), (ts+527) /* "RIFF" */, uint64(4)) != 0) { - if libc.Xmemcmp(tls, (*(*uintptr)(unsafe.Pointer(data))+uintptr(8)), (ts+532) /* "WEBP" */, uint64(4)) != 0 { + if *(*size_t)(unsafe.Pointer(data_size)) >= uint64(12) && !(libc.Xmemcmp(tls, *(*uintptr)(unsafe.Pointer(data)), ts+527, uint64(4)) != 0) { + if libc.Xmemcmp(tls, *(*uintptr)(unsafe.Pointer(data))+uintptr(8), ts+532, uint64(4)) != 0 { return VP8_STATUS_BITSTREAM_ERROR // Wrong image file signature. } else { - var size uint32_t = GetLE32(tls, (*(*uintptr)(unsafe.Pointer(data)) + uintptr(4))) + var size uint32_t = GetLE32(tls, *(*uintptr)(unsafe.Pointer(data))+uintptr(4)) // Check that we have at least one chunk (i.e "WEBP" + "VP8?nnnn"). - if size < (uint32_t(4 + 8)) { + if size < uint32_t(4+8) { return VP8_STATUS_BITSTREAM_ERROR } - if size > ((libc.CplUint32(0) - uint32(8)) - uint32(1)) { + if size > libc.CplUint32(0)-uint32(8)-uint32(1) { return VP8_STATUS_BITSTREAM_ERROR } - if (have_all_data != 0) && (size_t(size) > (*(*size_t)(unsafe.Pointer(data_size)) - uint64(8))) { + if have_all_data != 0 && size_t(size) > *(*size_t)(unsafe.Pointer(data_size))-uint64(8) { return VP8_STATUS_NOT_ENOUGH_DATA // Truncated bitstream. } // We have a RIFF container. Skip it. *(*size_t)(unsafe.Pointer(riff_size)) = size_t(size) - *(*uintptr)(unsafe.Pointer(data)) += (uintptr(12)) - *(*size_t)(unsafe.Pointer(data_size)) -= (uint64(12)) + *(*uintptr)(unsafe.Pointer(data)) += uintptr(12) + *(*size_t)(unsafe.Pointer(data_size)) -= uint64(12) } } return VP8_STATUS_OK @@ -13318,7 +13058,7 @@ func ParseRIFF(tls *libc.TLS, data uintptr, data_size uintptr, have_all_data int // *height_ptr and *flags_ptr are set to the corresponding values extracted // from the VP8X chunk. func ParseVP8X(tls *libc.TLS, data uintptr, data_size uintptr, found_vp8x uintptr, width_ptr uintptr, height_ptr uintptr, flags_ptr uintptr) VP8StatusCode { /* webp_dec.c:93:22: */ - var vp8x_size uint32_t = (uint32_t(8 + 10)) + var vp8x_size uint32_t = uint32_t(8 + 10) *(*int32)(unsafe.Pointer(found_vp8x)) = 0 @@ -13326,11 +13066,11 @@ func ParseVP8X(tls *libc.TLS, data uintptr, data_size uintptr, found_vp8x uintpt return VP8_STATUS_NOT_ENOUGH_DATA // Insufficient data. } - if !(libc.Xmemcmp(tls, *(*uintptr)(unsafe.Pointer(data)), (ts+537) /* "VP8X" */, uint64(4)) != 0) { + if !(libc.Xmemcmp(tls, *(*uintptr)(unsafe.Pointer(data)), ts+537, uint64(4)) != 0) { var width int32 var height int32 var flags uint32_t - var chunk_size uint32_t = GetLE32(tls, (*(*uintptr)(unsafe.Pointer(data)) + uintptr(4))) + var chunk_size uint32_t = GetLE32(tls, *(*uintptr)(unsafe.Pointer(data))+uintptr(4)) if chunk_size != uint32_t(10) { return VP8_STATUS_BITSTREAM_ERROR // Wrong chunk size. } @@ -13339,25 +13079,25 @@ func ParseVP8X(tls *libc.TLS, data uintptr, data_size uintptr, found_vp8x uintpt if *(*size_t)(unsafe.Pointer(data_size)) < size_t(vp8x_size) { return VP8_STATUS_NOT_ENOUGH_DATA // Insufficient data. } - flags = GetLE32(tls, (*(*uintptr)(unsafe.Pointer(data)) + uintptr(8))) - width = (1 + GetLE24(tls, (*(*uintptr)(unsafe.Pointer(data))+uintptr(12)))) - height = (1 + GetLE24(tls, (*(*uintptr)(unsafe.Pointer(data))+uintptr(15)))) - if (uint64(uint64_t(width) * uint64_t(height))) >= (uint64(1) << 32) { + flags = GetLE32(tls, *(*uintptr)(unsafe.Pointer(data))+uintptr(8)) + width = 1 + GetLE24(tls, *(*uintptr)(unsafe.Pointer(data))+uintptr(12)) + height = 1 + GetLE24(tls, *(*uintptr)(unsafe.Pointer(data))+uintptr(15)) + if uint64(uint64_t(width)*uint64_t(height)) >= uint64(1)<<32 { return VP8_STATUS_BITSTREAM_ERROR // image is too large } - if flags_ptr != (uintptr(0)) { + if flags_ptr != uintptr(0) { *(*uint32_t)(unsafe.Pointer(flags_ptr)) = flags } - if width_ptr != (uintptr(0)) { + if width_ptr != uintptr(0) { *(*int32)(unsafe.Pointer(width_ptr)) = width } - if height_ptr != (uintptr(0)) { + if height_ptr != uintptr(0) { *(*int32)(unsafe.Pointer(height_ptr)) = height } // Skip over VP8X header bytes. - *(*uintptr)(unsafe.Pointer(data)) += (uintptr(vp8x_size)) - *(*size_t)(unsafe.Pointer(data_size)) -= (size_t(vp8x_size)) + *(*uintptr)(unsafe.Pointer(data)) += uintptr(vp8x_size) + *(*size_t)(unsafe.Pointer(data_size)) -= size_t(vp8x_size) *(*int32)(unsafe.Pointer(found_vp8x)) = 1 } return VP8_STATUS_OK @@ -13373,12 +13113,12 @@ func ParseVP8X(tls *libc.TLS, data uintptr, data_size uintptr, found_vp8x uintpt func ParseOptionalChunks(tls *libc.TLS, data uintptr, data_size uintptr, riff_size size_t, alpha_data uintptr, alpha_size uintptr) VP8StatusCode { /* webp_dec.c:146:22: */ var buf uintptr var buf_size size_t - var total_size uint32_t = (uint32_t((4 + 8) + 10)) // data. + var total_size uint32_t = uint32_t(4 + 8 + 10) // data. buf = *(*uintptr)(unsafe.Pointer(data)) buf_size = *(*size_t)(unsafe.Pointer(data_size)) - *(*uintptr)(unsafe.Pointer(alpha_data)) = (uintptr(0)) + *(*uintptr)(unsafe.Pointer(alpha_data)) = uintptr(0) *(*size_t)(unsafe.Pointer(alpha_size)) = uint64(0) for 1 != 0 { @@ -13392,16 +13132,16 @@ func ParseOptionalChunks(tls *libc.TLS, data uintptr, data_size uintptr, riff_si return VP8_STATUS_NOT_ENOUGH_DATA } - chunk_size = GetLE32(tls, (buf + uintptr(4))) - if chunk_size > ((libc.CplUint32(0) - uint32(8)) - uint32(1)) { + chunk_size = GetLE32(tls, buf+uintptr(4)) + if chunk_size > libc.CplUint32(0)-uint32(8)-uint32(1) { return VP8_STATUS_BITSTREAM_ERROR // Not a valid chunk size. } // For odd-sized chunk-payload, there's one byte padding at the end. - disk_chunk_size = (((uint32_t(8) + chunk_size) + uint32_t(1)) & libc.Uint32FromInt32(libc.CplInt32(1))) - total_size = total_size + (disk_chunk_size) + disk_chunk_size = (uint32_t(8) + chunk_size + uint32_t(1)) & libc.Uint32FromInt32(libc.CplInt32(1)) + total_size = total_size + disk_chunk_size // Check that total bytes skipped so far does not exceed riff_size. - if (riff_size > uint64(0)) && (size_t(total_size) > riff_size) { + if riff_size > uint64(0) && size_t(total_size) > riff_size { return VP8_STATUS_BITSTREAM_ERROR // Not a valid chunk size. } @@ -13409,7 +13149,7 @@ func ParseOptionalChunks(tls *libc.TLS, data uintptr, data_size uintptr, riff_si // parsed all the optional chunks. // Note: This check must occur before the check 'buf_size < disk_chunk_size' // below to allow incomplete VP8/VP8L chunks. - if !(libc.Xmemcmp(tls, buf, (ts+542) /* "VP8 " */, uint64(4)) != 0) || !(libc.Xmemcmp(tls, buf, (ts+547) /* "VP8L" */, uint64(4)) != 0) { + if !(libc.Xmemcmp(tls, buf, ts+542, uint64(4)) != 0) || !(libc.Xmemcmp(tls, buf, ts+547, uint64(4)) != 0) { return VP8_STATUS_OK } @@ -13417,14 +13157,14 @@ func ParseOptionalChunks(tls *libc.TLS, data uintptr, data_size uintptr, riff_si return VP8_STATUS_NOT_ENOUGH_DATA } - if !(libc.Xmemcmp(tls, buf, (ts+552) /* "ALPH" */, uint64(4)) != 0) { // A valid ALPH header. - *(*uintptr)(unsafe.Pointer(alpha_data)) = (buf + uintptr(8)) + if !(libc.Xmemcmp(tls, buf, ts+552, uint64(4)) != 0) { // A valid ALPH header. + *(*uintptr)(unsafe.Pointer(alpha_data)) = buf + uintptr(8) *(*size_t)(unsafe.Pointer(alpha_size)) = size_t(chunk_size) } // We have a full and valid chunk; skip it. buf += uintptr(disk_chunk_size) - buf_size = buf_size - (size_t(disk_chunk_size)) + buf_size = buf_size - size_t(disk_chunk_size) } return VP8StatusCode(0) } @@ -13439,28 +13179,28 @@ func ParseOptionalChunks(tls *libc.TLS, data uintptr, data_size uintptr, riff_si // The flag '*is_lossless' is set to 1 in case of VP8L chunk / raw VP8L data. func ParseVP8Header(tls *libc.TLS, data_ptr uintptr, data_size uintptr, have_all_data int32, riff_size size_t, chunk_size uintptr, is_lossless uintptr) VP8StatusCode { /* webp_dec.c:222:22: */ var data uintptr = *(*uintptr)(unsafe.Pointer(data_ptr)) - var is_vp8 int32 = libc.BoolInt32(!(libc.Xmemcmp(tls, data, (ts+542) /* "VP8 " */, uint64(4)) != 0)) - var is_vp8l int32 = libc.BoolInt32(!(libc.Xmemcmp(tls, data, (ts+547) /* "VP8L" */, uint64(4)) != 0)) - var minimal_size uint32_t = (uint32_t(4 + 8)) // "WEBP" + "VP8 nnnn" OR + var is_vp8 int32 = libc.BoolInt32(!(libc.Xmemcmp(tls, data, ts+542, uint64(4)) != 0)) + var is_vp8l int32 = libc.BoolInt32(!(libc.Xmemcmp(tls, data, ts+547, uint64(4)) != 0)) + var minimal_size uint32_t = uint32_t(4 + 8) // "WEBP" + "VP8 nnnn" OR // "WEBP" + "VP8Lnnnn" if *(*size_t)(unsafe.Pointer(data_size)) < uint64(8) { return VP8_STATUS_NOT_ENOUGH_DATA // Insufficient data. } - if (is_vp8 != 0) || (is_vp8l != 0) { + if is_vp8 != 0 || is_vp8l != 0 { // Bitstream contains VP8/VP8L header. - var size uint32_t = GetLE32(tls, (data + uintptr(4))) - if (riff_size >= size_t(minimal_size)) && (size_t(size) > (riff_size - size_t(minimal_size))) { + var size uint32_t = GetLE32(tls, data+uintptr(4)) + if riff_size >= size_t(minimal_size) && size_t(size) > riff_size-size_t(minimal_size) { return VP8_STATUS_BITSTREAM_ERROR // Inconsistent size information. } - if (have_all_data != 0) && (size_t(size) > (*(*size_t)(unsafe.Pointer(data_size)) - uint64(8))) { + if have_all_data != 0 && size_t(size) > *(*size_t)(unsafe.Pointer(data_size))-uint64(8) { return VP8_STATUS_NOT_ENOUGH_DATA // Truncated bitstream. } // Skip over CHUNK_HEADER_SIZE bytes from VP8/VP8L Header. *(*size_t)(unsafe.Pointer(chunk_size)) = size_t(size) - *(*uintptr)(unsafe.Pointer(data_ptr)) += (uintptr(8)) - *(*size_t)(unsafe.Pointer(data_size)) -= (uint64(8)) + *(*uintptr)(unsafe.Pointer(data_ptr)) += uintptr(8) + *(*size_t)(unsafe.Pointer(data_size)) -= uint64(8) *(*int32)(unsafe.Pointer(is_lossless)) = is_vp8l } else { // Raw VP8/VP8L bitstream (no header). @@ -13514,45 +13254,45 @@ func ParseHeadersInternal(tls *libc.TLS, data uintptr, data_size size_t, width u found_riff = 0 *(*int32)(unsafe.Pointer(bp + 88 /* found_vp8x */)) = 0 animation_present = 0 - if headers != (uintptr(0)) { + if headers != uintptr(0) { have_all_data = (*WebPHeaderStructure)(unsafe.Pointer(headers)).have_all_data } else { have_all_data = 0 } - if !((*(*uintptr)(unsafe.Pointer(bp + 72 /* data */)) == (uintptr(0))) || (*(*size_t)(unsafe.Pointer(bp + 80 /* data_size */)) < uint64(12))) { + if !(*(*uintptr)(unsafe.Pointer(bp + 72)) == uintptr(0) || *(*size_t)(unsafe.Pointer(bp + 80)) < uint64(12)) { goto __1 } return VP8_STATUS_NOT_ENOUGH_DATA __1: ; - libc.Xmemset(tls, (bp) /* &hdrs */, 0, uint64(unsafe.Sizeof(WebPHeaderStructure{}))) + libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(WebPHeaderStructure{}))) (*WebPHeaderStructure)(unsafe.Pointer(bp /* &hdrs */)).data = *(*uintptr)(unsafe.Pointer(bp + 72 /* data */)) (*WebPHeaderStructure)(unsafe.Pointer(bp /* &hdrs */)).data_size = *(*size_t)(unsafe.Pointer(bp + 80 /* data_size */)) // Skip over RIFF header. - status = ParseRIFF(tls, (bp + 72) /* &data */, (bp + 80) /* &data_size */, have_all_data, ((bp) /* &hdrs */ + 56 /* &.riff_size */)) + status = ParseRIFF(tls, bp+72, bp+80, have_all_data, bp+56) if !(status != VP8_STATUS_OK) { goto __2 } return status // Wrong RIFF header / insufficient data. __2: ; - found_riff = (libc.Bool32((*WebPHeaderStructure)(unsafe.Pointer(bp /* &hdrs */)).riff_size > uint64(0))) + found_riff = libc.Bool32((*WebPHeaderStructure)(unsafe.Pointer(bp)).riff_size > uint64(0)) // Skip over VP8X. *(*uint32_t)(unsafe.Pointer(bp + 100 /* flags */)) = uint32_t(0) - status = ParseVP8X(tls, (bp + 72) /* &data */, (bp + 80) /* &data_size */, (bp + 88), /* &found_vp8x */ - (bp + 92) /* &canvas_width */, (bp + 96) /* &canvas_height */, (bp + 100) /* &flags */) + status = ParseVP8X(tls, bp+72, bp+80, bp+88, + bp+92, bp+96, bp+100) if !(status != VP8_STATUS_OK) { goto __3 } return status // Wrong VP8X / insufficient data. __3: ; - animation_present = libc.BoolInt32(!(!((*(*uint32_t)(unsafe.Pointer(bp + 100 /* flags */)) & ANIMATION_FLAG) != 0))) - if !(!(found_riff != 0) && (*(*int32)(unsafe.Pointer(bp + 88 /* found_vp8x */)) != 0)) { + animation_present = libc.BoolInt32(!!(*(*uint32_t)(unsafe.Pointer(bp + 100))&ANIMATION_FLAG != 0)) + if !(!(found_riff != 0) && *(*int32)(unsafe.Pointer(bp + 88)) != 0) { goto __4 } // Note: This restriction may be removed in the future, if it becomes @@ -13560,19 +13300,19 @@ __3: return VP8_STATUS_BITSTREAM_ERROR __4: ; - if !(has_alpha != (uintptr(0))) { + if !(has_alpha != uintptr(0)) { goto __5 } - *(*int32)(unsafe.Pointer(has_alpha)) = libc.BoolInt32(!(!((*(*uint32_t)(unsafe.Pointer(bp + 100 /* flags */)) & ALPHA_FLAG) != 0))) + *(*int32)(unsafe.Pointer(has_alpha)) = libc.BoolInt32(!!(*(*uint32_t)(unsafe.Pointer(bp + 100))&ALPHA_FLAG != 0)) __5: ; - if !(has_animation != (uintptr(0))) { + if !(has_animation != uintptr(0)) { goto __6 } *(*int32)(unsafe.Pointer(has_animation)) = animation_present __6: ; - if !(format != (uintptr(0))) { + if !(format != uintptr(0)) { goto __7 } *(*int32)(unsafe.Pointer(format)) = 0 @@ -13581,7 +13321,7 @@ __7: *(*int32)(unsafe.Pointer(bp + 104 /* image_width */)) = *(*int32)(unsafe.Pointer(bp + 92 /* canvas_width */)) *(*int32)(unsafe.Pointer(bp + 108 /* image_height */)) = *(*int32)(unsafe.Pointer(bp + 96 /* canvas_height */)) - if !(((*(*int32)(unsafe.Pointer(bp + 88 /* found_vp8x */)) != 0) && (animation_present != 0)) && (headers == (uintptr(0)))) { + if !(*(*int32)(unsafe.Pointer(bp + 88)) != 0 && animation_present != 0 && headers == uintptr(0)) { goto __8 } status = VP8_STATUS_OK @@ -13589,7 +13329,7 @@ __7: __8: ; - if !(*(*size_t)(unsafe.Pointer(bp + 80 /* data_size */)) < uint64(4)) { + if !(*(*size_t)(unsafe.Pointer(bp + 80)) < uint64(4)) { goto __9 } status = VP8_STATUS_NOT_ENOUGH_DATA @@ -13598,11 +13338,11 @@ __9: ; // Skip over optional chunks if data started with "RIFF + VP8X" or "ALPH". - if !(((found_riff != 0) && (*(*int32)(unsafe.Pointer(bp + 88 /* found_vp8x */)) != 0)) || ((!(found_riff != 0) && !(*(*int32)(unsafe.Pointer(bp + 88 /* found_vp8x */)) != 0)) && !(libc.Xmemcmp(tls, *(*uintptr)(unsafe.Pointer(bp + 72 /* data */)), (ts+552) /* "ALPH" */, uint64(4)) != 0))) { + if !(found_riff != 0 && *(*int32)(unsafe.Pointer(bp + 88)) != 0 || !(found_riff != 0) && !(*(*int32)(unsafe.Pointer(bp + 88)) != 0) && !(libc.Xmemcmp(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), ts+552, uint64(4)) != 0)) { goto __10 } - status = ParseOptionalChunks(tls, (bp + 72) /* &data */, (bp + 80) /* &data_size */, (*WebPHeaderStructure)(unsafe.Pointer(bp /* &hdrs */)).riff_size, - ((bp) /* &hdrs */ + 32 /* &.alpha_data */), ((bp) /* &hdrs */ + 40 /* &.alpha_data_size */)) + status = ParseOptionalChunks(tls, bp+72, bp+80, (*WebPHeaderStructure)(unsafe.Pointer(bp /* &hdrs */)).riff_size, + bp+32, bp+40) if !(status != VP8_STATUS_OK) { goto __11 } @@ -13613,26 +13353,26 @@ __10: ; // Skip over VP8/VP8L header. - status = ParseVP8Header(tls, (bp + 72) /* &data */, (bp + 80) /* &data_size */, have_all_data, (*WebPHeaderStructure)(unsafe.Pointer(bp /* &hdrs */)).riff_size, - ((bp) /* &hdrs */ + 48 /* &.compressed_size */), ((bp) /* &hdrs */ + 64 /* &.is_lossless */)) + status = ParseVP8Header(tls, bp+72, bp+80, have_all_data, (*WebPHeaderStructure)(unsafe.Pointer(bp /* &hdrs */)).riff_size, + bp+48, bp+64) if !(status != VP8_STATUS_OK) { goto __12 } goto ReturnWidthHeight // Wrong VP8/VP8L chunk-header / insufficient data. __12: ; - if !((*WebPHeaderStructure)(unsafe.Pointer(bp /* &hdrs */)).compressed_size > (uint64((libc.CplUint32(0) - uint32(8)) - uint32(1)))) { + if !((*WebPHeaderStructure)(unsafe.Pointer(bp)).compressed_size > uint64(libc.CplUint32(0)-uint32(8)-uint32(1))) { goto __13 } return VP8_STATUS_BITSTREAM_ERROR __13: ; - if !((format != (uintptr(0))) && !(animation_present != 0)) { + if !(format != uintptr(0) && !(animation_present != 0)) { goto __14 } *(*int32)(unsafe.Pointer(format)) = func() int32 { - if (*WebPHeaderStructure)(unsafe.Pointer(bp /* &hdrs */)).is_lossless != 0 { + if (*WebPHeaderStructure)(unsafe.Pointer(bp)).is_lossless != 0 { return 2 } return 1 @@ -13640,10 +13380,10 @@ __13: __14: ; - if !(!((*WebPHeaderStructure)(unsafe.Pointer(bp /* &hdrs */)).is_lossless != 0)) { + if !!((*WebPHeaderStructure)(unsafe.Pointer(bp)).is_lossless != 0) { goto __15 } - if !(*(*size_t)(unsafe.Pointer(bp + 80 /* data_size */)) < uint64(10)) { + if !(*(*size_t)(unsafe.Pointer(bp + 80)) < uint64(10)) { goto __17 } status = VP8_STATUS_NOT_ENOUGH_DATA @@ -13651,8 +13391,8 @@ __14: __17: ; // Validates raw VP8 data. - if !(!(VP8GetInfo(tls, *(*uintptr)(unsafe.Pointer(bp + 72 /* data */)), *(*size_t)(unsafe.Pointer(bp + 80 /* data_size */)), uint64(uint32_t((*WebPHeaderStructure)(unsafe.Pointer(bp /* &hdrs */)).compressed_size)), - (bp+104) /* &image_width */, (bp+108) /* &image_height */) != 0)) { + if !!(VP8GetInfo(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*size_t)(unsafe.Pointer(bp + 80)), uint64(uint32_t((*WebPHeaderStructure)(unsafe.Pointer(bp)).compressed_size)), + bp+104, bp+108) != 0) { goto __18 } return VP8_STATUS_BITSTREAM_ERROR @@ -13660,7 +13400,7 @@ __18: ; goto __16 __15: - if !(*(*size_t)(unsafe.Pointer(bp + 80 /* data_size */)) < uint64(5)) { + if !(*(*size_t)(unsafe.Pointer(bp + 80)) < uint64(5)) { goto __19 } status = VP8_STATUS_NOT_ENOUGH_DATA @@ -13668,7 +13408,7 @@ __15: __19: ; // Validates raw VP8L data. - if !(!(VP8LGetInfo(tls, *(*uintptr)(unsafe.Pointer(bp + 72 /* data */)), *(*size_t)(unsafe.Pointer(bp + 80 /* data_size */)), (bp+104) /* &image_width */, (bp+108) /* &image_height */, has_alpha) != 0)) { + if !!(VP8LGetInfo(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*size_t)(unsafe.Pointer(bp + 80)), bp+104, bp+108, has_alpha) != 0) { goto __20 } return VP8_STATUS_BITSTREAM_ERROR @@ -13677,10 +13417,10 @@ __20: __16: ; // Validates image size coherency. - if !(*(*int32)(unsafe.Pointer(bp + 88 /* found_vp8x */)) != 0) { + if !(*(*int32)(unsafe.Pointer(bp + 88)) != 0) { goto __21 } - if !((*(*int32)(unsafe.Pointer(bp + 92 /* canvas_width */)) != *(*int32)(unsafe.Pointer(bp + 104 /* image_width */))) || (*(*int32)(unsafe.Pointer(bp + 96 /* canvas_height */)) != *(*int32)(unsafe.Pointer(bp + 108 /* image_height */)))) { + if !(*(*int32)(unsafe.Pointer(bp + 92)) != *(*int32)(unsafe.Pointer(bp + 104)) || *(*int32)(unsafe.Pointer(bp + 96)) != *(*int32)(unsafe.Pointer(bp + 108))) { goto __22 } return VP8_STATUS_BITSTREAM_ERROR @@ -13688,33 +13428,33 @@ __22: ; __21: ; - if !(headers != (uintptr(0))) { + if !(headers != uintptr(0)) { goto __23 } *(*WebPHeaderStructure)(unsafe.Pointer(headers)) = *(*WebPHeaderStructure)(unsafe.Pointer(bp /* hdrs */)) - (*WebPHeaderStructure)(unsafe.Pointer(headers)).offset = (size_t((int64(*(*uintptr)(unsafe.Pointer(bp + 72 /* data */))) - int64((*WebPHeaderStructure)(unsafe.Pointer(headers)).data)) / 1)) + (*WebPHeaderStructure)(unsafe.Pointer(headers)).offset = size_t((int64(*(*uintptr)(unsafe.Pointer(bp + 72))) - int64((*WebPHeaderStructure)(unsafe.Pointer(headers)).data)) / 1) __23: ; ReturnWidthHeight: - if !((status == VP8_STATUS_OK) || (((status == VP8_STATUS_NOT_ENOUGH_DATA) && (*(*int32)(unsafe.Pointer(bp + 88 /* found_vp8x */)) != 0)) && (headers == (uintptr(0))))) { + if !(status == VP8_STATUS_OK || status == VP8_STATUS_NOT_ENOUGH_DATA && *(*int32)(unsafe.Pointer(bp + 88)) != 0 && headers == uintptr(0)) { goto __24 } - if !(has_alpha != (uintptr(0))) { + if !(has_alpha != uintptr(0)) { goto __26 } // If the data did not contain a VP8X/VP8L chunk the only definitive way // to set this is by looking for alpha data (from an ALPH chunk). - *(*int32)(unsafe.Pointer(has_alpha)) |= (libc.Bool32((*WebPHeaderStructure)(unsafe.Pointer(bp /* &hdrs */)).alpha_data != (uintptr(0)))) + *(*int32)(unsafe.Pointer(has_alpha)) |= libc.Bool32((*WebPHeaderStructure)(unsafe.Pointer(bp)).alpha_data != uintptr(0)) __26: ; - if !(width != (uintptr(0))) { + if !(width != uintptr(0)) { goto __27 } *(*int32)(unsafe.Pointer(width)) = *(*int32)(unsafe.Pointer(bp + 104 /* image_width */)) __27: ; - if !(height != (uintptr(0))) { + if !(height != uintptr(0)) { goto __28 } *(*int32)(unsafe.Pointer(height)) = *(*int32)(unsafe.Pointer(bp + 108 /* image_height */)) @@ -13739,13 +13479,13 @@ func WebPParseHeaders(tls *libc.TLS, headers uintptr) VP8StatusCode { /* webp_de // fill out headers, ignore width/height/has_alpha. status = ParseHeadersInternal(tls, (*WebPHeaderStructure)(unsafe.Pointer(headers)).data, (*WebPHeaderStructure)(unsafe.Pointer(headers)).data_size, - (uintptr(0)), (uintptr(0)), (uintptr(0)), (bp), /* &has_animation */ - (uintptr(0)), headers) - if (status == VP8_STATUS_OK) || (status == VP8_STATUS_NOT_ENOUGH_DATA) { + uintptr(0), uintptr(0), uintptr(0), bp, + uintptr(0), headers) + if status == VP8_STATUS_OK || status == VP8_STATUS_NOT_ENOUGH_DATA { // The WebPDemux API + libwebp can be used to decode individual // uncomposited frames or the WebPAnimDecoder can be used to fully // reconstruct them (see webp/demux.h). - if *(*int32)(unsafe.Pointer(bp /* has_animation */)) != 0 { + if *(*int32)(unsafe.Pointer(bp)) != 0 { status = VP8_STATUS_UNSUPPORTED_FEATURE } } @@ -13756,7 +13496,7 @@ func WebPParseHeaders(tls *libc.TLS, headers uintptr) VP8StatusCode { /* webp_de // WebPDecParams func WebPResetDecParams(tls *libc.TLS, params uintptr) { /* webp_dec.c:437:6: */ - if params != (uintptr(0)) { + if params != uintptr(0) { libc.Xmemset(tls, params, 0, uint64(unsafe.Sizeof(WebPDecParams{}))) } } @@ -13777,26 +13517,26 @@ func DecodeInto(tls *libc.TLS, data uintptr, data_size size_t, params uintptr) V (*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).data = data (*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).data_size = data_size (*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).have_all_data = 1 - status = WebPParseHeaders(tls, (bp) /* &headers */) // Process Pre-VP8 chunks. + status = WebPParseHeaders(tls, bp) // Process Pre-VP8 chunks. if status != VP8_STATUS_OK { return status } - VP8InitIo(tls, (bp + 72) /* &io */) - (*VP8Io)(unsafe.Pointer(bp + 72 /* &io */)).data = ((*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).data + uintptr((*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).offset)) - (*VP8Io)(unsafe.Pointer(bp + 72 /* &io */)).data_size = ((*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).data_size - (*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).offset) - WebPInitCustomIo(tls, params, (bp + 72) /* &io */) // Plug the I/O functions. + VP8InitIo(tls, bp+72) + (*VP8Io)(unsafe.Pointer(bp + 72 /* &io */)).data = (*WebPHeaderStructure)(unsafe.Pointer(bp)).data + uintptr((*WebPHeaderStructure)(unsafe.Pointer(bp)).offset) + (*VP8Io)(unsafe.Pointer(bp + 72 /* &io */)).data_size = (*WebPHeaderStructure)(unsafe.Pointer(bp)).data_size - (*WebPHeaderStructure)(unsafe.Pointer(bp)).offset + WebPInitCustomIo(tls, params, bp+72) // Plug the I/O functions. - if !((*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).is_lossless != 0) { + if !((*WebPHeaderStructure)(unsafe.Pointer(bp)).is_lossless != 0) { var dec uintptr = VP8New(tls) - if dec == (uintptr(0)) { + if dec == uintptr(0) { return VP8_STATUS_OUT_OF_MEMORY } (*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_ = (*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).alpha_data (*VP8Decoder)(unsafe.Pointer(dec)).alpha_data_size_ = (*WebPHeaderStructure)(unsafe.Pointer(bp /* &headers */)).alpha_data_size // Decode bitstream header, update io->width/io->height. - if !(VP8GetHeaders(tls, dec, (bp+72) /* &io */) != 0) { + if !(VP8GetHeaders(tls, dec, bp+72) != 0) { status = (*VP8Decoder)(unsafe.Pointer(dec)).status_ // An error occurred. Grab error status. } else { // Allocate/check output buffers. @@ -13804,10 +13544,10 @@ func DecodeInto(tls *libc.TLS, data uintptr, data_size size_t, params uintptr) V (*WebPDecParams)(unsafe.Pointer(params)).output) if status == VP8_STATUS_OK { // Decode // This change must be done before calling VP8Decode() - (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ = VP8GetThreadMethod(tls, (*WebPDecParams)(unsafe.Pointer(params)).options, (bp), /* &headers */ + (*VP8Decoder)(unsafe.Pointer(dec)).mt_method_ = VP8GetThreadMethod(tls, (*WebPDecParams)(unsafe.Pointer(params)).options, bp, (*VP8Io)(unsafe.Pointer(bp+72 /* &io */)).width, (*VP8Io)(unsafe.Pointer(bp+72 /* &io */)).height) VP8InitDithering(tls, (*WebPDecParams)(unsafe.Pointer(params)).options, dec) - if !(VP8Decode(tls, dec, (bp+72) /* &io */) != 0) { + if !(VP8Decode(tls, dec, bp+72) != 0) { status = (*VP8Decoder)(unsafe.Pointer(dec)).status_ } } @@ -13815,10 +13555,10 @@ func DecodeInto(tls *libc.TLS, data uintptr, data_size size_t, params uintptr) V VP8Delete(tls, dec) } else { var dec uintptr = VP8LNew(tls) - if dec == (uintptr(0)) { + if dec == uintptr(0) { return VP8_STATUS_OUT_OF_MEMORY } - if !(VP8LDecodeHeader(tls, dec, (bp+72) /* &io */) != 0) { + if !(VP8LDecodeHeader(tls, dec, bp+72) != 0) { status = (*VP8LDecoder)(unsafe.Pointer(dec)).status_ // An error occurred. Grab error status. } else { // Allocate/check output buffers. @@ -13836,7 +13576,7 @@ func DecodeInto(tls *libc.TLS, data uintptr, data_size size_t, params uintptr) V if status != VP8_STATUS_OK { WebPFreeDecBuffer(tls, (*WebPDecParams)(unsafe.Pointer(params)).output) } else { - if ((*WebPDecParams)(unsafe.Pointer(params)).options != (uintptr(0))) && ((*WebPDecoderOptions)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(params)).options)).flip != 0) { + if (*WebPDecParams)(unsafe.Pointer(params)).options != uintptr(0) && (*WebPDecoderOptions)(unsafe.Pointer((*WebPDecParams)(unsafe.Pointer(params)).options)).flip != 0 { // This restores the original stride values if options->flip was used // during the call to WebPAllocateDecBuffer above. status = WebPFlipBuffer(tls, (*WebPDecParams)(unsafe.Pointer(params)).output) @@ -13854,19 +13594,19 @@ func DecodeIntoRGBABuffer(tls *libc.TLS, colorspace WEBP_CSP_MODE, data uintptr, // var buf WebPDecBuffer at bp, 120 - if rgba == (uintptr(0)) { - return (uintptr(0)) + if rgba == uintptr(0) { + return uintptr(0) } - WebPInitDecBuffer(tls, (bp) /* &buf */) - WebPResetDecParams(tls, (bp + 120) /* &params */) - (*WebPDecParams)(unsafe.Pointer(bp + 120 /* &params */)).output = (bp) /* &buf */ + WebPInitDecBuffer(tls, bp) + WebPResetDecParams(tls, bp+120) + (*WebPDecParams)(unsafe.Pointer(bp + 120 /* &params */)).output = bp /* &buf */ (*WebPDecBuffer)(unsafe.Pointer(bp /* &buf */)).colorspace = colorspace - (*WebPRGBABuffer)(unsafe.Pointer(((bp) /* &buf */ + 16 /* &.u */))).rgba = rgba - (*WebPRGBABuffer)(unsafe.Pointer(((bp) /* &buf */ + 16 /* &.u */))).stride = stride - (*WebPRGBABuffer)(unsafe.Pointer(((bp) /* &buf */ + 16 /* &.u */))).size = size + (*WebPRGBABuffer)(unsafe.Pointer(bp + 16)).rgba = rgba + (*WebPRGBABuffer)(unsafe.Pointer(bp + 16)).stride = stride + (*WebPRGBABuffer)(unsafe.Pointer(bp + 16)).size = size (*WebPDecBuffer)(unsafe.Pointer(bp /* &buf */)).is_external_memory = 1 - if DecodeInto(tls, data, data_size, (bp+120) /* &params */) != VP8_STATUS_OK { - return (uintptr(0)) + if DecodeInto(tls, data, data_size, bp+120) != VP8_STATUS_OK { + return uintptr(0) } return rgba } @@ -13899,25 +13639,25 @@ func WebPDecodeYUVInto(tls *libc.TLS, data uintptr, data_size size_t, luma uintp // var output WebPDecBuffer at bp, 120 - if luma == (uintptr(0)) { - return (uintptr(0)) + if luma == uintptr(0) { + return uintptr(0) } - WebPInitDecBuffer(tls, (bp) /* &output */) - WebPResetDecParams(tls, (bp + 120) /* &params */) - (*WebPDecParams)(unsafe.Pointer(bp + 120 /* &params */)).output = (bp) /* &output */ + WebPInitDecBuffer(tls, bp) + WebPResetDecParams(tls, bp+120) + (*WebPDecParams)(unsafe.Pointer(bp + 120 /* &params */)).output = bp /* &output */ (*WebPDecBuffer)(unsafe.Pointer(bp /* &output */)).colorspace = MODE_YUV - (*WebPYUVABuffer)(unsafe.Pointer(((bp) /* &output */ + 16 /* &.u */))).y = luma - (*WebPYUVABuffer)(unsafe.Pointer(((bp) /* &output */ + 16 /* &.u */))).y_stride = luma_stride - (*WebPYUVABuffer)(unsafe.Pointer(((bp) /* &output */ + 16 /* &.u */))).y_size = luma_size - (*WebPYUVABuffer)(unsafe.Pointer(((bp) /* &output */ + 16 /* &.u */))).u = u - (*WebPYUVABuffer)(unsafe.Pointer(((bp) /* &output */ + 16 /* &.u */))).u_stride = u_stride - (*WebPYUVABuffer)(unsafe.Pointer(((bp) /* &output */ + 16 /* &.u */))).u_size = u_size - (*WebPYUVABuffer)(unsafe.Pointer(((bp) /* &output */ + 16 /* &.u */))).v = v - (*WebPYUVABuffer)(unsafe.Pointer(((bp) /* &output */ + 16 /* &.u */))).v_stride = v_stride - (*WebPYUVABuffer)(unsafe.Pointer(((bp) /* &output */ + 16 /* &.u */))).v_size = v_size + (*WebPYUVABuffer)(unsafe.Pointer(bp + 16)).y = luma + (*WebPYUVABuffer)(unsafe.Pointer(bp + 16)).y_stride = luma_stride + (*WebPYUVABuffer)(unsafe.Pointer(bp + 16)).y_size = luma_size + (*WebPYUVABuffer)(unsafe.Pointer(bp + 16)).u = u + (*WebPYUVABuffer)(unsafe.Pointer(bp + 16)).u_stride = u_stride + (*WebPYUVABuffer)(unsafe.Pointer(bp + 16)).u_size = u_size + (*WebPYUVABuffer)(unsafe.Pointer(bp + 16)).v = v + (*WebPYUVABuffer)(unsafe.Pointer(bp + 16)).v_stride = v_stride + (*WebPYUVABuffer)(unsafe.Pointer(bp + 16)).v_size = v_size (*WebPDecBuffer)(unsafe.Pointer(bp /* &output */)).is_external_memory = 1 - if DecodeInto(tls, data, data_size, (bp+120) /* &params */) != VP8_STATUS_OK { - return (uintptr(0)) + if DecodeInto(tls, data, data_size, bp+120) != VP8_STATUS_OK { + return uintptr(0) } return luma } @@ -13932,54 +13672,54 @@ func Decode(tls *libc.TLS, mode WEBP_CSP_MODE, data uintptr, data_size size_t, w // var output WebPDecBuffer at bp, 120 - WebPInitDecBuffer(tls, (bp) /* &output */) - WebPResetDecParams(tls, (bp + 120) /* &params */) - (*WebPDecParams)(unsafe.Pointer(bp + 120 /* &params */)).output = (bp) /* &output */ + WebPInitDecBuffer(tls, bp) + WebPResetDecParams(tls, bp+120) + (*WebPDecParams)(unsafe.Pointer(bp + 120 /* &params */)).output = bp /* &output */ (*WebPDecBuffer)(unsafe.Pointer(bp /* &output */)).colorspace = mode // Retrieve (and report back) the required dimensions from bitstream. - if !(WebPGetInfo(tls, data, data_size, ((bp) /* &output */ +4 /* &.width */), ((bp) /* &output */ +8 /* &.height */)) != 0) { - return (uintptr(0)) + if !(WebPGetInfo(tls, data, data_size, bp+4, bp+8) != 0) { + return uintptr(0) } - if width != (uintptr(0)) { + if width != uintptr(0) { *(*int32)(unsafe.Pointer(width)) = (*WebPDecBuffer)(unsafe.Pointer(bp /* &output */)).width } - if height != (uintptr(0)) { + if height != uintptr(0) { *(*int32)(unsafe.Pointer(height)) = (*WebPDecBuffer)(unsafe.Pointer(bp /* &output */)).height } // Decode - if DecodeInto(tls, data, data_size, (bp+120) /* &params */) != VP8_STATUS_OK { - return (uintptr(0)) + if DecodeInto(tls, data, data_size, bp+120) != VP8_STATUS_OK { + return uintptr(0) } - if keep_info != (uintptr(0)) { // keep track of the side-info - WebPCopyDecBuffer(tls, (bp) /* &output */, keep_info) + if keep_info != uintptr(0) { // keep track of the side-info + WebPCopyDecBuffer(tls, bp, keep_info) } // return decoded samples (don't clear 'output'!) if WebPIsRGBMode(tls, mode) != 0 { - return (*WebPRGBABuffer)(unsafe.Pointer(((bp) /* &output */ + 16 /* &.u */))).rgba + return (*WebPRGBABuffer)(unsafe.Pointer(bp + 16)).rgba } - return (*WebPYUVABuffer)(unsafe.Pointer(((bp) /* &output */ + 16 /* &.u */))).y + return (*WebPYUVABuffer)(unsafe.Pointer(bp + 16)).y } func WebPDecodeRGB(tls *libc.TLS, data uintptr, data_size size_t, width uintptr, height uintptr) uintptr { /* webp_dec.c:633:8: */ - return Decode(tls, MODE_RGB, data, data_size, width, height, (uintptr(0))) + return Decode(tls, MODE_RGB, data, data_size, width, height, uintptr(0)) } func WebPDecodeRGBA(tls *libc.TLS, data uintptr, data_size size_t, width uintptr, height uintptr) uintptr { /* webp_dec.c:638:8: */ - return Decode(tls, MODE_RGBA, data, data_size, width, height, (uintptr(0))) + return Decode(tls, MODE_RGBA, data, data_size, width, height, uintptr(0)) } func WebPDecodeARGB(tls *libc.TLS, data uintptr, data_size size_t, width uintptr, height uintptr) uintptr { /* webp_dec.c:643:8: */ - return Decode(tls, MODE_ARGB, data, data_size, width, height, (uintptr(0))) + return Decode(tls, MODE_ARGB, data, data_size, width, height, uintptr(0)) } func WebPDecodeBGR(tls *libc.TLS, data uintptr, data_size size_t, width uintptr, height uintptr) uintptr { /* webp_dec.c:648:8: */ - return Decode(tls, MODE_BGR, data, data_size, width, height, (uintptr(0))) + return Decode(tls, MODE_BGR, data, data_size, width, height, uintptr(0)) } func WebPDecodeBGRA(tls *libc.TLS, data uintptr, data_size size_t, width uintptr, height uintptr) uintptr { /* webp_dec.c:653:8: */ - return Decode(tls, MODE_BGRA, data, data_size, width, height, (uintptr(0))) + return Decode(tls, MODE_BGRA, data, data_size, width, height, uintptr(0)) } func WebPDecodeYUV(tls *libc.TLS, data uintptr, data_size size_t, width uintptr, height uintptr, u uintptr, v uintptr, stride uintptr, uv_stride uintptr) uintptr { /* webp_dec.c:658:8: */ @@ -13989,10 +13729,10 @@ func WebPDecodeYUV(tls *libc.TLS, data uintptr, data_size size_t, width uintptr, // var output WebPDecBuffer at bp, 120 // only to preserve the side-infos var out uintptr = Decode(tls, MODE_YUV, data, data_size, - width, height, (bp) /* &output */) + width, height, bp) - if out != (uintptr(0)) { - var buf uintptr = ((bp) /* &output */ + 16 /* &.u */) /* &.YUVA */ + if out != uintptr(0) { + var buf uintptr = bp + 16 *(*uintptr)(unsafe.Pointer(u)) = (*WebPYUVABuffer)(unsafe.Pointer(buf)).u *(*uintptr)(unsafe.Pointer(v)) = (*WebPYUVABuffer)(unsafe.Pointer(buf)).v *(*int32)(unsafe.Pointer(stride)) = (*WebPYUVABuffer)(unsafe.Pointer(buf)).y_stride @@ -14008,16 +13748,16 @@ func DefaultFeatures(tls *libc.TLS, features uintptr) { /* webp_dec.c:676:13: */ } func GetFeatures(tls *libc.TLS, data uintptr, data_size size_t, features uintptr) VP8StatusCode { /* webp_dec.c:681:22: */ - if (features == (uintptr(0))) || (data == (uintptr(0))) { + if features == uintptr(0) || data == uintptr(0) { return VP8_STATUS_INVALID_PARAM } DefaultFeatures(tls, features) // Only parse enough of the data to retrieve the features. return ParseHeadersInternal(tls, data, data_size, - (features /* &.width */), (features + 4 /* &.height */), - (features + 8 /* &.has_alpha */), (features + 12 /* &.has_animation */), - (features + 16 /* &.format */), (uintptr(0))) + features, features+4, + features+8, features+12, + features+16, uintptr(0)) } //------------------------------------------------------------------------------ @@ -14029,14 +13769,14 @@ func WebPGetInfo(tls *libc.TLS, data uintptr, data_size size_t, width uintptr, h // var features WebPBitstreamFeatures at bp, 40 - if GetFeatures(tls, data, data_size, (bp) /* &features */) != VP8_STATUS_OK { + if GetFeatures(tls, data, data_size, bp) != VP8_STATUS_OK { return 0 } - if width != (uintptr(0)) { + if width != uintptr(0) { *(*int32)(unsafe.Pointer(width)) = (*WebPBitstreamFeatures)(unsafe.Pointer(bp /* &features */)).width } - if height != (uintptr(0)) { + if height != uintptr(0) { *(*int32)(unsafe.Pointer(height)) = (*WebPBitstreamFeatures)(unsafe.Pointer(bp /* &features */)).height } @@ -14047,23 +13787,23 @@ func WebPGetInfo(tls *libc.TLS, data uintptr, data_size size_t, width uintptr, h // Advance decoding API func WebPInitDecoderConfigInternal(tls *libc.TLS, config uintptr, version int32) int32 { /* webp_dec.c:719:5: */ - if ((version) >> 8) != (int32((0x0209)) >> 8) { + if version>>8 != int32(0x0209)>>8 { return 0 // version mismatch } - if config == (uintptr(0)) { + if config == uintptr(0) { return 0 } libc.Xmemset(tls, config, 0, uint64(unsafe.Sizeof(WebPDecoderConfig{}))) - DefaultFeatures(tls, (config /* &.input */)) - WebPInitDecBuffer(tls, (config + 40 /* &.output */)) + DefaultFeatures(tls, config) + WebPInitDecBuffer(tls, config+40) return 1 } func WebPGetFeaturesInternal(tls *libc.TLS, data uintptr, data_size size_t, features uintptr, version int32) VP8StatusCode { /* webp_dec.c:733:15: */ - if ((version) >> 8) != (int32((0x0209)) >> 8) { + if version>>8 != int32(0x0209)>>8 { return VP8_STATUS_INVALID_PARAM // version mismatch } - if features == (uintptr(0)) { + if features == uintptr(0) { return VP8_STATUS_INVALID_PARAM } return GetFeatures(tls, data, data_size, features) @@ -14077,11 +13817,11 @@ func WebPDecode(tls *libc.TLS, data uintptr, data_size size_t, config uintptr) V var status VP8StatusCode - if config == (uintptr(0)) { + if config == uintptr(0) { return VP8_STATUS_INVALID_PARAM } - status = GetFeatures(tls, data, data_size, (config /* &.input */)) + status = GetFeatures(tls, data, data_size, config) if status != VP8_STATUS_OK { if status == VP8_STATUS_NOT_ENOUGH_DATA { return VP8_STATUS_BITSTREAM_ERROR // Not-enough-data treated as error. @@ -14089,25 +13829,25 @@ func WebPDecode(tls *libc.TLS, data uintptr, data_size size_t, config uintptr) V return status } - WebPResetDecParams(tls, (bp) /* &params */) - (*WebPDecParams)(unsafe.Pointer(bp /* &params */)).options = (config + 160 /* &.options */) - (*WebPDecParams)(unsafe.Pointer(bp /* &params */)).output = (config + 40 /* &.output */) - if WebPAvoidSlowMemory(tls, (*WebPDecParams)(unsafe.Pointer(bp /* &params */)).output, (config /* &.input */)) != 0 { + WebPResetDecParams(tls, bp) + (*WebPDecParams)(unsafe.Pointer(bp /* &params */)).options = config + 160 + (*WebPDecParams)(unsafe.Pointer(bp /* &params */)).output = config + 40 + if WebPAvoidSlowMemory(tls, (*WebPDecParams)(unsafe.Pointer(bp)).output, config) != 0 { // decoding to slow memory: use a temporary in-mem buffer to decode into. // var in_mem_buffer WebPDecBuffer at bp+112, 120 - WebPInitDecBuffer(tls, (bp + 112) /* &in_mem_buffer */) + WebPInitDecBuffer(tls, bp+112) (*WebPDecBuffer)(unsafe.Pointer(bp + 112 /* &in_mem_buffer */)).colorspace = (*WebPDecoderConfig)(unsafe.Pointer(config)).output.colorspace (*WebPDecBuffer)(unsafe.Pointer(bp + 112 /* &in_mem_buffer */)).width = (*WebPDecoderConfig)(unsafe.Pointer(config)).input.width (*WebPDecBuffer)(unsafe.Pointer(bp + 112 /* &in_mem_buffer */)).height = (*WebPDecoderConfig)(unsafe.Pointer(config)).input.height - (*WebPDecParams)(unsafe.Pointer(bp /* &params */)).output = (bp + 112) /* &in_mem_buffer */ - status = DecodeInto(tls, data, data_size, (bp) /* &params */) + (*WebPDecParams)(unsafe.Pointer(bp /* &params */)).output = bp + 112 /* &in_mem_buffer */ + status = DecodeInto(tls, data, data_size, bp) if status == VP8_STATUS_OK { // do the slow-copy - status = WebPCopyDecBufferPixels(tls, (bp + 112) /* &in_mem_buffer */, (config + 40 /* &.output */)) + status = WebPCopyDecBufferPixels(tls, bp+112, config+40) } - WebPFreeDecBuffer(tls, (bp + 112) /* &in_mem_buffer */) + WebPFreeDecBuffer(tls, bp+112) } else { - status = DecodeInto(tls, data, data_size, (bp) /* &params */) + status = DecodeInto(tls, data, data_size, bp) } return status @@ -14117,7 +13857,7 @@ func WebPDecode(tls *libc.TLS, data uintptr, data_size size_t, config uintptr) V // Cropping and rescaling. func WebPCheckCropDimensions(tls *libc.TLS, image_width int32, image_height int32, x int32, y int32, w int32, h int32) int32 { /* webp_dec.c:788:5: */ - return libc.BoolInt32(!((((((((((x < 0) || (y < 0)) || (w <= 0)) || (h <= 0)) || (x >= image_width)) || (w > image_width)) || (w > (image_width - x))) || (y >= image_height)) || (h > image_height)) || (h > (image_height - y)))) + return libc.BoolInt32(!(x < 0 || y < 0 || w <= 0 || h <= 0 || x >= image_width || w > image_width || w > image_width-x || y >= image_height || h > image_height || h > image_height-y)) } func WebPIoInitFromOptions(tls *libc.TLS, options uintptr, io uintptr, src_colorspace WEBP_CSP_MODE) int32 { /* webp_dec.c:795:5: */ @@ -14132,15 +13872,15 @@ func WebPIoInitFromOptions(tls *libc.TLS, options uintptr, io uintptr, src_color var h int32 = H // Cropping - (*VP8Io)(unsafe.Pointer(io)).use_cropping = (libc.Bool32((options != (uintptr(0))) && ((*WebPDecoderOptions)(unsafe.Pointer(options)).use_cropping != 0))) + (*VP8Io)(unsafe.Pointer(io)).use_cropping = libc.Bool32(options != uintptr(0) && (*WebPDecoderOptions)(unsafe.Pointer(options)).use_cropping != 0) if (*VP8Io)(unsafe.Pointer(io)).use_cropping != 0 { w = (*WebPDecoderOptions)(unsafe.Pointer(options)).crop_width h = (*WebPDecoderOptions)(unsafe.Pointer(options)).crop_height x = (*WebPDecoderOptions)(unsafe.Pointer(options)).crop_left y = (*WebPDecoderOptions)(unsafe.Pointer(options)).crop_top if !(WebPIsRGBMode(tls, src_colorspace) != 0) { // only snap for YUV420 - x = x & (libc.CplInt32(1)) - y = y & (libc.CplInt32(1)) + x = x & libc.CplInt32(1) + y = y & libc.CplInt32(1) } if !(WebPCheckCropDimensions(tls, W, H, x, y, w, h) != 0) { return 0 // out of frame boundary error @@ -14148,17 +13888,17 @@ func WebPIoInitFromOptions(tls *libc.TLS, options uintptr, io uintptr, src_color } (*VP8Io)(unsafe.Pointer(io)).crop_left = x (*VP8Io)(unsafe.Pointer(io)).crop_top = y - (*VP8Io)(unsafe.Pointer(io)).crop_right = (x + w) - (*VP8Io)(unsafe.Pointer(io)).crop_bottom = (y + h) + (*VP8Io)(unsafe.Pointer(io)).crop_right = x + w + (*VP8Io)(unsafe.Pointer(io)).crop_bottom = y + h (*VP8Io)(unsafe.Pointer(io)).mb_w = w (*VP8Io)(unsafe.Pointer(io)).mb_h = h // Scaling - (*VP8Io)(unsafe.Pointer(io)).use_scaling = (libc.Bool32((options != (uintptr(0))) && ((*WebPDecoderOptions)(unsafe.Pointer(options)).use_scaling != 0))) + (*VP8Io)(unsafe.Pointer(io)).use_scaling = libc.Bool32(options != uintptr(0) && (*WebPDecoderOptions)(unsafe.Pointer(options)).use_scaling != 0) if (*VP8Io)(unsafe.Pointer(io)).use_scaling != 0 { *(*int32)(unsafe.Pointer(bp /* scaled_width */)) = (*WebPDecoderOptions)(unsafe.Pointer(options)).scaled_width *(*int32)(unsafe.Pointer(bp + 4 /* scaled_height */)) = (*WebPDecoderOptions)(unsafe.Pointer(options)).scaled_height - if !(WebPRescalerGetScaledDimensions(tls, w, h, (bp) /* &scaled_width */, (bp+4) /* &scaled_height */) != 0) { + if !(WebPRescalerGetScaledDimensions(tls, w, h, bp, bp+4) != 0) { return 0 } (*VP8Io)(unsafe.Pointer(io)).scaled_width = *(*int32)(unsafe.Pointer(bp /* scaled_width */)) @@ -14166,14 +13906,14 @@ func WebPIoInitFromOptions(tls *libc.TLS, options uintptr, io uintptr, src_color } // Filter - (*VP8Io)(unsafe.Pointer(io)).bypass_filtering = (libc.Bool32((options != (uintptr(0))) && ((*WebPDecoderOptions)(unsafe.Pointer(options)).bypass_filtering != 0))) + (*VP8Io)(unsafe.Pointer(io)).bypass_filtering = libc.Bool32(options != uintptr(0) && (*WebPDecoderOptions)(unsafe.Pointer(options)).bypass_filtering != 0) // Fancy upsampler - (*VP8Io)(unsafe.Pointer(io)).fancy_upsampling = (libc.Bool32((options == (uintptr(0))) || (!((*WebPDecoderOptions)(unsafe.Pointer(options)).no_fancy_upsampling != 0)))) + (*VP8Io)(unsafe.Pointer(io)).fancy_upsampling = libc.Bool32(options == uintptr(0) || !((*WebPDecoderOptions)(unsafe.Pointer(options)).no_fancy_upsampling != 0)) if (*VP8Io)(unsafe.Pointer(io)).use_scaling != 0 { // disable filter (only for large downscaling ratio). - *(*int32)(unsafe.Pointer((io + 112 /* &.bypass_filtering */))) |= (libc.Bool32(((*VP8Io)(unsafe.Pointer(io)).scaled_width < ((W * 3) / 4)) && ((*VP8Io)(unsafe.Pointer(io)).scaled_height < ((H * 3) / 4)))) + *(*int32)(unsafe.Pointer(io + 112)) |= libc.Bool32((*VP8Io)(unsafe.Pointer(io)).scaled_width < W*3/4 && (*VP8Io)(unsafe.Pointer(io)).scaled_height < H*3/4) (*VP8Io)(unsafe.Pointer(io)).fancy_upsampling = 0 } return 1 @@ -14186,16 +13926,16 @@ func WebPIoInitFromOptions(tls *libc.TLS, options uintptr, io uintptr, src_color // ----------------------------------------------------------------------------- func Mult(tls *libc.TLS, x uint8_t, mult uint32_t) uint32_t { /* alpha_processing.c:29:17: */ - var v uint32_t = (((uint32_t(x) * mult) + (uint32((uint32(1) << 24)) >> 1)) >> 24) + var v uint32_t = (uint32_t(x)*mult + uint32(uint32(1)<<24)>>1) >> 24 // <- 24bit precision is enough to ensure that. return v } func GetScale(tls *libc.TLS, a uint32_t, inverse int32) uint32_t { /* alpha_processing.c:134:29: */ if inverse != 0 { - return ((uint32(255) << 24) / a) + return uint32(255) << 24 / a } - return (a * ((uint32(1) << 24) / 255)) + return a * (uint32(1) << 24 / 255) } func WebPMultARGBRow_C(tls *libc.TLS, ptr uintptr, width int32, inverse int32) { /* alpha_processing.c:140:6: */ @@ -14206,12 +13946,12 @@ func WebPMultARGBRow_C(tls *libc.TLS, ptr uintptr, width int32, inverse int32) { if argb <= 0x00ffffff { // alpha == 0 *(*uint32_t)(unsafe.Pointer(ptr + uintptr(x)*4)) = uint32_t(0) } else { - var alpha uint32_t = ((argb >> 24) & uint32_t(0xff)) + var alpha uint32_t = argb >> 24 & uint32_t(0xff) var scale uint32_t = GetScale(tls, alpha, inverse) - var out uint32_t = (argb & 0xff000000) - out = out | (Mult(tls, (uint8(argb>>0)), scale) << 0) - out = out | (Mult(tls, (uint8(argb>>8)), scale) << 8) - out = out | (Mult(tls, (uint8(argb>>16)), scale) << 16) + var out uint32_t = argb & 0xff000000 + out = out | Mult(tls, uint8(argb>>0), scale)<<0 + out = out | Mult(tls, uint8(argb>>8), scale)<<8 + out = out | Mult(tls, uint8(argb>>16), scale)<<16 *(*uint32_t)(unsafe.Pointer(ptr + uintptr(x)*4)) = out } } @@ -14271,26 +14011,26 @@ func WebPMultRows(tls *libc.TLS, ptr uintptr, stride int32, alpha uintptr, alpha func ApplyAlphaMultiply_C(tls *libc.TLS, rgba uintptr, alpha_first int32, w int32, h int32, stride int32) { /* alpha_processing.c:226:13: */ for libc.PostDecInt32(&h, 1) > 0 { - var rgb uintptr = (rgba + uintptr((func() int32 { + var rgb uintptr = rgba + uintptr(func() int32 { if alpha_first != 0 { return 1 } return 0 - }()))) - var alpha uintptr = (rgba + uintptr((func() int32 { + }()) + var alpha uintptr = rgba + uintptr(func() int32 { if alpha_first != 0 { return 0 } return 3 - }()))) + }()) var i int32 for i = 0; i < w; i++ { - var a uint32_t = uint32_t(*(*uint8_t)(unsafe.Pointer(alpha + uintptr((4 * i))))) + var a uint32_t = uint32_t(*(*uint8_t)(unsafe.Pointer(alpha + uintptr(4*i)))) if a != uint32_t(0xff) { - var mult uint32_t = ((a) * 32897) - *(*uint8_t)(unsafe.Pointer(rgb + uintptr(((4 * i) + 0)))) = (uint8_t(((uint32_t(*(*uint8_t)(unsafe.Pointer(rgb + uintptr(((4 * i) + 0)))))) * (mult)) >> 23)) - *(*uint8_t)(unsafe.Pointer(rgb + uintptr(((4 * i) + 1)))) = (uint8_t(((uint32_t(*(*uint8_t)(unsafe.Pointer(rgb + uintptr(((4 * i) + 1)))))) * (mult)) >> 23)) - *(*uint8_t)(unsafe.Pointer(rgb + uintptr(((4 * i) + 2)))) = (uint8_t(((uint32_t(*(*uint8_t)(unsafe.Pointer(rgb + uintptr(((4 * i) + 2)))))) * (mult)) >> 23)) + var mult uint32_t = a * 32897 + *(*uint8_t)(unsafe.Pointer(rgb + uintptr(4*i+0))) = uint8_t(uint32_t(*(*uint8_t)(unsafe.Pointer(rgb + uintptr(4*i+0)))) * mult >> 23) + *(*uint8_t)(unsafe.Pointer(rgb + uintptr(4*i+1))) = uint8_t(uint32_t(*(*uint8_t)(unsafe.Pointer(rgb + uintptr(4*i+1)))) * mult >> 23) + *(*uint8_t)(unsafe.Pointer(rgb + uintptr(4*i+2))) = uint8_t(uint32_t(*(*uint8_t)(unsafe.Pointer(rgb + uintptr(4*i+2)))) * mult >> 23) } } rgba += uintptr(stride) @@ -14300,30 +14040,30 @@ func ApplyAlphaMultiply_C(tls *libc.TLS, rgba uintptr, alpha_first int32, w int3 // rgbA4444 func dither_hi(tls *libc.TLS, x uint8_t) uint8_t { /* alpha_processing.c:252:28: */ - return (uint8_t((int32(x) & 0xf0) | (int32(x) >> 4))) + return uint8_t(int32(x)&0xf0 | int32(x)>>4) } func dither_lo(tls *libc.TLS, x uint8_t) uint8_t { /* alpha_processing.c:256:28: */ - return (uint8_t((int32(x) & 0x0f) | (int32(x) << 4))) + return uint8_t(int32(x)&0x0f | int32(x)<<4) } func multiply(tls *libc.TLS, x uint8_t, m uint32_t) uint8_t { /* alpha_processing.c:260:28: */ - return (uint8_t((uint32_t(x) * m) >> 16)) + return uint8_t(uint32_t(x) * m >> 16) } func ApplyAlphaMultiply4444_C(tls *libc.TLS, rgba4444 uintptr, w int32, h int32, stride int32, rg_byte_pos int32) { /* alpha_processing.c:264:25: */ for libc.PostDecInt32(&h, 1) > 0 { var i int32 for i = 0; i < w; i++ { - var rg uint32_t = uint32_t(*(*uint8_t)(unsafe.Pointer(rgba4444 + uintptr(((2 * i) + rg_byte_pos))))) - var ba uint32_t = uint32_t(*(*uint8_t)(unsafe.Pointer(rgba4444 + uintptr(((2 * i) + (rg_byte_pos ^ 1)))))) - var a uint8_t = (uint8_t(ba & uint32_t(0x0f))) - var mult uint32_t = (uint32_t((int32(a)) * 0x1111)) + var rg uint32_t = uint32_t(*(*uint8_t)(unsafe.Pointer(rgba4444 + uintptr(2*i+rg_byte_pos)))) + var ba uint32_t = uint32_t(*(*uint8_t)(unsafe.Pointer(rgba4444 + uintptr(2*i+(rg_byte_pos^1))))) + var a uint8_t = uint8_t(ba & uint32_t(0x0f)) + var mult uint32_t = uint32_t(int32(a) * 0x1111) var r uint8_t = multiply(tls, dither_hi(tls, uint8(rg)), mult) var g uint8_t = multiply(tls, dither_lo(tls, uint8(rg)), mult) var b uint8_t = multiply(tls, dither_hi(tls, uint8(ba)), mult) - *(*uint8_t)(unsafe.Pointer(rgba4444 + uintptr(((2 * i) + rg_byte_pos)))) = (uint8_t((int32(r) & 0xf0) | ((int32(g) >> 4) & 0x0f))) - *(*uint8_t)(unsafe.Pointer(rgba4444 + uintptr(((2 * i) + (rg_byte_pos ^ 1))))) = (uint8_t((int32(b) & 0xf0) | int32(a))) + *(*uint8_t)(unsafe.Pointer(rgba4444 + uintptr(2*i+rg_byte_pos))) = uint8_t(int32(r)&0xf0 | int32(g)>>4&0x0f) + *(*uint8_t)(unsafe.Pointer(rgba4444 + uintptr(2*i+(rg_byte_pos^1)))) = uint8_t(int32(b)&0xf0 | int32(a)) } rgba4444 += uintptr(stride) } @@ -14341,14 +14081,14 @@ func DispatchAlpha_C(tls *libc.TLS, alpha uintptr, alpha_stride int32, width int for j = 0; j < height; j++ { for i = 0; i < width; i++ { var alpha_value uint32_t = uint32_t(*(*uint8_t)(unsafe.Pointer(alpha + uintptr(i)))) - *(*uint8_t)(unsafe.Pointer(dst + uintptr((4 * i)))) = uint8_t(alpha_value) - alpha_mask = alpha_mask & (alpha_value) + *(*uint8_t)(unsafe.Pointer(dst + uintptr(4*i))) = uint8_t(alpha_value) + alpha_mask = alpha_mask & alpha_value } alpha += uintptr(alpha_stride) dst += uintptr(dst_stride) } - return (libc.Bool32(alpha_mask != uint32_t(0xff))) + return libc.Bool32(alpha_mask != uint32_t(0xff)) } func DispatchAlphaToGreen_C(tls *libc.TLS, alpha uintptr, alpha_stride int32, width int32, height int32, dst uintptr, dst_stride int32) { /* alpha_processing.c:314:13: */ @@ -14356,10 +14096,10 @@ func DispatchAlphaToGreen_C(tls *libc.TLS, alpha uintptr, alpha_stride int32, wi var j int32 for j = 0; j < height; j++ { for i = 0; i < width; i++ { - *(*uint32_t)(unsafe.Pointer(dst + uintptr(i)*4)) = (uint32_t(int32(*(*uint8_t)(unsafe.Pointer(alpha + uintptr(i)))) << 8)) // leave A/R/B channels zero'd. + *(*uint32_t)(unsafe.Pointer(dst + uintptr(i)*4)) = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(alpha + uintptr(i)))) << 8) // leave A/R/B channels zero'd. } alpha += uintptr(alpha_stride) - dst += 4 * (uintptr(dst_stride)) + dst += 4 * uintptr(dst_stride) } } @@ -14370,20 +14110,20 @@ func ExtractAlpha_C(tls *libc.TLS, argb uintptr, argb_stride int32, width int32, for j = 0; j < height; j++ { for i = 0; i < width; i++ { - var alpha_value uint8_t = *(*uint8_t)(unsafe.Pointer(argb + uintptr((4 * i)))) + var alpha_value uint8_t = *(*uint8_t)(unsafe.Pointer(argb + uintptr(4*i))) *(*uint8_t)(unsafe.Pointer(alpha + uintptr(i))) = alpha_value - alpha_mask = uint8_t(int32(alpha_mask) & (int32(alpha_value))) + alpha_mask = uint8_t(int32(alpha_mask) & int32(alpha_value)) } argb += uintptr(argb_stride) alpha += uintptr(alpha_stride) } - return (libc.Bool32(int32(alpha_mask) == 0xff)) + return libc.Bool32(int32(alpha_mask) == 0xff) } func ExtractGreen_C(tls *libc.TLS, argb uintptr, alpha uintptr, size int32) { /* alpha_processing.c:346:13: */ var i int32 for i = 0; i < size; i++ { - *(*uint8_t)(unsafe.Pointer(alpha + uintptr(i))) = (uint8_t(*(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4)) >> 8)) + *(*uint8_t)(unsafe.Pointer(alpha + uintptr(i))) = uint8_t(*(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4)) >> 8) } } @@ -14400,7 +14140,7 @@ func HasAlpha8b_C(tls *libc.TLS, src uintptr, length int32) int32 { /* alpha_pro func HasAlpha32b_C(tls *libc.TLS, src uintptr, length int32) int32 { /* alpha_processing.c:360:12: */ var x int32 - for x = 0; libc.PostDecInt32(&length, 1) > 0; x = x + (4) { + for x = 0; libc.PostDecInt32(&length, 1) > 0; x = x + 4 { if int32(*(*uint8_t)(unsafe.Pointer(src + uintptr(x)))) != 0xff { return 1 } @@ -14411,7 +14151,7 @@ func HasAlpha32b_C(tls *libc.TLS, src uintptr, length int32) int32 { /* alpha_pr func AlphaReplace_C(tls *libc.TLS, src uintptr, length int32, color uint32_t) { /* alpha_processing.c:366:13: */ var x int32 for x = 0; x < length; x++ { - if (*(*uint32_t)(unsafe.Pointer(src + uintptr(x)*4)) >> 24) == uint32_t(0) { + if *(*uint32_t)(unsafe.Pointer(src + uintptr(x)*4))>>24 == uint32_t(0) { *(*uint32_t)(unsafe.Pointer(src + uintptr(x)*4)) = color } } @@ -14421,7 +14161,7 @@ func AlphaReplace_C(tls *libc.TLS, src uintptr, length int32, color uint32_t) { // Simple channel manipulations. func MakeARGB32(tls *libc.TLS, a int32, r int32, g int32, b int32) uint32_t { /* alpha_processing.c:374:29: */ - return ((((uint32_t(a) << 24) | (uint32_t(r << 16))) | (uint32_t(g << 8))) | uint32_t(b)) + return uint32_t(a)<<24 | uint32_t(r<<16) | uint32_t(g<<8) | uint32_t(b) } func PackRGB_C(tls *libc.TLS, r uintptr, g uintptr, b uintptr, len int32, step int32, out uintptr) { /* alpha_processing.c:391:13: */ @@ -14429,7 +14169,7 @@ func PackRGB_C(tls *libc.TLS, r uintptr, g uintptr, b uintptr, len int32, step i var offset int32 = 0 for i = 0; i < len; i++ { *(*uint32_t)(unsafe.Pointer(out + uintptr(i)*4)) = MakeARGB32(tls, 0xff, int32(*(*uint8_t)(unsafe.Pointer(r + uintptr(offset)))), int32(*(*uint8_t)(unsafe.Pointer(g + uintptr(offset)))), int32(*(*uint8_t)(unsafe.Pointer(b + uintptr(offset))))) - offset = offset + (step) + offset = offset + step } } @@ -14446,7 +14186,7 @@ var WebPHasAlpha32b uintptr /* alpha_processing.c:422:5: */ var WebPAlphaReplace uintptr /* alpha_processing.c:423:6: */ func WebPInitAlphaProcessing(tls *libc.TLS) { /* alpha_processing.c:433:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if WebPInitAlphaProcessing_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -14498,7 +14238,7 @@ func WebPInitAlphaProcessing_body(tls *libc.TLS) { /* alpha_processing.c:433:1: }{AlphaReplace_C})) // If defined, use CPUInfo() to overwrite some pointers with faster versions. - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } @@ -14603,8 +14343,8 @@ type VP8BitWriter = VP8BitWriter1 /* bit_writer_utils.h:26:29 */ // return approximate write position (in bits) func VP8BitWriterPos(tls *libc.TLS, bw uintptr) uint64_t { /* bit_writer_utils.h:56:29: */ - var nb_bits uint64_t = (uint64_t(8 + (*VP8BitWriter)(unsafe.Pointer(bw)).nb_bits_)) // bw->nb_bits_ is <= 0, note - return ((((*VP8BitWriter)(unsafe.Pointer(bw)).pos_ + size_t((*VP8BitWriter)(unsafe.Pointer(bw)).run_)) * uint64(8)) + nb_bits) + var nb_bits uint64_t = uint64_t(8 + (*VP8BitWriter)(unsafe.Pointer(bw)).nb_bits_) // bw->nb_bits_ is <= 0, note + return ((*VP8BitWriter)(unsafe.Pointer(bw)).pos_+size_t((*VP8BitWriter)(unsafe.Pointer(bw)).run_))*uint64(8) + nb_bits } // Returns a pointer to the internal buffer. @@ -14635,7 +14375,7 @@ type VP8LBitWriter = struct { } /* bit_writer_utils.h:101:3 */ func VP8LBitWriterNumBytes(tls *libc.TLS, bw uintptr) size_t { /* bit_writer_utils.h:103:27: */ - return (size_t(((int64((*VP8LBitWriter)(unsafe.Pointer(bw)).cur_) - int64((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_)) / 1) + (int64(((*VP8LBitWriter)(unsafe.Pointer(bw)).used_ + 7) >> 3)))) + return size_t((int64((*VP8LBitWriter)(unsafe.Pointer(bw)).cur_)-int64((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_))/1 + int64(((*VP8LBitWriter)(unsafe.Pointer(bw)).used_+7)>>3)) } // This function writes bits into bytes in increasing addresses (little endian), @@ -14649,8 +14389,8 @@ func VP8LPutBits(tls *libc.TLS, bw uintptr, bits uint32_t, n_bits int32) { /* bi if (*VP8LBitWriter)(unsafe.Pointer(bw)).used_ >= 32 { VP8LPutBitsFlushBits(tls, bw) } - *(*vp8l_atype_t)(unsafe.Pointer((bw /* &.bits_ */))) |= (vp8l_atype_t(bits) << (*VP8LBitWriter)(unsafe.Pointer(bw)).used_) - *(*int32)(unsafe.Pointer((bw + 8 /* &.used_ */))) += (n_bits) + *(*vp8l_atype_t)(unsafe.Pointer(bw)) |= vp8l_atype_t(bits) << (*VP8LBitWriter)(unsafe.Pointer(bw)).used_ + *(*int32)(unsafe.Pointer(bw + 8)) += n_bits } } else { VP8LPutBitsInternal(tls, bw, bits, n_bits) @@ -14673,7 +14413,7 @@ type score_t = int64_t /* vp8i_enc.h:107:17 */ // Fun fact: this is the _only_ line where we're actually being lossy and // discarding bits. func QUANTDIV(tls *libc.TLS, n uint32_t, iQ uint32_t, B uint32_t) int32 { /* vp8i_enc.h:116:24: */ - return (int32(((n * iQ) + B) >> 17)) + return int32((n*iQ + B) >> 17) } // Uncomment the following to remove token-buffer code: @@ -14906,7 +14646,7 @@ func VP8RecordStats(tls *libc.TLS, bit int32, stats uintptr) int32 { /* cost_enc // An overflow is inbound. Note we handle this at 0xfffe0000u instead of // 0xffff0000u to make sure p + 1u does not overflow. if p >= 0xfffe0000 { - p = (((p + 1) >> 1) & 0x7fff7fff) // -> divide the stats by 2. + p = (p + 1) >> 1 & 0x7fff7fff // -> divide the stats by 2. } // record bit count (lower 16 bits) and increment total count (upper 16 bits). p = p + (0x00010000 + uint32(bit)) @@ -14919,17 +14659,17 @@ func VP8BitCost(tls *libc.TLS, bit int32, proba uint8_t) int32 { /* cost_enc.h:5 if !(bit != 0) { return int32(VP8EntropyCost[proba]) } - return int32(VP8EntropyCost[(255 - int32(proba))]) + return int32(VP8EntropyCost[255-int32(proba)]) } func VP8LevelCost(tls *libc.TLS, table uintptr, level int32) int32 { /* cost_enc.h:66:24: */ - return (int32(VP8LevelFixedCosts[level]) + + return int32(VP8LevelFixedCosts[level]) + int32(*(*uint16_t)(unsafe.Pointer(table + uintptr(func() int32 { if level > MAX_VARIABLE_LEVEL { return MAX_VARIABLE_LEVEL } return level - }())*2)))) + }())*2))) } //------------------------------------------------------------------------------ @@ -15244,9 +14984,9 @@ var VP8EncBands = [17]uint8_t{ func GetResidualCost_C(tls *libc.TLS, ctx0 int32, res uintptr) int32 { /* cost.c:322:12: */ var n int32 = (*VP8Residual)(unsafe.Pointer(res)).first // should be prob[VP8EncBands[n]], but it's equivalent for n=0 or 1 - var p0 int32 = int32(*(*uint8_t)(unsafe.Pointer((((*VP8Residual)(unsafe.Pointer(res)).prob + uintptr(n)*33) + uintptr(ctx0)*11)))) + var p0 int32 = int32(*(*uint8_t)(unsafe.Pointer((*VP8Residual)(unsafe.Pointer(res)).prob + uintptr(n)*33 + uintptr(ctx0)*11))) var costs CostArrayPtr = (*VP8Residual)(unsafe.Pointer(res)).costs - var t uintptr = *(*uintptr)(unsafe.Pointer((costs + uintptr(n)*24) + uintptr(ctx0)*8)) + var t uintptr = *(*uintptr)(unsafe.Pointer(costs + uintptr(n)*24 + uintptr(ctx0)*8)) // bit_cost(1, p0) is already incorporated in t[] tables, but only if ctx != 0 // (as required by the syntax). For ctx0 == 0, we need to add it here or it'll // be missing during the loop. @@ -15268,24 +15008,24 @@ func GetResidualCost_C(tls *libc.TLS, ctx0 int32, res uintptr) int32 { /* cost.c } else { ctx = v } - cost = cost + (VP8LevelCost(tls, t, v)) - t = *(*uintptr)(unsafe.Pointer((costs + uintptr((n+1))*24) + uintptr(ctx)*8)) + cost = cost + VP8LevelCost(tls, t, v) + t = *(*uintptr)(unsafe.Pointer(costs + uintptr(n+1)*24 + uintptr(ctx)*8)) } // Last coefficient is always non-zero { var v int32 = libc.Xabs(tls, int32(*(*int16_t)(unsafe.Pointer((*VP8Residual)(unsafe.Pointer(res)).coeffs + uintptr(n)*2)))) - cost = cost + (VP8LevelCost(tls, t, v)) + cost = cost + VP8LevelCost(tls, t, v) if n < 15 { - var b int32 = int32(VP8EncBands[(n + 1)]) + var b int32 = int32(VP8EncBands[n+1]) var ctx int32 if v == 1 { ctx = 1 } else { ctx = 2 } - var last_p0 int32 = int32(*(*uint8_t)(unsafe.Pointer((((*VP8Residual)(unsafe.Pointer(res)).prob + uintptr(b)*33) + uintptr(ctx)*11)))) - cost = cost + (VP8BitCost(tls, 0, uint8(last_p0))) + var last_p0 int32 = int32(*(*uint8_t)(unsafe.Pointer((*VP8Residual)(unsafe.Pointer(res)).prob + uintptr(b)*33 + uintptr(ctx)*11))) + cost = cost + VP8BitCost(tls, 0, uint8(last_p0)) } } @@ -15312,7 +15052,7 @@ var VP8GetResidualCost VP8GetResidualCostFunc /* cost.c:374:24: */ var VP8SetResidualCoeffs VP8SetResidualCoeffsFunc /* cost.c:375:26: */ func VP8EncDspCostInit(tls *libc.TLS) { /* cost.c:382:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if VP8EncDspCostInit_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -15332,7 +15072,7 @@ func VP8EncDspCostInit_body(tls *libc.TLS) { /* cost.c:382:1: */ }{SetResidualCoeffs_C})) // If defined, use CPUInfo() to overwrite some pointers with faster versions. - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } @@ -15354,16 +15094,16 @@ func xgetbv(tls *libc.TLS) uint64_t { /* cpu.c:74:29: */ var eax uint32_t var edx uint32_t panic(`cpu.c:78:3: assembler statements not supported`) - return ((uint64_t(edx) << 32) | uint64_t(eax)) + return uint64_t(edx)<<32 | uint64_t(eax) } // helper function for run-time detection of slow SSSE3 platforms func CheckSlowModel(tls *libc.TLS, info int32) int32 { /* cpu.c:106:12: */ - var model uint32_t = (uint32_t(((info & 0xf0000) >> 12) | ((info >> 4) & 0xf))) - var family uint32_t = (uint32_t((info >> 8) & 0xf)) + var model uint32_t = uint32_t(info&0xf0000>>12 | info>>4&0xf) + var family uint32_t = uint32_t(info >> 8 & 0xf) if family == uint32_t(0x06) { var i size_t - for i = uint64(0); i < (uint64(unsafe.Sizeof(kSlowModels)) / uint64(unsafe.Sizeof(uint8_t(0)))); i++ { + for i = uint64(0); i < uint64(unsafe.Sizeof(kSlowModels))/uint64(unsafe.Sizeof(uint8_t(0))); i++ { if model == uint32_t(kSlowModels[i]) { return 1 } @@ -15387,45 +15127,45 @@ func x86CPUInfo(tls *libc.TLS, feature CPUFeature) int32 { /* cpu.c:125:12: */ var is_intel int32 = 0 // get the highest feature value cpuid supports - GetCPUInfo(tls, (bp) /* &cpu_info[0] */, 0) - max_cpuid_value = *(*int32)(unsafe.Pointer((bp) /* &cpu_info[0] */)) + GetCPUInfo(tls, bp, 0) + max_cpuid_value = *(*int32)(unsafe.Pointer(bp)) if max_cpuid_value < 1 { return 0 } else { - var VENDOR_ID_INTEL_EBX int32 = 0x756e6547 // uneG - var VENDOR_ID_INTEL_EDX int32 = 0x49656e69 // Ieni - var VENDOR_ID_INTEL_ECX int32 = 0x6c65746e // letn - is_intel = (libc.Bool32(((*(*int32)(unsafe.Pointer((bp) /* &cpu_info[0] */ + 1*4)) == VENDOR_ID_INTEL_EBX) && (*(*int32)(unsafe.Pointer((bp) /* &cpu_info[0] */ + 2*4)) == VENDOR_ID_INTEL_ECX)) && (*(*int32)(unsafe.Pointer((bp) /* &cpu_info[0] */ + 3*4)) == VENDOR_ID_INTEL_EDX))) // genuine Intel? + var VENDOR_ID_INTEL_EBX int32 = 0x756e6547 // uneG + var VENDOR_ID_INTEL_EDX int32 = 0x49656e69 // Ieni + var VENDOR_ID_INTEL_ECX int32 = 0x6c65746e // letn + is_intel = libc.Bool32(*(*int32)(unsafe.Pointer(bp + 1*4)) == VENDOR_ID_INTEL_EBX && *(*int32)(unsafe.Pointer(bp + 2*4)) == VENDOR_ID_INTEL_ECX && *(*int32)(unsafe.Pointer(bp + 3*4)) == VENDOR_ID_INTEL_EDX) // genuine Intel? } - GetCPUInfo(tls, (bp) /* &cpu_info[0] */, 1) + GetCPUInfo(tls, bp, 1) if feature == kSSE2 { - return libc.BoolInt32(!(!((*(*int32)(unsafe.Pointer((bp) /* &cpu_info[0] */ + 3*4)) & (int32(1) << 26)) != 0))) + return libc.BoolInt32(!!(*(*int32)(unsafe.Pointer(bp + 3*4))&(int32(1)<<26) != 0)) } if feature == kSSE3 { - return libc.BoolInt32(!(!((*(*int32)(unsafe.Pointer((bp) /* &cpu_info[0] */ + 2*4)) & (int32(1) << 0)) != 0))) + return libc.BoolInt32(!!(*(*int32)(unsafe.Pointer(bp + 2*4))&(int32(1)<<0) != 0)) } if feature == kSlowSSSE3 { - if (is_intel != 0) && ((*(*int32)(unsafe.Pointer((bp) /* &cpu_info[0] */ + 2*4)) & (int32(1) << 9)) != 0) { // SSSE3? - return CheckSlowModel(tls, *(*int32)(unsafe.Pointer((bp) /* &cpu_info[0] */))) + if is_intel != 0 && *(*int32)(unsafe.Pointer(bp + 2*4))&(int32(1)<<9) != 0 { // SSSE3? + return CheckSlowModel(tls, *(*int32)(unsafe.Pointer(bp))) } return 0 } if feature == kSSE4_1 { - return libc.BoolInt32(!(!((*(*int32)(unsafe.Pointer((bp) /* &cpu_info[0] */ + 2*4)) & (int32(1) << 19)) != 0))) + return libc.BoolInt32(!!(*(*int32)(unsafe.Pointer(bp + 2*4))&(int32(1)<<19) != 0)) } if feature == kAVX { // bits 27 (OSXSAVE) & 28 (256-bit AVX) - if (*(*int32)(unsafe.Pointer((bp) /* &cpu_info[0] */ + 2*4)) & 0x18000000) == 0x18000000 { + if *(*int32)(unsafe.Pointer(bp + 2*4))&0x18000000 == 0x18000000 { // XMM state and YMM state enabled by the OS. - return (libc.Bool32((xgetbv(tls) & uint64(0x6)) == uint64(0x6))) + return libc.Bool32(xgetbv(tls)&uint64(0x6) == uint64(0x6)) } } if feature == kAVX2 { - if (x86CPUInfo(tls, kAVX) != 0) && (max_cpuid_value >= 7) { - GetCPUInfo(tls, (bp) /* &cpu_info[0] */, 7) - return libc.BoolInt32(!(!((*(*int32)(unsafe.Pointer((bp) /* &cpu_info[0] */ + 1*4)) & (int32(1) << 5)) != 0))) + if x86CPUInfo(tls, kAVX) != 0 && max_cpuid_value >= 7 { + GetCPUInfo(tls, bp, 7) + return libc.BoolInt32(!!(*(*int32)(unsafe.Pointer(bp + 1*4))&(int32(1)<<5) != 0)) } } return 0 @@ -15438,7 +15178,7 @@ var VP8GetCPUInfo VP8CPUInfo = 0 /* cpu.c:176:12 */ //------------------------------------------------------------------------------ func clip_8b(tls *libc.TLS, v int32) uint8_t { /* dec.c:22:28: */ - if !((v & libc.CplInt32(0xff)) != 0) { + if !(v&libc.CplInt32(0xff) != 0) { return uint8(v) } if v < 0 { @@ -15458,17 +15198,17 @@ func TransformOne_C(tls *libc.TLS, in uintptr, dst uintptr) { /* dec.c:44:13: */ var tmp uintptr var i int32 - tmp = (bp) /* &C[0] */ + tmp = bp /* &C[0] */ for i = 0; i < 4; i++ { // vertical pass - var a int32 = (int32(*(*int16_t)(unsafe.Pointer(in))) + int32(*(*int16_t)(unsafe.Pointer(in + 8*2)))) // [-4096, 4094] - var b int32 = (int32(*(*int16_t)(unsafe.Pointer(in))) - int32(*(*int16_t)(unsafe.Pointer(in + 8*2)))) // [-4095, 4095] - var c int32 = ((((int32(*(*int16_t)(unsafe.Pointer(in + 4*2)))) * 35468) >> 16) - ((((int32(*(*int16_t)(unsafe.Pointer(in + 12*2)))) * 20091) >> 16) + (int32(*(*int16_t)(unsafe.Pointer(in + 12*2)))))) // [-3783, 3783] - var d int32 = (((((int32(*(*int16_t)(unsafe.Pointer(in + 4*2)))) * 20091) >> 16) + (int32(*(*int16_t)(unsafe.Pointer(in + 4*2))))) + (((int32(*(*int16_t)(unsafe.Pointer(in + 12*2)))) * 35468) >> 16)) // [-3785, 3781] - *(*int32)(unsafe.Pointer(tmp)) = (a + d) // [-7881, 7875] - *(*int32)(unsafe.Pointer(tmp + 1*4)) = (b + c) // [-7878, 7878] - *(*int32)(unsafe.Pointer(tmp + 2*4)) = (b - c) // [-7878, 7878] - *(*int32)(unsafe.Pointer(tmp + 3*4)) = (a - d) // [-7877, 7879] - tmp += 4 * (uintptr(4)) + var a int32 = int32(*(*int16_t)(unsafe.Pointer(in))) + int32(*(*int16_t)(unsafe.Pointer(in + 8*2))) // [-4096, 4094] + var b int32 = int32(*(*int16_t)(unsafe.Pointer(in))) - int32(*(*int16_t)(unsafe.Pointer(in + 8*2))) // [-4095, 4095] + var c int32 = int32(*(*int16_t)(unsafe.Pointer(in + 4*2)))*35468>>16 - (int32(*(*int16_t)(unsafe.Pointer(in + 12*2)))*20091>>16 + int32(*(*int16_t)(unsafe.Pointer(in + 12*2)))) // [-3783, 3783] + var d int32 = int32(*(*int16_t)(unsafe.Pointer(in + 4*2)))*20091>>16 + int32(*(*int16_t)(unsafe.Pointer(in + 4*2))) + int32(*(*int16_t)(unsafe.Pointer(in + 12*2)))*35468>>16 // [-3785, 3781] + *(*int32)(unsafe.Pointer(tmp)) = a + d // [-7881, 7875] + *(*int32)(unsafe.Pointer(tmp + 1*4)) = b + c // [-7878, 7878] + *(*int32)(unsafe.Pointer(tmp + 2*4)) = b - c // [-7878, 7878] + *(*int32)(unsafe.Pointer(tmp + 3*4)) = a - d // [-7877, 7879] + tmp += 4 * uintptr(4) in += 2 } // Each pass is expanding the dynamic range by ~3.85 (upper bound). @@ -15478,17 +15218,17 @@ func TransformOne_C(tls *libc.TLS, in uintptr, dst uintptr) { /* dec.c:44:13: */ // in the [0, 255] range. // In the worst case scenario, the input to clip_8b() can be as large as // [-60713, 60968]. - tmp = (bp) /* &C[0] */ + tmp = bp /* &C[0] */ for i = 0; i < 4; i++ { // horizontal pass - var dc int32 = (*(*int32)(unsafe.Pointer(tmp)) + 4) - var a int32 = (dc + *(*int32)(unsafe.Pointer(tmp + 8*4))) - var b int32 = (dc - *(*int32)(unsafe.Pointer(tmp + 8*4))) - var c int32 = ((((*(*int32)(unsafe.Pointer(tmp + 4*4))) * 35468) >> 16) - ((((*(*int32)(unsafe.Pointer(tmp + 12*4))) * 20091) >> 16) + (*(*int32)(unsafe.Pointer(tmp + 12*4))))) - var d int32 = (((((*(*int32)(unsafe.Pointer(tmp + 4*4))) * 20091) >> 16) + (*(*int32)(unsafe.Pointer(tmp + 4*4)))) + (((*(*int32)(unsafe.Pointer(tmp + 12*4))) * 35468) >> 16)) - *(*uint8_t)(unsafe.Pointer(dst)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst))) + ((a + d) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 1))) + ((b + c) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 2))) + ((b - c) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 3))) + ((a - d) >> 3))) + var dc int32 = *(*int32)(unsafe.Pointer(tmp)) + 4 + var a int32 = dc + *(*int32)(unsafe.Pointer(tmp + 8*4)) + var b int32 = dc - *(*int32)(unsafe.Pointer(tmp + 8*4)) + var c int32 = *(*int32)(unsafe.Pointer(tmp + 4*4))*35468>>16 - (*(*int32)(unsafe.Pointer(tmp + 12*4))*20091>>16 + *(*int32)(unsafe.Pointer(tmp + 12*4))) + var d int32 = *(*int32)(unsafe.Pointer(tmp + 4*4))*20091>>16 + *(*int32)(unsafe.Pointer(tmp + 4*4)) + *(*int32)(unsafe.Pointer(tmp + 12*4))*35468>>16 + *(*uint8_t)(unsafe.Pointer(dst)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst)))+(a+d)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 1)))+(b+c)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 2)))+(b-c)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 3)))+(a-d)>>3) tmp += 4 dst += uintptr(32) } @@ -15496,64 +15236,64 @@ func TransformOne_C(tls *libc.TLS, in uintptr, dst uintptr) { /* dec.c:44:13: */ // Simplified transform when only in[0], in[1] and in[4] are non-zero func TransformAC3_C(tls *libc.TLS, in uintptr, dst uintptr) { /* dec.c:84:13: */ - var a int32 = (int32(*(*int16_t)(unsafe.Pointer(in))) + 4) - var c4 int32 = (((int32(*(*int16_t)(unsafe.Pointer(in + 4*2)))) * 35468) >> 16) - var d4 int32 = ((((int32(*(*int16_t)(unsafe.Pointer(in + 4*2)))) * 20091) >> 16) + (int32(*(*int16_t)(unsafe.Pointer(in + 4*2))))) - var c1 int32 = (((int32(*(*int16_t)(unsafe.Pointer(in + 1*2)))) * 35468) >> 16) - var d1 int32 = ((((int32(*(*int16_t)(unsafe.Pointer(in + 1*2)))) * 20091) >> 16) + (int32(*(*int16_t)(unsafe.Pointer(in + 1*2))))) - for ok := true; ok; ok = (0 != 0) { - var DC int32 = (a + d4) - *(*uint8_t)(unsafe.Pointer(dst)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst))) + ((DC + (d1)) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 1))) + ((DC + (c1)) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 2))) + ((DC - (c1)) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 3))) + ((DC - (d1)) >> 3))) - } - for ok1 := true; ok1; ok1 = (0 != 0) { - var DC int32 = (a + c4) - *(*uint8_t)(unsafe.Pointer(dst + 32)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 32))) + ((DC + (d1)) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 33)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 33))) + ((DC + (c1)) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 34)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 34))) + ((DC - (c1)) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 35)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 35))) + ((DC - (d1)) >> 3))) - } - for ok2 := true; ok2; ok2 = (0 != 0) { - var DC int32 = (a - c4) - *(*uint8_t)(unsafe.Pointer(dst + 64)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 64))) + ((DC + (d1)) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 65)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 65))) + ((DC + (c1)) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 66)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 66))) + ((DC - (c1)) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 67)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 67))) + ((DC - (d1)) >> 3))) - } - for ok3 := true; ok3; ok3 = (0 != 0) { - var DC int32 = (a - d4) - *(*uint8_t)(unsafe.Pointer(dst + 96)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 96))) + ((DC + (d1)) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 97)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 97))) + ((DC + (c1)) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 98)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 98))) + ((DC - (c1)) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + 99)) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + 99))) + ((DC - (d1)) >> 3))) + var a int32 = int32(*(*int16_t)(unsafe.Pointer(in))) + 4 + var c4 int32 = int32(*(*int16_t)(unsafe.Pointer(in + 4*2))) * 35468 >> 16 + var d4 int32 = int32(*(*int16_t)(unsafe.Pointer(in + 4*2)))*20091>>16 + int32(*(*int16_t)(unsafe.Pointer(in + 4*2))) + var c1 int32 = int32(*(*int16_t)(unsafe.Pointer(in + 1*2))) * 35468 >> 16 + var d1 int32 = int32(*(*int16_t)(unsafe.Pointer(in + 1*2)))*20091>>16 + int32(*(*int16_t)(unsafe.Pointer(in + 1*2))) + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { + var DC int32 = a + d4 + *(*uint8_t)(unsafe.Pointer(dst)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst)))+(DC+d1)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 1)))+(DC+c1)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 2)))+(DC-c1)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 3)))+(DC-d1)>>3) + } + for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 { + var DC int32 = a + c4 + *(*uint8_t)(unsafe.Pointer(dst + 32)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 32)))+(DC+d1)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 33)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 33)))+(DC+c1)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 34)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 34)))+(DC-c1)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 35)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 35)))+(DC-d1)>>3) + } + for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 { + var DC int32 = a - c4 + *(*uint8_t)(unsafe.Pointer(dst + 64)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 64)))+(DC+d1)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 65)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 65)))+(DC+c1)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 66)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 66)))+(DC-c1)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 67)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 67)))+(DC-d1)>>3) + } + for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 { + var DC int32 = a - d4 + *(*uint8_t)(unsafe.Pointer(dst + 96)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 96)))+(DC+d1)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 97)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 97)))+(DC+c1)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 98)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 98)))+(DC-c1)>>3) + *(*uint8_t)(unsafe.Pointer(dst + 99)) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + 99)))+(DC-d1)>>3) } } func TransformTwo_C(tls *libc.TLS, in uintptr, dst uintptr, do_two int32) { /* dec.c:99:13: */ TransformOne_C(tls, in, dst) if do_two != 0 { - TransformOne_C(tls, (in + uintptr(16)*2), (dst + uintptr(4))) + TransformOne_C(tls, in+uintptr(16)*2, dst+uintptr(4)) } } func TransformUV_C(tls *libc.TLS, in uintptr, dst uintptr) { /* dec.c:107:13: */ (*struct { f func(*libc.TLS, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8Transform})).f(tls, (in + uintptr((0*16))*2), dst, 1) + })(unsafe.Pointer(&struct{ uintptr }{VP8Transform})).f(tls, in+uintptr(0*16)*2, dst, 1) (*struct { f func(*libc.TLS, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8Transform})).f(tls, (in + uintptr((2*16))*2), (dst + uintptr((4 * 32))), 1) + })(unsafe.Pointer(&struct{ uintptr }{VP8Transform})).f(tls, in+uintptr(2*16)*2, dst+uintptr(4*32), 1) } func TransformDC_C(tls *libc.TLS, in uintptr, dst uintptr) { /* dec.c:113:13: */ - var DC int32 = (int32(*(*int16_t)(unsafe.Pointer(in))) + 4) + var DC int32 = int32(*(*int16_t)(unsafe.Pointer(in))) + 4 var i int32 var j int32 for j = 0; j < 4; j++ { for i = 0; i < 4; i++ { - *(*uint8_t)(unsafe.Pointer(dst + uintptr(((i) + ((j) * 32))))) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(((i) + ((j) * 32)))))) + ((DC) >> 3))) + *(*uint8_t)(unsafe.Pointer(dst + uintptr(i+j*32))) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(i+j*32))))+DC>>3) } } } @@ -15562,22 +15302,22 @@ func TransformDCUV_C(tls *libc.TLS, in uintptr, dst uintptr) { /* dec.c:124:13: if *(*int16_t)(unsafe.Pointer(in)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8TransformDC})).f(tls, (in + uintptr((0*16))*2), dst) + })(unsafe.Pointer(&struct{ uintptr }{VP8TransformDC})).f(tls, in+uintptr(0*16)*2, dst) } if *(*int16_t)(unsafe.Pointer(in + 16*2)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8TransformDC})).f(tls, (in + uintptr((1*16))*2), (dst + uintptr(4))) + })(unsafe.Pointer(&struct{ uintptr }{VP8TransformDC})).f(tls, in+uintptr(1*16)*2, dst+uintptr(4)) } if *(*int16_t)(unsafe.Pointer(in + 32*2)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8TransformDC})).f(tls, (in + uintptr((2*16))*2), (dst + uintptr((4 * 32)))) + })(unsafe.Pointer(&struct{ uintptr }{VP8TransformDC})).f(tls, in+uintptr(2*16)*2, dst+uintptr(4*32)) } if *(*int16_t)(unsafe.Pointer(in + 48*2)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8TransformDC})).f(tls, (in + uintptr((3*16))*2), ((dst + uintptr((4 * 32))) + uintptr(4))) + })(unsafe.Pointer(&struct{ uintptr }{VP8TransformDC})).f(tls, in+uintptr(3*16)*2, dst+uintptr(4*32)+uintptr(4)) } } @@ -15592,26 +15332,26 @@ func TransformWHT_C(tls *libc.TLS, in uintptr, out uintptr) { /* dec.c:137:13: * var i int32 for i = 0; i < 4; i++ { - var a0 int32 = (int32(*(*int16_t)(unsafe.Pointer(in + uintptr((0+i))*2))) + int32(*(*int16_t)(unsafe.Pointer(in + uintptr((12+i))*2)))) - var a1 int32 = (int32(*(*int16_t)(unsafe.Pointer(in + uintptr((4+i))*2))) + int32(*(*int16_t)(unsafe.Pointer(in + uintptr((8+i))*2)))) - var a2 int32 = (int32(*(*int16_t)(unsafe.Pointer(in + uintptr((4+i))*2))) - int32(*(*int16_t)(unsafe.Pointer(in + uintptr((8+i))*2)))) - var a3 int32 = (int32(*(*int16_t)(unsafe.Pointer(in + uintptr((0+i))*2))) - int32(*(*int16_t)(unsafe.Pointer(in + uintptr((12+i))*2)))) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((0+i))*4)) = (a0 + a1) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((8+i))*4)) = (a0 - a1) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((4+i))*4)) = (a3 + a2) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((12+i))*4)) = (a3 - a2) + var a0 int32 = int32(*(*int16_t)(unsafe.Pointer(in + uintptr(0+i)*2))) + int32(*(*int16_t)(unsafe.Pointer(in + uintptr(12+i)*2))) + var a1 int32 = int32(*(*int16_t)(unsafe.Pointer(in + uintptr(4+i)*2))) + int32(*(*int16_t)(unsafe.Pointer(in + uintptr(8+i)*2))) + var a2 int32 = int32(*(*int16_t)(unsafe.Pointer(in + uintptr(4+i)*2))) - int32(*(*int16_t)(unsafe.Pointer(in + uintptr(8+i)*2))) + var a3 int32 = int32(*(*int16_t)(unsafe.Pointer(in + uintptr(0+i)*2))) - int32(*(*int16_t)(unsafe.Pointer(in + uintptr(12+i)*2))) + *(*int32)(unsafe.Pointer(bp + uintptr(0+i)*4)) = a0 + a1 + *(*int32)(unsafe.Pointer(bp + uintptr(8+i)*4)) = a0 - a1 + *(*int32)(unsafe.Pointer(bp + uintptr(4+i)*4)) = a3 + a2 + *(*int32)(unsafe.Pointer(bp + uintptr(12+i)*4)) = a3 - a2 } for i = 0; i < 4; i++ { - var dc int32 = (*(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((0+(i*4)))*4)) + 3) // w/ rounder - var a0 int32 = (dc + *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((3+(i*4)))*4))) - var a1 int32 = (*(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((1+(i*4)))*4)) + *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((2+(i*4)))*4))) - var a2 int32 = (*(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((1+(i*4)))*4)) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((2+(i*4)))*4))) - var a3 int32 = (dc - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((3+(i*4)))*4))) - *(*int16_t)(unsafe.Pointer(out)) = (int16_t((a0 + a1) >> 3)) - *(*int16_t)(unsafe.Pointer(out + 16*2)) = (int16_t((a3 + a2) >> 3)) - *(*int16_t)(unsafe.Pointer(out + 32*2)) = (int16_t((a0 - a1) >> 3)) - *(*int16_t)(unsafe.Pointer(out + 48*2)) = (int16_t((a3 - a2) >> 3)) - out += 2 * (uintptr(64)) + var dc int32 = *(*int32)(unsafe.Pointer(bp + uintptr(0+i*4)*4)) + 3 // w/ rounder + var a0 int32 = dc + *(*int32)(unsafe.Pointer(bp + uintptr(3+i*4)*4)) + var a1 int32 = *(*int32)(unsafe.Pointer(bp + uintptr(1+i*4)*4)) + *(*int32)(unsafe.Pointer(bp + uintptr(2+i*4)*4)) + var a2 int32 = *(*int32)(unsafe.Pointer(bp + uintptr(1+i*4)*4)) - *(*int32)(unsafe.Pointer(bp + uintptr(2+i*4)*4)) + var a3 int32 = dc - *(*int32)(unsafe.Pointer(bp + uintptr(3+i*4)*4)) + *(*int16_t)(unsafe.Pointer(out)) = int16_t((a0 + a1) >> 3) + *(*int16_t)(unsafe.Pointer(out + 16*2)) = int16_t((a3 + a2) >> 3) + *(*int16_t)(unsafe.Pointer(out + 32*2)) = int16_t((a0 - a1) >> 3) + *(*int16_t)(unsafe.Pointer(out + 48*2)) = int16_t((a3 - a2) >> 3) + out += 2 * uintptr(64) } } @@ -15621,11 +15361,11 @@ var VP8TransformWHT uintptr /* dec.c:165:6: */ // Intra predictions func TrueMotion(tls *libc.TLS, dst uintptr, size int32) { /* dec.c:173:25: */ - var top uintptr = (dst - uintptr(32)) - var clip0 uintptr = (VP8kclip1 - uintptr(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-1))))) + var top uintptr = dst - uintptr(32) + var clip0 uintptr = VP8kclip1 - uintptr(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-1)))) var y int32 for y = 0; y < size; y++ { - var clip uintptr = (clip0 + uintptr(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(-1))))) + var clip uintptr = clip0 + uintptr(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(-1)))) var x int32 for x = 0; x < size; x++ { *(*uint8_t)(unsafe.Pointer(dst + uintptr(x))) = *(*uint8_t)(unsafe.Pointer(clip + uintptr(*(*uint8_t)(unsafe.Pointer(top + uintptr(x)))))) @@ -15652,7 +15392,7 @@ func TM16_C(tls *libc.TLS, dst uintptr) { /* dec.c:188:13: */ func VE16_C(tls *libc.TLS, dst uintptr) { /* dec.c:193:13: */ // vertical var j int32 for j = 0; j < 16; j++ { - libc.Xmemcpy(tls, (dst + uintptr((j * 32))), (dst - uintptr(32)), uint64(16)) + libc.Xmemcpy(tls, dst+uintptr(j*32), dst-uintptr(32), uint64(16)) } } @@ -15667,7 +15407,7 @@ func HE16_C(tls *libc.TLS, dst uintptr) { /* dec.c:200:13: */ // horizontal func Put16(tls *libc.TLS, v int32, dst uintptr) { /* dec.c:208:25: */ var j int32 for j = 0; j < 16; j++ { - libc.Xmemset(tls, (dst + uintptr((j * 32))), v, uint64(16)) + libc.Xmemset(tls, dst+uintptr(j*32), v, uint64(16)) } } @@ -15675,27 +15415,27 @@ func DC16_C(tls *libc.TLS, dst uintptr) { /* dec.c:215:13: */ // DC var DC int32 = 16 var j int32 for j = 0; j < 16; j++ { - DC = DC + (int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr((-1 + (j * 32)))))) + int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr((j - 32)))))) + DC = DC + (int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(-1+j*32)))) + int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(j-32))))) } - Put16(tls, (DC >> 5), dst) + Put16(tls, DC>>5, dst) } func DC16NoTop_C(tls *libc.TLS, dst uintptr) { /* dec.c:224:13: */ // DC with top samples not available var DC int32 = 8 var j int32 for j = 0; j < 16; j++ { - DC = DC + (int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr((-1 + (j * 32))))))) + DC = DC + int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(-1+j*32)))) } - Put16(tls, (DC >> 4), dst) + Put16(tls, DC>>4, dst) } func DC16NoLeft_C(tls *libc.TLS, dst uintptr) { /* dec.c:233:13: */ // DC with left samples not available var DC int32 = 8 var i int32 for i = 0; i < 16; i++ { - DC = DC + (int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr((i - 32)))))) + DC = DC + int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(i-32)))) } - Put16(tls, (DC >> 4), dst) + Put16(tls, DC>>4, dst) } func DC16NoTopLeft_C(tls *libc.TLS, dst uintptr) { /* dec.c:242:13: */ // DC with no top and left samples @@ -15711,159 +15451,159 @@ func VE4_C(tls *libc.TLS, dst uintptr) { /* dec.c:256:13: */ bp := tls.Alloc(4) defer tls.Free(4) // vertical - var top uintptr = (dst - uintptr(32)) + var top uintptr = dst - uintptr(32) *(*[4]uint8_t)(unsafe.Pointer(bp /* vals */)) = [4]uint8_t{ - (uint8_t(((((int32(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-1))))) + (2 * (int32(*(*uint8_t)(unsafe.Pointer(top)))))) + (int32(*(*uint8_t)(unsafe.Pointer(top + 1))))) + 2) >> 2)), - (uint8_t(((((int32(*(*uint8_t)(unsafe.Pointer(top)))) + (2 * (int32(*(*uint8_t)(unsafe.Pointer(top + 1)))))) + (int32(*(*uint8_t)(unsafe.Pointer(top + 2))))) + 2) >> 2)), - (uint8_t(((((int32(*(*uint8_t)(unsafe.Pointer(top + 1)))) + (2 * (int32(*(*uint8_t)(unsafe.Pointer(top + 2)))))) + (int32(*(*uint8_t)(unsafe.Pointer(top + 3))))) + 2) >> 2)), - (uint8_t(((((int32(*(*uint8_t)(unsafe.Pointer(top + 2)))) + (2 * (int32(*(*uint8_t)(unsafe.Pointer(top + 3)))))) + (int32(*(*uint8_t)(unsafe.Pointer(top + 4))))) + 2) >> 2)), + uint8_t((int32(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-1)))) + 2*int32(*(*uint8_t)(unsafe.Pointer(top))) + int32(*(*uint8_t)(unsafe.Pointer(top + 1))) + 2) >> 2), + uint8_t((int32(*(*uint8_t)(unsafe.Pointer(top))) + 2*int32(*(*uint8_t)(unsafe.Pointer(top + 1))) + int32(*(*uint8_t)(unsafe.Pointer(top + 2))) + 2) >> 2), + uint8_t((int32(*(*uint8_t)(unsafe.Pointer(top + 1))) + 2*int32(*(*uint8_t)(unsafe.Pointer(top + 2))) + int32(*(*uint8_t)(unsafe.Pointer(top + 3))) + 2) >> 2), + uint8_t((int32(*(*uint8_t)(unsafe.Pointer(top + 2))) + 2*int32(*(*uint8_t)(unsafe.Pointer(top + 3))) + int32(*(*uint8_t)(unsafe.Pointer(top + 4))) + 2) >> 2), } var i int32 for i = 0; i < 4; i++ { - libc.Xmemcpy(tls, (dst + uintptr((i * 32))), (bp) /* &vals[0] */, uint64(unsafe.Sizeof([4]uint8_t{}))) + libc.Xmemcpy(tls, dst+uintptr(i*32), bp, uint64(unsafe.Sizeof([4]uint8_t{}))) } } func HE4_C(tls *libc.TLS, dst uintptr) { /* dec.c:271:13: */ // horizontal - var A int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((-1 - 32))))) + var A int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(-1-32)))) var B int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(-1)))) var C int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 31))) var D int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 63))) var E int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 95))) - WebPUint32ToMem(tls, (dst + uintptr((0 * 32))), (0x01010101 * (uint32((uint8_t(((((A) + (2 * (B))) + (C)) + 2) >> 2)))))) - WebPUint32ToMem(tls, (dst + uintptr((1 * 32))), (0x01010101 * (uint32((uint8_t(((((B) + (2 * (C))) + (D)) + 2) >> 2)))))) - WebPUint32ToMem(tls, (dst + uintptr((2 * 32))), (0x01010101 * (uint32((uint8_t(((((C) + (2 * (D))) + (E)) + 2) >> 2)))))) - WebPUint32ToMem(tls, (dst + uintptr((3 * 32))), (0x01010101 * (uint32((uint8_t(((((D) + (2 * (E))) + (E)) + 2) >> 2)))))) + WebPUint32ToMem(tls, dst+uintptr(0*32), 0x01010101*uint32(uint8_t((A+2*B+C+2)>>2))) + WebPUint32ToMem(tls, dst+uintptr(1*32), 0x01010101*uint32(uint8_t((B+2*C+D+2)>>2))) + WebPUint32ToMem(tls, dst+uintptr(2*32), 0x01010101*uint32(uint8_t((C+2*D+E+2)>>2))) + WebPUint32ToMem(tls, dst+uintptr(3*32), 0x01010101*uint32(uint8_t((D+2*E+E+2)>>2))) } func DC4_C(tls *libc.TLS, dst uintptr) { /* dec.c:284:13: */ // DC var dc uint32_t = uint32_t(4) var i int32 for i = 0; i < 4; i++ { - dc = dc + (uint32_t(int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr((i - 32))))) + int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr((-1 + (i * 32)))))))) + dc = dc + uint32_t(int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(i-32))))+int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(-1+i*32))))) } dc >>= 3 for i = 0; i < 4; i++ { - libc.Xmemset(tls, (dst + uintptr((i * 32))), int32(dc), uint64(4)) + libc.Xmemset(tls, dst+uintptr(i*32), int32(dc), uint64(4)) } } func RD4_C(tls *libc.TLS, dst uintptr) { /* dec.c:292:13: */ // Down-right - var I int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((-1 + (0 * 32)))))) + var I int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(-1+0*32)))) var J int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 31))) var K int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 63))) var L int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 95))) - var X int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((-1 - 32))))) - var A int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((0 - 32))))) - var B int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((1 - 32))))) - var C int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((2 - 32))))) - var D int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((3 - 32))))) - *(*uint8_t)(unsafe.Pointer(dst + 96)) = (uint8_t(((((J) + (2 * (K))) + (L)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 97)) = libc.AssignPtrUint8((dst + 64), (uint8_t(((((I) + (2 * (J))) + (K)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 98)) = libc.AssignPtrUint8((dst + 65), libc.AssignPtrUint8((dst+32), (uint8_t(((((X)+(2*(I)))+(J))+2)>>2)))) - *(*uint8_t)(unsafe.Pointer(dst + 99)) = libc.AssignPtrUint8((dst + 66), libc.AssignPtrUint8((dst+33), libc.AssignPtrUint8((dst), (uint8_t(((((A)+(2*(X)))+(I))+2)>>2))))) - *(*uint8_t)(unsafe.Pointer(dst + 67)) = libc.AssignPtrUint8((dst + 34), libc.AssignPtrUint8((dst+1), (uint8_t(((((B)+(2*(A)))+(X))+2)>>2)))) - *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8((dst + 2), (uint8_t(((((C) + (2 * (B))) + (A)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = (uint8_t(((((D) + (2 * (C))) + (B)) + 2) >> 2)) + var X int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(-1-32)))) + var A int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(0-32)))) + var B int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(1-32)))) + var C int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(2-32)))) + var D int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(3-32)))) + *(*uint8_t)(unsafe.Pointer(dst + 96)) = uint8_t((J + 2*K + L + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 97)) = libc.AssignPtrUint8(dst+64, uint8_t((I+2*J+K+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 98)) = libc.AssignPtrUint8(dst+65, libc.AssignPtrUint8(dst+32, uint8_t((X+2*I+J+2)>>2))) + *(*uint8_t)(unsafe.Pointer(dst + 99)) = libc.AssignPtrUint8(dst+66, libc.AssignPtrUint8(dst+33, libc.AssignPtrUint8(dst, uint8_t((A+2*X+I+2)>>2)))) + *(*uint8_t)(unsafe.Pointer(dst + 67)) = libc.AssignPtrUint8(dst+34, libc.AssignPtrUint8(dst+1, uint8_t((B+2*A+X+2)>>2))) + *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8(dst+2, uint8_t((C+2*B+A+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = uint8_t((D + 2*C + B + 2) >> 2) } func LD4_C(tls *libc.TLS, dst uintptr) { /* dec.c:311:13: */ // Down-Left - var A int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((0 - 32))))) - var B int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((1 - 32))))) - var C int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((2 - 32))))) - var D int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((3 - 32))))) - var E int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((4 - 32))))) - var F int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((5 - 32))))) - var G int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((6 - 32))))) - var H int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((7 - 32))))) - *(*uint8_t)(unsafe.Pointer(dst)) = (uint8_t(((((A) + (2 * (B))) + (C)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8((dst + 32), (uint8_t(((((B) + (2 * (C))) + (D)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8((dst + 33), libc.AssignPtrUint8((dst+64), (uint8_t(((((C)+(2*(D)))+(E))+2)>>2)))) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = libc.AssignPtrUint8((dst + 34), libc.AssignPtrUint8((dst+65), libc.AssignPtrUint8((dst+96), (uint8_t(((((D)+(2*(E)))+(F))+2)>>2))))) - *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8((dst + 66), libc.AssignPtrUint8((dst+97), (uint8_t(((((E)+(2*(F)))+(G))+2)>>2)))) - *(*uint8_t)(unsafe.Pointer(dst + 67)) = libc.AssignPtrUint8((dst + 98), (uint8_t(((((F) + (2 * (G))) + (H)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 99)) = (uint8_t(((((G) + (2 * (H))) + (H)) + 2) >> 2)) + var A int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(0-32)))) + var B int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(1-32)))) + var C int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(2-32)))) + var D int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(3-32)))) + var E int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(4-32)))) + var F int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(5-32)))) + var G int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(6-32)))) + var H int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(7-32)))) + *(*uint8_t)(unsafe.Pointer(dst)) = uint8_t((A + 2*B + C + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8(dst+32, uint8_t((B+2*C+D+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8(dst+33, libc.AssignPtrUint8(dst+64, uint8_t((C+2*D+E+2)>>2))) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = libc.AssignPtrUint8(dst+34, libc.AssignPtrUint8(dst+65, libc.AssignPtrUint8(dst+96, uint8_t((D+2*E+F+2)>>2)))) + *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8(dst+66, libc.AssignPtrUint8(dst+97, uint8_t((E+2*F+G+2)>>2))) + *(*uint8_t)(unsafe.Pointer(dst + 67)) = libc.AssignPtrUint8(dst+98, uint8_t((F+2*G+H+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 99)) = uint8_t((G + 2*H + H + 2) >> 2) } func VR4_C(tls *libc.TLS, dst uintptr) { /* dec.c:330:13: */ // Vertical-Right - var I int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((-1 + (0 * 32)))))) + var I int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(-1+0*32)))) var J int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 31))) var K int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 63))) - var X int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((-1 - 32))))) - var A int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((0 - 32))))) - var B int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((1 - 32))))) - var C int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((2 - 32))))) - var D int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((3 - 32))))) - *(*uint8_t)(unsafe.Pointer(dst)) = libc.AssignPtrUint8((dst + 65), (uint8_t((((X) + (A)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8((dst + 66), (uint8_t((((A) + (B)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8((dst + 67), (uint8_t((((B) + (C)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = (uint8_t((((C) + (D)) + 1) >> 1)) - - *(*uint8_t)(unsafe.Pointer(dst + 96)) = (uint8_t(((((K) + (2 * (J))) + (I)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 64)) = (uint8_t(((((J) + (2 * (I))) + (X)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 32)) = libc.AssignPtrUint8((dst + 97), (uint8_t(((((I) + (2 * (X))) + (A)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 33)) = libc.AssignPtrUint8((dst + 98), (uint8_t(((((X) + (2 * (A))) + (B)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 34)) = libc.AssignPtrUint8((dst + 99), (uint8_t(((((A) + (2 * (B))) + (C)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 35)) = (uint8_t(((((B) + (2 * (C))) + (D)) + 2) >> 2)) + var X int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(-1-32)))) + var A int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(0-32)))) + var B int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(1-32)))) + var C int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(2-32)))) + var D int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(3-32)))) + *(*uint8_t)(unsafe.Pointer(dst)) = libc.AssignPtrUint8(dst+65, uint8_t((X+A+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8(dst+66, uint8_t((A+B+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8(dst+67, uint8_t((B+C+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = uint8_t((C + D + 1) >> 1) + + *(*uint8_t)(unsafe.Pointer(dst + 96)) = uint8_t((K + 2*J + I + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 64)) = uint8_t((J + 2*I + X + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 32)) = libc.AssignPtrUint8(dst+97, uint8_t((I+2*X+A+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 33)) = libc.AssignPtrUint8(dst+98, uint8_t((X+2*A+B+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 34)) = libc.AssignPtrUint8(dst+99, uint8_t((A+2*B+C+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 35)) = uint8_t((B + 2*C + D + 2) >> 2) } func VL4_C(tls *libc.TLS, dst uintptr) { /* dec.c:352:13: */ // Vertical-Left - var A int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((0 - 32))))) - var B int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((1 - 32))))) - var C int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((2 - 32))))) - var D int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((3 - 32))))) - var E int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((4 - 32))))) - var F int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((5 - 32))))) - var G int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((6 - 32))))) - var H int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((7 - 32))))) - *(*uint8_t)(unsafe.Pointer(dst)) = (uint8_t((((A) + (B)) + 1) >> 1)) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8((dst + 64), (uint8_t((((B) + (C)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8((dst + 65), (uint8_t((((C) + (D)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = libc.AssignPtrUint8((dst + 66), (uint8_t((((D) + (E)) + 1) >> 1))) - - *(*uint8_t)(unsafe.Pointer(dst + 32)) = (uint8_t(((((A) + (2 * (B))) + (C)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 33)) = libc.AssignPtrUint8((dst + 96), (uint8_t(((((B) + (2 * (C))) + (D)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 34)) = libc.AssignPtrUint8((dst + 97), (uint8_t(((((C) + (2 * (D))) + (E)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8((dst + 98), (uint8_t(((((D) + (2 * (E))) + (F)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 67)) = (uint8_t(((((E) + (2 * (F))) + (G)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 99)) = (uint8_t(((((F) + (2 * (G))) + (H)) + 2) >> 2)) + var A int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(0-32)))) + var B int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(1-32)))) + var C int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(2-32)))) + var D int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(3-32)))) + var E int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(4-32)))) + var F int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(5-32)))) + var G int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(6-32)))) + var H int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(7-32)))) + *(*uint8_t)(unsafe.Pointer(dst)) = uint8_t((A + B + 1) >> 1) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8(dst+64, uint8_t((B+C+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8(dst+65, uint8_t((C+D+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = libc.AssignPtrUint8(dst+66, uint8_t((D+E+1)>>1)) + + *(*uint8_t)(unsafe.Pointer(dst + 32)) = uint8_t((A + 2*B + C + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 33)) = libc.AssignPtrUint8(dst+96, uint8_t((B+2*C+D+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 34)) = libc.AssignPtrUint8(dst+97, uint8_t((C+2*D+E+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8(dst+98, uint8_t((D+2*E+F+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 67)) = uint8_t((E + 2*F + G + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 99)) = uint8_t((F + 2*G + H + 2) >> 2) } func HU4_C(tls *libc.TLS, dst uintptr) { /* dec.c:374:13: */ // Horizontal-Up - var I int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((-1 + (0 * 32)))))) + var I int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(-1+0*32)))) var J int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 31))) var K int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 63))) var L int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 95))) - *(*uint8_t)(unsafe.Pointer(dst)) = (uint8_t((((I) + (J)) + 1) >> 1)) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8((dst + 32), (uint8_t((((J) + (K)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 34)) = libc.AssignPtrUint8((dst + 64), (uint8_t((((K) + (L)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = (uint8_t(((((I) + (2 * (J))) + (K)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = libc.AssignPtrUint8((dst + 33), (uint8_t(((((J) + (2 * (K))) + (L)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8((dst + 65), (uint8_t(((((K) + (2 * (L))) + (L)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 67)) = libc.AssignPtrUint8((dst + 66), libc.AssignPtrUint8((dst+96), libc.AssignPtrUint8((dst+97), libc.AssignPtrUint8((dst+98), libc.AssignPtrUint8((dst+99), uint8_t(L)))))) + *(*uint8_t)(unsafe.Pointer(dst)) = uint8_t((I + J + 1) >> 1) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8(dst+32, uint8_t((J+K+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 34)) = libc.AssignPtrUint8(dst+64, uint8_t((K+L+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = uint8_t((I + 2*J + K + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = libc.AssignPtrUint8(dst+33, uint8_t((J+2*K+L+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8(dst+65, uint8_t((K+2*L+L+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 67)) = libc.AssignPtrUint8(dst+66, libc.AssignPtrUint8(dst+96, libc.AssignPtrUint8(dst+97, libc.AssignPtrUint8(dst+98, libc.AssignPtrUint8(dst+99, uint8_t(L)))))) } func HD4_C(tls *libc.TLS, dst uintptr) { /* dec.c:389:13: */ // Horizontal-Down - var I int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((-1 + (0 * 32)))))) + var I int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(-1+0*32)))) var J int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 31))) var K int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 63))) var L int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + 95))) - var X int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((-1 - 32))))) - var A int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((0 - 32))))) - var B int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((1 - 32))))) - var C int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32((2 - 32))))) + var X int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(-1-32)))) + var A int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(0-32)))) + var B int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(1-32)))) + var C int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + libc.UintptrFromInt32(2-32)))) - *(*uint8_t)(unsafe.Pointer(dst)) = libc.AssignPtrUint8((dst + 34), (uint8_t((((I) + (X)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 32)) = libc.AssignPtrUint8((dst + 66), (uint8_t((((J) + (I)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 64)) = libc.AssignPtrUint8((dst + 98), (uint8_t((((K) + (J)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 96)) = (uint8_t((((L) + (K)) + 1) >> 1)) + *(*uint8_t)(unsafe.Pointer(dst)) = libc.AssignPtrUint8(dst+34, uint8_t((I+X+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 32)) = libc.AssignPtrUint8(dst+66, uint8_t((J+I+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 64)) = libc.AssignPtrUint8(dst+98, uint8_t((K+J+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 96)) = uint8_t((L + K + 1) >> 1) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = (uint8_t(((((A) + (2 * (B))) + (C)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = (uint8_t(((((X) + (2 * (A))) + (B)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8((dst + 35), (uint8_t(((((I) + (2 * (X))) + (A)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 33)) = libc.AssignPtrUint8((dst + 67), (uint8_t(((((J) + (2 * (I))) + (X)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 65)) = libc.AssignPtrUint8((dst + 99), (uint8_t(((((K) + (2 * (J))) + (I)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 97)) = (uint8_t(((((L) + (2 * (K))) + (J)) + 2) >> 2)) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = uint8_t((A + 2*B + C + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = uint8_t((X + 2*A + B + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8(dst+35, uint8_t((I+2*X+A+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 33)) = libc.AssignPtrUint8(dst+67, uint8_t((J+2*I+X+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 65)) = libc.AssignPtrUint8(dst+99, uint8_t((K+2*J+I+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 97)) = uint8_t((L + 2*K + J + 2) >> 2) } var VP8PredLuma4 [10]VP8PredFunc /* dec.c:416:13: */ @@ -15874,7 +15614,7 @@ var VP8PredLuma4 [10]VP8PredFunc /* dec.c:416:13: */ func VE8uv_C(tls *libc.TLS, dst uintptr) { /* dec.c:422:13: */ // vertical var j int32 for j = 0; j < 8; j++ { - libc.Xmemcpy(tls, (dst + uintptr((j * 32))), (dst - uintptr(32)), uint64(8)) + libc.Xmemcpy(tls, dst+uintptr(j*32), dst-uintptr(32), uint64(8)) } } @@ -15890,7 +15630,7 @@ func HE8uv_C(tls *libc.TLS, dst uintptr) { /* dec.c:429:13: */ // horizontal func Put8x8uv(tls *libc.TLS, value uint8_t, dst uintptr) { /* dec.c:438:25: */ var j int32 for j = 0; j < 8; j++ { - libc.Xmemset(tls, (dst + uintptr((j * 32))), int32(value), uint64(8)) + libc.Xmemset(tls, dst+uintptr(j*32), int32(value), uint64(8)) } } @@ -15898,27 +15638,27 @@ func DC8uv_C(tls *libc.TLS, dst uintptr) { /* dec.c:445:13: */ // DC var dc0 int32 = 8 var i int32 for i = 0; i < 8; i++ { - dc0 = dc0 + (int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr((i - 32))))) + int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr((-1 + (i * 32))))))) + dc0 = dc0 + (int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(i-32)))) + int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(-1+i*32))))) } - Put8x8uv(tls, (uint8(dc0 >> 4)), dst) + Put8x8uv(tls, uint8(dc0>>4), dst) } func DC8uvNoLeft_C(tls *libc.TLS, dst uintptr) { /* dec.c:454:13: */ // DC with no left samples var dc0 int32 = 4 var i int32 for i = 0; i < 8; i++ { - dc0 = dc0 + (int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr((i - 32)))))) + dc0 = dc0 + int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(i-32)))) } - Put8x8uv(tls, (uint8(dc0 >> 3)), dst) + Put8x8uv(tls, uint8(dc0>>3), dst) } func DC8uvNoTop_C(tls *libc.TLS, dst uintptr) { /* dec.c:463:13: */ // DC with no top samples var dc0 int32 = 4 var i int32 for i = 0; i < 8; i++ { - dc0 = dc0 + (int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr((-1 + (i * 32))))))) + dc0 = dc0 + int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(-1+i*32)))) } - Put8x8uv(tls, (uint8(dc0 >> 3)), dst) + Put8x8uv(tls, uint8(dc0>>3), dst) } func DC8uvNoTopLeft_C(tls *libc.TLS, dst uintptr) { /* dec.c:472:13: */ // DC with nothing @@ -15932,83 +15672,83 @@ var VP8PredChroma8 [7]VP8PredFunc /* dec.c:477:13: */ // 4 pixels in, 2 pixels out func DoFilter2_C(tls *libc.TLS, p uintptr, step int32) { /* dec.c:484:25: */ - var p1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((-2 * step))))) + var p1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-2*step)))) var p0 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-step)))) var q0 int32 = int32(*(*uint8_t)(unsafe.Pointer(p))) var q1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(step)))) - var a int32 = ((3 * (q0 - p0)) + int32(*(*int8_t)(unsafe.Pointer(VP8ksclip1 + uintptr((p1 - q1)))))) // in [-893,892] - var a1 int32 = int32(*(*int8_t)(unsafe.Pointer(VP8ksclip2 + uintptr(((a + 4) >> 3))))) // in [-16,15] - var a2 int32 = int32(*(*int8_t)(unsafe.Pointer(VP8ksclip2 + uintptr(((a + 3) >> 3))))) - *(*uint8_t)(unsafe.Pointer(p + uintptr(-step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr((p0 + a2)))) - *(*uint8_t)(unsafe.Pointer(p)) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr((q0 - a1)))) + var a int32 = 3*(q0-p0) + int32(*(*int8_t)(unsafe.Pointer(VP8ksclip1 + uintptr(p1-q1)))) // in [-893,892] + var a1 int32 = int32(*(*int8_t)(unsafe.Pointer(VP8ksclip2 + uintptr((a+4)>>3)))) // in [-16,15] + var a2 int32 = int32(*(*int8_t)(unsafe.Pointer(VP8ksclip2 + uintptr((a+3)>>3)))) + *(*uint8_t)(unsafe.Pointer(p + uintptr(-step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr(p0+a2))) + *(*uint8_t)(unsafe.Pointer(p)) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr(q0-a1))) } // 4 pixels in, 4 pixels out func DoFilter4_C(tls *libc.TLS, p uintptr, step int32) { /* dec.c:494:25: */ - var p1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((-2 * step))))) + var p1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-2*step)))) var p0 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-step)))) var q0 int32 = int32(*(*uint8_t)(unsafe.Pointer(p))) var q1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(step)))) - var a int32 = (3 * (q0 - p0)) - var a1 int32 = int32(*(*int8_t)(unsafe.Pointer(VP8ksclip2 + uintptr(((a + 4) >> 3))))) - var a2 int32 = int32(*(*int8_t)(unsafe.Pointer(VP8ksclip2 + uintptr(((a + 3) >> 3))))) - var a3 int32 = ((a1 + 1) >> 1) - *(*uint8_t)(unsafe.Pointer(p + uintptr((-2 * step)))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr((p1 + a3)))) - *(*uint8_t)(unsafe.Pointer(p + uintptr(-step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr((p0 + a2)))) - *(*uint8_t)(unsafe.Pointer(p)) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr((q0 - a1)))) - *(*uint8_t)(unsafe.Pointer(p + uintptr(step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr((q1 - a3)))) + var a int32 = 3 * (q0 - p0) + var a1 int32 = int32(*(*int8_t)(unsafe.Pointer(VP8ksclip2 + uintptr((a+4)>>3)))) + var a2 int32 = int32(*(*int8_t)(unsafe.Pointer(VP8ksclip2 + uintptr((a+3)>>3)))) + var a3 int32 = (a1 + 1) >> 1 + *(*uint8_t)(unsafe.Pointer(p + uintptr(-2*step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr(p1+a3))) + *(*uint8_t)(unsafe.Pointer(p + uintptr(-step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr(p0+a2))) + *(*uint8_t)(unsafe.Pointer(p)) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr(q0-a1))) + *(*uint8_t)(unsafe.Pointer(p + uintptr(step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr(q1-a3))) } // 6 pixels in, 6 pixels out func DoFilter6_C(tls *libc.TLS, p uintptr, step int32) { /* dec.c:507:25: */ - var p2 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((-3 * step))))) - var p1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((-2 * step))))) + var p2 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-3*step)))) + var p1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-2*step)))) var p0 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-step)))) var q0 int32 = int32(*(*uint8_t)(unsafe.Pointer(p))) var q1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(step)))) - var q2 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((2 * step))))) - var a int32 = int32(*(*int8_t)(unsafe.Pointer(VP8ksclip1 + uintptr(((3 * (q0 - p0)) + int32(*(*int8_t)(unsafe.Pointer(VP8ksclip1 + uintptr((p1 - q1)))))))))) + var q2 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(2*step)))) + var a int32 = int32(*(*int8_t)(unsafe.Pointer(VP8ksclip1 + uintptr(3*(q0-p0)+int32(*(*int8_t)(unsafe.Pointer(VP8ksclip1 + uintptr(p1-q1)))))))) // a is in [-128,127], a1 in [-27,27], a2 in [-18,18] and a3 in [-9,9] - var a1 int32 = (((27 * a) + 63) >> 7) // eq. to ((3 * a + 7) * 9) >> 7 - var a2 int32 = (((18 * a) + 63) >> 7) // eq. to ((2 * a + 7) * 9) >> 7 - var a3 int32 = (((9 * a) + 63) >> 7) // eq. to ((1 * a + 7) * 9) >> 7 - *(*uint8_t)(unsafe.Pointer(p + uintptr((-3 * step)))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr((p2 + a3)))) - *(*uint8_t)(unsafe.Pointer(p + uintptr((-2 * step)))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr((p1 + a2)))) - *(*uint8_t)(unsafe.Pointer(p + uintptr(-step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr((p0 + a1)))) - *(*uint8_t)(unsafe.Pointer(p)) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr((q0 - a1)))) - *(*uint8_t)(unsafe.Pointer(p + uintptr(step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr((q1 - a2)))) - *(*uint8_t)(unsafe.Pointer(p + uintptr((2 * step)))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr((q2 - a3)))) + var a1 int32 = (27*a + 63) >> 7 // eq. to ((3 * a + 7) * 9) >> 7 + var a2 int32 = (18*a + 63) >> 7 // eq. to ((2 * a + 7) * 9) >> 7 + var a3 int32 = (9*a + 63) >> 7 // eq. to ((1 * a + 7) * 9) >> 7 + *(*uint8_t)(unsafe.Pointer(p + uintptr(-3*step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr(p2+a3))) + *(*uint8_t)(unsafe.Pointer(p + uintptr(-2*step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr(p1+a2))) + *(*uint8_t)(unsafe.Pointer(p + uintptr(-step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr(p0+a1))) + *(*uint8_t)(unsafe.Pointer(p)) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr(q0-a1))) + *(*uint8_t)(unsafe.Pointer(p + uintptr(step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr(q1-a2))) + *(*uint8_t)(unsafe.Pointer(p + uintptr(2*step))) = *(*uint8_t)(unsafe.Pointer(VP8kclip1 + uintptr(q2-a3))) } func Hev(tls *libc.TLS, p uintptr, step int32, thresh int32) int32 { /* dec.c:523:24: */ - var p1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((-2 * step))))) + var p1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-2*step)))) var p0 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-step)))) var q0 int32 = int32(*(*uint8_t)(unsafe.Pointer(p))) var q1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(step)))) - return (libc.Bool32((int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr((p1 - p0))))) > thresh) || (int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr((q1 - q0))))) > thresh))) + return libc.Bool32(int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr(p1-p0)))) > thresh || int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr(q1-q0)))) > thresh) } func NeedsFilter_C(tls *libc.TLS, p uintptr, step int32, t int32) int32 { /* dec.c:530:24: */ - var p1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((-2 * step))))) + var p1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-2*step)))) var p0 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-step)))) var q0 int32 = int32(*(*uint8_t)(unsafe.Pointer(p))) var q1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(step)))) - return (libc.Bool32(((4 * int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr((p0 - q0)))))) + int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr((p1 - q1)))))) <= t)) + return libc.Bool32(4*int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr(p0-q0))))+int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr(p1-q1)))) <= t) } func NeedsFilter2_C(tls *libc.TLS, p uintptr, step int32, t int32, it int32) int32 { /* dec.c:537:24: */ - var p3 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((-4 * step))))) - var p2 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((-3 * step))))) - var p1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((-2 * step))))) + var p3 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-4*step)))) + var p2 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-3*step)))) + var p1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-2*step)))) var p0 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(-step)))) var q0 int32 = int32(*(*uint8_t)(unsafe.Pointer(p))) var q1 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(step)))) - var q2 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((2 * step))))) - var q3 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((3 * step))))) - if ((4 * int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr((p0 - q0)))))) + int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr((p1 - q1)))))) > t { + var q2 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(2*step)))) + var q3 int32 = int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(3*step)))) + if 4*int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr(p0-q0))))+int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr(p1-q1)))) > t { return 0 } - return (libc.Bool32((((((int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr((p3 - p2))))) <= it) && (int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr((p2 - p1))))) <= it)) && (int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr((p1 - p0))))) <= it)) && (int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr((q3 - q2))))) <= it)) && (int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr((q2 - q1))))) <= it)) && (int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr((q1 - q0))))) <= it))) + return libc.Bool32(int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr(p3-p2)))) <= it && int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr(p2-p1)))) <= it && int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr(p1-p0)))) <= it && int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr(q3-q2)))) <= it && int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr(q2-q1)))) <= it && int32(*(*uint8_t)(unsafe.Pointer(VP8kabs0 + uintptr(q1-q0)))) <= it) } //------------------------------------------------------------------------------ @@ -16016,20 +15756,20 @@ func NeedsFilter2_C(tls *libc.TLS, p uintptr, step int32, t int32, it int32) int func SimpleVFilter16_C(tls *libc.TLS, p uintptr, stride int32, thresh int32) { /* dec.c:553:13: */ var i int32 - var thresh2 int32 = ((2 * thresh) + 1) + var thresh2 int32 = 2*thresh + 1 for i = 0; i < 16; i++ { - if NeedsFilter_C(tls, (p+uintptr(i)), stride, thresh2) != 0 { - DoFilter2_C(tls, (p + uintptr(i)), stride) + if NeedsFilter_C(tls, p+uintptr(i), stride, thresh2) != 0 { + DoFilter2_C(tls, p+uintptr(i), stride) } } } func SimpleHFilter16_C(tls *libc.TLS, p uintptr, stride int32, thresh int32) { /* dec.c:563:13: */ var i int32 - var thresh2 int32 = ((2 * thresh) + 1) + var thresh2 int32 = 2*thresh + 1 for i = 0; i < 16; i++ { - if NeedsFilter_C(tls, (p+uintptr((i*stride))), 1, thresh2) != 0 { - DoFilter2_C(tls, (p + uintptr((i * stride))), 1) + if NeedsFilter_C(tls, p+uintptr(i*stride), 1, thresh2) != 0 { + DoFilter2_C(tls, p+uintptr(i*stride), 1) } } } @@ -16037,7 +15777,7 @@ func SimpleHFilter16_C(tls *libc.TLS, p uintptr, stride int32, thresh int32) { / func SimpleVFilter16i_C(tls *libc.TLS, p uintptr, stride int32, thresh int32) { /* dec.c:573:13: */ var k int32 for k = 3; k > 0; k-- { - p += (uintptr(4 * stride)) + p += uintptr(4 * stride) SimpleVFilter16_C(tls, p, stride, thresh) } } @@ -16054,7 +15794,7 @@ func SimpleHFilter16i_C(tls *libc.TLS, p uintptr, stride int32, thresh int32) { // Complex In-loop filtering (Paragraph 15.3) func FilterLoop26_C(tls *libc.TLS, p uintptr, hstride int32, vstride int32, size int32, thresh int32, ithresh int32, hev_thresh int32) { /* dec.c:594:25: */ - var thresh2 int32 = ((2 * thresh) + 1) + var thresh2 int32 = 2*thresh + 1 for libc.PostDecInt32(&size, 1) > 0 { if NeedsFilter2_C(tls, p, hstride, thresh2, ithresh) != 0 { if Hev(tls, p, hstride, hev_thresh) != 0 { @@ -16068,7 +15808,7 @@ func FilterLoop26_C(tls *libc.TLS, p uintptr, hstride int32, vstride int32, size } func FilterLoop24_C(tls *libc.TLS, p uintptr, hstride int32, vstride int32, size int32, thresh int32, ithresh int32, hev_thresh int32) { /* dec.c:611:25: */ - var thresh2 int32 = ((2 * thresh) + 1) + var thresh2 int32 = 2*thresh + 1 for libc.PostDecInt32(&size, 1) > 0 { if NeedsFilter2_C(tls, p, hstride, thresh2, ithresh) != 0 { if Hev(tls, p, hstride, hev_thresh) != 0 { @@ -16094,7 +15834,7 @@ func HFilter16_C(tls *libc.TLS, p uintptr, stride int32, thresh int32, ithresh i func VFilter16i_C(tls *libc.TLS, p uintptr, stride int32, thresh int32, ithresh int32, hev_thresh int32) { /* dec.c:642:13: */ var k int32 for k = 3; k > 0; k-- { - p += (uintptr(4 * stride)) + p += uintptr(4 * stride) FilterLoop24_C(tls, p, stride, 1, 16, thresh, ithresh, hev_thresh) } } @@ -16119,13 +15859,13 @@ func HFilter8_C(tls *libc.TLS, u uintptr, v uintptr, stride int32, thresh int32, } func VFilter8i_C(tls *libc.TLS, u uintptr, v uintptr, stride int32, thresh int32, ithresh int32, hev_thresh int32) { /* dec.c:681:13: */ - FilterLoop24_C(tls, (u + uintptr((4 * stride))), stride, 1, 8, thresh, ithresh, hev_thresh) - FilterLoop24_C(tls, (v + uintptr((4 * stride))), stride, 1, 8, thresh, ithresh, hev_thresh) + FilterLoop24_C(tls, u+uintptr(4*stride), stride, 1, 8, thresh, ithresh, hev_thresh) + FilterLoop24_C(tls, v+uintptr(4*stride), stride, 1, 8, thresh, ithresh, hev_thresh) } func HFilter8i_C(tls *libc.TLS, u uintptr, v uintptr, stride int32, thresh int32, ithresh int32, hev_thresh int32) { /* dec.c:689:13: */ - FilterLoop24_C(tls, (u + uintptr(4)), 1, stride, 8, thresh, ithresh, hev_thresh) - FilterLoop24_C(tls, (v + uintptr(4)), 1, stride, 8, thresh, ithresh, hev_thresh) + FilterLoop24_C(tls, u+uintptr(4), 1, stride, 8, thresh, ithresh, hev_thresh) + FilterLoop24_C(tls, v+uintptr(4), 1, stride, 8, thresh, ithresh, hev_thresh) } //------------------------------------------------------------------------------ @@ -16135,9 +15875,9 @@ func DitherCombine8x8_C(tls *libc.TLS, dither uintptr, dst uintptr, dst_stride i var j int32 for j = 0; j < 8; j++ { for i = 0; i < 8; i++ { - var delta0 int32 = (int32(*(*uint8_t)(unsafe.Pointer(dither + uintptr(i)))) - (int32(1) << 7)) - var delta1 int32 = ((delta0 + (int32(1) << (4 - 1))) >> 4) - *(*uint8_t)(unsafe.Pointer(dst + uintptr(i))) = clip_8b(tls, (int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(i)))) + delta1)) + var delta0 int32 = int32(*(*uint8_t)(unsafe.Pointer(dither + uintptr(i)))) - int32(1)<<7 + var delta1 int32 = (delta0 + int32(1)<<(4-1)) >> 4 + *(*uint8_t)(unsafe.Pointer(dst + uintptr(i))) = clip_8b(tls, int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(i))))+delta1) } dst += uintptr(dst_stride) dither += uintptr(8) @@ -16168,7 +15908,7 @@ var VP8SimpleHFilter16i VP8SimpleFilterFunc /* dec.c:732:21: */ var VP8DitherCombine8x8 uintptr /* dec.c:734:6: */ func VP8DspInit(tls *libc.TLS) { /* dec.c:744:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if VP8DspInit_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -16272,7 +16012,7 @@ func VP8DspInit_body(tls *libc.TLS) { /* dec.c:744:1: */ }{DitherCombine8x8_C})) // If defined, use CPUInfo() to overwrite some pointers with faster versions. - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } @@ -16598,7 +16338,7 @@ func VP8InitClipTables(tls *libc.TLS) { /* dec_clip_tables.c:350:32: */ //------------------------------------------------------------------------------ func clip_8b1(tls *libc.TLS, v int32) uint8_t { /* enc.c:20:28: */ - if !((v & libc.CplInt32(0xff)) != 0) { + if !(v&libc.CplInt32(0xff) != 0) { return uint8(v) } if v < 0 { @@ -16619,14 +16359,14 @@ func clip_max(tls *libc.TLS, v int32, max int32) int32 { /* enc.c:25:24: */ // the higher, the "easier" the macroblock is to compress. var VP8DspScan = [24]int32{ - // Luma - (0 + (0 * 32)), (4 + (0 * 32)), (8 + (0 * 32)), (12 + (0 * 32)), - (0 + (4 * 32)), (4 + (4 * 32)), (8 + (4 * 32)), (12 + (4 * 32)), - (0 + (8 * 32)), (4 + (8 * 32)), (8 + (8 * 32)), (12 + (8 * 32)), - (0 + (12 * 32)), (4 + (12 * 32)), (8 + (12 * 32)), (12 + (12 * 32)), - - (0 + (0 * 32)), (4 + (0 * 32)), (0 + (4 * 32)), (4 + (4 * 32)), // U - (8 + (0 * 32)), (12 + (0 * 32)), (8 + (4 * 32)), (12 + (4 * 32)), // V + + 0 + 0*32, 4 + 0*32, 8 + 0*32, 12 + 0*32, + 0 + 4*32, 4 + 4*32, 8 + 4*32, 12 + 4*32, + 0 + 8*32, 4 + 8*32, 8 + 8*32, 12 + 8*32, + 0 + 12*32, 4 + 12*32, 8 + 12*32, 12 + 12*32, + + 0 + 0*32, 4 + 0*32, 0 + 4*32, 4 + 4*32, + 8 + 0*32, 12 + 0*32, 8 + 4*32, 12 + 4*32, } /* enc.c:34:11 */ // general-purpose util function @@ -16659,16 +16399,16 @@ func CollectHistogram_C(tls *libc.TLS, ref uintptr, pred uintptr, start_block in (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8FTransform})).f(tls, (ref + uintptr(VP8DspScan[j])), (pred + uintptr(VP8DspScan[j])), (bp) /* &out[0] */) + })(unsafe.Pointer(&struct{ uintptr }{VP8FTransform})).f(tls, ref+uintptr(VP8DspScan[j]), pred+uintptr(VP8DspScan[j]), bp /* &out[0] */) // Convert coefficients to bin. for k = 0; k < 16; k++ { - var v int32 = (libc.Xabs(tls, int32(*(*int16_t)(unsafe.Pointer((bp) /* &out[0] */ + uintptr(k)*2)))) >> 3) + var v int32 = libc.Xabs(tls, int32(*(*int16_t)(unsafe.Pointer(bp + uintptr(k)*2)))) >> 3 var clipped_value int32 = clip_max(tls, v, 31) - *(*int32)(unsafe.Pointer((bp + 32) /* &distribution[0] */ + uintptr(clipped_value)*4))++ + *(*int32)(unsafe.Pointer(bp + 32 + uintptr(clipped_value)*4))++ } } - VP8SetHistogramData(tls, (bp + 32) /* &distribution[0] */, histo) + VP8SetHistogramData(tls, bp+32, histo) } //------------------------------------------------------------------------------ @@ -16683,8 +16423,8 @@ var tables_ok int32 = 0 /* enc.c:91:21 */ func InitTables(tls *libc.TLS) { /* enc.c:93:39: */ if !(libc.AtomicLoadInt32(&tables_ok) != 0) { var i int32 - for i = -255; i <= (255 + 255); i++ { - clip11[(255 + i)] = clip_8b1(tls, i) + for i = -255; i <= 255+255; i++ { + clip11[255+i] = clip_8b1(tls, i) } libc.AtomicStoreInt32(&tables_ok, int32(1)) } @@ -16693,8 +16433,8 @@ func InitTables(tls *libc.TLS) { /* enc.c:93:39: */ //------------------------------------------------------------------------------ // Transforms (Paragraph 14.4) -var kC1 int32 = (20091 + (int32(1) << 16)) /* enc.c:112:18 */ -var kC2 int32 = 35468 /* enc.c:113:18 */ +var kC1 int32 = 20091 + int32(1)<<16 /* enc.c:112:18 */ +var kC2 int32 = 35468 /* enc.c:113:18 */ func ITransformOne(tls *libc.TLS, ref uintptr, in uintptr, dst uintptr) { /* enc.c:116:25: */ bp := tls.Alloc(64) @@ -16704,31 +16444,31 @@ func ITransformOne(tls *libc.TLS, ref uintptr, in uintptr, dst uintptr) { /* enc var tmp uintptr var i int32 - tmp = (bp) /* &C[0] */ + tmp = bp /* &C[0] */ for i = 0; i < 4; i++ { // vertical pass - var a int32 = (int32(*(*int16_t)(unsafe.Pointer(in))) + int32(*(*int16_t)(unsafe.Pointer(in + 8*2)))) - var b int32 = (int32(*(*int16_t)(unsafe.Pointer(in))) - int32(*(*int16_t)(unsafe.Pointer(in + 8*2)))) - var c int32 = ((((int32(*(*int16_t)(unsafe.Pointer(in + 4*2)))) * (kC2)) >> 16) - (((int32(*(*int16_t)(unsafe.Pointer(in + 12*2)))) * (kC1)) >> 16)) - var d int32 = ((((int32(*(*int16_t)(unsafe.Pointer(in + 4*2)))) * (kC1)) >> 16) + (((int32(*(*int16_t)(unsafe.Pointer(in + 12*2)))) * (kC2)) >> 16)) - *(*int32)(unsafe.Pointer(tmp)) = (a + d) - *(*int32)(unsafe.Pointer(tmp + 1*4)) = (b + c) - *(*int32)(unsafe.Pointer(tmp + 2*4)) = (b - c) - *(*int32)(unsafe.Pointer(tmp + 3*4)) = (a - d) - tmp += 4 * (uintptr(4)) + var a int32 = int32(*(*int16_t)(unsafe.Pointer(in))) + int32(*(*int16_t)(unsafe.Pointer(in + 8*2))) + var b int32 = int32(*(*int16_t)(unsafe.Pointer(in))) - int32(*(*int16_t)(unsafe.Pointer(in + 8*2))) + var c int32 = int32(*(*int16_t)(unsafe.Pointer(in + 4*2)))*kC2>>16 - int32(*(*int16_t)(unsafe.Pointer(in + 12*2)))*kC1>>16 + var d int32 = int32(*(*int16_t)(unsafe.Pointer(in + 4*2)))*kC1>>16 + int32(*(*int16_t)(unsafe.Pointer(in + 12*2)))*kC2>>16 + *(*int32)(unsafe.Pointer(tmp)) = a + d + *(*int32)(unsafe.Pointer(tmp + 1*4)) = b + c + *(*int32)(unsafe.Pointer(tmp + 2*4)) = b - c + *(*int32)(unsafe.Pointer(tmp + 3*4)) = a - d + tmp += 4 * uintptr(4) in += 2 } - tmp = (bp) /* &C[0] */ + tmp = bp /* &C[0] */ for i = 0; i < 4; i++ { // horizontal pass - var dc int32 = (*(*int32)(unsafe.Pointer(tmp)) + 4) - var a int32 = (dc + *(*int32)(unsafe.Pointer(tmp + 8*4))) - var b int32 = (dc - *(*int32)(unsafe.Pointer(tmp + 8*4))) - var c int32 = ((((*(*int32)(unsafe.Pointer(tmp + 4*4))) * (kC2)) >> 16) - (((*(*int32)(unsafe.Pointer(tmp + 12*4))) * (kC1)) >> 16)) - var d int32 = ((((*(*int32)(unsafe.Pointer(tmp + 4*4))) * (kC1)) >> 16) + (((*(*int32)(unsafe.Pointer(tmp + 12*4))) * (kC2)) >> 16)) - *(*uint8_t)(unsafe.Pointer(dst + uintptr(((0) + ((i) * 32))))) = clip_8b1(tls, (int32(*(*uint8_t)(unsafe.Pointer(ref + uintptr(((0) + ((i) * 32)))))) + ((a + d) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + uintptr(((1) + ((i) * 32))))) = clip_8b1(tls, (int32(*(*uint8_t)(unsafe.Pointer(ref + uintptr(((1) + ((i) * 32)))))) + ((b + c) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + uintptr(((2) + ((i) * 32))))) = clip_8b1(tls, (int32(*(*uint8_t)(unsafe.Pointer(ref + uintptr(((2) + ((i) * 32)))))) + ((b - c) >> 3))) - *(*uint8_t)(unsafe.Pointer(dst + uintptr(((3) + ((i) * 32))))) = clip_8b1(tls, (int32(*(*uint8_t)(unsafe.Pointer(ref + uintptr(((3) + ((i) * 32)))))) + ((a - d) >> 3))) + var dc int32 = *(*int32)(unsafe.Pointer(tmp)) + 4 + var a int32 = dc + *(*int32)(unsafe.Pointer(tmp + 8*4)) + var b int32 = dc - *(*int32)(unsafe.Pointer(tmp + 8*4)) + var c int32 = *(*int32)(unsafe.Pointer(tmp + 4*4))*kC2>>16 - *(*int32)(unsafe.Pointer(tmp + 12*4))*kC1>>16 + var d int32 = *(*int32)(unsafe.Pointer(tmp + 4*4))*kC1>>16 + *(*int32)(unsafe.Pointer(tmp + 12*4))*kC2>>16 + *(*uint8_t)(unsafe.Pointer(dst + uintptr(0+i*32))) = clip_8b1(tls, int32(*(*uint8_t)(unsafe.Pointer(ref + uintptr(0+i*32))))+(a+d)>>3) + *(*uint8_t)(unsafe.Pointer(dst + uintptr(1+i*32))) = clip_8b1(tls, int32(*(*uint8_t)(unsafe.Pointer(ref + uintptr(1+i*32))))+(b+c)>>3) + *(*uint8_t)(unsafe.Pointer(dst + uintptr(2+i*32))) = clip_8b1(tls, int32(*(*uint8_t)(unsafe.Pointer(ref + uintptr(2+i*32))))+(b-c)>>3) + *(*uint8_t)(unsafe.Pointer(dst + uintptr(3+i*32))) = clip_8b1(tls, int32(*(*uint8_t)(unsafe.Pointer(ref + uintptr(3+i*32))))+(a-d)>>3) tmp += 4 } } @@ -16736,7 +16476,7 @@ func ITransformOne(tls *libc.TLS, ref uintptr, in uintptr, dst uintptr) { /* enc func ITransform_C(tls *libc.TLS, ref uintptr, in uintptr, dst uintptr, do_two int32) { /* enc.c:149:13: */ ITransformOne(tls, ref, in, dst) if do_two != 0 { - ITransformOne(tls, (ref + uintptr(4)), (in + uintptr(16)*2), (dst + uintptr(4))) + ITransformOne(tls, ref+uintptr(4), in+uintptr(16)*2, dst+uintptr(4)) } } @@ -16753,18 +16493,18 @@ __1: goto __3 } { - var d0 int32 = (int32(*(*uint8_t)(unsafe.Pointer(src))) - int32(*(*uint8_t)(unsafe.Pointer(ref)))) // 9bit dynamic range ([-255,255]) - var d1 int32 = (int32(*(*uint8_t)(unsafe.Pointer(src + 1))) - int32(*(*uint8_t)(unsafe.Pointer(ref + 1)))) - var d2 int32 = (int32(*(*uint8_t)(unsafe.Pointer(src + 2))) - int32(*(*uint8_t)(unsafe.Pointer(ref + 2)))) - var d3 int32 = (int32(*(*uint8_t)(unsafe.Pointer(src + 3))) - int32(*(*uint8_t)(unsafe.Pointer(ref + 3)))) - var a0 int32 = (d0 + d3) // 10b [-510,510] - var a1 int32 = (d1 + d2) - var a2 int32 = (d1 - d2) - var a3 int32 = (d0 - d3) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((0+(i*4)))*4)) = ((a0 + a1) * 8) // 14b [-8160,8160] - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((1+(i*4)))*4)) = ((((a2 * 2217) + (a3 * 5352)) + 1812) >> 9) // [-7536,7542] - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((2+(i*4)))*4)) = ((a0 - a1) * 8) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((3+(i*4)))*4)) = ((((a3 * 2217) - (a2 * 5352)) + 937) >> 9) + var d0 int32 = int32(*(*uint8_t)(unsafe.Pointer(src))) - int32(*(*uint8_t)(unsafe.Pointer(ref))) // 9bit dynamic range ([-255,255]) + var d1 int32 = int32(*(*uint8_t)(unsafe.Pointer(src + 1))) - int32(*(*uint8_t)(unsafe.Pointer(ref + 1))) + var d2 int32 = int32(*(*uint8_t)(unsafe.Pointer(src + 2))) - int32(*(*uint8_t)(unsafe.Pointer(ref + 2))) + var d3 int32 = int32(*(*uint8_t)(unsafe.Pointer(src + 3))) - int32(*(*uint8_t)(unsafe.Pointer(ref + 3))) + var a0 int32 = d0 + d3 // 10b [-510,510] + var a1 int32 = d1 + d2 + var a2 int32 = d1 - d2 + var a3 int32 = d0 - d3 + *(*int32)(unsafe.Pointer(bp + uintptr(0+i*4)*4)) = (a0 + a1) * 8 // 14b [-8160,8160] + *(*int32)(unsafe.Pointer(bp + uintptr(1+i*4)*4)) = (a2*2217 + a3*5352 + 1812) >> 9 // [-7536,7542] + *(*int32)(unsafe.Pointer(bp + uintptr(2+i*4)*4)) = (a0 - a1) * 8 + *(*int32)(unsafe.Pointer(bp + uintptr(3+i*4)*4)) = (a3*2217 - a2*5352 + 937) >> 9 } goto __2 @@ -16777,14 +16517,14 @@ __2: __3: ; for i = 0; i < 4; i++ { - var a0 int32 = (*(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((0+i))*4)) + *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((12+i))*4))) // 15b - var a1 int32 = (*(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((4+i))*4)) + *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((8+i))*4))) - var a2 int32 = (*(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((4+i))*4)) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((8+i))*4))) - var a3 int32 = (*(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((0+i))*4)) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((12+i))*4))) - *(*int16_t)(unsafe.Pointer(out + uintptr((0+i))*2)) = (int16_t(((a0 + a1) + 7) >> 4)) // 12b - *(*int16_t)(unsafe.Pointer(out + uintptr((4+i))*2)) = (int16_t(((((a2 * 2217) + (a3 * 5352)) + 12000) >> 16) + (libc.Bool32(a3 != 0)))) - *(*int16_t)(unsafe.Pointer(out + uintptr((8+i))*2)) = (int16_t(((a0 - a1) + 7) >> 4)) - *(*int16_t)(unsafe.Pointer(out + uintptr((12+i))*2)) = (int16_t((((a3 * 2217) - (a2 * 5352)) + 51000) >> 16)) + var a0 int32 = *(*int32)(unsafe.Pointer(bp + uintptr(0+i)*4)) + *(*int32)(unsafe.Pointer(bp + uintptr(12+i)*4)) // 15b + var a1 int32 = *(*int32)(unsafe.Pointer(bp + uintptr(4+i)*4)) + *(*int32)(unsafe.Pointer(bp + uintptr(8+i)*4)) + var a2 int32 = *(*int32)(unsafe.Pointer(bp + uintptr(4+i)*4)) - *(*int32)(unsafe.Pointer(bp + uintptr(8+i)*4)) + var a3 int32 = *(*int32)(unsafe.Pointer(bp + uintptr(0+i)*4)) - *(*int32)(unsafe.Pointer(bp + uintptr(12+i)*4)) + *(*int16_t)(unsafe.Pointer(out + uintptr(0+i)*2)) = int16_t((a0 + a1 + 7) >> 4) // 12b + *(*int16_t)(unsafe.Pointer(out + uintptr(4+i)*2)) = int16_t((a2*2217+a3*5352+12000)>>16 + libc.Bool32(a3 != 0)) + *(*int16_t)(unsafe.Pointer(out + uintptr(8+i)*2)) = int16_t((a0 - a1 + 7) >> 4) + *(*int16_t)(unsafe.Pointer(out + uintptr(12+i)*2)) = int16_t((a3*2217 - a2*5352 + 51000) >> 16) } } @@ -16794,7 +16534,7 @@ func FTransform2_C(tls *libc.TLS, src uintptr, ref uintptr, out uintptr) { /* en })(unsafe.Pointer(&struct{ uintptr }{VP8FTransform})).f(tls, src, ref, out) (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8FTransform})).f(tls, (src + uintptr(4)), (ref + uintptr(4)), (out + uintptr(16)*2)) + })(unsafe.Pointer(&struct{ uintptr }{VP8FTransform})).f(tls, src+uintptr(4), ref+uintptr(4), out+uintptr(16)*2) } func FTransformWHT_C(tls *libc.TLS, in uintptr, out uintptr) { /* enc.c:194:13: */ @@ -16811,37 +16551,37 @@ __1: goto __3 } { - var a0 int32 = (int32(*(*int16_t)(unsafe.Pointer(in))) + int32(*(*int16_t)(unsafe.Pointer(in + 32*2)))) // 13b - var a1 int32 = (int32(*(*int16_t)(unsafe.Pointer(in + 16*2))) + int32(*(*int16_t)(unsafe.Pointer(in + 48*2)))) - var a2 int32 = (int32(*(*int16_t)(unsafe.Pointer(in + 16*2))) - int32(*(*int16_t)(unsafe.Pointer(in + 48*2)))) - var a3 int32 = (int32(*(*int16_t)(unsafe.Pointer(in))) - int32(*(*int16_t)(unsafe.Pointer(in + 32*2)))) - *(*int32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((0+(i*4)))*4)) = (a0 + a1) // 14b - *(*int32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((1+(i*4)))*4)) = (a3 + a2) - *(*int32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((2+(i*4)))*4)) = (a3 - a2) - *(*int32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((3+(i*4)))*4)) = (a0 - a1) + var a0 int32 = int32(*(*int16_t)(unsafe.Pointer(in))) + int32(*(*int16_t)(unsafe.Pointer(in + 32*2))) // 13b + var a1 int32 = int32(*(*int16_t)(unsafe.Pointer(in + 16*2))) + int32(*(*int16_t)(unsafe.Pointer(in + 48*2))) + var a2 int32 = int32(*(*int16_t)(unsafe.Pointer(in + 16*2))) - int32(*(*int16_t)(unsafe.Pointer(in + 48*2))) + var a3 int32 = int32(*(*int16_t)(unsafe.Pointer(in))) - int32(*(*int16_t)(unsafe.Pointer(in + 32*2))) + *(*int32_t)(unsafe.Pointer(bp + uintptr(0+i*4)*4)) = a0 + a1 // 14b + *(*int32_t)(unsafe.Pointer(bp + uintptr(1+i*4)*4)) = a3 + a2 + *(*int32_t)(unsafe.Pointer(bp + uintptr(2+i*4)*4)) = a3 - a2 + *(*int32_t)(unsafe.Pointer(bp + uintptr(3+i*4)*4)) = a0 - a1 } goto __2 __2: i++ - in += 2 * (uintptr(64)) + in += 2 * uintptr(64) goto __1 goto __3 __3: ; for i = 0; i < 4; i++ { - var a0 int32 = (*(*int32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((0+i))*4)) + *(*int32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((8+i))*4))) // 15b - var a1 int32 = (*(*int32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((4+i))*4)) + *(*int32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((12+i))*4))) - var a2 int32 = (*(*int32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((4+i))*4)) - *(*int32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((12+i))*4))) - var a3 int32 = (*(*int32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((0+i))*4)) - *(*int32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((8+i))*4))) - var b0 int32 = (a0 + a1) // 16b - var b1 int32 = (a3 + a2) - var b2 int32 = (a3 - a2) - var b3 int32 = (a0 - a1) - *(*int16_t)(unsafe.Pointer(out + uintptr((0+i))*2)) = (int16_t(b0 >> 1)) // 15b - *(*int16_t)(unsafe.Pointer(out + uintptr((4+i))*2)) = (int16_t(b1 >> 1)) - *(*int16_t)(unsafe.Pointer(out + uintptr((8+i))*2)) = (int16_t(b2 >> 1)) - *(*int16_t)(unsafe.Pointer(out + uintptr((12+i))*2)) = (int16_t(b3 >> 1)) + var a0 int32 = *(*int32_t)(unsafe.Pointer(bp + uintptr(0+i)*4)) + *(*int32_t)(unsafe.Pointer(bp + uintptr(8+i)*4)) // 15b + var a1 int32 = *(*int32_t)(unsafe.Pointer(bp + uintptr(4+i)*4)) + *(*int32_t)(unsafe.Pointer(bp + uintptr(12+i)*4)) + var a2 int32 = *(*int32_t)(unsafe.Pointer(bp + uintptr(4+i)*4)) - *(*int32_t)(unsafe.Pointer(bp + uintptr(12+i)*4)) + var a3 int32 = *(*int32_t)(unsafe.Pointer(bp + uintptr(0+i)*4)) - *(*int32_t)(unsafe.Pointer(bp + uintptr(8+i)*4)) + var b0 int32 = a0 + a1 // 16b + var b1 int32 = a3 + a2 + var b2 int32 = a3 - a2 + var b3 int32 = a0 - a1 + *(*int16_t)(unsafe.Pointer(out + uintptr(0+i)*2)) = int16_t(b0 >> 1) // 15b + *(*int16_t)(unsafe.Pointer(out + uintptr(4+i)*2)) = int16_t(b1 >> 1) + *(*int16_t)(unsafe.Pointer(out + uintptr(8+i)*2)) = int16_t(b2 >> 1) + *(*int16_t)(unsafe.Pointer(out + uintptr(12+i)*2)) = int16_t(b3 >> 1) } } @@ -16851,15 +16591,15 @@ __3: func Fill(tls *libc.TLS, dst uintptr, value int32, size int32) { /* enc.c:231:25: */ var j int32 for j = 0; j < size; j++ { - libc.Xmemset(tls, (dst + uintptr((j * 32))), value, uint64(size)) + libc.Xmemset(tls, dst+uintptr(j*32), value, uint64(size)) } } func VerticalPred(tls *libc.TLS, dst uintptr, top uintptr, size int32) { /* enc.c:238:25: */ var j int32 - if top != (uintptr(0)) { + if top != uintptr(0) { for j = 0; j < size; j++ { - libc.Xmemcpy(tls, (dst + uintptr((j * 32))), top, uint64(size)) + libc.Xmemcpy(tls, dst+uintptr(j*32), top, uint64(size)) } } else { Fill(tls, dst, 127, size) @@ -16867,10 +16607,10 @@ func VerticalPred(tls *libc.TLS, dst uintptr, top uintptr, size int32) { /* enc. } func HorizontalPred(tls *libc.TLS, dst uintptr, left uintptr, size int32) { /* enc.c:248:25: */ - if left != (uintptr(0)) { + if left != uintptr(0) { var j int32 for j = 0; j < size; j++ { - libc.Xmemset(tls, (dst + uintptr((j * 32))), int32(*(*uint8_t)(unsafe.Pointer(left + uintptr(j)))), uint64(size)) + libc.Xmemset(tls, dst+uintptr(j*32), int32(*(*uint8_t)(unsafe.Pointer(left + uintptr(j)))), uint64(size)) } } else { Fill(tls, dst, 129, size) @@ -16879,11 +16619,11 @@ func HorizontalPred(tls *libc.TLS, dst uintptr, left uintptr, size int32) { /* e func TrueMotion1(tls *libc.TLS, dst uintptr, left uintptr, top uintptr, size int32) { /* enc.c:260:25: */ var y int32 - if left != (uintptr(0)) { - if top != (uintptr(0)) { - var clip uintptr = ((uintptr(unsafe.Pointer(&clip11)) + uintptr(255)) - uintptr(*(*uint8_t)(unsafe.Pointer(left + libc.UintptrFromInt32(-1))))) + if left != uintptr(0) { + if top != uintptr(0) { + var clip uintptr = uintptr(unsafe.Pointer(&clip11)) + uintptr(255) - uintptr(*(*uint8_t)(unsafe.Pointer(left + libc.UintptrFromInt32(-1)))) for y = 0; y < size; y++ { - var clip_table uintptr = (clip + uintptr(*(*uint8_t)(unsafe.Pointer(left + uintptr(y))))) + var clip_table uintptr = clip + uintptr(*(*uint8_t)(unsafe.Pointer(left + uintptr(y)))) var x int32 for x = 0; x < size; x++ { *(*uint8_t)(unsafe.Pointer(dst + uintptr(x))) = *(*uint8_t)(unsafe.Pointer(clip_table + uintptr(*(*uint8_t)(unsafe.Pointer(top + uintptr(x)))))) @@ -16898,7 +16638,7 @@ func TrueMotion1(tls *libc.TLS, dst uintptr, left uintptr, top uintptr, size int // is equivalent to VE prediction where you just copy the top samples. // Note that if top samples are not available, the default value is // then 129, and not 127 as in the VerticalPred case. - if top != (uintptr(0)) { + if top != uintptr(0) { VerticalPred(tls, dst, top, size) } else { Fill(tls, dst, 129, size) @@ -16909,24 +16649,24 @@ func TrueMotion1(tls *libc.TLS, dst uintptr, left uintptr, top uintptr, size int func DCMode(tls *libc.TLS, dst uintptr, left uintptr, top uintptr, size int32, round int32, shift int32) { /* enc.c:290:25: */ var DC int32 = 0 var j int32 - if top != (uintptr(0)) { + if top != uintptr(0) { for j = 0; j < size; j++ { - DC = DC + (int32(*(*uint8_t)(unsafe.Pointer(top + uintptr(j))))) + DC = DC + int32(*(*uint8_t)(unsafe.Pointer(top + uintptr(j)))) } - if left != (uintptr(0)) { // top and left present + if left != uintptr(0) { // top and left present for j = 0; j < size; j++ { - DC = DC + (int32(*(*uint8_t)(unsafe.Pointer(left + uintptr(j))))) + DC = DC + int32(*(*uint8_t)(unsafe.Pointer(left + uintptr(j)))) } } else { // top, but no left - DC = DC + (DC) + DC = DC + DC } - DC = ((DC + round) >> shift) - } else if left != (uintptr(0)) { // left but no top + DC = (DC + round) >> shift + } else if left != uintptr(0) { // left but no top for j = 0; j < size; j++ { - DC = DC + (int32(*(*uint8_t)(unsafe.Pointer(left + uintptr(j))))) + DC = DC + int32(*(*uint8_t)(unsafe.Pointer(left + uintptr(j)))) } - DC = DC + (DC) - DC = ((DC + round) >> shift) + DC = DC + DC + DC = (DC + round) >> shift } else { // no top, no left, nothing. DC = 0x80 } @@ -16938,32 +16678,32 @@ func DCMode(tls *libc.TLS, dst uintptr, left uintptr, top uintptr, size int32, r func IntraChromaPreds_C(tls *libc.TLS, dst uintptr, left uintptr, top uintptr) { /* enc.c:316:13: */ // U block - DCMode(tls, (uintptr(((2 * 16) * 32)) + dst), left, top, 8, 8, 4) - VerticalPred(tls, (uintptr((((2 * 16) * 32) + (8 * 32))) + dst), top, 8) - HorizontalPred(tls, (uintptr(((((2 * 16) * 32) + (8 * 32)) + (1 * 16))) + dst), left, 8) - TrueMotion1(tls, (uintptr((((2 * 16) * 32) + (1 * 16))) + dst), left, top, 8) + DCMode(tls, uintptr(2*16*32)+dst, left, top, 8, 8, 4) + VerticalPred(tls, uintptr(2*16*32+8*32)+dst, top, 8) + HorizontalPred(tls, uintptr(2*16*32+8*32+1*16)+dst, left, 8) + TrueMotion1(tls, uintptr(2*16*32+1*16)+dst, left, top, 8) // V block dst += uintptr(8) - if top != (uintptr(0)) { + if top != uintptr(0) { top += uintptr(8) } - if left != (uintptr(0)) { + if left != uintptr(0) { left += uintptr(16) } - DCMode(tls, (uintptr(((2 * 16) * 32)) + dst), left, top, 8, 8, 4) - VerticalPred(tls, (uintptr((((2 * 16) * 32) + (8 * 32))) + dst), top, 8) - HorizontalPred(tls, (uintptr(((((2 * 16) * 32) + (8 * 32)) + (1 * 16))) + dst), left, 8) - TrueMotion1(tls, (uintptr((((2 * 16) * 32) + (1 * 16))) + dst), left, top, 8) + DCMode(tls, uintptr(2*16*32)+dst, left, top, 8, 8, 4) + VerticalPred(tls, uintptr(2*16*32+8*32)+dst, top, 8) + HorizontalPred(tls, uintptr(2*16*32+8*32+1*16)+dst, left, 8) + TrueMotion1(tls, uintptr(2*16*32+1*16)+dst, left, top, 8) } //------------------------------------------------------------------------------ // luma 16x16 prediction (paragraph 12.3) func Intra16Preds_C(tls *libc.TLS, dst uintptr, left uintptr, top uintptr) { /* enc.c:336:13: */ - DCMode(tls, (uintptr(((0 * 16) * 32)) + dst), left, top, 16, 16, 5) - VerticalPred(tls, (uintptr(((1 * 16) * 32)) + dst), top, 16) - HorizontalPred(tls, (uintptr((((1 * 16) * 32) + 16)) + dst), left, 16) - TrueMotion1(tls, (uintptr((((0 * 16) * 32) + 16)) + dst), left, top, 16) + DCMode(tls, uintptr(0*16*32)+dst, left, top, 16, 16, 5) + VerticalPred(tls, uintptr(1*16*32)+dst, top, 16) + HorizontalPred(tls, uintptr(1*16*32+16)+dst, left, 16) + TrueMotion1(tls, uintptr(0*16*32+16)+dst, left, top, 16) } //------------------------------------------------------------------------------ @@ -16974,14 +16714,14 @@ func VE4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:351:13: */ defer tls.Free(4) // vertical *(*[4]uint8_t)(unsafe.Pointer(bp /* vals */)) = [4]uint8_t{ - (uint8_t(((((int32(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-1))))) + (2 * (int32(*(*uint8_t)(unsafe.Pointer(top)))))) + (int32(*(*uint8_t)(unsafe.Pointer(top + 1))))) + 2) >> 2)), - (uint8_t(((((int32(*(*uint8_t)(unsafe.Pointer(top)))) + (2 * (int32(*(*uint8_t)(unsafe.Pointer(top + 1)))))) + (int32(*(*uint8_t)(unsafe.Pointer(top + 2))))) + 2) >> 2)), - (uint8_t(((((int32(*(*uint8_t)(unsafe.Pointer(top + 1)))) + (2 * (int32(*(*uint8_t)(unsafe.Pointer(top + 2)))))) + (int32(*(*uint8_t)(unsafe.Pointer(top + 3))))) + 2) >> 2)), - (uint8_t(((((int32(*(*uint8_t)(unsafe.Pointer(top + 2)))) + (2 * (int32(*(*uint8_t)(unsafe.Pointer(top + 3)))))) + (int32(*(*uint8_t)(unsafe.Pointer(top + 4))))) + 2) >> 2)), + uint8_t((int32(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-1)))) + 2*int32(*(*uint8_t)(unsafe.Pointer(top))) + int32(*(*uint8_t)(unsafe.Pointer(top + 1))) + 2) >> 2), + uint8_t((int32(*(*uint8_t)(unsafe.Pointer(top))) + 2*int32(*(*uint8_t)(unsafe.Pointer(top + 1))) + int32(*(*uint8_t)(unsafe.Pointer(top + 2))) + 2) >> 2), + uint8_t((int32(*(*uint8_t)(unsafe.Pointer(top + 1))) + 2*int32(*(*uint8_t)(unsafe.Pointer(top + 2))) + int32(*(*uint8_t)(unsafe.Pointer(top + 3))) + 2) >> 2), + uint8_t((int32(*(*uint8_t)(unsafe.Pointer(top + 2))) + 2*int32(*(*uint8_t)(unsafe.Pointer(top + 3))) + int32(*(*uint8_t)(unsafe.Pointer(top + 4))) + 2) >> 2), } var i int32 for i = 0; i < 4; i++ { - libc.Xmemcpy(tls, (dst + uintptr((i * 32))), (bp) /* &vals[0] */, uint64(4)) + libc.Xmemcpy(tls, dst+uintptr(i*32), bp, uint64(4)) } } @@ -16991,19 +16731,19 @@ func HE4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:364:13: */ // horiz var J int32 = int32(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-3)))) var K int32 = int32(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-4)))) var L int32 = int32(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-5)))) - WebPUint32ToMem(tls, (dst + uintptr((0 * 32))), (0x01010101 * (uint32((uint8_t(((((X) + (2 * (I))) + (J)) + 2) >> 2)))))) - WebPUint32ToMem(tls, (dst + uintptr((1 * 32))), (0x01010101 * (uint32((uint8_t(((((I) + (2 * (J))) + (K)) + 2) >> 2)))))) - WebPUint32ToMem(tls, (dst + uintptr((2 * 32))), (0x01010101 * (uint32((uint8_t(((((J) + (2 * (K))) + (L)) + 2) >> 2)))))) - WebPUint32ToMem(tls, (dst + uintptr((3 * 32))), (0x01010101 * (uint32((uint8_t(((((K) + (2 * (L))) + (L)) + 2) >> 2)))))) + WebPUint32ToMem(tls, dst+uintptr(0*32), 0x01010101*uint32(uint8_t((X+2*I+J+2)>>2))) + WebPUint32ToMem(tls, dst+uintptr(1*32), 0x01010101*uint32(uint8_t((I+2*J+K+2)>>2))) + WebPUint32ToMem(tls, dst+uintptr(2*32), 0x01010101*uint32(uint8_t((J+2*K+L+2)>>2))) + WebPUint32ToMem(tls, dst+uintptr(3*32), 0x01010101*uint32(uint8_t((K+2*L+L+2)>>2))) } func DC4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:376:13: */ var dc uint32_t = uint32_t(4) var i int32 for i = 0; i < 4; i++ { - dc = dc + (uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top + uintptr(i)))) + int32(*(*uint8_t)(unsafe.Pointer(top + uintptr((-5 + i))))))) + dc = dc + uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top + uintptr(i))))+int32(*(*uint8_t)(unsafe.Pointer(top + uintptr(-5+i))))) } - Fill(tls, dst, (int32(dc >> 3)), 4) + Fill(tls, dst, int32(dc>>3), 4) } func RD4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:383:13: */ @@ -17016,13 +16756,13 @@ func RD4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:383:13: */ var B int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 1))) var C int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 2))) var D int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 3))) - *(*uint8_t)(unsafe.Pointer(dst + 96)) = (uint8_t(((((J) + (2 * (K))) + (L)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 64)) = libc.AssignPtrUint8((dst + 97), (uint8_t(((((I) + (2 * (J))) + (K)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 32)) = libc.AssignPtrUint8((dst + 65), libc.AssignPtrUint8((dst+98), (uint8_t(((((X)+(2*(I)))+(J))+2)>>2)))) - *(*uint8_t)(unsafe.Pointer(dst)) = libc.AssignPtrUint8((dst + 33), libc.AssignPtrUint8((dst+66), libc.AssignPtrUint8((dst+99), (uint8_t(((((A)+(2*(X)))+(I))+2)>>2))))) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8((dst + 34), libc.AssignPtrUint8((dst+67), (uint8_t(((((B)+(2*(A)))+(X))+2)>>2)))) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8((dst + 35), (uint8_t(((((C) + (2 * (B))) + (A)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = (uint8_t(((((D) + (2 * (C))) + (B)) + 2) >> 2)) + *(*uint8_t)(unsafe.Pointer(dst + 96)) = uint8_t((J + 2*K + L + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 64)) = libc.AssignPtrUint8(dst+97, uint8_t((I+2*J+K+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 32)) = libc.AssignPtrUint8(dst+65, libc.AssignPtrUint8(dst+98, uint8_t((X+2*I+J+2)>>2))) + *(*uint8_t)(unsafe.Pointer(dst)) = libc.AssignPtrUint8(dst+33, libc.AssignPtrUint8(dst+66, libc.AssignPtrUint8(dst+99, uint8_t((A+2*X+I+2)>>2)))) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8(dst+34, libc.AssignPtrUint8(dst+67, uint8_t((B+2*A+X+2)>>2))) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8(dst+35, uint8_t((C+2*B+A+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = uint8_t((D + 2*C + B + 2) >> 2) } func LD4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:402:13: */ @@ -17034,13 +16774,13 @@ func LD4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:402:13: */ var F int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 5))) var G int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 6))) var H int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 7))) - *(*uint8_t)(unsafe.Pointer(dst)) = (uint8_t(((((A) + (2 * (B))) + (C)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8((dst + 32), (uint8_t(((((B) + (2 * (C))) + (D)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8((dst + 33), libc.AssignPtrUint8((dst+64), (uint8_t(((((C)+(2*(D)))+(E))+2)>>2)))) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = libc.AssignPtrUint8((dst + 34), libc.AssignPtrUint8((dst+65), libc.AssignPtrUint8((dst+96), (uint8_t(((((D)+(2*(E)))+(F))+2)>>2))))) - *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8((dst + 66), libc.AssignPtrUint8((dst+97), (uint8_t(((((E)+(2*(F)))+(G))+2)>>2)))) - *(*uint8_t)(unsafe.Pointer(dst + 67)) = libc.AssignPtrUint8((dst + 98), (uint8_t(((((F) + (2 * (G))) + (H)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 99)) = (uint8_t(((((G) + (2 * (H))) + (H)) + 2) >> 2)) + *(*uint8_t)(unsafe.Pointer(dst)) = uint8_t((A + 2*B + C + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8(dst+32, uint8_t((B+2*C+D+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8(dst+33, libc.AssignPtrUint8(dst+64, uint8_t((C+2*D+E+2)>>2))) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = libc.AssignPtrUint8(dst+34, libc.AssignPtrUint8(dst+65, libc.AssignPtrUint8(dst+96, uint8_t((D+2*E+F+2)>>2)))) + *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8(dst+66, libc.AssignPtrUint8(dst+97, uint8_t((E+2*F+G+2)>>2))) + *(*uint8_t)(unsafe.Pointer(dst + 67)) = libc.AssignPtrUint8(dst+98, uint8_t((F+2*G+H+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 99)) = uint8_t((G + 2*H + H + 2) >> 2) } func VR4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:420:13: */ @@ -17052,17 +16792,17 @@ func VR4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:420:13: */ var B int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 1))) var C int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 2))) var D int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 3))) - *(*uint8_t)(unsafe.Pointer(dst)) = libc.AssignPtrUint8((dst + 65), (uint8_t((((X) + (A)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8((dst + 66), (uint8_t((((A) + (B)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8((dst + 67), (uint8_t((((B) + (C)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = (uint8_t((((C) + (D)) + 1) >> 1)) + *(*uint8_t)(unsafe.Pointer(dst)) = libc.AssignPtrUint8(dst+65, uint8_t((X+A+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8(dst+66, uint8_t((A+B+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8(dst+67, uint8_t((B+C+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = uint8_t((C + D + 1) >> 1) - *(*uint8_t)(unsafe.Pointer(dst + 96)) = (uint8_t(((((K) + (2 * (J))) + (I)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 64)) = (uint8_t(((((J) + (2 * (I))) + (X)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 32)) = libc.AssignPtrUint8((dst + 97), (uint8_t(((((I) + (2 * (X))) + (A)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 33)) = libc.AssignPtrUint8((dst + 98), (uint8_t(((((X) + (2 * (A))) + (B)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 34)) = libc.AssignPtrUint8((dst + 99), (uint8_t(((((A) + (2 * (B))) + (C)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 35)) = (uint8_t(((((B) + (2 * (C))) + (D)) + 2) >> 2)) + *(*uint8_t)(unsafe.Pointer(dst + 96)) = uint8_t((K + 2*J + I + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 64)) = uint8_t((J + 2*I + X + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 32)) = libc.AssignPtrUint8(dst+97, uint8_t((I+2*X+A+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 33)) = libc.AssignPtrUint8(dst+98, uint8_t((X+2*A+B+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 34)) = libc.AssignPtrUint8(dst+99, uint8_t((A+2*B+C+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 35)) = uint8_t((B + 2*C + D + 2) >> 2) } func VL4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:442:13: */ @@ -17074,17 +16814,17 @@ func VL4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:442:13: */ var F int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 5))) var G int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 6))) var H int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 7))) - *(*uint8_t)(unsafe.Pointer(dst)) = (uint8_t((((A) + (B)) + 1) >> 1)) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8((dst + 64), (uint8_t((((B) + (C)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8((dst + 65), (uint8_t((((C) + (D)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = libc.AssignPtrUint8((dst + 66), (uint8_t((((D) + (E)) + 1) >> 1))) + *(*uint8_t)(unsafe.Pointer(dst)) = uint8_t((A + B + 1) >> 1) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8(dst+64, uint8_t((B+C+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8(dst+65, uint8_t((C+D+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = libc.AssignPtrUint8(dst+66, uint8_t((D+E+1)>>1)) - *(*uint8_t)(unsafe.Pointer(dst + 32)) = (uint8_t(((((A) + (2 * (B))) + (C)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 33)) = libc.AssignPtrUint8((dst + 96), (uint8_t(((((B) + (2 * (C))) + (D)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 34)) = libc.AssignPtrUint8((dst + 97), (uint8_t(((((C) + (2 * (D))) + (E)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8((dst + 98), (uint8_t(((((D) + (2 * (E))) + (F)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 67)) = (uint8_t(((((E) + (2 * (F))) + (G)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 99)) = (uint8_t(((((F) + (2 * (G))) + (H)) + 2) >> 2)) + *(*uint8_t)(unsafe.Pointer(dst + 32)) = uint8_t((A + 2*B + C + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 33)) = libc.AssignPtrUint8(dst+96, uint8_t((B+2*C+D+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 34)) = libc.AssignPtrUint8(dst+97, uint8_t((C+2*D+E+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8(dst+98, uint8_t((D+2*E+F+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 67)) = uint8_t((E + 2*F + G + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 99)) = uint8_t((F + 2*G + H + 2) >> 2) } func HU4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:464:13: */ @@ -17092,13 +16832,13 @@ func HU4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:464:13: */ var J int32 = int32(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-3)))) var K int32 = int32(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-4)))) var L int32 = int32(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-5)))) - *(*uint8_t)(unsafe.Pointer(dst)) = (uint8_t((((I) + (J)) + 1) >> 1)) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8((dst + 32), (uint8_t((((J) + (K)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 34)) = libc.AssignPtrUint8((dst + 64), (uint8_t((((K) + (L)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = (uint8_t(((((I) + (2 * (J))) + (K)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = libc.AssignPtrUint8((dst + 33), (uint8_t(((((J) + (2 * (K))) + (L)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8((dst + 65), (uint8_t(((((K) + (2 * (L))) + (L)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 67)) = libc.AssignPtrUint8((dst + 66), libc.AssignPtrUint8((dst+96), libc.AssignPtrUint8((dst+97), libc.AssignPtrUint8((dst+98), libc.AssignPtrUint8((dst+99), uint8_t(L)))))) + *(*uint8_t)(unsafe.Pointer(dst)) = uint8_t((I + J + 1) >> 1) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = libc.AssignPtrUint8(dst+32, uint8_t((J+K+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 34)) = libc.AssignPtrUint8(dst+64, uint8_t((K+L+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = uint8_t((I + 2*J + K + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = libc.AssignPtrUint8(dst+33, uint8_t((J+2*K+L+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 35)) = libc.AssignPtrUint8(dst+65, uint8_t((K+2*L+L+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 67)) = libc.AssignPtrUint8(dst+66, libc.AssignPtrUint8(dst+96, libc.AssignPtrUint8(dst+97, libc.AssignPtrUint8(dst+98, libc.AssignPtrUint8(dst+99, uint8_t(L)))))) } func HD4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:479:13: */ @@ -17111,25 +16851,25 @@ func HD4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:479:13: */ var B int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 1))) var C int32 = int32(*(*uint8_t)(unsafe.Pointer(top + 2))) - *(*uint8_t)(unsafe.Pointer(dst)) = libc.AssignPtrUint8((dst + 34), (uint8_t((((I) + (X)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 32)) = libc.AssignPtrUint8((dst + 66), (uint8_t((((J) + (I)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 64)) = libc.AssignPtrUint8((dst + 98), (uint8_t((((K) + (J)) + 1) >> 1))) - *(*uint8_t)(unsafe.Pointer(dst + 96)) = (uint8_t((((L) + (K)) + 1) >> 1)) + *(*uint8_t)(unsafe.Pointer(dst)) = libc.AssignPtrUint8(dst+34, uint8_t((I+X+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 32)) = libc.AssignPtrUint8(dst+66, uint8_t((J+I+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 64)) = libc.AssignPtrUint8(dst+98, uint8_t((K+J+1)>>1)) + *(*uint8_t)(unsafe.Pointer(dst + 96)) = uint8_t((L + K + 1) >> 1) - *(*uint8_t)(unsafe.Pointer(dst + 3)) = (uint8_t(((((A) + (2 * (B))) + (C)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 2)) = (uint8_t(((((X) + (2 * (A))) + (B)) + 2) >> 2)) - *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8((dst + 35), (uint8_t(((((I) + (2 * (X))) + (A)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 33)) = libc.AssignPtrUint8((dst + 67), (uint8_t(((((J) + (2 * (I))) + (X)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 65)) = libc.AssignPtrUint8((dst + 99), (uint8_t(((((K) + (2 * (J))) + (I)) + 2) >> 2))) - *(*uint8_t)(unsafe.Pointer(dst + 97)) = (uint8_t(((((L) + (2 * (K))) + (J)) + 2) >> 2)) + *(*uint8_t)(unsafe.Pointer(dst + 3)) = uint8_t((A + 2*B + C + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 2)) = uint8_t((X + 2*A + B + 2) >> 2) + *(*uint8_t)(unsafe.Pointer(dst + 1)) = libc.AssignPtrUint8(dst+35, uint8_t((I+2*X+A+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 33)) = libc.AssignPtrUint8(dst+67, uint8_t((J+2*I+X+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 65)) = libc.AssignPtrUint8(dst+99, uint8_t((K+2*J+I+2)>>2)) + *(*uint8_t)(unsafe.Pointer(dst + 97)) = uint8_t((L + 2*K + J + 2) >> 2) } func TM4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:502:13: */ var x int32 var y int32 - var clip uintptr = ((uintptr(unsafe.Pointer(&clip11)) + uintptr(255)) - uintptr(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-1))))) + var clip uintptr = uintptr(unsafe.Pointer(&clip11)) + uintptr(255) - uintptr(*(*uint8_t)(unsafe.Pointer(top + libc.UintptrFromInt32(-1)))) for y = 0; y < 4; y++ { - var clip_table uintptr = (clip + uintptr(*(*uint8_t)(unsafe.Pointer(top + uintptr((-2 - y)))))) + var clip_table uintptr = clip + uintptr(*(*uint8_t)(unsafe.Pointer(top + uintptr(-2-y)))) for x = 0; x < 4; x++ { *(*uint8_t)(unsafe.Pointer(dst + uintptr(x))) = *(*uint8_t)(unsafe.Pointer(clip_table + uintptr(*(*uint8_t)(unsafe.Pointer(top + uintptr(x)))))) } @@ -17140,16 +16880,16 @@ func TM4(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:502:13: */ // Left samples are top[-5 .. -2], top_left is top[-1], top are // located at top[0..3], and top right is top[4..7] func Intra4Preds_C(tls *libc.TLS, dst uintptr, top uintptr) { /* enc.c:520:13: */ - DC4(tls, (uintptr((((3 * 16) * 32) + 0)) + dst), top) - TM4(tls, (uintptr(((((3 * 16) * 32) + 0) + 4)) + dst), top) - VE4(tls, (uintptr(((((3 * 16) * 32) + 0) + 8)) + dst), top) - HE4(tls, (uintptr(((((3 * 16) * 32) + 0) + 12)) + dst), top) - RD4(tls, (uintptr(((((3 * 16) * 32) + 0) + 16)) + dst), top) - VR4(tls, (uintptr(((((3 * 16) * 32) + 0) + 20)) + dst), top) - LD4(tls, (uintptr(((((3 * 16) * 32) + 0) + 24)) + dst), top) - VL4(tls, (uintptr(((((3 * 16) * 32) + 0) + 28)) + dst), top) - HD4(tls, (uintptr((((3 * 16) * 32) + (4 * 32))) + dst), top) - HU4(tls, (uintptr(((((3 * 16) * 32) + (4 * 32)) + 4)) + dst), top) + DC4(tls, uintptr(3*16*32+0)+dst, top) + TM4(tls, uintptr(3*16*32+0+4)+dst, top) + VE4(tls, uintptr(3*16*32+0+8)+dst, top) + HE4(tls, uintptr(3*16*32+0+12)+dst, top) + RD4(tls, uintptr(3*16*32+0+16)+dst, top) + VR4(tls, uintptr(3*16*32+0+20)+dst, top) + LD4(tls, uintptr(3*16*32+0+24)+dst, top) + VL4(tls, uintptr(3*16*32+0+28)+dst, top) + HD4(tls, uintptr(3*16*32+4*32)+dst, top) + HU4(tls, uintptr(3*16*32+4*32+4)+dst, top) } //------------------------------------------------------------------------------ @@ -17161,8 +16901,8 @@ func GetSSE(tls *libc.TLS, a uintptr, b uintptr, w int32, h int32) int32 { /* en var x int32 for y = 0; y < h; y++ { for x = 0; x < w; x++ { - var diff int32 = (int32(*(*uint8_t)(unsafe.Pointer(a + uintptr(x)))) - int32(*(*uint8_t)(unsafe.Pointer(b + uintptr(x))))) - count = count + (diff * diff) + var diff int32 = int32(*(*uint8_t)(unsafe.Pointer(a + uintptr(x)))) - int32(*(*uint8_t)(unsafe.Pointer(b + uintptr(x)))) + count = count + diff*diff } a += uintptr(32) b += uintptr(32) @@ -17194,7 +16934,7 @@ func Mean16x4_C(tls *libc.TLS, ref uintptr, dc uintptr) { /* enc.c:566:13: */ var avg uint32_t = uint32_t(0) for y = 0; y < 4; y++ { for x = 0; x < 4; x++ { - avg = avg + (uint32_t(*(*uint8_t)(unsafe.Pointer(ref + uintptr((x + (y * 32))))))) + avg = avg + uint32_t(*(*uint8_t)(unsafe.Pointer(ref + uintptr(x+y*32)))) } } *(*uint32_t)(unsafe.Pointer(dc + uintptr(k)*4)) = avg @@ -17226,14 +16966,14 @@ __1: goto __3 } { - var a0 int32 = (int32(*(*uint8_t)(unsafe.Pointer(in))) + int32(*(*uint8_t)(unsafe.Pointer(in + 2)))) - var a1 int32 = (int32(*(*uint8_t)(unsafe.Pointer(in + 1))) + int32(*(*uint8_t)(unsafe.Pointer(in + 3)))) - var a2 int32 = (int32(*(*uint8_t)(unsafe.Pointer(in + 1))) - int32(*(*uint8_t)(unsafe.Pointer(in + 3)))) - var a3 int32 = (int32(*(*uint8_t)(unsafe.Pointer(in))) - int32(*(*uint8_t)(unsafe.Pointer(in + 2)))) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((0+(i*4)))*4)) = (a0 + a1) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((1+(i*4)))*4)) = (a3 + a2) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((2+(i*4)))*4)) = (a3 - a2) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((3+(i*4)))*4)) = (a0 - a1) + var a0 int32 = int32(*(*uint8_t)(unsafe.Pointer(in))) + int32(*(*uint8_t)(unsafe.Pointer(in + 2))) + var a1 int32 = int32(*(*uint8_t)(unsafe.Pointer(in + 1))) + int32(*(*uint8_t)(unsafe.Pointer(in + 3))) + var a2 int32 = int32(*(*uint8_t)(unsafe.Pointer(in + 1))) - int32(*(*uint8_t)(unsafe.Pointer(in + 3))) + var a3 int32 = int32(*(*uint8_t)(unsafe.Pointer(in))) - int32(*(*uint8_t)(unsafe.Pointer(in + 2))) + *(*int32)(unsafe.Pointer(bp + uintptr(0+i*4)*4)) = a0 + a1 + *(*int32)(unsafe.Pointer(bp + uintptr(1+i*4)*4)) = a3 + a2 + *(*int32)(unsafe.Pointer(bp + uintptr(2+i*4)*4)) = a3 - a2 + *(*int32)(unsafe.Pointer(bp + uintptr(3+i*4)*4)) = a0 - a1 } goto __2 @@ -17251,19 +16991,19 @@ __4: goto __6 } { - var a0 int32 = (*(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((0+i))*4)) + *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((8+i))*4))) - var a1 int32 = (*(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((4+i))*4)) + *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((12+i))*4))) - var a2 int32 = (*(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((4+i))*4)) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((12+i))*4))) - var a3 int32 = (*(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((0+i))*4)) - *(*int32)(unsafe.Pointer((bp) /* &tmp[0] */ + uintptr((8+i))*4))) - var b0 int32 = (a0 + a1) - var b1 int32 = (a3 + a2) - var b2 int32 = (a3 - a2) - var b3 int32 = (a0 - a1) + var a0 int32 = *(*int32)(unsafe.Pointer(bp + uintptr(0+i)*4)) + *(*int32)(unsafe.Pointer(bp + uintptr(8+i)*4)) + var a1 int32 = *(*int32)(unsafe.Pointer(bp + uintptr(4+i)*4)) + *(*int32)(unsafe.Pointer(bp + uintptr(12+i)*4)) + var a2 int32 = *(*int32)(unsafe.Pointer(bp + uintptr(4+i)*4)) - *(*int32)(unsafe.Pointer(bp + uintptr(12+i)*4)) + var a3 int32 = *(*int32)(unsafe.Pointer(bp + uintptr(0+i)*4)) - *(*int32)(unsafe.Pointer(bp + uintptr(8+i)*4)) + var b0 int32 = a0 + a1 + var b1 int32 = a3 + a2 + var b2 int32 = a3 - a2 + var b3 int32 = a0 - a1 - sum = sum + (int32(*(*uint16_t)(unsafe.Pointer(w))) * libc.Xabs(tls, b0)) - sum = sum + (int32(*(*uint16_t)(unsafe.Pointer(w + 4*2))) * libc.Xabs(tls, b1)) - sum = sum + (int32(*(*uint16_t)(unsafe.Pointer(w + 8*2))) * libc.Xabs(tls, b2)) - sum = sum + (int32(*(*uint16_t)(unsafe.Pointer(w + 12*2))) * libc.Xabs(tls, b3)) + sum = sum + int32(*(*uint16_t)(unsafe.Pointer(w)))*libc.Xabs(tls, b0) + sum = sum + int32(*(*uint16_t)(unsafe.Pointer(w + 4*2)))*libc.Xabs(tls, b1) + sum = sum + int32(*(*uint16_t)(unsafe.Pointer(w + 8*2)))*libc.Xabs(tls, b2) + sum = sum + int32(*(*uint16_t)(unsafe.Pointer(w + 12*2)))*libc.Xabs(tls, b3) } goto __5 @@ -17280,16 +17020,16 @@ __6: func Disto4x4_C(tls *libc.TLS, a uintptr, b uintptr, w uintptr) int32 { /* enc.c:624:12: */ var sum1 int32 = TTransform(tls, a, w) var sum2 int32 = TTransform(tls, b, w) - return (libc.Xabs(tls, (sum2-sum1)) >> 5) + return libc.Xabs(tls, sum2-sum1) >> 5 } func Disto16x16_C(tls *libc.TLS, a uintptr, b uintptr, w uintptr) int32 { /* enc.c:631:12: */ var D int32 = 0 var x int32 var y int32 - for y = 0; y < (16 * 32); y = y + (4 * 32) { - for x = 0; x < 16; x = x + (4) { - D = D + (Disto4x4_C(tls, ((a + uintptr(x)) + uintptr(y)), ((b + uintptr(x)) + uintptr(y)), w)) + for y = 0; y < 16*32; y = y + 4*32 { + for x = 0; x < 16; x = x + 4 { + D = D + Disto4x4_C(tls, a+uintptr(x)+uintptr(y), b+uintptr(x)+uintptr(y), w) } } return D @@ -17309,17 +17049,17 @@ func QuantizeBlock_C(tls *libc.TLS, in uintptr, out uintptr, mtx uintptr) int32 var n int32 for n = 0; n < 16; n++ { var j int32 = int32(kZigzag1[n]) - var sign int32 = (libc.Bool32(int32(*(*int16_t)(unsafe.Pointer(in + uintptr(j)*2))) < 0)) - var coeff uint32_t = (uint32_t((func() int32 { + var sign int32 = libc.Bool32(int32(*(*int16_t)(unsafe.Pointer(in + uintptr(j)*2))) < 0) + var coeff uint32_t = uint32_t(func() int32 { if sign != 0 { return -int32(*(*int16_t)(unsafe.Pointer(in + uintptr(j)*2))) } return int32(*(*int16_t)(unsafe.Pointer(in + uintptr(j)*2))) - }()) + int32(*(*uint16_t)(unsafe.Pointer((mtx + 192 /* &.sharpen_ */) + uintptr(j)*2))))) - if coeff > *(*uint32_t)(unsafe.Pointer((mtx + 128 /* &.zthresh_ */) + uintptr(j)*4)) { - var Q uint32_t = uint32_t(*(*uint16_t)(unsafe.Pointer((mtx /* &.q_ */) + uintptr(j)*2))) - var iQ uint32_t = uint32_t(*(*uint16_t)(unsafe.Pointer((mtx + 32 /* &.iq_ */) + uintptr(j)*2))) - var B uint32_t = *(*uint32_t)(unsafe.Pointer((mtx + 64 /* &.bias_ */) + uintptr(j)*4)) + }() + int32(*(*uint16_t)(unsafe.Pointer(mtx + 192 + uintptr(j)*2)))) + if coeff > *(*uint32_t)(unsafe.Pointer(mtx + 128 + uintptr(j)*4)) { + var Q uint32_t = uint32_t(*(*uint16_t)(unsafe.Pointer(mtx + uintptr(j)*2))) + var iQ uint32_t = uint32_t(*(*uint16_t)(unsafe.Pointer(mtx + 32 + uintptr(j)*2))) + var B uint32_t = *(*uint32_t)(unsafe.Pointer(mtx + 64 + uintptr(j)*4)) var level int32 = QUANTDIV(tls, coeff, iQ, B) if level > MAX_LEVEL { level = MAX_LEVEL @@ -17327,7 +17067,7 @@ func QuantizeBlock_C(tls *libc.TLS, in uintptr, out uintptr, mtx uintptr) int32 if sign != 0 { level = -level } - *(*int16_t)(unsafe.Pointer(in + uintptr(j)*2)) = (int16_t(level * int32(Q))) + *(*int16_t)(unsafe.Pointer(in + uintptr(j)*2)) = int16_t(level * int32(Q)) *(*int16_t)(unsafe.Pointer(out + uintptr(n)*2)) = int16_t(level) if level != 0 { last = n @@ -17337,17 +17077,17 @@ func QuantizeBlock_C(tls *libc.TLS, in uintptr, out uintptr, mtx uintptr) int32 *(*int16_t)(unsafe.Pointer(in + uintptr(j)*2)) = int16(0) } } - return (libc.Bool32(last >= 0)) + return libc.Bool32(last >= 0) } func Quantize2Blocks_C(tls *libc.TLS, in uintptr, out uintptr, mtx uintptr) int32 { /* enc.c:680:12: */ var nz int32 - nz = ((*struct { + nz = (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8EncQuantizeBlock})).f(tls, (in+uintptr((0*16))*2), (out+uintptr((0*16))*2), mtx) << 0) - nz = nz | ((*struct { + })(unsafe.Pointer(&struct{ uintptr }{VP8EncQuantizeBlock})).f(tls, in+uintptr(0*16)*2, out+uintptr(0*16)*2, mtx) << 0 + nz = nz | (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8EncQuantizeBlock})).f(tls, (in+uintptr((1*16))*2), (out+uintptr((1*16))*2), mtx) << 1) + })(unsafe.Pointer(&struct{ uintptr }{VP8EncQuantizeBlock})).f(tls, in+uintptr(1*16)*2, out+uintptr(1*16)*2, mtx)<<1 return nz } @@ -17398,7 +17138,7 @@ var VP8Copy4x4 VP8BlockCopy /* enc.c:732:14: */ var VP8Copy16x8 VP8BlockCopy /* enc.c:733:14: */ func VP8EncDspInit(tls *libc.TLS) { /* enc.c:742:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if VP8EncDspInit_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -17478,7 +17218,7 @@ func VP8EncDspInit_body(tls *libc.TLS) { /* enc.c:742:1: */ }{Copy16x8_C})) // If defined, use CPUInfo() to overwrite some pointers with faster versions. - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } @@ -17490,11 +17230,11 @@ func PredictLine_C(tls *libc.TLS, src uintptr, pred uintptr, dst uintptr, length var i int32 if inverse != 0 { for i = 0; i < length; i++ { - *(*uint8_t)(unsafe.Pointer(dst + uintptr(i))) = (uint8_t(int32(*(*uint8_t)(unsafe.Pointer(src + uintptr(i)))) + int32(*(*uint8_t)(unsafe.Pointer(pred + uintptr(i)))))) + *(*uint8_t)(unsafe.Pointer(dst + uintptr(i))) = uint8_t(int32(*(*uint8_t)(unsafe.Pointer(src + uintptr(i)))) + int32(*(*uint8_t)(unsafe.Pointer(pred + uintptr(i))))) } } else { for i = 0; i < length; i++ { - *(*uint8_t)(unsafe.Pointer(dst + uintptr(i))) = (uint8_t(int32(*(*uint8_t)(unsafe.Pointer(src + uintptr(i)))) - int32(*(*uint8_t)(unsafe.Pointer(pred + uintptr(i)))))) + *(*uint8_t)(unsafe.Pointer(dst + uintptr(i))) = uint8_t(int32(*(*uint8_t)(unsafe.Pointer(src + uintptr(i)))) - int32(*(*uint8_t)(unsafe.Pointer(pred + uintptr(i))))) } } } @@ -17504,8 +17244,8 @@ func PredictLine_C(tls *libc.TLS, src uintptr, pred uintptr, dst uintptr, length func DoHorizontalFilter_C(tls *libc.TLS, in uintptr, width int32, height int32, stride int32, row int32, num_rows int32, inverse int32, out uintptr) { /* filters.c:45:25: */ var preds uintptr - var start_offset size_t = (size_t(row * stride)) - var last_row int32 = (row + num_rows) + var start_offset size_t = size_t(row * stride) + var last_row int32 = row + num_rows _ = height in += uintptr(start_offset) @@ -17519,7 +17259,7 @@ func DoHorizontalFilter_C(tls *libc.TLS, in uintptr, width int32, height int32, if row == 0 { // Leftmost pixel is the same as input for topmost scanline. *(*uint8_t)(unsafe.Pointer(out)) = *(*uint8_t)(unsafe.Pointer(in)) - PredictLine_C(tls, (in + uintptr(1)), preds, (out + uintptr(1)), (width - 1), inverse) + PredictLine_C(tls, in+uintptr(1), preds, out+uintptr(1), width-1, inverse) row = 1 preds += uintptr(stride) in += uintptr(stride) @@ -17529,8 +17269,8 @@ func DoHorizontalFilter_C(tls *libc.TLS, in uintptr, width int32, height int32, // Filter line-by-line. for row < last_row { // Leftmost pixel is predicted from above. - PredictLine_C(tls, in, (preds - uintptr(stride)), out, 1, inverse) - PredictLine_C(tls, (in + uintptr(1)), preds, (out + uintptr(1)), (width - 1), inverse) + PredictLine_C(tls, in, preds-uintptr(stride), out, 1, inverse) + PredictLine_C(tls, in+uintptr(1), preds, out+uintptr(1), width-1, inverse) row++ preds += uintptr(stride) in += uintptr(stride) @@ -17543,8 +17283,8 @@ func DoHorizontalFilter_C(tls *libc.TLS, in uintptr, width int32, height int32, func DoVerticalFilter_C(tls *libc.TLS, in uintptr, width int32, height int32, stride int32, row int32, num_rows int32, inverse int32, out uintptr) { /* filters.c:82:25: */ var preds uintptr - var start_offset size_t = (size_t(row * stride)) - var last_row int32 = (row + num_rows) + var start_offset size_t = size_t(row * stride) + var last_row int32 = row + num_rows _ = height in += uintptr(start_offset) @@ -17559,7 +17299,7 @@ func DoVerticalFilter_C(tls *libc.TLS, in uintptr, width int32, height int32, st // Very first top-left pixel is copied. *(*uint8_t)(unsafe.Pointer(out)) = *(*uint8_t)(unsafe.Pointer(in)) // Rest of top scan-line is left-predicted. - PredictLine_C(tls, (in + uintptr(1)), preds, (out + uintptr(1)), (width - 1), inverse) + PredictLine_C(tls, in+uintptr(1), preds, out+uintptr(1), width-1, inverse) row = 1 in += uintptr(stride) out += uintptr(stride) @@ -17582,8 +17322,8 @@ func DoVerticalFilter_C(tls *libc.TLS, in uintptr, width int32, height int32, st // Gradient filter. func GradientPredictor_C(tls *libc.TLS, a uint8_t, b uint8_t, c uint8_t) int32 { /* filters.c:121:24: */ - var g int32 = ((int32(a) + int32(b)) - int32(c)) - if (g & libc.CplInt32(0xff)) == 0 { + var g int32 = int32(a) + int32(b) - int32(c) + if g&libc.CplInt32(0xff) == 0 { return g } if g < 0 { @@ -17594,8 +17334,8 @@ func GradientPredictor_C(tls *libc.TLS, a uint8_t, b uint8_t, c uint8_t) int32 { func DoGradientFilter_C(tls *libc.TLS, in uintptr, width int32, height int32, stride int32, row int32, num_rows int32, inverse int32, out uintptr) { /* filters.c:127:25: */ var preds uintptr - var start_offset size_t = (size_t(row * stride)) - var last_row int32 = (row + num_rows) + var start_offset size_t = size_t(row * stride) + var last_row int32 = row + num_rows _ = height in += uintptr(start_offset) @@ -17609,7 +17349,7 @@ func DoGradientFilter_C(tls *libc.TLS, in uintptr, width int32, height int32, st // left prediction for top scan-line if row == 0 { *(*uint8_t)(unsafe.Pointer(out)) = *(*uint8_t)(unsafe.Pointer(in)) - PredictLine_C(tls, (in + uintptr(1)), preds, (out + uintptr(1)), (width - 1), inverse) + PredictLine_C(tls, in+uintptr(1), preds, out+uintptr(1), width-1, inverse) row = 1 preds += uintptr(stride) in += uintptr(stride) @@ -17620,17 +17360,17 @@ func DoGradientFilter_C(tls *libc.TLS, in uintptr, width int32, height int32, st for row < last_row { var w int32 // leftmost pixel: predict from above. - PredictLine_C(tls, in, (preds - uintptr(stride)), out, 1, inverse) + PredictLine_C(tls, in, preds-uintptr(stride), out, 1, inverse) for w = 1; w < width; w++ { - var pred int32 = GradientPredictor_C(tls, *(*uint8_t)(unsafe.Pointer(preds + uintptr((w - 1)))), - *(*uint8_t)(unsafe.Pointer(preds + uintptr((w - stride)))), - *(*uint8_t)(unsafe.Pointer(preds + uintptr(((w - stride) - 1))))) - *(*uint8_t)(unsafe.Pointer(out + uintptr(w))) = (uint8_t(int32(*(*uint8_t)(unsafe.Pointer(in + uintptr(w)))) + (func() int32 { + var pred int32 = GradientPredictor_C(tls, *(*uint8_t)(unsafe.Pointer(preds + uintptr(w-1))), + *(*uint8_t)(unsafe.Pointer(preds + uintptr(w-stride))), + *(*uint8_t)(unsafe.Pointer(preds + uintptr(w-stride-1)))) + *(*uint8_t)(unsafe.Pointer(out + uintptr(w))) = uint8_t(int32(*(*uint8_t)(unsafe.Pointer(in + uintptr(w)))) + func() int32 { if inverse != 0 { return pred } return -pred - }()))) + }()) } row++ preds += uintptr(stride) @@ -17658,32 +17398,32 @@ func GradientFilter_C(tls *libc.TLS, data uintptr, width int32, height int32, st func HorizontalUnfilter_C(tls *libc.TLS, prev uintptr, in uintptr, out uintptr, width int32) { /* filters.c:192:13: */ var pred uint8_t - if prev == (uintptr(0)) { + if prev == uintptr(0) { pred = uint8(0) } else { pred = *(*uint8_t)(unsafe.Pointer(prev)) } var i int32 for i = 0; i < width; i++ { - *(*uint8_t)(unsafe.Pointer(out + uintptr(i))) = (uint8_t(int32(pred) + int32(*(*uint8_t)(unsafe.Pointer(in + uintptr(i)))))) + *(*uint8_t)(unsafe.Pointer(out + uintptr(i))) = uint8_t(int32(pred) + int32(*(*uint8_t)(unsafe.Pointer(in + uintptr(i))))) pred = *(*uint8_t)(unsafe.Pointer(out + uintptr(i))) } } func VerticalUnfilter_C(tls *libc.TLS, prev uintptr, in uintptr, out uintptr, width int32) { /* filters.c:203:13: */ - if prev == (uintptr(0)) { - HorizontalUnfilter_C(tls, (uintptr(0)), in, out, width) + if prev == uintptr(0) { + HorizontalUnfilter_C(tls, uintptr(0), in, out, width) } else { var i int32 for i = 0; i < width; i++ { - *(*uint8_t)(unsafe.Pointer(out + uintptr(i))) = (uint8_t(int32(*(*uint8_t)(unsafe.Pointer(prev + uintptr(i)))) + int32(*(*uint8_t)(unsafe.Pointer(in + uintptr(i)))))) + *(*uint8_t)(unsafe.Pointer(out + uintptr(i))) = uint8_t(int32(*(*uint8_t)(unsafe.Pointer(prev + uintptr(i)))) + int32(*(*uint8_t)(unsafe.Pointer(in + uintptr(i))))) } } } func GradientUnfilter_C(tls *libc.TLS, prev uintptr, in uintptr, out uintptr, width int32) { /* filters.c:214:13: */ - if prev == (uintptr(0)) { - HorizontalUnfilter_C(tls, (uintptr(0)), in, out, width) + if prev == uintptr(0) { + HorizontalUnfilter_C(tls, uintptr(0), in, out, width) } else { var top uint8_t = *(*uint8_t)(unsafe.Pointer(prev)) var top_left uint8_t = top @@ -17691,7 +17431,7 @@ func GradientUnfilter_C(tls *libc.TLS, prev uintptr, in uintptr, out uintptr, wi var i int32 for i = 0; i < width; i++ { top = *(*uint8_t)(unsafe.Pointer(prev + uintptr(i))) // need to read this first, in case prev==out - left = (uint8_t(int32(*(*uint8_t)(unsafe.Pointer(in + uintptr(i)))) + GradientPredictor_C(tls, left, top, top_left))) + left = uint8_t(int32(*(*uint8_t)(unsafe.Pointer(in + uintptr(i)))) + GradientPredictor_C(tls, left, top, top_left)) top_left = top *(*uint8_t)(unsafe.Pointer(out + uintptr(i))) = left } @@ -17705,7 +17445,7 @@ var WebPFilters [4]WebPFilterFunc /* filters.c:233:16: */ var WebPUnfilters [4]WebPUnfilterFunc /* filters.c:234:18: */ func VP8FiltersInit(tls *libc.TLS) { /* filters.c:241:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if VP8FiltersInit_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -17717,7 +17457,7 @@ func VP8FiltersInit(tls *libc.TLS) { /* filters.c:241:1: */ var VP8FiltersInit_body_last_cpuinfo_used VP8CPUInfo = 0 /* filters.c:241:1 */ func VP8FiltersInit_body(tls *libc.TLS) { /* filters.c:241:1: */ - WebPUnfilters[WEBP_FILTER_NONE] = (uintptr(0)) + WebPUnfilters[WEBP_FILTER_NONE] = uintptr(0) WebPUnfilters[WEBP_FILTER_HORIZONTAL] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) }{HorizontalUnfilter_C})) @@ -17728,7 +17468,7 @@ func VP8FiltersInit_body(tls *libc.TLS) { /* filters.c:241:1: */ f func(*libc.TLS, uintptr, uintptr, uintptr, int32) }{GradientUnfilter_C})) - WebPFilters[WEBP_FILTER_NONE] = (uintptr(0)) + WebPFilters[WEBP_FILTER_NONE] = uintptr(0) WebPFilters[WEBP_FILTER_HORIZONTAL] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) }{HorizontalFilter_C})) @@ -17739,7 +17479,7 @@ func VP8FiltersInit_body(tls *libc.TLS) { /* filters.c:241:1: */ f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) }{GradientFilter_C})) - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } @@ -18164,7 +17904,7 @@ type double_t = float64 /* math.h:150:16 */ // Image transforms. func Average2(tls *libc.TLS, a0 uint32_t, a1 uint32_t) uint32_t { /* lossless.c:29:29: */ - return ((((a0 ^ a1) & 0xfefefefe) >> 1) + (a0 & a1)) + return (a0^a1)&0xfefefefe>>1 + a0&a1 } func Average3(tls *libc.TLS, a0 uint32_t, a1 uint32_t, a2 uint32_t) uint32_t { /* lossless.c:33:29: */ @@ -18181,49 +17921,49 @@ func Clip255(tls *libc.TLS, a uint32_t) uint32_t { /* lossless.c:42:29: */ } // return 0, when a is a negative integer. // return 255, when a is positive. - return (^a >> 24) + return ^a >> 24 } func AddSubtractComponentFull(tls *libc.TLS, a int32, b int32, c int32) int32 { /* lossless.c:51:24: */ - return int32(Clip255(tls, (uint32((a + b) - c)))) + return int32(Clip255(tls, uint32(a+b-c))) } func ClampedAddSubtractFull(tls *libc.TLS, c0 uint32_t, c1 uint32_t, c2 uint32_t) uint32_t { /* lossless.c:55:29: */ - var a int32 = AddSubtractComponentFull(tls, (int32(c0 >> 24)), (int32(c1 >> 24)), (int32(c2 >> 24))) - var r int32 = AddSubtractComponentFull(tls, (int32((c0 >> 16) & uint32_t(0xff))), - (int32((c1 >> 16) & uint32_t(0xff))), - (int32((c2 >> 16) & uint32_t(0xff)))) - var g int32 = AddSubtractComponentFull(tls, (int32((c0 >> 8) & uint32_t(0xff))), - (int32((c1 >> 8) & uint32_t(0xff))), - (int32((c2 >> 8) & uint32_t(0xff)))) - var b int32 = AddSubtractComponentFull(tls, (int32(c0 & uint32_t(0xff))), (int32(c1 & uint32_t(0xff))), (int32(c2 & uint32_t(0xff)))) - return ((((uint32_t(a) << 24) | (uint32_t(r << 16))) | (uint32_t(g << 8))) | uint32_t(b)) + var a int32 = AddSubtractComponentFull(tls, int32(c0>>24), int32(c1>>24), int32(c2>>24)) + var r int32 = AddSubtractComponentFull(tls, int32(c0>>16&uint32_t(0xff)), + int32(c1>>16&uint32_t(0xff)), + int32(c2>>16&uint32_t(0xff))) + var g int32 = AddSubtractComponentFull(tls, int32(c0>>8&uint32_t(0xff)), + int32(c1>>8&uint32_t(0xff)), + int32(c2>>8&uint32_t(0xff))) + var b int32 = AddSubtractComponentFull(tls, int32(c0&uint32_t(0xff)), int32(c1&uint32_t(0xff)), int32(c2&uint32_t(0xff))) + return uint32_t(a)<<24 | uint32_t(r<<16) | uint32_t(g<<8) | uint32_t(b) } func AddSubtractComponentHalf(tls *libc.TLS, a int32, b int32) int32 { /* lossless.c:68:24: */ - return int32(Clip255(tls, (uint32(a + ((a - b) / 2))))) + return int32(Clip255(tls, uint32(a+(a-b)/2))) } func ClampedAddSubtractHalf(tls *libc.TLS, c0 uint32_t, c1 uint32_t, c2 uint32_t) uint32_t { /* lossless.c:72:29: */ var ave uint32_t = Average2(tls, c0, c1) - var a int32 = AddSubtractComponentHalf(tls, (int32(ave >> 24)), (int32(c2 >> 24))) - var r int32 = AddSubtractComponentHalf(tls, (int32((ave >> 16) & uint32_t(0xff))), (int32((c2 >> 16) & uint32_t(0xff)))) - var g int32 = AddSubtractComponentHalf(tls, (int32((ave >> 8) & uint32_t(0xff))), (int32((c2 >> 8) & uint32_t(0xff)))) - var b int32 = AddSubtractComponentHalf(tls, (int32((ave >> 0) & uint32_t(0xff))), (int32((c2 >> 0) & uint32_t(0xff)))) - return ((((uint32_t(a) << 24) | (uint32_t(r << 16))) | (uint32_t(g << 8))) | uint32_t(b)) + var a int32 = AddSubtractComponentHalf(tls, int32(ave>>24), int32(c2>>24)) + var r int32 = AddSubtractComponentHalf(tls, int32(ave>>16&uint32_t(0xff)), int32(c2>>16&uint32_t(0xff))) + var g int32 = AddSubtractComponentHalf(tls, int32(ave>>8&uint32_t(0xff)), int32(c2>>8&uint32_t(0xff))) + var b int32 = AddSubtractComponentHalf(tls, int32(ave>>0&uint32_t(0xff)), int32(c2>>0&uint32_t(0xff))) + return uint32_t(a)<<24 | uint32_t(r<<16) | uint32_t(g<<8) | uint32_t(b) } // gcc <= 4.9 on ARM generates incorrect code in Select() when Sub3() is // inlined. func Sub3(tls *libc.TLS, a int32, b int32, c int32) int32 { /* lossless.c:90:25: */ - var pb int32 = (b - c) - var pa int32 = (a - c) - return (libc.Xabs(tls, pb) - libc.Xabs(tls, pa)) + var pb int32 = b - c + var pa int32 = a - c + return libc.Xabs(tls, pb) - libc.Xabs(tls, pa) } func Select(tls *libc.TLS, a uint32_t, b uint32_t, c uint32_t) uint32_t { /* lossless.c:98:29: */ - var pa_minus_pb int32 = (((Sub3(tls, (int32(a>>24)), (int32(b>>24)), (int32(c>>24))) + Sub3(tls, (int32((a>>16)&uint32_t(0xff))), (int32((b>>16)&uint32_t(0xff))), (int32((c>>16)&uint32_t(0xff))))) + Sub3(tls, (int32((a>>8)&uint32_t(0xff))), (int32((b>>8)&uint32_t(0xff))), (int32((c>>8)&uint32_t(0xff))))) + Sub3(tls, (int32((a)&uint32_t(0xff))), (int32((b)&uint32_t(0xff))), (int32((c)&uint32_t(0xff))))) + var pa_minus_pb int32 = Sub3(tls, int32(a>>24), int32(b>>24), int32(c>>24)) + Sub3(tls, int32(a>>16&uint32_t(0xff)), int32(b>>16&uint32_t(0xff)), int32(c>>16&uint32_t(0xff))) + Sub3(tls, int32(a>>8&uint32_t(0xff)), int32(b>>8&uint32_t(0xff)), int32(c>>8&uint32_t(0xff))) + Sub3(tls, int32(a&uint32_t(0xff)), int32(b&uint32_t(0xff)), int32(c&uint32_t(0xff))) if pa_minus_pb <= 0 { return a } @@ -18326,7 +18066,7 @@ func PredictorAdd1_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorAdd2_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless.c:199:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor2_C(tls, (out + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor2_C(tls, out+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LAddPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -18334,7 +18074,7 @@ func PredictorAdd2_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorAdd3_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless.c:200:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor3_C(tls, (out + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor3_C(tls, out+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LAddPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -18342,7 +18082,7 @@ func PredictorAdd3_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorAdd4_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless.c:201:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor4_C(tls, (out + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor4_C(tls, out+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LAddPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -18350,7 +18090,7 @@ func PredictorAdd4_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorAdd5_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless.c:202:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor5_C(tls, (out + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor5_C(tls, out+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LAddPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -18358,7 +18098,7 @@ func PredictorAdd5_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorAdd6_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless.c:203:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor6_C(tls, (out + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor6_C(tls, out+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LAddPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -18366,7 +18106,7 @@ func PredictorAdd6_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorAdd7_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless.c:204:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor7_C(tls, (out + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor7_C(tls, out+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LAddPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -18374,7 +18114,7 @@ func PredictorAdd7_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorAdd8_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless.c:205:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor8_C(tls, (out + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor8_C(tls, out+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LAddPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -18382,7 +18122,7 @@ func PredictorAdd8_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorAdd9_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless.c:206:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor9_C(tls, (out + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor9_C(tls, out+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LAddPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -18390,7 +18130,7 @@ func PredictorAdd9_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorAdd10_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless.c:207:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor10_C(tls, (out + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor10_C(tls, out+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LAddPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -18398,7 +18138,7 @@ func PredictorAdd10_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32 func PredictorAdd11_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless.c:208:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor11_C(tls, (out + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor11_C(tls, out+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LAddPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -18406,7 +18146,7 @@ func PredictorAdd11_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32 func PredictorAdd12_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless.c:209:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor12_C(tls, (out + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor12_C(tls, out+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LAddPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -18414,7 +18154,7 @@ func PredictorAdd12_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32 func PredictorAdd13_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless.c:210:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor13_C(tls, (out + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor13_C(tls, out+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LAddPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -18425,42 +18165,42 @@ func PredictorAdd13_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32 func PredictorInverseTransform_C(tls *libc.TLS, transform uintptr, y_start int32, y_end int32, in uintptr, out uintptr) { /* lossless.c:215:13: */ var width int32 = (*VP8LTransform)(unsafe.Pointer(transform)).xsize_ if y_start == 0 { // First Row follows the L (mode=1) mode. - PredictorAdd0_C(tls, in, (uintptr(0)), 1, out) - PredictorAdd1_C(tls, (in + uintptr(1)*4), (uintptr(0)), (width - 1), (out + uintptr(1)*4)) - in += 4 * (uintptr(width)) - out += 4 * (uintptr(width)) + PredictorAdd0_C(tls, in, uintptr(0), 1, out) + PredictorAdd1_C(tls, in+uintptr(1)*4, uintptr(0), width-1, out+uintptr(1)*4) + in += 4 * uintptr(width) + out += 4 * uintptr(width) y_start++ } { var y int32 = y_start - var tile_width int32 = (int32(1) << (*VP8LTransform)(unsafe.Pointer(transform)).bits_) - var mask int32 = (tile_width - 1) + var tile_width int32 = int32(1) << (*VP8LTransform)(unsafe.Pointer(transform)).bits_ + var mask int32 = tile_width - 1 var tiles_per_row int32 = int32(VP8LSubSampleSize(tls, uint32(width), uint32((*VP8LTransform)(unsafe.Pointer(transform)).bits_))) - var pred_mode_base uintptr = ((*VP8LTransform)(unsafe.Pointer(transform)).data_ + uintptr(((y>>(*VP8LTransform)(unsafe.Pointer(transform)).bits_)*tiles_per_row))*4) + var pred_mode_base uintptr = (*VP8LTransform)(unsafe.Pointer(transform)).data_ + uintptr(y>>(*VP8LTransform)(unsafe.Pointer(transform)).bits_*tiles_per_row)*4 for y < y_end { var pred_mode_src uintptr = pred_mode_base var x int32 = 1 // First pixel follows the T (mode=2) mode. - PredictorAdd2_C(tls, in, (out - uintptr(width)*4), 1, out) + PredictorAdd2_C(tls, in, out-uintptr(width)*4, 1, out) // .. the rest: for x < width { - var pred_func VP8LPredictorAddSubFunc = VP8LPredictorsAdd[(((*(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&pred_mode_src, 4)))) >> 8) & uint32_t(0xf))] - var x_end int32 = ((x & ^mask) + tile_width) + var pred_func VP8LPredictorAddSubFunc = VP8LPredictorsAdd[*(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&pred_mode_src, 4)))>>8&uint32_t(0xf)] + var x_end int32 = x & ^mask + tile_width if x_end > width { x_end = width } (*struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{pred_func})).f(tls, (in + uintptr(x)*4), ((out + uintptr(x)*4) - uintptr(width)*4), (x_end - x), (out + uintptr(x)*4)) + })(unsafe.Pointer(&struct{ uintptr }{pred_func})).f(tls, in+uintptr(x)*4, out+uintptr(x)*4-uintptr(width)*4, x_end-x, out+uintptr(x)*4) x = x_end } - in += 4 * (uintptr(width)) - out += 4 * (uintptr(width)) + in += 4 * uintptr(width) + out += 4 * uintptr(width) y++ - if (y & mask) == 0 { // Use the same mask, since tiles are squares. - pred_mode_base += 4 * (uintptr(tiles_per_row)) + if y&mask == 0 { // Use the same mask, since tiles are squares. + pred_mode_base += 4 * uintptr(tiles_per_row) } } @@ -18473,38 +18213,38 @@ func VP8LAddGreenToBlueAndRed_C(tls *libc.TLS, src uintptr, num_pixels int32, ds var i int32 for i = 0; i < num_pixels; i++ { var argb uint32_t = *(*uint32_t)(unsafe.Pointer(src + uintptr(i)*4)) - var green uint32_t = ((argb >> 8) & uint32_t(0xff)) - var red_blue uint32_t = (argb & 0x00ff00ff) - red_blue = red_blue + ((green << 16) | green) - red_blue = red_blue & (0x00ff00ff) - *(*uint32_t)(unsafe.Pointer(dst + uintptr(i)*4)) = ((argb & 0xff00ff00) | red_blue) + var green uint32_t = argb >> 8 & uint32_t(0xff) + var red_blue uint32_t = argb & 0x00ff00ff + red_blue = red_blue + (green<<16 | green) + red_blue = red_blue & 0x00ff00ff + *(*uint32_t)(unsafe.Pointer(dst + uintptr(i)*4)) = argb&0xff00ff00 | red_blue } } func ColorTransformDelta(tls *libc.TLS, color_pred int8_t, color int8_t) int32 { /* lossless.c:274:24: */ - return ((int32(color_pred) * int32(color)) >> 5) + return int32(color_pred) * int32(color) >> 5 } func ColorCodeToMultipliers(tls *libc.TLS, color_code uint32_t, m uintptr) { /* lossless.c:279:25: */ - (*VP8LMultipliers)(unsafe.Pointer(m)).green_to_red_ = (uint8_t((color_code >> 0) & uint32_t(0xff))) - (*VP8LMultipliers)(unsafe.Pointer(m)).green_to_blue_ = (uint8_t((color_code >> 8) & uint32_t(0xff))) - (*VP8LMultipliers)(unsafe.Pointer(m)).red_to_blue_ = (uint8_t((color_code >> 16) & uint32_t(0xff))) + (*VP8LMultipliers)(unsafe.Pointer(m)).green_to_red_ = uint8_t(color_code >> 0 & uint32_t(0xff)) + (*VP8LMultipliers)(unsafe.Pointer(m)).green_to_blue_ = uint8_t(color_code >> 8 & uint32_t(0xff)) + (*VP8LMultipliers)(unsafe.Pointer(m)).red_to_blue_ = uint8_t(color_code >> 16 & uint32_t(0xff)) } func VP8LTransformColorInverse_C(tls *libc.TLS, m uintptr, src uintptr, num_pixels int32, dst uintptr) { /* lossless.c:286:6: */ var i int32 for i = 0; i < num_pixels; i++ { var argb uint32_t = *(*uint32_t)(unsafe.Pointer(src + uintptr(i)*4)) - var green int8_t = (int8_t(argb >> 8)) - var red uint32_t = (argb >> 16) - var new_red int32 = (int32(red & uint32_t(0xff))) - var new_blue int32 = (int32(argb & uint32_t(0xff))) - new_red = new_red + (ColorTransformDelta(tls, int8((*VP8LMultipliers)(unsafe.Pointer(m)).green_to_red_), green)) - new_red = new_red & (0xff) - new_blue = new_blue + (ColorTransformDelta(tls, int8((*VP8LMultipliers)(unsafe.Pointer(m)).green_to_blue_), green)) - new_blue = new_blue + (ColorTransformDelta(tls, int8((*VP8LMultipliers)(unsafe.Pointer(m)).red_to_blue_), int8_t(new_red))) - new_blue = new_blue & (0xff) - *(*uint32_t)(unsafe.Pointer(dst + uintptr(i)*4)) = (((argb & 0xff00ff00) | (uint32_t(new_red << 16))) | (uint32_t(new_blue))) + var green int8_t = int8_t(argb >> 8) + var red uint32_t = argb >> 16 + var new_red int32 = int32(red & uint32_t(0xff)) + var new_blue int32 = int32(argb & uint32_t(0xff)) + new_red = new_red + ColorTransformDelta(tls, int8((*VP8LMultipliers)(unsafe.Pointer(m)).green_to_red_), green) + new_red = new_red & 0xff + new_blue = new_blue + ColorTransformDelta(tls, int8((*VP8LMultipliers)(unsafe.Pointer(m)).green_to_blue_), green) + new_blue = new_blue + ColorTransformDelta(tls, int8((*VP8LMultipliers)(unsafe.Pointer(m)).red_to_blue_), int8_t(new_red)) + new_blue = new_blue & 0xff + *(*uint32_t)(unsafe.Pointer(dst + uintptr(i)*4)) = argb&0xff00ff00 | uint32_t(new_red<<16) | uint32_t(new_blue) } } @@ -18514,38 +18254,38 @@ func ColorSpaceInverseTransform_C(tls *libc.TLS, transform uintptr, y_start int3 defer tls.Free(3) var width int32 = (*VP8LTransform)(unsafe.Pointer(transform)).xsize_ - var tile_width int32 = (int32(1) << (*VP8LTransform)(unsafe.Pointer(transform)).bits_) - var mask int32 = (tile_width - 1) - var safe_width int32 = (width & ^mask) - var remaining_width int32 = (width - safe_width) + var tile_width int32 = int32(1) << (*VP8LTransform)(unsafe.Pointer(transform)).bits_ + var mask int32 = tile_width - 1 + var safe_width int32 = width & ^mask + var remaining_width int32 = width - safe_width var tiles_per_row int32 = int32(VP8LSubSampleSize(tls, uint32(width), uint32((*VP8LTransform)(unsafe.Pointer(transform)).bits_))) var y int32 = y_start - var pred_row uintptr = ((*VP8LTransform)(unsafe.Pointer(transform)).data_ + uintptr(((y>>(*VP8LTransform)(unsafe.Pointer(transform)).bits_)*tiles_per_row))*4) + var pred_row uintptr = (*VP8LTransform)(unsafe.Pointer(transform)).data_ + uintptr(y>>(*VP8LTransform)(unsafe.Pointer(transform)).bits_*tiles_per_row)*4 for y < y_end { var pred uintptr = pred_row *(*VP8LMultipliers)(unsafe.Pointer(bp /* m */)) = VP8LMultipliers{} - var src_safe_end uintptr = (src + uintptr(safe_width)*4) - var src_end uintptr = (src + uintptr(width)*4) + var src_safe_end uintptr = src + uintptr(safe_width)*4 + var src_end uintptr = src + uintptr(width)*4 for src < src_safe_end { - ColorCodeToMultipliers(tls, *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&pred, 4))), (bp) /* &m */) + ColorCodeToMultipliers(tls, *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&pred, 4))), bp) (*struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8LTransformColorInverse})).f(tls, (bp) /* &m */, src, tile_width, dst) - src += 4 * (uintptr(tile_width)) - dst += 4 * (uintptr(tile_width)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LTransformColorInverse})).f(tls, bp /* &m */, src, tile_width, dst) + src += 4 * uintptr(tile_width) + dst += 4 * uintptr(tile_width) } if src < src_end { // Left-overs using C-version. - ColorCodeToMultipliers(tls, *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&pred, 4))), (bp) /* &m */) + ColorCodeToMultipliers(tls, *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&pred, 4))), bp) (*struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8LTransformColorInverse})).f(tls, (bp) /* &m */, src, remaining_width, dst) - src += 4 * (uintptr(remaining_width)) - dst += 4 * (uintptr(remaining_width)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LTransformColorInverse})).f(tls, bp /* &m */, src, remaining_width, dst) + src += 4 * uintptr(remaining_width) + dst += 4 * uintptr(remaining_width) } y++ - if (y & mask) == 0 { - pred_row += 4 * (uintptr(tiles_per_row)) + if y&mask == 0 { + pred_row += 4 * uintptr(tiles_per_row) } } } @@ -18565,21 +18305,21 @@ func MapARGB_C(tls *libc.TLS, src uintptr, color_map uintptr, dst uintptr, y_sta func ColorIndexInverseTransform_C(tls *libc.TLS, transform uintptr, y_start int32, y_end int32, src uintptr, dst uintptr) { /* lossless.c:384:1: */ var y int32 - var bits_per_pixel int32 = (int32(8) >> (*VP8LTransform)(unsafe.Pointer(transform)).bits_) + var bits_per_pixel int32 = int32(8) >> (*VP8LTransform)(unsafe.Pointer(transform)).bits_ var width int32 = (*VP8LTransform)(unsafe.Pointer(transform)).xsize_ var color_map uintptr = (*VP8LTransform)(unsafe.Pointer(transform)).data_ if bits_per_pixel < 8 { - var pixels_per_byte int32 = (int32(1) << (*VP8LTransform)(unsafe.Pointer(transform)).bits_) - var count_mask int32 = (pixels_per_byte - 1) - var bit_mask uint32_t = (uint32_t((int32(1) << bits_per_pixel) - 1)) + var pixels_per_byte int32 = int32(1) << (*VP8LTransform)(unsafe.Pointer(transform)).bits_ + var count_mask int32 = pixels_per_byte - 1 + var bit_mask uint32_t = uint32_t(int32(1)<<bits_per_pixel - 1) for y = y_start; y < y_end; y++ { var packed_pixels uint32_t = uint32_t(0) var x int32 for x = 0; x < width; x++ { /* We need to load fresh 'packed_pixels' once every */ /* 'pixels_per_byte' increments of x. Fortunately, pixels_per_byte */ /* is a power of 2, so can just use a mask for that, instead of */ /* decrementing a counter. */ - if (x & count_mask) == 0 { + if x&count_mask == 0 { packed_pixels = VP8GetARGBIndex(tls, *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&src, 4)))) } - *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 4))) = VP8GetARGBValue(tls, *(*uint32_t)(unsafe.Pointer(color_map + uintptr((packed_pixels&bit_mask))*4))) + *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 4))) = VP8GetARGBValue(tls, *(*uint32_t)(unsafe.Pointer(color_map + uintptr(packed_pixels&bit_mask)*4))) packed_pixels >>= bits_per_pixel } } @@ -18602,21 +18342,21 @@ func MapAlpha_C(tls *libc.TLS, src uintptr, color_map uintptr, dst uintptr, y_st func VP8LColorIndexInverseTransformAlpha(tls *libc.TLS, transform uintptr, y_start int32, y_end int32, src uintptr, dst uintptr) { /* lossless.c:386:1: */ var y int32 - var bits_per_pixel int32 = (int32(8) >> (*VP8LTransform)(unsafe.Pointer(transform)).bits_) + var bits_per_pixel int32 = int32(8) >> (*VP8LTransform)(unsafe.Pointer(transform)).bits_ var width int32 = (*VP8LTransform)(unsafe.Pointer(transform)).xsize_ var color_map uintptr = (*VP8LTransform)(unsafe.Pointer(transform)).data_ if bits_per_pixel < 8 { - var pixels_per_byte int32 = (int32(1) << (*VP8LTransform)(unsafe.Pointer(transform)).bits_) - var count_mask int32 = (pixels_per_byte - 1) - var bit_mask uint32_t = (uint32_t((int32(1) << bits_per_pixel) - 1)) + var pixels_per_byte int32 = int32(1) << (*VP8LTransform)(unsafe.Pointer(transform)).bits_ + var count_mask int32 = pixels_per_byte - 1 + var bit_mask uint32_t = uint32_t(int32(1)<<bits_per_pixel - 1) for y = y_start; y < y_end; y++ { var packed_pixels uint32_t = uint32_t(0) var x int32 for x = 0; x < width; x++ { /* We need to load fresh 'packed_pixels' once every */ /* 'pixels_per_byte' increments of x. Fortunately, pixels_per_byte */ /* is a power of 2, so can just use a mask for that, instead of */ /* decrementing a counter. */ - if (x & count_mask) == 0 { + if x&count_mask == 0 { packed_pixels = uint32_t(VP8GetAlphaIndex(tls, *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&src, 1))))) } - *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = VP8GetAlphaValue(tls, *(*uint32_t)(unsafe.Pointer(color_map + uintptr((packed_pixels&bit_mask))*4))) + *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = VP8GetAlphaValue(tls, *(*uint32_t)(unsafe.Pointer(color_map + uintptr(packed_pixels&bit_mask)*4))) packed_pixels >>= bits_per_pixel } } @@ -18634,31 +18374,31 @@ func VP8LInverseTransform(tls *libc.TLS, transform uintptr, row_start int32, row case SUBTRACT_GREEN: (*struct { f func(*libc.TLS, uintptr, int32, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8LAddGreenToBlueAndRed})).f(tls, in, ((row_end - row_start) * width), out) + })(unsafe.Pointer(&struct{ uintptr }{VP8LAddGreenToBlueAndRed})).f(tls, in, (row_end-row_start)*width, out) break case PREDICTOR_TRANSFORM: PredictorInverseTransform_C(tls, transform, row_start, row_end, in, out) if row_end != (*VP8LTransform)(unsafe.Pointer(transform)).ysize_ { // The last predicted row in this iteration will be the top-pred row // for the first row in next iteration. - libc.Xmemcpy(tls, (out - uintptr(width)*4), (out + uintptr((((row_end-row_start)-1)*width))*4), - (uint64(width) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, out-uintptr(width)*4, out+uintptr((row_end-row_start-1)*width)*4, + uint64(width)*uint64(unsafe.Sizeof(uint32_t(0)))) } break case CROSS_COLOR_TRANSFORM: ColorSpaceInverseTransform_C(tls, transform, row_start, row_end, in, out) break case COLOR_INDEXING_TRANSFORM: - if (in == out) && ((*VP8LTransform)(unsafe.Pointer(transform)).bits_ > 0) { + if in == out && (*VP8LTransform)(unsafe.Pointer(transform)).bits_ > 0 { // Move packed pixels to the end of unpacked region, so that unpacking // can occur seamlessly. // Also, note that this is the only transform that applies on // the effective width of VP8LSubSampleSize(xsize_, bits_). All other // transforms work on effective width of xsize_. - var out_stride int32 = ((row_end - row_start) * width) - var in_stride int32 = (int32((uint32_t(row_end - row_start)) * VP8LSubSampleSize(tls, uint32((*VP8LTransform)(unsafe.Pointer(transform)).xsize_), uint32((*VP8LTransform)(unsafe.Pointer(transform)).bits_)))) - var src uintptr = ((out + uintptr(out_stride)*4) - uintptr(in_stride)*4) - libc.Xmemmove(tls, src, out, (uint64(in_stride) * uint64(unsafe.Sizeof(uint32_t(0))))) + var out_stride int32 = (row_end - row_start) * width + var in_stride int32 = int32(uint32_t(row_end-row_start) * VP8LSubSampleSize(tls, uint32((*VP8LTransform)(unsafe.Pointer(transform)).xsize_), uint32((*VP8LTransform)(unsafe.Pointer(transform)).bits_))) + var src uintptr = out + uintptr(out_stride)*4 - uintptr(in_stride)*4 + libc.Xmemmove(tls, src, out, uint64(in_stride)*uint64(unsafe.Sizeof(uint32_t(0)))) ColorIndexInverseTransform_C(tls, transform, row_start, row_end, src, out) } else { ColorIndexInverseTransform_C(tls, transform, row_start, row_end, in, out) @@ -18671,7 +18411,7 @@ func VP8LInverseTransform(tls *libc.TLS, transform uintptr, row_start int32, row // Color space conversion. func is_big_endian(tls *libc.TLS) int32 { /* lossless.c:436:12: */ - return (libc.Bool32(int32(*(*uint8_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&tmp)) /* &.b */)))) != 1)) + return libc.Bool32(int32(*(*uint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp))))) != 1) } var tmp = func() (r struct{ w uint16_t }) { @@ -18680,68 +18420,68 @@ var tmp = func() (r struct{ w uint16_t }) { }() /* lossless.c:440:5 */ func VP8LConvertBGRAToRGB_C(tls *libc.TLS, src uintptr, num_pixels int32, dst uintptr) { /* lossless.c:444:6: */ - var src_end uintptr = (src + uintptr(num_pixels)*4) + var src_end uintptr = src + uintptr(num_pixels)*4 for src < src_end { var argb uint32_t = *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&src, 4))) - *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = (uint8_t((argb >> 16) & uint32_t(0xff))) - *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = (uint8_t((argb >> 8) & uint32_t(0xff))) - *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = (uint8_t((argb >> 0) & uint32_t(0xff))) + *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = uint8_t(argb >> 16 & uint32_t(0xff)) + *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = uint8_t(argb >> 8 & uint32_t(0xff)) + *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = uint8_t(argb >> 0 & uint32_t(0xff)) } } func VP8LConvertBGRAToRGBA_C(tls *libc.TLS, src uintptr, num_pixels int32, dst uintptr) { /* lossless.c:455:6: */ - var src_end uintptr = (src + uintptr(num_pixels)*4) + var src_end uintptr = src + uintptr(num_pixels)*4 for src < src_end { var argb uint32_t = *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&src, 4))) - *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = (uint8_t((argb >> 16) & uint32_t(0xff))) - *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = (uint8_t((argb >> 8) & uint32_t(0xff))) - *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = (uint8_t((argb >> 0) & uint32_t(0xff))) - *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = (uint8_t((argb >> 24) & uint32_t(0xff))) + *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = uint8_t(argb >> 16 & uint32_t(0xff)) + *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = uint8_t(argb >> 8 & uint32_t(0xff)) + *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = uint8_t(argb >> 0 & uint32_t(0xff)) + *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = uint8_t(argb >> 24 & uint32_t(0xff)) } } func VP8LConvertBGRAToRGBA4444_C(tls *libc.TLS, src uintptr, num_pixels int32, dst uintptr) { /* lossless.c:467:6: */ - var src_end uintptr = (src + uintptr(num_pixels)*4) + var src_end uintptr = src + uintptr(num_pixels)*4 for src < src_end { var argb uint32_t = *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&src, 4))) - var rg uint8_t = (uint8_t(((argb >> 16) & uint32_t(0xf0)) | ((argb >> 12) & uint32_t(0xf)))) - var ba uint8_t = (uint8_t(((argb >> 0) & uint32_t(0xf0)) | ((argb >> 28) & uint32_t(0xf)))) + var rg uint8_t = uint8_t(argb>>16&uint32_t(0xf0) | argb>>12&uint32_t(0xf)) + var ba uint8_t = uint8_t(argb>>0&uint32_t(0xf0) | argb>>28&uint32_t(0xf)) *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = rg *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = ba } } func VP8LConvertBGRAToRGB565_C(tls *libc.TLS, src uintptr, num_pixels int32, dst uintptr) { /* lossless.c:484:6: */ - var src_end uintptr = (src + uintptr(num_pixels)*4) + var src_end uintptr = src + uintptr(num_pixels)*4 for src < src_end { var argb uint32_t = *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&src, 4))) - var rg uint8_t = (uint8_t(((argb >> 16) & uint32_t(0xf8)) | ((argb >> 13) & uint32_t(0x7)))) - var gb uint8_t = (uint8_t(((argb >> 5) & uint32_t(0xe0)) | ((argb >> 3) & uint32_t(0x1f)))) + var rg uint8_t = uint8_t(argb>>16&uint32_t(0xf8) | argb>>13&uint32_t(0x7)) + var gb uint8_t = uint8_t(argb>>5&uint32_t(0xe0) | argb>>3&uint32_t(0x1f)) *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = rg *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = gb } } func VP8LConvertBGRAToBGR_C(tls *libc.TLS, src uintptr, num_pixels int32, dst uintptr) { /* lossless.c:501:6: */ - var src_end uintptr = (src + uintptr(num_pixels)*4) + var src_end uintptr = src + uintptr(num_pixels)*4 for src < src_end { var argb uint32_t = *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&src, 4))) - *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = (uint8_t((argb >> 0) & uint32_t(0xff))) - *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = (uint8_t((argb >> 8) & uint32_t(0xff))) - *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = (uint8_t((argb >> 16) & uint32_t(0xff))) + *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = uint8_t(argb >> 0 & uint32_t(0xff)) + *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = uint8_t(argb >> 8 & uint32_t(0xff)) + *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&dst, 1))) = uint8_t(argb >> 16 & uint32_t(0xff)) } } func CopyOrSwap(tls *libc.TLS, src uintptr, num_pixels int32, dst uintptr, swap_on_big_endian int32) { /* lossless.c:512:13: */ if is_big_endian(tls) == swap_on_big_endian { - var src_end uintptr = (src + uintptr(num_pixels)*4) + var src_end uintptr = src + uintptr(num_pixels)*4 for src < src_end { var argb uint32_t = *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&src, 4))) WebPUint32ToMem(tls, dst, BSwap32(tls, argb)) dst += uintptr(unsafe.Sizeof(argb)) } } else { - libc.Xmemcpy(tls, dst, src, (uint64(num_pixels) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, dst, src, uint64(num_pixels)*uint64(unsafe.Sizeof(uint32_t(0)))) } } @@ -18832,7 +18572,7 @@ var VP8LMapColor32b VP8LMapARGBFunc /* lossless.c:588:17: */ var VP8LMapColor8b VP8LMapAlphaFunc /* lossless.c:589:18: */ func VP8LDspInit(tls *libc.TLS) { /* lossless.c:616:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if VP8LDspInit_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -18844,153 +18584,153 @@ func VP8LDspInit(tls *libc.TLS) { /* lossless.c:616:1: */ var VP8LDspInit_body_last_cpuinfo_used VP8CPUInfo = 0 /* lossless.c:616:1 */ func VP8LDspInit_body(tls *libc.TLS) { /* lossless.c:616:1: */ - for ok := true; ok; ok = (0 != 0) { - (VP8LPredictors)[0] = *(*uintptr)(unsafe.Pointer(&struct { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { + VP8LPredictors[0] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor0_C})) - (VP8LPredictors)[1] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[1] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor1_C})) - (VP8LPredictors)[2] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[2] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor2_C})) - (VP8LPredictors)[3] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[3] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor3_C})) - (VP8LPredictors)[4] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[4] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor4_C})) - (VP8LPredictors)[5] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[5] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor5_C})) - (VP8LPredictors)[6] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[6] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor6_C})) - (VP8LPredictors)[7] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[7] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor7_C})) - (VP8LPredictors)[8] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[8] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor8_C})) - (VP8LPredictors)[9] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[9] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor9_C})) - (VP8LPredictors)[10] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[10] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor10_C})) - (VP8LPredictors)[11] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[11] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor11_C})) - (VP8LPredictors)[12] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[12] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor12_C})) - (VP8LPredictors)[13] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[13] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor13_C})) - (VP8LPredictors)[14] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[14] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor0_C})) /* <- padding security sentinels*/ - (VP8LPredictors)[15] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictors[15] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uint32_t }{VP8LPredictor0_C})) } - for ok1 := true; ok1; ok1 = (0 != 0) { - (VP8LPredictorsAdd)[0] = *(*uintptr)(unsafe.Pointer(&struct { + for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 { + VP8LPredictorsAdd[0] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd0_C})) - (VP8LPredictorsAdd)[1] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[1] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd1_C})) - (VP8LPredictorsAdd)[2] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[2] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd2_C})) - (VP8LPredictorsAdd)[3] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[3] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd3_C})) - (VP8LPredictorsAdd)[4] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[4] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd4_C})) - (VP8LPredictorsAdd)[5] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[5] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd5_C})) - (VP8LPredictorsAdd)[6] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[6] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd6_C})) - (VP8LPredictorsAdd)[7] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[7] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd7_C})) - (VP8LPredictorsAdd)[8] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[8] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd8_C})) - (VP8LPredictorsAdd)[9] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[9] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd9_C})) - (VP8LPredictorsAdd)[10] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[10] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd10_C})) - (VP8LPredictorsAdd)[11] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[11] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd11_C})) - (VP8LPredictorsAdd)[12] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[12] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd12_C})) - (VP8LPredictorsAdd)[13] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[13] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd13_C})) - (VP8LPredictorsAdd)[14] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[14] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd0_C})) /* <- padding security sentinels*/ - (VP8LPredictorsAdd)[15] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd[15] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd0_C})) } - for ok2 := true; ok2; ok2 = (0 != 0) { - (VP8LPredictorsAdd_C)[0] = *(*uintptr)(unsafe.Pointer(&struct { + for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 { + VP8LPredictorsAdd_C[0] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd0_C})) - (VP8LPredictorsAdd_C)[1] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[1] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd1_C})) - (VP8LPredictorsAdd_C)[2] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[2] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd2_C})) - (VP8LPredictorsAdd_C)[3] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[3] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd3_C})) - (VP8LPredictorsAdd_C)[4] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[4] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd4_C})) - (VP8LPredictorsAdd_C)[5] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[5] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd5_C})) - (VP8LPredictorsAdd_C)[6] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[6] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd6_C})) - (VP8LPredictorsAdd_C)[7] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[7] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd7_C})) - (VP8LPredictorsAdd_C)[8] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[8] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd8_C})) - (VP8LPredictorsAdd_C)[9] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[9] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd9_C})) - (VP8LPredictorsAdd_C)[10] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[10] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd10_C})) - (VP8LPredictorsAdd_C)[11] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[11] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd11_C})) - (VP8LPredictorsAdd_C)[12] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[12] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd12_C})) - (VP8LPredictorsAdd_C)[13] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[13] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd13_C})) - (VP8LPredictorsAdd_C)[14] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[14] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd0_C})) /* <- padding security sentinels*/ - (VP8LPredictorsAdd_C)[15] = *(*uintptr)(unsafe.Pointer(&struct { + VP8LPredictorsAdd_C[15] = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) }{PredictorAdd0_C})) } @@ -19028,7 +18768,7 @@ func VP8LDspInit_body(tls *libc.TLS) { /* lossless.c:616:1: */ }{MapAlpha_C})) // If defined, use CPUInfo() to overwrite some pointers with faster versions. - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } @@ -19235,70 +18975,70 @@ var kSLog2Table = [256]float32{ } /* lossless_enc.c:159:13 */ var kPrefixEncodeCode = [512]VP8LPrefixCode{ - VP8LPrefixCode{}, VP8LPrefixCode{}, VP8LPrefixCode{code_: int8(1)}, VP8LPrefixCode{code_: int8(2)}, VP8LPrefixCode{code_: int8(3)}, VP8LPrefixCode{code_: int8(4), extra_bits_: int8(1)}, VP8LPrefixCode{code_: int8(4), extra_bits_: int8(1)}, VP8LPrefixCode{code_: int8(5), extra_bits_: int8(1)}, - VP8LPrefixCode{code_: int8(5), extra_bits_: int8(1)}, VP8LPrefixCode{code_: int8(6), extra_bits_: int8(2)}, VP8LPrefixCode{code_: int8(6), extra_bits_: int8(2)}, VP8LPrefixCode{code_: int8(6), extra_bits_: int8(2)}, VP8LPrefixCode{code_: int8(6), extra_bits_: int8(2)}, VP8LPrefixCode{code_: int8(7), extra_bits_: int8(2)}, VP8LPrefixCode{code_: int8(7), extra_bits_: int8(2)}, VP8LPrefixCode{code_: int8(7), extra_bits_: int8(2)}, - VP8LPrefixCode{code_: int8(7), extra_bits_: int8(2)}, VP8LPrefixCode{code_: int8(8), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(8), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(8), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(8), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(8), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(8), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(8), extra_bits_: int8(3)}, - VP8LPrefixCode{code_: int8(8), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(9), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(9), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(9), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(9), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(9), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(9), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(9), extra_bits_: int8(3)}, - VP8LPrefixCode{code_: int8(9), extra_bits_: int8(3)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, - VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, - VP8LPrefixCode{code_: int8(10), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, - VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, - VP8LPrefixCode{code_: int8(11), extra_bits_: int8(4)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, - VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, - VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, - VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, - VP8LPrefixCode{code_: int8(12), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, - VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, - VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, - VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, - VP8LPrefixCode{code_: int8(13), extra_bits_: int8(5)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(14), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, - VP8LPrefixCode{code_: int8(15), extra_bits_: int8(6)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(16), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, - VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, VP8LPrefixCode{code_: int8(17), extra_bits_: int8(7)}, + {}, {}, {code_: int8(1)}, {code_: int8(2)}, {code_: int8(3)}, {code_: int8(4), extra_bits_: int8(1)}, {code_: int8(4), extra_bits_: int8(1)}, {code_: int8(5), extra_bits_: int8(1)}, + {code_: int8(5), extra_bits_: int8(1)}, {code_: int8(6), extra_bits_: int8(2)}, {code_: int8(6), extra_bits_: int8(2)}, {code_: int8(6), extra_bits_: int8(2)}, {code_: int8(6), extra_bits_: int8(2)}, {code_: int8(7), extra_bits_: int8(2)}, {code_: int8(7), extra_bits_: int8(2)}, {code_: int8(7), extra_bits_: int8(2)}, + {code_: int8(7), extra_bits_: int8(2)}, {code_: int8(8), extra_bits_: int8(3)}, {code_: int8(8), extra_bits_: int8(3)}, {code_: int8(8), extra_bits_: int8(3)}, {code_: int8(8), extra_bits_: int8(3)}, {code_: int8(8), extra_bits_: int8(3)}, {code_: int8(8), extra_bits_: int8(3)}, {code_: int8(8), extra_bits_: int8(3)}, + {code_: int8(8), extra_bits_: int8(3)}, {code_: int8(9), extra_bits_: int8(3)}, {code_: int8(9), extra_bits_: int8(3)}, {code_: int8(9), extra_bits_: int8(3)}, {code_: int8(9), extra_bits_: int8(3)}, {code_: int8(9), extra_bits_: int8(3)}, {code_: int8(9), extra_bits_: int8(3)}, {code_: int8(9), extra_bits_: int8(3)}, + {code_: int8(9), extra_bits_: int8(3)}, {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, + {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(10), extra_bits_: int8(4)}, + {code_: int8(10), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, + {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(11), extra_bits_: int8(4)}, + {code_: int8(11), extra_bits_: int8(4)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, + {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, + {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, + {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(12), extra_bits_: int8(5)}, + {code_: int8(12), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, + {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, + {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, + {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(13), extra_bits_: int8(5)}, + {code_: int8(13), extra_bits_: int8(5)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, + {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, + {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, + {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, + {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, + {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, + {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, + {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(14), extra_bits_: int8(6)}, + {code_: int8(14), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, + {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, + {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, + {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, + {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, + {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, + {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, + {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(15), extra_bits_: int8(6)}, + {code_: int8(15), extra_bits_: int8(6)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(16), extra_bits_: int8(7)}, + {code_: int8(16), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, + {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, {code_: int8(17), extra_bits_: int8(7)}, } /* lossless_enc.c:226:22 */ var kPrefixEncodeExtraBitsValue = [512]uint8_t{ @@ -19341,8 +19081,8 @@ func FastSLog2Slow_C(tls *libc.TLS, v uint32_t) float32 { /* lossless_enc.c:329: if v < uint32_t(65536) { // use clz if available - var log_cnt int32 = (BitsLog2Floor(tls, v) - 7) - var y uint32_t = (uint32_t(int32(1) << log_cnt)) + var log_cnt int32 = BitsLog2Floor(tls, v) - 7 + var y uint32_t = uint32_t(int32(1) << log_cnt) var correction int32 = 0 var v_f float32 = float32(v) var orig_v uint32_t = v @@ -19353,10 +19093,10 @@ func FastSLog2Slow_C(tls *libc.TLS, v uint32_t) float32 { /* lossless_enc.c:329: // The correction factor: log(1 + d) ~ d; for very small d values, so // log2(1 + (v % y) / v) ~ LOG_2_RECIPROCAL * (v % y)/v // LOG_2_RECIPROCAL ~ 23/16 - correction = (int32((uint32_t(23) * (orig_v & (y - uint32_t(1)))) >> 4)) - return ((v_f * (kLog2Table[v] + float32(log_cnt))) + float32(correction)) + correction = int32(uint32_t(23) * (orig_v & (y - uint32_t(1))) >> 4) + return v_f*(kLog2Table[v]+float32(log_cnt)) + float32(correction) } else { - return (float32((1.44269504088896338700465094007086 * float64(v)) * libc.Xlog(tls, float64(v)))) + return float32(1.44269504088896338700465094007086 * float64(v) * libc.Xlog(tls, float64(v))) } return float32(0) } @@ -19365,21 +19105,21 @@ func FastLog2Slow_C(tls *libc.TLS, v uint32_t) float32 { /* lossless_enc.c:365:1 if v < uint32_t(65536) { // use clz if available - var log_cnt int32 = (BitsLog2Floor(tls, v) - 7) - var y uint32_t = (uint32_t(int32(1) << log_cnt)) + var log_cnt int32 = BitsLog2Floor(tls, v) - 7 + var y uint32_t = uint32_t(int32(1) << log_cnt) var orig_v uint32_t = v var log_2 float64 v >>= log_cnt - log_2 = (float64(kLog2Table[v] + float32(log_cnt))) + log_2 = float64(kLog2Table[v] + float32(log_cnt)) if orig_v >= uint32_t(4096) { // Since the division is still expensive, add this correction factor only // for large values of 'v'. - var correction int32 = (int32((uint32_t(23) * (orig_v & (y - uint32_t(1)))) >> 4)) - log_2 = log_2 + (float64(correction) / float64(orig_v)) + var correction int32 = int32(uint32_t(23) * (orig_v & (y - uint32_t(1))) >> 4) + log_2 = log_2 + float64(correction)/float64(orig_v) } return float32(log_2) } else { - return (float32(1.44269504088896338700465094007086 * libc.Xlog(tls, float64(v)))) + return float32(1.44269504088896338700465094007086 * libc.Xlog(tls, float64(v))) } return float32(0) } @@ -19396,17 +19136,17 @@ func CombinedShannonEntropy_C(tls *libc.TLS, X uintptr, Y uintptr) float32 { /* for i = 0; i < 256; i++ { var x int32 = *(*int32)(unsafe.Pointer(X + uintptr(i)*4)) if x != 0 { - var xy int32 = (x + *(*int32)(unsafe.Pointer(Y + uintptr(i)*4))) - sumX = sumX + (x) - retval = retval - (float64(VP8LFastSLog2(tls, uint32(x)))) - sumXY = sumXY + (xy) - retval = retval - (float64(VP8LFastSLog2(tls, uint32(xy)))) + var xy int32 = x + *(*int32)(unsafe.Pointer(Y + uintptr(i)*4)) + sumX = sumX + x + retval = retval - float64(VP8LFastSLog2(tls, uint32(x))) + sumXY = sumXY + xy + retval = retval - float64(VP8LFastSLog2(tls, uint32(xy))) } else if *(*int32)(unsafe.Pointer(Y + uintptr(i)*4)) != 0 { - sumXY = sumXY + (*(*int32)(unsafe.Pointer(Y + uintptr(i)*4))) - retval = retval - (float64(VP8LFastSLog2(tls, uint32(*(*int32)(unsafe.Pointer(Y + uintptr(i)*4)))))) + sumXY = sumXY + *(*int32)(unsafe.Pointer(Y + uintptr(i)*4)) + retval = retval - float64(VP8LFastSLog2(tls, uint32(*(*int32)(unsafe.Pointer(Y + uintptr(i)*4))))) } } - retval = retval + (float64(VP8LFastSLog2(tls, uint32(sumX)) + VP8LFastSLog2(tls, uint32(sumXY)))) + retval = retval + float64(VP8LFastSLog2(tls, uint32(sumX))+VP8LFastSLog2(tls, uint32(sumXY))) return float32(retval) } @@ -19415,7 +19155,7 @@ func VP8LBitEntropyInit(tls *libc.TLS, entropy uintptr) { /* lossless_enc.c:424: (*VP8LBitEntropy)(unsafe.Pointer(entropy)).sum = uint32_t(0) (*VP8LBitEntropy)(unsafe.Pointer(entropy)).nonzeros = 0 (*VP8LBitEntropy)(unsafe.Pointer(entropy)).max_val = uint32_t(0) - (*VP8LBitEntropy)(unsafe.Pointer(entropy)).nonzero_code = (0xffffffff) + (*VP8LBitEntropy)(unsafe.Pointer(entropy)).nonzero_code = 0xffffffff } func VP8LBitsEntropyUnrefined(tls *libc.TLS, array uintptr, n int32, entropy uintptr) { /* lossless_enc.c:432:6: */ @@ -19425,35 +19165,35 @@ func VP8LBitsEntropyUnrefined(tls *libc.TLS, array uintptr, n int32, entropy uin for i = 0; i < n; i++ { if *(*uint32_t)(unsafe.Pointer(array + uintptr(i)*4)) != uint32_t(0) { - *(*uint32_t)(unsafe.Pointer((entropy + 8 /* &.sum */))) += (*(*uint32_t)(unsafe.Pointer(array + uintptr(i)*4))) + *(*uint32_t)(unsafe.Pointer(entropy + 8)) += *(*uint32_t)(unsafe.Pointer(array + uintptr(i)*4)) (*VP8LBitEntropy)(unsafe.Pointer(entropy)).nonzero_code = uint32_t(i) (*VP8LBitEntropy)(unsafe.Pointer(entropy)).nonzeros++ - *(*float64)(unsafe.Pointer((entropy /* &.entropy */))) -= (float64(VP8LFastSLog2(tls, *(*uint32_t)(unsafe.Pointer(array + uintptr(i)*4))))) + *(*float64)(unsafe.Pointer(entropy)) -= float64(VP8LFastSLog2(tls, *(*uint32_t)(unsafe.Pointer(array + uintptr(i)*4)))) if (*VP8LBitEntropy)(unsafe.Pointer(entropy)).max_val < *(*uint32_t)(unsafe.Pointer(array + uintptr(i)*4)) { (*VP8LBitEntropy)(unsafe.Pointer(entropy)).max_val = *(*uint32_t)(unsafe.Pointer(array + uintptr(i)*4)) } } } - *(*float64)(unsafe.Pointer((entropy /* &.entropy */))) += (float64(VP8LFastSLog2(tls, (*VP8LBitEntropy)(unsafe.Pointer(entropy)).sum))) + *(*float64)(unsafe.Pointer(entropy)) += float64(VP8LFastSLog2(tls, (*VP8LBitEntropy)(unsafe.Pointer(entropy)).sum)) } func GetEntropyUnrefinedHelper(tls *libc.TLS, val uint32_t, i int32, val_prev uintptr, i_prev uintptr, bit_entropy uintptr, stats uintptr) { /* lossless_enc.c:452:25: */ - var streak int32 = (i - *(*int32)(unsafe.Pointer(i_prev))) + var streak int32 = i - *(*int32)(unsafe.Pointer(i_prev)) // Gather info for the bit entropy. if *(*uint32_t)(unsafe.Pointer(val_prev)) != uint32_t(0) { - *(*uint32_t)(unsafe.Pointer((bit_entropy + 8 /* &.sum */))) += ((*(*uint32_t)(unsafe.Pointer(val_prev))) * uint32_t(streak)) - *(*int32)(unsafe.Pointer((bit_entropy + 12 /* &.nonzeros */))) += (streak) + *(*uint32_t)(unsafe.Pointer(bit_entropy + 8)) += *(*uint32_t)(unsafe.Pointer(val_prev)) * uint32_t(streak) + *(*int32)(unsafe.Pointer(bit_entropy + 12)) += streak (*VP8LBitEntropy)(unsafe.Pointer(bit_entropy)).nonzero_code = uint32_t(*(*int32)(unsafe.Pointer(i_prev))) - *(*float64)(unsafe.Pointer((bit_entropy /* &.entropy */))) -= (float64(VP8LFastSLog2(tls, *(*uint32_t)(unsafe.Pointer(val_prev))) * float32(streak))) + *(*float64)(unsafe.Pointer(bit_entropy)) -= float64(VP8LFastSLog2(tls, *(*uint32_t)(unsafe.Pointer(val_prev))) * float32(streak)) if (*VP8LBitEntropy)(unsafe.Pointer(bit_entropy)).max_val < *(*uint32_t)(unsafe.Pointer(val_prev)) { (*VP8LBitEntropy)(unsafe.Pointer(bit_entropy)).max_val = *(*uint32_t)(unsafe.Pointer(val_prev)) } } // Gather info for the Huffman cost. - *(*int32)(unsafe.Pointer(((stats /* &.counts */) + uintptr((libc.Bool32(*(*uint32_t)(unsafe.Pointer(val_prev)) != uint32_t(0))))*4))) += (libc.Bool32(streak > 3)) - *(*int32)(unsafe.Pointer((((stats + 8 /* &.streaks */) + uintptr((libc.Bool32(*(*uint32_t)(unsafe.Pointer(val_prev)) != uint32_t(0))))*8) + uintptr((libc.Bool32(streak > 3)))*4))) += (streak) + *(*int32)(unsafe.Pointer(stats + uintptr(libc.Bool32(*(*uint32_t)(unsafe.Pointer(val_prev)) != uint32_t(0)))*4)) += libc.Bool32(streak > 3) + *(*int32)(unsafe.Pointer(stats + 8 + uintptr(libc.Bool32(*(*uint32_t)(unsafe.Pointer(val_prev)) != uint32_t(0)))*8 + uintptr(libc.Bool32(streak > 3))*4)) += streak *(*uint32_t)(unsafe.Pointer(val_prev)) = val *(*int32)(unsafe.Pointer(i_prev)) = i @@ -19472,13 +19212,13 @@ func GetEntropyUnrefined_C(tls *libc.TLS, X uintptr, length int32, bit_entropy u for i = 1; i < length; i++ { var x uint32_t = *(*uint32_t)(unsafe.Pointer(X + uintptr(i)*4)) - if x != *(*uint32_t)(unsafe.Pointer(bp /* x_prev */)) { - GetEntropyUnrefinedHelper(tls, x, i, (bp) /* &x_prev */, (bp + 4) /* &i_prev */, bit_entropy, stats) + if x != *(*uint32_t)(unsafe.Pointer(bp)) { + GetEntropyUnrefinedHelper(tls, x, i, bp, bp+4, bit_entropy, stats) } } - GetEntropyUnrefinedHelper(tls, uint32(0), i, (bp) /* &x_prev */, (bp + 4) /* &i_prev */, bit_entropy, stats) + GetEntropyUnrefinedHelper(tls, uint32(0), i, bp, bp+4, bit_entropy, stats) - *(*float64)(unsafe.Pointer((bit_entropy /* &.entropy */))) += (float64(VP8LFastSLog2(tls, (*VP8LBitEntropy)(unsafe.Pointer(bit_entropy)).sum))) + *(*float64)(unsafe.Pointer(bit_entropy)) += float64(VP8LFastSLog2(tls, (*VP8LBitEntropy)(unsafe.Pointer(bit_entropy)).sum)) } func GetCombinedEntropyUnrefined_C(tls *libc.TLS, X uintptr, Y uintptr, length int32, bit_entropy uintptr, stats uintptr) { /* lossless_enc.c:497:13: */ @@ -19487,20 +19227,20 @@ func GetCombinedEntropyUnrefined_C(tls *libc.TLS, X uintptr, Y uintptr, length i var i int32 = 1 *(*int32)(unsafe.Pointer(bp + 4 /* i_prev */)) = 0 - *(*uint32_t)(unsafe.Pointer(bp /* xy_prev */)) = (*(*uint32_t)(unsafe.Pointer(X)) + *(*uint32_t)(unsafe.Pointer(Y))) + *(*uint32_t)(unsafe.Pointer(bp /* xy_prev */)) = *(*uint32_t)(unsafe.Pointer(X)) + *(*uint32_t)(unsafe.Pointer(Y)) libc.Xmemset(tls, stats, 0, uint64(unsafe.Sizeof(VP8LStreaks{}))) VP8LBitEntropyInit(tls, bit_entropy) for i = 1; i < length; i++ { - var xy uint32_t = (*(*uint32_t)(unsafe.Pointer(X + uintptr(i)*4)) + *(*uint32_t)(unsafe.Pointer(Y + uintptr(i)*4))) - if xy != *(*uint32_t)(unsafe.Pointer(bp /* xy_prev */)) { - GetEntropyUnrefinedHelper(tls, xy, i, (bp) /* &xy_prev */, (bp + 4) /* &i_prev */, bit_entropy, stats) + var xy uint32_t = *(*uint32_t)(unsafe.Pointer(X + uintptr(i)*4)) + *(*uint32_t)(unsafe.Pointer(Y + uintptr(i)*4)) + if xy != *(*uint32_t)(unsafe.Pointer(bp)) { + GetEntropyUnrefinedHelper(tls, xy, i, bp, bp+4, bit_entropy, stats) } } - GetEntropyUnrefinedHelper(tls, uint32(0), i, (bp) /* &xy_prev */, (bp + 4) /* &i_prev */, bit_entropy, stats) + GetEntropyUnrefinedHelper(tls, uint32(0), i, bp, bp+4, bit_entropy, stats) - *(*float64)(unsafe.Pointer((bit_entropy /* &.entropy */))) += (float64(VP8LFastSLog2(tls, (*VP8LBitEntropy)(unsafe.Pointer(bit_entropy)).sum))) + *(*float64)(unsafe.Pointer(bit_entropy)) += float64(VP8LFastSLog2(tls, (*VP8LBitEntropy)(unsafe.Pointer(bit_entropy)).sum)) } //------------------------------------------------------------------------------ @@ -19509,52 +19249,52 @@ func VP8LSubtractGreenFromBlueAndRed_C(tls *libc.TLS, argb_data uintptr, num_pix var i int32 for i = 0; i < num_pixels; i++ { var argb int32 = int32(*(*uint32_t)(unsafe.Pointer(argb_data + uintptr(i)*4))) - var green int32 = ((argb >> 8) & 0xff) - var new_r uint32_t = (uint32_t((((argb >> 16) & 0xff) - green) & 0xff)) - var new_b uint32_t = (uint32_t((((argb >> 0) & 0xff) - green) & 0xff)) - *(*uint32_t)(unsafe.Pointer(argb_data + uintptr(i)*4)) = (((uint32(argb) & 0xff00ff00) | (new_r << 16)) | new_b) + var green int32 = argb >> 8 & 0xff + var new_r uint32_t = uint32_t((argb>>16&0xff - green) & 0xff) + var new_b uint32_t = uint32_t((argb>>0&0xff - green) & 0xff) + *(*uint32_t)(unsafe.Pointer(argb_data + uintptr(i)*4)) = uint32(argb)&0xff00ff00 | new_r<<16 | new_b } } func ColorTransformDelta1(tls *libc.TLS, color_pred int8_t, color int8_t) int32 { /* lossless_enc.c:533:24: */ - return ((int32(color_pred) * int32(color)) >> 5) + return int32(color_pred) * int32(color) >> 5 } func U32ToS8(tls *libc.TLS, v uint32_t) int8_t { /* lossless_enc.c:537:27: */ - return (int8_t(v & uint32_t(0xff))) + return int8_t(v & uint32_t(0xff)) } func VP8LTransformColor_C(tls *libc.TLS, m uintptr, data uintptr, num_pixels int32) { /* lossless_enc.c:541:6: */ var i int32 for i = 0; i < num_pixels; i++ { var argb uint32_t = *(*uint32_t)(unsafe.Pointer(data + uintptr(i)*4)) - var green int8_t = U32ToS8(tls, (argb >> 8)) - var red int8_t = U32ToS8(tls, (argb >> 16)) - var new_red int32 = (int32(red) & 0xff) - var new_blue int32 = (int32(argb & uint32_t(0xff))) - new_red = new_red - (ColorTransformDelta1(tls, int8((*VP8LMultipliers)(unsafe.Pointer(m)).green_to_red_), green)) - new_red = new_red & (0xff) - new_blue = new_blue - (ColorTransformDelta1(tls, int8((*VP8LMultipliers)(unsafe.Pointer(m)).green_to_blue_), green)) - new_blue = new_blue - (ColorTransformDelta1(tls, int8((*VP8LMultipliers)(unsafe.Pointer(m)).red_to_blue_), red)) - new_blue = new_blue & (0xff) - *(*uint32_t)(unsafe.Pointer(data + uintptr(i)*4)) = (((argb & 0xff00ff00) | (uint32_t(new_red << 16))) | (uint32_t(new_blue))) + var green int8_t = U32ToS8(tls, argb>>8) + var red int8_t = U32ToS8(tls, argb>>16) + var new_red int32 = int32(red) & 0xff + var new_blue int32 = int32(argb & uint32_t(0xff)) + new_red = new_red - ColorTransformDelta1(tls, int8((*VP8LMultipliers)(unsafe.Pointer(m)).green_to_red_), green) + new_red = new_red & 0xff + new_blue = new_blue - ColorTransformDelta1(tls, int8((*VP8LMultipliers)(unsafe.Pointer(m)).green_to_blue_), green) + new_blue = new_blue - ColorTransformDelta1(tls, int8((*VP8LMultipliers)(unsafe.Pointer(m)).red_to_blue_), red) + new_blue = new_blue & 0xff + *(*uint32_t)(unsafe.Pointer(data + uintptr(i)*4)) = argb&0xff00ff00 | uint32_t(new_red<<16) | uint32_t(new_blue) } } func TransformColorRed(tls *libc.TLS, green_to_red uint8_t, argb uint32_t) uint8_t { /* lossless_enc.c:559:28: */ - var green int8_t = U32ToS8(tls, (argb >> 8)) - var new_red int32 = (int32(argb >> 16)) - new_red = new_red - (ColorTransformDelta1(tls, int8(green_to_red), green)) - return (uint8_t(new_red & 0xff)) + var green int8_t = U32ToS8(tls, argb>>8) + var new_red int32 = int32(argb >> 16) + new_red = new_red - ColorTransformDelta1(tls, int8(green_to_red), green) + return uint8_t(new_red & 0xff) } func TransformColorBlue(tls *libc.TLS, green_to_blue uint8_t, red_to_blue uint8_t, argb uint32_t) uint8_t { /* lossless_enc.c:567:28: */ - var green int8_t = U32ToS8(tls, (argb >> 8)) - var red int8_t = U32ToS8(tls, (argb >> 16)) - var new_blue uint8_t = (uint8_t(argb & uint32_t(0xff))) - new_blue = uint8_t(int32(new_blue) - (ColorTransformDelta1(tls, int8(green_to_blue), green))) - new_blue = uint8_t(int32(new_blue) - (ColorTransformDelta1(tls, int8(red_to_blue), red))) - return (uint8_t(int32(new_blue) & 0xff)) + var green int8_t = U32ToS8(tls, argb>>8) + var red int8_t = U32ToS8(tls, argb>>16) + var new_blue uint8_t = uint8_t(argb & uint32_t(0xff)) + new_blue = uint8_t(int32(new_blue) - ColorTransformDelta1(tls, int8(green_to_blue), green)) + new_blue = uint8_t(int32(new_blue) - ColorTransformDelta1(tls, int8(red_to_blue), red)) + return uint8_t(int32(new_blue) & 0xff) } func VP8LCollectColorRedTransforms_C(tls *libc.TLS, argb uintptr, stride int32, tile_width int32, tile_height int32, green_to_red int32, histo uintptr) { /* lossless_enc.c:578:6: */ @@ -19563,7 +19303,7 @@ func VP8LCollectColorRedTransforms_C(tls *libc.TLS, argb uintptr, stride int32, for x = 0; x < tile_width; x++ { *(*int32)(unsafe.Pointer(histo + uintptr(TransformColorRed(tls, uint8_t(green_to_red), *(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4))))*4))++ } - argb += 4 * (uintptr(stride)) + argb += 4 * uintptr(stride) } } @@ -19574,7 +19314,7 @@ func VP8LCollectColorBlueTransforms_C(tls *libc.TLS, argb uintptr, stride int32, *(*int32)(unsafe.Pointer(histo + uintptr(TransformColorBlue(tls, uint8_t(green_to_blue), uint8_t(red_to_blue), *(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4))))*4))++ } - argb += 4 * (uintptr(stride)) + argb += 4 * uintptr(stride) } } @@ -19583,7 +19323,7 @@ func VP8LCollectColorBlueTransforms_C(tls *libc.TLS, argb uintptr, stride int32, func VectorMismatch_C(tls *libc.TLS, array1 uintptr, array2 uintptr, length int32) int32 { /* lossless_enc.c:606:12: */ var match_len int32 = 0 - for (match_len < length) && (*(*uint32_t)(unsafe.Pointer(array1 + uintptr(match_len)*4)) == *(*uint32_t)(unsafe.Pointer(array2 + uintptr(match_len)*4))) { + for match_len < length && *(*uint32_t)(unsafe.Pointer(array1 + uintptr(match_len)*4)) == *(*uint32_t)(unsafe.Pointer(array2 + uintptr(match_len)*4)) { match_len++ } return match_len @@ -19593,20 +19333,20 @@ func VectorMismatch_C(tls *libc.TLS, array1 uintptr, array2 uintptr, length int3 func VP8LBundleColorMap_C(tls *libc.TLS, row uintptr, width int32, xbits int32, dst uintptr) { /* lossless_enc.c:617:6: */ var x int32 if xbits > 0 { - var bit_depth int32 = (int32(1) << (3 - xbits)) - var mask int32 = ((int32(1) << xbits) - 1) + var bit_depth int32 = int32(1) << (3 - xbits) + var mask int32 = int32(1)<<xbits - 1 var code uint32_t = 0xff000000 for x = 0; x < width; x++ { - var xsub int32 = (x & mask) + var xsub int32 = x & mask if xsub == 0 { code = 0xff000000 } - code = code | (uint32_t(int32(*(*uint8_t)(unsafe.Pointer(row + uintptr(x)))) << (8 + (bit_depth * xsub)))) - *(*uint32_t)(unsafe.Pointer(dst + uintptr((x>>xbits))*4)) = code + code = code | uint32_t(int32(*(*uint8_t)(unsafe.Pointer(row + uintptr(x))))<<(8+bit_depth*xsub)) + *(*uint32_t)(unsafe.Pointer(dst + uintptr(x>>xbits)*4)) = code } } else { for x = 0; x < width; x++ { - *(*uint32_t)(unsafe.Pointer(dst + uintptr(x)*4)) = (0xff000000 | (uint32(int32(*(*uint8_t)(unsafe.Pointer(row + uintptr(x)))) << 8))) + *(*uint32_t)(unsafe.Pointer(dst + uintptr(x)*4)) = 0xff000000 | uint32(int32(*(*uint8_t)(unsafe.Pointer(row + uintptr(x))))<<8) } } } @@ -19616,8 +19356,8 @@ func VP8LBundleColorMap_C(tls *libc.TLS, row uintptr, width int32, xbits int32, func ExtraCost_C(tls *libc.TLS, population uintptr, length int32) float64 { /* lossless_enc.c:639:15: */ var i int32 var cost float64 = 0. - for i = 2; i < (length - 2); i++ { - cost = cost + (float64((uint32_t(i >> 1)) * *(*uint32_t)(unsafe.Pointer(population + uintptr((i+2))*4)))) + for i = 2; i < length-2; i++ { + cost = cost + float64(uint32_t(i>>1)**(*uint32_t)(unsafe.Pointer(population + uintptr(i+2)*4))) } return cost } @@ -19625,9 +19365,9 @@ func ExtraCost_C(tls *libc.TLS, population uintptr, length int32) float64 { /* l func ExtraCostCombined_C(tls *libc.TLS, X uintptr, Y uintptr, length int32) float64 { /* lossless_enc.c:646:15: */ var i int32 var cost float64 = 0. - for i = 2; i < (length - 2); i++ { - var xy int32 = (int32(*(*uint32_t)(unsafe.Pointer(X + uintptr((i+2))*4)) + *(*uint32_t)(unsafe.Pointer(Y + uintptr((i+2))*4)))) - cost = cost + (float64((i >> 1) * xy)) + for i = 2; i < length-2; i++ { + var xy int32 = int32(*(*uint32_t)(unsafe.Pointer(X + uintptr(i+2)*4)) + *(*uint32_t)(unsafe.Pointer(Y + uintptr(i+2)*4))) + cost = cost + float64(i>>1*xy) } return cost } @@ -19637,14 +19377,14 @@ func ExtraCostCombined_C(tls *libc.TLS, X uintptr, Y uintptr, length int32) floa func AddVector_C(tls *libc.TLS, a uintptr, b uintptr, out uintptr, size int32) { /* lossless_enc.c:659:13: */ var i int32 for i = 0; i < size; i++ { - *(*uint32_t)(unsafe.Pointer(out + uintptr(i)*4)) = (*(*uint32_t)(unsafe.Pointer(a + uintptr(i)*4)) + *(*uint32_t)(unsafe.Pointer(b + uintptr(i)*4))) + *(*uint32_t)(unsafe.Pointer(out + uintptr(i)*4)) = *(*uint32_t)(unsafe.Pointer(a + uintptr(i)*4)) + *(*uint32_t)(unsafe.Pointer(b + uintptr(i)*4)) } } func AddVectorEq_C(tls *libc.TLS, a uintptr, out uintptr, size int32) { /* lossless_enc.c:665:13: */ var i int32 for i = 0; i < size; i++ { - *(*uint32_t)(unsafe.Pointer((out + uintptr(i)*4))) += (*(*uint32_t)(unsafe.Pointer(a + uintptr(i)*4))) + *(*uint32_t)(unsafe.Pointer(out + uintptr(i)*4)) += *(*uint32_t)(unsafe.Pointer(a + uintptr(i)*4)) } } @@ -19653,142 +19393,142 @@ func VP8LHistogramAdd(tls *libc.TLS, a uintptr, b uintptr, out uintptr) { /* los var literal_size int32 = VP8LHistogramNumCodes(tls, (*VP8LHistogram)(unsafe.Pointer(a)).palette_code_bits_) if b != out { - for ok := true; ok; ok = (0 != 0) { - if *(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */))) != 0 { - if *(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */))) != 0 { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { + if *(*uint8_t)(unsafe.Pointer(a + 3280)) != 0 { + if *(*uint8_t)(unsafe.Pointer(b + 3280)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVector})).f(tls, (*VP8LHistogram)(unsafe.Pointer(a)).literal_, (*VP8LHistogram)(unsafe.Pointer(b)).literal_, (*VP8LHistogram)(unsafe.Pointer(out)).literal_, (literal_size)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVector})).f(tls, (*VP8LHistogram)(unsafe.Pointer(a)).literal_, (*VP8LHistogram)(unsafe.Pointer(b)).literal_, (*VP8LHistogram)(unsafe.Pointer(out)).literal_, literal_size) } else { - libc.Xmemcpy(tls, ((*VP8LHistogram)(unsafe.Pointer(out)).literal_), ((*VP8LHistogram)(unsafe.Pointer(a)).literal_), ((uint64(literal_size)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, (*VP8LHistogram)(unsafe.Pointer(out)).literal_, (*VP8LHistogram)(unsafe.Pointer(a)).literal_, uint64(literal_size)*uint64(unsafe.Sizeof(uint32_t(0)))) } - } else if *(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */))) != 0 { - libc.Xmemcpy(tls, ((*VP8LHistogram)(unsafe.Pointer(out)).literal_), ((*VP8LHistogram)(unsafe.Pointer(b)).literal_), ((uint64(literal_size)) * uint64(unsafe.Sizeof(uint32_t(0))))) + } else if *(*uint8_t)(unsafe.Pointer(b + 3280)) != 0 { + libc.Xmemcpy(tls, (*VP8LHistogram)(unsafe.Pointer(out)).literal_, (*VP8LHistogram)(unsafe.Pointer(b)).literal_, uint64(literal_size)*uint64(unsafe.Sizeof(uint32_t(0)))) } else { - libc.Xmemset(tls, ((*VP8LHistogram)(unsafe.Pointer(out)).literal_), 0, ((uint64(literal_size)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemset(tls, (*VP8LHistogram)(unsafe.Pointer(out)).literal_, 0, uint64(literal_size)*uint64(unsafe.Sizeof(uint32_t(0)))) } } - for ok1 := true; ok1; ok1 = (0 != 0) { - if *(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + 1)) != 0 { - if *(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + 1)) != 0 { + for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 { + if *(*uint8_t)(unsafe.Pointer(a + 3280 + 1)) != 0 { + if *(*uint8_t)(unsafe.Pointer(b + 3280 + 1)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVector})).f(tls, (a + 8 /* &.red_ */), (b + 8 /* &.red_ */), (out + 8 /* &.red_ */), (256)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVector})).f(tls, a+8 /* &.red_ */, b+8 /* &.red_ */, out+8 /* &.red_ */, 256) } else { - libc.Xmemcpy(tls, (out + 8 /* &.red_ */), (a + 8 /* &.red_ */), ((uint64(256)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, out+8 /* &.red_ */, a+8 /* &.red_ */, uint64(256)*uint64(unsafe.Sizeof(uint32_t(0)))) } - } else if *(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + 1)) != 0 { - libc.Xmemcpy(tls, (out + 8 /* &.red_ */), (b + 8 /* &.red_ */), ((uint64(256)) * uint64(unsafe.Sizeof(uint32_t(0))))) + } else if *(*uint8_t)(unsafe.Pointer(b + 3280 /* &.is_used_ */ + 1)) != 0 { + libc.Xmemcpy(tls, out+8 /* &.red_ */, b+8 /* &.red_ */, uint64(256)*uint64(unsafe.Sizeof(uint32_t(0)))) } else { - libc.Xmemset(tls, (out + 8 /* &.red_ */), 0, ((uint64(256)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemset(tls, out+8 /* &.red_ */, 0, uint64(256)*uint64(unsafe.Sizeof(uint32_t(0)))) } } - for ok2 := true; ok2; ok2 = (0 != 0) { - if *(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + 2)) != 0 { - if *(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + 2)) != 0 { + for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 { + if *(*uint8_t)(unsafe.Pointer(a + 3280 + 2)) != 0 { + if *(*uint8_t)(unsafe.Pointer(b + 3280 + 2)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVector})).f(tls, (a + 1032 /* &.blue_ */), (b + 1032 /* &.blue_ */), (out + 1032 /* &.blue_ */), (256)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVector})).f(tls, a+1032 /* &.blue_ */, b+1032 /* &.blue_ */, out+1032 /* &.blue_ */, 256) } else { - libc.Xmemcpy(tls, (out + 1032 /* &.blue_ */), (a + 1032 /* &.blue_ */), ((uint64(256)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, out+1032 /* &.blue_ */, a+1032 /* &.blue_ */, uint64(256)*uint64(unsafe.Sizeof(uint32_t(0)))) } - } else if *(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + 2)) != 0 { - libc.Xmemcpy(tls, (out + 1032 /* &.blue_ */), (b + 1032 /* &.blue_ */), ((uint64(256)) * uint64(unsafe.Sizeof(uint32_t(0))))) + } else if *(*uint8_t)(unsafe.Pointer(b + 3280 /* &.is_used_ */ + 2)) != 0 { + libc.Xmemcpy(tls, out+1032 /* &.blue_ */, b+1032 /* &.blue_ */, uint64(256)*uint64(unsafe.Sizeof(uint32_t(0)))) } else { - libc.Xmemset(tls, (out + 1032 /* &.blue_ */), 0, ((uint64(256)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemset(tls, out+1032 /* &.blue_ */, 0, uint64(256)*uint64(unsafe.Sizeof(uint32_t(0)))) } } - for ok3 := true; ok3; ok3 = (0 != 0) { - if *(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + 3)) != 0 { - if *(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + 3)) != 0 { + for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 { + if *(*uint8_t)(unsafe.Pointer(a + 3280 + 3)) != 0 { + if *(*uint8_t)(unsafe.Pointer(b + 3280 + 3)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVector})).f(tls, (a + 2056 /* &.alpha_ */), (b + 2056 /* &.alpha_ */), (out + 2056 /* &.alpha_ */), (256)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVector})).f(tls, a+2056 /* &.alpha_ */, b+2056 /* &.alpha_ */, out+2056 /* &.alpha_ */, 256) } else { - libc.Xmemcpy(tls, (out + 2056 /* &.alpha_ */), (a + 2056 /* &.alpha_ */), ((uint64(256)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, out+2056 /* &.alpha_ */, a+2056 /* &.alpha_ */, uint64(256)*uint64(unsafe.Sizeof(uint32_t(0)))) } - } else if *(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + 3)) != 0 { - libc.Xmemcpy(tls, (out + 2056 /* &.alpha_ */), (b + 2056 /* &.alpha_ */), ((uint64(256)) * uint64(unsafe.Sizeof(uint32_t(0))))) + } else if *(*uint8_t)(unsafe.Pointer(b + 3280 /* &.is_used_ */ + 3)) != 0 { + libc.Xmemcpy(tls, out+2056 /* &.alpha_ */, b+2056 /* &.alpha_ */, uint64(256)*uint64(unsafe.Sizeof(uint32_t(0)))) } else { - libc.Xmemset(tls, (out + 2056 /* &.alpha_ */), 0, ((uint64(256)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemset(tls, out+2056 /* &.alpha_ */, 0, uint64(256)*uint64(unsafe.Sizeof(uint32_t(0)))) } } - for ok4 := true; ok4; ok4 = (0 != 0) { - if *(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + 4)) != 0 { - if *(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + 4)) != 0 { + for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 { + if *(*uint8_t)(unsafe.Pointer(a + 3280 + 4)) != 0 { + if *(*uint8_t)(unsafe.Pointer(b + 3280 + 4)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVector})).f(tls, (a + 3080 /* &.distance_ */), (b + 3080 /* &.distance_ */), (out + 3080 /* &.distance_ */), (40)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVector})).f(tls, a+3080 /* &.distance_ */, b+3080 /* &.distance_ */, out+3080 /* &.distance_ */, 40) } else { - libc.Xmemcpy(tls, (out + 3080 /* &.distance_ */), (a + 3080 /* &.distance_ */), ((uint64(40)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, out+3080 /* &.distance_ */, a+3080 /* &.distance_ */, uint64(40)*uint64(unsafe.Sizeof(uint32_t(0)))) } - } else if *(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + 4)) != 0 { - libc.Xmemcpy(tls, (out + 3080 /* &.distance_ */), (b + 3080 /* &.distance_ */), ((uint64(40)) * uint64(unsafe.Sizeof(uint32_t(0))))) + } else if *(*uint8_t)(unsafe.Pointer(b + 3280 /* &.is_used_ */ + 4)) != 0 { + libc.Xmemcpy(tls, out+3080 /* &.distance_ */, b+3080 /* &.distance_ */, uint64(40)*uint64(unsafe.Sizeof(uint32_t(0)))) } else { - libc.Xmemset(tls, (out + 3080 /* &.distance_ */), 0, ((uint64(40)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemset(tls, out+3080 /* &.distance_ */, 0, uint64(40)*uint64(unsafe.Sizeof(uint32_t(0)))) } } for i = 0; i < 5; i++ { - *(*uint8_t)(unsafe.Pointer((out + 3280 /* &.is_used_ */) + uintptr(i))) = (uint8_t(int32(*(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + uintptr(i)))) | int32(*(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + uintptr(i)))))) + *(*uint8_t)(unsafe.Pointer(out + 3280 + uintptr(i))) = uint8_t(int32(*(*uint8_t)(unsafe.Pointer(a + 3280 + uintptr(i)))) | int32(*(*uint8_t)(unsafe.Pointer(b + 3280 + uintptr(i))))) } } else { - for ok5 := true; ok5; ok5 = (0 != 0) { - if *(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */))) != 0 { - if *(*uint8_t)(unsafe.Pointer((out + 3280 /* &.is_used_ */))) != 0 { + for __ccgo5 := true; __ccgo5; __ccgo5 = 0 != 0 { + if *(*uint8_t)(unsafe.Pointer(a + 3280)) != 0 { + if *(*uint8_t)(unsafe.Pointer(out + 3280)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVectorEq})).f(tls, (*VP8LHistogram)(unsafe.Pointer(a)).literal_, (*VP8LHistogram)(unsafe.Pointer(out)).literal_, (literal_size)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVectorEq})).f(tls, (*VP8LHistogram)(unsafe.Pointer(a)).literal_, (*VP8LHistogram)(unsafe.Pointer(out)).literal_, literal_size) } else { - libc.Xmemcpy(tls, ((*VP8LHistogram)(unsafe.Pointer(out)).literal_), ((*VP8LHistogram)(unsafe.Pointer(a)).literal_), ((uint64(literal_size)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, (*VP8LHistogram)(unsafe.Pointer(out)).literal_, (*VP8LHistogram)(unsafe.Pointer(a)).literal_, uint64(literal_size)*uint64(unsafe.Sizeof(uint32_t(0)))) } } } - for ok6 := true; ok6; ok6 = (0 != 0) { - if *(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + 1)) != 0 { - if *(*uint8_t)(unsafe.Pointer((out + 3280 /* &.is_used_ */) + 1)) != 0 { + for __ccgo6 := true; __ccgo6; __ccgo6 = 0 != 0 { + if *(*uint8_t)(unsafe.Pointer(a + 3280 + 1)) != 0 { + if *(*uint8_t)(unsafe.Pointer(out + 3280 + 1)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVectorEq})).f(tls, (a + 8 /* &.red_ */), (out + 8 /* &.red_ */), (256)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVectorEq})).f(tls, a+8 /* &.red_ */, out+8 /* &.red_ */, 256) } else { - libc.Xmemcpy(tls, (out + 8 /* &.red_ */), (a + 8 /* &.red_ */), ((uint64(256)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, out+8 /* &.red_ */, a+8 /* &.red_ */, uint64(256)*uint64(unsafe.Sizeof(uint32_t(0)))) } } } - for ok7 := true; ok7; ok7 = (0 != 0) { - if *(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + 2)) != 0 { - if *(*uint8_t)(unsafe.Pointer((out + 3280 /* &.is_used_ */) + 2)) != 0 { + for __ccgo7 := true; __ccgo7; __ccgo7 = 0 != 0 { + if *(*uint8_t)(unsafe.Pointer(a + 3280 + 2)) != 0 { + if *(*uint8_t)(unsafe.Pointer(out + 3280 + 2)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVectorEq})).f(tls, (a + 1032 /* &.blue_ */), (out + 1032 /* &.blue_ */), (256)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVectorEq})).f(tls, a+1032 /* &.blue_ */, out+1032 /* &.blue_ */, 256) } else { - libc.Xmemcpy(tls, (out + 1032 /* &.blue_ */), (a + 1032 /* &.blue_ */), ((uint64(256)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, out+1032 /* &.blue_ */, a+1032 /* &.blue_ */, uint64(256)*uint64(unsafe.Sizeof(uint32_t(0)))) } } } - for ok8 := true; ok8; ok8 = (0 != 0) { - if *(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + 3)) != 0 { - if *(*uint8_t)(unsafe.Pointer((out + 3280 /* &.is_used_ */) + 3)) != 0 { + for __ccgo8 := true; __ccgo8; __ccgo8 = 0 != 0 { + if *(*uint8_t)(unsafe.Pointer(a + 3280 + 3)) != 0 { + if *(*uint8_t)(unsafe.Pointer(out + 3280 + 3)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVectorEq})).f(tls, (a + 2056 /* &.alpha_ */), (out + 2056 /* &.alpha_ */), (256)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVectorEq})).f(tls, a+2056 /* &.alpha_ */, out+2056 /* &.alpha_ */, 256) } else { - libc.Xmemcpy(tls, (out + 2056 /* &.alpha_ */), (a + 2056 /* &.alpha_ */), ((uint64(256)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, out+2056 /* &.alpha_ */, a+2056 /* &.alpha_ */, uint64(256)*uint64(unsafe.Sizeof(uint32_t(0)))) } } } - for ok9 := true; ok9; ok9 = (0 != 0) { - if *(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + 4)) != 0 { - if *(*uint8_t)(unsafe.Pointer((out + 3280 /* &.is_used_ */) + 4)) != 0 { + for __ccgo9 := true; __ccgo9; __ccgo9 = 0 != 0 { + if *(*uint8_t)(unsafe.Pointer(a + 3280 + 4)) != 0 { + if *(*uint8_t)(unsafe.Pointer(out + 3280 + 4)) != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVectorEq})).f(tls, (a + 3080 /* &.distance_ */), (out + 3080 /* &.distance_ */), (40)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LAddVectorEq})).f(tls, a+3080 /* &.distance_ */, out+3080 /* &.distance_ */, 40) } else { - libc.Xmemcpy(tls, (out + 3080 /* &.distance_ */), (a + 3080 /* &.distance_ */), ((uint64(40)) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, out+3080 /* &.distance_ */, a+3080 /* &.distance_ */, uint64(40)*uint64(unsafe.Sizeof(uint32_t(0)))) } } } for i = 0; i < 5; i++ { - *(*uint8_t)(unsafe.Pointer(((out + 3280 /* &.is_used_ */) + uintptr(i)))) |= uint8_t((int32(*(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + uintptr(i)))))) + *(*uint8_t)(unsafe.Pointer(out + 3280 + uintptr(i))) |= uint8_t(int32(*(*uint8_t)(unsafe.Pointer(a + 3280 + uintptr(i))))) } } } @@ -19807,7 +19547,7 @@ func PredictorSub0_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorSub1_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:731:13: */ var i int32 for i = 0; i < num_pixels; i++ { - *(*uint32_t)(unsafe.Pointer(out + uintptr(i)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(i)*4)), *(*uint32_t)(unsafe.Pointer(in + uintptr((i-1))*4))) + *(*uint32_t)(unsafe.Pointer(out + uintptr(i)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(i)*4)), *(*uint32_t)(unsafe.Pointer(in + uintptr(i-1)*4))) } _ = upper } @@ -19818,7 +19558,7 @@ func PredictorSub1_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorSub2_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:753:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor2_C(tls, (in + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor2_C(tls, in+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -19826,7 +19566,7 @@ func PredictorSub2_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorSub3_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:754:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor3_C(tls, (in + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor3_C(tls, in+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -19834,7 +19574,7 @@ func PredictorSub3_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorSub4_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:755:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor4_C(tls, (in + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor4_C(tls, in+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -19842,7 +19582,7 @@ func PredictorSub4_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorSub5_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:756:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor5_C(tls, (in + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor5_C(tls, in+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -19850,7 +19590,7 @@ func PredictorSub5_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorSub6_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:757:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor6_C(tls, (in + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor6_C(tls, in+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -19858,7 +19598,7 @@ func PredictorSub6_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorSub7_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:758:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor7_C(tls, (in + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor7_C(tls, in+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -19866,7 +19606,7 @@ func PredictorSub7_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorSub8_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:759:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor8_C(tls, (in + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor8_C(tls, in+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -19874,7 +19614,7 @@ func PredictorSub8_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorSub9_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:760:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor9_C(tls, (in + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor9_C(tls, in+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -19882,7 +19622,7 @@ func PredictorSub9_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, func PredictorSub10_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:761:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor10_C(tls, (in + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor10_C(tls, in+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -19890,7 +19630,7 @@ func PredictorSub10_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32 func PredictorSub11_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:762:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor11_C(tls, (in + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor11_C(tls, in+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -19898,7 +19638,7 @@ func PredictorSub11_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32 func PredictorSub12_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:763:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor12_C(tls, (in + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor12_C(tls, in+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -19906,7 +19646,7 @@ func PredictorSub12_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32 func PredictorSub13_C(tls *libc.TLS, in uintptr, upper uintptr, num_pixels int32, out uintptr) { /* lossless_enc.c:764:1: */ var x int32 for x = 0; x < num_pixels; x++ { - var pred uint32_t = VP8LPredictor13_C(tls, (in + uintptr((x-1))*4), (upper + uintptr(x)*4)) + var pred uint32_t = VP8LPredictor13_C(tls, in+uintptr(x-1)*4, upper+uintptr(x)*4) *(*uint32_t)(unsafe.Pointer(out + uintptr(x)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(in + uintptr(x)*4)), pred) } } @@ -19940,7 +19680,7 @@ var VP8LPredictorsSub [16]VP8LPredictorAddSubFunc /* lossless_enc.c:791:25: */ var VP8LPredictorsSub_C [16]VP8LPredictorAddSubFunc /* lossless_enc.c:792:25: */ func VP8LEncDspInit(tls *libc.TLS) { /* lossless_enc.c:801:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if VP8LEncDspInit_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -20106,7 +19846,7 @@ func VP8LEncDspInit_body(tls *libc.TLS) { /* lossless_enc.c:801:1: */ }{PredictorSub0_C})) // If defined, use CPUInfo() to overwrite some pointers with faster versions. - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } @@ -20123,7 +19863,7 @@ func VP8LEncDspInit_body(tls *libc.TLS) { /* lossless_enc.c:801:1: */ func WebPRescalerImportRowExpand_C(tls *libc.TLS, wrk uintptr, src uintptr) { /* rescaler.c:29:6: */ var x_stride int32 = (*WebPRescaler)(unsafe.Pointer(wrk)).num_channels - var x_out_max int32 = ((*WebPRescaler)(unsafe.Pointer(wrk)).dst_width * (*WebPRescaler)(unsafe.Pointer(wrk)).num_channels) + var x_out_max int32 = (*WebPRescaler)(unsafe.Pointer(wrk)).dst_width * (*WebPRescaler)(unsafe.Pointer(wrk)).num_channels var channel int32 for channel = 0; channel < x_stride; channel++ { @@ -20134,24 +19874,24 @@ func WebPRescalerImportRowExpand_C(tls *libc.TLS, wrk uintptr, src uintptr) { /* var left rescaler_t = rescaler_t(*(*uint8_t)(unsafe.Pointer(src + uintptr(x_in)))) var right rescaler_t if (*WebPRescaler)(unsafe.Pointer(wrk)).src_width > 1 { - right = rescaler_t(*(*uint8_t)(unsafe.Pointer(src + uintptr((x_in + x_stride))))) + right = rescaler_t(*(*uint8_t)(unsafe.Pointer(src + uintptr(x_in+x_stride)))) } else { right = left } - x_in = x_in + (x_stride) + x_in = x_in + x_stride for 1 != 0 { - *(*rescaler_t)(unsafe.Pointer((*WebPRescaler)(unsafe.Pointer(wrk)).frow + uintptr(x_out)*4)) = ((right * rescaler_t((*WebPRescaler)(unsafe.Pointer(wrk)).x_add)) + ((left - right) * rescaler_t(accum))) - x_out = x_out + (x_stride) + *(*rescaler_t)(unsafe.Pointer((*WebPRescaler)(unsafe.Pointer(wrk)).frow + uintptr(x_out)*4)) = right*rescaler_t((*WebPRescaler)(unsafe.Pointer(wrk)).x_add) + (left-right)*rescaler_t(accum) + x_out = x_out + x_stride if x_out >= x_out_max { break } - accum = accum - ((*WebPRescaler)(unsafe.Pointer(wrk)).x_sub) + accum = accum - (*WebPRescaler)(unsafe.Pointer(wrk)).x_sub if accum < 0 { left = right - x_in = x_in + (x_stride) + x_in = x_in + x_stride right = rescaler_t(*(*uint8_t)(unsafe.Pointer(src + uintptr(x_in)))) - accum = accum + ((*WebPRescaler)(unsafe.Pointer(wrk)).x_add) + accum = accum + (*WebPRescaler)(unsafe.Pointer(wrk)).x_add } } @@ -20160,7 +19900,7 @@ func WebPRescalerImportRowExpand_C(tls *libc.TLS, wrk uintptr, src uintptr) { /* func WebPRescalerImportRowShrink_C(tls *libc.TLS, wrk uintptr, src uintptr) { /* rescaler.c:62:6: */ var x_stride int32 = (*WebPRescaler)(unsafe.Pointer(wrk)).num_channels - var x_out_max int32 = ((*WebPRescaler)(unsafe.Pointer(wrk)).dst_width * (*WebPRescaler)(unsafe.Pointer(wrk)).num_channels) + var x_out_max int32 = (*WebPRescaler)(unsafe.Pointer(wrk)).dst_width * (*WebPRescaler)(unsafe.Pointer(wrk)).num_channels var channel int32 for channel = 0; channel < x_stride; channel++ { @@ -20170,22 +19910,22 @@ func WebPRescalerImportRowShrink_C(tls *libc.TLS, wrk uintptr, src uintptr) { /* var accum int32 = 0 for x_out < x_out_max { var base uint32_t = uint32_t(0) - accum = accum + ((*WebPRescaler)(unsafe.Pointer(wrk)).x_add) + accum = accum + (*WebPRescaler)(unsafe.Pointer(wrk)).x_add for accum > 0 { - accum = accum - ((*WebPRescaler)(unsafe.Pointer(wrk)).x_sub) + accum = accum - (*WebPRescaler)(unsafe.Pointer(wrk)).x_sub base = uint32_t(*(*uint8_t)(unsafe.Pointer(src + uintptr(x_in)))) - sum = sum + (base) - x_in = x_in + (x_stride) + sum = sum + base + x_in = x_in + x_stride } { // Emit next horizontal pixel. - var frac rescaler_t = (base * (uint32_t(-accum))) - *(*rescaler_t)(unsafe.Pointer((*WebPRescaler)(unsafe.Pointer(wrk)).frow + uintptr(x_out)*4)) = ((sum * uint32_t((*WebPRescaler)(unsafe.Pointer(wrk)).x_sub)) - frac) + var frac rescaler_t = base * uint32_t(-accum) + *(*rescaler_t)(unsafe.Pointer((*WebPRescaler)(unsafe.Pointer(wrk)).frow + uintptr(x_out)*4)) = sum*uint32_t((*WebPRescaler)(unsafe.Pointer(wrk)).x_sub) - frac // fresh fractional start for next pixel - sum = uint32_t((int32(((uint64((uint64_t(frac)) * (uint64_t((*WebPRescaler)(unsafe.Pointer(wrk)).fx_scale)))) + (uint64((uint64(1) << 32)) >> 1)) >> 32))) + sum = uint32_t(int32((uint64(uint64_t(frac)*uint64_t((*WebPRescaler)(unsafe.Pointer(wrk)).fx_scale)) + uint64(uint64(1)<<32)>>1) >> 32)) } - x_out = x_out + (x_stride) + x_out = x_out + x_stride } } @@ -20198,13 +19938,13 @@ func WebPRescalerExportRowExpand_C(tls *libc.TLS, wrk uintptr) { /* rescaler.c:9 var x_out int32 var dst uintptr = (*WebPRescaler)(unsafe.Pointer(wrk)).dst var irow uintptr = (*WebPRescaler)(unsafe.Pointer(wrk)).irow - var x_out_max int32 = ((*WebPRescaler)(unsafe.Pointer(wrk)).dst_width * (*WebPRescaler)(unsafe.Pointer(wrk)).num_channels) + var x_out_max int32 = (*WebPRescaler)(unsafe.Pointer(wrk)).dst_width * (*WebPRescaler)(unsafe.Pointer(wrk)).num_channels var frow uintptr = (*WebPRescaler)(unsafe.Pointer(wrk)).frow if (*WebPRescaler)(unsafe.Pointer(wrk)).y_accum == 0 { for x_out = 0; x_out < x_out_max; x_out++ { var J uint32_t = *(*rescaler_t)(unsafe.Pointer(frow + uintptr(x_out)*4)) - var v int32 = (int32(((uint64((uint64_t(J)) * (uint64_t((*WebPRescaler)(unsafe.Pointer(wrk)).fy_scale)))) + (uint64((uint64(1) << 32)) >> 1)) >> 32)) + var v int32 = int32((uint64(uint64_t(J)*uint64_t((*WebPRescaler)(unsafe.Pointer(wrk)).fy_scale)) + uint64(uint64(1)<<32)>>1) >> 32) *(*uint8_t)(unsafe.Pointer(dst + uintptr(x_out))) = func() uint8 { if v > 255 { return uint8(255) @@ -20213,13 +19953,13 @@ func WebPRescalerExportRowExpand_C(tls *libc.TLS, wrk uintptr) { /* rescaler.c:9 }() } } else { - var B uint32_t = (uint32_t(((uint64_t(-(*WebPRescaler)(unsafe.Pointer(wrk)).y_accum)) << 32) / (uint64_t((*WebPRescaler)(unsafe.Pointer(wrk)).y_sub)))) - var A uint32_t = (uint32_t((uint64(1) << 32) - uint64(B))) + var B uint32_t = uint32_t(uint64_t(-(*WebPRescaler)(unsafe.Pointer(wrk)).y_accum) << 32 / uint64_t((*WebPRescaler)(unsafe.Pointer(wrk)).y_sub)) + var A uint32_t = uint32_t(uint64(1)<<32 - uint64(B)) for x_out = 0; x_out < x_out_max; x_out++ { - var I uint64_t = ((uint64_t(A) * uint64_t(*(*rescaler_t)(unsafe.Pointer(frow + uintptr(x_out)*4)))) + - (uint64_t(B) * uint64_t(*(*rescaler_t)(unsafe.Pointer(irow + uintptr(x_out)*4))))) - var J uint32_t = (uint32_t((uint64(I) + (uint64((uint64(1) << 32)) >> 1)) >> 32)) - var v int32 = (int32(((uint64((uint64_t(J)) * (uint64_t((*WebPRescaler)(unsafe.Pointer(wrk)).fy_scale)))) + (uint64((uint64(1) << 32)) >> 1)) >> 32)) + var I uint64_t = uint64_t(A)*uint64_t(*(*rescaler_t)(unsafe.Pointer(frow + uintptr(x_out)*4))) + + uint64_t(B)*uint64_t(*(*rescaler_t)(unsafe.Pointer(irow + uintptr(x_out)*4))) + var J uint32_t = uint32_t((uint64(I) + uint64(uint64(1)<<32)>>1) >> 32) + var v int32 = int32((uint64(uint64_t(J)*uint64_t((*WebPRescaler)(unsafe.Pointer(wrk)).fy_scale)) + uint64(uint64(1)<<32)>>1) >> 32) *(*uint8_t)(unsafe.Pointer(dst + uintptr(x_out))) = func() uint8 { if v > 255 { return uint8(255) @@ -20234,14 +19974,14 @@ func WebPRescalerExportRowShrink_C(tls *libc.TLS, wrk uintptr) { /* rescaler.c:1 var x_out int32 var dst uintptr = (*WebPRescaler)(unsafe.Pointer(wrk)).dst var irow uintptr = (*WebPRescaler)(unsafe.Pointer(wrk)).irow - var x_out_max int32 = ((*WebPRescaler)(unsafe.Pointer(wrk)).dst_width * (*WebPRescaler)(unsafe.Pointer(wrk)).num_channels) + var x_out_max int32 = (*WebPRescaler)(unsafe.Pointer(wrk)).dst_width * (*WebPRescaler)(unsafe.Pointer(wrk)).num_channels var frow uintptr = (*WebPRescaler)(unsafe.Pointer(wrk)).frow - var yscale uint32_t = ((*WebPRescaler)(unsafe.Pointer(wrk)).fy_scale * (uint32_t(-(*WebPRescaler)(unsafe.Pointer(wrk)).y_accum))) + var yscale uint32_t = (*WebPRescaler)(unsafe.Pointer(wrk)).fy_scale * uint32_t(-(*WebPRescaler)(unsafe.Pointer(wrk)).y_accum) if yscale != 0 { for x_out = 0; x_out < x_out_max; x_out++ { - var frac uint32_t = (uint32_t(((uint64_t(*(*rescaler_t)(unsafe.Pointer(frow + uintptr(x_out)*4)))) * (uint64_t(yscale))) >> 32)) - var v int32 = (int32(((uint64((uint64_t(*(*rescaler_t)(unsafe.Pointer(irow + uintptr(x_out)*4)) - frac)) * (uint64_t((*WebPRescaler)(unsafe.Pointer(wrk)).fxy_scale)))) + (uint64((uint64(1) << 32)) >> 1)) >> 32)) + var frac uint32_t = uint32_t(uint64_t(*(*rescaler_t)(unsafe.Pointer(frow + uintptr(x_out)*4))) * uint64_t(yscale) >> 32) + var v int32 = int32((uint64(uint64_t(*(*rescaler_t)(unsafe.Pointer(irow + uintptr(x_out)*4))-frac)*uint64_t((*WebPRescaler)(unsafe.Pointer(wrk)).fxy_scale)) + uint64(uint64(1)<<32)>>1) >> 32) *(*uint8_t)(unsafe.Pointer(dst + uintptr(x_out))) = func() uint8 { if v > 255 { return uint8(255) @@ -20252,7 +19992,7 @@ func WebPRescalerExportRowShrink_C(tls *libc.TLS, wrk uintptr) { /* rescaler.c:1 } } else { for x_out = 0; x_out < x_out_max; x_out++ { - var v int32 = (int32(((uint64((uint64_t(*(*rescaler_t)(unsafe.Pointer(irow + uintptr(x_out)*4)))) * (uint64_t((*WebPRescaler)(unsafe.Pointer(wrk)).fxy_scale)))) + (uint64((uint64(1) << 32)) >> 1)) >> 32)) + var v int32 = int32((uint64(uint64_t(*(*rescaler_t)(unsafe.Pointer(irow + uintptr(x_out)*4)))*uint64_t((*WebPRescaler)(unsafe.Pointer(wrk)).fxy_scale)) + uint64(uint64(1)<<32)>>1) >> 32) *(*uint8_t)(unsafe.Pointer(dst + uintptr(x_out))) = func() uint8 { if v > 255 { return uint8(255) @@ -20290,13 +20030,13 @@ func WebPRescalerExportRow(tls *libc.TLS, wrk uintptr) { /* rescaler.c:170:6: */ } else { // special case var i int32 - for i = 0; i < ((*WebPRescaler)(unsafe.Pointer(wrk)).num_channels * (*WebPRescaler)(unsafe.Pointer(wrk)).dst_width); i++ { + for i = 0; i < (*WebPRescaler)(unsafe.Pointer(wrk)).num_channels*(*WebPRescaler)(unsafe.Pointer(wrk)).dst_width; i++ { *(*uint8_t)(unsafe.Pointer((*WebPRescaler)(unsafe.Pointer(wrk)).dst + uintptr(i))) = uint8_t(*(*rescaler_t)(unsafe.Pointer((*WebPRescaler)(unsafe.Pointer(wrk)).irow + uintptr(i)*4))) *(*rescaler_t)(unsafe.Pointer((*WebPRescaler)(unsafe.Pointer(wrk)).irow + uintptr(i)*4)) = rescaler_t(0) } } - *(*int32)(unsafe.Pointer((wrk + 24 /* &.y_accum */))) += ((*WebPRescaler)(unsafe.Pointer(wrk)).y_add) - *(*uintptr)(unsafe.Pointer((wrk + 72 /* &.dst */))) += (uintptr((*WebPRescaler)(unsafe.Pointer(wrk)).dst_stride)) + *(*int32)(unsafe.Pointer(wrk + 24)) += (*WebPRescaler)(unsafe.Pointer(wrk)).y_add + *(*uintptr)(unsafe.Pointer(wrk + 72)) += uintptr((*WebPRescaler)(unsafe.Pointer(wrk)).dst_stride) (*WebPRescaler)(unsafe.Pointer(wrk)).dst_y++ } } @@ -20310,7 +20050,7 @@ var WebPRescalerExportRowExpand WebPRescalerExportRowFunc /* rescaler.c:197:27: var WebPRescalerExportRowShrink WebPRescalerExportRowFunc /* rescaler.c:198:27: */ func WebPRescalerDspInit(tls *libc.TLS) { /* rescaler.c:206:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if WebPRescalerDspInit_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -20332,7 +20072,7 @@ func WebPRescalerDspInit_body(tls *libc.TLS) { /* rescaler.c:206:1: */ f func(*libc.TLS, uintptr, uintptr) }{WebPRescalerImportRowShrink_C})) - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } @@ -20343,34 +20083,34 @@ func WebPRescalerDspInit_body(tls *libc.TLS) { /* rescaler.c:206:1: */ // hat-shaped filter. Sum of coefficients is equal to 16. var kWeight = [7]uint32_t{ uint32_t(1), uint32_t(2), uint32_t(3), uint32_t(4), uint32_t(3), uint32_t(2), uint32_t(1), -} /* ssim.c:25:23 */ -var kWeightSum uint32_t = (uint32_t(16 * 16)) /* ssim.c:28:23 */ +} /* ssim.c:25:23 */ +var kWeightSum uint32_t = uint32_t(16 * 16) /* ssim.c:28:23 */ // sum{kWeight}^2 func SSIMCalculation(tls *libc.TLS, stats uintptr, N uint32_t) float64 { /* ssim.c:30:27: */ - var w2 uint32_t = (N * N) - var C1 uint32_t = (uint32_t(20) * w2) - var C2 uint32_t = (uint32_t(60) * w2) - var C3 uint32_t = ((uint32_t(8 * 8)) * w2) // 'dark' limit ~= 6 - var xmxm uint64_t = (uint64_t((*VP8DistoStats)(unsafe.Pointer(stats)).xm) * uint64_t((*VP8DistoStats)(unsafe.Pointer(stats)).xm)) - var ymym uint64_t = (uint64_t((*VP8DistoStats)(unsafe.Pointer(stats)).ym) * uint64_t((*VP8DistoStats)(unsafe.Pointer(stats)).ym)) - if (xmxm + ymym) >= uint64_t(C3) { - var xmym int64_t = (int64_t((*VP8DistoStats)(unsafe.Pointer(stats)).xm) * int64_t((*VP8DistoStats)(unsafe.Pointer(stats)).ym)) - var sxy int64_t = ((int64_t((*VP8DistoStats)(unsafe.Pointer(stats)).xym) * int64_t(N)) - xmym) // can be negative - var sxx uint64_t = ((uint64_t((*VP8DistoStats)(unsafe.Pointer(stats)).xxm) * uint64_t(N)) - xmxm) - var syy uint64_t = ((uint64_t((*VP8DistoStats)(unsafe.Pointer(stats)).yym) * uint64_t(N)) - ymym) + var w2 uint32_t = N * N + var C1 uint32_t = uint32_t(20) * w2 + var C2 uint32_t = uint32_t(60) * w2 + var C3 uint32_t = uint32_t(8*8) * w2 // 'dark' limit ~= 6 + var xmxm uint64_t = uint64_t((*VP8DistoStats)(unsafe.Pointer(stats)).xm) * uint64_t((*VP8DistoStats)(unsafe.Pointer(stats)).xm) + var ymym uint64_t = uint64_t((*VP8DistoStats)(unsafe.Pointer(stats)).ym) * uint64_t((*VP8DistoStats)(unsafe.Pointer(stats)).ym) + if xmxm+ymym >= uint64_t(C3) { + var xmym int64_t = int64_t((*VP8DistoStats)(unsafe.Pointer(stats)).xm) * int64_t((*VP8DistoStats)(unsafe.Pointer(stats)).ym) + var sxy int64_t = int64_t((*VP8DistoStats)(unsafe.Pointer(stats)).xym)*int64_t(N) - xmym // can be negative + var sxx uint64_t = uint64_t((*VP8DistoStats)(unsafe.Pointer(stats)).xxm)*uint64_t(N) - xmxm + var syy uint64_t = uint64_t((*VP8DistoStats)(unsafe.Pointer(stats)).yym)*uint64_t(N) - ymym // we descale by 8 to prevent overflow during the fnum/fden multiply. - var num_S uint64_t = (((uint64(2) * (func() uint64 { + var num_S uint64_t = (uint64(2)*func() uint64 { if sxy < int64(0) { return uint64(0) } return uint64(sxy) - }())) + uint64_t(C2)) >> 8) - var den_S uint64_t = (((sxx + syy) + uint64_t(C2)) >> 8) - var fnum uint64_t = ((uint64_t((int64(2) * xmym) + int64_t(C1))) * num_S) - var fden uint64_t = (((xmxm + ymym) + uint64_t(C1)) * den_S) - var r float64 = (float64(fnum) / float64(fden)) + }() + uint64_t(C2)) >> 8 + var den_S uint64_t = (sxx + syy + uint64_t(C2)) >> 8 + var fnum uint64_t = uint64_t(int64(2)*xmym+int64_t(C1)) * num_S + var fden uint64_t = (xmxm + ymym + uint64_t(C1)) * den_S + var r float64 = float64(fnum) / float64(fden) return r } @@ -20391,33 +20131,33 @@ func SSIMGetClipped_C(tls *libc.TLS, src1 uintptr, stride1 int32, src2 uintptr, *(*VP8DistoStats)(unsafe.Pointer(bp /* stats */)) = VP8DistoStats{} var ymin int32 - if (yo - 3) < 0 { + if yo-3 < 0 { ymin = 0 } else { - ymin = (yo - 3) + ymin = yo - 3 } var ymax int32 - if (yo + 3) > (H - 1) { - ymax = (H - 1) + if yo+3 > H-1 { + ymax = H - 1 } else { - ymax = (yo + 3) + ymax = yo + 3 } var xmin int32 - if (xo - 3) < 0 { + if xo-3 < 0 { xmin = 0 } else { - xmin = (xo - 3) + xmin = xo - 3 } var xmax int32 - if (xo + 3) > (W - 1) { - xmax = (W - 1) + if xo+3 > W-1 { + xmax = W - 1 } else { - xmax = (xo + 3) + xmax = xo + 3 } var x int32 var y int32 - src1 += (uintptr(ymin * stride1)) - src2 += (uintptr(ymin * stride2)) + src1 += uintptr(ymin * stride1) + src2 += uintptr(ymin * stride2) y = ymin __1: if !(y <= ymax) { @@ -20425,16 +20165,16 @@ __1: } { for x = xmin; x <= xmax; x++ { - var w uint32_t = (kWeight[((3+x)-xo)] * - kWeight[((3+y)-yo)]) + var w uint32_t = kWeight[3+x-xo] * + kWeight[3+y-yo] var s1 uint32_t = uint32_t(*(*uint8_t)(unsafe.Pointer(src1 + uintptr(x)))) var s2 uint32_t = uint32_t(*(*uint8_t)(unsafe.Pointer(src2 + uintptr(x)))) - *(*uint32_t)(unsafe.Pointer((bp) /* &stats */ /* &.w */)) += (w) - *(*uint32_t)(unsafe.Pointer(((bp) /* &stats */ + 4 /* &.xm */))) += (w * s1) - *(*uint32_t)(unsafe.Pointer(((bp) /* &stats */ + 8 /* &.ym */))) += (w * s2) - *(*uint32_t)(unsafe.Pointer(((bp) /* &stats */ + 12 /* &.xxm */))) += ((w * s1) * s1) - *(*uint32_t)(unsafe.Pointer(((bp) /* &stats */ + 16 /* &.xym */))) += ((w * s1) * s2) - *(*uint32_t)(unsafe.Pointer(((bp) /* &stats */ + 20 /* &.yym */))) += ((w * s2) * s2) + *(*uint32_t)(unsafe.Pointer(bp)) += w + *(*uint32_t)(unsafe.Pointer(bp + 4)) += w * s1 + *(*uint32_t)(unsafe.Pointer(bp + 8)) += w * s2 + *(*uint32_t)(unsafe.Pointer(bp + 12)) += w * s1 * s1 + *(*uint32_t)(unsafe.Pointer(bp + 16)) += w * s1 * s2 + *(*uint32_t)(unsafe.Pointer(bp + 20)) += w * s2 * s2 } } @@ -20447,7 +20187,7 @@ __2: goto __3 __3: ; - return VP8SSIMFromStatsClipped(tls, (bp) /* &stats */) + return VP8SSIMFromStatsClipped(tls, bp) } func SSIMGet_C(tls *libc.TLS, src1 uintptr, stride1 int32, src2 uintptr, stride2 int32) float64 { /* ssim.c:93:15: */ @@ -20459,19 +20199,19 @@ func SSIMGet_C(tls *libc.TLS, src1 uintptr, stride1 int32, src2 uintptr, stride2 var y int32 y = 0 __1: - if !(y <= (2 * 3)) { + if !(y <= 2*3) { goto __3 } { - for x = 0; x <= (2 * 3); x++ { - var w uint32_t = (kWeight[x] * kWeight[y]) + for x = 0; x <= 2*3; x++ { + var w uint32_t = kWeight[x] * kWeight[y] var s1 uint32_t = uint32_t(*(*uint8_t)(unsafe.Pointer(src1 + uintptr(x)))) var s2 uint32_t = uint32_t(*(*uint8_t)(unsafe.Pointer(src2 + uintptr(x)))) - *(*uint32_t)(unsafe.Pointer(((bp) /* &stats */ + 4 /* &.xm */))) += (w * s1) - *(*uint32_t)(unsafe.Pointer(((bp) /* &stats */ + 8 /* &.ym */))) += (w * s2) - *(*uint32_t)(unsafe.Pointer(((bp) /* &stats */ + 12 /* &.xxm */))) += ((w * s1) * s1) - *(*uint32_t)(unsafe.Pointer(((bp) /* &stats */ + 16 /* &.xym */))) += ((w * s1) * s2) - *(*uint32_t)(unsafe.Pointer(((bp) /* &stats */ + 20 /* &.yym */))) += ((w * s2) * s2) + *(*uint32_t)(unsafe.Pointer(bp + 4)) += w * s1 + *(*uint32_t)(unsafe.Pointer(bp + 8)) += w * s2 + *(*uint32_t)(unsafe.Pointer(bp + 12)) += w * s1 * s1 + *(*uint32_t)(unsafe.Pointer(bp + 16)) += w * s1 * s2 + *(*uint32_t)(unsafe.Pointer(bp + 20)) += w * s2 * s2 } } @@ -20484,7 +20224,7 @@ __2: goto __3 __3: ; - return VP8SSIMFromStats(tls, (bp) /* &stats */) + return VP8SSIMFromStats(tls, bp) } //------------------------------------------------------------------------------ @@ -20494,8 +20234,8 @@ func AccumulateSSE_C(tls *libc.TLS, src1 uintptr, src2 uintptr, len int32) uint3 var sse2 uint32_t = uint32_t(0) // to ensure that accumulation fits within uint32_t for i = 0; i < len; i++ { - var diff int32_t = (int32(*(*uint8_t)(unsafe.Pointer(src1 + uintptr(i)))) - int32(*(*uint8_t)(unsafe.Pointer(src2 + uintptr(i))))) - sse2 = sse2 + (uint32_t(diff * diff)) + var diff int32_t = int32(*(*uint8_t)(unsafe.Pointer(src1 + uintptr(i)))) - int32(*(*uint8_t)(unsafe.Pointer(src2 + uintptr(i)))) + sse2 = sse2 + uint32_t(diff*diff) } return sse2 } @@ -20507,7 +20247,7 @@ var VP8SSIMGetClipped VP8SSIMGetClippedFunc /* ssim.c:134:23: */ var VP8AccumulateSSE VP8AccumulateSSEFunc /* ssim.c:137:22: */ func VP8SSIMDspInit(tls *libc.TLS) { /* ssim.c:142:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if VP8SSIMDspInit_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -20530,7 +20270,7 @@ func VP8SSIMDspInit_body(tls *libc.TLS) { /* ssim.c:142:1: */ f func(*libc.TLS, uintptr, uintptr, int32) uint32_t }{AccumulateSSE_C})) - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } @@ -20599,322 +20339,322 @@ var WebPUpsamplers [13]WebPUpsampleLinePairFunc /* upsampling.c:25:26: */ // All variants implemented. func UpsampleRgbaLinePair_C(tls *libc.TLS, top_y uintptr, bottom_y uintptr, top_u uintptr, top_v uintptr, cur_u uintptr, cur_v uintptr, top_dst uintptr, bottom_dst uintptr, len int32) { /* upsampling.c:97:1: */ var x int32 - var last_pixel_pair int32 = ((len - 1) >> 1) - var tl_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v)))) << 16))) /* top-left sample */ - var l_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v)))) << 16))) /* left-sample */ + var last_pixel_pair int32 = (len - 1) >> 1 + var tl_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u))) | int32(*(*uint8_t)(unsafe.Pointer(top_v)))<<16) /* top-left sample */ + var l_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v)))<<16) /* left-sample */ { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(top_y)), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), top_dst) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(top_y)), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), top_dst) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(bottom_y)), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), bottom_dst) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(bottom_y)), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), bottom_dst) } for x = 1; x <= last_pixel_pair; x++ { - var t_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))) << 16))) /* top sample */ - var uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))) << 16))) /* sample */ /* precompute invariant values associated with first and second diagonals*/ - var avg uint32_t = ((((tl_uv + t_uv) + l_uv) + uv) + 0x00080008) - var diag_12 uint32_t = ((avg + (uint32_t(2) * (t_uv + l_uv))) >> 3) - var diag_03 uint32_t = ((avg + (uint32_t(2) * (tl_uv + uv))) >> 3) + var t_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))<<16) /* top sample */ + var uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))<<16) /* sample */ /* precompute invariant values associated with first and second diagonals*/ + var avg uint32_t = tl_uv + t_uv + l_uv + uv + 0x00080008 + var diag_12 uint32_t = (avg + uint32_t(2)*(t_uv+l_uv)) >> 3 + var diag_03 uint32_t = (avg + uint32_t(2)*(tl_uv+uv)) >> 3 { - var uv0 uint32_t = ((diag_12 + tl_uv) >> 1) - var uv1 uint32_t = ((diag_03 + t_uv) >> 1) - VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 1)))), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), (top_dst + uintptr((((2 * x) - 1) * (4))))) - VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 0)))), (uint8(uv1 & uint32_t(0xff))), (uint8(uv1 >> 16)), (top_dst + uintptr((((2 * x) - 0) * (4))))) + var uv0 uint32_t = (diag_12 + tl_uv) >> 1 + var uv1 uint32_t = (diag_03 + t_uv) >> 1 + VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-1))), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), top_dst+uintptr((2*x-1)*4)) + VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-0))), uint8(uv1&uint32_t(0xff)), uint8(uv1>>16), top_dst+uintptr((2*x-0)*4)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((diag_03 + l_uv) >> 1) - var uv1 uint32_t = ((diag_12 + uv) >> 1) - VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) - 1)))), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), (bottom_dst + uintptr((((2 * x) - 1) * (4))))) - VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) + 0)))), (uint8(uv1 & uint32_t(0xff))), (uint8(uv1 >> 16)), (bottom_dst + uintptr((((2 * x) + 0) * (4))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (diag_03 + l_uv) >> 1 + var uv1 uint32_t = (diag_12 + uv) >> 1 + VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x-1))), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), bottom_dst+uintptr((2*x-1)*4)) + VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x+0))), uint8(uv1&uint32_t(0xff)), uint8(uv1>>16), bottom_dst+uintptr((2*x+0)*4)) } tl_uv = t_uv l_uv = uv } - if !((len & 1) != 0) { + if !(len&1 != 0) { { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr((len - 1)))), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), (top_dst + uintptr(((len - 1) * (4))))) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(len-1))), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), top_dst+uintptr((len-1)*4)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr((len - 1)))), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), (bottom_dst + uintptr(((len - 1) * (4))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(len-1))), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), bottom_dst+uintptr((len-1)*4)) } } } func UpsampleBgraLinePair_C(tls *libc.TLS, top_y uintptr, bottom_y uintptr, top_u uintptr, top_v uintptr, cur_u uintptr, cur_v uintptr, top_dst uintptr, bottom_dst uintptr, len int32) { /* upsampling.c:98:1: */ var x int32 - var last_pixel_pair int32 = ((len - 1) >> 1) - var tl_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v)))) << 16))) /* top-left sample */ - var l_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v)))) << 16))) /* left-sample */ + var last_pixel_pair int32 = (len - 1) >> 1 + var tl_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u))) | int32(*(*uint8_t)(unsafe.Pointer(top_v)))<<16) /* top-left sample */ + var l_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v)))<<16) /* left-sample */ { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(top_y)), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), top_dst) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(top_y)), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), top_dst) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(bottom_y)), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), bottom_dst) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(bottom_y)), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), bottom_dst) } for x = 1; x <= last_pixel_pair; x++ { - var t_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))) << 16))) /* top sample */ - var uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))) << 16))) /* sample */ /* precompute invariant values associated with first and second diagonals*/ - var avg uint32_t = ((((tl_uv + t_uv) + l_uv) + uv) + 0x00080008) - var diag_12 uint32_t = ((avg + (uint32_t(2) * (t_uv + l_uv))) >> 3) - var diag_03 uint32_t = ((avg + (uint32_t(2) * (tl_uv + uv))) >> 3) + var t_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))<<16) /* top sample */ + var uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))<<16) /* sample */ /* precompute invariant values associated with first and second diagonals*/ + var avg uint32_t = tl_uv + t_uv + l_uv + uv + 0x00080008 + var diag_12 uint32_t = (avg + uint32_t(2)*(t_uv+l_uv)) >> 3 + var diag_03 uint32_t = (avg + uint32_t(2)*(tl_uv+uv)) >> 3 { - var uv0 uint32_t = ((diag_12 + tl_uv) >> 1) - var uv1 uint32_t = ((diag_03 + t_uv) >> 1) - VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 1)))), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), (top_dst + uintptr((((2 * x) - 1) * (4))))) - VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 0)))), (uint8(uv1 & uint32_t(0xff))), (uint8(uv1 >> 16)), (top_dst + uintptr((((2 * x) - 0) * (4))))) + var uv0 uint32_t = (diag_12 + tl_uv) >> 1 + var uv1 uint32_t = (diag_03 + t_uv) >> 1 + VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-1))), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), top_dst+uintptr((2*x-1)*4)) + VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-0))), uint8(uv1&uint32_t(0xff)), uint8(uv1>>16), top_dst+uintptr((2*x-0)*4)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((diag_03 + l_uv) >> 1) - var uv1 uint32_t = ((diag_12 + uv) >> 1) - VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) - 1)))), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), (bottom_dst + uintptr((((2 * x) - 1) * (4))))) - VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) + 0)))), (uint8(uv1 & uint32_t(0xff))), (uint8(uv1 >> 16)), (bottom_dst + uintptr((((2 * x) + 0) * (4))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (diag_03 + l_uv) >> 1 + var uv1 uint32_t = (diag_12 + uv) >> 1 + VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x-1))), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), bottom_dst+uintptr((2*x-1)*4)) + VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x+0))), uint8(uv1&uint32_t(0xff)), uint8(uv1>>16), bottom_dst+uintptr((2*x+0)*4)) } tl_uv = t_uv l_uv = uv } - if !((len & 1) != 0) { + if !(len&1 != 0) { { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr((len - 1)))), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), (top_dst + uintptr(((len - 1) * (4))))) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(len-1))), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), top_dst+uintptr((len-1)*4)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr((len - 1)))), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), (bottom_dst + uintptr(((len - 1) * (4))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(len-1))), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), bottom_dst+uintptr((len-1)*4)) } } } func UpsampleArgbLinePair_C(tls *libc.TLS, top_y uintptr, bottom_y uintptr, top_u uintptr, top_v uintptr, cur_u uintptr, cur_v uintptr, top_dst uintptr, bottom_dst uintptr, len int32) { /* upsampling.c:100:1: */ var x int32 - var last_pixel_pair int32 = ((len - 1) >> 1) - var tl_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v)))) << 16))) /* top-left sample */ - var l_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v)))) << 16))) /* left-sample */ + var last_pixel_pair int32 = (len - 1) >> 1 + var tl_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u))) | int32(*(*uint8_t)(unsafe.Pointer(top_v)))<<16) /* top-left sample */ + var l_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v)))<<16) /* left-sample */ { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(top_y)), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), top_dst) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(top_y)), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), top_dst) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(bottom_y)), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), bottom_dst) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(bottom_y)), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), bottom_dst) } for x = 1; x <= last_pixel_pair; x++ { - var t_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))) << 16))) /* top sample */ - var uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))) << 16))) /* sample */ /* precompute invariant values associated with first and second diagonals*/ - var avg uint32_t = ((((tl_uv + t_uv) + l_uv) + uv) + 0x00080008) - var diag_12 uint32_t = ((avg + (uint32_t(2) * (t_uv + l_uv))) >> 3) - var diag_03 uint32_t = ((avg + (uint32_t(2) * (tl_uv + uv))) >> 3) + var t_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))<<16) /* top sample */ + var uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))<<16) /* sample */ /* precompute invariant values associated with first and second diagonals*/ + var avg uint32_t = tl_uv + t_uv + l_uv + uv + 0x00080008 + var diag_12 uint32_t = (avg + uint32_t(2)*(t_uv+l_uv)) >> 3 + var diag_03 uint32_t = (avg + uint32_t(2)*(tl_uv+uv)) >> 3 { - var uv0 uint32_t = ((diag_12 + tl_uv) >> 1) - var uv1 uint32_t = ((diag_03 + t_uv) >> 1) - VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 1)))), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), (top_dst + uintptr((((2 * x) - 1) * (4))))) - VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 0)))), (uint8(uv1 & uint32_t(0xff))), (uint8(uv1 >> 16)), (top_dst + uintptr((((2 * x) - 0) * (4))))) + var uv0 uint32_t = (diag_12 + tl_uv) >> 1 + var uv1 uint32_t = (diag_03 + t_uv) >> 1 + VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-1))), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), top_dst+uintptr((2*x-1)*4)) + VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-0))), uint8(uv1&uint32_t(0xff)), uint8(uv1>>16), top_dst+uintptr((2*x-0)*4)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((diag_03 + l_uv) >> 1) - var uv1 uint32_t = ((diag_12 + uv) >> 1) - VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) - 1)))), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), (bottom_dst + uintptr((((2 * x) - 1) * (4))))) - VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) + 0)))), (uint8(uv1 & uint32_t(0xff))), (uint8(uv1 >> 16)), (bottom_dst + uintptr((((2 * x) + 0) * (4))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (diag_03 + l_uv) >> 1 + var uv1 uint32_t = (diag_12 + uv) >> 1 + VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x-1))), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), bottom_dst+uintptr((2*x-1)*4)) + VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x+0))), uint8(uv1&uint32_t(0xff)), uint8(uv1>>16), bottom_dst+uintptr((2*x+0)*4)) } tl_uv = t_uv l_uv = uv } - if !((len & 1) != 0) { + if !(len&1 != 0) { { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr((len - 1)))), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), (top_dst + uintptr(((len - 1) * (4))))) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(top_y + uintptr(len-1))), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), top_dst+uintptr((len-1)*4)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr((len - 1)))), (uint8(uv0 & uint32_t(0xff))), (uint8(uv0 >> 16)), (bottom_dst + uintptr(((len - 1) * (4))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(len-1))), uint8(uv0&uint32_t(0xff)), uint8(uv0>>16), bottom_dst+uintptr((len-1)*4)) } } } func UpsampleRgbLinePair_C(tls *libc.TLS, top_y uintptr, bottom_y uintptr, top_u uintptr, top_v uintptr, cur_u uintptr, cur_v uintptr, top_dst uintptr, bottom_dst uintptr, len int32) { /* upsampling.c:101:1: */ var x int32 - var last_pixel_pair int32 = ((len - 1) >> 1) - var tl_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v)))) << 16))) /* top-left sample */ - var l_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v)))) << 16))) /* left-sample */ + var last_pixel_pair int32 = (len - 1) >> 1 + var tl_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u))) | int32(*(*uint8_t)(unsafe.Pointer(top_v)))<<16) /* top-left sample */ + var l_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v)))<<16) /* left-sample */ { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), top_dst) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), top_dst) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), bottom_dst) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), bottom_dst) } for x = 1; x <= last_pixel_pair; x++ { - var t_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))) << 16))) /* top sample */ - var uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))) << 16))) /* sample */ /* precompute invariant values associated with first and second diagonals*/ - var avg uint32_t = ((((tl_uv + t_uv) + l_uv) + uv) + 0x00080008) - var diag_12 uint32_t = ((avg + (uint32_t(2) * (t_uv + l_uv))) >> 3) - var diag_03 uint32_t = ((avg + (uint32_t(2) * (tl_uv + uv))) >> 3) + var t_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))<<16) /* top sample */ + var uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))<<16) /* sample */ /* precompute invariant values associated with first and second diagonals*/ + var avg uint32_t = tl_uv + t_uv + l_uv + uv + 0x00080008 + var diag_12 uint32_t = (avg + uint32_t(2)*(t_uv+l_uv)) >> 3 + var diag_03 uint32_t = (avg + uint32_t(2)*(tl_uv+uv)) >> 3 { - var uv0 uint32_t = ((diag_12 + tl_uv) >> 1) - var uv1 uint32_t = ((diag_03 + t_uv) >> 1) - VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (top_dst + uintptr((((2 * x) - 1) * (3))))) - VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 0))))), (int32(uv1 & uint32_t(0xff))), (int32(uv1 >> 16)), (top_dst + uintptr((((2 * x) - 0) * (3))))) + var uv0 uint32_t = (diag_12 + tl_uv) >> 1 + var uv1 uint32_t = (diag_03 + t_uv) >> 1 + VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), top_dst+uintptr((2*x-1)*3)) + VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-0)))), int32(uv1&uint32_t(0xff)), int32(uv1>>16), top_dst+uintptr((2*x-0)*3)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((diag_03 + l_uv) >> 1) - var uv1 uint32_t = ((diag_12 + uv) >> 1) - VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (bottom_dst + uintptr((((2 * x) - 1) * (3))))) - VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) + 0))))), (int32(uv1 & uint32_t(0xff))), (int32(uv1 >> 16)), (bottom_dst + uintptr((((2 * x) + 0) * (3))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (diag_03 + l_uv) >> 1 + var uv1 uint32_t = (diag_12 + uv) >> 1 + VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), bottom_dst+uintptr((2*x-1)*3)) + VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x+0)))), int32(uv1&uint32_t(0xff)), int32(uv1>>16), bottom_dst+uintptr((2*x+0)*3)) } tl_uv = t_uv l_uv = uv } - if !((len & 1) != 0) { + if !(len&1 != 0) { { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr((len - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (top_dst + uintptr(((len - 1) * (3))))) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(len-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), top_dst+uintptr((len-1)*3)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr((len - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (bottom_dst + uintptr(((len - 1) * (3))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(len-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), bottom_dst+uintptr((len-1)*3)) } } } func UpsampleBgrLinePair_C(tls *libc.TLS, top_y uintptr, bottom_y uintptr, top_u uintptr, top_v uintptr, cur_u uintptr, cur_v uintptr, top_dst uintptr, bottom_dst uintptr, len int32) { /* upsampling.c:102:1: */ var x int32 - var last_pixel_pair int32 = ((len - 1) >> 1) - var tl_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v)))) << 16))) /* top-left sample */ - var l_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v)))) << 16))) /* left-sample */ + var last_pixel_pair int32 = (len - 1) >> 1 + var tl_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u))) | int32(*(*uint8_t)(unsafe.Pointer(top_v)))<<16) /* top-left sample */ + var l_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v)))<<16) /* left-sample */ { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), top_dst) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), top_dst) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), bottom_dst) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), bottom_dst) } for x = 1; x <= last_pixel_pair; x++ { - var t_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))) << 16))) /* top sample */ - var uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))) << 16))) /* sample */ /* precompute invariant values associated with first and second diagonals*/ - var avg uint32_t = ((((tl_uv + t_uv) + l_uv) + uv) + 0x00080008) - var diag_12 uint32_t = ((avg + (uint32_t(2) * (t_uv + l_uv))) >> 3) - var diag_03 uint32_t = ((avg + (uint32_t(2) * (tl_uv + uv))) >> 3) + var t_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))<<16) /* top sample */ + var uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))<<16) /* sample */ /* precompute invariant values associated with first and second diagonals*/ + var avg uint32_t = tl_uv + t_uv + l_uv + uv + 0x00080008 + var diag_12 uint32_t = (avg + uint32_t(2)*(t_uv+l_uv)) >> 3 + var diag_03 uint32_t = (avg + uint32_t(2)*(tl_uv+uv)) >> 3 { - var uv0 uint32_t = ((diag_12 + tl_uv) >> 1) - var uv1 uint32_t = ((diag_03 + t_uv) >> 1) - VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (top_dst + uintptr((((2 * x) - 1) * (3))))) - VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 0))))), (int32(uv1 & uint32_t(0xff))), (int32(uv1 >> 16)), (top_dst + uintptr((((2 * x) - 0) * (3))))) + var uv0 uint32_t = (diag_12 + tl_uv) >> 1 + var uv1 uint32_t = (diag_03 + t_uv) >> 1 + VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), top_dst+uintptr((2*x-1)*3)) + VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-0)))), int32(uv1&uint32_t(0xff)), int32(uv1>>16), top_dst+uintptr((2*x-0)*3)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((diag_03 + l_uv) >> 1) - var uv1 uint32_t = ((diag_12 + uv) >> 1) - VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (bottom_dst + uintptr((((2 * x) - 1) * (3))))) - VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) + 0))))), (int32(uv1 & uint32_t(0xff))), (int32(uv1 >> 16)), (bottom_dst + uintptr((((2 * x) + 0) * (3))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (diag_03 + l_uv) >> 1 + var uv1 uint32_t = (diag_12 + uv) >> 1 + VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), bottom_dst+uintptr((2*x-1)*3)) + VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x+0)))), int32(uv1&uint32_t(0xff)), int32(uv1>>16), bottom_dst+uintptr((2*x+0)*3)) } tl_uv = t_uv l_uv = uv } - if !((len & 1) != 0) { + if !(len&1 != 0) { { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr((len - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (top_dst + uintptr(((len - 1) * (3))))) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(len-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), top_dst+uintptr((len-1)*3)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr((len - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (bottom_dst + uintptr(((len - 1) * (3))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(len-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), bottom_dst+uintptr((len-1)*3)) } } } func UpsampleRgba4444LinePair_C(tls *libc.TLS, top_y uintptr, bottom_y uintptr, top_u uintptr, top_v uintptr, cur_u uintptr, cur_v uintptr, top_dst uintptr, bottom_dst uintptr, len int32) { /* upsampling.c:103:1: */ var x int32 - var last_pixel_pair int32 = ((len - 1) >> 1) - var tl_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v)))) << 16))) /* top-left sample */ - var l_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v)))) << 16))) /* left-sample */ + var last_pixel_pair int32 = (len - 1) >> 1 + var tl_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u))) | int32(*(*uint8_t)(unsafe.Pointer(top_v)))<<16) /* top-left sample */ + var l_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v)))<<16) /* left-sample */ { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), top_dst) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), top_dst) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), bottom_dst) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), bottom_dst) } for x = 1; x <= last_pixel_pair; x++ { - var t_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))) << 16))) /* top sample */ - var uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))) << 16))) /* sample */ /* precompute invariant values associated with first and second diagonals*/ - var avg uint32_t = ((((tl_uv + t_uv) + l_uv) + uv) + 0x00080008) - var diag_12 uint32_t = ((avg + (uint32_t(2) * (t_uv + l_uv))) >> 3) - var diag_03 uint32_t = ((avg + (uint32_t(2) * (tl_uv + uv))) >> 3) + var t_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))<<16) /* top sample */ + var uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))<<16) /* sample */ /* precompute invariant values associated with first and second diagonals*/ + var avg uint32_t = tl_uv + t_uv + l_uv + uv + 0x00080008 + var diag_12 uint32_t = (avg + uint32_t(2)*(t_uv+l_uv)) >> 3 + var diag_03 uint32_t = (avg + uint32_t(2)*(tl_uv+uv)) >> 3 { - var uv0 uint32_t = ((diag_12 + tl_uv) >> 1) - var uv1 uint32_t = ((diag_03 + t_uv) >> 1) - VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (top_dst + uintptr((((2 * x) - 1) * (2))))) - VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 0))))), (int32(uv1 & uint32_t(0xff))), (int32(uv1 >> 16)), (top_dst + uintptr((((2 * x) - 0) * (2))))) + var uv0 uint32_t = (diag_12 + tl_uv) >> 1 + var uv1 uint32_t = (diag_03 + t_uv) >> 1 + VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), top_dst+uintptr((2*x-1)*2)) + VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-0)))), int32(uv1&uint32_t(0xff)), int32(uv1>>16), top_dst+uintptr((2*x-0)*2)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((diag_03 + l_uv) >> 1) - var uv1 uint32_t = ((diag_12 + uv) >> 1) - VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (bottom_dst + uintptr((((2 * x) - 1) * (2))))) - VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) + 0))))), (int32(uv1 & uint32_t(0xff))), (int32(uv1 >> 16)), (bottom_dst + uintptr((((2 * x) + 0) * (2))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (diag_03 + l_uv) >> 1 + var uv1 uint32_t = (diag_12 + uv) >> 1 + VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), bottom_dst+uintptr((2*x-1)*2)) + VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x+0)))), int32(uv1&uint32_t(0xff)), int32(uv1>>16), bottom_dst+uintptr((2*x+0)*2)) } tl_uv = t_uv l_uv = uv } - if !((len & 1) != 0) { + if !(len&1 != 0) { { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr((len - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (top_dst + uintptr(((len - 1) * (2))))) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(len-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), top_dst+uintptr((len-1)*2)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr((len - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (bottom_dst + uintptr(((len - 1) * (2))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(len-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), bottom_dst+uintptr((len-1)*2)) } } } func UpsampleRgb565LinePair_C(tls *libc.TLS, top_y uintptr, bottom_y uintptr, top_u uintptr, top_v uintptr, cur_u uintptr, cur_v uintptr, top_dst uintptr, bottom_dst uintptr, len int32) { /* upsampling.c:104:1: */ var x int32 - var last_pixel_pair int32 = ((len - 1) >> 1) - var tl_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v)))) << 16))) /* top-left sample */ - var l_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u)))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v)))) << 16))) /* left-sample */ + var last_pixel_pair int32 = (len - 1) >> 1 + var tl_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u))) | int32(*(*uint8_t)(unsafe.Pointer(top_v)))<<16) /* top-left sample */ + var l_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v)))<<16) /* left-sample */ { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), top_dst) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), top_dst) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), bottom_dst) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), bottom_dst) } for x = 1; x <= last_pixel_pair; x++ { - var t_uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))) << 16))) /* top sample */ - var uv uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x))))) | ((int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))) << 16))) /* sample */ /* precompute invariant values associated with first and second diagonals*/ - var avg uint32_t = ((((tl_uv + t_uv) + l_uv) + uv) + 0x00080008) - var diag_12 uint32_t = ((avg + (uint32_t(2) * (t_uv + l_uv))) >> 3) - var diag_03 uint32_t = ((avg + (uint32_t(2) * (tl_uv + uv))) >> 3) + var t_uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(top_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(top_v + uintptr(x))))<<16) /* top sample */ + var uv uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(cur_u + uintptr(x)))) | int32(*(*uint8_t)(unsafe.Pointer(cur_v + uintptr(x))))<<16) /* sample */ /* precompute invariant values associated with first and second diagonals*/ + var avg uint32_t = tl_uv + t_uv + l_uv + uv + 0x00080008 + var diag_12 uint32_t = (avg + uint32_t(2)*(t_uv+l_uv)) >> 3 + var diag_03 uint32_t = (avg + uint32_t(2)*(tl_uv+uv)) >> 3 { - var uv0 uint32_t = ((diag_12 + tl_uv) >> 1) - var uv1 uint32_t = ((diag_03 + t_uv) >> 1) - VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (top_dst + uintptr((((2 * x) - 1) * (2))))) - VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(((2 * x) - 0))))), (int32(uv1 & uint32_t(0xff))), (int32(uv1 >> 16)), (top_dst + uintptr((((2 * x) - 0) * (2))))) + var uv0 uint32_t = (diag_12 + tl_uv) >> 1 + var uv1 uint32_t = (diag_03 + t_uv) >> 1 + VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), top_dst+uintptr((2*x-1)*2)) + VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(2*x-0)))), int32(uv1&uint32_t(0xff)), int32(uv1>>16), top_dst+uintptr((2*x-0)*2)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((diag_03 + l_uv) >> 1) - var uv1 uint32_t = ((diag_12 + uv) >> 1) - VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (bottom_dst + uintptr((((2 * x) - 1) * (2))))) - VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(((2 * x) + 0))))), (int32(uv1 & uint32_t(0xff))), (int32(uv1 >> 16)), (bottom_dst + uintptr((((2 * x) + 0) * (2))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (diag_03 + l_uv) >> 1 + var uv1 uint32_t = (diag_12 + uv) >> 1 + VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), bottom_dst+uintptr((2*x-1)*2)) + VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(2*x+0)))), int32(uv1&uint32_t(0xff)), int32(uv1>>16), bottom_dst+uintptr((2*x+0)*2)) } tl_uv = t_uv l_uv = uv } - if !((len & 1) != 0) { + if !(len&1 != 0) { { - var uv0 uint32_t = ((((uint32_t(3) * tl_uv) + l_uv) + 0x00020002) >> 2) - VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr((len - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (top_dst + uintptr(((len - 1) * (2))))) + var uv0 uint32_t = (uint32_t(3)*tl_uv + l_uv + 0x00020002) >> 2 + VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(top_y + uintptr(len-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), top_dst+uintptr((len-1)*2)) } - if bottom_y != (uintptr(0)) { - var uv0 uint32_t = ((((uint32_t(3) * l_uv) + tl_uv) + 0x00020002) >> 2) - VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr((len - 1))))), (int32(uv0 & uint32_t(0xff))), (int32(uv0 >> 16)), (bottom_dst + uintptr(((len - 1) * (2))))) + if bottom_y != uintptr(0) { + var uv0 uint32_t = (uint32_t(3)*l_uv + tl_uv + 0x00020002) >> 2 + VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(bottom_y + uintptr(len-1)))), int32(uv0&uint32_t(0xff)), int32(uv0>>16), bottom_dst+uintptr((len-1)*2)) } } } @@ -20934,56 +20674,56 @@ func WebPGetLinePairConverter(tls *libc.TLS, alpha_is_last int32) WebPUpsampleLi func WebPYuv444ToRgba_C(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* upsampling.c:189:1: */ var i int32 for i = 0; i < len; i++ { - VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(y + uintptr(i))), *(*uint8_t)(unsafe.Pointer(u + uintptr(i))), *(*uint8_t)(unsafe.Pointer(v + uintptr(i))), (dst + uintptr((i * (4))))) + VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(y + uintptr(i))), *(*uint8_t)(unsafe.Pointer(u + uintptr(i))), *(*uint8_t)(unsafe.Pointer(v + uintptr(i))), dst+uintptr(i*4)) } } func WebPYuv444ToBgra_C(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* upsampling.c:190:1: */ var i int32 for i = 0; i < len; i++ { - VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(y + uintptr(i))), *(*uint8_t)(unsafe.Pointer(u + uintptr(i))), *(*uint8_t)(unsafe.Pointer(v + uintptr(i))), (dst + uintptr((i * (4))))) + VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(y + uintptr(i))), *(*uint8_t)(unsafe.Pointer(u + uintptr(i))), *(*uint8_t)(unsafe.Pointer(v + uintptr(i))), dst+uintptr(i*4)) } } func WebPYuv444ToRgb_C(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* upsampling.c:192:1: */ var i int32 for i = 0; i < len; i++ { - VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(y + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(u + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(v + uintptr(i)))), (dst + uintptr((i * (3))))) + VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(y + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(u + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(v + uintptr(i)))), dst+uintptr(i*3)) } } func WebPYuv444ToBgr_C(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* upsampling.c:193:1: */ var i int32 for i = 0; i < len; i++ { - VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(y + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(u + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(v + uintptr(i)))), (dst + uintptr((i * (3))))) + VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(y + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(u + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(v + uintptr(i)))), dst+uintptr(i*3)) } } func WebPYuv444ToArgb_C(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* upsampling.c:194:1: */ var i int32 for i = 0; i < len; i++ { - VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(y + uintptr(i))), *(*uint8_t)(unsafe.Pointer(u + uintptr(i))), *(*uint8_t)(unsafe.Pointer(v + uintptr(i))), (dst + uintptr((i * (4))))) + VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(y + uintptr(i))), *(*uint8_t)(unsafe.Pointer(u + uintptr(i))), *(*uint8_t)(unsafe.Pointer(v + uintptr(i))), dst+uintptr(i*4)) } } func WebPYuv444ToRgba4444_C(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* upsampling.c:195:1: */ var i int32 for i = 0; i < len; i++ { - VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(y + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(u + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(v + uintptr(i)))), (dst + uintptr((i * (2))))) + VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(y + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(u + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(v + uintptr(i)))), dst+uintptr(i*2)) } } func WebPYuv444ToRgb565_C(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* upsampling.c:196:1: */ var i int32 for i = 0; i < len; i++ { - VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(y + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(u + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(v + uintptr(i)))), (dst + uintptr((i * (2))))) + VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(y + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(u + uintptr(i)))), int32(*(*uint8_t)(unsafe.Pointer(v + uintptr(i)))), dst+uintptr(i*2)) } } var WebPYUV444Converters [13]WebPYUV444Converter /* upsampling.c:216:21: */ func WebPInitYUV444Converters(tls *libc.TLS) { /* upsampling.c:222:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if WebPInitYUV444Converters_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -21029,12 +20769,12 @@ func WebPInitYUV444Converters_body(tls *libc.TLS) { /* upsampling.c:222:1: */ f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, int32) }{WebPYuv444ToRgba4444_C})) - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } func WebPInitUpsamplers(tls *libc.TLS) { /* upsampling.c:263:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if WebPInitUpsamplers_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -21081,7 +20821,7 @@ func WebPInitUpsamplers_body(tls *libc.TLS) { /* upsampling.c:263:1: */ }{UpsampleRgba4444LinePair_C})) // If defined, use CPUInfo() to overwrite some pointers with faster versions. - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } @@ -21131,106 +20871,106 @@ func WebPInitUpsamplers_body(tls *libc.TLS) { /* upsampling.c:263:1: */ // All variants implemented. func YuvToRgbRow(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* yuv.c:41:1: */ - var end uintptr = (dst + uintptr(((len & libc.CplInt32(1)) * (3)))) + var end uintptr = dst + uintptr(len&libc.CplInt32(1)*3) for dst != end { VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(y))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), dst) - VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(y + 1))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), (dst + uintptr((3)))) + VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(y + 1))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), dst+uintptr(3)) y += uintptr(2) u++ v++ - dst += (uintptr(2 * (3))) + dst += uintptr(2 * 3) } - if (len & 1) != 0 { + if len&1 != 0 { VP8YuvToRgb(tls, int32(*(*uint8_t)(unsafe.Pointer(y))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), dst) } } func YuvToBgrRow(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* yuv.c:42:1: */ - var end uintptr = (dst + uintptr(((len & libc.CplInt32(1)) * (3)))) + var end uintptr = dst + uintptr(len&libc.CplInt32(1)*3) for dst != end { VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(y))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), dst) - VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(y + 1))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), (dst + uintptr((3)))) + VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(y + 1))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), dst+uintptr(3)) y += uintptr(2) u++ v++ - dst += (uintptr(2 * (3))) + dst += uintptr(2 * 3) } - if (len & 1) != 0 { + if len&1 != 0 { VP8YuvToBgr(tls, int32(*(*uint8_t)(unsafe.Pointer(y))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), dst) } } func YuvToRgbaRow(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* yuv.c:43:1: */ - var end uintptr = (dst + uintptr(((len & libc.CplInt32(1)) * (4)))) + var end uintptr = dst + uintptr(len&libc.CplInt32(1)*4) for dst != end { VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(y)), *(*uint8_t)(unsafe.Pointer(u)), *(*uint8_t)(unsafe.Pointer(v)), dst) - VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(y + 1)), *(*uint8_t)(unsafe.Pointer(u)), *(*uint8_t)(unsafe.Pointer(v)), (dst + uintptr((4)))) + VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(y + 1)), *(*uint8_t)(unsafe.Pointer(u)), *(*uint8_t)(unsafe.Pointer(v)), dst+uintptr(4)) y += uintptr(2) u++ v++ - dst += (uintptr(2 * (4))) + dst += uintptr(2 * 4) } - if (len & 1) != 0 { + if len&1 != 0 { VP8YuvToRgba(tls, *(*uint8_t)(unsafe.Pointer(y)), *(*uint8_t)(unsafe.Pointer(u)), *(*uint8_t)(unsafe.Pointer(v)), dst) } } func YuvToBgraRow(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* yuv.c:44:1: */ - var end uintptr = (dst + uintptr(((len & libc.CplInt32(1)) * (4)))) + var end uintptr = dst + uintptr(len&libc.CplInt32(1)*4) for dst != end { VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(y)), *(*uint8_t)(unsafe.Pointer(u)), *(*uint8_t)(unsafe.Pointer(v)), dst) - VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(y + 1)), *(*uint8_t)(unsafe.Pointer(u)), *(*uint8_t)(unsafe.Pointer(v)), (dst + uintptr((4)))) + VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(y + 1)), *(*uint8_t)(unsafe.Pointer(u)), *(*uint8_t)(unsafe.Pointer(v)), dst+uintptr(4)) y += uintptr(2) u++ v++ - dst += (uintptr(2 * (4))) + dst += uintptr(2 * 4) } - if (len & 1) != 0 { + if len&1 != 0 { VP8YuvToBgra(tls, *(*uint8_t)(unsafe.Pointer(y)), *(*uint8_t)(unsafe.Pointer(u)), *(*uint8_t)(unsafe.Pointer(v)), dst) } } func YuvToArgbRow(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* yuv.c:45:1: */ - var end uintptr = (dst + uintptr(((len & libc.CplInt32(1)) * (4)))) + var end uintptr = dst + uintptr(len&libc.CplInt32(1)*4) for dst != end { VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(y)), *(*uint8_t)(unsafe.Pointer(u)), *(*uint8_t)(unsafe.Pointer(v)), dst) - VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(y + 1)), *(*uint8_t)(unsafe.Pointer(u)), *(*uint8_t)(unsafe.Pointer(v)), (dst + uintptr((4)))) + VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(y + 1)), *(*uint8_t)(unsafe.Pointer(u)), *(*uint8_t)(unsafe.Pointer(v)), dst+uintptr(4)) y += uintptr(2) u++ v++ - dst += (uintptr(2 * (4))) + dst += uintptr(2 * 4) } - if (len & 1) != 0 { + if len&1 != 0 { VP8YuvToArgb(tls, *(*uint8_t)(unsafe.Pointer(y)), *(*uint8_t)(unsafe.Pointer(u)), *(*uint8_t)(unsafe.Pointer(v)), dst) } } func YuvToRgba4444Row(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* yuv.c:46:1: */ - var end uintptr = (dst + uintptr(((len & libc.CplInt32(1)) * (2)))) + var end uintptr = dst + uintptr(len&libc.CplInt32(1)*2) for dst != end { VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(y))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), dst) - VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(y + 1))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), (dst + uintptr((2)))) + VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(y + 1))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), dst+uintptr(2)) y += uintptr(2) u++ v++ - dst += (uintptr(2 * (2))) + dst += uintptr(2 * 2) } - if (len & 1) != 0 { + if len&1 != 0 { VP8YuvToRgba4444(tls, int32(*(*uint8_t)(unsafe.Pointer(y))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), dst) } } func YuvToRgb565Row(tls *libc.TLS, y uintptr, u uintptr, v uintptr, dst uintptr, len int32) { /* yuv.c:47:1: */ - var end uintptr = (dst + uintptr(((len & libc.CplInt32(1)) * (2)))) + var end uintptr = dst + uintptr(len&libc.CplInt32(1)*2) for dst != end { VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(y))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), dst) - VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(y + 1))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), (dst + uintptr((2)))) + VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(y + 1))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), dst+uintptr(2)) y += uintptr(2) u++ v++ - dst += (uintptr(2 * (2))) + dst += uintptr(2 * 2) } - if (len & 1) != 0 { + if len&1 != 0 { VP8YuvToRgb565(tls, int32(*(*uint8_t)(unsafe.Pointer(y))), int32(*(*uint8_t)(unsafe.Pointer(u))), int32(*(*uint8_t)(unsafe.Pointer(v))), dst) } } @@ -21243,7 +20983,7 @@ func WebPSamplerProcessPlane(tls *libc.TLS, y uintptr, y_stride int32, u uintptr f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, int32) })(unsafe.Pointer(&struct{ uintptr }{func1})).f(tls, y, u, v, dst, width) y += uintptr(y_stride) - if (j & 1) != 0 { + if j&1 != 0 { u += uintptr(uv_stride) v += uintptr(uv_stride) } @@ -21257,7 +20997,7 @@ func WebPSamplerProcessPlane(tls *libc.TLS, y uintptr, y_stride int32, u uintptr var WebPSamplers [13]WebPSamplerRowFunc /* yuv.c:71:20: */ func WebPInitSamplers(tls *libc.TLS) { /* yuv.c:78:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if WebPInitSamplers_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -21304,7 +21044,7 @@ func WebPInitSamplers_body(tls *libc.TLS) { /* yuv.c:78:1: */ }{YuvToRgba4444Row})) // If defined, use CPUInfo() to overwrite some pointers with faster versions. - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } @@ -21315,47 +21055,47 @@ func ConvertARGBToY_C(tls *libc.TLS, argb uintptr, y uintptr, width int32) { /* var i int32 for i = 0; i < width; i++ { var p uint32_t = *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4)) - *(*uint8_t)(unsafe.Pointer(y + uintptr(i))) = uint8_t(VP8RGBToY(tls, (int32((p >> 16) & uint32_t(0xff))), (int32((p >> 8) & uint32_t(0xff))), (int32((p >> 0) & uint32_t(0xff))), + *(*uint8_t)(unsafe.Pointer(y + uintptr(i))) = uint8_t(VP8RGBToY(tls, int32(p>>16&uint32_t(0xff)), int32(p>>8&uint32_t(0xff)), int32(p>>0&uint32_t(0xff)), YUV_HALF)) } } func WebPConvertARGBToUV_C(tls *libc.TLS, argb uintptr, u uintptr, v uintptr, src_width int32, do_store int32) { /* yuv.c:128:6: */ // No rounding. Last pixel is dealt with separately. - var uv_width int32 = (src_width >> 1) + var uv_width int32 = src_width >> 1 var i int32 for i = 0; i < uv_width; i++ { - var v0 uint32_t = *(*uint32_t)(unsafe.Pointer(argb + uintptr(((2*i)+0))*4)) - var v1 uint32_t = *(*uint32_t)(unsafe.Pointer(argb + uintptr(((2*i)+1))*4)) + var v0 uint32_t = *(*uint32_t)(unsafe.Pointer(argb + uintptr(2*i+0)*4)) + var v1 uint32_t = *(*uint32_t)(unsafe.Pointer(argb + uintptr(2*i+1)*4)) // VP8RGBToU/V expects four accumulated pixels. Hence we need to // scale r/g/b value by a factor 2. We just shift v0/v1 one bit less. - var r int32 = (int32(((v0 >> 15) & uint32_t(0x1fe)) + ((v1 >> 15) & uint32_t(0x1fe)))) - var g int32 = (int32(((v0 >> 7) & uint32_t(0x1fe)) + ((v1 >> 7) & uint32_t(0x1fe)))) - var b int32 = (int32(((v0 << 1) & uint32_t(0x1fe)) + ((v1 << 1) & uint32_t(0x1fe)))) - var tmp_u int32 = VP8RGBToU(tls, r, g, b, (int32(YUV_HALF) << 2)) - var tmp_v int32 = VP8RGBToV(tls, r, g, b, (int32(YUV_HALF) << 2)) + var r int32 = int32(v0>>15&uint32_t(0x1fe) + v1>>15&uint32_t(0x1fe)) + var g int32 = int32(v0>>7&uint32_t(0x1fe) + v1>>7&uint32_t(0x1fe)) + var b int32 = int32(v0<<1&uint32_t(0x1fe) + v1<<1&uint32_t(0x1fe)) + var tmp_u int32 = VP8RGBToU(tls, r, g, b, int32(YUV_HALF)<<2) + var tmp_v int32 = VP8RGBToV(tls, r, g, b, int32(YUV_HALF)<<2) if do_store != 0 { *(*uint8_t)(unsafe.Pointer(u + uintptr(i))) = uint8_t(tmp_u) *(*uint8_t)(unsafe.Pointer(v + uintptr(i))) = uint8_t(tmp_v) } else { // Approximated average-of-four. But it's an acceptable diff. - *(*uint8_t)(unsafe.Pointer(u + uintptr(i))) = (uint8_t(((int32(*(*uint8_t)(unsafe.Pointer(u + uintptr(i)))) + tmp_u) + 1) >> 1)) - *(*uint8_t)(unsafe.Pointer(v + uintptr(i))) = (uint8_t(((int32(*(*uint8_t)(unsafe.Pointer(v + uintptr(i)))) + tmp_v) + 1) >> 1)) + *(*uint8_t)(unsafe.Pointer(u + uintptr(i))) = uint8_t((int32(*(*uint8_t)(unsafe.Pointer(u + uintptr(i)))) + tmp_u + 1) >> 1) + *(*uint8_t)(unsafe.Pointer(v + uintptr(i))) = uint8_t((int32(*(*uint8_t)(unsafe.Pointer(v + uintptr(i)))) + tmp_v + 1) >> 1) } } - if (src_width & 1) != 0 { // last pixel - var v0 uint32_t = *(*uint32_t)(unsafe.Pointer(argb + uintptr(((2*i)+0))*4)) - var r int32 = (int32((v0 >> 14) & uint32_t(0x3fc))) - var g int32 = (int32((v0 >> 6) & uint32_t(0x3fc))) - var b int32 = (int32((v0 << 2) & uint32_t(0x3fc))) - var tmp_u int32 = VP8RGBToU(tls, r, g, b, (int32(YUV_HALF) << 2)) - var tmp_v int32 = VP8RGBToV(tls, r, g, b, (int32(YUV_HALF) << 2)) + if src_width&1 != 0 { // last pixel + var v0 uint32_t = *(*uint32_t)(unsafe.Pointer(argb + uintptr(2*i+0)*4)) + var r int32 = int32(v0 >> 14 & uint32_t(0x3fc)) + var g int32 = int32(v0 >> 6 & uint32_t(0x3fc)) + var b int32 = int32(v0 << 2 & uint32_t(0x3fc)) + var tmp_u int32 = VP8RGBToU(tls, r, g, b, int32(YUV_HALF)<<2) + var tmp_v int32 = VP8RGBToV(tls, r, g, b, int32(YUV_HALF)<<2) if do_store != 0 { *(*uint8_t)(unsafe.Pointer(u + uintptr(i))) = uint8_t(tmp_u) *(*uint8_t)(unsafe.Pointer(v + uintptr(i))) = uint8_t(tmp_v) } else { - *(*uint8_t)(unsafe.Pointer(u + uintptr(i))) = (uint8_t(((int32(*(*uint8_t)(unsafe.Pointer(u + uintptr(i)))) + tmp_u) + 1) >> 1)) - *(*uint8_t)(unsafe.Pointer(v + uintptr(i))) = (uint8_t(((int32(*(*uint8_t)(unsafe.Pointer(v + uintptr(i)))) + tmp_v) + 1) >> 1)) + *(*uint8_t)(unsafe.Pointer(u + uintptr(i))) = uint8_t((int32(*(*uint8_t)(unsafe.Pointer(u + uintptr(i)))) + tmp_u + 1) >> 1) + *(*uint8_t)(unsafe.Pointer(v + uintptr(i))) = uint8_t((int32(*(*uint8_t)(unsafe.Pointer(v + uintptr(i)))) + tmp_v + 1) >> 1) } } } @@ -21413,14 +21153,14 @@ __1: var r int32 = int32(*(*uint16_t)(unsafe.Pointer(rgb))) var g int32 = int32(*(*uint16_t)(unsafe.Pointer(rgb + 1*2))) var b int32 = int32(*(*uint16_t)(unsafe.Pointer(rgb + 2*2))) - *(*uint8_t)(unsafe.Pointer(u + uintptr(i))) = uint8_t(VP8RGBToU(tls, r, g, b, (int32(YUV_HALF) << 2))) - *(*uint8_t)(unsafe.Pointer(v + uintptr(i))) = uint8_t(VP8RGBToV(tls, r, g, b, (int32(YUV_HALF) << 2))) + *(*uint8_t)(unsafe.Pointer(u + uintptr(i))) = uint8_t(VP8RGBToU(tls, r, g, b, int32(YUV_HALF)<<2)) + *(*uint8_t)(unsafe.Pointer(v + uintptr(i))) = uint8_t(VP8RGBToV(tls, r, g, b, int32(YUV_HALF)<<2)) } goto __2 __2: - i = i + (1) - rgb += 2 * (uintptr(4)) + i = i + 1 + rgb += 2 * uintptr(4) goto __1 goto __3 __3: @@ -21432,8 +21172,8 @@ func clip_y(tls *libc.TLS, v int32) uint16_t { /* yuv.c:199:17: */ if v < 0 { return uint16(0) } - if v > ((int32(1) << 10) - 1) { - return (uint16((int32(1) << 10) - 1)) + if v > int32(1)<<10-1 { + return uint16(int32(1)<<10 - 1) } return uint16_t(v) } @@ -21442,10 +21182,10 @@ func SharpYUVUpdateY_C(tls *libc.TLS, ref uintptr, src uintptr, dst uintptr, len var diff uint64_t = uint64(0) var i int32 for i = 0; i < len; i++ { - var diff_y int32 = (int32(*(*uint16_t)(unsafe.Pointer(ref + uintptr(i)*2))) - int32(*(*uint16_t)(unsafe.Pointer(src + uintptr(i)*2)))) - var new_y int32 = (int32(*(*uint16_t)(unsafe.Pointer(dst + uintptr(i)*2))) + diff_y) + var diff_y int32 = int32(*(*uint16_t)(unsafe.Pointer(ref + uintptr(i)*2))) - int32(*(*uint16_t)(unsafe.Pointer(src + uintptr(i)*2))) + var new_y int32 = int32(*(*uint16_t)(unsafe.Pointer(dst + uintptr(i)*2))) + diff_y *(*uint16_t)(unsafe.Pointer(dst + uintptr(i)*2)) = clip_y(tls, new_y) - diff = diff + (uint64_t(libc.Xabs(tls, diff_y))) + diff = diff + uint64_t(libc.Xabs(tls, diff_y)) } return diff } @@ -21453,8 +21193,8 @@ func SharpYUVUpdateY_C(tls *libc.TLS, ref uintptr, src uintptr, dst uintptr, len func SharpYUVUpdateRGB_C(tls *libc.TLS, ref uintptr, src uintptr, dst uintptr, len int32) { /* yuv.c:216:13: */ var i int32 for i = 0; i < len; i++ { - var diff_uv int32 = (int32(*(*int16_t)(unsafe.Pointer(ref + uintptr(i)*2))) - int32(*(*int16_t)(unsafe.Pointer(src + uintptr(i)*2)))) - *(*int16_t)(unsafe.Pointer((dst + uintptr(i)*2))) += int16_t((diff_uv)) + var diff_uv int32 = int32(*(*int16_t)(unsafe.Pointer(ref + uintptr(i)*2))) - int32(*(*int16_t)(unsafe.Pointer(src + uintptr(i)*2))) + *(*int16_t)(unsafe.Pointer(dst + uintptr(i)*2)) += int16_t(diff_uv) } } @@ -21466,10 +21206,10 @@ __1: goto __3 } { - var v0 int32 = ((((((int32(*(*int16_t)(unsafe.Pointer(A))) * 9) + (int32(*(*int16_t)(unsafe.Pointer(A + 1*2))) * 3)) + (int32(*(*int16_t)(unsafe.Pointer(B))) * 3)) + int32(*(*int16_t)(unsafe.Pointer(B + 1*2)))) + 8) >> 4) - var v1 int32 = ((((((int32(*(*int16_t)(unsafe.Pointer(A + 1*2))) * 9) + (int32(*(*int16_t)(unsafe.Pointer(A))) * 3)) + (int32(*(*int16_t)(unsafe.Pointer(B + 1*2))) * 3)) + int32(*(*int16_t)(unsafe.Pointer(B)))) + 8) >> 4) - *(*uint16_t)(unsafe.Pointer(out + uintptr(((2*i)+0))*2)) = clip_y(tls, (int32(*(*uint16_t)(unsafe.Pointer(best_y + uintptr(((2*i)+0))*2))) + v0)) - *(*uint16_t)(unsafe.Pointer(out + uintptr(((2*i)+1))*2)) = clip_y(tls, (int32(*(*uint16_t)(unsafe.Pointer(best_y + uintptr(((2*i)+1))*2))) + v1)) + var v0 int32 = (int32(*(*int16_t)(unsafe.Pointer(A)))*9 + int32(*(*int16_t)(unsafe.Pointer(A + 1*2)))*3 + int32(*(*int16_t)(unsafe.Pointer(B)))*3 + int32(*(*int16_t)(unsafe.Pointer(B + 1*2))) + 8) >> 4 + var v1 int32 = (int32(*(*int16_t)(unsafe.Pointer(A + 1*2)))*9 + int32(*(*int16_t)(unsafe.Pointer(A)))*3 + int32(*(*int16_t)(unsafe.Pointer(B + 1*2)))*3 + int32(*(*int16_t)(unsafe.Pointer(B))) + 8) >> 4 + *(*uint16_t)(unsafe.Pointer(out + uintptr(2*i+0)*2)) = clip_y(tls, int32(*(*uint16_t)(unsafe.Pointer(best_y + uintptr(2*i+0)*2)))+v0) + *(*uint16_t)(unsafe.Pointer(out + uintptr(2*i+1)*2)) = clip_y(tls, int32(*(*uint16_t)(unsafe.Pointer(best_y + uintptr(2*i+1)*2)))+v1) } goto __2 @@ -21496,7 +21236,7 @@ var WebPSharpYUVUpdateRGB uintptr /* yuv.c:252:6: */ var WebPSharpYUVFilterRow uintptr /* yuv.c:254:6: */ func WebPInitConvertARGBToYUV(tls *libc.TLS) { /* yuv.c:263:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if WebPInitConvertARGBToYUV_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -21536,7 +21276,7 @@ func WebPInitConvertARGBToYUV_body(tls *libc.TLS) { /* yuv.c:263:1: */ f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr) }{SharpYUVFilterRow_C})) - if VP8GetCPUInfo != (uintptr(0)) { + if VP8GetCPUInfo != uintptr(0) { } } @@ -21795,12 +21535,12 @@ func EncodeLossless(tls *libc.TLS, data uintptr, width int32, height int32, effo // var picture WebPPicture at bp, 256 - WebPPictureInit(tls, (bp) /* &picture */) + WebPPictureInit(tls, bp) (*WebPPicture)(unsafe.Pointer(bp /* &picture */)).width = width (*WebPPicture)(unsafe.Pointer(bp /* &picture */)).height = height (*WebPPicture)(unsafe.Pointer(bp /* &picture */)).use_argb = 1 (*WebPPicture)(unsafe.Pointer(bp /* &picture */)).stats = stats - if !(WebPPictureAlloc(tls, (bp) /* &picture */) != 0) { + if !(WebPPictureAlloc(tls, bp) != 0) { return 0 } @@ -21810,7 +21550,7 @@ func EncodeLossless(tls *libc.TLS, data uintptr, width int32, height int32, effo })(unsafe.Pointer(&struct{ uintptr }{WebPDispatchAlphaToGreen})).f(tls, data, width, (*WebPPicture)(unsafe.Pointer(bp /* &picture */)).width, (*WebPPicture)(unsafe.Pointer(bp /* &picture */)).height, (*WebPPicture)(unsafe.Pointer(bp /* &picture */)).argb, (*WebPPicture)(unsafe.Pointer(bp /* &picture */)).argb_stride) - WebPConfigInit(tls, (bp + 256) /* &config */) + WebPConfigInit(tls, bp+256) (*WebPConfig)(unsafe.Pointer(bp + 256 /* &config */)).lossless = 1 // Enable exact, or it would alter RGB values of transparent alpha, which is // normally OK but not here since we are not encoding the input image but an @@ -21824,19 +21564,19 @@ func EncodeLossless(tls *libc.TLS, data uintptr, width int32, height int32, effo // If the alpha quality is set to 100 and the method to 6, allow for a high // lossless quality to trigger the cruncher. (*WebPConfig)(unsafe.Pointer(bp + 256 /* &config */)).quality = func() float32 { - if (use_quality_100 != 0) && (effort_level == 6) { + if use_quality_100 != 0 && effort_level == 6 { return float32(100) } - return (8. * float32(effort_level)) + return 8. * float32(effort_level) }() // TODO(urvang): Temporary fix to avoid generating images that trigger // a decoder bug related to alpha with color cache. // See: https://code.google.com/p/webp/issues/detail?id=239 // Need to re-enable this later. - ok = (libc.Bool32(VP8LEncodeStream(tls, (bp+256) /* &config */, (bp) /* &picture */, bw, 0) == VP8_ENC_OK)) - WebPPictureFree(tls, (bp) /* &picture */) - ok = (libc.Bool32((ok != 0) && !((*VP8LBitWriter)(unsafe.Pointer(bw)).error_ != 0))) + ok = libc.Bool32(VP8LEncodeStream(tls, bp+256, bp, bw, 0) == VP8_ENC_OK) + WebPPictureFree(tls, bp) + ok = libc.Bool32(ok != 0 && !((*VP8LBitWriter)(unsafe.Pointer(bw)).error_ != 0)) if !(ok != 0) { VP8LBitWriterWipeOut(tls, bw) return 0 @@ -21864,15 +21604,15 @@ func EncodeAlphaInternal(tls *libc.TLS, data uintptr, width int32, height int32, var filter_func WebPFilterFunc // var header uint8_t at bp+48, 1 - var data_size size_t = (size_t(width * height)) - var output uintptr = (uintptr(0)) + var data_size size_t = size_t(width * height) + var output uintptr = uintptr(0) var output_size size_t = uint64(0) // var tmp_bw VP8LBitWriter at bp, 48 // as per spec filter_func = WebPFilters[filter] - if filter_func != (uintptr(0)) { + if filter_func != uintptr(0) { (*struct { f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) })(unsafe.Pointer(&struct{ uintptr }{filter_func})).f(tls, data, width, height, width, tmp_alpha) @@ -21882,19 +21622,19 @@ func EncodeAlphaInternal(tls *libc.TLS, data uintptr, width int32, height int32, } if method != 0 { - ok = VP8LBitWriterInit(tls, (bp) /* &tmp_bw */, (data_size >> 3)) - ok = (libc.Bool32((ok != 0) && (EncodeLossless(tls, alpha_src, width, height, effort_level, - libc.BoolInt32(!(reduce_levels != 0)), (bp) /* &tmp_bw */, (result+56 /* &.stats */)) != 0))) + ok = VP8LBitWriterInit(tls, bp, data_size>>3) + ok = libc.Bool32(ok != 0 && EncodeLossless(tls, alpha_src, width, height, effort_level, + libc.BoolInt32(!(reduce_levels != 0)), bp, result+56) != 0) if ok != 0 { - output = VP8LBitWriterFinish(tls, (bp) /* &tmp_bw */) - output_size = VP8LBitWriterNumBytes(tls, (bp) /* &tmp_bw */) + output = VP8LBitWriterFinish(tls, bp) + output_size = VP8LBitWriterNumBytes(tls, bp) if output_size > data_size { // compressed size is larger than source! Revert to uncompressed mode. method = 0 - VP8LBitWriterWipeOut(tls, (bp) /* &tmp_bw */) + VP8LBitWriterWipeOut(tls, bp) } } else { - VP8LBitWriterWipeOut(tls, (bp) /* &tmp_bw */) + VP8LBitWriterWipeOut(tls, bp) return 0 } } @@ -21906,20 +21646,20 @@ func EncodeAlphaInternal(tls *libc.TLS, data uintptr, width int32, height int32, } // Emit final result. - *(*uint8_t)(unsafe.Pointer(bp + 48 /* header */)) = (uint8_t(method | (filter << 2))) + *(*uint8_t)(unsafe.Pointer(bp + 48 /* header */)) = uint8_t(method | filter<<2) if reduce_levels != 0 { - *(*uint8_t)(unsafe.Pointer(bp + 48 /* header */)) |= uint8_t((int32(1) << 4)) + *(*uint8_t)(unsafe.Pointer(bp + 48 /* header */)) |= uint8_t(int32(1) << 4) } - VP8BitWriterInit(tls, (result + 8 /* &.bw */), (uint64(1) + output_size)) - ok = (libc.Bool32((ok != 0) && (VP8BitWriterAppend(tls, (result+8 /* &.bw */), (bp+48) /* &header */, uint64(1)) != 0))) - ok = (libc.Bool32((ok != 0) && (VP8BitWriterAppend(tls, (result+8 /* &.bw */), output, output_size) != 0))) + VP8BitWriterInit(tls, result+8, uint64(1)+output_size) + ok = libc.Bool32(ok != 0 && VP8BitWriterAppend(tls, result+8, bp+48, uint64(1)) != 0) + ok = libc.Bool32(ok != 0 && VP8BitWriterAppend(tls, result+8, output, output_size) != 0) if method != 0 { - VP8LBitWriterWipeOut(tls, (bp) /* &tmp_bw */) + VP8LBitWriterWipeOut(tls, bp) } - ok = (libc.Bool32((ok != 0) && !((*FilterTrial)(unsafe.Pointer(result)).bw.error_ != 0))) - (*FilterTrial)(unsafe.Pointer(result)).score = VP8BitWriterSize(tls, (result + 8 /* &.bw */)) + ok = libc.Bool32(ok != 0 && !((*FilterTrial)(unsafe.Pointer(result)).bw.error_ != 0)) + (*FilterTrial)(unsafe.Pointer(result)).score = VP8BitWriterSize(tls, result+8) return ok } @@ -21935,13 +21675,13 @@ func GetNumColors(tls *libc.TLS, data uintptr, width int32, height int32, stride for j = 0; j < height; j++ { var i int32 - var p uintptr = (data + uintptr((j * stride))) + var p uintptr = data + uintptr(j*stride) for i = 0; i < width; i++ { - *(*uint8_t)(unsafe.Pointer((bp) /* &color[0] */ + uintptr(*(*uint8_t)(unsafe.Pointer(p + uintptr(i)))))) = uint8_t(1) + *(*uint8_t)(unsafe.Pointer(bp + uintptr(*(*uint8_t)(unsafe.Pointer(p + uintptr(i)))))) = uint8_t(1) } } for j = 0; j < 256; j++ { - if int32(*(*uint8_t)(unsafe.Pointer((bp) /* &color[0] */ + uintptr(j)))) > 0 { + if int32(*(*uint8_t)(unsafe.Pointer(bp + uintptr(j)))) > 0 { colors++ } } @@ -21953,7 +21693,7 @@ func GetFilterMap(tls *libc.TLS, alpha uintptr, width int32, height int32, filte var bit_map uint32_t = 0 if filter == WEBP_FILTER_FAST { // Quick estimate of the best candidate. - var try_filter_none int32 = (libc.Bool32(effort_level > 3)) + var try_filter_none int32 = libc.Bool32(effort_level > 3) var kMinColorsForFilterNone int32 = 16 var kMaxColorsForFilterNone int32 = 192 var num_colors int32 = GetNumColors(tls, alpha, width, height, width) @@ -21963,23 +21703,23 @@ func GetFilterMap(tls *libc.TLS, alpha uintptr, width int32, height int32, filte } else { filter = int32(WebPEstimateBestFilter(tls, alpha, width, height, width)) } - bit_map = bit_map | (uint32_t(int32(1) << filter)) + bit_map = bit_map | uint32_t(int32(1)<<filter) // For large number of colors, try FILTER_NONE in addition to the best // filter as well. - if (try_filter_none != 0) || (num_colors > kMaxColorsForFilterNone) { - bit_map = bit_map | (uint32_t(int32(1) << WEBP_FILTER_NONE)) + if try_filter_none != 0 || num_colors > kMaxColorsForFilterNone { + bit_map = bit_map | uint32_t(int32(1)<<WEBP_FILTER_NONE) } } else if filter == WEBP_FILTER_NONE { - bit_map = (uint32_t(int32(1) << WEBP_FILTER_NONE)) + bit_map = uint32_t(int32(1) << WEBP_FILTER_NONE) } else { // WEBP_FILTER_BEST -> try all - bit_map = (uint32_t((int32(1) << WEBP_FILTER_LAST) - 1)) + bit_map = uint32_t(int32(1)<<WEBP_FILTER_LAST - 1) } return bit_map } func InitFilterTrial(tls *libc.TLS, score uintptr) { /* alpha_enc.c:229:13: */ (*FilterTrial)(unsafe.Pointer(score)).score = uint64(libc.CplUint32(0)) - VP8BitWriterInit(tls, (score + 8 /* &.bw */), uint64(0)) + VP8BitWriterInit(tls, score+8, uint64(0)) } func ApplyFiltersAndEncode(tls *libc.TLS, alpha uintptr, width int32, height int32, data_size size_t, method int32, filter int32, reduce_levels int32, effort_level int32, output uintptr, output_size uintptr, stats uintptr) int32 { /* alpha_enc.c:234:12: */ @@ -21990,31 +21730,31 @@ func ApplyFiltersAndEncode(tls *libc.TLS, alpha uintptr, width int32, height int // var best FilterTrial at bp, 248 var try_map uint32_t = GetFilterMap(tls, alpha, width, height, filter, effort_level) - InitFilterTrial(tls, (bp) /* &best */) + InitFilterTrial(tls, bp) - if try_map != (uint32_t(int32(1) << WEBP_FILTER_NONE)) { + if try_map != uint32_t(int32(1)<<WEBP_FILTER_NONE) { var filtered_alpha uintptr = WebPSafeMalloc(tls, 1, data_size) - if filtered_alpha == (uintptr(0)) { + if filtered_alpha == uintptr(0) { return 0 } filter = WEBP_FILTER_NONE __1: - if !((ok != 0) && (try_map != 0)) { + if !(ok != 0 && try_map != 0) { goto __3 } { - if (try_map & uint32_t(1)) != 0 { + if try_map&uint32_t(1) != 0 { // var trial FilterTrial at bp+248, 248 ok = EncodeAlphaInternal(tls, alpha, width, height, method, filter, reduce_levels, effort_level, filtered_alpha, - (bp + 248) /* &trial */) - if (ok != 0) && ((*FilterTrial)(unsafe.Pointer(bp+248 /* &trial */)).score < (*FilterTrial)(unsafe.Pointer(bp /* &best */)).score) { - VP8BitWriterWipeOut(tls, ((bp) /* &best */ + 8 /* &.bw */)) + bp+248) + if ok != 0 && (*FilterTrial)(unsafe.Pointer(bp+248)).score < (*FilterTrial)(unsafe.Pointer(bp)).score { + VP8BitWriterWipeOut(tls, bp+8) *(*FilterTrial)(unsafe.Pointer(bp /* best */)) = *(*FilterTrial)(unsafe.Pointer(bp + 248 /* trial */)) } else { - VP8BitWriterWipeOut(tls, ((bp + 248) /* &trial */ + 8 /* &.bw */)) + VP8BitWriterWipeOut(tls, bp+248+8) } } @@ -22030,10 +21770,10 @@ func ApplyFiltersAndEncode(tls *libc.TLS, alpha uintptr, width int32, height int WebPSafeFree(tls, filtered_alpha) } else { ok = EncodeAlphaInternal(tls, alpha, width, height, method, WEBP_FILTER_NONE, - reduce_levels, effort_level, (uintptr(0)), (bp) /* &best */) + reduce_levels, effort_level, uintptr(0), bp) } if ok != 0 { - if stats != (uintptr(0)) { + if stats != uintptr(0) { (*WebPAuxStats)(unsafe.Pointer(stats)).lossless_features = (*FilterTrial)(unsafe.Pointer(bp /* &best */)).stats.lossless_features (*WebPAuxStats)(unsafe.Pointer(stats)).histogram_bits = (*FilterTrial)(unsafe.Pointer(bp /* &best */)).stats.histogram_bits (*WebPAuxStats)(unsafe.Pointer(stats)).transform_bits = (*FilterTrial)(unsafe.Pointer(bp /* &best */)).stats.transform_bits @@ -22043,10 +21783,10 @@ func ApplyFiltersAndEncode(tls *libc.TLS, alpha uintptr, width int32, height int (*WebPAuxStats)(unsafe.Pointer(stats)).lossless_hdr_size = (*FilterTrial)(unsafe.Pointer(bp /* &best */)).stats.lossless_hdr_size (*WebPAuxStats)(unsafe.Pointer(stats)).lossless_data_size = (*FilterTrial)(unsafe.Pointer(bp /* &best */)).stats.lossless_data_size } - *(*size_t)(unsafe.Pointer(output_size)) = VP8BitWriterSize(tls, ((bp) /* &best */ + 8 /* &.bw */)) - *(*uintptr)(unsafe.Pointer(output)) = VP8BitWriterBuf(tls, ((bp) /* &best */ + 8 /* &.bw */)) + *(*size_t)(unsafe.Pointer(output_size)) = VP8BitWriterSize(tls, bp+8) + *(*uintptr)(unsafe.Pointer(output)) = VP8BitWriterBuf(tls, bp+8) } else { - VP8BitWriterWipeOut(tls, ((bp) /* &best */ + 8 /* &.bw */)) + VP8BitWriterWipeOut(tls, bp+8) } return ok } @@ -22059,20 +21799,20 @@ func EncodeAlpha(tls *libc.TLS, enc uintptr, quality int32, method int32, filter var width int32 = (*WebPPicture)(unsafe.Pointer(pic)).width var height int32 = (*WebPPicture)(unsafe.Pointer(pic)).height - var quant_alpha uintptr = (uintptr(0)) - var data_size size_t = (size_t(width * height)) + var quant_alpha uintptr = uintptr(0) + var data_size size_t = size_t(width * height) *(*uint64_t)(unsafe.Pointer(bp /* sse */)) = uint64(0) var ok int32 = 1 - var reduce_levels int32 = (libc.Bool32(quality < 100)) + var reduce_levels int32 = libc.Bool32(quality < 100) // quick correctness checks // as per spec - if (quality < 0) || (quality > 100) { + if quality < 0 || quality > 100 { return 0 } - if (method < 0) || (method > 1) { + if method < 0 || method > 1 { return 0 } @@ -22082,7 +21822,7 @@ func EncodeAlpha(tls *libc.TLS, enc uintptr, quality int32, method int32, filter } quant_alpha = WebPSafeMalloc(tls, 1, data_size) - if quant_alpha == (uintptr(0)) { + if quant_alpha == uintptr(0) { return 0 } @@ -22095,11 +21835,11 @@ func EncodeAlpha(tls *libc.TLS, enc uintptr, quality int32, method int32, filter // and Quality:]70, 100] -> Levels:]16, 256]. var alpha_levels int32 if quality <= 70 { - alpha_levels = (2 + (quality / 5)) + alpha_levels = 2 + quality/5 } else { - alpha_levels = (16 + ((quality - 70) * 8)) + alpha_levels = 16 + (quality-70)*8 } - ok = QuantizeLevels(tls, quant_alpha, width, height, alpha_levels, (bp) /* &sse */) + ok = QuantizeLevels(tls, quant_alpha, width, height, alpha_levels, bp) } if ok != 0 { @@ -22107,9 +21847,9 @@ func EncodeAlpha(tls *libc.TLS, enc uintptr, quality int32, method int32, filter ok = ApplyFiltersAndEncode(tls, quant_alpha, width, height, data_size, method, filter, reduce_levels, effort_level, output, output_size, (*WebPPicture)(unsafe.Pointer(pic)).stats) - if (*WebPPicture)(unsafe.Pointer(pic)).stats != (uintptr(0)) { // need stats? - *(*int32)(unsafe.Pointer(((*WebPPicture)(unsafe.Pointer(pic)).stats /* &.coded_size */))) += (int32(*(*size_t)(unsafe.Pointer(output_size)))) - *(*uint64_t)(unsafe.Pointer((enc + 23512 /* &.sse_ */) + 3*8)) = *(*uint64_t)(unsafe.Pointer(bp /* sse */)) + if (*WebPPicture)(unsafe.Pointer(pic)).stats != uintptr(0) { // need stats? + *(*int32)(unsafe.Pointer((*WebPPicture)(unsafe.Pointer(pic)).stats)) += int32(*(*size_t)(unsafe.Pointer(output_size))) + *(*uint64_t)(unsafe.Pointer(enc + 23512 + 3*8)) = *(*uint64_t)(unsafe.Pointer(bp /* sse */)) } } @@ -22126,7 +21866,7 @@ func CompressAlphaJob(tls *libc.TLS, arg1 uintptr, unused uintptr) int32 { /* al var enc uintptr = arg1 var config uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).config_ - *(*uintptr)(unsafe.Pointer(bp /* alpha_data */)) = (uintptr(0)) + *(*uintptr)(unsafe.Pointer(bp /* alpha_data */)) = uintptr(0) *(*size_t)(unsafe.Pointer(bp + 8 /* alpha_size */)) = uint64(0) var effort_level int32 = (*WebPConfig)(unsafe.Pointer(config)).method // maps to [0..6] var filter WEBP_FILTER_TYPE @@ -22140,10 +21880,10 @@ func CompressAlphaJob(tls *libc.TLS, arg1 uintptr, unused uintptr) int32 { /* al } } if !(EncodeAlpha(tls, enc, (*WebPConfig)(unsafe.Pointer(config)).alpha_quality, (*WebPConfig)(unsafe.Pointer(config)).alpha_compression, - int32(filter), effort_level, (bp) /* &alpha_data */, (bp+8) /* &alpha_size */) != 0) { + int32(filter), effort_level, bp, bp+8) != 0) { return 0 } - if *(*size_t)(unsafe.Pointer(bp + 8 /* alpha_size */)) != size_t(uint32_t(*(*size_t)(unsafe.Pointer(bp + 8 /* alpha_size */)))) { // Soundness check. + if *(*size_t)(unsafe.Pointer(bp + 8)) != size_t(uint32_t(*(*size_t)(unsafe.Pointer(bp + 8)))) { // Soundness check. WebPSafeFree(tls, *(*uintptr)(unsafe.Pointer(bp /* alpha_data */))) return 0 } @@ -22156,13 +21896,13 @@ func CompressAlphaJob(tls *libc.TLS, arg1 uintptr, unused uintptr) int32 { /* al func VP8EncInitAlpha(tls *libc.TLS, enc uintptr) { /* alpha_enc.c:388:6: */ WebPInitAlphaProcessing(tls) (*VP8Encoder)(unsafe.Pointer(enc)).has_alpha_ = WebPPictureHasTransparency(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_) - (*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_ = (uintptr(0)) + (*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_ = uintptr(0) (*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_size_ = uint32_t(0) if (*VP8Encoder)(unsafe.Pointer(enc)).thread_level_ > 0 { - var worker uintptr = (enc + 560 /* &.alpha_worker_ */) + var worker uintptr = enc + 560 (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Init})).f(tls, worker) (*WebPWorker)(unsafe.Pointer(worker)).data1 = enc - (*WebPWorker)(unsafe.Pointer(worker)).data2 = (uintptr(0)) + (*WebPWorker)(unsafe.Pointer(worker)).data2 = uintptr(0) (*WebPWorker)(unsafe.Pointer(worker)).hook = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) int32 }{CompressAlphaJob})) @@ -22172,7 +21912,7 @@ func VP8EncInitAlpha(tls *libc.TLS, enc uintptr) { /* alpha_enc.c:388:6: */ func VP8EncStartAlpha(tls *libc.TLS, enc uintptr) int32 { /* alpha_enc.c:402:5: */ if (*VP8Encoder)(unsafe.Pointer(enc)).has_alpha_ != 0 { if (*VP8Encoder)(unsafe.Pointer(enc)).thread_level_ > 0 { - var worker uintptr = (enc + 560 /* &.alpha_worker_ */) + var worker uintptr = enc + 560 // Makes sure worker is good to go. if !((*struct { f func(*libc.TLS, uintptr) int32 @@ -22182,7 +21922,7 @@ func VP8EncStartAlpha(tls *libc.TLS, enc uintptr) int32 { /* alpha_enc.c:402:5: (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Launch})).f(tls, worker) return 1 } else { - return CompressAlphaJob(tls, enc, (uintptr(0))) // just do the job right away + return CompressAlphaJob(tls, enc, uintptr(0)) // just do the job right away } } return 1 @@ -22191,7 +21931,7 @@ func VP8EncStartAlpha(tls *libc.TLS, enc uintptr) int32 { /* alpha_enc.c:402:5: func VP8EncFinishAlpha(tls *libc.TLS, enc uintptr) int32 { /* alpha_enc.c:419:5: */ if (*VP8Encoder)(unsafe.Pointer(enc)).has_alpha_ != 0 { if (*VP8Encoder)(unsafe.Pointer(enc)).thread_level_ > 0 { - var worker uintptr = (enc + 560 /* &.alpha_worker_ */) + var worker uintptr = enc + 560 if !((*struct { f func(*libc.TLS, uintptr) int32 })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Sync})).f(tls, worker) != 0) { @@ -22199,13 +21939,13 @@ func VP8EncFinishAlpha(tls *libc.TLS, enc uintptr) int32 { /* alpha_enc.c:419:5: } // error } } - return WebPReportProgress(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_, ((*VP8Encoder)(unsafe.Pointer(enc)).percent_ + 20), (enc + 536 /* &.percent_ */)) + return WebPReportProgress(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_, (*VP8Encoder)(unsafe.Pointer(enc)).percent_+20, enc+536) } func VP8EncDeleteAlpha(tls *libc.TLS, enc uintptr) int32 { /* alpha_enc.c:429:5: */ var ok int32 = 1 if (*VP8Encoder)(unsafe.Pointer(enc)).thread_level_ > 0 { - var worker uintptr = (enc + 560 /* &.alpha_worker_ */) + var worker uintptr = enc + 560 // finish anything left in flight ok = (*struct { f func(*libc.TLS, uintptr) int32 @@ -22214,7 +21954,7 @@ func VP8EncDeleteAlpha(tls *libc.TLS, enc uintptr) int32 { /* alpha_enc.c:429:5: (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).End})).f(tls, worker) } WebPSafeFree(tls, (*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_) - (*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_ = (uintptr(0)) + (*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_ = uintptr(0) (*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_size_ = uint32_t(0) (*VP8Encoder)(unsafe.Pointer(enc)).has_alpha_ = 0 return ok @@ -22250,39 +21990,39 @@ func SmoothSegmentMap(tls *libc.TLS, enc uintptr) { /* analysis_enc.c:28:13: */ var w int32 = (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ var h int32 = (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_ var majority_cnt_3_x_3_grid int32 = 5 - var tmp uintptr = WebPSafeMalloc(tls, (uint64(w * h)), uint64(unsafe.Sizeof(uint8_t(0)))) + var tmp uintptr = WebPSafeMalloc(tls, uint64(w*h), uint64(unsafe.Sizeof(uint8_t(0)))) // no overflow, as per spec - if tmp == (uintptr(0)) { + if tmp == uintptr(0) { return } - for y = 1; y < (h - 1); y++ { - for x = 1; x < (w - 1); x++ { + for y = 1; y < h-1; y++ { + for x = 1; x < w-1; x++ { *(*[4]int32)(unsafe.Pointer(bp /* cnt */)) = [4]int32{0: 0} - var mb uintptr = ((*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr((x+(w*y)))*4) - var majority_seg int32 = (int32(*(*uint8)(unsafe.Pointer(mb /* &.segment_ */)) & 0x60 >> 5)) + var mb uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr(x+w*y)*4 + var majority_seg int32 = int32(*(*uint8)(unsafe.Pointer(mb)) & 0x60 >> 5) // Check the 8 neighbouring segment values. - *(*int32)(unsafe.Pointer((bp) /* &cnt[0] */ + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((mb + uintptr((-w-1))*4) /* &.segment_ */))&0x60>>5))))*4))++ // top-left - *(*int32)(unsafe.Pointer((bp) /* &cnt[0] */ + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((mb + uintptr((-w+0))*4) /* &.segment_ */))&0x60>>5))))*4))++ // top - *(*int32)(unsafe.Pointer((bp) /* &cnt[0] */ + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((mb + uintptr((-w+1))*4) /* &.segment_ */))&0x60>>5))))*4))++ // top-right - *(*int32)(unsafe.Pointer((bp) /* &cnt[0] */ + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((mb + libc.UintptrFromInt32(-1)*4) /* &.segment_ */))&0x60>>5))))*4))++ // left - *(*int32)(unsafe.Pointer((bp) /* &cnt[0] */ + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((mb + 1*4) /* &.segment_ */))&0x60>>5))))*4))++ // right - *(*int32)(unsafe.Pointer((bp) /* &cnt[0] */ + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((mb + uintptr((w-1))*4) /* &.segment_ */))&0x60>>5))))*4))++ // bottom-left - *(*int32)(unsafe.Pointer((bp) /* &cnt[0] */ + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((mb + uintptr((w+0))*4) /* &.segment_ */))&0x60>>5))))*4))++ // bottom - *(*int32)(unsafe.Pointer((bp) /* &cnt[0] */ + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((mb + uintptr((w+1))*4) /* &.segment_ */))&0x60>>5))))*4))++ // bottom-right + *(*int32)(unsafe.Pointer(bp + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer(mb + uintptr(-w-1)*4))&0x60>>5)))*4))++ // top-left + *(*int32)(unsafe.Pointer(bp + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer(mb + uintptr(-w+0)*4))&0x60>>5)))*4))++ // top + *(*int32)(unsafe.Pointer(bp + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer(mb + uintptr(-w+1)*4))&0x60>>5)))*4))++ // top-right + *(*int32)(unsafe.Pointer(bp + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer(mb + libc.UintptrFromInt32(-1)*4))&0x60>>5)))*4))++ // left + *(*int32)(unsafe.Pointer(bp + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer(mb + 1*4))&0x60>>5)))*4))++ // right + *(*int32)(unsafe.Pointer(bp + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer(mb + uintptr(w-1)*4))&0x60>>5)))*4))++ // bottom-left + *(*int32)(unsafe.Pointer(bp + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer(mb + uintptr(w+0)*4))&0x60>>5)))*4))++ // bottom + *(*int32)(unsafe.Pointer(bp + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer(mb + uintptr(w+1)*4))&0x60>>5)))*4))++ // bottom-right for n = 0; n < NUM_MB_SEGMENTS; n++ { - if *(*int32)(unsafe.Pointer((bp) /* &cnt[0] */ + uintptr(n)*4)) >= majority_cnt_3_x_3_grid { + if *(*int32)(unsafe.Pointer(bp + uintptr(n)*4)) >= majority_cnt_3_x_3_grid { majority_seg = n break } } - *(*uint8_t)(unsafe.Pointer(tmp + uintptr((x + (y * w))))) = uint8_t(majority_seg) + *(*uint8_t)(unsafe.Pointer(tmp + uintptr(x+y*w))) = uint8_t(majority_seg) } } - for y = 1; y < (h - 1); y++ { - for x = 1; x < (w - 1); x++ { - var mb uintptr = ((*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr((x+(w*y)))*4) - libc.SetBitFieldPtr8Uint32((mb /* &.segment_ */), uint32(*(*uint8_t)(unsafe.Pointer(tmp + uintptr((x + (y * w)))))), 5, 0x60) + for y = 1; y < h-1; y++ { + for x = 1; x < w-1; x++ { + var mb uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr(x+w*y)*4 + libc.SetBitFieldPtr8Uint32(mb, uint32(*(*uint8_t)(unsafe.Pointer(tmp + uintptr(x+y*w)))), 5, 0x60) } } WebPSafeFree(tls, tmp) @@ -22318,14 +22058,14 @@ func SetSegmentAlphas(tls *libc.TLS, enc uintptr, centers uintptr, mid int32) { } } if max == min { - max = (min + 1) + max = min + 1 } for n = 0; n < nb; n++ { - var alpha int32 = ((255 * (*(*int32)(unsafe.Pointer(centers + uintptr(n)*4)) - mid)) / (max - min)) - var beta int32 = ((255 * (*(*int32)(unsafe.Pointer(centers + uintptr(n)*4)) - min)) / (max - min)) - (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(n)*744)).alpha_ = clip2(tls, alpha, -127, 127) - (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(n)*744)).beta_ = clip2(tls, beta, 0, 255) + var alpha int32 = 255 * (*(*int32)(unsafe.Pointer(centers + uintptr(n)*4)) - mid) / (max - min) + var beta int32 = 255 * (*(*int32)(unsafe.Pointer(centers + uintptr(n)*4)) - min) / (max - min) + (*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(n)*744)).alpha_ = clip2(tls, alpha, -127, 127) + (*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(n)*744)).beta_ = clip2(tls, beta, 0, 255) } } @@ -22334,7 +22074,7 @@ func SetSegmentAlphas(tls *libc.TLS, enc uintptr, centers uintptr, mid int32) { // the higher, the "easier" the macroblock is to compress. func FinalAlphaValue(tls *libc.TLS, alpha int32) int32 { /* analysis_enc.c:108:12: */ - alpha = (255 - alpha) + alpha = 255 - alpha return clip2(tls, alpha, 0, 255) } @@ -22346,7 +22086,7 @@ func GetAlpha(tls *libc.TLS, histo uintptr) int32 { /* analysis_enc.c:113:12: */ var last_non_zero int32 = (*VP8Histogram)(unsafe.Pointer(histo)).last_non_zero var alpha int32 if max_value > 1 { - alpha = (((2 * 255) * last_non_zero) / max_value) + alpha = 2 * 255 * last_non_zero / max_value } else { alpha = 0 } @@ -22391,13 +22131,13 @@ func AssignSegments(tls *libc.TLS, enc uintptr, alphas uintptr) { /* analysis_en // var dist_accum [4]int32 at bp+32, 16 // bracket the input - for n = 0; (n <= 255) && (*(*int32)(unsafe.Pointer(alphas + uintptr(n)*4)) == 0); n++ { + for n = 0; n <= 255 && *(*int32)(unsafe.Pointer(alphas + uintptr(n)*4)) == 0; n++ { } min_a = n - for n = 255; (n > min_a) && (*(*int32)(unsafe.Pointer(alphas + uintptr(n)*4)) == 0); n-- { + for n = 255; n > min_a && *(*int32)(unsafe.Pointer(alphas + uintptr(n)*4)) == 0; n-- { } max_a = n - range_a = (max_a - min_a) + range_a = max_a - min_a // Spread initial centers evenly k = 0 @@ -22408,13 +22148,13 @@ __1: } { - *(*int32)(unsafe.Pointer((bp) /* &centers[0] */ + uintptr(k)*4)) = (min_a + ((n * range_a) / (2 * nb))) + *(*int32)(unsafe.Pointer(bp + uintptr(k)*4)) = min_a + n*range_a/(2*nb) } goto __2 __2: k++ - n = n + (2) + n = n + 2 goto __1 goto __3 __3: @@ -22425,20 +22165,20 @@ __3: var displaced int32 // Reset stats for n = 0; n < nb; n++ { - *(*int32)(unsafe.Pointer((bp + 16) /* &accum[0] */ + uintptr(n)*4)) = 0 - *(*int32)(unsafe.Pointer((bp + 32) /* &dist_accum[0] */ + uintptr(n)*4)) = 0 + *(*int32)(unsafe.Pointer(bp + 16 + uintptr(n)*4)) = 0 + *(*int32)(unsafe.Pointer(bp + 32 + uintptr(n)*4)) = 0 } // Assign nearest center for each 'a' n = 0 // track the nearest center for current 'a' for a = min_a; a <= max_a; a++ { if *(*int32)(unsafe.Pointer(alphas + uintptr(a)*4)) != 0 { - for ((n + 1) < nb) && (libc.Xabs(tls, (a-*(*int32)(unsafe.Pointer((bp) /* &centers[0] */ + uintptr((n+1))*4)))) < libc.Xabs(tls, (a-*(*int32)(unsafe.Pointer((bp) /* &centers[0] */ + uintptr(n)*4))))) { + for n+1 < nb && libc.Xabs(tls, a-*(*int32)(unsafe.Pointer(bp + uintptr(n+1)*4))) < libc.Xabs(tls, a-*(*int32)(unsafe.Pointer(bp + uintptr(n)*4))) { n++ } - *(*int32)(unsafe.Pointer((bp + 48) /* &map1[0] */ + uintptr(a)*4)) = n + *(*int32)(unsafe.Pointer(bp + 48 + uintptr(a)*4)) = n // accumulate contribution into best centroid - *(*int32)(unsafe.Pointer(((bp + 32) /* &dist_accum */ + uintptr(n)*4))) += (a * *(*int32)(unsafe.Pointer(alphas + uintptr(a)*4))) - *(*int32)(unsafe.Pointer(((bp + 16) /* &accum */ + uintptr(n)*4))) += (*(*int32)(unsafe.Pointer(alphas + uintptr(a)*4))) + *(*int32)(unsafe.Pointer(bp + 32 + uintptr(n)*4)) += a * *(*int32)(unsafe.Pointer(alphas + uintptr(a)*4)) + *(*int32)(unsafe.Pointer(bp + 16 + uintptr(n)*4)) += *(*int32)(unsafe.Pointer(alphas + uintptr(a)*4)) } } // All point are classified. Move the centroids to the @@ -22447,36 +22187,36 @@ __3: weighted_average = 0 total_weight = 0 for n = 0; n < nb; n++ { - if *(*int32)(unsafe.Pointer((bp + 16) /* &accum[0] */ + uintptr(n)*4)) != 0 { - var new_center int32 = ((*(*int32)(unsafe.Pointer((bp + 32) /* &dist_accum[0] */ + uintptr(n)*4)) + (*(*int32)(unsafe.Pointer((bp + 16) /* &accum[0] */ + uintptr(n)*4)) / 2)) / *(*int32)(unsafe.Pointer((bp + 16) /* &accum[0] */ + uintptr(n)*4))) - displaced = displaced + (libc.Xabs(tls, (*(*int32)(unsafe.Pointer((bp) /* &centers[0] */ + uintptr(n)*4)) - new_center))) - *(*int32)(unsafe.Pointer((bp) /* &centers[0] */ + uintptr(n)*4)) = new_center - weighted_average = weighted_average + (new_center * *(*int32)(unsafe.Pointer((bp + 16) /* &accum[0] */ + uintptr(n)*4))) - total_weight = total_weight + (*(*int32)(unsafe.Pointer((bp + 16) /* &accum[0] */ + uintptr(n)*4))) + if *(*int32)(unsafe.Pointer(bp + 16 + uintptr(n)*4)) != 0 { + var new_center int32 = (*(*int32)(unsafe.Pointer(bp + 32 + uintptr(n)*4)) + *(*int32)(unsafe.Pointer(bp + 16 + uintptr(n)*4))/2) / *(*int32)(unsafe.Pointer(bp + 16 + uintptr(n)*4)) + displaced = displaced + libc.Xabs(tls, *(*int32)(unsafe.Pointer(bp + uintptr(n)*4))-new_center) + *(*int32)(unsafe.Pointer(bp + uintptr(n)*4)) = new_center + weighted_average = weighted_average + new_center**(*int32)(unsafe.Pointer(bp + 16 + uintptr(n)*4)) + total_weight = total_weight + *(*int32)(unsafe.Pointer(bp + 16 + uintptr(n)*4)) } } - weighted_average = ((weighted_average + (total_weight / 2)) / total_weight) + weighted_average = (weighted_average + total_weight/2) / total_weight if displaced < 5 { break } // no need to keep on looping... } // Map each original value to the closest centroid - for n = 0; n < ((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_); n++ { - var mb uintptr = ((*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr(n)*4) + for n = 0; n < (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_*(*VP8Encoder)(unsafe.Pointer(enc)).mb_h_; n++ { + var mb uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr(n)*4 var alpha int32 = int32((*VP8MBInfo)(unsafe.Pointer(mb)).alpha_) - libc.SetBitFieldPtr8Uint32((mb /* &.segment_ */), uint32(*(*int32)(unsafe.Pointer((bp + 48) /* &map1[0] */ + uintptr(alpha)*4))), 5, 0x60) - (*VP8MBInfo)(unsafe.Pointer(mb)).alpha_ = uint8_t(*(*int32)(unsafe.Pointer((bp) /* &centers[0] */ + uintptr(*(*int32)(unsafe.Pointer((bp + 48) /* &map1[0] */ + uintptr(alpha)*4)))*4))) // for the record. + libc.SetBitFieldPtr8Uint32(mb, uint32(*(*int32)(unsafe.Pointer(bp + 48 + uintptr(alpha)*4))), 5, 0x60) + (*VP8MBInfo)(unsafe.Pointer(mb)).alpha_ = uint8_t(*(*int32)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 48 + uintptr(alpha)*4)))*4))) // for the record. } if nb > 1 { - var smooth int32 = ((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).preprocessing & 1) + var smooth int32 = (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).preprocessing & 1 if smooth != 0 { SmoothSegmentMap(tls, enc) } } - SetSegmentAlphas(tls, enc, (bp) /* &centers[0] */, weighted_average) // pick some alphas. + SetSegmentAlphas(tls, enc, bp, weighted_average) // pick some alphas. } //------------------------------------------------------------------------------ @@ -22494,7 +22234,7 @@ func MBAnalyzeBestIntra16Mode(tls *libc.TLS, it uintptr) int32 { /* analysis_enc var max_mode int32 = 2 var mode int32 - var best_alpha int32 = (-1) + var best_alpha int32 = -1 var best_mode int32 = 0 VP8MakeLuma16Preds(tls, it) @@ -22503,14 +22243,14 @@ func MBAnalyzeBestIntra16Mode(tls *libc.TLS, it uintptr) int32 { /* analysis_enc var alpha int32 - InitHistogram(tls, (bp) /* &histo */) + InitHistogram(tls, bp) (*struct { f func(*libc.TLS, uintptr, uintptr, int32, int32, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8CollectHistogram})).f(tls, ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((0))), - ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8I16ModeOffsets[mode])), - 0, 16, (bp) /* &histo */) - alpha = GetAlpha(tls, (bp) /* &histo */) - if (alpha) > (best_alpha) { + })(unsafe.Pointer(&struct{ uintptr }{VP8CollectHistogram})).f(tls, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_+uintptr(0), + (*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_+uintptr(VP8I16ModeOffsets[mode]), + 0, 16, bp) + alpha = GetAlpha(tls, bp) + if alpha > best_alpha { best_alpha = alpha best_mode = mode } @@ -22526,29 +22266,29 @@ func FastMBAnalyze(tls *libc.TLS, it uintptr) int32 { /* analysis_enc.c:255:12: // Empirical cut-off value, should be around 16 (~=block size). We use the // [8-17] range and favor intra4 at high quality, intra16 for low quality. var q int32 = libc.Int32FromFloat32((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).enc_)).config_)).quality) - var kThreshold uint32_t = (uint32_t(8 + (((17 - 8) * q) / 100))) + var kThreshold uint32_t = uint32_t(8 + (17-8)*q/100) var k int32 // var dc [16]uint32_t at bp, 64 var m uint32_t var m2 uint32_t - for k = 0; k < 16; k = k + (4) { + for k = 0; k < 16; k = k + 4 { (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8Mean16x4})).f(tls, (((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((0))) + uintptr((k * 32))), ((bp) /* &dc */ + uintptr(k)*4)) + })(unsafe.Pointer(&struct{ uintptr }{VP8Mean16x4})).f(tls, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_+uintptr(0)+uintptr(k*32), bp /* &dc */ +uintptr(k)*4) } m = uint32_t(0) m2 = uint32_t(0) k = 0 for ; k < 16; k++ { - m = m + (*(*uint32_t)(unsafe.Pointer((bp) /* &dc[0] */ + uintptr(k)*4))) - m2 = m2 + (*(*uint32_t)(unsafe.Pointer((bp) /* &dc[0] */ + uintptr(k)*4)) * *(*uint32_t)(unsafe.Pointer((bp) /* &dc[0] */ + uintptr(k)*4))) + m = m + *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) + m2 = m2 + *(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4))**(*uint32_t)(unsafe.Pointer(bp + uintptr(k)*4)) } - if (kThreshold * m2) < (m * m) { + if kThreshold*m2 < m*m { VP8SetIntra16Mode(tls, it, 0) // DC16 } else { *(*[16]uint8_t)(unsafe.Pointer(bp + 64 /* modes */)) = [16]uint8_t{0: uint8_t(0)} // DC4 - VP8SetIntra4Mode(tls, it, (bp + 64) /* &modes[0] */) + VP8SetIntra4Mode(tls, it, bp+64 /* &modes[0] */) } return 0 } @@ -22557,7 +22297,7 @@ func MBAnalyzeBestUVMode(tls *libc.TLS, it uintptr) int32 { /* analysis_enc.c:27 bp := tls.Alloc(8) defer tls.Free(8) - var best_alpha int32 = (-1) + var best_alpha int32 = -1 var smallest_alpha int32 = 0 var best_mode int32 = 0 var max_mode int32 = 2 @@ -22568,18 +22308,18 @@ func MBAnalyzeBestUVMode(tls *libc.TLS, it uintptr) int32 { /* analysis_enc.c:27 // var histo VP8Histogram at bp, 8 var alpha int32 - InitHistogram(tls, (bp) /* &histo */) + InitHistogram(tls, bp) (*struct { f func(*libc.TLS, uintptr, uintptr, int32, int32, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8CollectHistogram})).f(tls, ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((16))), - ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8UVModeOffsets[mode])), - 16, ((16 + 4) + 4), (bp) /* &histo */) - alpha = GetAlpha(tls, (bp) /* &histo */) - if (alpha) > (best_alpha) { + })(unsafe.Pointer(&struct{ uintptr }{VP8CollectHistogram})).f(tls, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_+uintptr(16), + (*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_+uintptr(VP8UVModeOffsets[mode]), + 16, 16+4+4, bp) + alpha = GetAlpha(tls, bp) + if alpha > best_alpha { best_alpha = alpha } // The best prediction mode tends to be the one with the smallest alpha. - if (mode == 0) || (alpha < smallest_alpha) { + if mode == 0 || alpha < smallest_alpha { smallest_alpha = alpha best_mode = mode } @@ -22605,21 +22345,21 @@ func MBAnalyze(tls *libc.TLS, it uintptr, alphas uintptr, alpha uintptr, uv_alph best_uv_alpha = MBAnalyzeBestUVMode(tls, it) // Final susceptibility mix - best_alpha = ((((3 * best_alpha) + best_uv_alpha) + 2) >> 2) + best_alpha = (3*best_alpha + best_uv_alpha + 2) >> 2 best_alpha = FinalAlphaValue(tls, best_alpha) *(*int32)(unsafe.Pointer(alphas + uintptr(best_alpha)*4))++ (*VP8MBInfo)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_)).alpha_ = uint8_t(best_alpha) // for later remapping. // Accumulate for later complexity analysis. - *(*int32)(unsafe.Pointer(alpha)) += (best_alpha) // mixed susceptibility (not just luma) - *(*int32)(unsafe.Pointer(uv_alpha)) += (best_uv_alpha) + *(*int32)(unsafe.Pointer(alpha)) += best_alpha // mixed susceptibility (not just luma) + *(*int32)(unsafe.Pointer(uv_alpha)) += best_uv_alpha } func DefaultMBInfo(tls *libc.TLS, mb uintptr) { /* analysis_enc.c:335:13: */ - libc.SetBitFieldPtr8Uint32((mb /* &.type_ */), uint32(1), 0, 0x3) // I16x16 - libc.SetBitFieldPtr8Uint32((mb /* &.uv_mode_ */), uint32(0), 2, 0xc) - libc.SetBitFieldPtr8Uint32((mb /* &.skip_ */), uint32(0), 4, 0x10) // not skipped - libc.SetBitFieldPtr8Uint32((mb /* &.segment_ */), uint32(0), 5, 0x60) // default segment + libc.SetBitFieldPtr8Uint32(mb, uint32(1), 0, 0x3) // I16x16 + libc.SetBitFieldPtr8Uint32(mb, uint32(0), 2, 0xc) + libc.SetBitFieldPtr8Uint32(mb, uint32(0), 4, 0x10) // not skipped + libc.SetBitFieldPtr8Uint32(mb, uint32(0), 5, 0x60) // default segment (*VP8MBInfo)(unsafe.Pointer(mb)).alpha_ = uint8_t(0) } @@ -22635,16 +22375,16 @@ func DefaultMBInfo(tls *libc.TLS, mb uintptr) { /* analysis_enc.c:335:13: */ func ResetAllMBInfo(tls *libc.TLS, enc uintptr) { /* analysis_enc.c:353:13: */ var n int32 - for n = 0; n < ((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_); n++ { - DefaultMBInfo(tls, ((*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr(n)*4)) + for n = 0; n < (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_*(*VP8Encoder)(unsafe.Pointer(enc)).mb_h_; n++ { + DefaultMBInfo(tls, (*VP8Encoder)(unsafe.Pointer(enc)).mb_info_+uintptr(n)*4) } // Default susceptibilities. - (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */))).alpha_ = 0 - (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */))).beta_ = 0 + (*VP8SegmentInfo)(unsafe.Pointer(enc + 608)).alpha_ = 0 + (*VP8SegmentInfo)(unsafe.Pointer(enc + 608)).beta_ = 0 // Note: we can't compute this alpha_ / uv_alpha_ -> set to default value. (*VP8Encoder)(unsafe.Pointer(enc)).alpha_ = 0 (*VP8Encoder)(unsafe.Pointer(enc)).uv_alpha_ = 0 - WebPReportProgress(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_, ((*VP8Encoder)(unsafe.Pointer(enc)).percent_ + 20), (enc + 536 /* &.percent_ */)) + WebPReportProgress(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_, (*VP8Encoder)(unsafe.Pointer(enc)).percent_+20, enc+536) } // struct used to collect job result @@ -22660,17 +22400,20 @@ type SegmentJob = struct { // main work call func DoSegmentsJob(tls *libc.TLS, arg1 uintptr, arg2 uintptr) int32 { /* analysis_enc.c:377:12: */ + bp := tls.Alloc(63) + defer tls.Free(63) + var job uintptr = arg1 var it uintptr = arg2 var ok int32 = 1 if !(VP8IteratorIsDone(tls, it) != 0) { - var tmp [63]uint8_t + // var tmp [63]uint8_t at bp, 63 - var scratch uintptr = (uintptr((uintptr_t(libc.Uint64FromUint8(tmp[0])) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) - for ok := int32(1); ok != 1; ok = VP8IteratorNext(tls, it) { + var scratch uintptr = uintptr((uintptr_t(bp) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) + for __ccgo := true; __ccgo; __ccgo = ok != 0 && VP8IteratorNext(tls, it) != 0 { // Let's pretend we have perfect lossless reconstruction. VP8IteratorImport(tls, it, scratch) - MBAnalyze(tls, it, (job + 48 /* &.alphas */), (job + 1072 /* &.alpha */), (job + 1076 /* &.uv_alpha */)) + MBAnalyze(tls, it, job+48, job+1072, job+1076) ok = VP8IteratorProgress(tls, it, (*SegmentJob)(unsafe.Pointer(job)).delta_progress) } } @@ -22680,24 +22423,24 @@ func DoSegmentsJob(tls *libc.TLS, arg1 uintptr, arg2 uintptr) int32 { /* analysi func MergeJobs(tls *libc.TLS, src uintptr, dst uintptr) { /* analysis_enc.c:394:13: */ var i int32 for i = 0; i <= 255; i++ { - *(*int32)(unsafe.Pointer(((dst + 48 /* &.alphas */) + uintptr(i)*4))) += (*(*int32)(unsafe.Pointer((src + 48 /* &.alphas */) + uintptr(i)*4))) + *(*int32)(unsafe.Pointer(dst + 48 + uintptr(i)*4)) += *(*int32)(unsafe.Pointer(src + 48 + uintptr(i)*4)) } - *(*int32)(unsafe.Pointer((dst + 1072 /* &.alpha */))) += ((*SegmentJob)(unsafe.Pointer(src)).alpha) - *(*int32)(unsafe.Pointer((dst + 1076 /* &.uv_alpha */))) += ((*SegmentJob)(unsafe.Pointer(src)).uv_alpha) + *(*int32)(unsafe.Pointer(dst + 1072)) += (*SegmentJob)(unsafe.Pointer(src)).alpha + *(*int32)(unsafe.Pointer(dst + 1076)) += (*SegmentJob)(unsafe.Pointer(src)).uv_alpha } // initialize the job struct with some tasks to perform func InitSegmentJob(tls *libc.TLS, enc uintptr, job uintptr, start_row int32, end_row int32) { /* analysis_enc.c:402:13: */ - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Init})).f(tls, (job /* &.worker */)) + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(WebPGetWorkerInterface(tls))).Init})).f(tls, job /* &.worker */) (*SegmentJob)(unsafe.Pointer(job)).worker.data1 = job - (*SegmentJob)(unsafe.Pointer(job)).worker.data2 = (job + 1080 /* &.it */) + (*SegmentJob)(unsafe.Pointer(job)).worker.data2 = job + 1080 (*SegmentJob)(unsafe.Pointer(job)).worker.hook = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) int32 }{DoSegmentsJob})) - VP8IteratorInit(tls, enc, (job + 1080 /* &.it */)) - VP8IteratorSetRow(tls, (job + 1080 /* &.it */), start_row) - VP8IteratorSetCountDown(tls, (job + 1080 /* &.it */), ((end_row - start_row) * (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_)) - libc.Xmemset(tls, (job + 48 /* &.alphas */), 0, uint64(unsafe.Sizeof([256]int32{}))) + VP8IteratorInit(tls, enc, job+1080) + VP8IteratorSetRow(tls, job+1080, start_row) + VP8IteratorSetCountDown(tls, job+1080, (end_row-start_row)*(*VP8Encoder)(unsafe.Pointer(enc)).mb_w_) + libc.Xmemset(tls, job+48, 0, uint64(unsafe.Sizeof([256]int32{}))) (*SegmentJob)(unsafe.Pointer(job)).alpha = 0 (*SegmentJob)(unsafe.Pointer(job)).uv_alpha = 0 // only one of both jobs can record the progress, since we don't @@ -22716,12 +22459,12 @@ func VP8EncAnalyze(tls *libc.TLS, enc uintptr) int32 { /* analysis_enc.c:420:5: defer tls.Free(9872) var ok int32 = 1 - var do_segments int32 = (libc.Bool32((((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).emulate_jpeg_size != 0) || ((*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.num_segments_ > 1)) || ((*VP8Encoder)(unsafe.Pointer(enc)).method_ <= 1))) // for method 0 - 1, we need preds_[] to be filled. + var do_segments int32 = libc.Bool32((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).emulate_jpeg_size != 0 || (*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.num_segments_ > 1 || (*VP8Encoder)(unsafe.Pointer(enc)).method_ <= 1) // for method 0 - 1, we need preds_[] to be filled. if do_segments != 0 { var last_row int32 = (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_ // We give a little more than a half work to the main thread. - var split_row int32 = (((9 * last_row) + 15) >> 4) - var total_mb int32 = (last_row * (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_) + var split_row int32 = (9*last_row + 15) >> 4 + var total_mb int32 = last_row * (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ var do_mt int32 = 0 var worker_interface uintptr = WebPGetWorkerInterface(tls) // var main_job SegmentJob at bp, 4936 @@ -22731,41 +22474,41 @@ func VP8EncAnalyze(tls *libc.TLS, enc uintptr) int32 { /* analysis_enc.c:420:5: // Note the use of '&' instead of '&&' because we must call the functions // no matter what. - InitSegmentJob(tls, enc, (bp) /* &main_job */, 0, split_row) - InitSegmentJob(tls, enc, (bp + 4936) /* &side_job */, split_row, last_row) + InitSegmentJob(tls, enc, bp, 0, split_row) + InitSegmentJob(tls, enc, bp+4936, split_row, last_row) // we don't need to call Reset() on main_job.worker, since we're calling // WebPWorkerExecute() on it - ok = ok & ((*struct { + ok = ok & (*struct { f func(*libc.TLS, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Reset})).f(tls, (bp + 4936) /* &side_job */ /* &.worker */)) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Reset})).f(tls, bp+4936) // launch the two jobs in parallel if ok != 0 { - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Launch})).f(tls, (bp + 4936) /* &side_job */ /* &.worker */) - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Execute})).f(tls, (bp) /* &main_job */ /* &.worker */) - ok = ok & ((*struct { + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Launch})).f(tls, bp+4936 /* &side_job */ /* &.worker */) + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Execute})).f(tls, bp /* &main_job */ /* &.worker */) + ok = ok & (*struct { f func(*libc.TLS, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Sync})).f(tls, (bp + 4936) /* &side_job */ /* &.worker */)) - ok = ok & ((*struct { + })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Sync})).f(tls, bp+4936) + ok = ok & (*struct { f func(*libc.TLS, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Sync})).f(tls, (bp) /* &main_job */ /* &.worker */)) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Sync})).f(tls, bp) } - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).End})).f(tls, (bp + 4936) /* &side_job */ /* &.worker */) + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).End})).f(tls, bp+4936 /* &side_job */ /* &.worker */) if ok != 0 { - MergeJobs(tls, (bp + 4936) /* &side_job */, (bp) /* &main_job */) + MergeJobs(tls, bp+4936, bp) } // merge results together } else { // Even for single-thread case, we use the generic Worker tools. - InitSegmentJob(tls, enc, (bp) /* &main_job */, 0, last_row) - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Execute})).f(tls, (bp) /* &main_job */ /* &.worker */) - ok = ok & ((*struct { + InitSegmentJob(tls, enc, bp, 0, last_row) + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Execute})).f(tls, bp /* &main_job */ /* &.worker */) + ok = ok & (*struct { f func(*libc.TLS, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Sync})).f(tls, (bp) /* &main_job */ /* &.worker */)) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Sync})).f(tls, bp) } - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).End})).f(tls, (bp) /* &main_job */ /* &.worker */) + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).End})).f(tls, bp /* &main_job */ /* &.worker */) if ok != 0 { - (*VP8Encoder)(unsafe.Pointer(enc)).alpha_ = ((*SegmentJob)(unsafe.Pointer(bp /* &main_job */)).alpha / total_mb) - (*VP8Encoder)(unsafe.Pointer(enc)).uv_alpha_ = ((*SegmentJob)(unsafe.Pointer(bp /* &main_job */)).uv_alpha / total_mb) - AssignSegments(tls, enc, ((bp) /* &main_job */ + 48 /* &.alphas */)) + (*VP8Encoder)(unsafe.Pointer(enc)).alpha_ = (*SegmentJob)(unsafe.Pointer(bp)).alpha / total_mb + (*VP8Encoder)(unsafe.Pointer(enc)).uv_alpha_ = (*SegmentJob)(unsafe.Pointer(bp)).uv_alpha / total_mb + AssignSegments(tls, enc, bp+48) } } else { // Use only one default segment. ResetAllMBInfo(tls, enc) @@ -22786,17 +22529,17 @@ func ConvertPopulationCountTableToBitEstimates(tls *libc.TLS, num_symbols int32, var nonzeros int32 = 0 var i int32 for i = 0; i < num_symbols; i++ { - sum = sum + (*(*uint32_t)(unsafe.Pointer(population_counts + uintptr(i)*4))) + sum = sum + *(*uint32_t)(unsafe.Pointer(population_counts + uintptr(i)*4)) if *(*uint32_t)(unsafe.Pointer(population_counts + uintptr(i)*4)) > uint32_t(0) { nonzeros++ } } if nonzeros <= 1 { - libc.Xmemset(tls, output, 0, (uint64(num_symbols) * uint64(unsafe.Sizeof(float64(0))))) + libc.Xmemset(tls, output, 0, uint64(num_symbols)*uint64(unsafe.Sizeof(float64(0)))) } else { var logsum float64 = float64(VP8LFastLog2(tls, sum)) for i = 0; i < num_symbols; i++ { - *(*float64)(unsafe.Pointer(output + uintptr(i)*8)) = (logsum - float64(VP8LFastLog2(tls, *(*uint32_t)(unsafe.Pointer(population_counts + uintptr(i)*4))))) + *(*float64)(unsafe.Pointer(output + uintptr(i)*8)) = logsum - float64(VP8LFastLog2(tls, *(*uint32_t)(unsafe.Pointer(population_counts + uintptr(i)*4)))) } } } @@ -22812,7 +22555,7 @@ func CostModelBuild(tls *libc.TLS, m uintptr, xsize int32, cache_bits int32, ref ok = 0 *(*VP8LRefsCursor)(unsafe.Pointer(bp /* c */)) = VP8LRefsCursorInit(tls, refs) histo = VP8LAllocateHistogram(tls, cache_bits) - if !(histo == (uintptr(0))) { + if !(histo == uintptr(0)) { goto __1 } goto Error @@ -22823,14 +22566,14 @@ __1: // distance to plane code. VP8LHistogramInit(tls, histo, cache_bits /*init_arrays=*/, 1) __2: - if !(VP8LRefsCursorOk(tls, (bp) /* &c */) != 0) { + if !(VP8LRefsCursorOk(tls, bp) != 0) { goto __3 } VP8LHistogramAddSinglePixOrCopy(tls, histo, (*VP8LRefsCursor)(unsafe.Pointer(bp /* &c */)).cur_pos, *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, int32, int32) int32 }{VP8LDistanceToPlaneCode})), xsize) - VP8LRefsCursorNext(tls, (bp) /* &c */) + VP8LRefsCursorNext(tls, bp) goto __2 __3: ; @@ -22839,13 +22582,13 @@ __3: VP8LHistogramNumCodes(tls, (*VP8LHistogram)(unsafe.Pointer(histo)).palette_code_bits_), (*VP8LHistogram)(unsafe.Pointer(histo)).literal_, (*CostModel)(unsafe.Pointer(m)).literal_) ConvertPopulationCountTableToBitEstimates(tls, - 256, (histo + 8 /* &.red_ */), (m + 2048 /* &.red_ */)) + 256, histo+8, m+2048) ConvertPopulationCountTableToBitEstimates(tls, - 256, (histo + 1032 /* &.blue_ */), (m + 4096 /* &.blue_ */)) + 256, histo+1032, m+4096) ConvertPopulationCountTableToBitEstimates(tls, - 256, (histo + 2056 /* &.alpha_ */), (m /* &.alpha_ */)) + 256, histo+2056, m) ConvertPopulationCountTableToBitEstimates(tls, - 40, (histo + 3080 /* &.distance_ */), (m + 6144 /* &.distance_ */)) + 40, histo+3080, m+6144) ok = 1 Error: @@ -22854,11 +22597,11 @@ Error: } func GetLiteralCost(tls *libc.TLS, m uintptr, v uint32_t) float64 { /* backward_references_cost_enc.c:95:27: */ - return (((*(*float64)(unsafe.Pointer((m /* &.alpha_ */) + uintptr((v>>24))*8)) + *(*float64)(unsafe.Pointer((m + 2048 /* &.red_ */) + uintptr(((v>>16)&uint32_t(0xff)))*8))) + *(*float64)(unsafe.Pointer((*CostModel)(unsafe.Pointer(m)).literal_ + uintptr(((v>>8)&uint32_t(0xff)))*8))) + *(*float64)(unsafe.Pointer((m + 4096 /* &.blue_ */) + uintptr((v&uint32_t(0xff)))*8))) + return *(*float64)(unsafe.Pointer(m + uintptr(v>>24)*8)) + *(*float64)(unsafe.Pointer(m + 2048 + uintptr(v>>16&uint32_t(0xff))*8)) + *(*float64)(unsafe.Pointer((*CostModel)(unsafe.Pointer(m)).literal_ + uintptr(v>>8&uint32_t(0xff))*8)) + *(*float64)(unsafe.Pointer(m + 4096 + uintptr(v&uint32_t(0xff))*8)) } func GetCacheCost(tls *libc.TLS, m uintptr, idx uint32_t) float64 { /* backward_references_cost_enc.c:102:27: */ - var literal_idx int32 = (int32((uint32_t(256 + 24)) + idx)) + var literal_idx int32 = int32(uint32_t(256+24) + idx) return *(*float64)(unsafe.Pointer((*CostModel)(unsafe.Pointer(m)).literal_ + uintptr(literal_idx)*8)) } @@ -22870,8 +22613,8 @@ func GetLengthCost(tls *libc.TLS, m uintptr, length uint32_t) float64 { /* backw // var extra_bits int32 at bp+4, 4 - VP8LPrefixEncodeBits(tls, int32(length), (bp) /* &code */, (bp + 4) /* &extra_bits */) - return (*(*float64)(unsafe.Pointer((*CostModel)(unsafe.Pointer(m)).literal_ + uintptr((256+*(*int32)(unsafe.Pointer(bp /* code */))))*8)) + float64(*(*int32)(unsafe.Pointer(bp + 4 /* extra_bits */)))) + VP8LPrefixEncodeBits(tls, int32(length), bp, bp+4) + return *(*float64)(unsafe.Pointer((*CostModel)(unsafe.Pointer(m)).literal_ + uintptr(256+*(*int32)(unsafe.Pointer(bp)))*8)) + float64(*(*int32)(unsafe.Pointer(bp + 4))) } func GetDistanceCost(tls *libc.TLS, m uintptr, distance uint32_t) float64 { /* backward_references_cost_enc.c:114:27: */ @@ -22882,8 +22625,8 @@ func GetDistanceCost(tls *libc.TLS, m uintptr, distance uint32_t) float64 { /* b // var extra_bits int32 at bp+4, 4 - VP8LPrefixEncodeBits(tls, int32(distance), (bp) /* &code */, (bp + 4) /* &extra_bits */) - return (*(*float64)(unsafe.Pointer((m + 6144 /* &.distance_ */) + uintptr(*(*int32)(unsafe.Pointer(bp /* code */)))*8)) + float64(*(*int32)(unsafe.Pointer(bp + 4 /* extra_bits */)))) + VP8LPrefixEncodeBits(tls, int32(distance), bp, bp+4) + return *(*float64)(unsafe.Pointer(m + 6144 + uintptr(*(*int32)(unsafe.Pointer(bp)))*8)) + float64(*(*int32)(unsafe.Pointer(bp + 4))) } func AddSingleLiteralWithCostModel(tls *libc.TLS, argb uintptr, hashers uintptr, cost_model uintptr, idx int32, use_color_cache int32, prev_cost float32, cost uintptr, dist_array uintptr) { /* backward_references_cost_enc.c:121:25: */ @@ -22898,13 +22641,13 @@ func AddSingleLiteralWithCostModel(tls *libc.TLS, argb uintptr, hashers uintptr, if ix >= 0 { // use_color_cache is true and hashers contains color var mul0 float64 = 0.68 - cost_val = cost_val + (GetCacheCost(tls, cost_model, uint32(ix)) * mul0) + cost_val = cost_val + GetCacheCost(tls, cost_model, uint32(ix))*mul0 } else { var mul1 float64 = 0.82 if use_color_cache != 0 { VP8LColorCacheInsert(tls, hashers, color) } - cost_val = cost_val + (GetLiteralCost(tls, cost_model, color) * mul1) + cost_val = cost_val + GetLiteralCost(tls, cost_model, color)*mul1 } if float64(*(*float32)(unsafe.Pointer(cost + uintptr(idx)*4))) > cost_val { *(*float32)(unsafe.Pointer(cost + uintptr(idx)*4)) = float32(cost_val) @@ -22992,19 +22735,19 @@ func CostIntervalAddToFreeList(tls *libc.TLS, manager uintptr, interval uintptr) } func CostIntervalIsInFreeList(tls *libc.TLS, manager uintptr, interval uintptr) int32 { /* backward_references_cost_enc.c:208:12: */ - return (libc.Bool32((interval >= (manager + 32808 /* &.intervals_ */)) && (interval <= ((manager + 32808 /* &.intervals_ */) + 9*32)))) + return libc.Bool32(interval >= manager+32808 && interval <= manager+32808+9*32) } func CostManagerInitFreeList(tls *libc.TLS, manager uintptr) { /* backward_references_cost_enc.c:214:13: */ var i int32 - (*CostManager)(unsafe.Pointer(manager)).free_intervals_ = (uintptr(0)) + (*CostManager)(unsafe.Pointer(manager)).free_intervals_ = uintptr(0) for i = 0; i < 10; i++ { - CostIntervalAddToFreeList(tls, manager, ((manager + 32808 /* &.intervals_ */) + uintptr(i)*32)) + CostIntervalAddToFreeList(tls, manager, manager+32808+uintptr(i)*32) } } func DeleteIntervalList(tls *libc.TLS, manager uintptr, interval uintptr) { /* backward_references_cost_enc.c:222:13: */ - for interval != (uintptr(0)) { + for interval != uintptr(0) { var next uintptr = (*CostInterval)(unsafe.Pointer(interval)).next_ if !(CostIntervalIsInFreeList(tls, manager, interval) != 0) { WebPSafeFree(tls, interval) @@ -23014,7 +22757,7 @@ func DeleteIntervalList(tls *libc.TLS, manager uintptr, interval uintptr) { /* b } func CostManagerClear(tls *libc.TLS, manager uintptr) { /* backward_references_cost_enc.c:233:13: */ - if manager == (uintptr(0)) { + if manager == uintptr(0) { return } @@ -23023,9 +22766,9 @@ func CostManagerClear(tls *libc.TLS, manager uintptr) { /* backward_references_c // Clear the interval lists. DeleteIntervalList(tls, manager, (*CostManager)(unsafe.Pointer(manager)).head_) - (*CostManager)(unsafe.Pointer(manager)).head_ = (uintptr(0)) + (*CostManager)(unsafe.Pointer(manager)).head_ = uintptr(0) DeleteIntervalList(tls, manager, (*CostManager)(unsafe.Pointer(manager)).recycled_intervals_) - (*CostManager)(unsafe.Pointer(manager)).recycled_intervals_ = (uintptr(0)) + (*CostManager)(unsafe.Pointer(manager)).recycled_intervals_ = uintptr(0) // Reset pointers, count_ and cache_intervals_size_. libc.Xmemset(tls, manager, 0, uint64(unsafe.Sizeof(CostManager{}))) @@ -23035,27 +22778,27 @@ func CostManagerClear(tls *libc.TLS, manager uintptr) { /* backward_references_c func CostManagerInit(tls *libc.TLS, manager uintptr, dist_array uintptr, pix_count int32, cost_model uintptr) int32 { /* backward_references_cost_enc.c:250:12: */ var i int32 var cost_cache_size int32 - if pix_count > ((int32(1) << 12) - 1) { - cost_cache_size = ((int32(1) << 12) - 1) + if pix_count > int32(1)<<12-1 { + cost_cache_size = int32(1)<<12 - 1 } else { cost_cache_size = pix_count } - (*CostManager)(unsafe.Pointer(manager)).costs_ = (uintptr(0)) - (*CostManager)(unsafe.Pointer(manager)).cache_intervals_ = (uintptr(0)) - (*CostManager)(unsafe.Pointer(manager)).head_ = (uintptr(0)) - (*CostManager)(unsafe.Pointer(manager)).recycled_intervals_ = (uintptr(0)) + (*CostManager)(unsafe.Pointer(manager)).costs_ = uintptr(0) + (*CostManager)(unsafe.Pointer(manager)).cache_intervals_ = uintptr(0) + (*CostManager)(unsafe.Pointer(manager)).head_ = uintptr(0) + (*CostManager)(unsafe.Pointer(manager)).recycled_intervals_ = uintptr(0) (*CostManager)(unsafe.Pointer(manager)).count_ = 0 (*CostManager)(unsafe.Pointer(manager)).dist_array_ = dist_array CostManagerInitFreeList(tls, manager) // Fill in the cost_cache_. (*CostManager)(unsafe.Pointer(manager)).cache_intervals_size_ = uint64(1) - *(*float64)(unsafe.Pointer((manager + 32 /* &.cost_cache_ */))) = GetLengthCost(tls, cost_model, uint32(0)) + *(*float64)(unsafe.Pointer(manager + 32)) = GetLengthCost(tls, cost_model, uint32(0)) for i = 1; i < cost_cache_size; i++ { - *(*float64)(unsafe.Pointer((manager + 32 /* &.cost_cache_ */) + uintptr(i)*8)) = GetLengthCost(tls, cost_model, uint32(i)) + *(*float64)(unsafe.Pointer(manager + 32 + uintptr(i)*8)) = GetLengthCost(tls, cost_model, uint32(i)) // Get the number of bound intervals. - if *(*float64)(unsafe.Pointer((manager + 32 /* &.cost_cache_ */) + uintptr(i)*8)) != *(*float64)(unsafe.Pointer((manager + 32 /* &.cost_cache_ */) + uintptr((i-1))*8)) { + if *(*float64)(unsafe.Pointer(manager + 32 + uintptr(i)*8)) != *(*float64)(unsafe.Pointer(manager + 32 + uintptr(i-1)*8)) { (*CostManager)(unsafe.Pointer(manager)).cache_intervals_size_++ } } @@ -23067,7 +22810,7 @@ func CostManagerInit(tls *libc.TLS, manager uintptr, dist_array uintptr, pix_cou (*CostManager)(unsafe.Pointer(manager)).cache_intervals_ = WebPSafeMalloc(tls, (*CostManager)(unsafe.Pointer(manager)).cache_intervals_size_, uint64(unsafe.Sizeof(CostCacheInterval{}))) - if (*CostManager)(unsafe.Pointer(manager)).cache_intervals_ == (uintptr(0)) { + if (*CostManager)(unsafe.Pointer(manager)).cache_intervals_ == uintptr(0) { CostManagerClear(tls, manager) return 0 } @@ -23080,22 +22823,22 @@ func CostManagerInit(tls *libc.TLS, manager uintptr, dist_array uintptr, pix_cou // difference is found, a new interval is created and bounded. (*CostCacheInterval)(unsafe.Pointer(cur)).start_ = 0 (*CostCacheInterval)(unsafe.Pointer(cur)).end_ = 1 - (*CostCacheInterval)(unsafe.Pointer(cur)).cost_ = *(*float64)(unsafe.Pointer((manager + 32 /* &.cost_cache_ */))) + (*CostCacheInterval)(unsafe.Pointer(cur)).cost_ = *(*float64)(unsafe.Pointer(manager + 32)) for i = 1; i < cost_cache_size; i++ { - var cost_val float64 = *(*float64)(unsafe.Pointer((manager + 32 /* &.cost_cache_ */) + uintptr(i)*8)) + var cost_val float64 = *(*float64)(unsafe.Pointer(manager + 32 + uintptr(i)*8)) if cost_val != (*CostCacheInterval)(unsafe.Pointer(cur)).cost_ { cur += 16 // Initialize an interval. (*CostCacheInterval)(unsafe.Pointer(cur)).start_ = i (*CostCacheInterval)(unsafe.Pointer(cur)).cost_ = cost_val } - (*CostCacheInterval)(unsafe.Pointer(cur)).end_ = (i + 1) + (*CostCacheInterval)(unsafe.Pointer(cur)).end_ = i + 1 } } (*CostManager)(unsafe.Pointer(manager)).costs_ = WebPSafeMalloc(tls, uint64(pix_count), uint64(unsafe.Sizeof(float32(0)))) - if (*CostManager)(unsafe.Pointer(manager)).costs_ == (uintptr(0)) { + if (*CostManager)(unsafe.Pointer(manager)).costs_ == uintptr(0) { CostManagerClear(tls, manager) return 0 } @@ -23110,11 +22853,11 @@ func CostManagerInit(tls *libc.TLS, manager uintptr, dist_array uintptr, pix_cou // Given the cost and the position that define an interval, update the cost at // pixel 'i' if it is smaller than the previously computed value. func UpdateCost(tls *libc.TLS, manager uintptr, i int32, position int32, cost float32) { /* backward_references_cost_enc.c:321:25: */ - var k int32 = (i - position) + var k int32 = i - position if *(*float32)(unsafe.Pointer((*CostManager)(unsafe.Pointer(manager)).costs_ + uintptr(i)*4)) > cost { *(*float32)(unsafe.Pointer((*CostManager)(unsafe.Pointer(manager)).costs_ + uintptr(i)*4)) = cost - *(*uint16_t)(unsafe.Pointer((*CostManager)(unsafe.Pointer(manager)).dist_array_ + uintptr(i)*2)) = (uint16_t(k + 1)) + *(*uint16_t)(unsafe.Pointer((*CostManager)(unsafe.Pointer(manager)).dist_array_ + uintptr(i)*2)) = uint16_t(k + 1) } } @@ -23129,20 +22872,20 @@ func UpdateCostPerInterval(tls *libc.TLS, manager uintptr, start int32, end int3 // Given two intervals, make 'prev' be the previous one of 'next' in 'manager'. func ConnectIntervals(tls *libc.TLS, manager uintptr, prev uintptr, next uintptr) { /* backward_references_cost_enc.c:342:25: */ - if prev != (uintptr(0)) { + if prev != uintptr(0) { (*CostInterval)(unsafe.Pointer(prev)).next_ = next } else { (*CostManager)(unsafe.Pointer(manager)).head_ = next } - if next != (uintptr(0)) { + if next != uintptr(0) { (*CostInterval)(unsafe.Pointer(next)).previous_ = prev } } // Pop an interval in the manager. func PopInterval(tls *libc.TLS, manager uintptr, interval uintptr) { /* backward_references_cost_enc.c:355:25: */ - if interval == (uintptr(0)) { + if interval == uintptr(0) { return } @@ -23164,7 +22907,7 @@ func PopInterval(tls *libc.TLS, manager uintptr, interval uintptr) { /* backward func UpdateCostAtIndex(tls *libc.TLS, manager uintptr, i int32, do_clean_intervals int32) { /* backward_references_cost_enc.c:374:25: */ var current uintptr = (*CostManager)(unsafe.Pointer(manager)).head_ - for (current != (uintptr(0))) && ((*CostInterval)(unsafe.Pointer(current)).start_ <= i) { + for current != uintptr(0) && (*CostInterval)(unsafe.Pointer(current)).start_ <= i { var next uintptr = (*CostInterval)(unsafe.Pointer(current)).next_ if (*CostInterval)(unsafe.Pointer(current)).end_ <= i { if do_clean_intervals != 0 { @@ -23183,17 +22926,17 @@ func UpdateCostAtIndex(tls *libc.TLS, manager uintptr, i int32, do_clean_interva // of intervals using the start_ ordering and the previous interval as a hint. func PositionOrphanInterval(tls *libc.TLS, manager uintptr, current uintptr, previous uintptr) { /* backward_references_cost_enc.c:395:25: */ - if previous == (uintptr(0)) { + if previous == uintptr(0) { previous = (*CostManager)(unsafe.Pointer(manager)).head_ } - for (previous != (uintptr(0))) && ((*CostInterval)(unsafe.Pointer(current)).start_ < (*CostInterval)(unsafe.Pointer(previous)).start_) { + for previous != uintptr(0) && (*CostInterval)(unsafe.Pointer(current)).start_ < (*CostInterval)(unsafe.Pointer(previous)).start_ { previous = (*CostInterval)(unsafe.Pointer(previous)).previous_ } - for ((previous != (uintptr(0))) && ((*CostInterval)(unsafe.Pointer(previous)).next_ != (uintptr(0)))) && ((*CostInterval)(unsafe.Pointer((*CostInterval)(unsafe.Pointer(previous)).next_)).start_ < (*CostInterval)(unsafe.Pointer(current)).start_) { + for previous != uintptr(0) && (*CostInterval)(unsafe.Pointer(previous)).next_ != uintptr(0) && (*CostInterval)(unsafe.Pointer((*CostInterval)(unsafe.Pointer(previous)).next_)).start_ < (*CostInterval)(unsafe.Pointer(current)).start_ { previous = (*CostInterval)(unsafe.Pointer(previous)).next_ } - if previous != (uintptr(0)) { + if previous != uintptr(0) { ConnectIntervals(tls, manager, current, (*CostInterval)(unsafe.Pointer(previous)).next_) } else { ConnectIntervals(tls, manager, current, (*CostManager)(unsafe.Pointer(manager)).head_) @@ -23214,15 +22957,15 @@ func InsertInterval(tls *libc.TLS, manager uintptr, interval_in uintptr, cost fl UpdateCostPerInterval(tls, manager, start, end, position, cost) return } - if (*CostManager)(unsafe.Pointer(manager)).free_intervals_ != (uintptr(0)) { + if (*CostManager)(unsafe.Pointer(manager)).free_intervals_ != uintptr(0) { interval_new = (*CostManager)(unsafe.Pointer(manager)).free_intervals_ (*CostManager)(unsafe.Pointer(manager)).free_intervals_ = (*CostInterval)(unsafe.Pointer(interval_new)).next_ - } else if (*CostManager)(unsafe.Pointer(manager)).recycled_intervals_ != (uintptr(0)) { + } else if (*CostManager)(unsafe.Pointer(manager)).recycled_intervals_ != uintptr(0) { interval_new = (*CostManager)(unsafe.Pointer(manager)).recycled_intervals_ (*CostManager)(unsafe.Pointer(manager)).recycled_intervals_ = (*CostInterval)(unsafe.Pointer(interval_new)).next_ } else { // malloc for good interval_new = WebPSafeMalloc(tls, uint64(1), uint64(unsafe.Sizeof(CostInterval{}))) - if interval_new == (uintptr(0)) { + if interval_new == uintptr(0) { // Write down the interval if we cannot create it. UpdateCostPerInterval(tls, manager, start, end, position, cost) return @@ -23253,32 +22996,32 @@ func PushInterval(tls *libc.TLS, manager uintptr, distance_cost float64, positio if len < kSkipDistance { var j int32 - for j = position; j < (position + len); j++ { - var k int32 = (j - position) + for j = position; j < position+len; j++ { + var k int32 = j - position var cost_tmp float32 - cost_tmp = (float32(distance_cost + *(*float64)(unsafe.Pointer((manager + 32 /* &.cost_cache_ */) + uintptr(k)*8)))) + cost_tmp = float32(distance_cost + *(*float64)(unsafe.Pointer(manager + 32 + uintptr(k)*8))) if *(*float32)(unsafe.Pointer((*CostManager)(unsafe.Pointer(manager)).costs_ + uintptr(j)*4)) > cost_tmp { *(*float32)(unsafe.Pointer((*CostManager)(unsafe.Pointer(manager)).costs_ + uintptr(j)*4)) = cost_tmp - *(*uint16_t)(unsafe.Pointer((*CostManager)(unsafe.Pointer(manager)).dist_array_ + uintptr(j)*2)) = (uint16_t(k + 1)) + *(*uint16_t)(unsafe.Pointer((*CostManager)(unsafe.Pointer(manager)).dist_array_ + uintptr(j)*2)) = uint16_t(k + 1) } } return } - for i = uint64(0); (i < (*CostManager)(unsafe.Pointer(manager)).cache_intervals_size_) && ((*CostCacheInterval)(unsafe.Pointer(cost_cache_intervals+uintptr(i)*16)).start_ < len); i++ { + for i = uint64(0); i < (*CostManager)(unsafe.Pointer(manager)).cache_intervals_size_ && (*CostCacheInterval)(unsafe.Pointer(cost_cache_intervals+uintptr(i)*16)).start_ < len; i++ { // Define the intersection of the ith interval with the new one. - var start int32 = (position + (*CostCacheInterval)(unsafe.Pointer(cost_cache_intervals+uintptr(i)*16)).start_) - var end int32 = (position + (func() int32 { + var start int32 = position + (*CostCacheInterval)(unsafe.Pointer(cost_cache_intervals+uintptr(i)*16)).start_ + var end int32 = position + func() int32 { if (*CostCacheInterval)(unsafe.Pointer(cost_cache_intervals+uintptr(i)*16)).end_ > len { return len } return (*CostCacheInterval)(unsafe.Pointer(cost_cache_intervals + uintptr(i)*16)).end_ - }())) - var cost float32 = (float32(distance_cost + (*CostCacheInterval)(unsafe.Pointer(cost_cache_intervals+uintptr(i)*16)).cost_)) + }() + var cost float32 = float32(distance_cost + (*CostCacheInterval)(unsafe.Pointer(cost_cache_intervals+uintptr(i)*16)).cost_) - for ; (interval != (uintptr(0))) && ((*CostInterval)(unsafe.Pointer(interval)).start_ < end); interval = interval_next { + for ; interval != uintptr(0) && (*CostInterval)(unsafe.Pointer(interval)).start_ < end; interval = interval_next { interval_next = (*CostInterval)(unsafe.Pointer(interval)).next_ // Make sure we have some overlap @@ -23387,16 +23130,16 @@ func BackwardReferencesHashChainDistanceOnly(tls *libc.TLS, xsize int32, ysize i // var len int32 at bp+20, 4 ok = 0 cc_init = 0 - pix_count = (xsize * ysize) - use_color_cache = (libc.Bool32(cache_bits > 0)) + pix_count = xsize * ysize + use_color_cache = libc.Bool32(cache_bits > 0) literal_array_size = - (uint64(unsafe.Sizeof(float64(0))) * (uint64((256 + 24) + (func() int32 { + uint64(unsafe.Sizeof(float64(0))) * uint64(256+24+func() int32 { if cache_bits > 0 { - return (int32(1) << cache_bits) + return int32(1) << cache_bits } return 0 - }())))) - cost_model_size = (uint64(unsafe.Sizeof(CostModel{})) + literal_array_size) + }()) + cost_model_size = uint64(unsafe.Sizeof(CostModel{})) + literal_array_size cost_model = WebPSafeCalloc(tls, 1, cost_model_size) cost_manager = @@ -23407,19 +23150,19 @@ func BackwardReferencesHashChainDistanceOnly(tls *libc.TLS, xsize int32, ysize i first_offset_is_constant = -1 reach = 0 - if !((cost_model == (uintptr(0))) || (cost_manager == (uintptr(0)))) { + if !(cost_model == uintptr(0) || cost_manager == uintptr(0)) { goto __1 } goto Error __1: ; - (*CostModel)(unsafe.Pointer(cost_model)).literal_ = (cost_model + uintptr(1)*6472) + (*CostModel)(unsafe.Pointer(cost_model)).literal_ = cost_model + uintptr(1)*6472 if !(use_color_cache != 0) { goto __2 } - cc_init = VP8LColorCacheInit(tls, (bp) /* &hashers */, cache_bits) - if !(!(cc_init != 0)) { + cc_init = VP8LColorCacheInit(tls, bp, cache_bits) + if !!(cc_init != 0) { goto __3 } goto Error @@ -23428,14 +23171,14 @@ __3: __2: ; - if !(!(CostModelBuild(tls, cost_model, xsize, cache_bits, refs) != 0)) { + if !!(CostModelBuild(tls, cost_model, xsize, cache_bits, refs) != 0) { goto __4 } goto Error __4: ; - if !(!(CostManagerInit(tls, cost_manager, dist_array, pix_count, cost_model) != 0)) { + if !!(CostManagerInit(tls, cost_manager, dist_array, pix_count, cost_model) != 0) { goto __5 } goto Error @@ -23446,7 +23189,7 @@ __5: // non-processed locations from this point. *(*uint16_t)(unsafe.Pointer(dist_array)) = uint16_t(0) // Add first pixel as literal. - AddSingleLiteralWithCostModel(tls, argb, (bp) /* &hashers */, cost_model, 0, use_color_cache, + AddSingleLiteralWithCostModel(tls, argb, bp, cost_model, 0, use_color_cache, 0., (*CostManager)(unsafe.Pointer(cost_manager)).costs_, dist_array) i = 1 @@ -23454,25 +23197,25 @@ __6: if !(i < pix_count) { goto __8 } - prev_cost = *(*float32)(unsafe.Pointer((*CostManager)(unsafe.Pointer(cost_manager)).costs_ + uintptr((i-1))*4)) - VP8LHashChainFindCopy(tls, hash_chain, i, (bp + 16) /* &offset */, (bp + 20) /* &len */) + prev_cost = *(*float32)(unsafe.Pointer((*CostManager)(unsafe.Pointer(cost_manager)).costs_ + uintptr(i-1)*4)) + VP8LHashChainFindCopy(tls, hash_chain, i, bp+16, bp+20) // Try adding the pixel as a literal. - AddSingleLiteralWithCostModel(tls, argb, (bp) /* &hashers */, cost_model, i, + AddSingleLiteralWithCostModel(tls, argb, bp, cost_model, i, use_color_cache, prev_cost, (*CostManager)(unsafe.Pointer(cost_manager)).costs_, dist_array) // If we are dealing with a non-literal. - if !(*(*int32)(unsafe.Pointer(bp + 20 /* len */)) >= 2) { + if !(*(*int32)(unsafe.Pointer(bp + 20)) >= 2) { goto __9 } - if !(*(*int32)(unsafe.Pointer(bp + 16 /* offset */)) != offset_prev) { + if !(*(*int32)(unsafe.Pointer(bp + 16)) != offset_prev) { goto __10 } code = VP8LDistanceToPlaneCode(tls, xsize, *(*int32)(unsafe.Pointer(bp + 16 /* offset */))) offset_cost = GetDistanceCost(tls, cost_model, uint32(code)) first_offset_is_constant = 1 - PushInterval(tls, cost_manager, (float64(prev_cost) + offset_cost), i, *(*int32)(unsafe.Pointer(bp + 20 /* len */))) + PushInterval(tls, cost_manager, float64(prev_cost)+offset_cost, i, *(*int32)(unsafe.Pointer(bp + 20 /* len */))) goto __11 __10: ; @@ -23485,12 +23228,12 @@ __10: if !(first_offset_is_constant != 0) { goto __12 } - reach = (((i - 1) + len_prev) - 1) + reach = i - 1 + len_prev - 1 first_offset_is_constant = 0 __12: ; - if !(((i + *(*int32)(unsafe.Pointer(bp + 20 /* len */))) - 1) > reach) { + if !(i+*(*int32)(unsafe.Pointer(bp + 20))-1 > reach) { goto __13 } *(*int32)(unsafe.Pointer(bp + 28 /* len_j */)) = 0 @@ -23502,11 +23245,11 @@ __14: if !(j <= reach) { goto __16 } - VP8LHashChainFindCopy(tls, hash_chain, (j + 1), (bp + 24) /* &offset_j */, (bp + 28) /* &len_j */) - if !(*(*int32)(unsafe.Pointer(bp + 24 /* offset_j */)) != *(*int32)(unsafe.Pointer(bp + 16 /* offset */))) { + VP8LHashChainFindCopy(tls, hash_chain, j+1, bp+24, bp+28) + if !(*(*int32)(unsafe.Pointer(bp + 24)) != *(*int32)(unsafe.Pointer(bp + 16))) { goto __17 } - VP8LHashChainFindCopy(tls, hash_chain, j, (bp + 24) /* &offset_j */, (bp + 28) /* &len_j */) + VP8LHashChainFindCopy(tls, hash_chain, j, bp+24, bp+28) goto __16 __17: ; @@ -23518,12 +23261,12 @@ __15: __16: ; // Update the cost at j - 1 and j. - UpdateCostAtIndex(tls, cost_manager, (j - 1), 0) + UpdateCostAtIndex(tls, cost_manager, j-1, 0) UpdateCostAtIndex(tls, cost_manager, j, 0) - PushInterval(tls, cost_manager, (float64(*(*float32)(unsafe.Pointer((*CostManager)(unsafe.Pointer(cost_manager)).costs_ + uintptr((j-1))*4))) + offset_cost), + PushInterval(tls, cost_manager, float64(*(*float32)(unsafe.Pointer((*CostManager)(unsafe.Pointer(cost_manager)).costs_ + uintptr(j-1)*4)))+offset_cost, j, *(*int32)(unsafe.Pointer(bp + 28 /* len_j */))) - reach = ((j + *(*int32)(unsafe.Pointer(bp + 28 /* len_j */))) - 1) + reach = j + *(*int32)(unsafe.Pointer(bp + 28)) - 1 __13: ; __11: @@ -23547,7 +23290,7 @@ Error: if !(cc_init != 0) { goto __18 } - VP8LColorCacheClear(tls, (bp) /* &hashers */) + VP8LColorCacheClear(tls, bp) __18: ; CostManagerClear(tls, cost_manager) @@ -23560,16 +23303,16 @@ __18: // a pointer to this part of the array. Example: // dist_array = [1x2xx3x2] => packed [1x2x1232], chosen_path = [1232] func TraceBackwards(tls *libc.TLS, dist_array uintptr, dist_array_size int32, chosen_path uintptr, chosen_path_size uintptr) { /* backward_references_cost_enc.c:689:13: */ - var path uintptr = (dist_array + uintptr(dist_array_size)*2) - var cur uintptr = ((dist_array + uintptr(dist_array_size)*2) - uintptr(1)*2) + var path uintptr = dist_array + uintptr(dist_array_size)*2 + var cur uintptr = dist_array + uintptr(dist_array_size)*2 - uintptr(1)*2 for cur >= dist_array { var k int32 = int32(*(*uint16_t)(unsafe.Pointer(cur))) path -= 2 *(*uint16_t)(unsafe.Pointer(path)) = uint16_t(k) - cur -= 2 * (uintptr(k)) + cur -= 2 * uintptr(k) } *(*uintptr)(unsafe.Pointer(chosen_path)) = path - *(*int32)(unsafe.Pointer(chosen_path_size)) = (int32(((int64(dist_array + uintptr(dist_array_size)*2)) - int64(path)) / 2)) + *(*int32)(unsafe.Pointer(chosen_path_size)) = int32((int64(dist_array+uintptr(dist_array_size)*2) - int64(path)) / 2) } func BackwardReferencesHashChainFollowChosenPath(tls *libc.TLS, argb uintptr, cache_bits int32, chosen_path uintptr, chosen_path_size int32, hash_chain uintptr, refs uintptr) int32 { /* backward_references_cost_enc.c:705:12: */ @@ -23588,7 +23331,7 @@ func BackwardReferencesHashChainFollowChosenPath(tls *libc.TLS, argb uintptr, ca var v PixOrCopy var idx int32 var len int32 - use_color_cache = (libc.Bool32(cache_bits > 0)) + use_color_cache = libc.Bool32(cache_bits > 0) i = 0 ok = 0 cc_init = 0 @@ -23596,8 +23339,8 @@ func BackwardReferencesHashChainFollowChosenPath(tls *libc.TLS, argb uintptr, ca if !(use_color_cache != 0) { goto __1 } - cc_init = VP8LColorCacheInit(tls, (bp) /* &hashers */, cache_bits) - if !(!(cc_init != 0)) { + cc_init = VP8LColorCacheInit(tls, bp, cache_bits) + if !!(cc_init != 0) { goto __2 } goto Error @@ -23626,7 +23369,7 @@ __9: if !(k < len) { goto __11 } - VP8LColorCacheInsert(tls, (bp) /* &hashers */, *(*uint32_t)(unsafe.Pointer(argb + uintptr((i+k))*4))) + VP8LColorCacheInsert(tls, bp, *(*uint32_t)(unsafe.Pointer(argb + uintptr(i+k)*4))) goto __10 __10: k++ @@ -23636,11 +23379,11 @@ __11: ; __8: ; - i = i + (len) + i = i + len goto __7 __6: if use_color_cache != 0 { - idx = VP8LColorCacheContains(tls, (bp) /* &hashers */, *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4))) + idx = VP8LColorCacheContains(tls, bp, *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4))) } else { idx = -1 } @@ -23655,7 +23398,7 @@ __12: if !(use_color_cache != 0) { goto __14 } - VP8LColorCacheInsert(tls, (bp) /* &hashers */, *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4))) + VP8LColorCacheInsert(tls, bp, *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4))) __14: ; v = PixOrCopyCreateLiteral(tls, *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4))) @@ -23677,7 +23420,7 @@ Error: if !(cc_init != 0) { goto __15 } - VP8LColorCacheClear(tls, (bp) /* &hashers */) + VP8LColorCacheClear(tls, bp) __15: ; return ok @@ -23695,30 +23438,30 @@ func VP8LBackwardReferencesTraceBackwards(tls *libc.TLS, xsize int32, ysize int3 var dist_array uintptr ok = 0 - dist_array_size = (xsize * ysize) - *(*uintptr)(unsafe.Pointer(bp /* chosen_path */)) = (uintptr(0)) + dist_array_size = xsize * ysize + *(*uintptr)(unsafe.Pointer(bp /* chosen_path */)) = uintptr(0) *(*int32)(unsafe.Pointer(bp + 8 /* chosen_path_size */)) = 0 dist_array = WebPSafeMalloc(tls, uint64(dist_array_size), uint64(unsafe.Sizeof(uint16_t(0)))) - if !(dist_array == (uintptr(0))) { + if !(dist_array == uintptr(0)) { goto __1 } goto Error __1: ; - if !(!(BackwardReferencesHashChainDistanceOnly(tls, - xsize, ysize, argb, cache_bits, hash_chain, refs_src, dist_array) != 0)) { + if !!(BackwardReferencesHashChainDistanceOnly(tls, + xsize, ysize, argb, cache_bits, hash_chain, refs_src, dist_array) != 0) { goto __2 } goto Error __2: ; - TraceBackwards(tls, dist_array, dist_array_size, (bp) /* &chosen_path */, (bp + 8) /* &chosen_path_size */) - if !(!(BackwardReferencesHashChainFollowChosenPath(tls, - argb, cache_bits, *(*uintptr)(unsafe.Pointer(bp /* chosen_path */)), *(*int32)(unsafe.Pointer(bp + 8 /* chosen_path_size */)), hash_chain, - refs_dst) != 0)) { + TraceBackwards(tls, dist_array, dist_array_size, bp, bp+8) + if !!(BackwardReferencesHashChainFollowChosenPath(tls, + argb, cache_bits, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), hash_chain, + refs_dst) != 0) { goto __3 } goto Error @@ -23772,14 +23515,14 @@ var plane_to_code_lut = [128]uint8_t{ } /* backward_references_enc.c:38:22 */ func VP8LDistanceToPlaneCode(tls *libc.TLS, xsize int32, dist int32) int32 { /* backward_references_enc.c:50:5: */ - var yoffset int32 = (dist / xsize) - var xoffset int32 = (dist - (yoffset * xsize)) - if (xoffset <= 8) && (yoffset < 8) { - return (int32(plane_to_code_lut[(((yoffset*16)+8)-xoffset)]) + 1) - } else if (xoffset > (xsize - 8)) && (yoffset < 7) { - return (int32(plane_to_code_lut[((((yoffset+1)*16)+8)+(xsize-xoffset))]) + 1) + var yoffset int32 = dist / xsize + var xoffset int32 = dist - yoffset*xsize + if xoffset <= 8 && yoffset < 8 { + return int32(plane_to_code_lut[yoffset*16+8-xoffset]) + 1 + } else if xoffset > xsize-8 && yoffset < 7 { + return int32(plane_to_code_lut[(yoffset+1)*16+8+(xsize-xoffset)]) + 1 } - return (dist + 120) + return dist + 120 } // Returns the exact index where array1 and array2 are different. For an index @@ -23801,19 +23544,19 @@ func FindMatchLength(tls *libc.TLS, array1 uintptr, array2 uintptr, best_len_mat func VP8LClearBackwardRefs(tls *libc.TLS, refs uintptr) { /* backward_references_enc.c:86:6: */ - if (*VP8LBackwardRefs)(unsafe.Pointer(refs)).tail_ != (uintptr(0)) { + if (*VP8LBackwardRefs)(unsafe.Pointer(refs)).tail_ != uintptr(0) { *(*uintptr)(unsafe.Pointer((*VP8LBackwardRefs)(unsafe.Pointer(refs)).tail_)) = (*VP8LBackwardRefs)(unsafe.Pointer(refs)).free_blocks_ // recycle all blocks at once } (*VP8LBackwardRefs)(unsafe.Pointer(refs)).free_blocks_ = (*VP8LBackwardRefs)(unsafe.Pointer(refs)).refs_ - (*VP8LBackwardRefs)(unsafe.Pointer(refs)).tail_ = (refs + 8 /* &.refs_ */) - (*VP8LBackwardRefs)(unsafe.Pointer(refs)).last_block_ = (uintptr(0)) - (*VP8LBackwardRefs)(unsafe.Pointer(refs)).refs_ = (uintptr(0)) + (*VP8LBackwardRefs)(unsafe.Pointer(refs)).tail_ = refs + 8 + (*VP8LBackwardRefs)(unsafe.Pointer(refs)).last_block_ = uintptr(0) + (*VP8LBackwardRefs)(unsafe.Pointer(refs)).refs_ = uintptr(0) } func VP8LBackwardRefsClear(tls *libc.TLS, refs uintptr) { /* backward_references_enc.c:97:6: */ VP8LClearBackwardRefs(tls, refs) - for (*VP8LBackwardRefs)(unsafe.Pointer(refs)).free_blocks_ != (uintptr(0)) { + for (*VP8LBackwardRefs)(unsafe.Pointer(refs)).free_blocks_ != uintptr(0) { var next uintptr = (*PixOrCopyBlock)(unsafe.Pointer((*VP8LBackwardRefs)(unsafe.Pointer(refs)).free_blocks_)).next_ WebPSafeFree(tls, (*VP8LBackwardRefs)(unsafe.Pointer(refs)).free_blocks_) (*VP8LBackwardRefs)(unsafe.Pointer(refs)).free_blocks_ = next @@ -23822,23 +23565,23 @@ func VP8LBackwardRefsClear(tls *libc.TLS, refs uintptr) { /* backward_references // Swaps the content of two VP8LBackwardRefs. func BackwardRefsSwap(tls *libc.TLS, refs1 uintptr, refs2 uintptr) { /* backward_references_enc.c:108:13: */ - var point_to_refs1 int32 = (libc.Bool32(((*VP8LBackwardRefs)(unsafe.Pointer(refs1)).tail_ != (uintptr(0))) && ((*VP8LBackwardRefs)(unsafe.Pointer(refs1)).tail_ == (refs1 + 8 /* &.refs_ */)))) - var point_to_refs2 int32 = (libc.Bool32(((*VP8LBackwardRefs)(unsafe.Pointer(refs2)).tail_ != (uintptr(0))) && ((*VP8LBackwardRefs)(unsafe.Pointer(refs2)).tail_ == (refs2 + 8 /* &.refs_ */)))) + var point_to_refs1 int32 = libc.Bool32((*VP8LBackwardRefs)(unsafe.Pointer(refs1)).tail_ != uintptr(0) && (*VP8LBackwardRefs)(unsafe.Pointer(refs1)).tail_ == refs1+8) + var point_to_refs2 int32 = libc.Bool32((*VP8LBackwardRefs)(unsafe.Pointer(refs2)).tail_ != uintptr(0) && (*VP8LBackwardRefs)(unsafe.Pointer(refs2)).tail_ == refs2+8) var tmp = *(*VP8LBackwardRefs)(unsafe.Pointer(refs1)) *(*VP8LBackwardRefs)(unsafe.Pointer(refs1)) = *(*VP8LBackwardRefs)(unsafe.Pointer(refs2)) *(*VP8LBackwardRefs)(unsafe.Pointer(refs2)) = tmp if point_to_refs2 != 0 { - (*VP8LBackwardRefs)(unsafe.Pointer(refs1)).tail_ = (refs1 + 8 /* &.refs_ */) + (*VP8LBackwardRefs)(unsafe.Pointer(refs1)).tail_ = refs1 + 8 } if point_to_refs1 != 0 { - (*VP8LBackwardRefs)(unsafe.Pointer(refs2)).tail_ = (refs2 + 8 /* &.refs_ */) + (*VP8LBackwardRefs)(unsafe.Pointer(refs2)).tail_ = refs2 + 8 } } func VP8LBackwardRefsInit(tls *libc.TLS, refs uintptr, block_size int32) { /* backward_references_enc.c:121:6: */ libc.Xmemset(tls, refs, 0, uint64(unsafe.Sizeof(VP8LBackwardRefs{}))) - (*VP8LBackwardRefs)(unsafe.Pointer(refs)).tail_ = (refs + 8 /* &.refs_ */) + (*VP8LBackwardRefs)(unsafe.Pointer(refs)).tail_ = refs + 8 (*VP8LBackwardRefs)(unsafe.Pointer(refs)).block_size_ = func() int32 { if block_size < 256 { return 256 @@ -23850,12 +23593,12 @@ func VP8LBackwardRefsInit(tls *libc.TLS, refs uintptr, block_size int32) { /* ba func VP8LRefsCursorInit(tls *libc.TLS, refs uintptr) VP8LRefsCursor { /* backward_references_enc.c:129:16: */ var c VP8LRefsCursor c.cur_block_ = (*VP8LBackwardRefs)(unsafe.Pointer(refs)).refs_ - if (*VP8LBackwardRefs)(unsafe.Pointer(refs)).refs_ != (uintptr(0)) { + if (*VP8LBackwardRefs)(unsafe.Pointer(refs)).refs_ != uintptr(0) { c.cur_pos = (*PixOrCopyBlock)(unsafe.Pointer(c.cur_block_)).start_ - c.last_pos_ = (c.cur_pos + uintptr((*PixOrCopyBlock)(unsafe.Pointer(c.cur_block_)).size_)*8) + c.last_pos_ = c.cur_pos + uintptr((*PixOrCopyBlock)(unsafe.Pointer(c.cur_block_)).size_)*8 } else { - c.cur_pos = (uintptr(0)) - c.last_pos_ = (uintptr(0)) + c.cur_pos = uintptr(0) + c.last_pos_ = uintptr(0) } return c } @@ -23863,16 +23606,16 @@ func VP8LRefsCursorInit(tls *libc.TLS, refs uintptr) VP8LRefsCursor { /* backwar func VP8LRefsCursorNextBlock(tls *libc.TLS, c uintptr) { /* backward_references_enc.c:142:6: */ var b uintptr = (*PixOrCopyBlock)(unsafe.Pointer((*VP8LRefsCursor)(unsafe.Pointer(c)).cur_block_)).next_ (*VP8LRefsCursor)(unsafe.Pointer(c)).cur_pos = func() uintptr { - if b == (uintptr(0)) { - return (uintptr(0)) + if b == uintptr(0) { + return uintptr(0) } return (*PixOrCopyBlock)(unsafe.Pointer(b)).start_ }() (*VP8LRefsCursor)(unsafe.Pointer(c)).last_pos_ = func() uintptr { - if b == (uintptr(0)) { - return (uintptr(0)) + if b == uintptr(0) { + return uintptr(0) } - return ((*PixOrCopyBlock)(unsafe.Pointer(b)).start_ + uintptr((*PixOrCopyBlock)(unsafe.Pointer(b)).size_)*8) + return (*PixOrCopyBlock)(unsafe.Pointer(b)).start_ + uintptr((*PixOrCopyBlock)(unsafe.Pointer(b)).size_)*8 }() (*VP8LRefsCursor)(unsafe.Pointer(c)).cur_block_ = b } @@ -23880,21 +23623,21 @@ func VP8LRefsCursorNextBlock(tls *libc.TLS, c uintptr) { /* backward_references_ // Create a new block, either from the free list or allocated func BackwardRefsNewBlock(tls *libc.TLS, refs uintptr) uintptr { /* backward_references_enc.c:150:22: */ var b uintptr = (*VP8LBackwardRefs)(unsafe.Pointer(refs)).free_blocks_ - if b == (uintptr(0)) { // allocate new memory chunk - var total_size size_t = (uint64(unsafe.Sizeof(PixOrCopyBlock{})) + (uint64((*VP8LBackwardRefs)(unsafe.Pointer(refs)).block_size_) * uint64(unsafe.Sizeof(PixOrCopy{})))) + if b == uintptr(0) { // allocate new memory chunk + var total_size size_t = uint64(unsafe.Sizeof(PixOrCopyBlock{})) + uint64((*VP8LBackwardRefs)(unsafe.Pointer(refs)).block_size_)*uint64(unsafe.Sizeof(PixOrCopy{})) b = WebPSafeMalloc(tls, 1, total_size) - if b == (uintptr(0)) { - *(*int32)(unsafe.Pointer((refs + 4 /* &.error_ */))) |= (1) - return (uintptr(0)) + if b == uintptr(0) { + *(*int32)(unsafe.Pointer(refs + 4)) |= 1 + return uintptr(0) } - (*PixOrCopyBlock)(unsafe.Pointer(b)).start_ = (b + uintptr(uint64(unsafe.Sizeof(PixOrCopyBlock{})))) // not always aligned + (*PixOrCopyBlock)(unsafe.Pointer(b)).start_ = b + uintptr(uint64(unsafe.Sizeof(PixOrCopyBlock{}))) // not always aligned } else { // recycle from free-list (*VP8LBackwardRefs)(unsafe.Pointer(refs)).free_blocks_ = (*PixOrCopyBlock)(unsafe.Pointer(b)).next_ } *(*uintptr)(unsafe.Pointer((*VP8LBackwardRefs)(unsafe.Pointer(refs)).tail_)) = b - (*VP8LBackwardRefs)(unsafe.Pointer(refs)).tail_ = (b /* &.next_ */) + (*VP8LBackwardRefs)(unsafe.Pointer(refs)).tail_ = b (*VP8LBackwardRefs)(unsafe.Pointer(refs)).last_block_ = b - (*PixOrCopyBlock)(unsafe.Pointer(b)).next_ = (uintptr(0)) + (*PixOrCopyBlock)(unsafe.Pointer(b)).next_ = uintptr(0) (*PixOrCopyBlock)(unsafe.Pointer(b)).size_ = 0 return b } @@ -23903,13 +23646,13 @@ func BackwardRefsNewBlock(tls *libc.TLS, refs uintptr) uintptr { /* backward_ref func BackwardRefsClone(tls *libc.TLS, from uintptr, to uintptr) int32 { /* backward_references_enc.c:173:12: */ var block_from uintptr = (*VP8LBackwardRefs)(unsafe.Pointer(from)).refs_ VP8LClearBackwardRefs(tls, to) - for block_from != (uintptr(0)) { + for block_from != uintptr(0) { var block_to uintptr = BackwardRefsNewBlock(tls, to) - if block_to == (uintptr(0)) { + if block_to == uintptr(0) { return 0 } libc.Xmemcpy(tls, (*PixOrCopyBlock)(unsafe.Pointer(block_to)).start_, (*PixOrCopyBlock)(unsafe.Pointer(block_from)).start_, - (uint64((*PixOrCopyBlock)(unsafe.Pointer(block_from)).size_) * uint64(unsafe.Sizeof(PixOrCopy{})))) + uint64((*PixOrCopyBlock)(unsafe.Pointer(block_from)).size_)*uint64(unsafe.Sizeof(PixOrCopy{}))) (*PixOrCopyBlock)(unsafe.Pointer(block_to)).size_ = (*PixOrCopyBlock)(unsafe.Pointer(block_from)).size_ block_from = (*PixOrCopyBlock)(unsafe.Pointer(block_from)).next_ } @@ -23918,9 +23661,9 @@ func BackwardRefsClone(tls *libc.TLS, from uintptr, to uintptr) int32 { /* backw func VP8LBackwardRefsCursorAdd(tls *libc.TLS, refs uintptr, v PixOrCopy) { /* backward_references_enc.c:190:6: */ var b uintptr = (*VP8LBackwardRefs)(unsafe.Pointer(refs)).last_block_ - if (b == (uintptr(0))) || ((*PixOrCopyBlock)(unsafe.Pointer(b)).size_ == (*VP8LBackwardRefs)(unsafe.Pointer(refs)).block_size_) { + if b == uintptr(0) || (*PixOrCopyBlock)(unsafe.Pointer(b)).size_ == (*VP8LBackwardRefs)(unsafe.Pointer(refs)).block_size_ { b = BackwardRefsNewBlock(tls, refs) - if b == (uintptr(0)) { + if b == uintptr(0) { return } // refs->error_ is set } @@ -23933,7 +23676,7 @@ func VP8LBackwardRefsCursorAdd(tls *libc.TLS, refs uintptr, v PixOrCopy) { /* ba func VP8LHashChainInit(tls *libc.TLS, p uintptr, size int32) int32 { /* backward_references_enc.c:203:5: */ (*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ = WebPSafeMalloc(tls, uint64(size), uint64(unsafe.Sizeof(uint32_t(0)))) - if (*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ == (uintptr(0)) { + if (*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ == uintptr(0) { return 0 } (*VP8LHashChain)(unsafe.Pointer(p)).size_ = size @@ -23946,7 +23689,7 @@ func VP8LHashChainClear(tls *libc.TLS, p uintptr) { /* backward_references_enc.c WebPSafeFree(tls, (*VP8LHashChain)(unsafe.Pointer(p)).offset_length_) (*VP8LHashChain)(unsafe.Pointer(p)).size_ = 0 - (*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ = (uintptr(0)) + (*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ = uintptr(0) } // ----------------------------------------------------------------------------- @@ -23956,52 +23699,52 @@ var kHashMultiplierLo uint32_t = 0x5bd1e996 /* backward_references_enc.c:226:23 func GetPixPairHash64(tls *libc.TLS, argb uintptr) uint32_t { /* backward_references_enc.c:229:10: */ var key uint32_t - key = (*(*uint32_t)(unsafe.Pointer(argb + 1*4)) * kHashMultiplierHi) - key = key + (*(*uint32_t)(unsafe.Pointer(argb)) * kHashMultiplierLo) - key = (key >> (32 - 18)) + key = *(*uint32_t)(unsafe.Pointer(argb + 1*4)) * kHashMultiplierHi + key = key + *(*uint32_t)(unsafe.Pointer(argb))*kHashMultiplierLo + key = key >> (32 - 18) return key } // Returns the maximum number of hash chain lookups to do for a // given compression quality. Return value in range [8, 86]. func GetMaxItersForQuality(tls *libc.TLS, quality int32) int32 { /* backward_references_enc.c:239:12: */ - return (8 + ((quality * quality) / 128)) + return 8 + quality*quality/128 } func GetWindowSizeForHashChain(tls *libc.TLS, quality int32, xsize int32) int32 { /* backward_references_enc.c:243:12: */ var max_window_size int32 if quality > 75 { - max_window_size = ((int32(1) << 20) - 120) + max_window_size = int32(1)<<20 - 120 } else { if quality > 50 { - max_window_size = (xsize << 8) + max_window_size = xsize << 8 } else { if quality > 25 { - max_window_size = (xsize << 6) + max_window_size = xsize << 6 } else { - max_window_size = (xsize << 4) + max_window_size = xsize << 4 } } } - if max_window_size > ((int32(1) << 20) - 120) { - return ((int32(1) << 20) - 120) + if max_window_size > int32(1)<<20-120 { + return int32(1)<<20 - 120 } return max_window_size } func MaxFindCopyLength(tls *libc.TLS, len int32) int32 { /* backward_references_enc.c:252:24: */ - if len < ((int32(1) << 12) - 1) { + if len < int32(1)<<12-1 { return len } - return ((int32(1) << 12) - 1) + return int32(1)<<12 - 1 } func VP8LHashChainFill(tls *libc.TLS, p uintptr, quality int32, argb uintptr, xsize int32, ysize int32, low_effort int32) int32 { /* backward_references_enc.c:256:5: */ bp := tls.Alloc(8) defer tls.Free(8) - var size int32 = (xsize * ysize) + var size int32 = xsize * ysize var iter_max int32 = GetMaxItersForQuality(tls, quality) var window_size uint32_t = uint32_t(GetWindowSizeForHashChain(tls, quality, xsize)) var pos int32 @@ -24012,64 +23755,64 @@ func VP8LHashChainFill(tls *libc.TLS, p uintptr, quality int32, argb uintptr, xs var chain uintptr = (*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ if size <= 2 { - *(*uint32_t)(unsafe.Pointer((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_)) = libc.AssignPtrUint32(((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ + uintptr((size-1))*4), uint32_t(0)) + *(*uint32_t)(unsafe.Pointer((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_)) = libc.AssignPtrUint32((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_+uintptr(size-1)*4, uint32_t(0)) return 1 } - hash_to_first_index = WebPSafeMalloc(tls, (uint64(int32(1) << 18)), uint64(unsafe.Sizeof(int32_t(0)))) - if hash_to_first_index == (uintptr(0)) { + hash_to_first_index = WebPSafeMalloc(tls, uint64(int32(1)<<18), uint64(unsafe.Sizeof(int32_t(0)))) + if hash_to_first_index == uintptr(0) { return 0 } // Set the int32_t array to -1. - libc.Xmemset(tls, hash_to_first_index, 0xff, ((uint64(int32(1) << 18)) * uint64(unsafe.Sizeof(int32_t(0))))) + libc.Xmemset(tls, hash_to_first_index, 0xff, uint64(int32(1)<<18)*uint64(unsafe.Sizeof(int32_t(0)))) // Fill the chain linking pixels with the same hash. - argb_comp = (libc.Bool32(*(*uint32_t)(unsafe.Pointer(argb)) == *(*uint32_t)(unsafe.Pointer(argb + 1*4)))) - for pos = 0; pos < (size - 2); { + argb_comp = libc.Bool32(*(*uint32_t)(unsafe.Pointer(argb)) == *(*uint32_t)(unsafe.Pointer(argb + 1*4))) + for pos = 0; pos < size-2; { var hash_code uint32_t - var argb_comp_next int32 = (libc.Bool32(*(*uint32_t)(unsafe.Pointer(argb + uintptr((pos+1))*4)) == *(*uint32_t)(unsafe.Pointer(argb + uintptr((pos+2))*4)))) - if (argb_comp != 0) && (argb_comp_next != 0) { + var argb_comp_next int32 = libc.Bool32(*(*uint32_t)(unsafe.Pointer(argb + uintptr(pos+1)*4)) == *(*uint32_t)(unsafe.Pointer(argb + uintptr(pos+2)*4))) + if argb_comp != 0 && argb_comp_next != 0 { // Consecutive pixels with the same color will share the same hash. // We therefore use a different hash: the color and its repetition // length. // var tmp [2]uint32_t at bp, 8 var len uint32_t = uint32_t(1) - *(*uint32_t)(unsafe.Pointer((bp) /* &tmp[0] */)) = *(*uint32_t)(unsafe.Pointer(argb + uintptr(pos)*4)) + *(*uint32_t)(unsafe.Pointer(bp)) = *(*uint32_t)(unsafe.Pointer(argb + uintptr(pos)*4)) // Figure out how far the pixels are the same. // The last pixel has a different 64 bit hash, as its next pixel does // not have the same color, so we just need to get to the last pixel equal // to its follower. - for (((pos + int32(len)) + 2) < size) && (*(*uint32_t)(unsafe.Pointer(argb + uintptr(((uint32_t(pos)+len)+uint32_t(2)))*4)) == *(*uint32_t)(unsafe.Pointer(argb + uintptr(pos)*4))) { + for pos+int32(len)+2 < size && *(*uint32_t)(unsafe.Pointer(argb + uintptr(uint32_t(pos)+len+uint32_t(2))*4)) == *(*uint32_t)(unsafe.Pointer(argb + uintptr(pos)*4)) { len++ } - if len > (uint32_t((int32(1) << 12) - 1)) { + if len > uint32_t(int32(1)<<12-1) { // Skip the pixels that match for distance=1 and length>MAX_LENGTH // because they are linked to their predecessor and we automatically // check that in the main for loop below. Skipping means setting no // predecessor in the chain, hence -1. - libc.Xmemset(tls, (chain + uintptr(pos)*4), 0xff, ((uint64(len - (uint32_t((int32(1) << 12) - 1)))) * uint64(unsafe.Sizeof(int32_t(0))))) - pos = int32(uint32_t(pos) + (len - (uint32_t((int32(1) << 12) - 1)))) - len = (uint32_t((int32(1) << 12) - 1)) + libc.Xmemset(tls, chain+uintptr(pos)*4, 0xff, uint64(len-uint32_t(int32(1)<<12-1))*uint64(unsafe.Sizeof(int32_t(0)))) + pos = int32(uint32_t(pos) + (len - uint32_t(int32(1)<<12-1))) + len = uint32_t(int32(1)<<12 - 1) } // Process the rest of the hash chain. for len != 0 { - *(*uint32_t)(unsafe.Pointer((bp) /* &tmp[0] */ + 1*4)) = libc.PostDecUint32(&len, 1) - hash_code = GetPixPairHash64(tls, (bp) /* &tmp[0] */) + *(*uint32_t)(unsafe.Pointer(bp + 1*4)) = libc.PostDecUint32(&len, 1) + hash_code = GetPixPairHash64(tls, bp) *(*int32_t)(unsafe.Pointer(chain + uintptr(pos)*4)) = *(*int32_t)(unsafe.Pointer(hash_to_first_index + uintptr(hash_code)*4)) *(*int32_t)(unsafe.Pointer(hash_to_first_index + uintptr(hash_code)*4)) = libc.PostIncInt32(&pos, 1) } argb_comp = 0 } else { // Just move one pixel forward. - hash_code = GetPixPairHash64(tls, (argb + uintptr(pos)*4)) + hash_code = GetPixPairHash64(tls, argb+uintptr(pos)*4) *(*int32_t)(unsafe.Pointer(chain + uintptr(pos)*4)) = *(*int32_t)(unsafe.Pointer(hash_to_first_index + uintptr(hash_code)*4)) *(*int32_t)(unsafe.Pointer(hash_to_first_index + uintptr(hash_code)*4)) = libc.PostIncInt32(&pos, 1) argb_comp = argb_comp_next } } // Process the penultimate pixel. - *(*int32_t)(unsafe.Pointer(chain + uintptr(pos)*4)) = *(*int32_t)(unsafe.Pointer(hash_to_first_index + uintptr(GetPixPairHash64(tls, (argb+uintptr(pos)*4)))*4)) + *(*int32_t)(unsafe.Pointer(chain + uintptr(pos)*4)) = *(*int32_t)(unsafe.Pointer(hash_to_first_index + uintptr(GetPixPairHash64(tls, argb+uintptr(pos)*4))*4)) WebPSafeFree(tls, hash_to_first_index) @@ -24078,17 +23821,17 @@ func VP8LHashChainFill(tls *libc.TLS, p uintptr, quality int32, argb uintptr, xs // (hence a best length of 0) and the left-most pixel nothing to the left // (hence an offset of 0). - *(*uint32_t)(unsafe.Pointer((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_)) = libc.AssignPtrUint32(((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ + uintptr((size-1))*4), uint32_t(0)) - for base_position = (uint32_t(size - 2)); base_position > uint32_t(0); { - var max_len int32 = MaxFindCopyLength(tls, (int32((uint32_t(size - 1)) - base_position))) - var argb_start uintptr = (argb + uintptr(base_position)*4) + *(*uint32_t)(unsafe.Pointer((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_)) = libc.AssignPtrUint32((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_+uintptr(size-1)*4, uint32_t(0)) + for base_position = uint32_t(size - 2); base_position > uint32_t(0); { + var max_len int32 = MaxFindCopyLength(tls, int32(uint32_t(size-1)-base_position)) + var argb_start uintptr = argb + uintptr(base_position)*4 var iter int32 = iter_max var best_length int32 = 0 var best_distance uint32_t = uint32_t(0) var best_argb uint32_t var min_pos int32 if base_position > window_size { - min_pos = (int32(base_position - window_size)) + min_pos = int32(base_position - window_size) } else { min_pos = 0 } @@ -24105,7 +23848,7 @@ func VP8LHashChainFill(tls *libc.TLS, p uintptr, quality int32, argb uintptr, xs var curr_length int32 // Heuristic: use the comparison with the above line as an initialization. if base_position >= uint32_t(xsize) { - curr_length = FindMatchLength(tls, (argb_start - uintptr(xsize)*4), argb_start, + curr_length = FindMatchLength(tls, argb_start-uintptr(xsize)*4, argb_start, best_length, max_len) if curr_length > best_length { best_length = curr_length @@ -24114,32 +23857,32 @@ func VP8LHashChainFill(tls *libc.TLS, p uintptr, quality int32, argb uintptr, xs iter-- } // Heuristic: compare to the previous pixel. - curr_length = FindMatchLength(tls, (argb_start - uintptr(1)*4), argb_start, best_length, max_len) + curr_length = FindMatchLength(tls, argb_start-uintptr(1)*4, argb_start, best_length, max_len) if curr_length > best_length { best_length = curr_length best_distance = uint32_t(1) } iter-- // Skip the for loop if we already have the maximum. - if best_length == ((int32(1) << 12) - 1) { - pos = (min_pos - 1) + if best_length == int32(1)<<12-1 { + pos = min_pos - 1 } } best_argb = *(*uint32_t)(unsafe.Pointer(argb_start + uintptr(best_length)*4)) - for ; (pos >= min_pos) && (libc.PreDecInt32(&iter, 1) != 0); pos = *(*int32_t)(unsafe.Pointer(chain + uintptr(pos)*4)) { + for ; pos >= min_pos && libc.PreDecInt32(&iter, 1) != 0; pos = *(*int32_t)(unsafe.Pointer(chain + uintptr(pos)*4)) { var curr_length int32 - if *(*uint32_t)(unsafe.Pointer(argb + uintptr((pos+best_length))*4)) != best_argb { + if *(*uint32_t)(unsafe.Pointer(argb + uintptr(pos+best_length)*4)) != best_argb { continue } curr_length = (*struct { f func(*libc.TLS, uintptr, uintptr, int32) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8LVectorMismatch})).f(tls, (argb + uintptr(pos)*4), argb_start, max_len) + })(unsafe.Pointer(&struct{ uintptr }{VP8LVectorMismatch})).f(tls, argb+uintptr(pos)*4, argb_start, max_len) if best_length < curr_length { best_length = curr_length - best_distance = (base_position - uint32_t(pos)) + best_distance = base_position - uint32_t(pos) best_argb = *(*uint32_t)(unsafe.Pointer(argb_start + uintptr(best_length)*4)) // Stop if we have reached a good enough length. if best_length >= length_max { @@ -24152,24 +23895,24 @@ func VP8LHashChainFill(tls *libc.TLS, p uintptr, quality int32, argb uintptr, xs max_base_position = base_position for 1 != 0 { - *(*uint32_t)(unsafe.Pointer((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ + uintptr(base_position)*4)) = ((best_distance << 12) | uint32_t(best_length)) + *(*uint32_t)(unsafe.Pointer((*VP8LHashChain)(unsafe.Pointer(p)).offset_length_ + uintptr(base_position)*4)) = best_distance<<12 | uint32_t(best_length) base_position-- // Stop if we don't have a match or if we are out of bounds. - if (best_distance == uint32_t(0)) || (base_position == uint32_t(0)) { + if best_distance == uint32_t(0) || base_position == uint32_t(0) { break } // Stop if we cannot extend the matching intervals to the left. - if (base_position < best_distance) || (*(*uint32_t)(unsafe.Pointer(argb + uintptr((base_position-best_distance))*4)) != *(*uint32_t)(unsafe.Pointer(argb + uintptr(base_position)*4))) { + if base_position < best_distance || *(*uint32_t)(unsafe.Pointer(argb + uintptr(base_position-best_distance)*4)) != *(*uint32_t)(unsafe.Pointer(argb + uintptr(base_position)*4)) { break } // Stop if we are matching at its limit because there could be a closer // matching interval with the same maximum length. Then again, if the // matching interval is as close as possible (best_distance == 1), we will // never find anything better so let's continue. - if ((best_length == ((int32(1) << 12) - 1)) && (best_distance != uint32_t(1))) && ((base_position + (uint32_t((int32(1) << 12) - 1))) < max_base_position) { + if best_length == int32(1)<<12-1 && best_distance != uint32_t(1) && base_position+uint32_t(int32(1)<<12-1) < max_base_position { break } - if best_length < ((int32(1) << 12) - 1) { + if best_length < int32(1)<<12-1 { best_length++ max_base_position = base_position } @@ -24198,49 +23941,49 @@ func BackwardReferencesRle(tls *libc.TLS, xsize int32, ysize int32, argb uintptr bp := tls.Alloc(16) defer tls.Free(16) - var pix_count int32 = (xsize * ysize) + var pix_count int32 = xsize * ysize var i int32 var k int32 - var use_color_cache int32 = (libc.Bool32(cache_bits > 0)) + var use_color_cache int32 = libc.Bool32(cache_bits > 0) // var hashers VP8LColorCache at bp, 16 - if (use_color_cache != 0) && !(VP8LColorCacheInit(tls, (bp) /* &hashers */, cache_bits) != 0) { + if use_color_cache != 0 && !(VP8LColorCacheInit(tls, bp, cache_bits) != 0) { return 0 } VP8LClearBackwardRefs(tls, refs) // Add first pixel as literal. - AddSingleLiteral(tls, *(*uint32_t)(unsafe.Pointer(argb)), use_color_cache, (bp) /* &hashers */, refs) + AddSingleLiteral(tls, *(*uint32_t)(unsafe.Pointer(argb)), use_color_cache, bp, refs) i = 1 for i < pix_count { - var max_len int32 = MaxFindCopyLength(tls, (pix_count - i)) - var rle_len int32 = FindMatchLength(tls, (argb + uintptr(i)*4), ((argb + uintptr(i)*4) - uintptr(1)*4), 0, max_len) + var max_len int32 = MaxFindCopyLength(tls, pix_count-i) + var rle_len int32 = FindMatchLength(tls, argb+uintptr(i)*4, argb+uintptr(i)*4-uintptr(1)*4, 0, max_len) var prev_row_len int32 if i < xsize { prev_row_len = 0 } else { - prev_row_len = FindMatchLength(tls, (argb + uintptr(i)*4), ((argb + uintptr(i)*4) - uintptr(xsize)*4), 0, max_len) + prev_row_len = FindMatchLength(tls, argb+uintptr(i)*4, argb+uintptr(i)*4-uintptr(xsize)*4, 0, max_len) } - if (rle_len >= prev_row_len) && (rle_len >= 4) { + if rle_len >= prev_row_len && rle_len >= 4 { VP8LBackwardRefsCursorAdd(tls, refs, PixOrCopyCreateCopy(tls, uint32(1), uint16(rle_len))) // We don't need to update the color cache here since it is always the // same pixel being copied, and that does not change the color cache // state. - i = i + (rle_len) + i = i + rle_len } else if prev_row_len >= 4 { VP8LBackwardRefsCursorAdd(tls, refs, PixOrCopyCreateCopy(tls, uint32(xsize), uint16(prev_row_len))) if use_color_cache != 0 { for k = 0; k < prev_row_len; k++ { - VP8LColorCacheInsert(tls, (bp) /* &hashers */, *(*uint32_t)(unsafe.Pointer(argb + uintptr((i+k))*4))) + VP8LColorCacheInsert(tls, bp, *(*uint32_t)(unsafe.Pointer(argb + uintptr(i+k)*4))) } } - i = i + (prev_row_len) + i = i + prev_row_len } else { - AddSingleLiteral(tls, *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4)), use_color_cache, (bp) /* &hashers */, refs) + AddSingleLiteral(tls, *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4)), use_color_cache, bp, refs) i++ } } if use_color_cache != 0 { - VP8LColorCacheClear(tls, (bp) /* &hashers */) + VP8LColorCacheClear(tls, bp) } return libc.BoolInt32(!((*VP8LBackwardRefs)(unsafe.Pointer(refs)).error_ != 0)) } @@ -24271,14 +24014,14 @@ func BackwardReferencesLz77(tls *libc.TLS, xsize int32, ysize int32, argb uintpt i_last_check = -1 ok = 0 cc_init = 0 - use_color_cache = (libc.Bool32(cache_bits > 0)) - pix_count = (xsize * ysize) + use_color_cache = libc.Bool32(cache_bits > 0) + pix_count = xsize * ysize if !(use_color_cache != 0) { goto __1 } - cc_init = VP8LColorCacheInit(tls, (bp) /* &hashers */, cache_bits) - if !(!(cc_init != 0)) { + cc_init = VP8LColorCacheInit(tls, bp, cache_bits) + if !!(cc_init != 0) { goto __2 } goto Error @@ -24295,16 +24038,16 @@ __3: // Alternative#1: Code the pixels starting at 'i' using backward reference. *(*int32)(unsafe.Pointer(bp + 16 /* offset */)) = 0 *(*int32)(unsafe.Pointer(bp + 20 /* len */)) = 0 - VP8LHashChainFindCopy(tls, hash_chain, i, (bp + 16) /* &offset */, (bp + 20) /* &len */) - if !(*(*int32)(unsafe.Pointer(bp + 20 /* len */)) >= 4) { + VP8LHashChainFindCopy(tls, hash_chain, i, bp+16, bp+20) + if !(*(*int32)(unsafe.Pointer(bp + 20)) >= 4) { goto __6 } len_ini = *(*int32)(unsafe.Pointer(bp + 20 /* len */)) max_reach = 0 - if (i + len_ini) >= pix_count { - j_max = (pix_count - 1) + if i+len_ini >= pix_count { + j_max = pix_count - 1 } else { - j_max = (i + len_ini) + j_max = i + len_ini } // Only start from what we have not checked already. if i > i_last_check { @@ -24318,23 +24061,23 @@ __3: // [i,i+len) + [i+len, length of best match at i+len) // while we check if we can use: // [i,j) (where j<=i+len) + [j, length of best match at j) - j = (i_last_check + 1) + j = i_last_check + 1 __8: if !(j <= j_max) { goto __10 } len_j = VP8LHashChainFindLength(tls, hash_chain, j) reach = - (j + (func() int32 { + j + func() int32 { if len_j >= 4 { return len_j } return 1 - }())) // 1 for single literal. + }() // 1 for single literal. if !(reach > max_reach) { goto __11 } - *(*int32)(unsafe.Pointer(bp + 20 /* len */)) = (j - i) + *(*int32)(unsafe.Pointer(bp + 20 /* len */)) = j - i max_reach = reach if !(max_reach >= pix_count) { goto __12 @@ -24358,10 +24101,10 @@ __7: ; // Go with literal or backward reference. - if !(*(*int32)(unsafe.Pointer(bp + 20 /* len */)) == 1) { + if !(*(*int32)(unsafe.Pointer(bp + 20)) == 1) { goto __13 } - AddSingleLiteral(tls, *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4)), use_color_cache, (bp) /* &hashers */, refs) + AddSingleLiteral(tls, *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4)), use_color_cache, bp, refs) goto __14 __13: VP8LBackwardRefsCursorAdd(tls, refs, PixOrCopyCreateCopy(tls, uint32(*(*int32)(unsafe.Pointer(bp + 16 /* offset */))), uint16(*(*int32)(unsafe.Pointer(bp + 20 /* len */))))) @@ -24370,10 +24113,10 @@ __13: } j = i __16: - if !(j < (i + *(*int32)(unsafe.Pointer(bp + 20 /* len */)))) { + if !(j < i+*(*int32)(unsafe.Pointer(bp + 20))) { goto __18 } - VP8LColorCacheInsert(tls, (bp) /* &hashers */, *(*uint32_t)(unsafe.Pointer(argb + uintptr(j)*4))) + VP8LColorCacheInsert(tls, bp, *(*uint32_t)(unsafe.Pointer(argb + uintptr(j)*4))) goto __17 __17: j++ @@ -24385,7 +24128,7 @@ __15: ; __14: ; - i = i + (*(*int32)(unsafe.Pointer(bp + 20 /* len */))) + i = i + *(*int32)(unsafe.Pointer(bp + 20)) goto __4 __4: ; @@ -24399,7 +24142,7 @@ Error: if !(cc_init != 0) { goto __19 } - VP8LColorCacheClear(tls, (bp) /* &hashers */) + VP8LColorCacheClear(tls, bp) __19: ; return ok @@ -24413,31 +24156,31 @@ func BackwardReferencesLz77Box(tls *libc.TLS, xsize int32, ysize int32, argb uin defer tls.Free(256) var i int32 - var pix_count int32 = (xsize * ysize) + var pix_count int32 = xsize * ysize var counts uintptr *(*[32]int32)(unsafe.Pointer(bp /* window_offsets */)) = [32]int32{0: 0} *(*[32]int32)(unsafe.Pointer(bp + 128 /* window_offsets_new */)) = [32]int32{0: 0} var window_offsets_size int32 = 0 var window_offsets_new_size int32 = 0 - var counts_ini uintptr = WebPSafeMalloc(tls, (uint64(xsize * ysize)), uint64(unsafe.Sizeof(uint16_t(0)))) + var counts_ini uintptr = WebPSafeMalloc(tls, uint64(xsize*ysize), uint64(unsafe.Sizeof(uint16_t(0)))) var best_offset_prev int32 = -1 var best_length_prev int32 = -1 - if counts_ini == (uintptr(0)) { + if counts_ini == uintptr(0) { return 0 } // counts[i] counts how many times a pixel is repeated starting at position i. - i = (pix_count - 2) - counts = (counts_ini + uintptr(i)*2) + i = pix_count - 2 + counts = counts_ini + uintptr(i)*2 *(*uint16_t)(unsafe.Pointer(counts + 1*2)) = uint16_t(1) __1: if !(i >= 0) { goto __3 } { - if *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4)) == *(*uint32_t)(unsafe.Pointer(argb + uintptr((i+1))*4)) { + if *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4)) == *(*uint32_t)(unsafe.Pointer(argb + uintptr(i+1)*4)) { // Max out the counts to MAX_LENGTH. - *(*uint16_t)(unsafe.Pointer(counts)) = (uint16_t(int32(*(*uint16_t)(unsafe.Pointer(counts + 1*2))) + (libc.Bool32(int32(*(*uint16_t)(unsafe.Pointer(counts + 1*2))) != ((int32(1) << 12) - 1))))) + *(*uint16_t)(unsafe.Pointer(counts)) = uint16_t(int32(*(*uint16_t)(unsafe.Pointer(counts + 1*2))) + libc.Bool32(int32(*(*uint16_t)(unsafe.Pointer(counts + 1*2))) != int32(1)<<12-1)) } else { *(*uint16_t)(unsafe.Pointer(counts)) = uint16_t(1) } @@ -24459,36 +24202,36 @@ __3: var y int32 for y = 0; y <= 6; y++ { for x = -6; x <= 6; x++ { - var offset int32 = ((y * xsize) + x) + var offset int32 = y*xsize + x var plane_code int32 // Ignore offsets that bring us after the pixel. if offset <= 0 { continue } - plane_code = (VP8LDistanceToPlaneCode(tls, xsize, offset) - 1) + plane_code = VP8LDistanceToPlaneCode(tls, xsize, offset) - 1 if plane_code >= 32 { continue } - *(*int32)(unsafe.Pointer((bp) /* &window_offsets[0] */ + uintptr(plane_code)*4)) = offset + *(*int32)(unsafe.Pointer(bp + uintptr(plane_code)*4)) = offset } } // For narrow images, not all plane codes are reached, so remove those. for i = 0; i < 32; i++ { - if *(*int32)(unsafe.Pointer((bp) /* &window_offsets[0] */ + uintptr(i)*4)) == 0 { + if *(*int32)(unsafe.Pointer(bp + uintptr(i)*4)) == 0 { continue } - *(*int32)(unsafe.Pointer((bp) /* &window_offsets[0] */ + uintptr(libc.PostIncInt32(&window_offsets_size, 1))*4)) = *(*int32)(unsafe.Pointer((bp) /* &window_offsets[0] */ + uintptr(i)*4)) + *(*int32)(unsafe.Pointer(bp + uintptr(libc.PostIncInt32(&window_offsets_size, 1))*4)) = *(*int32)(unsafe.Pointer(bp + uintptr(i)*4)) } // Given a pixel P, find the offsets that reach pixels unreachable from P-1 // with any of the offsets in window_offsets[]. for i = 0; i < window_offsets_size; i++ { var j int32 var is_reachable int32 = 0 - for j = 0; (j < window_offsets_size) && !(is_reachable != 0); j++ { - is_reachable = is_reachable | (libc.Bool32(*(*int32)(unsafe.Pointer((bp) /* &window_offsets[0] */ + uintptr(i)*4)) == (*(*int32)(unsafe.Pointer((bp) /* &window_offsets[0] */ + uintptr(j)*4)) + 1))) + for j = 0; j < window_offsets_size && !(is_reachable != 0); j++ { + is_reachable = is_reachable | libc.Bool32(*(*int32)(unsafe.Pointer(bp + uintptr(i)*4)) == *(*int32)(unsafe.Pointer(bp + uintptr(j)*4))+1) } if !(is_reachable != 0) { - *(*int32)(unsafe.Pointer((bp + 128) /* &window_offsets_new[0] */ + uintptr(window_offsets_new_size)*4)) = *(*int32)(unsafe.Pointer((bp) /* &window_offsets[0] */ + uintptr(i)*4)) + *(*int32)(unsafe.Pointer(bp + 128 + uintptr(window_offsets_new_size)*4)) = *(*int32)(unsafe.Pointer(bp + uintptr(i)*4)) window_offsets_new_size++ } } @@ -24502,12 +24245,12 @@ __3: var best_offset int32 var do_compute int32 = 1 - if best_length >= ((int32(1) << 12) - 1) { + if best_length >= int32(1)<<12-1 { // Do not recompute the best match if we already have a maximal one in the // window. best_offset = VP8LHashChainFindOffset(tls, hash_chain_best, i) for ind = 0; ind < window_offsets_size; ind++ { - if best_offset == *(*int32)(unsafe.Pointer((bp) /* &window_offsets[0] */ + uintptr(ind)*4)) { + if best_offset == *(*int32)(unsafe.Pointer(bp + uintptr(ind)*4)) { do_compute = 0 break } @@ -24517,7 +24260,7 @@ __3: // Figure out if we should use the offset/length from the previous pixel // as an initial guess and therefore only inspect the offsets in // window_offsets_new[]. - var use_prev int32 = (libc.Bool32((best_length_prev > 1) && (best_length_prev < ((int32(1) << 12) - 1)))) + var use_prev int32 = libc.Bool32(best_length_prev > 1 && best_length_prev < int32(1)<<12-1) var num_ind int32 if use_prev != 0 { num_ind = window_offsets_new_size @@ -24525,7 +24268,7 @@ __3: num_ind = window_offsets_size } if use_prev != 0 { - best_length = (best_length_prev - 1) + best_length = best_length_prev - 1 } else { best_length = 0 } @@ -24540,40 +24283,40 @@ __3: var j int32 = i var j_offset int32 if use_prev != 0 { - j_offset = (i - *(*int32)(unsafe.Pointer((bp + 128) /* &window_offsets_new[0] */ + uintptr(ind)*4))) + j_offset = i - *(*int32)(unsafe.Pointer(bp + 128 + uintptr(ind)*4)) } else { - j_offset = (i - *(*int32)(unsafe.Pointer((bp) /* &window_offsets[0] */ + uintptr(ind)*4))) + j_offset = i - *(*int32)(unsafe.Pointer(bp + uintptr(ind)*4)) } - if (j_offset < 0) || (*(*uint32_t)(unsafe.Pointer(argb + uintptr(j_offset)*4)) != *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4))) { + if j_offset < 0 || *(*uint32_t)(unsafe.Pointer(argb + uintptr(j_offset)*4)) != *(*uint32_t)(unsafe.Pointer(argb + uintptr(i)*4)) { continue } // The longest match is the sum of how many times each pixel is // repeated. - for ok := true; ok; ok = (((curr_length <= ((int32(1) << 12) - 1)) && (j < pix_count)) && (*(*uint32_t)(unsafe.Pointer(argb + uintptr(j_offset)*4)) == *(*uint32_t)(unsafe.Pointer(argb + uintptr(j)*4)))) { + for __ccgo := true; __ccgo; __ccgo = curr_length <= int32(1)<<12-1 && j < pix_count && *(*uint32_t)(unsafe.Pointer(argb + uintptr(j_offset)*4)) == *(*uint32_t)(unsafe.Pointer(argb + uintptr(j)*4)) { var counts_j_offset int32 = int32(*(*uint16_t)(unsafe.Pointer(counts_ini + uintptr(j_offset)*2))) var counts_j int32 = int32(*(*uint16_t)(unsafe.Pointer(counts_ini + uintptr(j)*2))) if counts_j_offset != counts_j { - curr_length = curr_length + (func() int32 { + curr_length = curr_length + func() int32 { if counts_j_offset < counts_j { return counts_j_offset } return counts_j - }()) + }() break } // The same color is repeated counts_pos times at j_offset and j. - curr_length = curr_length + (counts_j_offset) - j_offset = j_offset + (counts_j_offset) - j = j + (counts_j_offset) + curr_length = curr_length + counts_j_offset + j_offset = j_offset + counts_j_offset + j = j + counts_j_offset } if best_length < curr_length { if use_prev != 0 { - best_offset = *(*int32)(unsafe.Pointer((bp + 128) /* &window_offsets_new[0] */ + uintptr(ind)*4)) + best_offset = *(*int32)(unsafe.Pointer(bp + 128 + uintptr(ind)*4)) } else { - best_offset = *(*int32)(unsafe.Pointer((bp) /* &window_offsets[0] */ + uintptr(ind)*4)) + best_offset = *(*int32)(unsafe.Pointer(bp + uintptr(ind)*4)) } - if curr_length >= ((int32(1) << 12) - 1) { - best_length = ((int32(1) << 12) - 1) + if curr_length >= int32(1)<<12-1 { + best_length = int32(1)<<12 - 1 break } else { best_length = curr_length @@ -24587,7 +24330,7 @@ __3: best_offset_prev = 0 best_length_prev = 0 } else { - *(*uint32_t)(unsafe.Pointer((*VP8LHashChain)(unsafe.Pointer(hash_chain)).offset_length_ + uintptr(i)*4)) = ((uint32_t(best_offset << 12)) | uint32_t(best_length)) + *(*uint32_t)(unsafe.Pointer((*VP8LHashChain)(unsafe.Pointer(hash_chain)).offset_length_ + uintptr(i)*4)) = uint32_t(best_offset<<12) | uint32_t(best_length) best_offset_prev = best_offset best_length_prev = best_length } @@ -24606,13 +24349,13 @@ func BackwardReferences2DLocality(tls *libc.TLS, xsize int32, refs uintptr) { /* defer tls.Free(24) *(*VP8LRefsCursor)(unsafe.Pointer(bp /* c */)) = VP8LRefsCursorInit(tls, refs) - for VP8LRefsCursorOk(tls, (bp) /* &c */) != 0 { - if PixOrCopyIsCopy(tls, (*VP8LRefsCursor)(unsafe.Pointer(bp /* &c */)).cur_pos) != 0 { + for VP8LRefsCursorOk(tls, bp) != 0 { + if PixOrCopyIsCopy(tls, (*VP8LRefsCursor)(unsafe.Pointer(bp)).cur_pos) != 0 { var dist int32 = int32((*PixOrCopy)(unsafe.Pointer((*VP8LRefsCursor)(unsafe.Pointer(bp /* &c */)).cur_pos)).argb_or_distance) var transformed_dist int32 = VP8LDistanceToPlaneCode(tls, xsize, dist) (*PixOrCopy)(unsafe.Pointer((*VP8LRefsCursor)(unsafe.Pointer(bp /* &c */)).cur_pos)).argb_or_distance = uint32_t(transformed_dist) } - VP8LRefsCursorNext(tls, (bp) /* &c */) + VP8LRefsCursorNext(tls, bp) } } @@ -24666,10 +24409,10 @@ func CalculateBestCacheSize(tls *libc.TLS, argb uintptr, quality int32, refs uin } else { cache_bits_max = *(*int32)(unsafe.Pointer(best_cache_bits)) } - entropy_min = (1e30) + entropy_min = 1e30 *(*[11]int32)(unsafe.Pointer(bp + 88 /* cc_init */)) = [11]int32{0: 0} *(*VP8LRefsCursor)(unsafe.Pointer(bp + 312 /* c */)) = VP8LRefsCursorInit(tls, refs) - *(*[11]uintptr)(unsafe.Pointer(bp /* histos */)) = [11]uintptr{0: (uintptr(0))} + *(*[11]uintptr)(unsafe.Pointer(bp /* histos */)) = [11]uintptr{0: uintptr(0)} ok = 0 if !(cache_bits_max == 0) { @@ -24687,22 +24430,22 @@ __2: if !(i <= cache_bits_max) { goto __4 } - *(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */ + uintptr(i)*8)) = VP8LAllocateHistogram(tls, i) - if !(*(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */ + uintptr(i)*8)) == (uintptr(0))) { + *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = VP8LAllocateHistogram(tls, i) + if !(*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) == uintptr(0)) { goto __5 } goto Error __5: ; - VP8LHistogramInit(tls, *(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */ + uintptr(i)*8)), i /*init_arrays=*/, 1) + VP8LHistogramInit(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)), i /*init_arrays=*/, 1) if !(i == 0) { goto __6 } goto __3 __6: ; - *(*int32)(unsafe.Pointer((bp + 88) /* &cc_init[0] */ + uintptr(i)*4)) = VP8LColorCacheInit(tls, ((bp + 136) /* &hashers */ + uintptr(i)*16), i) - if !(!(*(*int32)(unsafe.Pointer((bp + 88) /* &cc_init[0] */ + uintptr(i)*4)) != 0)) { + *(*int32)(unsafe.Pointer(bp + 88 + uintptr(i)*4)) = VP8LColorCacheInit(tls, bp+136+uintptr(i)*16, i) + if !!(*(*int32)(unsafe.Pointer(bp + 88 + uintptr(i)*4)) != 0) { goto __7 } goto Error @@ -24720,7 +24463,7 @@ __4: // brute-force way as the function (entropy w.r.t cache_bits) can be // anything in practice. __8: - if !(VP8LRefsCursorOk(tls, (bp+312) /* &c */) != 0) { + if !(VP8LRefsCursorOk(tls, bp+312) != 0) { goto __9 } v = (*VP8LRefsCursor)(unsafe.Pointer(bp + 312 /* &c */)).cur_pos @@ -24728,34 +24471,34 @@ __8: goto __10 } pix = *(*uint32_t)(unsafe.Pointer(libc.PostIncUintptr(&argb, 4))) - a = ((pix >> 24) & uint32_t(0xff)) - r = ((pix >> 16) & uint32_t(0xff)) - g = ((pix >> 8) & uint32_t(0xff)) - b = ((pix >> 0) & uint32_t(0xff)) + a = pix >> 24 & uint32_t(0xff) + r = pix >> 16 & uint32_t(0xff) + g = pix >> 8 & uint32_t(0xff) + b = pix >> 0 & uint32_t(0xff) // The keys of the caches can be derived from the longest one. - key = VP8LHashPix(tls, pix, (32 - cache_bits_max)) + key = VP8LHashPix(tls, pix, 32-cache_bits_max) // Do not use the color cache for cache_bits = 0. - *(*uint32_t)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */)) + 1032 /* &.blue_ */) + uintptr(b)*4))++ - *(*uint32_t)(unsafe.Pointer((*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */)))).literal_ + uintptr(g)*4))++ - *(*uint32_t)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */)) + 8 /* &.red_ */) + uintptr(r)*4))++ - *(*uint32_t)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */)) + 2056 /* &.alpha_ */) + uintptr(a)*4))++ + *(*uint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 1032 + uintptr(b)*4))++ + *(*uint32_t)(unsafe.Pointer((*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).literal_ + uintptr(g)*4))++ + *(*uint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 8 + uintptr(r)*4))++ + *(*uint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 2056 + uintptr(a)*4))++ // Deal with cache_bits > 0. i = cache_bits_max __12: if !(i >= 1) { goto __14 } - if !(VP8LColorCacheLookup(tls, ((bp+136) /* &hashers */ +uintptr(i)*16), uint32(key)) == pix) { + if !(VP8LColorCacheLookup(tls, bp+136+uintptr(i)*16, uint32(key)) == pix) { goto __15 } - *(*uint32_t)(unsafe.Pointer((*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */ + uintptr(i)*8)))).literal_ + uintptr(((256+24)+key))*4))++ + *(*uint32_t)(unsafe.Pointer((*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)))).literal_ + uintptr(256+24+key)*4))++ goto __16 __15: - VP8LColorCacheSet(tls, ((bp + 136) /* &hashers */ + uintptr(i)*16), uint32(key), pix) - *(*uint32_t)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */ + uintptr(i)*8)) + 1032 /* &.blue_ */) + uintptr(b)*4))++ - *(*uint32_t)(unsafe.Pointer((*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */ + uintptr(i)*8)))).literal_ + uintptr(g)*4))++ - *(*uint32_t)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */ + uintptr(i)*8)) + 8 /* &.red_ */) + uintptr(r)*4))++ - *(*uint32_t)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */ + uintptr(i)*8)) + 2056 /* &.alpha_ */) + uintptr(a)*4))++ + VP8LColorCacheSet(tls, bp+136+uintptr(i)*16, uint32(key), pix) + *(*uint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) + 1032 + uintptr(b)*4))++ + *(*uint32_t)(unsafe.Pointer((*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)))).literal_ + uintptr(g)*4))++ + *(*uint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) + 8 + uintptr(r)*4))++ + *(*uint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) + 2056 + uintptr(a)*4))++ __16: ; goto __13 @@ -24774,14 +24517,14 @@ __10: // histogram contributions, we can ignore them, except for the length // prefix that is part of the literal_ histogram. len = int32(PixOrCopyLength(tls, v)) - argb_prev = (*(*uint32_t)(unsafe.Pointer(argb)) ^ 0xffffffff) - VP8LPrefixEncode(tls, len, (bp + 336) /* &code */, (bp + 340) /* &extra_bits */, (bp + 344) /* &extra_bits_value */) + argb_prev = *(*uint32_t)(unsafe.Pointer(argb)) ^ 0xffffffff + VP8LPrefixEncode(tls, len, bp+336, bp+340, bp+344) i = 0 __17: if !(i <= cache_bits_max) { goto __19 } - *(*uint32_t)(unsafe.Pointer((*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */ + uintptr(i)*8)))).literal_ + uintptr((256+*(*int32)(unsafe.Pointer(bp + 336 /* code */))))*4))++ + *(*uint32_t)(unsafe.Pointer((*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)))).literal_ + uintptr(256+*(*int32)(unsafe.Pointer(bp + 336)))*4))++ goto __18 __18: i++ @@ -24795,13 +24538,13 @@ __20: goto __23 } // Efficiency: insert only if the color changes. - key1 = VP8LHashPix(tls, *(*uint32_t)(unsafe.Pointer(argb)), (32 - cache_bits_max)) + key1 = VP8LHashPix(tls, *(*uint32_t)(unsafe.Pointer(argb)), 32-cache_bits_max) i = cache_bits_max __24: if !(i >= 1) { goto __26 } - *(*uint32_t)(unsafe.Pointer((*VP8LColorCache)(unsafe.Pointer((bp+136) /* &hashers */ +uintptr(i)*16)).colors_ + uintptr(key1)*4)) = *(*uint32_t)(unsafe.Pointer(argb)) + *(*uint32_t)(unsafe.Pointer((*VP8LColorCache)(unsafe.Pointer(bp+136+uintptr(i)*16)).colors_ + uintptr(key1)*4)) = *(*uint32_t)(unsafe.Pointer(argb)) goto __25 __25: i-- @@ -24824,7 +24567,7 @@ __22: ; __11: ; - VP8LRefsCursorNext(tls, (bp + 312) /* &c */) + VP8LRefsCursorNext(tls, bp+312) goto __8 __9: ; @@ -24834,8 +24577,8 @@ __27: if !(i <= cache_bits_max) { goto __29 } - entropy = VP8LHistogramEstimateBits(tls, *(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */ + uintptr(i)*8))) - if !((i == 0) || (entropy < entropy_min)) { + entropy = VP8LHistogramEstimateBits(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8))) + if !(i == 0 || entropy < entropy_min) { goto __30 } entropy_min = entropy @@ -24856,13 +24599,13 @@ __31: if !(i <= cache_bits_max) { goto __33 } - if !(*(*int32)(unsafe.Pointer((bp + 88) /* &cc_init[0] */ + uintptr(i)*4)) != 0) { + if !(*(*int32)(unsafe.Pointer(bp + 88 + uintptr(i)*4)) != 0) { goto __34 } - VP8LColorCacheClear(tls, ((bp + 136) /* &hashers */ + uintptr(i)*16)) + VP8LColorCacheClear(tls, bp+136+uintptr(i)*16) __34: ; - VP8LFreeHistogram(tls, *(*uintptr)(unsafe.Pointer((bp) /* &histos[0] */ + uintptr(i)*8))) + VP8LFreeHistogram(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8))) goto __32 __32: i++ @@ -24882,20 +24625,20 @@ func BackwardRefsWithLocalCache(tls *libc.TLS, argb uintptr, cache_bits int32, r // var hashers VP8LColorCache at bp, 16 *(*VP8LRefsCursor)(unsafe.Pointer(bp + 16 /* c */)) = VP8LRefsCursorInit(tls, refs) - if !(VP8LColorCacheInit(tls, (bp) /* &hashers */, cache_bits) != 0) { + if !(VP8LColorCacheInit(tls, bp, cache_bits) != 0) { return 0 } - for VP8LRefsCursorOk(tls, (bp+16) /* &c */) != 0 { + for VP8LRefsCursorOk(tls, bp+16) != 0 { var v uintptr = (*VP8LRefsCursor)(unsafe.Pointer(bp + 16 /* &c */)).cur_pos if PixOrCopyIsLiteral(tls, v) != 0 { var argb_literal uint32_t = (*PixOrCopy)(unsafe.Pointer(v)).argb_or_distance - var ix int32 = VP8LColorCacheContains(tls, (bp) /* &hashers */, argb_literal) + var ix int32 = VP8LColorCacheContains(tls, bp, argb_literal) if ix >= 0 { // hashers contains argb_literal *(*PixOrCopy)(unsafe.Pointer(v)) = PixOrCopyCreateCacheIdx(tls, ix) } else { - VP8LColorCacheInsert(tls, (bp) /* &hashers */, argb_literal) + VP8LColorCacheInsert(tls, bp, argb_literal) } pixel_index++ } else { @@ -24903,19 +24646,19 @@ func BackwardRefsWithLocalCache(tls *libc.TLS, argb uintptr, cache_bits int32, r var k int32 for k = 0; k < int32((*PixOrCopy)(unsafe.Pointer(v)).len); k++ { - VP8LColorCacheInsert(tls, (bp) /* &hashers */, *(*uint32_t)(unsafe.Pointer(argb + uintptr(libc.PostIncInt32(&pixel_index, 1))*4))) + VP8LColorCacheInsert(tls, bp, *(*uint32_t)(unsafe.Pointer(argb + uintptr(libc.PostIncInt32(&pixel_index, 1))*4))) } } - VP8LRefsCursorNext(tls, (bp + 16) /* &c */) + VP8LRefsCursorNext(tls, bp+16) } - VP8LColorCacheClear(tls, (bp) /* &hashers */) + VP8LColorCacheClear(tls, bp) return 1 } func GetBackwardReferencesLowEffort(tls *libc.TLS, width int32, height int32, argb uintptr, cache_bits uintptr, hash_chain uintptr, refs_lz77 uintptr) uintptr { /* backward_references_enc.c:866:24: */ *(*int32)(unsafe.Pointer(cache_bits)) = 0 if !(BackwardReferencesLz77(tls, width, height, argb, 0, hash_chain, refs_lz77) != 0) { - return (uintptr(0)) + return uintptr(0) } BackwardReferences2DLocality(tls, width, refs_lz77) return refs_lz77 @@ -24944,20 +24687,20 @@ func GetBackwardReferences(tls *libc.TLS, width int32, height int32, argb uintpt var bit_cost_trace float64 var hash_chain_tmp uintptr var cache_bits1 int32 - histo = (uintptr(0)) + histo = uintptr(0) *(*[2]int32)(unsafe.Pointer(bp + 40 /* lz77_types_best */)) = [2]int32{0, 0} - *(*[2]float64)(unsafe.Pointer(bp + 24 /* bit_costs_best */)) = [2]float64{(1.79769313486231570814527423731704357e+308), (1.79769313486231570814527423731704357e+308)} - refs_tmp = (refs + uintptr(func() int32 { + *(*[2]float64)(unsafe.Pointer(bp + 24 /* bit_costs_best */)) = [2]float64{1.79769313486231570814527423731704357e+308, 1.79769313486231570814527423731704357e+308} + refs_tmp = refs + uintptr(func() int32 { if do_no_cache != 0 { return 2 } return 1 - }())*40) + }())*40 status = 0 - libc.Xmemset(tls, (bp) /* &hash_chain_box */, 0, uint64(unsafe.Sizeof(VP8LHashChain{}))) + libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(VP8LHashChain{}))) histo = VP8LAllocateHistogram(tls, 10) - if !(histo == (uintptr(0))) { + if !(histo == uintptr(0)) { goto __1 } goto Error @@ -24971,7 +24714,7 @@ __2: } res = 0 bit_cost = 0. - if !((lz77_types_to_try & lz77_type) == 0) { + if !(lz77_types_to_try&lz77_type == 0) { goto __5 } goto __3 @@ -24998,20 +24741,20 @@ __8: refs_tmp) goto __6 __9: - if !(!(VP8LHashChainInit(tls, (bp) /* &hash_chain_box */, (width*height)) != 0)) { + if !!(VP8LHashChainInit(tls, bp, width*height) != 0) { goto __11 } goto Error __11: ; res = BackwardReferencesLz77Box(tls, width, height, argb, 0, hash_chain, - (bp) /* &hash_chain_box */, refs_tmp) + bp, refs_tmp) goto __6 __10: ; __6: ; - if !(!(res != 0)) { + if !!(res != 0) { goto __12 } goto Error @@ -25030,7 +24773,7 @@ __13: *(*int32)(unsafe.Pointer(bp + 16 /* cache_bits */)) = cache_bits_max } - if !((i == 1) && !(do_no_cache != 0)) { + if !(i == 1 && !(do_no_cache != 0)) { goto __16 } goto __14 @@ -25041,16 +24784,16 @@ __16: goto __17 } // Try with a color cache. - if !(!(CalculateBestCacheSize(tls, argb, quality, refs_tmp, (bp+16) /* &cache_bits */) != 0)) { + if !!(CalculateBestCacheSize(tls, argb, quality, refs_tmp, bp+16) != 0) { goto __18 } goto Error __18: ; - if !(*(*int32)(unsafe.Pointer(bp + 16 /* cache_bits */)) > 0) { + if !(*(*int32)(unsafe.Pointer(bp + 16)) > 0) { goto __19 } - if !(!(BackwardRefsWithLocalCache(tls, argb, *(*int32)(unsafe.Pointer(bp + 16 /* cache_bits */)), refs_tmp) != 0)) { + if !!(BackwardRefsWithLocalCache(tls, argb, *(*int32)(unsafe.Pointer(bp + 16)), refs_tmp) != 0) { goto __20 } goto Error @@ -25061,7 +24804,7 @@ __19: __17: ; - if !(((i == 0) && (do_no_cache != 0)) && (*(*int32)(unsafe.Pointer(bp + 16 /* cache_bits */)) == 0)) { + if !(i == 0 && do_no_cache != 0 && *(*int32)(unsafe.Pointer(bp + 16)) == 0) { goto __21 } // No need to re-compute bit_cost as it was computed at i == 1. @@ -25072,7 +24815,7 @@ __21: __22: ; - if !(bit_cost < *(*float64)(unsafe.Pointer((bp + 24) /* &bit_costs_best[0] */ + uintptr(i)*8))) { + if !(bit_cost < *(*float64)(unsafe.Pointer(bp + 24 + uintptr(i)*8))) { goto __23 } if !(i == 1) { @@ -25080,7 +24823,7 @@ __22: } // Do not swap as the full cache analysis would have the wrong // VP8LBackwardRefs to start with. - if !(!(BackwardRefsClone(tls, refs_tmp, (refs+1*40)) != 0)) { + if !!(BackwardRefsClone(tls, refs_tmp, refs+1*40) != 0) { goto __26 } goto Error @@ -25088,11 +24831,11 @@ __26: ; goto __25 __24: - BackwardRefsSwap(tls, refs_tmp, (refs)) + BackwardRefsSwap(tls, refs_tmp, refs) __25: ; - *(*float64)(unsafe.Pointer((bp + 24) /* &bit_costs_best[0] */ + uintptr(i)*8)) = bit_cost - *(*int32)(unsafe.Pointer((bp + 40) /* &lz77_types_best[0] */ + uintptr(i)*4)) = lz77_type + *(*float64)(unsafe.Pointer(bp + 24 + uintptr(i)*8)) = bit_cost + *(*int32)(unsafe.Pointer(bp + 40 + uintptr(i)*4)) = lz77_type if !(i == 0) { goto __27 } @@ -25110,7 +24853,7 @@ __15: ; goto __3 __3: - lz77_types_to_try = lz77_types_to_try & (^lz77_type) + lz77_types_to_try = lz77_types_to_try & ^lz77_type lz77_type <<= 1 goto __2 goto __4 @@ -25124,19 +24867,19 @@ __28: if !(i >= 0) { goto __30 } - if !((i == 1) && !(do_no_cache != 0)) { + if !(i == 1 && !(do_no_cache != 0)) { goto __31 } goto __29 __31: ; - if !(((*(*int32)(unsafe.Pointer((bp + 40) /* &lz77_types_best[0] */ + uintptr(i)*4)) == kLZ77Standard) || (*(*int32)(unsafe.Pointer((bp + 40) /* &lz77_types_best[0] */ + uintptr(i)*4)) == kLZ77Box)) && (quality >= 25)) { + if !((*(*int32)(unsafe.Pointer(bp + 40 + uintptr(i)*4)) == kLZ77Standard || *(*int32)(unsafe.Pointer(bp + 40 + uintptr(i)*4)) == kLZ77Box) && quality >= 25) { goto __32 } - if *(*int32)(unsafe.Pointer((bp + 40) /* &lz77_types_best[0] */ + uintptr(i)*4)) == kLZ77Standard { + if *(*int32)(unsafe.Pointer(bp + 40 + uintptr(i)*4)) == kLZ77Standard { hash_chain_tmp = hash_chain } else { - hash_chain_tmp = (bp) /* &hash_chain_box */ + hash_chain_tmp = bp /* &hash_chain_box */ } if i == 1 { cache_bits1 = 0 @@ -25144,16 +24887,16 @@ __31: cache_bits1 = *(*int32)(unsafe.Pointer(cache_bits_best)) } if !(VP8LBackwardReferencesTraceBackwards(tls, width, height, argb, cache_bits1, - hash_chain_tmp, (refs+uintptr(i)*40), + hash_chain_tmp, refs+uintptr(i)*40, refs_tmp) != 0) { goto __33 } VP8LHistogramCreate(tls, histo, refs_tmp, cache_bits1) bit_cost_trace = VP8LHistogramEstimateBits(tls, histo) - if !(bit_cost_trace < *(*float64)(unsafe.Pointer((bp + 24) /* &bit_costs_best[0] */ + uintptr(i)*8))) { + if !(bit_cost_trace < *(*float64)(unsafe.Pointer(bp + 24 + uintptr(i)*8))) { goto __34 } - BackwardRefsSwap(tls, refs_tmp, (refs + uintptr(i)*40)) + BackwardRefsSwap(tls, refs_tmp, refs+uintptr(i)*40) __34: ; __33: @@ -25161,14 +24904,14 @@ __33: __32: ; - BackwardReferences2DLocality(tls, width, (refs + uintptr(i)*40)) + BackwardReferences2DLocality(tls, width, refs+uintptr(i)*40) - if !(((i == 1) && (*(*int32)(unsafe.Pointer((bp + 40) /* &lz77_types_best[0] */)) == *(*int32)(unsafe.Pointer((bp + 40) /* &lz77_types_best[0] */ + 1*4)))) && (*(*int32)(unsafe.Pointer(cache_bits_best)) == 0)) { + if !(i == 1 && *(*int32)(unsafe.Pointer(bp + 40)) == *(*int32)(unsafe.Pointer(bp + 40 + 1*4)) && *(*int32)(unsafe.Pointer(cache_bits_best)) == 0) { goto __35 } // If the best cache size is 0 and we have the same best LZ77, just copy // the data over and stop here. - if !(!(BackwardRefsClone(tls, (refs+1*40), (refs)) != 0)) { + if !!(BackwardRefsClone(tls, refs+1*40, refs) != 0) { goto __36 } goto Error @@ -25187,7 +24930,7 @@ __30: status = 1 Error: - VP8LHashChainClear(tls, (bp) /* &hash_chain_box */) + VP8LHashChainClear(tls, bp) VP8LFreeHistogram(tls, histo) return status } @@ -25198,11 +24941,11 @@ func VP8LGetBackwardReferences(tls *libc.TLS, width int32, height int32, argb ui *(*int32)(unsafe.Pointer(cache_bits_best)) = cache_bits_max refs_best = GetBackwardReferencesLowEffort(tls, width, height, argb, cache_bits_best, hash_chain, refs) - if refs_best == (uintptr(0)) { + if refs_best == uintptr(0) { return VP8_ENC_ERROR_OUT_OF_MEMORY } // Set it in first position. - BackwardRefsSwap(tls, refs_best, (refs)) + BackwardRefsSwap(tls, refs_best, refs) } else { if !(GetBackwardReferences(tls, width, height, argb, quality, lz77_types_to_try, cache_bits_max, do_no_cache, hash_chain, refs, @@ -25220,10 +24963,10 @@ func VP8LGetBackwardReferences(tls *libc.TLS, width int32, height int32, argb ui //------------------------------------------------------------------------------ func WebPConfigInitInternal(tls *libc.TLS, config uintptr, preset WebPPreset, quality float32, version int32) int32 { /* config_enc.c:24:5: */ - if ((version) >> 8) != (int32((0x020f)) >> 8) { + if version>>8 != int32(0x020f)>>8 { return 0 // caller/system version mismatch! } - if config == (uintptr(0)) { + if config == uintptr(0) { return 0 } @@ -25263,13 +25006,13 @@ func WebPConfigInitInternal(tls *libc.TLS, config uintptr, preset WebPPreset, qu (*WebPConfig)(unsafe.Pointer(config)).sns_strength = 80 (*WebPConfig)(unsafe.Pointer(config)).filter_sharpness = 4 (*WebPConfig)(unsafe.Pointer(config)).filter_strength = 35 - *(*int32)(unsafe.Pointer((config + 68 /* &.preprocessing */))) &= (libc.CplInt32(2)) // no dithering + *(*int32)(unsafe.Pointer(config + 68)) &= libc.CplInt32(2) // no dithering break case WEBP_PRESET_PHOTO: (*WebPConfig)(unsafe.Pointer(config)).sns_strength = 80 (*WebPConfig)(unsafe.Pointer(config)).filter_sharpness = 3 (*WebPConfig)(unsafe.Pointer(config)).filter_strength = 30 - *(*int32)(unsafe.Pointer((config + 68 /* &.preprocessing */))) |= (2) + *(*int32)(unsafe.Pointer(config + 68)) |= 2 break case WEBP_PRESET_DRAWING: (*WebPConfig)(unsafe.Pointer(config)).sns_strength = 25 @@ -25278,13 +25021,13 @@ func WebPConfigInitInternal(tls *libc.TLS, config uintptr, preset WebPPreset, qu break case WEBP_PRESET_ICON: (*WebPConfig)(unsafe.Pointer(config)).sns_strength = 0 - (*WebPConfig)(unsafe.Pointer(config)).filter_strength = 0 // disable filtering to retain sharpness - *(*int32)(unsafe.Pointer((config + 68 /* &.preprocessing */))) &= (libc.CplInt32(2)) // no dithering + (*WebPConfig)(unsafe.Pointer(config)).filter_strength = 0 // disable filtering to retain sharpness + *(*int32)(unsafe.Pointer(config + 68)) &= libc.CplInt32(2) // no dithering break case WEBP_PRESET_TEXT: (*WebPConfig)(unsafe.Pointer(config)).sns_strength = 0 - (*WebPConfig)(unsafe.Pointer(config)).filter_strength = 0 // disable filtering to retain sharpness - *(*int32)(unsafe.Pointer((config + 68 /* &.preprocessing */))) &= (libc.CplInt32(2)) // no dithering + (*WebPConfig)(unsafe.Pointer(config)).filter_strength = 0 // disable filtering to retain sharpness + *(*int32)(unsafe.Pointer(config + 68)) &= libc.CplInt32(2) // no dithering (*WebPConfig)(unsafe.Pointer(config)).segments = 2 break case WEBP_PRESET_DEFAULT: @@ -25296,10 +25039,10 @@ func WebPConfigInitInternal(tls *libc.TLS, config uintptr, preset WebPPreset, qu } func WebPValidateConfig(tls *libc.TLS, config uintptr) int32 { /* config_enc.c:98:5: */ - if config == (uintptr(0)) { + if config == uintptr(0) { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).quality < float32(0)) || ((*WebPConfig)(unsafe.Pointer(config)).quality > float32(100)) { + if (*WebPConfig)(unsafe.Pointer(config)).quality < float32(0) || (*WebPConfig)(unsafe.Pointer(config)).quality > float32(100) { return 0 } if (*WebPConfig)(unsafe.Pointer(config)).target_size < 0 { @@ -25308,43 +25051,43 @@ func WebPValidateConfig(tls *libc.TLS, config uintptr) int32 { /* config_enc.c:9 if (*WebPConfig)(unsafe.Pointer(config)).target_PSNR < float32(0) { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).method < 0) || ((*WebPConfig)(unsafe.Pointer(config)).method > 6) { + if (*WebPConfig)(unsafe.Pointer(config)).method < 0 || (*WebPConfig)(unsafe.Pointer(config)).method > 6 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).segments < 1) || ((*WebPConfig)(unsafe.Pointer(config)).segments > 4) { + if (*WebPConfig)(unsafe.Pointer(config)).segments < 1 || (*WebPConfig)(unsafe.Pointer(config)).segments > 4 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).sns_strength < 0) || ((*WebPConfig)(unsafe.Pointer(config)).sns_strength > 100) { + if (*WebPConfig)(unsafe.Pointer(config)).sns_strength < 0 || (*WebPConfig)(unsafe.Pointer(config)).sns_strength > 100 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).filter_strength < 0) || ((*WebPConfig)(unsafe.Pointer(config)).filter_strength > 100) { + if (*WebPConfig)(unsafe.Pointer(config)).filter_strength < 0 || (*WebPConfig)(unsafe.Pointer(config)).filter_strength > 100 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).filter_sharpness < 0) || ((*WebPConfig)(unsafe.Pointer(config)).filter_sharpness > 7) { + if (*WebPConfig)(unsafe.Pointer(config)).filter_sharpness < 0 || (*WebPConfig)(unsafe.Pointer(config)).filter_sharpness > 7 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).filter_type < 0) || ((*WebPConfig)(unsafe.Pointer(config)).filter_type > 1) { + if (*WebPConfig)(unsafe.Pointer(config)).filter_type < 0 || (*WebPConfig)(unsafe.Pointer(config)).filter_type > 1 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).autofilter < 0) || ((*WebPConfig)(unsafe.Pointer(config)).autofilter > 1) { + if (*WebPConfig)(unsafe.Pointer(config)).autofilter < 0 || (*WebPConfig)(unsafe.Pointer(config)).autofilter > 1 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).pass < 1) || ((*WebPConfig)(unsafe.Pointer(config)).pass > 10) { + if (*WebPConfig)(unsafe.Pointer(config)).pass < 1 || (*WebPConfig)(unsafe.Pointer(config)).pass > 10 { return 0 } - if (((*WebPConfig)(unsafe.Pointer(config)).qmin < 0) || ((*WebPConfig)(unsafe.Pointer(config)).qmax > 100)) || ((*WebPConfig)(unsafe.Pointer(config)).qmin > (*WebPConfig)(unsafe.Pointer(config)).qmax) { + if (*WebPConfig)(unsafe.Pointer(config)).qmin < 0 || (*WebPConfig)(unsafe.Pointer(config)).qmax > 100 || (*WebPConfig)(unsafe.Pointer(config)).qmin > (*WebPConfig)(unsafe.Pointer(config)).qmax { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).show_compressed < 0) || ((*WebPConfig)(unsafe.Pointer(config)).show_compressed > 1) { + if (*WebPConfig)(unsafe.Pointer(config)).show_compressed < 0 || (*WebPConfig)(unsafe.Pointer(config)).show_compressed > 1 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).preprocessing < 0) || ((*WebPConfig)(unsafe.Pointer(config)).preprocessing > 7) { + if (*WebPConfig)(unsafe.Pointer(config)).preprocessing < 0 || (*WebPConfig)(unsafe.Pointer(config)).preprocessing > 7 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).partitions < 0) || ((*WebPConfig)(unsafe.Pointer(config)).partitions > 3) { + if (*WebPConfig)(unsafe.Pointer(config)).partitions < 0 || (*WebPConfig)(unsafe.Pointer(config)).partitions > 3 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).partition_limit < 0) || ((*WebPConfig)(unsafe.Pointer(config)).partition_limit > 100) { + if (*WebPConfig)(unsafe.Pointer(config)).partition_limit < 0 || (*WebPConfig)(unsafe.Pointer(config)).partition_limit > 100 { return 0 } if (*WebPConfig)(unsafe.Pointer(config)).alpha_compression < 0 { @@ -25353,34 +25096,34 @@ func WebPValidateConfig(tls *libc.TLS, config uintptr) int32 { /* config_enc.c:9 if (*WebPConfig)(unsafe.Pointer(config)).alpha_filtering < 0 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).alpha_quality < 0) || ((*WebPConfig)(unsafe.Pointer(config)).alpha_quality > 100) { + if (*WebPConfig)(unsafe.Pointer(config)).alpha_quality < 0 || (*WebPConfig)(unsafe.Pointer(config)).alpha_quality > 100 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).lossless < 0) || ((*WebPConfig)(unsafe.Pointer(config)).lossless > 1) { + if (*WebPConfig)(unsafe.Pointer(config)).lossless < 0 || (*WebPConfig)(unsafe.Pointer(config)).lossless > 1 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).near_lossless < 0) || ((*WebPConfig)(unsafe.Pointer(config)).near_lossless > 100) { + if (*WebPConfig)(unsafe.Pointer(config)).near_lossless < 0 || (*WebPConfig)(unsafe.Pointer(config)).near_lossless > 100 { return 0 } if (*WebPConfig)(unsafe.Pointer(config)).image_hint >= WEBP_HINT_LAST { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).emulate_jpeg_size < 0) || ((*WebPConfig)(unsafe.Pointer(config)).emulate_jpeg_size > 1) { + if (*WebPConfig)(unsafe.Pointer(config)).emulate_jpeg_size < 0 || (*WebPConfig)(unsafe.Pointer(config)).emulate_jpeg_size > 1 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).thread_level < 0) || ((*WebPConfig)(unsafe.Pointer(config)).thread_level > 1) { + if (*WebPConfig)(unsafe.Pointer(config)).thread_level < 0 || (*WebPConfig)(unsafe.Pointer(config)).thread_level > 1 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).low_memory < 0) || ((*WebPConfig)(unsafe.Pointer(config)).low_memory > 1) { + if (*WebPConfig)(unsafe.Pointer(config)).low_memory < 0 || (*WebPConfig)(unsafe.Pointer(config)).low_memory > 1 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).exact < 0) || ((*WebPConfig)(unsafe.Pointer(config)).exact > 1) { + if (*WebPConfig)(unsafe.Pointer(config)).exact < 0 || (*WebPConfig)(unsafe.Pointer(config)).exact > 1 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).use_delta_palette < 0) || ((*WebPConfig)(unsafe.Pointer(config)).use_delta_palette > 1) { + if (*WebPConfig)(unsafe.Pointer(config)).use_delta_palette < 0 || (*WebPConfig)(unsafe.Pointer(config)).use_delta_palette > 1 { return 0 } - if ((*WebPConfig)(unsafe.Pointer(config)).use_sharp_yuv < 0) || ((*WebPConfig)(unsafe.Pointer(config)).use_sharp_yuv > 1) { + if (*WebPConfig)(unsafe.Pointer(config)).use_sharp_yuv < 0 || (*WebPConfig)(unsafe.Pointer(config)).use_sharp_yuv > 1 { return 0 } @@ -25394,42 +25137,12 @@ var kLosslessPresets = [10]struct { method_ uint8_t quality_ uint8_t }{ - struct { - method_ uint8_t - quality_ uint8_t - }{}, struct { - method_ uint8_t - quality_ uint8_t - }{method_: uint8_t(1), quality_: uint8_t(20)}, struct { - method_ uint8_t - quality_ uint8_t - }{method_: uint8_t(2), quality_: uint8_t(25)}, struct { - method_ uint8_t - quality_ uint8_t - }{method_: uint8_t(3), quality_: uint8_t(30)}, struct { - method_ uint8_t - quality_ uint8_t - }{method_: uint8_t(3), quality_: uint8_t(50)}, - struct { - method_ uint8_t - quality_ uint8_t - }{method_: uint8_t(4), quality_: uint8_t(50)}, struct { - method_ uint8_t - quality_ uint8_t - }{method_: uint8_t(4), quality_: uint8_t(75)}, struct { - method_ uint8_t - quality_ uint8_t - }{method_: uint8_t(4), quality_: uint8_t(90)}, struct { - method_ uint8_t - quality_ uint8_t - }{method_: uint8_t(5), quality_: uint8_t(90)}, struct { - method_ uint8_t - quality_ uint8_t - }{method_: uint8_t(6), quality_: uint8_t(100)}, + {}, {method_: uint8_t(1), quality_: uint8_t(20)}, {method_: uint8_t(2), quality_: uint8_t(25)}, {method_: uint8_t(3), quality_: uint8_t(30)}, {method_: uint8_t(3), quality_: uint8_t(50)}, + {method_: uint8_t(4), quality_: uint8_t(50)}, {method_: uint8_t(4), quality_: uint8_t(75)}, {method_: uint8_t(4), quality_: uint8_t(90)}, {method_: uint8_t(5), quality_: uint8_t(90)}, {method_: uint8_t(6), quality_: uint8_t(100)}, } /* config_enc.c:144:3 */ func WebPConfigLosslessPreset(tls *libc.TLS, config uintptr, level int32) int32 { /* config_enc.c:149:5: */ - if ((config == (uintptr(0))) || (level < 0)) || (level > 9) { + if config == uintptr(0) || level < 0 || level > 9 { return 0 } (*WebPConfig)(unsafe.Pointer(config)).lossless = 1 @@ -25449,33 +25162,33 @@ func WebPConfigLosslessPreset(tls *libc.TLS, config uintptr, level int32) int32 // use for coding it (in [][0]) as well as the bit value to use for each // context (in [][1]). var VP8LevelCodes = [67][2]uint16_t{ - [2]uint16_t{uint16_t(0x001), uint16_t(0x000)}, [2]uint16_t{uint16_t(0x007), uint16_t(0x001)}, [2]uint16_t{uint16_t(0x00f), uint16_t(0x005)}, - [2]uint16_t{uint16_t(0x00f), uint16_t(0x00d)}, [2]uint16_t{uint16_t(0x033), uint16_t(0x003)}, [2]uint16_t{uint16_t(0x033), uint16_t(0x003)}, [2]uint16_t{uint16_t(0x033), uint16_t(0x023)}, - [2]uint16_t{uint16_t(0x033), uint16_t(0x023)}, [2]uint16_t{uint16_t(0x033), uint16_t(0x023)}, [2]uint16_t{uint16_t(0x033), uint16_t(0x023)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x013)}, - [2]uint16_t{uint16_t(0x0d3), uint16_t(0x013)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x013)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x013)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x013)}, - [2]uint16_t{uint16_t(0x0d3), uint16_t(0x013)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x013)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x013)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, - [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, - [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, - [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, - [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, [2]uint16_t{uint16_t(0x0d3), uint16_t(0x093)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, - [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, - [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, - [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, - [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, - [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, - [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, - [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, - [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x053)}, [2]uint16_t{uint16_t(0x153), uint16_t(0x153)}, + {uint16_t(0x001), uint16_t(0x000)}, {uint16_t(0x007), uint16_t(0x001)}, {uint16_t(0x00f), uint16_t(0x005)}, + {uint16_t(0x00f), uint16_t(0x00d)}, {uint16_t(0x033), uint16_t(0x003)}, {uint16_t(0x033), uint16_t(0x003)}, {uint16_t(0x033), uint16_t(0x023)}, + {uint16_t(0x033), uint16_t(0x023)}, {uint16_t(0x033), uint16_t(0x023)}, {uint16_t(0x033), uint16_t(0x023)}, {uint16_t(0x0d3), uint16_t(0x013)}, + {uint16_t(0x0d3), uint16_t(0x013)}, {uint16_t(0x0d3), uint16_t(0x013)}, {uint16_t(0x0d3), uint16_t(0x013)}, {uint16_t(0x0d3), uint16_t(0x013)}, + {uint16_t(0x0d3), uint16_t(0x013)}, {uint16_t(0x0d3), uint16_t(0x013)}, {uint16_t(0x0d3), uint16_t(0x013)}, {uint16_t(0x0d3), uint16_t(0x093)}, + {uint16_t(0x0d3), uint16_t(0x093)}, {uint16_t(0x0d3), uint16_t(0x093)}, {uint16_t(0x0d3), uint16_t(0x093)}, {uint16_t(0x0d3), uint16_t(0x093)}, + {uint16_t(0x0d3), uint16_t(0x093)}, {uint16_t(0x0d3), uint16_t(0x093)}, {uint16_t(0x0d3), uint16_t(0x093)}, {uint16_t(0x0d3), uint16_t(0x093)}, + {uint16_t(0x0d3), uint16_t(0x093)}, {uint16_t(0x0d3), uint16_t(0x093)}, {uint16_t(0x0d3), uint16_t(0x093)}, {uint16_t(0x0d3), uint16_t(0x093)}, + {uint16_t(0x0d3), uint16_t(0x093)}, {uint16_t(0x0d3), uint16_t(0x093)}, {uint16_t(0x0d3), uint16_t(0x093)}, {uint16_t(0x153), uint16_t(0x053)}, + {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, + {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, + {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, + {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, + {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, + {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, + {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, + {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x053)}, {uint16_t(0x153), uint16_t(0x153)}, } /* cost_enc.c:22:16 */ func VariableLevelCost(tls *libc.TLS, level int32, probas uintptr) int32 { /* cost_enc.c:42:12: */ - var pattern int32 = int32(*(*uint16_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&VP8LevelCodes)) + uintptr((level-1))*4)))) - var bits int32 = int32(*(*uint16_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&VP8LevelCodes)) + uintptr((level-1))*4) + 1*2))) + var pattern int32 = int32(*(*uint16_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8LevelCodes)) + uintptr(level-1)*4))) + var bits int32 = int32(*(*uint16_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8LevelCodes)) + uintptr(level-1)*4 + 1*2))) var cost int32 = 0 var i int32 for i = 2; pattern != 0; i++ { - if (pattern & 1) != 0 { - cost = cost + (VP8BitCost(tls, (bits & 1), *(*uint8_t)(unsafe.Pointer(probas + uintptr(i))))) + if pattern&1 != 0 { + cost = cost + VP8BitCost(tls, bits&1, *(*uint8_t)(unsafe.Pointer(probas + uintptr(i)))) } bits >>= 1 pattern >>= 1 @@ -25499,19 +25212,19 @@ func VP8CalculateLevelCosts(tls *libc.TLS, proba uintptr) { /* cost_enc.c:60:6: var n int32 for band = 0; band < NUM_BANDS; band++ { for ctx = 0; ctx < NUM_CTX; ctx++ { - var p uintptr = (((proba + 4 /* &.coeffs_ */ + uintptr(ctype)*264) + uintptr(band)*33) + uintptr(ctx)*11) - var table uintptr = (((proba + 5284 /* &.level_cost_ */ + uintptr(ctype)*3264) + uintptr(band)*408) + uintptr(ctx)*136) + var p uintptr = proba + 4 + uintptr(ctype)*264 + uintptr(band)*33 + uintptr(ctx)*11 + var table uintptr = proba + 5284 + uintptr(ctype)*3264 + uintptr(band)*408 + uintptr(ctx)*136 var cost0 int32 if ctx > 0 { cost0 = VP8BitCost(tls, 1, *(*uint8_t)(unsafe.Pointer(p))) } else { cost0 = 0 } - var cost_base int32 = (VP8BitCost(tls, 1, *(*uint8_t)(unsafe.Pointer(p + 1))) + cost0) + var cost_base int32 = VP8BitCost(tls, 1, *(*uint8_t)(unsafe.Pointer(p + 1))) + cost0 var v int32 - *(*uint16_t)(unsafe.Pointer(table)) = (uint16_t(VP8BitCost(tls, 0, *(*uint8_t)(unsafe.Pointer(p + 1))) + cost0)) + *(*uint16_t)(unsafe.Pointer(table)) = uint16_t(VP8BitCost(tls, 0, *(*uint8_t)(unsafe.Pointer(p + 1))) + cost0) for v = 1; v <= MAX_VARIABLE_LEVEL; v++ { - *(*uint16_t)(unsafe.Pointer(table + uintptr(v)*2)) = (uint16_t(cost_base + VariableLevelCost(tls, v, p))) + *(*uint16_t)(unsafe.Pointer(table + uintptr(v)*2)) = uint16_t(cost_base + VariableLevelCost(tls, v, p)) } // Starting at level 67 and up, the variable part of the cost is // actually constant. @@ -25519,7 +25232,7 @@ func VP8CalculateLevelCosts(tls *libc.TLS, proba uintptr) { /* cost_enc.c:60:6: } for n = 0; n < 16; n++ { // replicate bands. We don't need to sentinel. for ctx = 0; ctx < NUM_CTX; ctx++ { - *(*uintptr)(unsafe.Pointer((((proba + 18344 /* &.remapped_costs_ */) + uintptr(ctype)*384) + uintptr(n)*24) + uintptr(ctx)*8)) = (((proba + 5284 /* &.level_cost_ */ + uintptr(ctype)*3264) + uintptr(VP8EncBands[n])*408) + uintptr(ctx)*136) + *(*uintptr)(unsafe.Pointer(proba + 18344 + uintptr(ctype)*384 + uintptr(n)*24 + uintptr(ctx)*8)) = proba + 5284 + uintptr(ctype)*3264 + uintptr(VP8EncBands[n])*408 + uintptr(ctx)*136 } } } @@ -25534,116 +25247,116 @@ func VP8CalculateLevelCosts(tls *libc.TLS, proba uintptr) { /* cost_enc.c:60:6: var VP8FixedCostsUV = [4]uint16_t{uint16_t(302), uint16_t(984), uint16_t(439), uint16_t(642)} /* cost_enc.c:97:16 */ // note: these values include the fixed VP8BitCost(1, 145) mode selection cost. var VP8FixedCostsI16 = [4]uint16_t{uint16_t(663), uint16_t(919), uint16_t(872), uint16_t(919)} /* cost_enc.c:99:16 */ -var VP8FixedCostsI4 = [10][10][10]uint16_t{[10][10]uint16_t{ - [10]uint16_t{uint16_t(40), uint16_t(1151), uint16_t(1723), uint16_t(1874), uint16_t(2103), uint16_t(2019), uint16_t(1628), uint16_t(1777), uint16_t(2226), uint16_t(2137)}, - [10]uint16_t{uint16_t(192), uint16_t(469), uint16_t(1296), uint16_t(1308), uint16_t(1849), uint16_t(1794), uint16_t(1781), uint16_t(1703), uint16_t(1713), uint16_t(1522)}, - [10]uint16_t{uint16_t(142), uint16_t(910), uint16_t(762), uint16_t(1684), uint16_t(1849), uint16_t(1576), uint16_t(1460), uint16_t(1305), uint16_t(1801), uint16_t(1657)}, - [10]uint16_t{uint16_t(559), uint16_t(641), uint16_t(1370), uint16_t(421), uint16_t(1182), uint16_t(1569), uint16_t(1612), uint16_t(1725), uint16_t(863), uint16_t(1007)}, - [10]uint16_t{uint16_t(299), uint16_t(1059), uint16_t(1256), uint16_t(1108), uint16_t(636), uint16_t(1068), uint16_t(1581), uint16_t(1883), uint16_t(869), uint16_t(1142)}, - [10]uint16_t{uint16_t(277), uint16_t(1111), uint16_t(707), uint16_t(1362), uint16_t(1089), uint16_t(672), uint16_t(1603), uint16_t(1541), uint16_t(1545), uint16_t(1291)}, - [10]uint16_t{uint16_t(214), uint16_t(781), uint16_t(1609), uint16_t(1303), uint16_t(1632), uint16_t(2229), uint16_t(726), uint16_t(1560), uint16_t(1713), uint16_t(918)}, - [10]uint16_t{uint16_t(152), uint16_t(1037), uint16_t(1046), uint16_t(1759), uint16_t(1983), uint16_t(2174), uint16_t(1358), uint16_t(742), uint16_t(1740), uint16_t(1390)}, - [10]uint16_t{uint16_t(512), uint16_t(1046), uint16_t(1420), uint16_t(753), uint16_t(752), uint16_t(1297), uint16_t(1486), uint16_t(1613), uint16_t(460), uint16_t(1207)}, - [10]uint16_t{uint16_t(424), uint16_t(827), uint16_t(1362), uint16_t(719), uint16_t(1462), uint16_t(1202), uint16_t(1199), uint16_t(1476), uint16_t(1199), uint16_t(538)}}, - [10][10]uint16_t{[10]uint16_t{uint16_t(240), uint16_t(402), uint16_t(1134), uint16_t(1491), uint16_t(1659), uint16_t(1505), uint16_t(1517), uint16_t(1555), uint16_t(1979), uint16_t(2099)}, - [10]uint16_t{uint16_t(467), uint16_t(242), uint16_t(960), uint16_t(1232), uint16_t(1714), uint16_t(1620), uint16_t(1834), uint16_t(1570), uint16_t(1676), uint16_t(1391)}, - [10]uint16_t{uint16_t(500), uint16_t(455), uint16_t(463), uint16_t(1507), uint16_t(1699), uint16_t(1282), uint16_t(1564), uint16_t(982), uint16_t(2114), uint16_t(2114)}, - [10]uint16_t{uint16_t(672), uint16_t(643), uint16_t(1372), uint16_t(331), uint16_t(1589), uint16_t(1667), uint16_t(1453), uint16_t(1938), uint16_t(996), uint16_t(876)}, - [10]uint16_t{uint16_t(458), uint16_t(783), uint16_t(1037), uint16_t(911), uint16_t(738), uint16_t(968), uint16_t(1165), uint16_t(1518), uint16_t(859), uint16_t(1033)}, - [10]uint16_t{uint16_t(504), uint16_t(815), uint16_t(504), uint16_t(1139), uint16_t(1219), uint16_t(719), uint16_t(1506), uint16_t(1085), uint16_t(1268), uint16_t(1268)}, - [10]uint16_t{uint16_t(333), uint16_t(630), uint16_t(1445), uint16_t(1239), uint16_t(1883), uint16_t(3672), uint16_t(799), uint16_t(1548), uint16_t(1865), uint16_t(598)}, - [10]uint16_t{uint16_t(399), uint16_t(644), uint16_t(746), uint16_t(1342), uint16_t(1856), uint16_t(1350), uint16_t(1493), uint16_t(613), uint16_t(1855), uint16_t(1015)}, - [10]uint16_t{uint16_t(622), uint16_t(749), uint16_t(1205), uint16_t(608), uint16_t(1066), uint16_t(1408), uint16_t(1290), uint16_t(1406), uint16_t(546), uint16_t(971)}, - [10]uint16_t{uint16_t(500), uint16_t(753), uint16_t(1041), uint16_t(668), uint16_t(1230), uint16_t(1617), uint16_t(1297), uint16_t(1425), uint16_t(1383), uint16_t(523)}}, - [10][10]uint16_t{[10]uint16_t{uint16_t(394), uint16_t(553), uint16_t(523), uint16_t(1502), uint16_t(1536), uint16_t(981), uint16_t(1608), uint16_t(1142), uint16_t(1666), uint16_t(2181)}, - [10]uint16_t{uint16_t(655), uint16_t(430), uint16_t(375), uint16_t(1411), uint16_t(1861), uint16_t(1220), uint16_t(1677), uint16_t(1135), uint16_t(1978), uint16_t(1553)}, - [10]uint16_t{uint16_t(690), uint16_t(640), uint16_t(245), uint16_t(1954), uint16_t(2070), uint16_t(1194), uint16_t(1528), uint16_t(982), uint16_t(1972), uint16_t(2232)}, - [10]uint16_t{uint16_t(559), uint16_t(834), uint16_t(741), uint16_t(867), uint16_t(1131), uint16_t(980), uint16_t(1225), uint16_t(852), uint16_t(1092), uint16_t(784)}, - [10]uint16_t{uint16_t(690), uint16_t(875), uint16_t(516), uint16_t(959), uint16_t(673), uint16_t(894), uint16_t(1056), uint16_t(1190), uint16_t(1528), uint16_t(1126)}, - [10]uint16_t{uint16_t(740), uint16_t(951), uint16_t(384), uint16_t(1277), uint16_t(1177), uint16_t(492), uint16_t(1579), uint16_t(1155), uint16_t(1846), uint16_t(1513)}, - [10]uint16_t{uint16_t(323), uint16_t(775), uint16_t(1062), uint16_t(1776), uint16_t(3062), uint16_t(1274), uint16_t(813), uint16_t(1188), uint16_t(1372), uint16_t(655)}, - [10]uint16_t{uint16_t(488), uint16_t(971), uint16_t(484), uint16_t(1767), uint16_t(1515), uint16_t(1775), uint16_t(1115), uint16_t(503), uint16_t(1539), uint16_t(1461)}, - [10]uint16_t{uint16_t(740), uint16_t(1006), uint16_t(998), uint16_t(709), uint16_t(851), uint16_t(1230), uint16_t(1337), uint16_t(788), uint16_t(741), uint16_t(721)}, - [10]uint16_t{uint16_t(522), uint16_t(1073), uint16_t(573), uint16_t(1045), uint16_t(1346), uint16_t(887), uint16_t(1046), uint16_t(1146), uint16_t(1203), uint16_t(697)}}, - [10][10]uint16_t{[10]uint16_t{uint16_t(105), uint16_t(864), uint16_t(1442), uint16_t(1009), uint16_t(1934), uint16_t(1840), uint16_t(1519), uint16_t(1920), uint16_t(1673), uint16_t(1579)}, - [10]uint16_t{uint16_t(534), uint16_t(305), uint16_t(1193), uint16_t(683), uint16_t(1388), uint16_t(2164), uint16_t(1802), uint16_t(1894), uint16_t(1264), uint16_t(1170)}, - [10]uint16_t{uint16_t(305), uint16_t(518), uint16_t(877), uint16_t(1108), uint16_t(1426), uint16_t(3215), uint16_t(1425), uint16_t(1064), uint16_t(1320), uint16_t(1242)}, - [10]uint16_t{uint16_t(683), uint16_t(732), uint16_t(1927), uint16_t(257), uint16_t(1493), uint16_t(2048), uint16_t(1858), uint16_t(1552), uint16_t(1055), uint16_t(947)}, - [10]uint16_t{uint16_t(394), uint16_t(814), uint16_t(1024), uint16_t(660), uint16_t(959), uint16_t(1556), uint16_t(1282), uint16_t(1289), uint16_t(893), uint16_t(1047)}, - [10]uint16_t{uint16_t(528), uint16_t(615), uint16_t(996), uint16_t(940), uint16_t(1201), uint16_t(635), uint16_t(1094), uint16_t(2515), uint16_t(803), uint16_t(1358)}, - [10]uint16_t{uint16_t(347), uint16_t(614), uint16_t(1609), uint16_t(1187), uint16_t(3133), uint16_t(1345), uint16_t(1007), uint16_t(1339), uint16_t(1017), uint16_t(667)}, - [10]uint16_t{uint16_t(218), uint16_t(740), uint16_t(878), uint16_t(1605), uint16_t(3650), uint16_t(3650), uint16_t(1345), uint16_t(758), uint16_t(1357), uint16_t(1617)}, - [10]uint16_t{uint16_t(672), uint16_t(750), uint16_t(1541), uint16_t(558), uint16_t(1257), uint16_t(1599), uint16_t(1870), uint16_t(2135), uint16_t(402), uint16_t(1087)}, - [10]uint16_t{uint16_t(592), uint16_t(684), uint16_t(1161), uint16_t(430), uint16_t(1092), uint16_t(1497), uint16_t(1475), uint16_t(1489), uint16_t(1095), uint16_t(822)}}, - [10][10]uint16_t{[10]uint16_t{uint16_t(228), uint16_t(1056), uint16_t(1059), uint16_t(1368), uint16_t(752), uint16_t(982), uint16_t(1512), uint16_t(1518), uint16_t(987), uint16_t(1782)}, - [10]uint16_t{uint16_t(494), uint16_t(514), uint16_t(818), uint16_t(942), uint16_t(965), uint16_t(892), uint16_t(1610), uint16_t(1356), uint16_t(1048), uint16_t(1363)}, - [10]uint16_t{uint16_t(512), uint16_t(648), uint16_t(591), uint16_t(1042), uint16_t(761), uint16_t(991), uint16_t(1196), uint16_t(1454), uint16_t(1309), uint16_t(1463)}, - [10]uint16_t{uint16_t(683), uint16_t(749), uint16_t(1043), uint16_t(676), uint16_t(841), uint16_t(1396), uint16_t(1133), uint16_t(1138), uint16_t(654), uint16_t(939)}, - [10]uint16_t{uint16_t(622), uint16_t(1101), uint16_t(1126), uint16_t(994), uint16_t(361), uint16_t(1077), uint16_t(1203), uint16_t(1318), uint16_t(877), uint16_t(1219)}, - [10]uint16_t{uint16_t(631), uint16_t(1068), uint16_t(857), uint16_t(1650), uint16_t(651), uint16_t(477), uint16_t(1650), uint16_t(1419), uint16_t(828), uint16_t(1170)}, - [10]uint16_t{uint16_t(555), uint16_t(727), uint16_t(1068), uint16_t(1335), uint16_t(3127), uint16_t(1339), uint16_t(820), uint16_t(1331), uint16_t(1077), uint16_t(429)}, - [10]uint16_t{uint16_t(504), uint16_t(879), uint16_t(624), uint16_t(1398), uint16_t(889), uint16_t(889), uint16_t(1392), uint16_t(808), uint16_t(891), uint16_t(1406)}, - [10]uint16_t{uint16_t(683), uint16_t(1602), uint16_t(1289), uint16_t(977), uint16_t(578), uint16_t(983), uint16_t(1280), uint16_t(1708), uint16_t(406), uint16_t(1122)}, - [10]uint16_t{uint16_t(399), uint16_t(865), uint16_t(1433), uint16_t(1070), uint16_t(1072), uint16_t(764), uint16_t(968), uint16_t(1477), uint16_t(1223), uint16_t(678)}}, - [10][10]uint16_t{[10]uint16_t{uint16_t(333), uint16_t(760), uint16_t(935), uint16_t(1638), uint16_t(1010), uint16_t(529), uint16_t(1646), uint16_t(1410), uint16_t(1472), uint16_t(2219)}, - [10]uint16_t{uint16_t(512), uint16_t(494), uint16_t(750), uint16_t(1160), uint16_t(1215), uint16_t(610), uint16_t(1870), uint16_t(1868), uint16_t(1628), uint16_t(1169)}, - [10]uint16_t{uint16_t(572), uint16_t(646), uint16_t(492), uint16_t(1934), uint16_t(1208), uint16_t(603), uint16_t(1580), uint16_t(1099), uint16_t(1398), uint16_t(1995)}, - [10]uint16_t{uint16_t(786), uint16_t(789), uint16_t(942), uint16_t(581), uint16_t(1018), uint16_t(951), uint16_t(1599), uint16_t(1207), uint16_t(731), uint16_t(768)}, - [10]uint16_t{uint16_t(690), uint16_t(1015), uint16_t(672), uint16_t(1078), uint16_t(582), uint16_t(504), uint16_t(1693), uint16_t(1438), uint16_t(1108), uint16_t(2897)}, - [10]uint16_t{uint16_t(768), uint16_t(1267), uint16_t(571), uint16_t(2005), uint16_t(1243), uint16_t(244), uint16_t(2881), uint16_t(1380), uint16_t(1786), uint16_t(1453)}, - [10]uint16_t{uint16_t(452), uint16_t(899), uint16_t(1293), uint16_t(903), uint16_t(1311), uint16_t(3100), uint16_t(465), uint16_t(1311), uint16_t(1319), uint16_t(813)}, - [10]uint16_t{uint16_t(394), uint16_t(927), uint16_t(942), uint16_t(1103), uint16_t(1358), uint16_t(1104), uint16_t(946), uint16_t(593), uint16_t(1363), uint16_t(1109)}, - [10]uint16_t{uint16_t(559), uint16_t(1005), uint16_t(1007), uint16_t(1016), uint16_t(658), uint16_t(1173), uint16_t(1021), uint16_t(1164), uint16_t(623), uint16_t(1028)}, - [10]uint16_t{uint16_t(564), uint16_t(796), uint16_t(632), uint16_t(1005), uint16_t(1014), uint16_t(863), uint16_t(2316), uint16_t(1268), uint16_t(938), uint16_t(764)}}, - [10][10]uint16_t{[10]uint16_t{uint16_t(266), uint16_t(606), uint16_t(1098), uint16_t(1228), uint16_t(1497), uint16_t(1243), uint16_t(948), uint16_t(1030), uint16_t(1734), uint16_t(1461)}, - [10]uint16_t{uint16_t(366), uint16_t(585), uint16_t(901), uint16_t(1060), uint16_t(1407), uint16_t(1247), uint16_t(876), uint16_t(1134), uint16_t(1620), uint16_t(1054)}, - [10]uint16_t{uint16_t(452), uint16_t(565), uint16_t(542), uint16_t(1729), uint16_t(1479), uint16_t(1479), uint16_t(1016), uint16_t(886), uint16_t(2938), uint16_t(1150)}, - [10]uint16_t{uint16_t(555), uint16_t(1088), uint16_t(1533), uint16_t(950), uint16_t(1354), uint16_t(895), uint16_t(834), uint16_t(1019), uint16_t(1021), uint16_t(496)}, - [10]uint16_t{uint16_t(704), uint16_t(815), uint16_t(1193), uint16_t(971), uint16_t(973), uint16_t(640), uint16_t(1217), uint16_t(2214), uint16_t(832), uint16_t(578)}, - [10]uint16_t{uint16_t(672), uint16_t(1245), uint16_t(579), uint16_t(871), uint16_t(875), uint16_t(774), uint16_t(872), uint16_t(1273), uint16_t(1027), uint16_t(949)}, - [10]uint16_t{uint16_t(296), uint16_t(1134), uint16_t(2050), uint16_t(1784), uint16_t(1636), uint16_t(3425), uint16_t(442), uint16_t(1550), uint16_t(2076), uint16_t(722)}, - [10]uint16_t{uint16_t(342), uint16_t(982), uint16_t(1259), uint16_t(1846), uint16_t(1848), uint16_t(1848), uint16_t(622), uint16_t(568), uint16_t(1847), uint16_t(1052)}, - [10]uint16_t{uint16_t(555), uint16_t(1064), uint16_t(1304), uint16_t(828), uint16_t(746), uint16_t(1343), uint16_t(1075), uint16_t(1329), uint16_t(1078), uint16_t(494)}, - [10]uint16_t{uint16_t(288), uint16_t(1167), uint16_t(1285), uint16_t(1174), uint16_t(1639), uint16_t(1639), uint16_t(833), uint16_t(2254), uint16_t(1304), uint16_t(509)}}, - [10][10]uint16_t{[10]uint16_t{uint16_t(342), uint16_t(719), uint16_t(767), uint16_t(1866), uint16_t(1757), uint16_t(1270), uint16_t(1246), uint16_t(550), uint16_t(1746), uint16_t(2151)}, - [10]uint16_t{uint16_t(483), uint16_t(653), uint16_t(694), uint16_t(1509), uint16_t(1459), uint16_t(1410), uint16_t(1218), uint16_t(507), uint16_t(1914), uint16_t(1266)}, - [10]uint16_t{uint16_t(488), uint16_t(757), uint16_t(447), uint16_t(2979), uint16_t(1813), uint16_t(1268), uint16_t(1654), uint16_t(539), uint16_t(1849), uint16_t(2109)}, - [10]uint16_t{uint16_t(522), uint16_t(1097), uint16_t(1085), uint16_t(851), uint16_t(1365), uint16_t(1111), uint16_t(851), uint16_t(901), uint16_t(961), uint16_t(605)}, - [10]uint16_t{uint16_t(709), uint16_t(716), uint16_t(841), uint16_t(728), uint16_t(736), uint16_t(945), uint16_t(941), uint16_t(862), uint16_t(2845), uint16_t(1057)}, - [10]uint16_t{uint16_t(512), uint16_t(1323), uint16_t(500), uint16_t(1336), uint16_t(1083), uint16_t(681), uint16_t(1342), uint16_t(717), uint16_t(1604), uint16_t(1350)}, - [10]uint16_t{uint16_t(452), uint16_t(1155), uint16_t(1372), uint16_t(1900), uint16_t(1501), uint16_t(3290), uint16_t(311), uint16_t(944), uint16_t(1919), uint16_t(922)}, - [10]uint16_t{uint16_t(403), uint16_t(1520), uint16_t(977), uint16_t(2132), uint16_t(1733), uint16_t(3522), uint16_t(1076), uint16_t(276), uint16_t(3335), uint16_t(1547)}, - [10]uint16_t{uint16_t(559), uint16_t(1374), uint16_t(1101), uint16_t(615), uint16_t(673), uint16_t(2462), uint16_t(974), uint16_t(795), uint16_t(984), uint16_t(984)}, - [10]uint16_t{uint16_t(547), uint16_t(1122), uint16_t(1062), uint16_t(812), uint16_t(1410), uint16_t(951), uint16_t(1140), uint16_t(622), uint16_t(1268), uint16_t(651)}}, - [10][10]uint16_t{[10]uint16_t{uint16_t(165), uint16_t(982), uint16_t(1235), uint16_t(938), uint16_t(1334), uint16_t(1366), uint16_t(1659), uint16_t(1578), uint16_t(964), uint16_t(1612)}, - [10]uint16_t{uint16_t(592), uint16_t(422), uint16_t(925), uint16_t(847), uint16_t(1139), uint16_t(1112), uint16_t(1387), uint16_t(2036), uint16_t(861), uint16_t(1041)}, - [10]uint16_t{uint16_t(403), uint16_t(837), uint16_t(732), uint16_t(770), uint16_t(941), uint16_t(1658), uint16_t(1250), uint16_t(809), uint16_t(1407), uint16_t(1407)}, - [10]uint16_t{uint16_t(896), uint16_t(874), uint16_t(1071), uint16_t(381), uint16_t(1568), uint16_t(1722), uint16_t(1437), uint16_t(2192), uint16_t(480), uint16_t(1035)}, - [10]uint16_t{uint16_t(640), uint16_t(1098), uint16_t(1012), uint16_t(1032), uint16_t(684), uint16_t(1382), uint16_t(1581), uint16_t(2106), uint16_t(416), uint16_t(865)}, - [10]uint16_t{uint16_t(559), uint16_t(1005), uint16_t(819), uint16_t(914), uint16_t(710), uint16_t(770), uint16_t(1418), uint16_t(920), uint16_t(838), uint16_t(1435)}, - [10]uint16_t{uint16_t(415), uint16_t(1258), uint16_t(1245), uint16_t(870), uint16_t(1278), uint16_t(3067), uint16_t(770), uint16_t(1021), uint16_t(1287), uint16_t(522)}, - [10]uint16_t{uint16_t(406), uint16_t(990), uint16_t(601), uint16_t(1009), uint16_t(1265), uint16_t(1265), uint16_t(1267), uint16_t(759), uint16_t(1017), uint16_t(1277)}, - [10]uint16_t{uint16_t(968), uint16_t(1182), uint16_t(1329), uint16_t(788), uint16_t(1032), uint16_t(1292), uint16_t(1705), uint16_t(1714), uint16_t(203), uint16_t(1403)}, - [10]uint16_t{uint16_t(732), uint16_t(877), uint16_t(1279), uint16_t(471), uint16_t(901), uint16_t(1161), uint16_t(1545), uint16_t(1294), uint16_t(755), uint16_t(755)}}, - [10][10]uint16_t{[10]uint16_t{uint16_t(111), uint16_t(931), uint16_t(1378), uint16_t(1185), uint16_t(1933), uint16_t(1648), uint16_t(1148), uint16_t(1714), uint16_t(1873), uint16_t(1307)}, - [10]uint16_t{uint16_t(406), uint16_t(414), uint16_t(1030), uint16_t(1023), uint16_t(1910), uint16_t(1404), uint16_t(1313), uint16_t(1647), uint16_t(1509), uint16_t(793)}, - [10]uint16_t{uint16_t(342), uint16_t(640), uint16_t(575), uint16_t(1088), uint16_t(1241), uint16_t(1349), uint16_t(1161), uint16_t(1350), uint16_t(1756), uint16_t(1502)}, - [10]uint16_t{uint16_t(559), uint16_t(766), uint16_t(1185), uint16_t(357), uint16_t(1682), uint16_t(1428), uint16_t(1329), uint16_t(1897), uint16_t(1219), uint16_t(802)}, - [10]uint16_t{uint16_t(473), uint16_t(909), uint16_t(1164), uint16_t(771), uint16_t(719), uint16_t(2508), uint16_t(1427), uint16_t(1432), uint16_t(722), uint16_t(782)}, - [10]uint16_t{uint16_t(342), uint16_t(892), uint16_t(785), uint16_t(1145), uint16_t(1150), uint16_t(794), uint16_t(1296), uint16_t(1550), uint16_t(973), uint16_t(1057)}, - [10]uint16_t{uint16_t(208), uint16_t(1036), uint16_t(1326), uint16_t(1343), uint16_t(1606), uint16_t(3395), uint16_t(815), uint16_t(1455), uint16_t(1618), uint16_t(712)}, - [10]uint16_t{uint16_t(228), uint16_t(928), uint16_t(890), uint16_t(1046), uint16_t(3499), uint16_t(1711), uint16_t(994), uint16_t(829), uint16_t(1720), uint16_t(1318)}, - [10]uint16_t{uint16_t(768), uint16_t(724), uint16_t(1058), uint16_t(636), uint16_t(991), uint16_t(1075), uint16_t(1319), uint16_t(1324), uint16_t(616), uint16_t(825)}, - [10]uint16_t{uint16_t(305), uint16_t(1167), uint16_t(1358), uint16_t(899), uint16_t(1587), uint16_t(1587), uint16_t(987), uint16_t(1988), uint16_t(1332), uint16_t(501)}}} /* cost_enc.c:100:16 */ +var VP8FixedCostsI4 = [10][10][10]uint16_t{{ + {uint16_t(40), uint16_t(1151), uint16_t(1723), uint16_t(1874), uint16_t(2103), uint16_t(2019), uint16_t(1628), uint16_t(1777), uint16_t(2226), uint16_t(2137)}, + {uint16_t(192), uint16_t(469), uint16_t(1296), uint16_t(1308), uint16_t(1849), uint16_t(1794), uint16_t(1781), uint16_t(1703), uint16_t(1713), uint16_t(1522)}, + {uint16_t(142), uint16_t(910), uint16_t(762), uint16_t(1684), uint16_t(1849), uint16_t(1576), uint16_t(1460), uint16_t(1305), uint16_t(1801), uint16_t(1657)}, + {uint16_t(559), uint16_t(641), uint16_t(1370), uint16_t(421), uint16_t(1182), uint16_t(1569), uint16_t(1612), uint16_t(1725), uint16_t(863), uint16_t(1007)}, + {uint16_t(299), uint16_t(1059), uint16_t(1256), uint16_t(1108), uint16_t(636), uint16_t(1068), uint16_t(1581), uint16_t(1883), uint16_t(869), uint16_t(1142)}, + {uint16_t(277), uint16_t(1111), uint16_t(707), uint16_t(1362), uint16_t(1089), uint16_t(672), uint16_t(1603), uint16_t(1541), uint16_t(1545), uint16_t(1291)}, + {uint16_t(214), uint16_t(781), uint16_t(1609), uint16_t(1303), uint16_t(1632), uint16_t(2229), uint16_t(726), uint16_t(1560), uint16_t(1713), uint16_t(918)}, + {uint16_t(152), uint16_t(1037), uint16_t(1046), uint16_t(1759), uint16_t(1983), uint16_t(2174), uint16_t(1358), uint16_t(742), uint16_t(1740), uint16_t(1390)}, + {uint16_t(512), uint16_t(1046), uint16_t(1420), uint16_t(753), uint16_t(752), uint16_t(1297), uint16_t(1486), uint16_t(1613), uint16_t(460), uint16_t(1207)}, + {uint16_t(424), uint16_t(827), uint16_t(1362), uint16_t(719), uint16_t(1462), uint16_t(1202), uint16_t(1199), uint16_t(1476), uint16_t(1199), uint16_t(538)}}, + {{uint16_t(240), uint16_t(402), uint16_t(1134), uint16_t(1491), uint16_t(1659), uint16_t(1505), uint16_t(1517), uint16_t(1555), uint16_t(1979), uint16_t(2099)}, + {uint16_t(467), uint16_t(242), uint16_t(960), uint16_t(1232), uint16_t(1714), uint16_t(1620), uint16_t(1834), uint16_t(1570), uint16_t(1676), uint16_t(1391)}, + {uint16_t(500), uint16_t(455), uint16_t(463), uint16_t(1507), uint16_t(1699), uint16_t(1282), uint16_t(1564), uint16_t(982), uint16_t(2114), uint16_t(2114)}, + {uint16_t(672), uint16_t(643), uint16_t(1372), uint16_t(331), uint16_t(1589), uint16_t(1667), uint16_t(1453), uint16_t(1938), uint16_t(996), uint16_t(876)}, + {uint16_t(458), uint16_t(783), uint16_t(1037), uint16_t(911), uint16_t(738), uint16_t(968), uint16_t(1165), uint16_t(1518), uint16_t(859), uint16_t(1033)}, + {uint16_t(504), uint16_t(815), uint16_t(504), uint16_t(1139), uint16_t(1219), uint16_t(719), uint16_t(1506), uint16_t(1085), uint16_t(1268), uint16_t(1268)}, + {uint16_t(333), uint16_t(630), uint16_t(1445), uint16_t(1239), uint16_t(1883), uint16_t(3672), uint16_t(799), uint16_t(1548), uint16_t(1865), uint16_t(598)}, + {uint16_t(399), uint16_t(644), uint16_t(746), uint16_t(1342), uint16_t(1856), uint16_t(1350), uint16_t(1493), uint16_t(613), uint16_t(1855), uint16_t(1015)}, + {uint16_t(622), uint16_t(749), uint16_t(1205), uint16_t(608), uint16_t(1066), uint16_t(1408), uint16_t(1290), uint16_t(1406), uint16_t(546), uint16_t(971)}, + {uint16_t(500), uint16_t(753), uint16_t(1041), uint16_t(668), uint16_t(1230), uint16_t(1617), uint16_t(1297), uint16_t(1425), uint16_t(1383), uint16_t(523)}}, + {{uint16_t(394), uint16_t(553), uint16_t(523), uint16_t(1502), uint16_t(1536), uint16_t(981), uint16_t(1608), uint16_t(1142), uint16_t(1666), uint16_t(2181)}, + {uint16_t(655), uint16_t(430), uint16_t(375), uint16_t(1411), uint16_t(1861), uint16_t(1220), uint16_t(1677), uint16_t(1135), uint16_t(1978), uint16_t(1553)}, + {uint16_t(690), uint16_t(640), uint16_t(245), uint16_t(1954), uint16_t(2070), uint16_t(1194), uint16_t(1528), uint16_t(982), uint16_t(1972), uint16_t(2232)}, + {uint16_t(559), uint16_t(834), uint16_t(741), uint16_t(867), uint16_t(1131), uint16_t(980), uint16_t(1225), uint16_t(852), uint16_t(1092), uint16_t(784)}, + {uint16_t(690), uint16_t(875), uint16_t(516), uint16_t(959), uint16_t(673), uint16_t(894), uint16_t(1056), uint16_t(1190), uint16_t(1528), uint16_t(1126)}, + {uint16_t(740), uint16_t(951), uint16_t(384), uint16_t(1277), uint16_t(1177), uint16_t(492), uint16_t(1579), uint16_t(1155), uint16_t(1846), uint16_t(1513)}, + {uint16_t(323), uint16_t(775), uint16_t(1062), uint16_t(1776), uint16_t(3062), uint16_t(1274), uint16_t(813), uint16_t(1188), uint16_t(1372), uint16_t(655)}, + {uint16_t(488), uint16_t(971), uint16_t(484), uint16_t(1767), uint16_t(1515), uint16_t(1775), uint16_t(1115), uint16_t(503), uint16_t(1539), uint16_t(1461)}, + {uint16_t(740), uint16_t(1006), uint16_t(998), uint16_t(709), uint16_t(851), uint16_t(1230), uint16_t(1337), uint16_t(788), uint16_t(741), uint16_t(721)}, + {uint16_t(522), uint16_t(1073), uint16_t(573), uint16_t(1045), uint16_t(1346), uint16_t(887), uint16_t(1046), uint16_t(1146), uint16_t(1203), uint16_t(697)}}, + {{uint16_t(105), uint16_t(864), uint16_t(1442), uint16_t(1009), uint16_t(1934), uint16_t(1840), uint16_t(1519), uint16_t(1920), uint16_t(1673), uint16_t(1579)}, + {uint16_t(534), uint16_t(305), uint16_t(1193), uint16_t(683), uint16_t(1388), uint16_t(2164), uint16_t(1802), uint16_t(1894), uint16_t(1264), uint16_t(1170)}, + {uint16_t(305), uint16_t(518), uint16_t(877), uint16_t(1108), uint16_t(1426), uint16_t(3215), uint16_t(1425), uint16_t(1064), uint16_t(1320), uint16_t(1242)}, + {uint16_t(683), uint16_t(732), uint16_t(1927), uint16_t(257), uint16_t(1493), uint16_t(2048), uint16_t(1858), uint16_t(1552), uint16_t(1055), uint16_t(947)}, + {uint16_t(394), uint16_t(814), uint16_t(1024), uint16_t(660), uint16_t(959), uint16_t(1556), uint16_t(1282), uint16_t(1289), uint16_t(893), uint16_t(1047)}, + {uint16_t(528), uint16_t(615), uint16_t(996), uint16_t(940), uint16_t(1201), uint16_t(635), uint16_t(1094), uint16_t(2515), uint16_t(803), uint16_t(1358)}, + {uint16_t(347), uint16_t(614), uint16_t(1609), uint16_t(1187), uint16_t(3133), uint16_t(1345), uint16_t(1007), uint16_t(1339), uint16_t(1017), uint16_t(667)}, + {uint16_t(218), uint16_t(740), uint16_t(878), uint16_t(1605), uint16_t(3650), uint16_t(3650), uint16_t(1345), uint16_t(758), uint16_t(1357), uint16_t(1617)}, + {uint16_t(672), uint16_t(750), uint16_t(1541), uint16_t(558), uint16_t(1257), uint16_t(1599), uint16_t(1870), uint16_t(2135), uint16_t(402), uint16_t(1087)}, + {uint16_t(592), uint16_t(684), uint16_t(1161), uint16_t(430), uint16_t(1092), uint16_t(1497), uint16_t(1475), uint16_t(1489), uint16_t(1095), uint16_t(822)}}, + {{uint16_t(228), uint16_t(1056), uint16_t(1059), uint16_t(1368), uint16_t(752), uint16_t(982), uint16_t(1512), uint16_t(1518), uint16_t(987), uint16_t(1782)}, + {uint16_t(494), uint16_t(514), uint16_t(818), uint16_t(942), uint16_t(965), uint16_t(892), uint16_t(1610), uint16_t(1356), uint16_t(1048), uint16_t(1363)}, + {uint16_t(512), uint16_t(648), uint16_t(591), uint16_t(1042), uint16_t(761), uint16_t(991), uint16_t(1196), uint16_t(1454), uint16_t(1309), uint16_t(1463)}, + {uint16_t(683), uint16_t(749), uint16_t(1043), uint16_t(676), uint16_t(841), uint16_t(1396), uint16_t(1133), uint16_t(1138), uint16_t(654), uint16_t(939)}, + {uint16_t(622), uint16_t(1101), uint16_t(1126), uint16_t(994), uint16_t(361), uint16_t(1077), uint16_t(1203), uint16_t(1318), uint16_t(877), uint16_t(1219)}, + {uint16_t(631), uint16_t(1068), uint16_t(857), uint16_t(1650), uint16_t(651), uint16_t(477), uint16_t(1650), uint16_t(1419), uint16_t(828), uint16_t(1170)}, + {uint16_t(555), uint16_t(727), uint16_t(1068), uint16_t(1335), uint16_t(3127), uint16_t(1339), uint16_t(820), uint16_t(1331), uint16_t(1077), uint16_t(429)}, + {uint16_t(504), uint16_t(879), uint16_t(624), uint16_t(1398), uint16_t(889), uint16_t(889), uint16_t(1392), uint16_t(808), uint16_t(891), uint16_t(1406)}, + {uint16_t(683), uint16_t(1602), uint16_t(1289), uint16_t(977), uint16_t(578), uint16_t(983), uint16_t(1280), uint16_t(1708), uint16_t(406), uint16_t(1122)}, + {uint16_t(399), uint16_t(865), uint16_t(1433), uint16_t(1070), uint16_t(1072), uint16_t(764), uint16_t(968), uint16_t(1477), uint16_t(1223), uint16_t(678)}}, + {{uint16_t(333), uint16_t(760), uint16_t(935), uint16_t(1638), uint16_t(1010), uint16_t(529), uint16_t(1646), uint16_t(1410), uint16_t(1472), uint16_t(2219)}, + {uint16_t(512), uint16_t(494), uint16_t(750), uint16_t(1160), uint16_t(1215), uint16_t(610), uint16_t(1870), uint16_t(1868), uint16_t(1628), uint16_t(1169)}, + {uint16_t(572), uint16_t(646), uint16_t(492), uint16_t(1934), uint16_t(1208), uint16_t(603), uint16_t(1580), uint16_t(1099), uint16_t(1398), uint16_t(1995)}, + {uint16_t(786), uint16_t(789), uint16_t(942), uint16_t(581), uint16_t(1018), uint16_t(951), uint16_t(1599), uint16_t(1207), uint16_t(731), uint16_t(768)}, + {uint16_t(690), uint16_t(1015), uint16_t(672), uint16_t(1078), uint16_t(582), uint16_t(504), uint16_t(1693), uint16_t(1438), uint16_t(1108), uint16_t(2897)}, + {uint16_t(768), uint16_t(1267), uint16_t(571), uint16_t(2005), uint16_t(1243), uint16_t(244), uint16_t(2881), uint16_t(1380), uint16_t(1786), uint16_t(1453)}, + {uint16_t(452), uint16_t(899), uint16_t(1293), uint16_t(903), uint16_t(1311), uint16_t(3100), uint16_t(465), uint16_t(1311), uint16_t(1319), uint16_t(813)}, + {uint16_t(394), uint16_t(927), uint16_t(942), uint16_t(1103), uint16_t(1358), uint16_t(1104), uint16_t(946), uint16_t(593), uint16_t(1363), uint16_t(1109)}, + {uint16_t(559), uint16_t(1005), uint16_t(1007), uint16_t(1016), uint16_t(658), uint16_t(1173), uint16_t(1021), uint16_t(1164), uint16_t(623), uint16_t(1028)}, + {uint16_t(564), uint16_t(796), uint16_t(632), uint16_t(1005), uint16_t(1014), uint16_t(863), uint16_t(2316), uint16_t(1268), uint16_t(938), uint16_t(764)}}, + {{uint16_t(266), uint16_t(606), uint16_t(1098), uint16_t(1228), uint16_t(1497), uint16_t(1243), uint16_t(948), uint16_t(1030), uint16_t(1734), uint16_t(1461)}, + {uint16_t(366), uint16_t(585), uint16_t(901), uint16_t(1060), uint16_t(1407), uint16_t(1247), uint16_t(876), uint16_t(1134), uint16_t(1620), uint16_t(1054)}, + {uint16_t(452), uint16_t(565), uint16_t(542), uint16_t(1729), uint16_t(1479), uint16_t(1479), uint16_t(1016), uint16_t(886), uint16_t(2938), uint16_t(1150)}, + {uint16_t(555), uint16_t(1088), uint16_t(1533), uint16_t(950), uint16_t(1354), uint16_t(895), uint16_t(834), uint16_t(1019), uint16_t(1021), uint16_t(496)}, + {uint16_t(704), uint16_t(815), uint16_t(1193), uint16_t(971), uint16_t(973), uint16_t(640), uint16_t(1217), uint16_t(2214), uint16_t(832), uint16_t(578)}, + {uint16_t(672), uint16_t(1245), uint16_t(579), uint16_t(871), uint16_t(875), uint16_t(774), uint16_t(872), uint16_t(1273), uint16_t(1027), uint16_t(949)}, + {uint16_t(296), uint16_t(1134), uint16_t(2050), uint16_t(1784), uint16_t(1636), uint16_t(3425), uint16_t(442), uint16_t(1550), uint16_t(2076), uint16_t(722)}, + {uint16_t(342), uint16_t(982), uint16_t(1259), uint16_t(1846), uint16_t(1848), uint16_t(1848), uint16_t(622), uint16_t(568), uint16_t(1847), uint16_t(1052)}, + {uint16_t(555), uint16_t(1064), uint16_t(1304), uint16_t(828), uint16_t(746), uint16_t(1343), uint16_t(1075), uint16_t(1329), uint16_t(1078), uint16_t(494)}, + {uint16_t(288), uint16_t(1167), uint16_t(1285), uint16_t(1174), uint16_t(1639), uint16_t(1639), uint16_t(833), uint16_t(2254), uint16_t(1304), uint16_t(509)}}, + {{uint16_t(342), uint16_t(719), uint16_t(767), uint16_t(1866), uint16_t(1757), uint16_t(1270), uint16_t(1246), uint16_t(550), uint16_t(1746), uint16_t(2151)}, + {uint16_t(483), uint16_t(653), uint16_t(694), uint16_t(1509), uint16_t(1459), uint16_t(1410), uint16_t(1218), uint16_t(507), uint16_t(1914), uint16_t(1266)}, + {uint16_t(488), uint16_t(757), uint16_t(447), uint16_t(2979), uint16_t(1813), uint16_t(1268), uint16_t(1654), uint16_t(539), uint16_t(1849), uint16_t(2109)}, + {uint16_t(522), uint16_t(1097), uint16_t(1085), uint16_t(851), uint16_t(1365), uint16_t(1111), uint16_t(851), uint16_t(901), uint16_t(961), uint16_t(605)}, + {uint16_t(709), uint16_t(716), uint16_t(841), uint16_t(728), uint16_t(736), uint16_t(945), uint16_t(941), uint16_t(862), uint16_t(2845), uint16_t(1057)}, + {uint16_t(512), uint16_t(1323), uint16_t(500), uint16_t(1336), uint16_t(1083), uint16_t(681), uint16_t(1342), uint16_t(717), uint16_t(1604), uint16_t(1350)}, + {uint16_t(452), uint16_t(1155), uint16_t(1372), uint16_t(1900), uint16_t(1501), uint16_t(3290), uint16_t(311), uint16_t(944), uint16_t(1919), uint16_t(922)}, + {uint16_t(403), uint16_t(1520), uint16_t(977), uint16_t(2132), uint16_t(1733), uint16_t(3522), uint16_t(1076), uint16_t(276), uint16_t(3335), uint16_t(1547)}, + {uint16_t(559), uint16_t(1374), uint16_t(1101), uint16_t(615), uint16_t(673), uint16_t(2462), uint16_t(974), uint16_t(795), uint16_t(984), uint16_t(984)}, + {uint16_t(547), uint16_t(1122), uint16_t(1062), uint16_t(812), uint16_t(1410), uint16_t(951), uint16_t(1140), uint16_t(622), uint16_t(1268), uint16_t(651)}}, + {{uint16_t(165), uint16_t(982), uint16_t(1235), uint16_t(938), uint16_t(1334), uint16_t(1366), uint16_t(1659), uint16_t(1578), uint16_t(964), uint16_t(1612)}, + {uint16_t(592), uint16_t(422), uint16_t(925), uint16_t(847), uint16_t(1139), uint16_t(1112), uint16_t(1387), uint16_t(2036), uint16_t(861), uint16_t(1041)}, + {uint16_t(403), uint16_t(837), uint16_t(732), uint16_t(770), uint16_t(941), uint16_t(1658), uint16_t(1250), uint16_t(809), uint16_t(1407), uint16_t(1407)}, + {uint16_t(896), uint16_t(874), uint16_t(1071), uint16_t(381), uint16_t(1568), uint16_t(1722), uint16_t(1437), uint16_t(2192), uint16_t(480), uint16_t(1035)}, + {uint16_t(640), uint16_t(1098), uint16_t(1012), uint16_t(1032), uint16_t(684), uint16_t(1382), uint16_t(1581), uint16_t(2106), uint16_t(416), uint16_t(865)}, + {uint16_t(559), uint16_t(1005), uint16_t(819), uint16_t(914), uint16_t(710), uint16_t(770), uint16_t(1418), uint16_t(920), uint16_t(838), uint16_t(1435)}, + {uint16_t(415), uint16_t(1258), uint16_t(1245), uint16_t(870), uint16_t(1278), uint16_t(3067), uint16_t(770), uint16_t(1021), uint16_t(1287), uint16_t(522)}, + {uint16_t(406), uint16_t(990), uint16_t(601), uint16_t(1009), uint16_t(1265), uint16_t(1265), uint16_t(1267), uint16_t(759), uint16_t(1017), uint16_t(1277)}, + {uint16_t(968), uint16_t(1182), uint16_t(1329), uint16_t(788), uint16_t(1032), uint16_t(1292), uint16_t(1705), uint16_t(1714), uint16_t(203), uint16_t(1403)}, + {uint16_t(732), uint16_t(877), uint16_t(1279), uint16_t(471), uint16_t(901), uint16_t(1161), uint16_t(1545), uint16_t(1294), uint16_t(755), uint16_t(755)}}, + {{uint16_t(111), uint16_t(931), uint16_t(1378), uint16_t(1185), uint16_t(1933), uint16_t(1648), uint16_t(1148), uint16_t(1714), uint16_t(1873), uint16_t(1307)}, + {uint16_t(406), uint16_t(414), uint16_t(1030), uint16_t(1023), uint16_t(1910), uint16_t(1404), uint16_t(1313), uint16_t(1647), uint16_t(1509), uint16_t(793)}, + {uint16_t(342), uint16_t(640), uint16_t(575), uint16_t(1088), uint16_t(1241), uint16_t(1349), uint16_t(1161), uint16_t(1350), uint16_t(1756), uint16_t(1502)}, + {uint16_t(559), uint16_t(766), uint16_t(1185), uint16_t(357), uint16_t(1682), uint16_t(1428), uint16_t(1329), uint16_t(1897), uint16_t(1219), uint16_t(802)}, + {uint16_t(473), uint16_t(909), uint16_t(1164), uint16_t(771), uint16_t(719), uint16_t(2508), uint16_t(1427), uint16_t(1432), uint16_t(722), uint16_t(782)}, + {uint16_t(342), uint16_t(892), uint16_t(785), uint16_t(1145), uint16_t(1150), uint16_t(794), uint16_t(1296), uint16_t(1550), uint16_t(973), uint16_t(1057)}, + {uint16_t(208), uint16_t(1036), uint16_t(1326), uint16_t(1343), uint16_t(1606), uint16_t(3395), uint16_t(815), uint16_t(1455), uint16_t(1618), uint16_t(712)}, + {uint16_t(228), uint16_t(928), uint16_t(890), uint16_t(1046), uint16_t(3499), uint16_t(1711), uint16_t(994), uint16_t(829), uint16_t(1720), uint16_t(1318)}, + {uint16_t(768), uint16_t(724), uint16_t(1058), uint16_t(636), uint16_t(991), uint16_t(1075), uint16_t(1319), uint16_t(1324), uint16_t(616), uint16_t(825)}, + {uint16_t(305), uint16_t(1167), uint16_t(1358), uint16_t(899), uint16_t(1587), uint16_t(1587), uint16_t(987), uint16_t(1988), uint16_t(1332), uint16_t(501)}}} /* cost_enc.c:100:16 */ //------------------------------------------------------------------------------ // helper functions for residuals struct VP8Residual. func VP8InitResidual(tls *libc.TLS, first int32, coeff_type int32, enc uintptr, res uintptr) { /* cost_enc.c:206:6: */ (*VP8Residual)(unsafe.Pointer(res)).coeff_type = coeff_type - (*VP8Residual)(unsafe.Pointer(res)).prob = (((enc + 3616 /* &.proba_ */) + 4 /* &.coeffs_ */) + uintptr(coeff_type)*264) - (*VP8Residual)(unsafe.Pointer(res)).stats = (((enc + 3616 /* &.proba_ */) + 1060 /* &.stats_ */) + uintptr(coeff_type)*1056) - (*VP8Residual)(unsafe.Pointer(res)).costs = (((enc + 3616 /* &.proba_ */) + 18344 /* &.remapped_costs_ */) + uintptr(coeff_type)*384) + (*VP8Residual)(unsafe.Pointer(res)).prob = enc + 3616 + 4 + uintptr(coeff_type)*264 + (*VP8Residual)(unsafe.Pointer(res)).stats = enc + 3616 + 1060 + uintptr(coeff_type)*1056 + (*VP8Residual)(unsafe.Pointer(res)).costs = enc + 3616 + 18344 + uintptr(coeff_type)*384 (*VP8Residual)(unsafe.Pointer(res)).first = first } @@ -25654,22 +25367,22 @@ func VP8GetCostLuma4(tls *libc.TLS, it uintptr, levels uintptr) int32 { /* cost_ bp := tls.Alloc(48) defer tls.Free(48) - var x int32 = ((*VP8EncIterator)(unsafe.Pointer(it)).i4_ & 3) - var y int32 = ((*VP8EncIterator)(unsafe.Pointer(it)).i4_ >> 2) + var x int32 = (*VP8EncIterator)(unsafe.Pointer(it)).i4_ & 3 + var y int32 = (*VP8EncIterator)(unsafe.Pointer(it)).i4_ >> 2 // var res VP8Residual at bp, 48 var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ var R int32 = 0 var ctx int32 - VP8InitResidual(tls, 0, 3, enc, (bp) /* &res */) - ctx = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(x)*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + uintptr(y)*4))) + VP8InitResidual(tls, 0, 3, enc, bp) + ctx = *(*int32)(unsafe.Pointer(it + 132 + uintptr(x)*4)) + *(*int32)(unsafe.Pointer(it + 168 + uintptr(y)*4)) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, levels, (bp) /* &res */) - R = R + ((*struct { + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, levels, bp /* &res */) + R = R + (*struct { f func(*libc.TLS, int32, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8GetResidualCost})).f(tls, ctx, (bp) /* &res */)) + })(unsafe.Pointer(&struct{ uintptr }{VP8GetResidualCost})).f(tls, ctx, bp) return R } @@ -25687,26 +25400,26 @@ func VP8GetCostLuma16(tls *libc.TLS, it uintptr, rd uintptr) int32 { /* cost_enc VP8IteratorNzToBytes(tls, it) // re-import the non-zero context // DC - VP8InitResidual(tls, 0, 1, enc, (bp) /* &res */) + VP8InitResidual(tls, 0, 1, enc, bp) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, (rd + 40 /* &.y_dc_levels */), (bp) /* &res */) - R = R + ((*struct { + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, rd+40 /* &.y_dc_levels */, bp /* &res */) + R = R + (*struct { f func(*libc.TLS, int32, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8GetResidualCost})).f(tls, (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + 8*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + 8*4))), (bp) /* &res */)) + })(unsafe.Pointer(&struct{ uintptr }{VP8GetResidualCost})).f(tls, *(*int32)(unsafe.Pointer(it + 132 + 8*4))+*(*int32)(unsafe.Pointer(it + 168 + 8*4)), bp) // AC - VP8InitResidual(tls, 1, 0, enc, (bp) /* &res */) + VP8InitResidual(tls, 1, 0, enc, bp) for y = 0; y < 4; y++ { for x = 0; x < 4; x++ { - var ctx int32 = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(x)*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + uintptr(y)*4))) + var ctx int32 = *(*int32)(unsafe.Pointer(it + 132 + uintptr(x)*4)) + *(*int32)(unsafe.Pointer(it + 168 + uintptr(y)*4)) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, ((rd + 72 /* &.y_ac_levels */) + uintptr((x+(y*4)))*32), (bp) /* &res */) - R = R + ((*struct { + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, rd+72 /* &.y_ac_levels */ +uintptr(x+y*4)*32, bp /* &res */) + R = R + (*struct { f func(*libc.TLS, int32, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8GetResidualCost})).f(tls, ctx, (bp) /* &res */)) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(x)*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + uintptr(y)*4), (libc.Bool32((*VP8Residual)(unsafe.Pointer(bp /* &res */)).last >= 0))) + })(unsafe.Pointer(&struct{ uintptr }{VP8GetResidualCost})).f(tls, ctx, bp) + *(*int32)(unsafe.Pointer(it + 132 + uintptr(x)*4)) = libc.AssignPtrInt32(it+168+uintptr(y)*4, libc.Bool32((*VP8Residual)(unsafe.Pointer(bp)).last >= 0)) } } return R @@ -25726,18 +25439,18 @@ func VP8GetCostUV(tls *libc.TLS, it uintptr, rd uintptr) int32 { /* cost_enc.c:2 VP8IteratorNzToBytes(tls, it) // re-import the non-zero context - VP8InitResidual(tls, 0, 2, enc, (bp) /* &res */) - for ch = 0; ch <= 2; ch = ch + (2) { + VP8InitResidual(tls, 0, 2, enc, bp) + for ch = 0; ch <= 2; ch = ch + 2 { for y = 0; y < 2; y++ { for x = 0; x < 2; x++ { - var ctx int32 = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(((4+ch)+x))*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + uintptr(((4+ch)+y))*4))) + var ctx int32 = *(*int32)(unsafe.Pointer(it + 132 + uintptr(4+ch+x)*4)) + *(*int32)(unsafe.Pointer(it + 168 + uintptr(4+ch+y)*4)) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, ((rd + 584 /* &.uv_levels */) + uintptr((((ch*2)+x)+(y*2)))*32), (bp) /* &res */) - R = R + ((*struct { + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, rd+584 /* &.uv_levels */ +uintptr(ch*2+x+y*2)*32, bp /* &res */) + R = R + (*struct { f func(*libc.TLS, int32, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8GetResidualCost})).f(tls, ctx, (bp) /* &res */)) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(((4+ch)+x))*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + uintptr(((4+ch)+y))*4), (libc.Bool32((*VP8Residual)(unsafe.Pointer(bp /* &res */)).last >= 0))) + })(unsafe.Pointer(&struct{ uintptr }{VP8GetResidualCost})).f(tls, ctx, bp) + *(*int32)(unsafe.Pointer(it + 132 + uintptr(4+ch+x)*4)) = libc.AssignPtrInt32(it+168+uintptr(4+ch+y)*4, libc.Bool32((*VP8Residual)(unsafe.Pointer(bp)).last >= 0)) } } } @@ -25754,21 +25467,21 @@ func VP8GetCostUV(tls *libc.TLS, it uintptr, rd uintptr) int32 { /* cost_enc.c:2 func VP8RecordCoeffs(tls *libc.TLS, ctx int32, res uintptr) int32 { /* cost_enc.c:289:5: */ var n int32 = (*VP8Residual)(unsafe.Pointer(res)).first // should be stats[VP8EncBands[n]], but it's equivalent for n=0 or 1 - var s uintptr = (((*VP8Residual)(unsafe.Pointer(res)).stats + uintptr(n)*132) + uintptr(ctx)*44) + var s uintptr = (*VP8Residual)(unsafe.Pointer(res)).stats + uintptr(n)*132 + uintptr(ctx)*44 if (*VP8Residual)(unsafe.Pointer(res)).last < 0 { - VP8RecordStats(tls, 0, (s + uintptr(0)*4)) + VP8RecordStats(tls, 0, s+uintptr(0)*4) return 0 } for n <= (*VP8Residual)(unsafe.Pointer(res)).last { var v int32 - VP8RecordStats(tls, 1, (s + uintptr(0)*4)) // order of record doesn't matter - for (libc.AssignInt32(&v, int32(*(*int16_t)(unsafe.Pointer((*VP8Residual)(unsafe.Pointer(res)).coeffs + uintptr(libc.PostIncInt32(&n, 1))*2))))) == 0 { - VP8RecordStats(tls, 0, (s + uintptr(1)*4)) - s = ((*VP8Residual)(unsafe.Pointer(res)).stats + uintptr(VP8EncBands[n])*132) - } - VP8RecordStats(tls, 1, (s + uintptr(1)*4)) - if !(VP8RecordStats(tls, (libc.Bool32(2 < (uint32(v+1)))), (s+uintptr(2)*4)) != 0) { // v = -1 or 1 - s = (((*VP8Residual)(unsafe.Pointer(res)).stats + uintptr(VP8EncBands[n])*132) + 1*44) + VP8RecordStats(tls, 1, s+uintptr(0)*4) // order of record doesn't matter + for libc.AssignInt32(&v, int32(*(*int16_t)(unsafe.Pointer((*VP8Residual)(unsafe.Pointer(res)).coeffs + uintptr(libc.PostIncInt32(&n, 1))*2)))) == 0 { + VP8RecordStats(tls, 0, s+uintptr(1)*4) + s = (*VP8Residual)(unsafe.Pointer(res)).stats + uintptr(VP8EncBands[n])*132 + } + VP8RecordStats(tls, 1, s+uintptr(1)*4) + if !(VP8RecordStats(tls, libc.Bool32(2 < uint32(v+1)), s+uintptr(2)*4) != 0) { // v = -1 or 1 + s = (*VP8Residual)(unsafe.Pointer(res)).stats + uintptr(VP8EncBands[n])*132 + 1*44 } else { v = libc.Xabs(tls, v) if v > MAX_VARIABLE_LEVEL { @@ -25776,22 +25489,22 @@ func VP8RecordCoeffs(tls *libc.TLS, ctx int32, res uintptr) int32 { /* cost_enc. } { - var bits int32 = int32(*(*uint16_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&VP8LevelCodes)) + uintptr((v-1))*4) + 1*2))) - var pattern int32 = int32(*(*uint16_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&VP8LevelCodes)) + uintptr((v-1))*4)))) + var bits int32 = int32(*(*uint16_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8LevelCodes)) + uintptr(v-1)*4 + 1*2))) + var pattern int32 = int32(*(*uint16_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8LevelCodes)) + uintptr(v-1)*4))) var i int32 - for i = 0; (libc.AssignShrInt32(&pattern, int(1))) != 0; i++ { - var mask int32 = (int32(2) << i) - if (pattern & 1) != 0 { - VP8RecordStats(tls, libc.BoolInt32(!(!((bits & mask) != 0))), ((s + uintptr(3)*4) + uintptr(i)*4)) + for i = 0; libc.AssignShrInt32(&pattern, int(1)) != 0; i++ { + var mask int32 = int32(2) << i + if pattern&1 != 0 { + VP8RecordStats(tls, libc.BoolInt32(!!(bits&mask != 0)), s+uintptr(3)*4+uintptr(i)*4) } } } - s = (((*VP8Residual)(unsafe.Pointer(res)).stats + uintptr(VP8EncBands[n])*132) + 2*44) + s = (*VP8Residual)(unsafe.Pointer(res)).stats + uintptr(VP8EncBands[n])*132 + 2*44 } } if n < 16 { - VP8RecordStats(tls, 0, (s + uintptr(0)*4)) + VP8RecordStats(tls, 0, s+uintptr(0)*4) } return 1 } @@ -25819,35 +25532,35 @@ func VP8RecordCoeffs(tls *libc.TLS, ctx int32, res uintptr) int32 { /* cost_enc. // over all possible filtering strength / thresh until needs_filter() returns // true. var kLevelsFromDelta = [8][64]uint8_t{ - [64]uint8_t{uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(3), uint8_t(4), uint8_t(5), uint8_t(6), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(10), uint8_t(11), uint8_t(12), uint8_t(13), uint8_t(14), uint8_t(15), + {uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(3), uint8_t(4), uint8_t(5), uint8_t(6), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(10), uint8_t(11), uint8_t(12), uint8_t(13), uint8_t(14), uint8_t(15), uint8_t(16), uint8_t(17), uint8_t(18), uint8_t(19), uint8_t(20), uint8_t(21), uint8_t(22), uint8_t(23), uint8_t(24), uint8_t(25), uint8_t(26), uint8_t(27), uint8_t(28), uint8_t(29), uint8_t(30), uint8_t(31), uint8_t(32), uint8_t(33), uint8_t(34), uint8_t(35), uint8_t(36), uint8_t(37), uint8_t(38), uint8_t(39), uint8_t(40), uint8_t(41), uint8_t(42), uint8_t(43), uint8_t(44), uint8_t(45), uint8_t(46), uint8_t(47), uint8_t(48), uint8_t(49), uint8_t(50), uint8_t(51), uint8_t(52), uint8_t(53), uint8_t(54), uint8_t(55), uint8_t(56), uint8_t(57), uint8_t(58), uint8_t(59), uint8_t(60), uint8_t(61), uint8_t(62), uint8_t(63)}, - [64]uint8_t{uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(3), uint8_t(5), uint8_t(6), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(13), uint8_t(14), uint8_t(15), uint8_t(17), uint8_t(18), + {uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(3), uint8_t(5), uint8_t(6), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(13), uint8_t(14), uint8_t(15), uint8_t(17), uint8_t(18), uint8_t(20), uint8_t(21), uint8_t(23), uint8_t(24), uint8_t(26), uint8_t(27), uint8_t(29), uint8_t(30), uint8_t(32), uint8_t(33), uint8_t(35), uint8_t(36), uint8_t(38), uint8_t(39), uint8_t(41), uint8_t(42), uint8_t(44), uint8_t(45), uint8_t(47), uint8_t(48), uint8_t(50), uint8_t(51), uint8_t(53), uint8_t(54), uint8_t(56), uint8_t(57), uint8_t(59), uint8_t(60), uint8_t(62), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63)}, - [64]uint8_t{uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(3), uint8_t(5), uint8_t(6), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(13), uint8_t(14), uint8_t(16), uint8_t(17), uint8_t(19), + {uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(3), uint8_t(5), uint8_t(6), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(13), uint8_t(14), uint8_t(16), uint8_t(17), uint8_t(19), uint8_t(20), uint8_t(22), uint8_t(23), uint8_t(25), uint8_t(26), uint8_t(28), uint8_t(29), uint8_t(31), uint8_t(32), uint8_t(34), uint8_t(35), uint8_t(37), uint8_t(38), uint8_t(40), uint8_t(41), uint8_t(43), uint8_t(44), uint8_t(46), uint8_t(47), uint8_t(49), uint8_t(50), uint8_t(52), uint8_t(53), uint8_t(55), uint8_t(56), uint8_t(58), uint8_t(59), uint8_t(61), uint8_t(62), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63)}, - [64]uint8_t{uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(3), uint8_t(5), uint8_t(6), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(13), uint8_t(15), uint8_t(16), uint8_t(18), uint8_t(19), + {uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(3), uint8_t(5), uint8_t(6), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(13), uint8_t(15), uint8_t(16), uint8_t(18), uint8_t(19), uint8_t(21), uint8_t(22), uint8_t(24), uint8_t(25), uint8_t(27), uint8_t(28), uint8_t(30), uint8_t(31), uint8_t(33), uint8_t(34), uint8_t(36), uint8_t(37), uint8_t(39), uint8_t(40), uint8_t(42), uint8_t(43), uint8_t(45), uint8_t(46), uint8_t(48), uint8_t(49), uint8_t(51), uint8_t(52), uint8_t(54), uint8_t(55), uint8_t(57), uint8_t(58), uint8_t(60), uint8_t(61), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63)}, - [64]uint8_t{uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(3), uint8_t(5), uint8_t(6), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(14), uint8_t(15), uint8_t(17), uint8_t(18), uint8_t(20), + {uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(3), uint8_t(5), uint8_t(6), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(14), uint8_t(15), uint8_t(17), uint8_t(18), uint8_t(20), uint8_t(21), uint8_t(23), uint8_t(24), uint8_t(26), uint8_t(27), uint8_t(29), uint8_t(30), uint8_t(32), uint8_t(33), uint8_t(35), uint8_t(36), uint8_t(38), uint8_t(39), uint8_t(41), uint8_t(42), uint8_t(44), uint8_t(45), uint8_t(47), uint8_t(48), uint8_t(50), uint8_t(51), uint8_t(53), uint8_t(54), uint8_t(56), uint8_t(57), uint8_t(59), uint8_t(60), uint8_t(62), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63)}, - [64]uint8_t{uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(4), uint8_t(5), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(13), uint8_t(15), uint8_t(16), uint8_t(17), uint8_t(19), uint8_t(20), + {uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(4), uint8_t(5), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(13), uint8_t(15), uint8_t(16), uint8_t(17), uint8_t(19), uint8_t(20), uint8_t(22), uint8_t(23), uint8_t(25), uint8_t(26), uint8_t(28), uint8_t(29), uint8_t(31), uint8_t(32), uint8_t(34), uint8_t(35), uint8_t(37), uint8_t(38), uint8_t(40), uint8_t(41), uint8_t(43), uint8_t(44), uint8_t(46), uint8_t(47), uint8_t(49), uint8_t(50), uint8_t(52), uint8_t(53), uint8_t(55), uint8_t(56), uint8_t(58), uint8_t(59), uint8_t(61), uint8_t(62), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63)}, - [64]uint8_t{uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(4), uint8_t(5), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(13), uint8_t(15), uint8_t(16), uint8_t(18), uint8_t(19), uint8_t(21), + {uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(4), uint8_t(5), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(13), uint8_t(15), uint8_t(16), uint8_t(18), uint8_t(19), uint8_t(21), uint8_t(22), uint8_t(24), uint8_t(25), uint8_t(27), uint8_t(28), uint8_t(30), uint8_t(31), uint8_t(33), uint8_t(34), uint8_t(36), uint8_t(37), uint8_t(39), uint8_t(40), uint8_t(42), uint8_t(43), uint8_t(45), uint8_t(46), uint8_t(48), uint8_t(49), uint8_t(51), uint8_t(52), uint8_t(54), uint8_t(55), uint8_t(57), uint8_t(58), uint8_t(60), uint8_t(61), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63)}, - [64]uint8_t{uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(4), uint8_t(5), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(14), uint8_t(15), uint8_t(17), uint8_t(18), uint8_t(20), uint8_t(21), + {uint8_t(0), uint8_t(1), uint8_t(2), uint8_t(4), uint8_t(5), uint8_t(7), uint8_t(8), uint8_t(9), uint8_t(11), uint8_t(12), uint8_t(14), uint8_t(15), uint8_t(17), uint8_t(18), uint8_t(20), uint8_t(21), uint8_t(23), uint8_t(24), uint8_t(26), uint8_t(27), uint8_t(29), uint8_t(30), uint8_t(32), uint8_t(33), uint8_t(35), uint8_t(36), uint8_t(38), uint8_t(39), uint8_t(41), uint8_t(42), uint8_t(44), uint8_t(45), uint8_t(47), uint8_t(48), uint8_t(50), uint8_t(51), uint8_t(53), uint8_t(54), uint8_t(56), uint8_t(57), uint8_t(59), uint8_t(60), uint8_t(62), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63), uint8_t(63)}, @@ -25858,10 +25571,10 @@ func VP8FilterStrengthFromDelta(tls *libc.TLS, sharpness int32, delta int32) int if delta < 64 { pos = delta } else { - pos = (64 - 1) + pos = 64 - 1 } - return int32(*(*uint8_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&kLevelsFromDelta)) + uintptr(sharpness)*64) + uintptr(pos)))) + return int32(*(*uint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&kLevelsFromDelta)) + uintptr(sharpness)*64 + uintptr(pos)))) } //------------------------------------------------------------------------------ @@ -25874,8 +25587,8 @@ func GetILevel(tls *libc.TLS, sharpness int32, level int32) int32 { /* filter_en } else { level >>= 1 } - if level > (9 - sharpness) { - level = (9 - sharpness) + if level > 9-sharpness { + level = 9 - sharpness } } if level < 1 { @@ -25887,14 +25600,14 @@ func GetILevel(tls *libc.TLS, sharpness int32, level int32) int32 { /* filter_en func DoFilter1(tls *libc.TLS, it uintptr, level int32) { /* filter_enc.c:85:13: */ var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ var ilevel int32 = GetILevel(tls, (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).filter_sharpness, level) - var limit int32 = ((2 * level) + ilevel) + var limit int32 = 2*level + ilevel - var y_dst uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr((0))) - var u_dst uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr((16))) - var v_dst uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr((16 + 8))) + var y_dst uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr(0) + var u_dst uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr(16) + var v_dst uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr(16+8) // copy current block to yuv_out2_ - libc.Xmemcpy(tls, y_dst, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_, ((uint64(32 * 16)) * uint64(unsafe.Sizeof(uint8_t(0))))) + libc.Xmemcpy(tls, y_dst, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_, uint64(32*16)*uint64(unsafe.Sizeof(uint8_t(0)))) if (*VP8Encoder)(unsafe.Pointer(enc)).filter_hdr_.simple_ == 1 { // simple (*struct { @@ -25938,24 +25651,24 @@ func GetMBSSIM(tls *libc.TLS, yuv1 uintptr, yuv2 uintptr) float64 { /* filter_en var sum float64 = 0. // compute SSIM in a 10 x 10 window - for y = 3; y < (16 - 3); y++ { - for x = 3; x < (16 - 3); x++ { - sum = sum + ((*struct { + for y = 3; y < 16-3; y++ { + for x = 3; x < 16-3; x++ { + sum = sum + (*struct { f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32, int32, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, (yuv1 + uintptr((0))), 32, (yuv2 + uintptr((0))), 32, - x, y, 16, 16)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, yuv1+uintptr(0), 32, yuv2+uintptr(0), 32, + x, y, 16, 16) } } for x = 1; x < 7; x++ { for y = 1; y < 7; y++ { - sum = sum + ((*struct { + sum = sum + (*struct { f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32, int32, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, (yuv1 + uintptr((16))), 32, (yuv2 + uintptr((16))), 32, - x, y, 8, 8)) - sum = sum + ((*struct { + })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, yuv1+uintptr(16), 32, yuv2+uintptr(16), 32, + x, y, 8, 8) + sum = sum + (*struct { f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32, int32, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, (yuv1 + uintptr((16 + 8))), 32, (yuv2 + uintptr((16 + 8))), 32, - x, y, 8, 8)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, yuv1+uintptr(16+8), 32, yuv2+uintptr(16+8), 32, + x, y, 8, 8) } } return sum @@ -25966,12 +25679,12 @@ func GetMBSSIM(tls *libc.TLS, yuv1 uintptr, yuv2 uintptr) float64 { /* filter_en // loop filter strength func VP8InitFilter(tls *libc.TLS, it uintptr) { /* filter_enc.c:140:6: */ - if (*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ != (uintptr(0)) { + if (*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ != uintptr(0) { var s int32 var i int32 for s = 0; s < NUM_MB_SEGMENTS; s++ { for i = 0; i < MAX_LF_LEVELS; i++ { - *(*float64)(unsafe.Pointer(((*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ + uintptr(s)*512) + uintptr(i)*8)) = float64(0) + *(*float64)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ + uintptr(s)*512 + uintptr(i)*8)) = float64(0) } } VP8SSIMDspInit(tls) @@ -25981,20 +25694,20 @@ func VP8InitFilter(tls *libc.TLS, it uintptr) { /* filter_enc.c:140:6: */ func VP8StoreFilterStats(tls *libc.TLS, it uintptr) { /* filter_enc.c:156:6: */ var d int32 var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ - var s int32 = (int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.segment_ */)) & 0x60 >> 5)) - var level0 int32 = (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(s)*744)).fstrength_ + var s int32 = int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_)) & 0x60 >> 5) + var level0 int32 = (*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(s)*744)).fstrength_ // explore +/-quant range of values around level0 - var delta_min int32 = -(*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(s)*744)).quant_ - var delta_max int32 = (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(s)*744)).quant_ + var delta_min int32 = -(*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(s)*744)).quant_ + var delta_max int32 = (*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(s)*744)).quant_ var step_size int32 - if (delta_max - delta_min) >= 4 { + if delta_max-delta_min >= 4 { step_size = 4 } else { step_size = 1 } - if (*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ == (uintptr(0)) { + if (*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ == uintptr(0) { return } @@ -26004,40 +25717,40 @@ func VP8StoreFilterStats(tls *libc.TLS, it uintptr) { /* filter_enc.c:156:6: */ // the left and top macro blocks. That will be hard to restore // 2. Macro Blocks on the bottom and right are not yet compressed. So we // cannot apply filter on the right and bottom macro block edges. - if ((int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.type_ */)) & 0x3 >> 0)) == 1) && ((uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.skip_ */)) & 0x10 >> 4))) != 0) { + if int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x3>>0) == 1 && uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x10>>4)) != 0 { return } // Always try filter level zero - *(*float64)(unsafe.Pointer(((*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ + uintptr(s)*512))) += (GetMBSSIM(tls, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_)) + *(*float64)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ + uintptr(s)*512)) += GetMBSSIM(tls, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_) - for d = delta_min; d <= delta_max; d = d + (step_size) { - var level int32 = (level0 + d) - if (level <= 0) || (level >= MAX_LF_LEVELS) { + for d = delta_min; d <= delta_max; d = d + step_size { + var level int32 = level0 + d + if level <= 0 || level >= MAX_LF_LEVELS { continue } DoFilter1(tls, it, level) - *(*float64)(unsafe.Pointer((((*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ + uintptr(s)*512) + uintptr(level)*8))) += (GetMBSSIM(tls, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_)) + *(*float64)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ + uintptr(s)*512 + uintptr(level)*8)) += GetMBSSIM(tls, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_) } } func VP8AdjustFilterStrength(tls *libc.TLS, it uintptr) { /* filter_enc.c:194:6: */ var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ - if (*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ != (uintptr(0)) { + if (*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ != uintptr(0) { var s int32 for s = 0; s < NUM_MB_SEGMENTS; s++ { var i int32 var best_level int32 = 0 // Improvement over filter level 0 should be at least 1e-5 (relatively) - var best_v float64 = (1.00001 * *(*float64)(unsafe.Pointer(((*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ + uintptr(s)*512)))) + var best_v float64 = 1.00001 * *(*float64)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ + uintptr(s)*512)) for i = 1; i < MAX_LF_LEVELS; i++ { - var v float64 = *(*float64)(unsafe.Pointer(((*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ + uintptr(s)*512) + uintptr(i)*8)) + var v float64 = *(*float64)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ + uintptr(s)*512 + uintptr(i)*8)) if v > best_v { best_v = v best_level = i } } - (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(s)*744)).fstrength_ = best_level + (*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(s)*744)).fstrength_ = best_level } return } @@ -26045,9 +25758,9 @@ func VP8AdjustFilterStrength(tls *libc.TLS, it uintptr) { /* filter_enc.c:194:6: var max_level int32 = 0 var s int32 for s = 0; s < NUM_MB_SEGMENTS; s++ { - var dqm uintptr = ((enc + 608 /* &.dqm_ */) + uintptr(s)*744) + var dqm uintptr = enc + 608 + uintptr(s)*744 // this '>> 3' accounts for some inverse WHT scaling - var delta int32 = (((*VP8SegmentInfo)(unsafe.Pointer(dqm)).max_edge_ * int32(*(*uint16_t)(unsafe.Pointer((dqm + 224 /* &.y2_ */) /* &.q_ */ + 1*2)))) >> 3) + var delta int32 = (*VP8SegmentInfo)(unsafe.Pointer(dqm)).max_edge_ * int32(*(*uint16_t)(unsafe.Pointer(dqm + 224 + 1*2))) >> 3 var level int32 = VP8FilterStrengthFromDelta(tls, (*VP8Encoder)(unsafe.Pointer(enc)).filter_hdr_.sharpness_, delta) if level > (*VP8SegmentInfo)(unsafe.Pointer(dqm)).fstrength_ { (*VP8SegmentInfo)(unsafe.Pointer(dqm)).fstrength_ = level @@ -26100,14 +25813,14 @@ type PassStats = struct { func InitPassStats(tls *libc.TLS, enc uintptr, s uintptr) int32 { /* frame_enc.c:48:12: */ var target_size uint64_t = uint64_t((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).target_size) - var do_size_search int32 = (libc.Bool32(target_size != uint64(0))) + var do_size_search int32 = libc.Bool32(target_size != uint64(0)) var target_PSNR float32 = (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).target_PSNR (*PassStats)(unsafe.Pointer(s)).is_first = 1 (*PassStats)(unsafe.Pointer(s)).dq = 10. - (*PassStats)(unsafe.Pointer(s)).qmin = (1. * float32((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).qmin)) - (*PassStats)(unsafe.Pointer(s)).qmax = (1. * float32((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).qmax)) - (*PassStats)(unsafe.Pointer(s)).q = libc.AssignPtrFloat32((s + 12 /* &.last_q */), Clamp(tls, (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).quality, (*PassStats)(unsafe.Pointer(s)).qmin, (*PassStats)(unsafe.Pointer(s)).qmax)) + (*PassStats)(unsafe.Pointer(s)).qmin = 1. * float32((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).qmin) + (*PassStats)(unsafe.Pointer(s)).qmax = 1. * float32((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).qmax) + (*PassStats)(unsafe.Pointer(s)).q = libc.AssignPtrFloat32(s+12, Clamp(tls, (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).quality, (*PassStats)(unsafe.Pointer(s)).qmin, (*PassStats)(unsafe.Pointer(s)).qmax)) (*PassStats)(unsafe.Pointer(s)).target = func() float64 { if do_size_search != 0 { return float64(target_size) @@ -26119,7 +25832,7 @@ func InitPassStats(tls *libc.TLS, enc uintptr, s uintptr) int32 { /* frame_enc.c return 40. }() }() // default, just in case - (*PassStats)(unsafe.Pointer(s)).value = libc.AssignPtrFloat64((s + 32 /* &.last_value */), 0.) + (*PassStats)(unsafe.Pointer(s)).value = libc.AssignPtrFloat64(s+32, 0.) (*PassStats)(unsafe.Pointer(s)).do_size_search = do_size_search return do_size_search } @@ -26134,8 +25847,8 @@ func ComputeNextQ(tls *libc.TLS, s uintptr) float32 { /* frame_enc.c:66:14: */ } (*PassStats)(unsafe.Pointer(s)).is_first = 0 } else if (*PassStats)(unsafe.Pointer(s)).value != (*PassStats)(unsafe.Pointer(s)).last_value { - var slope float64 = (((*PassStats)(unsafe.Pointer(s)).target - (*PassStats)(unsafe.Pointer(s)).value) / ((*PassStats)(unsafe.Pointer(s)).last_value - (*PassStats)(unsafe.Pointer(s)).value)) - dq = (float32(slope * (float64((*PassStats)(unsafe.Pointer(s)).last_q - (*PassStats)(unsafe.Pointer(s)).q)))) + var slope float64 = ((*PassStats)(unsafe.Pointer(s)).target - (*PassStats)(unsafe.Pointer(s)).value) / ((*PassStats)(unsafe.Pointer(s)).last_value - (*PassStats)(unsafe.Pointer(s)).value) + dq = float32(slope * float64((*PassStats)(unsafe.Pointer(s)).last_q-(*PassStats)(unsafe.Pointer(s)).q)) } else { dq = 0. // we're done?! } @@ -26143,7 +25856,7 @@ func ComputeNextQ(tls *libc.TLS, s uintptr) float32 { /* frame_enc.c:66:14: */ (*PassStats)(unsafe.Pointer(s)).dq = Clamp(tls, dq, -30., 30.) (*PassStats)(unsafe.Pointer(s)).last_q = (*PassStats)(unsafe.Pointer(s)).q (*PassStats)(unsafe.Pointer(s)).last_value = (*PassStats)(unsafe.Pointer(s)).value - (*PassStats)(unsafe.Pointer(s)).q = Clamp(tls, ((*PassStats)(unsafe.Pointer(s)).q + (*PassStats)(unsafe.Pointer(s)).dq), (*PassStats)(unsafe.Pointer(s)).qmin, (*PassStats)(unsafe.Pointer(s)).qmax) + (*PassStats)(unsafe.Pointer(s)).q = Clamp(tls, (*PassStats)(unsafe.Pointer(s)).q+(*PassStats)(unsafe.Pointer(s)).dq, (*PassStats)(unsafe.Pointer(s)).qmin, (*PassStats)(unsafe.Pointer(s)).qmax) return (*PassStats)(unsafe.Pointer(s)).q } @@ -26159,7 +25872,7 @@ var VP8Cat6 = [11]uint8_t{uint8_t(254), uint8_t(254), uint8_t(243), uint8_t(230) // Reset the statistics about: number of skips, token proba, level cost,... func ResetStats(tls *libc.TLS, enc uintptr) { /* frame_enc.c:97:13: */ - var proba uintptr = (enc + 3616 /* &.proba_ */) + var proba uintptr = enc + 3616 VP8CalculateLevelCosts(tls, proba) (*VP8EncProba)(unsafe.Pointer(proba)).nb_skip_ = 0 } @@ -26168,27 +25881,27 @@ func ResetStats(tls *libc.TLS, enc uintptr) { /* frame_enc.c:97:13: */ // Skip decision probability func CalcSkipProba(tls *libc.TLS, nb uint64_t, total uint64_t) int32 { /* frame_enc.c:108:12: */ - return (func() int32 { + return func() int32 { if total != 0 { - return (int32(((total - nb) * uint64(255)) / total)) + return int32((total - nb) * uint64(255) / total) } return 255 - }()) + }() } // Returns the bit-cost for coding the skip probability. func FinalizeSkipProba(tls *libc.TLS, enc uintptr) int32 { /* frame_enc.c:113:12: */ - var proba uintptr = (enc + 3616 /* &.proba_ */) - var nb_mbs int32 = ((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_) + var proba uintptr = enc + 3616 + var nb_mbs int32 = (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_ var nb_events int32 = (*VP8EncProba)(unsafe.Pointer(proba)).nb_skip_ var size int32 (*VP8EncProba)(unsafe.Pointer(proba)).skip_proba_ = uint8_t(CalcSkipProba(tls, uint64(nb_events), uint64(nb_mbs))) - (*VP8EncProba)(unsafe.Pointer(proba)).use_skip_proba_ = (libc.Bool32(int32((*VP8EncProba)(unsafe.Pointer(proba)).skip_proba_) < 250)) + (*VP8EncProba)(unsafe.Pointer(proba)).use_skip_proba_ = libc.Bool32(int32((*VP8EncProba)(unsafe.Pointer(proba)).skip_proba_) < 250) size = 256 // 'use_skip_proba' bit if (*VP8EncProba)(unsafe.Pointer(proba)).use_skip_proba_ != 0 { - size = size + ((nb_events * VP8BitCost(tls, 1, (*VP8EncProba)(unsafe.Pointer(proba)).skip_proba_)) + - ((nb_mbs - nb_events) * VP8BitCost(tls, 0, (*VP8EncProba)(unsafe.Pointer(proba)).skip_proba_))) - size = size + (8 * 256) // cost of signaling the skip_proba_ itself. + size = size + (nb_events*VP8BitCost(tls, 1, (*VP8EncProba)(unsafe.Pointer(proba)).skip_proba_) + + (nb_mbs-nb_events)*VP8BitCost(tls, 0, (*VP8EncProba)(unsafe.Pointer(proba)).skip_proba_)) + size = size + 8*256 // cost of signaling the skip_proba_ itself. } return size } @@ -26198,19 +25911,19 @@ func FinalizeSkipProba(tls *libc.TLS, enc uintptr) int32 { /* frame_enc.c:113:12 func CalcTokenProba(tls *libc.TLS, nb int32, total int32) int32 { /* frame_enc.c:131:12: */ if nb != 0 { - return (255 - ((nb * 255) / total)) + return 255 - nb*255/total } return 255 } // Cost of coding 'nb' 1's and 'total-nb' 0's using 'proba' probability. func BranchCost(tls *libc.TLS, nb int32, total int32, proba int32) int32 { /* frame_enc.c:137:12: */ - return ((nb * VP8BitCost(tls, 1, uint8(proba))) + ((total - nb) * VP8BitCost(tls, 0, uint8(proba)))) + return nb*VP8BitCost(tls, 1, uint8(proba)) + (total-nb)*VP8BitCost(tls, 0, uint8(proba)) } func ResetTokenStats(tls *libc.TLS, enc uintptr) { /* frame_enc.c:141:13: */ - var proba uintptr = (enc + 3616 /* &.proba_ */) - libc.Xmemset(tls, (proba + 1060 /* &.stats_ */), 0, uint64(unsafe.Sizeof([4][8]StatsArray{}))) + var proba uintptr = enc + 3616 + libc.Xmemset(tls, proba+1060, 0, uint64(unsafe.Sizeof([4][8]StatsArray{}))) } func FinalizeTokenProbas(tls *libc.TLS, proba uintptr) int32 { /* frame_enc.c:146:12: */ @@ -26224,25 +25937,25 @@ func FinalizeTokenProbas(tls *libc.TLS, proba uintptr) int32 { /* frame_enc.c:14 for b = 0; b < NUM_BANDS; b++ { for c = 0; c < NUM_CTX; c++ { for p = 0; p < NUM_PROBAS; p++ { - var stats proba_t = *(*proba_t)(unsafe.Pointer(((((proba + 1060 /* &.stats_ */) + uintptr(t)*1056) + uintptr(b)*132) + uintptr(c)*44) + uintptr(p)*4)) - var nb int32 = (int32((stats >> 0) & proba_t(0xffff))) - var total int32 = (int32((stats >> 16) & proba_t(0xffff))) - var update_proba int32 = int32(*(*uint8_t)(unsafe.Pointer((((uintptr(unsafe.Pointer(&VP8CoeffsUpdateProba)) + uintptr(t)*264) + uintptr(b)*33) + uintptr(c)*11) + uintptr(p)))) - var old_p int32 = int32(*(*uint8_t)(unsafe.Pointer((((uintptr(unsafe.Pointer(&VP8CoeffsProba0)) + uintptr(t)*264) + uintptr(b)*33) + uintptr(c)*11) + uintptr(p)))) + var stats proba_t = *(*proba_t)(unsafe.Pointer(proba + 1060 + uintptr(t)*1056 + uintptr(b)*132 + uintptr(c)*44 + uintptr(p)*4)) + var nb int32 = int32(stats >> 0 & proba_t(0xffff)) + var total int32 = int32(stats >> 16 & proba_t(0xffff)) + var update_proba int32 = int32(*(*uint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8CoeffsUpdateProba)) + uintptr(t)*264 + uintptr(b)*33 + uintptr(c)*11 + uintptr(p)))) + var old_p int32 = int32(*(*uint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8CoeffsProba0)) + uintptr(t)*264 + uintptr(b)*33 + uintptr(c)*11 + uintptr(p)))) var new_p int32 = CalcTokenProba(tls, nb, total) - var old_cost int32 = (BranchCost(tls, nb, total, old_p) + - VP8BitCost(tls, 0, uint8(update_proba))) - var new_cost int32 = ((BranchCost(tls, nb, total, new_p) + - VP8BitCost(tls, 1, uint8(update_proba))) + - (8 * 256)) - var use_new_p int32 = (libc.Bool32(old_cost > new_cost)) - size = size + (VP8BitCost(tls, use_new_p, uint8(update_proba))) + var old_cost int32 = BranchCost(tls, nb, total, old_p) + + VP8BitCost(tls, 0, uint8(update_proba)) + var new_cost int32 = BranchCost(tls, nb, total, new_p) + + VP8BitCost(tls, 1, uint8(update_proba)) + + 8*256 + var use_new_p int32 = libc.Bool32(old_cost > new_cost) + size = size + VP8BitCost(tls, use_new_p, uint8(update_proba)) if use_new_p != 0 { // only use proba that seem meaningful enough. - *(*uint8_t)(unsafe.Pointer(((((proba + 4 /* &.coeffs_ */) + uintptr(t)*264) + uintptr(b)*33) + uintptr(c)*11) + uintptr(p))) = uint8_t(new_p) - has_changed = has_changed | (libc.Bool32(new_p != old_p)) - size = size + (8 * 256) + *(*uint8_t)(unsafe.Pointer(proba + 4 + uintptr(t)*264 + uintptr(b)*33 + uintptr(c)*11 + uintptr(p))) = uint8_t(new_p) + has_changed = has_changed | libc.Bool32(new_p != old_p) + size = size + 8*256 } else { - *(*uint8_t)(unsafe.Pointer(((((proba + 4 /* &.coeffs_ */) + uintptr(t)*264) + uintptr(b)*33) + uintptr(c)*11) + uintptr(p))) = uint8_t(old_p) + *(*uint8_t)(unsafe.Pointer(proba + 4 + uintptr(t)*264 + uintptr(b)*33 + uintptr(c)*11 + uintptr(p))) = uint8_t(old_p) } } } @@ -26256,17 +25969,17 @@ func FinalizeTokenProbas(tls *libc.TLS, proba uintptr) int32 { /* frame_enc.c:14 // Finalize Segment probability based on the coding tree func GetProba(tls *libc.TLS, a int32, b int32) int32 { /* frame_enc.c:185:12: */ - var total int32 = (a + b) + var total int32 = a + b if total == 0 { return 255 } - return (((255 * a) + (total / 2)) / total) // rounded proba + return (255*a + total/2) / total // rounded proba } func ResetSegments(tls *libc.TLS, enc uintptr) { /* frame_enc.c:191:13: */ var n int32 - for n = 0; n < ((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_); n++ { - libc.SetBitFieldPtr8Uint32(((*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr(n)*4) /* &.segment_ */, uint32(0), 5, 0x60) + for n = 0; n < (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_*(*VP8Encoder)(unsafe.Pointer(enc)).mb_h_; n++ { + libc.SetBitFieldPtr8Uint32((*VP8Encoder)(unsafe.Pointer(enc)).mb_info_+uintptr(n)*4, uint32(0), 5, 0x60) } } @@ -26277,26 +25990,26 @@ func SetSegmentProbas(tls *libc.TLS, enc uintptr) { /* frame_enc.c:198:13: */ *(*[4]int32)(unsafe.Pointer(bp /* p */)) = [4]int32{0: 0} var n int32 - for n = 0; n < ((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_); n++ { - var mb uintptr = ((*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr(n)*4) - *(*int32)(unsafe.Pointer((bp) /* &p[0] */ + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer(mb /* &.segment_ */))&0x60>>5))))*4))++ + for n = 0; n < (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_*(*VP8Encoder)(unsafe.Pointer(enc)).mb_h_; n++ { + var mb uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr(n)*4 + *(*int32)(unsafe.Pointer(bp + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer(mb))&0x60>>5)))*4))++ } - if (*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats != (uintptr(0)) { + if (*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats != uintptr(0) { for n = 0; n < NUM_MB_SEGMENTS; n++ { - *(*int32)(unsafe.Pointer(((*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats + 92 /* &.segment_size */) + uintptr(n)*4)) = *(*int32)(unsafe.Pointer((bp) /* &p[0] */ + uintptr(n)*4)) + *(*int32)(unsafe.Pointer((*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats + 92 + uintptr(n)*4)) = *(*int32)(unsafe.Pointer(bp + uintptr(n)*4)) } } if (*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.num_segments_ > 1 { - var probas uintptr = (enc + 3616 /* &.proba_ */) /* &.segments_ */ - *(*uint8_t)(unsafe.Pointer(probas)) = uint8_t(GetProba(tls, (*(*int32)(unsafe.Pointer((bp) /* &p[0] */)) + *(*int32)(unsafe.Pointer((bp) /* &p[0] */ + 1*4))), (*(*int32)(unsafe.Pointer((bp) /* &p[0] */ + 2*4)) + *(*int32)(unsafe.Pointer((bp) /* &p[0] */ + 3*4))))) - *(*uint8_t)(unsafe.Pointer(probas + 1)) = uint8_t(GetProba(tls, *(*int32)(unsafe.Pointer((bp) /* &p[0] */)), *(*int32)(unsafe.Pointer((bp) /* &p[0] */ + 1*4)))) - *(*uint8_t)(unsafe.Pointer(probas + 2)) = uint8_t(GetProba(tls, *(*int32)(unsafe.Pointer((bp) /* &p[0] */ + 2*4)), *(*int32)(unsafe.Pointer((bp) /* &p[0] */ + 3*4)))) + var probas uintptr = enc + 3616 + *(*uint8_t)(unsafe.Pointer(probas)) = uint8_t(GetProba(tls, *(*int32)(unsafe.Pointer(bp))+*(*int32)(unsafe.Pointer(bp + 1*4)), *(*int32)(unsafe.Pointer(bp + 2*4))+*(*int32)(unsafe.Pointer(bp + 3*4)))) + *(*uint8_t)(unsafe.Pointer(probas + 1)) = uint8_t(GetProba(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 1*4)))) + *(*uint8_t)(unsafe.Pointer(probas + 2)) = uint8_t(GetProba(tls, *(*int32)(unsafe.Pointer(bp + 2*4)), *(*int32)(unsafe.Pointer(bp + 3*4)))) - (*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.update_map_ = (libc.Bool32(((int32(*(*uint8_t)(unsafe.Pointer(probas))) != 255) || (int32(*(*uint8_t)(unsafe.Pointer(probas + 1))) != 255)) || (int32(*(*uint8_t)(unsafe.Pointer(probas + 2))) != 255))) + (*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.update_map_ = libc.Bool32(int32(*(*uint8_t)(unsafe.Pointer(probas))) != 255 || int32(*(*uint8_t)(unsafe.Pointer(probas + 1))) != 255 || int32(*(*uint8_t)(unsafe.Pointer(probas + 2))) != 255) if !((*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.update_map_ != 0) { ResetSegments(tls, enc) } - (*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.size_ = ((((*(*int32)(unsafe.Pointer((bp) /* &p[0] */)) * (VP8BitCost(tls, 0, *(*uint8_t)(unsafe.Pointer(probas))) + VP8BitCost(tls, 0, *(*uint8_t)(unsafe.Pointer(probas + 1))))) + (*(*int32)(unsafe.Pointer((bp) /* &p[0] */ + 1*4)) * (VP8BitCost(tls, 0, *(*uint8_t)(unsafe.Pointer(probas))) + VP8BitCost(tls, 1, *(*uint8_t)(unsafe.Pointer(probas + 1)))))) + (*(*int32)(unsafe.Pointer((bp) /* &p[0] */ + 2*4)) * (VP8BitCost(tls, 1, *(*uint8_t)(unsafe.Pointer(probas))) + VP8BitCost(tls, 0, *(*uint8_t)(unsafe.Pointer(probas + 2)))))) + (*(*int32)(unsafe.Pointer((bp) /* &p[0] */ + 3*4)) * (VP8BitCost(tls, 1, *(*uint8_t)(unsafe.Pointer(probas))) + VP8BitCost(tls, 1, *(*uint8_t)(unsafe.Pointer(probas + 2)))))) + (*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.size_ = *(*int32)(unsafe.Pointer(bp))*(VP8BitCost(tls, 0, *(*uint8_t)(unsafe.Pointer(probas)))+VP8BitCost(tls, 0, *(*uint8_t)(unsafe.Pointer(probas + 1)))) + *(*int32)(unsafe.Pointer(bp + 1*4))*(VP8BitCost(tls, 0, *(*uint8_t)(unsafe.Pointer(probas)))+VP8BitCost(tls, 1, *(*uint8_t)(unsafe.Pointer(probas + 1)))) + *(*int32)(unsafe.Pointer(bp + 2*4))*(VP8BitCost(tls, 1, *(*uint8_t)(unsafe.Pointer(probas)))+VP8BitCost(tls, 0, *(*uint8_t)(unsafe.Pointer(probas + 2)))) + *(*int32)(unsafe.Pointer(bp + 3*4))*(VP8BitCost(tls, 1, *(*uint8_t)(unsafe.Pointer(probas)))+VP8BitCost(tls, 1, *(*uint8_t)(unsafe.Pointer(probas + 2)))) } else { (*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.update_map_ = 0 (*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.size_ = 0 @@ -26309,75 +26022,75 @@ func SetSegmentProbas(tls *libc.TLS, enc uintptr) { /* frame_enc.c:198:13: */ func PutCoeffs(tls *libc.TLS, bw uintptr, ctx int32, res uintptr) int32 { /* frame_enc.c:236:12: */ var n int32 = (*VP8Residual)(unsafe.Pointer(res)).first // should be prob[VP8EncBands[n]], but it's equivalent for n=0 or 1 - var p uintptr = (((*VP8Residual)(unsafe.Pointer(res)).prob + uintptr(n)*33) + uintptr(ctx)*11) - if !(VP8PutBit(tls, bw, (libc.Bool32((*VP8Residual)(unsafe.Pointer(res)).last >= 0)), int32(*(*uint8_t)(unsafe.Pointer(p)))) != 0) { + var p uintptr = (*VP8Residual)(unsafe.Pointer(res)).prob + uintptr(n)*33 + uintptr(ctx)*11 + if !(VP8PutBit(tls, bw, libc.Bool32((*VP8Residual)(unsafe.Pointer(res)).last >= 0), int32(*(*uint8_t)(unsafe.Pointer(p)))) != 0) { return 0 } for n < 16 { var c int32 = int32(*(*int16_t)(unsafe.Pointer((*VP8Residual)(unsafe.Pointer(res)).coeffs + uintptr(libc.PostIncInt32(&n, 1))*2))) - var sign int32 = (libc.Bool32(c < 0)) + var sign int32 = libc.Bool32(c < 0) var v int32 if sign != 0 { v = -c } else { v = c } - if !(VP8PutBit(tls, bw, (libc.Bool32(v != 0)), int32(*(*uint8_t)(unsafe.Pointer(p + 1)))) != 0) { - p = ((*VP8Residual)(unsafe.Pointer(res)).prob + uintptr(VP8EncBands[n])*33) + if !(VP8PutBit(tls, bw, libc.Bool32(v != 0), int32(*(*uint8_t)(unsafe.Pointer(p + 1)))) != 0) { + p = (*VP8Residual)(unsafe.Pointer(res)).prob + uintptr(VP8EncBands[n])*33 continue } - if !(VP8PutBit(tls, bw, (libc.Bool32(v > 1)), int32(*(*uint8_t)(unsafe.Pointer(p + 2)))) != 0) { - p = (((*VP8Residual)(unsafe.Pointer(res)).prob + uintptr(VP8EncBands[n])*33) + 1*11) + if !(VP8PutBit(tls, bw, libc.Bool32(v > 1), int32(*(*uint8_t)(unsafe.Pointer(p + 2)))) != 0) { + p = (*VP8Residual)(unsafe.Pointer(res)).prob + uintptr(VP8EncBands[n])*33 + 1*11 } else { - if !(VP8PutBit(tls, bw, (libc.Bool32(v > 4)), int32(*(*uint8_t)(unsafe.Pointer(p + 3)))) != 0) { - if VP8PutBit(tls, bw, (libc.Bool32(v != 2)), int32(*(*uint8_t)(unsafe.Pointer(p + 4)))) != 0 { - VP8PutBit(tls, bw, (libc.Bool32(v == 4)), int32(*(*uint8_t)(unsafe.Pointer(p + 5)))) + if !(VP8PutBit(tls, bw, libc.Bool32(v > 4), int32(*(*uint8_t)(unsafe.Pointer(p + 3)))) != 0) { + if VP8PutBit(tls, bw, libc.Bool32(v != 2), int32(*(*uint8_t)(unsafe.Pointer(p + 4)))) != 0 { + VP8PutBit(tls, bw, libc.Bool32(v == 4), int32(*(*uint8_t)(unsafe.Pointer(p + 5)))) } - } else if !(VP8PutBit(tls, bw, (libc.Bool32(v > 10)), int32(*(*uint8_t)(unsafe.Pointer(p + 6)))) != 0) { - if !(VP8PutBit(tls, bw, (libc.Bool32(v > 6)), int32(*(*uint8_t)(unsafe.Pointer(p + 7)))) != 0) { - VP8PutBit(tls, bw, (libc.Bool32(v == 6)), 159) + } else if !(VP8PutBit(tls, bw, libc.Bool32(v > 10), int32(*(*uint8_t)(unsafe.Pointer(p + 6)))) != 0) { + if !(VP8PutBit(tls, bw, libc.Bool32(v > 6), int32(*(*uint8_t)(unsafe.Pointer(p + 7)))) != 0) { + VP8PutBit(tls, bw, libc.Bool32(v == 6), 159) } else { - VP8PutBit(tls, bw, (libc.Bool32(v >= 9)), 165) - VP8PutBit(tls, bw, libc.BoolInt32(!((v & 1) != 0)), 145) + VP8PutBit(tls, bw, libc.Bool32(v >= 9), 165) + VP8PutBit(tls, bw, libc.BoolInt32(!(v&1 != 0)), 145) } } else { var mask int32 var tab uintptr - if v < (3 + (int32(8) << 1)) { // VP8Cat3 (3b) + if v < 3+int32(8)<<1 { // VP8Cat3 (3b) VP8PutBit(tls, bw, 0, int32(*(*uint8_t)(unsafe.Pointer(p + 8)))) VP8PutBit(tls, bw, 0, int32(*(*uint8_t)(unsafe.Pointer(p + 9)))) - v = v - (3 + (int32(8) << 0)) - mask = (int32(1) << 2) + v = v - (3 + int32(8)<<0) + mask = int32(1) << 2 tab = uintptr(unsafe.Pointer(&VP8Cat3)) - } else if v < (3 + (int32(8) << 2)) { // VP8Cat4 (4b) + } else if v < 3+int32(8)<<2 { // VP8Cat4 (4b) VP8PutBit(tls, bw, 0, int32(*(*uint8_t)(unsafe.Pointer(p + 8)))) VP8PutBit(tls, bw, 1, int32(*(*uint8_t)(unsafe.Pointer(p + 9)))) - v = v - (3 + (int32(8) << 1)) - mask = (int32(1) << 3) + v = v - (3 + int32(8)<<1) + mask = int32(1) << 3 tab = uintptr(unsafe.Pointer(&VP8Cat4)) - } else if v < (3 + (int32(8) << 3)) { // VP8Cat5 (5b) + } else if v < 3+int32(8)<<3 { // VP8Cat5 (5b) VP8PutBit(tls, bw, 1, int32(*(*uint8_t)(unsafe.Pointer(p + 8)))) VP8PutBit(tls, bw, 0, int32(*(*uint8_t)(unsafe.Pointer(p + 10)))) - v = v - (3 + (int32(8) << 2)) - mask = (int32(1) << 4) + v = v - (3 + int32(8)<<2) + mask = int32(1) << 4 tab = uintptr(unsafe.Pointer(&VP8Cat5)) } else { // VP8Cat6 (11b) VP8PutBit(tls, bw, 1, int32(*(*uint8_t)(unsafe.Pointer(p + 8)))) VP8PutBit(tls, bw, 1, int32(*(*uint8_t)(unsafe.Pointer(p + 10)))) - v = v - (3 + (int32(8) << 3)) - mask = (int32(1) << 10) + v = v - (3 + int32(8)<<3) + mask = int32(1) << 10 tab = uintptr(unsafe.Pointer(&VP8Cat6)) } for mask != 0 { - VP8PutBit(tls, bw, libc.BoolInt32(!(!((v & mask) != 0))), int32(*(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&tab, 1))))) + VP8PutBit(tls, bw, libc.BoolInt32(!!(v&mask != 0)), int32(*(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&tab, 1))))) mask >>= 1 } } - p = (((*VP8Residual)(unsafe.Pointer(res)).prob + uintptr(VP8EncBands[n])*33) + 2*11) + p = (*VP8Residual)(unsafe.Pointer(res)).prob + uintptr(VP8EncBands[n])*33 + 2*11 } VP8PutBitUniform(tls, bw, sign) - if (n == 16) || !(VP8PutBit(tls, bw, (libc.Bool32(n <= (*VP8Residual)(unsafe.Pointer(res)).last)), int32(*(*uint8_t)(unsafe.Pointer(p)))) != 0) { + if n == 16 || !(VP8PutBit(tls, bw, libc.Bool32(n <= (*VP8Residual)(unsafe.Pointer(res)).last), int32(*(*uint8_t)(unsafe.Pointer(p)))) != 0) { return 1 // EOB } } @@ -26396,54 +26109,54 @@ func CodeResiduals(tls *libc.TLS, bw uintptr, it uintptr, rd uintptr) { /* frame var pos1 uint64_t var pos2 uint64_t var pos3 uint64_t - var i16 int32 = (libc.Bool32((int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.type_ */)) & 0x3 >> 0)) == 1)) - var segment int32 = (int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.segment_ */)) & 0x60 >> 5)) + var i16 int32 = libc.Bool32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x3>>0) == 1) + var segment int32 = int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_)) & 0x60 >> 5) var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ VP8IteratorNzToBytes(tls, it) pos1 = VP8BitWriterPos(tls, bw) if i16 != 0 { - VP8InitResidual(tls, 0, 1, enc, (bp) /* &res */) + VP8InitResidual(tls, 0, 1, enc, bp) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, (rd + 40 /* &.y_dc_levels */), (bp) /* &res */) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + 8*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + 8*4), PutCoeffs(tls, bw, (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + 8*4))+*(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + 8*4))), (bp) /* &res */)) - VP8InitResidual(tls, 1, 0, enc, (bp) /* &res */) + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, rd+40 /* &.y_dc_levels */, bp /* &res */) + *(*int32)(unsafe.Pointer(it + 132 + 8*4)) = libc.AssignPtrInt32(it+168+8*4, PutCoeffs(tls, bw, *(*int32)(unsafe.Pointer(it + 132 + 8*4))+*(*int32)(unsafe.Pointer(it + 168 + 8*4)), bp)) + VP8InitResidual(tls, 1, 0, enc, bp) } else { - VP8InitResidual(tls, 0, 3, enc, (bp) /* &res */) + VP8InitResidual(tls, 0, 3, enc, bp) } // luma-AC for y = 0; y < 4; y++ { for x = 0; x < 4; x++ { - var ctx int32 = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(x)*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + uintptr(y)*4))) + var ctx int32 = *(*int32)(unsafe.Pointer(it + 132 + uintptr(x)*4)) + *(*int32)(unsafe.Pointer(it + 168 + uintptr(y)*4)) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, ((rd + 72 /* &.y_ac_levels */) + uintptr((x+(y*4)))*32), (bp) /* &res */) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(x)*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + uintptr(y)*4), PutCoeffs(tls, bw, ctx, (bp) /* &res */)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, rd+72 /* &.y_ac_levels */ +uintptr(x+y*4)*32, bp /* &res */) + *(*int32)(unsafe.Pointer(it + 132 + uintptr(x)*4)) = libc.AssignPtrInt32(it+168+uintptr(y)*4, PutCoeffs(tls, bw, ctx, bp /* &res */)) } } pos2 = VP8BitWriterPos(tls, bw) // U/V - VP8InitResidual(tls, 0, 2, enc, (bp) /* &res */) - for ch = 0; ch <= 2; ch = ch + (2) { + VP8InitResidual(tls, 0, 2, enc, bp) + for ch = 0; ch <= 2; ch = ch + 2 { for y = 0; y < 2; y++ { for x = 0; x < 2; x++ { - var ctx int32 = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(((4+ch)+x))*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + uintptr(((4+ch)+y))*4))) + var ctx int32 = *(*int32)(unsafe.Pointer(it + 132 + uintptr(4+ch+x)*4)) + *(*int32)(unsafe.Pointer(it + 168 + uintptr(4+ch+y)*4)) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, ((rd + 584 /* &.uv_levels */) + uintptr((((ch*2)+x)+(y*2)))*32), (bp) /* &res */) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(((4+ch)+x))*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + uintptr(((4+ch)+y))*4), PutCoeffs(tls, bw, ctx, (bp) /* &res */)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, rd+584 /* &.uv_levels */ +uintptr(ch*2+x+y*2)*32, bp /* &res */) + *(*int32)(unsafe.Pointer(it + 132 + uintptr(4+ch+x)*4)) = libc.AssignPtrInt32(it+168+uintptr(4+ch+y)*4, PutCoeffs(tls, bw, ctx, bp /* &res */)) } } } pos3 = VP8BitWriterPos(tls, bw) - (*VP8EncIterator)(unsafe.Pointer(it)).luma_bits_ = (pos2 - pos1) - (*VP8EncIterator)(unsafe.Pointer(it)).uv_bits_ = (pos3 - pos2) - *(*uint64_t)(unsafe.Pointer((((it + 208 /* &.bit_count_ */) + uintptr(segment)*24) + uintptr(i16)*8))) += ((*VP8EncIterator)(unsafe.Pointer(it)).luma_bits_) - *(*uint64_t)(unsafe.Pointer((((it + 208 /* &.bit_count_ */) + uintptr(segment)*24) + 2*8))) += ((*VP8EncIterator)(unsafe.Pointer(it)).uv_bits_) + (*VP8EncIterator)(unsafe.Pointer(it)).luma_bits_ = pos2 - pos1 + (*VP8EncIterator)(unsafe.Pointer(it)).uv_bits_ = pos3 - pos2 + *(*uint64_t)(unsafe.Pointer(it + 208 + uintptr(segment)*24 + uintptr(i16)*8)) += (*VP8EncIterator)(unsafe.Pointer(it)).luma_bits_ + *(*uint64_t)(unsafe.Pointer(it + 208 + uintptr(segment)*24 + 2*8)) += (*VP8EncIterator)(unsafe.Pointer(it)).uv_bits_ VP8IteratorBytesToNz(tls, it) } @@ -26462,38 +26175,38 @@ func RecordResiduals(tls *libc.TLS, it uintptr, rd uintptr) { /* frame_enc.c:363 VP8IteratorNzToBytes(tls, it) - if (int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.type_ */)) & 0x3 >> 0)) == 1 { // i16x16 - VP8InitResidual(tls, 0, 1, enc, (bp) /* &res */) + if int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x3>>0) == 1 { // i16x16 + VP8InitResidual(tls, 0, 1, enc, bp) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, (rd + 40 /* &.y_dc_levels */), (bp) /* &res */) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + 8*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + 8*4), VP8RecordCoeffs(tls, (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + 8*4))+*(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + 8*4))), (bp) /* &res */)) - VP8InitResidual(tls, 1, 0, enc, (bp) /* &res */) + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, rd+40 /* &.y_dc_levels */, bp /* &res */) + *(*int32)(unsafe.Pointer(it + 132 + 8*4)) = libc.AssignPtrInt32(it+168+8*4, VP8RecordCoeffs(tls, *(*int32)(unsafe.Pointer(it + 132 + 8*4))+*(*int32)(unsafe.Pointer(it + 168 + 8*4)), bp)) + VP8InitResidual(tls, 1, 0, enc, bp) } else { - VP8InitResidual(tls, 0, 3, enc, (bp) /* &res */) + VP8InitResidual(tls, 0, 3, enc, bp) } // luma-AC for y = 0; y < 4; y++ { for x = 0; x < 4; x++ { - var ctx int32 = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(x)*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + uintptr(y)*4))) + var ctx int32 = *(*int32)(unsafe.Pointer(it + 132 + uintptr(x)*4)) + *(*int32)(unsafe.Pointer(it + 168 + uintptr(y)*4)) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, ((rd + 72 /* &.y_ac_levels */) + uintptr((x+(y*4)))*32), (bp) /* &res */) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(x)*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + uintptr(y)*4), VP8RecordCoeffs(tls, ctx, (bp) /* &res */)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, rd+72 /* &.y_ac_levels */ +uintptr(x+y*4)*32, bp /* &res */) + *(*int32)(unsafe.Pointer(it + 132 + uintptr(x)*4)) = libc.AssignPtrInt32(it+168+uintptr(y)*4, VP8RecordCoeffs(tls, ctx, bp /* &res */)) } } // U/V - VP8InitResidual(tls, 0, 2, enc, (bp) /* &res */) - for ch = 0; ch <= 2; ch = ch + (2) { + VP8InitResidual(tls, 0, 2, enc, bp) + for ch = 0; ch <= 2; ch = ch + 2 { for y = 0; y < 2; y++ { for x = 0; x < 2; x++ { - var ctx int32 = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(((4+ch)+x))*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + uintptr(((4+ch)+y))*4))) + var ctx int32 = *(*int32)(unsafe.Pointer(it + 132 + uintptr(4+ch+x)*4)) + *(*int32)(unsafe.Pointer(it + 168 + uintptr(4+ch+y)*4)) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, ((rd + 584 /* &.uv_levels */) + uintptr((((ch*2)+x)+(y*2)))*32), (bp) /* &res */) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(((4+ch)+x))*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + uintptr(((4+ch)+y))*4), VP8RecordCoeffs(tls, ctx, (bp) /* &res */)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, rd+584 /* &.uv_levels */ +uintptr(ch*2+x+y*2)*32, bp /* &res */) + *(*int32)(unsafe.Pointer(it + 132 + uintptr(4+ch+x)*4)) = libc.AssignPtrInt32(it+168+uintptr(4+ch+y)*4, VP8RecordCoeffs(tls, ctx, bp /* &res */)) } } } @@ -26516,39 +26229,39 @@ func RecordTokens(tls *libc.TLS, it uintptr, rd uintptr, tokens uintptr) int32 { var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ VP8IteratorNzToBytes(tls, it) - if (int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.type_ */)) & 0x3 >> 0)) == 1 { // i16x16 - var ctx int32 = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + 8*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + 8*4))) - VP8InitResidual(tls, 0, 1, enc, (bp) /* &res */) + if int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x3>>0) == 1 { // i16x16 + var ctx int32 = *(*int32)(unsafe.Pointer(it + 132 + 8*4)) + *(*int32)(unsafe.Pointer(it + 168 + 8*4)) + VP8InitResidual(tls, 0, 1, enc, bp) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, (rd + 40 /* &.y_dc_levels */), (bp) /* &res */) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + 8*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + 8*4), VP8RecordCoeffTokens(tls, ctx, (bp) /* &res */, tokens)) - VP8InitResidual(tls, 1, 0, enc, (bp) /* &res */) + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, rd+40 /* &.y_dc_levels */, bp /* &res */) + *(*int32)(unsafe.Pointer(it + 132 + 8*4)) = libc.AssignPtrInt32(it+168+8*4, VP8RecordCoeffTokens(tls, ctx, bp, tokens)) + VP8InitResidual(tls, 1, 0, enc, bp) } else { - VP8InitResidual(tls, 0, 3, enc, (bp) /* &res */) + VP8InitResidual(tls, 0, 3, enc, bp) } // luma-AC for y = 0; y < 4; y++ { for x = 0; x < 4; x++ { - var ctx int32 = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(x)*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + uintptr(y)*4))) + var ctx int32 = *(*int32)(unsafe.Pointer(it + 132 + uintptr(x)*4)) + *(*int32)(unsafe.Pointer(it + 168 + uintptr(y)*4)) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, ((rd + 72 /* &.y_ac_levels */) + uintptr((x+(y*4)))*32), (bp) /* &res */) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(x)*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + uintptr(y)*4), VP8RecordCoeffTokens(tls, ctx, (bp) /* &res */, tokens)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, rd+72 /* &.y_ac_levels */ +uintptr(x+y*4)*32, bp /* &res */) + *(*int32)(unsafe.Pointer(it + 132 + uintptr(x)*4)) = libc.AssignPtrInt32(it+168+uintptr(y)*4, VP8RecordCoeffTokens(tls, ctx, bp, tokens)) } } // U/V - VP8InitResidual(tls, 0, 2, enc, (bp) /* &res */) - for ch = 0; ch <= 2; ch = ch + (2) { + VP8InitResidual(tls, 0, 2, enc, bp) + for ch = 0; ch <= 2; ch = ch + 2 { for y = 0; y < 2; y++ { for x = 0; x < 2; x++ { - var ctx int32 = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(((4+ch)+x))*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + uintptr(((4+ch)+y))*4))) + var ctx int32 = *(*int32)(unsafe.Pointer(it + 132 + uintptr(4+ch+x)*4)) + *(*int32)(unsafe.Pointer(it + 168 + uintptr(4+ch+y)*4)) (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, ((rd + 584 /* &.uv_levels */) + uintptr((((ch*2)+x)+(y*2)))*32), (bp) /* &res */) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(((4+ch)+x))*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + uintptr(((4+ch)+y))*4), VP8RecordCoeffTokens(tls, ctx, (bp) /* &res */, tokens)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SetResidualCoeffs})).f(tls, rd+584 /* &.uv_levels */ +uintptr(ch*2+x+y*2)*32, bp /* &res */) + *(*int32)(unsafe.Pointer(it + 132 + uintptr(4+ch+x)*4)) = libc.AssignPtrInt32(it+168+uintptr(4+ch+y)*4, VP8RecordCoeffTokens(tls, ctx, bp, tokens)) } } } @@ -26560,9 +26273,9 @@ func RecordTokens(tls *libc.TLS, it uintptr, rd uintptr, tokens uintptr) int32 { // ExtraInfo map / Debug function func ResetSSE(tls *libc.TLS, enc uintptr) { /* frame_enc.c:472:13: */ - *(*uint64_t)(unsafe.Pointer((enc + 23512 /* &.sse_ */))) = uint64(0) - *(*uint64_t)(unsafe.Pointer((enc + 23512 /* &.sse_ */) + 1*8)) = uint64(0) - *(*uint64_t)(unsafe.Pointer((enc + 23512 /* &.sse_ */) + 2*8)) = uint64(0) + *(*uint64_t)(unsafe.Pointer(enc + 23512)) = uint64(0) + *(*uint64_t)(unsafe.Pointer(enc + 23512 + 1*8)) = uint64(0) + *(*uint64_t)(unsafe.Pointer(enc + 23512 + 2*8)) = uint64(0) // Note: enc->sse_[3] is managed by alpha.c (*VP8Encoder)(unsafe.Pointer(enc)).sse_count_ = uint64(0) } @@ -26572,16 +26285,16 @@ func StoreSSE(tls *libc.TLS, it uintptr) { /* frame_enc.c:480:13: */ var in uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ var out uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ // Note: not totally accurate at boundary. And doesn't include in-loop filter. - *(*uint64_t)(unsafe.Pointer((enc + 23512 /* &.sse_ */))) += (uint64_t((*struct { + *(*uint64_t)(unsafe.Pointer(enc + 23512)) += uint64_t((*struct { f func(*libc.TLS, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSE16x16})).f(tls, (in + uintptr((0))), (out + uintptr((0)))))) - *(*uint64_t)(unsafe.Pointer(((enc + 23512 /* &.sse_ */) + 1*8))) += (uint64_t((*struct { + })(unsafe.Pointer(&struct{ uintptr }{VP8SSE16x16})).f(tls, in+uintptr(0), out+uintptr(0))) + *(*uint64_t)(unsafe.Pointer(enc + 23512 + 1*8)) += uint64_t((*struct { f func(*libc.TLS, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSE8x8})).f(tls, (in + uintptr((16))), (out + uintptr((16)))))) - *(*uint64_t)(unsafe.Pointer(((enc + 23512 /* &.sse_ */) + 2*8))) += (uint64_t((*struct { + })(unsafe.Pointer(&struct{ uintptr }{VP8SSE8x8})).f(tls, in+uintptr(16), out+uintptr(16))) + *(*uint64_t)(unsafe.Pointer(enc + 23512 + 2*8)) += uint64_t((*struct { f func(*libc.TLS, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSE8x8})).f(tls, (in + uintptr((16 + 8))), (out + uintptr((16 + 8)))))) - *(*uint64_t)(unsafe.Pointer((enc + 23544 /* &.sse_count_ */))) += (uint64(16 * 16)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SSE8x8})).f(tls, in+uintptr(16+8), out+uintptr(16+8))) + *(*uint64_t)(unsafe.Pointer(enc + 23544)) += uint64(16 * 16) } func StoreSideInfo(tls *libc.TLS, it uintptr) { /* frame_enc.c:491:13: */ @@ -26589,31 +26302,31 @@ func StoreSideInfo(tls *libc.TLS, it uintptr) { /* frame_enc.c:491:13: */ var mb uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).mb_ var pic uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).pic_ - if (*WebPPicture)(unsafe.Pointer(pic)).stats != (uintptr(0)) { + if (*WebPPicture)(unsafe.Pointer(pic)).stats != uintptr(0) { StoreSSE(tls, it) - *(*int32)(unsafe.Pointer((enc + 23604 /* &.block_count_ */))) += (libc.Bool32((int32(*(*uint8)(unsafe.Pointer(mb /* &.type_ */)) & 0x3 >> 0)) == 0)) - *(*int32)(unsafe.Pointer(((enc + 23604 /* &.block_count_ */) + 1*4))) += (libc.Bool32((int32(*(*uint8)(unsafe.Pointer(mb /* &.type_ */)) & 0x3 >> 0)) == 1)) - *(*int32)(unsafe.Pointer(((enc + 23604 /* &.block_count_ */) + 2*4))) += (libc.Bool32((int32(*(*uint8)(unsafe.Pointer(mb /* &.skip_ */)) & 0x10 >> 4)) != 0)) + *(*int32)(unsafe.Pointer(enc + 23604)) += libc.Bool32(int32(*(*uint8)(unsafe.Pointer(mb))&0x3>>0) == 0) + *(*int32)(unsafe.Pointer(enc + 23604 + 1*4)) += libc.Bool32(int32(*(*uint8)(unsafe.Pointer(mb))&0x3>>0) == 1) + *(*int32)(unsafe.Pointer(enc + 23604 + 2*4)) += libc.Bool32(int32(*(*uint8)(unsafe.Pointer(mb))&0x10>>4) != 0) } - if (*WebPPicture)(unsafe.Pointer(pic)).extra_info != (uintptr(0)) { - var info uintptr = ((*WebPPicture)(unsafe.Pointer(pic)).extra_info + uintptr(((*VP8EncIterator)(unsafe.Pointer(it)).x_ + ((*VP8EncIterator)(unsafe.Pointer(it)).y_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_)))) + if (*WebPPicture)(unsafe.Pointer(pic)).extra_info != uintptr(0) { + var info uintptr = (*WebPPicture)(unsafe.Pointer(pic)).extra_info + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).x_+(*VP8EncIterator)(unsafe.Pointer(it)).y_*(*VP8Encoder)(unsafe.Pointer(enc)).mb_w_) switch (*WebPPicture)(unsafe.Pointer(pic)).extra_info_type { case 1: - *(*uint8_t)(unsafe.Pointer(info)) = (uint8_t(int32(*(*uint8)(unsafe.Pointer(mb /* &.type_ */)) & 0x3 >> 0))) + *(*uint8_t)(unsafe.Pointer(info)) = uint8_t(int32(*(*uint8)(unsafe.Pointer(mb)) & 0x3 >> 0)) break fallthrough case 2: - *(*uint8_t)(unsafe.Pointer(info)) = (uint8_t(int32(*(*uint8)(unsafe.Pointer(mb /* &.segment_ */)) & 0x60 >> 5))) + *(*uint8_t)(unsafe.Pointer(info)) = uint8_t(int32(*(*uint8)(unsafe.Pointer(mb)) & 0x60 >> 5)) break fallthrough case 3: - *(*uint8_t)(unsafe.Pointer(info)) = uint8_t((*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer(mb /* &.segment_ */))&0x60>>5))))*744)).quant_) + *(*uint8_t)(unsafe.Pointer(info)) = uint8_t((*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer(mb))&0x60>>5)))*744)).quant_) break fallthrough case 4: *(*uint8_t)(unsafe.Pointer(info)) = func() uint8 { - if (int32(*(*uint8)(unsafe.Pointer(mb /* &.type_ */)) & 0x3 >> 0)) == 1 { + if int32(*(*uint8)(unsafe.Pointer(mb))&0x3>>0) == 1 { return *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).preds_)) } return uint8(0xff) @@ -26621,12 +26334,12 @@ func StoreSideInfo(tls *libc.TLS, it uintptr) { /* frame_enc.c:491:13: */ break fallthrough case 5: - *(*uint8_t)(unsafe.Pointer(info)) = (uint8_t(int32(*(*uint8)(unsafe.Pointer(mb /* &.uv_mode_ */)) & 0xc >> 2))) + *(*uint8_t)(unsafe.Pointer(info)) = uint8_t(int32(*(*uint8)(unsafe.Pointer(mb)) & 0xc >> 2)) break fallthrough case 6: { - var b int32 = (int32((((*VP8EncIterator)(unsafe.Pointer(it)).luma_bits_ + (*VP8EncIterator)(unsafe.Pointer(it)).uv_bits_) + uint64(7)) >> 3)) + var b int32 = int32(((*VP8EncIterator)(unsafe.Pointer(it)).luma_bits_ + (*VP8EncIterator)(unsafe.Pointer(it)).uv_bits_ + uint64(7)) >> 3) *(*uint8_t)(unsafe.Pointer(info)) = func() uint8 { if b > 255 { return uint8(255) @@ -26651,15 +26364,15 @@ func StoreSideInfo(tls *libc.TLS, it uintptr) { /* frame_enc.c:491:13: */ func ResetSideInfo(tls *libc.TLS, it uintptr) { /* frame_enc.c:526:13: */ var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ var pic uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).pic_ - if (*WebPPicture)(unsafe.Pointer(pic)).stats != (uintptr(0)) { - libc.Xmemset(tls, (enc + 23604 /* &.block_count_ */), 0, uint64(unsafe.Sizeof([3]int32{}))) + if (*WebPPicture)(unsafe.Pointer(pic)).stats != uintptr(0) { + libc.Xmemset(tls, enc+23604, 0, uint64(unsafe.Sizeof([3]int32{}))) } ResetSSE(tls, enc) } func GetPSNR(tls *libc.TLS, mse uint64_t, size uint64_t) float64 { /* frame_enc.c:554:15: */ - if (mse > uint64(0)) && (size > uint64(0)) { - return (10. * libc.Xlog10(tls, (((float64(255.)*255.)*float64(size))/float64(mse)))) + if mse > uint64(0) && size > uint64(0) { + return 10. * libc.Xlog10(tls, float64(255.)*255.*float64(size)/float64(mse)) } return float64(99) } @@ -26689,33 +26402,33 @@ func OneStatPass(tls *libc.TLS, enc uintptr, rd_opt VP8RDLevel, nb_mbs int32, pe var size uint64_t = uint64(0) var size_p0 uint64_t = uint64(0) var distortion uint64_t = uint64(0) - var pixel_count uint64_t = (uint64_t(nb_mbs * 384)) + var pixel_count uint64_t = uint64_t(nb_mbs * 384) - VP8IteratorInit(tls, enc, (bp) /* &it */) + VP8IteratorInit(tls, enc, bp) SetLoopParams(tls, enc, (*PassStats)(unsafe.Pointer(s)).q) - for ok := true; ok; ok = ((VP8IteratorNext(tls, (bp) /* &it */) != 0) && (libc.PreDecInt32(&nb_mbs, 1) > 0)) { + for __ccgo := true; __ccgo; __ccgo = VP8IteratorNext(tls, bp) != 0 && libc.PreDecInt32(&nb_mbs, 1) > 0 { // var info VP8ModeScore at bp+3848, 880 - VP8IteratorImport(tls, (bp) /* &it */, (uintptr(0))) - if VP8Decimate(tls, (bp) /* &it */, (bp+3848) /* &info */, rd_opt) != 0 { + VP8IteratorImport(tls, bp, uintptr(0)) + if VP8Decimate(tls, bp, bp+3848, rd_opt) != 0 { // Just record the number of skips and act like skip_proba is not used. (*VP8Encoder)(unsafe.Pointer(enc)).proba_.nb_skip_++ } - RecordResiduals(tls, (bp) /* &it */, (bp + 3848) /* &info */) - size = size + (uint64_t((*VP8ModeScore)(unsafe.Pointer(bp+3848 /* &info */)).R + (*VP8ModeScore)(unsafe.Pointer(bp+3848 /* &info */)).H)) - size_p0 = size_p0 + (uint64_t((*VP8ModeScore)(unsafe.Pointer(bp + 3848 /* &info */)).H)) - distortion = distortion + (uint64_t((*VP8ModeScore)(unsafe.Pointer(bp + 3848 /* &info */)).D)) - if (percent_delta != 0) && !(VP8IteratorProgress(tls, (bp) /* &it */, percent_delta) != 0) { + RecordResiduals(tls, bp, bp+3848) + size = size + uint64_t((*VP8ModeScore)(unsafe.Pointer(bp+3848)).R+(*VP8ModeScore)(unsafe.Pointer(bp+3848)).H) + size_p0 = size_p0 + uint64_t((*VP8ModeScore)(unsafe.Pointer(bp+3848)).H) + distortion = distortion + uint64_t((*VP8ModeScore)(unsafe.Pointer(bp+3848)).D) + if percent_delta != 0 && !(VP8IteratorProgress(tls, bp, percent_delta) != 0) { return uint64(0) } - VP8IteratorSaveBoundary(tls, (bp) /* &it */) + VP8IteratorSaveBoundary(tls, bp) } - size_p0 = size_p0 + (uint64_t((*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.size_)) + size_p0 = size_p0 + uint64_t((*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.size_) if (*PassStats)(unsafe.Pointer(s)).do_size_search != 0 { - size = size + (uint64_t(FinalizeSkipProba(tls, enc))) - size = size + (uint64_t(FinalizeTokenProbas(tls, (enc + 3616 /* &.proba_ */)))) - size = ((((size + size_p0) + uint64(1024)) >> 11) + (uint64((12 + 8) + 10))) + size = size + uint64_t(FinalizeSkipProba(tls, enc)) + size = size + uint64_t(FinalizeTokenProbas(tls, enc+3616)) + size = (size+size_p0+uint64(1024))>>11 + uint64(12+8+10) (*PassStats)(unsafe.Pointer(s)).value = float64(size) } else { (*PassStats)(unsafe.Pointer(s)).value = GetPSNR(tls, distortion, pixel_count) @@ -26729,34 +26442,34 @@ func StatLoop(tls *libc.TLS, enc uintptr) int32 { /* frame_enc.c:614:12: */ var method int32 = (*VP8Encoder)(unsafe.Pointer(enc)).method_ var do_search int32 = (*VP8Encoder)(unsafe.Pointer(enc)).do_search_ - var fast_probe int32 = (libc.Bool32(((method == 0) || (method == 3)) && !(do_search != 0))) + var fast_probe int32 = libc.Bool32((method == 0 || method == 3) && !(do_search != 0)) var num_pass_left int32 = (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).pass var task_percent int32 = 20 - var percent_per_pass int32 = ((task_percent + (num_pass_left / 2)) / num_pass_left) - var final_percent int32 = ((*VP8Encoder)(unsafe.Pointer(enc)).percent_ + task_percent) + var percent_per_pass int32 = (task_percent + num_pass_left/2) / num_pass_left + var final_percent int32 = (*VP8Encoder)(unsafe.Pointer(enc)).percent_ + task_percent var rd_opt VP8RDLevel - if (method >= 3) || (do_search != 0) { + if method >= 3 || do_search != 0 { rd_opt = RD_OPT_BASIC } else { rd_opt = RD_OPT_NONE } - var nb_mbs int32 = ((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_) + var nb_mbs int32 = (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_ // var stats PassStats at bp, 56 - InitPassStats(tls, enc, (bp) /* &stats */) + InitPassStats(tls, enc, bp) ResetTokenStats(tls, enc) // Fast mode: quick analysis pass over few mbs. Better than nothing. if fast_probe != 0 { if method == 3 { // we need more stats for method 3 to be reliable. if nb_mbs > 200 { - nb_mbs = (nb_mbs >> 1) + nb_mbs = nb_mbs >> 1 } else { nb_mbs = 100 } } else { if nb_mbs > 200 { - nb_mbs = (nb_mbs >> 2) + nb_mbs = nb_mbs >> 2 } else { nb_mbs = 50 } @@ -26764,34 +26477,34 @@ func StatLoop(tls *libc.TLS, enc uintptr) int32 { /* frame_enc.c:614:12: */ } for libc.PostDecInt32(&num_pass_left, 1) > 0 { - var is_last_pass int32 = (libc.Bool32(((libc.Xfabs(tls, float64((*PassStats)(unsafe.Pointer(bp /* &stats */)).dq)) <= 0.4) || (num_pass_left == 0)) || ((*VP8Encoder)(unsafe.Pointer(enc)).max_i4_header_bits_ == 0))) - var size_p0 uint64_t = OneStatPass(tls, enc, rd_opt, nb_mbs, percent_per_pass, (bp) /* &stats */) + var is_last_pass int32 = libc.Bool32(libc.Xfabs(tls, float64((*PassStats)(unsafe.Pointer(bp)).dq)) <= 0.4 || num_pass_left == 0 || (*VP8Encoder)(unsafe.Pointer(enc)).max_i4_header_bits_ == 0) + var size_p0 uint64_t = OneStatPass(tls, enc, rd_opt, nb_mbs, percent_per_pass, bp) if size_p0 == uint64(0) { return 0 } - if ((*VP8Encoder)(unsafe.Pointer(enc)).max_i4_header_bits_ > 0) && (uint64(size_p0) > (uint64(((uint64(int32(1) << 19)) - 2048)) << 11)) { + if (*VP8Encoder)(unsafe.Pointer(enc)).max_i4_header_bits_ > 0 && uint64(size_p0) > uint64(uint64(int32(1)<<19)-2048)<<11 { num_pass_left++ - libc.AssignShrPtrInt32((enc + 23624 /* &.max_i4_header_bits_ */), int(1)) // strengthen header bit limitation... - continue // ...and start over + libc.AssignShrPtrInt32(enc+23624, int(1)) // strengthen header bit limitation... + continue // ...and start over } if is_last_pass != 0 { break } // If no target size: just do several pass without changing 'q' if do_search != 0 { - ComputeNextQ(tls, (bp) /* &stats */) - if libc.Xfabs(tls, float64((*PassStats)(unsafe.Pointer(bp /* &stats */)).dq)) <= 0.4 { + ComputeNextQ(tls, bp) + if libc.Xfabs(tls, float64((*PassStats)(unsafe.Pointer(bp)).dq)) <= 0.4 { break } } } - if !(do_search != 0) || !((*PassStats)(unsafe.Pointer(bp /* &stats */)).do_size_search != 0) { + if !(do_search != 0) || !((*PassStats)(unsafe.Pointer(bp)).do_size_search != 0) { // Need to finalize probas now, since it wasn't done during the search. FinalizeSkipProba(tls, enc) - FinalizeTokenProbas(tls, (enc + 3616 /* &.proba_ */)) + FinalizeTokenProbas(tls, enc+3616) } - VP8CalculateLevelCosts(tls, (enc + 3616 /* &.proba_ */)) // finalize costs - return WebPReportProgress(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_, final_percent, (enc + 536 /* &.percent_ */)) + VP8CalculateLevelCosts(tls, enc+3616) // finalize costs + return WebPReportProgress(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_, final_percent, enc+536 /* &.percent_ */) } //------------------------------------------------------------------------------ @@ -26803,11 +26516,11 @@ var kAverageBytesPerMB = [8]uint8_t{uint8_t(50), uint8_t(24), uint8_t(16), uint8 func PreLoopInitialize(tls *libc.TLS, enc uintptr) int32 { /* frame_enc.c:680:12: */ var p int32 var ok int32 = 1 - var average_bytes_per_MB int32 = int32(kAverageBytesPerMB[((*VP8Encoder)(unsafe.Pointer(enc)).base_quant_ >> 4)]) - var bytes_per_parts int32 = ((((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_) * average_bytes_per_MB) / (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_) + var average_bytes_per_MB int32 = int32(kAverageBytesPerMB[(*VP8Encoder)(unsafe.Pointer(enc)).base_quant_>>4]) + var bytes_per_parts int32 = (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_ * average_bytes_per_MB / (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_ // Initialize the bit-writers - for p = 0; (ok != 0) && (p < (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_); p++ { - ok = VP8BitWriterInit(tls, ((enc + 112 /* &.parts_ */) + uintptr(p)*48), uint64(bytes_per_parts)) + for p = 0; ok != 0 && p < (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_; p++ { + ok = VP8BitWriterInit(tls, enc+112+uintptr(p)*48, uint64(bytes_per_parts)) } if !(ok != 0) { VP8EncFreeBitWriters(tls, enc) // malloc error occurred @@ -26821,18 +26534,18 @@ func PostLoopFinalize(tls *libc.TLS, it uintptr, ok int32) int32 { /* frame_enc. if ok != 0 { // Finalize the partitions, check for extra errors. var p int32 for p = 0; p < (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_; p++ { - VP8BitWriterFinish(tls, ((enc + 112 /* &.parts_ */) + uintptr(p)*48)) - ok = ok & (libc.BoolInt32(!((*VP8BitWriter)(unsafe.Pointer((enc+112 /* &.parts_ */)+uintptr(p)*48)).error_ != 0))) + VP8BitWriterFinish(tls, enc+112+uintptr(p)*48) + ok = ok & libc.BoolInt32(!((*VP8BitWriter)(unsafe.Pointer(enc+112+uintptr(p)*48)).error_ != 0)) } } if ok != 0 { // All good. Finish up. - if (*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats != (uintptr(0)) { // finalize byte counters... + if (*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats != uintptr(0) { // finalize byte counters... var i int32 var s int32 for i = 0; i <= 2; i++ { for s = 0; s < NUM_MB_SEGMENTS; s++ { - *(*int32)(unsafe.Pointer(((enc + 23556 /* &.residual_bytes_ */) + uintptr(i)*16) + uintptr(s)*4)) = (int32((*(*uint64_t)(unsafe.Pointer(((it + 208 /* &.bit_count_ */) + uintptr(s)*24) + uintptr(i)*8)) + uint64(7)) >> 3)) + *(*int32)(unsafe.Pointer(enc + 23556 + uintptr(i)*16 + uintptr(s)*4)) = int32((*(*uint64_t)(unsafe.Pointer(it + 208 + uintptr(s)*24 + uintptr(i)*8)) + uint64(7)) >> 3) } } } @@ -26848,11 +26561,11 @@ func PostLoopFinalize(tls *libc.TLS, it uintptr, ok int32) int32 { /* frame_enc. // VP8EncLoop(): does the final bitstream coding. func ResetAfterSkip(tls *libc.TLS, it uintptr) { /* frame_enc.c:729:13: */ - if (int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.type_ */)) & 0x3 >> 0)) == 1 { + if int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x3>>0) == 1 { *(*uint32_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).nz_)) = uint32_t(0) // reset all predictors - *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + 8*4)) = 0 + *(*int32)(unsafe.Pointer(it + 168 + 8*4)) = 0 } else { - *(*uint32_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).nz_)) &= (uint32_t(int32(1) << 24)) // preserve the dc_nz bit + *(*uint32_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).nz_)) &= uint32_t(int32(1) << 24) // preserve the dc_nz bit } } @@ -26869,30 +26582,30 @@ func VP8EncLoop(tls *libc.TLS, enc uintptr) int32 { /* frame_enc.c:738:5: */ StatLoop(tls, enc) // stats-collection loop - VP8IteratorInit(tls, enc, (bp) /* &it */) - VP8InitFilter(tls, (bp) /* &it */) - for ok := int32(1); ok == 1; ok = VP8IteratorNext(tls, (bp) /* &it */) { + VP8IteratorInit(tls, enc, bp) + VP8InitFilter(tls, bp) + for __ccgo := true; __ccgo; __ccgo = ok != 0 && VP8IteratorNext(tls, bp) != 0 { // var info VP8ModeScore at bp+3848, 880 var dont_use_skip int32 = libc.BoolInt32(!((*VP8Encoder)(unsafe.Pointer(enc)).proba_.use_skip_proba_ != 0)) var rd_opt VP8RDLevel = (*VP8Encoder)(unsafe.Pointer(enc)).rd_opt_level_ - VP8IteratorImport(tls, (bp) /* &it */, (uintptr(0))) + VP8IteratorImport(tls, bp, uintptr(0)) // Warning! order is important: first call VP8Decimate() and // *then* decide how to code the skip decision if there's one. - if !(VP8Decimate(tls, (bp) /* &it */, (bp+3848) /* &info */, rd_opt) != 0) || (dont_use_skip != 0) { - CodeResiduals(tls, (*VP8EncIterator)(unsafe.Pointer(bp /* &it */)).bw_, (bp) /* &it */, (bp + 3848) /* &info */) + if !(VP8Decimate(tls, bp, bp+3848, rd_opt) != 0) || dont_use_skip != 0 { + CodeResiduals(tls, (*VP8EncIterator)(unsafe.Pointer(bp /* &it */)).bw_, bp, bp+3848) } else { // reset predictors after a skip - ResetAfterSkip(tls, (bp) /* &it */) + ResetAfterSkip(tls, bp) } - StoreSideInfo(tls, (bp) /* &it */) - VP8StoreFilterStats(tls, (bp) /* &it */) - VP8IteratorExport(tls, (bp) /* &it */) - ok = VP8IteratorProgress(tls, (bp) /* &it */, 20) - VP8IteratorSaveBoundary(tls, (bp) /* &it */) + StoreSideInfo(tls, bp) + VP8StoreFilterStats(tls, bp) + VP8IteratorExport(tls, bp) + ok = VP8IteratorProgress(tls, bp, 20) + VP8IteratorSaveBoundary(tls, bp) } - return PostLoopFinalize(tls, (bp) /* &it */, ok) + return PostLoopFinalize(tls, bp, ok) } //------------------------------------------------------------------------------ @@ -26903,20 +26616,20 @@ func VP8EncTokenLoop(tls *libc.TLS, enc uintptr) int32 { /* frame_enc.c:777:5: * defer tls.Free(4784) // Roughly refresh the proba eight times per pass - var max_count int32 = (((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_) >> 3) + var max_count int32 = (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_ >> 3 var num_pass_left int32 = (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).pass var remaining_progress int32 = 40 // percents var do_search int32 = (*VP8Encoder)(unsafe.Pointer(enc)).do_search_ // var it VP8EncIterator at bp+56, 3848 - var proba uintptr = (enc + 3616 /* &.proba_ */) + var proba uintptr = enc + 3616 var rd_opt VP8RDLevel = (*VP8Encoder)(unsafe.Pointer(enc)).rd_opt_level_ - var pixel_count uint64_t = (uint64_t(((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_) * 384)) + var pixel_count uint64_t = uint64_t((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_ * 384) // var stats PassStats at bp, 56 var ok int32 - InitPassStats(tls, enc, (bp) /* &stats */) + InitPassStats(tls, enc, bp) ok = PreLoopInitialize(tls, enc) if !(ok != 0) { return 0 @@ -26928,67 +26641,67 @@ func VP8EncTokenLoop(tls *libc.TLS, enc uintptr) int32 { /* frame_enc.c:777:5: * // otherwise, token-buffer won't be useful - for (ok != 0) && (libc.PostDecInt32(&num_pass_left, 1) > 0) { - var is_last_pass int32 = (libc.Bool32(((libc.Xfabs(tls, float64((*PassStats)(unsafe.Pointer(bp /* &stats */)).dq)) <= 0.4) || (num_pass_left == 0)) || ((*VP8Encoder)(unsafe.Pointer(enc)).max_i4_header_bits_ == 0))) + for ok != 0 && libc.PostDecInt32(&num_pass_left, 1) > 0 { + var is_last_pass int32 = libc.Bool32(libc.Xfabs(tls, float64((*PassStats)(unsafe.Pointer(bp)).dq)) <= 0.4 || num_pass_left == 0 || (*VP8Encoder)(unsafe.Pointer(enc)).max_i4_header_bits_ == 0) var size_p0 uint64_t = uint64(0) var distortion uint64_t = uint64(0) var cnt int32 = max_count // The final number of passes is not trivial to know in advance. - var pass_progress int32 = (remaining_progress / (2 + num_pass_left)) - remaining_progress = remaining_progress - (pass_progress) - VP8IteratorInit(tls, enc, (bp + 56) /* &it */) + var pass_progress int32 = remaining_progress / (2 + num_pass_left) + remaining_progress = remaining_progress - pass_progress + VP8IteratorInit(tls, enc, bp+56) SetLoopParams(tls, enc, (*PassStats)(unsafe.Pointer(bp /* &stats */)).q) if is_last_pass != 0 { ResetTokenStats(tls, enc) - VP8InitFilter(tls, (bp + 56) /* &it */) // don't collect stats until last pass (too costly) + VP8InitFilter(tls, bp+56) // don't collect stats until last pass (too costly) } - VP8TBufferClear(tls, (enc + 496 /* &.tokens_ */)) - for ok := int32(1); ok == 1; ok = VP8IteratorNext(tls, (bp + 56) /* &it */) { + VP8TBufferClear(tls, enc+496) + for __ccgo := true; __ccgo; __ccgo = ok != 0 && VP8IteratorNext(tls, bp+56) != 0 { // var info VP8ModeScore at bp+3904, 880 - VP8IteratorImport(tls, (bp + 56) /* &it */, (uintptr(0))) + VP8IteratorImport(tls, bp+56, uintptr(0)) if libc.PreDecInt32(&cnt, 1) < 0 { FinalizeTokenProbas(tls, proba) VP8CalculateLevelCosts(tls, proba) // refresh cost tables for rd-opt cnt = max_count } - VP8Decimate(tls, (bp + 56) /* &it */, (bp + 3904) /* &info */, rd_opt) - ok = RecordTokens(tls, (bp + 56) /* &it */, (bp + 3904) /* &info */, (enc + 496 /* &.tokens_ */)) + VP8Decimate(tls, bp+56, bp+3904, rd_opt) + ok = RecordTokens(tls, bp+56, bp+3904, enc+496) if !(ok != 0) { WebPEncodingSetError(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_, VP8_ENC_ERROR_OUT_OF_MEMORY) break } - size_p0 = size_p0 + (uint64_t((*VP8ModeScore)(unsafe.Pointer(bp + 3904 /* &info */)).H)) - distortion = distortion + (uint64_t((*VP8ModeScore)(unsafe.Pointer(bp + 3904 /* &info */)).D)) + size_p0 = size_p0 + uint64_t((*VP8ModeScore)(unsafe.Pointer(bp+3904)).H) + distortion = distortion + uint64_t((*VP8ModeScore)(unsafe.Pointer(bp+3904)).D) if is_last_pass != 0 { - StoreSideInfo(tls, (bp + 56) /* &it */) - VP8StoreFilterStats(tls, (bp + 56) /* &it */) - VP8IteratorExport(tls, (bp + 56) /* &it */) - ok = VP8IteratorProgress(tls, (bp + 56) /* &it */, pass_progress) + StoreSideInfo(tls, bp+56) + VP8StoreFilterStats(tls, bp+56) + VP8IteratorExport(tls, bp+56) + ok = VP8IteratorProgress(tls, bp+56, pass_progress) } - VP8IteratorSaveBoundary(tls, (bp + 56) /* &it */) + VP8IteratorSaveBoundary(tls, bp+56) } if !(ok != 0) { break } - size_p0 = size_p0 + (uint64_t((*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.size_)) - if (*PassStats)(unsafe.Pointer(bp /* &stats */)).do_size_search != 0 { - var size uint64_t = uint64_t(FinalizeTokenProbas(tls, (enc + 3616 /* &.proba_ */))) - size = size + (VP8EstimateTokenSize(tls, (enc + 496 /* &.tokens_ */), - proba+4 /* &.coeffs_ */)) - size = (((size + size_p0) + uint64(1024)) >> 11) // -> size in bytes - size = size + (uint64((12 + 8) + 10)) + size_p0 = size_p0 + uint64_t((*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.size_) + if (*PassStats)(unsafe.Pointer(bp)).do_size_search != 0 { + var size uint64_t = uint64_t(FinalizeTokenProbas(tls, enc+3616)) + size = size + VP8EstimateTokenSize(tls, enc+496, + proba+4) + size = (size + size_p0 + uint64(1024)) >> 11 // -> size in bytes + size = size + uint64(12+8+10) (*PassStats)(unsafe.Pointer(bp /* &stats */)).value = float64(size) } else { // compute and store PSNR (*PassStats)(unsafe.Pointer(bp /* &stats */)).value = GetPSNR(tls, distortion, pixel_count) } - if ((*VP8Encoder)(unsafe.Pointer(enc)).max_i4_header_bits_ > 0) && (uint64(size_p0) > (uint64(((uint64(int32(1) << 19)) - 2048)) << 11)) { + if (*VP8Encoder)(unsafe.Pointer(enc)).max_i4_header_bits_ > 0 && uint64(size_p0) > uint64(uint64(int32(1)<<19)-2048)<<11 { num_pass_left++ - libc.AssignShrPtrInt32((enc + 23624 /* &.max_i4_header_bits_ */), int(1)) // strengthen header bit limitation... + libc.AssignShrPtrInt32(enc+23624, int(1)) // strengthen header bit limitation... if is_last_pass != 0 { - ResetSideInfo(tls, (bp + 56) /* &it */) + ResetSideInfo(tls, bp+56) } continue // ...and start over } @@ -26996,19 +26709,19 @@ func VP8EncTokenLoop(tls *libc.TLS, enc uintptr) int32 { /* frame_enc.c:777:5: * break // done } if do_search != 0 { - ComputeNextQ(tls, (bp) /* &stats */) // Adjust q + ComputeNextQ(tls, bp) // Adjust q } } if ok != 0 { - if !((*PassStats)(unsafe.Pointer(bp /* &stats */)).do_size_search != 0) { - FinalizeTokenProbas(tls, (enc + 3616 /* &.proba_ */)) + if !((*PassStats)(unsafe.Pointer(bp)).do_size_search != 0) { + FinalizeTokenProbas(tls, enc+3616) } - ok = VP8EmitTokens(tls, (enc + 496 /* &.tokens_ */), ((enc + 112 /* &.parts_ */) + uintptr(0)*48), + ok = VP8EmitTokens(tls, enc+496, enc+112+uintptr(0)*48, proba+4 /* &.coeffs_ */, 1) } - ok = (libc.Bool32((ok != 0) && (WebPReportProgress(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_, ((*VP8Encoder)(unsafe.Pointer(enc)).percent_+remaining_progress), - (enc+536 /* &.percent_ */)) != 0))) - return PostLoopFinalize(tls, (bp + 56) /* &it */, ok) + ok = libc.Bool32(ok != 0 && WebPReportProgress(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_, (*VP8Encoder)(unsafe.Pointer(enc)).percent_+remaining_progress, + enc+536) != 0) + return PostLoopFinalize(tls, bp+56, ok) } //------------------------------------------------------------------------------ @@ -27065,12 +26778,12 @@ func HistogramCopy(tls *libc.TLS, src uintptr, dst uintptr) { /* histogram_enc.c libc.Xmemcpy(tls, dst, src, uint64(histo_size)) (*VP8LHistogram)(unsafe.Pointer(dst)).literal_ = dst_literal - libc.Xmemcpy(tls, (*VP8LHistogram)(unsafe.Pointer(dst)).literal_, (*VP8LHistogram)(unsafe.Pointer(src)).literal_, (uint64(literal_size) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, (*VP8LHistogram)(unsafe.Pointer(dst)).literal_, (*VP8LHistogram)(unsafe.Pointer(src)).literal_, uint64(literal_size)*uint64(unsafe.Sizeof(uint32_t(0)))) } func VP8LGetHistogramSize(tls *libc.TLS, cache_bits int32) int32 { /* histogram_enc.c:62:5: */ var literal_size int32 = VP8LHistogramNumCodes(tls, cache_bits) - var total_size size_t = (uint64(unsafe.Sizeof(VP8LHistogram{})) + (uint64(unsafe.Sizeof(int32(0))) * uint64(literal_size))) + var total_size size_t = uint64(unsafe.Sizeof(VP8LHistogram{})) + uint64(unsafe.Sizeof(int32(0)))*uint64(literal_size) return int32(total_size) } @@ -27088,9 +26801,9 @@ func VP8LHistogramStoreRefs(tls *libc.TLS, refs uintptr, histo uintptr) { /* his defer tls.Free(24) *(*VP8LRefsCursor)(unsafe.Pointer(bp /* c */)) = VP8LRefsCursorInit(tls, refs) - for VP8LRefsCursorOk(tls, (bp) /* &c */) != 0 { - VP8LHistogramAddSinglePixOrCopy(tls, histo, (*VP8LRefsCursor)(unsafe.Pointer(bp /* &c */)).cur_pos, (uintptr(0)), 0) - VP8LRefsCursorNext(tls, (bp) /* &c */) + for VP8LRefsCursorOk(tls, bp) != 0 { + VP8LHistogramAddSinglePixOrCopy(tls, histo, (*VP8LRefsCursor)(unsafe.Pointer(bp /* &c */)).cur_pos, uintptr(0), 0) + VP8LRefsCursorNext(tls, bp) } } @@ -27112,20 +26825,20 @@ func VP8LHistogramInit(tls *libc.TLS, p uintptr, palette_code_bits int32, init_a (*VP8LHistogram)(unsafe.Pointer(p)).literal_cost_ = 0. (*VP8LHistogram)(unsafe.Pointer(p)).red_cost_ = 0. (*VP8LHistogram)(unsafe.Pointer(p)).blue_cost_ = 0. - libc.Xmemset(tls, (p + 3280 /* &.is_used_ */), 0, uint64(unsafe.Sizeof([5]uint8_t{}))) + libc.Xmemset(tls, p+3280, 0, uint64(unsafe.Sizeof([5]uint8_t{}))) } } func VP8LAllocateHistogram(tls *libc.TLS, cache_bits int32) uintptr { /* histogram_enc.c:111:14: */ - var histo uintptr = (uintptr(0)) + var histo uintptr = uintptr(0) var total_size int32 = VP8LGetHistogramSize(tls, cache_bits) var memory uintptr = WebPSafeMalloc(tls, uint64(total_size), uint64(unsafe.Sizeof(uint8_t(0)))) - if memory == (uintptr(0)) { - return (uintptr(0)) + if memory == uintptr(0) { + return uintptr(0) } histo = memory // literal_ won't necessary be aligned. - (*VP8LHistogram)(unsafe.Pointer(histo)).literal_ = (memory + uintptr(uint64(unsafe.Sizeof(VP8LHistogram{})))) + (*VP8LHistogram)(unsafe.Pointer(histo)).literal_ = memory + uintptr(uint64(unsafe.Sizeof(VP8LHistogram{}))) VP8LHistogramInit(tls, histo, cache_bits /*init_arrays=*/, 0) return histo } @@ -27134,13 +26847,13 @@ func VP8LAllocateHistogram(tls *libc.TLS, cache_bits int32) uintptr { /* histogr func HistogramSetResetPointers(tls *libc.TLS, set uintptr, cache_bits int32) { /* histogram_enc.c:124:13: */ var i int32 var histo_size int32 = VP8LGetHistogramSize(tls, cache_bits) - var memory uintptr = ((*VP8LHistogramSet)(unsafe.Pointer(set)).histograms) - memory += (uintptr(uint64((*VP8LHistogramSet)(unsafe.Pointer(set)).max_size) * uint64(unsafe.Sizeof(uintptr(0))))) + var memory uintptr = (*VP8LHistogramSet)(unsafe.Pointer(set)).histograms + memory += uintptr(uint64((*VP8LHistogramSet)(unsafe.Pointer(set)).max_size) * uint64(unsafe.Sizeof(uintptr(0)))) for i = 0; i < (*VP8LHistogramSet)(unsafe.Pointer(set)).max_size; i++ { - memory = (uintptr((uintptr_t((memory)) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) + memory = uintptr((uintptr_t(memory) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) *(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(set)).histograms + uintptr(i)*8)) = memory // literal_ won't necessary be aligned. - (*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(set)).histograms + uintptr(i)*8)))).literal_ = (memory + uintptr(uint64(unsafe.Sizeof(VP8LHistogram{})))) + (*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(set)).histograms + uintptr(i)*8)))).literal_ = memory + uintptr(uint64(unsafe.Sizeof(VP8LHistogram{}))) memory += uintptr(histo_size) } } @@ -27148,7 +26861,7 @@ func HistogramSetResetPointers(tls *libc.TLS, set uintptr, cache_bits int32) { / // Returns the total size of the VP8LHistogramSet. func HistogramSetTotalSize(tls *libc.TLS, size int32, cache_bits int32) size_t { /* histogram_enc.c:140:15: */ var histo_size int32 = VP8LGetHistogramSize(tls, cache_bits) - return (uint64(unsafe.Sizeof(VP8LHistogramSet{})) + (uint64(size) * ((uint64(unsafe.Sizeof(uintptr(0))) + uint64(histo_size)) + uint64(31)))) + return uint64(unsafe.Sizeof(VP8LHistogramSet{})) + uint64(size)*(uint64(unsafe.Sizeof(uintptr(0)))+uint64(histo_size)+uint64(31)) } func VP8LAllocateHistogramSet(tls *libc.TLS, size int32, cache_bits int32) uintptr { /* histogram_enc.c:146:17: */ @@ -27156,8 +26869,8 @@ func VP8LAllocateHistogramSet(tls *libc.TLS, size int32, cache_bits int32) uintp var set uintptr var total_size size_t = HistogramSetTotalSize(tls, size, cache_bits) var memory uintptr = WebPSafeMalloc(tls, total_size, uint64(unsafe.Sizeof(uint8_t(0)))) - if memory == (uintptr(0)) { - return (uintptr(0)) + if memory == uintptr(0) { + return uintptr(0) } set = memory @@ -27193,11 +26906,11 @@ func VP8LHistogramSetClear(tls *libc.TLS, set uintptr) { /* histogram_enc.c:165: // Removes the histogram 'i' from 'set' by setting it to NULL. func HistogramSetRemoveHistogram(tls *libc.TLS, set uintptr, i int32, num_used uintptr) { /* histogram_enc.c:184:13: */ - *(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(set)).histograms + uintptr(i)*8)) = (uintptr(0)) + *(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(set)).histograms + uintptr(i)*8)) = uintptr(0) *(*int32)(unsafe.Pointer(num_used))-- // If we remove the last valid one, shrink until the next valid one. - if i == ((*VP8LHistogramSet)(unsafe.Pointer(set)).size - 1) { - for ((*VP8LHistogramSet)(unsafe.Pointer(set)).size >= 1) && (*(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(set)).histograms + uintptr(((*VP8LHistogramSet)(unsafe.Pointer(set)).size-1))*8)) == (uintptr(0))) { + if i == (*VP8LHistogramSet)(unsafe.Pointer(set)).size-1 { + for (*VP8LHistogramSet)(unsafe.Pointer(set)).size >= 1 && *(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(set)).histograms + uintptr((*VP8LHistogramSet)(unsafe.Pointer(set)).size-1)*8)) == uintptr(0) { (*VP8LHistogramSet)(unsafe.Pointer(set)).size-- } } @@ -27210,12 +26923,12 @@ func VP8LHistogramAddSinglePixOrCopy(tls *libc.TLS, histo uintptr, v uintptr, di defer tls.Free(8) if PixOrCopyIsLiteral(tls, v) != 0 { - *(*uint32_t)(unsafe.Pointer((histo + 2056 /* &.alpha_ */) + uintptr(PixOrCopyLiteral(tls, v, 3))*4))++ - *(*uint32_t)(unsafe.Pointer((histo + 8 /* &.red_ */) + uintptr(PixOrCopyLiteral(tls, v, 2))*4))++ + *(*uint32_t)(unsafe.Pointer(histo + 2056 + uintptr(PixOrCopyLiteral(tls, v, 3))*4))++ + *(*uint32_t)(unsafe.Pointer(histo + 8 + uintptr(PixOrCopyLiteral(tls, v, 2))*4))++ *(*uint32_t)(unsafe.Pointer((*VP8LHistogram)(unsafe.Pointer(histo)).literal_ + uintptr(PixOrCopyLiteral(tls, v, 1))*4))++ - *(*uint32_t)(unsafe.Pointer((histo + 1032 /* &.blue_ */) + uintptr(PixOrCopyLiteral(tls, v, 0))*4))++ + *(*uint32_t)(unsafe.Pointer(histo + 1032 + uintptr(PixOrCopyLiteral(tls, v, 0))*4))++ } else if PixOrCopyIsCacheIdx(tls, v) != 0 { - var literal_ix int32 = (int32((uint32_t(256 + 24)) + PixOrCopyCacheIdx(tls, v))) + var literal_ix int32 = int32(uint32_t(256+24) + PixOrCopyCacheIdx(tls, v)) *(*uint32_t)(unsafe.Pointer((*VP8LHistogram)(unsafe.Pointer(histo)).literal_ + uintptr(literal_ix)*4))++ } else { @@ -27223,18 +26936,18 @@ func VP8LHistogramAddSinglePixOrCopy(tls *libc.TLS, histo uintptr, v uintptr, di // var extra_bits int32 at bp+4, 4 - VP8LPrefixEncodeBits(tls, int32(PixOrCopyLength(tls, v)), (bp) /* &code */, (bp + 4) /* &extra_bits */) - *(*uint32_t)(unsafe.Pointer((*VP8LHistogram)(unsafe.Pointer(histo)).literal_ + uintptr((256+*(*int32)(unsafe.Pointer(bp /* code */))))*4))++ - if distance_modifier == (uintptr(0)) { - VP8LPrefixEncodeBits(tls, int32(PixOrCopyDistance(tls, v)), (bp) /* &code */, (bp + 4) /* &extra_bits */) + VP8LPrefixEncodeBits(tls, int32(PixOrCopyLength(tls, v)), bp, bp+4) + *(*uint32_t)(unsafe.Pointer((*VP8LHistogram)(unsafe.Pointer(histo)).literal_ + uintptr(256+*(*int32)(unsafe.Pointer(bp)))*4))++ + if distance_modifier == uintptr(0) { + VP8LPrefixEncodeBits(tls, int32(PixOrCopyDistance(tls, v)), bp, bp+4) } else { VP8LPrefixEncodeBits(tls, (*struct { f func(*libc.TLS, int32, int32) int32 })(unsafe.Pointer(&struct{ uintptr }{distance_modifier})).f(tls, distance_modifier_arg0, int32(PixOrCopyDistance(tls, v))), - (bp) /* &code */, (bp + 4) /* &extra_bits */) + bp, bp+4 /* &extra_bits */) } - *(*uint32_t)(unsafe.Pointer((histo + 3080 /* &.distance_ */) + uintptr(*(*int32)(unsafe.Pointer(bp /* code */)))*4))++ + *(*uint32_t)(unsafe.Pointer(histo + 3080 + uintptr(*(*int32)(unsafe.Pointer(bp /* code */)))*4))++ } } @@ -27251,7 +26964,7 @@ func BitsEntropyRefine(tls *libc.TLS, entropy uintptr) float64 { /* histogram_en // Let's mix in a bit of entropy to favor good clustering when // distributions of these are combined. if (*VP8LBitEntropy)(unsafe.Pointer(entropy)).nonzeros == 2 { - return ((0.99 * float64((*VP8LBitEntropy)(unsafe.Pointer(entropy)).sum)) + (0.01 * (*VP8LBitEntropy)(unsafe.Pointer(entropy)).entropy)) + return 0.99*float64((*VP8LBitEntropy)(unsafe.Pointer(entropy)).sum) + 0.01*(*VP8LBitEntropy)(unsafe.Pointer(entropy)).entropy } // No matter what the entropy says, we cannot be better than min_limit // with Huffman coding. I am mixing a bit of entropy into the @@ -27267,8 +26980,8 @@ func BitsEntropyRefine(tls *libc.TLS, entropy uintptr) float64 { /* histogram_en } { - var min_limit float64 = (float64((uint32_t(2) * (*VP8LBitEntropy)(unsafe.Pointer(entropy)).sum) - (*VP8LBitEntropy)(unsafe.Pointer(entropy)).max_val)) - min_limit = ((mix * min_limit) + ((1.0 - mix) * (*VP8LBitEntropy)(unsafe.Pointer(entropy)).entropy)) + var min_limit float64 = float64(uint32_t(2)*(*VP8LBitEntropy)(unsafe.Pointer(entropy)).sum - (*VP8LBitEntropy)(unsafe.Pointer(entropy)).max_val) + min_limit = mix*min_limit + (1.0-mix)*(*VP8LBitEntropy)(unsafe.Pointer(entropy)).entropy if (*VP8LBitEntropy)(unsafe.Pointer(entropy)).entropy < min_limit { return min_limit } @@ -27284,17 +26997,17 @@ func VP8LBitsEntropy(tls *libc.TLS, array uintptr, n int32) float64 { /* histogr // var entropy VP8LBitEntropy at bp, 24 - VP8LBitsEntropyUnrefined(tls, array, n, (bp) /* &entropy */) + VP8LBitsEntropyUnrefined(tls, array, n, bp) - return BitsEntropyRefine(tls, (bp) /* &entropy */) + return BitsEntropyRefine(tls, bp) } func InitialHuffmanCost(tls *libc.TLS) float64 { /* histogram_enc.c:270:15: */ - return (float64(kHuffmanCodeOfHuffmanCodeSize) - kSmallBias) + return float64(kHuffmanCodeOfHuffmanCodeSize) - kSmallBias } -var kHuffmanCodeOfHuffmanCodeSize int32 = (19 * 3) /* histogram_enc.c:273:20 */ -var kSmallBias float64 = 9.1 /* histogram_enc.c:274:23 */ +var kHuffmanCodeOfHuffmanCodeSize int32 = 19 * 3 /* histogram_enc.c:273:20 */ +var kSmallBias float64 = 9.1 /* histogram_enc.c:274:23 */ // Finalize the Huffman cost based on streak numbers and length type (<3 or >=3) func FinalHuffmanCost(tls *libc.TLS, stats uintptr) float64 { /* histogram_enc.c:279:15: */ @@ -27303,15 +27016,15 @@ func FinalHuffmanCost(tls *libc.TLS, stats uintptr) float64 { /* histogram_enc.c var retval float64 = InitialHuffmanCost(tls) // Second coefficient: Many zeros in the histogram are covered efficiently // by a run-length encode. Originally 2/8. - retval = retval + ((float64(*(*int32)(unsafe.Pointer((stats /* &.counts */)))) * 1.5625) + (0.234375 * float64(*(*int32)(unsafe.Pointer((stats + 8 /* &.streaks */) + 1*4))))) + retval = retval + (float64(*(*int32)(unsafe.Pointer(stats)))*1.5625 + 0.234375*float64(*(*int32)(unsafe.Pointer(stats + 8 + 1*4)))) // Second coefficient: Constant values are encoded less efficiently, but still // RLE'ed. Originally 6/8. - retval = retval + ((float64(*(*int32)(unsafe.Pointer((stats /* &.counts */) + 1*4))) * 2.578125) + (0.703125 * float64(*(*int32)(unsafe.Pointer(((stats + 8 /* &.streaks */) + 1*8) + 1*4))))) + retval = retval + (float64(*(*int32)(unsafe.Pointer(stats + 1*4)))*2.578125 + 0.703125*float64(*(*int32)(unsafe.Pointer(stats + 8 + 1*8 + 1*4)))) // 0s are usually encoded more efficiently than non-0s. // Originally 15/8. - retval = retval + (1.796875 * float64(*(*int32)(unsafe.Pointer((stats + 8 /* &.streaks */))))) + retval = retval + 1.796875*float64(*(*int32)(unsafe.Pointer(stats + 8))) // Originally 26/8. - retval = retval + (3.28125 * float64(*(*int32)(unsafe.Pointer(((stats + 8 /* &.streaks */) + 1*8))))) + retval = retval + 3.28125*float64(*(*int32)(unsafe.Pointer(stats + 8 + 1*8))) return retval } @@ -27327,19 +27040,19 @@ func PopulationCost(tls *libc.TLS, population uintptr, length int32, trivial_sym (*struct { f func(*libc.TLS, uintptr, int32, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8LGetEntropyUnrefined})).f(tls, population, length, (bp) /* &bit_entropy */, (bp + 24) /* &stats */) - if trivial_sym != (uintptr(0)) { + })(unsafe.Pointer(&struct{ uintptr }{VP8LGetEntropyUnrefined})).f(tls, population, length, bp /* &bit_entropy */, bp+24 /* &stats */) + if trivial_sym != uintptr(0) { *(*uint32_t)(unsafe.Pointer(trivial_sym)) = func() uint32 { - if (*VP8LBitEntropy)(unsafe.Pointer(bp /* &bit_entropy */)).nonzeros == 1 { + if (*VP8LBitEntropy)(unsafe.Pointer(bp)).nonzeros == 1 { return (*VP8LBitEntropy)(unsafe.Pointer(bp /* &bit_entropy */)).nonzero_code } - return (0xffffffff) + return 0xffffffff }() } // The histogram is used if there is at least one non-zero streak. - *(*uint8_t)(unsafe.Pointer(is_used)) = (uint8_t(libc.Bool32((*(*int32)(unsafe.Pointer((((bp + 24) /* &stats */ + 8 /* &.streaks */) + 1*8))) != 0) || (*(*int32)(unsafe.Pointer((((bp + 24) /* &stats */ + 8 /* &.streaks */) + 1*8) + 1*4)) != 0)))) + *(*uint8_t)(unsafe.Pointer(is_used)) = uint8_t(libc.Bool32(*(*int32)(unsafe.Pointer(bp + 24 + 8 + 1*8)) != 0 || *(*int32)(unsafe.Pointer(bp + 24 + 8 + 1*8 + 1*4)) != 0)) - return (BitsEntropyRefine(tls, (bp) /* &bit_entropy */) + FinalHuffmanCost(tls, (bp+24) /* &stats */)) + return BitsEntropyRefine(tls, bp) + FinalHuffmanCost(tls, bp+24) } // trivial_at_end is 1 if the two histograms only have one element that is @@ -27355,13 +27068,13 @@ func GetCombinedEntropy(tls *libc.TLS, X uintptr, Y uintptr, length int32, is_X_ // pixel into 0xff000000 | (pixel << 8) in VP8LBundleColorMap. // BitsEntropyRefine is 0 for histograms with only one non-zero value. // Only FinalHuffmanCost needs to be evaluated. - libc.Xmemset(tls, (bp) /* &stats */, 0, uint64(unsafe.Sizeof(VP8LStreaks{}))) + libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(VP8LStreaks{}))) // Deal with the non-zero value at index 0 or length-1. - *(*int32)(unsafe.Pointer((((bp) /* &stats */ + 8 /* &.streaks */) + 1*8))) = 1 + *(*int32)(unsafe.Pointer(bp + 8 + 1*8)) = 1 // Deal with the following/previous zero streak. - *(*int32)(unsafe.Pointer((bp) /* &stats */ /* &.counts */)) = 1 - *(*int32)(unsafe.Pointer(((bp) /* &stats */ + 8 /* &.streaks */) + 1*4)) = (length - 1) - return FinalHuffmanCost(tls, (bp) /* &stats */) + *(*int32)(unsafe.Pointer(bp)) = 1 + *(*int32)(unsafe.Pointer(bp + 8 + 1*4)) = length - 1 + return FinalHuffmanCost(tls, bp) } else { // var bit_entropy VP8LBitEntropy at bp+24, 24 @@ -27369,44 +27082,44 @@ func GetCombinedEntropy(tls *libc.TLS, X uintptr, Y uintptr, length int32, is_X_ if is_Y_used != 0 { (*struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8LGetCombinedEntropyUnrefined})).f(tls, X, Y, length, (bp + 24) /* &bit_entropy */, (bp) /* &stats */) + })(unsafe.Pointer(&struct{ uintptr }{VP8LGetCombinedEntropyUnrefined})).f(tls, X, Y, length, bp+24 /* &bit_entropy */, bp /* &stats */) } else { (*struct { f func(*libc.TLS, uintptr, int32, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8LGetEntropyUnrefined})).f(tls, X, length, (bp + 24) /* &bit_entropy */, (bp) /* &stats */) + })(unsafe.Pointer(&struct{ uintptr }{VP8LGetEntropyUnrefined})).f(tls, X, length, bp+24 /* &bit_entropy */, bp /* &stats */) } } else { if is_Y_used != 0 { (*struct { f func(*libc.TLS, uintptr, int32, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8LGetEntropyUnrefined})).f(tls, Y, length, (bp + 24) /* &bit_entropy */, (bp) /* &stats */) + })(unsafe.Pointer(&struct{ uintptr }{VP8LGetEntropyUnrefined})).f(tls, Y, length, bp+24 /* &bit_entropy */, bp /* &stats */) } else { - libc.Xmemset(tls, (bp) /* &stats */, 0, uint64(unsafe.Sizeof(VP8LStreaks{}))) - *(*int32)(unsafe.Pointer((bp) /* &stats */ /* &.counts */)) = 1 - *(*int32)(unsafe.Pointer(((bp) /* &stats */ + 8 /* &.streaks */) + uintptr((libc.Bool32(length > 3)))*4)) = length - VP8LBitEntropyInit(tls, (bp + 24) /* &bit_entropy */) + libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(VP8LStreaks{}))) + *(*int32)(unsafe.Pointer(bp)) = 1 + *(*int32)(unsafe.Pointer(bp + 8 + uintptr(libc.Bool32(length > 3))*4)) = length + VP8LBitEntropyInit(tls, bp+24) } } - return (BitsEntropyRefine(tls, (bp+24) /* &bit_entropy */) + FinalHuffmanCost(tls, (bp) /* &stats */)) + return BitsEntropyRefine(tls, bp+24) + FinalHuffmanCost(tls, bp) } return float64(0) } // Estimates the Entropy + Huffman + other block overhead size cost. func VP8LHistogramEstimateBits(tls *libc.TLS, p uintptr) float64 { /* histogram_enc.c:359:8: */ - return ((((((PopulationCost(tls, (*VP8LHistogram)(unsafe.Pointer(p)).literal_, VP8LHistogramNumCodes(tls, (*VP8LHistogram)(unsafe.Pointer(p)).palette_code_bits_), - (uintptr(0)), (p+3280 /* &.is_used_ */)) + - PopulationCost(tls, (p+8 /* &.red_ */), 256, (uintptr(0)), ((p+3280 /* &.is_used_ */)+1))) + - PopulationCost(tls, (p+1032 /* &.blue_ */), 256, (uintptr(0)), ((p+3280 /* &.is_used_ */)+2))) + - PopulationCost(tls, (p+2056 /* &.alpha_ */), 256, (uintptr(0)), ((p+3280 /* &.is_used_ */)+3))) + - PopulationCost(tls, (p+3080 /* &.distance_ */), 40, (uintptr(0)), ((p+3280 /* &.is_used_ */)+4))) + + return PopulationCost(tls, (*VP8LHistogram)(unsafe.Pointer(p)).literal_, VP8LHistogramNumCodes(tls, (*VP8LHistogram)(unsafe.Pointer(p)).palette_code_bits_), + uintptr(0), p+3280) + + PopulationCost(tls, p+8, 256, uintptr(0), p+3280+1) + + PopulationCost(tls, p+1032, 256, uintptr(0), p+3280+2) + + PopulationCost(tls, p+2056, 256, uintptr(0), p+3280+3) + + PopulationCost(tls, p+3080, 40, uintptr(0), p+3280+4) + (*struct { f func(*libc.TLS, uintptr, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8LExtraCost})).f(tls, ((*VP8LHistogram)(unsafe.Pointer(p)).literal_+uintptr(256)*4), 24)) + + })(unsafe.Pointer(&struct{ uintptr }{VP8LExtraCost})).f(tls, (*VP8LHistogram)(unsafe.Pointer(p)).literal_+uintptr(256)*4, 24) + (*struct { f func(*libc.TLS, uintptr, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8LExtraCost})).f(tls, (p+3080 /* &.distance_ */), 40)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LExtraCost})).f(tls, p+3080, 40) } // ----------------------------------------------------------------------------- @@ -27416,51 +27129,51 @@ func GetCombinedHistogramEntropy(tls *libc.TLS, a uintptr, b uintptr, cost_thres var palette_code_bits int32 = (*VP8LHistogram)(unsafe.Pointer(a)).palette_code_bits_ var trivial_at_end int32 = 0 - *(*float64)(unsafe.Pointer(cost)) += (GetCombinedEntropy(tls, (*VP8LHistogram)(unsafe.Pointer(a)).literal_, (*VP8LHistogram)(unsafe.Pointer(b)).literal_, + *(*float64)(unsafe.Pointer(cost)) += GetCombinedEntropy(tls, (*VP8LHistogram)(unsafe.Pointer(a)).literal_, (*VP8LHistogram)(unsafe.Pointer(b)).literal_, VP8LHistogramNumCodes(tls, palette_code_bits), - int32(*(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */)))), int32(*(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */)))), 0)) - *(*float64)(unsafe.Pointer(cost)) += ((*struct { + int32(*(*uint8_t)(unsafe.Pointer(a + 3280))), int32(*(*uint8_t)(unsafe.Pointer(b + 3280))), 0) + *(*float64)(unsafe.Pointer(cost)) += (*struct { f func(*libc.TLS, uintptr, uintptr, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8LExtraCostCombined})).f(tls, ((*VP8LHistogram)(unsafe.Pointer(a)).literal_ + uintptr(256)*4), - ((*VP8LHistogram)(unsafe.Pointer(b)).literal_ + uintptr(256)*4), - 24)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LExtraCostCombined})).f(tls, (*VP8LHistogram)(unsafe.Pointer(a)).literal_+uintptr(256)*4, + (*VP8LHistogram)(unsafe.Pointer(b)).literal_+uintptr(256)*4, + 24) if *(*float64)(unsafe.Pointer(cost)) > cost_threshold { return 0 } - if ((*VP8LHistogram)(unsafe.Pointer(a)).trivial_symbol_ != (0xffffffff)) && ((*VP8LHistogram)(unsafe.Pointer(a)).trivial_symbol_ == (*VP8LHistogram)(unsafe.Pointer(b)).trivial_symbol_) { + if (*VP8LHistogram)(unsafe.Pointer(a)).trivial_symbol_ != 0xffffffff && (*VP8LHistogram)(unsafe.Pointer(a)).trivial_symbol_ == (*VP8LHistogram)(unsafe.Pointer(b)).trivial_symbol_ { // A, R and B are all 0 or 0xff. - var color_a uint32_t = (((*VP8LHistogram)(unsafe.Pointer(a)).trivial_symbol_ >> 24) & uint32_t(0xff)) - var color_r uint32_t = (((*VP8LHistogram)(unsafe.Pointer(a)).trivial_symbol_ >> 16) & uint32_t(0xff)) - var color_b uint32_t = (((*VP8LHistogram)(unsafe.Pointer(a)).trivial_symbol_ >> 0) & uint32_t(0xff)) - if (((color_a == uint32_t(0)) || (color_a == uint32_t(0xff))) && ((color_r == uint32_t(0)) || (color_r == uint32_t(0xff)))) && ((color_b == uint32_t(0)) || (color_b == uint32_t(0xff))) { + var color_a uint32_t = (*VP8LHistogram)(unsafe.Pointer(a)).trivial_symbol_ >> 24 & uint32_t(0xff) + var color_r uint32_t = (*VP8LHistogram)(unsafe.Pointer(a)).trivial_symbol_ >> 16 & uint32_t(0xff) + var color_b uint32_t = (*VP8LHistogram)(unsafe.Pointer(a)).trivial_symbol_ >> 0 & uint32_t(0xff) + if (color_a == uint32_t(0) || color_a == uint32_t(0xff)) && (color_r == uint32_t(0) || color_r == uint32_t(0xff)) && (color_b == uint32_t(0) || color_b == uint32_t(0xff)) { trivial_at_end = 1 } } - *(*float64)(unsafe.Pointer(cost)) += (GetCombinedEntropy(tls, (a + 8 /* &.red_ */), (b + 8 /* &.red_ */), 256, int32(*(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + 1))), - int32(*(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + 1))), trivial_at_end)) + *(*float64)(unsafe.Pointer(cost)) += GetCombinedEntropy(tls, a+8, b+8, 256, int32(*(*uint8_t)(unsafe.Pointer(a + 3280 + 1))), + int32(*(*uint8_t)(unsafe.Pointer(b + 3280 + 1))), trivial_at_end) if *(*float64)(unsafe.Pointer(cost)) > cost_threshold { return 0 } - *(*float64)(unsafe.Pointer(cost)) += (GetCombinedEntropy(tls, (a + 1032 /* &.blue_ */), (b + 1032 /* &.blue_ */), 256, int32(*(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + 2))), - int32(*(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + 2))), trivial_at_end)) + *(*float64)(unsafe.Pointer(cost)) += GetCombinedEntropy(tls, a+1032, b+1032, 256, int32(*(*uint8_t)(unsafe.Pointer(a + 3280 + 2))), + int32(*(*uint8_t)(unsafe.Pointer(b + 3280 + 2))), trivial_at_end) if *(*float64)(unsafe.Pointer(cost)) > cost_threshold { return 0 } - *(*float64)(unsafe.Pointer(cost)) += (GetCombinedEntropy(tls, (a + 2056 /* &.alpha_ */), (b + 2056 /* &.alpha_ */), 256, - int32(*(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + 3))), int32(*(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + 3))), trivial_at_end)) + *(*float64)(unsafe.Pointer(cost)) += GetCombinedEntropy(tls, a+2056, b+2056, 256, + int32(*(*uint8_t)(unsafe.Pointer(a + 3280 + 3))), int32(*(*uint8_t)(unsafe.Pointer(b + 3280 + 3))), trivial_at_end) if *(*float64)(unsafe.Pointer(cost)) > cost_threshold { return 0 } - *(*float64)(unsafe.Pointer(cost)) += (GetCombinedEntropy(tls, (a + 3080 /* &.distance_ */), (b + 3080 /* &.distance_ */), 40, - int32(*(*uint8_t)(unsafe.Pointer((a + 3280 /* &.is_used_ */) + 4))), int32(*(*uint8_t)(unsafe.Pointer((b + 3280 /* &.is_used_ */) + 4))), 0)) - *(*float64)(unsafe.Pointer(cost)) += ((*struct { + *(*float64)(unsafe.Pointer(cost)) += GetCombinedEntropy(tls, a+3080, b+3080, 40, + int32(*(*uint8_t)(unsafe.Pointer(a + 3280 + 4))), int32(*(*uint8_t)(unsafe.Pointer(b + 3280 + 4))), 0) + *(*float64)(unsafe.Pointer(cost)) += (*struct { f func(*libc.TLS, uintptr, uintptr, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8LExtraCostCombined})).f(tls, (a + 3080 /* &.distance_ */), (b + 3080 /* &.distance_ */), 40)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LExtraCostCombined})).f(tls, a+3080, b+3080, 40) if *(*float64)(unsafe.Pointer(cost)) > cost_threshold { return 0 } @@ -27474,7 +27187,7 @@ func HistogramAdd(tls *libc.TLS, a uintptr, b uintptr, out uintptr) { /* histogr if (*VP8LHistogram)(unsafe.Pointer(a)).trivial_symbol_ == (*VP8LHistogram)(unsafe.Pointer(b)).trivial_symbol_ { return (*VP8LHistogram)(unsafe.Pointer(a)).trivial_symbol_ } - return (0xffffffff) + return 0xffffffff }() } @@ -27489,16 +27202,16 @@ func HistogramAddEval(tls *libc.TLS, a uintptr, b uintptr, out uintptr, cost_thr defer tls.Free(8) *(*float64)(unsafe.Pointer(bp /* cost */)) = float64(0) - var sum_cost float64 = ((*VP8LHistogram)(unsafe.Pointer(a)).bit_cost_ + (*VP8LHistogram)(unsafe.Pointer(b)).bit_cost_) - cost_threshold = cost_threshold + (sum_cost) + var sum_cost float64 = (*VP8LHistogram)(unsafe.Pointer(a)).bit_cost_ + (*VP8LHistogram)(unsafe.Pointer(b)).bit_cost_ + cost_threshold = cost_threshold + sum_cost - if GetCombinedHistogramEntropy(tls, a, b, cost_threshold, (bp) /* &cost */) != 0 { + if GetCombinedHistogramEntropy(tls, a, b, cost_threshold, bp) != 0 { HistogramAdd(tls, a, b, out) (*VP8LHistogram)(unsafe.Pointer(out)).bit_cost_ = *(*float64)(unsafe.Pointer(bp /* cost */)) (*VP8LHistogram)(unsafe.Pointer(out)).palette_code_bits_ = (*VP8LHistogram)(unsafe.Pointer(a)).palette_code_bits_ } - return (*(*float64)(unsafe.Pointer(bp /* cost */)) - sum_cost) + return *(*float64)(unsafe.Pointer(bp)) - sum_cost } // Same as HistogramAddEval(), except that the resulting histogram @@ -27511,7 +27224,7 @@ func HistogramAddThresh(tls *libc.TLS, a uintptr, b uintptr, cost_threshold floa // var cost float64 at bp, 8 *(*float64)(unsafe.Pointer(bp /* cost */)) = -(*VP8LHistogram)(unsafe.Pointer(a)).bit_cost_ - GetCombinedHistogramEntropy(tls, a, b, cost_threshold, (bp) /* &cost */) + GetCombinedHistogramEntropy(tls, a, b, cost_threshold, bp) return *(*float64)(unsafe.Pointer(bp /* cost */)) } @@ -27570,30 +27283,30 @@ func UpdateHistogramCost(tls *libc.TLS, h uintptr) { /* histogram_enc.c:506:13: // var blue_sym uint32_t at bp+8, 4 - var alpha_cost float64 = PopulationCost(tls, (h + 2056 /* &.alpha_ */), 256, (bp), /* &alpha_sym */ - ((h + 3280 /* &.is_used_ */) + 3)) - var distance_cost float64 = (PopulationCost(tls, (h+3080 /* &.distance_ */), 40, (uintptr(0)), ((h+3280 /* &.is_used_ */)+4)) + (*struct { + var alpha_cost float64 = PopulationCost(tls, h+2056, 256, bp, + h+3280+3) + var distance_cost float64 = PopulationCost(tls, h+3080, 40, uintptr(0), h+3280+4) + (*struct { f func(*libc.TLS, uintptr, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8LExtraCost})).f(tls, (h+3080 /* &.distance_ */), 40)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LExtraCost})).f(tls, h+3080, 40) var num_codes int32 = VP8LHistogramNumCodes(tls, (*VP8LHistogram)(unsafe.Pointer(h)).palette_code_bits_) - (*VP8LHistogram)(unsafe.Pointer(h)).literal_cost_ = (PopulationCost(tls, (*VP8LHistogram)(unsafe.Pointer(h)).literal_, num_codes, (uintptr(0)), (h+3280 /* &.is_used_ */)) + (*struct { + (*VP8LHistogram)(unsafe.Pointer(h)).literal_cost_ = PopulationCost(tls, (*VP8LHistogram)(unsafe.Pointer(h)).literal_, num_codes, uintptr(0), h+3280) + (*struct { f func(*libc.TLS, uintptr, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8LExtraCost})).f(tls, ((*VP8LHistogram)(unsafe.Pointer(h)).literal_+uintptr(256)*4), 24)) - (*VP8LHistogram)(unsafe.Pointer(h)).red_cost_ = PopulationCost(tls, (h + 8 /* &.red_ */), 256, (bp + 4) /* &red_sym */, ((h + 3280 /* &.is_used_ */) + 1)) - (*VP8LHistogram)(unsafe.Pointer(h)).blue_cost_ = PopulationCost(tls, (h + 1032 /* &.blue_ */), 256, (bp + 8) /* &blue_sym */, ((h + 3280 /* &.is_used_ */) + 2)) - (*VP8LHistogram)(unsafe.Pointer(h)).bit_cost_ = (((((*VP8LHistogram)(unsafe.Pointer(h)).literal_cost_ + (*VP8LHistogram)(unsafe.Pointer(h)).red_cost_) + (*VP8LHistogram)(unsafe.Pointer(h)).blue_cost_) + alpha_cost) + distance_cost) - if ((*(*uint32_t)(unsafe.Pointer(bp /* alpha_sym */)) | *(*uint32_t)(unsafe.Pointer(bp + 4 /* red_sym */))) | *(*uint32_t)(unsafe.Pointer(bp + 8 /* blue_sym */))) == (0xffffffff) { - (*VP8LHistogram)(unsafe.Pointer(h)).trivial_symbol_ = (0xffffffff) + })(unsafe.Pointer(&struct{ uintptr }{VP8LExtraCost})).f(tls, (*VP8LHistogram)(unsafe.Pointer(h)).literal_+uintptr(256)*4, 24) + (*VP8LHistogram)(unsafe.Pointer(h)).red_cost_ = PopulationCost(tls, h+8, 256, bp+4, h+3280+1) + (*VP8LHistogram)(unsafe.Pointer(h)).blue_cost_ = PopulationCost(tls, h+1032, 256, bp+8, h+3280+2) + (*VP8LHistogram)(unsafe.Pointer(h)).bit_cost_ = (*VP8LHistogram)(unsafe.Pointer(h)).literal_cost_ + (*VP8LHistogram)(unsafe.Pointer(h)).red_cost_ + (*VP8LHistogram)(unsafe.Pointer(h)).blue_cost_ + alpha_cost + distance_cost + if *(*uint32_t)(unsafe.Pointer(bp))|*(*uint32_t)(unsafe.Pointer(bp + 4))|*(*uint32_t)(unsafe.Pointer(bp + 8)) == 0xffffffff { + (*VP8LHistogram)(unsafe.Pointer(h)).trivial_symbol_ = 0xffffffff } else { - (*VP8LHistogram)(unsafe.Pointer(h)).trivial_symbol_ = (((*(*uint32_t)(unsafe.Pointer(bp /* alpha_sym */)) << 24) | (*(*uint32_t)(unsafe.Pointer(bp + 4 /* red_sym */)) << 16)) | (*(*uint32_t)(unsafe.Pointer(bp + 8 /* blue_sym */)) << 0)) + (*VP8LHistogram)(unsafe.Pointer(h)).trivial_symbol_ = *(*uint32_t)(unsafe.Pointer(bp))<<24 | *(*uint32_t)(unsafe.Pointer(bp + 4))<<16 | *(*uint32_t)(unsafe.Pointer(bp + 8))<<0 } } func GetBinIdForEntropy(tls *libc.TLS, min float64, max float64, val float64) int32 { /* histogram_enc.c:532:12: */ - var range1 float64 = (max - min) + var range1 float64 = max - min if range1 > 0. { - var delta float64 = (val - min) - return (libc.Int32FromFloat64(((float64(float64(4)) - 1e-6) * delta) / range1)) + var delta float64 = val - min + return libc.Int32FromFloat64((float64(float64(4)) - 1e-6) * delta / range1) } else { return 0 } @@ -27605,10 +27318,10 @@ func GetHistoBinIndex(tls *libc.TLS, h uintptr, c uintptr, low_effort int32) int (*VP8LHistogram)(unsafe.Pointer(h)).literal_cost_) if !(low_effort != 0) { - bin_id = ((bin_id * 4) + - GetBinIdForEntropy(tls, (*DominantCostRange)(unsafe.Pointer(c)).red_min_, (*DominantCostRange)(unsafe.Pointer(c)).red_max_, (*VP8LHistogram)(unsafe.Pointer(h)).red_cost_)) - bin_id = ((bin_id * 4) + - GetBinIdForEntropy(tls, (*DominantCostRange)(unsafe.Pointer(c)).blue_min_, (*DominantCostRange)(unsafe.Pointer(c)).blue_max_, (*VP8LHistogram)(unsafe.Pointer(h)).blue_cost_)) + bin_id = bin_id*4 + + GetBinIdForEntropy(tls, (*DominantCostRange)(unsafe.Pointer(c)).red_min_, (*DominantCostRange)(unsafe.Pointer(c)).red_max_, (*VP8LHistogram)(unsafe.Pointer(h)).red_cost_) + bin_id = bin_id*4 + + GetBinIdForEntropy(tls, (*DominantCostRange)(unsafe.Pointer(c)).blue_min_, (*DominantCostRange)(unsafe.Pointer(c)).blue_max_, (*VP8LHistogram)(unsafe.Pointer(h)).blue_cost_) } return bin_id @@ -27626,21 +27339,21 @@ func HistogramBuild(tls *libc.TLS, xsize int32, histo_bits int32, backward_refs *(*VP8LRefsCursor)(unsafe.Pointer(bp /* c */)) = VP8LRefsCursorInit(tls, backward_refs) VP8LHistogramSetClear(tls, image_histo) - for VP8LRefsCursorOk(tls, (bp) /* &c */) != 0 { + for VP8LRefsCursorOk(tls, bp) != 0 { var v uintptr = (*VP8LRefsCursor)(unsafe.Pointer(bp /* &c */)).cur_pos - var ix int32 = (((y >> histo_bits) * histo_xsize) + (x >> histo_bits)) - VP8LHistogramAddSinglePixOrCopy(tls, *(*uintptr)(unsafe.Pointer(histograms + uintptr(ix)*8)), v, (uintptr(0)), 0) - x = int32(uint32_t(x) + (PixOrCopyLength(tls, v))) + var ix int32 = y>>histo_bits*histo_xsize + x>>histo_bits + VP8LHistogramAddSinglePixOrCopy(tls, *(*uintptr)(unsafe.Pointer(histograms + uintptr(ix)*8)), v, uintptr(0), 0) + x = int32(uint32_t(x) + PixOrCopyLength(tls, v)) for x >= xsize { - x = x - (xsize) + x = x - xsize y++ } - VP8LRefsCursorNext(tls, (bp) /* &c */) + VP8LRefsCursorNext(tls, bp) } } // Copies the histograms and computes its bit_cost. -var kInvalidHistogramSymbol uint16_t = libc.Uint16((libc.Uint16FromInt32(-1))) /* histogram_enc.c:581:23 */ +var kInvalidHistogramSymbol uint16_t = libc.Uint16(libc.Uint16FromInt32(-1)) /* histogram_enc.c:581:23 */ func HistogramCopyAndAnalyze(tls *libc.TLS, orig_histo uintptr, image_histo uintptr, num_used uintptr, histogram_symbols uintptr) { /* histogram_enc.c:582:13: */ bp := tls.Alloc(4) @@ -27660,14 +27373,14 @@ func HistogramCopyAndAnalyze(tls *libc.TLS, orig_histo uintptr, image_histo uint // Skip the histogram if it is completely empty, which can happen for tiles // with no information (when they are skipped because of LZ77). - if (((!(int32(*(*uint8_t)(unsafe.Pointer((histo + 3280 /* &.is_used_ */)))) != 0) && !(int32(*(*uint8_t)(unsafe.Pointer((histo + 3280 /* &.is_used_ */) + 1))) != 0)) && !(int32(*(*uint8_t)(unsafe.Pointer((histo + 3280 /* &.is_used_ */) + 2))) != 0)) && - !(int32(*(*uint8_t)(unsafe.Pointer((histo + 3280 /* &.is_used_ */) + 3))) != 0)) && !(int32(*(*uint8_t)(unsafe.Pointer((histo + 3280 /* &.is_used_ */) + 4))) != 0) { + if !(int32(*(*uint8_t)(unsafe.Pointer(histo + 3280))) != 0) && !(int32(*(*uint8_t)(unsafe.Pointer(histo + 3280 + 1))) != 0) && !(int32(*(*uint8_t)(unsafe.Pointer(histo + 3280 + 2))) != 0) && + !(int32(*(*uint8_t)(unsafe.Pointer(histo + 3280 + 3))) != 0) && !(int32(*(*uint8_t)(unsafe.Pointer(histo + 3280 + 4))) != 0) { // The first histogram is always used. If an histogram is empty, we set // its id to be the same as the previous one: this will improve // compressibility for later LZ77. HistogramSetRemoveHistogram(tls, image_histo, i, num_used) - HistogramSetRemoveHistogram(tls, orig_histo, i, (bp) /* &num_used_orig */) + HistogramSetRemoveHistogram(tls, orig_histo, i, bp) *(*uint16_t)(unsafe.Pointer(histogram_symbols + uintptr(i)*2)) = kInvalidHistogramSymbol } else { // Copy histograms from orig_histo[] to image_histo[]. @@ -27689,14 +27402,14 @@ func HistogramAnalyzeEntropyBin(tls *libc.TLS, image_histo uintptr, bin_map uint var histo_size int32 = (*VP8LHistogramSet)(unsafe.Pointer(image_histo)).size // var cost_range DominantCostRange at bp, 48 - DominantCostRangeInit(tls, (bp) /* &cost_range */) + DominantCostRangeInit(tls, bp) // Analyze the dominant (literal, red and blue) entropy costs. for i = 0; i < histo_size; i++ { - if *(*uintptr)(unsafe.Pointer(histograms + uintptr(i)*8)) == (uintptr(0)) { + if *(*uintptr)(unsafe.Pointer(histograms + uintptr(i)*8)) == uintptr(0) { continue } - UpdateDominantCostRange(tls, *(*uintptr)(unsafe.Pointer(histograms + uintptr(i)*8)), (bp) /* &cost_range */) + UpdateDominantCostRange(tls, *(*uintptr)(unsafe.Pointer(histograms + uintptr(i)*8)), bp) } // bin-hash histograms on three of the dominant (literal, red and blue) @@ -27704,10 +27417,10 @@ func HistogramAnalyzeEntropyBin(tls *libc.TLS, image_histo uintptr, bin_map uint for i = 0; i < histo_size; i++ { // bin_map[i] is not set to a special value as its use will later be guarded // by another (histograms[i] == NULL). - if *(*uintptr)(unsafe.Pointer(histograms + uintptr(i)*8)) == (uintptr(0)) { + if *(*uintptr)(unsafe.Pointer(histograms + uintptr(i)*8)) == uintptr(0) { continue } - *(*uint16_t)(unsafe.Pointer(bin_map + uintptr(i)*2)) = uint16_t(GetHistoBinIndex(tls, *(*uintptr)(unsafe.Pointer(histograms + uintptr(i)*8)), (bp) /* &cost_range */, low_effort)) + *(*uint16_t)(unsafe.Pointer(bin_map + uintptr(i)*2)) = uint16_t(GetHistoBinIndex(tls, *(*uintptr)(unsafe.Pointer(histograms + uintptr(i)*8)), bp, low_effort)) } } @@ -27726,11 +27439,11 @@ func HistogramCombineEntropyBin(tls *libc.TLS, image_histo uintptr, num_used uin (*struct { first int16_t num_combine_failures uint16_t - })(unsafe.Pointer((bp) /* &bin_info */ + uintptr(idx)*4)).first = int16(-1) + })(unsafe.Pointer(bp + uintptr(idx)*4)).first = int16(-1) (*struct { first int16_t num_combine_failures uint16_t - })(unsafe.Pointer((bp) /* &bin_info */ + uintptr(idx)*4)).num_combine_failures = uint16_t(0) + })(unsafe.Pointer(bp + uintptr(idx)*4)).num_combine_failures = uint16_t(0) } // By default, a cluster matches itself. @@ -27740,19 +27453,19 @@ func HistogramCombineEntropyBin(tls *libc.TLS, image_histo uintptr, num_used uin for idx = 0; idx < (*VP8LHistogramSet)(unsafe.Pointer(image_histo)).size; idx++ { var bin_id int32 var first int32 - if *(*uintptr)(unsafe.Pointer(histograms + uintptr(idx)*8)) == (uintptr(0)) { + if *(*uintptr)(unsafe.Pointer(histograms + uintptr(idx)*8)) == uintptr(0) { continue } bin_id = int32(*(*uint16_t)(unsafe.Pointer(bin_map + uintptr(idx)*2))) first = int32((*struct { first int16_t num_combine_failures uint16_t - })(unsafe.Pointer((bp) /* &bin_info */ + uintptr(bin_id)*4)).first) + })(unsafe.Pointer(bp + uintptr(bin_id)*4)).first) if first == -1 { (*struct { first int16_t num_combine_failures uint16_t - })(unsafe.Pointer((bp) /* &bin_info */ + uintptr(bin_id)*4)).first = int16_t(idx) + })(unsafe.Pointer(bp + uintptr(bin_id)*4)).first = int16_t(idx) } else if low_effort != 0 { HistogramAdd(tls, *(*uintptr)(unsafe.Pointer(histograms + uintptr(idx)*8)), *(*uintptr)(unsafe.Pointer(histograms + uintptr(first)*8)), *(*uintptr)(unsafe.Pointer(histograms + uintptr(first)*8))) HistogramSetRemoveHistogram(tls, image_histo, idx, num_used) @@ -27760,7 +27473,7 @@ func HistogramCombineEntropyBin(tls *libc.TLS, image_histo uintptr, num_used uin } else { // try to merge #idx into #first (both share the same bin_id) var bit_cost float64 = (*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(histograms + uintptr(idx)*8)))).bit_cost_ - var bit_cost_thresh float64 = (-bit_cost * combine_cost_factor) + var bit_cost_thresh float64 = -bit_cost * combine_cost_factor var curr_cost_diff float64 = HistogramAddEval(tls, *(*uintptr)(unsafe.Pointer(histograms + uintptr(first)*8)), *(*uintptr)(unsafe.Pointer(histograms + uintptr(idx)*8)), *(*uintptr)(unsafe.Pointer(bp + 256 /* cur_combo */)), bit_cost_thresh) if curr_cost_diff < bit_cost_thresh { @@ -27769,21 +27482,21 @@ func HistogramCombineEntropyBin(tls *libc.TLS, image_histo uintptr, num_used uin // For some images, 'try_combine' turns out to be false for a lot of // histogram pairs. In that case, we fallback to combining // histograms as usual to avoid increasing the header size. - var try_combine int32 = (libc.Bool32(((*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 256 /* cur_combo */)))).trivial_symbol_ != (0xffffffff)) || (((*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(histograms + uintptr(idx)*8)))).trivial_symbol_ == (0xffffffff)) && ((*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(histograms + uintptr(first)*8)))).trivial_symbol_ == (0xffffffff))))) + var try_combine int32 = libc.Bool32((*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 256)))).trivial_symbol_ != 0xffffffff || (*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(histograms + uintptr(idx)*8)))).trivial_symbol_ == 0xffffffff && (*VP8LHistogram)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(histograms + uintptr(first)*8)))).trivial_symbol_ == 0xffffffff) var max_combine_failures int32 = 32 - if (try_combine != 0) || (int32((*struct { + if try_combine != 0 || int32((*struct { first int16_t num_combine_failures uint16_t - })(unsafe.Pointer((bp) /* &bin_info */ +uintptr(bin_id)*4)).num_combine_failures) >= max_combine_failures) { + })(unsafe.Pointer(bp+uintptr(bin_id)*4)).num_combine_failures) >= max_combine_failures { // move the (better) merged histogram to its final slot - HistogramSwap(tls, (bp + 256) /* &cur_combo */, (histograms + uintptr(first)*8)) + HistogramSwap(tls, bp+256, histograms+uintptr(first)*8) HistogramSetRemoveHistogram(tls, image_histo, idx, num_used) *(*uint16_t)(unsafe.Pointer(cluster_mappings + uintptr(*(*uint16_t)(unsafe.Pointer(clusters + uintptr(idx)*2)))*2)) = *(*uint16_t)(unsafe.Pointer(clusters + uintptr(first)*2)) } else { (*struct { first int16_t num_combine_failures uint16_t - })(unsafe.Pointer((bp) /* &bin_info */ +uintptr(bin_id)*4)).num_combine_failures++ + })(unsafe.Pointer(bp+uintptr(bin_id)*4)).num_combine_failures++ } } } @@ -27791,7 +27504,7 @@ func HistogramCombineEntropyBin(tls *libc.TLS, image_histo uintptr, num_used uin if low_effort != 0 { // for low_effort case, update the final cost when everything is merged for idx = 0; idx < (*VP8LHistogramSet)(unsafe.Pointer(image_histo)).size; idx++ { - if *(*uintptr)(unsafe.Pointer(histograms + uintptr(idx)*8)) == (uintptr(0)) { + if *(*uintptr)(unsafe.Pointer(histograms + uintptr(idx)*8)) == uintptr(0) { continue } UpdateHistogramCost(tls, *(*uintptr)(unsafe.Pointer(histograms + uintptr(idx)*8))) @@ -27802,7 +27515,7 @@ func HistogramCombineEntropyBin(tls *libc.TLS, image_histo uintptr, num_used uin // Implement a Lehmer random number generator with a multiplicative constant of // 48271 and a modulo constant of 2^31 - 1. func MyRand(tls *libc.TLS, seed uintptr) uint32_t { /* histogram_enc.c:721:17: */ - *(*uint32_t)(unsafe.Pointer(seed)) = (uint32_t(((uint64_t(*(*uint32_t)(unsafe.Pointer(seed)))) * uint64(48271)) % uint64(2147483647))) + *(*uint32_t)(unsafe.Pointer(seed)) = uint32_t(uint64_t(*(*uint32_t)(unsafe.Pointer(seed))) * uint64(48271) % uint64(2147483647)) return *(*uint32_t)(unsafe.Pointer(seed)) } @@ -27830,8 +27543,8 @@ func HistoQueueInit(tls *libc.TLS, histo_queue uintptr, max_size int32) int32 { // We allocate max_size + 1 because the last element at index "size" is // used as temporary data (and it could be up to max_size). (*HistoQueue)(unsafe.Pointer(histo_queue)).queue = WebPSafeMalloc(tls, - (uint64((*HistoQueue)(unsafe.Pointer(histo_queue)).max_size + 1)), uint64(unsafe.Sizeof(HistogramPair{}))) - return (libc.Bool32((*HistoQueue)(unsafe.Pointer(histo_queue)).queue != (uintptr(0)))) + uint64((*HistoQueue)(unsafe.Pointer(histo_queue)).max_size+1), uint64(unsafe.Sizeof(HistogramPair{}))) + return libc.Bool32((*HistoQueue)(unsafe.Pointer(histo_queue)).queue != uintptr(0)) } func HistoQueueClear(tls *libc.TLS, histo_queue uintptr) { /* histogram_enc.c:754:13: */ @@ -27845,7 +27558,7 @@ func HistoQueueClear(tls *libc.TLS, histo_queue uintptr) { /* histogram_enc.c:75 // and shrinking the queue. func HistoQueuePopPair(tls *libc.TLS, histo_queue uintptr, pair uintptr) { /* histogram_enc.c:763:13: */ - *(*HistogramPair)(unsafe.Pointer(pair)) = *(*HistogramPair)(unsafe.Pointer((*HistoQueue)(unsafe.Pointer(histo_queue)).queue + uintptr(((*HistoQueue)(unsafe.Pointer(histo_queue)).size-1))*24)) + *(*HistogramPair)(unsafe.Pointer(pair)) = *(*HistogramPair)(unsafe.Pointer((*HistoQueue)(unsafe.Pointer(histo_queue)).queue + uintptr((*HistoQueue)(unsafe.Pointer(histo_queue)).size-1)*24)) (*HistoQueue)(unsafe.Pointer(histo_queue)).size-- } @@ -27863,10 +27576,10 @@ func HistoQueueUpdateHead(tls *libc.TLS, histo_queue uintptr, pair uintptr) { /* // Update the cost diff and combo of a pair of histograms. This needs to be // called when the the histograms have been merged with a third one. func HistoQueueUpdatePair(tls *libc.TLS, h1 uintptr, h2 uintptr, threshold float64, pair uintptr) { /* histogram_enc.c:789:13: */ - var sum_cost float64 = ((*VP8LHistogram)(unsafe.Pointer(h1)).bit_cost_ + (*VP8LHistogram)(unsafe.Pointer(h2)).bit_cost_) + var sum_cost float64 = (*VP8LHistogram)(unsafe.Pointer(h1)).bit_cost_ + (*VP8LHistogram)(unsafe.Pointer(h2)).bit_cost_ (*HistogramPair)(unsafe.Pointer(pair)).cost_combo = 0. - GetCombinedHistogramEntropy(tls, h1, h2, (sum_cost + threshold), (pair + 16 /* &.cost_combo */)) - (*HistogramPair)(unsafe.Pointer(pair)).cost_diff = ((*HistogramPair)(unsafe.Pointer(pair)).cost_combo - sum_cost) + GetCombinedHistogramEntropy(tls, h1, h2, sum_cost+threshold, pair+16) + (*HistogramPair)(unsafe.Pointer(pair)).cost_diff = (*HistogramPair)(unsafe.Pointer(pair)).cost_combo - sum_cost } // Create a pair from indices "idx1" and "idx2" provided its cost @@ -27895,15 +27608,15 @@ func HistoQueuePush(tls *libc.TLS, histo_queue uintptr, histograms uintptr, idx1 h1 = *(*uintptr)(unsafe.Pointer(histograms + uintptr(idx1)*8)) h2 = *(*uintptr)(unsafe.Pointer(histograms + uintptr(idx2)*8)) - HistoQueueUpdatePair(tls, h1, h2, threshold, (bp) /* &pair */) + HistoQueueUpdatePair(tls, h1, h2, threshold, bp) // Do not even consider the pair if it does not improve the entropy. - if (*HistogramPair)(unsafe.Pointer(bp /* &pair */)).cost_diff >= threshold { + if (*HistogramPair)(unsafe.Pointer(bp)).cost_diff >= threshold { return 0. } *(*HistogramPair)(unsafe.Pointer((*HistoQueue)(unsafe.Pointer(histo_queue)).queue + uintptr(libc.PostIncInt32(&(*HistoQueue)(unsafe.Pointer(histo_queue)).size, 1))*24)) = *(*HistogramPair)(unsafe.Pointer(bp /* pair */)) - HistoQueueUpdateHead(tls, histo_queue, ((*HistoQueue)(unsafe.Pointer(histo_queue)).queue + uintptr(((*HistoQueue)(unsafe.Pointer(histo_queue)).size-1))*24)) + HistoQueueUpdateHead(tls, histo_queue, (*HistoQueue)(unsafe.Pointer(histo_queue)).queue+uintptr((*HistoQueue)(unsafe.Pointer(histo_queue)).size-1)*24) return (*HistogramPair)(unsafe.Pointer(bp /* &pair */)).cost_diff } @@ -27938,7 +27651,7 @@ func HistogramCombineGreedy(tls *libc.TLS, image_histo uintptr, num_used uintptr // - image_histo_size - 1 in the last for loop at the first iteration of // the while loop, image_histo_size - 2 at the second iteration ... // therefore image_histo_size*(image_histo_size-1)/2 overall too - if !(!(HistoQueueInit(tls, (bp) /* &histo_queue */, (image_histo_size*image_histo_size)) != 0)) { + if !!(HistoQueueInit(tls, bp, image_histo_size*image_histo_size) != 0) { goto __1 } goto End @@ -27950,25 +27663,25 @@ __2: if !(i < image_histo_size) { goto __4 } - if !(*(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms + uintptr(i)*8)) == (uintptr(0))) { + if !(*(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms + uintptr(i)*8)) == uintptr(0)) { goto __5 } goto __3 __5: ; - j = (i + 1) + j = i + 1 __6: if !(j < image_histo_size) { goto __8 } // Initialize queue. - if !(*(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms + uintptr(j)*8)) == (uintptr(0))) { + if !(*(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms + uintptr(j)*8)) == uintptr(0)) { goto __9 } goto __7 __9: ; - HistoQueuePush(tls, (bp) /* &histo_queue */, histograms, i, j, 0.) + HistoQueuePush(tls, bp, histograms, i, j, 0.) goto __7 __7: j++ @@ -27985,7 +27698,7 @@ __4: ; __10: - if !((*HistoQueue)(unsafe.Pointer(bp /* &histo_queue */)).size > 0) { + if !((*HistoQueue)(unsafe.Pointer(bp)).size > 0) { goto __11 } idx1 = (*HistogramPair)(unsafe.Pointer((*HistoQueue)(unsafe.Pointer(bp /* &histo_queue */)).queue)).idx1 @@ -27999,17 +27712,17 @@ __10: // Remove pairs intersecting the just combined best pair. i = 0 __12: - if !(i < (*HistoQueue)(unsafe.Pointer(bp /* &histo_queue */)).size) { + if !(i < (*HistoQueue)(unsafe.Pointer(bp)).size) { goto __14 } - p = ((*HistoQueue)(unsafe.Pointer(bp /* &histo_queue */)).queue + uintptr(i)*24) - if !(((((*HistogramPair)(unsafe.Pointer(p)).idx1 == idx1) || ((*HistogramPair)(unsafe.Pointer(p)).idx2 == idx1)) || ((*HistogramPair)(unsafe.Pointer(p)).idx1 == idx2)) || ((*HistogramPair)(unsafe.Pointer(p)).idx2 == idx2)) { + p = (*HistoQueue)(unsafe.Pointer(bp)).queue + uintptr(i)*24 + if !((*HistogramPair)(unsafe.Pointer(p)).idx1 == idx1 || (*HistogramPair)(unsafe.Pointer(p)).idx2 == idx1 || (*HistogramPair)(unsafe.Pointer(p)).idx1 == idx2 || (*HistogramPair)(unsafe.Pointer(p)).idx2 == idx2) { goto __15 } - HistoQueuePopPair(tls, (bp) /* &histo_queue */, p) + HistoQueuePopPair(tls, bp, p) goto __16 __15: - HistoQueueUpdateHead(tls, (bp) /* &histo_queue */, p) + HistoQueueUpdateHead(tls, bp, p) i++ __16: ; @@ -28027,13 +27740,13 @@ __17: if !(i < (*VP8LHistogramSet)(unsafe.Pointer(image_histo)).size) { goto __19 } - if !((i == idx1) || (*(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms + uintptr(i)*8)) == (uintptr(0)))) { + if !(i == idx1 || *(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms + uintptr(i)*8)) == uintptr(0)) { goto __20 } goto __18 __20: ; - HistoQueuePush(tls, (bp) /* &histo_queue */, (*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms, idx1, i, 0.) + HistoQueuePush(tls, bp, (*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms, idx1, i, 0.) goto __18 __18: i++ @@ -28048,7 +27761,7 @@ __11: ok = 1 End: - HistoQueueClear(tls, (bp) /* &histo_queue */) + HistoQueueClear(tls, bp) return ok } @@ -28057,7 +27770,7 @@ End: // afterwards, 0 otherwise. func PairComparison(tls *libc.TLS, idx1 uintptr, idx2 uintptr) int32 { /* histogram_enc.c:904:12: */ // To be used with bsearch: <0 when *idx1<*idx2, >0 if >, 0 when ==. - return (*(*int32)(unsafe.Pointer(idx1)) - *(*int32)(unsafe.Pointer(idx2))) + return *(*int32)(unsafe.Pointer(idx1)) - *(*int32)(unsafe.Pointer(idx2)) } func HistogramCombineStochastic(tls *libc.TLS, image_histo uintptr, num_used uintptr, min_cluster_size int32, do_greedy uintptr) int32 { /* histogram_enc.c:908:12: */ @@ -28104,7 +27817,7 @@ func HistogramCombineStochastic(tls *libc.TLS, image_histo uintptr, num_used uin *(*uint32_t)(unsafe.Pointer(bp + 16 /* seed */)) = uint32_t(1) tries_with_no_success = 0 outer_iters = *(*int32)(unsafe.Pointer(num_used)) - num_tries_no_success = (outer_iters / 2) + num_tries_no_success = outer_iters / 2 histograms = (*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms kHistoQueueSize = 9 ok = 0 @@ -28118,13 +27831,13 @@ __1: ; mappings = WebPSafeMalloc(tls, uint64(*(*int32)(unsafe.Pointer(num_used))), uint64(unsafe.Sizeof(int32(0)))) - if !(mappings == (uintptr(0))) { + if !(mappings == uintptr(0)) { goto __2 } return 0 __2: ; - if !(!(HistoQueueInit(tls, (bp) /* &histo_queue */, kHistoQueueSize) != 0)) { + if !!(HistoQueueInit(tls, bp, kHistoQueueSize) != 0) { goto __3 } goto End @@ -28137,7 +27850,7 @@ __4: if !(iter < (*VP8LHistogramSet)(unsafe.Pointer(image_histo)).size) { goto __6 } - if !(*(*uintptr)(unsafe.Pointer(histograms + uintptr(iter)*8)) == (uintptr(0))) { + if !(*(*uintptr)(unsafe.Pointer(histograms + uintptr(iter)*8)) == uintptr(0)) { goto __7 } goto __5 @@ -28155,31 +27868,31 @@ __6: // Collapse similar histograms in 'image_histo'. iter = 0 __8: - if !(((iter < outer_iters) && (*(*int32)(unsafe.Pointer(num_used)) >= min_cluster_size)) && (libc.PreIncInt32(&tries_with_no_success, 1) < num_tries_no_success)) { + if !(iter < outer_iters && *(*int32)(unsafe.Pointer(num_used)) >= min_cluster_size && libc.PreIncInt32(&tries_with_no_success, 1) < num_tries_no_success) { goto __10 } - if (*HistoQueue)(unsafe.Pointer(bp /* &histo_queue */)).size == 0 { + if (*HistoQueue)(unsafe.Pointer(bp)).size == 0 { best_cost = 0. } else { best_cost = (*HistogramPair)(unsafe.Pointer((*HistoQueue)(unsafe.Pointer(bp /* &histo_queue */)).queue)).cost_diff } best_idx1 = -1 *(*int32)(unsafe.Pointer(bp + 20 /* best_idx2 */)) = 1 - rand_range = (uint32_t((*(*int32)(unsafe.Pointer(num_used)) - 1) * (*(*int32)(unsafe.Pointer(num_used))))) + rand_range = uint32_t((*(*int32)(unsafe.Pointer(num_used)) - 1) * *(*int32)(unsafe.Pointer(num_used))) // (*num_used) / 2 was chosen empirically. Less means faster but worse // compression. - num_tries = ((*(*int32)(unsafe.Pointer(num_used))) / 2) + num_tries = *(*int32)(unsafe.Pointer(num_used)) / 2 // Pick random samples. j = 0 __11: - if !((*(*int32)(unsafe.Pointer(num_used)) >= 2) && (j < num_tries)) { + if !(*(*int32)(unsafe.Pointer(num_used)) >= 2 && j < num_tries) { goto __13 } // Choose two different histograms at random and try to combine them. - tmp = (MyRand(tls, (bp+16) /* &seed */) % rand_range) - idx1 = (tmp / (uint32_t(*(*int32)(unsafe.Pointer(num_used)) - 1))) - idx2 = (tmp % (uint32_t(*(*int32)(unsafe.Pointer(num_used)) - 1))) + tmp = MyRand(tls, bp+16) % rand_range + idx1 = tmp / uint32_t(*(*int32)(unsafe.Pointer(num_used))-1) + idx2 = tmp % uint32_t(*(*int32)(unsafe.Pointer(num_used))-1) if !(idx2 >= idx1) { goto __14 } @@ -28190,13 +27903,13 @@ __14: idx2 = uint32_t(*(*int32)(unsafe.Pointer(mappings + uintptr(idx2)*4))) // Calculate cost reduction on combination. - curr_cost = HistoQueuePush(tls, (bp) /* &histo_queue */, histograms, int32(idx1), int32(idx2), best_cost) + curr_cost = HistoQueuePush(tls, bp, histograms, int32(idx1), int32(idx2), best_cost) if !(curr_cost < float64(0)) { goto __15 } // found a better pair? best_cost = curr_cost // Empty the queue if we reached full capacity. - if !((*HistoQueue)(unsafe.Pointer(bp /* &histo_queue */)).size == (*HistoQueue)(unsafe.Pointer(bp /* &histo_queue */)).max_size) { + if !((*HistoQueue)(unsafe.Pointer(bp)).size == (*HistoQueue)(unsafe.Pointer(bp)).max_size) { goto __16 } goto __13 @@ -28211,7 +27924,7 @@ __12: goto __13 __13: ; - if !((*HistoQueue)(unsafe.Pointer(bp /* &histo_queue */)).size == 0) { + if !((*HistoQueue)(unsafe.Pointer(bp)).size == 0) { goto __17 } goto __9 @@ -28223,23 +27936,12 @@ __17: *(*int32)(unsafe.Pointer(bp + 20 /* best_idx2 */)) = (*HistogramPair)(unsafe.Pointer((*HistoQueue)(unsafe.Pointer(bp /* &histo_queue */)).queue)).idx2 // Pop best_idx2 from mappings. - mapping_index = bsearch( - tls, - (bp + 20), /* &best_idx2 */ - mappings, - uint64(*(*int32)(unsafe.Pointer(num_used))), - uint64(unsafe.Sizeof(int32(0))), - // Function pointers are generated by taking a pointer to - // a struct who's first field is that function. - *(*uintptr)(unsafe.Pointer( - &struct { - f func(*libc.TLS, uintptr, uintptr) int32 - }{ - PairComparison, - }, - ))) + mapping_index = libc.Xbsearch(tls, bp+20, mappings, uint64(*(*int32)(unsafe.Pointer(num_used))), + uint64(unsafe.Sizeof(int32(0))), *(*uintptr)(unsafe.Pointer(&struct { + f func(*libc.TLS, uintptr, uintptr) int32 + }{PairComparison}))) - libc.Xmemmove(tls, mapping_index, (mapping_index + uintptr(1)*4), (uint64(unsafe.Sizeof(int32(0))) * (uint64(((int64(*(*int32)(unsafe.Pointer(num_used)))) - ((int64(mapping_index) - int64(mappings)) / 4)) - int64(1))))) + libc.Xmemmove(tls, mapping_index, mapping_index+uintptr(1)*4, uint64(unsafe.Sizeof(int32(0)))*uint64(int64(*(*int32)(unsafe.Pointer(num_used)))-(int64(mapping_index)-int64(mappings))/4-int64(1))) // Merge the histograms and remove best_idx2 from the queue. HistogramAdd(tls, *(*uintptr)(unsafe.Pointer(histograms + uintptr(*(*int32)(unsafe.Pointer(bp + 20 /* best_idx2 */)))*8)), *(*uintptr)(unsafe.Pointer(histograms + uintptr(best_idx1)*8)), *(*uintptr)(unsafe.Pointer(histograms + uintptr(best_idx1)*8))) @@ -28249,19 +27951,19 @@ __17: // best_idx2 or image_histo_size. j = 0 __18: - if !(j < (*HistoQueue)(unsafe.Pointer(bp /* &histo_queue */)).size) { + if !(j < (*HistoQueue)(unsafe.Pointer(bp)).size) { goto __20 } - p = ((*HistoQueue)(unsafe.Pointer(bp /* &histo_queue */)).queue + uintptr(j)*24) - is_idx1_best = (libc.Bool32(((*HistogramPair)(unsafe.Pointer(p)).idx1 == best_idx1) || ((*HistogramPair)(unsafe.Pointer(p)).idx1 == *(*int32)(unsafe.Pointer(bp + 20 /* best_idx2 */))))) - is_idx2_best = (libc.Bool32(((*HistogramPair)(unsafe.Pointer(p)).idx2 == best_idx1) || ((*HistogramPair)(unsafe.Pointer(p)).idx2 == *(*int32)(unsafe.Pointer(bp + 20 /* best_idx2 */))))) + p = (*HistoQueue)(unsafe.Pointer(bp)).queue + uintptr(j)*24 + is_idx1_best = libc.Bool32((*HistogramPair)(unsafe.Pointer(p)).idx1 == best_idx1 || (*HistogramPair)(unsafe.Pointer(p)).idx1 == *(*int32)(unsafe.Pointer(bp + 20))) + is_idx2_best = libc.Bool32((*HistogramPair)(unsafe.Pointer(p)).idx2 == best_idx1 || (*HistogramPair)(unsafe.Pointer(p)).idx2 == *(*int32)(unsafe.Pointer(bp + 20))) do_eval = 0 // The front pair could have been duplicated by a random pick so // check for it all the time nevertheless. - if !((is_idx1_best != 0) && (is_idx2_best != 0)) { + if !(is_idx1_best != 0 && is_idx2_best != 0) { goto __21 } - HistoQueuePopPair(tls, (bp) /* &histo_queue */, p) + HistoQueuePopPair(tls, bp, p) goto __19 __21: ; @@ -28300,13 +28002,13 @@ __25: if !((*HistogramPair)(unsafe.Pointer(p)).cost_diff >= 0.) { goto __27 } - HistoQueuePopPair(tls, (bp) /* &histo_queue */, p) + HistoQueuePopPair(tls, bp, p) goto __19 __27: ; __26: ; - HistoQueueUpdateHead(tls, (bp) /* &histo_queue */, p) + HistoQueueUpdateHead(tls, bp, p) j++ goto __19 __19: @@ -28323,11 +28025,11 @@ __9: goto __10 __10: ; - *(*int32)(unsafe.Pointer(do_greedy)) = (libc.Bool32(*(*int32)(unsafe.Pointer(num_used)) <= min_cluster_size)) + *(*int32)(unsafe.Pointer(do_greedy)) = libc.Bool32(*(*int32)(unsafe.Pointer(num_used)) <= min_cluster_size) ok = 1 End: - HistoQueueClear(tls, (bp) /* &histo_queue */) + HistoQueueClear(tls, bp) WebPSafeFree(tls, mappings) return ok } @@ -28349,15 +28051,15 @@ func HistogramRemap(tls *libc.TLS, in uintptr, out uintptr, symbols uintptr) { / var best_out int32 = 0 var best_bits float64 = 1.e38 var k int32 - if *(*uintptr)(unsafe.Pointer(in_histo + uintptr(i)*8)) == (uintptr(0)) { + if *(*uintptr)(unsafe.Pointer(in_histo + uintptr(i)*8)) == uintptr(0) { // Arbitrarily set to the previous value if unused to help future LZ77. - *(*uint16_t)(unsafe.Pointer(symbols + uintptr(i)*2)) = *(*uint16_t)(unsafe.Pointer(symbols + uintptr((i-1))*2)) + *(*uint16_t)(unsafe.Pointer(symbols + uintptr(i)*2)) = *(*uint16_t)(unsafe.Pointer(symbols + uintptr(i-1)*2)) continue } for k = 0; k < out_size; k++ { var cur_bits float64 cur_bits = HistogramAddThresh(tls, *(*uintptr)(unsafe.Pointer(out_histo + uintptr(k)*8)), *(*uintptr)(unsafe.Pointer(in_histo + uintptr(i)*8)), best_bits) - if (k == 0) || (cur_bits < best_bits) { + if k == 0 || cur_bits < best_bits { best_bits = cur_bits best_out = k } @@ -28377,7 +28079,7 @@ func HistogramRemap(tls *libc.TLS, in uintptr, out uintptr, symbols uintptr) { / for i = 0; i < in_size; i++ { var idx int32 - if *(*uintptr)(unsafe.Pointer(in_histo + uintptr(i)*8)) == (uintptr(0)) { + if *(*uintptr)(unsafe.Pointer(in_histo + uintptr(i)*8)) == uintptr(0) { continue } idx = int32(*(*uint16_t)(unsafe.Pointer(symbols + uintptr(i)*2))) @@ -28389,16 +28091,16 @@ func GetCombineCostFactor(tls *libc.TLS, histo_size int32, quality int32) float6 var combine_cost_factor float64 = 0.16 if quality < 90 { if histo_size > 256 { - combine_cost_factor = combine_cost_factor / (2.) + combine_cost_factor = combine_cost_factor / 2. } if histo_size > 512 { - combine_cost_factor = combine_cost_factor / (2.) + combine_cost_factor = combine_cost_factor / 2. } if histo_size > 1024 { - combine_cost_factor = combine_cost_factor / (2.) + combine_cost_factor = combine_cost_factor / 2. } if quality <= 50 { - combine_cost_factor = combine_cost_factor / (2.) + combine_cost_factor = combine_cost_factor / 2. } } return combine_cost_factor @@ -28430,7 +28132,7 @@ func OptimizeHistogramSymbols(tls *libc.TLS, set uintptr, cluster_mappings uintp // Create a mapping from a cluster id to its minimal version. cluster_max = 0 libc.Xmemset(tls, cluster_mappings_tmp, 0, - (uint64((*VP8LHistogramSet)(unsafe.Pointer(set)).max_size) * uint64(unsafe.Sizeof(uint16_t(0))))) + uint64((*VP8LHistogramSet)(unsafe.Pointer(set)).max_size)*uint64(unsafe.Sizeof(uint16_t(0)))) // Re-map the ids. for i = 0; i < (*VP8LHistogramSet)(unsafe.Pointer(set)).max_size; i++ { @@ -28440,7 +28142,7 @@ func OptimizeHistogramSymbols(tls *libc.TLS, set uintptr, cluster_mappings uintp } cluster = int32(*(*uint16_t)(unsafe.Pointer(cluster_mappings + uintptr(*(*uint16_t)(unsafe.Pointer(symbols + uintptr(i)*2)))*2))) - if (cluster > 0) && (int32(*(*uint16_t)(unsafe.Pointer(cluster_mappings_tmp + uintptr(cluster)*2))) == 0) { + if cluster > 0 && int32(*(*uint16_t)(unsafe.Pointer(cluster_mappings_tmp + uintptr(cluster)*2))) == 0 { cluster_max++ *(*uint16_t)(unsafe.Pointer(cluster_mappings_tmp + uintptr(cluster)*2)) = uint16_t(cluster_max) } @@ -28467,7 +28169,7 @@ func RemoveEmptyHistograms(tls *libc.TLS, image_histo uintptr) { /* histogram_en i = 0 size = uint32_t(0) for ; i < (*VP8LHistogramSet)(unsafe.Pointer(image_histo)).size; i++ { - if *(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms + uintptr(i)*8)) == (uintptr(0)) { + if *(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms + uintptr(i)*8)) == uintptr(0) { continue } *(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms + uintptr(libc.PostIncUint32(&size, 1))*8)) = *(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(image_histo)).histograms + uintptr(i)*8)) @@ -28511,19 +28213,19 @@ func VP8LGetHistoImageSymbols(tls *libc.TLS, xsize int32, ysize int32, refs uint } else { histo_ysize = 1 } - image_histo_raw_size = (histo_xsize * histo_ysize) + image_histo_raw_size = histo_xsize * histo_ysize orig_histo = VP8LAllocateHistogramSet(tls, image_histo_raw_size, cache_bits) if low_effort != 0 { entropy_combine_num_bins = 4 } else { - entropy_combine_num_bins = ((4 * 4) * 4) + entropy_combine_num_bins = 4 * 4 * 4 } map_tmp = - WebPSafeMalloc(tls, (uint64(2 * image_histo_raw_size)), uint64(unsafe.Sizeof(map_tmp))) - cluster_mappings = (map_tmp + uintptr(image_histo_raw_size)*2) + WebPSafeMalloc(tls, uint64(2*image_histo_raw_size), uint64(unsafe.Sizeof(map_tmp))) + cluster_mappings = map_tmp + uintptr(image_histo_raw_size)*2 *(*int32)(unsafe.Pointer(bp /* num_used */)) = image_histo_raw_size - if !((orig_histo == (uintptr(0))) || (map_tmp == (uintptr(0)))) { + if !(orig_histo == uintptr(0) || map_tmp == uintptr(0)) { goto __1 } goto Error @@ -28534,10 +28236,10 @@ __1: HistogramBuild(tls, xsize, histogram_bits, refs, orig_histo) // Copies the histograms and computes its bit_cost. // histogram_symbols is optimized - HistogramCopyAndAnalyze(tls, orig_histo, image_histo, (bp), /* &num_used */ + HistogramCopyAndAnalyze(tls, orig_histo, image_histo, bp, histogram_symbols) - entropy_combine = (libc.Bool32((*(*int32)(unsafe.Pointer(bp /* num_used */)) > (entropy_combine_num_bins * 2)) && (quality < 100))) + entropy_combine = libc.Bool32(*(*int32)(unsafe.Pointer(bp)) > entropy_combine_num_bins*2 && quality < 100) if !(entropy_combine != 0) { goto __2 @@ -28549,7 +28251,7 @@ __1: HistogramAnalyzeEntropyBin(tls, image_histo, bin_map, low_effort) // Collapse histograms with similar entropy. - HistogramCombineEntropyBin(tls, image_histo, (bp) /* &num_used */, histogram_symbols, + HistogramCombineEntropyBin(tls, image_histo, bp, histogram_symbols, cluster_mappings, tmp_histo, bin_map, entropy_combine_num_bins, combine_cost_factor, low_effort) @@ -28563,21 +28265,21 @@ __2: if !(!(low_effort != 0) || !(entropy_combine != 0)) { goto __3 } - x = (float32(quality) / 100.) + x = float32(quality) / 100. // cubic ramp between 1 and MAX_HISTO_GREEDY: - threshold_size = (libc.Int32FromFloat32(float32(1) + (((x * x) * x) * (float32(100 - 1))))) - if !(!(HistogramCombineStochastic(tls, image_histo, (bp) /* &num_used */, threshold_size, - (bp+4) /* &do_greedy */) != 0)) { + threshold_size = libc.Int32FromFloat32(float32(1) + x*x*x*float32(100-1)) + if !!(HistogramCombineStochastic(tls, image_histo, bp, threshold_size, + bp+4) != 0) { goto __4 } goto Error __4: ; - if !(*(*int32)(unsafe.Pointer(bp + 4 /* do_greedy */)) != 0) { + if !(*(*int32)(unsafe.Pointer(bp + 4)) != 0) { goto __5 } RemoveEmptyHistograms(tls, image_histo) - if !(!(HistogramCombineGreedy(tls, image_histo, (bp) /* &num_used */) != 0)) { + if !!(HistogramCombineGreedy(tls, image_histo, bp) != 0) { goto __6 } goto Error @@ -28607,7 +28309,7 @@ Error: //------------------------------------------------------------------------------ func InitLeft(tls *libc.TLS, it uintptr) { /* iterator_enc.c:22:13: */ - *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + libc.UintptrFromInt32(-1))) = libc.AssignPtrUint8(((*VP8EncIterator)(unsafe.Pointer(it)).u_left_ + libc.UintptrFromInt32(-1)), libc.AssignPtrUint8(((*VP8EncIterator)(unsafe.Pointer(it)).v_left_+libc.UintptrFromInt32(-1)), func() uint8 { + *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + libc.UintptrFromInt32(-1))) = libc.AssignPtrUint8((*VP8EncIterator)(unsafe.Pointer(it)).u_left_+libc.UintptrFromInt32(-1), libc.AssignPtrUint8((*VP8EncIterator)(unsafe.Pointer(it)).v_left_+libc.UintptrFromInt32(-1), func() uint8 { if (*VP8EncIterator)(unsafe.Pointer(it)).y_ > 0 { return uint8(129) } @@ -28616,19 +28318,19 @@ func InitLeft(tls *libc.TLS, it uintptr) { /* iterator_enc.c:22:13: */ libc.Xmemset(tls, (*VP8EncIterator)(unsafe.Pointer(it)).y_left_, 129, uint64(16)) libc.Xmemset(tls, (*VP8EncIterator)(unsafe.Pointer(it)).u_left_, 129, uint64(8)) libc.Xmemset(tls, (*VP8EncIterator)(unsafe.Pointer(it)).v_left_, 129, uint64(8)) - *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + 8*4)) = 0 - if (*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ != (uintptr(0)) { - libc.Xmemset(tls, (it + 344 /* &.left_derr_ */), 0, uint64(unsafe.Sizeof(DError{}))) + *(*int32)(unsafe.Pointer(it + 168 + 8*4)) = 0 + if (*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ != uintptr(0) { + libc.Xmemset(tls, it+344, 0, uint64(unsafe.Sizeof(DError{}))) } } func InitTop(tls *libc.TLS, it uintptr) { /* iterator_enc.c:34:13: */ var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ - var top_size size_t = (size_t((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * 16)) - libc.Xmemset(tls, (*VP8Encoder)(unsafe.Pointer(enc)).y_top_, 127, (uint64(2) * top_size)) - libc.Xmemset(tls, (*VP8Encoder)(unsafe.Pointer(enc)).nz_, 0, (uint64((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_) * uint64(unsafe.Sizeof(uint32_t(0))))) - if (*VP8Encoder)(unsafe.Pointer(enc)).top_derr_ != (uintptr(0)) { - libc.Xmemset(tls, (*VP8Encoder)(unsafe.Pointer(enc)).top_derr_, 0, (uint64((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_) * uint64(unsafe.Sizeof(DError{})))) + var top_size size_t = size_t((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * 16) + libc.Xmemset(tls, (*VP8Encoder)(unsafe.Pointer(enc)).y_top_, 127, uint64(2)*top_size) + libc.Xmemset(tls, (*VP8Encoder)(unsafe.Pointer(enc)).nz_, 0, uint64((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_)*uint64(unsafe.Sizeof(uint32_t(0)))) + if (*VP8Encoder)(unsafe.Pointer(enc)).top_derr_ != uintptr(0) { + libc.Xmemset(tls, (*VP8Encoder)(unsafe.Pointer(enc)).top_derr_, 0, uint64((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_)*uint64(unsafe.Sizeof(DError{}))) } } @@ -28636,10 +28338,10 @@ func VP8IteratorSetRow(tls *libc.TLS, it uintptr, y int32) { /* iterator_enc.c:4 var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ (*VP8EncIterator)(unsafe.Pointer(it)).x_ = 0 (*VP8EncIterator)(unsafe.Pointer(it)).y_ = y - (*VP8EncIterator)(unsafe.Pointer(it)).bw_ = ((enc + 112 /* &.parts_ */) + uintptr((y&((*VP8Encoder)(unsafe.Pointer(enc)).num_parts_-1)))*48) - (*VP8EncIterator)(unsafe.Pointer(it)).preds_ = ((*VP8Encoder)(unsafe.Pointer(enc)).preds_ + uintptr(((y * 4) * (*VP8Encoder)(unsafe.Pointer(enc)).preds_w_))) + (*VP8EncIterator)(unsafe.Pointer(it)).bw_ = enc + 112 + uintptr(y&((*VP8Encoder)(unsafe.Pointer(enc)).num_parts_-1))*48 + (*VP8EncIterator)(unsafe.Pointer(it)).preds_ = (*VP8Encoder)(unsafe.Pointer(enc)).preds_ + uintptr(y*4*(*VP8Encoder)(unsafe.Pointer(enc)).preds_w_) (*VP8EncIterator)(unsafe.Pointer(it)).nz_ = (*VP8Encoder)(unsafe.Pointer(enc)).nz_ - (*VP8EncIterator)(unsafe.Pointer(it)).mb_ = ((*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr((y*(*VP8Encoder)(unsafe.Pointer(enc)).mb_w_))*4) + (*VP8EncIterator)(unsafe.Pointer(it)).mb_ = (*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr(y*(*VP8Encoder)(unsafe.Pointer(enc)).mb_w_)*4 (*VP8EncIterator)(unsafe.Pointer(it)).y_top_ = (*VP8Encoder)(unsafe.Pointer(enc)).y_top_ (*VP8EncIterator)(unsafe.Pointer(it)).uv_top_ = (*VP8Encoder)(unsafe.Pointer(enc)).uv_top_ InitLeft(tls, it) @@ -28648,46 +28350,46 @@ func VP8IteratorSetRow(tls *libc.TLS, it uintptr, y int32) { /* iterator_enc.c:4 func VP8IteratorReset(tls *libc.TLS, it uintptr) { /* iterator_enc.c:57:6: */ var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ VP8IteratorSetRow(tls, it, 0) - VP8IteratorSetCountDown(tls, it, ((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_)) // default + VP8IteratorSetCountDown(tls, it, (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_*(*VP8Encoder)(unsafe.Pointer(enc)).mb_h_) // default InitTop(tls, it) - libc.Xmemset(tls, (it + 208 /* &.bit_count_ */), 0, uint64(unsafe.Sizeof([4][3]uint64_t{}))) + libc.Xmemset(tls, it+208, 0, uint64(unsafe.Sizeof([4][3]uint64_t{}))) (*VP8EncIterator)(unsafe.Pointer(it)).do_trellis_ = 0 } func VP8IteratorSetCountDown(tls *libc.TLS, it uintptr, count_down int32) { /* iterator_enc.c:66:6: */ - (*VP8EncIterator)(unsafe.Pointer(it)).count_down_ = libc.AssignPtrInt32((it + 336 /* &.count_down0_ */), count_down) + (*VP8EncIterator)(unsafe.Pointer(it)).count_down_ = libc.AssignPtrInt32(it+336, count_down) } func VP8IteratorIsDone(tls *libc.TLS, it uintptr) int32 { /* iterator_enc.c:70:5: */ - return (libc.Bool32((*VP8EncIterator)(unsafe.Pointer(it)).count_down_ <= 0)) + return libc.Bool32((*VP8EncIterator)(unsafe.Pointer(it)).count_down_ <= 0) } func VP8IteratorInit(tls *libc.TLS, enc uintptr, it uintptr) { /* iterator_enc.c:74:6: */ (*VP8EncIterator)(unsafe.Pointer(it)).enc_ = enc - (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ = (uintptr(((uint64(it + 488 /* &.yuv_mem_ */)) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) - (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((32 * 16))) - (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr((32 * 16))) - (*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr((32 * 16))) + (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ = uintptr((uint64(it+488) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) + (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr(32*16) + (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr(32*16) + (*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr(32*16) (*VP8EncIterator)(unsafe.Pointer(it)).lf_stats_ = (*VP8Encoder)(unsafe.Pointer(enc)).lf_stats_ (*VP8EncIterator)(unsafe.Pointer(it)).percent0_ = (*VP8Encoder)(unsafe.Pointer(enc)).percent_ - (*VP8EncIterator)(unsafe.Pointer(it)).y_left_ = (uintptr((uintptr_t(((it + 400 /* &.yuv_left_mem_ */) + uintptr(1))) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) - (*VP8EncIterator)(unsafe.Pointer(it)).u_left_ = (((*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + uintptr(16)) + uintptr(16)) - (*VP8EncIterator)(unsafe.Pointer(it)).v_left_ = ((*VP8EncIterator)(unsafe.Pointer(it)).u_left_ + uintptr(16)) + (*VP8EncIterator)(unsafe.Pointer(it)).y_left_ = uintptr((uintptr_t(it+400+uintptr(1)) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) + (*VP8EncIterator)(unsafe.Pointer(it)).u_left_ = (*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + uintptr(16) + uintptr(16) + (*VP8EncIterator)(unsafe.Pointer(it)).v_left_ = (*VP8EncIterator)(unsafe.Pointer(it)).u_left_ + uintptr(16) (*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ = (*VP8Encoder)(unsafe.Pointer(enc)).top_derr_ VP8IteratorReset(tls, it) } func VP8IteratorProgress(tls *libc.TLS, it uintptr, delta int32) int32 { /* iterator_enc.c:89:5: */ var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ - if (delta != 0) && ((*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).progress_hook != (uintptr(0))) { - var done int32 = ((*VP8EncIterator)(unsafe.Pointer(it)).count_down0_ - (*VP8EncIterator)(unsafe.Pointer(it)).count_down_) + if delta != 0 && (*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).progress_hook != uintptr(0) { + var done int32 = (*VP8EncIterator)(unsafe.Pointer(it)).count_down0_ - (*VP8EncIterator)(unsafe.Pointer(it)).count_down_ var percent int32 if (*VP8EncIterator)(unsafe.Pointer(it)).count_down0_ <= 0 { percent = (*VP8EncIterator)(unsafe.Pointer(it)).percent0_ } else { - percent = ((*VP8EncIterator)(unsafe.Pointer(it)).percent0_ + ((delta * done) / (*VP8EncIterator)(unsafe.Pointer(it)).count_down0_)) + percent = (*VP8EncIterator)(unsafe.Pointer(it)).percent0_ + delta*done/(*VP8EncIterator)(unsafe.Pointer(it)).count_down0_ } - return WebPReportProgress(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_, percent, (enc + 536 /* &.percent_ */)) + return WebPReportProgress(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_, percent, enc+536) } return 1 } @@ -28708,13 +28410,13 @@ func ImportBlock(tls *libc.TLS, src uintptr, src_stride int32, dst uintptr, w in for i = 0; i < h; i++ { libc.Xmemcpy(tls, dst, src, uint64(w)) if w < size { - libc.Xmemset(tls, (dst + uintptr(w)), int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr((w - 1))))), (uint64(size - w))) + libc.Xmemset(tls, dst+uintptr(w), int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(w-1)))), uint64(size-w)) } dst += uintptr(32) src += uintptr(src_stride) } for i = h; i < size; i++ { - libc.Xmemcpy(tls, dst, (dst - uintptr(32)), uint64(size)) + libc.Xmemcpy(tls, dst, dst-uintptr(32), uint64(size)) dst += uintptr(32) } } @@ -28736,7 +28438,7 @@ __2: __3: ; for ; i < total_len; i++ { - *(*uint8_t)(unsafe.Pointer(dst + uintptr(i))) = *(*uint8_t)(unsafe.Pointer(dst + uintptr((len - 1)))) + *(*uint8_t)(unsafe.Pointer(dst + uintptr(i))) = *(*uint8_t)(unsafe.Pointer(dst + uintptr(len-1))) } } @@ -28745,19 +28447,19 @@ func VP8IteratorImport(tls *libc.TLS, it uintptr, tmp_32 uintptr) { /* iterator_ var x int32 = (*VP8EncIterator)(unsafe.Pointer(it)).x_ var y int32 = (*VP8EncIterator)(unsafe.Pointer(it)).y_ var pic uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).pic_ - var ysrc uintptr = ((*WebPPicture)(unsafe.Pointer(pic)).y + uintptr((((y * (*WebPPicture)(unsafe.Pointer(pic)).y_stride) + x) * 16))) - var usrc uintptr = ((*WebPPicture)(unsafe.Pointer(pic)).u + uintptr((((y * (*WebPPicture)(unsafe.Pointer(pic)).uv_stride) + x) * 8))) - var vsrc uintptr = ((*WebPPicture)(unsafe.Pointer(pic)).v + uintptr((((y * (*WebPPicture)(unsafe.Pointer(pic)).uv_stride) + x) * 8))) - var w int32 = MinSize(tls, ((*WebPPicture)(unsafe.Pointer(pic)).width - (x * 16)), 16) - var h int32 = MinSize(tls, ((*WebPPicture)(unsafe.Pointer(pic)).height - (y * 16)), 16) - var uv_w int32 = ((w + 1) >> 1) - var uv_h int32 = ((h + 1) >> 1) - - ImportBlock(tls, ysrc, (*WebPPicture)(unsafe.Pointer(pic)).y_stride, ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((0))), w, h, 16) - ImportBlock(tls, usrc, (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((16))), uv_w, uv_h, 8) - ImportBlock(tls, vsrc, (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((16 + 8))), uv_w, uv_h, 8) - - if tmp_32 == (uintptr(0)) { + var ysrc uintptr = (*WebPPicture)(unsafe.Pointer(pic)).y + uintptr((y*(*WebPPicture)(unsafe.Pointer(pic)).y_stride+x)*16) + var usrc uintptr = (*WebPPicture)(unsafe.Pointer(pic)).u + uintptr((y*(*WebPPicture)(unsafe.Pointer(pic)).uv_stride+x)*8) + var vsrc uintptr = (*WebPPicture)(unsafe.Pointer(pic)).v + uintptr((y*(*WebPPicture)(unsafe.Pointer(pic)).uv_stride+x)*8) + var w int32 = MinSize(tls, (*WebPPicture)(unsafe.Pointer(pic)).width-x*16, 16) + var h int32 = MinSize(tls, (*WebPPicture)(unsafe.Pointer(pic)).height-y*16, 16) + var uv_w int32 = (w + 1) >> 1 + var uv_h int32 = (h + 1) >> 1 + + ImportBlock(tls, ysrc, (*WebPPicture)(unsafe.Pointer(pic)).y_stride, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_+uintptr(0), w, h, 16) + ImportBlock(tls, usrc, (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_+uintptr(16), uv_w, uv_h, 8) + ImportBlock(tls, vsrc, (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_+uintptr(16+8), uv_w, uv_h, 8) + + if tmp_32 == uintptr(0) { return } @@ -28766,25 +28468,25 @@ func VP8IteratorImport(tls *libc.TLS, it uintptr, tmp_32 uintptr) { /* iterator_ InitLeft(tls, it) } else { if y == 0 { - *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + libc.UintptrFromInt32(-1))) = libc.AssignPtrUint8(((*VP8EncIterator)(unsafe.Pointer(it)).u_left_ + libc.UintptrFromInt32(-1)), libc.AssignPtrUint8(((*VP8EncIterator)(unsafe.Pointer(it)).v_left_+libc.UintptrFromInt32(-1)), uint8_t(127))) + *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + libc.UintptrFromInt32(-1))) = libc.AssignPtrUint8((*VP8EncIterator)(unsafe.Pointer(it)).u_left_+libc.UintptrFromInt32(-1), libc.AssignPtrUint8((*VP8EncIterator)(unsafe.Pointer(it)).v_left_+libc.UintptrFromInt32(-1), uint8_t(127))) } else { - *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + libc.UintptrFromInt32(-1))) = *(*uint8_t)(unsafe.Pointer(ysrc + uintptr((-1 - (*WebPPicture)(unsafe.Pointer(pic)).y_stride)))) - *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).u_left_ + libc.UintptrFromInt32(-1))) = *(*uint8_t)(unsafe.Pointer(usrc + uintptr((-1 - (*WebPPicture)(unsafe.Pointer(pic)).uv_stride)))) - *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).v_left_ + libc.UintptrFromInt32(-1))) = *(*uint8_t)(unsafe.Pointer(vsrc + uintptr((-1 - (*WebPPicture)(unsafe.Pointer(pic)).uv_stride)))) + *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + libc.UintptrFromInt32(-1))) = *(*uint8_t)(unsafe.Pointer(ysrc + uintptr(-1-(*WebPPicture)(unsafe.Pointer(pic)).y_stride))) + *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).u_left_ + libc.UintptrFromInt32(-1))) = *(*uint8_t)(unsafe.Pointer(usrc + uintptr(-1-(*WebPPicture)(unsafe.Pointer(pic)).uv_stride))) + *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).v_left_ + libc.UintptrFromInt32(-1))) = *(*uint8_t)(unsafe.Pointer(vsrc + uintptr(-1-(*WebPPicture)(unsafe.Pointer(pic)).uv_stride))) } - ImportLine(tls, (ysrc - uintptr(1)), (*WebPPicture)(unsafe.Pointer(pic)).y_stride, (*VP8EncIterator)(unsafe.Pointer(it)).y_left_, h, 16) - ImportLine(tls, (usrc - uintptr(1)), (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, (*VP8EncIterator)(unsafe.Pointer(it)).u_left_, uv_h, 8) - ImportLine(tls, (vsrc - uintptr(1)), (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, (*VP8EncIterator)(unsafe.Pointer(it)).v_left_, uv_h, 8) + ImportLine(tls, ysrc-uintptr(1), (*WebPPicture)(unsafe.Pointer(pic)).y_stride, (*VP8EncIterator)(unsafe.Pointer(it)).y_left_, h, 16) + ImportLine(tls, usrc-uintptr(1), (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, (*VP8EncIterator)(unsafe.Pointer(it)).u_left_, uv_h, 8) + ImportLine(tls, vsrc-uintptr(1), (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, (*VP8EncIterator)(unsafe.Pointer(it)).v_left_, uv_h, 8) } - (*VP8EncIterator)(unsafe.Pointer(it)).y_top_ = (tmp_32 + uintptr(0)) - (*VP8EncIterator)(unsafe.Pointer(it)).uv_top_ = (tmp_32 + uintptr(16)) + (*VP8EncIterator)(unsafe.Pointer(it)).y_top_ = tmp_32 + uintptr(0) + (*VP8EncIterator)(unsafe.Pointer(it)).uv_top_ = tmp_32 + uintptr(16) if y == 0 { - libc.Xmemset(tls, tmp_32, 127, (uint64(32) * uint64(unsafe.Sizeof(uint8_t(0))))) + libc.Xmemset(tls, tmp_32, 127, uint64(32)*uint64(unsafe.Sizeof(uint8_t(0)))) } else { - ImportLine(tls, (ysrc - uintptr((*WebPPicture)(unsafe.Pointer(pic)).y_stride)), 1, tmp_32, w, 16) - ImportLine(tls, (usrc - uintptr((*WebPPicture)(unsafe.Pointer(pic)).uv_stride)), 1, (tmp_32 + uintptr(16)), uv_w, 8) - ImportLine(tls, (vsrc - uintptr((*WebPPicture)(unsafe.Pointer(pic)).uv_stride)), 1, ((tmp_32 + uintptr(16)) + uintptr(8)), uv_w, 8) + ImportLine(tls, ysrc-uintptr((*WebPPicture)(unsafe.Pointer(pic)).y_stride), 1, tmp_32, w, 16) + ImportLine(tls, usrc-uintptr((*WebPPicture)(unsafe.Pointer(pic)).uv_stride), 1, tmp_32+uintptr(16), uv_w, 8) + ImportLine(tls, vsrc-uintptr((*WebPPicture)(unsafe.Pointer(pic)).uv_stride), 1, tmp_32+uintptr(16)+uintptr(8), uv_w, 8) } } @@ -28804,15 +28506,15 @@ func VP8IteratorExport(tls *libc.TLS, it uintptr) { /* iterator_enc.c:188:6: */ if (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).show_compressed != 0 { var x int32 = (*VP8EncIterator)(unsafe.Pointer(it)).x_ var y int32 = (*VP8EncIterator)(unsafe.Pointer(it)).y_ - var ysrc uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr((0))) - var usrc uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr((16))) - var vsrc uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr((16 + 8))) + var ysrc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr(0) + var usrc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr(16) + var vsrc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr(16+8) var pic uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).pic_ - var ydst uintptr = ((*WebPPicture)(unsafe.Pointer(pic)).y + uintptr((((y * (*WebPPicture)(unsafe.Pointer(pic)).y_stride) + x) * 16))) - var udst uintptr = ((*WebPPicture)(unsafe.Pointer(pic)).u + uintptr((((y * (*WebPPicture)(unsafe.Pointer(pic)).uv_stride) + x) * 8))) - var vdst uintptr = ((*WebPPicture)(unsafe.Pointer(pic)).v + uintptr((((y * (*WebPPicture)(unsafe.Pointer(pic)).uv_stride) + x) * 8))) - var w int32 = ((*WebPPicture)(unsafe.Pointer(pic)).width - (x * 16)) - var h int32 = ((*WebPPicture)(unsafe.Pointer(pic)).height - (y * 16)) + var ydst uintptr = (*WebPPicture)(unsafe.Pointer(pic)).y + uintptr((y*(*WebPPicture)(unsafe.Pointer(pic)).y_stride+x)*16) + var udst uintptr = (*WebPPicture)(unsafe.Pointer(pic)).u + uintptr((y*(*WebPPicture)(unsafe.Pointer(pic)).uv_stride+x)*8) + var vdst uintptr = (*WebPPicture)(unsafe.Pointer(pic)).v + uintptr((y*(*WebPPicture)(unsafe.Pointer(pic)).uv_stride+x)*8) + var w int32 = (*WebPPicture)(unsafe.Pointer(pic)).width - x*16 + var h int32 = (*WebPPicture)(unsafe.Pointer(pic)).height - y*16 if w > 16 { w = 16 @@ -28825,8 +28527,8 @@ func VP8IteratorExport(tls *libc.TLS, it uintptr) { /* iterator_enc.c:188:6: */ ExportBlock(tls, ysrc, ydst, (*WebPPicture)(unsafe.Pointer(pic)).y_stride, w, h) { // U/V planes - var uv_w int32 = ((w + 1) >> 1) - var uv_h int32 = ((h + 1) >> 1) + var uv_w int32 = (w + 1) >> 1 + var uv_h int32 = (h + 1) >> 1 ExportBlock(tls, usrc, udst, (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, uv_w, uv_h) ExportBlock(tls, vsrc, vdst, (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, uv_w, uv_h) @@ -28857,30 +28559,30 @@ func VP8IteratorNzToBytes(tls *libc.TLS, it uintptr) { /* iterator_enc.c:234:6: var left_nz uintptr = it + 168 /* &.left_nz_ */ // Top-Y - *(*int32)(unsafe.Pointer(top_nz)) = (libc.BoolInt32(!(!(((tnz) & (int32(1) << (12))) != 0)))) - *(*int32)(unsafe.Pointer(top_nz + 1*4)) = (libc.BoolInt32(!(!(((tnz) & (int32(1) << (13))) != 0)))) - *(*int32)(unsafe.Pointer(top_nz + 2*4)) = (libc.BoolInt32(!(!(((tnz) & (int32(1) << (14))) != 0)))) - *(*int32)(unsafe.Pointer(top_nz + 3*4)) = (libc.BoolInt32(!(!(((tnz) & (int32(1) << (15))) != 0)))) + *(*int32)(unsafe.Pointer(top_nz)) = libc.BoolInt32(!!(tnz&(int32(1)<<12) != 0)) + *(*int32)(unsafe.Pointer(top_nz + 1*4)) = libc.BoolInt32(!!(tnz&(int32(1)<<13) != 0)) + *(*int32)(unsafe.Pointer(top_nz + 2*4)) = libc.BoolInt32(!!(tnz&(int32(1)<<14) != 0)) + *(*int32)(unsafe.Pointer(top_nz + 3*4)) = libc.BoolInt32(!!(tnz&(int32(1)<<15) != 0)) // Top-U - *(*int32)(unsafe.Pointer(top_nz + 4*4)) = (libc.BoolInt32(!(!(((tnz) & (int32(1) << (18))) != 0)))) - *(*int32)(unsafe.Pointer(top_nz + 5*4)) = (libc.BoolInt32(!(!(((tnz) & (int32(1) << (19))) != 0)))) + *(*int32)(unsafe.Pointer(top_nz + 4*4)) = libc.BoolInt32(!!(tnz&(int32(1)<<18) != 0)) + *(*int32)(unsafe.Pointer(top_nz + 5*4)) = libc.BoolInt32(!!(tnz&(int32(1)<<19) != 0)) // Top-V - *(*int32)(unsafe.Pointer(top_nz + 6*4)) = (libc.BoolInt32(!(!(((tnz) & (int32(1) << (22))) != 0)))) - *(*int32)(unsafe.Pointer(top_nz + 7*4)) = (libc.BoolInt32(!(!(((tnz) & (int32(1) << (23))) != 0)))) + *(*int32)(unsafe.Pointer(top_nz + 6*4)) = libc.BoolInt32(!!(tnz&(int32(1)<<22) != 0)) + *(*int32)(unsafe.Pointer(top_nz + 7*4)) = libc.BoolInt32(!!(tnz&(int32(1)<<23) != 0)) // DC - *(*int32)(unsafe.Pointer(top_nz + 8*4)) = (libc.BoolInt32(!(!(((tnz) & (int32(1) << (24))) != 0)))) + *(*int32)(unsafe.Pointer(top_nz + 8*4)) = libc.BoolInt32(!!(tnz&(int32(1)<<24) != 0)) // left-Y - *(*int32)(unsafe.Pointer(left_nz)) = (libc.BoolInt32(!(!(((lnz) & (int32(1) << (3))) != 0)))) - *(*int32)(unsafe.Pointer(left_nz + 1*4)) = (libc.BoolInt32(!(!(((lnz) & (int32(1) << (7))) != 0)))) - *(*int32)(unsafe.Pointer(left_nz + 2*4)) = (libc.BoolInt32(!(!(((lnz) & (int32(1) << (11))) != 0)))) - *(*int32)(unsafe.Pointer(left_nz + 3*4)) = (libc.BoolInt32(!(!(((lnz) & (int32(1) << (15))) != 0)))) + *(*int32)(unsafe.Pointer(left_nz)) = libc.BoolInt32(!!(lnz&(int32(1)<<3) != 0)) + *(*int32)(unsafe.Pointer(left_nz + 1*4)) = libc.BoolInt32(!!(lnz&(int32(1)<<7) != 0)) + *(*int32)(unsafe.Pointer(left_nz + 2*4)) = libc.BoolInt32(!!(lnz&(int32(1)<<11) != 0)) + *(*int32)(unsafe.Pointer(left_nz + 3*4)) = libc.BoolInt32(!!(lnz&(int32(1)<<15) != 0)) // left-U - *(*int32)(unsafe.Pointer(left_nz + 4*4)) = (libc.BoolInt32(!(!(((lnz) & (int32(1) << (17))) != 0)))) - *(*int32)(unsafe.Pointer(left_nz + 5*4)) = (libc.BoolInt32(!(!(((lnz) & (int32(1) << (19))) != 0)))) + *(*int32)(unsafe.Pointer(left_nz + 4*4)) = libc.BoolInt32(!!(lnz&(int32(1)<<17) != 0)) + *(*int32)(unsafe.Pointer(left_nz + 5*4)) = libc.BoolInt32(!!(lnz&(int32(1)<<19) != 0)) // left-V - *(*int32)(unsafe.Pointer(left_nz + 6*4)) = (libc.BoolInt32(!(!(((lnz) & (int32(1) << (21))) != 0)))) - *(*int32)(unsafe.Pointer(left_nz + 7*4)) = (libc.BoolInt32(!(!(((lnz) & (int32(1) << (23))) != 0)))) + *(*int32)(unsafe.Pointer(left_nz + 6*4)) = libc.BoolInt32(!!(lnz&(int32(1)<<21) != 0)) + *(*int32)(unsafe.Pointer(left_nz + 7*4)) = libc.BoolInt32(!!(lnz&(int32(1)<<23) != 0)) // left-DC is special, iterated separately } @@ -28889,15 +28591,15 @@ func VP8IteratorBytesToNz(tls *libc.TLS, it uintptr) { /* iterator_enc.c:267:6: var top_nz uintptr = it + 132 /* &.top_nz_ */ var left_nz uintptr = it + 168 /* &.left_nz_ */ // top - nz = nz | (uint32_t((*(*int32)(unsafe.Pointer(top_nz)) << 12) | (*(*int32)(unsafe.Pointer(top_nz + 1*4)) << 13))) - nz = nz | (uint32_t((*(*int32)(unsafe.Pointer(top_nz + 2*4)) << 14) | (*(*int32)(unsafe.Pointer(top_nz + 3*4)) << 15))) - nz = nz | (uint32_t((*(*int32)(unsafe.Pointer(top_nz + 4*4)) << 18) | (*(*int32)(unsafe.Pointer(top_nz + 5*4)) << 19))) - nz = nz | (uint32_t((*(*int32)(unsafe.Pointer(top_nz + 6*4)) << 22) | (*(*int32)(unsafe.Pointer(top_nz + 7*4)) << 23))) - nz = nz | (uint32_t(*(*int32)(unsafe.Pointer(top_nz + 8*4)) << 24)) // we propagate the _top_ bit, esp. for intra4 + nz = nz | uint32_t(*(*int32)(unsafe.Pointer(top_nz))<<12|*(*int32)(unsafe.Pointer(top_nz + 1*4))<<13) + nz = nz | uint32_t(*(*int32)(unsafe.Pointer(top_nz + 2*4))<<14|*(*int32)(unsafe.Pointer(top_nz + 3*4))<<15) + nz = nz | uint32_t(*(*int32)(unsafe.Pointer(top_nz + 4*4))<<18|*(*int32)(unsafe.Pointer(top_nz + 5*4))<<19) + nz = nz | uint32_t(*(*int32)(unsafe.Pointer(top_nz + 6*4))<<22|*(*int32)(unsafe.Pointer(top_nz + 7*4))<<23) + nz = nz | uint32_t(*(*int32)(unsafe.Pointer(top_nz + 8*4))<<24) // we propagate the _top_ bit, esp. for intra4 // left - nz = nz | (uint32_t((*(*int32)(unsafe.Pointer(left_nz)) << 3) | (*(*int32)(unsafe.Pointer(left_nz + 1*4)) << 7))) - nz = nz | (uint32_t(*(*int32)(unsafe.Pointer(left_nz + 2*4)) << 11)) - nz = nz | (uint32_t((*(*int32)(unsafe.Pointer(left_nz + 4*4)) << 17) | (*(*int32)(unsafe.Pointer(left_nz + 6*4)) << 21))) + nz = nz | uint32_t(*(*int32)(unsafe.Pointer(left_nz))<<3|*(*int32)(unsafe.Pointer(left_nz + 1*4))<<7) + nz = nz | uint32_t(*(*int32)(unsafe.Pointer(left_nz + 2*4))<<11) + nz = nz | uint32_t(*(*int32)(unsafe.Pointer(left_nz + 4*4))<<17|*(*int32)(unsafe.Pointer(left_nz + 6*4))<<21) *(*uint32_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).nz_)) = nz } @@ -28909,25 +28611,25 @@ func VP8IteratorSaveBoundary(tls *libc.TLS, it uintptr) { /* iterator_enc.c:290: var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ var x int32 = (*VP8EncIterator)(unsafe.Pointer(it)).x_ var y int32 = (*VP8EncIterator)(unsafe.Pointer(it)).y_ - var ysrc uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr((0))) - var uvsrc uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr((16))) - if x < ((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ - 1) { // left + var ysrc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr(0) + var uvsrc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr(16) + if x < (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_-1 { // left var i int32 for i = 0; i < 16; i++ { - *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + uintptr(i))) = *(*uint8_t)(unsafe.Pointer(ysrc + uintptr((15 + (i * 32))))) + *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + uintptr(i))) = *(*uint8_t)(unsafe.Pointer(ysrc + uintptr(15+i*32))) } for i = 0; i < 8; i++ { - *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).u_left_ + uintptr(i))) = *(*uint8_t)(unsafe.Pointer(uvsrc + uintptr((7 + (i * 32))))) - *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).v_left_ + uintptr(i))) = *(*uint8_t)(unsafe.Pointer(uvsrc + uintptr((15 + (i * 32))))) + *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).u_left_ + uintptr(i))) = *(*uint8_t)(unsafe.Pointer(uvsrc + uintptr(7+i*32))) + *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).v_left_ + uintptr(i))) = *(*uint8_t)(unsafe.Pointer(uvsrc + uintptr(15+i*32))) } // top-left (before 'top'!) *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + libc.UintptrFromInt32(-1))) = *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_top_ + 15)) *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).u_left_ + libc.UintptrFromInt32(-1))) = *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).uv_top_ + 7)) *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).v_left_ + libc.UintptrFromInt32(-1))) = *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).uv_top_ + 15)) } - if y < ((*VP8Encoder)(unsafe.Pointer(enc)).mb_h_ - 1) { // top - libc.Xmemcpy(tls, (*VP8EncIterator)(unsafe.Pointer(it)).y_top_, (ysrc + uintptr((15 * 32))), uint64(16)) - libc.Xmemcpy(tls, (*VP8EncIterator)(unsafe.Pointer(it)).uv_top_, (uvsrc + uintptr((7 * 32))), (uint64(8 + 8))) + if y < (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_-1 { // top + libc.Xmemcpy(tls, (*VP8EncIterator)(unsafe.Pointer(it)).y_top_, ysrc+uintptr(15*32), uint64(16)) + libc.Xmemcpy(tls, (*VP8EncIterator)(unsafe.Pointer(it)).uv_top_, uvsrc+uintptr(7*32), uint64(8+8)) } } @@ -28935,13 +28637,13 @@ func VP8IteratorNext(tls *libc.TLS, it uintptr) int32 { /* iterator_enc.c:315:5: if libc.PreIncInt32(&(*VP8EncIterator)(unsafe.Pointer(it)).x_, 1) == (*VP8Encoder)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).enc_)).mb_w_ { VP8IteratorSetRow(tls, it, libc.PreIncInt32(&(*VP8EncIterator)(unsafe.Pointer(it)).y_, 1)) } else { - *(*uintptr)(unsafe.Pointer((it + 64 /* &.preds_ */))) += (uintptr(4)) - *(*uintptr)(unsafe.Pointer((it + 48 /* &.mb_ */))) += (uintptr(1)) * 4 - *(*uintptr)(unsafe.Pointer((it + 72 /* &.nz_ */))) += (uintptr(1)) * 4 - *(*uintptr)(unsafe.Pointer((it + 384 /* &.y_top_ */))) += (uintptr(16)) - *(*uintptr)(unsafe.Pointer((it + 392 /* &.uv_top_ */))) += (uintptr(16)) + *(*uintptr)(unsafe.Pointer(it + 64)) += uintptr(4) + *(*uintptr)(unsafe.Pointer(it + 48)) += uintptr(1) * 4 + *(*uintptr)(unsafe.Pointer(it + 72)) += uintptr(1) * 4 + *(*uintptr)(unsafe.Pointer(it + 384)) += uintptr(16) + *(*uintptr)(unsafe.Pointer(it + 392)) += uintptr(16) } - return (libc.Bool32(0 < libc.PreDecInt32(&(*VP8EncIterator)(unsafe.Pointer(it)).count_down_, 1))) + return libc.Bool32(0 < libc.PreDecInt32(&(*VP8EncIterator)(unsafe.Pointer(it)).count_down_, 1)) } //------------------------------------------------------------------------------ @@ -28954,30 +28656,30 @@ func VP8SetIntra16Mode(tls *libc.TLS, it uintptr, mode int32) { /* iterator_enc. libc.Xmemset(tls, preds, mode, uint64(4)) preds += uintptr((*VP8Encoder)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).enc_)).preds_w_) } - libc.SetBitFieldPtr8Uint32(((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.type_ */), uint32(1), 0, 0x3) + libc.SetBitFieldPtr8Uint32((*VP8EncIterator)(unsafe.Pointer(it)).mb_, uint32(1), 0, 0x3) } func VP8SetIntra4Mode(tls *libc.TLS, it uintptr, modes uintptr) { /* iterator_enc.c:341:6: */ var preds uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).preds_ var y int32 for y = 4; y > 0; y-- { - libc.Xmemcpy(tls, preds, modes, (uint64(4) * uint64(unsafe.Sizeof(uint8_t(0))))) + libc.Xmemcpy(tls, preds, modes, uint64(4)*uint64(unsafe.Sizeof(uint8_t(0)))) preds += uintptr((*VP8Encoder)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).enc_)).preds_w_) modes += uintptr(4) } - libc.SetBitFieldPtr8Uint32(((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.type_ */), uint32(0), 0, 0x3) + libc.SetBitFieldPtr8Uint32((*VP8EncIterator)(unsafe.Pointer(it)).mb_, uint32(0), 0, 0x3) } func VP8SetIntraUVMode(tls *libc.TLS, it uintptr, mode int32) { /* iterator_enc.c:352:6: */ - libc.SetBitFieldPtr8Uint32(((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.uv_mode_ */), uint32(mode), 2, 0xc) + libc.SetBitFieldPtr8Uint32((*VP8EncIterator)(unsafe.Pointer(it)).mb_, uint32(mode), 2, 0xc) } func VP8SetSkip(tls *libc.TLS, it uintptr, skip int32) { /* iterator_enc.c:356:6: */ - libc.SetBitFieldPtr8Uint32(((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.skip_ */), uint32(skip), 4, 0x10) + libc.SetBitFieldPtr8Uint32((*VP8EncIterator)(unsafe.Pointer(it)).mb_, uint32(skip), 4, 0x10) } func VP8SetSegment(tls *libc.TLS, it uintptr, segment int32) { /* iterator_enc.c:360:6: */ - libc.SetBitFieldPtr8Uint32(((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.segment_ */), uint32(segment), 5, 0x60) + libc.SetBitFieldPtr8Uint32((*VP8EncIterator)(unsafe.Pointer(it)).mb_, uint32(segment), 5, 0x60) } //------------------------------------------------------------------------------ @@ -29024,44 +28726,44 @@ func VP8IteratorStartI4(tls *libc.TLS, it uintptr) { /* iterator_enc.c:403:6: */ var i int32 (*VP8EncIterator)(unsafe.Pointer(it)).i4_ = 0 // first 4x4 sub-block - (*VP8EncIterator)(unsafe.Pointer(it)).i4_top_ = ((it + 80 /* &.i4_boundary_ */) + uintptr(VP8TopLeftI4[0])) + (*VP8EncIterator)(unsafe.Pointer(it)).i4_top_ = it + 80 + uintptr(VP8TopLeftI4[0]) // Import the boundary samples for i = 0; i < 17; i++ { // left - *(*uint8_t)(unsafe.Pointer((it + 80 /* &.i4_boundary_ */) + uintptr(i))) = *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + uintptr((15 - i)))) + *(*uint8_t)(unsafe.Pointer(it + 80 + uintptr(i))) = *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_left_ + uintptr(15-i))) } for i = 0; i < 16; i++ { // top - *(*uint8_t)(unsafe.Pointer((it + 80 /* &.i4_boundary_ */) + uintptr((17 + i)))) = *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_top_ + uintptr(i))) + *(*uint8_t)(unsafe.Pointer(it + 80 + uintptr(17+i))) = *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_top_ + uintptr(i))) } // top-right samples have a special case on the far right of the picture - if (*VP8EncIterator)(unsafe.Pointer(it)).x_ < ((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ - 1) { - for i = 16; i < (16 + 4); i++ { - *(*uint8_t)(unsafe.Pointer((it + 80 /* &.i4_boundary_ */) + uintptr((17 + i)))) = *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_top_ + uintptr(i))) + if (*VP8EncIterator)(unsafe.Pointer(it)).x_ < (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_-1 { + for i = 16; i < 16+4; i++ { + *(*uint8_t)(unsafe.Pointer(it + 80 + uintptr(17+i))) = *(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).y_top_ + uintptr(i))) } } else { // else, replicate the last valid pixel four times - for i = 16; i < (16 + 4); i++ { - *(*uint8_t)(unsafe.Pointer((it + 80 /* &.i4_boundary_ */) + uintptr((17 + i)))) = *(*uint8_t)(unsafe.Pointer((it + 80 /* &.i4_boundary_ */) + 32)) + for i = 16; i < 16+4; i++ { + *(*uint8_t)(unsafe.Pointer(it + 80 + uintptr(17+i))) = *(*uint8_t)(unsafe.Pointer(it + 80 + 32)) } } VP8IteratorNzToBytes(tls, it) // import the non-zero context } func VP8IteratorRotateI4(tls *libc.TLS, it uintptr, yuv_out uintptr) int32 { /* iterator_enc.c:430:5: */ - var blk uintptr = (yuv_out + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_])) + var blk uintptr = yuv_out + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_]) var top uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).i4_top_ var i int32 // Update the cache with 7 fresh samples for i = 0; i <= 3; i++ { - *(*uint8_t)(unsafe.Pointer(top + uintptr((-4 + i)))) = *(*uint8_t)(unsafe.Pointer(blk + uintptr((i + (3 * 32))))) // store future top samples + *(*uint8_t)(unsafe.Pointer(top + uintptr(-4+i))) = *(*uint8_t)(unsafe.Pointer(blk + uintptr(i+3*32))) // store future top samples } - if ((*VP8EncIterator)(unsafe.Pointer(it)).i4_ & 3) != 3 { // if not on the right sub-blocks #3, #7, #11, #15 + if (*VP8EncIterator)(unsafe.Pointer(it)).i4_&3 != 3 { // if not on the right sub-blocks #3, #7, #11, #15 for i = 0; i <= 2; i++ { // store future left samples - *(*uint8_t)(unsafe.Pointer(top + uintptr(i))) = *(*uint8_t)(unsafe.Pointer(blk + uintptr((3 + ((2 - i) * 32))))) + *(*uint8_t)(unsafe.Pointer(top + uintptr(i))) = *(*uint8_t)(unsafe.Pointer(blk + uintptr(3+(2-i)*32))) } } else { // else replicate top-right samples, as says the specs. for i = 0; i <= 3; i++ { - *(*uint8_t)(unsafe.Pointer(top + uintptr(i))) = *(*uint8_t)(unsafe.Pointer(top + uintptr((i + 4)))) + *(*uint8_t)(unsafe.Pointer(top + uintptr(i))) = *(*uint8_t)(unsafe.Pointer(top + uintptr(i+4))) } } // move pointers to next sub-block @@ -29070,7 +28772,7 @@ func VP8IteratorRotateI4(tls *libc.TLS, it uintptr, yuv_out uintptr) int32 { /* return 0 } - (*VP8EncIterator)(unsafe.Pointer(it)).i4_top_ = ((it + 80 /* &.i4_boundary_ */) + uintptr(VP8TopLeftI4[(*VP8EncIterator)(unsafe.Pointer(it)).i4_])) + (*VP8EncIterator)(unsafe.Pointer(it)).i4_top_ = it + 80 + uintptr(VP8TopLeftI4[(*VP8EncIterator)(unsafe.Pointer(it)).i4_]) return 1 } @@ -29081,18 +28783,18 @@ func VP8IteratorRotateI4(tls *libc.TLS, it uintptr, yuv_out uintptr) int32 { /* // Quantizes the value up or down to a multiple of 1<<bits (or to 255), // choosing the closer one, resolving ties using bankers' rounding. func FindClosestDiscretized(tls *libc.TLS, a uint32_t, bits int32) uint32_t { /* near_lossless_enc.c:31:17: */ - var mask uint32_t = ((uint32(1) << bits) - uint32(1)) - var biased uint32_t = ((a + (mask >> 1)) + ((a >> bits) & uint32_t(1))) + var mask uint32_t = uint32(1)<<bits - uint32(1) + var biased uint32_t = a + mask>>1 + a>>bits&uint32_t(1) if biased > uint32_t(0xff) { return uint32_t(0xff) } - return (biased & ^mask) + return biased & ^mask } // Applies FindClosestDiscretized to all channels of pixel. func ClosestDiscretizedArgb(tls *libc.TLS, a uint32_t, bits int32) uint32_t { /* near_lossless_enc.c:40:17: */ - return ((((FindClosestDiscretized(tls, (a>>24), bits) << 24) | (FindClosestDiscretized(tls, ((a>>16)&uint32_t(0xff)), bits) << 16)) | (FindClosestDiscretized(tls, ((a>>8)&uint32_t(0xff)), bits) << 8)) | (FindClosestDiscretized(tls, (a & uint32_t(0xff)), bits))) + return FindClosestDiscretized(tls, a>>24, bits)<<24 | FindClosestDiscretized(tls, a>>16&uint32_t(0xff), bits)<<16 | FindClosestDiscretized(tls, a>>8&uint32_t(0xff), bits)<<8 | FindClosestDiscretized(tls, a&uint32_t(0xff), bits) } // Checks if distance between corresponding channel values of pixels a and b @@ -29100,8 +28802,8 @@ func ClosestDiscretizedArgb(tls *libc.TLS, a uint32_t, bits int32) uint32_t { /* func IsNear(tls *libc.TLS, a uint32_t, b uint32_t, limit int32) int32 { /* near_lossless_enc.c:50:12: */ var k int32 for k = 0; k < 4; k++ { - var delta int32 = ((int32((a >> (k * 8)) & uint32_t(0xff))) - (int32((b >> (k * 8)) & uint32_t(0xff)))) - if (delta >= limit) || (delta <= -limit) { + var delta int32 = int32(a>>(k*8)&uint32_t(0xff)) - int32(b>>(k*8)&uint32_t(0xff)) + if delta >= limit || delta <= -limit { return 0 } } @@ -29110,19 +28812,19 @@ func IsNear(tls *libc.TLS, a uint32_t, b uint32_t, limit int32) int32 { /* near_ func IsSmooth(tls *libc.TLS, prev_row uintptr, curr_row uintptr, next_row uintptr, ix int32, limit int32) int32 { /* near_lossless_enc.c:62:12: */ // Check that all pixels in 4-connected neighborhood are smooth. - return (libc.Bool32((((IsNear(tls, *(*uint32_t)(unsafe.Pointer(curr_row + uintptr(ix)*4)), *(*uint32_t)(unsafe.Pointer(curr_row + uintptr((ix-1))*4)), limit) != 0) && (IsNear(tls, *(*uint32_t)(unsafe.Pointer(curr_row + uintptr(ix)*4)), *(*uint32_t)(unsafe.Pointer(curr_row + uintptr((ix+1))*4)), limit) != 0)) && (IsNear(tls, *(*uint32_t)(unsafe.Pointer(curr_row + uintptr(ix)*4)), *(*uint32_t)(unsafe.Pointer(prev_row + uintptr(ix)*4)), limit) != 0)) && (IsNear(tls, *(*uint32_t)(unsafe.Pointer(curr_row + uintptr(ix)*4)), *(*uint32_t)(unsafe.Pointer(next_row + uintptr(ix)*4)), limit) != 0))) + return libc.Bool32(IsNear(tls, *(*uint32_t)(unsafe.Pointer(curr_row + uintptr(ix)*4)), *(*uint32_t)(unsafe.Pointer(curr_row + uintptr(ix-1)*4)), limit) != 0 && IsNear(tls, *(*uint32_t)(unsafe.Pointer(curr_row + uintptr(ix)*4)), *(*uint32_t)(unsafe.Pointer(curr_row + uintptr(ix+1)*4)), limit) != 0 && IsNear(tls, *(*uint32_t)(unsafe.Pointer(curr_row + uintptr(ix)*4)), *(*uint32_t)(unsafe.Pointer(prev_row + uintptr(ix)*4)), limit) != 0 && IsNear(tls, *(*uint32_t)(unsafe.Pointer(curr_row + uintptr(ix)*4)), *(*uint32_t)(unsafe.Pointer(next_row + uintptr(ix)*4)), limit) != 0) } // Adjusts pixel values of image with given maximum error. func NearLossless(tls *libc.TLS, xsize int32, ysize int32, argb_src uintptr, stride int32, limit_bits int32, copy_buffer uintptr, argb_dst uintptr) { /* near_lossless_enc.c:74:13: */ var x int32 var y int32 - var limit int32 = (int32(1) << limit_bits) + var limit int32 = int32(1) << limit_bits var prev_row uintptr = copy_buffer - var curr_row uintptr = (prev_row + uintptr(xsize)*4) - var next_row uintptr = (curr_row + uintptr(xsize)*4) - libc.Xmemcpy(tls, curr_row, argb_src, (uint64(xsize) * uint64(unsafe.Sizeof(uint32_t(0))))) - libc.Xmemcpy(tls, next_row, (argb_src + uintptr(stride)*4), (uint64(xsize) * uint64(unsafe.Sizeof(uint32_t(0))))) + var curr_row uintptr = prev_row + uintptr(xsize)*4 + var next_row uintptr = curr_row + uintptr(xsize)*4 + libc.Xmemcpy(tls, curr_row, argb_src, uint64(xsize)*uint64(unsafe.Sizeof(uint32_t(0)))) + libc.Xmemcpy(tls, next_row, argb_src+uintptr(stride)*4, uint64(xsize)*uint64(unsafe.Sizeof(uint32_t(0)))) y = 0 __1: @@ -29130,13 +28832,13 @@ __1: goto __3 } { - if (y == 0) || (y == (ysize - 1)) { - libc.Xmemcpy(tls, argb_dst, argb_src, (uint64(xsize) * uint64(unsafe.Sizeof(uint32_t(0))))) + if y == 0 || y == ysize-1 { + libc.Xmemcpy(tls, argb_dst, argb_src, uint64(xsize)*uint64(unsafe.Sizeof(uint32_t(0)))) } else { - libc.Xmemcpy(tls, next_row, (argb_src + uintptr(stride)*4), (uint64(xsize) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, next_row, argb_src+uintptr(stride)*4, uint64(xsize)*uint64(unsafe.Sizeof(uint32_t(0)))) *(*uint32_t)(unsafe.Pointer(argb_dst)) = *(*uint32_t)(unsafe.Pointer(argb_src)) - *(*uint32_t)(unsafe.Pointer(argb_dst + uintptr((xsize-1))*4)) = *(*uint32_t)(unsafe.Pointer(argb_src + uintptr((xsize-1))*4)) - for x = 1; x < (xsize - 1); x++ { + *(*uint32_t)(unsafe.Pointer(argb_dst + uintptr(xsize-1)*4)) = *(*uint32_t)(unsafe.Pointer(argb_src + uintptr(xsize-1)*4)) + for x = 1; x < xsize-1; x++ { if IsSmooth(tls, prev_row, curr_row, next_row, x, limit) != 0 { *(*uint32_t)(unsafe.Pointer(argb_dst + uintptr(x)*4)) = *(*uint32_t)(unsafe.Pointer(curr_row + uintptr(x)*4)) } else { @@ -29157,8 +28859,8 @@ __1: goto __2 __2: y++ - argb_src += 4 * (uintptr(stride)) - argb_dst += 4 * (uintptr(xsize)) + argb_src += 4 * uintptr(stride) + argb_dst += 4 * uintptr(xsize) goto __1 goto __3 __3: @@ -29169,17 +28871,17 @@ func VP8ApplyNearLossless(tls *libc.TLS, picture uintptr, quality int32, argb_ds var xsize int32 = (*WebPPicture)(unsafe.Pointer(picture)).width var ysize int32 = (*WebPPicture)(unsafe.Pointer(picture)).height var stride int32 = (*WebPPicture)(unsafe.Pointer(picture)).argb_stride - var copy_buffer uintptr = WebPSafeMalloc(tls, (uint64(xsize * 3)), uint64(unsafe.Sizeof(uint32_t(0)))) + var copy_buffer uintptr = WebPSafeMalloc(tls, uint64(xsize*3), uint64(unsafe.Sizeof(uint32_t(0)))) var limit_bits int32 = VP8LNearLosslessBits(tls, quality) - if copy_buffer == (uintptr(0)) { + if copy_buffer == uintptr(0) { return 0 } // For small icon images, don't attempt to apply near-lossless compression. - if ((xsize < 64) && (ysize < 64)) || (ysize < 3) { + if xsize < 64 && ysize < 64 || ysize < 3 { for i = 0; i < ysize; i++ { - libc.Xmemcpy(tls, (argb_dst + uintptr((i*xsize))*4), ((*WebPPicture)(unsafe.Pointer(picture)).argb + uintptr((i*(*WebPPicture)(unsafe.Pointer(picture)).argb_stride))*4), - (uint64(xsize) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, argb_dst+uintptr(i*xsize)*4, (*WebPPicture)(unsafe.Pointer(picture)).argb+uintptr(i*(*WebPPicture)(unsafe.Pointer(picture)).argb_stride)*4, + uint64(xsize)*uint64(unsafe.Sizeof(uint32_t(0)))) } WebPSafeFree(tls, copy_buffer) return 1 @@ -29187,7 +28889,7 @@ func VP8ApplyNearLossless(tls *libc.TLS, picture uintptr, quality int32, argb_ds NearLossless(tls, xsize, ysize, (*WebPPicture)(unsafe.Pointer(picture)).argb, stride, limit_bits, copy_buffer, argb_dst) - for i = (limit_bits - 1); i != 0; i-- { + for i = limit_bits - 1; i != 0; i-- { NearLossless(tls, xsize, ysize, argb_dst, xsize, i, copy_buffer, argb_dst) } WebPSafeFree(tls, copy_buffer) @@ -29205,7 +28907,7 @@ func VP8ApplyNearLossless(tls *libc.TLS, picture uintptr, quality int32, argb_ds // Returns true if alpha[] has non-0xff values. func CheckNonOpaque(tls *libc.TLS, alpha uintptr, width int32, height int32, x_step int32, y_step int32) int32 { /* picture_csp_enc.c:45:12: */ - if alpha == (uintptr(0)) { + if alpha == uintptr(0) { return 0 } WebPInitAlphaProcessing(tls) @@ -29231,14 +28933,14 @@ func CheckNonOpaque(tls *libc.TLS, alpha uintptr, width int32, height int32, x_s // Checking for the presence of non-opaque alpha. func WebPPictureHasTransparency(tls *libc.TLS, picture uintptr) int32 { /* picture_csp_enc.c:62:5: */ - if picture == (uintptr(0)) { + if picture == uintptr(0) { return 0 } if (*WebPPicture)(unsafe.Pointer(picture)).use_argb != 0 { - var alpha_offset int32 = (3 - (0)) - return CheckNonOpaque(tls, ((*WebPPicture)(unsafe.Pointer(picture)).argb + uintptr(alpha_offset)), + var alpha_offset int32 = 3 - 0 + return CheckNonOpaque(tls, (*WebPPicture)(unsafe.Pointer(picture)).argb+uintptr(alpha_offset), (*WebPPicture)(unsafe.Pointer(picture)).width, (*WebPPicture)(unsafe.Pointer(picture)).height, - 4, (int32(uint64((*WebPPicture)(unsafe.Pointer(picture)).argb_stride) * uint64(unsafe.Sizeof(uint32_t(0)))))) + 4, int32(uint64((*WebPPicture)(unsafe.Pointer(picture)).argb_stride)*uint64(unsafe.Sizeof(uint32_t(0))))) } return CheckNonOpaque(tls, (*WebPPicture)(unsafe.Pointer(picture)).a, (*WebPPicture)(unsafe.Pointer(picture)).width, (*WebPPicture)(unsafe.Pointer(picture)).height, 1, (*WebPPicture)(unsafe.Pointer(picture)).a_stride) @@ -29254,7 +28956,7 @@ var kGammaToLinearTab [256]uint16_t /* picture_csp_enc.c:89:17: */ var kGammaTablesOk int32 = 0 /* picture_csp_enc.c:90:21 */ func InitGammaTables(tls *libc.TLS) { /* picture_csp_enc.c:93:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if InitGammaTables_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -29268,13 +28970,13 @@ var InitGammaTables_body_last_cpuinfo_used VP8CPUInfo = 0 /* picture_csp_enc.c:9 func InitGammaTables_body(tls *libc.TLS) { /* picture_csp_enc.c:93:1: */ if !(libc.AtomicLoadInt32(&kGammaTablesOk) != 0) { var v int32 - var scale float64 = (float64((float64(int32(1) << 7))) / (float64((int32(1) << 12) - 1))) - var norm float64 = (float64(1.) / 255.) + var scale float64 = float64(float64(int32(1)<<7)) / float64(int32(1)<<12-1) + var norm float64 = float64(1.) / 255. for v = 0; v <= 255; v++ { - kGammaToLinearTab[v] = (libc.Uint16FromFloat64((libc.Xpow(tls, (norm*float64(v)), 0.80) * (float64((int32(1) << 12) - 1))) + .5)) + kGammaToLinearTab[v] = libc.Uint16FromFloat64(libc.Xpow(tls, norm*float64(v), 0.80)*float64(int32(1)<<12-1) + .5) } - for v = 0; v <= (int32(1) << (12 - 7)); v++ { - kLinearToGammaTab[v] = (libc.Int32FromFloat64((255. * libc.Xpow(tls, (scale*float64(v)), (float64(1.)/0.80))) + .5)) + for v = 0; v <= int32(1)<<(12-7); v++ { + kLinearToGammaTab[v] = libc.Int32FromFloat64(255.*libc.Xpow(tls, scale*float64(v), float64(1.)/0.80) + .5) } libc.AtomicStoreInt32(&kGammaTablesOk, int32(1)) } @@ -29285,11 +28987,11 @@ func GammaToLinear(tls *libc.TLS, v uint8_t) uint32_t { /* picture_csp_enc.c:109 } func Interpolate(tls *libc.TLS, v int32) int32 { /* picture_csp_enc.c:113:24: */ - var tab_pos int32 = (v >> (7 + 2)) // integer part - var x int32 = (v & ((int32((int32(1) << 7)) << 2) - 1)) // fractional part + var tab_pos int32 = v >> (7 + 2) // integer part + var x int32 = v & (int32(int32(1)<<7)<<2 - 1) // fractional part var v0 int32 = kLinearToGammaTab[tab_pos] - var v1 int32 = kLinearToGammaTab[(tab_pos + 1)] - var y int32 = ((v1 * x) + (v0 * ((int32((int32(1) << 7)) << 2) - x))) // interpolate + var v1 int32 = kLinearToGammaTab[tab_pos+1] + var y int32 = v1*x + v0*(int32(int32(1)<<7)<<2-x) // interpolate return y } @@ -29297,32 +28999,32 @@ func Interpolate(tls *libc.TLS, v int32) int32 { /* picture_csp_enc.c:113:24: */ // Convert a linear value 'v' to YUV_FIX+2 fixed-point precision // U/V value, suitable for RGBToU/V calls. func LinearToGamma(tls *libc.TLS, base_value uint32_t, shift int32) int32 { /* picture_csp_enc.c:125:24: */ - var y int32 = Interpolate(tls, (int32(base_value << shift))) // final uplifted value - return ((y + (int32((int32(1) << 7)) >> 1)) >> 7) // descale + var y int32 = Interpolate(tls, int32(base_value<<shift)) // final uplifted value + return (y + int32(int32(1)<<7)>>1) >> 7 // descale } //------------------------------------------------------------------------------ // RGB -> YUV conversion func RGBToY(tls *libc.TLS, r int32, g int32, b int32, rg uintptr) int32 { /* picture_csp_enc.c:143:12: */ - if rg == (uintptr(0)) { + if rg == uintptr(0) { return VP8RGBToY(tls, r, g, b, YUV_HALF) } return VP8RGBToY(tls, r, g, b, VP8RandomBits(tls, rg, YUV_FIX)) } func RGBToU(tls *libc.TLS, r int32, g int32, b int32, rg uintptr) int32 { /* picture_csp_enc.c:148:12: */ - if rg == (uintptr(0)) { - return VP8RGBToU(tls, r, g, b, (int32(YUV_HALF) << 2)) + if rg == uintptr(0) { + return VP8RGBToU(tls, r, g, b, int32(YUV_HALF)<<2) } - return VP8RGBToU(tls, r, g, b, VP8RandomBits(tls, rg, (YUV_FIX+2))) + return VP8RGBToU(tls, r, g, b, VP8RandomBits(tls, rg, YUV_FIX+2)) } func RGBToV(tls *libc.TLS, r int32, g int32, b int32, rg uintptr) int32 { /* picture_csp_enc.c:153:12: */ - if rg == (uintptr(0)) { - return VP8RGBToV(tls, r, g, b, (int32(YUV_HALF) << 2)) + if rg == uintptr(0) { + return VP8RGBToV(tls, r, g, b, int32(YUV_HALF)<<2) } - return VP8RGBToV(tls, r, g, b, VP8RandomBits(tls, rg, (YUV_FIX+2))) + return VP8RGBToV(tls, r, g, b, VP8RandomBits(tls, rg, YUV_FIX+2)) } //------------------------------------------------------------------------------ @@ -29343,7 +29045,7 @@ var kGammaToLinearTabS [1024]uint32_t /* picture_csp_enc.c:181:17: */ // size sc var kGammaTablesSOk int32 = 0 /* picture_csp_enc.c:182:21 */ func InitGammaTablesS(tls *libc.TLS) { /* picture_csp_enc.c:185:1: */ - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { if InitGammaTablesS_body_last_cpuinfo_used == VP8GetCPUInfo { break } @@ -29358,35 +29060,35 @@ func InitGammaTablesS_body(tls *libc.TLS) { /* picture_csp_enc.c:185:1: */ // we use uint32_t intermediate values if !(libc.AtomicLoadInt32(&kGammaTablesSOk) != 0) { var v int32 - var norm float64 = (float64(1.) / (float64((int32(256) << 2) - 1))) - var scale float64 = (float64(1.) / (float64(int32(1) << (12 - 7)))) + var norm float64 = float64(1.) / float64(int32(256)<<2-1) + var scale float64 = float64(1.) / float64(int32(1)<<(12-7)) var a float64 = 0.09929682680944 var thresh float64 = 0.018053968510807 - var final_scale float64 = (float64(int32(1) << 14)) - for v = 0; v <= ((int32(256) << 2) - 1); v++ { - var g float64 = (norm * float64(v)) + var final_scale float64 = float64(int32(1) << 14) + for v = 0; v <= int32(256)<<2-1; v++ { + var g float64 = norm * float64(v) var value float64 - if g <= (thresh * 4.5) { - value = (g / 4.5) + if g <= thresh*4.5 { + value = g / 4.5 } else { - var a_rec float64 = (1. / (1. + a)) - value = libc.Xpow(tls, (a_rec * (g + a)), (float64(1.) / 0.45)) + var a_rec float64 = 1. / (1. + a) + value = libc.Xpow(tls, a_rec*(g+a), float64(1.)/0.45) } - kGammaToLinearTabS[v] = (libc.Uint32FromFloat64((value * final_scale) + .5)) + kGammaToLinearTabS[v] = libc.Uint32FromFloat64(value*final_scale + .5) } - for v = 0; v <= (int32(1) << (12 - 7)); v++ { - var g float64 = (scale * float64(v)) + for v = 0; v <= int32(1)<<(12-7); v++ { + var g float64 = scale * float64(v) var value float64 if g <= thresh { - value = (4.5 * g) + value = 4.5 * g } else { - value = (((1. + a) * libc.Xpow(tls, g, (float64(1.)/(float64(1.)/0.45)))) - a) + value = (1.+a)*libc.Xpow(tls, g, float64(1.)/(float64(1.)/0.45)) - a } // we already incorporate the 1/2 rounding constant here - kLinearToGammaTabS[v] = ((libc.Uint32FromFloat64((float64((int32(256) << 2) - 1)) * value)) + (uint32_t(int32((int32(1) << 14)) >> 1))) + kLinearToGammaTabS[v] = libc.Uint32FromFloat64(float64(int32(256)<<2-1)*value) + uint32_t(int32(int32(1)<<14)>>1) } // to prevent small rounding errors to cause read-overflow: - kLinearToGammaTabS[((int32(1) << (12 - 7)) + 1)] = kLinearToGammaTabS[(int32(1) << (12 - 7))] + kLinearToGammaTabS[int32(1)<<(12-7)+1] = kLinearToGammaTabS[int32(1)<<(12-7)] libc.AtomicStoreInt32(&kGammaTablesSOk, int32(1)) } } @@ -29398,23 +29100,23 @@ func GammaToLinearS(tls *libc.TLS, v int32) uint32_t { /* picture_csp_enc.c:224: func LinearToGammaS(tls *libc.TLS, value uint32_t) uint32_t { /* picture_csp_enc.c:228:29: */ // 'value' is in GAMMA_TO_LINEAR_BITS fractional precision - var v uint32_t = (value * (uint32_t(int32(1) << (12 - 7)))) - var tab_pos uint32_t = (v >> 14) + var v uint32_t = value * uint32_t(int32(1)<<(12-7)) + var tab_pos uint32_t = v >> 14 // fractional part, in GAMMA_TO_LINEAR_BITS fixed-point precision - var x uint32_t = (v - (tab_pos << 14)) // fractional part + var x uint32_t = v - tab_pos<<14 // fractional part // v0 / v1 are in GAMMA_TO_LINEAR_BITS fixed-point precision (range [0..1]) - var v0 uint32_t = kLinearToGammaTabS[(tab_pos + uint32_t(0))] - var v1 uint32_t = kLinearToGammaTabS[(tab_pos + uint32_t(1))] + var v0 uint32_t = kLinearToGammaTabS[tab_pos+uint32_t(0)] + var v1 uint32_t = kLinearToGammaTabS[tab_pos+uint32_t(1)] // Final interpolation. Note that rounding is already included. - var v2 uint32_t = ((v1 - v0) * x) // note: v1 >= v0. - var result uint32_t = (v0 + (v2 >> 14)) + var v2 uint32_t = (v1 - v0) * x // note: v1 >= v0. + var result uint32_t = v0 + v2>>14 return result } //------------------------------------------------------------------------------ func clip_8b2(tls *libc.TLS, v fixed_t) uint8_t { /* picture_csp_enc.c:257:16: */ - if !((int32(v) & libc.CplInt32(0xff)) != 0) { + if !(int32(v)&libc.CplInt32(0xff) != 0) { return uint8_t(v) } if int32(v) < 0 { @@ -29424,20 +29126,20 @@ func clip_8b2(tls *libc.TLS, v fixed_t) uint8_t { /* picture_csp_enc.c:257:16: * } func clip_y1(tls *libc.TLS, y int32) fixed_y_t { /* picture_csp_enc.c:261:18: */ - if !((y & libc.CplInt32(((int32(256) << 2) - 1))) != 0) { + if !(y&libc.CplInt32(int32(256)<<2-1) != 0) { return fixed_y_t(y) } if y < 0 { return uint16(0) } - return (uint16((int32(256) << 2) - 1)) + return uint16(int32(256)<<2 - 1) } //------------------------------------------------------------------------------ func RGBToGray(tls *libc.TLS, r int32, g int32, b int32) int32 { /* picture_csp_enc.c:267:12: */ - var luma int32 = ((((13933 * r) + (46871 * g)) + (4732 * b)) + YUV_HALF) - return (luma >> YUV_FIX) + var luma int32 = 13933*r + 46871*g + 4732*b + YUV_HALF + return luma >> YUV_FIX } func ScaleDown(tls *libc.TLS, a int32, b int32, c int32, d int32) uint32_t { /* picture_csp_enc.c:272:17: */ @@ -29445,15 +29147,15 @@ func ScaleDown(tls *libc.TLS, a int32, b int32, c int32, d int32) uint32_t { /* var B uint32_t = GammaToLinearS(tls, b) var C uint32_t = GammaToLinearS(tls, c) var D uint32_t = GammaToLinearS(tls, d) - return LinearToGammaS(tls, (((((A + B) + C) + D) + uint32_t(2)) >> 2)) + return LinearToGammaS(tls, (A+B+C+D+uint32_t(2))>>2) } func UpdateW(tls *libc.TLS, src uintptr, dst uintptr, w int32) { /* picture_csp_enc.c:280:25: */ var i int32 for i = 0; i < w; i++ { - var R uint32_t = GammaToLinearS(tls, int32(*(*fixed_y_t)(unsafe.Pointer(src + uintptr(((0*w)+i))*2)))) - var G uint32_t = GammaToLinearS(tls, int32(*(*fixed_y_t)(unsafe.Pointer(src + uintptr(((1*w)+i))*2)))) - var B uint32_t = GammaToLinearS(tls, int32(*(*fixed_y_t)(unsafe.Pointer(src + uintptr(((2*w)+i))*2)))) + var R uint32_t = GammaToLinearS(tls, int32(*(*fixed_y_t)(unsafe.Pointer(src + uintptr(0*w+i)*2)))) + var G uint32_t = GammaToLinearS(tls, int32(*(*fixed_y_t)(unsafe.Pointer(src + uintptr(1*w+i)*2)))) + var B uint32_t = GammaToLinearS(tls, int32(*(*fixed_y_t)(unsafe.Pointer(src + uintptr(2*w+i)*2)))) var Y uint32_t = uint32_t(RGBToGray(tls, int32(R), int32(G), int32(B))) *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(i)*2)) = fixed_y_t(LinearToGammaS(tls, Y)) } @@ -29462,61 +29164,61 @@ func UpdateW(tls *libc.TLS, src uintptr, dst uintptr, w int32) { /* picture_csp_ func UpdateChroma(tls *libc.TLS, src1 uintptr, src2 uintptr, dst uintptr, uv_w int32) { /* picture_csp_enc.c:291:13: */ var i int32 for i = 0; i < uv_w; i++ { - var r int32 = int32(ScaleDown(tls, int32(*(*fixed_y_t)(unsafe.Pointer(src1 + uintptr(((0*uv_w)+0))*2))), int32(*(*fixed_y_t)(unsafe.Pointer(src1 + uintptr(((0*uv_w)+1))*2))), - int32(*(*fixed_y_t)(unsafe.Pointer(src2 + uintptr(((0*uv_w)+0))*2))), int32(*(*fixed_y_t)(unsafe.Pointer(src2 + uintptr(((0*uv_w)+1))*2))))) - var g int32 = int32(ScaleDown(tls, int32(*(*fixed_y_t)(unsafe.Pointer(src1 + uintptr(((2*uv_w)+0))*2))), int32(*(*fixed_y_t)(unsafe.Pointer(src1 + uintptr(((2*uv_w)+1))*2))), - int32(*(*fixed_y_t)(unsafe.Pointer(src2 + uintptr(((2*uv_w)+0))*2))), int32(*(*fixed_y_t)(unsafe.Pointer(src2 + uintptr(((2*uv_w)+1))*2))))) - var b int32 = int32(ScaleDown(tls, int32(*(*fixed_y_t)(unsafe.Pointer(src1 + uintptr(((4*uv_w)+0))*2))), int32(*(*fixed_y_t)(unsafe.Pointer(src1 + uintptr(((4*uv_w)+1))*2))), - int32(*(*fixed_y_t)(unsafe.Pointer(src2 + uintptr(((4*uv_w)+0))*2))), int32(*(*fixed_y_t)(unsafe.Pointer(src2 + uintptr(((4*uv_w)+1))*2))))) + var r int32 = int32(ScaleDown(tls, int32(*(*fixed_y_t)(unsafe.Pointer(src1 + uintptr(0*uv_w+0)*2))), int32(*(*fixed_y_t)(unsafe.Pointer(src1 + uintptr(0*uv_w+1)*2))), + int32(*(*fixed_y_t)(unsafe.Pointer(src2 + uintptr(0*uv_w+0)*2))), int32(*(*fixed_y_t)(unsafe.Pointer(src2 + uintptr(0*uv_w+1)*2))))) + var g int32 = int32(ScaleDown(tls, int32(*(*fixed_y_t)(unsafe.Pointer(src1 + uintptr(2*uv_w+0)*2))), int32(*(*fixed_y_t)(unsafe.Pointer(src1 + uintptr(2*uv_w+1)*2))), + int32(*(*fixed_y_t)(unsafe.Pointer(src2 + uintptr(2*uv_w+0)*2))), int32(*(*fixed_y_t)(unsafe.Pointer(src2 + uintptr(2*uv_w+1)*2))))) + var b int32 = int32(ScaleDown(tls, int32(*(*fixed_y_t)(unsafe.Pointer(src1 + uintptr(4*uv_w+0)*2))), int32(*(*fixed_y_t)(unsafe.Pointer(src1 + uintptr(4*uv_w+1)*2))), + int32(*(*fixed_y_t)(unsafe.Pointer(src2 + uintptr(4*uv_w+0)*2))), int32(*(*fixed_y_t)(unsafe.Pointer(src2 + uintptr(4*uv_w+1)*2))))) var W int32 = RGBToGray(tls, r, g, b) - *(*fixed_t)(unsafe.Pointer(dst + uintptr((0*uv_w))*2)) = (fixed_t(r - W)) - *(*fixed_t)(unsafe.Pointer(dst + uintptr((1*uv_w))*2)) = (fixed_t(g - W)) - *(*fixed_t)(unsafe.Pointer(dst + uintptr((2*uv_w))*2)) = (fixed_t(b - W)) - dst += 2 * (uintptr(1)) - src1 += 2 * (uintptr(2)) - src2 += 2 * (uintptr(2)) + *(*fixed_t)(unsafe.Pointer(dst + uintptr(0*uv_w)*2)) = fixed_t(r - W) + *(*fixed_t)(unsafe.Pointer(dst + uintptr(1*uv_w)*2)) = fixed_t(g - W) + *(*fixed_t)(unsafe.Pointer(dst + uintptr(2*uv_w)*2)) = fixed_t(b - W) + dst += 2 * uintptr(1) + src1 += 2 * uintptr(2) + src2 += 2 * uintptr(2) } } func StoreGray(tls *libc.TLS, rgb uintptr, y uintptr, w int32) { /* picture_csp_enc.c:311:13: */ var i int32 for i = 0; i < w; i++ { - *(*fixed_y_t)(unsafe.Pointer(y + uintptr(i)*2)) = fixed_y_t(RGBToGray(tls, int32(*(*fixed_y_t)(unsafe.Pointer(rgb + uintptr(((0*w)+i))*2))), int32(*(*fixed_y_t)(unsafe.Pointer(rgb + uintptr(((1*w)+i))*2))), int32(*(*fixed_y_t)(unsafe.Pointer(rgb + uintptr(((2*w)+i))*2))))) + *(*fixed_y_t)(unsafe.Pointer(y + uintptr(i)*2)) = fixed_y_t(RGBToGray(tls, int32(*(*fixed_y_t)(unsafe.Pointer(rgb + uintptr(0*w+i)*2))), int32(*(*fixed_y_t)(unsafe.Pointer(rgb + uintptr(1*w+i)*2))), int32(*(*fixed_y_t)(unsafe.Pointer(rgb + uintptr(2*w+i)*2))))) } } //------------------------------------------------------------------------------ func Filter2(tls *libc.TLS, A int32, B int32, W0 int32) fixed_y_t { /* picture_csp_enc.c:320:30: */ - var v0 int32 = ((((A * 3) + B) + 2) >> 2) - return clip_y1(tls, (v0 + W0)) + var v0 int32 = (A*3 + B + 2) >> 2 + return clip_y1(tls, v0+W0) } //------------------------------------------------------------------------------ func UpLift(tls *libc.TLS, a uint8_t) fixed_y_t { /* picture_csp_enc.c:327:30: */ // 8bit -> SFIX - return (fixed_y_t((int32(fixed_y_t(a)) << 2) | (int32((int32(1) << 2)) >> 1))) + return fixed_y_t(int32(fixed_y_t(a))<<2 | int32(int32(1)<<2)>>1) } func ImportOneRow(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintptr, step int32, pic_width int32, dst uintptr) { /* picture_csp_enc.c:331:13: */ var i int32 - var w int32 = ((pic_width + 1) & libc.CplInt32(1)) + var w int32 = (pic_width + 1) & libc.CplInt32(1) for i = 0; i < pic_width; i++ { - var off int32 = (i * step) - *(*fixed_y_t)(unsafe.Pointer(dst + uintptr((i+(0*w)))*2)) = UpLift(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(off)))) - *(*fixed_y_t)(unsafe.Pointer(dst + uintptr((i+(1*w)))*2)) = UpLift(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(off)))) - *(*fixed_y_t)(unsafe.Pointer(dst + uintptr((i+(2*w)))*2)) = UpLift(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(off)))) + var off int32 = i * step + *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(i+0*w)*2)) = UpLift(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(off)))) + *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(i+1*w)*2)) = UpLift(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(off)))) + *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(i+2*w)*2)) = UpLift(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(off)))) } - if (pic_width & 1) != 0 { // replicate rightmost pixel - *(*fixed_y_t)(unsafe.Pointer(dst + uintptr((pic_width+(0*w)))*2)) = *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(((pic_width+(0*w))-1))*2)) - *(*fixed_y_t)(unsafe.Pointer(dst + uintptr((pic_width+(1*w)))*2)) = *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(((pic_width+(1*w))-1))*2)) - *(*fixed_y_t)(unsafe.Pointer(dst + uintptr((pic_width+(2*w)))*2)) = *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(((pic_width+(2*w))-1))*2)) + if pic_width&1 != 0 { // replicate rightmost pixel + *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(pic_width+0*w)*2)) = *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(pic_width+0*w-1)*2)) + *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(pic_width+1*w)*2)) = *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(pic_width+1*w-1)*2)) + *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(pic_width+2*w)*2)) = *(*fixed_y_t)(unsafe.Pointer(dst + uintptr(pic_width+2*w-1)*2)) } } func InterpolateTwoRows(tls *libc.TLS, best_y uintptr, prev_uv uintptr, cur_uv uintptr, next_uv uintptr, w int32, out1 uintptr, out2 uintptr) { /* picture_csp_enc.c:352:13: */ - var uv_w int32 = (w >> 1) - var len int32 = ((w - 1) >> 1) // length to filter + var uv_w int32 = w >> 1 + var len int32 = (w - 1) >> 1 // length to filter var k int32 = 3 for libc.PostDecInt32(&k, 1) > 0 { // process each R/G/B segments in turn // special boundary case for i==0 @@ -29525,39 +29227,39 @@ func InterpolateTwoRows(tls *libc.TLS, best_y uintptr, prev_uv uintptr, cur_uv u (*struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{WebPSharpYUVFilterRow})).f(tls, cur_uv, prev_uv, len, ((best_y + uintptr(0)*2) + uintptr(1)*2), (out1 + uintptr(1)*2)) + })(unsafe.Pointer(&struct{ uintptr }{WebPSharpYUVFilterRow})).f(tls, cur_uv, prev_uv, len, best_y+uintptr(0)*2+uintptr(1)*2, out1+uintptr(1)*2) (*struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{WebPSharpYUVFilterRow})).f(tls, cur_uv, next_uv, len, ((best_y + uintptr(w)*2) + uintptr(1)*2), (out2 + uintptr(1)*2)) + })(unsafe.Pointer(&struct{ uintptr }{WebPSharpYUVFilterRow})).f(tls, cur_uv, next_uv, len, best_y+uintptr(w)*2+uintptr(1)*2, out2+uintptr(1)*2) // special boundary case for i == w - 1 when w is even - if !((w & 1) != 0) { - *(*fixed_y_t)(unsafe.Pointer(out1 + uintptr((w-1))*2)) = Filter2(tls, int32(*(*fixed_t)(unsafe.Pointer(cur_uv + uintptr((uv_w-1))*2))), int32(*(*fixed_t)(unsafe.Pointer(prev_uv + uintptr((uv_w-1))*2))), - int32(*(*fixed_y_t)(unsafe.Pointer(best_y + uintptr(((w-1)+0))*2)))) - *(*fixed_y_t)(unsafe.Pointer(out2 + uintptr((w-1))*2)) = Filter2(tls, int32(*(*fixed_t)(unsafe.Pointer(cur_uv + uintptr((uv_w-1))*2))), int32(*(*fixed_t)(unsafe.Pointer(next_uv + uintptr((uv_w-1))*2))), - int32(*(*fixed_y_t)(unsafe.Pointer(best_y + uintptr(((w-1)+w))*2)))) + if !(w&1 != 0) { + *(*fixed_y_t)(unsafe.Pointer(out1 + uintptr(w-1)*2)) = Filter2(tls, int32(*(*fixed_t)(unsafe.Pointer(cur_uv + uintptr(uv_w-1)*2))), int32(*(*fixed_t)(unsafe.Pointer(prev_uv + uintptr(uv_w-1)*2))), + int32(*(*fixed_y_t)(unsafe.Pointer(best_y + uintptr(w-1+0)*2)))) + *(*fixed_y_t)(unsafe.Pointer(out2 + uintptr(w-1)*2)) = Filter2(tls, int32(*(*fixed_t)(unsafe.Pointer(cur_uv + uintptr(uv_w-1)*2))), int32(*(*fixed_t)(unsafe.Pointer(next_uv + uintptr(uv_w-1)*2))), + int32(*(*fixed_y_t)(unsafe.Pointer(best_y + uintptr(w-1+w)*2)))) } - out1 += 2 * (uintptr(w)) - out2 += 2 * (uintptr(w)) - prev_uv += 2 * (uintptr(uv_w)) - cur_uv += 2 * (uintptr(uv_w)) - next_uv += 2 * (uintptr(uv_w)) + out1 += 2 * uintptr(w) + out2 += 2 * uintptr(w) + prev_uv += 2 * uintptr(uv_w) + cur_uv += 2 * uintptr(uv_w) + next_uv += 2 * uintptr(uv_w) } } func ConvertRGBToY(tls *libc.TLS, r int32, g int32, b int32) uint8_t { /* picture_csp_enc.c:385:28: */ - var luma int32 = ((((16839 * r) + (33059 * g)) + (6420 * b)) + (int32(1) << ((YUV_FIX + 2) - 1))) - return clip_8b2(tls, (int16(16 + (luma >> (YUV_FIX + 2))))) + var luma int32 = 16839*r + 33059*g + 6420*b + int32(1)<<(YUV_FIX+2-1) + return clip_8b2(tls, int16(16+luma>>(YUV_FIX+2))) } func ConvertRGBToU(tls *libc.TLS, r int32, g int32, b int32) uint8_t { /* picture_csp_enc.c:390:28: */ - var u int32 = ((((-9719 * r) - (19081 * g)) + (28800 * b)) + (int32(1) << ((YUV_FIX + 2) - 1))) - return clip_8b2(tls, (int16(128 + (u >> (YUV_FIX + 2))))) + var u int32 = -9719*r - 19081*g + 28800*b + int32(1)<<(YUV_FIX+2-1) + return clip_8b2(tls, int16(128+u>>(YUV_FIX+2))) } func ConvertRGBToV(tls *libc.TLS, r int32, g int32, b int32) uint8_t { /* picture_csp_enc.c:395:28: */ - var v int32 = ((((+28800 * r) - (24116 * g)) - (4684 * b)) + (int32(1) << ((YUV_FIX + 2) - 1))) - return clip_8b2(tls, (int16(128 + (v >> (YUV_FIX + 2))))) + var v int32 = +28800*r - 24116*g - 4684*b + int32(1)<<(YUV_FIX+2-1) + return clip_8b2(tls, int16(128+v>>(YUV_FIX+2))) } func ConvertWRGBToYUV(tls *libc.TLS, best_y uintptr, best_uv uintptr, picture uintptr) int32 { /* picture_csp_enc.c:400:12: */ @@ -29567,23 +29269,23 @@ func ConvertWRGBToYUV(tls *libc.TLS, best_y uintptr, best_uv uintptr, picture ui var dst_u uintptr = (*WebPPicture)(unsafe.Pointer(picture)).u var dst_v uintptr = (*WebPPicture)(unsafe.Pointer(picture)).v var best_uv_base uintptr = best_uv - var w int32 = (((*WebPPicture)(unsafe.Pointer(picture)).width + 1) & libc.CplInt32(1)) - var h int32 = (((*WebPPicture)(unsafe.Pointer(picture)).height + 1) & libc.CplInt32(1)) - var uv_w int32 = (w >> 1) - var uv_h int32 = (h >> 1) + var w int32 = ((*WebPPicture)(unsafe.Pointer(picture)).width + 1) & libc.CplInt32(1) + var h int32 = ((*WebPPicture)(unsafe.Pointer(picture)).height + 1) & libc.CplInt32(1) + var uv_w int32 = w >> 1 + var uv_h int32 = h >> 1 best_uv = best_uv_base j = 0 for ; j < (*WebPPicture)(unsafe.Pointer(picture)).height; j++ { for i = 0; i < (*WebPPicture)(unsafe.Pointer(picture)).width; i++ { - var off int32 = (i >> 1) + var off int32 = i >> 1 var W int32 = int32(*(*fixed_y_t)(unsafe.Pointer(best_y + uintptr(i)*2))) - var r int32 = (int32(*(*fixed_t)(unsafe.Pointer(best_uv + uintptr((off+(0*uv_w)))*2))) + W) - var g int32 = (int32(*(*fixed_t)(unsafe.Pointer(best_uv + uintptr((off+(1*uv_w)))*2))) + W) - var b int32 = (int32(*(*fixed_t)(unsafe.Pointer(best_uv + uintptr((off+(2*uv_w)))*2))) + W) + var r int32 = int32(*(*fixed_t)(unsafe.Pointer(best_uv + uintptr(off+0*uv_w)*2))) + W + var g int32 = int32(*(*fixed_t)(unsafe.Pointer(best_uv + uintptr(off+1*uv_w)*2))) + W + var b int32 = int32(*(*fixed_t)(unsafe.Pointer(best_uv + uintptr(off+2*uv_w)*2))) + W *(*uint8_t)(unsafe.Pointer(dst_y + uintptr(i))) = ConvertRGBToY(tls, r, g, b) } - best_y += 2 * (uintptr(w)) - best_uv += 2 * (uintptr(((j & 1) * 3) * uv_w)) + best_y += 2 * uintptr(w) + best_uv += 2 * uintptr(j&1*3*uv_w) dst_y += uintptr((*WebPPicture)(unsafe.Pointer(picture)).y_stride) } best_uv = best_uv_base @@ -29591,13 +29293,13 @@ func ConvertWRGBToYUV(tls *libc.TLS, best_y uintptr, best_uv uintptr, picture ui for ; j < uv_h; j++ { for i = 0; i < uv_w; i++ { var off int32 = i - var r int32 = int32(*(*fixed_t)(unsafe.Pointer(best_uv + uintptr((off+(0*uv_w)))*2))) - var g int32 = int32(*(*fixed_t)(unsafe.Pointer(best_uv + uintptr((off+(1*uv_w)))*2))) - var b int32 = int32(*(*fixed_t)(unsafe.Pointer(best_uv + uintptr((off+(2*uv_w)))*2))) + var r int32 = int32(*(*fixed_t)(unsafe.Pointer(best_uv + uintptr(off+0*uv_w)*2))) + var g int32 = int32(*(*fixed_t)(unsafe.Pointer(best_uv + uintptr(off+1*uv_w)*2))) + var b int32 = int32(*(*fixed_t)(unsafe.Pointer(best_uv + uintptr(off+2*uv_w)*2))) *(*uint8_t)(unsafe.Pointer(dst_u + uintptr(i))) = ConvertRGBToU(tls, r, g, b) *(*uint8_t)(unsafe.Pointer(dst_v + uintptr(i))) = ConvertRGBToV(tls, r, g, b) } - best_uv += 2 * (uintptr(3 * uv_w)) + best_uv += 2 * uintptr(3*uv_w) dst_u += uintptr((*WebPPicture)(unsafe.Pointer(picture)).uv_stride) dst_v += uintptr((*WebPPicture)(unsafe.Pointer(picture)).uv_stride) } @@ -29641,25 +29343,25 @@ func PreprocessARGB(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintptr, var cur_uv uintptr var prev_uv uintptr var diff_y_sum uint64_t - w = (((*WebPPicture)(unsafe.Pointer(picture)).width + 1) & libc.CplInt32(1)) - h = (((*WebPPicture)(unsafe.Pointer(picture)).height + 1) & libc.CplInt32(1)) - uv_w = (w >> 1) - uv_h = (h >> 1) + w = ((*WebPPicture)(unsafe.Pointer(picture)).width + 1) & libc.CplInt32(1) + h = ((*WebPPicture)(unsafe.Pointer(picture)).height + 1) & libc.CplInt32(1) + uv_w = w >> 1 + uv_h = h >> 1 prev_diff_y_sum = libc.Uint64FromInt32(libc.CplInt32(0)) - tmp_buffer = (WebPSafeMalloc(tls, (uint64((w * 3) * (2))), uint64(unsafe.Sizeof(fixed_y_t(0))))) - best_y_base = (WebPSafeMalloc(tls, (uint64((w) * (h))), uint64(unsafe.Sizeof(fixed_y_t(0))))) - target_y_base = (WebPSafeMalloc(tls, (uint64((w) * (h))), uint64(unsafe.Sizeof(fixed_y_t(0))))) - best_rgb_y = (WebPSafeMalloc(tls, (uint64((w) * (2))), uint64(unsafe.Sizeof(fixed_y_t(0))))) - best_uv_base = (WebPSafeMalloc(tls, (uint64((uv_w * 3) * (uv_h))), uint64(unsafe.Sizeof(fixed_t(0))))) - target_uv_base = (WebPSafeMalloc(tls, (uint64((uv_w * 3) * (uv_h))), uint64(unsafe.Sizeof(fixed_t(0))))) - best_rgb_uv = (WebPSafeMalloc(tls, (uint64((uv_w * 3) * (1))), uint64(unsafe.Sizeof(fixed_t(0))))) + tmp_buffer = WebPSafeMalloc(tls, uint64(w*3*2), uint64(unsafe.Sizeof(fixed_y_t(0)))) + best_y_base = WebPSafeMalloc(tls, uint64(w*h), uint64(unsafe.Sizeof(fixed_y_t(0)))) + target_y_base = WebPSafeMalloc(tls, uint64(w*h), uint64(unsafe.Sizeof(fixed_y_t(0)))) + best_rgb_y = WebPSafeMalloc(tls, uint64(w*2), uint64(unsafe.Sizeof(fixed_y_t(0)))) + best_uv_base = WebPSafeMalloc(tls, uint64(uv_w*3*uv_h), uint64(unsafe.Sizeof(fixed_t(0)))) + target_uv_base = WebPSafeMalloc(tls, uint64(uv_w*3*uv_h), uint64(unsafe.Sizeof(fixed_t(0)))) + best_rgb_uv = WebPSafeMalloc(tls, uint64(uv_w*3*1), uint64(unsafe.Sizeof(fixed_t(0)))) best_y = best_y_base target_y = target_y_base best_uv = best_uv_base target_uv = target_uv_base - diff_y_threshold = (libc.Uint64FromFloat64((3.0 * float64(w)) * float64(h))) + diff_y_threshold = libc.Uint64FromFloat64(3.0 * float64(w) * float64(h)) - if !(((((((best_y_base == (uintptr(0))) || (best_uv_base == (uintptr(0)))) || (target_y_base == (uintptr(0)))) || (target_uv_base == (uintptr(0)))) || (best_rgb_y == (uintptr(0)))) || (best_rgb_uv == (uintptr(0)))) || (tmp_buffer == (uintptr(0)))) { + if !(best_y_base == uintptr(0) || best_uv_base == uintptr(0) || target_y_base == uintptr(0) || target_uv_base == uintptr(0) || best_rgb_y == uintptr(0) || best_rgb_uv == uintptr(0) || tmp_buffer == uintptr(0)) { goto __1 } ok = WebPEncodingSetError(tls, picture, VP8_ENC_ERROR_OUT_OF_MEMORY) @@ -29675,39 +29377,39 @@ __2: if !(j < (*WebPPicture)(unsafe.Pointer(picture)).height) { goto __4 } - is_last_row = (libc.Bool32(j == ((*WebPPicture)(unsafe.Pointer(picture)).height - 1))) - src1 = (tmp_buffer + uintptr((0*w))*2) - src2 = (tmp_buffer + uintptr((3*w))*2) + is_last_row = libc.Bool32(j == (*WebPPicture)(unsafe.Pointer(picture)).height-1) + src1 = tmp_buffer + uintptr(0*w)*2 + src2 = tmp_buffer + uintptr(3*w)*2 // prepare two rows of input ImportOneRow(tls, r_ptr, g_ptr, b_ptr, step, (*WebPPicture)(unsafe.Pointer(picture)).width, src1) - if !(!(is_last_row != 0)) { + if !!(is_last_row != 0) { goto __5 } - ImportOneRow(tls, (r_ptr + uintptr(rgb_stride)), (g_ptr + uintptr(rgb_stride)), (b_ptr + uintptr(rgb_stride)), + ImportOneRow(tls, r_ptr+uintptr(rgb_stride), g_ptr+uintptr(rgb_stride), b_ptr+uintptr(rgb_stride), step, (*WebPPicture)(unsafe.Pointer(picture)).width, src2) goto __6 __5: - libc.Xmemcpy(tls, src2, src1, ((uint64(3 * w)) * uint64(unsafe.Sizeof(fixed_y_t(0))))) + libc.Xmemcpy(tls, src2, src1, uint64(3*w)*uint64(unsafe.Sizeof(fixed_y_t(0)))) __6: ; - StoreGray(tls, src1, (best_y + uintptr(0)*2), w) - StoreGray(tls, src2, (best_y + uintptr(w)*2), w) + StoreGray(tls, src1, best_y+uintptr(0)*2, w) + StoreGray(tls, src2, best_y+uintptr(w)*2, w) UpdateW(tls, src1, target_y, w) - UpdateW(tls, src2, (target_y + uintptr(w)*2), w) + UpdateW(tls, src2, target_y+uintptr(w)*2, w) UpdateChroma(tls, src1, src2, target_uv, uv_w) - libc.Xmemcpy(tls, best_uv, target_uv, ((uint64(3 * uv_w)) * uint64(unsafe.Sizeof(fixed_t(0))))) - best_y += 2 * (uintptr(2 * w)) - best_uv += 2 * (uintptr(3 * uv_w)) - target_y += 2 * (uintptr(2 * w)) - target_uv += 2 * (uintptr(3 * uv_w)) - r_ptr += (uintptr(2 * rgb_stride)) - g_ptr += (uintptr(2 * rgb_stride)) - b_ptr += (uintptr(2 * rgb_stride)) + libc.Xmemcpy(tls, best_uv, target_uv, uint64(3*uv_w)*uint64(unsafe.Sizeof(fixed_t(0)))) + best_y += 2 * uintptr(2*w) + best_uv += 2 * uintptr(3*uv_w) + target_y += 2 * uintptr(2*w) + target_uv += 2 * uintptr(3*uv_w) + r_ptr += uintptr(2 * rgb_stride) + g_ptr += uintptr(2 * rgb_stride) + b_ptr += uintptr(2 * rgb_stride) goto __3 __3: - j = j + (2) + j = j + 2 goto __2 goto __4 __4: @@ -29732,38 +29434,38 @@ __10: if !(j < h) { goto __12 } - src11 = (tmp_buffer + uintptr((0*w))*2) - src21 = (tmp_buffer + uintptr((3*w))*2) + src11 = tmp_buffer + uintptr(0*w)*2 + src21 = tmp_buffer + uintptr(3*w)*2 - next_uv = (cur_uv + uintptr((func() int32 { - if j < (h - 2) { - return (3 * uv_w) + next_uv = cur_uv + uintptr(func() int32 { + if j < h-2 { + return 3 * uv_w } return 0 - }()))*2) + }())*2 InterpolateTwoRows(tls, best_y, prev_uv, cur_uv, next_uv, w, src11, src21) prev_uv = cur_uv cur_uv = next_uv - UpdateW(tls, src11, (best_rgb_y + uintptr((0*w))*2), w) - UpdateW(tls, src21, (best_rgb_y + uintptr((1*w))*2), w) + UpdateW(tls, src11, best_rgb_y+uintptr(0*w)*2, w) + UpdateW(tls, src21, best_rgb_y+uintptr(1*w)*2, w) UpdateChroma(tls, src11, src21, best_rgb_uv, uv_w) // update two rows of Y and one row of RGB - diff_y_sum = diff_y_sum + ((*struct { + diff_y_sum = diff_y_sum + (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) uint64_t - })(unsafe.Pointer(&struct{ uintptr }{WebPSharpYUVUpdateY})).f(tls, target_y, best_rgb_y, best_y, (2 * w))) + })(unsafe.Pointer(&struct{ uintptr }{WebPSharpYUVUpdateY})).f(tls, target_y, best_rgb_y, best_y, 2*w) (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{WebPSharpYUVUpdateRGB})).f(tls, target_uv, best_rgb_uv, best_uv, (3 * uv_w)) + })(unsafe.Pointer(&struct{ uintptr }{WebPSharpYUVUpdateRGB})).f(tls, target_uv, best_rgb_uv, best_uv, 3*uv_w) - best_y += 2 * (uintptr(2 * w)) - best_uv += 2 * (uintptr(3 * uv_w)) - target_y += 2 * (uintptr(2 * w)) - target_uv += 2 * (uintptr(3 * uv_w)) + best_y += 2 * uintptr(2*w) + best_uv += 2 * uintptr(3*uv_w) + target_y += 2 * uintptr(2*w) + target_uv += 2 * uintptr(3*uv_w) goto __11 __11: - j = j + (2) + j = j + 2 goto __10 goto __12 __12: @@ -29955,9 +29657,9 @@ var kInvAlpha = [1021]uint32_t{ // so we incorporate this factor 4 inside the DIVIDE_BY_ALPHA macro directly. func LinearToGammaWeighted(tls *libc.TLS, src uintptr, a_ptr uintptr, total_a uint32_t, step int32, rgb_stride int32) int32 { /* picture_csp_enc.c:738:24: */ - var sum uint32_t = ((((uint32_t(*(*uint8_t)(unsafe.Pointer(a_ptr))) * GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(src)))) + (uint32_t(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(step)))) * GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(src + uintptr(step)))))) + (uint32_t(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(rgb_stride)))) * GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(src + uintptr(rgb_stride)))))) + (uint32_t(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr((rgb_stride + step))))) * GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(src + uintptr((rgb_stride + step))))))) + var sum uint32_t = uint32_t(*(*uint8_t)(unsafe.Pointer(a_ptr)))*GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(src))) + uint32_t(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(step))))*GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(src + uintptr(step)))) + uint32_t(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(rgb_stride))))*GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(src + uintptr(rgb_stride)))) + uint32_t(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(rgb_stride+step))))*GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(src + uintptr(rgb_stride+step)))) - return LinearToGamma(tls, (((sum) * kInvAlpha[(total_a)]) >> (kAlphaFix - 2)), 0) + return LinearToGamma(tls, sum*kInvAlpha[total_a]>>(kAlphaFix-2), 0) } func ConvertRowToY(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintptr, step int32, dst_y uintptr, width int32, rg uintptr) { /* picture_csp_enc.c:754:25: */ @@ -29975,8 +29677,8 @@ __1: } goto __2 __2: - i = i + (1) - j = j + (step) + i = i + 1 + j = j + step goto __1 goto __3 __3: @@ -29989,22 +29691,22 @@ func AccumulateRGBA(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintptr, i = 0 j = 0 __1: - if !(i < (width >> 1)) { + if !(i < width>>1) { goto __3 } { - var a uint32_t = (uint32_t((int32(*(*uint8_t)(unsafe.Pointer((a_ptr + uintptr(j))))) + int32(*(*uint8_t)(unsafe.Pointer((a_ptr + uintptr(j)) + uintptr(rgb_stride))))) + (int32(*(*uint8_t)(unsafe.Pointer(((a_ptr + uintptr(j)) + uintptr(4))))) + int32(*(*uint8_t)(unsafe.Pointer(((a_ptr + uintptr(j)) + uintptr(4)) + uintptr(rgb_stride))))))) + var a uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(j)))) + int32(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(j) + uintptr(rgb_stride)))) + (int32(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(j) + uintptr(4)))) + int32(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(j) + uintptr(4) + uintptr(rgb_stride)))))) var r int32 var g int32 var b int32 - if (a == (uint32_t(4 * 0xff))) || (a == uint32_t(0)) { - r = LinearToGamma(tls, (((GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((r_ptr + uintptr(j))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((r_ptr + uintptr(j)) + 4)))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((r_ptr + uintptr(j)) + uintptr(rgb_stride))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((r_ptr + uintptr(j)) + uintptr((rgb_stride + (4))))))), 0) - g = LinearToGamma(tls, (((GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((g_ptr + uintptr(j))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((g_ptr + uintptr(j)) + 4)))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((g_ptr + uintptr(j)) + uintptr(rgb_stride))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((g_ptr + uintptr(j)) + uintptr((rgb_stride + (4))))))), 0) - b = LinearToGamma(tls, (((GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((b_ptr + uintptr(j))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((b_ptr + uintptr(j)) + 4)))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((b_ptr + uintptr(j)) + uintptr(rgb_stride))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((b_ptr + uintptr(j)) + uintptr((rgb_stride + (4))))))), 0) + if a == uint32_t(4*0xff) || a == uint32_t(0) { + r = LinearToGamma(tls, GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(j))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(j) + 4)))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(j) + uintptr(rgb_stride))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(j) + uintptr(rgb_stride+4)))), 0) + g = LinearToGamma(tls, GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(j))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(j) + 4)))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(j) + uintptr(rgb_stride))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(j) + uintptr(rgb_stride+4)))), 0) + b = LinearToGamma(tls, GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(j))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(j) + 4)))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(j) + uintptr(rgb_stride))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(j) + uintptr(rgb_stride+4)))), 0) } else { - r = LinearToGammaWeighted(tls, (r_ptr + uintptr(j)), (a_ptr + uintptr(j)), a, 4, rgb_stride) - g = LinearToGammaWeighted(tls, (g_ptr + uintptr(j)), (a_ptr + uintptr(j)), a, 4, rgb_stride) - b = LinearToGammaWeighted(tls, (b_ptr + uintptr(j)), (a_ptr + uintptr(j)), a, 4, rgb_stride) + r = LinearToGammaWeighted(tls, r_ptr+uintptr(j), a_ptr+uintptr(j), a, 4, rgb_stride) + g = LinearToGammaWeighted(tls, g_ptr+uintptr(j), a_ptr+uintptr(j), a, 4, rgb_stride) + b = LinearToGammaWeighted(tls, b_ptr+uintptr(j), a_ptr+uintptr(j), a, 4, rgb_stride) } *(*uint16_t)(unsafe.Pointer(dst)) = uint16_t(r) *(*uint16_t)(unsafe.Pointer(dst + 1*2)) = uint16_t(g) @@ -30014,26 +29716,26 @@ __1: } goto __2 __2: - i = i + (1) - j = j + (2 * 4) - dst += 2 * (uintptr(4)) + i = i + 1 + j = j + 2*4 + dst += 2 * uintptr(4) goto __1 goto __3 __3: ; - if (width & 1) != 0 { - var a uint32_t = (2 * (uint32(int32(*(*uint8_t)(unsafe.Pointer((a_ptr + uintptr(j))))) + int32(*(*uint8_t)(unsafe.Pointer((a_ptr + uintptr(j)) + uintptr(rgb_stride))))))) + if width&1 != 0 { + var a uint32_t = 2 * uint32(int32(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(j))))+int32(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(j) + uintptr(rgb_stride))))) var r int32 var g int32 var b int32 - if (a == (uint32_t(4 * 0xff))) || (a == uint32_t(0)) { - r = LinearToGamma(tls, (GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((r_ptr + uintptr(j))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((r_ptr + uintptr(j)) + uintptr(rgb_stride))))), 1) - g = LinearToGamma(tls, (GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((g_ptr + uintptr(j))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((g_ptr + uintptr(j)) + uintptr(rgb_stride))))), 1) - b = LinearToGamma(tls, (GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((b_ptr + uintptr(j))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((b_ptr + uintptr(j)) + uintptr(rgb_stride))))), 1) + if a == uint32_t(4*0xff) || a == uint32_t(0) { + r = LinearToGamma(tls, GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(j))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(j) + uintptr(rgb_stride)))), 1) + g = LinearToGamma(tls, GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(j))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(j) + uintptr(rgb_stride)))), 1) + b = LinearToGamma(tls, GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(j))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(j) + uintptr(rgb_stride)))), 1) } else { - r = LinearToGammaWeighted(tls, (r_ptr + uintptr(j)), (a_ptr + uintptr(j)), a, 0, rgb_stride) - g = LinearToGammaWeighted(tls, (g_ptr + uintptr(j)), (a_ptr + uintptr(j)), a, 0, rgb_stride) - b = LinearToGammaWeighted(tls, (b_ptr + uintptr(j)), (a_ptr + uintptr(j)), a, 0, rgb_stride) + r = LinearToGammaWeighted(tls, r_ptr+uintptr(j), a_ptr+uintptr(j), a, 0, rgb_stride) + g = LinearToGammaWeighted(tls, g_ptr+uintptr(j), a_ptr+uintptr(j), a, 0, rgb_stride) + b = LinearToGammaWeighted(tls, b_ptr+uintptr(j), a_ptr+uintptr(j), a, 0, rgb_stride) } *(*uint16_t)(unsafe.Pointer(dst)) = uint16_t(r) *(*uint16_t)(unsafe.Pointer(dst + 1*2)) = uint16_t(g) @@ -30048,28 +29750,28 @@ func AccumulateRGB(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintptr, s i = 0 j = 0 __1: - if !(i < (width >> 1)) { + if !(i < width>>1) { goto __3 } { - *(*uint16_t)(unsafe.Pointer(dst)) = uint16_t(LinearToGamma(tls, (((GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((r_ptr + uintptr(j))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((r_ptr + uintptr(j)) + uintptr((step)))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((r_ptr + uintptr(j)) + uintptr(rgb_stride))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((r_ptr + uintptr(j)) + uintptr((rgb_stride + (step))))))), 0)) - *(*uint16_t)(unsafe.Pointer(dst + 1*2)) = uint16_t(LinearToGamma(tls, (((GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((g_ptr + uintptr(j))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((g_ptr + uintptr(j)) + uintptr((step)))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((g_ptr + uintptr(j)) + uintptr(rgb_stride))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((g_ptr + uintptr(j)) + uintptr((rgb_stride + (step))))))), 0)) - *(*uint16_t)(unsafe.Pointer(dst + 2*2)) = uint16_t(LinearToGamma(tls, (((GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((b_ptr + uintptr(j))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((b_ptr + uintptr(j)) + uintptr((step)))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((b_ptr + uintptr(j)) + uintptr(rgb_stride))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((b_ptr + uintptr(j)) + uintptr((rgb_stride + (step))))))), 0)) + *(*uint16_t)(unsafe.Pointer(dst)) = uint16_t(LinearToGamma(tls, GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(j))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(j) + uintptr(step))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(j) + uintptr(rgb_stride))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(j) + uintptr(rgb_stride+step)))), 0)) + *(*uint16_t)(unsafe.Pointer(dst + 1*2)) = uint16_t(LinearToGamma(tls, GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(j))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(j) + uintptr(step))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(j) + uintptr(rgb_stride))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(j) + uintptr(rgb_stride+step)))), 0)) + *(*uint16_t)(unsafe.Pointer(dst + 2*2)) = uint16_t(LinearToGamma(tls, GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(j))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(j) + uintptr(step))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(j) + uintptr(rgb_stride))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(j) + uintptr(rgb_stride+step)))), 0)) } goto __2 __2: - i = i + (1) - j = j + (2 * step) - dst += 2 * (uintptr(4)) + i = i + 1 + j = j + 2*step + dst += 2 * uintptr(4) goto __1 goto __3 __3: ; - if (width & 1) != 0 { - *(*uint16_t)(unsafe.Pointer(dst)) = uint16_t(LinearToGamma(tls, (GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((r_ptr + uintptr(j))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((r_ptr + uintptr(j)) + uintptr(rgb_stride))))), 1)) - *(*uint16_t)(unsafe.Pointer(dst + 1*2)) = uint16_t(LinearToGamma(tls, (GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((g_ptr + uintptr(j))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((g_ptr + uintptr(j)) + uintptr(rgb_stride))))), 1)) - *(*uint16_t)(unsafe.Pointer(dst + 2*2)) = uint16_t(LinearToGamma(tls, (GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((b_ptr + uintptr(j))))) + GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer((b_ptr + uintptr(j)) + uintptr(rgb_stride))))), 1)) + if width&1 != 0 { + *(*uint16_t)(unsafe.Pointer(dst)) = uint16_t(LinearToGamma(tls, GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(j))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(r_ptr + uintptr(j) + uintptr(rgb_stride)))), 1)) + *(*uint16_t)(unsafe.Pointer(dst + 1*2)) = uint16_t(LinearToGamma(tls, GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(j))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(g_ptr + uintptr(j) + uintptr(rgb_stride)))), 1)) + *(*uint16_t)(unsafe.Pointer(dst + 2*2)) = uint16_t(LinearToGamma(tls, GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(j))))+GammaToLinear(tls, *(*uint8_t)(unsafe.Pointer(b_ptr + uintptr(j) + uintptr(rgb_stride)))), 1)) } } @@ -30090,8 +29792,8 @@ __1: } goto __2 __2: - i = i + (1) - rgb += 2 * (uintptr(4)) + i = i + 1 + rgb += 2 * uintptr(4) goto __1 goto __3 __3: @@ -30105,7 +29807,7 @@ func ImportYUVAFromRGBA(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintp var width int32 = (*WebPPicture)(unsafe.Pointer(picture)).width var height int32 = (*WebPPicture)(unsafe.Pointer(picture)).height var has_alpha int32 = CheckNonOpaque(tls, a_ptr, width, height, step, rgb_stride) - var is_rgb int32 = (libc.Bool32(r_ptr < b_ptr)) // otherwise it's bgr + var is_rgb int32 = libc.Bool32(r_ptr < b_ptr) // otherwise it's bgr (*WebPPicture)(unsafe.Pointer(picture)).colorspace = func() uint32 { if has_alpha != 0 { @@ -30116,7 +29818,7 @@ func ImportYUVAFromRGBA(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintp (*WebPPicture)(unsafe.Pointer(picture)).use_argb = 0 // disable smart conversion if source is too small (overkill). - if (width < kMinDimensionIterativeConversion) || (height < kMinDimensionIterativeConversion) { + if width < kMinDimensionIterativeConversion || height < kMinDimensionIterativeConversion { use_iterative_conversion = 0 } @@ -30139,31 +29841,31 @@ func ImportYUVAFromRGBA(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintp (*WebPPicture)(unsafe.Pointer(picture)).a, (*WebPPicture)(unsafe.Pointer(picture)).a_stride) } } else { - var uv_width int32 = ((width + 1) >> 1) - var use_dsp int32 = (libc.Bool32(step == 3)) // use special function in this case + var uv_width int32 = (width + 1) >> 1 + var use_dsp int32 = libc.Bool32(step == 3) // use special function in this case // temporary storage for accumulated R/G/B values during conversion to U/V - var tmp_rgb uintptr = WebPSafeMalloc(tls, (uint64(4 * uv_width)), uint64(unsafe.Sizeof(uint16_t(0)))) + var tmp_rgb uintptr = WebPSafeMalloc(tls, uint64(4*uv_width), uint64(unsafe.Sizeof(uint16_t(0)))) var dst_y uintptr = (*WebPPicture)(unsafe.Pointer(picture)).y var dst_u uintptr = (*WebPPicture)(unsafe.Pointer(picture)).u var dst_v uintptr = (*WebPPicture)(unsafe.Pointer(picture)).v var dst_a uintptr = (*WebPPicture)(unsafe.Pointer(picture)).a // var base_rg VP8Random at bp, 232 - var rg uintptr = (uintptr(0)) + var rg uintptr = uintptr(0) if float64(dithering) > 0. { - VP8InitRandom(tls, (bp) /* &base_rg */, dithering) - rg = (bp) /* &base_rg */ + VP8InitRandom(tls, bp, dithering) + rg = bp /* &base_rg */ use_dsp = 0 // can't use dsp in this case } WebPInitConvertARGBToYUV(tls) InitGammaTables(tls) - if tmp_rgb == (uintptr(0)) { + if tmp_rgb == uintptr(0) { return 0 } // malloc error // Downsample Y/U/V planes, two rows at a time - for y = 0; y < (height >> 1); y++ { + for y = 0; y < height>>1; y++ { var rows_have_alpha int32 = has_alpha if use_dsp != 0 { if is_rgb != 0 { @@ -30172,31 +29874,31 @@ func ImportYUVAFromRGBA(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintp })(unsafe.Pointer(&struct{ uintptr }{WebPConvertRGB24ToY})).f(tls, r_ptr, dst_y, width) (*struct { f func(*libc.TLS, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{WebPConvertRGB24ToY})).f(tls, (r_ptr + uintptr(rgb_stride)), - (dst_y + uintptr((*WebPPicture)(unsafe.Pointer(picture)).y_stride)), width) + })(unsafe.Pointer(&struct{ uintptr }{WebPConvertRGB24ToY})).f(tls, r_ptr+uintptr(rgb_stride), + dst_y+uintptr((*WebPPicture)(unsafe.Pointer(picture)).y_stride), width) } else { (*struct { f func(*libc.TLS, uintptr, uintptr, int32) })(unsafe.Pointer(&struct{ uintptr }{WebPConvertBGR24ToY})).f(tls, b_ptr, dst_y, width) (*struct { f func(*libc.TLS, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{WebPConvertBGR24ToY})).f(tls, (b_ptr + uintptr(rgb_stride)), - (dst_y + uintptr((*WebPPicture)(unsafe.Pointer(picture)).y_stride)), width) + })(unsafe.Pointer(&struct{ uintptr }{WebPConvertBGR24ToY})).f(tls, b_ptr+uintptr(rgb_stride), + dst_y+uintptr((*WebPPicture)(unsafe.Pointer(picture)).y_stride), width) } } else { ConvertRowToY(tls, r_ptr, g_ptr, b_ptr, step, dst_y, width, rg) - ConvertRowToY(tls, (r_ptr + uintptr(rgb_stride)), - (g_ptr + uintptr(rgb_stride)), - (b_ptr + uintptr(rgb_stride)), step, - (dst_y + uintptr((*WebPPicture)(unsafe.Pointer(picture)).y_stride)), width, rg) + ConvertRowToY(tls, r_ptr+uintptr(rgb_stride), + g_ptr+uintptr(rgb_stride), + b_ptr+uintptr(rgb_stride), step, + dst_y+uintptr((*WebPPicture)(unsafe.Pointer(picture)).y_stride), width, rg) } - dst_y += (uintptr(2 * (*WebPPicture)(unsafe.Pointer(picture)).y_stride)) + dst_y += uintptr(2 * (*WebPPicture)(unsafe.Pointer(picture)).y_stride) if has_alpha != 0 { - rows_have_alpha = rows_have_alpha & (libc.BoolInt32(!((*struct { + rows_have_alpha = rows_have_alpha & libc.BoolInt32(!((*struct { f func(*libc.TLS, uintptr, int32, int32, int32, uintptr, int32) int32 })(unsafe.Pointer(&struct{ uintptr }{WebPExtractAlpha})).f(tls, a_ptr, rgb_stride, width, 2, - dst_a, (*WebPPicture)(unsafe.Pointer(picture)).a_stride) != 0))) - dst_a += (uintptr(2 * (*WebPPicture)(unsafe.Pointer(picture)).a_stride)) + dst_a, (*WebPPicture)(unsafe.Pointer(picture)).a_stride) != 0)) + dst_a += uintptr(2 * (*WebPPicture)(unsafe.Pointer(picture)).a_stride) } // Collect averaged R/G/B(/A) if !(rows_have_alpha != 0) { @@ -30205,7 +29907,7 @@ func ImportYUVAFromRGBA(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintp AccumulateRGBA(tls, r_ptr, g_ptr, b_ptr, a_ptr, rgb_stride, tmp_rgb, width) } // Convert to U/V - if rg == (uintptr(0)) { + if rg == uintptr(0) { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) })(unsafe.Pointer(&struct{ uintptr }{WebPConvertRGBA32ToUV})).f(tls, tmp_rgb, dst_u, dst_v, uv_width) @@ -30214,14 +29916,14 @@ func ImportYUVAFromRGBA(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintp } dst_u += uintptr((*WebPPicture)(unsafe.Pointer(picture)).uv_stride) dst_v += uintptr((*WebPPicture)(unsafe.Pointer(picture)).uv_stride) - r_ptr += (uintptr(2 * rgb_stride)) - b_ptr += (uintptr(2 * rgb_stride)) - g_ptr += (uintptr(2 * rgb_stride)) + r_ptr += uintptr(2 * rgb_stride) + b_ptr += uintptr(2 * rgb_stride) + g_ptr += uintptr(2 * rgb_stride) if has_alpha != 0 { - a_ptr += (uintptr(2 * rgb_stride)) + a_ptr += uintptr(2 * rgb_stride) } } - if (height & 1) != 0 { // extra last row + if height&1 != 0 { // extra last row var row_has_alpha int32 = has_alpha if use_dsp != 0 { if r_ptr < b_ptr { @@ -30237,9 +29939,9 @@ func ImportYUVAFromRGBA(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintp ConvertRowToY(tls, r_ptr, g_ptr, b_ptr, step, dst_y, width, rg) } if row_has_alpha != 0 { - row_has_alpha = row_has_alpha & (libc.BoolInt32(!((*struct { + row_has_alpha = row_has_alpha & libc.BoolInt32(!((*struct { f func(*libc.TLS, uintptr, int32, int32, int32, uintptr, int32) int32 - })(unsafe.Pointer(&struct{ uintptr }{WebPExtractAlpha})).f(tls, a_ptr, 0, width, 1, dst_a, 0) != 0))) + })(unsafe.Pointer(&struct{ uintptr }{WebPExtractAlpha})).f(tls, a_ptr, 0, width, 1, dst_a, 0) != 0)) } // Collect averaged R/G/B(/A) if !(row_has_alpha != 0) { @@ -30250,7 +29952,7 @@ func ImportYUVAFromRGBA(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintp AccumulateRGBA(tls, r_ptr, g_ptr, b_ptr, a_ptr /* rgb_stride = */, 0, tmp_rgb, width) } - if rg == (uintptr(0)) { + if rg == uintptr(0) { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) })(unsafe.Pointer(&struct{ uintptr }{WebPConvertRGBA32ToUV})).f(tls, tmp_rgb, dst_u, dst_v, uv_width) @@ -30267,22 +29969,22 @@ func ImportYUVAFromRGBA(tls *libc.TLS, r_ptr uintptr, g_ptr uintptr, b_ptr uintp // call for ARGB->YUVA conversion func PictureARGBToYUVA(tls *libc.TLS, picture uintptr, colorspace WebPEncCSP, dithering float32, use_iterative_conversion int32) int32 { /* picture_csp_enc.c:995:12: */ - if picture == (uintptr(0)) { + if picture == uintptr(0) { return 0 } - if (*WebPPicture)(unsafe.Pointer(picture)).argb == (uintptr(0)) { + if (*WebPPicture)(unsafe.Pointer(picture)).argb == uintptr(0) { return WebPEncodingSetError(tls, picture, VP8_ENC_ERROR_NULL_PARAMETER) - } else if (colorspace & WEBP_CSP_UV_MASK) != WEBP_YUV420 { + } else if colorspace&WEBP_CSP_UV_MASK != WEBP_YUV420 { return WebPEncodingSetError(tls, picture, VP8_ENC_ERROR_INVALID_CONFIGURATION) } else { var argb uintptr = (*WebPPicture)(unsafe.Pointer(picture)).argb - var a uintptr = (argb + uintptr((3 - (0)))) - var r uintptr = (argb + uintptr((3 - (1)))) - var g uintptr = (argb + uintptr((3 - (2)))) - var b uintptr = (argb + uintptr((3 - (3)))) + var a uintptr = argb + uintptr(3-0) + var r uintptr = argb + uintptr(3-1) + var g uintptr = argb + uintptr(3-2) + var b uintptr = argb + uintptr(3-3) (*WebPPicture)(unsafe.Pointer(picture)).colorspace = WEBP_YUV420 - return ImportYUVAFromRGBA(tls, r, g, b, a, 4, (4 * (*WebPPicture)(unsafe.Pointer(picture)).argb_stride), + return ImportYUVAFromRGBA(tls, r, g, b, a, 4, 4*(*WebPPicture)(unsafe.Pointer(picture)).argb_stride, dithering, use_iterative_conversion, picture) } return int32(0) @@ -30309,16 +30011,16 @@ func WebPPictureSmartARGBToYUVA(tls *libc.TLS, picture uintptr) int32 { /* pictu // call for YUVA -> ARGB conversion func WebPPictureYUVAToARGB(tls *libc.TLS, picture uintptr) int32 { /* picture_csp_enc.c:1035:5: */ - if picture == (uintptr(0)) { + if picture == uintptr(0) { return 0 } - if (((*WebPPicture)(unsafe.Pointer(picture)).y == (uintptr(0))) || ((*WebPPicture)(unsafe.Pointer(picture)).u == (uintptr(0)))) || ((*WebPPicture)(unsafe.Pointer(picture)).v == (uintptr(0))) { + if (*WebPPicture)(unsafe.Pointer(picture)).y == uintptr(0) || (*WebPPicture)(unsafe.Pointer(picture)).u == uintptr(0) || (*WebPPicture)(unsafe.Pointer(picture)).v == uintptr(0) { return WebPEncodingSetError(tls, picture, VP8_ENC_ERROR_NULL_PARAMETER) } - if (((*WebPPicture)(unsafe.Pointer(picture)).colorspace & WEBP_CSP_ALPHA_BIT) != 0) && ((*WebPPicture)(unsafe.Pointer(picture)).a == (uintptr(0))) { + if (*WebPPicture)(unsafe.Pointer(picture)).colorspace&WEBP_CSP_ALPHA_BIT != 0 && (*WebPPicture)(unsafe.Pointer(picture)).a == uintptr(0) { return WebPEncodingSetError(tls, picture, VP8_ENC_ERROR_NULL_PARAMETER) } - if ((*WebPPicture)(unsafe.Pointer(picture)).colorspace & WEBP_CSP_UV_MASK) != WEBP_YUV420 { + if (*WebPPicture)(unsafe.Pointer(picture)).colorspace&WEBP_CSP_UV_MASK != WEBP_YUV420 { return WebPEncodingSetError(tls, picture, VP8_ENC_ERROR_INVALID_CONFIGURATION) } // Allocate a new argb buffer (discarding the previous one). @@ -30332,46 +30034,46 @@ func WebPPictureYUVAToARGB(tls *libc.TLS, picture uintptr) int32 { /* picture_cs var y int32 var width int32 = (*WebPPicture)(unsafe.Pointer(picture)).width var height int32 = (*WebPPicture)(unsafe.Pointer(picture)).height - var argb_stride int32 = (4 * (*WebPPicture)(unsafe.Pointer(picture)).argb_stride) + var argb_stride int32 = 4 * (*WebPPicture)(unsafe.Pointer(picture)).argb_stride var dst uintptr = (*WebPPicture)(unsafe.Pointer(picture)).argb var cur_u uintptr = (*WebPPicture)(unsafe.Pointer(picture)).u var cur_v uintptr = (*WebPPicture)(unsafe.Pointer(picture)).v var cur_y uintptr = (*WebPPicture)(unsafe.Pointer(picture)).y - var upsample WebPUpsampleLinePairFunc = WebPGetLinePairConverter(tls, (libc.Bool32((3 - (0)) > 0))) + var upsample WebPUpsampleLinePairFunc = WebPGetLinePairConverter(tls, libc.Bool32(3-0 > 0)) // First row, with replicated top samples. (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, cur_y, (uintptr(0)), cur_u, cur_v, cur_u, cur_v, dst, (uintptr(0)), width) + })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, cur_y, uintptr(0), cur_u, cur_v, cur_u, cur_v, dst, uintptr(0), width) cur_y += uintptr((*WebPPicture)(unsafe.Pointer(picture)).y_stride) dst += uintptr(argb_stride) // Center rows. - for y = 1; (y + 1) < height; y = y + (2) { + for y = 1; y+1 < height; y = y + 2 { var top_u uintptr = cur_u var top_v uintptr = cur_v cur_u += uintptr((*WebPPicture)(unsafe.Pointer(picture)).uv_stride) cur_v += uintptr((*WebPPicture)(unsafe.Pointer(picture)).uv_stride) (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, cur_y, (cur_y + uintptr((*WebPPicture)(unsafe.Pointer(picture)).y_stride)), top_u, top_v, cur_u, cur_v, - dst, (dst + uintptr(argb_stride)), width) - cur_y += (uintptr(2 * (*WebPPicture)(unsafe.Pointer(picture)).y_stride)) - dst += (uintptr(2 * argb_stride)) + })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, cur_y, cur_y+uintptr((*WebPPicture)(unsafe.Pointer(picture)).y_stride), top_u, top_v, cur_u, cur_v, + dst, dst+uintptr(argb_stride), width) + cur_y += uintptr(2 * (*WebPPicture)(unsafe.Pointer(picture)).y_stride) + dst += uintptr(2 * argb_stride) } // Last row (if needed), with replicated bottom samples. - if (height > 1) && !((height & 1) != 0) { + if height > 1 && !(height&1 != 0) { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, cur_y, (uintptr(0)), cur_u, cur_v, cur_u, cur_v, dst, (uintptr(0)), width) + })(unsafe.Pointer(&struct{ uintptr }{upsample})).f(tls, cur_y, uintptr(0), cur_u, cur_v, cur_u, cur_v, dst, uintptr(0), width) } // Insert alpha values if needed, in replacement for the default 0xff ones. - if ((*WebPPicture)(unsafe.Pointer(picture)).colorspace & WEBP_CSP_ALPHA_BIT) != 0 { + if (*WebPPicture)(unsafe.Pointer(picture)).colorspace&WEBP_CSP_ALPHA_BIT != 0 { for y = 0; y < height; y++ { - var argb_dst uintptr = ((*WebPPicture)(unsafe.Pointer(picture)).argb + uintptr((y*(*WebPPicture)(unsafe.Pointer(picture)).argb_stride))*4) - var src uintptr = ((*WebPPicture)(unsafe.Pointer(picture)).a + uintptr((y * (*WebPPicture)(unsafe.Pointer(picture)).a_stride))) + var argb_dst uintptr = (*WebPPicture)(unsafe.Pointer(picture)).argb + uintptr(y*(*WebPPicture)(unsafe.Pointer(picture)).argb_stride)*4 + var src uintptr = (*WebPPicture)(unsafe.Pointer(picture)).a + uintptr(y*(*WebPPicture)(unsafe.Pointer(picture)).a_stride) var x int32 for x = 0; x < width; x++ { - *(*uint32_t)(unsafe.Pointer(argb_dst + uintptr(x)*4)) = ((*(*uint32_t)(unsafe.Pointer(argb_dst + uintptr(x)*4)) & 0x00ffffff) | (uint32_t(*(*uint8_t)(unsafe.Pointer(src + uintptr(x)))) << 24)) + *(*uint32_t)(unsafe.Pointer(argb_dst + uintptr(x)*4)) = *(*uint32_t)(unsafe.Pointer(argb_dst + uintptr(x)*4))&0x00ffffff | uint32_t(*(*uint8_t)(unsafe.Pointer(src + uintptr(x))))<<24 } } } @@ -30386,28 +30088,28 @@ func WebPPictureYUVAToARGB(tls *libc.TLS, picture uintptr) int32 { /* picture_cs func Import(tls *libc.TLS, picture uintptr, rgb uintptr, rgb_stride int32, step int32, swap_rb int32, import_alpha int32) int32 { /* picture_csp_enc.c:1098:12: */ var y int32 // swap_rb -> b,g,r,a , !swap_rb -> r,g,b,a - var r_ptr uintptr = (rgb + uintptr((func() int32 { + var r_ptr uintptr = rgb + uintptr(func() int32 { if swap_rb != 0 { return 2 } return 0 - }()))) - var g_ptr uintptr = (rgb + uintptr(1)) - var b_ptr uintptr = (rgb + uintptr((func() int32 { + }()) + var g_ptr uintptr = rgb + uintptr(1) + var b_ptr uintptr = rgb + uintptr(func() int32 { if swap_rb != 0 { return 0 } return 2 - }()))) + }()) var width int32 = (*WebPPicture)(unsafe.Pointer(picture)).width var height int32 = (*WebPPicture)(unsafe.Pointer(picture)).height if !((*WebPPicture)(unsafe.Pointer(picture)).use_argb != 0) { var a_ptr uintptr if import_alpha != 0 { - a_ptr = (rgb + uintptr(3)) + a_ptr = rgb + uintptr(3) } else { - a_ptr = (uintptr(0)) + a_ptr = uintptr(0) } return ImportYUVAFromRGBA(tls, r_ptr, g_ptr, b_ptr, a_ptr, step, rgb_stride, 0., 0, picture) @@ -30422,13 +30124,13 @@ func Import(tls *libc.TLS, picture uintptr, rgb uintptr, rgb_stride int32, step if import_alpha != 0 { // dst[] byte order is {a,r,g,b} for big-endian, {b,g,r,a} for little endian var dst uintptr = (*WebPPicture)(unsafe.Pointer(picture)).argb - var do_copy int32 = (libc.Bool32(((3 - (0)) == 3) && (swap_rb != 0))) + var do_copy int32 = libc.Bool32(3-0 == 3 && swap_rb != 0) if do_copy != 0 { for y = 0; y < height; y++ { - libc.Xmemcpy(tls, dst, rgb, (uint64(width * 4))) + libc.Xmemcpy(tls, dst, rgb, uint64(width*4)) rgb += uintptr(rgb_stride) - dst += 4 * (uintptr((*WebPPicture)(unsafe.Pointer(picture)).argb_stride)) + dst += 4 * uintptr((*WebPPicture)(unsafe.Pointer(picture)).argb_stride) } } else { for y = 0; y < height; y++ { @@ -30437,7 +30139,7 @@ func Import(tls *libc.TLS, picture uintptr, rgb uintptr, rgb_stride int32, step f func(*libc.TLS, uintptr, int32, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8LConvertBGRAToRGBA})).f(tls, rgb, width, dst) rgb += uintptr(rgb_stride) - dst += 4 * (uintptr((*WebPPicture)(unsafe.Pointer(picture)).argb_stride)) + dst += 4 * uintptr((*WebPPicture)(unsafe.Pointer(picture)).argb_stride) } } } else { @@ -30450,7 +30152,7 @@ func Import(tls *libc.TLS, picture uintptr, rgb uintptr, rgb_stride int32, step r_ptr += uintptr(rgb_stride) g_ptr += uintptr(rgb_stride) b_ptr += uintptr(rgb_stride) - dst += 4 * (uintptr((*WebPPicture)(unsafe.Pointer(picture)).argb_stride)) + dst += 4 * uintptr((*WebPPicture)(unsafe.Pointer(picture)).argb_stride) } } return 1 @@ -30459,42 +30161,42 @@ func Import(tls *libc.TLS, picture uintptr, rgb uintptr, rgb_stride int32, step // Public API func WebPPictureImportBGR(tls *libc.TLS, picture uintptr, rgb uintptr, rgb_stride int32) int32 { /* picture_csp_enc.c:1165:5: */ - if (picture != (uintptr(0))) && (rgb != (uintptr(0))) { + if picture != uintptr(0) && rgb != uintptr(0) { return Import(tls, picture, rgb, rgb_stride, 3, 1, 0) } return 0 } func WebPPictureImportBGRA(tls *libc.TLS, picture uintptr, rgba uintptr, rgba_stride int32) int32 { /* picture_csp_enc.c:1172:5: */ - if (picture != (uintptr(0))) && (rgba != (uintptr(0))) { + if picture != uintptr(0) && rgba != uintptr(0) { return Import(tls, picture, rgba, rgba_stride, 4, 1, 1) } return 0 } func WebPPictureImportBGRX(tls *libc.TLS, picture uintptr, rgba uintptr, rgba_stride int32) int32 { /* picture_csp_enc.c:1180:5: */ - if (picture != (uintptr(0))) && (rgba != (uintptr(0))) { + if picture != uintptr(0) && rgba != uintptr(0) { return Import(tls, picture, rgba, rgba_stride, 4, 1, 0) } return 0 } func WebPPictureImportRGB(tls *libc.TLS, picture uintptr, rgb uintptr, rgb_stride int32) int32 { /* picture_csp_enc.c:1189:5: */ - if (picture != (uintptr(0))) && (rgb != (uintptr(0))) { + if picture != uintptr(0) && rgb != uintptr(0) { return Import(tls, picture, rgb, rgb_stride, 3, 0, 0) } return 0 } func WebPPictureImportRGBA(tls *libc.TLS, picture uintptr, rgba uintptr, rgba_stride int32) int32 { /* picture_csp_enc.c:1196:5: */ - if (picture != (uintptr(0))) && (rgba != (uintptr(0))) { + if picture != uintptr(0) && rgba != uintptr(0) { return Import(tls, picture, rgba, rgba_stride, 4, 0, 1) } return 0 } func WebPPictureImportRGBX(tls *libc.TLS, picture uintptr, rgba uintptr, rgba_stride int32) int32 { /* picture_csp_enc.c:1203:5: */ - if (picture != (uintptr(0))) && (rgba != (uintptr(0))) { + if picture != uintptr(0) && rgba != uintptr(0) { return Import(tls, picture, rgba, rgba_stride, 4, 0, 0) } return 0 @@ -30544,10 +30246,10 @@ func DummyWriter(tls *libc.TLS, data uintptr, data_size size_t, picture uintptr) } func WebPPictureInitInternal(tls *libc.TLS, picture uintptr, version int32) int32 { /* picture_enc.c:34:5: */ - if ((version) >> 8) != (int32((0x020f)) >> 8) { + if version>>8 != int32(0x020f)>>8 { return 0 // caller/system version mismatch! } - if picture != (uintptr(0)) { + if picture != uintptr(0) { libc.Xmemset(tls, picture, 0, uint64(unsafe.Sizeof(WebPPicture{}))) (*WebPPicture)(unsafe.Pointer(picture)).writer = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 @@ -30560,15 +30262,15 @@ func WebPPictureInitInternal(tls *libc.TLS, picture uintptr, version int32) int3 //------------------------------------------------------------------------------ func WebPPictureResetBufferARGB(tls *libc.TLS, picture uintptr) { /* picture_enc.c:48:13: */ - (*WebPPicture)(unsafe.Pointer(picture)).memory_argb_ = (uintptr(0)) - (*WebPPicture)(unsafe.Pointer(picture)).argb = (uintptr(0)) + (*WebPPicture)(unsafe.Pointer(picture)).memory_argb_ = uintptr(0) + (*WebPPicture)(unsafe.Pointer(picture)).argb = uintptr(0) (*WebPPicture)(unsafe.Pointer(picture)).argb_stride = 0 } func WebPPictureResetBufferYUVA(tls *libc.TLS, picture uintptr) { /* picture_enc.c:54:13: */ - (*WebPPicture)(unsafe.Pointer(picture)).memory_ = (uintptr(0)) - (*WebPPicture)(unsafe.Pointer(picture)).y = libc.AssignPtrUintptr((picture + 24 /* &.u */), libc.AssignPtrUintptr((picture+32 /* &.v */), libc.AssignPtrUintptr((picture+48 /* &.a */), (uintptr(0))))) - (*WebPPicture)(unsafe.Pointer(picture)).y_stride = libc.AssignPtrInt32((picture + 44 /* &.uv_stride */), 0) + (*WebPPicture)(unsafe.Pointer(picture)).memory_ = uintptr(0) + (*WebPPicture)(unsafe.Pointer(picture)).y = libc.AssignPtrUintptr(picture+24, libc.AssignPtrUintptr(picture+32, libc.AssignPtrUintptr(picture+48, uintptr(0)))) + (*WebPPicture)(unsafe.Pointer(picture)).y_stride = libc.AssignPtrInt32(picture+44, 0) (*WebPPicture)(unsafe.Pointer(picture)).a_stride = 0 } @@ -30579,31 +30281,31 @@ func WebPPictureResetBuffers(tls *libc.TLS, picture uintptr) { /* picture_enc.c: func WebPPictureAllocARGB(tls *libc.TLS, picture uintptr, width int32, height int32) int32 { /* picture_enc.c:66:5: */ var memory uintptr - var argb_size uint64_t = (uint64_t(width) * uint64_t(height)) + var argb_size uint64_t = uint64_t(width) * uint64_t(height) WebPSafeFree(tls, (*WebPPicture)(unsafe.Pointer(picture)).memory_argb_) WebPPictureResetBufferARGB(tls, picture) - if (width <= 0) || (height <= 0) { + if width <= 0 || height <= 0 { return WebPEncodingSetError(tls, picture, VP8_ENC_ERROR_BAD_DIMENSION) } // allocate a new buffer. - memory = WebPSafeMalloc(tls, (argb_size + uint64(31)), uint64(unsafe.Sizeof(uint32_t(0)))) - if memory == (uintptr(0)) { + memory = WebPSafeMalloc(tls, argb_size+uint64(31), uint64(unsafe.Sizeof(uint32_t(0)))) + if memory == uintptr(0) { return WebPEncodingSetError(tls, picture, VP8_ENC_ERROR_OUT_OF_MEMORY) } (*WebPPicture)(unsafe.Pointer(picture)).memory_argb_ = memory - (*WebPPicture)(unsafe.Pointer(picture)).argb = (uintptr((uintptr_t((memory)) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) + (*WebPPicture)(unsafe.Pointer(picture)).argb = uintptr((uintptr_t(memory) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) (*WebPPicture)(unsafe.Pointer(picture)).argb_stride = width return 1 } func WebPPictureAllocYUVA(tls *libc.TLS, picture uintptr, width int32, height int32) int32 { /* picture_enc.c:89:5: */ - var uv_csp WebPEncCSP = (WebPEncCSP(int32((*WebPPicture)(unsafe.Pointer(picture)).colorspace) & WEBP_CSP_UV_MASK)) - var has_alpha int32 = (int32((*WebPPicture)(unsafe.Pointer(picture)).colorspace) & WEBP_CSP_ALPHA_BIT) + var uv_csp WebPEncCSP = WebPEncCSP(int32((*WebPPicture)(unsafe.Pointer(picture)).colorspace) & WEBP_CSP_UV_MASK) + var has_alpha int32 = int32((*WebPPicture)(unsafe.Pointer(picture)).colorspace) & WEBP_CSP_ALPHA_BIT var y_stride int32 = width - var uv_width int32 = (int32((int64_t(width) + int64(1)) >> 1)) - var uv_height int32 = (int32((int64_t(height) + int64(1)) >> 1)) + var uv_width int32 = int32((int64_t(width) + int64(1)) >> 1) + var uv_height int32 = int32((int64_t(height) + int64(1)) >> 1) var uv_stride int32 = uv_width var a_width int32 var a_stride int32 @@ -30628,19 +30330,19 @@ func WebPPictureAllocYUVA(tls *libc.TLS, picture uintptr, width int32, height in a_width = 0 } a_stride = a_width - y_size = (uint64_t(y_stride) * uint64_t(height)) - uv_size = (uint64_t(uv_stride) * uint64_t(uv_height)) - a_size = (uint64_t(a_stride) * uint64_t(height)) + y_size = uint64_t(y_stride) * uint64_t(height) + uv_size = uint64_t(uv_stride) * uint64_t(uv_height) + a_size = uint64_t(a_stride) * uint64_t(height) - total_size = ((y_size + a_size) + (uint64(2) * uv_size)) + total_size = y_size + a_size + uint64(2)*uv_size // Security and validation checks - if (((width <= 0) || (height <= 0)) || (uv_width <= 0)) || (uv_height <= 0) { // u/v param error + if width <= 0 || height <= 0 || uv_width <= 0 || uv_height <= 0 { // u/v param error return WebPEncodingSetError(tls, picture, VP8_ENC_ERROR_BAD_DIMENSION) } // allocate a new buffer. mem = WebPSafeMalloc(tls, total_size, uint64(unsafe.Sizeof(uint8_t(0)))) - if mem == (uintptr(0)) { + if mem == uintptr(0) { return WebPEncodingSetError(tls, picture, VP8_ENC_ERROR_OUT_OF_MEMORY) } @@ -30668,7 +30370,7 @@ func WebPPictureAllocYUVA(tls *libc.TLS, picture uintptr, width int32, height in } func WebPPictureAlloc(tls *libc.TLS, picture uintptr) int32 { /* picture_enc.c:153:5: */ - if picture != (uintptr(0)) { + if picture != uintptr(0) { var width int32 = (*WebPPicture)(unsafe.Pointer(picture)).width var height int32 = (*WebPPicture)(unsafe.Pointer(picture)).height @@ -30684,7 +30386,7 @@ func WebPPictureAlloc(tls *libc.TLS, picture uintptr) int32 { /* picture_enc.c:1 } func WebPPictureFree(tls *libc.TLS, picture uintptr) { /* picture_enc.c:169:6: */ - if picture != (uintptr(0)) { + if picture != uintptr(0) { WebPSafeFree(tls, (*WebPPicture)(unsafe.Pointer(picture)).memory_) WebPSafeFree(tls, (*WebPPicture)(unsafe.Pointer(picture)).memory_argb_) WebPPictureResetBuffers(tls, picture) @@ -30695,7 +30397,7 @@ func WebPPictureFree(tls *libc.TLS, picture uintptr) { /* picture_enc.c:169:6: * // WebPMemoryWriter: Write-to-memory func WebPMemoryWriterInit(tls *libc.TLS, writer uintptr) { /* picture_enc.c:180:6: */ - (*WebPMemoryWriter)(unsafe.Pointer(writer)).mem = (uintptr(0)) + (*WebPMemoryWriter)(unsafe.Pointer(writer)).mem = uintptr(0) (*WebPMemoryWriter)(unsafe.Pointer(writer)).size = uint64(0) (*WebPMemoryWriter)(unsafe.Pointer(writer)).max_size = uint64(0) } @@ -30703,13 +30405,13 @@ func WebPMemoryWriterInit(tls *libc.TLS, writer uintptr) { /* picture_enc.c:180: func WebPMemoryWrite(tls *libc.TLS, data uintptr, data_size size_t, picture uintptr) int32 { /* picture_enc.c:186:5: */ var w uintptr = (*WebPPicture)(unsafe.Pointer(picture)).custom_ptr var next_size uint64_t - if w == (uintptr(0)) { + if w == uintptr(0) { return 1 } - next_size = ((*WebPMemoryWriter)(unsafe.Pointer(w)).size + data_size) + next_size = (*WebPMemoryWriter)(unsafe.Pointer(w)).size + data_size if next_size > (*WebPMemoryWriter)(unsafe.Pointer(w)).max_size { var new_mem uintptr - var next_max_size uint64_t = (uint64_t(2 * uint64((*WebPMemoryWriter)(unsafe.Pointer(w)).max_size))) + var next_max_size uint64_t = uint64_t(2 * uint64((*WebPMemoryWriter)(unsafe.Pointer(w)).max_size)) if next_max_size < next_size { next_max_size = next_size } @@ -30717,7 +30419,7 @@ func WebPMemoryWrite(tls *libc.TLS, data uintptr, data_size size_t, picture uint next_max_size = 8192 } new_mem = WebPSafeMalloc(tls, next_max_size, uint64(1)) - if new_mem == (uintptr(0)) { + if new_mem == uintptr(0) { return 0 } if (*WebPMemoryWriter)(unsafe.Pointer(w)).size > uint64(0) { @@ -30729,16 +30431,16 @@ func WebPMemoryWrite(tls *libc.TLS, data uintptr, data_size size_t, picture uint (*WebPMemoryWriter)(unsafe.Pointer(w)).max_size = next_max_size } if data_size > uint64(0) { - libc.Xmemcpy(tls, ((*WebPMemoryWriter)(unsafe.Pointer(w)).mem + uintptr((*WebPMemoryWriter)(unsafe.Pointer(w)).size)), data, data_size) - *(*size_t)(unsafe.Pointer((w + 8 /* &.size */))) += (data_size) + libc.Xmemcpy(tls, (*WebPMemoryWriter)(unsafe.Pointer(w)).mem+uintptr((*WebPMemoryWriter)(unsafe.Pointer(w)).size), data, data_size) + *(*size_t)(unsafe.Pointer(w + 8)) += data_size } return 1 } func WebPMemoryWriterClear(tls *libc.TLS, writer uintptr) { /* picture_enc.c:218:6: */ - if writer != (uintptr(0)) { + if writer != uintptr(0) { WebPSafeFree(tls, (*WebPMemoryWriter)(unsafe.Pointer(writer)).mem) - (*WebPMemoryWriter)(unsafe.Pointer(writer)).mem = (uintptr(0)) + (*WebPMemoryWriter)(unsafe.Pointer(writer)).mem = uintptr(0) (*WebPMemoryWriter)(unsafe.Pointer(writer)).size = uint64(0) (*WebPMemoryWriter)(unsafe.Pointer(writer)).max_size = uint64(0) } @@ -30761,31 +30463,31 @@ func Encode(tls *libc.TLS, rgba uintptr, width int32, height int32, stride int32 var ok int32 - if output == (uintptr(0)) { + if output == uintptr(0) { return uint64(0) } - if !(WebPConfigPreset(tls, (bp) /* &config */, WEBP_PRESET_DEFAULT, quality_factor) != 0) || !(WebPPictureInit(tls, (bp+120) /* &pic */) != 0) { + if !(WebPConfigPreset(tls, bp, WEBP_PRESET_DEFAULT, quality_factor) != 0) || !(WebPPictureInit(tls, bp+120) != 0) { return uint64(0) // shouldn't happen, except if system installation is broken } - (*WebPConfig)(unsafe.Pointer(bp /* &config */)).lossless = libc.BoolInt32(!(!(lossless != 0))) - (*WebPPicture)(unsafe.Pointer(bp + 120 /* &pic */)).use_argb = libc.BoolInt32(!(!(lossless != 0))) + (*WebPConfig)(unsafe.Pointer(bp /* &config */)).lossless = libc.BoolInt32(!!(lossless != 0)) + (*WebPPicture)(unsafe.Pointer(bp + 120 /* &pic */)).use_argb = libc.BoolInt32(!!(lossless != 0)) (*WebPPicture)(unsafe.Pointer(bp + 120 /* &pic */)).width = width (*WebPPicture)(unsafe.Pointer(bp + 120 /* &pic */)).height = height (*WebPPicture)(unsafe.Pointer(bp + 120 /* &pic */)).writer = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 }{WebPMemoryWrite})) - (*WebPPicture)(unsafe.Pointer(bp + 120 /* &pic */)).custom_ptr = (bp + 376) /* &wrt */ - WebPMemoryWriterInit(tls, (bp + 376) /* &wrt */) + (*WebPPicture)(unsafe.Pointer(bp + 120 /* &pic */)).custom_ptr = bp + 376 /* &wrt */ + WebPMemoryWriterInit(tls, bp+376 /* &wrt */) - ok = (libc.Bool32(((*struct { + ok = libc.Bool32((*struct { f func(*libc.TLS, uintptr, uintptr, int32) int32 - })(unsafe.Pointer(&struct{ uintptr }{import1})).f(tls, (bp+120) /* &pic */, rgba, stride) != 0) && (WebPEncode(tls, (bp) /* &config */, (bp+120) /* &pic */) != 0))) - WebPPictureFree(tls, (bp + 120) /* &pic */) + })(unsafe.Pointer(&struct{ uintptr }{import1})).f(tls, bp+120, rgba, stride) != 0 && WebPEncode(tls, bp, bp+120) != 0) + WebPPictureFree(tls, bp+120) if !(ok != 0) { - WebPMemoryWriterClear(tls, (bp + 376) /* &wrt */) - *(*uintptr)(unsafe.Pointer(output)) = (uintptr(0)) + WebPMemoryWriterClear(tls, bp+376) + *(*uintptr)(unsafe.Pointer(output)) = uintptr(0) return uint64(0) } *(*uintptr)(unsafe.Pointer(output)) = (*WebPMemoryWriter)(unsafe.Pointer(bp + 376 /* &wrt */)).mem @@ -30872,45 +30574,45 @@ func AccumulateLSIM(tls *libc.TLS, src uintptr, src_stride int32, ref uintptr, r var total_sse float64 = 0. for y = 0; y < h; y++ { var y_0 int32 - if (y - 2) < 0 { + if y-2 < 0 { y_0 = 0 } else { - y_0 = (y - 2) + y_0 = y - 2 } var y_1 int32 - if ((y + 2) + 1) >= h { + if y+2+1 >= h { y_1 = h } else { - y_1 = ((y + 2) + 1) + y_1 = y + 2 + 1 } for x = 0; x < w; x++ { var x_0 int32 - if (x - 2) < 0 { + if x-2 < 0 { x_0 = 0 } else { - x_0 = (x - 2) + x_0 = x - 2 } var x_1 int32 - if ((x + 2) + 1) >= w { + if x+2+1 >= w { x_1 = w } else { - x_1 = ((x + 2) + 1) + x_1 = x + 2 + 1 } - var best_sse float64 = (float64(255.) * 255.) - var value float64 = float64(*(*uint8_t)(unsafe.Pointer(ref + uintptr(((y * ref_stride) + x))))) + var best_sse float64 = float64(255.) * 255. + var value float64 = float64(*(*uint8_t)(unsafe.Pointer(ref + uintptr(y*ref_stride+x)))) var i int32 var j int32 for j = y_0; j < y_1; j++ { - var s uintptr = (src + uintptr((j * src_stride))) + var s uintptr = src + uintptr(j*src_stride) for i = x_0; i < x_1; i++ { - var diff float64 = (float64(*(*uint8_t)(unsafe.Pointer(s + uintptr(i)))) - value) - var sse float64 = (diff * diff) + var diff float64 = float64(*(*uint8_t)(unsafe.Pointer(s + uintptr(i)))) - value + var sse float64 = diff * diff if sse < best_sse { best_sse = sse } } } - total_sse = total_sse + (best_sse) + total_sse = total_sse + best_sse } } return total_sse @@ -30920,9 +30622,9 @@ func AccumulateSSE(tls *libc.TLS, src uintptr, src_stride int32, ref uintptr, re var y int32 var total_sse float64 = 0. for y = 0; y < h; y++ { - total_sse = total_sse + (float64((*struct { + total_sse = total_sse + float64((*struct { f func(*libc.TLS, uintptr, uintptr, int32) uint32_t - })(unsafe.Pointer(&struct{ uintptr }{VP8AccumulateSSE})).f(tls, src, ref, w))) + })(unsafe.Pointer(&struct{ uintptr }{VP8AccumulateSSE})).f(tls, src, ref, w)) src += uintptr(src_stride) ref += uintptr(ref_stride) } @@ -30938,48 +30640,48 @@ func AccumulateSSIM(tls *libc.TLS, src uintptr, src_stride int32, ref uintptr, r } else { w0 = 3 } - var w1 int32 = ((w - 3) - 1) + var w1 int32 = w - 3 - 1 var h0 int32 if h < 3 { h0 = h } else { h0 = 3 } - var h1 int32 = ((h - 3) - 1) + var h1 int32 = h - 3 - 1 var x int32 var y int32 var sum float64 = 0. for y = 0; y < h0; y++ { for x = 0; x < w; x++ { - sum = sum + ((*struct { + sum = sum + (*struct { f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32, int32, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, src, src_stride, ref, ref_stride, x, y, w, h)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, src, src_stride, ref, ref_stride, x, y, w, h) } } for ; y < h1; y++ { for x = 0; x < w0; x++ { - sum = sum + ((*struct { + sum = sum + (*struct { f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32, int32, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, src, src_stride, ref, ref_stride, x, y, w, h)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, src, src_stride, ref, ref_stride, x, y, w, h) } for ; x < w1; x++ { - var off1 int32 = ((x - 3) + ((y - 3) * src_stride)) - var off2 int32 = ((x - 3) + ((y - 3) * ref_stride)) - sum = sum + ((*struct { + var off1 int32 = x - 3 + (y-3)*src_stride + var off2 int32 = x - 3 + (y-3)*ref_stride + sum = sum + (*struct { f func(*libc.TLS, uintptr, int32, uintptr, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGet})).f(tls, (src + uintptr(off1)), src_stride, (ref + uintptr(off2)), ref_stride)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGet})).f(tls, src+uintptr(off1), src_stride, ref+uintptr(off2), ref_stride) } for ; x < w; x++ { - sum = sum + ((*struct { + sum = sum + (*struct { f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32, int32, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, src, src_stride, ref, ref_stride, x, y, w, h)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, src, src_stride, ref, ref_stride, x, y, w, h) } } for ; y < h; y++ { for x = 0; x < w; x++ { - sum = sum + ((*struct { + sum = sum + (*struct { f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32, int32, int32) float64 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, src, src_stride, ref, ref_stride, x, y, w, h)) + })(unsafe.Pointer(&struct{ uintptr }{VP8SSIMGetClipped})).f(tls, src, src_stride, ref, ref_stride, x, y, w, h) } } return sum @@ -30992,26 +30694,26 @@ func AccumulateSSIM(tls *libc.TLS, src uintptr, src_stride int32, ref uintptr, r var kMinDistortion_dB float64 = 99. /* picture_psnr_enc.c:120:21 */ func GetPSNR1(tls *libc.TLS, v float64, size float64) float64 { /* picture_psnr_enc.c:122:15: */ - if (v > 0.) && (size > 0.) { - return (-4.3429448 * libc.Xlog(tls, (v/((size*float64(255))*255.)))) + if v > 0. && size > 0. { + return -4.3429448 * libc.Xlog(tls, v/(size*float64(255)*255.)) } return kMinDistortion_dB } func GetLogSSIM(tls *libc.TLS, v float64, size float64) float64 { /* picture_psnr_enc.c:127:15: */ if size > 0. { - v = (v / size) + v = v / size } else { v = 1. } if v < 1. { - return (-10.0 * libc.Xlog10(tls, (1.-v))) + return -10.0 * libc.Xlog10(tls, 1.-v) } return kMinDistortion_dB } func WebPPlaneDistortion(tls *libc.TLS, src uintptr, src_stride size_t, ref uintptr, ref_stride size_t, width int32, height int32, x_step size_t, type1 int32, distortion uintptr, result uintptr) int32 { /* picture_psnr_enc.c:132:5: */ - var allocated uintptr = (uintptr(0)) + var allocated uintptr = uintptr(0) var metric AccumulateFunc if type1 == 0 { metric = *(*uintptr)(unsafe.Pointer(&struct { @@ -31028,7 +30730,7 @@ func WebPPlaneDistortion(tls *libc.TLS, src uintptr, src_stride size_t, ref uint }{AccumulateLSIM})) } } - if (((((src == (uintptr(0))) || (ref == (uintptr(0)))) || (src_stride < (x_step * size_t(width)))) || (ref_stride < (x_step * size_t(width)))) || (result == (uintptr(0)))) || (distortion == (uintptr(0))) { + if src == uintptr(0) || ref == uintptr(0) || src_stride < x_step*size_t(width) || ref_stride < x_step*size_t(width) || result == uintptr(0) || distortion == uintptr(0) { return 0 } @@ -31038,16 +30740,16 @@ func WebPPlaneDistortion(tls *libc.TLS, src uintptr, src_stride size_t, ref uint var y int32 var tmp1 uintptr var tmp2 uintptr - allocated = WebPSafeMalloc(tls, (uint64((2 * uint64(width)) * uint64(height))), uint64(unsafe.Sizeof(uint8_t(0)))) - if allocated == (uintptr(0)) { + allocated = WebPSafeMalloc(tls, uint64(2*uint64(width)*uint64(height)), uint64(unsafe.Sizeof(uint8_t(0)))) + if allocated == uintptr(0) { return 0 } tmp1 = allocated - tmp2 = (tmp1 + uintptr((size_t(width) * size_t(height)))) + tmp2 = tmp1 + uintptr(size_t(width)*size_t(height)) for y = 0; y < height; y++ { for x = 0; x < width; x++ { - *(*uint8_t)(unsafe.Pointer(tmp1 + uintptr((x + (y * width))))) = *(*uint8_t)(unsafe.Pointer(src + uintptr(((size_t(x) * x_step) + (size_t(y) * src_stride))))) - *(*uint8_t)(unsafe.Pointer(tmp2 + uintptr((x + (y * width))))) = *(*uint8_t)(unsafe.Pointer(ref + uintptr(((size_t(x) * x_step) + (size_t(y) * ref_stride))))) + *(*uint8_t)(unsafe.Pointer(tmp1 + uintptr(x+y*width))) = *(*uint8_t)(unsafe.Pointer(src + uintptr(size_t(x)*x_step+size_t(y)*src_stride))) + *(*uint8_t)(unsafe.Pointer(tmp2 + uintptr(x+y*width))) = *(*uint8_t)(unsafe.Pointer(ref + uintptr(size_t(x)*x_step+size_t(y)*ref_stride))) } } src = tmp1 @@ -31060,9 +30762,9 @@ func WebPPlaneDistortion(tls *libc.TLS, src uintptr, src_stride size_t, ref uint *(*float32)(unsafe.Pointer(result)) = func() float32 { if type1 == 1 { - return float32(GetLogSSIM(tls, float64(*(*float32)(unsafe.Pointer(distortion))), (float64(width) * float64(height)))) + return float32(GetLogSSIM(tls, float64(*(*float32)(unsafe.Pointer(distortion))), float64(width)*float64(height))) } - return float32(GetPSNR1(tls, float64(*(*float32)(unsafe.Pointer(distortion))), (float64(width) * float64(height)))) + return float32(GetPSNR1(tls, float64(*(*float32)(unsafe.Pointer(distortion))), float64(width)*float64(height))) }() return 1 } @@ -31090,7 +30792,7 @@ func WebPPictureDistortion(tls *libc.TLS, src uintptr, ref uintptr, type1 int32, ok = 0 total_size = 0. total_distortion = 0. - if !(((((src == (uintptr(0))) || (ref == (uintptr(0)))) || ((*WebPPicture)(unsafe.Pointer(src)).width != (*WebPPicture)(unsafe.Pointer(ref)).width)) || ((*WebPPicture)(unsafe.Pointer(src)).height != (*WebPPicture)(unsafe.Pointer(ref)).height)) || (results == (uintptr(0)))) { + if !(src == uintptr(0) || ref == uintptr(0) || (*WebPPicture)(unsafe.Pointer(src)).width != (*WebPPicture)(unsafe.Pointer(ref)).width || (*WebPPicture)(unsafe.Pointer(src)).height != (*WebPPicture)(unsafe.Pointer(ref)).height || results == uintptr(0)) { goto __1 } return 0 @@ -31098,7 +30800,7 @@ __1: ; VP8SSIMDspInit(tls) - if !(!(WebPPictureInit(tls, (bp) /* &p0 */) != 0) || !(WebPPictureInit(tls, (bp+256) /* &p1 */) != 0)) { + if !(!(WebPPictureInit(tls, bp) != 0) || !(WebPPictureInit(tls, bp+256) != 0)) { goto __2 } return 0 @@ -31106,13 +30808,13 @@ __2: ; w = (*WebPPicture)(unsafe.Pointer(src)).width h = (*WebPPicture)(unsafe.Pointer(src)).height - if !(!(WebPPictureView(tls, src, 0, 0, w, h, (bp) /* &p0 */) != 0)) { + if !!(WebPPictureView(tls, src, 0, 0, w, h, bp) != 0) { goto __3 } goto Error __3: ; - if !(!(WebPPictureView(tls, ref, 0, 0, w, h, (bp+256) /* &p1 */) != 0)) { + if !!(WebPPictureView(tls, ref, 0, 0, w, h, bp+256) != 0) { goto __4 } goto Error @@ -31120,13 +30822,13 @@ __4: ; // We always measure distortion in ARGB space. - if !(((*WebPPicture)(unsafe.Pointer(bp /* &p0 */)).use_argb == 0) && !(WebPPictureYUVAToARGB(tls, (bp) /* &p0 */) != 0)) { + if !((*WebPPicture)(unsafe.Pointer(bp)).use_argb == 0 && !(WebPPictureYUVAToARGB(tls, bp) != 0)) { goto __5 } goto Error __5: ; - if !(((*WebPPicture)(unsafe.Pointer(bp+256 /* &p1 */)).use_argb == 0) && !(WebPPictureYUVAToARGB(tls, (bp+256) /* &p1 */) != 0)) { + if !((*WebPPicture)(unsafe.Pointer(bp+256)).use_argb == 0 && !(WebPPictureYUVAToARGB(tls, bp+256) != 0)) { goto __6 } goto Error @@ -31137,20 +30839,20 @@ __7: if !(c < 4) { goto __9 } - stride0 = (uint64(4) * size_t((*WebPPicture)(unsafe.Pointer(bp /* &p0 */)).argb_stride)) - stride1 = (uint64(4) * size_t((*WebPPicture)(unsafe.Pointer(bp+256 /* &p1 */)).argb_stride)) + stride0 = uint64(4) * size_t((*WebPPicture)(unsafe.Pointer(bp)).argb_stride) + stride1 = uint64(4) * size_t((*WebPPicture)(unsafe.Pointer(bp+256)).argb_stride) // results are reported as BGRA - offset = (c ^ 0) - if !(!(WebPPlaneDistortion(tls, ((*WebPPicture)(unsafe.Pointer(bp /* &p0 */)).argb+uintptr(offset)), stride0, - ((*WebPPicture)(unsafe.Pointer(bp+256 /* &p1 */)).argb+uintptr(offset)), stride1, - w, h, uint64(4), type1, (bp+512) /* &distortion */, (results+uintptr(c)*4)) != 0)) { + offset = c ^ 0 + if !!(WebPPlaneDistortion(tls, (*WebPPicture)(unsafe.Pointer(bp)).argb+uintptr(offset), stride0, + (*WebPPicture)(unsafe.Pointer(bp+256)).argb+uintptr(offset), stride1, + w, h, uint64(4), type1, bp+512, results+uintptr(c)*4) != 0) { goto __10 } goto Error __10: ; - total_distortion = total_distortion + (float64(*(*float32)(unsafe.Pointer(bp + 512 /* distortion */)))) - total_size = total_size + (float64(w * h)) + total_distortion = total_distortion + float64(*(*float32)(unsafe.Pointer(bp + 512))) + total_size = total_size + float64(w*h) goto __8 __8: c++ @@ -31168,8 +30870,8 @@ __9: ok = 1 Error: - WebPPictureFree(tls, (bp) /* &p0 */) - WebPPictureFree(tls, (bp + 256) /* &p1 */) + WebPPictureFree(tls, bp) + WebPPictureFree(tls, bp+256) return ok } @@ -31202,31 +30904,31 @@ func PictureGrabSpecs(tls *libc.TLS, src uintptr, dst uintptr) { /* picture_resc // Adjust top-left corner to chroma sample position. func SnapTopLeftPosition(tls *libc.TLS, pic uintptr, left uintptr, top uintptr) { /* picture_rescale_enc.c:39:13: */ if !((*WebPPicture)(unsafe.Pointer(pic)).use_argb != 0) { - *(*int32)(unsafe.Pointer(left)) &= (libc.CplInt32(1)) - *(*int32)(unsafe.Pointer(top)) &= (libc.CplInt32(1)) + *(*int32)(unsafe.Pointer(left)) &= libc.CplInt32(1) + *(*int32)(unsafe.Pointer(top)) &= libc.CplInt32(1) } } // Adjust top-left corner and verify that the sub-rectangle is valid. func AdjustAndCheckRectangle(tls *libc.TLS, pic uintptr, left uintptr, top uintptr, width int32, height int32) int32 { /* picture_rescale_enc.c:48:12: */ SnapTopLeftPosition(tls, pic, left, top) - if ((*(*int32)(unsafe.Pointer(left))) < 0) || ((*(*int32)(unsafe.Pointer(top))) < 0) { + if *(*int32)(unsafe.Pointer(left)) < 0 || *(*int32)(unsafe.Pointer(top)) < 0 { return 0 } - if (width <= 0) || (height <= 0) { + if width <= 0 || height <= 0 { return 0 } - if ((*(*int32)(unsafe.Pointer(left))) + width) > (*WebPPicture)(unsafe.Pointer(pic)).width { + if *(*int32)(unsafe.Pointer(left))+width > (*WebPPicture)(unsafe.Pointer(pic)).width { return 0 } - if ((*(*int32)(unsafe.Pointer(top))) + height) > (*WebPPicture)(unsafe.Pointer(pic)).height { + if *(*int32)(unsafe.Pointer(top))+height > (*WebPPicture)(unsafe.Pointer(pic)).height { return 0 } return 1 } func WebPPictureCopy(tls *libc.TLS, src uintptr, dst uintptr) int32 { /* picture_rescale_enc.c:59:5: */ - if (src == (uintptr(0))) || (dst == (uintptr(0))) { + if src == uintptr(0) || dst == uintptr(0) { return 0 } if src == dst { @@ -31242,29 +30944,29 @@ func WebPPictureCopy(tls *libc.TLS, src uintptr, dst uintptr) int32 { /* picture WebPCopyPlane(tls, (*WebPPicture)(unsafe.Pointer(src)).y, (*WebPPicture)(unsafe.Pointer(src)).y_stride, (*WebPPicture)(unsafe.Pointer(dst)).y, (*WebPPicture)(unsafe.Pointer(dst)).y_stride, (*WebPPicture)(unsafe.Pointer(dst)).width, (*WebPPicture)(unsafe.Pointer(dst)).height) WebPCopyPlane(tls, (*WebPPicture)(unsafe.Pointer(src)).u, (*WebPPicture)(unsafe.Pointer(src)).uv_stride, (*WebPPicture)(unsafe.Pointer(dst)).u, (*WebPPicture)(unsafe.Pointer(dst)).uv_stride, - ((((*WebPPicture)(unsafe.Pointer(dst)).width) + 1) >> 1), ((((*WebPPicture)(unsafe.Pointer(dst)).height) + 1) >> 1)) + ((*WebPPicture)(unsafe.Pointer(dst)).width+1)>>1, ((*WebPPicture)(unsafe.Pointer(dst)).height+1)>>1) WebPCopyPlane(tls, (*WebPPicture)(unsafe.Pointer(src)).v, (*WebPPicture)(unsafe.Pointer(src)).uv_stride, (*WebPPicture)(unsafe.Pointer(dst)).v, (*WebPPicture)(unsafe.Pointer(dst)).uv_stride, - ((((*WebPPicture)(unsafe.Pointer(dst)).width) + 1) >> 1), ((((*WebPPicture)(unsafe.Pointer(dst)).height) + 1) >> 1)) - if (*WebPPicture)(unsafe.Pointer(dst)).a != (uintptr(0)) { + ((*WebPPicture)(unsafe.Pointer(dst)).width+1)>>1, ((*WebPPicture)(unsafe.Pointer(dst)).height+1)>>1) + if (*WebPPicture)(unsafe.Pointer(dst)).a != uintptr(0) { WebPCopyPlane(tls, (*WebPPicture)(unsafe.Pointer(src)).a, (*WebPPicture)(unsafe.Pointer(src)).a_stride, (*WebPPicture)(unsafe.Pointer(dst)).a, (*WebPPicture)(unsafe.Pointer(dst)).a_stride, (*WebPPicture)(unsafe.Pointer(dst)).width, (*WebPPicture)(unsafe.Pointer(dst)).height) } } else { - WebPCopyPlane(tls, (*WebPPicture)(unsafe.Pointer(src)).argb, (4 * (*WebPPicture)(unsafe.Pointer(src)).argb_stride), - (*WebPPicture)(unsafe.Pointer(dst)).argb, (4 * (*WebPPicture)(unsafe.Pointer(dst)).argb_stride), - (4 * (*WebPPicture)(unsafe.Pointer(dst)).width), (*WebPPicture)(unsafe.Pointer(dst)).height) + WebPCopyPlane(tls, (*WebPPicture)(unsafe.Pointer(src)).argb, 4*(*WebPPicture)(unsafe.Pointer(src)).argb_stride, + (*WebPPicture)(unsafe.Pointer(dst)).argb, 4*(*WebPPicture)(unsafe.Pointer(dst)).argb_stride, + 4*(*WebPPicture)(unsafe.Pointer(dst)).width, (*WebPPicture)(unsafe.Pointer(dst)).height) } return 1 } func WebPPictureIsView(tls *libc.TLS, picture uintptr) int32 { /* picture_rescale_enc.c:85:5: */ - if picture == (uintptr(0)) { + if picture == uintptr(0) { return 0 } if (*WebPPicture)(unsafe.Pointer(picture)).use_argb != 0 { - return (libc.Bool32((*WebPPicture)(unsafe.Pointer(picture)).memory_argb_ == (uintptr(0)))) + return libc.Bool32((*WebPPicture)(unsafe.Pointer(picture)).memory_argb_ == uintptr(0)) } - return (libc.Bool32((*WebPPicture)(unsafe.Pointer(picture)).memory_ == (uintptr(0)))) + return libc.Bool32((*WebPPicture)(unsafe.Pointer(picture)).memory_ == uintptr(0)) } func WebPPictureView(tls *libc.TLS, src uintptr, left int32, top int32, width int32, height int32, dst uintptr) int32 { /* picture_rescale_enc.c:93:5: */ @@ -31273,12 +30975,12 @@ func WebPPictureView(tls *libc.TLS, src uintptr, left int32, top int32, width in *(*int32)(unsafe.Pointer(bp)) = left *(*int32)(unsafe.Pointer(bp + 4)) = top - if (src == (uintptr(0))) || (dst == (uintptr(0))) { + if src == uintptr(0) || dst == uintptr(0) { return 0 } // verify rectangle position. - if !(AdjustAndCheckRectangle(tls, src, (bp) /* &left */, (bp+4) /* &top */, width, height) != 0) { + if !(AdjustAndCheckRectangle(tls, src, bp, bp+4, width, height) != 0) { return 0 } @@ -31288,17 +30990,17 @@ func WebPPictureView(tls *libc.TLS, src uintptr, left int32, top int32, width in (*WebPPicture)(unsafe.Pointer(dst)).width = width (*WebPPicture)(unsafe.Pointer(dst)).height = height if !((*WebPPicture)(unsafe.Pointer(src)).use_argb != 0) { - (*WebPPicture)(unsafe.Pointer(dst)).y = (((*WebPPicture)(unsafe.Pointer(src)).y + uintptr((*(*int32)(unsafe.Pointer(bp + 4 /* top */)) * (*WebPPicture)(unsafe.Pointer(src)).y_stride))) + uintptr(*(*int32)(unsafe.Pointer(bp /* left */)))) - (*WebPPicture)(unsafe.Pointer(dst)).u = (((*WebPPicture)(unsafe.Pointer(src)).u + uintptr(((*(*int32)(unsafe.Pointer(bp + 4 /* top */)) >> 1) * (*WebPPicture)(unsafe.Pointer(src)).uv_stride))) + uintptr((*(*int32)(unsafe.Pointer(bp /* left */)) >> 1))) - (*WebPPicture)(unsafe.Pointer(dst)).v = (((*WebPPicture)(unsafe.Pointer(src)).v + uintptr(((*(*int32)(unsafe.Pointer(bp + 4 /* top */)) >> 1) * (*WebPPicture)(unsafe.Pointer(src)).uv_stride))) + uintptr((*(*int32)(unsafe.Pointer(bp /* left */)) >> 1))) + (*WebPPicture)(unsafe.Pointer(dst)).y = (*WebPPicture)(unsafe.Pointer(src)).y + uintptr(*(*int32)(unsafe.Pointer(bp + 4))*(*WebPPicture)(unsafe.Pointer(src)).y_stride) + uintptr(*(*int32)(unsafe.Pointer(bp))) + (*WebPPicture)(unsafe.Pointer(dst)).u = (*WebPPicture)(unsafe.Pointer(src)).u + uintptr(*(*int32)(unsafe.Pointer(bp + 4))>>1*(*WebPPicture)(unsafe.Pointer(src)).uv_stride) + uintptr(*(*int32)(unsafe.Pointer(bp))>>1) + (*WebPPicture)(unsafe.Pointer(dst)).v = (*WebPPicture)(unsafe.Pointer(src)).v + uintptr(*(*int32)(unsafe.Pointer(bp + 4))>>1*(*WebPPicture)(unsafe.Pointer(src)).uv_stride) + uintptr(*(*int32)(unsafe.Pointer(bp))>>1) (*WebPPicture)(unsafe.Pointer(dst)).y_stride = (*WebPPicture)(unsafe.Pointer(src)).y_stride (*WebPPicture)(unsafe.Pointer(dst)).uv_stride = (*WebPPicture)(unsafe.Pointer(src)).uv_stride - if (*WebPPicture)(unsafe.Pointer(src)).a != (uintptr(0)) { - (*WebPPicture)(unsafe.Pointer(dst)).a = (((*WebPPicture)(unsafe.Pointer(src)).a + uintptr((*(*int32)(unsafe.Pointer(bp + 4 /* top */)) * (*WebPPicture)(unsafe.Pointer(src)).a_stride))) + uintptr(*(*int32)(unsafe.Pointer(bp /* left */)))) + if (*WebPPicture)(unsafe.Pointer(src)).a != uintptr(0) { + (*WebPPicture)(unsafe.Pointer(dst)).a = (*WebPPicture)(unsafe.Pointer(src)).a + uintptr(*(*int32)(unsafe.Pointer(bp + 4))*(*WebPPicture)(unsafe.Pointer(src)).a_stride) + uintptr(*(*int32)(unsafe.Pointer(bp))) (*WebPPicture)(unsafe.Pointer(dst)).a_stride = (*WebPPicture)(unsafe.Pointer(src)).a_stride } } else { - (*WebPPicture)(unsafe.Pointer(dst)).argb = (((*WebPPicture)(unsafe.Pointer(src)).argb + uintptr((*(*int32)(unsafe.Pointer(bp + 4 /* top */))*(*WebPPicture)(unsafe.Pointer(src)).argb_stride))*4) + uintptr(*(*int32)(unsafe.Pointer(bp /* left */)))*4) + (*WebPPicture)(unsafe.Pointer(dst)).argb = (*WebPPicture)(unsafe.Pointer(src)).argb + uintptr(*(*int32)(unsafe.Pointer(bp + 4))*(*WebPPicture)(unsafe.Pointer(src)).argb_stride)*4 + uintptr(*(*int32)(unsafe.Pointer(bp)))*4 (*WebPPicture)(unsafe.Pointer(dst)).argb_stride = (*WebPPicture)(unsafe.Pointer(src)).argb_stride } return 1 @@ -31315,39 +31017,39 @@ func WebPPictureCrop(tls *libc.TLS, pic uintptr, left int32, top int32, width in // var tmp WebPPicture at bp+8, 256 - if pic == (uintptr(0)) { + if pic == uintptr(0) { return 0 } - if !(AdjustAndCheckRectangle(tls, pic, (bp) /* &left */, (bp+4) /* &top */, width, height) != 0) { + if !(AdjustAndCheckRectangle(tls, pic, bp, bp+4, width, height) != 0) { return 0 } - PictureGrabSpecs(tls, pic, (bp + 8) /* &tmp */) + PictureGrabSpecs(tls, pic, bp+8) (*WebPPicture)(unsafe.Pointer(bp + 8 /* &tmp */)).width = width (*WebPPicture)(unsafe.Pointer(bp + 8 /* &tmp */)).height = height - if !(WebPPictureAlloc(tls, (bp+8) /* &tmp */) != 0) { + if !(WebPPictureAlloc(tls, bp+8) != 0) { return 0 } if !((*WebPPicture)(unsafe.Pointer(pic)).use_argb != 0) { - var y_offset int32 = ((*(*int32)(unsafe.Pointer(bp + 4 /* top */)) * (*WebPPicture)(unsafe.Pointer(pic)).y_stride) + *(*int32)(unsafe.Pointer(bp /* left */))) - var uv_offset int32 = (((*(*int32)(unsafe.Pointer(bp + 4 /* top */)) / 2) * (*WebPPicture)(unsafe.Pointer(pic)).uv_stride) + (*(*int32)(unsafe.Pointer(bp /* left */)) / 2)) - WebPCopyPlane(tls, ((*WebPPicture)(unsafe.Pointer(pic)).y + uintptr(y_offset)), (*WebPPicture)(unsafe.Pointer(pic)).y_stride, + var y_offset int32 = *(*int32)(unsafe.Pointer(bp + 4))*(*WebPPicture)(unsafe.Pointer(pic)).y_stride + *(*int32)(unsafe.Pointer(bp)) + var uv_offset int32 = *(*int32)(unsafe.Pointer(bp + 4))/2*(*WebPPicture)(unsafe.Pointer(pic)).uv_stride + *(*int32)(unsafe.Pointer(bp))/2 + WebPCopyPlane(tls, (*WebPPicture)(unsafe.Pointer(pic)).y+uintptr(y_offset), (*WebPPicture)(unsafe.Pointer(pic)).y_stride, (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).y, (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).y_stride, width, height) - WebPCopyPlane(tls, ((*WebPPicture)(unsafe.Pointer(pic)).u + uintptr(uv_offset)), (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, - (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).u, (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).uv_stride, (((width) + 1) >> 1), (((height) + 1) >> 1)) - WebPCopyPlane(tls, ((*WebPPicture)(unsafe.Pointer(pic)).v + uintptr(uv_offset)), (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, - (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).v, (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).uv_stride, (((width) + 1) >> 1), (((height) + 1) >> 1)) - - if (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).a != (uintptr(0)) { - var a_offset int32 = ((*(*int32)(unsafe.Pointer(bp + 4 /* top */)) * (*WebPPicture)(unsafe.Pointer(pic)).a_stride) + *(*int32)(unsafe.Pointer(bp /* left */))) - WebPCopyPlane(tls, ((*WebPPicture)(unsafe.Pointer(pic)).a + uintptr(a_offset)), (*WebPPicture)(unsafe.Pointer(pic)).a_stride, + WebPCopyPlane(tls, (*WebPPicture)(unsafe.Pointer(pic)).u+uintptr(uv_offset), (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, + (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).u, (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).uv_stride, (width+1)>>1, (height+1)>>1) + WebPCopyPlane(tls, (*WebPPicture)(unsafe.Pointer(pic)).v+uintptr(uv_offset), (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, + (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).v, (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).uv_stride, (width+1)>>1, (height+1)>>1) + + if (*WebPPicture)(unsafe.Pointer(bp+8)).a != uintptr(0) { + var a_offset int32 = *(*int32)(unsafe.Pointer(bp + 4))*(*WebPPicture)(unsafe.Pointer(pic)).a_stride + *(*int32)(unsafe.Pointer(bp)) + WebPCopyPlane(tls, (*WebPPicture)(unsafe.Pointer(pic)).a+uintptr(a_offset), (*WebPPicture)(unsafe.Pointer(pic)).a_stride, (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).a, (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).a_stride, width, height) } } else { - var src uintptr = (((*WebPPicture)(unsafe.Pointer(pic)).argb + uintptr((*(*int32)(unsafe.Pointer(bp + 4 /* top */))*(*WebPPicture)(unsafe.Pointer(pic)).argb_stride))*4) + uintptr(*(*int32)(unsafe.Pointer(bp /* left */)))*4) - WebPCopyPlane(tls, src, ((*WebPPicture)(unsafe.Pointer(pic)).argb_stride * 4), (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).argb, - ((*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).argb_stride * 4), (width * 4), height) + var src uintptr = (*WebPPicture)(unsafe.Pointer(pic)).argb + uintptr(*(*int32)(unsafe.Pointer(bp + 4))*(*WebPPicture)(unsafe.Pointer(pic)).argb_stride)*4 + uintptr(*(*int32)(unsafe.Pointer(bp)))*4 + WebPCopyPlane(tls, src, (*WebPPicture)(unsafe.Pointer(pic)).argb_stride*4, (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).argb, + (*WebPPicture)(unsafe.Pointer(bp+8)).argb_stride*4, width*4, height) } WebPPictureFree(tls, pic) *(*WebPPicture)(unsafe.Pointer(pic)) = *(*WebPPicture)(unsafe.Pointer(bp + 8 /* tmp */)) @@ -31364,27 +31066,27 @@ func RescalePlane(tls *libc.TLS, src uintptr, src_width int32, src_height int32, // var rescaler WebPRescaler at bp, 104 var y int32 = 0 - if !(WebPRescalerInit(tls, (bp) /* &rescaler */, src_width, src_height, + if !(WebPRescalerInit(tls, bp, src_width, src_height, dst, dst_width, dst_height, dst_stride, num_channels, work) != 0) { return 0 } for y < src_height { - y = y + (WebPRescalerImport(tls, (bp) /* &rescaler */, (src_height - y), - (src + uintptr((y * src_stride))), src_stride)) - WebPRescalerExport(tls, (bp) /* &rescaler */) + y = y + WebPRescalerImport(tls, bp, src_height-y, + src+uintptr(y*src_stride), src_stride) + WebPRescalerExport(tls, bp) } return 1 } func AlphaMultiplyARGB(tls *libc.TLS, pic uintptr, inverse int32) { /* picture_rescale_enc.c:188:13: */ - WebPMultARGBRows(tls, (*WebPPicture)(unsafe.Pointer(pic)).argb, (int32(uint64((*WebPPicture)(unsafe.Pointer(pic)).argb_stride) * uint64(unsafe.Sizeof(uint32_t(0))))), + WebPMultARGBRows(tls, (*WebPPicture)(unsafe.Pointer(pic)).argb, int32(uint64((*WebPPicture)(unsafe.Pointer(pic)).argb_stride)*uint64(unsafe.Sizeof(uint32_t(0)))), (*WebPPicture)(unsafe.Pointer(pic)).width, (*WebPPicture)(unsafe.Pointer(pic)).height, inverse) } func AlphaMultiplyY(tls *libc.TLS, pic uintptr, inverse int32) { /* picture_rescale_enc.c:194:13: */ - if (*WebPPicture)(unsafe.Pointer(pic)).a != (uintptr(0)) { + if (*WebPPicture)(unsafe.Pointer(pic)).a != uintptr(0) { WebPMultRows(tls, (*WebPPicture)(unsafe.Pointer(pic)).y, (*WebPPicture)(unsafe.Pointer(pic)).y_stride, (*WebPPicture)(unsafe.Pointer(pic)).a, (*WebPPicture)(unsafe.Pointer(pic)).a_stride, (*WebPPicture)(unsafe.Pointer(pic)).width, (*WebPPicture)(unsafe.Pointer(pic)).height, inverse) } @@ -31402,34 +31104,34 @@ func WebPPictureRescale(tls *libc.TLS, pic uintptr, width int32, height int32) i var prev_height int32 var work uintptr - if pic == (uintptr(0)) { + if pic == uintptr(0) { return 0 } prev_width = (*WebPPicture)(unsafe.Pointer(pic)).width prev_height = (*WebPPicture)(unsafe.Pointer(pic)).height if !(WebPRescalerGetScaledDimensions(tls, - prev_width, prev_height, (bp) /* &width */, (bp+4) /* &height */) != 0) { + prev_width, prev_height, bp, bp+4) != 0) { return 0 } - PictureGrabSpecs(tls, pic, (bp + 8) /* &tmp */) + PictureGrabSpecs(tls, pic, bp+8) (*WebPPicture)(unsafe.Pointer(bp + 8 /* &tmp */)).width = *(*int32)(unsafe.Pointer(bp /* width */)) (*WebPPicture)(unsafe.Pointer(bp + 8 /* &tmp */)).height = *(*int32)(unsafe.Pointer(bp + 4 /* height */)) - if !(WebPPictureAlloc(tls, (bp+8) /* &tmp */) != 0) { + if !(WebPPictureAlloc(tls, bp+8) != 0) { return 0 } if !((*WebPPicture)(unsafe.Pointer(pic)).use_argb != 0) { - work = WebPSafeMalloc(tls, (uint64(2 * uint64(*(*int32)(unsafe.Pointer(bp /* width */))))), uint64(unsafe.Sizeof(rescaler_t(0)))) - if work == (uintptr(0)) { - WebPPictureFree(tls, (bp + 8) /* &tmp */) + work = WebPSafeMalloc(tls, uint64(2*uint64(*(*int32)(unsafe.Pointer(bp)))), uint64(unsafe.Sizeof(rescaler_t(0)))) + if work == uintptr(0) { + WebPPictureFree(tls, bp+8) return 0 } // If present, we need to rescale alpha first (for AlphaMultiplyY). - if (*WebPPicture)(unsafe.Pointer(pic)).a != (uintptr(0)) { + if (*WebPPicture)(unsafe.Pointer(pic)).a != uintptr(0) { WebPInitAlphaProcessing(tls) if !(RescalePlane(tls, (*WebPPicture)(unsafe.Pointer(pic)).a, prev_width, prev_height, (*WebPPicture)(unsafe.Pointer(pic)).a_stride, - (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).a, *(*int32)(unsafe.Pointer(bp /* width */)), *(*int32)(unsafe.Pointer(bp + 4 /* height */)), (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).a_stride, work, 1) != 0) { + (*WebPPicture)(unsafe.Pointer(bp+8)).a, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)), (*WebPPicture)(unsafe.Pointer(bp+8)).a_stride, work, 1) != 0) { return 0 } } @@ -31437,21 +31139,21 @@ func WebPPictureRescale(tls *libc.TLS, pic uintptr, width int32, height int32) i // We take transparency into account on the luma plane only. That's not // totally exact blending, but still is a good approximation. AlphaMultiplyY(tls, pic, 0) - if (!(RescalePlane(tls, (*WebPPicture)(unsafe.Pointer(pic)).y, prev_width, prev_height, (*WebPPicture)(unsafe.Pointer(pic)).y_stride, - (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).y, *(*int32)(unsafe.Pointer(bp /* width */)), *(*int32)(unsafe.Pointer(bp + 4 /* height */)), (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).y_stride, work, 1) != 0) || !(RescalePlane(tls, (*WebPPicture)(unsafe.Pointer(pic)).u, - (((prev_width)+1)>>1), (((prev_height)+1)>>1), (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, - (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).u, - (((*(*int32)(unsafe.Pointer(bp /* width */)))+1)>>1), (((*(*int32)(unsafe.Pointer(bp + 4 /* height */)))+1)>>1), (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).uv_stride, work, 1) != 0)) || !(RescalePlane(tls, (*WebPPicture)(unsafe.Pointer(pic)).v, - (((prev_width)+1)>>1), (((prev_height)+1)>>1), (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, - (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).v, - (((*(*int32)(unsafe.Pointer(bp /* width */)))+1)>>1), (((*(*int32)(unsafe.Pointer(bp + 4 /* height */)))+1)>>1), (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).uv_stride, work, 1) != 0) { + if !(RescalePlane(tls, (*WebPPicture)(unsafe.Pointer(pic)).y, prev_width, prev_height, (*WebPPicture)(unsafe.Pointer(pic)).y_stride, + (*WebPPicture)(unsafe.Pointer(bp+8)).y, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)), (*WebPPicture)(unsafe.Pointer(bp+8)).y_stride, work, 1) != 0) || !(RescalePlane(tls, (*WebPPicture)(unsafe.Pointer(pic)).u, + (prev_width+1)>>1, (prev_height+1)>>1, (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, + (*WebPPicture)(unsafe.Pointer(bp+8)).u, + (*(*int32)(unsafe.Pointer(bp))+1)>>1, (*(*int32)(unsafe.Pointer(bp + 4))+1)>>1, (*WebPPicture)(unsafe.Pointer(bp+8)).uv_stride, work, 1) != 0) || !(RescalePlane(tls, (*WebPPicture)(unsafe.Pointer(pic)).v, + (prev_width+1)>>1, (prev_height+1)>>1, (*WebPPicture)(unsafe.Pointer(pic)).uv_stride, + (*WebPPicture)(unsafe.Pointer(bp+8)).v, + (*(*int32)(unsafe.Pointer(bp))+1)>>1, (*(*int32)(unsafe.Pointer(bp + 4))+1)>>1, (*WebPPicture)(unsafe.Pointer(bp+8)).uv_stride, work, 1) != 0) { return 0 } - AlphaMultiplyY(tls, (bp + 8) /* &tmp */, 1) + AlphaMultiplyY(tls, bp+8, 1) } else { - work = WebPSafeMalloc(tls, (uint64((2 * uint64(*(*int32)(unsafe.Pointer(bp /* width */)))) * uint64(4))), uint64(unsafe.Sizeof(rescaler_t(0)))) - if work == (uintptr(0)) { - WebPPictureFree(tls, (bp + 8) /* &tmp */) + work = WebPSafeMalloc(tls, uint64(2*uint64(*(*int32)(unsafe.Pointer(bp)))*uint64(4)), uint64(unsafe.Sizeof(rescaler_t(0)))) + if work == uintptr(0) { + WebPPictureFree(tls, bp+8) return 0 } // In order to correctly interpolate colors, we need to apply the alpha @@ -31460,12 +31162,12 @@ func WebPPictureRescale(tls *libc.TLS, pic uintptr, width int32, height int32) i WebPInitAlphaProcessing(tls) AlphaMultiplyARGB(tls, pic, 0) if !(RescalePlane(tls, (*WebPPicture)(unsafe.Pointer(pic)).argb, prev_width, prev_height, - ((*WebPPicture)(unsafe.Pointer(pic)).argb_stride*4), - (*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).argb, *(*int32)(unsafe.Pointer(bp /* width */)), *(*int32)(unsafe.Pointer(bp + 4 /* height */)), - ((*WebPPicture)(unsafe.Pointer(bp+8 /* &tmp */)).argb_stride*4), work, 4) != 0) { + (*WebPPicture)(unsafe.Pointer(pic)).argb_stride*4, + (*WebPPicture)(unsafe.Pointer(bp+8)).argb, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)), + (*WebPPicture)(unsafe.Pointer(bp+8)).argb_stride*4, work, 4) != 0) { return 0 } - AlphaMultiplyARGB(tls, (bp + 8) /* &tmp */, 1) + AlphaMultiplyARGB(tls, bp+8, 1) } WebPPictureFree(tls, pic) WebPSafeFree(tls, work) @@ -31481,11 +31183,11 @@ func IsTransparentARGBArea(tls *libc.TLS, ptr uintptr, stride int32, size int32) var x int32 for y = 0; y < size; y++ { for x = 0; x < size; x++ { - if (*(*uint32_t)(unsafe.Pointer(ptr + uintptr(x)*4)) & 0xff000000) != 0 { + if *(*uint32_t)(unsafe.Pointer(ptr + uintptr(x)*4))&0xff000000 != 0 { return 0 } } - ptr += 4 * (uintptr(stride)) + ptr += 4 * uintptr(stride) } return 1 } @@ -31505,7 +31207,7 @@ func FlattenARGB(tls *libc.TLS, ptr uintptr, v uint32_t, stride int32, size int3 for x = 0; x < size; x++ { *(*uint32_t)(unsafe.Pointer(ptr + uintptr(x)*4)) = v } - ptr += 4 * (uintptr(stride)) + ptr += 4 * uintptr(stride) } } @@ -31522,14 +31224,14 @@ func SmoothenBlock(tls *libc.TLS, a_ptr uintptr, a_stride int32, y_ptr uintptr, for x = 0; x < width; x++ { if int32(*(*uint8_t)(unsafe.Pointer(alpha_ptr + uintptr(x)))) != 0 { count++ - sum = sum + (int32(*(*uint8_t)(unsafe.Pointer(luma_ptr + uintptr(x))))) + sum = sum + int32(*(*uint8_t)(unsafe.Pointer(luma_ptr + uintptr(x)))) } } alpha_ptr += uintptr(a_stride) luma_ptr += uintptr(y_stride) } - if (count > 0) && (count < (width * height)) { - var avg_u8 uint8_t = (uint8_t(sum / count)) + if count > 0 && count < width*height { + var avg_u8 uint8_t = uint8_t(sum / count) alpha_ptr = a_ptr luma_ptr = y_ptr for y = 0; y < height; y++ { @@ -31542,20 +31244,20 @@ func SmoothenBlock(tls *libc.TLS, a_ptr uintptr, a_stride int32, y_ptr uintptr, luma_ptr += uintptr(y_stride) } } - return (libc.Bool32(count == 0)) + return libc.Bool32(count == 0) } func WebPReplaceTransparentPixels(tls *libc.TLS, pic uintptr, color uint32_t) { /* picture_tools_enc.c:86:6: */ - if (pic != (uintptr(0))) && ((*WebPPicture)(unsafe.Pointer(pic)).use_argb != 0) { + if pic != uintptr(0) && (*WebPPicture)(unsafe.Pointer(pic)).use_argb != 0 { var y int32 = (*WebPPicture)(unsafe.Pointer(pic)).height var argb uintptr = (*WebPPicture)(unsafe.Pointer(pic)).argb - color = color & (0xffffff) // force alpha=0 + color = color & 0xffffff // force alpha=0 WebPInitAlphaProcessing(tls) for libc.PostDecInt32(&y, 1) > 0 { (*struct { f func(*libc.TLS, uintptr, int32, uint32_t) })(unsafe.Pointer(&struct{ uintptr }{WebPAlphaReplace})).f(tls, argb, (*WebPPicture)(unsafe.Pointer(pic)).width, color) - argb += 4 * (uintptr((*WebPPicture)(unsafe.Pointer(pic)).argb_stride)) + argb += 4 * uintptr((*WebPPicture)(unsafe.Pointer(pic)).argb_stride) } } } @@ -31568,11 +31270,11 @@ func WebPCleanupTransparentArea(tls *libc.TLS, pic uintptr) { /* picture_tools_e var y int32 var w int32 var h int32 - if pic == (uintptr(0)) { + if pic == uintptr(0) { return } - w = ((*WebPPicture)(unsafe.Pointer(pic)).width / 8) - h = ((*WebPPicture)(unsafe.Pointer(pic)).height / 8) + w = (*WebPPicture)(unsafe.Pointer(pic)).width / 8 + h = (*WebPPicture)(unsafe.Pointer(pic)).height / 8 // note: we ignore the left-overs on right/bottom, except for SmoothenBlock(). if (*WebPPicture)(unsafe.Pointer(pic)).use_argb != 0 { @@ -31580,13 +31282,13 @@ func WebPCleanupTransparentArea(tls *libc.TLS, pic uintptr) { /* picture_tools_e for y = 0; y < h; y++ { var need_reset int32 = 1 for x = 0; x < w; x++ { - var off int32 = (((y * (*WebPPicture)(unsafe.Pointer(pic)).argb_stride) + x) * 8) - if IsTransparentARGBArea(tls, ((*WebPPicture)(unsafe.Pointer(pic)).argb+uintptr(off)*4), (*WebPPicture)(unsafe.Pointer(pic)).argb_stride, 8) != 0 { + var off int32 = (y*(*WebPPicture)(unsafe.Pointer(pic)).argb_stride + x) * 8 + if IsTransparentARGBArea(tls, (*WebPPicture)(unsafe.Pointer(pic)).argb+uintptr(off)*4, (*WebPPicture)(unsafe.Pointer(pic)).argb_stride, 8) != 0 { if need_reset != 0 { argb_value = *(*uint32_t)(unsafe.Pointer((*WebPPicture)(unsafe.Pointer(pic)).argb + uintptr(off)*4)) need_reset = 0 } - FlattenARGB(tls, ((*WebPPicture)(unsafe.Pointer(pic)).argb + uintptr(off)*4), argb_value, (*WebPPicture)(unsafe.Pointer(pic)).argb_stride, 8) + FlattenARGB(tls, (*WebPPicture)(unsafe.Pointer(pic)).argb+uintptr(off)*4, argb_value, (*WebPPicture)(unsafe.Pointer(pic)).argb_stride, 8) } else { need_reset = 1 } @@ -31603,45 +31305,45 @@ func WebPCleanupTransparentArea(tls *libc.TLS, pic uintptr) { /* picture_tools_e var v_ptr uintptr = (*WebPPicture)(unsafe.Pointer(pic)).v var a_ptr uintptr = (*WebPPicture)(unsafe.Pointer(pic)).a *(*[3]int32)(unsafe.Pointer(bp /* values */)) = [3]int32{0: 0} - if (((a_ptr == (uintptr(0))) || (y_ptr == (uintptr(0)))) || (u_ptr == (uintptr(0)))) || (v_ptr == (uintptr(0))) { + if a_ptr == uintptr(0) || y_ptr == uintptr(0) || u_ptr == uintptr(0) || v_ptr == uintptr(0) { return } - for y = 0; (y + 8) <= height; y = y + (8) { + for y = 0; y+8 <= height; y = y + 8 { var need_reset int32 = 1 - for x = 0; (x + 8) <= width; x = x + (8) { - if SmoothenBlock(tls, (a_ptr+uintptr(x)), a_stride, (y_ptr+uintptr(x)), y_stride, + for x = 0; x+8 <= width; x = x + 8 { + if SmoothenBlock(tls, a_ptr+uintptr(x), a_stride, y_ptr+uintptr(x), y_stride, 8, 8) != 0 { if need_reset != 0 { - *(*int32)(unsafe.Pointer((bp) /* &values[0] */)) = int32(*(*uint8_t)(unsafe.Pointer(y_ptr + uintptr(x)))) - *(*int32)(unsafe.Pointer((bp) /* &values[0] */ + 1*4)) = int32(*(*uint8_t)(unsafe.Pointer(u_ptr + uintptr((x >> 1))))) - *(*int32)(unsafe.Pointer((bp) /* &values[0] */ + 2*4)) = int32(*(*uint8_t)(unsafe.Pointer(v_ptr + uintptr((x >> 1))))) + *(*int32)(unsafe.Pointer(bp)) = int32(*(*uint8_t)(unsafe.Pointer(y_ptr + uintptr(x)))) + *(*int32)(unsafe.Pointer(bp + 1*4)) = int32(*(*uint8_t)(unsafe.Pointer(u_ptr + uintptr(x>>1)))) + *(*int32)(unsafe.Pointer(bp + 2*4)) = int32(*(*uint8_t)(unsafe.Pointer(v_ptr + uintptr(x>>1)))) need_reset = 0 } - Flatten(tls, (y_ptr + uintptr(x)), *(*int32)(unsafe.Pointer((bp) /* &values[0] */)), y_stride, 8) - Flatten(tls, (u_ptr + uintptr((x >> 1))), *(*int32)(unsafe.Pointer((bp) /* &values[0] */ + 1*4)), uv_stride, (8 / 2)) - Flatten(tls, (v_ptr + uintptr((x >> 1))), *(*int32)(unsafe.Pointer((bp) /* &values[0] */ + 2*4)), uv_stride, (8 / 2)) + Flatten(tls, y_ptr+uintptr(x), *(*int32)(unsafe.Pointer(bp)), y_stride, 8) + Flatten(tls, u_ptr+uintptr(x>>1), *(*int32)(unsafe.Pointer(bp + 1*4)), uv_stride, 8/2) + Flatten(tls, v_ptr+uintptr(x>>1), *(*int32)(unsafe.Pointer(bp + 2*4)), uv_stride, 8/2) } else { need_reset = 1 } } if x < width { - SmoothenBlock(tls, (a_ptr + uintptr(x)), a_stride, (y_ptr + uintptr(x)), y_stride, - (width - x), 8) + SmoothenBlock(tls, a_ptr+uintptr(x), a_stride, y_ptr+uintptr(x), y_stride, + width-x, 8) } - a_ptr += (uintptr(8 * a_stride)) - y_ptr += (uintptr(8 * y_stride)) - u_ptr += (uintptr((8 / 2) * uv_stride)) - v_ptr += (uintptr((8 / 2) * uv_stride)) + a_ptr += uintptr(8 * a_stride) + y_ptr += uintptr(8 * y_stride) + u_ptr += uintptr(8 / 2 * uv_stride) + v_ptr += uintptr(8 / 2 * uv_stride) } if y < height { - var sub_height int32 = (height - y) - for x = 0; (x + 8) <= width; x = x + (8) { - SmoothenBlock(tls, (a_ptr + uintptr(x)), a_stride, (y_ptr + uintptr(x)), y_stride, + var sub_height int32 = height - y + for x = 0; x+8 <= width; x = x + 8 { + SmoothenBlock(tls, a_ptr+uintptr(x), a_stride, y_ptr+uintptr(x), y_stride, 8, sub_height) } if x < width { - SmoothenBlock(tls, (a_ptr + uintptr(x)), a_stride, (y_ptr + uintptr(x)), y_stride, - (width - x), sub_height) + SmoothenBlock(tls, a_ptr+uintptr(x), a_stride, y_ptr+uintptr(x), y_stride, + width-x, sub_height) } } } @@ -31651,30 +31353,30 @@ func WebPCleanupTransparentArea(tls *libc.TLS, pic uintptr) { /* picture_tools_e // Blend color and remove transparency info func MakeARGB321(tls *libc.TLS, r int32, g int32, b int32) uint32_t { /* picture_tools_enc.c:189:29: */ - return (((0xff000000 | (uint32(r << 16))) | (uint32(g << 8))) | uint32(b)) + return 0xff000000 | uint32(r<<16) | uint32(g<<8) | uint32(b) } func WebPBlendAlpha(tls *libc.TLS, pic uintptr, background_rgb uint32_t) { /* picture_tools_enc.c:193:6: */ - var red int32 = (int32((background_rgb >> 16) & uint32_t(0xff))) - var green int32 = (int32((background_rgb >> 8) & uint32_t(0xff))) - var blue int32 = (int32((background_rgb >> 0) & uint32_t(0xff))) + var red int32 = int32(background_rgb >> 16 & uint32_t(0xff)) + var green int32 = int32(background_rgb >> 8 & uint32_t(0xff)) + var blue int32 = int32(background_rgb >> 0 & uint32_t(0xff)) var x int32 var y int32 - if pic == (uintptr(0)) { + if pic == uintptr(0) { return } if !((*WebPPicture)(unsafe.Pointer(pic)).use_argb != 0) { - var uv_width int32 = ((*WebPPicture)(unsafe.Pointer(pic)).width >> 1) // omit last pixel during u/v loop + var uv_width int32 = (*WebPPicture)(unsafe.Pointer(pic)).width >> 1 // omit last pixel during u/v loop var Y0 int32 = VP8RGBToY(tls, red, green, blue, YUV_HALF) // VP8RGBToU/V expects the u/v values summed over four pixels - var U0 int32 = VP8RGBToU(tls, (4 * red), (4 * green), (4 * blue), (4 * YUV_HALF)) - var V0 int32 = VP8RGBToV(tls, (4 * red), (4 * green), (4 * blue), (4 * YUV_HALF)) - var has_alpha int32 = (int32((*WebPPicture)(unsafe.Pointer(pic)).colorspace & WEBP_CSP_ALPHA_BIT)) + var U0 int32 = VP8RGBToU(tls, 4*red, 4*green, 4*blue, 4*YUV_HALF) + var V0 int32 = VP8RGBToV(tls, 4*red, 4*green, 4*blue, 4*YUV_HALF) + var has_alpha int32 = int32((*WebPPicture)(unsafe.Pointer(pic)).colorspace & WEBP_CSP_ALPHA_BIT) var y_ptr uintptr = (*WebPPicture)(unsafe.Pointer(pic)).y var u_ptr uintptr = (*WebPPicture)(unsafe.Pointer(pic)).u var v_ptr uintptr = (*WebPPicture)(unsafe.Pointer(pic)).v var a_ptr uintptr = (*WebPPicture)(unsafe.Pointer(pic)).a - if !(has_alpha != 0) || (a_ptr == (uintptr(0))) { + if !(has_alpha != 0) || a_ptr == uintptr(0) { return } // nothing to do for y = 0; y < (*WebPPicture)(unsafe.Pointer(pic)).height; y++ { @@ -31682,28 +31384,28 @@ func WebPBlendAlpha(tls *libc.TLS, pic uintptr, background_rgb uint32_t) { /* pi for x = 0; x < (*WebPPicture)(unsafe.Pointer(pic)).width; x++ { var alpha uint8_t = *(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(x))) if int32(alpha) < 0xff { - *(*uint8_t)(unsafe.Pointer(y_ptr + uintptr(x))) = (uint8_t((((((Y0) * (255 - (int32(alpha)))) + ((int32(*(*uint8_t)(unsafe.Pointer(y_ptr + uintptr(x))))) * (int32(alpha)))) * 0x101) + 256) >> 16)) + *(*uint8_t)(unsafe.Pointer(y_ptr + uintptr(x))) = uint8_t(((Y0*(255-int32(alpha))+int32(*(*uint8_t)(unsafe.Pointer(y_ptr + uintptr(x))))*int32(alpha))*0x101 + 256) >> 16) } } // Chroma blending every even line - if (y & 1) == 0 { + if y&1 == 0 { var a_ptr2 uintptr - if (y + 1) == (*WebPPicture)(unsafe.Pointer(pic)).height { + if y+1 == (*WebPPicture)(unsafe.Pointer(pic)).height { a_ptr2 = a_ptr } else { - a_ptr2 = (a_ptr + uintptr((*WebPPicture)(unsafe.Pointer(pic)).a_stride)) + a_ptr2 = a_ptr + uintptr((*WebPPicture)(unsafe.Pointer(pic)).a_stride) } for x = 0; x < uv_width; x++ { // Average four alpha values into a single blending weight. // TODO(skal): might lead to visible contouring. Can we do better? - var alpha uint32_t = (uint32_t(((int32(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(((2 * x) + 0))))) + int32(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(((2 * x) + 1)))))) + int32(*(*uint8_t)(unsafe.Pointer(a_ptr2 + uintptr(((2 * x) + 0)))))) + int32(*(*uint8_t)(unsafe.Pointer(a_ptr2 + uintptr(((2 * x) + 1))))))) - *(*uint8_t)(unsafe.Pointer(u_ptr + uintptr(x))) = (uint8_t((((((uint32_t(U0)) * (uint32_t(1020) - (alpha))) + ((uint32_t(*(*uint8_t)(unsafe.Pointer(u_ptr + uintptr(x))))) * (alpha))) * uint32_t(0x101)) + uint32_t(1024)) >> 18)) - *(*uint8_t)(unsafe.Pointer(v_ptr + uintptr(x))) = (uint8_t((((((uint32_t(V0)) * (uint32_t(1020) - (alpha))) + ((uint32_t(*(*uint8_t)(unsafe.Pointer(v_ptr + uintptr(x))))) * (alpha))) * uint32_t(0x101)) + uint32_t(1024)) >> 18)) + var alpha uint32_t = uint32_t(int32(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(2*x+0)))) + int32(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(2*x+1)))) + int32(*(*uint8_t)(unsafe.Pointer(a_ptr2 + uintptr(2*x+0)))) + int32(*(*uint8_t)(unsafe.Pointer(a_ptr2 + uintptr(2*x+1))))) + *(*uint8_t)(unsafe.Pointer(u_ptr + uintptr(x))) = uint8_t(((uint32_t(U0)*(uint32_t(1020)-alpha)+uint32_t(*(*uint8_t)(unsafe.Pointer(u_ptr + uintptr(x))))*alpha)*uint32_t(0x101) + uint32_t(1024)) >> 18) + *(*uint8_t)(unsafe.Pointer(v_ptr + uintptr(x))) = uint8_t(((uint32_t(V0)*(uint32_t(1020)-alpha)+uint32_t(*(*uint8_t)(unsafe.Pointer(v_ptr + uintptr(x))))*alpha)*uint32_t(0x101) + uint32_t(1024)) >> 18) } - if ((*WebPPicture)(unsafe.Pointer(pic)).width & 1) != 0 { // rightmost pixel - var alpha uint32_t = (uint32_t(2 * (int32(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(((2 * x) + 0))))) + int32(*(*uint8_t)(unsafe.Pointer(a_ptr2 + uintptr(((2 * x) + 0)))))))) - *(*uint8_t)(unsafe.Pointer(u_ptr + uintptr(x))) = (uint8_t((((((uint32_t(U0)) * (uint32_t(1020) - (alpha))) + ((uint32_t(*(*uint8_t)(unsafe.Pointer(u_ptr + uintptr(x))))) * (alpha))) * uint32_t(0x101)) + uint32_t(1024)) >> 18)) - *(*uint8_t)(unsafe.Pointer(v_ptr + uintptr(x))) = (uint8_t((((((uint32_t(V0)) * (uint32_t(1020) - (alpha))) + ((uint32_t(*(*uint8_t)(unsafe.Pointer(v_ptr + uintptr(x))))) * (alpha))) * uint32_t(0x101)) + uint32_t(1024)) >> 18)) + if (*WebPPicture)(unsafe.Pointer(pic)).width&1 != 0 { // rightmost pixel + var alpha uint32_t = uint32_t(2 * (int32(*(*uint8_t)(unsafe.Pointer(a_ptr + uintptr(2*x+0)))) + int32(*(*uint8_t)(unsafe.Pointer(a_ptr2 + uintptr(2*x+0)))))) + *(*uint8_t)(unsafe.Pointer(u_ptr + uintptr(x))) = uint8_t(((uint32_t(U0)*(uint32_t(1020)-alpha)+uint32_t(*(*uint8_t)(unsafe.Pointer(u_ptr + uintptr(x))))*alpha)*uint32_t(0x101) + uint32_t(1024)) >> 18) + *(*uint8_t)(unsafe.Pointer(v_ptr + uintptr(x))) = uint8_t(((uint32_t(V0)*(uint32_t(1020)-alpha)+uint32_t(*(*uint8_t)(unsafe.Pointer(v_ptr + uintptr(x))))*alpha)*uint32_t(0x101) + uint32_t(1024)) >> 18) } } else { u_ptr += uintptr((*WebPPicture)(unsafe.Pointer(pic)).uv_stride) @@ -31718,22 +31420,22 @@ func WebPBlendAlpha(tls *libc.TLS, pic uintptr, background_rgb uint32_t) { /* pi var background uint32_t = MakeARGB321(tls, red, green, blue) for y = 0; y < (*WebPPicture)(unsafe.Pointer(pic)).height; y++ { for x = 0; x < (*WebPPicture)(unsafe.Pointer(pic)).width; x++ { - var alpha int32 = (int32((*(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4)) >> 24) & uint32_t(0xff))) + var alpha int32 = int32(*(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4)) >> 24 & uint32_t(0xff)) if alpha != 0xff { if alpha > 0 { - var r int32 = (int32((*(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4)) >> 16) & uint32_t(0xff))) - var g int32 = (int32((*(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4)) >> 8) & uint32_t(0xff))) - var b int32 = (int32((*(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4)) >> 0) & uint32_t(0xff))) - r = ((((((red) * (255 - (alpha))) + ((r) * (alpha))) * 0x101) + 256) >> 16) - g = ((((((green) * (255 - (alpha))) + ((g) * (alpha))) * 0x101) + 256) >> 16) - b = ((((((blue) * (255 - (alpha))) + ((b) * (alpha))) * 0x101) + 256) >> 16) + var r int32 = int32(*(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4)) >> 16 & uint32_t(0xff)) + var g int32 = int32(*(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4)) >> 8 & uint32_t(0xff)) + var b int32 = int32(*(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4)) >> 0 & uint32_t(0xff)) + r = ((red*(255-alpha)+r*alpha)*0x101 + 256) >> 16 + g = ((green*(255-alpha)+g*alpha)*0x101 + 256) >> 16 + b = ((blue*(255-alpha)+b*alpha)*0x101 + 256) >> 16 *(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4)) = MakeARGB321(tls, r, g, b) } else { *(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4)) = background } } } - argb += 4 * (uintptr((*WebPPicture)(unsafe.Pointer(pic)).argb_stride)) + argb += 4 * uintptr((*WebPPicture)(unsafe.Pointer(pic)).argb_stride) } } } @@ -31758,15 +31460,15 @@ func GetMin(tls *libc.TLS, a int32, b int32) int32 { /* predictor_enc.c:28:24: * // Methods to calculate Entropy (Shannon). func PredictionCostSpatial(tls *libc.TLS, counts uintptr, weight_0 int32, exp_val float64) float32 { /* predictor_enc.c:33:14: */ - var significant_symbols int32 = (int32(256) >> 4) + var significant_symbols int32 = int32(256) >> 4 var exp_decay_factor float64 = 0.6 - var bits float64 = (float64(weight_0 * *(*int32)(unsafe.Pointer(counts)))) + var bits float64 = float64(weight_0 * *(*int32)(unsafe.Pointer(counts))) var i int32 for i = 1; i < significant_symbols; i++ { - bits = bits + (exp_val * (float64(*(*int32)(unsafe.Pointer(counts + uintptr(i)*4)) + *(*int32)(unsafe.Pointer(counts + uintptr((256-i))*4))))) - exp_val = exp_val * (exp_decay_factor) + bits = bits + exp_val*float64(*(*int32)(unsafe.Pointer(counts + uintptr(i)*4))+*(*int32)(unsafe.Pointer(counts + uintptr(256-i)*4))) + exp_val = exp_val * exp_decay_factor } - return (float32(-0.1 * bits)) + return float32(-0.1 * bits) } func PredictionCostSpatialHistogram(tls *libc.TLS, accumulated uintptr, tile uintptr) float32 { /* predictor_enc.c:46:14: */ @@ -31774,19 +31476,19 @@ func PredictionCostSpatialHistogram(tls *libc.TLS, accumulated uintptr, tile uin var retval float64 = float64(0) for i = 0; i < 4; i++ { var kExpValue float64 = 0.94 - retval = retval + (float64(PredictionCostSpatial(tls, (tile + uintptr(i)*1024), 1, kExpValue))) - retval = retval + (float64((*struct { + retval = retval + float64(PredictionCostSpatial(tls, tile+uintptr(i)*1024, 1, kExpValue)) + retval = retval + float64((*struct { f func(*libc.TLS, uintptr, uintptr) float32 - })(unsafe.Pointer(&struct{ uintptr }{VP8LCombinedShannonEntropy})).f(tls, (tile + uintptr(i)*1024), (accumulated + uintptr(i)*1024)))) + })(unsafe.Pointer(&struct{ uintptr }{VP8LCombinedShannonEntropy})).f(tls, tile+uintptr(i)*1024, accumulated+uintptr(i)*1024)) } return float32(retval) } func UpdateHisto(tls *libc.TLS, histo_argb uintptr, argb uint32_t) { /* predictor_enc.c:58:25: */ - *(*int32)(unsafe.Pointer((histo_argb) + uintptr((argb>>24))*4))++ - *(*int32)(unsafe.Pointer((histo_argb + 1*1024) + uintptr(((argb>>16)&uint32_t(0xff)))*4))++ - *(*int32)(unsafe.Pointer((histo_argb + 2*1024) + uintptr(((argb>>8)&uint32_t(0xff)))*4))++ - *(*int32)(unsafe.Pointer((histo_argb + 3*1024) + uintptr((argb&uint32_t(0xff)))*4))++ + *(*int32)(unsafe.Pointer(histo_argb + uintptr(argb>>24)*4))++ + *(*int32)(unsafe.Pointer(histo_argb + 1*1024 + uintptr(argb>>16&uint32_t(0xff))*4))++ + *(*int32)(unsafe.Pointer(histo_argb + 2*1024 + uintptr(argb>>8&uint32_t(0xff))*4))++ + *(*int32)(unsafe.Pointer(histo_argb + 3*1024 + uintptr(argb&uint32_t(0xff))*4))++ } //------------------------------------------------------------------------------ @@ -31798,7 +31500,7 @@ func PredictBatch(tls *libc.TLS, mode int32, x_start int32, y int32, num_pixels // ARGB_BLACK. (*struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8LPredictorsSub[0]})).f(tls, current, (uintptr(0)), 1, out) + })(unsafe.Pointer(&struct{ uintptr }{VP8LPredictorsSub[0]})).f(tls, current, uintptr(0), 1, out) } else { // Top one. (*struct { @@ -31813,11 +31515,11 @@ func PredictBatch(tls *libc.TLS, mode int32, x_start int32, y int32, num_pixels // Left one. (*struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8LPredictorsSub[1]})).f(tls, (current + uintptr(x_start)*4), (uintptr(0)), num_pixels, out) + })(unsafe.Pointer(&struct{ uintptr }{VP8LPredictorsSub[1]})).f(tls, current+uintptr(x_start)*4, uintptr(0), num_pixels, out) } else { (*struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8LPredictorsSub[mode]})).f(tls, (current + uintptr(x_start)*4), (upper + uintptr(x_start)*4), num_pixels, + })(unsafe.Pointer(&struct{ uintptr }{VP8LPredictorsSub[mode]})).f(tls, current+uintptr(x_start)*4, upper+uintptr(x_start)*4, num_pixels, out) } } @@ -31830,10 +31532,10 @@ func GetMax(tls *libc.TLS, a int32, b int32) int32 { /* predictor_enc.c:93:24: * } func MaxDiffBetweenPixels(tls *libc.TLS, p1 uint32_t, p2 uint32_t) int32 { /* predictor_enc.c:95:12: */ - var diff_a int32 = libc.Xabs(tls, ((int32(p1 >> 24)) - (int32(p2 >> 24)))) - var diff_r int32 = libc.Xabs(tls, ((int32((p1 >> 16) & uint32_t(0xff))) - (int32((p2 >> 16) & uint32_t(0xff))))) - var diff_g int32 = libc.Xabs(tls, ((int32((p1 >> 8) & uint32_t(0xff))) - (int32((p2 >> 8) & uint32_t(0xff))))) - var diff_b int32 = libc.Xabs(tls, ((int32(p1 & uint32_t(0xff))) - (int32(p2 & uint32_t(0xff))))) + var diff_a int32 = libc.Xabs(tls, int32(p1>>24)-int32(p2>>24)) + var diff_r int32 = libc.Xabs(tls, int32(p1>>16&uint32_t(0xff))-int32(p2>>16&uint32_t(0xff))) + var diff_g int32 = libc.Xabs(tls, int32(p1>>8&uint32_t(0xff))-int32(p2>>8&uint32_t(0xff))) + var diff_b int32 = libc.Xabs(tls, int32(p1&uint32_t(0xff))-int32(p2&uint32_t(0xff))) return GetMax(tls, GetMax(tls, diff_a, diff_r), GetMax(tls, diff_g, diff_b)) } @@ -31846,11 +31548,11 @@ func MaxDiffAroundPixel(tls *libc.TLS, current uint32_t, up uint32_t, down uint3 } func AddGreenToBlueAndRed(tls *libc.TLS, argb uint32_t) uint32_t { /* predictor_enc.c:112:17: */ - var green uint32_t = ((argb >> 8) & uint32_t(0xff)) - var red_blue uint32_t = (argb & 0x00ff00ff) - red_blue = red_blue + ((green << 16) | green) - red_blue = red_blue & (0x00ff00ff) - return ((argb & 0xff00ff00) | red_blue) + var green uint32_t = argb >> 8 & uint32_t(0xff) + var red_blue uint32_t = argb & 0x00ff00ff + red_blue = red_blue + (green<<16 | green) + red_blue = red_blue & 0x00ff00ff + return argb&0xff00ff00 | red_blue } func MaxDiffsForRow(tls *libc.TLS, width int32, stride int32, argb uintptr, max_diffs uintptr, used_subtract_green int32) { /* predictor_enc.c:120:13: */ @@ -31870,12 +31572,12 @@ func MaxDiffsForRow(tls *libc.TLS, width int32, stride int32, argb uintptr, max_ right = AddGreenToBlueAndRed(tls, right) } // max_diffs[0] and max_diffs[width - 1] are never used. - for x = 1; x < (width - 1); x++ { - up = *(*uint32_t)(unsafe.Pointer(argb + uintptr((-stride+x))*4)) - down = *(*uint32_t)(unsafe.Pointer(argb + uintptr((stride+x))*4)) + for x = 1; x < width-1; x++ { + up = *(*uint32_t)(unsafe.Pointer(argb + uintptr(-stride+x)*4)) + down = *(*uint32_t)(unsafe.Pointer(argb + uintptr(stride+x)*4)) left = current current = right - right = *(*uint32_t)(unsafe.Pointer(argb + uintptr((x+1))*4)) + right = *(*uint32_t)(unsafe.Pointer(argb + uintptr(x+1)*4)) if used_subtract_green != 0 { up = AddGreenToBlueAndRed(tls, up) down = AddGreenToBlueAndRed(tls, down) @@ -31889,37 +31591,37 @@ func MaxDiffsForRow(tls *libc.TLS, width int32, stride int32, argb uintptr, max_ // to a multiple of quantization, working modulo 256, taking care not to cross // a boundary (inclusive upper limit). func NearLosslessComponent(tls *libc.TLS, value uint8_t, predict uint8_t, boundary uint8_t, quantization int32) uint8_t { /* predictor_enc.c:150:16: */ - var residual int32 = ((int32(value) - int32(predict)) & 0xff) - var boundary_residual int32 = ((int32(boundary) - int32(predict)) & 0xff) - var lower int32 = (residual & ^(quantization - 1)) - var upper int32 = (lower + quantization) + var residual int32 = (int32(value) - int32(predict)) & 0xff + var boundary_residual int32 = (int32(boundary) - int32(predict)) & 0xff + var lower int32 = residual & ^(quantization - 1) + var upper int32 = lower + quantization // Resolve ties towards a value closer to the prediction (i.e. towards lower // if value comes after prediction and towards upper otherwise). - var bias int32 = (libc.Bool32(((int32(boundary) - int32(value)) & 0xff) < boundary_residual)) - if (residual - lower) < ((upper - residual) + bias) { + var bias int32 = libc.Bool32((int32(boundary)-int32(value))&0xff < boundary_residual) + if residual-lower < upper-residual+bias { // lower is closer to residual than upper. - if (residual > boundary_residual) && (lower <= boundary_residual) { + if residual > boundary_residual && lower <= boundary_residual { // Halve quantization step to avoid crossing boundary. This midpoint is // on the same side of boundary as residual because midpoint >= residual // (since lower is closer than upper) and residual is above the boundary. - return (uint8_t(lower + (quantization >> 1))) + return uint8_t(lower + quantization>>1) } return uint8_t(lower) } else { // upper is closer to residual than lower. - if (residual <= boundary_residual) && (upper > boundary_residual) { + if residual <= boundary_residual && upper > boundary_residual { // Halve quantization step to avoid crossing boundary. This midpoint is // on the same side of boundary as residual because midpoint <= residual // (since upper is closer than lower) and residual is below the boundary. - return (uint8_t(lower + (quantization >> 1))) + return uint8_t(lower + quantization>>1) } - return (uint8_t(upper & 0xff)) + return uint8_t(upper & 0xff) } return uint8_t(0) } func NearLosslessDiff(tls *libc.TLS, a uint8_t, b uint8_t) uint8_t { /* predictor_enc.c:180:28: */ - return (uint8_t(((int32(a)) - (int32(b))) & 0xff)) + return uint8_t((int32(a) - int32(b)) & 0xff) } // Quantize every component of the difference between the actual pixel value and @@ -31942,29 +31644,29 @@ func NearLossless1(tls *libc.TLS, value uint32_t, predict uint32_t, max_quantiza for quantization >= max_diff { quantization >>= 1 } - if ((value >> 24) == uint32_t(0)) || ((value >> 24) == uint32_t(0xff)) { + if value>>24 == uint32_t(0) || value>>24 == uint32_t(0xff) { // Preserve transparency of fully transparent or fully opaque pixels. - a = NearLosslessDiff(tls, (uint8((value >> 24) & uint32_t(0xff))), (uint8((predict >> 24) & uint32_t(0xff)))) + a = NearLosslessDiff(tls, uint8(value>>24&uint32_t(0xff)), uint8(predict>>24&uint32_t(0xff))) } else { - a = NearLosslessComponent(tls, (uint8(value >> 24)), (uint8(predict >> 24)), uint8(0xff), quantization) + a = NearLosslessComponent(tls, uint8(value>>24), uint8(predict>>24), uint8(0xff), quantization) } - g = NearLosslessComponent(tls, (uint8((value >> 8) & uint32_t(0xff))), (uint8((predict >> 8) & uint32_t(0xff))), uint8(0xff), + g = NearLosslessComponent(tls, uint8(value>>8&uint32_t(0xff)), uint8(predict>>8&uint32_t(0xff)), uint8(0xff), quantization) if used_subtract_green != 0 { // The green offset will be added to red and blue components during decoding // to obtain the actual red and blue values. - new_green = (uint8_t(((predict >> 8) + uint32_t(g)) & uint32_t(0xff))) + new_green = uint8_t((predict>>8 + uint32_t(g)) & uint32_t(0xff)) // The amount by which green has been adjusted during quantization. It is // subtracted from red and blue for compensation, to avoid accumulating two // quantization errors in them. - green_diff = NearLosslessDiff(tls, new_green, (uint8((value >> 8) & uint32_t(0xff)))) + green_diff = NearLosslessDiff(tls, new_green, uint8(value>>8&uint32_t(0xff))) } - r = NearLosslessComponent(tls, NearLosslessDiff(tls, (uint8((value>>16)&uint32_t(0xff))), green_diff), - (uint8((predict >> 16) & uint32_t(0xff))), (uint8(0xff - int32(new_green))), + r = NearLosslessComponent(tls, NearLosslessDiff(tls, uint8(value>>16&uint32_t(0xff)), green_diff), + uint8(predict>>16&uint32_t(0xff)), uint8(0xff-int32(new_green)), quantization) - b = NearLosslessComponent(tls, NearLosslessDiff(tls, (uint8(value&uint32_t(0xff))), green_diff), - (uint8(predict & uint32_t(0xff))), (uint8(0xff - int32(new_green))), quantization) - return ((((uint32_t(a) << 24) | (uint32_t(r) << 16)) | (uint32_t(g) << 8)) | uint32_t(b)) + b = NearLosslessComponent(tls, NearLosslessDiff(tls, uint8(value&uint32_t(0xff)), green_diff), + uint8(predict&uint32_t(0xff)), uint8(0xff-int32(new_green)), quantization) + return uint32_t(a)<<24 | uint32_t(r)<<16 | uint32_t(g)<<8 | uint32_t(b) } // Stores the difference between the pixel and its prediction in "out". @@ -31973,7 +31675,7 @@ func NearLossless1(tls *libc.TLS, value uint32_t, predict uint32_t, max_quantiza // predictions. func GetResidual(tls *libc.TLS, width int32, height int32, upper_row uintptr, current_row uintptr, max_diffs uintptr, mode int32, x_start int32, x_end int32, y int32, max_quantization int32, exact int32, used_subtract_green int32, out uintptr) { /* predictor_enc.c:233:25: */ if exact != 0 { - PredictBatch(tls, mode, x_start, y, (x_end - x_start), current_row, upper_row, + PredictBatch(tls, mode, x_start, y, x_end-x_start, current_row, upper_row, out) } else { var pred_func VP8LPredictorFunc = VP8LPredictors[mode] @@ -31985,16 +31687,16 @@ func GetResidual(tls *libc.TLS, width int32, height int32, upper_row uintptr, cu if x == 0 { predict = 0xff000000 } else { - predict = *(*uint32_t)(unsafe.Pointer(current_row + uintptr((x-1))*4)) + predict = *(*uint32_t)(unsafe.Pointer(current_row + uintptr(x-1)*4)) } // Left. } else if x == 0 { predict = *(*uint32_t)(unsafe.Pointer(upper_row + uintptr(x)*4)) // Top. } else { predict = (*struct { f func(*libc.TLS, uintptr, uintptr) uint32_t - })(unsafe.Pointer(&struct{ uintptr }{pred_func})).f(tls, (current_row + uintptr((x-1))*4), (upper_row + uintptr(x)*4)) + })(unsafe.Pointer(&struct{ uintptr }{pred_func})).f(tls, current_row+uintptr(x-1)*4, upper_row+uintptr(x)*4) } - if (((((max_quantization == 1) || (mode == 0)) || (y == 0)) || (y == (height - 1))) || (x == 0)) || (x == (width - 1)) { + if max_quantization == 1 || mode == 0 || y == 0 || y == height-1 || x == 0 || x == width-1 { residual = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(current_row + uintptr(x)*4)), predict) } else { residual = NearLossless1(tls, *(*uint32_t)(unsafe.Pointer(current_row + uintptr(x)*4)), predict, max_quantization, @@ -32003,25 +31705,25 @@ func GetResidual(tls *libc.TLS, width int32, height int32, upper_row uintptr, cu *(*uint32_t)(unsafe.Pointer(current_row + uintptr(x)*4)) = VP8LAddPixels(tls, predict, residual) // x is never 0 here so we do not need to update upper_row like below. } - if (*(*uint32_t)(unsafe.Pointer(current_row + uintptr(x)*4)) & kMaskAlpha) == uint32_t(0) { + if *(*uint32_t)(unsafe.Pointer(current_row + uintptr(x)*4))&kMaskAlpha == uint32_t(0) { // If alpha is 0, cleanup RGB. We can choose the RGB values of the // residual for best compression. The prediction of alpha itself can be // non-zero and must be kept though. We choose RGB of the residual to be // 0. - residual = residual & (kMaskAlpha) + residual = residual & kMaskAlpha // Update the source image. - *(*uint32_t)(unsafe.Pointer(current_row + uintptr(x)*4)) = (predict & ^kMaskAlpha) + *(*uint32_t)(unsafe.Pointer(current_row + uintptr(x)*4)) = predict & ^kMaskAlpha // The prediction for the rightmost pixel in a row uses the leftmost // pixel // in that row as its top-right context pixel. Hence if we change the // leftmost pixel of current_row, the corresponding change must be // applied // to upper_row as well where top-right context is being read from. - if (x == 0) && (y != 0) { + if x == 0 && y != 0 { *(*uint32_t)(unsafe.Pointer(upper_row + uintptr(width)*4)) = *(*uint32_t)(unsafe.Pointer(current_row)) } } - *(*uint32_t)(unsafe.Pointer(out + uintptr((x-x_start))*4)) = residual + *(*uint32_t)(unsafe.Pointer(out + uintptr(x-x_start)*4)) = residual } } } @@ -32036,28 +31738,28 @@ func GetBestPredictorForTile(tls *libc.TLS, width int32, height int32, tile_x in defer tls.Free(8448) var kNumPredModes int32 = 14 - var start_x int32 = (tile_x << bits) - var start_y int32 = (tile_y << bits) - var tile_size int32 = (int32(1) << bits) - var max_y int32 = GetMin(tls, tile_size, (height - start_y)) - var max_x int32 = GetMin(tls, tile_size, (width - start_x)) + var start_x int32 = tile_x << bits + var start_y int32 = tile_y << bits + var tile_size int32 = int32(1) << bits + var max_y int32 = GetMin(tls, tile_size, height-start_y) + var max_x int32 = GetMin(tls, tile_size, width-start_x) // Whether there exist columns just outside the tile. - var have_left int32 = (libc.Bool32(start_x > 0)) + var have_left int32 = libc.Bool32(start_x > 0) // Position and size of the strip covering the tile and adjacent columns if // they exist. - var context_start_x int32 = (start_x - have_left) - var context_width int32 = ((max_x + have_left) + (libc.Bool32(max_x < (width - start_x)))) + var context_start_x int32 = start_x - have_left + var context_width int32 = max_x + have_left + libc.Bool32(max_x < width-start_x) var tiles_per_row int32 = int32(VP8LSubSampleSize(tls, uint32(width), uint32(bits))) // Prediction modes of the left and above neighbor tiles. var left_mode int32 if tile_x > 0 { - left_mode = (int32((*(*uint32_t)(unsafe.Pointer(modes + uintptr((((tile_y*tiles_per_row)+tile_x)-1))*4)) >> 8) & uint32_t(0xff))) + left_mode = int32(*(*uint32_t)(unsafe.Pointer(modes + uintptr(tile_y*tiles_per_row+tile_x-1)*4)) >> 8 & uint32_t(0xff)) } else { left_mode = 0xff } var above_mode int32 if tile_y > 0 { - above_mode = (int32((*(*uint32_t)(unsafe.Pointer(modes + uintptr((((tile_y-1)*tiles_per_row)+tile_x))*4)) >> 8) & uint32_t(0xff))) + above_mode = int32(*(*uint32_t)(unsafe.Pointer(modes + uintptr((tile_y-1)*tiles_per_row+tile_x)*4)) >> 8 & uint32_t(0xff)) } else { above_mode = 0xff } @@ -32065,9 +31767,9 @@ func GetBestPredictorForTile(tls *libc.TLS, width int32, height int32, tile_x in // to allow the top right pixel to point to the leftmost pixel of the next row // when at the right edge. var upper_row uintptr = argb_scratch - var current_row uintptr = ((upper_row + uintptr(width)*4) + uintptr(1)*4) - var max_diffs uintptr = ((current_row + uintptr(width)*4) + uintptr(1)*4) - var best_diff float32 = (1e30) + var current_row uintptr = upper_row + uintptr(width)*4 + uintptr(1)*4 + var max_diffs uintptr = current_row + uintptr(width)*4 + uintptr(1)*4 + var best_diff float32 = 1e30 var best_mode int32 = 0 var mode int32 // var histo_stack_1 [4][256]int32 at bp, 4096 @@ -32075,8 +31777,8 @@ func GetBestPredictorForTile(tls *libc.TLS, width int32, height int32, tile_x in // var histo_stack_2 [4][256]int32 at bp+4096, 4096 // Need pointers to be able to swap arrays. - var histo_argb uintptr = (bp) /* histo_stack_1 */ - var best_histo uintptr = (bp + 4096) /* histo_stack_2 */ + var histo_argb uintptr = bp /* histo_stack_1 */ + var best_histo uintptr = bp + 4096 /* histo_stack_2 */ var i int32 var j int32 // var residuals [64]uint32_t at bp+8192, 256 @@ -32090,12 +31792,12 @@ func GetBestPredictorForTile(tls *libc.TLS, width int32, height int32, tile_x in // Include a pixel to the left if it exists; include a pixel to the right // in all cases (wrapping to the leftmost pixel of the next row if it does // not exist). - libc.Xmemcpy(tls, (current_row + uintptr(context_start_x)*4), - ((argb + uintptr(((start_y-1)*width))*4) + uintptr(context_start_x)*4), - (uint64(unsafe.Sizeof(uint32_t(0))) * (uint64((max_x + have_left) + 1)))) + libc.Xmemcpy(tls, current_row+uintptr(context_start_x)*4, + argb+uintptr((start_y-1)*width)*4+uintptr(context_start_x)*4, + uint64(unsafe.Sizeof(uint32_t(0)))*uint64(max_x+have_left+1)) } for relative_y = 0; relative_y < max_y; relative_y++ { - var y int32 = (start_y + relative_y) + var y int32 = start_y + relative_y var relative_x int32 var tmp uintptr = upper_row upper_row = current_row @@ -32104,29 +31806,29 @@ func GetBestPredictorForTile(tls *libc.TLS, width int32, height int32, tile_x in // pixel to the right in all cases except at the bottom right corner of // the image (wrapping to the leftmost pixel of the next row if it does // not exist in the current row). - libc.Xmemcpy(tls, (current_row + uintptr(context_start_x)*4), - ((argb + uintptr((y*width))*4) + uintptr(context_start_x)*4), - (uint64(unsafe.Sizeof(uint32_t(0))) * (uint64((max_x + have_left) + (libc.Bool32((y + 1) < height)))))) - if ((max_quantization > 1) && (y >= 1)) && ((y + 1) < height) { - MaxDiffsForRow(tls, context_width, width, ((argb + uintptr((y*width))*4) + uintptr(context_start_x)*4), - (max_diffs + uintptr(context_start_x)), used_subtract_green) + libc.Xmemcpy(tls, current_row+uintptr(context_start_x)*4, + argb+uintptr(y*width)*4+uintptr(context_start_x)*4, + uint64(unsafe.Sizeof(uint32_t(0)))*uint64(max_x+have_left+libc.Bool32(y+1 < height))) + if max_quantization > 1 && y >= 1 && y+1 < height { + MaxDiffsForRow(tls, context_width, width, argb+uintptr(y*width)*4+uintptr(context_start_x)*4, + max_diffs+uintptr(context_start_x), used_subtract_green) } GetResidual(tls, width, height, upper_row, current_row, max_diffs, mode, - start_x, (start_x + max_x), y, max_quantization, exact, - used_subtract_green, (bp + 8192) /* &residuals[0] */) + start_x, start_x+max_x, y, max_quantization, exact, + used_subtract_green, bp+8192) for relative_x = 0; relative_x < max_x; relative_x++ { - UpdateHisto(tls, histo_argb, *(*uint32_t)(unsafe.Pointer((bp + 8192) /* &residuals[0] */ + uintptr(relative_x)*4))) + UpdateHisto(tls, histo_argb, *(*uint32_t)(unsafe.Pointer(bp + 8192 + uintptr(relative_x)*4))) } } cur_diff = PredictionCostSpatialHistogram(tls, accumulated, histo_argb) // Favor keeping the areas locally similar. if mode == left_mode { - cur_diff = cur_diff - (kSpatialPredictorBias) + cur_diff = cur_diff - kSpatialPredictorBias } if mode == above_mode { - cur_diff = cur_diff - (kSpatialPredictorBias) + cur_diff = cur_diff - kSpatialPredictorBias } if cur_diff < best_diff { @@ -32140,7 +31842,7 @@ func GetBestPredictorForTile(tls *libc.TLS, width int32, height int32, tile_x in for i = 0; i < 4; i++ { for j = 0; j < 256; j++ { - *(*int32)(unsafe.Pointer(((accumulated + uintptr(i)*1024) + uintptr(j)*4))) += (*(*int32)(unsafe.Pointer((best_histo + uintptr(i)*1024) + uintptr(j)*4))) + *(*int32)(unsafe.Pointer(accumulated + uintptr(i)*1024 + uintptr(j)*4)) += *(*int32)(unsafe.Pointer(best_histo + uintptr(i)*1024 + uintptr(j)*4)) } } @@ -32157,9 +31859,9 @@ func CopyImageWithPrediction(tls *libc.TLS, width int32, height int32, bits int3 // to allow the top right pixel to point to the leftmost pixel of the next row // when at the right edge. var upper_row uintptr = argb_scratch - var current_row uintptr = ((upper_row + uintptr(width)*4) + uintptr(1)*4) - var current_max_diffs uintptr = ((current_row + uintptr(width)*4) + uintptr(1)*4) - var lower_max_diffs uintptr = (current_max_diffs + uintptr(width)) + var current_row uintptr = upper_row + uintptr(width)*4 + uintptr(1)*4 + var current_max_diffs uintptr = current_row + uintptr(width)*4 + uintptr(1)*4 + var lower_max_diffs uintptr = current_max_diffs + uintptr(width) var y int32 for y = 0; y < height; y++ { @@ -32167,12 +31869,12 @@ func CopyImageWithPrediction(tls *libc.TLS, width int32, height int32, bits int3 var tmp32 uintptr = upper_row upper_row = current_row current_row = tmp32 - libc.Xmemcpy(tls, current_row, (argb + uintptr((y*width))*4), - (uint64(unsafe.Sizeof(uint32_t(0))) * (uint64(width + (libc.Bool32((y + 1) < height)))))) + libc.Xmemcpy(tls, current_row, argb+uintptr(y*width)*4, + uint64(unsafe.Sizeof(uint32_t(0)))*uint64(width+libc.Bool32(y+1 < height))) if low_effort != 0 { PredictBatch(tls, kPredLowEffort, 0, y, width, current_row, upper_row, - (argb + uintptr((y*width))*4)) + argb+uintptr(y*width)*4) } else { if max_quantization > 1 { // Compute max_diffs for the lower row now, because that needs the @@ -32181,20 +31883,20 @@ func CopyImageWithPrediction(tls *libc.TLS, width int32, height int32, bits int3 var tmp8 uintptr = current_max_diffs current_max_diffs = lower_max_diffs lower_max_diffs = tmp8 - if (y + 2) < height { - MaxDiffsForRow(tls, width, width, (argb + uintptr(((y+1)*width))*4), lower_max_diffs, + if y+2 < height { + MaxDiffsForRow(tls, width, width, argb+uintptr((y+1)*width)*4, lower_max_diffs, used_subtract_green) } } for x = 0; x < width; { - var mode int32 = (int32((*(*uint32_t)(unsafe.Pointer(modes + uintptr((((y>>bits)*tiles_per_row)+(x>>bits)))*4)) >> 8) & uint32_t(0xff))) - var x_end int32 = (x + (int32(1) << bits)) + var mode int32 = int32(*(*uint32_t)(unsafe.Pointer(modes + uintptr(y>>bits*tiles_per_row+x>>bits)*4)) >> 8 & uint32_t(0xff)) + var x_end int32 = x + int32(1)<<bits if x_end > width { x_end = width } GetResidual(tls, width, height, upper_row, current_row, current_max_diffs, mode, x, x_end, y, max_quantization, exact, - used_subtract_green, ((argb + uintptr((y*width))*4) + uintptr(x)*4)) + used_subtract_green, argb+uintptr(y*width)*4+uintptr(x)*4) x = x_end } } @@ -32214,21 +31916,21 @@ func VP8LResidualImage(tls *libc.TLS, width int32, height int32, bits int32, low var tile_y int32 // var histo [4][256]int32 at bp, 4096 - var max_quantization int32 = (int32(1) << VP8LNearLosslessBits(tls, near_lossless_quality)) + var max_quantization int32 = int32(1) << VP8LNearLosslessBits(tls, near_lossless_quality) if low_effort != 0 { var i int32 - for i = 0; i < (tiles_per_row * tiles_per_col); i++ { - *(*uint32_t)(unsafe.Pointer(image + uintptr(i)*4)) = (0xff000000 | (uint32(kPredLowEffort << 8))) + for i = 0; i < tiles_per_row*tiles_per_col; i++ { + *(*uint32_t)(unsafe.Pointer(image + uintptr(i)*4)) = 0xff000000 | uint32(kPredLowEffort<<8) } } else { - libc.Xmemset(tls, (bp) /* &histo[0] */, 0, uint64(unsafe.Sizeof([4][256]int32{}))) + libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof([4][256]int32{}))) for tile_y = 0; tile_y < tiles_per_col; tile_y++ { var tile_x int32 for tile_x = 0; tile_x < tiles_per_row; tile_x++ { var pred int32 = GetBestPredictorForTile(tls, width, height, tile_x, tile_y, - bits, (bp) /* &histo[0] */, argb_scratch, argb, max_quantization, exact, + bits, bp, argb_scratch, argb, max_quantization, exact, used_subtract_green, image) - *(*uint32_t)(unsafe.Pointer(image + uintptr(((tile_y*tiles_per_row)+tile_x))*4)) = (0xff000000 | (uint32(pred << 8))) + *(*uint32_t)(unsafe.Pointer(image + uintptr(tile_y*tiles_per_row+tile_x)*4)) = 0xff000000 | uint32(pred<<8) } } } @@ -32248,19 +31950,19 @@ func MultipliersClear(tls *libc.TLS, m uintptr) { /* predictor_enc.c:510:25: */ } func ColorCodeToMultipliers1(tls *libc.TLS, color_code uint32_t, m uintptr) { /* predictor_enc.c:516:25: */ - (*VP8LMultipliers)(unsafe.Pointer(m)).green_to_red_ = (uint8_t((color_code >> 0) & uint32_t(0xff))) - (*VP8LMultipliers)(unsafe.Pointer(m)).green_to_blue_ = (uint8_t((color_code >> 8) & uint32_t(0xff))) - (*VP8LMultipliers)(unsafe.Pointer(m)).red_to_blue_ = (uint8_t((color_code >> 16) & uint32_t(0xff))) + (*VP8LMultipliers)(unsafe.Pointer(m)).green_to_red_ = uint8_t(color_code >> 0 & uint32_t(0xff)) + (*VP8LMultipliers)(unsafe.Pointer(m)).green_to_blue_ = uint8_t(color_code >> 8 & uint32_t(0xff)) + (*VP8LMultipliers)(unsafe.Pointer(m)).red_to_blue_ = uint8_t(color_code >> 16 & uint32_t(0xff)) } func MultipliersToColorCode(tls *libc.TLS, m uintptr) uint32_t { /* predictor_enc.c:523:29: */ - return (((0xff000000 | ((uint32_t((*VP8LMultipliers)(unsafe.Pointer(m)).red_to_blue_)) << 16)) | ((uint32_t((*VP8LMultipliers)(unsafe.Pointer(m)).green_to_blue_)) << 8)) | uint32((*VP8LMultipliers)(unsafe.Pointer(m)).green_to_red_)) + return 0xff000000 | uint32_t((*VP8LMultipliers)(unsafe.Pointer(m)).red_to_blue_)<<16 | uint32_t((*VP8LMultipliers)(unsafe.Pointer(m)).green_to_blue_)<<8 | uint32((*VP8LMultipliers)(unsafe.Pointer(m)).green_to_red_) } func PredictionCostCrossColor(tls *libc.TLS, accumulated uintptr, counts uintptr) float32 { /* predictor_enc.c:531:14: */ - return ((*struct { + return (*struct { f func(*libc.TLS, uintptr, uintptr) float32 - })(unsafe.Pointer(&struct{ uintptr }{VP8LCombinedShannonEntropy})).f(tls, counts, accumulated) + PredictionCostSpatial(tls, counts, 3, kExpValue)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LCombinedShannonEntropy})).f(tls, counts, accumulated) + PredictionCostSpatial(tls, counts, 3, kExpValue) } var kExpValue float64 = 2.4 /* predictor_enc.c:535:23 */ @@ -32275,23 +31977,23 @@ func GetPredictionCostCrossColorRed(tls *libc.TLS, argb uintptr, stride int32, t (*struct { f func(*libc.TLS, uintptr, int32, int32, int32, int32, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8LCollectColorRedTransforms})).f(tls, argb, stride, tile_width, tile_height, - green_to_red, (bp) /* &histo[0] */) + green_to_red, bp /* &histo[0] */) - cur_diff = PredictionCostCrossColor(tls, accumulated_red_histo, (bp) /* &histo[0] */) + cur_diff = PredictionCostCrossColor(tls, accumulated_red_histo, bp) if int32(uint8_t(green_to_red)) == int32(prev_x.green_to_red_) { - cur_diff = cur_diff - (float32(3)) // favor keeping the areas locally similar + cur_diff = cur_diff - float32(3) // favor keeping the areas locally similar } if int32(uint8_t(green_to_red)) == int32(prev_y.green_to_red_) { - cur_diff = cur_diff - (float32(3)) // favor keeping the areas locally similar + cur_diff = cur_diff - float32(3) // favor keeping the areas locally similar } if green_to_red == 0 { - cur_diff = cur_diff - (float32(3)) + cur_diff = cur_diff - float32(3) } return cur_diff } func GetBestGreenToRed(tls *libc.TLS, argb uintptr, stride int32, tile_width int32, tile_height int32, prev_x VP8LMultipliers, prev_y VP8LMultipliers, quality int32, accumulated_red_histo uintptr, best_tx uintptr) { /* predictor_enc.c:563:13: */ - var kMaxIters int32 = (4 + ((7 * quality) >> 8)) // in range [4..6] + var kMaxIters int32 = 4 + 7*quality>>8 // in range [4..6] var green_to_red_best int32 = 0 var iter int32 var offset int32 @@ -32302,10 +32004,10 @@ func GetBestGreenToRed(tls *libc.TLS, argb uintptr, stride int32, tile_width int // ColorTransformDelta is a 3.5 bit fixed point, so 32 is equal to // one in color computation. Having initial delta here as 1 is sufficient // to explore the range of (-2, 2). - var delta int32 = (int32(32) >> iter) + var delta int32 = int32(32) >> iter // Try a negative and a positive delta from the best known value. - for offset = -delta; offset <= delta; offset = offset + (2 * delta) { - var green_to_red_cur int32 = (offset + green_to_red_best) + for offset = -delta; offset <= delta; offset = offset + 2*delta { + var green_to_red_cur int32 = offset + green_to_red_best var cur_diff float32 = GetPredictionCostCrossColorRed(tls, argb, stride, tile_width, tile_height, prev_x, prev_y, green_to_red_cur, accumulated_red_histo) @@ -32315,7 +32017,7 @@ func GetBestGreenToRed(tls *libc.TLS, argb uintptr, stride int32, tile_width int } } } - (*VP8LMultipliers)(unsafe.Pointer(best_tx)).green_to_red_ = (uint8_t(green_to_red_best & 0xff)) + (*VP8LMultipliers)(unsafe.Pointer(best_tx)).green_to_red_ = uint8_t(green_to_red_best & 0xff) } func GetPredictionCostCrossColorBlue(tls *libc.TLS, argb uintptr, stride int32, tile_width int32, tile_height int32, prev_x VP8LMultipliers, prev_y VP8LMultipliers, green_to_blue int32, red_to_blue int32, accumulated_blue_histo uintptr) float32 { /* predictor_enc.c:593:14: */ @@ -32328,26 +32030,26 @@ func GetPredictionCostCrossColorBlue(tls *libc.TLS, argb uintptr, stride int32, (*struct { f func(*libc.TLS, uintptr, int32, int32, int32, int32, int32, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8LCollectColorBlueTransforms})).f(tls, argb, stride, tile_width, tile_height, - green_to_blue, red_to_blue, (bp) /* &histo[0] */) + green_to_blue, red_to_blue, bp /* &histo[0] */) - cur_diff = PredictionCostCrossColor(tls, accumulated_blue_histo, (bp) /* &histo[0] */) + cur_diff = PredictionCostCrossColor(tls, accumulated_blue_histo, bp) if int32(uint8_t(green_to_blue)) == int32(prev_x.green_to_blue_) { - cur_diff = cur_diff - (float32(3)) // favor keeping the areas locally similar + cur_diff = cur_diff - float32(3) // favor keeping the areas locally similar } if int32(uint8_t(green_to_blue)) == int32(prev_y.green_to_blue_) { - cur_diff = cur_diff - (float32(3)) // favor keeping the areas locally similar + cur_diff = cur_diff - float32(3) // favor keeping the areas locally similar } if int32(uint8_t(red_to_blue)) == int32(prev_x.red_to_blue_) { - cur_diff = cur_diff - (float32(3)) // favor keeping the areas locally similar + cur_diff = cur_diff - float32(3) // favor keeping the areas locally similar } if int32(uint8_t(red_to_blue)) == int32(prev_y.red_to_blue_) { - cur_diff = cur_diff - (float32(3)) // favor keeping the areas locally similar + cur_diff = cur_diff - float32(3) // favor keeping the areas locally similar } if green_to_blue == 0 { - cur_diff = cur_diff - (float32(3)) + cur_diff = cur_diff - float32(3) } if red_to_blue == 0 { - cur_diff = cur_diff - (float32(3)) + cur_diff = cur_diff - float32(3) } return cur_diff } @@ -32357,7 +32059,7 @@ func GetBestGreenRedToBlue(tls *libc.TLS, argb uintptr, stride int32, tile_width defer tls.Free(23) *(*[8][2]int8_t)(unsafe.Pointer(bp + 7 /* offset */)) = - [8][2]int8_t{[2]int8_t{int8(0), int8(-1)}, [2]int8_t{int8(0), int8(1)}, [2]int8_t{int8(-1), int8(0)}, [2]int8_t{int8(1), int8(0)}, [2]int8_t{int8(-1), int8(-1)}, [2]int8_t{int8(-1), int8(1)}, [2]int8_t{int8(1), int8(-1)}, [2]int8_t{int8(1), int8(1)}} + [8][2]int8_t{{int8(0), int8(-1)}, {int8(0), int8(1)}, {int8(-1), int8(0)}, {int8(1), int8(0)}, {int8(-1), int8(-1)}, {int8(-1), int8(1)}, {int8(1), int8(-1)}, {int8(1), int8(1)}} *(*[7]int8_t)(unsafe.Pointer(bp /* delta_lut */)) = [7]int8_t{int8(16), int8(16), int8(8), int8(4), int8(2), int8(2), int8(2)} var iters int32 if quality < 25 { @@ -32377,11 +32079,11 @@ func GetBestGreenRedToBlue(tls *libc.TLS, argb uintptr, stride int32, tile_width argb, stride, tile_width, tile_height, prev_x, prev_y, green_to_blue_best, red_to_blue_best, accumulated_blue_histo) for iter = 0; iter < iters; iter++ { - var delta int32 = int32(*(*int8_t)(unsafe.Pointer((bp) /* &delta_lut[0] */ + uintptr(iter)))) + var delta int32 = int32(*(*int8_t)(unsafe.Pointer(bp + uintptr(iter)))) var axis int32 for axis = 0; axis < 8; axis++ { - var green_to_blue_cur int32 = ((int32(*(*int8_t)(unsafe.Pointer(((bp + 7) /* &offset[0] */ + uintptr(axis)*2)))) * delta) + green_to_blue_best) - var red_to_blue_cur int32 = ((int32(*(*int8_t)(unsafe.Pointer(((bp + 7) /* &offset[0] */ + uintptr(axis)*2) + 1))) * delta) + red_to_blue_best) + var green_to_blue_cur int32 = int32(*(*int8_t)(unsafe.Pointer(bp + 7 + uintptr(axis)*2)))*delta + green_to_blue_best + var red_to_blue_cur int32 = int32(*(*int8_t)(unsafe.Pointer(bp + 7 + uintptr(axis)*2 + 1)))*delta + red_to_blue_best var cur_diff float32 = GetPredictionCostCrossColorBlue(tls, argb, stride, tile_width, tile_height, prev_x, prev_y, green_to_blue_cur, red_to_blue_cur, accumulated_blue_histo) @@ -32390,42 +32092,42 @@ func GetBestGreenRedToBlue(tls *libc.TLS, argb uintptr, stride int32, tile_width green_to_blue_best = green_to_blue_cur red_to_blue_best = red_to_blue_cur } - if (quality < 25) && (iter == 4) { + if quality < 25 && iter == 4 { // Only axis aligned diffs for lower quality. break // next iter. } } - if ((delta == 2) && (green_to_blue_best == 0)) && (red_to_blue_best == 0) { + if delta == 2 && green_to_blue_best == 0 && red_to_blue_best == 0 { // Further iterations would not help. break // out of iter-loop. } } - (*VP8LMultipliers)(unsafe.Pointer(best_tx)).green_to_blue_ = (uint8_t(green_to_blue_best & 0xff)) - (*VP8LMultipliers)(unsafe.Pointer(best_tx)).red_to_blue_ = (uint8_t(red_to_blue_best & 0xff)) + (*VP8LMultipliers)(unsafe.Pointer(best_tx)).green_to_blue_ = uint8_t(green_to_blue_best & 0xff) + (*VP8LMultipliers)(unsafe.Pointer(best_tx)).red_to_blue_ = uint8_t(red_to_blue_best & 0xff) } func GetBestColorTransformForTile(tls *libc.TLS, tile_x int32, tile_y int32, bits int32, prev_x VP8LMultipliers, prev_y VP8LMultipliers, quality int32, xsize int32, ysize int32, accumulated_red_histo uintptr, accumulated_blue_histo uintptr, argb uintptr) VP8LMultipliers { /* predictor_enc.c:675:24: */ bp := tls.Alloc(3) defer tls.Free(3) - var max_tile_size int32 = (int32(1) << bits) - var tile_y_offset int32 = (tile_y * max_tile_size) - var tile_x_offset int32 = (tile_x * max_tile_size) - var all_x_max int32 = GetMin(tls, (tile_x_offset + max_tile_size), xsize) - var all_y_max int32 = GetMin(tls, (tile_y_offset + max_tile_size), ysize) - var tile_width int32 = (all_x_max - tile_x_offset) - var tile_height int32 = (all_y_max - tile_y_offset) - var tile_argb uintptr = ((argb + uintptr((tile_y_offset*xsize))*4) + - uintptr(tile_x_offset)*4) - // var best_tx VP8LMultipliers at bp, 3 + var max_tile_size int32 = int32(1) << bits + var tile_y_offset int32 = tile_y * max_tile_size + var tile_x_offset int32 = tile_x * max_tile_size + var all_x_max int32 = GetMin(tls, tile_x_offset+max_tile_size, xsize) + var all_y_max int32 = GetMin(tls, tile_y_offset+max_tile_size, ysize) + var tile_width int32 = all_x_max - tile_x_offset + var tile_height int32 = all_y_max - tile_y_offset + var tile_argb uintptr = argb + uintptr(tile_y_offset*xsize)*4 + + uintptr(tile_x_offset)*4 + // var best_tx VP8LMultipliers at bp, 3 - MultipliersClear(tls, (bp) /* &best_tx */) + MultipliersClear(tls, bp) GetBestGreenToRed(tls, tile_argb, xsize, tile_width, tile_height, - prev_x, prev_y, quality, accumulated_red_histo, (bp) /* &best_tx */) + prev_x, prev_y, quality, accumulated_red_histo, bp) GetBestGreenRedToBlue(tls, tile_argb, xsize, tile_width, tile_height, prev_x, prev_y, quality, accumulated_blue_histo, - (bp) /* &best_tx */) + bp) return *(*VP8LMultipliers)(unsafe.Pointer(bp /* best_tx */)) } @@ -32434,14 +32136,14 @@ func CopyTileWithColorTransform(tls *libc.TLS, xsize int32, ysize int32, tile_x defer tls.Free(3) *(*VP8LMultipliers)(unsafe.Pointer(bp)) = color_transform - var xscan int32 = GetMin(tls, max_tile_size, (xsize - tile_x)) - var yscan int32 = GetMin(tls, max_tile_size, (ysize - tile_y)) - argb += 4 * (uintptr((tile_y * xsize) + tile_x)) + var xscan int32 = GetMin(tls, max_tile_size, xsize-tile_x) + var yscan int32 = GetMin(tls, max_tile_size, ysize-tile_y) + argb += 4 * uintptr(tile_y*xsize+tile_x) for libc.PostDecInt32(&yscan, 1) > 0 { (*struct { f func(*libc.TLS, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8LTransformColor})).f(tls, (bp) /* &color_transform */, argb, xscan) - argb += 4 * (uintptr(xsize)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LTransformColor})).f(tls, bp /* &color_transform */, argb, xscan) + argb += 4 * uintptr(xsize) } } @@ -32449,7 +32151,7 @@ func VP8LColorSpaceTransform(tls *libc.TLS, width int32, height int32, bits int3 bp := tls.Alloc(2056) defer tls.Free(2056) - var max_tile_size int32 = (int32(1) << bits) + var max_tile_size int32 = int32(1) << bits var tile_xsize int32 = int32(VP8LSubSampleSize(tls, uint32(width), uint32(bits))) var tile_ysize int32 = int32(VP8LSubSampleSize(tls, uint32(height), uint32(bits))) *(*[256]int32)(unsafe.Pointer(bp + 8 /* accumulated_red_histo */)) = [256]int32{0: 0} @@ -32460,43 +32162,43 @@ func VP8LColorSpaceTransform(tls *libc.TLS, width int32, height int32, bits int3 // var prev_y VP8LMultipliers at bp, 3 - MultipliersClear(tls, (bp) /* &prev_y */) - MultipliersClear(tls, (bp + 3) /* &prev_x */) + MultipliersClear(tls, bp) + MultipliersClear(tls, bp+3) for tile_y = 0; tile_y < tile_ysize; tile_y++ { for tile_x = 0; tile_x < tile_xsize; tile_x++ { var y int32 - var tile_x_offset int32 = (tile_x * max_tile_size) - var tile_y_offset int32 = (tile_y * max_tile_size) - var all_x_max int32 = GetMin(tls, (tile_x_offset + max_tile_size), width) - var all_y_max int32 = GetMin(tls, (tile_y_offset + max_tile_size), height) - var offset int32 = ((tile_y * tile_xsize) + tile_x) + var tile_x_offset int32 = tile_x * max_tile_size + var tile_y_offset int32 = tile_y * max_tile_size + var all_x_max int32 = GetMin(tls, tile_x_offset+max_tile_size, width) + var all_y_max int32 = GetMin(tls, tile_y_offset+max_tile_size, height) + var offset int32 = tile_y*tile_xsize + tile_x if tile_y != 0 { - ColorCodeToMultipliers1(tls, *(*uint32_t)(unsafe.Pointer(image + uintptr((offset-tile_xsize))*4)), (bp) /* &prev_y */) + ColorCodeToMultipliers1(tls, *(*uint32_t)(unsafe.Pointer(image + uintptr(offset-tile_xsize)*4)), bp) } *(*VP8LMultipliers)(unsafe.Pointer(bp + 3 /* prev_x */)) = GetBestColorTransformForTile(tls, tile_x, tile_y, bits, *(*VP8LMultipliers)(unsafe.Pointer(bp + 3 /* prev_x */)), *(*VP8LMultipliers)(unsafe.Pointer(bp /* prev_y */)), quality, width, height, - (bp + 8), /* &accumulated_red_histo[0] */ - (bp + 1032), /* &accumulated_blue_histo[0] */ + bp+8, + bp+1032, argb) - *(*uint32_t)(unsafe.Pointer(image + uintptr(offset)*4)) = MultipliersToColorCode(tls, (bp + 3) /* &prev_x */) + *(*uint32_t)(unsafe.Pointer(image + uintptr(offset)*4)) = MultipliersToColorCode(tls, bp+3) CopyTileWithColorTransform(tls, width, height, tile_x_offset, tile_y_offset, max_tile_size, *(*VP8LMultipliers)(unsafe.Pointer(bp + 3 /* prev_x */)), argb) // Gather accumulated histogram data. for y = tile_y_offset; y < all_y_max; y++ { - var ix int32 = ((y * width) + tile_x_offset) - var ix_end int32 = ((ix + all_x_max) - tile_x_offset) + var ix int32 = y*width + tile_x_offset + var ix_end int32 = ix + all_x_max - tile_x_offset for ; ix < ix_end; ix++ { var pix uint32_t = *(*uint32_t)(unsafe.Pointer(argb + uintptr(ix)*4)) - if ((ix >= 2) && (pix == *(*uint32_t)(unsafe.Pointer(argb + uintptr((ix-2))*4)))) && (pix == *(*uint32_t)(unsafe.Pointer(argb + uintptr((ix-1))*4))) { + if ix >= 2 && pix == *(*uint32_t)(unsafe.Pointer(argb + uintptr(ix-2)*4)) && pix == *(*uint32_t)(unsafe.Pointer(argb + uintptr(ix-1)*4)) { continue // repeated pixels are handled by backward references } - if (((ix >= (width + 2)) && (*(*uint32_t)(unsafe.Pointer(argb + uintptr((ix-2))*4)) == *(*uint32_t)(unsafe.Pointer(argb + uintptr(((ix-width)-2))*4)))) && (*(*uint32_t)(unsafe.Pointer(argb + uintptr((ix-1))*4)) == *(*uint32_t)(unsafe.Pointer(argb + uintptr(((ix-width)-1))*4)))) && (pix == *(*uint32_t)(unsafe.Pointer(argb + uintptr((ix-width))*4))) { + if ix >= width+2 && *(*uint32_t)(unsafe.Pointer(argb + uintptr(ix-2)*4)) == *(*uint32_t)(unsafe.Pointer(argb + uintptr(ix-width-2)*4)) && *(*uint32_t)(unsafe.Pointer(argb + uintptr(ix-1)*4)) == *(*uint32_t)(unsafe.Pointer(argb + uintptr(ix-width-1)*4)) && pix == *(*uint32_t)(unsafe.Pointer(argb + uintptr(ix-width)*4)) { continue // repeated pixels are handled by backward references } - *(*int32)(unsafe.Pointer((bp + 8) /* &accumulated_red_histo[0] */ + uintptr(((pix>>16)&uint32_t(0xff)))*4))++ - *(*int32)(unsafe.Pointer((bp + 1032) /* &accumulated_blue_histo[0] */ + uintptr(((pix>>0)&uint32_t(0xff)))*4))++ + *(*int32)(unsafe.Pointer(bp + 8 + uintptr(pix>>16&uint32_t(0xff))*4))++ + *(*int32)(unsafe.Pointer(bp + 1032 + uintptr(pix>>0&uint32_t(0xff))*4))++ } } } @@ -32521,12 +32223,12 @@ func IsFlat_C(tls *libc.TLS, levels uintptr, num_blocks int32, thresh int32) int for libc.PostDecInt32(&num_blocks, 1) > 0 { // TODO(skal): refine positional scoring? var i int32 for i = 1; i < 16; i++ { // omit DC, we're only interested in AC - score = score + (libc.Bool32(int32(*(*int16_t)(unsafe.Pointer(levels + uintptr(i)*2))) != 0)) + score = score + libc.Bool32(int32(*(*int16_t)(unsafe.Pointer(levels + uintptr(i)*2))) != 0) if score > thresh { return 0 } } - levels += 2 * (uintptr(16)) + levels += 2 * uintptr(16) } return 1 } @@ -32537,10 +32239,10 @@ func IsFlatSource16(tls *libc.TLS, src uintptr) int32 { /* quant.h:72:24: */ bp := tls.Alloc(4) defer tls.Free(4) - *(*uint32_t)(unsafe.Pointer(bp /* v */)) = (uint32(*(*uint8_t)(unsafe.Pointer(src))) * 0x01010101) + *(*uint32_t)(unsafe.Pointer(bp /* v */)) = uint32(*(*uint8_t)(unsafe.Pointer(src))) * 0x01010101 var i int32 for i = 0; i < 16; i++ { - if (((libc.Xmemcmp(tls, (src+uintptr(0)), (bp) /* &v */, uint64(4)) != 0) || (libc.Xmemcmp(tls, (src+uintptr(4)), (bp) /* &v */, uint64(4)) != 0)) || (libc.Xmemcmp(tls, (src+uintptr(8)), (bp) /* &v */, uint64(4)) != 0)) || (libc.Xmemcmp(tls, (src+uintptr(12)), (bp) /* &v */, uint64(4)) != 0) { + if libc.Xmemcmp(tls, src+uintptr(0), bp, uint64(4)) != 0 || libc.Xmemcmp(tls, src+uintptr(4), bp, uint64(4)) != 0 || libc.Xmemcmp(tls, src+uintptr(8), bp, uint64(4)) != 0 || libc.Xmemcmp(tls, src+uintptr(12), bp, uint64(4)) != 0 { return 0 } src += uintptr(32) @@ -32633,7 +32335,7 @@ var kAcTable2 = [128]uint16_t{ } /* quant_enc.c:172:23 */ var kBiasMatrices = [3][2]uint8_t{ // [luma-ac,luma-dc,chroma][dc,ac] - [2]uint8_t{uint8_t(96), uint8_t(110)}, [2]uint8_t{uint8_t(96), uint8_t(108)}, [2]uint8_t{uint8_t(110), uint8_t(115)}, + {uint8_t(96), uint8_t(110)}, {uint8_t(96), uint8_t(108)}, {uint8_t(110), uint8_t(115)}, } /* quant_enc.c:191:22 */ // Sharpening by (slightly) raising the hi-frequency coeffs. @@ -32653,32 +32355,32 @@ func ExpandMatrix(tls *libc.TLS, m uintptr, type1 int32) int32 { /* quant_enc.c: var i int32 var sum int32 for i = 0; i < 2; i++ { - var is_ac_coeff int32 = (libc.Bool32(i > 0)) - var bias int32 = int32(*(*uint8_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&kBiasMatrices)) + uintptr(type1)*2) + uintptr(is_ac_coeff)))) - *(*uint16_t)(unsafe.Pointer((m + 32 /* &.iq_ */) + uintptr(i)*2)) = (uint16_t((int32(1) << 17) / int32(*(*uint16_t)(unsafe.Pointer((m /* &.q_ */) + uintptr(i)*2))))) - *(*uint32_t)(unsafe.Pointer((m + 64 /* &.bias_ */) + uintptr(i)*4)) = (uint32_t((bias) << (17 - 8))) + var is_ac_coeff int32 = libc.Bool32(i > 0) + var bias int32 = int32(*(*uint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&kBiasMatrices)) + uintptr(type1)*2 + uintptr(is_ac_coeff)))) + *(*uint16_t)(unsafe.Pointer(m + 32 + uintptr(i)*2)) = uint16_t(int32(1) << 17 / int32(*(*uint16_t)(unsafe.Pointer(m + uintptr(i)*2)))) + *(*uint32_t)(unsafe.Pointer(m + 64 + uintptr(i)*4)) = uint32_t(bias << (17 - 8)) // zthresh_ is the exact value such that QUANTDIV(coeff, iQ, B) is: // * zero if coeff <= zthresh // * non-zero if coeff > zthresh - *(*uint32_t)(unsafe.Pointer((m + 128 /* &.zthresh_ */) + uintptr(i)*4)) = (((uint32_t((int32(1) << 17) - 1)) - *(*uint32_t)(unsafe.Pointer((m + 64 /* &.bias_ */) + uintptr(i)*4))) / uint32_t(*(*uint16_t)(unsafe.Pointer((m + 32 /* &.iq_ */) + uintptr(i)*2)))) + *(*uint32_t)(unsafe.Pointer(m + 128 + uintptr(i)*4)) = (uint32_t(int32(1)<<17-1) - *(*uint32_t)(unsafe.Pointer(m + 64 + uintptr(i)*4))) / uint32_t(*(*uint16_t)(unsafe.Pointer(m + 32 + uintptr(i)*2))) } for i = 2; i < 16; i++ { - *(*uint16_t)(unsafe.Pointer((m /* &.q_ */) + uintptr(i)*2)) = *(*uint16_t)(unsafe.Pointer((m /* &.q_ */) + 1*2)) - *(*uint16_t)(unsafe.Pointer((m + 32 /* &.iq_ */) + uintptr(i)*2)) = *(*uint16_t)(unsafe.Pointer((m + 32 /* &.iq_ */) + 1*2)) - *(*uint32_t)(unsafe.Pointer((m + 64 /* &.bias_ */) + uintptr(i)*4)) = *(*uint32_t)(unsafe.Pointer((m + 64 /* &.bias_ */) + 1*4)) - *(*uint32_t)(unsafe.Pointer((m + 128 /* &.zthresh_ */) + uintptr(i)*4)) = *(*uint32_t)(unsafe.Pointer((m + 128 /* &.zthresh_ */) + 1*4)) + *(*uint16_t)(unsafe.Pointer(m + uintptr(i)*2)) = *(*uint16_t)(unsafe.Pointer(m + 1*2)) + *(*uint16_t)(unsafe.Pointer(m + 32 + uintptr(i)*2)) = *(*uint16_t)(unsafe.Pointer(m + 32 + 1*2)) + *(*uint32_t)(unsafe.Pointer(m + 64 + uintptr(i)*4)) = *(*uint32_t)(unsafe.Pointer(m + 64 + 1*4)) + *(*uint32_t)(unsafe.Pointer(m + 128 + uintptr(i)*4)) = *(*uint32_t)(unsafe.Pointer(m + 128 + 1*4)) } sum = 0 i = 0 for ; i < 16; i++ { if type1 == 0 { // we only use sharpening for AC luma coeffs - *(*uint16_t)(unsafe.Pointer((m + 192 /* &.sharpen_ */) + uintptr(i)*2)) = (uint16_t((int32(kFreqSharpening[i]) * int32(*(*uint16_t)(unsafe.Pointer((m /* &.q_ */) + uintptr(i)*2)))) >> 11)) + *(*uint16_t)(unsafe.Pointer(m + 192 + uintptr(i)*2)) = uint16_t(int32(kFreqSharpening[i]) * int32(*(*uint16_t)(unsafe.Pointer(m + uintptr(i)*2))) >> 11) } else { - *(*uint16_t)(unsafe.Pointer((m + 192 /* &.sharpen_ */) + uintptr(i)*2)) = uint16_t(0) + *(*uint16_t)(unsafe.Pointer(m + 192 + uintptr(i)*2)) = uint16_t(0) } - sum = sum + (int32(*(*uint16_t)(unsafe.Pointer((m /* &.q_ */) + uintptr(i)*2)))) + sum = sum + int32(*(*uint16_t)(unsafe.Pointer(m + uintptr(i)*2))) } - return ((sum + 8) >> 4) + return (sum + 8) >> 4 } func CheckLambdaValue(tls *libc.TLS, v uintptr) { /* quant_enc.c:238:13: */ @@ -32697,47 +32399,47 @@ func SetupMatrices(tls *libc.TLS, enc uintptr) { /* quant_enc.c:240:13: */ } var num_segments int32 = (*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.num_segments_ for i = 0; i < num_segments; i++ { - var m uintptr = ((enc + 608 /* &.dqm_ */) + uintptr(i)*744) + var m uintptr = enc + 608 + uintptr(i)*744 var q int32 = (*VP8SegmentInfo)(unsafe.Pointer(m)).quant_ var q_i4 int32 var q_i16 int32 var q_uv int32 - *(*uint16_t)(unsafe.Pointer((m /* &.y1_ */) /* &.q_ */)) = uint16_t(kDcTable1[clip3(tls, (q+(*VP8Encoder)(unsafe.Pointer(enc)).dq_y1_dc_), 0, 127)]) - *(*uint16_t)(unsafe.Pointer((m /* &.y1_ */) /* &.q_ */ + 1*2)) = kAcTable1[clip3(tls, q, 0, 127)] + *(*uint16_t)(unsafe.Pointer(m)) = uint16_t(kDcTable1[clip3(tls, q+(*VP8Encoder)(unsafe.Pointer(enc)).dq_y1_dc_, 0, 127)]) + *(*uint16_t)(unsafe.Pointer(m + 1*2)) = kAcTable1[clip3(tls, q, 0, 127)] - *(*uint16_t)(unsafe.Pointer((m + 224 /* &.y2_ */) /* &.q_ */)) = (uint16_t(int32(kDcTable1[clip3(tls, (q+(*VP8Encoder)(unsafe.Pointer(enc)).dq_y2_dc_), 0, 127)]) * 2)) - *(*uint16_t)(unsafe.Pointer((m + 224 /* &.y2_ */) /* &.q_ */ + 1*2)) = kAcTable2[clip3(tls, (q+(*VP8Encoder)(unsafe.Pointer(enc)).dq_y2_ac_), 0, 127)] + *(*uint16_t)(unsafe.Pointer(m + 224)) = uint16_t(int32(kDcTable1[clip3(tls, q+(*VP8Encoder)(unsafe.Pointer(enc)).dq_y2_dc_, 0, 127)]) * 2) + *(*uint16_t)(unsafe.Pointer(m + 224 + 1*2)) = kAcTable2[clip3(tls, q+(*VP8Encoder)(unsafe.Pointer(enc)).dq_y2_ac_, 0, 127)] - *(*uint16_t)(unsafe.Pointer((m + 448 /* &.uv_ */) /* &.q_ */)) = uint16_t(kDcTable1[clip3(tls, (q+(*VP8Encoder)(unsafe.Pointer(enc)).dq_uv_dc_), 0, 117)]) - *(*uint16_t)(unsafe.Pointer((m + 448 /* &.uv_ */) /* &.q_ */ + 1*2)) = kAcTable1[clip3(tls, (q+(*VP8Encoder)(unsafe.Pointer(enc)).dq_uv_ac_), 0, 127)] + *(*uint16_t)(unsafe.Pointer(m + 448)) = uint16_t(kDcTable1[clip3(tls, q+(*VP8Encoder)(unsafe.Pointer(enc)).dq_uv_dc_, 0, 117)]) + *(*uint16_t)(unsafe.Pointer(m + 448 + 1*2)) = kAcTable1[clip3(tls, q+(*VP8Encoder)(unsafe.Pointer(enc)).dq_uv_ac_, 0, 127)] - q_i4 = ExpandMatrix(tls, (m /* &.y1_ */), 0) - q_i16 = ExpandMatrix(tls, (m + 224 /* &.y2_ */), 1) - q_uv = ExpandMatrix(tls, (m + 448 /* &.uv_ */), 2) + q_i4 = ExpandMatrix(tls, m, 0) + q_i16 = ExpandMatrix(tls, m+224, 1) + q_uv = ExpandMatrix(tls, m+448, 2) - (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_i4_ = (((3 * q_i4) * q_i4) >> 7) - (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_i16_ = ((3 * q_i16) * q_i16) - (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_uv_ = (((3 * q_uv) * q_uv) >> 6) - (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_mode_ = (((1 * q_i4) * q_i4) >> 7) - (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_trellis_i4_ = (((7 * q_i4) * q_i4) >> 3) - (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_trellis_i16_ = ((q_i16 * q_i16) >> 2) - (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_trellis_uv_ = ((q_uv * q_uv) << 1) - (*VP8SegmentInfo)(unsafe.Pointer(m)).tlambda_ = ((tlambda_scale * q_i4) >> 5) + (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_i4_ = 3 * q_i4 * q_i4 >> 7 + (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_i16_ = 3 * q_i16 * q_i16 + (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_uv_ = 3 * q_uv * q_uv >> 6 + (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_mode_ = 1 * q_i4 * q_i4 >> 7 + (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_trellis_i4_ = 7 * q_i4 * q_i4 >> 3 + (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_trellis_i16_ = q_i16 * q_i16 >> 2 + (*VP8SegmentInfo)(unsafe.Pointer(m)).lambda_trellis_uv_ = q_uv * q_uv << 1 + (*VP8SegmentInfo)(unsafe.Pointer(m)).tlambda_ = tlambda_scale * q_i4 >> 5 // none of these constants should be < 1 - CheckLambdaValue(tls, (m + 700 /* &.lambda_i4_ */)) - CheckLambdaValue(tls, (m + 696 /* &.lambda_i16_ */)) - CheckLambdaValue(tls, (m + 704 /* &.lambda_uv_ */)) - CheckLambdaValue(tls, (m + 708 /* &.lambda_mode_ */)) - CheckLambdaValue(tls, (m + 724 /* &.lambda_trellis_i4_ */)) - CheckLambdaValue(tls, (m + 720 /* &.lambda_trellis_i16_ */)) - CheckLambdaValue(tls, (m + 728 /* &.lambda_trellis_uv_ */)) - CheckLambdaValue(tls, (m + 716 /* &.tlambda_ */)) - - (*VP8SegmentInfo)(unsafe.Pointer(m)).min_disto_ = (20 * int32(*(*uint16_t)(unsafe.Pointer((m /* &.y1_ */) /* &.q_ */)))) // quantization-aware min disto + CheckLambdaValue(tls, m+700) + CheckLambdaValue(tls, m+696) + CheckLambdaValue(tls, m+704) + CheckLambdaValue(tls, m+708) + CheckLambdaValue(tls, m+724) + CheckLambdaValue(tls, m+720) + CheckLambdaValue(tls, m+728) + CheckLambdaValue(tls, m+716) + + (*VP8SegmentInfo)(unsafe.Pointer(m)).min_disto_ = 20 * int32(*(*uint16_t)(unsafe.Pointer(m))) // quantization-aware min disto (*VP8SegmentInfo)(unsafe.Pointer(m)).max_edge_ = 0 - (*VP8SegmentInfo)(unsafe.Pointer(m)).i4_penalty_ = (score_t((1000 * q_i4) * q_i4)) + (*VP8SegmentInfo)(unsafe.Pointer(m)).i4_penalty_ = score_t(1000 * q_i4 * q_i4) } } @@ -32750,14 +32452,14 @@ func SetupMatrices(tls *libc.TLS, enc uintptr) { /* quant_enc.c:240:13: */ func SetupFilterStrength(tls *libc.TLS, enc uintptr) { /* quant_enc.c:296:13: */ var i int32 // level0 is in [0..500]. Using '-f 50' as filter_strength is mid-filtering. - var level0 int32 = (5 * (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).filter_strength) + var level0 int32 = 5 * (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).filter_strength for i = 0; i < NUM_MB_SEGMENTS; i++ { - var m uintptr = ((enc + 608 /* &.dqm_ */) + uintptr(i)*744) + var m uintptr = enc + 608 + uintptr(i)*744 // We focus on the quantization of AC coeffs. - var qstep int32 = (int32(kAcTable1[clip3(tls, (*VP8SegmentInfo)(unsafe.Pointer(m)).quant_, 0, 127)]) >> 2) + var qstep int32 = int32(kAcTable1[clip3(tls, (*VP8SegmentInfo)(unsafe.Pointer(m)).quant_, 0, 127)]) >> 2 var base_strength int32 = VP8FilterStrengthFromDelta(tls, (*VP8Encoder)(unsafe.Pointer(enc)).filter_hdr_.sharpness_, qstep) // Segments with lower complexity ('beta') will be less filtered. - var f int32 = ((base_strength * level0) / (256 + (*VP8SegmentInfo)(unsafe.Pointer(m)).beta_)) + var f int32 = base_strength * level0 / (256 + (*VP8SegmentInfo)(unsafe.Pointer(m)).beta_) (*VP8SegmentInfo)(unsafe.Pointer(m)).fstrength_ = func() int32 { if f < 2 { return 0 @@ -32771,8 +32473,8 @@ func SetupFilterStrength(tls *libc.TLS, enc uintptr) { /* quant_enc.c:296:13: */ }() } // We record the initial strength (mainly for the case of 1-segment only). - (*VP8Encoder)(unsafe.Pointer(enc)).filter_hdr_.level_ = (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */))).fstrength_ - (*VP8Encoder)(unsafe.Pointer(enc)).filter_hdr_.simple_ = (libc.Bool32((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).filter_type == 0)) + (*VP8Encoder)(unsafe.Pointer(enc)).filter_hdr_.level_ = (*VP8SegmentInfo)(unsafe.Pointer(enc + 608)).fstrength_ + (*VP8Encoder)(unsafe.Pointer(enc)).filter_hdr_.simple_ = libc.Bool32((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).filter_type == 0) (*VP8Encoder)(unsafe.Pointer(enc)).filter_hdr_.sharpness_ = (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).filter_sharpness } @@ -32787,9 +32489,9 @@ func SetupFilterStrength(tls *libc.TLS, enc uintptr) { /* quant_enc.c:296:13: */ func QualityToCompression(tls *libc.TLS, c float64) float64 { /* quant_enc.c:326:15: */ var linear_c float64 if c < 0.75 { - linear_c = (c * (float64(2.) / 3.)) + linear_c = c * (float64(2.) / 3.) } else { - linear_c = ((2. * c) - 1.) + linear_c = 2.*c - 1. } // The file size roughly scales as pow(quantizer, 3.). Actually, the // exponent is somewhere between 2.8 and 3.2, but we're mostly interested @@ -32797,7 +32499,7 @@ func QualityToCompression(tls *libc.TLS, c float64) float64 { /* quant_enc.c:326 // this power-law: quant ~= compression ^ 1/3. This law holds well for // low quant. Finer modeling for high-quant would make use of kAcTable[] // more explicitly. - var v float64 = libc.Xpow(tls, linear_c, (float64(float64(1)) / 3.)) + var v float64 = libc.Xpow(tls, linear_c, float64(float64(1))/3.) return v } @@ -32810,7 +32512,7 @@ func QualityToJPEGCompression(tls *libc.TLS, c float64, alpha float64) float64 { var amax float64 = 0.85 var exp_min float64 = 0.4 var exp_max float64 = 0.9 - var slope float64 = ((exp_min - exp_max) / (amax - amin)) + var slope float64 = (exp_min - exp_max) / (amax - amin) // Linearly interpolate 'expn' from exp_min to exp_max // in the [amin, amax] range. var expn float64 @@ -32820,7 +32522,7 @@ func QualityToJPEGCompression(tls *libc.TLS, c float64, alpha float64) float64 { if alpha < amin { expn = exp_max } else { - expn = (exp_max + (slope * (alpha - amin))) + expn = exp_max + slope*(alpha-amin) } } var v float64 = libc.Xpow(tls, c, expn) @@ -32828,7 +32530,7 @@ func QualityToJPEGCompression(tls *libc.TLS, c float64, alpha float64) float64 { } func SegmentsAreEquivalent(tls *libc.TLS, S1 uintptr, S2 uintptr) int32 { /* quant_enc.c:357:12: */ - return (libc.Bool32(((*VP8SegmentInfo)(unsafe.Pointer(S1)).quant_ == (*VP8SegmentInfo)(unsafe.Pointer(S2)).quant_) && ((*VP8SegmentInfo)(unsafe.Pointer(S1)).fstrength_ == (*VP8SegmentInfo)(unsafe.Pointer(S2)).fstrength_))) + return libc.Bool32((*VP8SegmentInfo)(unsafe.Pointer(S1)).quant_ == (*VP8SegmentInfo)(unsafe.Pointer(S2)).quant_ && (*VP8SegmentInfo)(unsafe.Pointer(S1)).fstrength_ == (*VP8SegmentInfo)(unsafe.Pointer(S2)).fstrength_) } func SimplifySegments(tls *libc.TLS, enc uintptr) { /* quant_enc.c:362:13: */ @@ -32849,33 +32551,33 @@ func SimplifySegments(tls *libc.TLS, enc uintptr) { /* quant_enc.c:362:13: */ var s1 int32 var s2 int32 for s1 = 1; s1 < num_segments; s1++ { // find similar segments - var S1 uintptr = ((enc + 608 /* &.dqm_ */) + uintptr(s1)*744) + var S1 uintptr = enc + 608 + uintptr(s1)*744 var found int32 = 0 // check if we already have similar segment for s2 = 0; s2 < num_final_segments; s2++ { - var S2 uintptr = ((enc + 608 /* &.dqm_ */) + uintptr(s2)*744) + var S2 uintptr = enc + 608 + uintptr(s2)*744 if SegmentsAreEquivalent(tls, S1, S2) != 0 { found = 1 break } } - *(*int32)(unsafe.Pointer((bp) /* &map1[0] */ + uintptr(s1)*4)) = s2 + *(*int32)(unsafe.Pointer(bp + uintptr(s1)*4)) = s2 if !(found != 0) { if num_final_segments != s1 { - *(*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(num_final_segments)*744)) = *(*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(s1)*744)) + *(*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(num_final_segments)*744)) = *(*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(s1)*744)) } num_final_segments++ } } if num_final_segments < num_segments { // Remap - var i int32 = ((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_) + var i int32 = (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_ for libc.PostDecInt32(&i, 1) > 0 { - libc.SetBitFieldPtr8Uint32(((*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr(i)*4) /* &.segment_ */, uint32(*(*int32)(unsafe.Pointer((bp) /* &map1[0] */ + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer(((*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr(i)*4) /* &.segment_ */))&0x60>>5))))*4))), 5, 0x60) + libc.SetBitFieldPtr8Uint32((*VP8Encoder)(unsafe.Pointer(enc)).mb_info_+uintptr(i)*4, uint32(*(*int32)(unsafe.Pointer(bp + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ + uintptr(i)*4))&0x60>>5)))*4))), 5, 0x60) } (*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.num_segments_ = num_final_segments // Replicate the trailing segment infos (it's mostly cosmetics) for i = num_final_segments; i < num_segments; i++ { - *(*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(i)*744)) = *(*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr((num_final_segments-1))*744)) + *(*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(i)*744)) = *(*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(num_final_segments-1)*744)) } } } @@ -32885,45 +32587,45 @@ func VP8SetSegmentParams(tls *libc.TLS, enc uintptr, quality float32) { /* quant var dq_uv_ac int32 var dq_uv_dc int32 var num_segments int32 = (*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.num_segments_ - var amp float64 = (((0.9 * float64((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).sns_strength)) / 100.) / 128.) - var Q float64 = (float64(quality) / 100.) + var amp float64 = 0.9 * float64((*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).sns_strength) / 100. / 128. + var Q float64 = float64(quality) / 100. var c_base float64 if (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).emulate_jpeg_size != 0 { - c_base = QualityToJPEGCompression(tls, Q, (float64((*VP8Encoder)(unsafe.Pointer(enc)).alpha_) / 255.)) + c_base = QualityToJPEGCompression(tls, Q, float64((*VP8Encoder)(unsafe.Pointer(enc)).alpha_)/255.) } else { c_base = QualityToCompression(tls, Q) } for i = 0; i < num_segments; i++ { // We modulate the base coefficient to accommodate for the quantization // susceptibility and allow denser segments to be quantized more. - var expn float64 = (1. - (amp * float64((*VP8SegmentInfo)(unsafe.Pointer((enc+608 /* &.dqm_ */)+uintptr(i)*744)).alpha_))) + var expn float64 = 1. - amp*float64((*VP8SegmentInfo)(unsafe.Pointer(enc+608+uintptr(i)*744)).alpha_) var c float64 = libc.Xpow(tls, c_base, expn) - var q int32 = (libc.Int32FromFloat64(127. * (1. - c))) + var q int32 = libc.Int32FromFloat64(127. * (1. - c)) - (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(i)*744)).quant_ = clip3(tls, q, 0, 127) + (*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(i)*744)).quant_ = clip3(tls, q, 0, 127) } // purely indicative in the bitstream (except for the 1-segment case) - (*VP8Encoder)(unsafe.Pointer(enc)).base_quant_ = (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */))).quant_ + (*VP8Encoder)(unsafe.Pointer(enc)).base_quant_ = (*VP8SegmentInfo)(unsafe.Pointer(enc + 608)).quant_ // fill-in values for the unused segments (required by the syntax) for i = num_segments; i < NUM_MB_SEGMENTS; i++ { - (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(i)*744)).quant_ = (*VP8Encoder)(unsafe.Pointer(enc)).base_quant_ + (*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(i)*744)).quant_ = (*VP8Encoder)(unsafe.Pointer(enc)).base_quant_ } // uv_alpha_ is normally spread around ~60. The useful range is // typically ~30 (quite bad) to ~100 (ok to decimate UV more). // We map it to the safe maximal range of MAX/MIN_DQ_UV for dq_uv. - dq_uv_ac = ((((*VP8Encoder)(unsafe.Pointer(enc)).uv_alpha_ - 64) * ((6) - (-4))) / - (100 - 30)) + dq_uv_ac = ((*VP8Encoder)(unsafe.Pointer(enc)).uv_alpha_ - 64) * (6 - -4) / + (100 - 30) // we rescale by the user-defined strength of adaptation - dq_uv_ac = ((dq_uv_ac * (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).sns_strength) / 100) + dq_uv_ac = dq_uv_ac * (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).sns_strength / 100 // and make it safe. - dq_uv_ac = clip3(tls, dq_uv_ac, (-4), (6)) + dq_uv_ac = clip3(tls, dq_uv_ac, -4, 6) // We also boost the dc-uv-quant a little, based on sns-strength, since // U/V channels are quite more reactive to high quants (flat DC-blocks // tend to appear, and are unpleasant). - dq_uv_dc = ((-4 * (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).sns_strength) / 100) + dq_uv_dc = -4 * (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).sns_strength / 100 dq_uv_dc = clip3(tls, dq_uv_dc, -15, 15) // 4bit-signed max allowed (*VP8Encoder)(unsafe.Pointer(enc)).dq_y1_dc_ = 0 // TODO(skal): dq-lum @@ -32945,12 +32647,12 @@ func VP8SetSegmentParams(tls *libc.TLS, enc uintptr, quality float32) { /* quant // Form the predictions in cache // Must be ordered using {DC_PRED, TM_PRED, V_PRED, H_PRED} as index -var VP8I16ModeOffsets = [4]uint16_t{(uint16_t((0 * 16) * 32)), (uint16_t(((0 * 16) * 32) + 16)), (uint16_t((1 * 16) * 32)), (uint16_t(((1 * 16) * 32) + 16))} /* quant_enc.c:461:16 */ -var VP8UVModeOffsets = [4]uint16_t{(uint16_t((2 * 16) * 32)), (uint16_t(((2 * 16) * 32) + (1 * 16))), (uint16_t(((2 * 16) * 32) + (8 * 32))), (uint16_t((((2 * 16) * 32) + (8 * 32)) + (1 * 16)))} /* quant_enc.c:462:16 */ +var VP8I16ModeOffsets = [4]uint16_t{uint16_t(0 * 16 * 32), uint16_t(0*16*32 + 16), uint16_t(1 * 16 * 32), uint16_t(1*16*32 + 16)} /* quant_enc.c:461:16 */ +var VP8UVModeOffsets = [4]uint16_t{uint16_t(2 * 16 * 32), uint16_t(2*16*32 + 1*16), uint16_t(2*16*32 + 8*32), uint16_t(2*16*32 + 8*32 + 1*16)} /* quant_enc.c:462:16 */ // Must be indexed using {B_DC_PRED -> B_HU_PRED} as index var VP8I4ModeOffsets = [10]uint16_t{ - (uint16_t(((3 * 16) * 32) + 0)), (uint16_t((((3 * 16) * 32) + 0) + 4)), (uint16_t((((3 * 16) * 32) + 0) + 8)), (uint16_t((((3 * 16) * 32) + 0) + 12)), (uint16_t((((3 * 16) * 32) + 0) + 16)), (uint16_t((((3 * 16) * 32) + 0) + 20)), (uint16_t((((3 * 16) * 32) + 0) + 24)), (uint16_t((((3 * 16) * 32) + 0) + 28)), (uint16_t(((3 * 16) * 32) + (4 * 32))), (uint16_t((((3 * 16) * 32) + (4 * 32)) + 4)), + uint16_t(3*16*32 + 0), uint16_t(3*16*32 + 0 + 4), uint16_t(3*16*32 + 0 + 8), uint16_t(3*16*32 + 0 + 12), uint16_t(3*16*32 + 0 + 16), uint16_t(3*16*32 + 0 + 20), uint16_t(3*16*32 + 0 + 24), uint16_t(3*16*32 + 0 + 28), uint16_t(3*16*32 + 4*32), uint16_t(3*16*32 + 4*32 + 4), } /* quant_enc.c:465:16 */ func VP8MakeLuma16Preds(tls *libc.TLS, it uintptr) { /* quant_enc.c:469:6: */ @@ -32958,13 +32660,13 @@ func VP8MakeLuma16Preds(tls *libc.TLS, it uintptr) { /* quant_enc.c:469:6: */ if (*VP8EncIterator)(unsafe.Pointer(it)).x_ != 0 { left = (*VP8EncIterator)(unsafe.Pointer(it)).y_left_ } else { - left = (uintptr(0)) + left = uintptr(0) } var top uintptr if (*VP8EncIterator)(unsafe.Pointer(it)).y_ != 0 { top = (*VP8EncIterator)(unsafe.Pointer(it)).y_top_ } else { - top = (uintptr(0)) + top = uintptr(0) } (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) @@ -32976,13 +32678,13 @@ func VP8MakeChroma8Preds(tls *libc.TLS, it uintptr) { /* quant_enc.c:475:6: */ if (*VP8EncIterator)(unsafe.Pointer(it)).x_ != 0 { left = (*VP8EncIterator)(unsafe.Pointer(it)).u_left_ } else { - left = (uintptr(0)) + left = uintptr(0) } var top uintptr if (*VP8EncIterator)(unsafe.Pointer(it)).y_ != 0 { top = (*VP8EncIterator)(unsafe.Pointer(it)).uv_top_ } else { - top = (uintptr(0)) + top = uintptr(0) } (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) @@ -33007,15 +32709,15 @@ func VP8MakeIntra4Preds(tls *libc.TLS, it uintptr) { /* quant_enc.c:481:6: */ // +----+----+ var VP8Scan = [16]uint16_t{ // Luma - (uint16_t(0 + (0 * 32))), (uint16_t(4 + (0 * 32))), (uint16_t(8 + (0 * 32))), (uint16_t(12 + (0 * 32))), - (uint16_t(0 + (4 * 32))), (uint16_t(4 + (4 * 32))), (uint16_t(8 + (4 * 32))), (uint16_t(12 + (4 * 32))), - (uint16_t(0 + (8 * 32))), (uint16_t(4 + (8 * 32))), (uint16_t(8 + (8 * 32))), (uint16_t(12 + (8 * 32))), - (uint16_t(0 + (12 * 32))), (uint16_t(4 + (12 * 32))), (uint16_t(8 + (12 * 32))), (uint16_t(12 + (12 * 32))), + uint16_t(0 + 0*32), uint16_t(4 + 0*32), uint16_t(8 + 0*32), uint16_t(12 + 0*32), + uint16_t(0 + 4*32), uint16_t(4 + 4*32), uint16_t(8 + 4*32), uint16_t(12 + 4*32), + uint16_t(0 + 8*32), uint16_t(4 + 8*32), uint16_t(8 + 8*32), uint16_t(12 + 8*32), + uint16_t(0 + 12*32), uint16_t(4 + 12*32), uint16_t(8 + 12*32), uint16_t(12 + 12*32), } /* quant_enc.c:496:16 */ var VP8ScanUV = [8]uint16_t{ - (uint16_t(0 + (0 * 32))), (uint16_t(4 + (0 * 32))), (uint16_t(0 + (4 * 32))), (uint16_t(4 + (4 * 32))), // U - (uint16_t(8 + (0 * 32))), (uint16_t(12 + (0 * 32))), (uint16_t(8 + (4 * 32))), (uint16_t(12 + (4 * 32))), // V + uint16_t(0 + 0*32), uint16_t(4 + 0*32), uint16_t(0 + 4*32), uint16_t(4 + 4*32), + uint16_t(8 + 0*32), uint16_t(12 + 0*32), uint16_t(8 + 4*32), uint16_t(12 + 4*32), } /* quant_enc.c:503:23 */ //------------------------------------------------------------------------------ @@ -33039,7 +32741,7 @@ func InitScore(tls *libc.TLS, rd uintptr) { /* quant_enc.c:527:13: */ (*VP8ModeScore)(unsafe.Pointer(rd)).R = int64(0) (*VP8ModeScore)(unsafe.Pointer(rd)).H = int64(0) (*VP8ModeScore)(unsafe.Pointer(rd)).nz = uint32_t(0) - (*VP8ModeScore)(unsafe.Pointer(rd)).score = (0x7fffffffffffff) + (*VP8ModeScore)(unsafe.Pointer(rd)).score = 0x7fffffffffffff } func CopyScore(tls *libc.TLS, dst uintptr, src uintptr) { /* quant_enc.c:536:13: */ @@ -33052,12 +32754,12 @@ func CopyScore(tls *libc.TLS, dst uintptr, src uintptr) { /* quant_enc.c:536:13: } func AddScore(tls *libc.TLS, dst uintptr, src uintptr) { /* quant_enc.c:545:13: */ - *(*score_t)(unsafe.Pointer((dst /* &.D */))) += ((*VP8ModeScore)(unsafe.Pointer(src)).D) - *(*score_t)(unsafe.Pointer((dst + 8 /* &.SD */))) += ((*VP8ModeScore)(unsafe.Pointer(src)).SD) - *(*score_t)(unsafe.Pointer((dst + 24 /* &.R */))) += ((*VP8ModeScore)(unsafe.Pointer(src)).R) - *(*score_t)(unsafe.Pointer((dst + 16 /* &.H */))) += ((*VP8ModeScore)(unsafe.Pointer(src)).H) - *(*uint32_t)(unsafe.Pointer((dst + 864 /* &.nz */))) |= ((*VP8ModeScore)(unsafe.Pointer(src)).nz) // here, new nz bits are accumulated. - *(*score_t)(unsafe.Pointer((dst + 32 /* &.score */))) += ((*VP8ModeScore)(unsafe.Pointer(src)).score) + *(*score_t)(unsafe.Pointer(dst)) += (*VP8ModeScore)(unsafe.Pointer(src)).D + *(*score_t)(unsafe.Pointer(dst + 8)) += (*VP8ModeScore)(unsafe.Pointer(src)).SD + *(*score_t)(unsafe.Pointer(dst + 24)) += (*VP8ModeScore)(unsafe.Pointer(src)).R + *(*score_t)(unsafe.Pointer(dst + 16)) += (*VP8ModeScore)(unsafe.Pointer(src)).H + *(*uint32_t)(unsafe.Pointer(dst + 864)) |= (*VP8ModeScore)(unsafe.Pointer(src)).nz // here, new nz bits are accumulated. + *(*score_t)(unsafe.Pointer(dst + 32)) += (*VP8ModeScore)(unsafe.Pointer(src)).score } //------------------------------------------------------------------------------ @@ -33081,19 +32783,19 @@ type ScoreState = struct { // We don't test negative values though. func SetRDScore(tls *libc.TLS, lambda int32, rd uintptr) { /* quant_enc.c:579:25: */ - (*VP8ModeScore)(unsafe.Pointer(rd)).score = ((((*VP8ModeScore)(unsafe.Pointer(rd)).R + (*VP8ModeScore)(unsafe.Pointer(rd)).H) * score_t(lambda)) + (int64(256) * ((*VP8ModeScore)(unsafe.Pointer(rd)).D + (*VP8ModeScore)(unsafe.Pointer(rd)).SD))) + (*VP8ModeScore)(unsafe.Pointer(rd)).score = ((*VP8ModeScore)(unsafe.Pointer(rd)).R+(*VP8ModeScore)(unsafe.Pointer(rd)).H)*score_t(lambda) + int64(256)*((*VP8ModeScore)(unsafe.Pointer(rd)).D+(*VP8ModeScore)(unsafe.Pointer(rd)).SD) } func RDScoreTrellis(tls *libc.TLS, lambda int32, rate score_t, distortion score_t) score_t { /* quant_enc.c:583:28: */ - return ((rate * score_t(lambda)) + (int64(256) * distortion)) + return rate*score_t(lambda) + int64(256)*distortion } func TrellisQuantizeBlock(tls *libc.TLS, enc uintptr, in uintptr, out uintptr, ctx0 int32, coeff_type int32, mtx uintptr, lambda int32) int32 { /* quant_enc.c:591:12: */ bp := tls.Alloc(204) defer tls.Free(204) - var probas uintptr = (((enc + 3616 /* &.proba_ */) + 4 /* &.coeffs_ */) + uintptr(coeff_type)*264) - var costs CostArrayPtr = (((enc + 3616 /* &.proba_ */) + 18344 /* &.remapped_costs_ */) + uintptr(coeff_type)*384) + var probas uintptr = enc + 3616 + 4 + uintptr(coeff_type)*264 + var costs CostArrayPtr = enc + 3616 + 18344 + uintptr(coeff_type)*384 var first int32 if coeff_type == TYPE_I16_AC { first = 1 @@ -33104,8 +32806,8 @@ func TrellisQuantizeBlock(tls *libc.TLS, enc uintptr, in uintptr, out uintptr, c // var score_states [2][2]ScoreState at bp, 64 - var ss_cur uintptr = (bp) /* &score_states */ - var ss_prev uintptr = ((bp) /* &score_states */ + 1*32) + var ss_cur uintptr = bp + var ss_prev uintptr = bp + 1*32 *(*[3]int32)(unsafe.Pointer(bp + 192 /* best_path */)) = [3]int32{-1, -1, -1} // store best-last/best-level/best-previous var best_score score_t var n int32 @@ -33115,14 +32817,14 @@ func TrellisQuantizeBlock(tls *libc.TLS, enc uintptr, in uintptr, out uintptr, c { var cost score_t - var thresh int32 = ((int32(*(*uint16_t)(unsafe.Pointer((mtx /* &.q_ */) + 1*2))) * int32(*(*uint16_t)(unsafe.Pointer((mtx /* &.q_ */) + 1*2)))) / 4) - var last_proba int32 = int32(*(*uint8_t)(unsafe.Pointer(((probas + uintptr(VP8EncBands[first])*33) + uintptr(ctx0)*11)))) + var thresh int32 = int32(*(*uint16_t)(unsafe.Pointer(mtx + 1*2))) * int32(*(*uint16_t)(unsafe.Pointer(mtx + 1*2))) / 4 + var last_proba int32 = int32(*(*uint8_t)(unsafe.Pointer(probas + uintptr(VP8EncBands[first])*33 + uintptr(ctx0)*11))) // compute the position of the last interesting coefficient - last = (first - 1) + last = first - 1 for n = 15; n >= first; n-- { var j int32 = int32(kZigzag2[n]) - var err int32 = (int32(*(*int16_t)(unsafe.Pointer(in + uintptr(j)*2))) * int32(*(*int16_t)(unsafe.Pointer(in + uintptr(j)*2)))) + var err int32 = int32(*(*int16_t)(unsafe.Pointer(in + uintptr(j)*2))) * int32(*(*int16_t)(unsafe.Pointer(in + uintptr(j)*2))) if err > thresh { last = n break @@ -33147,7 +32849,7 @@ func TrellisQuantizeBlock(tls *libc.TLS, enc uintptr, in uintptr, out uintptr, c rate = int64(0) } (*ScoreState)(unsafe.Pointer(ss_cur + uintptr(m)*16)).score = RDScoreTrellis(tls, lambda, rate, int64(0)) - (*ScoreState)(unsafe.Pointer(ss_cur + uintptr(m)*16)).costs = *(*uintptr)(unsafe.Pointer((costs + uintptr(first)*24) + uintptr(ctx0)*8)) + (*ScoreState)(unsafe.Pointer(ss_cur + uintptr(m)*16)).costs = *(*uintptr)(unsafe.Pointer(costs + uintptr(first)*24 + uintptr(ctx0)*8)) } } @@ -33155,20 +32857,20 @@ func TrellisQuantizeBlock(tls *libc.TLS, enc uintptr, in uintptr, out uintptr, c // traverse trellis. for n = first; n <= last; n++ { var j int32 = int32(kZigzag2[n]) - var Q uint32_t = uint32_t(*(*uint16_t)(unsafe.Pointer((mtx /* &.q_ */) + uintptr(j)*2))) - var iQ uint32_t = uint32_t(*(*uint16_t)(unsafe.Pointer((mtx + 32 /* &.iq_ */) + uintptr(j)*2))) - var B uint32_t = (uint32_t(int32((0x00)) << (17 - 8))) // neutral bias + var Q uint32_t = uint32_t(*(*uint16_t)(unsafe.Pointer(mtx + uintptr(j)*2))) + var iQ uint32_t = uint32_t(*(*uint16_t)(unsafe.Pointer(mtx + 32 + uintptr(j)*2))) + var B uint32_t = uint32_t(int32(0x00) << (17 - 8)) // neutral bias // note: it's important to take sign of the _original_ coeff, // so we don't have to consider level < 0 afterward. - var sign int32 = (libc.Bool32(int32(*(*int16_t)(unsafe.Pointer(in + uintptr(j)*2))) < 0)) - var coeff0 uint32_t = (uint32_t((func() int32 { + var sign int32 = libc.Bool32(int32(*(*int16_t)(unsafe.Pointer(in + uintptr(j)*2))) < 0) + var coeff0 uint32_t = uint32_t(func() int32 { if sign != 0 { return -int32(*(*int16_t)(unsafe.Pointer(in + uintptr(j)*2))) } return int32(*(*int16_t)(unsafe.Pointer(in + uintptr(j)*2))) - }()) + int32(*(*uint16_t)(unsafe.Pointer((mtx + 192 /* &.sharpen_ */) + uintptr(j)*2))))) + }() + int32(*(*uint16_t)(unsafe.Pointer(mtx + 192 + uintptr(j)*2)))) var level0 int32 = QUANTDIV(tls, coeff0, iQ, B) - var thresh_level int32 = QUANTDIV(tls, coeff0, iQ, (uint32(int32((0x80)) << (17 - 8)))) + var thresh_level int32 = QUANTDIV(tls, coeff0, iQ, uint32(int32(0x80)<<(17-8))) if thresh_level > MAX_LEVEL { thresh_level = MAX_LEVEL } @@ -33185,24 +32887,24 @@ func TrellisQuantizeBlock(tls *libc.TLS, enc uintptr, in uintptr, out uintptr, c // test all alternate level values around level0. for m = -0; m <= 1; m++ { - var cur uintptr = (((bp + 64) /* &nodes */ + uintptr((n))*8) + uintptr(((m)+0))*4) - var level int32 = (level0 + m) + var cur uintptr = bp + 64 + uintptr(n)*8 + uintptr(m+0)*4 + var level int32 = level0 + m var ctx int32 if level > 2 { ctx = 2 } else { ctx = level } - var band int32 = int32(VP8EncBands[(n + 1)]) + var band int32 = int32(VP8EncBands[n+1]) var base_score score_t var best_cur_score score_t var best_prev int32 var cost score_t var score score_t - (*ScoreState)(unsafe.Pointer(ss_cur + uintptr(m)*16)).costs = *(*uintptr)(unsafe.Pointer((costs + uintptr((n+1))*24) + uintptr(ctx)*8)) - if (level < 0) || (level > thresh_level) { - (*ScoreState)(unsafe.Pointer(ss_cur + uintptr(m)*16)).score = (0x7fffffffffffff) + (*ScoreState)(unsafe.Pointer(ss_cur + uintptr(m)*16)).costs = *(*uintptr)(unsafe.Pointer(costs + uintptr(n+1)*24 + uintptr(ctx)*8)) + if level < 0 || level > thresh_level { + (*ScoreState)(unsafe.Pointer(ss_cur + uintptr(m)*16)).score = 0x7fffffffffffff // Node is dead. continue } @@ -33211,8 +32913,8 @@ func TrellisQuantizeBlock(tls *libc.TLS, enc uintptr, in uintptr, out uintptr, c // Compute delta_error = how much coding this level will // subtract to max_error as distortion. // Here, distortion = sum of (|coeff_i| - level_i * Q_i)^2 - var new_error int32 = (int32(coeff0 - (uint32_t(level) * Q))) - var delta_error int32 = (int32(uint32_t(kWeightTrellis[j]) * ((uint32_t(new_error * new_error)) - (coeff0 * coeff0)))) + var new_error int32 = int32(coeff0 - uint32_t(level)*Q) + var delta_error int32 = int32(uint32_t(kWeightTrellis[j]) * (uint32_t(new_error*new_error) - coeff0*coeff0)) base_score = RDScoreTrellis(tls, lambda, int64(0), int64(delta_error)) } @@ -33221,20 +32923,20 @@ func TrellisQuantizeBlock(tls *libc.TLS, enc uintptr, in uintptr, out uintptr, c // The base_score is added to all scores so it is only added for the final // value after the loop. cost = score_t(VP8LevelCost(tls, (*ScoreState)(unsafe.Pointer(ss_prev)).costs, level)) - best_cur_score = ((*ScoreState)(unsafe.Pointer(ss_prev)).score + RDScoreTrellis(tls, lambda, cost, int64(0))) + best_cur_score = (*ScoreState)(unsafe.Pointer(ss_prev)).score + RDScoreTrellis(tls, lambda, cost, int64(0)) best_prev = -0 - for p = (-0 + 1); p <= 1; p++ { + for p = -0 + 1; p <= 1; p++ { // Dead nodes (with ss_prev[p].score >= MAX_COST) are automatically // eliminated since their score can't be better than the current best. cost = score_t(VP8LevelCost(tls, (*ScoreState)(unsafe.Pointer(ss_prev+uintptr(p)*16)).costs, level)) // Examine node assuming it's a non-terminal one. - score = ((*ScoreState)(unsafe.Pointer(ss_prev+uintptr(p)*16)).score + RDScoreTrellis(tls, lambda, cost, int64(0))) + score = (*ScoreState)(unsafe.Pointer(ss_prev+uintptr(p)*16)).score + RDScoreTrellis(tls, lambda, cost, int64(0)) if score < best_cur_score { best_cur_score = score best_prev = p } } - best_cur_score = best_cur_score + (base_score) + best_cur_score = best_cur_score + base_score // Store best finding in current node. (*Node)(unsafe.Pointer(cur)).sign = int8_t(sign) (*Node)(unsafe.Pointer(cur)).level = int16_t(level) @@ -33242,20 +32944,20 @@ func TrellisQuantizeBlock(tls *libc.TLS, enc uintptr, in uintptr, out uintptr, c (*ScoreState)(unsafe.Pointer(ss_cur + uintptr(m)*16)).score = best_cur_score // Now, record best terminal node (and thus best entry in the graph). - if (level != 0) && (best_cur_score < best_score) { + if level != 0 && best_cur_score < best_score { var last_pos_cost score_t if n < 15 { - last_pos_cost = int64(VP8BitCost(tls, 0, *(*uint8_t)(unsafe.Pointer(((probas + uintptr(band)*33) + uintptr(ctx)*11))))) + last_pos_cost = int64(VP8BitCost(tls, 0, *(*uint8_t)(unsafe.Pointer(probas + uintptr(band)*33 + uintptr(ctx)*11)))) } else { last_pos_cost = int64(0) } var last_pos_score score_t = RDScoreTrellis(tls, lambda, last_pos_cost, int64(0)) - score = (best_cur_score + last_pos_score) + score = best_cur_score + last_pos_score if score < best_score { best_score = score - *(*int32)(unsafe.Pointer((bp + 192) /* &best_path[0] */)) = n // best eob position - *(*int32)(unsafe.Pointer((bp + 192) /* &best_path[0] */ + 1*4)) = m // best node index - *(*int32)(unsafe.Pointer((bp + 192) /* &best_path[0] */ + 2*4)) = best_prev // best predecessor + *(*int32)(unsafe.Pointer(bp + 192)) = n // best eob position + *(*int32)(unsafe.Pointer(bp + 192 + 1*4)) = m // best node index + *(*int32)(unsafe.Pointer(bp + 192 + 2*4)) = best_prev // best predecessor } } } @@ -33264,13 +32966,13 @@ func TrellisQuantizeBlock(tls *libc.TLS, enc uintptr, in uintptr, out uintptr, c // Fresh start // Beware! We must preserve in[0]/out[0] value for TYPE_I16_AC case. if coeff_type == TYPE_I16_AC { - libc.Xmemset(tls, (in + uintptr(1)*2), 0, (uint64(15) * uint64(unsafe.Sizeof(int16_t(0))))) - libc.Xmemset(tls, (out + uintptr(1)*2), 0, (uint64(15) * uint64(unsafe.Sizeof(int16_t(0))))) + libc.Xmemset(tls, in+uintptr(1)*2, 0, uint64(15)*uint64(unsafe.Sizeof(int16_t(0)))) + libc.Xmemset(tls, out+uintptr(1)*2, 0, uint64(15)*uint64(unsafe.Sizeof(int16_t(0)))) } else { - libc.Xmemset(tls, in, 0, (uint64(16) * uint64(unsafe.Sizeof(int16_t(0))))) - libc.Xmemset(tls, out, 0, (uint64(16) * uint64(unsafe.Sizeof(int16_t(0))))) + libc.Xmemset(tls, in, 0, uint64(16)*uint64(unsafe.Sizeof(int16_t(0)))) + libc.Xmemset(tls, out, 0, uint64(16)*uint64(unsafe.Sizeof(int16_t(0)))) } - if *(*int32)(unsafe.Pointer((bp + 192) /* &best_path[0] */)) == -1 { + if *(*int32)(unsafe.Pointer(bp + 192)) == -1 { return 0 // skip! } @@ -33279,12 +32981,12 @@ func TrellisQuantizeBlock(tls *libc.TLS, enc uintptr, in uintptr, out uintptr, c // Note: best-prev on terminal node is not necessarily equal to the // best_prev for non-terminal. So we patch best_path[2] in. var nz int32 = 0 - var best_node int32 = *(*int32)(unsafe.Pointer((bp + 192) /* &best_path[0] */ + 1*4)) - n = *(*int32)(unsafe.Pointer((bp + 192) /* &best_path[0] */)) - (*Node)(unsafe.Pointer(((bp + 64) /* &nodes */ + uintptr((n))*8) + uintptr(((best_node)+0))*4)).prev = int8_t(*(*int32)(unsafe.Pointer((bp + 192) /* &best_path[0] */ + 2*4))) // force best-prev for terminal + var best_node int32 = *(*int32)(unsafe.Pointer(bp + 192 + 1*4)) + n = *(*int32)(unsafe.Pointer(bp + 192)) + (*Node)(unsafe.Pointer(bp + 64 + uintptr(n)*8 + uintptr(best_node+0)*4)).prev = int8_t(*(*int32)(unsafe.Pointer(bp + 192 + 2*4))) // force best-prev for terminal for ; n >= first; n-- { - var node uintptr = (((bp + 64) /* &nodes */ + uintptr((n))*8) + uintptr(((best_node)+0))*4) + var node uintptr = bp + 64 + uintptr(n)*8 + uintptr(best_node+0)*4 var j int32 = int32(kZigzag2[n]) *(*int16_t)(unsafe.Pointer(out + uintptr(n)*2)) = func() int16 { if (*Node)(unsafe.Pointer(node)).sign != 0 { @@ -33292,11 +32994,11 @@ func TrellisQuantizeBlock(tls *libc.TLS, enc uintptr, in uintptr, out uintptr, c } return (*Node)(unsafe.Pointer(node)).level }() - nz = nz | (int32((*Node)(unsafe.Pointer(node)).level)) - *(*int16_t)(unsafe.Pointer(in + uintptr(j)*2)) = (int16_t(int32(*(*int16_t)(unsafe.Pointer(out + uintptr(n)*2))) * int32(*(*uint16_t)(unsafe.Pointer((mtx /* &.q_ */) + uintptr(j)*2))))) + nz = nz | int32((*Node)(unsafe.Pointer(node)).level) + *(*int16_t)(unsafe.Pointer(in + uintptr(j)*2)) = int16_t(int32(*(*int16_t)(unsafe.Pointer(out + uintptr(n)*2))) * int32(*(*uint16_t)(unsafe.Pointer(mtx + uintptr(j)*2)))) best_node = int32((*Node)(unsafe.Pointer(node)).prev) } - return (libc.Bool32(nz != 0)) + return libc.Bool32(nz != 0) } return int32(0) @@ -33312,28 +33014,28 @@ func ReconstructIntra16(tls *libc.TLS, it uintptr, rd uintptr, yuv_out uintptr, defer tls.Free(544) var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ - var ref uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8I16ModeOffsets[mode])) - var src uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((0))) - var dqm uintptr = ((enc + 608 /* &.dqm_ */) + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.segment_ */))&0x60>>5))))*744) + var ref uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8I16ModeOffsets[mode]) + var src uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr(0) + var dqm uintptr = enc + 608 + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x60>>5)))*744 var nz int32 = 0 var n int32 // var tmp [16][16]int16_t at bp, 512 // var dc_tmp [16]int16_t at bp+512, 32 - for n = 0; n < 16; n = n + (2) { + for n = 0; n < 16; n = n + 2 { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8FTransform2})).f(tls, (src + uintptr(VP8Scan[n])), (ref + uintptr(VP8Scan[n])), ((bp) /* &tmp[0] */ + uintptr(n)*32)) + })(unsafe.Pointer(&struct{ uintptr }{VP8FTransform2})).f(tls, src+uintptr(VP8Scan[n]), ref+uintptr(VP8Scan[n]), bp /* &tmp[0] */ +uintptr(n)*32) } (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8FTransformWHT})).f(tls, (bp) /* &tmp[0] */, (bp + 512) /* &dc_tmp[0] */) - nz = nz | ((*struct { + })(unsafe.Pointer(&struct{ uintptr }{VP8FTransformWHT})).f(tls, bp /* &tmp[0] */, bp+512 /* &dc_tmp[0] */) + nz = nz | (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8EncQuantizeBlockWHT})).f(tls, (bp+512) /* &dc_tmp[0] */, (rd+40 /* &.y_dc_levels */), (dqm+224 /* &.y2_ */)) << 24) + })(unsafe.Pointer(&struct{ uintptr }{VP8EncQuantizeBlockWHT})).f(tls, bp+512, rd+40, dqm+224)<<24 - if (1 != 0) && ((*VP8EncIterator)(unsafe.Pointer(it)).do_trellis_ != 0) { + if 1 != 0 && (*VP8EncIterator)(unsafe.Pointer(it)).do_trellis_ != 0 { var x int32 var y int32 VP8IteratorNzToBytes(tls, it) @@ -33346,13 +33048,13 @@ func ReconstructIntra16(tls *libc.TLS, it uintptr, rd uintptr, yuv_out uintptr, goto __3 } { - var ctx int32 = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(x)*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + uintptr(y)*4))) + var ctx int32 = *(*int32)(unsafe.Pointer(it + 132 + uintptr(x)*4)) + *(*int32)(unsafe.Pointer(it + 168 + uintptr(y)*4)) var non_zero int32 = TrellisQuantizeBlock(tls, - enc, ((bp) /* &tmp[0] */ + uintptr(n)*32), ((rd + 72 /* &.y_ac_levels */) + uintptr(n)*32), ctx, TYPE_I16_AC, (dqm /* &.y1_ */), + enc, bp+uintptr(n)*32, rd+72+uintptr(n)*32, ctx, TYPE_I16_AC, dqm, (*VP8SegmentInfo)(unsafe.Pointer(dqm)).lambda_trellis_i16_) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(x)*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + uintptr(y)*4), non_zero) - *(*int16_t)(unsafe.Pointer(((rd + 72 /* &.y_ac_levels */) + uintptr(n)*32))) = int16(0) - nz = nz | (non_zero << n) + *(*int32)(unsafe.Pointer(it + 132 + uintptr(x)*4)) = libc.AssignPtrInt32(it+168+uintptr(y)*4, non_zero) + *(*int16_t)(unsafe.Pointer(rd + 72 + uintptr(n)*32)) = int16(0) + nz = nz | non_zero<<n } goto __2 @@ -33364,13 +33066,13 @@ func ReconstructIntra16(tls *libc.TLS, it uintptr, rd uintptr, yuv_out uintptr, __3: } } else { - for n = 0; n < 16; n = n + (2) { + for n = 0; n < 16; n = n + 2 { // Zero-out the first coeff, so that: a) nz is correct below, and // b) finding 'last' non-zero coeffs in SetResidualCoeffs() is simplified. - *(*int16_t)(unsafe.Pointer(((bp) /* &tmp[0] */ + uintptr(n)*32))) = libc.AssignPtrInt16(((bp) /* &tmp */ + uintptr((n+1))*32), int16(0)) - nz = nz | ((*struct { + *(*int16_t)(unsafe.Pointer(bp + uintptr(n)*32)) = libc.AssignPtrInt16(bp+uintptr(n+1)*32, int16(0)) + nz = nz | (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8EncQuantize2Blocks})).f(tls, ((bp) /* &tmp[0] */ +uintptr(n)*32), ((rd+72 /* &.y_ac_levels */)+uintptr(n)*32), (dqm /* &.y1_ */)) << n) + })(unsafe.Pointer(&struct{ uintptr }{VP8EncQuantize2Blocks})).f(tls, bp+uintptr(n)*32, rd+72+uintptr(n)*32, dqm)<<n } } @@ -33378,11 +33080,11 @@ func ReconstructIntra16(tls *libc.TLS, it uintptr, rd uintptr, yuv_out uintptr, // Transform back (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8TransformWHT})).f(tls, (bp + 512) /* &dc_tmp[0] */, (bp) /* &tmp[0] */) - for n = 0; n < 16; n = n + (2) { + })(unsafe.Pointer(&struct{ uintptr }{VP8TransformWHT})).f(tls, bp+512 /* &dc_tmp[0] */, bp /* &tmp[0] */) + for n = 0; n < 16; n = n + 2 { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8ITransform})).f(tls, (ref + uintptr(VP8Scan[n])), ((bp) /* &tmp[0] */ + uintptr(n)*32), (yuv_out + uintptr(VP8Scan[n])), 1) + })(unsafe.Pointer(&struct{ uintptr }{VP8ITransform})).f(tls, ref+uintptr(VP8Scan[n]), bp /* &tmp[0] */ +uintptr(n)*32, yuv_out+uintptr(VP8Scan[n]), 1) } return nz @@ -33393,28 +33095,28 @@ func ReconstructIntra4(tls *libc.TLS, it uintptr, levels uintptr, src uintptr, y defer tls.Free(32) var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ - var ref uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8I4ModeOffsets[mode])) - var dqm uintptr = ((enc + 608 /* &.dqm_ */) + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.segment_ */))&0x60>>5))))*744) + var ref uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8I4ModeOffsets[mode]) + var dqm uintptr = enc + 608 + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x60>>5)))*744 var nz int32 = 0 // var tmp [16]int16_t at bp, 32 (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8FTransform})).f(tls, src, ref, (bp) /* &tmp[0] */) - if (1 != 0) && ((*VP8EncIterator)(unsafe.Pointer(it)).do_trellis_ != 0) { - var x int32 = ((*VP8EncIterator)(unsafe.Pointer(it)).i4_ & 3) - var y int32 = ((*VP8EncIterator)(unsafe.Pointer(it)).i4_ >> 2) - var ctx int32 = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(x)*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + uintptr(y)*4))) - nz = TrellisQuantizeBlock(tls, enc, (bp) /* &tmp[0] */, levels, ctx, TYPE_I4_AC, (dqm /* &.y1_ */), + })(unsafe.Pointer(&struct{ uintptr }{VP8FTransform})).f(tls, src, ref, bp /* &tmp[0] */) + if 1 != 0 && (*VP8EncIterator)(unsafe.Pointer(it)).do_trellis_ != 0 { + var x int32 = (*VP8EncIterator)(unsafe.Pointer(it)).i4_ & 3 + var y int32 = (*VP8EncIterator)(unsafe.Pointer(it)).i4_ >> 2 + var ctx int32 = *(*int32)(unsafe.Pointer(it + 132 + uintptr(x)*4)) + *(*int32)(unsafe.Pointer(it + 168 + uintptr(y)*4)) + nz = TrellisQuantizeBlock(tls, enc, bp, levels, ctx, TYPE_I4_AC, dqm, (*VP8SegmentInfo)(unsafe.Pointer(dqm)).lambda_trellis_i4_) } else { nz = (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8EncQuantizeBlock})).f(tls, (bp) /* &tmp[0] */, levels, (dqm /* &.y1_ */)) + })(unsafe.Pointer(&struct{ uintptr }{VP8EncQuantizeBlock})).f(tls, bp /* &tmp[0] */, levels, dqm /* &.y1_ */) } (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8ITransform})).f(tls, ref, (bp) /* &tmp[0] */, yuv_out, 0) + })(unsafe.Pointer(&struct{ uintptr }{VP8ITransform})).f(tls, ref, bp /* &tmp[0] */, yuv_out, 0) return nz } @@ -33428,33 +33130,33 @@ func ReconstructIntra4(tls *libc.TLS, it uintptr, levels uintptr, src uintptr, y // Error is already divided by DSHIFT. func QuantizeSingle(tls *libc.TLS, v uintptr, mtx uintptr) int32 { /* quant_enc.c:858:12: */ var V int32 = int32(*(*int16_t)(unsafe.Pointer(v))) - var sign int32 = (libc.Bool32(V < 0)) + var sign int32 = libc.Bool32(V < 0) if sign != 0 { V = -V } - if V > int32(*(*uint32_t)(unsafe.Pointer((mtx + 128 /* &.zthresh_ */)))) { - var qV int32 = (QUANTDIV(tls, uint32(V), uint32(*(*uint16_t)(unsafe.Pointer((mtx + 32 /* &.iq_ */)))), *(*uint32_t)(unsafe.Pointer((mtx + 64 /* &.bias_ */)))) * int32(*(*uint16_t)(unsafe.Pointer((mtx /* &.q_ */))))) - var err int32 = (V - qV) + if V > int32(*(*uint32_t)(unsafe.Pointer(mtx + 128))) { + var qV int32 = QUANTDIV(tls, uint32(V), uint32(*(*uint16_t)(unsafe.Pointer(mtx + 32))), *(*uint32_t)(unsafe.Pointer(mtx + 64))) * int32(*(*uint16_t)(unsafe.Pointer(mtx))) + var err int32 = V - qV *(*int16_t)(unsafe.Pointer(v)) = func() int16 { if sign != 0 { return int16(-qV) } return int16(qV) }() - return ((func() int32 { + return func() int32 { if sign != 0 { return -err } return err - }()) >> 1) + }() >> 1 } *(*int16_t)(unsafe.Pointer(v)) = int16(0) - return ((func() int32 { + return func() int32 { if sign != 0 { return -V } return V - }()) >> 1) + }() >> 1 } func CorrectDCValues(tls *libc.TLS, it uintptr, mtx uintptr, tmp uintptr, rd uintptr) { /* quant_enc.c:872:13: */ @@ -33467,39 +33169,39 @@ func CorrectDCValues(tls *libc.TLS, it uintptr, mtx uintptr, tmp uintptr, rd uin // as top[]/left[] on the next block. var ch int32 for ch = 0; ch <= 1; ch++ { - var top uintptr = (((*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).x_)*4) + uintptr(ch)*2) - var left uintptr = (it + 344 /* &.left_derr_ */ + uintptr(ch)*2) - var c uintptr = (tmp + uintptr((ch*4))*32) + var top uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).x_)*4 + uintptr(ch)*2 + var left uintptr = it + 344 + uintptr(ch)*2 + var c uintptr = tmp + uintptr(ch*4)*32 var err0 int32 var err1 int32 var err2 int32 var err3 int32 - *(*int16_t)(unsafe.Pointer((c))) += int16_t((((7 * int32(*(*int8_t)(unsafe.Pointer(top)))) + (8 * int32(*(*int8_t)(unsafe.Pointer(left))))) >> (4 - 1))) - err0 = QuantizeSingle(tls, (c), mtx) - *(*int16_t)(unsafe.Pointer((c + 1*32))) += int16_t((((7 * int32(*(*int8_t)(unsafe.Pointer(top + 1)))) + (8 * err0)) >> (4 - 1))) - err1 = QuantizeSingle(tls, (c + 1*32), mtx) - *(*int16_t)(unsafe.Pointer((c + 2*32))) += int16_t((((7 * err0) + (8 * int32(*(*int8_t)(unsafe.Pointer(left + 1))))) >> (4 - 1))) - err2 = QuantizeSingle(tls, (c + 2*32), mtx) - *(*int16_t)(unsafe.Pointer((c + 3*32))) += int16_t((((7 * err1) + (8 * err2)) >> (4 - 1))) - err3 = QuantizeSingle(tls, (c + 3*32), mtx) + *(*int16_t)(unsafe.Pointer(c)) += int16_t((7*int32(*(*int8_t)(unsafe.Pointer(top))) + 8*int32(*(*int8_t)(unsafe.Pointer(left)))) >> (4 - 1)) + err0 = QuantizeSingle(tls, c, mtx) + *(*int16_t)(unsafe.Pointer(c + 1*32)) += int16_t((7*int32(*(*int8_t)(unsafe.Pointer(top + 1))) + 8*err0) >> (4 - 1)) + err1 = QuantizeSingle(tls, c+1*32, mtx) + *(*int16_t)(unsafe.Pointer(c + 2*32)) += int16_t((7*err0 + 8*int32(*(*int8_t)(unsafe.Pointer(left + 1)))) >> (4 - 1)) + err2 = QuantizeSingle(tls, c+2*32, mtx) + *(*int16_t)(unsafe.Pointer(c + 3*32)) += int16_t((7*err1 + 8*err2) >> (4 - 1)) + err3 = QuantizeSingle(tls, c+3*32, mtx) // error 'err' is bounded by mtx->q_[0] which is 132 at max. Hence // err >> DSCALE will fit in an int8_t type if DSCALE>=1. - *(*int8_t)(unsafe.Pointer(((rd + 868 /* &.derr */) + uintptr(ch)*3))) = int8_t(err1) - *(*int8_t)(unsafe.Pointer(((rd + 868 /* &.derr */) + uintptr(ch)*3) + 1)) = int8_t(err2) - *(*int8_t)(unsafe.Pointer(((rd + 868 /* &.derr */) + uintptr(ch)*3) + 2)) = int8_t(err3) + *(*int8_t)(unsafe.Pointer(rd + 868 + uintptr(ch)*3)) = int8_t(err1) + *(*int8_t)(unsafe.Pointer(rd + 868 + uintptr(ch)*3 + 1)) = int8_t(err2) + *(*int8_t)(unsafe.Pointer(rd + 868 + uintptr(ch)*3 + 2)) = int8_t(err3) } } func StoreDiffusionErrors(tls *libc.TLS, it uintptr, rd uintptr) { /* quant_enc.c:905:13: */ var ch int32 for ch = 0; ch <= 1; ch++ { - var top uintptr = (((*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).x_)*4) + uintptr(ch)*2) - var left uintptr = (it + 344 /* &.left_derr_ */ + uintptr(ch)*2) - *(*int8_t)(unsafe.Pointer(left)) = *(*int8_t)(unsafe.Pointer(((rd + 868 /* &.derr */) + uintptr(ch)*3))) // restore err1 - *(*int8_t)(unsafe.Pointer(left + 1)) = (int8_t((3 * int32(*(*int8_t)(unsafe.Pointer(((rd + 868 /* &.derr */) + uintptr(ch)*3) + 2)))) >> 2)) // ... 3/4th of err3 - *(*int8_t)(unsafe.Pointer(top)) = *(*int8_t)(unsafe.Pointer(((rd + 868 /* &.derr */) + uintptr(ch)*3) + 1)) // ... err2 - *(*int8_t)(unsafe.Pointer(top + 1)) = (int8_t(int32(*(*int8_t)(unsafe.Pointer(((rd + 868 /* &.derr */) + uintptr(ch)*3) + 2))) - int32(*(*int8_t)(unsafe.Pointer(left + 1))))) // ... 1/4th of err3. + var top uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).x_)*4 + uintptr(ch)*2 + var left uintptr = it + 344 + uintptr(ch)*2 + *(*int8_t)(unsafe.Pointer(left)) = *(*int8_t)(unsafe.Pointer(rd + 868 + uintptr(ch)*3)) // restore err1 + *(*int8_t)(unsafe.Pointer(left + 1)) = int8_t(3 * int32(*(*int8_t)(unsafe.Pointer(rd + 868 + uintptr(ch)*3 + 2))) >> 2) // ... 3/4th of err3 + *(*int8_t)(unsafe.Pointer(top)) = *(*int8_t)(unsafe.Pointer(rd + 868 + uintptr(ch)*3 + 1)) // ... err2 + *(*int8_t)(unsafe.Pointer(top + 1)) = int8_t(int32(*(*int8_t)(unsafe.Pointer(rd + 868 + uintptr(ch)*3 + 2))) - int32(*(*int8_t)(unsafe.Pointer(left + 1)))) // ... 1/4th of err3. } } @@ -33510,29 +33212,29 @@ func ReconstructUV(tls *libc.TLS, it uintptr, rd uintptr, yuv_out uintptr, mode defer tls.Free(256) var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ - var ref uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8UVModeOffsets[mode])) - var src uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((16))) - var dqm uintptr = ((enc + 608 /* &.dqm_ */) + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.segment_ */))&0x60>>5))))*744) + var ref uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8UVModeOffsets[mode]) + var src uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr(16) + var dqm uintptr = enc + 608 + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x60>>5)))*744 var nz int32 = 0 var n int32 // var tmp [8][16]int16_t at bp, 256 - for n = 0; n < 8; n = n + (2) { + for n = 0; n < 8; n = n + 2 { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8FTransform2})).f(tls, (src + uintptr(VP8ScanUV[n])), (ref + uintptr(VP8ScanUV[n])), ((bp) /* &tmp[0] */ + uintptr(n)*32)) + })(unsafe.Pointer(&struct{ uintptr }{VP8FTransform2})).f(tls, src+uintptr(VP8ScanUV[n]), ref+uintptr(VP8ScanUV[n]), bp /* &tmp[0] */ +uintptr(n)*32) } - if (*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ != (uintptr(0)) { - CorrectDCValues(tls, it, (dqm + 448 /* &.uv_ */), (bp) /* &tmp[0] */, rd) + if (*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ != uintptr(0) { + CorrectDCValues(tls, it, dqm+448, bp, rd) } - if (0 != 0) && ((*VP8EncIterator)(unsafe.Pointer(it)).do_trellis_ != 0) { + if 0 != 0 && (*VP8EncIterator)(unsafe.Pointer(it)).do_trellis_ != 0 { var ch int32 var x int32 var y int32 ch = 0 n = 0 - for ; ch <= 2; ch = ch + (2) { + for ; ch <= 2; ch = ch + 2 { for y = 0; y < 2; y++ { x = 0 __1: @@ -33540,12 +33242,12 @@ func ReconstructUV(tls *libc.TLS, it uintptr, rd uintptr, yuv_out uintptr, mode goto __3 } { - var ctx int32 = (*(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(((4+ch)+x))*4)) + *(*int32)(unsafe.Pointer((it + 168 /* &.left_nz_ */) + uintptr(((4+ch)+y))*4))) + var ctx int32 = *(*int32)(unsafe.Pointer(it + 132 + uintptr(4+ch+x)*4)) + *(*int32)(unsafe.Pointer(it + 168 + uintptr(4+ch+y)*4)) var non_zero int32 = TrellisQuantizeBlock(tls, - enc, ((bp) /* &tmp[0] */ + uintptr(n)*32), ((rd + 584 /* &.uv_levels */) + uintptr(n)*32), ctx, TYPE_CHROMA_A, (dqm + 448 /* &.uv_ */), + enc, bp+uintptr(n)*32, rd+584+uintptr(n)*32, ctx, TYPE_CHROMA_A, dqm+448, (*VP8SegmentInfo)(unsafe.Pointer(dqm)).lambda_trellis_uv_) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(((4+ch)+x))*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + uintptr(((4+ch)+y))*4), non_zero) - nz = nz | (non_zero << n) + *(*int32)(unsafe.Pointer(it + 132 + uintptr(4+ch+x)*4)) = libc.AssignPtrInt32(it+168+uintptr(4+ch+y)*4, non_zero) + nz = nz | non_zero<<n } goto __2 @@ -33558,19 +33260,19 @@ func ReconstructUV(tls *libc.TLS, it uintptr, rd uintptr, yuv_out uintptr, mode } } } else { - for n = 0; n < 8; n = n + (2) { - nz = nz | ((*struct { + for n = 0; n < 8; n = n + 2 { + nz = nz | (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8EncQuantize2Blocks})).f(tls, ((bp) /* &tmp[0] */ +uintptr(n)*32), ((rd+584 /* &.uv_levels */)+uintptr(n)*32), (dqm+448 /* &.uv_ */)) << n) + })(unsafe.Pointer(&struct{ uintptr }{VP8EncQuantize2Blocks})).f(tls, bp+uintptr(n)*32, rd+584+uintptr(n)*32, dqm+448)<<n } } - for n = 0; n < 8; n = n + (2) { + for n = 0; n < 8; n = n + 2 { (*struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8ITransform})).f(tls, (ref + uintptr(VP8ScanUV[n])), ((bp) /* &tmp[0] */ + uintptr(n)*32), (yuv_out + uintptr(VP8ScanUV[n])), 1) + })(unsafe.Pointer(&struct{ uintptr }{VP8ITransform})).f(tls, ref+uintptr(VP8ScanUV[n]), bp /* &tmp[0] */ +uintptr(n)*32, yuv_out+uintptr(VP8ScanUV[n]), 1) } - return (nz << 16) + return nz << 16 } //------------------------------------------------------------------------------ @@ -33612,7 +33314,7 @@ func SwapPtr(tls *libc.TLS, a uintptr, b uintptr) { /* quant_enc.c:987:13: */ } func SwapOut(tls *libc.TLS, it uintptr) { /* quant_enc.c:993:13: */ - SwapPtr(tls, (it + 16 /* &.yuv_out_ */), (it + 24 /* &.yuv_out2_ */)) + SwapPtr(tls, it+16, it+24) } func PickBestIntra16(tls *libc.TLS, it uintptr, rd uintptr) { /* quant_enc.c:997:13: */ @@ -33620,20 +33322,20 @@ func PickBestIntra16(tls *libc.TLS, it uintptr, rd uintptr) { /* quant_enc.c:997 defer tls.Free(896) var kNumBlocks int32 = 16 - var dqm uintptr = (((*VP8EncIterator)(unsafe.Pointer(it)).enc_ + 608 /* &.dqm_ */) + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.segment_ */))&0x60>>5))))*744) + var dqm uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ + 608 + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x60>>5)))*744 var lambda int32 = (*VP8SegmentInfo)(unsafe.Pointer(dqm)).lambda_i16_ var tlambda int32 = (*VP8SegmentInfo)(unsafe.Pointer(dqm)).tlambda_ - var src uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((0))) + var src uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr(0) // var rd_tmp VP8ModeScore at bp, 880 - *(*uintptr)(unsafe.Pointer(bp + 880 /* rd_cur */)) = (bp) /* &rd_tmp */ + *(*uintptr)(unsafe.Pointer(bp + 880 /* rd_cur */)) = bp /* &rd_tmp */ *(*uintptr)(unsafe.Pointer(bp + 888 /* rd_best */)) = rd var mode int32 - var is_flat int32 = IsFlatSource16(tls, ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((0)))) + var is_flat int32 = IsFlatSource16(tls, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_+uintptr(0)) (*VP8ModeScore)(unsafe.Pointer(rd)).mode_i16 = -1 for mode = 0; mode < NUM_PRED_MODES; mode++ { - var tmp_dst uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr((0))) // scratch buffer + var tmp_dst uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr(0) // scratch buffer (*VP8ModeScore)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 880 /* rd_cur */)))).mode_i16 = mode // Reconstruct @@ -33645,9 +33347,9 @@ func PickBestIntra16(tls *libc.TLS, it uintptr, rd uintptr) { /* quant_enc.c:997 })(unsafe.Pointer(&struct{ uintptr }{VP8SSE16x16})).f(tls, src, tmp_dst)) (*VP8ModeScore)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 880 /* rd_cur */)))).SD = func() int64 { if tlambda != 0 { - return (int64((((tlambda) * ((*struct { + return int64((tlambda*(*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8TDisto16x16})).f(tls, src, tmp_dst, uintptr(unsafe.Pointer(&kWeightY))))) + 128) >> 8)) + })(unsafe.Pointer(&struct{ uintptr }{VP8TDisto16x16})).f(tls, src, tmp_dst, uintptr(unsafe.Pointer(&kWeightY))) + 128) >> 8) } return int64(0) }() @@ -33655,22 +33357,22 @@ func PickBestIntra16(tls *libc.TLS, it uintptr, rd uintptr) { /* quant_enc.c:997 (*VP8ModeScore)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 880 /* rd_cur */)))).R = score_t(VP8GetCostLuma16(tls, it, *(*uintptr)(unsafe.Pointer(bp + 880 /* rd_cur */)))) if is_flat != 0 { // refine the first impression (which was in pixel space) - is_flat = IsFlat_C(tls, (*(*uintptr)(unsafe.Pointer(bp + 880 /* rd_cur */)) + 72 /* &.y_ac_levels */), kNumBlocks, 0) + is_flat = IsFlat_C(tls, *(*uintptr)(unsafe.Pointer(bp + 880))+72, kNumBlocks, 0) if is_flat != 0 { // Block is very flat. We put emphasis on the distortion being very low! - *(*score_t)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(bp + 880 /* rd_cur */)) /* &.D */))) *= (int64(2)) - *(*score_t)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(bp + 880 /* rd_cur */)) + 8 /* &.SD */))) *= (int64(2)) + *(*score_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 880)))) *= int64(2) + *(*score_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 880)) + 8)) *= int64(2) } } // Since we always examine Intra16 first, we can overwrite *rd directly. SetRDScore(tls, lambda, *(*uintptr)(unsafe.Pointer(bp + 880 /* rd_cur */))) - if (mode == 0) || ((*VP8ModeScore)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 880 /* rd_cur */)))).score < (*VP8ModeScore)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 888 /* rd_best */)))).score) { - SwapModeScore(tls, (bp + 880) /* &rd_cur */, (bp + 888) /* &rd_best */) + if mode == 0 || (*VP8ModeScore)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 880)))).score < (*VP8ModeScore)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 888)))).score { + SwapModeScore(tls, bp+880, bp+888) SwapOut(tls, it) } } - if *(*uintptr)(unsafe.Pointer(bp + 888 /* rd_best */)) != rd { + if *(*uintptr)(unsafe.Pointer(bp + 888)) != rd { libc.Xmemcpy(tls, rd, *(*uintptr)(unsafe.Pointer(bp + 888 /* rd_best */)), uint64(unsafe.Sizeof(VP8ModeScore{}))) } SetRDScore(tls, (*VP8SegmentInfo)(unsafe.Pointer(dqm)).lambda_mode_, rd) // finalize score for mode decision. @@ -33679,8 +33381,8 @@ func PickBestIntra16(tls *libc.TLS, it uintptr, rd uintptr) { /* quant_enc.c:997 // we have a blocky macroblock (only DCs are non-zero) with fairly high // distortion, record max delta so we can later adjust the minimal filtering // strength needed to smooth these blocks out. - if (((*VP8ModeScore)(unsafe.Pointer(rd)).nz & uint32_t(0x100ffff)) == uint32_t(0x1000000)) && ((*VP8ModeScore)(unsafe.Pointer(rd)).D > score_t((*VP8SegmentInfo)(unsafe.Pointer(dqm)).min_disto_)) { - StoreMaxDelta(tls, dqm, (rd + 40 /* &.y_dc_levels */)) + if (*VP8ModeScore)(unsafe.Pointer(rd)).nz&uint32_t(0x100ffff) == uint32_t(0x1000000) && (*VP8ModeScore)(unsafe.Pointer(rd)).D > score_t((*VP8SegmentInfo)(unsafe.Pointer(dqm)).min_disto_) { + StoreMaxDelta(tls, dqm, rd+40) } } @@ -33689,21 +33391,21 @@ func PickBestIntra16(tls *libc.TLS, it uintptr, rd uintptr) { /* quant_enc.c:997 // return the cost array corresponding to the surrounding prediction modes. func GetCostModeI4(tls *libc.TLS, it uintptr, modes uintptr) uintptr { /* quant_enc.c:1057:22: */ var preds_w int32 = (*VP8Encoder)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).enc_)).preds_w_ - var x int32 = ((*VP8EncIterator)(unsafe.Pointer(it)).i4_ & 3) - var y int32 = ((*VP8EncIterator)(unsafe.Pointer(it)).i4_ >> 2) + var x int32 = (*VP8EncIterator)(unsafe.Pointer(it)).i4_ & 3 + var y int32 = (*VP8EncIterator)(unsafe.Pointer(it)).i4_ >> 2 var left int32 if x == 0 { - left = int32(*(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).preds_ + uintptr(((y * preds_w) - 1))))) + left = int32(*(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).preds_ + uintptr(y*preds_w-1)))) } else { - left = int32(*(*uint8_t)(unsafe.Pointer(modes + uintptr(((*VP8EncIterator)(unsafe.Pointer(it)).i4_ - 1))))) + left = int32(*(*uint8_t)(unsafe.Pointer(modes + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_-1)))) } var top int32 if y == 0 { - top = int32(*(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).preds_ + uintptr((-preds_w + x))))) + top = int32(*(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).preds_ + uintptr(-preds_w+x)))) } else { - top = int32(*(*uint8_t)(unsafe.Pointer(modes + uintptr(((*VP8EncIterator)(unsafe.Pointer(it)).i4_ - 4))))) + top = int32(*(*uint8_t)(unsafe.Pointer(modes + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_-4)))) } - return ((uintptr(unsafe.Pointer(&VP8FixedCostsI4)) + uintptr(top)*200) + uintptr(left)*20) + return uintptr(unsafe.Pointer(&VP8FixedCostsI4)) + uintptr(top)*200 + uintptr(left)*20 } func PickBestIntra4(tls *libc.TLS, it uintptr, rd uintptr) int32 { /* quant_enc.c:1066:12: */ @@ -33711,11 +33413,11 @@ func PickBestIntra4(tls *libc.TLS, it uintptr, rd uintptr) int32 { /* quant_enc. defer tls.Free(2688) var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ - var dqm uintptr = ((enc + 608 /* &.dqm_ */) + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.segment_ */))&0x60>>5))))*744) + var dqm uintptr = enc + 608 + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x60>>5)))*744 var lambda int32 = (*VP8SegmentInfo)(unsafe.Pointer(dqm)).lambda_i4_ var tlambda int32 = (*VP8SegmentInfo)(unsafe.Pointer(dqm)).tlambda_ - var src0 uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((0))) - var best_blocks uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr((0))) + var src0 uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr(0) + var best_blocks uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr(0) var total_header_bits int32 = 0 // var rd_best VP8ModeScore at bp, 880 @@ -33723,22 +33425,22 @@ func PickBestIntra4(tls *libc.TLS, it uintptr, rd uintptr) int32 { /* quant_enc. return 0 } - InitScore(tls, (bp) /* &rd_best */) + InitScore(tls, bp) (*VP8ModeScore)(unsafe.Pointer(bp /* &rd_best */)).H = int64(211) // '211' is the value of VP8BitCost(0, 145) - SetRDScore(tls, (*VP8SegmentInfo)(unsafe.Pointer(dqm)).lambda_mode_, (bp) /* &rd_best */) + SetRDScore(tls, (*VP8SegmentInfo)(unsafe.Pointer(dqm)).lambda_mode_, bp) VP8IteratorStartI4(tls, it) - for ok := true; ok; ok = (VP8IteratorRotateI4(tls, it, best_blocks) != 0) { + for __ccgo := true; __ccgo; __ccgo = VP8IteratorRotateI4(tls, it, best_blocks) != 0 { var kNumBlocks int32 = 1 // var rd_i4 VP8ModeScore at bp+880, 880 var mode int32 var best_mode int32 = -1 - var src uintptr = (src0 + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_])) - var mode_costs uintptr = GetCostModeI4(tls, it, (rd + 844 /* &.modes_i4 */)) - *(*uintptr)(unsafe.Pointer(bp + 2680 /* best_block */)) = (best_blocks + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_])) - *(*uintptr)(unsafe.Pointer(bp + 2672 /* tmp_dst */)) = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(((((3 * 16) * 32) + (4 * 32)) + 8))) // scratch buffer. + var src uintptr = src0 + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_]) + var mode_costs uintptr = GetCostModeI4(tls, it, rd+844) + *(*uintptr)(unsafe.Pointer(bp + 2680 /* best_block */)) = best_blocks + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_]) + *(*uintptr)(unsafe.Pointer(bp + 2672 /* tmp_dst */)) = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(3*16*32+4*32+8) // scratch buffer. - InitScore(tls, (bp + 880) /* &rd_i4 */) + InitScore(tls, bp+880) VP8MakeIntra4Preds(tls, it) for mode = 0; mode < NUM_BMODES; mode++ { // var rd_tmp VP8ModeScore at bp+1792, 880 @@ -33746,7 +33448,7 @@ func PickBestIntra4(tls *libc.TLS, it uintptr, rd uintptr) int32 { /* quant_enc. // var tmp_levels [16]int16_t at bp+1760, 32 // Reconstruct - (*VP8ModeScore)(unsafe.Pointer(bp + 1792 /* &rd_tmp */)).nz = (uint32_t(ReconstructIntra4(tls, it, (bp+1760) /* &tmp_levels[0] */, src, *(*uintptr)(unsafe.Pointer(bp + 2672 /* tmp_dst */)), mode) << (*VP8EncIterator)(unsafe.Pointer(it)).i4_)) + (*VP8ModeScore)(unsafe.Pointer(bp + 1792 /* &rd_tmp */)).nz = uint32_t(ReconstructIntra4(tls, it, bp+1760, src, *(*uintptr)(unsafe.Pointer(bp + 2672)), mode) << (*VP8EncIterator)(unsafe.Pointer(it)).i4_) // Compute RD-score (*VP8ModeScore)(unsafe.Pointer(bp + 1792 /* &rd_tmp */)).D = score_t((*struct { @@ -33754,9 +33456,9 @@ func PickBestIntra4(tls *libc.TLS, it uintptr, rd uintptr) int32 { /* quant_enc. })(unsafe.Pointer(&struct{ uintptr }{VP8SSE4x4})).f(tls, src, *(*uintptr)(unsafe.Pointer(bp + 2672 /* tmp_dst */)))) (*VP8ModeScore)(unsafe.Pointer(bp + 1792 /* &rd_tmp */)).SD = func() int64 { if tlambda != 0 { - return (int64((((tlambda) * ((*struct { + return int64((tlambda*(*struct { f func(*libc.TLS, uintptr, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8TDisto4x4})).f(tls, src, *(*uintptr)(unsafe.Pointer(bp + 2672 /* tmp_dst */)), uintptr(unsafe.Pointer(&kWeightY))))) + 128) >> 8)) + })(unsafe.Pointer(&struct{ uintptr }{VP8TDisto4x4})).f(tls, src, *(*uintptr)(unsafe.Pointer(bp + 2672)), uintptr(unsafe.Pointer(&kWeightY))) + 128) >> 8) } return int64(0) }() @@ -33764,59 +33466,59 @@ func PickBestIntra4(tls *libc.TLS, it uintptr, rd uintptr) int32 { /* quant_enc. // Add flatness penalty, to avoid flat area to be mispredicted // by a complex mode. - if (mode > 0) && (IsFlat_C(tls, (bp+1760) /* &tmp_levels[0] */, kNumBlocks, 3) != 0) { - (*VP8ModeScore)(unsafe.Pointer(bp + 1792 /* &rd_tmp */)).R = (score_t(140 * kNumBlocks)) + if mode > 0 && IsFlat_C(tls, bp+1760, kNumBlocks, 3) != 0 { + (*VP8ModeScore)(unsafe.Pointer(bp + 1792 /* &rd_tmp */)).R = score_t(140 * kNumBlocks) } else { (*VP8ModeScore)(unsafe.Pointer(bp + 1792 /* &rd_tmp */)).R = int64(0) } // early-out check - SetRDScore(tls, lambda, (bp + 1792) /* &rd_tmp */) - if (best_mode >= 0) && ((*VP8ModeScore)(unsafe.Pointer(bp+1792 /* &rd_tmp */)).score >= (*VP8ModeScore)(unsafe.Pointer(bp+880 /* &rd_i4 */)).score) { + SetRDScore(tls, lambda, bp+1792) + if best_mode >= 0 && (*VP8ModeScore)(unsafe.Pointer(bp+1792)).score >= (*VP8ModeScore)(unsafe.Pointer(bp+880)).score { continue } // finish computing score - *(*score_t)(unsafe.Pointer(((bp + 1792) /* &rd_tmp */ + 24 /* &.R */))) += (score_t(VP8GetCostLuma4(tls, it, (bp + 1760) /* &tmp_levels[0] */))) - SetRDScore(tls, lambda, (bp + 1792) /* &rd_tmp */) + *(*score_t)(unsafe.Pointer(bp + 1792 + 24)) += score_t(VP8GetCostLuma4(tls, it, bp+1760)) + SetRDScore(tls, lambda, bp+1792) - if (best_mode < 0) || ((*VP8ModeScore)(unsafe.Pointer(bp+1792 /* &rd_tmp */)).score < (*VP8ModeScore)(unsafe.Pointer(bp+880 /* &rd_i4 */)).score) { - CopyScore(tls, (bp + 880) /* &rd_i4 */, (bp + 1792) /* &rd_tmp */) + if best_mode < 0 || (*VP8ModeScore)(unsafe.Pointer(bp+1792)).score < (*VP8ModeScore)(unsafe.Pointer(bp+880)).score { + CopyScore(tls, bp+880, bp+1792) best_mode = mode - SwapPtr(tls, (bp + 2672) /* &tmp_dst */, (bp + 2680) /* &best_block */) - libc.Xmemcpy(tls, (((bp) /* &rd_best */ + 72 /* &.y_ac_levels */) + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_)*32), (bp + 1760), /* &tmp_levels[0] */ + SwapPtr(tls, bp+2672, bp+2680) + libc.Xmemcpy(tls, bp+72+uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_)*32, bp+1760, uint64(unsafe.Sizeof([16]int16_t{}))) } } - SetRDScore(tls, (*VP8SegmentInfo)(unsafe.Pointer(dqm)).lambda_mode_, (bp + 880) /* &rd_i4 */) - AddScore(tls, (bp) /* &rd_best */, (bp + 880) /* &rd_i4 */) - if (*VP8ModeScore)(unsafe.Pointer(bp /* &rd_best */)).score >= (*VP8ModeScore)(unsafe.Pointer(rd)).score { + SetRDScore(tls, (*VP8SegmentInfo)(unsafe.Pointer(dqm)).lambda_mode_, bp+880) + AddScore(tls, bp, bp+880) + if (*VP8ModeScore)(unsafe.Pointer(bp)).score >= (*VP8ModeScore)(unsafe.Pointer(rd)).score { return 0 } - total_header_bits = total_header_bits + (int32((*VP8ModeScore)(unsafe.Pointer(bp + 880 /* &rd_i4 */)).H)) // <- equal to mode_costs[best_mode]; + total_header_bits = total_header_bits + int32((*VP8ModeScore)(unsafe.Pointer(bp+880)).H) // <- equal to mode_costs[best_mode]; if total_header_bits > (*VP8Encoder)(unsafe.Pointer(enc)).max_i4_header_bits_ { return 0 } // Copy selected samples if not in the right place already. - if *(*uintptr)(unsafe.Pointer(bp + 2680 /* best_block */)) != (best_blocks + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_])) { + if *(*uintptr)(unsafe.Pointer(bp + 2680)) != best_blocks+uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_]) { (*struct { f func(*libc.TLS, uintptr, uintptr) - })(unsafe.Pointer(&struct{ uintptr }{VP8Copy4x4})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 2680 /* best_block */)), (best_blocks + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_]))) + })(unsafe.Pointer(&struct{ uintptr }{VP8Copy4x4})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 2680 /* best_block */)), best_blocks+uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_])) } - *(*uint8_t)(unsafe.Pointer((rd + 844 /* &.modes_i4 */) + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_))) = uint8_t(best_mode) - *(*int32)(unsafe.Pointer((it + 132 /* &.top_nz_ */) + uintptr(((*VP8EncIterator)(unsafe.Pointer(it)).i4_&3))*4)) = libc.AssignPtrInt32(((it + 168 /* &.left_nz_ */) + uintptr(((*VP8EncIterator)(unsafe.Pointer(it)).i4_>>2))*4), (func() int32 { - if (*VP8ModeScore)(unsafe.Pointer(bp+880 /* &rd_i4 */)).nz != 0 { + *(*uint8_t)(unsafe.Pointer(rd + 844 + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_))) = uint8_t(best_mode) + *(*int32)(unsafe.Pointer(it + 132 + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_&3)*4)) = libc.AssignPtrInt32(it+168+uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_>>2)*4, func() int32 { + if (*VP8ModeScore)(unsafe.Pointer(bp+880)).nz != 0 { return 1 } return 0 - }())) + }()) } // finalize state - CopyScore(tls, rd, (bp) /* &rd_best */) - VP8SetIntra4Mode(tls, it, (rd + 844 /* &.modes_i4 */)) + CopyScore(tls, rd, bp) + VP8SetIntra4Mode(tls, it, rd+844) SwapOut(tls, it) - libc.Xmemcpy(tls, (rd + 72 /* &.y_ac_levels */), ((bp) /* &rd_best */ + 72 /* &.y_ac_levels */), uint64(unsafe.Sizeof([16][16]int16_t{}))) + libc.Xmemcpy(tls, rd+72, bp+72, uint64(unsafe.Sizeof([16][16]int16_t{}))) return 1 // select intra4x4 over intra16x16 } @@ -33827,23 +33529,23 @@ func PickBestUV(tls *libc.TLS, it uintptr, rd uintptr) { /* quant_enc.c:1162:13: defer tls.Free(1776) var kNumBlocks int32 = 8 - var dqm uintptr = (((*VP8EncIterator)(unsafe.Pointer(it)).enc_ + 608 /* &.dqm_ */) + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.segment_ */))&0x60>>5))))*744) + var dqm uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ + 608 + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x60>>5)))*744 var lambda int32 = (*VP8SegmentInfo)(unsafe.Pointer(dqm)).lambda_uv_ - var src uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((16))) - *(*uintptr)(unsafe.Pointer(bp + 1768 /* tmp_dst */)) = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr((16))) // scratch buffer - var dst0 uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr((16))) + var src uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr(16) + *(*uintptr)(unsafe.Pointer(bp + 1768 /* tmp_dst */)) = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr(16) // scratch buffer + var dst0 uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr(16) *(*uintptr)(unsafe.Pointer(bp + 1760 /* dst */)) = dst0 // var rd_best VP8ModeScore at bp, 880 var mode int32 (*VP8ModeScore)(unsafe.Pointer(rd)).mode_uv = -1 - InitScore(tls, (bp) /* &rd_best */) + InitScore(tls, bp) for mode = 0; mode < NUM_PRED_MODES; mode++ { // var rd_uv VP8ModeScore at bp+880, 880 // Reconstruct - (*VP8ModeScore)(unsafe.Pointer(bp + 880 /* &rd_uv */)).nz = uint32_t(ReconstructUV(tls, it, (bp + 880) /* &rd_uv */, *(*uintptr)(unsafe.Pointer(bp + 1768 /* tmp_dst */)), mode)) + (*VP8ModeScore)(unsafe.Pointer(bp + 880 /* &rd_uv */)).nz = uint32_t(ReconstructUV(tls, it, bp+880, *(*uintptr)(unsafe.Pointer(bp + 1768 /* tmp_dst */)), mode)) // Compute RD-score (*VP8ModeScore)(unsafe.Pointer(bp + 880 /* &rd_uv */)).D = score_t((*struct { @@ -33851,30 +33553,30 @@ func PickBestUV(tls *libc.TLS, it uintptr, rd uintptr) { /* quant_enc.c:1162:13: })(unsafe.Pointer(&struct{ uintptr }{VP8SSE16x8})).f(tls, src, *(*uintptr)(unsafe.Pointer(bp + 1768 /* tmp_dst */)))) (*VP8ModeScore)(unsafe.Pointer(bp + 880 /* &rd_uv */)).SD = int64(0) // not calling TDisto here: it tends to flatten areas. (*VP8ModeScore)(unsafe.Pointer(bp + 880 /* &rd_uv */)).H = score_t(VP8FixedCostsUV[mode]) - (*VP8ModeScore)(unsafe.Pointer(bp + 880 /* &rd_uv */)).R = score_t(VP8GetCostUV(tls, it, (bp + 880) /* &rd_uv */)) - if (mode > 0) && (IsFlat_C(tls, ((bp+880) /* &rd_uv */ +584 /* &.uv_levels */), kNumBlocks, 2) != 0) { - *(*score_t)(unsafe.Pointer(((bp + 880) /* &rd_uv */ + 24 /* &.R */))) += (score_t(140 * kNumBlocks)) + (*VP8ModeScore)(unsafe.Pointer(bp + 880 /* &rd_uv */)).R = score_t(VP8GetCostUV(tls, it, bp+880)) + if mode > 0 && IsFlat_C(tls, bp+880+584, kNumBlocks, 2) != 0 { + *(*score_t)(unsafe.Pointer(bp + 880 + 24)) += score_t(140 * kNumBlocks) } - SetRDScore(tls, lambda, (bp + 880) /* &rd_uv */) - if (mode == 0) || ((*VP8ModeScore)(unsafe.Pointer(bp+880 /* &rd_uv */)).score < (*VP8ModeScore)(unsafe.Pointer(bp /* &rd_best */)).score) { - CopyScore(tls, (bp) /* &rd_best */, (bp + 880) /* &rd_uv */) + SetRDScore(tls, lambda, bp+880) + if mode == 0 || (*VP8ModeScore)(unsafe.Pointer(bp+880)).score < (*VP8ModeScore)(unsafe.Pointer(bp)).score { + CopyScore(tls, bp, bp+880) (*VP8ModeScore)(unsafe.Pointer(rd)).mode_uv = mode - libc.Xmemcpy(tls, (rd + 584 /* &.uv_levels */), ((bp + 880) /* &rd_uv */ + 584 /* &.uv_levels */), uint64(unsafe.Sizeof([8][16]int16_t{}))) - if (*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ != (uintptr(0)) { - libc.Xmemcpy(tls, (rd + 868 /* &.derr */), ((bp + 880) /* &rd_uv */ + 868 /* &.derr */), uint64(unsafe.Sizeof([2][3]int8_t{}))) + libc.Xmemcpy(tls, rd+584, bp+880+584, uint64(unsafe.Sizeof([8][16]int16_t{}))) + if (*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ != uintptr(0) { + libc.Xmemcpy(tls, rd+868, bp+880+868, uint64(unsafe.Sizeof([2][3]int8_t{}))) } - SwapPtr(tls, (bp + 1760) /* &dst */, (bp + 1768) /* &tmp_dst */) + SwapPtr(tls, bp+1760, bp+1768) } } VP8SetIntraUVMode(tls, it, (*VP8ModeScore)(unsafe.Pointer(rd)).mode_uv) - AddScore(tls, rd, (bp) /* &rd_best */) - if *(*uintptr)(unsafe.Pointer(bp + 1760 /* dst */)) != dst0 { // copy 16x8 block if needed + AddScore(tls, rd, bp) + if *(*uintptr)(unsafe.Pointer(bp + 1760)) != dst0 { // copy 16x8 block if needed (*struct { f func(*libc.TLS, uintptr, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8Copy16x8})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 1760 /* dst */)), dst0) } - if (*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ != (uintptr(0)) { // store diffusion errors for next block + if (*VP8EncIterator)(unsafe.Pointer(it)).top_derr_ != uintptr(0) { // store diffusion errors for next block StoreDiffusionErrors(tls, it, rd) } } @@ -33884,35 +33586,35 @@ func PickBestUV(tls *libc.TLS, it uintptr, rd uintptr) { /* quant_enc.c:1162:13: func SimpleQuantize(tls *libc.TLS, it uintptr, rd uintptr) { /* quant_enc.c:1214:13: */ var enc uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ - var is_i16 int32 = (libc.Bool32((int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.type_ */)) & 0x3 >> 0)) == 1)) + var is_i16 int32 = libc.Bool32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x3>>0) == 1) var nz int32 = 0 if is_i16 != 0 { - nz = ReconstructIntra16(tls, it, rd, ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr((0))), int32(*(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).preds_)))) + nz = ReconstructIntra16(tls, it, rd, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_+uintptr(0), int32(*(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).preds_)))) } else { VP8IteratorStartI4(tls, it) - for ok := true; ok; ok = (VP8IteratorRotateI4(tls, it, ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_+uintptr((0)))) != 0) { - var mode int32 = int32(*(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).preds_ + uintptr((((*VP8EncIterator)(unsafe.Pointer(it)).i4_ & 3) + (((*VP8EncIterator)(unsafe.Pointer(it)).i4_ >> 2) * (*VP8Encoder)(unsafe.Pointer(enc)).preds_w_)))))) - var src uintptr = (((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((0))) + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_])) - var dst uintptr = (((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr((0))) + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_])) + for __ccgo := true; __ccgo; __ccgo = VP8IteratorRotateI4(tls, it, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_+uintptr(0)) != 0 { + var mode int32 = int32(*(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).preds_ + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_&3+(*VP8EncIterator)(unsafe.Pointer(it)).i4_>>2*(*VP8Encoder)(unsafe.Pointer(enc)).preds_w_)))) + var src uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr(0) + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_]) + var dst uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr(0) + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_]) VP8MakeIntra4Preds(tls, it) - nz = nz | (ReconstructIntra4(tls, it, ((rd+72 /* &.y_ac_levels */)+uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_)*32), - src, dst, mode) << (*VP8EncIterator)(unsafe.Pointer(it)).i4_) + nz = nz | ReconstructIntra4(tls, it, rd+72+uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_)*32, + src, dst, mode)<<(*VP8EncIterator)(unsafe.Pointer(it)).i4_ } } - nz = nz | (ReconstructUV(tls, it, rd, ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr((16))), (int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.uv_mode_ */)) & 0xc >> 2)))) + nz = nz | ReconstructUV(tls, it, rd, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_+uintptr(16), int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0xc>>2)) (*VP8ModeScore)(unsafe.Pointer(rd)).nz = uint32_t(nz) } // Refine intra16/intra4 sub-modes based on distortion only (not rate). func RefineUsingDistortion(tls *libc.TLS, it uintptr, try_both_modes int32, refine_uv_mode int32, rd uintptr) { /* quant_enc.c:1239:13: */ - var best_score score_t = (0x7fffffffffffff) + var best_score score_t = 0x7fffffffffffff var nz int32 = 0 var mode int32 - var is_i16 int32 = (libc.Bool32((try_both_modes != 0) || ((int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.type_ */)) & 0x3 >> 0)) == 1))) + var is_i16 int32 = libc.Bool32(try_both_modes != 0 || int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x3>>0) == 1) - var dqm uintptr = (((*VP8EncIterator)(unsafe.Pointer(it)).enc_ + 608 /* &.dqm_ */) + uintptr((uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.segment_ */))&0x60>>5))))*744) + var dqm uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).enc_ + 608 + uintptr(uint32(int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0x60>>5)))*744 // Some empiric constants, of approximate order of magnitude. var lambda_d_i16 int32 = 106 var lambda_d_i4 int32 = 11 @@ -33923,19 +33625,19 @@ func RefineUsingDistortion(tls *libc.TLS, it uintptr, try_both_modes int32, refi if try_both_modes != 0 { bit_limit = int64((*VP8Encoder)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).enc_)).mb_header_limit_) } else { - bit_limit = (0x7fffffffffffff) + bit_limit = 0x7fffffffffffff } // no early-out allowed if is_i16 != 0 { // First, evaluate Intra16 distortion var best_mode int32 = -1 - var src uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((0))) + var src uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr(0) for mode = 0; mode < NUM_PRED_MODES; mode++ { - var ref uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8I16ModeOffsets[mode])) - var score score_t = ((score_t((*struct { + var ref uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8I16ModeOffsets[mode]) + var score score_t = score_t((*struct { f func(*libc.TLS, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSE16x16})).f(tls, src, ref)) * int64(256)) + - (score_t(int32(VP8FixedCostsI16[mode]) * lambda_d_i16))) - if (mode > 0) && (score_t(VP8FixedCostsI16[mode]) > bit_limit) { + })(unsafe.Pointer(&struct{ uintptr }{VP8SSE16x16})).f(tls, src, ref))*int64(256) + + score_t(int32(VP8FixedCostsI16[mode])*lambda_d_i16) + if mode > 0 && score_t(VP8FixedCostsI16[mode]) > bit_limit { continue } @@ -33944,7 +33646,7 @@ func RefineUsingDistortion(tls *libc.TLS, it uintptr, try_both_modes int32, refi best_score = score } } - if ((*VP8EncIterator)(unsafe.Pointer(it)).x_ == 0) || ((*VP8EncIterator)(unsafe.Pointer(it)).y_ == 0) { + if (*VP8EncIterator)(unsafe.Pointer(it)).x_ == 0 || (*VP8EncIterator)(unsafe.Pointer(it)).y_ == 0 { // avoid starting a checkerboard resonance from the border. See bug #432. if IsFlatSource16(tls, src) != 0 { if (*VP8EncIterator)(unsafe.Pointer(it)).x_ == 0 { @@ -33960,64 +33662,64 @@ func RefineUsingDistortion(tls *libc.TLS, it uintptr, try_both_modes int32, refi } // Next, evaluate Intra4 - if (try_both_modes != 0) || !(is_i16 != 0) { + if try_both_modes != 0 || !(is_i16 != 0) { // We don't evaluate the rate here, but just account for it through a // constant penalty (i4 mode usually needs more bits compared to i16). is_i16 = 0 VP8IteratorStartI4(tls, it) - for ok := true; ok; ok = (VP8IteratorRotateI4(tls, it, ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_+uintptr((0)))) != 0) { + for __ccgo := true; __ccgo; __ccgo = VP8IteratorRotateI4(tls, it, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_+uintptr(0)) != 0 { var best_i4_mode int32 = -1 - var best_i4_score score_t = (0x7fffffffffffff) - var src uintptr = (((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((0))) + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_])) - var mode_costs uintptr = GetCostModeI4(tls, it, (rd + 844 /* &.modes_i4 */)) + var best_i4_score score_t = 0x7fffffffffffff + var src uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr(0) + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_]) + var mode_costs uintptr = GetCostModeI4(tls, it, rd+844) VP8MakeIntra4Preds(tls, it) for mode = 0; mode < NUM_BMODES; mode++ { - var ref uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8I4ModeOffsets[mode])) - var score score_t = (score_t(((*struct { + var ref uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8I4ModeOffsets[mode]) + var score score_t = score_t((*struct { f func(*libc.TLS, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSE4x4})).f(tls, src, ref) * 256) + - (int32(*(*uint16_t)(unsafe.Pointer(mode_costs + uintptr(mode)*2))) * lambda_d_i4))) + })(unsafe.Pointer(&struct{ uintptr }{VP8SSE4x4})).f(tls, src, ref)*256 + + int32(*(*uint16_t)(unsafe.Pointer(mode_costs + uintptr(mode)*2)))*lambda_d_i4) if score < best_i4_score { best_i4_mode = mode best_i4_score = score } } - i4_bit_sum = i4_bit_sum + (score_t(*(*uint16_t)(unsafe.Pointer(mode_costs + uintptr(best_i4_mode)*2)))) - *(*uint8_t)(unsafe.Pointer((rd + 844 /* &.modes_i4 */) + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_))) = uint8_t(best_i4_mode) - score_i4 = score_i4 + (best_i4_score) - if (score_i4 >= best_score) || (i4_bit_sum > bit_limit) { + i4_bit_sum = i4_bit_sum + score_t(*(*uint16_t)(unsafe.Pointer(mode_costs + uintptr(best_i4_mode)*2))) + *(*uint8_t)(unsafe.Pointer(rd + 844 + uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_))) = uint8_t(best_i4_mode) + score_i4 = score_i4 + best_i4_score + if score_i4 >= best_score || i4_bit_sum > bit_limit { // Intra4 won't be better than Intra16. Bail out and pick Intra16. is_i16 = 1 break } else { // reconstruct partial block inside yuv_out2_ buffer - var tmp_dst uintptr = (((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr((0))) + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_])) - nz = nz | (ReconstructIntra4(tls, it, ((rd+72 /* &.y_ac_levels */)+uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_)*32), - src, tmp_dst, best_i4_mode) << (*VP8EncIterator)(unsafe.Pointer(it)).i4_) + var tmp_dst uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out2_ + uintptr(0) + uintptr(VP8Scan[(*VP8EncIterator)(unsafe.Pointer(it)).i4_]) + nz = nz | ReconstructIntra4(tls, it, rd+72+uintptr((*VP8EncIterator)(unsafe.Pointer(it)).i4_)*32, + src, tmp_dst, best_i4_mode)<<(*VP8EncIterator)(unsafe.Pointer(it)).i4_ } } } // Final reconstruction, depending on which mode is selected. if !(is_i16 != 0) { - VP8SetIntra4Mode(tls, it, (rd + 844 /* &.modes_i4 */)) + VP8SetIntra4Mode(tls, it, rd+844) SwapOut(tls, it) best_score = score_i4 } else { - nz = ReconstructIntra16(tls, it, rd, ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr((0))), int32(*(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).preds_)))) + nz = ReconstructIntra16(tls, it, rd, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_+uintptr(0), int32(*(*uint8_t)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).preds_)))) } // ... and UV! if refine_uv_mode != 0 { var best_mode int32 = -1 - var best_uv_score score_t = (0x7fffffffffffff) - var src uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr((16))) + var best_uv_score score_t = 0x7fffffffffffff + var src uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_in_ + uintptr(16) for mode = 0; mode < NUM_PRED_MODES; mode++ { - var ref uintptr = ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8UVModeOffsets[mode])) - var score score_t = (score_t(((*struct { + var ref uintptr = (*VP8EncIterator)(unsafe.Pointer(it)).yuv_p_ + uintptr(VP8UVModeOffsets[mode]) + var score score_t = score_t((*struct { f func(*libc.TLS, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{VP8SSE16x8})).f(tls, src, ref) * 256) + - (int32(VP8FixedCostsUV[mode]) * lambda_d_uv))) + })(unsafe.Pointer(&struct{ uintptr }{VP8SSE16x8})).f(tls, src, ref)*256 + + int32(VP8FixedCostsUV[mode])*lambda_d_uv) if score < best_uv_score { best_mode = mode best_uv_score = score @@ -34025,7 +33727,7 @@ func RefineUsingDistortion(tls *libc.TLS, it uintptr, try_both_modes int32, refi } VP8SetIntraUVMode(tls, it, best_mode) } - nz = nz | (ReconstructUV(tls, it, rd, ((*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_ + uintptr((16))), (int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_ /* &.uv_mode_ */)) & 0xc >> 2)))) + nz = nz | ReconstructUV(tls, it, rd, (*VP8EncIterator)(unsafe.Pointer(it)).yuv_out_+uintptr(16), int32(*(*uint8)(unsafe.Pointer((*VP8EncIterator)(unsafe.Pointer(it)).mb_))&0xc>>2)) (*VP8ModeScore)(unsafe.Pointer(rd)).nz = uint32_t(nz) (*VP8ModeScore)(unsafe.Pointer(rd)).score = best_score @@ -34046,7 +33748,7 @@ func VP8Decimate(tls *libc.TLS, it uintptr, rd uintptr, rd_opt VP8RDLevel) int32 VP8MakeChroma8Preds(tls, it) if rd_opt > RD_OPT_NONE { - (*VP8EncIterator)(unsafe.Pointer(it)).do_trellis_ = (libc.Bool32(rd_opt >= RD_OPT_TRELLIS_ALL)) + (*VP8EncIterator)(unsafe.Pointer(it)).do_trellis_ = libc.Bool32(rd_opt >= RD_OPT_TRELLIS_ALL) PickBestIntra16(tls, it, rd) if method >= 2 { PickBestIntra4(tls, it, rd) @@ -34061,9 +33763,9 @@ func VP8Decimate(tls *libc.TLS, it uintptr, rd uintptr, rd_opt VP8RDLevel) int32 // For method >= 2, pick the best intra4/intra16 based on SSE (~tad slower). // For method <= 1, we don't re-examine the decision but just go ahead with // quantization/reconstruction. - RefineUsingDistortion(tls, it, (libc.Bool32(method >= 2)), (libc.Bool32(method >= 1)), rd) + RefineUsingDistortion(tls, it, libc.Bool32(method >= 2), libc.Bool32(method >= 1), rd) } - is_skipped = (libc.Bool32((*VP8ModeScore)(unsafe.Pointer(rd)).nz == uint32_t(0))) + is_skipped = libc.Bool32((*VP8ModeScore)(unsafe.Pointer(rd)).nz == uint32_t(0)) VP8SetSkip(tls, it, is_skipped) return is_skipped } @@ -34074,7 +33776,7 @@ func VP8Decimate(tls *libc.TLS, it uintptr, rd uintptr, rd_opt VP8RDLevel) int32 // Helper functions func IsVP8XNeeded(tls *libc.TLS, enc uintptr) int32 { /* syntax_enc.c:24:12: */ - return libc.BoolInt32(!(!((*VP8Encoder)(unsafe.Pointer(enc)).has_alpha_ != 0))) // Currently the only case when VP8X is needed. + return libc.BoolInt32(!!((*VP8Encoder)(unsafe.Pointer(enc)).has_alpha_ != 0)) // Currently the only case when VP8X is needed. // This could change in the future. } @@ -34083,9 +33785,9 @@ func PutPaddingByte(tls *libc.TLS, pic uintptr) int32 { /* syntax_enc.c:29:12: * defer tls.Free(1) *(*[1]uint8_t)(unsafe.Pointer(bp /* pad_byte */)) = [1]uint8_t{uint8_t(0)} - return libc.BoolInt32(!(!((*struct { + return libc.BoolInt32(!!((*struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, (bp) /* &pad_byte[0] */, uint64(1), pic) != 0))) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, bp, uint64(1), pic) != 0)) } //------------------------------------------------------------------------------ @@ -34100,10 +33802,10 @@ func PutRIFFHeader(tls *libc.TLS, enc uintptr, riff_size size_t) WebPEncodingErr uint8_t('R'), uint8_t('I'), uint8_t('F'), uint8_t('F'), uint8_t(0), uint8_t(0), uint8_t(0), uint8_t(0), uint8_t('W'), uint8_t('E'), uint8_t('B'), uint8_t('P'), } - PutLE32(tls, ((bp) /* &riff[0] */ + uintptr(4)), uint32_t(riff_size)) + PutLE32(tls, bp+uintptr(4), uint32_t(riff_size)) if !((*struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, (bp) /* &riff[0] */, uint64(unsafe.Sizeof([12]uint8_t{})), pic) != 0) { + })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, bp, uint64(unsafe.Sizeof([12]uint8_t{})), pic) != 0) { return VP8_ENC_ERROR_BAD_WRITE } return VP8_ENC_OK @@ -34120,16 +33822,16 @@ func PutVP8XHeader(tls *libc.TLS, enc uintptr) WebPEncodingError { /* syntax_enc var flags uint32_t = uint32_t(0) if (*VP8Encoder)(unsafe.Pointer(enc)).has_alpha_ != 0 { - flags = flags | (ALPHA_FLAG) + flags = flags | ALPHA_FLAG } - PutLE32(tls, ((bp) /* &vp8x[0] */ + uintptr(4)), uint32(10)) - PutLE32(tls, ((bp) /* &vp8x[0] */ + uintptr(8)), flags) - PutLE24(tls, (((bp) /* &vp8x[0] */ + uintptr(8)) + uintptr(4)), ((*WebPPicture)(unsafe.Pointer(pic)).width - 1)) - PutLE24(tls, (((bp) /* &vp8x[0] */ + uintptr(8)) + uintptr(7)), ((*WebPPicture)(unsafe.Pointer(pic)).height - 1)) + PutLE32(tls, bp+uintptr(4), uint32(10)) + PutLE32(tls, bp+uintptr(8), flags) + PutLE24(tls, bp+uintptr(8)+uintptr(4), (*WebPPicture)(unsafe.Pointer(pic)).width-1) + PutLE24(tls, bp+uintptr(8)+uintptr(7), (*WebPPicture)(unsafe.Pointer(pic)).height-1) if !((*struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, (bp) /* &vp8x[0] */, uint64(unsafe.Sizeof([18]uint8_t{})), pic) != 0) { + })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, bp, uint64(unsafe.Sizeof([18]uint8_t{})), pic) != 0) { return VP8_ENC_ERROR_BAD_WRITE } return VP8_ENC_OK @@ -34145,10 +33847,10 @@ func PutAlphaChunk(tls *libc.TLS, enc uintptr) WebPEncodingError { /* syntax_enc } // Alpha chunk header. - PutLE32(tls, ((bp) /* &alpha_chunk_hdr[0] */ + uintptr(4)), (*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_size_) + PutLE32(tls, bp+uintptr(4), (*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_size_) if !((*struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, (bp) /* &alpha_chunk_hdr[0] */, uint64(unsafe.Sizeof([8]uint8_t{})), pic) != 0) { + })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, bp, uint64(unsafe.Sizeof([8]uint8_t{})), pic) != 0) { return VP8_ENC_ERROR_BAD_WRITE } @@ -34160,7 +33862,7 @@ func PutAlphaChunk(tls *libc.TLS, enc uintptr) WebPEncodingError { /* syntax_enc } // Padding. - if (((*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_size_ & uint32_t(1)) != 0) && !(PutPaddingByte(tls, pic) != 0) { + if (*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_size_&uint32_t(1) != 0 && !(PutPaddingByte(tls, pic) != 0) { return VP8_ENC_ERROR_BAD_WRITE } return VP8_ENC_OK @@ -34174,10 +33876,10 @@ func PutVP8Header(tls *libc.TLS, pic uintptr, vp8_size size_t) WebPEncodingError 0: uint8_t('V'), 1: uint8_t('P'), 2: uint8_t('8'), 3: uint8_t(' '), } - PutLE32(tls, ((bp) /* &vp8_chunk_hdr[0] */ + uintptr(4)), uint32_t(vp8_size)) + PutLE32(tls, bp+uintptr(4), uint32_t(vp8_size)) if !((*struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, (bp) /* &vp8_chunk_hdr[0] */, uint64(unsafe.Sizeof([8]uint8_t{})), pic) != 0) { + })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, bp, uint64(unsafe.Sizeof([8]uint8_t{})), pic) != 0) { return VP8_ENC_ERROR_BAD_WRITE } return VP8_ENC_OK @@ -34191,31 +33893,31 @@ func PutVP8FrameHeader(tls *libc.TLS, pic uintptr, profile int32, size0 size_t) var bits uint32_t - if size0 >= (uint64(int32(1) << 19)) { // partition #0 is too big to fit + if size0 >= uint64(int32(1)<<19) { // partition #0 is too big to fit return VP8_ENC_ERROR_PARTITION0_OVERFLOW } // Paragraph 9.1. - bits = ((uint32_t((0 | // keyframe (1b) - (profile << 1)) | // profile (3b) - (int32(1) << 4))) | // visible (1b) - (uint32_t(size0) << 5)) // partition length (19b) - *(*uint8_t)(unsafe.Pointer((bp) /* &vp8_frm_hdr[0] */)) = (uint8_t((bits >> 0) & uint32_t(0xff))) - *(*uint8_t)(unsafe.Pointer((bp) /* &vp8_frm_hdr[0] */ + 1)) = (uint8_t((bits >> 8) & uint32_t(0xff))) - *(*uint8_t)(unsafe.Pointer((bp) /* &vp8_frm_hdr[0] */ + 2)) = (uint8_t((bits >> 16) & uint32_t(0xff))) + bits = uint32_t(0| + profile<<1| + int32(1)<<4) | + uint32_t(size0)<<5 // partition length (19b) + *(*uint8_t)(unsafe.Pointer(bp)) = uint8_t(bits >> 0 & uint32_t(0xff)) + *(*uint8_t)(unsafe.Pointer(bp + 1)) = uint8_t(bits >> 8 & uint32_t(0xff)) + *(*uint8_t)(unsafe.Pointer(bp + 2)) = uint8_t(bits >> 16 & uint32_t(0xff)) // signature - *(*uint8_t)(unsafe.Pointer((bp) /* &vp8_frm_hdr[0] */ + 3)) = (uint8_t((int32(0x9d012a) >> 16) & 0xff)) - *(*uint8_t)(unsafe.Pointer((bp) /* &vp8_frm_hdr[0] */ + 4)) = (uint8_t((int32(0x9d012a) >> 8) & 0xff)) - *(*uint8_t)(unsafe.Pointer((bp) /* &vp8_frm_hdr[0] */ + 5)) = (uint8_t((int32(0x9d012a) >> 0) & 0xff)) + *(*uint8_t)(unsafe.Pointer(bp + 3)) = uint8_t(int32(0x9d012a) >> 16 & 0xff) + *(*uint8_t)(unsafe.Pointer(bp + 4)) = uint8_t(int32(0x9d012a) >> 8 & 0xff) + *(*uint8_t)(unsafe.Pointer(bp + 5)) = uint8_t(int32(0x9d012a) >> 0 & 0xff) // dimensions - *(*uint8_t)(unsafe.Pointer((bp) /* &vp8_frm_hdr[0] */ + 6)) = (uint8_t((*WebPPicture)(unsafe.Pointer(pic)).width & 0xff)) - *(*uint8_t)(unsafe.Pointer((bp) /* &vp8_frm_hdr[0] */ + 7)) = (uint8_t((*WebPPicture)(unsafe.Pointer(pic)).width >> 8)) - *(*uint8_t)(unsafe.Pointer((bp) /* &vp8_frm_hdr[0] */ + 8)) = (uint8_t((*WebPPicture)(unsafe.Pointer(pic)).height & 0xff)) - *(*uint8_t)(unsafe.Pointer((bp) /* &vp8_frm_hdr[0] */ + 9)) = (uint8_t((*WebPPicture)(unsafe.Pointer(pic)).height >> 8)) + *(*uint8_t)(unsafe.Pointer(bp + 6)) = uint8_t((*WebPPicture)(unsafe.Pointer(pic)).width & 0xff) + *(*uint8_t)(unsafe.Pointer(bp + 7)) = uint8_t((*WebPPicture)(unsafe.Pointer(pic)).width >> 8) + *(*uint8_t)(unsafe.Pointer(bp + 8)) = uint8_t((*WebPPicture)(unsafe.Pointer(pic)).height & 0xff) + *(*uint8_t)(unsafe.Pointer(bp + 9)) = uint8_t((*WebPPicture)(unsafe.Pointer(pic)).height >> 8) if !((*struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, (bp) /* &vp8_frm_hdr[0] */, uint64(unsafe.Sizeof([10]uint8_t{})), pic) != 0) { + })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, bp, uint64(unsafe.Sizeof([10]uint8_t{})), pic) != 0) { return VP8_ENC_ERROR_BAD_WRITE } return VP8_ENC_OK @@ -34293,9 +33995,9 @@ Error: // Segmentation header func PutSegmentHeader(tls *libc.TLS, bw uintptr, enc uintptr) { /* syntax_enc.c:187:13: */ - var hdr uintptr = (enc + 32 /* &.segment_hdr_ */) - var proba uintptr = (enc + 3616 /* &.proba_ */) - if VP8PutBitUniform(tls, bw, (libc.Bool32((*VP8EncSegmentHeader)(unsafe.Pointer(hdr)).num_segments_ > 1))) != 0 { + var hdr uintptr = enc + 32 + var proba uintptr = enc + 3616 + if VP8PutBitUniform(tls, bw, libc.Bool32((*VP8EncSegmentHeader)(unsafe.Pointer(hdr)).num_segments_ > 1)) != 0 { // We always 'update' the quant and filter strength values var update_data int32 = 1 var s int32 @@ -34304,16 +34006,16 @@ func PutSegmentHeader(tls *libc.TLS, bw uintptr, enc uintptr) { /* syntax_enc.c: // we always use absolute values, not relative ones VP8PutBitUniform(tls, bw, 1) // (segment_feature_mode = 1. Paragraph 9.3.) for s = 0; s < NUM_MB_SEGMENTS; s++ { - VP8PutSignedBits(tls, bw, (*VP8SegmentInfo)(unsafe.Pointer((enc+608 /* &.dqm_ */)+uintptr(s)*744)).quant_, 7) + VP8PutSignedBits(tls, bw, (*VP8SegmentInfo)(unsafe.Pointer(enc+608+uintptr(s)*744)).quant_, 7) } for s = 0; s < NUM_MB_SEGMENTS; s++ { - VP8PutSignedBits(tls, bw, (*VP8SegmentInfo)(unsafe.Pointer((enc+608 /* &.dqm_ */)+uintptr(s)*744)).fstrength_, 6) + VP8PutSignedBits(tls, bw, (*VP8SegmentInfo)(unsafe.Pointer(enc+608+uintptr(s)*744)).fstrength_, 6) } } if (*VP8EncSegmentHeader)(unsafe.Pointer(hdr)).update_map_ != 0 { for s = 0; s < 3; s++ { - if VP8PutBitUniform(tls, bw, (libc.Bool32(uint32(*(*uint8_t)(unsafe.Pointer((proba /* &.segments_ */) + uintptr(s)))) != 255))) != 0 { - VP8PutBits(tls, bw, uint32(*(*uint8_t)(unsafe.Pointer((proba /* &.segments_ */) + uintptr(s)))), 8) + if VP8PutBitUniform(tls, bw, libc.Bool32(uint32(*(*uint8_t)(unsafe.Pointer(proba + uintptr(s)))) != 255)) != 0 { + VP8PutBits(tls, bw, uint32(*(*uint8_t)(unsafe.Pointer(proba + uintptr(s)))), 8) } } } @@ -34322,13 +34024,13 @@ func PutSegmentHeader(tls *libc.TLS, bw uintptr, enc uintptr) { /* syntax_enc.c: // Filtering parameters header func PutFilterHeader(tls *libc.TLS, bw uintptr, hdr uintptr) { /* syntax_enc.c:217:13: */ - var use_lf_delta int32 = (libc.Bool32((*VP8EncFilterHeader)(unsafe.Pointer(hdr)).i4x4_lf_delta_ != 0)) + var use_lf_delta int32 = libc.Bool32((*VP8EncFilterHeader)(unsafe.Pointer(hdr)).i4x4_lf_delta_ != 0) VP8PutBitUniform(tls, bw, (*VP8EncFilterHeader)(unsafe.Pointer(hdr)).simple_) VP8PutBits(tls, bw, uint32((*VP8EncFilterHeader)(unsafe.Pointer(hdr)).level_), 6) VP8PutBits(tls, bw, uint32((*VP8EncFilterHeader)(unsafe.Pointer(hdr)).sharpness_), 3) if VP8PutBitUniform(tls, bw, use_lf_delta) != 0 { // '0' is the default value for i4x4_lf_delta_ at frame #0. - var need_update int32 = (libc.Bool32((*VP8EncFilterHeader)(unsafe.Pointer(hdr)).i4x4_lf_delta_ != 0)) + var need_update int32 = libc.Bool32((*VP8EncFilterHeader)(unsafe.Pointer(hdr)).i4x4_lf_delta_ != 0) if VP8PutBitUniform(tls, bw, need_update) != 0 { // we don't use ref_lf_delta => emit four 0 bits VP8PutBits(tls, bw, uint32(0), 4) @@ -34357,19 +34059,19 @@ func EmitPartitionsSize(tls *libc.TLS, enc uintptr, pic uintptr) int32 { /* synt // var buf [21]uint8_t at bp, 21 var p int32 - for p = 0; p < ((*VP8Encoder)(unsafe.Pointer(enc)).num_parts_ - 1); p++ { - var part_size size_t = VP8BitWriterSize(tls, ((enc + 112 /* &.parts_ */) + uintptr(p)*48)) - if part_size >= (uint64(int32(1) << 24)) { + for p = 0; p < (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_-1; p++ { + var part_size size_t = VP8BitWriterSize(tls, enc+112+uintptr(p)*48) + if part_size >= uint64(int32(1)<<24) { return WebPEncodingSetError(tls, pic, VP8_ENC_ERROR_PARTITION_OVERFLOW) } - *(*uint8_t)(unsafe.Pointer((bp) /* &buf[0] */ + uintptr(((3 * p) + 0)))) = (uint8_t((part_size >> 0) & uint64(0xff))) - *(*uint8_t)(unsafe.Pointer((bp) /* &buf[0] */ + uintptr(((3 * p) + 1)))) = (uint8_t((part_size >> 8) & uint64(0xff))) - *(*uint8_t)(unsafe.Pointer((bp) /* &buf[0] */ + uintptr(((3 * p) + 2)))) = (uint8_t((part_size >> 16) & uint64(0xff))) + *(*uint8_t)(unsafe.Pointer(bp + uintptr(3*p+0))) = uint8_t(part_size >> 0 & uint64(0xff)) + *(*uint8_t)(unsafe.Pointer(bp + uintptr(3*p+1))) = uint8_t(part_size >> 8 & uint64(0xff)) + *(*uint8_t)(unsafe.Pointer(bp + uintptr(3*p+2))) = uint8_t(part_size >> 16 & uint64(0xff)) } if p != 0 { return (*struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, (bp) /* &buf[0] */, (uint64(3 * p)), pic) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, bp /* &buf[0] */, uint64(3*p), pic) } return 1 } @@ -34377,21 +34079,21 @@ func EmitPartitionsSize(tls *libc.TLS, enc uintptr, pic uintptr) int32 { /* synt //------------------------------------------------------------------------------ func GeneratePartition0(tls *libc.TLS, enc uintptr) int32 { /* syntax_enc.c:266:12: */ - var bw uintptr = (enc + 64 /* &.bw_ */) - var mb_size int32 = ((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_) + var bw uintptr = enc + 64 + var mb_size int32 = (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_ var pos1 uint64_t var pos2 uint64_t var pos3 uint64_t pos1 = VP8BitWriterPos(tls, bw) - if !(VP8BitWriterInit(tls, bw, (uint64((mb_size*7)/8))) != 0) { // ~7 bits per macroblock + if !(VP8BitWriterInit(tls, bw, uint64(mb_size*7/8)) != 0) { // ~7 bits per macroblock return WebPEncodingSetError(tls, (*VP8Encoder)(unsafe.Pointer(enc)).pic_, VP8_ENC_ERROR_OUT_OF_MEMORY) } VP8PutBitUniform(tls, bw, 0) // colorspace VP8PutBitUniform(tls, bw, 0) // clamp type PutSegmentHeader(tls, bw, enc) - PutFilterHeader(tls, bw, (enc + 16 /* &.filter_hdr_ */)) + PutFilterHeader(tls, bw, enc+16) VP8PutBits(tls, bw, func() uint32 { if (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_ == 8 { return uint32(3) @@ -34410,7 +34112,7 @@ func GeneratePartition0(tls *libc.TLS, enc uintptr) int32 { /* syntax_enc.c:266: }(), 2) PutQuant(tls, bw, enc) VP8PutBitUniform(tls, bw, 0) // no proba update - VP8WriteProbas(tls, bw, (enc + 3616 /* &.proba_ */)) + VP8WriteProbas(tls, bw, enc+3616) pos2 = VP8BitWriterPos(tls, bw) VP8CodeIntraModes(tls, enc) VP8BitWriterFinish(tls, bw) @@ -34418,8 +34120,8 @@ func GeneratePartition0(tls *libc.TLS, enc uintptr) int32 { /* syntax_enc.c:266: pos3 = VP8BitWriterPos(tls, bw) if (*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats != 0 { - *(*int32)(unsafe.Pointer(((*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats + 36 /* &.header_bytes */))) = (int32(((pos2 - pos1) + uint64(7)) >> 3)) - *(*int32)(unsafe.Pointer(((*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats + 36 /* &.header_bytes */) + 1*4)) = (int32(((pos3 - pos2) + uint64(7)) >> 3)) + *(*int32)(unsafe.Pointer((*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats + 36)) = int32((pos2 - pos1 + uint64(7)) >> 3) + *(*int32)(unsafe.Pointer((*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats + 36 + 1*4)) = int32((pos3 - pos2 + uint64(7)) >> 3) (*WebPAuxStats)(unsafe.Pointer((*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats)).alpha_data_size = int32((*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_size_) } if (*VP8BitWriter)(unsafe.Pointer(bw)).error_ != 0 { @@ -34430,18 +34132,18 @@ func GeneratePartition0(tls *libc.TLS, enc uintptr) int32 { /* syntax_enc.c:266: func VP8EncFreeBitWriters(tls *libc.TLS, enc uintptr) { /* syntax_enc.c:309:6: */ var p int32 - VP8BitWriterWipeOut(tls, (enc + 64 /* &.bw_ */)) + VP8BitWriterWipeOut(tls, enc+64) for p = 0; p < (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_; p++ { - VP8BitWriterWipeOut(tls, ((enc + 112 /* &.parts_ */) + uintptr(p)*48)) + VP8BitWriterWipeOut(tls, enc+112+uintptr(p)*48) } } func VP8EncWrite(tls *libc.TLS, enc uintptr) int32 { /* syntax_enc.c:317:5: */ var pic uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).pic_ - var bw uintptr = (enc + 64 /* &.bw_ */) + var bw uintptr = enc + 64 var task_percent int32 = 19 - var percent_per_part int32 = (task_percent / (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_) - var final_percent int32 = ((*VP8Encoder)(unsafe.Pointer(enc)).percent_ + task_percent) + var percent_per_part int32 = task_percent / (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_ + var final_percent int32 = (*VP8Encoder)(unsafe.Pointer(enc)).percent_ + task_percent var ok int32 = 0 var vp8_size size_t var pad size_t @@ -34455,22 +34157,22 @@ func VP8EncWrite(tls *libc.TLS, enc uintptr) int32 { /* syntax_enc.c:317:5: */ } // Compute VP8 size - vp8_size = ((uint64(10) + VP8BitWriterSize(tls, bw)) + (size_t(3 * ((*VP8Encoder)(unsafe.Pointer(enc)).num_parts_ - 1)))) + vp8_size = uint64(10) + VP8BitWriterSize(tls, bw) + size_t(3*((*VP8Encoder)(unsafe.Pointer(enc)).num_parts_-1)) for p = 0; p < (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_; p++ { - vp8_size = vp8_size + (VP8BitWriterSize(tls, ((enc + 112 /* &.parts_ */) + uintptr(p)*48))) + vp8_size = vp8_size + VP8BitWriterSize(tls, enc+112+uintptr(p)*48) } - pad = (vp8_size & uint64(1)) - vp8_size = vp8_size + (pad) + pad = vp8_size & uint64(1) + vp8_size = vp8_size + pad // Compute RIFF size // At the minimum it is: "WEBPVP8 nnnn" + VP8 data size. - riff_size = ((uint64(4 + 8)) + vp8_size) + riff_size = uint64(4+8) + vp8_size if IsVP8XNeeded(tls, enc) != 0 { // Add size for: VP8X header + data. - riff_size = riff_size + (uint64(8 + 10)) + riff_size = riff_size + uint64(8+10) } if (*VP8Encoder)(unsafe.Pointer(enc)).has_alpha_ != 0 { // Add size for: ALPH header + data. - var padded_alpha_size uint32_t = ((*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_size_ + ((*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_size_ & uint32_t(1))) - riff_size = riff_size + (size_t(uint32_t(8) + padded_alpha_size)) + var padded_alpha_size uint32_t = (*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_size_ + (*VP8Encoder)(unsafe.Pointer(enc)).alpha_data_size_&uint32_t(1) + riff_size = riff_size + size_t(uint32_t(8)+padded_alpha_size) } // RIFF size should fit in 32-bits. if riff_size > uint64(0xfffffffe) { @@ -34481,36 +34183,36 @@ func VP8EncWrite(tls *libc.TLS, enc uintptr) int32 { /* syntax_enc.c:317:5: */ { var part0 uintptr = VP8BitWriterBuf(tls, bw) var size0 size_t = VP8BitWriterSize(tls, bw) - ok = (libc.Bool32((((ok != 0) && (PutWebPHeaders(tls, enc, size0, vp8_size, riff_size) != 0)) && - ((*struct { + ok = libc.Bool32(ok != 0 && PutWebPHeaders(tls, enc, size0, vp8_size, riff_size) != 0 && + (*struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, part0, size0, pic) != 0)) && - (EmitPartitionsSize(tls, enc, pic) != 0))) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, part0, size0, pic) != 0 && + EmitPartitionsSize(tls, enc, pic) != 0) VP8BitWriterWipeOut(tls, bw) // will free the internal buffer. } // Token partitions for p = 0; p < (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_; p++ { - var buf uintptr = VP8BitWriterBuf(tls, ((enc + 112 /* &.parts_ */) + uintptr(p)*48)) - var size size_t = VP8BitWriterSize(tls, ((enc + 112 /* &.parts_ */) + uintptr(p)*48)) + var buf uintptr = VP8BitWriterBuf(tls, enc+112+uintptr(p)*48) + var size size_t = VP8BitWriterSize(tls, enc+112+uintptr(p)*48) if size != 0 { - ok = (libc.Bool32((ok != 0) && ((*struct { + ok = libc.Bool32(ok != 0 && (*struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, buf, size, pic) != 0))) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, buf, size, pic) != 0) } - VP8BitWriterWipeOut(tls, ((enc + 112 /* &.parts_ */) + uintptr(p)*48)) // will free the internal buffer. - ok = (libc.Bool32((ok != 0) && (WebPReportProgress(tls, pic, ((*VP8Encoder)(unsafe.Pointer(enc)).percent_+percent_per_part), - (enc+536 /* &.percent_ */)) != 0))) + VP8BitWriterWipeOut(tls, enc+112+uintptr(p)*48) // will free the internal buffer. + ok = libc.Bool32(ok != 0 && WebPReportProgress(tls, pic, (*VP8Encoder)(unsafe.Pointer(enc)).percent_+percent_per_part, + enc+536) != 0) } // Padding byte - if (ok != 0) && (pad != 0) { + if ok != 0 && pad != 0 { ok = PutPaddingByte(tls, pic) } - (*VP8Encoder)(unsafe.Pointer(enc)).coded_size_ = (int32(uint64(8) + riff_size)) - ok = (libc.Bool32((ok != 0) && (WebPReportProgress(tls, pic, final_percent, (enc+536 /* &.percent_ */)) != 0))) + (*VP8Encoder)(unsafe.Pointer(enc)).coded_size_ = int32(uint64(8) + riff_size) + ok = libc.Bool32(ok != 0 && WebPReportProgress(tls, pic, final_percent, enc+536) != 0) return ok } @@ -34560,9 +34262,9 @@ type token_t = uint16_t /* token_enc.c:33:18 */ //------------------------------------------------------------------------------ func VP8TBufferInit(tls *libc.TLS, b uintptr, page_size int32) { /* token_enc.c:45:6: */ - (*VP8TBuffer)(unsafe.Pointer(b)).tokens_ = (uintptr(0)) - (*VP8TBuffer)(unsafe.Pointer(b)).pages_ = (uintptr(0)) - (*VP8TBuffer)(unsafe.Pointer(b)).last_page_ = (b /* &.pages_ */) + (*VP8TBuffer)(unsafe.Pointer(b)).tokens_ = uintptr(0) + (*VP8TBuffer)(unsafe.Pointer(b)).pages_ = uintptr(0) + (*VP8TBuffer)(unsafe.Pointer(b)).last_page_ = b (*VP8TBuffer)(unsafe.Pointer(b)).left_ = 0 (*VP8TBuffer)(unsafe.Pointer(b)).page_size_ = func() int32 { if page_size < 8192 { @@ -34574,9 +34276,9 @@ func VP8TBufferInit(tls *libc.TLS, b uintptr, page_size int32) { /* token_enc.c: } func VP8TBufferClear(tls *libc.TLS, b uintptr) { /* token_enc.c:54:6: */ - if b != (uintptr(0)) { + if b != uintptr(0) { var p uintptr = (*VP8TBuffer)(unsafe.Pointer(b)).pages_ - for p != (uintptr(0)) { + for p != uintptr(0) { var next uintptr = (*VP8Tokens)(unsafe.Pointer(p)).next_ WebPSafeFree(tls, p) p = next @@ -34586,21 +34288,21 @@ func VP8TBufferClear(tls *libc.TLS, b uintptr) { /* token_enc.c:54:6: */ } func TBufferNewPage(tls *libc.TLS, b uintptr) int32 { /* token_enc.c:66:12: */ - var page uintptr = (uintptr(0)) + var page uintptr = uintptr(0) if !((*VP8TBuffer)(unsafe.Pointer(b)).error_ != 0) { - var size size_t = (uint64(unsafe.Sizeof(VP8Tokens{})) + (uint64((*VP8TBuffer)(unsafe.Pointer(b)).page_size_) * uint64(unsafe.Sizeof(token_t(0))))) + var size size_t = uint64(unsafe.Sizeof(VP8Tokens{})) + uint64((*VP8TBuffer)(unsafe.Pointer(b)).page_size_)*uint64(unsafe.Sizeof(token_t(0))) page = WebPSafeMalloc(tls, 1, size) } - if page == (uintptr(0)) { + if page == uintptr(0) { (*VP8TBuffer)(unsafe.Pointer(b)).error_ = 1 return 0 } - (*VP8Tokens)(unsafe.Pointer(page)).next_ = (uintptr(0)) + (*VP8Tokens)(unsafe.Pointer(page)).next_ = uintptr(0) *(*uintptr)(unsafe.Pointer((*VP8TBuffer)(unsafe.Pointer(b)).last_page_)) = page - (*VP8TBuffer)(unsafe.Pointer(b)).last_page_ = (page /* &.next_ */) + (*VP8TBuffer)(unsafe.Pointer(b)).last_page_ = page (*VP8TBuffer)(unsafe.Pointer(b)).left_ = (*VP8TBuffer)(unsafe.Pointer(b)).page_size_ - (*VP8TBuffer)(unsafe.Pointer(b)).tokens_ = ((page) + 1*8) + (*VP8TBuffer)(unsafe.Pointer(b)).tokens_ = page + 1*8 return 1 } @@ -34608,9 +34310,9 @@ func TBufferNewPage(tls *libc.TLS, b uintptr) int32 { /* token_enc.c:66:12: */ func AddToken(tls *libc.TLS, b uintptr, bit uint32_t, proba_idx uint32_t, stats uintptr) uint32_t { /* token_enc.c:90:29: */ - if ((*VP8TBuffer)(unsafe.Pointer(b)).left_ > 0) || (TBufferNewPage(tls, b) != 0) { + if (*VP8TBuffer)(unsafe.Pointer(b)).left_ > 0 || TBufferNewPage(tls, b) != 0 { var slot int32 = libc.PreDecInt32(&(*VP8TBuffer)(unsafe.Pointer(b)).left_, 1) - *(*uint16_t)(unsafe.Pointer((*VP8TBuffer)(unsafe.Pointer(b)).tokens_ + uintptr(slot)*2)) = (uint16_t((bit << 15) | proba_idx)) + *(*uint16_t)(unsafe.Pointer((*VP8TBuffer)(unsafe.Pointer(b)).tokens_ + uintptr(slot)*2)) = uint16_t(bit<<15 | proba_idx) } VP8RecordStats(tls, int32(bit), stats) return bit @@ -34618,9 +34320,9 @@ func AddToken(tls *libc.TLS, b uintptr, bit uint32_t, proba_idx uint32_t, stats func AddConstantToken(tls *libc.TLS, b uintptr, bit uint32_t, proba uint32_t) { /* token_enc.c:103:25: */ - if ((*VP8TBuffer)(unsafe.Pointer(b)).left_ > 0) || (TBufferNewPage(tls, b) != 0) { + if (*VP8TBuffer)(unsafe.Pointer(b)).left_ > 0 || TBufferNewPage(tls, b) != 0 { var slot int32 = libc.PreDecInt32(&(*VP8TBuffer)(unsafe.Pointer(b)).left_, 1) - *(*uint16_t)(unsafe.Pointer((*VP8TBuffer)(unsafe.Pointer(b)).tokens_ + uintptr(slot)*2)) = (uint16_t(((bit << 15) | (uint32(1) << 14)) | proba)) + *(*uint16_t)(unsafe.Pointer((*VP8TBuffer)(unsafe.Pointer(b)).tokens_ + uintptr(slot)*2)) = uint16_t(bit<<15 | uint32(1)<<14 | proba) } } @@ -34629,81 +34331,81 @@ func VP8RecordCoeffTokens(tls *libc.TLS, ctx int32, res uintptr, tokens uintptr) var coeff_type int32 = (*VP8Residual1)(unsafe.Pointer(res)).coeff_type var last int32 = (*VP8Residual1)(unsafe.Pointer(res)).last var n int32 = (*VP8Residual1)(unsafe.Pointer(res)).first - var base_id uint32_t = (uint32_t(NUM_PROBAS * ((ctx) + (NUM_CTX * ((n) + (NUM_BANDS * (coeff_type))))))) + var base_id uint32_t = uint32_t(NUM_PROBAS * (ctx + NUM_CTX*(n+NUM_BANDS*coeff_type))) // should be stats[VP8EncBands[n]], but it's equivalent for n=0 or 1 - var s uintptr = (((*VP8Residual1)(unsafe.Pointer(res)).stats + uintptr(n)*132) + uintptr(ctx)*44) - if !(AddToken(tls, tokens, (uint32(libc.Bool32(last >= 0))), (base_id+uint32_t(0)), (s+uintptr(0)*4)) != 0) { + var s uintptr = (*VP8Residual1)(unsafe.Pointer(res)).stats + uintptr(n)*132 + uintptr(ctx)*44 + if !(AddToken(tls, tokens, uint32(libc.Bool32(last >= 0)), base_id+uint32_t(0), s+uintptr(0)*4) != 0) { return 0 } for n < 16 { var c int32 = int32(*(*int16_t)(unsafe.Pointer(coeffs + uintptr(libc.PostIncInt32(&n, 1))*2))) - var sign int32 = (libc.Bool32(c < 0)) + var sign int32 = libc.Bool32(c < 0) var v uint32_t if sign != 0 { v = uint32(-c) } else { v = uint32(c) } - if !(AddToken(tls, tokens, (uint32(libc.Bool32(v != uint32_t(0)))), (base_id+uint32_t(1)), (s+uintptr(1)*4)) != 0) { - base_id = (uint32_t(NUM_PROBAS * ((0) + (NUM_CTX * ((int32(VP8EncBands[n])) + (NUM_BANDS * (coeff_type))))))) // ctx=0 - s = ((*VP8Residual1)(unsafe.Pointer(res)).stats + uintptr(VP8EncBands[n])*132) + if !(AddToken(tls, tokens, uint32(libc.Bool32(v != uint32_t(0))), base_id+uint32_t(1), s+uintptr(1)*4) != 0) { + base_id = uint32_t(NUM_PROBAS * (0 + NUM_CTX*(int32(VP8EncBands[n])+NUM_BANDS*coeff_type))) // ctx=0 + s = (*VP8Residual1)(unsafe.Pointer(res)).stats + uintptr(VP8EncBands[n])*132 continue } - if !(AddToken(tls, tokens, (uint32(libc.Bool32(v > uint32_t(1)))), (base_id+uint32_t(2)), (s+uintptr(2)*4)) != 0) { - base_id = (uint32_t(NUM_PROBAS * ((1) + (NUM_CTX * ((int32(VP8EncBands[n])) + (NUM_BANDS * (coeff_type))))))) // ctx=1 - s = (((*VP8Residual1)(unsafe.Pointer(res)).stats + uintptr(VP8EncBands[n])*132) + 1*44) + if !(AddToken(tls, tokens, uint32(libc.Bool32(v > uint32_t(1))), base_id+uint32_t(2), s+uintptr(2)*4) != 0) { + base_id = uint32_t(NUM_PROBAS * (1 + NUM_CTX*(int32(VP8EncBands[n])+NUM_BANDS*coeff_type))) // ctx=1 + s = (*VP8Residual1)(unsafe.Pointer(res)).stats + uintptr(VP8EncBands[n])*132 + 1*44 } else { - if !(AddToken(tls, tokens, (uint32(libc.Bool32(v > uint32_t(4)))), (base_id+uint32_t(3)), (s+uintptr(3)*4)) != 0) { - if AddToken(tls, tokens, (uint32(libc.Bool32(v != uint32_t(2)))), (base_id+uint32_t(4)), (s+uintptr(4)*4)) != 0 { - AddToken(tls, tokens, (uint32(libc.Bool32(v == uint32_t(4)))), (base_id + uint32_t(5)), (s + uintptr(5)*4)) + if !(AddToken(tls, tokens, uint32(libc.Bool32(v > uint32_t(4))), base_id+uint32_t(3), s+uintptr(3)*4) != 0) { + if AddToken(tls, tokens, uint32(libc.Bool32(v != uint32_t(2))), base_id+uint32_t(4), s+uintptr(4)*4) != 0 { + AddToken(tls, tokens, uint32(libc.Bool32(v == uint32_t(4))), base_id+uint32_t(5), s+uintptr(5)*4) } - } else if !(AddToken(tls, tokens, (uint32(libc.Bool32(v > uint32_t(10)))), (base_id+uint32_t(6)), (s+uintptr(6)*4)) != 0) { - if !(AddToken(tls, tokens, (uint32(libc.Bool32(v > uint32_t(6)))), (base_id+uint32_t(7)), (s+uintptr(7)*4)) != 0) { - AddConstantToken(tls, tokens, (uint32(libc.Bool32(v == uint32_t(6)))), uint32(159)) + } else if !(AddToken(tls, tokens, uint32(libc.Bool32(v > uint32_t(10))), base_id+uint32_t(6), s+uintptr(6)*4) != 0) { + if !(AddToken(tls, tokens, uint32(libc.Bool32(v > uint32_t(6))), base_id+uint32_t(7), s+uintptr(7)*4) != 0) { + AddConstantToken(tls, tokens, uint32(libc.Bool32(v == uint32_t(6))), uint32(159)) } else { - AddConstantToken(tls, tokens, (uint32(libc.Bool32(v >= uint32_t(9)))), uint32(165)) - AddConstantToken(tls, tokens, libc.BoolUint32(!((v & uint32_t(1)) != 0)), uint32(145)) + AddConstantToken(tls, tokens, uint32(libc.Bool32(v >= uint32_t(9))), uint32(165)) + AddConstantToken(tls, tokens, libc.BoolUint32(!(v&uint32_t(1) != 0)), uint32(145)) } } else { var mask int32 var tab uintptr - var residue uint32_t = (v - uint32_t(3)) - if residue < (uint32_t(int32(8) << 1)) { // VP8Cat3 (3b) - AddToken(tls, tokens, uint32(0), (base_id + uint32_t(8)), (s + uintptr(8)*4)) - AddToken(tls, tokens, uint32(0), (base_id + uint32_t(9)), (s + uintptr(9)*4)) - residue = residue - (uint32_t(int32(8) << 0)) - mask = (int32(1) << 2) + var residue uint32_t = v - uint32_t(3) + if residue < uint32_t(int32(8)<<1) { // VP8Cat3 (3b) + AddToken(tls, tokens, uint32(0), base_id+uint32_t(8), s+uintptr(8)*4) + AddToken(tls, tokens, uint32(0), base_id+uint32_t(9), s+uintptr(9)*4) + residue = residue - uint32_t(int32(8)<<0) + mask = int32(1) << 2 tab = uintptr(unsafe.Pointer(&VP8Cat3)) - } else if residue < (uint32_t(int32(8) << 2)) { // VP8Cat4 (4b) - AddToken(tls, tokens, uint32(0), (base_id + uint32_t(8)), (s + uintptr(8)*4)) - AddToken(tls, tokens, uint32(1), (base_id + uint32_t(9)), (s + uintptr(9)*4)) - residue = residue - (uint32_t(int32(8) << 1)) - mask = (int32(1) << 3) + } else if residue < uint32_t(int32(8)<<2) { // VP8Cat4 (4b) + AddToken(tls, tokens, uint32(0), base_id+uint32_t(8), s+uintptr(8)*4) + AddToken(tls, tokens, uint32(1), base_id+uint32_t(9), s+uintptr(9)*4) + residue = residue - uint32_t(int32(8)<<1) + mask = int32(1) << 3 tab = uintptr(unsafe.Pointer(&VP8Cat4)) - } else if residue < (uint32_t(int32(8) << 3)) { // VP8Cat5 (5b) - AddToken(tls, tokens, uint32(1), (base_id + uint32_t(8)), (s + uintptr(8)*4)) - AddToken(tls, tokens, uint32(0), (base_id + uint32_t(10)), (s + uintptr(9)*4)) - residue = residue - (uint32_t(int32(8) << 2)) - mask = (int32(1) << 4) + } else if residue < uint32_t(int32(8)<<3) { // VP8Cat5 (5b) + AddToken(tls, tokens, uint32(1), base_id+uint32_t(8), s+uintptr(8)*4) + AddToken(tls, tokens, uint32(0), base_id+uint32_t(10), s+uintptr(9)*4) + residue = residue - uint32_t(int32(8)<<2) + mask = int32(1) << 4 tab = uintptr(unsafe.Pointer(&VP8Cat5)) } else { // VP8Cat6 (11b) - AddToken(tls, tokens, uint32(1), (base_id + uint32_t(8)), (s + uintptr(8)*4)) - AddToken(tls, tokens, uint32(1), (base_id + uint32_t(10)), (s + uintptr(9)*4)) - residue = residue - (uint32_t(int32(8) << 3)) - mask = (int32(1) << 10) + AddToken(tls, tokens, uint32(1), base_id+uint32_t(8), s+uintptr(8)*4) + AddToken(tls, tokens, uint32(1), base_id+uint32_t(10), s+uintptr(9)*4) + residue = residue - uint32_t(int32(8)<<3) + mask = int32(1) << 10 tab = uintptr(unsafe.Pointer(&VP8Cat6)) } for mask != 0 { - AddConstantToken(tls, tokens, libc.BoolUint32(!(!((residue & uint32_t(mask)) != 0))), uint32(*(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&tab, 1))))) + AddConstantToken(tls, tokens, libc.BoolUint32(!!(residue&uint32_t(mask) != 0)), uint32(*(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&tab, 1))))) mask >>= 1 } } - base_id = (uint32_t(NUM_PROBAS * ((2) + (NUM_CTX * ((int32(VP8EncBands[n])) + (NUM_BANDS * (coeff_type))))))) // ctx=2 - s = (((*VP8Residual1)(unsafe.Pointer(res)).stats + uintptr(VP8EncBands[n])*132) + 2*44) + base_id = uint32_t(NUM_PROBAS * (2 + NUM_CTX*(int32(VP8EncBands[n])+NUM_BANDS*coeff_type))) // ctx=2 + s = (*VP8Residual1)(unsafe.Pointer(res)).stats + uintptr(VP8EncBands[n])*132 + 2*44 } AddConstantToken(tls, tokens, uint32(sign), uint32(128)) - if (n == 16) || !(AddToken(tls, tokens, (uint32(libc.Bool32(n <= last))), (base_id+uint32_t(0)), (s+uintptr(0)*4)) != 0) { + if n == 16 || !(AddToken(tls, tokens, uint32(libc.Bool32(n <= last)), base_id+uint32_t(0), s+uintptr(0)*4) != 0) { return 1 // EOB } } @@ -34716,23 +34418,23 @@ func VP8RecordCoeffTokens(tls *libc.TLS, ctx int32, res uintptr, tokens uintptr) func VP8EmitTokens(tls *libc.TLS, b uintptr, bw uintptr, probas uintptr, final_pass int32) int32 { /* token_enc.c:200:5: */ var p uintptr = (*VP8TBuffer)(unsafe.Pointer(b)).pages_ - for p != (uintptr(0)) { + for p != uintptr(0) { var next uintptr = (*VP8Tokens)(unsafe.Pointer(p)).next_ var N int32 - if next == (uintptr(0)) { + if next == uintptr(0) { N = (*VP8TBuffer)(unsafe.Pointer(b)).left_ } else { N = 0 } var n int32 = (*VP8TBuffer)(unsafe.Pointer(b)).page_size_ - var tokens uintptr = ((p) + 1*8) + var tokens uintptr = p + 1*8 for libc.PostDecInt32(&n, 1) > N { var token token_t = *(*token_t)(unsafe.Pointer(tokens + uintptr(n)*2)) - var bit int32 = ((int32(token) >> 15) & 1) - if (uint32(token) & (uint32(1) << 14)) != 0 { - VP8PutBit(tls, bw, bit, (int32(uint32(token) & 0xff))) // constant proba + var bit int32 = int32(token) >> 15 & 1 + if uint32(token)&(uint32(1)<<14) != 0 { + VP8PutBit(tls, bw, bit, int32(uint32(token)&0xff)) // constant proba } else { - VP8PutBit(tls, bw, bit, int32(*(*uint8_t)(unsafe.Pointer(probas + uintptr((uint32(token) & 0x3fff)))))) + VP8PutBit(tls, bw, bit, int32(*(*uint8_t)(unsafe.Pointer(probas + uintptr(uint32(token)&0x3fff))))) } } if final_pass != 0 { @@ -34741,7 +34443,7 @@ func VP8EmitTokens(tls *libc.TLS, b uintptr, bw uintptr, probas uintptr, final_p p = next } if final_pass != 0 { - (*VP8TBuffer)(unsafe.Pointer(b)).pages_ = (uintptr(0)) + (*VP8TBuffer)(unsafe.Pointer(b)).pages_ = uintptr(0) } return 1 } @@ -34751,23 +34453,23 @@ func VP8EstimateTokenSize(tls *libc.TLS, b uintptr, probas uintptr) size_t { /* var size size_t = uint64(0) var p uintptr = (*VP8TBuffer)(unsafe.Pointer(b)).pages_ - for p != (uintptr(0)) { + for p != uintptr(0) { var next uintptr = (*VP8Tokens)(unsafe.Pointer(p)).next_ var N int32 - if next == (uintptr(0)) { + if next == uintptr(0) { N = (*VP8TBuffer)(unsafe.Pointer(b)).left_ } else { N = 0 } var n int32 = (*VP8TBuffer)(unsafe.Pointer(b)).page_size_ - var tokens uintptr = ((p) + 1*8) + var tokens uintptr = p + 1*8 for libc.PostDecInt32(&n, 1) > N { var token token_t = *(*token_t)(unsafe.Pointer(tokens + uintptr(n)*2)) - var bit int32 = (int32(token) & (int32(1) << 15)) - if (uint32(token) & (uint32(1) << 14)) != 0 { - size = size + (size_t(VP8BitCost(tls, bit, (uint8(uint32(token) & 0xff))))) + var bit int32 = int32(token) & (int32(1) << 15) + if uint32(token)&(uint32(1)<<14) != 0 { + size = size + size_t(VP8BitCost(tls, bit, uint8(uint32(token)&0xff))) } else { - size = size + (size_t(VP8BitCost(tls, bit, *(*uint8_t)(unsafe.Pointer(probas + uintptr((uint32(token) & 0x3fff))))))) + size = size + size_t(VP8BitCost(tls, bit, *(*uint8_t)(unsafe.Pointer(probas + uintptr(uint32(token)&0x3fff))))) } } p = next @@ -34783,269 +34485,269 @@ func VP8EstimateTokenSize(tls *libc.TLS, b uintptr, probas uintptr) size_t { /* // Default probabilities // Paragraph 13.5 -var VP8CoeffsProba0 = [4][8][3][11]uint8_t{[8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, +var VP8CoeffsProba0 = [4][8][3][11]uint8_t{{ + {{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(253), uint8_t(136), uint8_t(254), uint8_t(255), uint8_t(228), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(189), uint8_t(129), uint8_t(242), uint8_t(255), uint8_t(227), uint8_t(213), uint8_t(255), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(106), uint8_t(126), uint8_t(227), uint8_t(252), uint8_t(214), uint8_t(209), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(253), uint8_t(136), uint8_t(254), uint8_t(255), uint8_t(228), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(189), uint8_t(129), uint8_t(242), uint8_t(255), uint8_t(227), uint8_t(213), uint8_t(255), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(106), uint8_t(126), uint8_t(227), uint8_t(252), uint8_t(214), uint8_t(209), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(98), uint8_t(248), uint8_t(255), uint8_t(236), uint8_t(226), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(181), uint8_t(133), uint8_t(238), uint8_t(254), uint8_t(221), uint8_t(234), uint8_t(255), uint8_t(154), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(78), uint8_t(134), uint8_t(202), uint8_t(247), uint8_t(198), uint8_t(180), uint8_t(255), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(98), uint8_t(248), uint8_t(255), uint8_t(236), uint8_t(226), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(181), uint8_t(133), uint8_t(238), uint8_t(254), uint8_t(221), uint8_t(234), uint8_t(255), uint8_t(154), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(78), uint8_t(134), uint8_t(202), uint8_t(247), uint8_t(198), uint8_t(180), uint8_t(255), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(185), uint8_t(249), uint8_t(255), uint8_t(243), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(184), uint8_t(150), uint8_t(247), uint8_t(255), uint8_t(236), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(77), uint8_t(110), uint8_t(216), uint8_t(255), uint8_t(236), uint8_t(230), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(185), uint8_t(249), uint8_t(255), uint8_t(243), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(184), uint8_t(150), uint8_t(247), uint8_t(255), uint8_t(236), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(77), uint8_t(110), uint8_t(216), uint8_t(255), uint8_t(236), uint8_t(230), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(101), uint8_t(251), uint8_t(255), uint8_t(241), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(170), uint8_t(139), uint8_t(241), uint8_t(252), uint8_t(236), uint8_t(209), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(37), uint8_t(116), uint8_t(196), uint8_t(243), uint8_t(228), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(101), uint8_t(251), uint8_t(255), uint8_t(241), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(170), uint8_t(139), uint8_t(241), uint8_t(252), uint8_t(236), uint8_t(209), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(37), uint8_t(116), uint8_t(196), uint8_t(243), uint8_t(228), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(204), uint8_t(254), uint8_t(255), uint8_t(245), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(207), uint8_t(160), uint8_t(250), uint8_t(255), uint8_t(238), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(102), uint8_t(103), uint8_t(231), uint8_t(255), uint8_t(211), uint8_t(171), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(204), uint8_t(254), uint8_t(255), uint8_t(245), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(207), uint8_t(160), uint8_t(250), uint8_t(255), uint8_t(238), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(102), uint8_t(103), uint8_t(231), uint8_t(255), uint8_t(211), uint8_t(171), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(152), uint8_t(252), uint8_t(255), uint8_t(240), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(177), uint8_t(135), uint8_t(243), uint8_t(255), uint8_t(234), uint8_t(225), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(80), uint8_t(129), uint8_t(211), uint8_t(255), uint8_t(194), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(152), uint8_t(252), uint8_t(255), uint8_t(240), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(177), uint8_t(135), uint8_t(243), uint8_t(255), uint8_t(234), uint8_t(225), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(80), uint8_t(129), uint8_t(211), uint8_t(255), uint8_t(194), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(246), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(246), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, }, - [8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(198), uint8_t(35), uint8_t(237), uint8_t(223), uint8_t(193), uint8_t(187), uint8_t(162), uint8_t(160), uint8_t(145), uint8_t(155), uint8_t(62)}, - [11]uint8_t{uint8_t(131), uint8_t(45), uint8_t(198), uint8_t(221), uint8_t(172), uint8_t(176), uint8_t(220), uint8_t(157), uint8_t(252), uint8_t(221), uint8_t(1)}, - [11]uint8_t{uint8_t(68), uint8_t(47), uint8_t(146), uint8_t(208), uint8_t(149), uint8_t(167), uint8_t(221), uint8_t(162), uint8_t(255), uint8_t(223), uint8_t(128)}, + { + {{uint8_t(198), uint8_t(35), uint8_t(237), uint8_t(223), uint8_t(193), uint8_t(187), uint8_t(162), uint8_t(160), uint8_t(145), uint8_t(155), uint8_t(62)}, + {uint8_t(131), uint8_t(45), uint8_t(198), uint8_t(221), uint8_t(172), uint8_t(176), uint8_t(220), uint8_t(157), uint8_t(252), uint8_t(221), uint8_t(1)}, + {uint8_t(68), uint8_t(47), uint8_t(146), uint8_t(208), uint8_t(149), uint8_t(167), uint8_t(221), uint8_t(162), uint8_t(255), uint8_t(223), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(149), uint8_t(241), uint8_t(255), uint8_t(221), uint8_t(224), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(184), uint8_t(141), uint8_t(234), uint8_t(253), uint8_t(222), uint8_t(220), uint8_t(255), uint8_t(199), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(81), uint8_t(99), uint8_t(181), uint8_t(242), uint8_t(176), uint8_t(190), uint8_t(249), uint8_t(202), uint8_t(255), uint8_t(255), uint8_t(128)}, + {{uint8_t(1), uint8_t(149), uint8_t(241), uint8_t(255), uint8_t(221), uint8_t(224), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(184), uint8_t(141), uint8_t(234), uint8_t(253), uint8_t(222), uint8_t(220), uint8_t(255), uint8_t(199), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(81), uint8_t(99), uint8_t(181), uint8_t(242), uint8_t(176), uint8_t(190), uint8_t(249), uint8_t(202), uint8_t(255), uint8_t(255), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(129), uint8_t(232), uint8_t(253), uint8_t(214), uint8_t(197), uint8_t(242), uint8_t(196), uint8_t(255), uint8_t(255), uint8_t(128)}, - [11]uint8_t{uint8_t(99), uint8_t(121), uint8_t(210), uint8_t(250), uint8_t(201), uint8_t(198), uint8_t(255), uint8_t(202), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(23), uint8_t(91), uint8_t(163), uint8_t(242), uint8_t(170), uint8_t(187), uint8_t(247), uint8_t(210), uint8_t(255), uint8_t(255), uint8_t(128)}, + {{uint8_t(1), uint8_t(129), uint8_t(232), uint8_t(253), uint8_t(214), uint8_t(197), uint8_t(242), uint8_t(196), uint8_t(255), uint8_t(255), uint8_t(128)}, + {uint8_t(99), uint8_t(121), uint8_t(210), uint8_t(250), uint8_t(201), uint8_t(198), uint8_t(255), uint8_t(202), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(23), uint8_t(91), uint8_t(163), uint8_t(242), uint8_t(170), uint8_t(187), uint8_t(247), uint8_t(210), uint8_t(255), uint8_t(255), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(200), uint8_t(246), uint8_t(255), uint8_t(234), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(109), uint8_t(178), uint8_t(241), uint8_t(255), uint8_t(231), uint8_t(245), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(44), uint8_t(130), uint8_t(201), uint8_t(253), uint8_t(205), uint8_t(192), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(200), uint8_t(246), uint8_t(255), uint8_t(234), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(109), uint8_t(178), uint8_t(241), uint8_t(255), uint8_t(231), uint8_t(245), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(44), uint8_t(130), uint8_t(201), uint8_t(253), uint8_t(205), uint8_t(192), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(132), uint8_t(239), uint8_t(251), uint8_t(219), uint8_t(209), uint8_t(255), uint8_t(165), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(94), uint8_t(136), uint8_t(225), uint8_t(251), uint8_t(218), uint8_t(190), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(22), uint8_t(100), uint8_t(174), uint8_t(245), uint8_t(186), uint8_t(161), uint8_t(255), uint8_t(199), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(132), uint8_t(239), uint8_t(251), uint8_t(219), uint8_t(209), uint8_t(255), uint8_t(165), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(94), uint8_t(136), uint8_t(225), uint8_t(251), uint8_t(218), uint8_t(190), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(22), uint8_t(100), uint8_t(174), uint8_t(245), uint8_t(186), uint8_t(161), uint8_t(255), uint8_t(199), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(182), uint8_t(249), uint8_t(255), uint8_t(232), uint8_t(235), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(124), uint8_t(143), uint8_t(241), uint8_t(255), uint8_t(227), uint8_t(234), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(35), uint8_t(77), uint8_t(181), uint8_t(251), uint8_t(193), uint8_t(211), uint8_t(255), uint8_t(205), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(182), uint8_t(249), uint8_t(255), uint8_t(232), uint8_t(235), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(124), uint8_t(143), uint8_t(241), uint8_t(255), uint8_t(227), uint8_t(234), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(35), uint8_t(77), uint8_t(181), uint8_t(251), uint8_t(193), uint8_t(211), uint8_t(255), uint8_t(205), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(157), uint8_t(247), uint8_t(255), uint8_t(236), uint8_t(231), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(121), uint8_t(141), uint8_t(235), uint8_t(255), uint8_t(225), uint8_t(227), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(45), uint8_t(99), uint8_t(188), uint8_t(251), uint8_t(195), uint8_t(217), uint8_t(255), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(157), uint8_t(247), uint8_t(255), uint8_t(236), uint8_t(231), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(121), uint8_t(141), uint8_t(235), uint8_t(255), uint8_t(225), uint8_t(227), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(45), uint8_t(99), uint8_t(188), uint8_t(251), uint8_t(195), uint8_t(217), uint8_t(255), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(1), uint8_t(251), uint8_t(255), uint8_t(213), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(203), uint8_t(1), uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(137), uint8_t(1), uint8_t(177), uint8_t(255), uint8_t(224), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(1), uint8_t(251), uint8_t(255), uint8_t(213), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(203), uint8_t(1), uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(137), uint8_t(1), uint8_t(177), uint8_t(255), uint8_t(224), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, }, - [8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(253), uint8_t(9), uint8_t(248), uint8_t(251), uint8_t(207), uint8_t(208), uint8_t(255), uint8_t(192), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(175), uint8_t(13), uint8_t(224), uint8_t(243), uint8_t(193), uint8_t(185), uint8_t(249), uint8_t(198), uint8_t(255), uint8_t(255), uint8_t(128)}, - [11]uint8_t{uint8_t(73), uint8_t(17), uint8_t(171), uint8_t(221), uint8_t(161), uint8_t(179), uint8_t(236), uint8_t(167), uint8_t(255), uint8_t(234), uint8_t(128)}, + { + {{uint8_t(253), uint8_t(9), uint8_t(248), uint8_t(251), uint8_t(207), uint8_t(208), uint8_t(255), uint8_t(192), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(175), uint8_t(13), uint8_t(224), uint8_t(243), uint8_t(193), uint8_t(185), uint8_t(249), uint8_t(198), uint8_t(255), uint8_t(255), uint8_t(128)}, + {uint8_t(73), uint8_t(17), uint8_t(171), uint8_t(221), uint8_t(161), uint8_t(179), uint8_t(236), uint8_t(167), uint8_t(255), uint8_t(234), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(95), uint8_t(247), uint8_t(253), uint8_t(212), uint8_t(183), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(239), uint8_t(90), uint8_t(244), uint8_t(250), uint8_t(211), uint8_t(209), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(155), uint8_t(77), uint8_t(195), uint8_t(248), uint8_t(188), uint8_t(195), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(95), uint8_t(247), uint8_t(253), uint8_t(212), uint8_t(183), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(239), uint8_t(90), uint8_t(244), uint8_t(250), uint8_t(211), uint8_t(209), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(155), uint8_t(77), uint8_t(195), uint8_t(248), uint8_t(188), uint8_t(195), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(24), uint8_t(239), uint8_t(251), uint8_t(218), uint8_t(219), uint8_t(255), uint8_t(205), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(201), uint8_t(51), uint8_t(219), uint8_t(255), uint8_t(196), uint8_t(186), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(69), uint8_t(46), uint8_t(190), uint8_t(239), uint8_t(201), uint8_t(218), uint8_t(255), uint8_t(228), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(24), uint8_t(239), uint8_t(251), uint8_t(218), uint8_t(219), uint8_t(255), uint8_t(205), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(201), uint8_t(51), uint8_t(219), uint8_t(255), uint8_t(196), uint8_t(186), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(69), uint8_t(46), uint8_t(190), uint8_t(239), uint8_t(201), uint8_t(218), uint8_t(255), uint8_t(228), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(191), uint8_t(251), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(223), uint8_t(165), uint8_t(249), uint8_t(255), uint8_t(213), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(141), uint8_t(124), uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(191), uint8_t(251), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(223), uint8_t(165), uint8_t(249), uint8_t(255), uint8_t(213), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(141), uint8_t(124), uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(16), uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(190), uint8_t(36), uint8_t(230), uint8_t(255), uint8_t(236), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(149), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(16), uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(190), uint8_t(36), uint8_t(230), uint8_t(255), uint8_t(236), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(149), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(226), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(247), uint8_t(192), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(240), uint8_t(128), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(226), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(247), uint8_t(192), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(240), uint8_t(128), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(134), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(213), uint8_t(62), uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(55), uint8_t(93), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(134), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(213), uint8_t(62), uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(55), uint8_t(93), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, }, - [8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(202), uint8_t(24), uint8_t(213), uint8_t(235), uint8_t(186), uint8_t(191), uint8_t(220), uint8_t(160), uint8_t(240), uint8_t(175), uint8_t(255)}, - [11]uint8_t{uint8_t(126), uint8_t(38), uint8_t(182), uint8_t(232), uint8_t(169), uint8_t(184), uint8_t(228), uint8_t(174), uint8_t(255), uint8_t(187), uint8_t(128)}, - [11]uint8_t{uint8_t(61), uint8_t(46), uint8_t(138), uint8_t(219), uint8_t(151), uint8_t(178), uint8_t(240), uint8_t(170), uint8_t(255), uint8_t(216), uint8_t(128)}, + { + {{uint8_t(202), uint8_t(24), uint8_t(213), uint8_t(235), uint8_t(186), uint8_t(191), uint8_t(220), uint8_t(160), uint8_t(240), uint8_t(175), uint8_t(255)}, + {uint8_t(126), uint8_t(38), uint8_t(182), uint8_t(232), uint8_t(169), uint8_t(184), uint8_t(228), uint8_t(174), uint8_t(255), uint8_t(187), uint8_t(128)}, + {uint8_t(61), uint8_t(46), uint8_t(138), uint8_t(219), uint8_t(151), uint8_t(178), uint8_t(240), uint8_t(170), uint8_t(255), uint8_t(216), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(112), uint8_t(230), uint8_t(250), uint8_t(199), uint8_t(191), uint8_t(247), uint8_t(159), uint8_t(255), uint8_t(255), uint8_t(128)}, - [11]uint8_t{uint8_t(166), uint8_t(109), uint8_t(228), uint8_t(252), uint8_t(211), uint8_t(215), uint8_t(255), uint8_t(174), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(39), uint8_t(77), uint8_t(162), uint8_t(232), uint8_t(172), uint8_t(180), uint8_t(245), uint8_t(178), uint8_t(255), uint8_t(255), uint8_t(128)}, + {{uint8_t(1), uint8_t(112), uint8_t(230), uint8_t(250), uint8_t(199), uint8_t(191), uint8_t(247), uint8_t(159), uint8_t(255), uint8_t(255), uint8_t(128)}, + {uint8_t(166), uint8_t(109), uint8_t(228), uint8_t(252), uint8_t(211), uint8_t(215), uint8_t(255), uint8_t(174), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(39), uint8_t(77), uint8_t(162), uint8_t(232), uint8_t(172), uint8_t(180), uint8_t(245), uint8_t(178), uint8_t(255), uint8_t(255), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(52), uint8_t(220), uint8_t(246), uint8_t(198), uint8_t(199), uint8_t(249), uint8_t(220), uint8_t(255), uint8_t(255), uint8_t(128)}, - [11]uint8_t{uint8_t(124), uint8_t(74), uint8_t(191), uint8_t(243), uint8_t(183), uint8_t(193), uint8_t(250), uint8_t(221), uint8_t(255), uint8_t(255), uint8_t(128)}, - [11]uint8_t{uint8_t(24), uint8_t(71), uint8_t(130), uint8_t(219), uint8_t(154), uint8_t(170), uint8_t(243), uint8_t(182), uint8_t(255), uint8_t(255), uint8_t(128)}, + {{uint8_t(1), uint8_t(52), uint8_t(220), uint8_t(246), uint8_t(198), uint8_t(199), uint8_t(249), uint8_t(220), uint8_t(255), uint8_t(255), uint8_t(128)}, + {uint8_t(124), uint8_t(74), uint8_t(191), uint8_t(243), uint8_t(183), uint8_t(193), uint8_t(250), uint8_t(221), uint8_t(255), uint8_t(255), uint8_t(128)}, + {uint8_t(24), uint8_t(71), uint8_t(130), uint8_t(219), uint8_t(154), uint8_t(170), uint8_t(243), uint8_t(182), uint8_t(255), uint8_t(255), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(182), uint8_t(225), uint8_t(249), uint8_t(219), uint8_t(240), uint8_t(255), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(149), uint8_t(150), uint8_t(226), uint8_t(252), uint8_t(216), uint8_t(205), uint8_t(255), uint8_t(171), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(28), uint8_t(108), uint8_t(170), uint8_t(242), uint8_t(183), uint8_t(194), uint8_t(254), uint8_t(223), uint8_t(255), uint8_t(255), uint8_t(128)}, + {{uint8_t(1), uint8_t(182), uint8_t(225), uint8_t(249), uint8_t(219), uint8_t(240), uint8_t(255), uint8_t(224), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(149), uint8_t(150), uint8_t(226), uint8_t(252), uint8_t(216), uint8_t(205), uint8_t(255), uint8_t(171), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(28), uint8_t(108), uint8_t(170), uint8_t(242), uint8_t(183), uint8_t(194), uint8_t(254), uint8_t(223), uint8_t(255), uint8_t(255), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(81), uint8_t(230), uint8_t(252), uint8_t(204), uint8_t(203), uint8_t(255), uint8_t(192), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(123), uint8_t(102), uint8_t(209), uint8_t(247), uint8_t(188), uint8_t(196), uint8_t(255), uint8_t(233), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(20), uint8_t(95), uint8_t(153), uint8_t(243), uint8_t(164), uint8_t(173), uint8_t(255), uint8_t(203), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(81), uint8_t(230), uint8_t(252), uint8_t(204), uint8_t(203), uint8_t(255), uint8_t(192), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(123), uint8_t(102), uint8_t(209), uint8_t(247), uint8_t(188), uint8_t(196), uint8_t(255), uint8_t(233), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(20), uint8_t(95), uint8_t(153), uint8_t(243), uint8_t(164), uint8_t(173), uint8_t(255), uint8_t(203), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(222), uint8_t(248), uint8_t(255), uint8_t(216), uint8_t(213), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(168), uint8_t(175), uint8_t(246), uint8_t(252), uint8_t(235), uint8_t(205), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(47), uint8_t(116), uint8_t(215), uint8_t(255), uint8_t(211), uint8_t(212), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(222), uint8_t(248), uint8_t(255), uint8_t(216), uint8_t(213), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(168), uint8_t(175), uint8_t(246), uint8_t(252), uint8_t(235), uint8_t(205), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(47), uint8_t(116), uint8_t(215), uint8_t(255), uint8_t(211), uint8_t(212), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(121), uint8_t(236), uint8_t(253), uint8_t(212), uint8_t(214), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(141), uint8_t(84), uint8_t(213), uint8_t(252), uint8_t(201), uint8_t(202), uint8_t(255), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(42), uint8_t(80), uint8_t(160), uint8_t(240), uint8_t(162), uint8_t(185), uint8_t(255), uint8_t(205), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(121), uint8_t(236), uint8_t(253), uint8_t(212), uint8_t(214), uint8_t(255), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(141), uint8_t(84), uint8_t(213), uint8_t(252), uint8_t(201), uint8_t(202), uint8_t(255), uint8_t(219), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(42), uint8_t(80), uint8_t(160), uint8_t(240), uint8_t(162), uint8_t(185), uint8_t(255), uint8_t(205), uint8_t(128), uint8_t(128), uint8_t(128)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(1), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(244), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, - [11]uint8_t{uint8_t(238), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {{uint8_t(1), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(244), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, + {uint8_t(238), uint8_t(1), uint8_t(255), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128), uint8_t(128)}, }, }, } /* tree_enc.c:21:3 */ func VP8DefaultProbas(tls *libc.TLS, enc uintptr) { /* tree_enc.c:156:6: */ - var probas uintptr = (enc + 3616 /* &.proba_ */) + var probas uintptr = enc + 3616 (*VP8EncProba)(unsafe.Pointer(probas)).use_skip_proba_ = 0 - libc.Xmemset(tls, (probas /* &.segments_ */), int32(255), uint64(unsafe.Sizeof([3]uint8_t{}))) - libc.Xmemcpy(tls, (probas + 4 /* &.coeffs_ */), uintptr(unsafe.Pointer(&VP8CoeffsProba0)), uint64(unsafe.Sizeof(VP8CoeffsProba0))) + libc.Xmemset(tls, probas, int32(255), uint64(unsafe.Sizeof([3]uint8_t{}))) + libc.Xmemcpy(tls, probas+4, uintptr(unsafe.Pointer(&VP8CoeffsProba0)), uint64(unsafe.Sizeof(VP8CoeffsProba0))) // Note: we could hard-code the level_costs_ corresponding to VP8CoeffsProba0, // but that's ~11k of static data. Better call VP8CalculateLevelCosts() later. (*VP8EncProba)(unsafe.Pointer(probas)).dirty_ = 1 } // Paragraph 11.5. 900bytes. -var kBModesProba1 = [10][10][9]uint8_t{[10][9]uint8_t{ - [9]uint8_t{uint8_t(231), uint8_t(120), uint8_t(48), uint8_t(89), uint8_t(115), uint8_t(113), uint8_t(120), uint8_t(152), uint8_t(112)}, - [9]uint8_t{uint8_t(152), uint8_t(179), uint8_t(64), uint8_t(126), uint8_t(170), uint8_t(118), uint8_t(46), uint8_t(70), uint8_t(95)}, - [9]uint8_t{uint8_t(175), uint8_t(69), uint8_t(143), uint8_t(80), uint8_t(85), uint8_t(82), uint8_t(72), uint8_t(155), uint8_t(103)}, - [9]uint8_t{uint8_t(56), uint8_t(58), uint8_t(10), uint8_t(171), uint8_t(218), uint8_t(189), uint8_t(17), uint8_t(13), uint8_t(152)}, - [9]uint8_t{uint8_t(114), uint8_t(26), uint8_t(17), uint8_t(163), uint8_t(44), uint8_t(195), uint8_t(21), uint8_t(10), uint8_t(173)}, - [9]uint8_t{uint8_t(121), uint8_t(24), uint8_t(80), uint8_t(195), uint8_t(26), uint8_t(62), uint8_t(44), uint8_t(64), uint8_t(85)}, - [9]uint8_t{uint8_t(144), uint8_t(71), uint8_t(10), uint8_t(38), uint8_t(171), uint8_t(213), uint8_t(144), uint8_t(34), uint8_t(26)}, - [9]uint8_t{uint8_t(170), uint8_t(46), uint8_t(55), uint8_t(19), uint8_t(136), uint8_t(160), uint8_t(33), uint8_t(206), uint8_t(71)}, - [9]uint8_t{uint8_t(63), uint8_t(20), uint8_t(8), uint8_t(114), uint8_t(114), uint8_t(208), uint8_t(12), uint8_t(9), uint8_t(226)}, - [9]uint8_t{uint8_t(81), uint8_t(40), uint8_t(11), uint8_t(96), uint8_t(182), uint8_t(84), uint8_t(29), uint8_t(16), uint8_t(36)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(134), uint8_t(183), uint8_t(89), uint8_t(137), uint8_t(98), uint8_t(101), uint8_t(106), uint8_t(165), uint8_t(148)}, - [9]uint8_t{uint8_t(72), uint8_t(187), uint8_t(100), uint8_t(130), uint8_t(157), uint8_t(111), uint8_t(32), uint8_t(75), uint8_t(80)}, - [9]uint8_t{uint8_t(66), uint8_t(102), uint8_t(167), uint8_t(99), uint8_t(74), uint8_t(62), uint8_t(40), uint8_t(234), uint8_t(128)}, - [9]uint8_t{uint8_t(41), uint8_t(53), uint8_t(9), uint8_t(178), uint8_t(241), uint8_t(141), uint8_t(26), uint8_t(8), uint8_t(107)}, - [9]uint8_t{uint8_t(74), uint8_t(43), uint8_t(26), uint8_t(146), uint8_t(73), uint8_t(166), uint8_t(49), uint8_t(23), uint8_t(157)}, - [9]uint8_t{uint8_t(65), uint8_t(38), uint8_t(105), uint8_t(160), uint8_t(51), uint8_t(52), uint8_t(31), uint8_t(115), uint8_t(128)}, - [9]uint8_t{uint8_t(104), uint8_t(79), uint8_t(12), uint8_t(27), uint8_t(217), uint8_t(255), uint8_t(87), uint8_t(17), uint8_t(7)}, - [9]uint8_t{uint8_t(87), uint8_t(68), uint8_t(71), uint8_t(44), uint8_t(114), uint8_t(51), uint8_t(15), uint8_t(186), uint8_t(23)}, - [9]uint8_t{uint8_t(47), uint8_t(41), uint8_t(14), uint8_t(110), uint8_t(182), uint8_t(183), uint8_t(21), uint8_t(17), uint8_t(194)}, - [9]uint8_t{uint8_t(66), uint8_t(45), uint8_t(25), uint8_t(102), uint8_t(197), uint8_t(189), uint8_t(23), uint8_t(18), uint8_t(22)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(88), uint8_t(88), uint8_t(147), uint8_t(150), uint8_t(42), uint8_t(46), uint8_t(45), uint8_t(196), uint8_t(205)}, - [9]uint8_t{uint8_t(43), uint8_t(97), uint8_t(183), uint8_t(117), uint8_t(85), uint8_t(38), uint8_t(35), uint8_t(179), uint8_t(61)}, - [9]uint8_t{uint8_t(39), uint8_t(53), uint8_t(200), uint8_t(87), uint8_t(26), uint8_t(21), uint8_t(43), uint8_t(232), uint8_t(171)}, - [9]uint8_t{uint8_t(56), uint8_t(34), uint8_t(51), uint8_t(104), uint8_t(114), uint8_t(102), uint8_t(29), uint8_t(93), uint8_t(77)}, - [9]uint8_t{uint8_t(39), uint8_t(28), uint8_t(85), uint8_t(171), uint8_t(58), uint8_t(165), uint8_t(90), uint8_t(98), uint8_t(64)}, - [9]uint8_t{uint8_t(34), uint8_t(22), uint8_t(116), uint8_t(206), uint8_t(23), uint8_t(34), uint8_t(43), uint8_t(166), uint8_t(73)}, - [9]uint8_t{uint8_t(107), uint8_t(54), uint8_t(32), uint8_t(26), uint8_t(51), uint8_t(1), uint8_t(81), uint8_t(43), uint8_t(31)}, - [9]uint8_t{uint8_t(68), uint8_t(25), uint8_t(106), uint8_t(22), uint8_t(64), uint8_t(171), uint8_t(36), uint8_t(225), uint8_t(114)}, - [9]uint8_t{uint8_t(34), uint8_t(19), uint8_t(21), uint8_t(102), uint8_t(132), uint8_t(188), uint8_t(16), uint8_t(76), uint8_t(124)}, - [9]uint8_t{uint8_t(62), uint8_t(18), uint8_t(78), uint8_t(95), uint8_t(85), uint8_t(57), uint8_t(50), uint8_t(48), uint8_t(51)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(193), uint8_t(101), uint8_t(35), uint8_t(159), uint8_t(215), uint8_t(111), uint8_t(89), uint8_t(46), uint8_t(111)}, - [9]uint8_t{uint8_t(60), uint8_t(148), uint8_t(31), uint8_t(172), uint8_t(219), uint8_t(228), uint8_t(21), uint8_t(18), uint8_t(111)}, - [9]uint8_t{uint8_t(112), uint8_t(113), uint8_t(77), uint8_t(85), uint8_t(179), uint8_t(255), uint8_t(38), uint8_t(120), uint8_t(114)}, - [9]uint8_t{uint8_t(40), uint8_t(42), uint8_t(1), uint8_t(196), uint8_t(245), uint8_t(209), uint8_t(10), uint8_t(25), uint8_t(109)}, - [9]uint8_t{uint8_t(88), uint8_t(43), uint8_t(29), uint8_t(140), uint8_t(166), uint8_t(213), uint8_t(37), uint8_t(43), uint8_t(154)}, - [9]uint8_t{uint8_t(61), uint8_t(63), uint8_t(30), uint8_t(155), uint8_t(67), uint8_t(45), uint8_t(68), uint8_t(1), uint8_t(209)}, - [9]uint8_t{uint8_t(100), uint8_t(80), uint8_t(8), uint8_t(43), uint8_t(154), uint8_t(1), uint8_t(51), uint8_t(26), uint8_t(71)}, - [9]uint8_t{uint8_t(142), uint8_t(78), uint8_t(78), uint8_t(16), uint8_t(255), uint8_t(128), uint8_t(34), uint8_t(197), uint8_t(171)}, - [9]uint8_t{uint8_t(41), uint8_t(40), uint8_t(5), uint8_t(102), uint8_t(211), uint8_t(183), uint8_t(4), uint8_t(1), uint8_t(221)}, - [9]uint8_t{uint8_t(51), uint8_t(50), uint8_t(17), uint8_t(168), uint8_t(209), uint8_t(192), uint8_t(23), uint8_t(25), uint8_t(82)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(138), uint8_t(31), uint8_t(36), uint8_t(171), uint8_t(27), uint8_t(166), uint8_t(38), uint8_t(44), uint8_t(229)}, - [9]uint8_t{uint8_t(67), uint8_t(87), uint8_t(58), uint8_t(169), uint8_t(82), uint8_t(115), uint8_t(26), uint8_t(59), uint8_t(179)}, - [9]uint8_t{uint8_t(63), uint8_t(59), uint8_t(90), uint8_t(180), uint8_t(59), uint8_t(166), uint8_t(93), uint8_t(73), uint8_t(154)}, - [9]uint8_t{uint8_t(40), uint8_t(40), uint8_t(21), uint8_t(116), uint8_t(143), uint8_t(209), uint8_t(34), uint8_t(39), uint8_t(175)}, - [9]uint8_t{uint8_t(47), uint8_t(15), uint8_t(16), uint8_t(183), uint8_t(34), uint8_t(223), uint8_t(49), uint8_t(45), uint8_t(183)}, - [9]uint8_t{uint8_t(46), uint8_t(17), uint8_t(33), uint8_t(183), uint8_t(6), uint8_t(98), uint8_t(15), uint8_t(32), uint8_t(183)}, - [9]uint8_t{uint8_t(57), uint8_t(46), uint8_t(22), uint8_t(24), uint8_t(128), uint8_t(1), uint8_t(54), uint8_t(17), uint8_t(37)}, - [9]uint8_t{uint8_t(65), uint8_t(32), uint8_t(73), uint8_t(115), uint8_t(28), uint8_t(128), uint8_t(23), uint8_t(128), uint8_t(205)}, - [9]uint8_t{uint8_t(40), uint8_t(3), uint8_t(9), uint8_t(115), uint8_t(51), uint8_t(192), uint8_t(18), uint8_t(6), uint8_t(223)}, - [9]uint8_t{uint8_t(87), uint8_t(37), uint8_t(9), uint8_t(115), uint8_t(59), uint8_t(77), uint8_t(64), uint8_t(21), uint8_t(47)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(104), uint8_t(55), uint8_t(44), uint8_t(218), uint8_t(9), uint8_t(54), uint8_t(53), uint8_t(130), uint8_t(226)}, - [9]uint8_t{uint8_t(64), uint8_t(90), uint8_t(70), uint8_t(205), uint8_t(40), uint8_t(41), uint8_t(23), uint8_t(26), uint8_t(57)}, - [9]uint8_t{uint8_t(54), uint8_t(57), uint8_t(112), uint8_t(184), uint8_t(5), uint8_t(41), uint8_t(38), uint8_t(166), uint8_t(213)}, - [9]uint8_t{uint8_t(30), uint8_t(34), uint8_t(26), uint8_t(133), uint8_t(152), uint8_t(116), uint8_t(10), uint8_t(32), uint8_t(134)}, - [9]uint8_t{uint8_t(39), uint8_t(19), uint8_t(53), uint8_t(221), uint8_t(26), uint8_t(114), uint8_t(32), uint8_t(73), uint8_t(255)}, - [9]uint8_t{uint8_t(31), uint8_t(9), uint8_t(65), uint8_t(234), uint8_t(2), uint8_t(15), uint8_t(1), uint8_t(118), uint8_t(73)}, - [9]uint8_t{uint8_t(75), uint8_t(32), uint8_t(12), uint8_t(51), uint8_t(192), uint8_t(255), uint8_t(160), uint8_t(43), uint8_t(51)}, - [9]uint8_t{uint8_t(88), uint8_t(31), uint8_t(35), uint8_t(67), uint8_t(102), uint8_t(85), uint8_t(55), uint8_t(186), uint8_t(85)}, - [9]uint8_t{uint8_t(56), uint8_t(21), uint8_t(23), uint8_t(111), uint8_t(59), uint8_t(205), uint8_t(45), uint8_t(37), uint8_t(192)}, - [9]uint8_t{uint8_t(55), uint8_t(38), uint8_t(70), uint8_t(124), uint8_t(73), uint8_t(102), uint8_t(1), uint8_t(34), uint8_t(98)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(125), uint8_t(98), uint8_t(42), uint8_t(88), uint8_t(104), uint8_t(85), uint8_t(117), uint8_t(175), uint8_t(82)}, - [9]uint8_t{uint8_t(95), uint8_t(84), uint8_t(53), uint8_t(89), uint8_t(128), uint8_t(100), uint8_t(113), uint8_t(101), uint8_t(45)}, - [9]uint8_t{uint8_t(75), uint8_t(79), uint8_t(123), uint8_t(47), uint8_t(51), uint8_t(128), uint8_t(81), uint8_t(171), uint8_t(1)}, - [9]uint8_t{uint8_t(57), uint8_t(17), uint8_t(5), uint8_t(71), uint8_t(102), uint8_t(57), uint8_t(53), uint8_t(41), uint8_t(49)}, - [9]uint8_t{uint8_t(38), uint8_t(33), uint8_t(13), uint8_t(121), uint8_t(57), uint8_t(73), uint8_t(26), uint8_t(1), uint8_t(85)}, - [9]uint8_t{uint8_t(41), uint8_t(10), uint8_t(67), uint8_t(138), uint8_t(77), uint8_t(110), uint8_t(90), uint8_t(47), uint8_t(114)}, - [9]uint8_t{uint8_t(115), uint8_t(21), uint8_t(2), uint8_t(10), uint8_t(102), uint8_t(255), uint8_t(166), uint8_t(23), uint8_t(6)}, - [9]uint8_t{uint8_t(101), uint8_t(29), uint8_t(16), uint8_t(10), uint8_t(85), uint8_t(128), uint8_t(101), uint8_t(196), uint8_t(26)}, - [9]uint8_t{uint8_t(57), uint8_t(18), uint8_t(10), uint8_t(102), uint8_t(102), uint8_t(213), uint8_t(34), uint8_t(20), uint8_t(43)}, - [9]uint8_t{uint8_t(117), uint8_t(20), uint8_t(15), uint8_t(36), uint8_t(163), uint8_t(128), uint8_t(68), uint8_t(1), uint8_t(26)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(102), uint8_t(61), uint8_t(71), uint8_t(37), uint8_t(34), uint8_t(53), uint8_t(31), uint8_t(243), uint8_t(192)}, - [9]uint8_t{uint8_t(69), uint8_t(60), uint8_t(71), uint8_t(38), uint8_t(73), uint8_t(119), uint8_t(28), uint8_t(222), uint8_t(37)}, - [9]uint8_t{uint8_t(68), uint8_t(45), uint8_t(128), uint8_t(34), uint8_t(1), uint8_t(47), uint8_t(11), uint8_t(245), uint8_t(171)}, - [9]uint8_t{uint8_t(62), uint8_t(17), uint8_t(19), uint8_t(70), uint8_t(146), uint8_t(85), uint8_t(55), uint8_t(62), uint8_t(70)}, - [9]uint8_t{uint8_t(37), uint8_t(43), uint8_t(37), uint8_t(154), uint8_t(100), uint8_t(163), uint8_t(85), uint8_t(160), uint8_t(1)}, - [9]uint8_t{uint8_t(63), uint8_t(9), uint8_t(92), uint8_t(136), uint8_t(28), uint8_t(64), uint8_t(32), uint8_t(201), uint8_t(85)}, - [9]uint8_t{uint8_t(75), uint8_t(15), uint8_t(9), uint8_t(9), uint8_t(64), uint8_t(255), uint8_t(184), uint8_t(119), uint8_t(16)}, - [9]uint8_t{uint8_t(86), uint8_t(6), uint8_t(28), uint8_t(5), uint8_t(64), uint8_t(255), uint8_t(25), uint8_t(248), uint8_t(1)}, - [9]uint8_t{uint8_t(56), uint8_t(8), uint8_t(17), uint8_t(132), uint8_t(137), uint8_t(255), uint8_t(55), uint8_t(116), uint8_t(128)}, - [9]uint8_t{uint8_t(58), uint8_t(15), uint8_t(20), uint8_t(82), uint8_t(135), uint8_t(57), uint8_t(26), uint8_t(121), uint8_t(40)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(164), uint8_t(50), uint8_t(31), uint8_t(137), uint8_t(154), uint8_t(133), uint8_t(25), uint8_t(35), uint8_t(218)}, - [9]uint8_t{uint8_t(51), uint8_t(103), uint8_t(44), uint8_t(131), uint8_t(131), uint8_t(123), uint8_t(31), uint8_t(6), uint8_t(158)}, - [9]uint8_t{uint8_t(86), uint8_t(40), uint8_t(64), uint8_t(135), uint8_t(148), uint8_t(224), uint8_t(45), uint8_t(183), uint8_t(128)}, - [9]uint8_t{uint8_t(22), uint8_t(26), uint8_t(17), uint8_t(131), uint8_t(240), uint8_t(154), uint8_t(14), uint8_t(1), uint8_t(209)}, - [9]uint8_t{uint8_t(45), uint8_t(16), uint8_t(21), uint8_t(91), uint8_t(64), uint8_t(222), uint8_t(7), uint8_t(1), uint8_t(197)}, - [9]uint8_t{uint8_t(56), uint8_t(21), uint8_t(39), uint8_t(155), uint8_t(60), uint8_t(138), uint8_t(23), uint8_t(102), uint8_t(213)}, - [9]uint8_t{uint8_t(83), uint8_t(12), uint8_t(13), uint8_t(54), uint8_t(192), uint8_t(255), uint8_t(68), uint8_t(47), uint8_t(28)}, - [9]uint8_t{uint8_t(85), uint8_t(26), uint8_t(85), uint8_t(85), uint8_t(128), uint8_t(128), uint8_t(32), uint8_t(146), uint8_t(171)}, - [9]uint8_t{uint8_t(18), uint8_t(11), uint8_t(7), uint8_t(63), uint8_t(144), uint8_t(171), uint8_t(4), uint8_t(4), uint8_t(246)}, - [9]uint8_t{uint8_t(35), uint8_t(27), uint8_t(10), uint8_t(146), uint8_t(174), uint8_t(171), uint8_t(12), uint8_t(26), uint8_t(128)}}, - [10][9]uint8_t{[9]uint8_t{uint8_t(190), uint8_t(80), uint8_t(35), uint8_t(99), uint8_t(180), uint8_t(80), uint8_t(126), uint8_t(54), uint8_t(45)}, - [9]uint8_t{uint8_t(85), uint8_t(126), uint8_t(47), uint8_t(87), uint8_t(176), uint8_t(51), uint8_t(41), uint8_t(20), uint8_t(32)}, - [9]uint8_t{uint8_t(101), uint8_t(75), uint8_t(128), uint8_t(139), uint8_t(118), uint8_t(146), uint8_t(116), uint8_t(128), uint8_t(85)}, - [9]uint8_t{uint8_t(56), uint8_t(41), uint8_t(15), uint8_t(176), uint8_t(236), uint8_t(85), uint8_t(37), uint8_t(9), uint8_t(62)}, - [9]uint8_t{uint8_t(71), uint8_t(30), uint8_t(17), uint8_t(119), uint8_t(118), uint8_t(255), uint8_t(17), uint8_t(18), uint8_t(138)}, - [9]uint8_t{uint8_t(101), uint8_t(38), uint8_t(60), uint8_t(138), uint8_t(55), uint8_t(70), uint8_t(43), uint8_t(26), uint8_t(142)}, - [9]uint8_t{uint8_t(146), uint8_t(36), uint8_t(19), uint8_t(30), uint8_t(171), uint8_t(255), uint8_t(97), uint8_t(27), uint8_t(20)}, - [9]uint8_t{uint8_t(138), uint8_t(45), uint8_t(61), uint8_t(62), uint8_t(219), uint8_t(1), uint8_t(81), uint8_t(188), uint8_t(64)}, - [9]uint8_t{uint8_t(32), uint8_t(41), uint8_t(20), uint8_t(117), uint8_t(151), uint8_t(142), uint8_t(20), uint8_t(21), uint8_t(163)}, - [9]uint8_t{uint8_t(112), uint8_t(19), uint8_t(12), uint8_t(61), uint8_t(195), uint8_t(128), uint8_t(48), uint8_t(4), uint8_t(24)}}} /* tree_enc.c:167:22 */ +var kBModesProba1 = [10][10][9]uint8_t{{ + {uint8_t(231), uint8_t(120), uint8_t(48), uint8_t(89), uint8_t(115), uint8_t(113), uint8_t(120), uint8_t(152), uint8_t(112)}, + {uint8_t(152), uint8_t(179), uint8_t(64), uint8_t(126), uint8_t(170), uint8_t(118), uint8_t(46), uint8_t(70), uint8_t(95)}, + {uint8_t(175), uint8_t(69), uint8_t(143), uint8_t(80), uint8_t(85), uint8_t(82), uint8_t(72), uint8_t(155), uint8_t(103)}, + {uint8_t(56), uint8_t(58), uint8_t(10), uint8_t(171), uint8_t(218), uint8_t(189), uint8_t(17), uint8_t(13), uint8_t(152)}, + {uint8_t(114), uint8_t(26), uint8_t(17), uint8_t(163), uint8_t(44), uint8_t(195), uint8_t(21), uint8_t(10), uint8_t(173)}, + {uint8_t(121), uint8_t(24), uint8_t(80), uint8_t(195), uint8_t(26), uint8_t(62), uint8_t(44), uint8_t(64), uint8_t(85)}, + {uint8_t(144), uint8_t(71), uint8_t(10), uint8_t(38), uint8_t(171), uint8_t(213), uint8_t(144), uint8_t(34), uint8_t(26)}, + {uint8_t(170), uint8_t(46), uint8_t(55), uint8_t(19), uint8_t(136), uint8_t(160), uint8_t(33), uint8_t(206), uint8_t(71)}, + {uint8_t(63), uint8_t(20), uint8_t(8), uint8_t(114), uint8_t(114), uint8_t(208), uint8_t(12), uint8_t(9), uint8_t(226)}, + {uint8_t(81), uint8_t(40), uint8_t(11), uint8_t(96), uint8_t(182), uint8_t(84), uint8_t(29), uint8_t(16), uint8_t(36)}}, + {{uint8_t(134), uint8_t(183), uint8_t(89), uint8_t(137), uint8_t(98), uint8_t(101), uint8_t(106), uint8_t(165), uint8_t(148)}, + {uint8_t(72), uint8_t(187), uint8_t(100), uint8_t(130), uint8_t(157), uint8_t(111), uint8_t(32), uint8_t(75), uint8_t(80)}, + {uint8_t(66), uint8_t(102), uint8_t(167), uint8_t(99), uint8_t(74), uint8_t(62), uint8_t(40), uint8_t(234), uint8_t(128)}, + {uint8_t(41), uint8_t(53), uint8_t(9), uint8_t(178), uint8_t(241), uint8_t(141), uint8_t(26), uint8_t(8), uint8_t(107)}, + {uint8_t(74), uint8_t(43), uint8_t(26), uint8_t(146), uint8_t(73), uint8_t(166), uint8_t(49), uint8_t(23), uint8_t(157)}, + {uint8_t(65), uint8_t(38), uint8_t(105), uint8_t(160), uint8_t(51), uint8_t(52), uint8_t(31), uint8_t(115), uint8_t(128)}, + {uint8_t(104), uint8_t(79), uint8_t(12), uint8_t(27), uint8_t(217), uint8_t(255), uint8_t(87), uint8_t(17), uint8_t(7)}, + {uint8_t(87), uint8_t(68), uint8_t(71), uint8_t(44), uint8_t(114), uint8_t(51), uint8_t(15), uint8_t(186), uint8_t(23)}, + {uint8_t(47), uint8_t(41), uint8_t(14), uint8_t(110), uint8_t(182), uint8_t(183), uint8_t(21), uint8_t(17), uint8_t(194)}, + {uint8_t(66), uint8_t(45), uint8_t(25), uint8_t(102), uint8_t(197), uint8_t(189), uint8_t(23), uint8_t(18), uint8_t(22)}}, + {{uint8_t(88), uint8_t(88), uint8_t(147), uint8_t(150), uint8_t(42), uint8_t(46), uint8_t(45), uint8_t(196), uint8_t(205)}, + {uint8_t(43), uint8_t(97), uint8_t(183), uint8_t(117), uint8_t(85), uint8_t(38), uint8_t(35), uint8_t(179), uint8_t(61)}, + {uint8_t(39), uint8_t(53), uint8_t(200), uint8_t(87), uint8_t(26), uint8_t(21), uint8_t(43), uint8_t(232), uint8_t(171)}, + {uint8_t(56), uint8_t(34), uint8_t(51), uint8_t(104), uint8_t(114), uint8_t(102), uint8_t(29), uint8_t(93), uint8_t(77)}, + {uint8_t(39), uint8_t(28), uint8_t(85), uint8_t(171), uint8_t(58), uint8_t(165), uint8_t(90), uint8_t(98), uint8_t(64)}, + {uint8_t(34), uint8_t(22), uint8_t(116), uint8_t(206), uint8_t(23), uint8_t(34), uint8_t(43), uint8_t(166), uint8_t(73)}, + {uint8_t(107), uint8_t(54), uint8_t(32), uint8_t(26), uint8_t(51), uint8_t(1), uint8_t(81), uint8_t(43), uint8_t(31)}, + {uint8_t(68), uint8_t(25), uint8_t(106), uint8_t(22), uint8_t(64), uint8_t(171), uint8_t(36), uint8_t(225), uint8_t(114)}, + {uint8_t(34), uint8_t(19), uint8_t(21), uint8_t(102), uint8_t(132), uint8_t(188), uint8_t(16), uint8_t(76), uint8_t(124)}, + {uint8_t(62), uint8_t(18), uint8_t(78), uint8_t(95), uint8_t(85), uint8_t(57), uint8_t(50), uint8_t(48), uint8_t(51)}}, + {{uint8_t(193), uint8_t(101), uint8_t(35), uint8_t(159), uint8_t(215), uint8_t(111), uint8_t(89), uint8_t(46), uint8_t(111)}, + {uint8_t(60), uint8_t(148), uint8_t(31), uint8_t(172), uint8_t(219), uint8_t(228), uint8_t(21), uint8_t(18), uint8_t(111)}, + {uint8_t(112), uint8_t(113), uint8_t(77), uint8_t(85), uint8_t(179), uint8_t(255), uint8_t(38), uint8_t(120), uint8_t(114)}, + {uint8_t(40), uint8_t(42), uint8_t(1), uint8_t(196), uint8_t(245), uint8_t(209), uint8_t(10), uint8_t(25), uint8_t(109)}, + {uint8_t(88), uint8_t(43), uint8_t(29), uint8_t(140), uint8_t(166), uint8_t(213), uint8_t(37), uint8_t(43), uint8_t(154)}, + {uint8_t(61), uint8_t(63), uint8_t(30), uint8_t(155), uint8_t(67), uint8_t(45), uint8_t(68), uint8_t(1), uint8_t(209)}, + {uint8_t(100), uint8_t(80), uint8_t(8), uint8_t(43), uint8_t(154), uint8_t(1), uint8_t(51), uint8_t(26), uint8_t(71)}, + {uint8_t(142), uint8_t(78), uint8_t(78), uint8_t(16), uint8_t(255), uint8_t(128), uint8_t(34), uint8_t(197), uint8_t(171)}, + {uint8_t(41), uint8_t(40), uint8_t(5), uint8_t(102), uint8_t(211), uint8_t(183), uint8_t(4), uint8_t(1), uint8_t(221)}, + {uint8_t(51), uint8_t(50), uint8_t(17), uint8_t(168), uint8_t(209), uint8_t(192), uint8_t(23), uint8_t(25), uint8_t(82)}}, + {{uint8_t(138), uint8_t(31), uint8_t(36), uint8_t(171), uint8_t(27), uint8_t(166), uint8_t(38), uint8_t(44), uint8_t(229)}, + {uint8_t(67), uint8_t(87), uint8_t(58), uint8_t(169), uint8_t(82), uint8_t(115), uint8_t(26), uint8_t(59), uint8_t(179)}, + {uint8_t(63), uint8_t(59), uint8_t(90), uint8_t(180), uint8_t(59), uint8_t(166), uint8_t(93), uint8_t(73), uint8_t(154)}, + {uint8_t(40), uint8_t(40), uint8_t(21), uint8_t(116), uint8_t(143), uint8_t(209), uint8_t(34), uint8_t(39), uint8_t(175)}, + {uint8_t(47), uint8_t(15), uint8_t(16), uint8_t(183), uint8_t(34), uint8_t(223), uint8_t(49), uint8_t(45), uint8_t(183)}, + {uint8_t(46), uint8_t(17), uint8_t(33), uint8_t(183), uint8_t(6), uint8_t(98), uint8_t(15), uint8_t(32), uint8_t(183)}, + {uint8_t(57), uint8_t(46), uint8_t(22), uint8_t(24), uint8_t(128), uint8_t(1), uint8_t(54), uint8_t(17), uint8_t(37)}, + {uint8_t(65), uint8_t(32), uint8_t(73), uint8_t(115), uint8_t(28), uint8_t(128), uint8_t(23), uint8_t(128), uint8_t(205)}, + {uint8_t(40), uint8_t(3), uint8_t(9), uint8_t(115), uint8_t(51), uint8_t(192), uint8_t(18), uint8_t(6), uint8_t(223)}, + {uint8_t(87), uint8_t(37), uint8_t(9), uint8_t(115), uint8_t(59), uint8_t(77), uint8_t(64), uint8_t(21), uint8_t(47)}}, + {{uint8_t(104), uint8_t(55), uint8_t(44), uint8_t(218), uint8_t(9), uint8_t(54), uint8_t(53), uint8_t(130), uint8_t(226)}, + {uint8_t(64), uint8_t(90), uint8_t(70), uint8_t(205), uint8_t(40), uint8_t(41), uint8_t(23), uint8_t(26), uint8_t(57)}, + {uint8_t(54), uint8_t(57), uint8_t(112), uint8_t(184), uint8_t(5), uint8_t(41), uint8_t(38), uint8_t(166), uint8_t(213)}, + {uint8_t(30), uint8_t(34), uint8_t(26), uint8_t(133), uint8_t(152), uint8_t(116), uint8_t(10), uint8_t(32), uint8_t(134)}, + {uint8_t(39), uint8_t(19), uint8_t(53), uint8_t(221), uint8_t(26), uint8_t(114), uint8_t(32), uint8_t(73), uint8_t(255)}, + {uint8_t(31), uint8_t(9), uint8_t(65), uint8_t(234), uint8_t(2), uint8_t(15), uint8_t(1), uint8_t(118), uint8_t(73)}, + {uint8_t(75), uint8_t(32), uint8_t(12), uint8_t(51), uint8_t(192), uint8_t(255), uint8_t(160), uint8_t(43), uint8_t(51)}, + {uint8_t(88), uint8_t(31), uint8_t(35), uint8_t(67), uint8_t(102), uint8_t(85), uint8_t(55), uint8_t(186), uint8_t(85)}, + {uint8_t(56), uint8_t(21), uint8_t(23), uint8_t(111), uint8_t(59), uint8_t(205), uint8_t(45), uint8_t(37), uint8_t(192)}, + {uint8_t(55), uint8_t(38), uint8_t(70), uint8_t(124), uint8_t(73), uint8_t(102), uint8_t(1), uint8_t(34), uint8_t(98)}}, + {{uint8_t(125), uint8_t(98), uint8_t(42), uint8_t(88), uint8_t(104), uint8_t(85), uint8_t(117), uint8_t(175), uint8_t(82)}, + {uint8_t(95), uint8_t(84), uint8_t(53), uint8_t(89), uint8_t(128), uint8_t(100), uint8_t(113), uint8_t(101), uint8_t(45)}, + {uint8_t(75), uint8_t(79), uint8_t(123), uint8_t(47), uint8_t(51), uint8_t(128), uint8_t(81), uint8_t(171), uint8_t(1)}, + {uint8_t(57), uint8_t(17), uint8_t(5), uint8_t(71), uint8_t(102), uint8_t(57), uint8_t(53), uint8_t(41), uint8_t(49)}, + {uint8_t(38), uint8_t(33), uint8_t(13), uint8_t(121), uint8_t(57), uint8_t(73), uint8_t(26), uint8_t(1), uint8_t(85)}, + {uint8_t(41), uint8_t(10), uint8_t(67), uint8_t(138), uint8_t(77), uint8_t(110), uint8_t(90), uint8_t(47), uint8_t(114)}, + {uint8_t(115), uint8_t(21), uint8_t(2), uint8_t(10), uint8_t(102), uint8_t(255), uint8_t(166), uint8_t(23), uint8_t(6)}, + {uint8_t(101), uint8_t(29), uint8_t(16), uint8_t(10), uint8_t(85), uint8_t(128), uint8_t(101), uint8_t(196), uint8_t(26)}, + {uint8_t(57), uint8_t(18), uint8_t(10), uint8_t(102), uint8_t(102), uint8_t(213), uint8_t(34), uint8_t(20), uint8_t(43)}, + {uint8_t(117), uint8_t(20), uint8_t(15), uint8_t(36), uint8_t(163), uint8_t(128), uint8_t(68), uint8_t(1), uint8_t(26)}}, + {{uint8_t(102), uint8_t(61), uint8_t(71), uint8_t(37), uint8_t(34), uint8_t(53), uint8_t(31), uint8_t(243), uint8_t(192)}, + {uint8_t(69), uint8_t(60), uint8_t(71), uint8_t(38), uint8_t(73), uint8_t(119), uint8_t(28), uint8_t(222), uint8_t(37)}, + {uint8_t(68), uint8_t(45), uint8_t(128), uint8_t(34), uint8_t(1), uint8_t(47), uint8_t(11), uint8_t(245), uint8_t(171)}, + {uint8_t(62), uint8_t(17), uint8_t(19), uint8_t(70), uint8_t(146), uint8_t(85), uint8_t(55), uint8_t(62), uint8_t(70)}, + {uint8_t(37), uint8_t(43), uint8_t(37), uint8_t(154), uint8_t(100), uint8_t(163), uint8_t(85), uint8_t(160), uint8_t(1)}, + {uint8_t(63), uint8_t(9), uint8_t(92), uint8_t(136), uint8_t(28), uint8_t(64), uint8_t(32), uint8_t(201), uint8_t(85)}, + {uint8_t(75), uint8_t(15), uint8_t(9), uint8_t(9), uint8_t(64), uint8_t(255), uint8_t(184), uint8_t(119), uint8_t(16)}, + {uint8_t(86), uint8_t(6), uint8_t(28), uint8_t(5), uint8_t(64), uint8_t(255), uint8_t(25), uint8_t(248), uint8_t(1)}, + {uint8_t(56), uint8_t(8), uint8_t(17), uint8_t(132), uint8_t(137), uint8_t(255), uint8_t(55), uint8_t(116), uint8_t(128)}, + {uint8_t(58), uint8_t(15), uint8_t(20), uint8_t(82), uint8_t(135), uint8_t(57), uint8_t(26), uint8_t(121), uint8_t(40)}}, + {{uint8_t(164), uint8_t(50), uint8_t(31), uint8_t(137), uint8_t(154), uint8_t(133), uint8_t(25), uint8_t(35), uint8_t(218)}, + {uint8_t(51), uint8_t(103), uint8_t(44), uint8_t(131), uint8_t(131), uint8_t(123), uint8_t(31), uint8_t(6), uint8_t(158)}, + {uint8_t(86), uint8_t(40), uint8_t(64), uint8_t(135), uint8_t(148), uint8_t(224), uint8_t(45), uint8_t(183), uint8_t(128)}, + {uint8_t(22), uint8_t(26), uint8_t(17), uint8_t(131), uint8_t(240), uint8_t(154), uint8_t(14), uint8_t(1), uint8_t(209)}, + {uint8_t(45), uint8_t(16), uint8_t(21), uint8_t(91), uint8_t(64), uint8_t(222), uint8_t(7), uint8_t(1), uint8_t(197)}, + {uint8_t(56), uint8_t(21), uint8_t(39), uint8_t(155), uint8_t(60), uint8_t(138), uint8_t(23), uint8_t(102), uint8_t(213)}, + {uint8_t(83), uint8_t(12), uint8_t(13), uint8_t(54), uint8_t(192), uint8_t(255), uint8_t(68), uint8_t(47), uint8_t(28)}, + {uint8_t(85), uint8_t(26), uint8_t(85), uint8_t(85), uint8_t(128), uint8_t(128), uint8_t(32), uint8_t(146), uint8_t(171)}, + {uint8_t(18), uint8_t(11), uint8_t(7), uint8_t(63), uint8_t(144), uint8_t(171), uint8_t(4), uint8_t(4), uint8_t(246)}, + {uint8_t(35), uint8_t(27), uint8_t(10), uint8_t(146), uint8_t(174), uint8_t(171), uint8_t(12), uint8_t(26), uint8_t(128)}}, + {{uint8_t(190), uint8_t(80), uint8_t(35), uint8_t(99), uint8_t(180), uint8_t(80), uint8_t(126), uint8_t(54), uint8_t(45)}, + {uint8_t(85), uint8_t(126), uint8_t(47), uint8_t(87), uint8_t(176), uint8_t(51), uint8_t(41), uint8_t(20), uint8_t(32)}, + {uint8_t(101), uint8_t(75), uint8_t(128), uint8_t(139), uint8_t(118), uint8_t(146), uint8_t(116), uint8_t(128), uint8_t(85)}, + {uint8_t(56), uint8_t(41), uint8_t(15), uint8_t(176), uint8_t(236), uint8_t(85), uint8_t(37), uint8_t(9), uint8_t(62)}, + {uint8_t(71), uint8_t(30), uint8_t(17), uint8_t(119), uint8_t(118), uint8_t(255), uint8_t(17), uint8_t(18), uint8_t(138)}, + {uint8_t(101), uint8_t(38), uint8_t(60), uint8_t(138), uint8_t(55), uint8_t(70), uint8_t(43), uint8_t(26), uint8_t(142)}, + {uint8_t(146), uint8_t(36), uint8_t(19), uint8_t(30), uint8_t(171), uint8_t(255), uint8_t(97), uint8_t(27), uint8_t(20)}, + {uint8_t(138), uint8_t(45), uint8_t(61), uint8_t(62), uint8_t(219), uint8_t(1), uint8_t(81), uint8_t(188), uint8_t(64)}, + {uint8_t(32), uint8_t(41), uint8_t(20), uint8_t(117), uint8_t(151), uint8_t(142), uint8_t(20), uint8_t(21), uint8_t(163)}, + {uint8_t(112), uint8_t(19), uint8_t(12), uint8_t(61), uint8_t(195), uint8_t(128), uint8_t(48), uint8_t(4), uint8_t(24)}}} /* tree_enc.c:167:22 */ func PutI4Mode(tls *libc.TLS, bw uintptr, mode int32, prob uintptr) int32 { /* tree_enc.c:270:12: */ - if VP8PutBit(tls, bw, (libc.Bool32(mode != B_DC_PRED)), int32(*(*uint8_t)(unsafe.Pointer(prob)))) != 0 { - if VP8PutBit(tls, bw, (libc.Bool32(mode != B_TM_PRED)), int32(*(*uint8_t)(unsafe.Pointer(prob + 1)))) != 0 { - if VP8PutBit(tls, bw, (libc.Bool32(mode != B_VE_PRED)), int32(*(*uint8_t)(unsafe.Pointer(prob + 2)))) != 0 { - if !(VP8PutBit(tls, bw, (libc.Bool32(mode >= B_LD_PRED)), int32(*(*uint8_t)(unsafe.Pointer(prob + 3)))) != 0) { - if VP8PutBit(tls, bw, (libc.Bool32(mode != B_HE_PRED)), int32(*(*uint8_t)(unsafe.Pointer(prob + 4)))) != 0 { - VP8PutBit(tls, bw, (libc.Bool32(mode != B_RD_PRED)), int32(*(*uint8_t)(unsafe.Pointer(prob + 5)))) + if VP8PutBit(tls, bw, libc.Bool32(mode != B_DC_PRED), int32(*(*uint8_t)(unsafe.Pointer(prob)))) != 0 { + if VP8PutBit(tls, bw, libc.Bool32(mode != B_TM_PRED), int32(*(*uint8_t)(unsafe.Pointer(prob + 1)))) != 0 { + if VP8PutBit(tls, bw, libc.Bool32(mode != B_VE_PRED), int32(*(*uint8_t)(unsafe.Pointer(prob + 2)))) != 0 { + if !(VP8PutBit(tls, bw, libc.Bool32(mode >= B_LD_PRED), int32(*(*uint8_t)(unsafe.Pointer(prob + 3)))) != 0) { + if VP8PutBit(tls, bw, libc.Bool32(mode != B_HE_PRED), int32(*(*uint8_t)(unsafe.Pointer(prob + 4)))) != 0 { + VP8PutBit(tls, bw, libc.Bool32(mode != B_RD_PRED), int32(*(*uint8_t)(unsafe.Pointer(prob + 5)))) } } else { - if VP8PutBit(tls, bw, (libc.Bool32(mode != B_LD_PRED)), int32(*(*uint8_t)(unsafe.Pointer(prob + 6)))) != 0 { - if VP8PutBit(tls, bw, (libc.Bool32(mode != B_VL_PRED)), int32(*(*uint8_t)(unsafe.Pointer(prob + 7)))) != 0 { - VP8PutBit(tls, bw, (libc.Bool32(mode != B_HD_PRED)), int32(*(*uint8_t)(unsafe.Pointer(prob + 8)))) + if VP8PutBit(tls, bw, libc.Bool32(mode != B_LD_PRED), int32(*(*uint8_t)(unsafe.Pointer(prob + 6)))) != 0 { + if VP8PutBit(tls, bw, libc.Bool32(mode != B_VL_PRED), int32(*(*uint8_t)(unsafe.Pointer(prob + 7)))) != 0 { + VP8PutBit(tls, bw, libc.Bool32(mode != B_HD_PRED), int32(*(*uint8_t)(unsafe.Pointer(prob + 8)))) } } } @@ -35056,203 +34758,203 @@ func PutI4Mode(tls *libc.TLS, bw uintptr, mode int32, prob uintptr) int32 { /* t } func PutI16Mode(tls *libc.TLS, bw uintptr, mode int32) { /* tree_enc.c:292:13: */ - if VP8PutBit(tls, bw, (libc.Bool32((mode == TM_PRED) || (mode == H_PRED))), 156) != 0 { - VP8PutBit(tls, bw, (libc.Bool32(mode == TM_PRED)), 128) // TM or HE + if VP8PutBit(tls, bw, libc.Bool32(mode == TM_PRED || mode == H_PRED), 156) != 0 { + VP8PutBit(tls, bw, libc.Bool32(mode == TM_PRED), 128) // TM or HE } else { - VP8PutBit(tls, bw, (libc.Bool32(mode == V_PRED)), 163) // VE or DC + VP8PutBit(tls, bw, libc.Bool32(mode == V_PRED), 163) // VE or DC } } func PutUVMode(tls *libc.TLS, bw uintptr, uv_mode int32) { /* tree_enc.c:300:13: */ - if VP8PutBit(tls, bw, (libc.Bool32(uv_mode != DC_PRED)), 142) != 0 { - if VP8PutBit(tls, bw, (libc.Bool32(uv_mode != V_PRED)), 114) != 0 { - VP8PutBit(tls, bw, (libc.Bool32(uv_mode != H_PRED)), 183) // else: TM_PRED + if VP8PutBit(tls, bw, libc.Bool32(uv_mode != DC_PRED), 142) != 0 { + if VP8PutBit(tls, bw, libc.Bool32(uv_mode != V_PRED), 114) != 0 { + VP8PutBit(tls, bw, libc.Bool32(uv_mode != H_PRED), 183) // else: TM_PRED } } } func PutSegment(tls *libc.TLS, bw uintptr, s int32, p uintptr) { /* tree_enc.c:308:13: */ - if VP8PutBit(tls, bw, (libc.Bool32(s >= 2)), int32(*(*uint8_t)(unsafe.Pointer(p)))) != 0 { + if VP8PutBit(tls, bw, libc.Bool32(s >= 2), int32(*(*uint8_t)(unsafe.Pointer(p)))) != 0 { p += uintptr(1) } - VP8PutBit(tls, bw, (s & 1), int32(*(*uint8_t)(unsafe.Pointer(p + 1)))) + VP8PutBit(tls, bw, s&1, int32(*(*uint8_t)(unsafe.Pointer(p + 1)))) } func VP8CodeIntraModes(tls *libc.TLS, enc uintptr) { /* tree_enc.c:313:6: */ bp := tls.Alloc(3848) defer tls.Free(3848) - var bw uintptr = (enc + 64 /* &.bw_ */) + var bw uintptr = enc + 64 // var it VP8EncIterator at bp, 3848 - VP8IteratorInit(tls, enc, (bp) /* &it */) - for ok := true; ok; ok = (VP8IteratorNext(tls, (bp) /* &it */) != 0) { + VP8IteratorInit(tls, enc, bp) + for __ccgo := true; __ccgo; __ccgo = VP8IteratorNext(tls, bp) != 0 { var mb uintptr = (*VP8EncIterator)(unsafe.Pointer(bp /* &it */)).mb_ var preds uintptr = (*VP8EncIterator)(unsafe.Pointer(bp /* &it */)).preds_ if (*VP8Encoder)(unsafe.Pointer(enc)).segment_hdr_.update_map_ != 0 { - PutSegment(tls, bw, (int32(*(*uint8)(unsafe.Pointer(mb /* &.segment_ */)) & 0x60 >> 5)), (enc + 3616 /* &.proba_ */) /* &.segments_ */) + PutSegment(tls, bw, int32(*(*uint8)(unsafe.Pointer(mb))&0x60>>5), enc+3616) } if (*VP8Encoder)(unsafe.Pointer(enc)).proba_.use_skip_proba_ != 0 { - VP8PutBit(tls, bw, (int32(*(*uint8)(unsafe.Pointer(mb /* &.skip_ */)) & 0x10 >> 4)), int32((*VP8Encoder)(unsafe.Pointer(enc)).proba_.skip_proba_)) + VP8PutBit(tls, bw, int32(*(*uint8)(unsafe.Pointer(mb))&0x10>>4), int32((*VP8Encoder)(unsafe.Pointer(enc)).proba_.skip_proba_)) } - if VP8PutBit(tls, bw, (libc.Bool32((int32(*(*uint8)(unsafe.Pointer(mb /* &.type_ */))&0x3>>0)) != 0)), 145) != 0 { // i16x16 + if VP8PutBit(tls, bw, libc.Bool32(int32(*(*uint8)(unsafe.Pointer(mb))&0x3>>0) != 0), 145) != 0 { // i16x16 PutI16Mode(tls, bw, int32(*(*uint8_t)(unsafe.Pointer(preds)))) } else { var preds_w int32 = (*VP8Encoder)(unsafe.Pointer(enc)).preds_w_ - var top_pred uintptr = (preds - uintptr(preds_w)) + var top_pred uintptr = preds - uintptr(preds_w) var x int32 var y int32 for y = 0; y < 4; y++ { var left int32 = int32(*(*uint8_t)(unsafe.Pointer(preds + libc.UintptrFromInt32(-1)))) for x = 0; x < 4; x++ { - var probas uintptr = ((uintptr(unsafe.Pointer(&kBModesProba1)) + uintptr(*(*uint8_t)(unsafe.Pointer(top_pred + uintptr(x))))*90) + uintptr(left)*9) + var probas uintptr = uintptr(unsafe.Pointer(&kBModesProba1)) + uintptr(*(*uint8_t)(unsafe.Pointer(top_pred + uintptr(x))))*90 + uintptr(left)*9 left = PutI4Mode(tls, bw, int32(*(*uint8_t)(unsafe.Pointer(preds + uintptr(x)))), probas) } top_pred = preds preds += uintptr(preds_w) } } - PutUVMode(tls, bw, (int32(*(*uint8)(unsafe.Pointer(mb /* &.uv_mode_ */)) & 0xc >> 2))) + PutUVMode(tls, bw, int32(*(*uint8)(unsafe.Pointer(mb))&0xc>>2)) } } //------------------------------------------------------------------------------ // Paragraph 13 -var VP8CoeffsUpdateProba = [4][8][3][11]uint8_t{[8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, +var VP8CoeffsUpdateProba = [4][8][3][11]uint8_t{{ + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(176), uint8_t(246), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(223), uint8_t(241), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(249), uint8_t(253), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(176), uint8_t(246), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(223), uint8_t(241), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(249), uint8_t(253), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(244), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(234), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(244), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(234), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(246), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(239), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(246), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(239), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(248), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(251), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(248), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(251), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(251), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(251), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(253), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(250), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(253), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(250), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, }, - [8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(217), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(225), uint8_t(252), uint8_t(241), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(234), uint8_t(250), uint8_t(241), uint8_t(250), uint8_t(253), uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255)}, + { + {{uint8_t(217), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(225), uint8_t(252), uint8_t(241), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(234), uint8_t(250), uint8_t(241), uint8_t(250), uint8_t(253), uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(223), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(238), uint8_t(253), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(223), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(238), uint8_t(253), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(248), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(249), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(248), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(249), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(247), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(247), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, }, - [8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(186), uint8_t(251), uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(234), uint8_t(251), uint8_t(244), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(251), uint8_t(251), uint8_t(243), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + { + {{uint8_t(186), uint8_t(251), uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(234), uint8_t(251), uint8_t(244), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(251), uint8_t(251), uint8_t(243), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(236), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(251), uint8_t(253), uint8_t(253), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(236), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(251), uint8_t(253), uint8_t(253), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, }, - [8][3][11]uint8_t{ - [3][11]uint8_t{[11]uint8_t{uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(250), uint8_t(254), uint8_t(252), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(248), uint8_t(254), uint8_t(249), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + { + {{uint8_t(248), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(250), uint8_t(254), uint8_t(252), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(248), uint8_t(254), uint8_t(249), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(253), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(246), uint8_t(253), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(252), uint8_t(254), uint8_t(251), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(253), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(246), uint8_t(253), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(252), uint8_t(254), uint8_t(251), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(248), uint8_t(254), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(253), uint8_t(255), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(254), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(248), uint8_t(254), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(253), uint8_t(255), uint8_t(254), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(251), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(245), uint8_t(251), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(253), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(251), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(245), uint8_t(251), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(253), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(251), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(252), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(251), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(252), uint8_t(253), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(249), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(252), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(249), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(253), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(250), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, - [3][11]uint8_t{[11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, - [11]uint8_t{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {{uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(254), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, + {uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255), uint8_t(255)}, }, }, } /* tree_enc.c:350:5 */ @@ -35266,9 +34968,9 @@ func VP8WriteProbas(tls *libc.TLS, bw uintptr, probas uintptr) { /* tree_enc.c:4 for b = 0; b < NUM_BANDS; b++ { for c = 0; c < NUM_CTX; c++ { for p = 0; p < NUM_PROBAS; p++ { - var p0 uint8_t = *(*uint8_t)(unsafe.Pointer(((((probas + 4 /* &.coeffs_ */) + uintptr(t)*264) + uintptr(b)*33) + uintptr(c)*11) + uintptr(p))) - var update int32 = (libc.Bool32(int32(p0) != int32(*(*uint8_t)(unsafe.Pointer((((uintptr(unsafe.Pointer(&VP8CoeffsProba0)) + uintptr(t)*264) + uintptr(b)*33) + uintptr(c)*11) + uintptr(p)))))) - if VP8PutBit(tls, bw, update, int32(*(*uint8_t)(unsafe.Pointer((((uintptr(unsafe.Pointer(&VP8CoeffsUpdateProba)) + uintptr(t)*264) + uintptr(b)*33) + uintptr(c)*11) + uintptr(p))))) != 0 { + var p0 uint8_t = *(*uint8_t)(unsafe.Pointer(probas + 4 + uintptr(t)*264 + uintptr(b)*33 + uintptr(c)*11 + uintptr(p))) + var update int32 = libc.Bool32(int32(p0) != int32(*(*uint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8CoeffsProba0)) + uintptr(t)*264 + uintptr(b)*33 + uintptr(c)*11 + uintptr(p))))) + if VP8PutBit(tls, bw, update, int32(*(*uint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8CoeffsUpdateProba)) + uintptr(t)*264 + uintptr(b)*33 + uintptr(c)*11 + uintptr(p))))) != 0 { VP8PutBits(tls, bw, uint32(p0), 8) } } @@ -35395,7 +35097,7 @@ func PaletteComponentDistance(tls *libc.TLS, v uint32_t) uint32_t { /* vp8l_enc. if v <= uint32_t(128) { return v } - return (uint32_t(256) - v) + return uint32_t(256) - v } // Computes a value that is related to the entropy created by the @@ -35407,11 +35109,11 @@ func PaletteColorDistance(tls *libc.TLS, col1 uint32_t, col2 uint32_t) uint32_t var diff uint32_t = VP8LSubPixels(tls, col1, col2) var kMoreWeightForRGBThanForAlpha int32 = 9 var score uint32_t - score = PaletteComponentDistance(tls, ((diff >> 0) & uint32_t(0xff))) - score = score + (PaletteComponentDistance(tls, ((diff >> 8) & uint32_t(0xff)))) - score = score + (PaletteComponentDistance(tls, ((diff >> 16) & uint32_t(0xff)))) - score = score * (uint32_t(kMoreWeightForRGBThanForAlpha)) - score = score + (PaletteComponentDistance(tls, ((diff >> 24) & uint32_t(0xff)))) + score = PaletteComponentDistance(tls, diff>>0&uint32_t(0xff)) + score = score + PaletteComponentDistance(tls, diff>>8&uint32_t(0xff)) + score = score + PaletteComponentDistance(tls, diff>>16&uint32_t(0xff)) + score = score * uint32_t(kMoreWeightForRGBThanForAlpha) + score = score + PaletteComponentDistance(tls, diff>>24&uint32_t(0xff)) return score } @@ -35428,7 +35130,7 @@ func SearchColorNoIdx(tls *libc.TLS, sorted uintptr, color uint32_t, num_colors return low } // loop invariant: sorted[low] != color for 1 != 0 { - var mid int32 = ((low + hi) >> 1) + var mid int32 = (low + hi) >> 1 if *(*uint32_t)(unsafe.Pointer(sorted + uintptr(mid)*4)) == color { return mid } else if *(*uint32_t)(unsafe.Pointer(sorted + uintptr(mid)*4)) < color { @@ -35453,43 +35155,43 @@ func PaletteHasNonMonotonousDeltas(tls *libc.TLS, palette uintptr, num_colors in var sign_found uint8_t = uint8_t(0x00) for i = 0; i < num_colors; i++ { var diff uint32_t = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(palette + uintptr(i)*4)), predict) - var rd uint8_t = (uint8_t((diff >> 16) & uint32_t(0xff))) - var gd uint8_t = (uint8_t((diff >> 8) & uint32_t(0xff))) - var bd uint8_t = (uint8_t((diff >> 0) & uint32_t(0xff))) + var rd uint8_t = uint8_t(diff >> 16 & uint32_t(0xff)) + var gd uint8_t = uint8_t(diff >> 8 & uint32_t(0xff)) + var bd uint8_t = uint8_t(diff >> 0 & uint32_t(0xff)) if int32(rd) != 0x00 { - sign_found = uint8_t(int32(sign_found) | (func() int32 { + sign_found = uint8_t(int32(sign_found) | func() int32 { if int32(rd) < 0x80 { return 1 } return 2 - }())) + }()) } if int32(gd) != 0x00 { - sign_found = uint8_t(int32(sign_found) | (func() int32 { + sign_found = uint8_t(int32(sign_found) | func() int32 { if int32(gd) < 0x80 { return 8 } return 16 - }())) + }()) } if int32(bd) != 0x00 { - sign_found = uint8_t(int32(sign_found) | (func() int32 { + sign_found = uint8_t(int32(sign_found) | func() int32 { if int32(bd) < 0x80 { return 64 } return 128 - }())) + }()) } predict = *(*uint32_t)(unsafe.Pointer(palette + uintptr(i)*4)) } - return (libc.Bool32((int32(sign_found) & (int32(sign_found) << 1)) != 0)) // two consequent signs. + return libc.Bool32(int32(sign_found)&(int32(sign_found)<<1) != 0) // two consequent signs. } func PaletteSortMinimizeDeltas(tls *libc.TLS, palette_sorted uintptr, num_colors int32, palette uintptr) { /* vp8l_enc.c:116:13: */ var predict uint32_t = uint32_t(0x00000000) var i int32 var k int32 - libc.Xmemcpy(tls, palette, palette_sorted, (uint64(num_colors) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, palette, palette_sorted, uint64(num_colors)*uint64(unsafe.Sizeof(uint32_t(0)))) if !(PaletteHasNonMonotonousDeltas(tls, palette_sorted, num_colors) != 0) { return } @@ -35506,7 +35208,7 @@ func PaletteSortMinimizeDeltas(tls *libc.TLS, palette_sorted uintptr, num_colors best_ix = k } } - SwapColor(tls, (palette + uintptr(best_ix)*4), (palette + uintptr(i)*4)) + SwapColor(tls, palette+uintptr(best_ix)*4, palette+uintptr(i)*4) predict = *(*uint32_t)(unsafe.Pointer(palette + uintptr(i)*4)) } } @@ -35514,7 +35216,7 @@ func PaletteSortMinimizeDeltas(tls *libc.TLS, palette_sorted uintptr, num_colors // Sort palette in increasing order and prepare an inverse mapping array. func PrepareMapToPalette(tls *libc.TLS, palette uintptr, num_colors uint32_t, sorted uintptr, idx_map uintptr) { /* vp8l_enc.c:141:13: */ var i uint32_t - libc.Xmemcpy(tls, sorted, palette, (uint64(num_colors) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, sorted, palette, uint64(num_colors)*uint64(unsafe.Sizeof(uint32_t(0)))) libc.Xqsort(tls, sorted, uint64(num_colors), uint64(unsafe.Sizeof(uint32_t(0))), *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) int32 }{PaletteCompareColorsForQsort}))) @@ -35540,7 +35242,7 @@ func CoOccurrenceFindMax(tls *libc.TLS, cooccurrence uintptr, num_colors uint32_ for i = uint32_t(0); i < num_colors; i++ { var sum uint32_t = uint32_t(0) for j = uint32_t(0); j < num_colors; j++ { - sum = sum + (*(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(((i*num_colors)+j))*4))) + sum = sum + *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(i*num_colors+j)*4)) } if sum > best_sum { best_sum = sum @@ -35551,8 +35253,8 @@ func CoOccurrenceFindMax(tls *libc.TLS, cooccurrence uintptr, num_colors uint32_ *(*uint8_t)(unsafe.Pointer(c2)) = uint8(0) best_cooccurrence = 0 for i = uint32_t(0); i < num_colors; i++ { - if *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(((uint32_t(*(*uint8_t)(unsafe.Pointer(c1)))*num_colors)+i))*4)) > best_cooccurrence { - best_cooccurrence = *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(((uint32_t(*(*uint8_t)(unsafe.Pointer(c1)))*num_colors)+i))*4)) + if *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(uint32_t(*(*uint8_t)(unsafe.Pointer(c1)))*num_colors+i)*4)) > best_cooccurrence { + best_cooccurrence = *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(uint32_t(*(*uint8_t)(unsafe.Pointer(c1)))*num_colors+i)*4)) *(*uint8_t)(unsafe.Pointer(c2)) = uint8_t(i) } } @@ -35576,38 +35278,38 @@ func CoOccurrenceBuild(tls *libc.TLS, pic uintptr, palette uintptr, num_colors u *(*[256]uint32_t)(unsafe.Pointer(bp + 1024 /* idx_map */)) = [256]uint32_t{0: uint32_t(0)} // var palette_sorted [256]uint32_t at bp, 1024 - lines = WebPSafeMalloc(tls, (uint64(2 * (*WebPPicture)(unsafe.Pointer(pic)).width)), uint64(unsafe.Sizeof(uint32_t(0)))) - if lines == (uintptr(0)) { + lines = WebPSafeMalloc(tls, uint64(2*(*WebPPicture)(unsafe.Pointer(pic)).width), uint64(unsafe.Sizeof(uint32_t(0)))) + if lines == uintptr(0) { return VP8_ENC_ERROR_OUT_OF_MEMORY } - line_top = (lines) - line_current = (lines + uintptr((*WebPPicture)(unsafe.Pointer(pic)).width)*4) - PrepareMapToPalette(tls, palette, num_colors, (bp) /* &palette_sorted[0] */, (bp + 1024) /* &idx_map[0] */) + line_top = lines + line_current = lines + uintptr((*WebPPicture)(unsafe.Pointer(pic)).width)*4 + PrepareMapToPalette(tls, palette, num_colors, bp, bp+1024) for y = 0; y < (*WebPPicture)(unsafe.Pointer(pic)).height; y++ { for x = 0; x < (*WebPPicture)(unsafe.Pointer(pic)).width; x++ { var pix uint32_t = *(*uint32_t)(unsafe.Pointer(src + uintptr(x)*4)) if pix != prev_pix { - prev_idx = *(*uint32_t)(unsafe.Pointer((bp + 1024) /* &idx_map[0] */ + uintptr(SearchColorNoIdx(tls, (bp) /* &palette_sorted[0] */, pix, int32(num_colors)))*4)) + prev_idx = *(*uint32_t)(unsafe.Pointer(bp + 1024 + uintptr(SearchColorNoIdx(tls, bp, pix, int32(num_colors)))*4)) prev_pix = pix } *(*uint32_t)(unsafe.Pointer(line_current + uintptr(x)*4)) = prev_idx // 4-connectivity is what works best as mentioned in "On the relation // between Memon's and the modified Zeng's palette reordering methods". - if (x > 0) && (prev_idx != *(*uint32_t)(unsafe.Pointer(line_current + uintptr((x-1))*4))) { - var left_idx uint32_t = *(*uint32_t)(unsafe.Pointer(line_current + uintptr((x-1))*4)) - *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(((prev_idx*num_colors)+left_idx))*4))++ - *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(((left_idx*num_colors)+prev_idx))*4))++ + if x > 0 && prev_idx != *(*uint32_t)(unsafe.Pointer(line_current + uintptr(x-1)*4)) { + var left_idx uint32_t = *(*uint32_t)(unsafe.Pointer(line_current + uintptr(x-1)*4)) + *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(prev_idx*num_colors+left_idx)*4))++ + *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(left_idx*num_colors+prev_idx)*4))++ } - if (y > 0) && (prev_idx != *(*uint32_t)(unsafe.Pointer(line_top + uintptr(x)*4))) { + if y > 0 && prev_idx != *(*uint32_t)(unsafe.Pointer(line_top + uintptr(x)*4)) { var top_idx uint32_t = *(*uint32_t)(unsafe.Pointer(line_top + uintptr(x)*4)) - *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(((prev_idx*num_colors)+top_idx))*4))++ - *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(((top_idx*num_colors)+prev_idx))*4))++ + *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(prev_idx*num_colors+top_idx)*4))++ + *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(top_idx*num_colors+prev_idx)*4))++ } } line_tmp = line_top line_top = line_current line_current = line_tmp - src += 4 * (uintptr((*WebPPicture)(unsafe.Pointer(pic)).argb_stride)) + src += 4 * uintptr((*WebPPicture)(unsafe.Pointer(pic)).argb_stride) } WebPSafeFree(tls, lines) return VP8_ENC_OK @@ -35642,8 +35344,8 @@ func PaletteSortModifiedZeng(tls *libc.TLS, pic uintptr, palette_sorted uintptr, return VP8_ENC_OK } // Build the co-occurrence matrix. - cooccurrence = WebPSafeCalloc(tls, (uint64(num_colors * num_colors)), uint64(unsafe.Sizeof(uint32_t(0)))) - if cooccurrence == (uintptr(0)) { + cooccurrence = WebPSafeCalloc(tls, uint64(num_colors*num_colors), uint64(unsafe.Sizeof(uint32_t(0)))) + if cooccurrence == uintptr(0) { return VP8_ENC_ERROR_OUT_OF_MEMORY } if CoOccurrenceBuild(tls, pic, palette_sorted, num_colors, cooccurrence) != VP8_ENC_OK { @@ -35652,29 +35354,29 @@ func PaletteSortModifiedZeng(tls *libc.TLS, pic uintptr, palette_sorted uintptr, } // Initialize the mapping list with the two best indices. - CoOccurrenceFindMax(tls, cooccurrence, num_colors, (bp) /* &remapping */, ((bp) /* &remapping */ + 1)) + CoOccurrenceFindMax(tls, cooccurrence, num_colors, bp, bp+1) // We need to append and prepend to the list of remapping. To this end, we // actually define the next start/end of the list as indices in a vector (with // a wrap around when the end is reached). first = uint32_t(0) last = uint32_t(1) - num_sums = (num_colors - uint32_t(2)) // -2 because we know the first two values + num_sums = num_colors - uint32_t(2) // -2 because we know the first two values if num_sums > uint32_t(0) { // Initialize the sums with the first two remappings and find the best one - var best_sum uintptr = (bp + 256) /* &sums */ + var best_sum uintptr = bp + 256 (*Sum)(unsafe.Pointer(best_sum)).index = uint8(0) (*Sum)(unsafe.Pointer(best_sum)).sum = 0 i = uint32_t(0) j = uint32_t(0) for ; i < num_colors; i++ { - if (i == uint32_t(*(*uint8_t)(unsafe.Pointer((bp) /* &remapping[0] */)))) || (i == uint32_t(*(*uint8_t)(unsafe.Pointer((bp) /* &remapping[0] */ + 1)))) { + if i == uint32_t(*(*uint8_t)(unsafe.Pointer(bp))) || i == uint32_t(*(*uint8_t)(unsafe.Pointer(bp + 1))) { continue } - (*Sum)(unsafe.Pointer((bp + 256) /* &sums */ + uintptr(j)*8)).index = uint8_t(i) - (*Sum)(unsafe.Pointer((bp + 256) /* &sums */ + uintptr(j)*8)).sum = (*(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(((i*num_colors)+uint32_t(*(*uint8_t)(unsafe.Pointer((bp) /* &remapping[0] */)))))*4)) + *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(((i*num_colors)+uint32_t(*(*uint8_t)(unsafe.Pointer((bp) /* &remapping[0] */ + 1)))))*4))) - if (*Sum)(unsafe.Pointer((bp+256) /* &sums */ +uintptr(j)*8)).sum > (*Sum)(unsafe.Pointer(best_sum)).sum { - best_sum = ((bp + 256) /* &sums */ + uintptr(j)*8) + (*Sum)(unsafe.Pointer(bp + 256 + uintptr(j)*8)).index = uint8_t(i) + (*Sum)(unsafe.Pointer(bp + 256 + uintptr(j)*8)).sum = *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(i*num_colors+uint32_t(*(*uint8_t)(unsafe.Pointer(bp))))*4)) + *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(i*num_colors+uint32_t(*(*uint8_t)(unsafe.Pointer(bp + 1))))*4)) + if (*Sum)(unsafe.Pointer(bp+256+uintptr(j)*8)).sum > (*Sum)(unsafe.Pointer(best_sum)).sum { + best_sum = bp + 256 + uintptr(j)*8 } j++ } @@ -35683,33 +35385,33 @@ func PaletteSortModifiedZeng(tls *libc.TLS, pic uintptr, palette_sorted uintptr, var best_index uint8_t = (*Sum)(unsafe.Pointer(best_sum)).index // Compute delta to know if we need to prepend or append the best index. var delta int32_t = 0 - var n int32_t = (int32_t(num_colors - num_sums)) + var n int32_t = int32_t(num_colors - num_sums) ind = first j = uint32_t(0) - for ; ((ind + j) % num_colors) != (last + uint32_t(1)); j++ { - var l_j uint16_t = uint16_t(*(*uint8_t)(unsafe.Pointer((bp) /* &remapping[0] */ + uintptr(((ind + j) % num_colors))))) - delta = delta + (((n - 1) - (2 * int32_t(j))) * int32_t(*(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(((uint32_t(best_index)*num_colors)+uint32_t(l_j)))*4)))) + for ; (ind+j)%num_colors != last+uint32_t(1); j++ { + var l_j uint16_t = uint16_t(*(*uint8_t)(unsafe.Pointer(bp + uintptr((ind+j)%num_colors)))) + delta = delta + (n-1-2*int32_t(j))*int32_t(*(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(uint32_t(best_index)*num_colors+uint32_t(l_j))*4))) } if delta > 0 { if first == uint32_t(0) { - first = (num_colors - uint32_t(1)) + first = num_colors - uint32_t(1) } else { - first = (first - uint32_t(1)) + first = first - uint32_t(1) } - *(*uint8_t)(unsafe.Pointer((bp) /* &remapping[0] */ + uintptr(first))) = best_index + *(*uint8_t)(unsafe.Pointer(bp + uintptr(first))) = best_index } else { last++ - *(*uint8_t)(unsafe.Pointer((bp) /* &remapping[0] */ + uintptr(last))) = best_index + *(*uint8_t)(unsafe.Pointer(bp + uintptr(last))) = best_index } // Remove best_sum from sums. - *(*Sum)(unsafe.Pointer(best_sum)) = *(*Sum)(unsafe.Pointer((bp + 256) /* &sums[0] */ + uintptr((num_sums-uint32_t(1)))*8)) + *(*Sum)(unsafe.Pointer(best_sum)) = *(*Sum)(unsafe.Pointer(bp + 256 + uintptr(num_sums-uint32_t(1))*8)) num_sums-- // Update all the sums and find the best one. - best_sum = (bp + 256) /* &sums */ + best_sum = bp + 256 for i = uint32_t(0); i < num_sums; i++ { - *(*uint32_t)(unsafe.Pointer((((bp + 256) /* &sums */ + uintptr(i)*8) + 4 /* &.sum */))) += (*(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(((uint32_t(best_index)*num_colors)+uint32_t((*Sum)(unsafe.Pointer((bp+256) /* &sums */ +uintptr(i)*8)).index)))*4))) - if (*Sum)(unsafe.Pointer((bp+256) /* &sums */ +uintptr(i)*8)).sum > (*Sum)(unsafe.Pointer(best_sum)).sum { - best_sum = ((bp + 256) /* &sums */ + uintptr(i)*8) + *(*uint32_t)(unsafe.Pointer(bp + 256 + uintptr(i)*8 + 4)) += *(*uint32_t)(unsafe.Pointer(cooccurrence + uintptr(uint32_t(best_index)*num_colors+uint32_t((*Sum)(unsafe.Pointer(bp+256+uintptr(i)*8)).index))*4)) + if (*Sum)(unsafe.Pointer(bp+256+uintptr(i)*8)).sum > (*Sum)(unsafe.Pointer(best_sum)).sum { + best_sum = bp + 256 + uintptr(i)*8 } } } @@ -35719,7 +35421,7 @@ func PaletteSortModifiedZeng(tls *libc.TLS, pic uintptr, palette_sorted uintptr, // Re-map the palette. for i = uint32_t(0); i < num_colors; i++ { - *(*uint32_t)(unsafe.Pointer(palette + uintptr(i)*4)) = *(*uint32_t)(unsafe.Pointer(palette_sorted + uintptr(*(*uint8_t)(unsafe.Pointer((bp) /* &remapping[0] */ + uintptr(((first + i) % num_colors)))))*4)) + *(*uint32_t)(unsafe.Pointer(palette + uintptr(i)*4)) = *(*uint32_t)(unsafe.Pointer(palette_sorted + uintptr(*(*uint8_t)(unsafe.Pointer(bp + uintptr((first+i)%num_colors))))*4)) } return VP8_ENC_OK } @@ -35735,22 +35437,22 @@ type PaletteSorting = uint32 /* vp8l_enc.c:341:3 */ type HistoIx = uint32 /* vp8l_enc.c:358:3 */ func AddSingleSubGreen(tls *libc.TLS, p int32, r uintptr, b uintptr) { /* vp8l_enc.c:360:13: */ - var green int32 = (p >> 8) // The upper bits are masked away later. - *(*uint32_t)(unsafe.Pointer(r + uintptr((((p>>16)-green)&0xff))*4))++ - *(*uint32_t)(unsafe.Pointer(b + uintptr((((p>>0)-green)&0xff))*4))++ + var green int32 = p >> 8 // The upper bits are masked away later. + *(*uint32_t)(unsafe.Pointer(r + uintptr((p>>16-green)&0xff)*4))++ + *(*uint32_t)(unsafe.Pointer(b + uintptr((p>>0-green)&0xff)*4))++ } func AddSingle(tls *libc.TLS, p uint32_t, a uintptr, r uintptr, g uintptr, b uintptr) { /* vp8l_enc.c:366:13: */ - *(*uint32_t)(unsafe.Pointer(a + uintptr(((p>>24)&uint32_t(0xff)))*4))++ - *(*uint32_t)(unsafe.Pointer(r + uintptr(((p>>16)&uint32_t(0xff)))*4))++ - *(*uint32_t)(unsafe.Pointer(g + uintptr(((p>>8)&uint32_t(0xff)))*4))++ - *(*uint32_t)(unsafe.Pointer(b + uintptr(((p>>0)&uint32_t(0xff)))*4))++ + *(*uint32_t)(unsafe.Pointer(a + uintptr(p>>24&uint32_t(0xff))*4))++ + *(*uint32_t)(unsafe.Pointer(r + uintptr(p>>16&uint32_t(0xff))*4))++ + *(*uint32_t)(unsafe.Pointer(g + uintptr(p>>8&uint32_t(0xff))*4))++ + *(*uint32_t)(unsafe.Pointer(b + uintptr(p>>0&uint32_t(0xff))*4))++ } func HashPix(tls *libc.TLS, pix uint32_t) uint32_t { /* vp8l_enc.c:375:29: */ // Note that masking with 0xffffffffu is for preventing an // 'unsigned int overflow' warning. Doesn't impact the compiled code. - return (uint32_t((((uint64(uint64_t(pix) + (uint64_t(pix >> 19)))) * 0x39c5fba7) & uint64(0xffffffff)) >> 24)) + return uint32_t(uint64(uint64_t(pix)+uint64_t(pix>>19)) * 0x39c5fba7 & uint64(0xffffffff) >> 24) } func AnalyzeEntropy(tls *libc.TLS, argb uintptr, width int32, height int32, argb_stride int32, use_palette int32, palette_size int32, transform_bits int32, min_entropy_ix uintptr, red_and_blue_always_zero uintptr) int32 { /* vp8l_enc.c:381:12: */ @@ -35760,19 +35462,19 @@ func AnalyzeEntropy(tls *libc.TLS, argb uintptr, width int32, height int32, argb // Allocate histogram set with cache_bits = 0. var histo uintptr - if (use_palette != 0) && (palette_size <= 16) { + if use_palette != 0 && palette_size <= 16 { // In the case of small palettes, we pack 2, 4 or 8 pixels together. In // practice, small palettes are better than any other transform. *(*EntropyIx)(unsafe.Pointer(min_entropy_ix)) = kPalette *(*int32)(unsafe.Pointer(red_and_blue_always_zero)) = 1 return 1 } - histo = WebPSafeCalloc(tls, kHistoTotal, (uint64(unsafe.Sizeof(uint32_t(0))) * uint64(256))) - if histo != (uintptr(0)) { + histo = WebPSafeCalloc(tls, kHistoTotal, uint64(unsafe.Sizeof(uint32_t(0)))*uint64(256)) + if histo != uintptr(0) { var i int32 var x int32 var y int32 - var prev_row uintptr = (uintptr(0)) + var prev_row uintptr = uintptr(0) var curr_row uintptr = argb var pix_prev uint32_t = *(*uint32_t)(unsafe.Pointer(argb)) // Skip the first pixel. for y = 0; y < height; y++ { @@ -35780,34 +35482,34 @@ func AnalyzeEntropy(tls *libc.TLS, argb uintptr, width int32, height int32, argb var pix uint32_t = *(*uint32_t)(unsafe.Pointer(curr_row + uintptr(x)*4)) var pix_diff uint32_t = VP8LSubPixels(tls, pix, pix_prev) pix_prev = pix - if (pix_diff == uint32_t(0)) || ((prev_row != (uintptr(0))) && (pix == *(*uint32_t)(unsafe.Pointer(prev_row + uintptr(x)*4)))) { + if pix_diff == uint32_t(0) || prev_row != uintptr(0) && pix == *(*uint32_t)(unsafe.Pointer(prev_row + uintptr(x)*4)) { continue } AddSingle(tls, pix, - (histo), - (histo + 1024*4), - (histo + 512*4), - (histo + 1536*4)) + histo, + histo+1024*4, + histo+512*4, + histo+1536*4) AddSingle(tls, pix_diff, - (histo + 256*4), - (histo + 1280*4), - (histo + 768*4), - (histo + 1792*4)) + histo+256*4, + histo+1280*4, + histo+768*4, + histo+1792*4) AddSingleSubGreen(tls, int32(pix), - (histo + 2048*4), - (histo + 2560*4)) + histo+2048*4, + histo+2560*4) AddSingleSubGreen(tls, int32(pix_diff), - (histo + 2304*4), - (histo + 2816*4)) + histo+2304*4, + histo+2816*4) { // Approximate the palette by the entropy of the multiplicative hash. var hash uint32_t = HashPix(tls, pix) - *(*uint32_t)(unsafe.Pointer(histo + uintptr(((uint32_t(kHistoPalette*256))+hash))*4))++ + *(*uint32_t)(unsafe.Pointer(histo + uintptr(uint32_t(kHistoPalette*256)+hash)*4))++ } } prev_row = curr_row - curr_row += 4 * (uintptr(argb_stride)) + curr_row += 4 * uintptr(argb_stride) } { // var entropy_comp [13]float64 at bp, 104 @@ -35833,30 +35535,30 @@ func AnalyzeEntropy(tls *libc.TLS, argb uintptr, width int32, height int32, argb *(*uint32_t)(unsafe.Pointer(histo + 256*4))++ for j = 0; j < kHistoTotal; j++ { - *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + uintptr(j)*8)) = VP8LBitsEntropy(tls, (histo + uintptr((j*256))*4), 256) + *(*float64)(unsafe.Pointer(bp + uintptr(j)*8)) = VP8LBitsEntropy(tls, histo+uintptr(j*256)*4, 256) } - *(*float64)(unsafe.Pointer((bp + 104) /* &entropy[0] */)) = (((*(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */)) + *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 4*8))) + *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 2*8))) + *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 6*8))) - *(*float64)(unsafe.Pointer((bp + 104) /* &entropy[0] */ + 1*8)) = (((*(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 1*8)) + *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 5*8))) + *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 3*8))) + *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 7*8))) - *(*float64)(unsafe.Pointer((bp + 104) /* &entropy[0] */ + 2*8)) = (((*(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */)) + *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 8*8))) + *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 2*8))) + *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 10*8))) - *(*float64)(unsafe.Pointer((bp + 104) /* &entropy[0] */ + 3*8)) = (((*(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 1*8)) + *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 9*8))) + *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 3*8))) + *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 11*8))) - *(*float64)(unsafe.Pointer((bp + 104) /* &entropy[0] */ + 4*8)) = *(*float64)(unsafe.Pointer((bp) /* &entropy_comp[0] */ + 12*8)) + *(*float64)(unsafe.Pointer(bp + 104)) = *(*float64)(unsafe.Pointer(bp)) + *(*float64)(unsafe.Pointer(bp + 4*8)) + *(*float64)(unsafe.Pointer(bp + 2*8)) + *(*float64)(unsafe.Pointer(bp + 6*8)) + *(*float64)(unsafe.Pointer(bp + 104 + 1*8)) = *(*float64)(unsafe.Pointer(bp + 1*8)) + *(*float64)(unsafe.Pointer(bp + 5*8)) + *(*float64)(unsafe.Pointer(bp + 3*8)) + *(*float64)(unsafe.Pointer(bp + 7*8)) + *(*float64)(unsafe.Pointer(bp + 104 + 2*8)) = *(*float64)(unsafe.Pointer(bp)) + *(*float64)(unsafe.Pointer(bp + 8*8)) + *(*float64)(unsafe.Pointer(bp + 2*8)) + *(*float64)(unsafe.Pointer(bp + 10*8)) + *(*float64)(unsafe.Pointer(bp + 104 + 3*8)) = *(*float64)(unsafe.Pointer(bp + 1*8)) + *(*float64)(unsafe.Pointer(bp + 9*8)) + *(*float64)(unsafe.Pointer(bp + 3*8)) + *(*float64)(unsafe.Pointer(bp + 11*8)) + *(*float64)(unsafe.Pointer(bp + 104 + 4*8)) = *(*float64)(unsafe.Pointer(bp + 12*8)) // When including transforms, there is an overhead in bits from // storing them. This overhead is small but matters for small images. // For spatial, there are 14 transformations. - *(*float64)(unsafe.Pointer(((bp + 104) /* &entropy */ + 1*8))) += (float64((float32(VP8LSubSampleSize(tls, uint32(width), uint32(transform_bits)) * VP8LSubSampleSize(tls, uint32(height), uint32(transform_bits)))) * VP8LFastLog2(tls, uint32(14)))) + *(*float64)(unsafe.Pointer(bp + 104 + 1*8)) += float64(float32(VP8LSubSampleSize(tls, uint32(width), uint32(transform_bits))*VP8LSubSampleSize(tls, uint32(height), uint32(transform_bits))) * VP8LFastLog2(tls, uint32(14))) // For color transforms: 24 as only 3 channels are considered in a // ColorTransformElement. - *(*float64)(unsafe.Pointer(((bp + 104) /* &entropy */ + 3*8))) += (float64((float32(VP8LSubSampleSize(tls, uint32(width), uint32(transform_bits)) * VP8LSubSampleSize(tls, uint32(height), uint32(transform_bits)))) * VP8LFastLog2(tls, uint32(24)))) + *(*float64)(unsafe.Pointer(bp + 104 + 3*8)) += float64(float32(VP8LSubSampleSize(tls, uint32(width), uint32(transform_bits))*VP8LSubSampleSize(tls, uint32(height), uint32(transform_bits))) * VP8LFastLog2(tls, uint32(24))) // For palettes, add the cost of storing the palette. // We empirically estimate the cost of a compressed entry as 8 bits. // The palette is differential-coded when compressed hence a much // lower cost than sizeof(uint32_t)*8. - *(*float64)(unsafe.Pointer(((bp + 104) /* &entropy */ + 4*8))) += (float64(palette_size * 8)) + *(*float64)(unsafe.Pointer(bp + 104 + 4*8)) += float64(palette_size * 8) *(*EntropyIx)(unsafe.Pointer(min_entropy_ix)) = kDirect - for k = (kDirect + 1); k <= last_mode_to_analyze; k++ { - if *(*float64)(unsafe.Pointer((bp + 104) /* &entropy[0] */ + uintptr(*(*EntropyIx)(unsafe.Pointer(min_entropy_ix)))*8)) > *(*float64)(unsafe.Pointer((bp + 104) /* &entropy[0] */ + uintptr(k)*8)) { + for k = kDirect + 1; k <= last_mode_to_analyze; k++ { + if *(*float64)(unsafe.Pointer(bp + 104 + uintptr(*(*EntropyIx)(unsafe.Pointer(min_entropy_ix)))*8)) > *(*float64)(unsafe.Pointer(bp + 104 + uintptr(k)*8)) { *(*EntropyIx)(unsafe.Pointer(min_entropy_ix)) = EntropyIx(k) } } @@ -35866,10 +35568,10 @@ func AnalyzeEntropy(tls *libc.TLS, argb uintptr, width int32, height int32, argb // non-zero red and blue values. If all are zero, we can later skip // the cross color optimization. { - var red_histo uintptr = (histo + uintptr((256*int32(*(*uint8_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&kHistoPairs)) + uintptr(*(*EntropyIx)(unsafe.Pointer(min_entropy_ix)))*2))))))*4) - var blue_histo uintptr = (histo + uintptr((256*int32(*(*uint8_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&kHistoPairs)) + uintptr(*(*EntropyIx)(unsafe.Pointer(min_entropy_ix)))*2) + 1)))))*4) + var red_histo uintptr = histo + uintptr(256*int32(*(*uint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&kHistoPairs)) + uintptr(*(*EntropyIx)(unsafe.Pointer(min_entropy_ix)))*2))))*4 + var blue_histo uintptr = histo + uintptr(256*int32(*(*uint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&kHistoPairs)) + uintptr(*(*EntropyIx)(unsafe.Pointer(min_entropy_ix)))*2 + 1))))*4 for i = 1; i < 256; i++ { - if (*(*uint32_t)(unsafe.Pointer(red_histo + uintptr(i)*4)) | *(*uint32_t)(unsafe.Pointer(blue_histo + uintptr(i)*4))) != uint32_t(0) { + if *(*uint32_t)(unsafe.Pointer(red_histo + uintptr(i)*4))|*(*uint32_t)(unsafe.Pointer(blue_histo + uintptr(i)*4)) != uint32_t(0) { *(*int32)(unsafe.Pointer(red_and_blue_always_zero)) = 0 break } @@ -35887,23 +35589,23 @@ func AnalyzeEntropy(tls *libc.TLS, argb uintptr, width int32, height int32, argb } var kHistoPairs = [5][2]uint8_t{ - [2]uint8_t{kHistoRed, kHistoBlue}, - [2]uint8_t{kHistoRedPred, kHistoBluePred}, - [2]uint8_t{kHistoRedSubGreen, kHistoBlueSubGreen}, - [2]uint8_t{kHistoRedPredSubGreen, kHistoBluePredSubGreen}, - [2]uint8_t{kHistoRed, kHistoBlue}, + {kHistoRed, kHistoBlue}, + {kHistoRedPred, kHistoBluePred}, + {kHistoRedSubGreen, kHistoBlueSubGreen}, + {kHistoRedPredSubGreen, kHistoBluePredSubGreen}, + {kHistoRed, kHistoBlue}, } /* vp8l_enc.c:502:30 */ func GetHistoBits(tls *libc.TLS, method int32, use_palette int32, width int32, height int32) int32 { /* vp8l_enc.c:528:12: */ // Make tile size a function of encoding method (Range: 0 to 6). - var histo_bits int32 = ((func() int32 { + var histo_bits int32 = func() int32 { if use_palette != 0 { return 9 } return 7 - }()) - method) + }() - method for 1 != 0 { - var huff_image_size int32 = (int32(VP8LSubSampleSize(tls, uint32(width), uint32(histo_bits)) * VP8LSubSampleSize(tls, uint32(height), uint32(histo_bits)))) + var huff_image_size int32 = int32(VP8LSubSampleSize(tls, uint32(width), uint32(histo_bits)) * VP8LSubSampleSize(tls, uint32(height), uint32(histo_bits))) if huff_image_size <= 2600 { break } @@ -35963,7 +35665,7 @@ func EncoderAnalyze(tls *libc.TLS, enc uintptr, crunch_configs uintptr, crunch_c var height int32 = (*WebPPicture)(unsafe.Pointer(pic)).height var config uintptr = (*VP8LEncoder)(unsafe.Pointer(enc)).config_ var method int32 = (*WebPConfig)(unsafe.Pointer(config)).method - var low_effort int32 = (libc.Bool32((*WebPConfig)(unsafe.Pointer(config)).method == 0)) + var low_effort int32 = libc.Bool32((*WebPConfig)(unsafe.Pointer(config)).method == 0) var i int32 var use_palette int32 var n_lz77s int32 @@ -35972,12 +35674,12 @@ func EncoderAnalyze(tls *libc.TLS, enc uintptr, crunch_configs uintptr, crunch_c var do_no_cache int32 = 0 // Check whether a palette is possible. - (*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_ = WebPGetColorPalette(tls, pic, (enc + 1124 /* &.palette_sorted_ */)) - use_palette = (libc.Bool32((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_ <= 256)) + (*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_ = WebPGetColorPalette(tls, pic, enc+1124) + use_palette = libc.Bool32((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_ <= 256) if !(use_palette != 0) { (*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_ = 0 } else { - libc.Xqsort(tls, (enc + 1124 /* &.palette_sorted_ */), uint64((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_), + libc.Xqsort(tls, enc+1124, uint64((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_), uint64(unsafe.Sizeof(uint32_t(0))), *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) int32 }{PaletteCompareColorsForQsort}))) @@ -36008,34 +35710,34 @@ func EncoderAnalyze(tls *libc.TLS, enc uintptr, crunch_configs uintptr, crunch_c // var min_entropy_ix EntropyIx at bp, 4 // Try out multiple LZ77 on images with few colors. - if ((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_ > 0) && ((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_ <= 16) { + if (*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_ > 0 && (*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_ <= 16 { n_lz77s = 2 } else { n_lz77s = 1 } if !(AnalyzeEntropy(tls, (*WebPPicture)(unsafe.Pointer(pic)).argb, width, height, (*WebPPicture)(unsafe.Pointer(pic)).argb_stride, use_palette, (*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_, (*VP8LEncoder)(unsafe.Pointer(enc)).transform_bits_, - (bp) /* &min_entropy_ix */, red_and_blue_always_zero) != 0) { + bp, red_and_blue_always_zero) != 0) { return 0 } - if (method == 6) && ((*WebPConfig)(unsafe.Pointer(config)).quality == float32(100)) { + if method == 6 && (*WebPConfig)(unsafe.Pointer(config)).quality == float32(100) { do_no_cache = 1 // Go brute force on all transforms. *(*int32)(unsafe.Pointer(crunch_configs_size)) = 0 for i = 0; i < kNumEntropyIx; i++ { // We can only apply kPalette or kPaletteAndSpatial if we can indeed use // a palette. - if ((i != kPalette) && (i != kPaletteAndSpatial)) || (use_palette != 0) { + if i != kPalette && i != kPaletteAndSpatial || use_palette != 0 { - (*CrunchConfig)(unsafe.Pointer(crunch_configs + uintptr((*(*int32)(unsafe.Pointer(crunch_configs_size))))*28)).entropy_idx_ = i - if (use_palette != 0) && ((i == kPalette) || (i == kPaletteAndSpatial)) { - (*CrunchConfig)(unsafe.Pointer(crunch_configs + uintptr((*(*int32)(unsafe.Pointer(crunch_configs_size))))*28)).palette_sorting_type_ = kMinimizeDelta + (*CrunchConfig)(unsafe.Pointer(crunch_configs + uintptr(*(*int32)(unsafe.Pointer(crunch_configs_size)))*28)).entropy_idx_ = i + if use_palette != 0 && (i == kPalette || i == kPaletteAndSpatial) { + (*CrunchConfig)(unsafe.Pointer(crunch_configs + uintptr(*(*int32)(unsafe.Pointer(crunch_configs_size)))*28)).palette_sorting_type_ = kMinimizeDelta *(*int32)(unsafe.Pointer(crunch_configs_size))++ // Also add modified Zeng's method. - (*CrunchConfig)(unsafe.Pointer(crunch_configs + uintptr((*(*int32)(unsafe.Pointer(crunch_configs_size))))*28)).entropy_idx_ = i - (*CrunchConfig)(unsafe.Pointer(crunch_configs + uintptr((*(*int32)(unsafe.Pointer(crunch_configs_size))))*28)).palette_sorting_type_ = kModifiedZeng + (*CrunchConfig)(unsafe.Pointer(crunch_configs + uintptr(*(*int32)(unsafe.Pointer(crunch_configs_size)))*28)).entropy_idx_ = i + (*CrunchConfig)(unsafe.Pointer(crunch_configs + uintptr(*(*int32)(unsafe.Pointer(crunch_configs_size)))*28)).palette_sorting_type_ = kModifiedZeng } else { - (*CrunchConfig)(unsafe.Pointer(crunch_configs + uintptr((*(*int32)(unsafe.Pointer(crunch_configs_size))))*28)).palette_sorting_type_ = kUnusedPalette + (*CrunchConfig)(unsafe.Pointer(crunch_configs + uintptr(*(*int32)(unsafe.Pointer(crunch_configs_size)))*28)).palette_sorting_type_ = kUnusedPalette } *(*int32)(unsafe.Pointer(crunch_configs_size))++ } @@ -36050,11 +35752,11 @@ func EncoderAnalyze(tls *libc.TLS, enc uintptr, crunch_configs uintptr, crunch_c } return kUnusedPalette }() - if ((*WebPConfig)(unsafe.Pointer(config)).quality >= float32(75)) && (method == 5) { + if (*WebPConfig)(unsafe.Pointer(config)).quality >= float32(75) && method == 5 { // Test with and without color cache. do_no_cache = 1 // If we have a palette, also check in combination with spatial. - if *(*EntropyIx)(unsafe.Pointer(bp /* min_entropy_ix */)) == kPalette { + if *(*EntropyIx)(unsafe.Pointer(bp)) == kPalette { *(*int32)(unsafe.Pointer(crunch_configs_size)) = 2 (*CrunchConfig)(unsafe.Pointer(crunch_configs + 1*28)).entropy_idx_ = kPaletteAndSpatial (*CrunchConfig)(unsafe.Pointer(crunch_configs + 1*28)).palette_sorting_type_ = kMinimizeDelta @@ -36068,13 +35770,13 @@ func EncoderAnalyze(tls *libc.TLS, enc uintptr, crunch_configs uintptr, crunch_c var j int32 for j = 0; j < n_lz77s; j++ { - (*CrunchSubConfig)(unsafe.Pointer(((crunch_configs + uintptr(i)*28) + 8 /* &.sub_configs_ */) + uintptr(j)*8)).lz77_ = func() int32 { + (*CrunchSubConfig)(unsafe.Pointer(crunch_configs + uintptr(i)*28 + 8 + uintptr(j)*8)).lz77_ = func() int32 { if j == 0 { - return (kLZ77Standard | kLZ77RLE) + return kLZ77Standard | kLZ77RLE } return kLZ77Box }() - (*CrunchSubConfig)(unsafe.Pointer(((crunch_configs + uintptr(i)*28) + 8 /* &.sub_configs_ */) + uintptr(j)*8)).do_no_cache_ = do_no_cache + (*CrunchSubConfig)(unsafe.Pointer(crunch_configs + uintptr(i)*28 + 8 + uintptr(j)*8)).do_no_cache_ = do_no_cache } (*CrunchConfig)(unsafe.Pointer(crunch_configs + uintptr(i)*28)).sub_configs_size_ = n_lz77s } @@ -36085,17 +35787,17 @@ func EncoderInit(tls *libc.TLS, enc uintptr) int32 { /* vp8l_enc.c:673:12: */ var pic uintptr = (*VP8LEncoder)(unsafe.Pointer(enc)).pic_ var width int32 = (*WebPPicture)(unsafe.Pointer(pic)).width var height int32 = (*WebPPicture)(unsafe.Pointer(pic)).height - var pix_cnt int32 = (width * height) + var pix_cnt int32 = width * height // we round the block size up, so we're guaranteed to have // at most MAX_REFS_BLOCK_PER_IMAGE blocks used: - var refs_block_size int32 = (((pix_cnt - 1) / 16) + 1) + var refs_block_size int32 = (pix_cnt-1)/16 + 1 var i int32 - if !(VP8LHashChainInit(tls, (enc+2312 /* &.hash_chain_ */), pix_cnt) != 0) { + if !(VP8LHashChainInit(tls, enc+2312, pix_cnt) != 0) { return 0 } for i = 0; i < 4; i++ { - VP8LBackwardRefsInit(tls, ((enc + 2152 /* &.refs_ */) + uintptr(i)*40), refs_block_size) + VP8LBackwardRefsInit(tls, enc+2152+uintptr(i)*40, refs_block_size) } return 1 @@ -36122,11 +35824,11 @@ func GetHuffBitLengthsAndCodes(tls *libc.TLS, histogram_image uintptr, huffman_c var histo1 uintptr ok = 0 total_length_size = uint64(0) - mem_buf = (uintptr(0)) + mem_buf = uintptr(0) histogram_image_size = (*VP8LHistogramSet)(unsafe.Pointer(histogram_image)).size max_num_symbols = 0 - buf_rle = (uintptr(0)) - huff_tree = (uintptr(0)) + buf_rle = uintptr(0) + huff_tree = uintptr(0) // Iterate over all histograms and get the aggregate number of codes used. i = 0 @@ -36135,7 +35837,7 @@ __1: goto __3 } histo = *(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(histogram_image)).histograms + uintptr(i)*8)) - codes = (huffman_codes + uintptr((5*i))*24) + codes = huffman_codes + uintptr(5*i)*24 k = 0 __4: @@ -36152,7 +35854,7 @@ __4: } } (*HuffmanTreeCode)(unsafe.Pointer(codes + uintptr(k)*24)).num_symbols = num_symbols - total_length_size = total_length_size + (uint64_t(num_symbols)) + total_length_size = total_length_size + uint64_t(num_symbols) goto __5 __5: k++ @@ -36171,8 +35873,8 @@ __3: // Allocate and Set Huffman codes. mem_buf = WebPSafeCalloc(tls, total_length_size, - (uint64(unsafe.Sizeof(uint8_t(0))) + uint64(unsafe.Sizeof(uint16_t(0))))) - if !(mem_buf == (uintptr(0))) { + uint64(unsafe.Sizeof(uint8_t(0)))+uint64(unsafe.Sizeof(uint16_t(0)))) + if !(mem_buf == uintptr(0)) { goto __7 } goto End @@ -36180,16 +35882,16 @@ __7: ; codes1 = mem_buf - lengths = (codes1 + uintptr(total_length_size)*2) + lengths = codes1 + uintptr(total_length_size)*2 i = 0 __8: - if !(i < (5 * histogram_image_size)) { + if !(i < 5*histogram_image_size) { goto __10 } bit_length = (*HuffmanTreeCode)(unsafe.Pointer(huffman_codes + uintptr(i)*24)).num_symbols (*HuffmanTreeCode)(unsafe.Pointer(huffman_codes + uintptr(i)*24)).codes = codes1 (*HuffmanTreeCode)(unsafe.Pointer(huffman_codes + uintptr(i)*24)).code_lengths = lengths - codes1 += 2 * (uintptr(bit_length)) + codes1 += 2 * uintptr(bit_length) lengths += uintptr(bit_length) if !(max_num_symbols < bit_length) { goto __11 @@ -36206,9 +35908,9 @@ __10: ; buf_rle = WebPSafeMalloc(tls, 1, uint64(max_num_symbols)) - huff_tree = WebPSafeMalloc(tls, (uint64(3 * uint64(max_num_symbols))), + huff_tree = WebPSafeMalloc(tls, uint64(3*uint64(max_num_symbols)), uint64(unsafe.Sizeof(HuffmanTree{}))) - if !((buf_rle == (uintptr(0))) || (huff_tree == (uintptr(0)))) { + if !(buf_rle == uintptr(0) || huff_tree == uintptr(0)) { goto __12 } goto End @@ -36221,13 +35923,13 @@ __13: if !(i < histogram_image_size) { goto __15 } - codes2 = (huffman_codes + uintptr((5*i))*24) + codes2 = huffman_codes + uintptr(5*i)*24 histo1 = *(*uintptr)(unsafe.Pointer((*VP8LHistogramSet)(unsafe.Pointer(histogram_image)).histograms + uintptr(i)*8)) - VP8LCreateHuffmanTree(tls, (*VP8LHistogram)(unsafe.Pointer(histo1)).literal_, 15, buf_rle, huff_tree, (codes2 + uintptr(0)*24)) - VP8LCreateHuffmanTree(tls, (histo1 + 8 /* &.red_ */), 15, buf_rle, huff_tree, (codes2 + uintptr(1)*24)) - VP8LCreateHuffmanTree(tls, (histo1 + 1032 /* &.blue_ */), 15, buf_rle, huff_tree, (codes2 + uintptr(2)*24)) - VP8LCreateHuffmanTree(tls, (histo1 + 2056 /* &.alpha_ */), 15, buf_rle, huff_tree, (codes2 + uintptr(3)*24)) - VP8LCreateHuffmanTree(tls, (histo1 + 3080 /* &.distance_ */), 15, buf_rle, huff_tree, (codes2 + uintptr(4)*24)) + VP8LCreateHuffmanTree(tls, (*VP8LHistogram)(unsafe.Pointer(histo1)).literal_, 15, buf_rle, huff_tree, codes2+uintptr(0)*24) + VP8LCreateHuffmanTree(tls, histo1+8, 15, buf_rle, huff_tree, codes2+uintptr(1)*24) + VP8LCreateHuffmanTree(tls, histo1+1032, 15, buf_rle, huff_tree, codes2+uintptr(2)*24) + VP8LCreateHuffmanTree(tls, histo1+2056, 15, buf_rle, huff_tree, codes2+uintptr(3)*24) + VP8LCreateHuffmanTree(tls, histo1+3080, 15, buf_rle, huff_tree, codes2+uintptr(4)*24) goto __14 __14: i++ @@ -36239,11 +35941,11 @@ __15: End: WebPSafeFree(tls, huff_tree) WebPSafeFree(tls, buf_rle) - if !(!(ok != 0)) { + if !!(ok != 0) { goto __16 } WebPSafeFree(tls, mem_buf) - libc.Xmemset(tls, huffman_codes, 0, ((uint64(5 * histogram_image_size)) * uint64(unsafe.Sizeof(HuffmanTreeCode{})))) + libc.Xmemset(tls, huffman_codes, 0, uint64(5*histogram_image_size)*uint64(unsafe.Sizeof(HuffmanTreeCode{}))) __16: ; return ok @@ -36254,11 +35956,11 @@ func StoreHuffmanTreeOfHuffmanTreeToBitMask(tls *libc.TLS, bw uintptr, code_leng // Throw away trailing zeros: var codes_to_store int32 = 19 for ; codes_to_store > 4; codes_to_store-- { - if int32(*(*uint8_t)(unsafe.Pointer(code_length_bitdepth + uintptr(kStorageOrder[(codes_to_store-1)])))) != 0 { + if int32(*(*uint8_t)(unsafe.Pointer(code_length_bitdepth + uintptr(kStorageOrder[codes_to_store-1])))) != 0 { break } } - VP8LPutBits(tls, bw, (uint32(codes_to_store - 4)), 4) + VP8LPutBits(tls, bw, uint32(codes_to_store-4), 4) for i = 0; i < codes_to_store; i++ { VP8LPutBits(tls, bw, uint32(*(*uint8_t)(unsafe.Pointer(code_length_bitdepth + uintptr(kStorageOrder[i])))), 3) } @@ -36317,8 +36019,8 @@ func StoreFullHuffmanCode(tls *libc.TLS, bw uintptr, huff_tree uintptr, tokens u // var huffman_code HuffmanTreeCode at bp+160, 24 (*HuffmanTreeCode)(unsafe.Pointer(bp + 160 /* &huffman_code */)).num_symbols = 19 - (*HuffmanTreeCode)(unsafe.Pointer(bp + 160 /* &huffman_code */)).code_lengths = (bp) /* &code_length_bitdepth[0] */ - (*HuffmanTreeCode)(unsafe.Pointer(bp + 160 /* &huffman_code */)).codes = (bp + 20) /* &code_length_bitdepth_symbols[0] */ + (*HuffmanTreeCode)(unsafe.Pointer(bp + 160 /* &huffman_code */)).code_lengths = bp /* &code_length_bitdepth[0] */ + (*HuffmanTreeCode)(unsafe.Pointer(bp + 160 /* &huffman_code */)).codes = bp + 20 /* &code_length_bitdepth_symbols[0] */ VP8LPutBits(tls, bw, uint32(0), 1) num_tokens = VP8LCreateCompressedHuffmanTree(tls, tree, tokens, max_tokens) @@ -36327,15 +36029,15 @@ func StoreFullHuffmanCode(tls *libc.TLS, bw uintptr, huff_tree uintptr, tokens u *(*[19]uint8_t)(unsafe.Pointer(bp + 136 /* buf_rle */)) = [19]uint8_t{0: uint8_t(0)} var i int32 for i = 0; i < num_tokens; i++ { - *(*uint32_t)(unsafe.Pointer((bp + 60) /* &histogram[0] */ + uintptr((*HuffmanTreeToken)(unsafe.Pointer(tokens+uintptr(i)*2)).code)*4))++ + *(*uint32_t)(unsafe.Pointer(bp + 60 + uintptr((*HuffmanTreeToken)(unsafe.Pointer(tokens+uintptr(i)*2)).code)*4))++ } - VP8LCreateHuffmanTree(tls, (bp + 60) /* &histogram[0] */, 7, (bp + 136) /* &buf_rle[0] */, huff_tree, (bp + 160) /* &huffman_code */) + VP8LCreateHuffmanTree(tls, bp+60, 7, bp+136, huff_tree, bp+160) } - StoreHuffmanTreeOfHuffmanTreeToBitMask(tls, bw, (bp) /* &code_length_bitdepth[0] */) - ClearHuffmanTreeIfOnlyOneSymbol(tls, (bp + 160) /* &huffman_code */) + StoreHuffmanTreeOfHuffmanTreeToBitMask(tls, bw, bp) + ClearHuffmanTreeIfOnlyOneSymbol(tls, bp+160) { var trailing_zero_bits int32 = 0 var trimmed_length int32 = num_tokens @@ -36344,19 +36046,19 @@ func StoreFullHuffmanCode(tls *libc.TLS, bw uintptr, huff_tree uintptr, tokens u var i int32 = num_tokens for libc.PostDecInt32(&i, 1) > 0 { var ix int32 = int32((*HuffmanTreeToken)(unsafe.Pointer(tokens + uintptr(i)*2)).code) - if ((ix == 0) || (ix == 17)) || (ix == 18) { + if ix == 0 || ix == 17 || ix == 18 { trimmed_length-- // discount trailing zeros - trailing_zero_bits = trailing_zero_bits + (int32(*(*uint8_t)(unsafe.Pointer((bp) /* &code_length_bitdepth[0] */ + uintptr(ix))))) + trailing_zero_bits = trailing_zero_bits + int32(*(*uint8_t)(unsafe.Pointer(bp + uintptr(ix)))) if ix == 17 { - trailing_zero_bits = trailing_zero_bits + (3) + trailing_zero_bits = trailing_zero_bits + 3 } else if ix == 18 { - trailing_zero_bits = trailing_zero_bits + (7) + trailing_zero_bits = trailing_zero_bits + 7 } } else { break } } - write_trimmed_length = (libc.Bool32((trimmed_length > 1) && (trailing_zero_bits > 12))) + write_trimmed_length = libc.Bool32(trimmed_length > 1 && trailing_zero_bits > 12) if write_trimmed_length != 0 { length = trimmed_length } else { @@ -36365,16 +36067,16 @@ func StoreFullHuffmanCode(tls *libc.TLS, bw uintptr, huff_tree uintptr, tokens u VP8LPutBits(tls, bw, uint32(write_trimmed_length), 1) if write_trimmed_length != 0 { if trimmed_length == 2 { - VP8LPutBits(tls, bw, uint32(0), (3 + 2)) // nbitpairs=1, trimmed_length=2 + VP8LPutBits(tls, bw, uint32(0), 3+2) // nbitpairs=1, trimmed_length=2 } else { - var nbits int32 = BitsLog2Floor(tls, (uint32(trimmed_length - 2))) - var nbitpairs int32 = ((nbits / 2) + 1) + var nbits int32 = BitsLog2Floor(tls, uint32(trimmed_length-2)) + var nbitpairs int32 = nbits/2 + 1 - VP8LPutBits(tls, bw, (uint32(nbitpairs - 1)), 3) - VP8LPutBits(tls, bw, (uint32(trimmed_length - 2)), (nbitpairs * 2)) + VP8LPutBits(tls, bw, uint32(nbitpairs-1), 3) + VP8LPutBits(tls, bw, uint32(trimmed_length-2), nbitpairs*2) } } - StoreHuffmanTreeToBitMask(tls, bw, tokens, length, (bp + 160) /* &huffman_code */) + StoreHuffmanTreeToBitMask(tls, bw, tokens, length, bp+160) } } @@ -36388,13 +36090,13 @@ func StoreHuffmanCode(tls *libc.TLS, bw uintptr, huff_tree uintptr, tokens uintp var count int32 = 0 *(*[2]int32)(unsafe.Pointer(bp /* symbols */)) = [2]int32{0, 0} var kMaxBits int32 = 8 - var kMaxSymbol int32 = (int32(1) << kMaxBits) + var kMaxSymbol int32 = int32(1) << kMaxBits // Check whether it's a small tree. - for i = 0; (i < (*HuffmanTreeCode)(unsafe.Pointer(huffman_code)).num_symbols) && (count < 3); i++ { + for i = 0; i < (*HuffmanTreeCode)(unsafe.Pointer(huffman_code)).num_symbols && count < 3; i++ { if int32(*(*uint8_t)(unsafe.Pointer((*HuffmanTreeCode)(unsafe.Pointer(huffman_code)).code_lengths + uintptr(i)))) != 0 { if count < 2 { - *(*int32)(unsafe.Pointer((bp) /* &symbols[0] */ + uintptr(count)*4)) = i + *(*int32)(unsafe.Pointer(bp + uintptr(count)*4)) = i } count++ } @@ -36403,18 +36105,18 @@ func StoreHuffmanCode(tls *libc.TLS, bw uintptr, huff_tree uintptr, tokens uintp if count == 0 { // emit minimal tree for empty cases // bits: small tree marker: 1, count-1: 0, large 8-bit code: 0, code: 0 VP8LPutBits(tls, bw, uint32(0x01), 4) - } else if ((count <= 2) && (*(*int32)(unsafe.Pointer((bp) /* &symbols[0] */)) < kMaxSymbol)) && (*(*int32)(unsafe.Pointer((bp) /* &symbols[0] */ + 1*4)) < kMaxSymbol) { + } else if count <= 2 && *(*int32)(unsafe.Pointer(bp)) < kMaxSymbol && *(*int32)(unsafe.Pointer(bp + 1*4)) < kMaxSymbol { VP8LPutBits(tls, bw, uint32(1), 1) // Small tree marker to encode 1 or 2 symbols. - VP8LPutBits(tls, bw, (uint32(count - 1)), 1) - if *(*int32)(unsafe.Pointer((bp) /* &symbols[0] */)) <= 1 { + VP8LPutBits(tls, bw, uint32(count-1), 1) + if *(*int32)(unsafe.Pointer(bp)) <= 1 { VP8LPutBits(tls, bw, uint32(0), 1) // Code bit for small (1 bit) symbol value. - VP8LPutBits(tls, bw, uint32(*(*int32)(unsafe.Pointer((bp) /* &symbols[0] */))), 1) + VP8LPutBits(tls, bw, uint32(*(*int32)(unsafe.Pointer(bp))), 1) } else { VP8LPutBits(tls, bw, uint32(1), 1) - VP8LPutBits(tls, bw, uint32(*(*int32)(unsafe.Pointer((bp) /* &symbols[0] */))), 8) + VP8LPutBits(tls, bw, uint32(*(*int32)(unsafe.Pointer(bp))), 8) } if count == 2 { - VP8LPutBits(tls, bw, uint32(*(*int32)(unsafe.Pointer((bp) /* &symbols[0] */ + 1*4))), 8) + VP8LPutBits(tls, bw, uint32(*(*int32)(unsafe.Pointer(bp + 1*4))), 8) } } else { StoreFullHuffmanCode(tls, bw, huff_tree, tokens, huffman_code) @@ -36430,7 +36132,7 @@ func WriteHuffmanCode(tls *libc.TLS, bw uintptr, code uintptr, code_index int32) func WriteHuffmanCodeWithExtraBits(tls *libc.TLS, bw uintptr, code uintptr, code_index int32, bits int32, n_bits int32) { /* vp8l_enc.c:941:25: */ var depth int32 = int32(*(*uint8_t)(unsafe.Pointer((*HuffmanTreeCode)(unsafe.Pointer(code)).code_lengths + uintptr(code_index)))) var symbol int32 = int32(*(*uint16_t)(unsafe.Pointer((*HuffmanTreeCode)(unsafe.Pointer(code)).codes + uintptr(code_index)*2))) - VP8LPutBits(tls, bw, (uint32((bits << depth) | symbol)), (depth + n_bits)) + VP8LPutBits(tls, bw, uint32(bits<<depth|symbol), depth+n_bits) } func StoreImageToBitMask(tls *libc.TLS, bw uintptr, width int32, histo_bits int32, refs uintptr, histogram_symbols uintptr, huffman_codes uintptr) WebPEncodingError { /* vp8l_enc.c:952:26: */ @@ -36452,28 +36154,28 @@ func StoreImageToBitMask(tls *libc.TLS, bw uintptr, width int32, histo_bits int3 // x and y trace the position in the image. var x int32 = 0 var y int32 = 0 - var tile_x int32 = (x & tile_mask) - var tile_y int32 = (y & tile_mask) + var tile_x int32 = x & tile_mask + var tile_y int32 = y & tile_mask var histogram_ix int32 = int32(*(*uint16_t)(unsafe.Pointer(histogram_symbols))) - var codes uintptr = (huffman_codes + uintptr((5*histogram_ix))*24) + var codes uintptr = huffman_codes + uintptr(5*histogram_ix)*24 *(*VP8LRefsCursor)(unsafe.Pointer(bp /* c */)) = VP8LRefsCursorInit(tls, refs) - for VP8LRefsCursorOk(tls, (bp) /* &c */) != 0 { + for VP8LRefsCursorOk(tls, bp) != 0 { var v uintptr = (*VP8LRefsCursor)(unsafe.Pointer(bp /* &c */)).cur_pos - if (tile_x != (x & tile_mask)) || (tile_y != (y & tile_mask)) { - tile_x = (x & tile_mask) - tile_y = (y & tile_mask) - histogram_ix = int32(*(*uint16_t)(unsafe.Pointer(histogram_symbols + uintptr((((y>>histo_bits)*histo_xsize)+(x>>histo_bits)))*2))) - codes = (huffman_codes + uintptr((5*histogram_ix))*24) + if tile_x != x&tile_mask || tile_y != y&tile_mask { + tile_x = x & tile_mask + tile_y = y & tile_mask + histogram_ix = int32(*(*uint16_t)(unsafe.Pointer(histogram_symbols + uintptr(y>>histo_bits*histo_xsize+x>>histo_bits)*2))) + codes = huffman_codes + uintptr(5*histogram_ix)*24 } if PixOrCopyIsLiteral(tls, v) != 0 { var k int32 for k = 0; k < 4; k++ { var code int32 = int32(PixOrCopyLiteral(tls, v, int32(order[k]))) - WriteHuffmanCode(tls, bw, (codes + uintptr(k)*24), code) + WriteHuffmanCode(tls, bw, codes+uintptr(k)*24, code) } } else if PixOrCopyIsCacheIdx(tls, v) != 0 { var code int32 = int32(PixOrCopyCacheIdx(tls, v)) - var literal_ix int32 = ((256 + 24) + code) + var literal_ix int32 = 256 + 24 + code WriteHuffmanCode(tls, bw, codes, literal_ix) } else { // var bits int32 at bp+32, 4 @@ -36483,22 +36185,22 @@ func StoreImageToBitMask(tls *libc.TLS, bw uintptr, width int32, histo_bits int3 // var code int32 at bp+24, 4 var distance int32 = int32(PixOrCopyDistance(tls, v)) - VP8LPrefixEncode(tls, int32((*PixOrCopy)(unsafe.Pointer(v)).len), (bp + 24) /* &code */, (bp + 28) /* &n_bits */, (bp + 32) /* &bits */) - WriteHuffmanCodeWithExtraBits(tls, bw, codes, (256 + *(*int32)(unsafe.Pointer(bp + 24 /* code */))), *(*int32)(unsafe.Pointer(bp + 32 /* bits */)), *(*int32)(unsafe.Pointer(bp + 28 /* n_bits */))) + VP8LPrefixEncode(tls, int32((*PixOrCopy)(unsafe.Pointer(v)).len), bp+24, bp+28, bp+32) + WriteHuffmanCodeWithExtraBits(tls, bw, codes, 256+*(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32 /* bits */)), *(*int32)(unsafe.Pointer(bp + 28 /* n_bits */))) // Don't write the distance with the extra bits code since // the distance can be up to 18 bits of extra bits, and the prefix // 15 bits, totaling to 33, and our PutBits only supports up to 32 bits. - VP8LPrefixEncode(tls, distance, (bp + 24) /* &code */, (bp + 28) /* &n_bits */, (bp + 32) /* &bits */) - WriteHuffmanCode(tls, bw, (codes + uintptr(4)*24), *(*int32)(unsafe.Pointer(bp + 24 /* code */))) + VP8LPrefixEncode(tls, distance, bp+24, bp+28, bp+32) + WriteHuffmanCode(tls, bw, codes+uintptr(4)*24, *(*int32)(unsafe.Pointer(bp + 24 /* code */))) VP8LPutBits(tls, bw, uint32(*(*int32)(unsafe.Pointer(bp + 32 /* bits */))), *(*int32)(unsafe.Pointer(bp + 28 /* n_bits */))) } - x = int32(uint32_t(x) + (PixOrCopyLength(tls, v))) + x = int32(uint32_t(x) + PixOrCopyLength(tls, v)) for x >= width { - x = x - (width) + x = x - width y++ } - VP8LRefsCursorNext(tls, (bp) /* &c */) + VP8LRefsCursorNext(tls, bp) } if (*VP8LBitWriter)(unsafe.Pointer(bw)).error_ != 0 { return VP8_ENC_ERROR_OUT_OF_MEMORY @@ -36530,14 +36232,14 @@ func EncodeImageNoHuffman(tls *libc.TLS, bw uintptr, argb uintptr, hash_chain ui var codes1 uintptr max_tokens = 0 err = VP8_ENC_OK - tokens = (uintptr(0)) - *(*[5]HuffmanTreeCode)(unsafe.Pointer(bp + 8 /* huffman_codes */)) = [5]HuffmanTreeCode{0: HuffmanTreeCode{}} + tokens = uintptr(0) + *(*[5]HuffmanTreeCode)(unsafe.Pointer(bp + 8 /* huffman_codes */)) = [5]HuffmanTreeCode{0: {}} *(*[1]uint16_t)(unsafe.Pointer(bp + 128 /* histogram_symbols */)) = [1]uint16_t{uint16_t(0)} *(*int32)(unsafe.Pointer(bp /* cache_bits */)) = 0 - histogram_image = (uintptr(0)) + histogram_image = uintptr(0) huff_tree = WebPSafeMalloc(tls, - (3 * uint64(19)), uint64(unsafe.Sizeof(HuffmanTree{}))) - if !(huff_tree == (uintptr(0))) { + 3*uint64(19), uint64(unsafe.Sizeof(HuffmanTree{}))) + if !(huff_tree == uintptr(0)) { goto __1 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -36546,8 +36248,8 @@ __1: ; // Calculate backward references from ARGB image. - if !(!(VP8LHashChainFill(tls, hash_chain, quality, argb, width, height, - low_effort) != 0)) { + if !!(VP8LHashChainFill(tls, hash_chain, quality, argb, width, height, + low_effort) != 0) { goto __2 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -36555,17 +36257,17 @@ __1: __2: ; err = VP8LGetBackwardReferences(tls, - width, height, argb, quality /*low_effort=*/, 0, (kLZ77Standard | kLZ77RLE), - *(*int32)(unsafe.Pointer(bp /* cache_bits */)) /*do_no_cache=*/, 0, hash_chain, refs_array, (bp) /* &cache_bits */) + width, height, argb, quality /*low_effort=*/, 0, kLZ77Standard|kLZ77RLE, + *(*int32)(unsafe.Pointer(bp /* cache_bits */)) /*do_no_cache=*/, 0, hash_chain, refs_array, bp) if !(err != VP8_ENC_OK) { goto __3 } goto Error __3: ; - refs = (refs_array) + refs = refs_array histogram_image = VP8LAllocateHistogramSet(tls, 1, *(*int32)(unsafe.Pointer(bp /* cache_bits */))) - if !(histogram_image == (uintptr(0))) { + if !(histogram_image == uintptr(0)) { goto __4 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -36579,7 +36281,7 @@ __4: // Create Huffman bit lengths and codes for each histogram image. - if !(!(GetHuffBitLengthsAndCodes(tls, histogram_image, (bp+8) /* &huffman_codes[0] */) != 0)) { + if !!(GetHuffBitLengthsAndCodes(tls, histogram_image, bp+8) != 0) { goto __5 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -36596,7 +36298,7 @@ __6: if !(i < 5) { goto __8 } - codes = ((bp + 8) /* &huffman_codes */ + uintptr(i)*24) + codes = bp + 8 + uintptr(i)*24 if !(max_tokens < (*HuffmanTreeCode)(unsafe.Pointer(codes)).num_symbols) { goto __9 } @@ -36612,7 +36314,7 @@ __8: ; tokens = WebPSafeMalloc(tls, uint64(max_tokens), uint64(unsafe.Sizeof(HuffmanTreeToken{}))) - if !(tokens == (uintptr(0))) { + if !(tokens == uintptr(0)) { goto __10 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -36626,7 +36328,7 @@ __11: if !(i < 5) { goto __13 } - codes1 = ((bp + 8) /* &huffman_codes */ + uintptr(i)*24) + codes1 = bp + 8 + uintptr(i)*24 StoreHuffmanCode(tls, bw, huff_tree, tokens, codes1) ClearHuffmanTreeIfOnlyOneSymbol(tls, codes1) goto __12 @@ -36638,14 +36340,14 @@ __13: ; // Store actual literals. - err = StoreImageToBitMask(tls, bw, width, 0, refs, (bp + 128), /* &histogram_symbols[0] */ - (bp + 8) /* &huffman_codes[0] */) + err = StoreImageToBitMask(tls, bw, width, 0, refs, bp+128, + bp+8) Error: WebPSafeFree(tls, tokens) WebPSafeFree(tls, huff_tree) VP8LFreeHistogramSet(tls, histogram_image) - WebPSafeFree(tls, (*HuffmanTreeCode)(unsafe.Pointer((bp + 8) /* &huffman_codes */)).codes) + WebPSafeFree(tls, (*HuffmanTreeCode)(unsafe.Pointer(bp+8)).codes) return err } @@ -36689,15 +36391,15 @@ func EncodeImageInternal(tls *libc.TLS, bw uintptr, argb uintptr, hash_chain uin var i_cache int32 err = VP8_ENC_ERROR_OUT_OF_MEMORY histogram_image_xysize = - (VP8LSubSampleSize(tls, uint32(width), uint32(histogram_bits)) * VP8LSubSampleSize(tls, uint32(height), uint32(histogram_bits))) - histogram_image = (uintptr(0)) - tmp_histo = (uintptr(0)) + VP8LSubSampleSize(tls, uint32(width), uint32(histogram_bits)) * VP8LSubSampleSize(tls, uint32(height), uint32(histogram_bits)) + histogram_image = uintptr(0) + tmp_histo = uintptr(0) histogram_image_size = 0 bit_array_size = uint64(0) huff_tree = WebPSafeMalloc(tls, - (3 * uint64(19)), uint64(unsafe.Sizeof(HuffmanTree{}))) - tokens = (uintptr(0)) - huffman_codes = (uintptr(0)) + 3*uint64(19), uint64(unsafe.Sizeof(HuffmanTree{}))) + tokens = uintptr(0) + huffman_codes = uintptr(0) histogram_symbols = WebPSafeMalloc(tls, uint64(histogram_image_xysize), uint64(unsafe.Sizeof(uint16_t(0)))) @@ -36705,8 +36407,8 @@ func EncodeImageInternal(tls *libc.TLS, bw uintptr, argb uintptr, hash_chain uin bw_size_best = libc.CplUint64(uint64(0)) // Make sure we can allocate the different objects. - libc.Xmemset(tls, (bp) /* &hash_chain_histogram */, 0, uint64(unsafe.Sizeof(VP8LHashChain{}))) - if !((((huff_tree == (uintptr(0))) || (histogram_symbols == (uintptr(0)))) || !(VP8LHashChainInit(tls, (bp) /* &hash_chain_histogram */, int32(histogram_image_xysize)) != 0)) || !(VP8LHashChainFill(tls, hash_chain, quality, argb, width, height, + libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(VP8LHashChain{}))) + if !(huff_tree == uintptr(0) || histogram_symbols == uintptr(0) || !(VP8LHashChainInit(tls, bp, int32(histogram_image_xysize)) != 0) || !(VP8LHashChainFill(tls, hash_chain, quality, argb, width, height, low_effort) != 0)) { goto __1 } @@ -36729,7 +36431,7 @@ __2: __3: ; // If several iterations will happen, clone into bw_best. - if !(!(VP8LBitWriterInit(tls, (bp+16) /* &bw_best */, uint64(0)) != 0) || ((((*CrunchConfig)(unsafe.Pointer(config)).sub_configs_size_ > 1) || ((*CrunchSubConfig)(unsafe.Pointer((config + 8 /* &.sub_configs_ */))).do_no_cache_ != 0)) && !(VP8LBitWriterClone(tls, bw, (bp+16) /* &bw_best */) != 0))) { + if !(!(VP8LBitWriterInit(tls, bp+16, uint64(0)) != 0) || ((*CrunchConfig)(unsafe.Pointer(config)).sub_configs_size_ > 1 || (*CrunchSubConfig)(unsafe.Pointer(config+8)).do_no_cache_ != 0) && !(VP8LBitWriterClone(tls, bw, bp+16) != 0)) { goto __4 } goto Error @@ -36741,11 +36443,11 @@ __5: goto __7 } sub_config = - ((config + 8 /* &.sub_configs_ */) + uintptr(sub_configs_idx)*8) + config + 8 + uintptr(sub_configs_idx)*8 err = VP8LGetBackwardReferences(tls, width, height, argb, quality, low_effort, (*CrunchSubConfig)(unsafe.Pointer(sub_config)).lz77_, cache_bits_init, (*CrunchSubConfig)(unsafe.Pointer(sub_config)).do_no_cache_, hash_chain, - (refs_array), (bp + 64) /* &cache_bits_best */) + refs_array, bp+64) if !(err != VP8_ENC_OK) { goto __8 } @@ -36755,12 +36457,12 @@ __8: i_cache = 0 __9: - if !(i_cache < (func() int32 { + if !(i_cache < func() int32 { if (*CrunchSubConfig)(unsafe.Pointer(sub_config)).do_no_cache_ != 0 { return 2 } return 1 - }())) { + }()) { goto __11 } if i_cache == 0 { @@ -36770,7 +36472,7 @@ __9: } // Speed-up: no need to study the no-cache case if it was already studied // in i_cache == 0. - if !((i_cache == 1) && (*(*int32)(unsafe.Pointer(bp + 64 /* cache_bits_best */)) == 0)) { + if !(i_cache == 1 && *(*int32)(unsafe.Pointer(bp + 64)) == 0) { goto __12 } goto __11 @@ -36778,12 +36480,12 @@ __12: ; // Reset the bit writer for this iteration. - VP8LBitWriterReset(tls, (bp + 72) /* &bw_init */, bw) + VP8LBitWriterReset(tls, bp+72, bw) // Build histogram image and symbols from backward references. histogram_image = VP8LAllocateHistogramSet(tls, int32(histogram_image_xysize), cache_bits_tmp) tmp_histo = VP8LAllocateHistogram(tls, cache_bits_tmp) - if !(((histogram_image == (uintptr(0))) || (tmp_histo == (uintptr(0)))) || !(VP8LGetHistoImageSymbols(tls, width, height, (refs_array+uintptr(i_cache)*40), + if !(histogram_image == uintptr(0) || tmp_histo == uintptr(0) || !(VP8LGetHistoImageSymbols(tls, width, height, refs_array+uintptr(i_cache)*40, quality, low_effort, histogram_bits, cache_bits_tmp, histogram_image, tmp_histo, histogram_symbols) != 0)) { @@ -36794,13 +36496,13 @@ __13: ; // Create Huffman bit lengths and codes for each histogram image. histogram_image_size = (*VP8LHistogramSet)(unsafe.Pointer(histogram_image)).size - bit_array_size = (size_t(5 * histogram_image_size)) + bit_array_size = size_t(5 * histogram_image_size) huffman_codes = WebPSafeCalloc(tls, bit_array_size, uint64(unsafe.Sizeof(HuffmanTreeCode{}))) // Note: some histogram_image entries may point to tmp_histos[], so the // latter need to outlive the following call to // GetHuffBitLengthsAndCodes(). - if !((huffman_codes == (uintptr(0))) || !(GetHuffBitLengthsAndCodes(tls, histogram_image, huffman_codes) != 0)) { + if !(huffman_codes == uintptr(0) || !(GetHuffBitLengthsAndCodes(tls, histogram_image, huffman_codes) != 0)) { goto __14 } goto Error @@ -36808,11 +36510,11 @@ __14: ; // Free combined histograms. VP8LFreeHistogramSet(tls, histogram_image) - histogram_image = (uintptr(0)) + histogram_image = uintptr(0) // Free scratch histograms. VP8LFreeHistogram(tls, tmp_histo) - tmp_histo = (uintptr(0)) + tmp_histo = uintptr(0) // Color Cache parameters. if !(cache_bits_tmp > 0) { @@ -36827,7 +36529,7 @@ __16: ; // Huffman image + meta huffman. - write_histogram_image = (libc.Bool32(histogram_image_size > 1)) + write_histogram_image = libc.Bool32(histogram_image_size > 1) VP8LPutBits(tls, bw, uint32(write_histogram_image), 1) if !(write_histogram_image != 0) { goto __17 @@ -36836,7 +36538,7 @@ __16: WebPSafeMalloc(tls, uint64(histogram_image_xysize), uint64(unsafe.Sizeof(uint32_t(0)))) max_index = 0 - if !(histogram_argb == (uintptr(0))) { + if !(histogram_argb == uintptr(0)) { goto __18 } goto Error @@ -36847,12 +36549,12 @@ __19: if !(i < histogram_image_xysize) { goto __21 } - symbol_index = (int32(*(*uint16_t)(unsafe.Pointer(histogram_symbols + uintptr(i)*2))) & 0xffff) - *(*uint32_t)(unsafe.Pointer(histogram_argb + uintptr(i)*4)) = (uint32_t(symbol_index << 8)) + symbol_index = int32(*(*uint16_t)(unsafe.Pointer(histogram_symbols + uintptr(i)*2))) & 0xffff + *(*uint32_t)(unsafe.Pointer(histogram_argb + uintptr(i)*4)) = uint32_t(symbol_index << 8) if !(symbol_index >= max_index) { goto __22 } - max_index = (symbol_index + 1) + max_index = symbol_index + 1 __22: ; goto __20 @@ -36864,9 +36566,9 @@ __21: ; histogram_image_size = max_index - VP8LPutBits(tls, bw, (uint32(histogram_bits - 2)), 3) + VP8LPutBits(tls, bw, uint32(histogram_bits-2), 3) err = EncodeImageNoHuffman(tls, - bw, histogram_argb, (bp) /* &hash_chain_histogram */, (refs_array + 2*40), + bw, histogram_argb, bp, refs_array+2*40, int32(VP8LSubSampleSize(tls, uint32(width), uint32(histogram_bits))), int32(VP8LSubSampleSize(tls, uint32(height), uint32(histogram_bits))), quality, low_effort) WebPSafeFree(tls, histogram_argb) @@ -36885,10 +36587,10 @@ __17: // Find maximum number of symbols for the huffman tree-set. i1 = 0 __24: - if !(i1 < (5 * histogram_image_size)) { + if !(i1 < 5*histogram_image_size) { goto __26 } - codes = (huffman_codes + uintptr(i1)*24) + codes = huffman_codes + uintptr(i1)*24 if !(max_tokens < (*HuffmanTreeCode)(unsafe.Pointer(codes)).num_symbols) { goto __27 } @@ -36903,7 +36605,7 @@ __25: __26: ; tokens = WebPSafeMalloc(tls, uint64(max_tokens), uint64(unsafe.Sizeof(HuffmanTreeToken{}))) - if !(tokens == (uintptr(0))) { + if !(tokens == uintptr(0)) { goto __28 } goto Error @@ -36911,10 +36613,10 @@ __28: ; i1 = 0 __29: - if !(i1 < (5 * histogram_image_size)) { + if !(i1 < 5*histogram_image_size) { goto __31 } - codes1 = (huffman_codes + uintptr(i1)*24) + codes1 = huffman_codes + uintptr(i1)*24 StoreHuffmanCode(tls, bw, huff_tree, tokens, codes1) ClearHuffmanTreeIfOnlyOneSymbol(tls, codes1) goto __30 @@ -36926,8 +36628,8 @@ __31: ; // Store actual literals. - hdr_size_tmp = (int32(VP8LBitWriterNumBytes(tls, bw) - init_byte_position)) - err = StoreImageToBitMask(tls, bw, width, histogram_bits, (refs_array + uintptr(i_cache)*40), + hdr_size_tmp = int32(VP8LBitWriterNumBytes(tls, bw) - init_byte_position) + err = StoreImageToBitMask(tls, bw, width, histogram_bits, refs_array+uintptr(i_cache)*40, histogram_symbols, huffman_codes) if !(err != VP8_ENC_OK) { goto __32 @@ -36942,18 +36644,18 @@ __32: bw_size_best = VP8LBitWriterNumBytes(tls, bw) *(*int32)(unsafe.Pointer(cache_bits)) = cache_bits_tmp *(*int32)(unsafe.Pointer(hdr_size)) = hdr_size_tmp - *(*int32)(unsafe.Pointer(data_size)) = (int32((VP8LBitWriterNumBytes(tls, bw) - init_byte_position) - size_t(*(*int32)(unsafe.Pointer(hdr_size))))) - VP8LBitWriterSwap(tls, bw, (bp + 16) /* &bw_best */) + *(*int32)(unsafe.Pointer(data_size)) = int32(VP8LBitWriterNumBytes(tls, bw) - init_byte_position - size_t(*(*int32)(unsafe.Pointer(hdr_size)))) + VP8LBitWriterSwap(tls, bw, bp+16) __33: ; WebPSafeFree(tls, tokens) - tokens = (uintptr(0)) - if !(huffman_codes != (uintptr(0))) { + tokens = uintptr(0) + if !(huffman_codes != uintptr(0)) { goto __34 } WebPSafeFree(tls, (*HuffmanTreeCode)(unsafe.Pointer(huffman_codes)).codes) WebPSafeFree(tls, huffman_codes) - huffman_codes = (uintptr(0)) + huffman_codes = uintptr(0) __34: ; goto __10 @@ -36970,7 +36672,7 @@ __6: goto __7 __7: ; - VP8LBitWriterSwap(tls, bw, (bp + 16) /* &bw_best */) + VP8LBitWriterSwap(tls, bw, bp+16) err = VP8_ENC_OK Error: @@ -36978,8 +36680,8 @@ Error: WebPSafeFree(tls, huff_tree) VP8LFreeHistogramSet(tls, histogram_image) VP8LFreeHistogram(tls, tmp_histo) - VP8LHashChainClear(tls, (bp) /* &hash_chain_histogram */) - if !(huffman_codes != (uintptr(0))) { + VP8LHashChainClear(tls, bp) + if !(huffman_codes != uintptr(0)) { goto __35 } WebPSafeFree(tls, (*HuffmanTreeCode)(unsafe.Pointer(huffman_codes)).codes) @@ -36987,7 +36689,7 @@ Error: __35: ; WebPSafeFree(tls, histogram_symbols) - VP8LBitWriterWipeOut(tls, (bp + 16) /* &bw_best */) + VP8LBitWriterWipeOut(tls, bp+16) return err } @@ -36999,7 +36701,7 @@ func ApplySubtractGreen(tls *libc.TLS, enc uintptr, width int32, height int32, b VP8LPutBits(tls, bw, SUBTRACT_GREEN, 2) (*struct { f func(*libc.TLS, uintptr, int32) - })(unsafe.Pointer(&struct{ uintptr }{VP8LSubtractGreenFromBlueAndRed})).f(tls, (*VP8LEncoder)(unsafe.Pointer(enc)).argb_, (width * height)) + })(unsafe.Pointer(&struct{ uintptr }{VP8LSubtractGreenFromBlueAndRed})).f(tls, (*VP8LEncoder)(unsafe.Pointer(enc)).argb_, width*height) } func ApplyPredictFilter(tls *libc.TLS, enc uintptr, width int32, height int32, quality int32, low_effort int32, used_subtract_green int32, bw uintptr) WebPEncodingError { /* vp8l_enc.c:1308:26: */ @@ -37021,10 +36723,10 @@ func ApplyPredictFilter(tls *libc.TLS, enc uintptr, width int32, height int32, q VP8LPutBits(tls, bw, uint32(1), 1) VP8LPutBits(tls, bw, PREDICTOR_TRANSFORM, 2) - VP8LPutBits(tls, bw, (uint32(pred_bits - 2)), 3) + VP8LPutBits(tls, bw, uint32(pred_bits-2), 3) return EncodeImageNoHuffman(tls, - bw, (*VP8LEncoder)(unsafe.Pointer(enc)).transform_data_, (enc + 2312 /* &.hash_chain_ */), - (enc + 2152 /* &.refs_ */), transform_width, transform_height, + bw, (*VP8LEncoder)(unsafe.Pointer(enc)).transform_data_, enc+2312, + enc+2152, transform_width, transform_height, quality, low_effort) } @@ -37038,10 +36740,10 @@ func ApplyCrossColorFilter(tls *libc.TLS, enc uintptr, width int32, height int32 VP8LPutBits(tls, bw, uint32(1), 1) VP8LPutBits(tls, bw, CROSS_COLOR_TRANSFORM, 2) - VP8LPutBits(tls, bw, (uint32(ccolor_transform_bits - 2)), 3) + VP8LPutBits(tls, bw, uint32(ccolor_transform_bits-2), 3) return EncodeImageNoHuffman(tls, - bw, (*VP8LEncoder)(unsafe.Pointer(enc)).transform_data_, (enc + 2312 /* &.hash_chain_ */), - (enc + 2152 /* &.refs_ */), transform_width, transform_height, + bw, (*VP8LEncoder)(unsafe.Pointer(enc)).transform_data_, enc+2312, + enc+2152, transform_width, transform_height, quality, low_effort) } @@ -37055,19 +36757,19 @@ func WriteRiffHeader(tls *libc.TLS, pic uintptr, riff_size size_t, vp8l_size siz uint8_t('R'), uint8_t('I'), uint8_t('F'), uint8_t('F'), uint8_t(0), uint8_t(0), uint8_t(0), uint8_t(0), uint8_t('W'), uint8_t('E'), uint8_t('B'), uint8_t('P'), uint8_t('V'), uint8_t('P'), uint8_t('8'), uint8_t('L'), uint8_t(0), uint8_t(0), uint8_t(0), uint8_t(0), uint8_t(0x2f), } - PutLE32(tls, ((bp) /* &riff[0] */ + uintptr(4)), uint32_t(riff_size)) - PutLE32(tls, (((bp) /* &riff[0] */ + uintptr(12)) + uintptr(4)), uint32_t(vp8l_size)) + PutLE32(tls, bp+uintptr(4), uint32_t(riff_size)) + PutLE32(tls, bp+uintptr(12)+uintptr(4), uint32_t(vp8l_size)) if !((*struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, (bp) /* &riff[0] */, uint64(unsafe.Sizeof([21]uint8_t{})), pic) != 0) { + })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, bp, uint64(unsafe.Sizeof([21]uint8_t{})), pic) != 0) { return VP8_ENC_ERROR_BAD_WRITE } return VP8_ENC_OK } func WriteImageSize(tls *libc.TLS, pic uintptr, bw uintptr) int32 { /* vp8l_enc.c:1370:12: */ - var width int32 = ((*WebPPicture)(unsafe.Pointer(pic)).width - 1) - var height int32 = ((*WebPPicture)(unsafe.Pointer(pic)).height - 1) + var width int32 = (*WebPPicture)(unsafe.Pointer(pic)).width - 1 + var height int32 = (*WebPPicture)(unsafe.Pointer(pic)).height - 1 VP8LPutBits(tls, bw, uint32(width), 14) VP8LPutBits(tls, bw, uint32(height), 14) @@ -37094,9 +36796,9 @@ func WriteImage(tls *libc.TLS, pic uintptr, bw uintptr, coded_size uintptr) WebP err = VP8_ENC_OK webpll_data = VP8LBitWriterFinish(tls, bw) webpll_size = VP8LBitWriterNumBytes(tls, bw) - vp8l_size = (uint64(1) + webpll_size) - pad = (vp8l_size & uint64(1)) - riff_size = (((uint64(4 + 8)) + vp8l_size) + pad) + vp8l_size = uint64(1) + webpll_size + pad = vp8l_size & uint64(1) + riff_size = uint64(4+8) + vp8l_size + pad err = WriteRiffHeader(tls, pic, riff_size, vp8l_size) if !(err != VP8_ENC_OK) { @@ -37106,9 +36808,9 @@ func WriteImage(tls *libc.TLS, pic uintptr, bw uintptr, coded_size uintptr) WebP __1: ; - if !(!((*struct { + if !!((*struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, webpll_data, webpll_size, pic) != 0)) { + })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, webpll_data, webpll_size, pic) != 0) { goto __2 } err = VP8_ENC_ERROR_BAD_WRITE @@ -37120,9 +36822,9 @@ __2: goto __3 } *(*[1]uint8_t)(unsafe.Pointer(bp /* pad_byte */)) = [1]uint8_t{uint8_t(0)} - if !(!((*struct { + if !!((*struct { f func(*libc.TLS, uintptr, size_t, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, (bp) /* &pad_byte[0] */, uint64(1), pic) != 0)) { + })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).writer})).f(tls, bp, uint64(1), pic) != 0) { goto __4 } err = VP8_ENC_ERROR_BAD_WRITE @@ -37131,7 +36833,7 @@ __4: ; __3: ; - *(*size_t)(unsafe.Pointer(coded_size)) = (uint64(8) + riff_size) + *(*size_t)(unsafe.Pointer(coded_size)) = uint64(8) + riff_size return VP8_ENC_OK Error: @@ -37142,7 +36844,7 @@ Error: func ClearTransformBuffer(tls *libc.TLS, enc uintptr) { /* vp8l_enc.c:1421:13: */ WebPSafeFree(tls, (*VP8LEncoder)(unsafe.Pointer(enc)).transform_mem_) - (*VP8LEncoder)(unsafe.Pointer(enc)).transform_mem_ = (uintptr(0)) + (*VP8LEncoder)(unsafe.Pointer(enc)).transform_mem_ = uintptr(0) (*VP8LEncoder)(unsafe.Pointer(enc)).transform_mem_size_ = uint64(0) } @@ -37163,28 +36865,28 @@ func AllocateTransformBuffer(tls *libc.TLS, enc uintptr, width int32, height int var mem_size uint64_t var mem uintptr err = VP8_ENC_OK - image_size = (uint64_t(width * height)) + image_size = uint64_t(width * height) if (*VP8LEncoder)(unsafe.Pointer(enc)).use_predict_ != 0 { - argb_scratch_size = ((uint64((width + 1) * 2)) + ((((uint64(width * 2)) + uint64(unsafe.Sizeof(uint32_t(0)))) - uint64(1)) / uint64(unsafe.Sizeof(uint32_t(0))))) + argb_scratch_size = uint64((width+1)*2) + (uint64(width*2)+uint64(unsafe.Sizeof(uint32_t(0)))-uint64(1))/uint64(unsafe.Sizeof(uint32_t(0))) } else { argb_scratch_size = uint64(0) } - if ((*VP8LEncoder)(unsafe.Pointer(enc)).use_predict_ != 0) || ((*VP8LEncoder)(unsafe.Pointer(enc)).use_cross_color_ != 0) { - transform_data_size = (uint64(VP8LSubSampleSize(tls, uint32(width), uint32((*VP8LEncoder)(unsafe.Pointer(enc)).transform_bits_)) * VP8LSubSampleSize(tls, uint32(height), uint32((*VP8LEncoder)(unsafe.Pointer(enc)).transform_bits_)))) + if (*VP8LEncoder)(unsafe.Pointer(enc)).use_predict_ != 0 || (*VP8LEncoder)(unsafe.Pointer(enc)).use_cross_color_ != 0 { + transform_data_size = uint64(VP8LSubSampleSize(tls, uint32(width), uint32((*VP8LEncoder)(unsafe.Pointer(enc)).transform_bits_)) * VP8LSubSampleSize(tls, uint32(height), uint32((*VP8LEncoder)(unsafe.Pointer(enc)).transform_bits_))) } else { transform_data_size = uint64(0) } max_alignment_in_words = - (((uint64(31) + uint64(unsafe.Sizeof(uint32_t(0)))) - uint64(1)) / uint64(unsafe.Sizeof(uint32_t(0)))) + (uint64(31) + uint64(unsafe.Sizeof(uint32_t(0))) - uint64(1)) / uint64(unsafe.Sizeof(uint32_t(0))) mem_size = - ((((image_size + max_alignment_in_words) + argb_scratch_size) + max_alignment_in_words) + transform_data_size) + image_size + max_alignment_in_words + argb_scratch_size + max_alignment_in_words + transform_data_size mem = (*VP8LEncoder)(unsafe.Pointer(enc)).transform_mem_ - if !((mem == (uintptr(0))) || (mem_size > (*VP8LEncoder)(unsafe.Pointer(enc)).transform_mem_size_)) { + if !(mem == uintptr(0) || mem_size > (*VP8LEncoder)(unsafe.Pointer(enc)).transform_mem_size_) { goto __1 } ClearTransformBuffer(tls, enc) mem = WebPSafeMalloc(tls, mem_size, uint64(unsafe.Sizeof(uint32_t(0)))) - if !(mem == (uintptr(0))) { + if !(mem == uintptr(0)) { goto __2 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -37197,9 +36899,9 @@ __2: __1: ; (*VP8LEncoder)(unsafe.Pointer(enc)).argb_ = mem - mem = (uintptr((uintptr_t((mem + uintptr(image_size)*4)) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) + mem = uintptr((uintptr_t(mem+uintptr(image_size)*4) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) (*VP8LEncoder)(unsafe.Pointer(enc)).argb_scratch_ = mem - mem = (uintptr((uintptr_t((mem + uintptr(argb_scratch_size)*4)) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) + mem = uintptr((uintptr_t(mem+uintptr(argb_scratch_size)*4) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) (*VP8LEncoder)(unsafe.Pointer(enc)).transform_data_ = mem (*VP8LEncoder)(unsafe.Pointer(enc)).current_width_ = width @@ -37226,9 +36928,9 @@ func MakeInputImageCopy(tls *libc.TLS, enc uintptr) WebPEncodingError { /* vp8l_ var src uintptr = (*WebPPicture)(unsafe.Pointer(picture)).argb var y int32 for y = 0; y < height; y++ { - libc.Xmemcpy(tls, dst, src, (uint64(width) * uint64(unsafe.Sizeof(uint32_t(0))))) - dst += 4 * (uintptr(width)) - src += 4 * (uintptr((*WebPPicture)(unsafe.Pointer(picture)).argb_stride)) + libc.Xmemcpy(tls, dst, src, uint64(width)*uint64(unsafe.Sizeof(uint32_t(0)))) + dst += 4 * uintptr(width) + src += 4 * uintptr((*WebPPicture)(unsafe.Pointer(picture)).argb_stride) } } @@ -37256,17 +36958,17 @@ func SearchColorGreedy(tls *libc.TLS, palette uintptr, palette_size int32, color func ApplyPaletteHash0(tls *libc.TLS, color uint32_t) uint32_t { /* vp8l_enc.c:1519:29: */ // Focus on the green color. - return ((color >> 8) & uint32_t(0xff)) + return color >> 8 & uint32_t(0xff) } func ApplyPaletteHash1(tls *libc.TLS, color uint32_t) uint32_t { /* vp8l_enc.c:1527:29: */ // Forget about alpha. - return ((uint32_t((uint64(color & 0x00ffffff)) * 4222244071)) >> (32 - 11)) + return uint32_t(uint64(color&0x00ffffff)*4222244071) >> (32 - 11) } func ApplyPaletteHash2(tls *libc.TLS, color uint32_t) uint32_t { /* vp8l_enc.c:1533:29: */ // Forget about alpha. - return ((uint32_t((uint64(color & 0x00ffffff)) * ((uint64(1) << 31) - uint64(1)))) >> (32 - 11)) + return uint32_t(uint64(color&0x00ffffff)*(uint64(1)<<31-uint64(1))) >> (32 - 11) } // Use 1 pixel cache for ARGB pixels. @@ -37285,12 +36987,12 @@ func ApplyPalette(tls *libc.TLS, src uintptr, src_stride uint32_t, dst uintptr, var x int32 var y int32 - if tmp_row == (uintptr(0)) { + if tmp_row == uintptr(0) { return VP8_ENC_ERROR_OUT_OF_MEMORY } if palette_size < 4 { - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { var prev_pix uint32_t = *(*uint32_t)(unsafe.Pointer(palette)) var prev_idx uint32_t = uint32_t(0) for y = 0; y < height; y++ { @@ -37305,8 +37007,8 @@ func ApplyPalette(tls *libc.TLS, src uintptr, src_stride uint32_t, dst uintptr, (*struct { f func(*libc.TLS, uintptr, int32, int32, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8LBundleColorMap})).f(tls, tmp_row, width, xbits, dst) - src += 4 * (uintptr(src_stride)) - dst += 4 * (uintptr(dst_stride)) + src += 4 * uintptr(src_stride) + dst += 4 * uintptr(dst_stride) } } } else { @@ -37330,16 +37032,16 @@ func ApplyPalette(tls *libc.TLS, src uintptr, src_stride uint32_t, dst uintptr, for i = 0; i < 3; i++ { var use_LUT int32 = 1 // Set each element in buffer to max uint16_t. - libc.Xmemset(tls, (bp) /* &buffer[0] */, 0xff, uint64(unsafe.Sizeof([2048]uint16_t{}))) + libc.Xmemset(tls, bp, 0xff, uint64(unsafe.Sizeof([2048]uint16_t{}))) for j = 0; j < palette_size; j++ { var ind uint32_t = (*struct { f func(*libc.TLS, uint32_t) uint32_t - })(unsafe.Pointer(&struct{ uintptr }{*(*uintptr)(unsafe.Pointer((bp + 4096) /* &hash_functions[0] */ + uintptr(i)*8))})).f(tls, *(*uint32_t)(unsafe.Pointer(palette + uintptr(j)*4))) - if uint32(*(*uint16_t)(unsafe.Pointer((bp) /* &buffer[0] */ + uintptr(ind)*2))) != 0xffff { + })(unsafe.Pointer(&struct{ uintptr }{*(*uintptr)(unsafe.Pointer(bp + 4096 /* &hash_functions[0] */ + uintptr(i)*8))})).f(tls, *(*uint32_t)(unsafe.Pointer(palette + uintptr(j)*4))) + if uint32(*(*uint16_t)(unsafe.Pointer(bp + uintptr(ind)*2))) != 0xffff { use_LUT = 0 break } else { - *(*uint16_t)(unsafe.Pointer((bp) /* &buffer[0] */ + uintptr(ind)*2)) = uint16_t(j) + *(*uint16_t)(unsafe.Pointer(bp + uintptr(ind)*2)) = uint16_t(j) } } if use_LUT != 0 { @@ -37348,14 +37050,14 @@ func ApplyPalette(tls *libc.TLS, src uintptr, src_stride uint32_t, dst uintptr, } if i == 0 { - for ok1 := true; ok1; ok1 = (0 != 0) { + for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 { var prev_pix uint32_t = *(*uint32_t)(unsafe.Pointer(palette)) var prev_idx uint32_t = uint32_t(0) for y = 0; y < height; y++ { for x = 0; x < width; x++ { var pix uint32_t = *(*uint32_t)(unsafe.Pointer(src + uintptr(x)*4)) if pix != prev_pix { - prev_idx = uint32_t(*(*uint16_t)(unsafe.Pointer((bp) /* &buffer[0] */ + uintptr(ApplyPaletteHash0(tls, pix))*2))) + prev_idx = uint32_t(*(*uint16_t)(unsafe.Pointer(bp + uintptr(ApplyPaletteHash0(tls, pix))*2))) prev_pix = pix } *(*uint8_t)(unsafe.Pointer(tmp_row + uintptr(x))) = uint8_t(prev_idx) @@ -37363,19 +37065,19 @@ func ApplyPalette(tls *libc.TLS, src uintptr, src_stride uint32_t, dst uintptr, (*struct { f func(*libc.TLS, uintptr, int32, int32, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8LBundleColorMap})).f(tls, tmp_row, width, xbits, dst) - src += 4 * (uintptr(src_stride)) - dst += 4 * (uintptr(dst_stride)) + src += 4 * uintptr(src_stride) + dst += 4 * uintptr(dst_stride) } } } else if i == 1 { - for ok2 := true; ok2; ok2 = (0 != 0) { + for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 { var prev_pix uint32_t = *(*uint32_t)(unsafe.Pointer(palette)) var prev_idx uint32_t = uint32_t(0) for y = 0; y < height; y++ { for x = 0; x < width; x++ { var pix uint32_t = *(*uint32_t)(unsafe.Pointer(src + uintptr(x)*4)) if pix != prev_pix { - prev_idx = uint32_t(*(*uint16_t)(unsafe.Pointer((bp) /* &buffer[0] */ + uintptr(ApplyPaletteHash1(tls, pix))*2))) + prev_idx = uint32_t(*(*uint16_t)(unsafe.Pointer(bp + uintptr(ApplyPaletteHash1(tls, pix))*2))) prev_pix = pix } *(*uint8_t)(unsafe.Pointer(tmp_row + uintptr(x))) = uint8_t(prev_idx) @@ -37383,19 +37085,19 @@ func ApplyPalette(tls *libc.TLS, src uintptr, src_stride uint32_t, dst uintptr, (*struct { f func(*libc.TLS, uintptr, int32, int32, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8LBundleColorMap})).f(tls, tmp_row, width, xbits, dst) - src += 4 * (uintptr(src_stride)) - dst += 4 * (uintptr(dst_stride)) + src += 4 * uintptr(src_stride) + dst += 4 * uintptr(dst_stride) } } } else if i == 2 { - for ok3 := true; ok3; ok3 = (0 != 0) { + for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 { var prev_pix uint32_t = *(*uint32_t)(unsafe.Pointer(palette)) var prev_idx uint32_t = uint32_t(0) for y = 0; y < height; y++ { for x = 0; x < width; x++ { var pix uint32_t = *(*uint32_t)(unsafe.Pointer(src + uintptr(x)*4)) if pix != prev_pix { - prev_idx = uint32_t(*(*uint16_t)(unsafe.Pointer((bp) /* &buffer[0] */ + uintptr(ApplyPaletteHash2(tls, pix))*2))) + prev_idx = uint32_t(*(*uint16_t)(unsafe.Pointer(bp + uintptr(ApplyPaletteHash2(tls, pix))*2))) prev_pix = pix } *(*uint8_t)(unsafe.Pointer(tmp_row + uintptr(x))) = uint8_t(prev_idx) @@ -37403,8 +37105,8 @@ func ApplyPalette(tls *libc.TLS, src uintptr, src_stride uint32_t, dst uintptr, (*struct { f func(*libc.TLS, uintptr, int32, int32, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8LBundleColorMap})).f(tls, tmp_row, width, xbits, dst) - src += 4 * (uintptr(src_stride)) - dst += 4 * (uintptr(dst_stride)) + src += 4 * uintptr(src_stride) + dst += 4 * uintptr(dst_stride) } } } else { @@ -37412,15 +37114,15 @@ func ApplyPalette(tls *libc.TLS, src uintptr, src_stride uint32_t, dst uintptr, // var palette_sorted [256]uint32_t at bp+4120, 1024 - PrepareMapToPalette(tls, palette, uint32(palette_size), (bp + 4120) /* &palette_sorted[0] */, (bp + 5144) /* &idx_map[0] */) - for ok4 := true; ok4; ok4 = (0 != 0) { + PrepareMapToPalette(tls, palette, uint32(palette_size), bp+4120, bp+5144) + for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 { var prev_pix uint32_t = *(*uint32_t)(unsafe.Pointer(palette)) var prev_idx uint32_t = uint32_t(0) for y = 0; y < height; y++ { for x = 0; x < width; x++ { var pix uint32_t = *(*uint32_t)(unsafe.Pointer(src + uintptr(x)*4)) if pix != prev_pix { - prev_idx = *(*uint32_t)(unsafe.Pointer((bp + 5144) /* &idx_map[0] */ + uintptr(SearchColorNoIdx(tls, (bp+4120) /* &palette_sorted[0] */, pix, palette_size))*4)) + prev_idx = *(*uint32_t)(unsafe.Pointer(bp + 5144 + uintptr(SearchColorNoIdx(tls, bp+4120, pix, palette_size))*4)) prev_pix = pix } *(*uint8_t)(unsafe.Pointer(tmp_row + uintptr(x))) = uint8_t(prev_idx) @@ -37428,8 +37130,8 @@ func ApplyPalette(tls *libc.TLS, src uintptr, src_stride uint32_t, dst uintptr, (*struct { f func(*libc.TLS, uintptr, int32, int32, uintptr) })(unsafe.Pointer(&struct{ uintptr }{VP8LBundleColorMap})).f(tls, tmp_row, width, xbits, dst) - src += 4 * (uintptr(src_stride)) - dst += 4 * (uintptr(dst_stride)) + src += 4 * uintptr(src_stride) + dst += 4 * uintptr(dst_stride) } } } @@ -37501,13 +37203,13 @@ func EncodePalette(tls *libc.TLS, bw uintptr, low_effort int32, enc uintptr) Web VP8LPutBits(tls, bw, uint32(1), 1) VP8LPutBits(tls, bw, COLOR_INDEXING_TRANSFORM, 2) - VP8LPutBits(tls, bw, (uint32(palette_size - 1)), 8) - for i = (palette_size - 1); i >= 1; i-- { - *(*uint32_t)(unsafe.Pointer((bp) /* &tmp_palette[0] */ + uintptr(i)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(palette + uintptr(i)*4)), *(*uint32_t)(unsafe.Pointer(palette + uintptr((i-1))*4))) + VP8LPutBits(tls, bw, uint32(palette_size-1), 8) + for i = palette_size - 1; i >= 1; i-- { + *(*uint32_t)(unsafe.Pointer(bp + uintptr(i)*4)) = VP8LSubPixels(tls, *(*uint32_t)(unsafe.Pointer(palette + uintptr(i)*4)), *(*uint32_t)(unsafe.Pointer(palette + uintptr(i-1)*4))) } - *(*uint32_t)(unsafe.Pointer((bp) /* &tmp_palette[0] */)) = *(*uint32_t)(unsafe.Pointer(palette)) - return EncodeImageNoHuffman(tls, bw, (bp) /* &tmp_palette[0] */, (enc + 2312 /* &.hash_chain_ */), - (enc + 2152 /* &.refs_ */), palette_size, 1 /*quality=*/, 20, + *(*uint32_t)(unsafe.Pointer(bp)) = *(*uint32_t)(unsafe.Pointer(palette)) + return EncodeImageNoHuffman(tls, bw, bp, enc+2312, + enc+2152, palette_size, 1 /*quality=*/, 20, low_effort) } @@ -37516,9 +37218,9 @@ func EncodePalette(tls *libc.TLS, bw uintptr, low_effort int32, enc uintptr) Web func VP8LEncoderNew(tls *libc.TLS, config uintptr, picture uintptr) uintptr { /* vp8l_enc.c:1677:19: */ var enc uintptr = WebPSafeCalloc(tls, 1, uint64(unsafe.Sizeof(VP8LEncoder{}))) - if enc == (uintptr(0)) { + if enc == uintptr(0) { WebPEncodingSetError(tls, picture, VP8_ENC_ERROR_OUT_OF_MEMORY) - return (uintptr(0)) + return uintptr(0) } (*VP8LEncoder)(unsafe.Pointer(enc)).config_ = config (*VP8LEncoder)(unsafe.Pointer(enc)).pic_ = picture @@ -37530,11 +37232,11 @@ func VP8LEncoderNew(tls *libc.TLS, config uintptr, picture uintptr) uintptr { /* } func VP8LEncoderDelete(tls *libc.TLS, enc uintptr) { /* vp8l_enc.c:1693:13: */ - if enc != (uintptr(0)) { + if enc != uintptr(0) { var i int32 - VP8LHashChainClear(tls, (enc + 2312 /* &.hash_chain_ */)) + VP8LHashChainClear(tls, enc+2312) for i = 0; i < 4; i++ { - VP8LBackwardRefsClear(tls, ((enc + 2152 /* &.refs_ */) + uintptr(i)*40)) + VP8LBackwardRefsClear(tls, enc+2152+uintptr(i)*40) } ClearTransformBuffer(tls, enc) WebPSafeFree(tls, enc) @@ -37602,7 +37304,7 @@ func EncodeStreamHook(tls *libc.TLS, input uintptr, data2 uintptr) int32 { /* vp stats = (*StreamEncodeContext)(unsafe.Pointer(params)).stats_ err = VP8_ENC_OK quality = libc.Int32FromFloat32((*WebPConfig)(unsafe.Pointer(config)).quality) - low_effort = (libc.Bool32((*WebPConfig)(unsafe.Pointer(config)).method == 0)) + low_effort = libc.Bool32((*WebPConfig)(unsafe.Pointer(config)).method == 0) width = (*WebPPicture)(unsafe.Pointer(picture)).width height = (*WebPPicture)(unsafe.Pointer(picture)).height byte_position = VP8LBitWriterNumBytes(tls, bw) @@ -37614,7 +37316,7 @@ func EncodeStreamHook(tls *libc.TLS, input uintptr, data2 uintptr) int32 { /* vp *(*VP8LBitWriter)(unsafe.Pointer(bp + 56 /* bw_init */)) = *(*VP8LBitWriter)(unsafe.Pointer(bw)) _ = data2 - if !(!(VP8LBitWriterInit(tls, (bp) /* &bw_best */, uint64(0)) != 0) || ((num_crunch_configs > 1) && !(VP8LBitWriterClone(tls, bw, (bp) /* &bw_best */) != 0))) { + if !(!(VP8LBitWriterInit(tls, bp, uint64(0)) != 0) || num_crunch_configs > 1 && !(VP8LBitWriterClone(tls, bw, bp) != 0)) { goto __1 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -37628,11 +37330,11 @@ __2: goto __4 } entropy_idx = (*CrunchConfig)(unsafe.Pointer(crunch_configs + uintptr(idx)*28)).entropy_idx_ - (*VP8LEncoder)(unsafe.Pointer(enc)).use_palette_ = (libc.Bool32((entropy_idx == kPalette) || (entropy_idx == kPaletteAndSpatial))) - (*VP8LEncoder)(unsafe.Pointer(enc)).use_subtract_green_ = (libc.Bool32((entropy_idx == kSubGreen) || (entropy_idx == kSpatialSubGreen))) - (*VP8LEncoder)(unsafe.Pointer(enc)).use_predict_ = (libc.Bool32(((entropy_idx == kSpatial) || (entropy_idx == kSpatialSubGreen)) || (entropy_idx == kPaletteAndSpatial))) + (*VP8LEncoder)(unsafe.Pointer(enc)).use_palette_ = libc.Bool32(entropy_idx == kPalette || entropy_idx == kPaletteAndSpatial) + (*VP8LEncoder)(unsafe.Pointer(enc)).use_subtract_green_ = libc.Bool32(entropy_idx == kSubGreen || entropy_idx == kSpatialSubGreen) + (*VP8LEncoder)(unsafe.Pointer(enc)).use_predict_ = libc.Bool32(entropy_idx == kSpatial || entropy_idx == kSpatialSubGreen || entropy_idx == kPaletteAndSpatial) // When using a palette, R/B==0, hence no need to test for cross-color. - if !((low_effort != 0) || ((*VP8LEncoder)(unsafe.Pointer(enc)).use_palette_ != 0)) { + if !(low_effort != 0 || (*VP8LEncoder)(unsafe.Pointer(enc)).use_palette_ != 0) { goto __5 } (*VP8LEncoder)(unsafe.Pointer(enc)).use_cross_color_ = 0 @@ -37648,11 +37350,11 @@ __6: ; // Reset any parameter in the encoder that is set in the previous iteration. (*VP8LEncoder)(unsafe.Pointer(enc)).cache_bits_ = 0 - VP8LBackwardRefsClear(tls, (enc + 2152 /* &.refs_ */)) - VP8LBackwardRefsClear(tls, ((enc + 2152 /* &.refs_ */) + 1*40)) + VP8LBackwardRefsClear(tls, enc+2152) + VP8LBackwardRefsClear(tls, enc+2152+1*40) // Apply near-lossless preprocessing. - use_near_lossless = (libc.Bool32((((*WebPConfig)(unsafe.Pointer(config)).near_lossless < 100) && !((*VP8LEncoder)(unsafe.Pointer(enc)).use_palette_ != 0)) && !((*VP8LEncoder)(unsafe.Pointer(enc)).use_predict_ != 0))) + use_near_lossless = libc.Bool32((*WebPConfig)(unsafe.Pointer(config)).near_lossless < 100 && !((*VP8LEncoder)(unsafe.Pointer(enc)).use_palette_ != 0) && !((*VP8LEncoder)(unsafe.Pointer(enc)).use_predict_ != 0)) if !(use_near_lossless != 0) { goto __7 } @@ -37663,7 +37365,7 @@ __6: goto Error __9: ; - if !(((*VP8LEncoder)(unsafe.Pointer(enc)).argb_content_ != kEncoderNearLossless) && !(VP8ApplyNearLossless(tls, picture, (*WebPConfig)(unsafe.Pointer(config)).near_lossless, (*VP8LEncoder)(unsafe.Pointer(enc)).argb_) != 0)) { + if !((*VP8LEncoder)(unsafe.Pointer(enc)).argb_content_ != kEncoderNearLossless && !(VP8ApplyNearLossless(tls, picture, (*WebPConfig)(unsafe.Pointer(config)).near_lossless, (*VP8LEncoder)(unsafe.Pointer(enc)).argb_) != 0)) { goto __10 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -37685,20 +37387,20 @@ __8: goto __12 } // Nothing to do, we have already sorted the palette. - libc.Xmemcpy(tls, (enc + 100 /* &.palette_ */), (enc + 1124 /* &.palette_sorted_ */), - (uint64((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_) * uint64(unsafe.Sizeof(uint32_t(0))))) + libc.Xmemcpy(tls, enc+100, enc+1124, + uint64((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_)*uint64(unsafe.Sizeof(uint32_t(0)))) goto __13 __12: if !((*CrunchConfig)(unsafe.Pointer(crunch_configs+uintptr(idx)*28)).palette_sorting_type_ == kMinimizeDelta) { goto __14 } - PaletteSortMinimizeDeltas(tls, (enc + 1124 /* &.palette_sorted_ */), (*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_, - (enc + 100 /* &.palette_ */)) + PaletteSortMinimizeDeltas(tls, enc+1124, (*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_, + enc+100) goto __15 __14: ; - err = PaletteSortModifiedZeng(tls, (*VP8LEncoder)(unsafe.Pointer(enc)).pic_, (enc + 1124 /* &.palette_sorted_ */), - uint32((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_), (enc + 100 /* &.palette_ */)) + err = PaletteSortModifiedZeng(tls, (*VP8LEncoder)(unsafe.Pointer(enc)).pic_, enc+1124, + uint32((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_), enc+100) if !(err != VP8_ENC_OK) { goto __16 } @@ -37725,19 +37427,19 @@ __18: ; // If using a color cache, do not have it bigger than the number of // colors. - if !((use_cache != 0) && ((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_ < (int32(1) << 10))) { + if !(use_cache != 0 && (*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_ < int32(1)<<10) { goto __19 } - (*VP8LEncoder)(unsafe.Pointer(enc)).cache_bits_ = (BitsLog2Floor(tls, uint32((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_)) + 1) + (*VP8LEncoder)(unsafe.Pointer(enc)).cache_bits_ = BitsLog2Floor(tls, uint32((*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_)) + 1 __19: ; __11: ; - if !(!(use_delta_palette != 0)) { + if !!(use_delta_palette != 0) { goto __20 } // In case image is not packed. - if !(((*VP8LEncoder)(unsafe.Pointer(enc)).argb_content_ != kEncoderNearLossless) && ((*VP8LEncoder)(unsafe.Pointer(enc)).argb_content_ != kEncoderPalette)) { + if !((*VP8LEncoder)(unsafe.Pointer(enc)).argb_content_ != kEncoderNearLossless && (*VP8LEncoder)(unsafe.Pointer(enc)).argb_content_ != kEncoderPalette) { goto __21 } err = MakeInputImageCopy(tls, enc) @@ -37794,11 +37496,11 @@ __20: // ------------------------------------------------------------------------- // Encode and write the transformed image. - err = EncodeImageInternal(tls, bw, (*VP8LEncoder)(unsafe.Pointer(enc)).argb_, (enc + 2312 /* &.hash_chain_ */), (enc + 2152 /* &.refs_ */), + err = EncodeImageInternal(tls, bw, (*VP8LEncoder)(unsafe.Pointer(enc)).argb_, enc+2312, enc+2152, (*VP8LEncoder)(unsafe.Pointer(enc)).current_width_, height, quality, low_effort, - use_cache, (crunch_configs + uintptr(idx)*28), - (enc + 76 /* &.cache_bits_ */), (*VP8LEncoder)(unsafe.Pointer(enc)).histo_bits_, - byte_position, (bp + 48) /* &hdr_size */, (bp + 52) /* &data_size */) + use_cache, crunch_configs+uintptr(idx)*28, + enc+76, (*VP8LEncoder)(unsafe.Pointer(enc)).histo_bits_, + byte_position, bp+48, bp+52) if !(err != VP8_ENC_OK) { goto __28 } @@ -37812,41 +37514,41 @@ __28: } best_size = VP8LBitWriterNumBytes(tls, bw) // Store the BitWriter. - VP8LBitWriterSwap(tls, bw, (bp) /* &bw_best */) + VP8LBitWriterSwap(tls, bw, bp) // Update the stats. - if !(stats != (uintptr(0))) { + if !(stats != uintptr(0)) { goto __30 } (*WebPAuxStats)(unsafe.Pointer(stats)).lossless_features = uint32_t(0) if !((*VP8LEncoder)(unsafe.Pointer(enc)).use_predict_ != 0) { goto __31 } - *(*uint32_t)(unsafe.Pointer((stats + 148 /* &.lossless_features */))) |= (uint32_t(1)) + *(*uint32_t)(unsafe.Pointer(stats + 148)) |= uint32_t(1) __31: ; if !((*VP8LEncoder)(unsafe.Pointer(enc)).use_cross_color_ != 0) { goto __32 } - *(*uint32_t)(unsafe.Pointer((stats + 148 /* &.lossless_features */))) |= (uint32_t(2)) + *(*uint32_t)(unsafe.Pointer(stats + 148)) |= uint32_t(2) __32: ; if !((*VP8LEncoder)(unsafe.Pointer(enc)).use_subtract_green_ != 0) { goto __33 } - *(*uint32_t)(unsafe.Pointer((stats + 148 /* &.lossless_features */))) |= (uint32_t(4)) + *(*uint32_t)(unsafe.Pointer(stats + 148)) |= uint32_t(4) __33: ; if !((*VP8LEncoder)(unsafe.Pointer(enc)).use_palette_ != 0) { goto __34 } - *(*uint32_t)(unsafe.Pointer((stats + 148 /* &.lossless_features */))) |= (uint32_t(8)) + *(*uint32_t)(unsafe.Pointer(stats + 148)) |= uint32_t(8) __34: ; (*WebPAuxStats)(unsafe.Pointer(stats)).histogram_bits = (*VP8LEncoder)(unsafe.Pointer(enc)).histo_bits_ (*WebPAuxStats)(unsafe.Pointer(stats)).transform_bits = (*VP8LEncoder)(unsafe.Pointer(enc)).transform_bits_ (*WebPAuxStats)(unsafe.Pointer(stats)).cache_bits = (*VP8LEncoder)(unsafe.Pointer(enc)).cache_bits_ (*WebPAuxStats)(unsafe.Pointer(stats)).palette_size = (*VP8LEncoder)(unsafe.Pointer(enc)).palette_size_ - (*WebPAuxStats)(unsafe.Pointer(stats)).lossless_size = (int32(best_size - byte_position)) + (*WebPAuxStats)(unsafe.Pointer(stats)).lossless_size = int32(best_size - byte_position) (*WebPAuxStats)(unsafe.Pointer(stats)).lossless_hdr_size = *(*int32)(unsafe.Pointer(bp + 48 /* hdr_size */)) (*WebPAuxStats)(unsafe.Pointer(stats)).lossless_data_size = *(*int32)(unsafe.Pointer(bp + 52 /* data_size */)) __30: @@ -37857,7 +37559,7 @@ __29: if !(num_crunch_configs > 1) { goto __35 } - VP8LBitWriterReset(tls, (bp + 56) /* &bw_init */, bw) + VP8LBitWriterReset(tls, bp+56, bw) __35: ; goto __3 @@ -37867,13 +37569,13 @@ __3: goto __4 __4: ; - VP8LBitWriterSwap(tls, (bp) /* &bw_best */, bw) + VP8LBitWriterSwap(tls, bp, bw) Error: - VP8LBitWriterWipeOut(tls, (bp) /* &bw_best */) + VP8LBitWriterWipeOut(tls, bp) (*StreamEncodeContext)(unsafe.Pointer(params)).err_ = err // The hook should return false in case of error. - return (libc.Bool32(err == VP8_ENC_OK)) + return libc.Bool32(err == VP8_ENC_OK) } func VP8LEncodeStream(tls *libc.TLS, config uintptr, picture uintptr, bw_main uintptr, use_cache int32) WebPEncodingError { /* vp8l_enc.c:1896:19: */ @@ -37914,14 +37616,14 @@ func VP8LEncodeStream(tls *libc.TLS, config uintptr, picture uintptr, bw_main ui var ok_side int32 err = VP8_ENC_OK enc_main = VP8LEncoderNew(tls, config, picture) - enc_side = (uintptr(0)) + enc_side = uintptr(0) num_crunch_configs_side = 0 *(*int32)(unsafe.Pointer(bp + 228 /* red_and_blue_always_zero */)) = 0 worker_interface = WebPGetWorkerInterface(tls) // Analyze image (entropy, num_palettes etc) - if !((((enc_main == (uintptr(0))) || !(EncoderAnalyze(tls, enc_main, (bp) /* &crunch_configs[0] */, (bp+224), /* &num_crunch_configs_main */ - (bp+228) /* &red_and_blue_always_zero */) != 0)) || !(EncoderInit(tls, enc_main) != 0)) || !(VP8LBitWriterInit(tls, (bp+232) /* &bw_side */, uint64(0)) != 0)) { + if !(enc_main == uintptr(0) || !(EncoderAnalyze(tls, enc_main, bp, bp+224, + bp+228) != 0) || !(EncoderInit(tls, enc_main) != 0) || !(VP8LBitWriterInit(tls, bp+232, uint64(0)) != 0)) { goto __1 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -37933,13 +37635,13 @@ __1: if !((*WebPConfig)(unsafe.Pointer(config)).thread_level > 0) { goto __2 } - num_crunch_configs_side = (*(*int32)(unsafe.Pointer(bp + 224 /* num_crunch_configs_main */)) / 2) + num_crunch_configs_side = *(*int32)(unsafe.Pointer(bp + 224)) / 2 idx = 0 __3: if !(idx < num_crunch_configs_side) { goto __5 } - *(*CrunchConfig)(unsafe.Pointer(((bp + 280) /* &params_side */ + 36 /* &.crunch_configs_ */) + uintptr(idx)*28)) = *(*CrunchConfig)(unsafe.Pointer((bp) /* &crunch_configs[0] */ + uintptr(((*(*int32)(unsafe.Pointer(bp + 224 /* num_crunch_configs_main */))-num_crunch_configs_side)+idx))*28)) + *(*CrunchConfig)(unsafe.Pointer(bp + 280 + 36 + uintptr(idx)*28)) = *(*CrunchConfig)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 224))-num_crunch_configs_side+idx)*28)) goto __4 __4: idx++ @@ -37953,10 +37655,10 @@ __2: *(*int32)(unsafe.Pointer(bp + 224 /* num_crunch_configs_main */)) -= num_crunch_configs_side idx = 0 __6: - if !(idx < *(*int32)(unsafe.Pointer(bp + 224 /* num_crunch_configs_main */))) { + if !(idx < *(*int32)(unsafe.Pointer(bp + 224))) { goto __8 } - *(*CrunchConfig)(unsafe.Pointer(((bp + 560) /* &params_main */ + 36 /* &.crunch_configs_ */) + uintptr(idx)*28)) = *(*CrunchConfig)(unsafe.Pointer((bp) /* &crunch_configs[0] */ + uintptr(idx)*28)) + *(*CrunchConfig)(unsafe.Pointer(bp + 560 + 36 + uintptr(idx)*28)) = *(*CrunchConfig)(unsafe.Pointer(bp + uintptr(idx)*28)) goto __7 __7: idx++ @@ -37980,14 +37682,14 @@ __9: } // Create the parameters for each worker. if idx == 0 { - worker = (bp + 840) /* &worker_main */ + worker = bp + 840 /* &worker_main */ } else { - worker = (bp + 888) /* &worker_side */ + worker = bp + 888 /* &worker_side */ } if idx == 0 { - param = (bp + 560) /* &params_main */ + param = bp + 560 /* &params_main */ } else { - param = (bp + 280) /* &params_side */ + param = bp + 280 /* &params_side */ } (*StreamEncodeContext)(unsafe.Pointer(param)).config_ = config (*StreamEncodeContext)(unsafe.Pointer(param)).picture_ = picture @@ -38002,23 +37704,23 @@ __9: goto __13 __12: (*StreamEncodeContext)(unsafe.Pointer(param)).stats_ = func() uintptr { - if (*WebPPicture)(unsafe.Pointer(picture)).stats == (uintptr(0)) { - return (uintptr(0)) + if (*WebPPicture)(unsafe.Pointer(picture)).stats == uintptr(0) { + return uintptr(0) } - return (bp + 936) /* &stats_side */ + return bp + 936 /* &stats_side */ }() // Create a side bit writer. - if !(!(VP8LBitWriterClone(tls, bw_main, (bp+232) /* &bw_side */) != 0)) { + if !!(VP8LBitWriterClone(tls, bw_main, bp+232) != 0) { goto __14 } err = VP8_ENC_ERROR_OUT_OF_MEMORY goto Error __14: ; - (*StreamEncodeContext)(unsafe.Pointer(param)).bw_ = (bp + 232) /* &bw_side */ + (*StreamEncodeContext)(unsafe.Pointer(param)).bw_ = bp + 232 /* &bw_side */ // Create a side encoder. enc_side = VP8LEncoderNew(tls, config, picture) - if !((enc_side == (uintptr(0))) || !(EncoderInit(tls, enc_side) != 0)) { + if !(enc_side == uintptr(0) || !(EncoderInit(tls, enc_side) != 0)) { goto __15 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -38029,9 +37731,9 @@ __15: (*VP8LEncoder)(unsafe.Pointer(enc_side)).histo_bits_ = (*VP8LEncoder)(unsafe.Pointer(enc_main)).histo_bits_ (*VP8LEncoder)(unsafe.Pointer(enc_side)).transform_bits_ = (*VP8LEncoder)(unsafe.Pointer(enc_main)).transform_bits_ (*VP8LEncoder)(unsafe.Pointer(enc_side)).palette_size_ = (*VP8LEncoder)(unsafe.Pointer(enc_main)).palette_size_ - libc.Xmemcpy(tls, (enc_side + 100 /* &.palette_ */), (enc_main + 100 /* &.palette_ */), + libc.Xmemcpy(tls, enc_side+100, enc_main+100, uint64(unsafe.Sizeof([256]uint32_t{}))) - libc.Xmemcpy(tls, (enc_side + 1124 /* &.palette_sorted_ */), (enc_main + 1124 /* &.palette_sorted_ */), + libc.Xmemcpy(tls, enc_side+1124, enc_main+1124, uint64(unsafe.Sizeof([256]uint32_t{}))) (*StreamEncodeContext)(unsafe.Pointer(param)).enc_ = enc_side __13: @@ -38039,7 +37741,7 @@ __13: // Create the workers. (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Init})).f(tls, worker) (*WebPWorker)(unsafe.Pointer(worker)).data1 = param - (*WebPWorker)(unsafe.Pointer(worker)).data2 = (uintptr(0)) + (*WebPWorker)(unsafe.Pointer(worker)).data2 = uintptr(0) (*WebPWorker)(unsafe.Pointer(worker)).hook = *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) int32 }{EncodeStreamHook})) @@ -38055,9 +37757,9 @@ __11: if !(num_crunch_configs_side != 0) { goto __16 } - if !(!((*struct { + if !!((*struct { f func(*libc.TLS, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Reset})).f(tls, (bp+888) /* &worker_side */) != 0)) { + })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Reset})).f(tls, bp+888) != 0) { goto __17 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -38066,31 +37768,31 @@ __17: ; // This line is here and not in the param initialization above to remove a // Clang static analyzer warning. - if !((*WebPPicture)(unsafe.Pointer(picture)).stats != (uintptr(0))) { + if !((*WebPPicture)(unsafe.Pointer(picture)).stats != uintptr(0)) { goto __18 } - libc.Xmemcpy(tls, (bp + 936) /* &stats_side */, (*WebPPicture)(unsafe.Pointer(picture)).stats, uint64(unsafe.Sizeof(WebPAuxStats{}))) + libc.Xmemcpy(tls, bp+936, (*WebPPicture)(unsafe.Pointer(picture)).stats, uint64(unsafe.Sizeof(WebPAuxStats{}))) __18: ; // This line is only useful to remove a Clang static analyzer warning. (*StreamEncodeContext)(unsafe.Pointer(bp + 280 /* &params_side */)).err_ = VP8_ENC_OK - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Launch})).f(tls, (bp + 888) /* &worker_side */) + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Launch})).f(tls, bp+888 /* &worker_side */) __16: ; // Execute the main thread. - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Execute})).f(tls, (bp + 840) /* &worker_main */) + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Execute})).f(tls, bp+840 /* &worker_main */) ok_main = (*struct { f func(*libc.TLS, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Sync})).f(tls, (bp + 840) /* &worker_main */) - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).End})).f(tls, (bp + 840) /* &worker_main */) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Sync})).f(tls, bp+840 /* &worker_main */) + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).End})).f(tls, bp+840 /* &worker_main */) if !(num_crunch_configs_side != 0) { goto __19 } // Wait for the second thread. ok_side = (*struct { f func(*libc.TLS, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Sync})).f(tls, (bp + 888) /* &worker_side */) - (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).End})).f(tls, (bp + 888) /* &worker_side */) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).Sync})).f(tls, bp+888 /* &worker_side */) + (*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorkerInterface)(unsafe.Pointer(worker_interface)).End})).f(tls, bp+888 /* &worker_side */) if !(!(ok_main != 0) || !(ok_side != 0)) { goto __21 } @@ -38102,21 +37804,21 @@ __16: goto Error __21: ; - if !(VP8LBitWriterNumBytes(tls, (bp+232) /* &bw_side */) < VP8LBitWriterNumBytes(tls, bw_main)) { + if !(VP8LBitWriterNumBytes(tls, bp+232) < VP8LBitWriterNumBytes(tls, bw_main)) { goto __22 } - VP8LBitWriterSwap(tls, bw_main, (bp + 232) /* &bw_side */) - if !((*WebPPicture)(unsafe.Pointer(picture)).stats != (uintptr(0))) { + VP8LBitWriterSwap(tls, bw_main, bp+232) + if !((*WebPPicture)(unsafe.Pointer(picture)).stats != uintptr(0)) { goto __23 } - libc.Xmemcpy(tls, (*WebPPicture)(unsafe.Pointer(picture)).stats, (bp + 936) /* &stats_side */, uint64(unsafe.Sizeof(WebPAuxStats{}))) + libc.Xmemcpy(tls, (*WebPPicture)(unsafe.Pointer(picture)).stats, bp+936, uint64(unsafe.Sizeof(WebPAuxStats{}))) __23: ; __22: ; goto __20 __19: - if !(!(ok_main != 0)) { + if !!(ok_main != 0) { goto __24 } err = (*StreamEncodeContext)(unsafe.Pointer(bp + 560 /* &params_main */)).err_ @@ -38127,7 +37829,7 @@ __20: ; Error: - VP8LBitWriterWipeOut(tls, (bp + 232) /* &bw_side */) + VP8LBitWriterWipeOut(tls, bp+232) VP8LEncoderDelete(tls, enc_main) VP8LEncoderDelete(tls, enc_side) return err @@ -38154,14 +37856,14 @@ func VP8LEncodeImage(tls *libc.TLS, config uintptr, picture uintptr) int32 { /* *(*int32)(unsafe.Pointer(bp + 48 /* percent */)) = 0 err = VP8_ENC_OK - if !(picture == (uintptr(0))) { + if !(picture == uintptr(0)) { goto __1 } return 0 __1: ; - if !((config == (uintptr(0))) || ((*WebPPicture)(unsafe.Pointer(picture)).argb == (uintptr(0)))) { + if !(config == uintptr(0) || (*WebPPicture)(unsafe.Pointer(picture)).argb == uintptr(0)) { goto __2 } err = VP8_ENC_ERROR_NULL_PARAMETER @@ -38175,11 +37877,11 @@ __2: // Initialize BitWriter with size corresponding to 16 bpp to photo images and // 8 bpp for graphical images. if (*WebPConfig)(unsafe.Pointer(config)).image_hint == WEBP_HINT_GRAPH { - initial_size = (width * height) + initial_size = width * height } else { - initial_size = ((width * height) * 2) + initial_size = width * height * 2 } - if !(!(VP8LBitWriterInit(tls, (bp) /* &bw */, uint64(initial_size)) != 0)) { + if !!(VP8LBitWriterInit(tls, bp, uint64(initial_size)) != 0) { goto __3 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -38187,7 +37889,7 @@ __2: __3: ; - if !(!(WebPReportProgress(tls, picture, 1, (bp+48) /* &percent */) != 0)) { + if !!(WebPReportProgress(tls, picture, 1, bp+48) != 0) { goto __4 } UserAbort: @@ -38196,21 +37898,21 @@ UserAbort: __4: ; // Reset stats (for pure lossless coding) - if !((*WebPPicture)(unsafe.Pointer(picture)).stats != (uintptr(0))) { + if !((*WebPPicture)(unsafe.Pointer(picture)).stats != uintptr(0)) { goto __5 } stats = (*WebPPicture)(unsafe.Pointer(picture)).stats libc.Xmemset(tls, stats, 0, uint64(unsafe.Sizeof(WebPAuxStats{}))) - *(*float32)(unsafe.Pointer((stats + 4 /* &.PSNR */))) = 99. - *(*float32)(unsafe.Pointer((stats + 4 /* &.PSNR */) + 1*4)) = 99. - *(*float32)(unsafe.Pointer((stats + 4 /* &.PSNR */) + 2*4)) = 99. - *(*float32)(unsafe.Pointer((stats + 4 /* &.PSNR */) + 3*4)) = 99. - *(*float32)(unsafe.Pointer((stats + 4 /* &.PSNR */) + 4*4)) = 99. + *(*float32)(unsafe.Pointer(stats + 4)) = 99. + *(*float32)(unsafe.Pointer(stats + 4 + 1*4)) = 99. + *(*float32)(unsafe.Pointer(stats + 4 + 2*4)) = 99. + *(*float32)(unsafe.Pointer(stats + 4 + 3*4)) = 99. + *(*float32)(unsafe.Pointer(stats + 4 + 4*4)) = 99. __5: ; // Write image size. - if !(!(WriteImageSize(tls, picture, (bp) /* &bw */) != 0)) { + if !!(WriteImageSize(tls, picture, bp) != 0) { goto __6 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -38220,7 +37922,7 @@ __6: has_alpha = WebPPictureHasTransparency(tls, picture) // Write the non-trivial Alpha flag and lossless version. - if !(!(WriteRealAlphaAndVersion(tls, (bp) /* &bw */, has_alpha) != 0)) { + if !!(WriteRealAlphaAndVersion(tls, bp, has_alpha) != 0) { goto __7 } err = VP8_ENC_ERROR_OUT_OF_MEMORY @@ -38228,7 +37930,7 @@ __6: __7: ; - if !(!(WebPReportProgress(tls, picture, 5, (bp+48) /* &percent */) != 0)) { + if !!(WebPReportProgress(tls, picture, 5, bp+48) != 0) { goto __8 } goto UserAbort @@ -38236,7 +37938,7 @@ __8: ; // Encode main image stream. - err = VP8LEncodeStream(tls, config, picture, (bp) /* &bw */, 1) + err = VP8LEncodeStream(tls, config, picture, bp, 1) if !(err != VP8_ENC_OK) { goto __9 } @@ -38244,7 +37946,7 @@ __8: __9: ; - if !(!(WebPReportProgress(tls, picture, 90, (bp+48) /* &percent */) != 0)) { + if !!(WebPReportProgress(tls, picture, 90, bp+48) != 0) { goto __10 } goto UserAbort @@ -38252,7 +37954,7 @@ __10: ; // Finish the RIFF chunk. - err = WriteImage(tls, picture, (bp) /* &bw */, (bp + 56) /* &coded_size */) + err = WriteImage(tls, picture, bp, bp+56) if !(err != VP8_ENC_OK) { goto __11 } @@ -38260,7 +37962,7 @@ __10: __11: ; - if !(!(WebPReportProgress(tls, picture, 100, (bp+48) /* &percent */) != 0)) { + if !!(WebPReportProgress(tls, picture, 100, bp+48) != 0) { goto __12 } goto UserAbort @@ -38268,31 +37970,31 @@ __12: ; // Save size. - if !((*WebPPicture)(unsafe.Pointer(picture)).stats != (uintptr(0))) { + if !((*WebPPicture)(unsafe.Pointer(picture)).stats != uintptr(0)) { goto __13 } - *(*int32)(unsafe.Pointer(((*WebPPicture)(unsafe.Pointer(picture)).stats /* &.coded_size */))) += (int32(*(*size_t)(unsafe.Pointer(bp + 56 /* coded_size */)))) + *(*int32)(unsafe.Pointer((*WebPPicture)(unsafe.Pointer(picture)).stats)) += int32(*(*size_t)(unsafe.Pointer(bp + 56))) (*WebPAuxStats)(unsafe.Pointer((*WebPPicture)(unsafe.Pointer(picture)).stats)).lossless_size = int32(*(*size_t)(unsafe.Pointer(bp + 56 /* coded_size */))) __13: ; - if !((*WebPPicture)(unsafe.Pointer(picture)).extra_info != (uintptr(0))) { + if !((*WebPPicture)(unsafe.Pointer(picture)).extra_info != uintptr(0)) { goto __14 } - mb_w = ((width + 15) >> 4) - mb_h = ((height + 15) >> 4) - libc.Xmemset(tls, (*WebPPicture)(unsafe.Pointer(picture)).extra_info, 0, ((uint64(mb_w * mb_h)) * uint64(unsafe.Sizeof(uint8_t(0))))) + mb_w = (width + 15) >> 4 + mb_h = (height + 15) >> 4 + libc.Xmemset(tls, (*WebPPicture)(unsafe.Pointer(picture)).extra_info, 0, uint64(mb_w*mb_h)*uint64(unsafe.Sizeof(uint8_t(0)))) __14: ; Error: - if !((*VP8LBitWriter)(unsafe.Pointer(bp /* &bw */)).error_ != 0) { + if !((*VP8LBitWriter)(unsafe.Pointer(bp)).error_ != 0) { goto __15 } err = VP8_ENC_ERROR_OUT_OF_MEMORY __15: ; - VP8LBitWriterWipeOut(tls, (bp) /* &bw */) + VP8LBitWriterWipeOut(tls, bp) if !(err != VP8_ENC_OK) { goto __16 } @@ -38326,7 +38028,7 @@ __16: //------------------------------------------------------------------------------ func WebPGetEncoderVersion(tls *libc.TLS) int32 { /* webp_enc.c:32:5: */ - return (((int32(1) << 16) | (int32(2) << 8)) | 2) + return int32(1)<<16 | int32(2)<<8 | 2 } //------------------------------------------------------------------------------ @@ -38334,14 +38036,14 @@ func WebPGetEncoderVersion(tls *libc.TLS) int32 { /* webp_enc.c:32:5: */ //------------------------------------------------------------------------------ func ResetSegmentHeader1(tls *libc.TLS, enc uintptr) { /* webp_enc.c:40:13: */ - var hdr uintptr = (enc + 32 /* &.segment_hdr_ */) + var hdr uintptr = enc + 32 (*VP8EncSegmentHeader)(unsafe.Pointer(hdr)).num_segments_ = (*WebPConfig)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).config_)).segments - (*VP8EncSegmentHeader)(unsafe.Pointer(hdr)).update_map_ = (libc.Bool32((*VP8EncSegmentHeader)(unsafe.Pointer(hdr)).num_segments_ > 1)) + (*VP8EncSegmentHeader)(unsafe.Pointer(hdr)).update_map_ = libc.Bool32((*VP8EncSegmentHeader)(unsafe.Pointer(hdr)).num_segments_ > 1) (*VP8EncSegmentHeader)(unsafe.Pointer(hdr)).size_ = 0 } func ResetFilterHeader(tls *libc.TLS, enc uintptr) { /* webp_enc.c:47:13: */ - var hdr uintptr = (enc + 16 /* &.filter_hdr_ */) + var hdr uintptr = enc + 16 (*VP8EncFilterHeader)(unsafe.Pointer(hdr)).simple_ = 1 (*VP8EncFilterHeader)(unsafe.Pointer(hdr)).level_ = 0 (*VP8EncFilterHeader)(unsafe.Pointer(hdr)).sharpness_ = 0 @@ -38352,13 +38054,13 @@ func ResetBoundaryPredictions(tls *libc.TLS, enc uintptr) { /* webp_enc.c:55:13: // init boundary values once for all // Note: actually, initializing the preds_[] is only needed for intra4. var i int32 - var top uintptr = ((*VP8Encoder)(unsafe.Pointer(enc)).preds_ - uintptr((*VP8Encoder)(unsafe.Pointer(enc)).preds_w_)) - var left uintptr = ((*VP8Encoder)(unsafe.Pointer(enc)).preds_ - uintptr(1)) - for i = -1; i < (4 * (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_); i++ { + var top uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).preds_ - uintptr((*VP8Encoder)(unsafe.Pointer(enc)).preds_w_) + var left uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).preds_ - uintptr(1) + for i = -1; i < 4*(*VP8Encoder)(unsafe.Pointer(enc)).mb_w_; i++ { *(*uint8_t)(unsafe.Pointer(top + uintptr(i))) = B_DC_PRED } - for i = 0; i < (4 * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_); i++ { - *(*uint8_t)(unsafe.Pointer(left + uintptr((i * (*VP8Encoder)(unsafe.Pointer(enc)).preds_w_)))) = B_DC_PRED + for i = 0; i < 4*(*VP8Encoder)(unsafe.Pointer(enc)).mb_h_; i++ { + *(*uint8_t)(unsafe.Pointer(left + uintptr(i*(*VP8Encoder)(unsafe.Pointer(enc)).preds_w_))) = B_DC_PRED } *(*uint32_t)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).nz_ + libc.UintptrFromInt32(-1)*4)) = uint32_t(0) // constant } @@ -38391,7 +38093,7 @@ func ResetBoundaryPredictions(tls *libc.TLS, enc uintptr) { /* webp_enc.c:55:13: func MapConfigToTools(tls *libc.TLS, enc uintptr) { /* webp_enc.c:95:13: */ var config uintptr = (*VP8Encoder)(unsafe.Pointer(enc)).config_ var method int32 = (*WebPConfig)(unsafe.Pointer(config)).method - var limit int32 = (100 - (*WebPConfig)(unsafe.Pointer(config)).partition_limit) + var limit int32 = 100 - (*WebPConfig)(unsafe.Pointer(config)).partition_limit (*VP8Encoder)(unsafe.Pointer(enc)).method_ = method (*VP8Encoder)(unsafe.Pointer(enc)).rd_opt_level_ = func() uint32 { if method >= 6 { @@ -38409,16 +38111,16 @@ func MapConfigToTools(tls *libc.TLS, enc uintptr) { /* webp_enc.c:95:13: */ }() }() }() - (*VP8Encoder)(unsafe.Pointer(enc)).max_i4_header_bits_ = ((((256 * 16) * 16) * (limit * limit)) / (100 * 100)) // ... modulated with a quadratic curve. + (*VP8Encoder)(unsafe.Pointer(enc)).max_i4_header_bits_ = 256 * 16 * 16 * (limit * limit) / (100 * 100) // ... modulated with a quadratic curve. // partition0 = 512k max. - (*VP8Encoder)(unsafe.Pointer(enc)).mb_header_limit_ = (int32((((int64(256) * int64(510)) * int64(8)) * int64(1024)) / (score_t((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ * (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_)))) + (*VP8Encoder)(unsafe.Pointer(enc)).mb_header_limit_ = int32(int64(256) * int64(510) * int64(8) * int64(1024) / score_t((*VP8Encoder)(unsafe.Pointer(enc)).mb_w_*(*VP8Encoder)(unsafe.Pointer(enc)).mb_h_)) (*VP8Encoder)(unsafe.Pointer(enc)).thread_level_ = (*WebPConfig)(unsafe.Pointer(config)).thread_level - (*VP8Encoder)(unsafe.Pointer(enc)).do_search_ = (libc.Bool32(((*WebPConfig)(unsafe.Pointer(config)).target_size > 0) || ((*WebPConfig)(unsafe.Pointer(config)).target_PSNR > float32(0)))) + (*VP8Encoder)(unsafe.Pointer(enc)).do_search_ = libc.Bool32((*WebPConfig)(unsafe.Pointer(config)).target_size > 0 || (*WebPConfig)(unsafe.Pointer(config)).target_PSNR > float32(0)) if !((*WebPConfig)(unsafe.Pointer(config)).low_memory != 0) { - (*VP8Encoder)(unsafe.Pointer(enc)).use_tokens_ = (libc.Bool32((*VP8Encoder)(unsafe.Pointer(enc)).rd_opt_level_ >= RD_OPT_BASIC)) // need rd stats + (*VP8Encoder)(unsafe.Pointer(enc)).use_tokens_ = libc.Bool32((*VP8Encoder)(unsafe.Pointer(enc)).rd_opt_level_ >= RD_OPT_BASIC) // need rd stats if (*VP8Encoder)(unsafe.Pointer(enc)).use_tokens_ != 0 { (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_ = 1 // doesn't work with multi-partition } @@ -38446,87 +38148,87 @@ func MapConfigToTools(tls *libc.TLS, enc uintptr) { /* webp_enc.c:95:13: */ func InitVP8Encoder(tls *libc.TLS, config uintptr, picture uintptr) uintptr { /* webp_enc.c:144:18: */ var enc uintptr - var use_filter int32 = (libc.Bool32(((*WebPConfig)(unsafe.Pointer(config)).filter_strength > 0) || ((*WebPConfig)(unsafe.Pointer(config)).autofilter > 0))) - var mb_w int32 = (((*WebPPicture)(unsafe.Pointer(picture)).width + 15) >> 4) - var mb_h int32 = (((*WebPPicture)(unsafe.Pointer(picture)).height + 15) >> 4) - var preds_w int32 = ((4 * mb_w) + 1) - var preds_h int32 = ((4 * mb_h) + 1) - var preds_size size_t = ((uint64(preds_w * preds_h)) * uint64(unsafe.Sizeof(uint8_t(0)))) - var top_stride int32 = (mb_w * 16) - var nz_size size_t = (((uint64(mb_w + 1)) * uint64(unsafe.Sizeof(uint32_t(0)))) + uint64(31)) - var info_size size_t = ((uint64(mb_w * mb_h)) * uint64(unsafe.Sizeof(VP8MBInfo{}))) - var samples_size size_t = (((uint64(2 * top_stride)) * uint64(unsafe.Sizeof(uint8_t(0)))) + // top-luma/u/v - uint64(31)) // align all + var use_filter int32 = libc.Bool32((*WebPConfig)(unsafe.Pointer(config)).filter_strength > 0 || (*WebPConfig)(unsafe.Pointer(config)).autofilter > 0) + var mb_w int32 = ((*WebPPicture)(unsafe.Pointer(picture)).width + 15) >> 4 + var mb_h int32 = ((*WebPPicture)(unsafe.Pointer(picture)).height + 15) >> 4 + var preds_w int32 = 4*mb_w + 1 + var preds_h int32 = 4*mb_h + 1 + var preds_size size_t = uint64(preds_w*preds_h) * uint64(unsafe.Sizeof(uint8_t(0))) + var top_stride int32 = mb_w * 16 + var nz_size size_t = uint64(mb_w+1)*uint64(unsafe.Sizeof(uint32_t(0))) + uint64(31) + var info_size size_t = uint64(mb_w*mb_h) * uint64(unsafe.Sizeof(VP8MBInfo{})) + var samples_size size_t = uint64(2*top_stride)*uint64(unsafe.Sizeof(uint8_t(0))) + + uint64(31) // align all var lf_stats_size size_t if (*WebPConfig)(unsafe.Pointer(config)).autofilter != 0 { - lf_stats_size = (uint64(unsafe.Sizeof(LFStats{})) + uint64(31)) + lf_stats_size = uint64(unsafe.Sizeof(LFStats{})) + uint64(31) } else { lf_stats_size = uint64(0) } var top_derr_size size_t - if ((*WebPConfig)(unsafe.Pointer(config)).quality <= float32(98)) || ((*WebPConfig)(unsafe.Pointer(config)).pass > 1) { - top_derr_size = (uint64(mb_w) * uint64(unsafe.Sizeof(DError{}))) + if (*WebPConfig)(unsafe.Pointer(config)).quality <= float32(98) || (*WebPConfig)(unsafe.Pointer(config)).pass > 1 { + top_derr_size = uint64(mb_w) * uint64(unsafe.Sizeof(DError{})) } else { top_derr_size = uint64(0) } var mem uintptr - var size uint64_t = (((((((uint64_t(unsafe.Sizeof(VP8Encoder{})) + // main struct - uint64(31)) + // cache alignment - info_size) + // modes info - preds_size) + // prediction modes - samples_size) + // top/left samples - top_derr_size) + // top diffusion error - nz_size) + // coeff context bits - lf_stats_size) // autofilter stats + var size uint64_t = uint64_t(unsafe.Sizeof(VP8Encoder{})) + + uint64(31) + + info_size + + preds_size + + samples_size + + top_derr_size + + nz_size + + lf_stats_size // autofilter stats mem = WebPSafeMalloc(tls, size, uint64(unsafe.Sizeof(uint8_t(0)))) - if mem == (uintptr(0)) { + if mem == uintptr(0) { WebPEncodingSetError(tls, picture, VP8_ENC_ERROR_OUT_OF_MEMORY) - return (uintptr(0)) + return uintptr(0) } enc = mem - mem = (uintptr((uintptr_t((mem + uintptr(uint64(unsafe.Sizeof(VP8Encoder{}))))) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) + mem = uintptr((uintptr_t(mem+uintptr(uint64(unsafe.Sizeof(VP8Encoder{})))) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) libc.Xmemset(tls, enc, 0, uint64(unsafe.Sizeof(VP8Encoder{}))) - (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_ = (int32(1) << (*WebPConfig)(unsafe.Pointer(config)).partitions) + (*VP8Encoder)(unsafe.Pointer(enc)).num_parts_ = int32(1) << (*WebPConfig)(unsafe.Pointer(config)).partitions (*VP8Encoder)(unsafe.Pointer(enc)).mb_w_ = mb_w (*VP8Encoder)(unsafe.Pointer(enc)).mb_h_ = mb_h (*VP8Encoder)(unsafe.Pointer(enc)).preds_w_ = preds_w (*VP8Encoder)(unsafe.Pointer(enc)).mb_info_ = mem mem += uintptr(info_size) - (*VP8Encoder)(unsafe.Pointer(enc)).preds_ = ((mem + uintptr(1)) + uintptr((*VP8Encoder)(unsafe.Pointer(enc)).preds_w_)) + (*VP8Encoder)(unsafe.Pointer(enc)).preds_ = mem + uintptr(1) + uintptr((*VP8Encoder)(unsafe.Pointer(enc)).preds_w_) mem += uintptr(preds_size) - (*VP8Encoder)(unsafe.Pointer(enc)).nz_ = (uintptr(1)*4 + (uintptr((uintptr_t((mem)) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))))) + (*VP8Encoder)(unsafe.Pointer(enc)).nz_ = uintptr(1)*4 + uintptr((uintptr_t(mem)+uint64(31))&libc.Uint64FromInt32(libc.CplInt32(31))) mem += uintptr(nz_size) (*VP8Encoder)(unsafe.Pointer(enc)).lf_stats_ = func() uintptr { if lf_stats_size != 0 { - return (uintptr((uintptr_t((mem)) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) + return uintptr((uintptr_t(mem) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) } - return (uintptr(0)) + return uintptr(0) }() mem += uintptr(lf_stats_size) // top samples (all 16-aligned) - mem = (uintptr((uintptr_t((mem)) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31)))) + mem = uintptr((uintptr_t(mem) + uint64(31)) & libc.Uint64FromInt32(libc.CplInt32(31))) (*VP8Encoder)(unsafe.Pointer(enc)).y_top_ = mem - (*VP8Encoder)(unsafe.Pointer(enc)).uv_top_ = ((*VP8Encoder)(unsafe.Pointer(enc)).y_top_ + uintptr(top_stride)) - mem += (uintptr(2 * top_stride)) + (*VP8Encoder)(unsafe.Pointer(enc)).uv_top_ = (*VP8Encoder)(unsafe.Pointer(enc)).y_top_ + uintptr(top_stride) + mem += uintptr(2 * top_stride) (*VP8Encoder)(unsafe.Pointer(enc)).top_derr_ = func() uintptr { if top_derr_size != 0 { return mem } - return (uintptr(0)) + return uintptr(0) }() mem += uintptr(top_derr_size) (*VP8Encoder)(unsafe.Pointer(enc)).config_ = config (*VP8Encoder)(unsafe.Pointer(enc)).profile_ = func() int32 { if use_filter != 0 { - return (func() int32 { + return func() int32 { if (*WebPConfig)(unsafe.Pointer(config)).filter_type == 1 { return 0 } return 1 - }()) + }() } return 2 }() @@ -38545,8 +38247,8 @@ func InitVP8Encoder(tls *libc.TLS, config uintptr, picture uintptr) uintptr { /* // lower quality means smaller output -> we modulate a little the page // size based on quality. This is just a crude 1rst-order prediction. { - var scale float32 = (1. + (((*WebPConfig)(unsafe.Pointer(config)).quality * 5.) / 100.)) // in [1,6] - VP8TBufferInit(tls, (enc + 496 /* &.tokens_ */), (libc.Int32FromFloat32((float32((mb_w * mb_h) * 4)) * scale))) + var scale float32 = 1. + (*WebPConfig)(unsafe.Pointer(config)).quality*5./100. // in [1,6] + VP8TBufferInit(tls, enc+496, libc.Int32FromFloat32(float32(mb_w*mb_h*4)*scale)) } return enc @@ -38554,9 +38256,9 @@ func InitVP8Encoder(tls *libc.TLS, config uintptr, picture uintptr) uintptr { /* func DeleteVP8Encoder(tls *libc.TLS, enc uintptr) int32 { /* webp_enc.c:254:12: */ var ok int32 = 1 - if enc != (uintptr(0)) { + if enc != uintptr(0) { ok = VP8EncDeleteAlpha(tls, enc) - VP8TBufferClear(tls, (enc + 496 /* &.tokens_ */)) + VP8TBufferClear(tls, enc+496) WebPSafeFree(tls, enc) } return ok @@ -38565,8 +38267,8 @@ func DeleteVP8Encoder(tls *libc.TLS, enc uintptr) int32 { /* webp_enc.c:254:12: //------------------------------------------------------------------------------ func GetPSNR2(tls *libc.TLS, err uint64_t, size uint64_t) float64 { /* webp_enc.c:267:15: */ - if (err > uint64(0)) && (size > uint64(0)) { - return (10. * libc.Xlog10(tls, (((float64(255.)*255.)*float64(size))/float64(err)))) + if err > uint64(0) && size > uint64(0) { + return 10. * libc.Xlog10(tls, float64(255.)*255.*float64(size)/float64(err)) } return 99. } @@ -38575,43 +38277,43 @@ func FinalizePSNR(tls *libc.TLS, enc uintptr) { /* webp_enc.c:271:13: */ var stats uintptr = (*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats var size uint64_t = (*VP8Encoder)(unsafe.Pointer(enc)).sse_count_ var sse uintptr = enc + 23512 /* &.sse_ */ - *(*float32)(unsafe.Pointer((stats + 4 /* &.PSNR */))) = float32(GetPSNR2(tls, *(*uint64_t)(unsafe.Pointer(sse)), size)) - *(*float32)(unsafe.Pointer((stats + 4 /* &.PSNR */) + 1*4)) = float32(GetPSNR2(tls, *(*uint64_t)(unsafe.Pointer(sse + 1*8)), (size / uint64(4)))) - *(*float32)(unsafe.Pointer((stats + 4 /* &.PSNR */) + 2*4)) = float32(GetPSNR2(tls, *(*uint64_t)(unsafe.Pointer(sse + 2*8)), (size / uint64(4)))) - *(*float32)(unsafe.Pointer((stats + 4 /* &.PSNR */) + 3*4)) = float32(GetPSNR2(tls, ((*(*uint64_t)(unsafe.Pointer(sse)) + *(*uint64_t)(unsafe.Pointer(sse + 1*8))) + *(*uint64_t)(unsafe.Pointer(sse + 2*8))), ((size * uint64(3)) / uint64(2)))) - *(*float32)(unsafe.Pointer((stats + 4 /* &.PSNR */) + 4*4)) = float32(GetPSNR2(tls, *(*uint64_t)(unsafe.Pointer(sse + 3*8)), size)) + *(*float32)(unsafe.Pointer(stats + 4)) = float32(GetPSNR2(tls, *(*uint64_t)(unsafe.Pointer(sse)), size)) + *(*float32)(unsafe.Pointer(stats + 4 + 1*4)) = float32(GetPSNR2(tls, *(*uint64_t)(unsafe.Pointer(sse + 1*8)), size/uint64(4))) + *(*float32)(unsafe.Pointer(stats + 4 + 2*4)) = float32(GetPSNR2(tls, *(*uint64_t)(unsafe.Pointer(sse + 2*8)), size/uint64(4))) + *(*float32)(unsafe.Pointer(stats + 4 + 3*4)) = float32(GetPSNR2(tls, *(*uint64_t)(unsafe.Pointer(sse))+*(*uint64_t)(unsafe.Pointer(sse + 1*8))+*(*uint64_t)(unsafe.Pointer(sse + 2*8)), size*uint64(3)/uint64(2))) + *(*float32)(unsafe.Pointer(stats + 4 + 4*4)) = float32(GetPSNR2(tls, *(*uint64_t)(unsafe.Pointer(sse + 3*8)), size)) } func StoreStats(tls *libc.TLS, enc uintptr) { /* webp_enc.c:283:13: */ var stats uintptr = (*WebPPicture)(unsafe.Pointer((*VP8Encoder)(unsafe.Pointer(enc)).pic_)).stats - if stats != (uintptr(0)) { + if stats != uintptr(0) { var i int32 var s int32 for i = 0; i < NUM_MB_SEGMENTS; i++ { - *(*int32)(unsafe.Pointer((stats + 124 /* &.segment_level */) + uintptr(i)*4)) = (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(i)*744)).fstrength_ - *(*int32)(unsafe.Pointer((stats + 108 /* &.segment_quant */) + uintptr(i)*4)) = (*VP8SegmentInfo)(unsafe.Pointer((enc + 608 /* &.dqm_ */) + uintptr(i)*744)).quant_ + *(*int32)(unsafe.Pointer(stats + 124 + uintptr(i)*4)) = (*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(i)*744)).fstrength_ + *(*int32)(unsafe.Pointer(stats + 108 + uintptr(i)*4)) = (*VP8SegmentInfo)(unsafe.Pointer(enc + 608 + uintptr(i)*744)).quant_ for s = 0; s <= 2; s++ { - *(*int32)(unsafe.Pointer(((stats + 44 /* &.residual_bytes */) + uintptr(s)*16) + uintptr(i)*4)) = *(*int32)(unsafe.Pointer(((enc + 23556 /* &.residual_bytes_ */) + uintptr(s)*16) + uintptr(i)*4)) + *(*int32)(unsafe.Pointer(stats + 44 + uintptr(s)*16 + uintptr(i)*4)) = *(*int32)(unsafe.Pointer(enc + 23556 + uintptr(s)*16 + uintptr(i)*4)) } } FinalizePSNR(tls, enc) (*WebPAuxStats)(unsafe.Pointer(stats)).coded_size = (*VP8Encoder)(unsafe.Pointer(enc)).coded_size_ for i = 0; i < 3; i++ { - *(*int32)(unsafe.Pointer((stats + 24 /* &.block_count */) + uintptr(i)*4)) = *(*int32)(unsafe.Pointer((enc + 23604 /* &.block_count_ */) + uintptr(i)*4)) + *(*int32)(unsafe.Pointer(stats + 24 + uintptr(i)*4)) = *(*int32)(unsafe.Pointer(enc + 23604 + uintptr(i)*4)) } } } func WebPEncodingSetError(tls *libc.TLS, pic uintptr, error WebPEncodingError) int32 { /* webp_enc.c:306:5: */ - (*WebPPicture)(unsafe.Pointer((pic))).error_code = error + (*WebPPicture)(unsafe.Pointer(pic)).error_code = error return 0 } func WebPReportProgress(tls *libc.TLS, pic uintptr, percent int32, percent_store uintptr) int32 { /* webp_enc.c:314:5: */ - if (percent_store != (uintptr(0))) && (percent != *(*int32)(unsafe.Pointer(percent_store))) { + if percent_store != uintptr(0) && percent != *(*int32)(unsafe.Pointer(percent_store)) { *(*int32)(unsafe.Pointer(percent_store)) = percent - if ((*WebPPicture)(unsafe.Pointer(pic)).progress_hook != 0) && !((*struct { + if (*WebPPicture)(unsafe.Pointer(pic)).progress_hook != 0 && !((*struct { f func(*libc.TLS, int32, uintptr) int32 })(unsafe.Pointer(&struct{ uintptr }{(*WebPPicture)(unsafe.Pointer(pic)).progress_hook})).f(tls, percent, pic) != 0) { // user abort requested @@ -38626,45 +38328,45 @@ func WebPReportProgress(tls *libc.TLS, pic uintptr, percent int32, percent_store func WebPEncode(tls *libc.TLS, config uintptr, pic uintptr) int32 { /* webp_enc.c:328:5: */ var ok int32 = 0 - if pic == (uintptr(0)) { + if pic == uintptr(0) { return 0 } WebPEncodingSetError(tls, pic, VP8_ENC_OK) // all ok so far - if config == (uintptr(0)) { // bad params + if config == uintptr(0) { // bad params return WebPEncodingSetError(tls, pic, VP8_ENC_ERROR_NULL_PARAMETER) } if !(WebPValidateConfig(tls, config) != 0) { return WebPEncodingSetError(tls, pic, VP8_ENC_ERROR_INVALID_CONFIGURATION) } - if ((*WebPPicture)(unsafe.Pointer(pic)).width <= 0) || ((*WebPPicture)(unsafe.Pointer(pic)).height <= 0) { + if (*WebPPicture)(unsafe.Pointer(pic)).width <= 0 || (*WebPPicture)(unsafe.Pointer(pic)).height <= 0 { return WebPEncodingSetError(tls, pic, VP8_ENC_ERROR_BAD_DIMENSION) } - if ((*WebPPicture)(unsafe.Pointer(pic)).width > 16383) || ((*WebPPicture)(unsafe.Pointer(pic)).height > 16383) { + if (*WebPPicture)(unsafe.Pointer(pic)).width > 16383 || (*WebPPicture)(unsafe.Pointer(pic)).height > 16383 { return WebPEncodingSetError(tls, pic, VP8_ENC_ERROR_BAD_DIMENSION) } - if (*WebPPicture)(unsafe.Pointer(pic)).stats != (uintptr(0)) { + if (*WebPPicture)(unsafe.Pointer(pic)).stats != uintptr(0) { libc.Xmemset(tls, (*WebPPicture)(unsafe.Pointer(pic)).stats, 0, uint64(unsafe.Sizeof(WebPAuxStats{}))) } if !((*WebPConfig)(unsafe.Pointer(config)).lossless != 0) { - var enc uintptr = (uintptr(0)) + var enc uintptr = uintptr(0) - if ((((*WebPPicture)(unsafe.Pointer(pic)).use_argb != 0) || ((*WebPPicture)(unsafe.Pointer(pic)).y == (uintptr(0)))) || ((*WebPPicture)(unsafe.Pointer(pic)).u == (uintptr(0)))) || ((*WebPPicture)(unsafe.Pointer(pic)).v == (uintptr(0))) { + if (*WebPPicture)(unsafe.Pointer(pic)).use_argb != 0 || (*WebPPicture)(unsafe.Pointer(pic)).y == uintptr(0) || (*WebPPicture)(unsafe.Pointer(pic)).u == uintptr(0) || (*WebPPicture)(unsafe.Pointer(pic)).v == uintptr(0) { // Make sure we have YUVA samples. - if ((*WebPConfig)(unsafe.Pointer(config)).use_sharp_yuv != 0) || (((*WebPConfig)(unsafe.Pointer(config)).preprocessing & 4) != 0) { + if (*WebPConfig)(unsafe.Pointer(config)).use_sharp_yuv != 0 || (*WebPConfig)(unsafe.Pointer(config)).preprocessing&4 != 0 { if !(WebPPictureSharpARGBToYUVA(tls, pic) != 0) { return 0 } } else { var dithering float32 = 0. - if ((*WebPConfig)(unsafe.Pointer(config)).preprocessing & 2) != 0 { - var x float32 = ((*WebPConfig)(unsafe.Pointer(config)).quality / 100.) - var x2 float32 = (x * x) + if (*WebPConfig)(unsafe.Pointer(config)).preprocessing&2 != 0 { + var x float32 = (*WebPConfig)(unsafe.Pointer(config)).quality / 100. + var x2 float32 = x * x // slowly decreasing from max dithering at low quality (q->0) // to 0.5 dithering amplitude at high quality (q->100) - dithering = (1.0 + (((float32(0.5) - 1.0) * x2) * x2)) + dithering = 1.0 + (float32(0.5)-1.0)*x2*x2 } if !(WebPPictureARGBToYUVADithered(tls, pic, WEBP_YUV420, dithering) != 0) { return 0 @@ -38677,30 +38379,30 @@ func WebPEncode(tls *libc.TLS, config uintptr, pic uintptr) int32 { /* webp_enc. } enc = InitVP8Encoder(tls, config, pic) - if enc == (uintptr(0)) { + if enc == uintptr(0) { return 0 } // pic->error is already set. // Note: each of the tasks below account for 20% in the progress report. ok = VP8EncAnalyze(tls, enc) // Analysis is done, proceed to actual coding. - ok = (libc.Bool32((ok != 0) && (VP8EncStartAlpha(tls, enc) != 0))) // possibly done in parallel + ok = libc.Bool32(ok != 0 && VP8EncStartAlpha(tls, enc) != 0) // possibly done in parallel if !((*VP8Encoder)(unsafe.Pointer(enc)).use_tokens_ != 0) { - ok = (libc.Bool32((ok != 0) && (VP8EncLoop(tls, enc) != 0))) + ok = libc.Bool32(ok != 0 && VP8EncLoop(tls, enc) != 0) } else { - ok = (libc.Bool32((ok != 0) && (VP8EncTokenLoop(tls, enc) != 0))) + ok = libc.Bool32(ok != 0 && VP8EncTokenLoop(tls, enc) != 0) } - ok = (libc.Bool32((ok != 0) && (VP8EncFinishAlpha(tls, enc) != 0))) + ok = libc.Bool32(ok != 0 && VP8EncFinishAlpha(tls, enc) != 0) - ok = (libc.Bool32((ok != 0) && (VP8EncWrite(tls, enc) != 0))) + ok = libc.Bool32(ok != 0 && VP8EncWrite(tls, enc) != 0) StoreStats(tls, enc) if !(ok != 0) { VP8EncFreeBitWriters(tls, enc) } - ok = ok & (DeleteVP8Encoder(tls, enc)) // must always be called, even if !ok + ok = ok & DeleteVP8Encoder(tls, enc) // must always be called, even if !ok } else { // Make sure we have ARGB samples. - if ((*WebPPicture)(unsafe.Pointer(pic)).argb == (uintptr(0))) && !(WebPPictureYUVAToARGB(tls, pic) != 0) { + if (*WebPPicture)(unsafe.Pointer(pic)).argb == uintptr(0) && !(WebPPictureYUVAToARGB(tls, pic) != 0) { return 0 } @@ -38733,10 +38435,10 @@ func WebPEncode(tls *libc.TLS, config uintptr, pic uintptr) int32 { /* webp_enc. func VP8BitReaderSetBuffer(tls *libc.TLS, br uintptr, start uintptr, size size_t) { /* bit_reader_utils.c:24:6: */ (*VP8BitReader)(unsafe.Pointer(br)).buf_ = start - (*VP8BitReader)(unsafe.Pointer(br)).buf_end_ = (start + uintptr(size)) + (*VP8BitReader)(unsafe.Pointer(br)).buf_end_ = start + uintptr(size) (*VP8BitReader)(unsafe.Pointer(br)).buf_max_ = func() uintptr { if size >= size_t(unsafe.Sizeof(lbit_t(0))) { - return (((start + uintptr(size)) - uintptr(uint64(unsafe.Sizeof(lbit_t(0))))) + uintptr(1)) + return start + uintptr(size) - uintptr(uint64(unsafe.Sizeof(lbit_t(0)))) + uintptr(1) } return start }() @@ -38745,7 +38447,7 @@ func VP8BitReaderSetBuffer(tls *libc.TLS, br uintptr, start uintptr, size size_t func VP8InitBitReader(tls *libc.TLS, br uintptr, start uintptr, size size_t) { /* bit_reader_utils.c:34:6: */ // limit ensured by format and upstream checks - (*VP8BitReader)(unsafe.Pointer(br)).range_ = (range_t(255 - 1)) + (*VP8BitReader)(unsafe.Pointer(br)).range_ = range_t(255 - 1) (*VP8BitReader)(unsafe.Pointer(br)).value_ = uint64(0) (*VP8BitReader)(unsafe.Pointer(br)).bits_ = -8 // to load the very first 8bits (*VP8BitReader)(unsafe.Pointer(br)).eof_ = 0 @@ -38754,10 +38456,10 @@ func VP8InitBitReader(tls *libc.TLS, br uintptr, start uintptr, size size_t) { / } func VP8RemapBitReader(tls *libc.TLS, br uintptr, offset ptrdiff_t) { /* bit_reader_utils.c:47:6: */ - if (*VP8BitReader)(unsafe.Pointer(br)).buf_ != (uintptr(0)) { - *(*uintptr)(unsafe.Pointer((br + 16 /* &.buf_ */))) += (uintptr(offset)) - *(*uintptr)(unsafe.Pointer((br + 24 /* &.buf_end_ */))) += (uintptr(offset)) - *(*uintptr)(unsafe.Pointer((br + 32 /* &.buf_max_ */))) += (uintptr(offset)) + if (*VP8BitReader)(unsafe.Pointer(br)).buf_ != uintptr(0) { + *(*uintptr)(unsafe.Pointer(br + 16)) += uintptr(offset) + *(*uintptr)(unsafe.Pointer(br + 24)) += uintptr(offset) + *(*uintptr)(unsafe.Pointer(br + 32)) += uintptr(offset) } } @@ -38797,11 +38499,11 @@ func VP8LoadFinalBytes(tls *libc.TLS, br uintptr) { /* bit_reader_utils.c:87:6: // Only read 8bits at a time if (*VP8BitReader)(unsafe.Pointer(br)).buf_ < (*VP8BitReader)(unsafe.Pointer(br)).buf_end_ { - *(*int32)(unsafe.Pointer((br + 12 /* &.bits_ */))) += (8) - (*VP8BitReader)(unsafe.Pointer(br)).value_ = ((bit_t(*(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&(*VP8BitReader)(unsafe.Pointer(br)).buf_, 1))))) | ((*VP8BitReader)(unsafe.Pointer(br)).value_ << 8)) + *(*int32)(unsafe.Pointer(br + 12)) += 8 + (*VP8BitReader)(unsafe.Pointer(br)).value_ = bit_t(*(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&(*VP8BitReader)(unsafe.Pointer(br)).buf_, 1)))) | (*VP8BitReader)(unsafe.Pointer(br)).value_<<8 } else if !((*VP8BitReader)(unsafe.Pointer(br)).eof_ != 0) { - libc.AssignShlPtrUint64((br /* &.value_ */), int(8)) - *(*int32)(unsafe.Pointer((br + 12 /* &.bits_ */))) += (8) + libc.AssignShlPtrUint64(br, int(8)) + *(*int32)(unsafe.Pointer(br + 12)) += 8 (*VP8BitReader)(unsafe.Pointer(br)).eof_ = 1 } else { (*VP8BitReader)(unsafe.Pointer(br)).bits_ = 0 // This is to avoid undefined behaviour with shifts. @@ -38814,7 +38516,7 @@ func VP8LoadFinalBytes(tls *libc.TLS, br uintptr) { /* bit_reader_utils.c:87:6: func VP8GetValue(tls *libc.TLS, br uintptr, bits int32) uint32_t { /* bit_reader_utils.c:105:10: */ var v uint32_t = uint32_t(0) for libc.PostDecInt32(&bits, 1) > 0 { - v = v | (uint32_t(VP8GetBit(tls, br, 0x80) << bits)) + v = v | uint32_t(VP8GetBit(tls, br, 0x80)<<bits) } return v } @@ -38855,7 +38557,7 @@ func VP8LInitBitReader(tls *libc.TLS, br uintptr, start uintptr, length size_t) length = size_t(unsafe.Sizeof(vp8l_val_t(0))) } for i = uint64(0); i < length; i++ { - value = value | (vp8l_val_t(*(*uint8_t)(unsafe.Pointer(start + uintptr(i)))) << (uint64(8) * i)) + value = value | vp8l_val_t(*(*uint8_t)(unsafe.Pointer(start + uintptr(i))))<<(uint64(8)*i) } (*VP8LBitReader)(unsafe.Pointer(br)).val_ = value (*VP8LBitReader)(unsafe.Pointer(br)).pos_ = length @@ -38868,7 +38570,7 @@ func VP8LBitReaderSetBuffer(tls *libc.TLS, br uintptr, buf uintptr, len size_t) (*VP8LBitReader)(unsafe.Pointer(br)).buf_ = buf (*VP8LBitReader)(unsafe.Pointer(br)).len_ = len // pos_ > len_ should be considered a param error. - (*VP8LBitReader)(unsafe.Pointer(br)).eos_ = (libc.Bool32(((*VP8LBitReader)(unsafe.Pointer(br)).pos_ > (*VP8LBitReader)(unsafe.Pointer(br)).len_) || (VP8LIsEndOfStream(tls, br) != 0))) + (*VP8LBitReader)(unsafe.Pointer(br)).eos_ = libc.Bool32((*VP8LBitReader)(unsafe.Pointer(br)).pos_ > (*VP8LBitReader)(unsafe.Pointer(br)).len_ || VP8LIsEndOfStream(tls, br) != 0) } func VP8LSetEndOfStream(tls *libc.TLS, br uintptr) { /* bit_reader_utils.c:175:13: */ @@ -38878,11 +38580,11 @@ func VP8LSetEndOfStream(tls *libc.TLS, br uintptr) { /* bit_reader_utils.c:175:1 // If not at EOS, reload up to VP8L_LBITS byte-by-byte func ShiftBytes(tls *libc.TLS, br uintptr) { /* bit_reader_utils.c:181:13: */ - for ((*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ >= 8) && ((*VP8LBitReader)(unsafe.Pointer(br)).pos_ < (*VP8LBitReader)(unsafe.Pointer(br)).len_) { - libc.AssignShrPtrUint64((br /* &.val_ */), int(8)) - *(*vp8l_val_t)(unsafe.Pointer((br /* &.val_ */))) |= ((vp8l_val_t(*(*uint8_t)(unsafe.Pointer((*VP8LBitReader)(unsafe.Pointer(br)).buf_ + uintptr((*VP8LBitReader)(unsafe.Pointer(br)).pos_))))) << (64 - 8)) + for (*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ >= 8 && (*VP8LBitReader)(unsafe.Pointer(br)).pos_ < (*VP8LBitReader)(unsafe.Pointer(br)).len_ { + libc.AssignShrPtrUint64(br, int(8)) + *(*vp8l_val_t)(unsafe.Pointer(br)) |= vp8l_val_t(*(*uint8_t)(unsafe.Pointer((*VP8LBitReader)(unsafe.Pointer(br)).buf_ + uintptr((*VP8LBitReader)(unsafe.Pointer(br)).pos_)))) << (64 - 8) (*VP8LBitReader)(unsafe.Pointer(br)).pos_++ - *(*int32)(unsafe.Pointer((br + 32 /* &.bit_pos_ */))) -= (8) + *(*int32)(unsafe.Pointer(br + 32)) -= 8 } if VP8LIsEndOfStream(tls, br) != 0 { VP8LSetEndOfStream(tls, br) @@ -38891,11 +38593,11 @@ func ShiftBytes(tls *libc.TLS, br uintptr) { /* bit_reader_utils.c:181:13: */ func VP8LDoFillBitWindow(tls *libc.TLS, br uintptr) { /* bit_reader_utils.c:193:6: */ - if ((*VP8LBitReader)(unsafe.Pointer(br)).pos_ + size_t(unsafe.Sizeof(vp8l_val_t(0)))) < (*VP8LBitReader)(unsafe.Pointer(br)).len_ { - libc.AssignShrPtrUint64((br /* &.val_ */), int(32)) - *(*int32)(unsafe.Pointer((br + 32 /* &.bit_pos_ */))) -= (32) - *(*vp8l_val_t)(unsafe.Pointer((br /* &.val_ */))) |= ((vp8l_val_t(WebPMemToUint32(tls, ((*VP8LBitReader)(unsafe.Pointer(br)).buf_ + uintptr((*VP8LBitReader)(unsafe.Pointer(br)).pos_))))) << (64 - 32)) - *(*size_t)(unsafe.Pointer((br + 24 /* &.pos_ */))) += (uint64(4)) + if (*VP8LBitReader)(unsafe.Pointer(br)).pos_+size_t(unsafe.Sizeof(vp8l_val_t(0))) < (*VP8LBitReader)(unsafe.Pointer(br)).len_ { + libc.AssignShrPtrUint64(br, int(32)) + *(*int32)(unsafe.Pointer(br + 32)) -= 32 + *(*vp8l_val_t)(unsafe.Pointer(br)) |= vp8l_val_t(WebPMemToUint32(tls, (*VP8LBitReader)(unsafe.Pointer(br)).buf_+uintptr((*VP8LBitReader)(unsafe.Pointer(br)).pos_))) << (64 - 32) + *(*size_t)(unsafe.Pointer(br + 24)) += uint64(4) return } ShiftBytes(tls, br) // Slow path. @@ -38904,9 +38606,9 @@ func VP8LDoFillBitWindow(tls *libc.TLS, br uintptr) { /* bit_reader_utils.c:193: func VP8LReadBits(tls *libc.TLS, br uintptr, n_bits int32) uint32_t { /* bit_reader_utils.c:208:10: */ // Flag an error if end_of_stream or n_bits is more than allowed limit. - if !((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0) && (n_bits <= 24) { - var val uint32_t = (VP8LPrefetchBits(tls, br) & kBitMask[n_bits]) - var new_bits int32 = ((*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ + n_bits) + if !((*VP8LBitReader)(unsafe.Pointer(br)).eos_ != 0) && n_bits <= 24 { + var val uint32_t = VP8LPrefetchBits(tls, br) & kBitMask[n_bits] + var new_bits int32 = (*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ + n_bits (*VP8LBitReader)(unsafe.Pointer(br)).bit_pos_ = new_bits ShiftBytes(tls, br) return val @@ -38930,7 +38632,7 @@ func VP8LReadBits(tls *libc.TLS, br uintptr, n_bits int32) uint32_t { /* bit_rea func BitWriterResize(tls *libc.TLS, bw uintptr, extra_size size_t) int32 { /* bit_writer_utils.c:26:12: */ var new_buf uintptr var new_size size_t - var needed_size_64b uint64_t = ((*VP8BitWriter)(unsafe.Pointer(bw)).pos_ + extra_size) + var needed_size_64b uint64_t = (*VP8BitWriter)(unsafe.Pointer(bw)).pos_ + extra_size var needed_size size_t = needed_size_64b if needed_size_64b != needed_size { (*VP8BitWriter)(unsafe.Pointer(bw)).error_ = 1 @@ -38940,7 +38642,7 @@ func BitWriterResize(tls *libc.TLS, bw uintptr, extra_size size_t) int32 { /* bi return 1 } // If the following line wraps over 32bit, the test just after will catch it. - new_size = (uint64(2) * (*VP8BitWriter)(unsafe.Pointer(bw)).max_pos_) + new_size = uint64(2) * (*VP8BitWriter)(unsafe.Pointer(bw)).max_pos_ if new_size < needed_size { new_size = needed_size } @@ -38948,7 +38650,7 @@ func BitWriterResize(tls *libc.TLS, bw uintptr, extra_size size_t) int32 { /* bi new_size = uint64(1024) } new_buf = WebPSafeMalloc(tls, 1, new_size) - if new_buf == (uintptr(0)) { + if new_buf == uintptr(0) { (*VP8BitWriter)(unsafe.Pointer(bw)).error_ = 1 return 0 } @@ -38963,24 +38665,24 @@ func BitWriterResize(tls *libc.TLS, bw uintptr, extra_size size_t) int32 { /* bi } func Flush(tls *libc.TLS, bw uintptr) { /* bit_writer_utils.c:55:13: */ - var s int32 = (8 + (*VP8BitWriter)(unsafe.Pointer(bw)).nb_bits_) - var bits int32_t = ((*VP8BitWriter)(unsafe.Pointer(bw)).value_ >> s) + var s int32 = 8 + (*VP8BitWriter)(unsafe.Pointer(bw)).nb_bits_ + var bits int32_t = (*VP8BitWriter)(unsafe.Pointer(bw)).value_ >> s - *(*int32_t)(unsafe.Pointer((bw + 4 /* &.value_ */))) -= (bits << s) - *(*int32)(unsafe.Pointer((bw + 12 /* &.nb_bits_ */))) -= (8) - if (bits & 0xff) != 0xff { + *(*int32_t)(unsafe.Pointer(bw + 4)) -= bits << s + *(*int32)(unsafe.Pointer(bw + 12)) -= 8 + if bits&0xff != 0xff { var pos size_t = (*VP8BitWriter)(unsafe.Pointer(bw)).pos_ - if !(BitWriterResize(tls, bw, (uint64((*VP8BitWriter)(unsafe.Pointer(bw)).run_+1))) != 0) { + if !(BitWriterResize(tls, bw, uint64((*VP8BitWriter)(unsafe.Pointer(bw)).run_+1)) != 0) { return } - if (bits & 0x100) != 0 { // overflow -> propagate carry over pending 0xff's + if bits&0x100 != 0 { // overflow -> propagate carry over pending 0xff's if pos > uint64(0) { - *(*uint8_t)(unsafe.Pointer((*VP8BitWriter)(unsafe.Pointer(bw)).buf_ + uintptr((pos - uint64(1)))))++ + *(*uint8_t)(unsafe.Pointer((*VP8BitWriter)(unsafe.Pointer(bw)).buf_ + uintptr(pos-uint64(1))))++ } } if (*VP8BitWriter)(unsafe.Pointer(bw)).run_ > 0 { var value int32 - if (bits & 0x100) != 0 { + if bits&0x100 != 0 { value = 0x00 } else { value = 0xff @@ -38989,7 +38691,7 @@ func Flush(tls *libc.TLS, bw uintptr) { /* bit_writer_utils.c:55:13: */ *(*uint8_t)(unsafe.Pointer((*VP8BitWriter)(unsafe.Pointer(bw)).buf_ + uintptr(libc.PostIncUint64(&pos, 1)))) = uint8_t(value) } } - *(*uint8_t)(unsafe.Pointer((*VP8BitWriter)(unsafe.Pointer(bw)).buf_ + uintptr(libc.PostIncUint64(&pos, 1)))) = (uint8_t(bits & 0xff)) + *(*uint8_t)(unsafe.Pointer((*VP8BitWriter)(unsafe.Pointer(bw)).buf_ + uintptr(libc.PostIncUint64(&pos, 1)))) = uint8_t(bits & 0xff) (*VP8BitWriter)(unsafe.Pointer(bw)).pos_ = pos } else { (*VP8BitWriter)(unsafe.Pointer(bw)).run_++ // delay writing of bytes 0xff, pending eventual carry. @@ -39025,18 +38727,18 @@ var kNewRange = [128]uint8_t{ } /* bit_writer_utils.c:96:22 */ func VP8PutBit(tls *libc.TLS, bw uintptr, bit int32, prob int32) int32 { /* bit_writer_utils.c:108:5: */ - var split int32 = (((*VP8BitWriter)(unsafe.Pointer(bw)).range_ * prob) >> 8) + var split int32 = (*VP8BitWriter)(unsafe.Pointer(bw)).range_ * prob >> 8 if bit != 0 { - *(*int32_t)(unsafe.Pointer((bw + 4 /* &.value_ */))) += (split + 1) - *(*int32_t)(unsafe.Pointer((bw /* &.range_ */))) -= (split + 1) + *(*int32_t)(unsafe.Pointer(bw + 4)) += split + 1 + *(*int32_t)(unsafe.Pointer(bw)) -= split + 1 } else { (*VP8BitWriter)(unsafe.Pointer(bw)).range_ = split } if (*VP8BitWriter)(unsafe.Pointer(bw)).range_ < 127 { // emit 'shift' bits out and renormalize var shift int32 = int32(kNorm[(*VP8BitWriter)(unsafe.Pointer(bw)).range_]) (*VP8BitWriter)(unsafe.Pointer(bw)).range_ = int32_t(kNewRange[(*VP8BitWriter)(unsafe.Pointer(bw)).range_]) - libc.AssignShlPtrInt32((bw + 4 /* &.value_ */), int(shift)) - *(*int32)(unsafe.Pointer((bw + 12 /* &.nb_bits_ */))) += (shift) + libc.AssignShlPtrInt32(bw+4, int(shift)) + *(*int32)(unsafe.Pointer(bw + 12)) += shift if (*VP8BitWriter)(unsafe.Pointer(bw)).nb_bits_ > 0 { Flush(tls, bw) } @@ -39045,17 +38747,17 @@ func VP8PutBit(tls *libc.TLS, bw uintptr, bit int32, prob int32) int32 { /* bit_ } func VP8PutBitUniform(tls *libc.TLS, bw uintptr, bit int32) int32 { /* bit_writer_utils.c:126:5: */ - var split int32 = ((*VP8BitWriter)(unsafe.Pointer(bw)).range_ >> 1) + var split int32 = (*VP8BitWriter)(unsafe.Pointer(bw)).range_ >> 1 if bit != 0 { - *(*int32_t)(unsafe.Pointer((bw + 4 /* &.value_ */))) += (split + 1) - *(*int32_t)(unsafe.Pointer((bw /* &.range_ */))) -= (split + 1) + *(*int32_t)(unsafe.Pointer(bw + 4)) += split + 1 + *(*int32_t)(unsafe.Pointer(bw)) -= split + 1 } else { (*VP8BitWriter)(unsafe.Pointer(bw)).range_ = split } if (*VP8BitWriter)(unsafe.Pointer(bw)).range_ < 127 { (*VP8BitWriter)(unsafe.Pointer(bw)).range_ = int32_t(kNewRange[(*VP8BitWriter)(unsafe.Pointer(bw)).range_]) - libc.AssignShlPtrInt32((bw + 4 /* &.value_ */), int(1)) - *(*int32)(unsafe.Pointer((bw + 12 /* &.nb_bits_ */))) += (1) + libc.AssignShlPtrInt32(bw+4, int(1)) + *(*int32)(unsafe.Pointer(bw + 12)) += 1 if (*VP8BitWriter)(unsafe.Pointer(bw)).nb_bits_ > 0 { Flush(tls, bw) } @@ -39066,33 +38768,33 @@ func VP8PutBitUniform(tls *libc.TLS, bw uintptr, bit int32) int32 { /* bit_write func VP8PutBits(tls *libc.TLS, bw uintptr, value uint32_t, nb_bits int32) { /* bit_writer_utils.c:143:6: */ var mask uint32_t - for mask = (uint32(1) << (nb_bits - 1)); mask != 0; mask >>= 1 { - VP8PutBitUniform(tls, bw, (int32(value & mask))) + for mask = uint32(1) << (nb_bits - 1); mask != 0; mask >>= 1 { + VP8PutBitUniform(tls, bw, int32(value&mask)) } } func VP8PutSignedBits(tls *libc.TLS, bw uintptr, value int32, nb_bits int32) { /* bit_writer_utils.c:151:6: */ - if !(VP8PutBitUniform(tls, bw, (libc.Bool32(value != 0))) != 0) { + if !(VP8PutBitUniform(tls, bw, libc.Bool32(value != 0)) != 0) { return } if value < 0 { - VP8PutBits(tls, bw, (uint32(((-value) << 1) | 1)), (nb_bits + 1)) + VP8PutBits(tls, bw, uint32(-value<<1|1), nb_bits+1) } else { - VP8PutBits(tls, bw, (uint32(value << 1)), (nb_bits + 1)) + VP8PutBits(tls, bw, uint32(value<<1), nb_bits+1) } } //------------------------------------------------------------------------------ func VP8BitWriterInit(tls *libc.TLS, bw uintptr, expected_size size_t) int32 { /* bit_writer_utils.c:162:5: */ - (*VP8BitWriter)(unsafe.Pointer(bw)).range_ = (255 - 1) + (*VP8BitWriter)(unsafe.Pointer(bw)).range_ = 255 - 1 (*VP8BitWriter)(unsafe.Pointer(bw)).value_ = 0 (*VP8BitWriter)(unsafe.Pointer(bw)).run_ = 0 (*VP8BitWriter)(unsafe.Pointer(bw)).nb_bits_ = -8 (*VP8BitWriter)(unsafe.Pointer(bw)).pos_ = uint64(0) (*VP8BitWriter)(unsafe.Pointer(bw)).max_pos_ = uint64(0) (*VP8BitWriter)(unsafe.Pointer(bw)).error_ = 0 - (*VP8BitWriter)(unsafe.Pointer(bw)).buf_ = (uintptr(0)) + (*VP8BitWriter)(unsafe.Pointer(bw)).buf_ = uintptr(0) if expected_size > uint64(0) { return BitWriterResize(tls, bw, expected_size) } @@ -39100,7 +38802,7 @@ func VP8BitWriterInit(tls *libc.TLS, bw uintptr, expected_size size_t) int32 { / } func VP8BitWriterFinish(tls *libc.TLS, bw uintptr) uintptr { /* bit_writer_utils.c:174:8: */ - VP8PutBits(tls, bw, uint32(0), (9 - (*VP8BitWriter)(unsafe.Pointer(bw)).nb_bits_)) + VP8PutBits(tls, bw, uint32(0), 9-(*VP8BitWriter)(unsafe.Pointer(bw)).nb_bits_) (*VP8BitWriter)(unsafe.Pointer(bw)).nb_bits_ = 0 // pad with zeroes Flush(tls, bw) return (*VP8BitWriter)(unsafe.Pointer(bw)).buf_ @@ -39114,13 +38816,13 @@ func VP8BitWriterAppend(tls *libc.TLS, bw uintptr, data uintptr, size size_t) in if !(BitWriterResize(tls, bw, size) != 0) { return 0 } - libc.Xmemcpy(tls, ((*VP8BitWriter)(unsafe.Pointer(bw)).buf_ + uintptr((*VP8BitWriter)(unsafe.Pointer(bw)).pos_)), data, size) - *(*size_t)(unsafe.Pointer((bw + 24 /* &.pos_ */))) += (size) + libc.Xmemcpy(tls, (*VP8BitWriter)(unsafe.Pointer(bw)).buf_+uintptr((*VP8BitWriter)(unsafe.Pointer(bw)).pos_), data, size) + *(*size_t)(unsafe.Pointer(bw + 24)) += size return 1 } func VP8BitWriterWipeOut(tls *libc.TLS, bw uintptr) { /* bit_writer_utils.c:191:6: */ - if bw != (uintptr(0)) { + if bw != uintptr(0) { WebPSafeFree(tls, (*VP8BitWriter)(unsafe.Pointer(bw)).buf_) libc.Xmemset(tls, bw, 0, uint64(unsafe.Sizeof(VP8BitWriter{}))) } @@ -39136,25 +38838,25 @@ func VP8BitWriterWipeOut(tls *libc.TLS, bw uintptr) { /* bit_writer_utils.c:191: func VP8LBitWriterResize(tls *libc.TLS, bw uintptr, extra_size size_t) int32 { /* bit_writer_utils.c:206:12: */ var allocated_buf uintptr var allocated_size size_t - var max_bytes size_t = (size_t((int64((*VP8LBitWriter)(unsafe.Pointer(bw)).end_) - int64((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_)) / 1)) - var current_size size_t = (size_t((int64((*VP8LBitWriter)(unsafe.Pointer(bw)).cur_) - int64((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_)) / 1)) - var size_required_64b uint64_t = (current_size + extra_size) + var max_bytes size_t = size_t((int64((*VP8LBitWriter)(unsafe.Pointer(bw)).end_) - int64((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_)) / 1) + var current_size size_t = size_t((int64((*VP8LBitWriter)(unsafe.Pointer(bw)).cur_) - int64((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_)) / 1) + var size_required_64b uint64_t = current_size + extra_size var size_required size_t = size_required_64b if size_required != size_required_64b { (*VP8LBitWriter)(unsafe.Pointer(bw)).error_ = 1 return 0 } - if (max_bytes > uint64(0)) && (size_required <= max_bytes) { + if max_bytes > uint64(0) && size_required <= max_bytes { return 1 } - allocated_size = ((uint64(3) * max_bytes) >> 1) + allocated_size = uint64(3) * max_bytes >> 1 if allocated_size < size_required { allocated_size = size_required } // make allocated size multiple of 1k - allocated_size = (((allocated_size >> 10) + uint64(1)) << 10) + allocated_size = (allocated_size>>10 + uint64(1)) << 10 allocated_buf = WebPSafeMalloc(tls, 1, allocated_size) - if allocated_buf == (uintptr(0)) { + if allocated_buf == uintptr(0) { (*VP8LBitWriter)(unsafe.Pointer(bw)).error_ = 1 return 0 } @@ -39163,8 +38865,8 @@ func VP8LBitWriterResize(tls *libc.TLS, bw uintptr, extra_size size_t) int32 { / } WebPSafeFree(tls, (*VP8LBitWriter)(unsafe.Pointer(bw)).buf_) (*VP8LBitWriter)(unsafe.Pointer(bw)).buf_ = allocated_buf - (*VP8LBitWriter)(unsafe.Pointer(bw)).cur_ = ((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_ + uintptr(current_size)) - (*VP8LBitWriter)(unsafe.Pointer(bw)).end_ = ((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_ + uintptr(allocated_size)) + (*VP8LBitWriter)(unsafe.Pointer(bw)).cur_ = (*VP8LBitWriter)(unsafe.Pointer(bw)).buf_ + uintptr(current_size) + (*VP8LBitWriter)(unsafe.Pointer(bw)).end_ = (*VP8LBitWriter)(unsafe.Pointer(bw)).buf_ + uintptr(allocated_size) return 1 } @@ -39174,7 +38876,7 @@ func VP8LBitWriterInit(tls *libc.TLS, bw uintptr, expected_size size_t) int32 { } func VP8LBitWriterClone(tls *libc.TLS, src uintptr, dst uintptr) int32 { /* bit_writer_utils.c:242:5: */ - var current_size size_t = (size_t((int64((*VP8LBitWriter)(unsafe.Pointer(src)).cur_) - int64((*VP8LBitWriter)(unsafe.Pointer(src)).buf_)) / 1)) + var current_size size_t = size_t((int64((*VP8LBitWriter)(unsafe.Pointer(src)).cur_) - int64((*VP8LBitWriter)(unsafe.Pointer(src)).buf_)) / 1) if !(VP8LBitWriterResize(tls, dst, current_size) != 0) { return 0 @@ -39183,12 +38885,12 @@ func VP8LBitWriterClone(tls *libc.TLS, src uintptr, dst uintptr) int32 { /* bit_ (*VP8LBitWriter)(unsafe.Pointer(dst)).bits_ = (*VP8LBitWriter)(unsafe.Pointer(src)).bits_ (*VP8LBitWriter)(unsafe.Pointer(dst)).used_ = (*VP8LBitWriter)(unsafe.Pointer(src)).used_ (*VP8LBitWriter)(unsafe.Pointer(dst)).error_ = (*VP8LBitWriter)(unsafe.Pointer(src)).error_ - (*VP8LBitWriter)(unsafe.Pointer(dst)).cur_ = ((*VP8LBitWriter)(unsafe.Pointer(dst)).buf_ + uintptr(current_size)) + (*VP8LBitWriter)(unsafe.Pointer(dst)).cur_ = (*VP8LBitWriter)(unsafe.Pointer(dst)).buf_ + uintptr(current_size) return 1 } func VP8LBitWriterWipeOut(tls *libc.TLS, bw uintptr) { /* bit_writer_utils.c:255:6: */ - if bw != (uintptr(0)) { + if bw != uintptr(0) { WebPSafeFree(tls, (*VP8LBitWriter)(unsafe.Pointer(bw)).buf_) libc.Xmemset(tls, bw, 0, uint64(unsafe.Sizeof(VP8LBitWriter{}))) } @@ -39197,7 +38899,7 @@ func VP8LBitWriterWipeOut(tls *libc.TLS, bw uintptr) { /* bit_writer_utils.c:255 func VP8LBitWriterReset(tls *libc.TLS, bw_init uintptr, bw uintptr) { /* bit_writer_utils.c:262:6: */ (*VP8LBitWriter)(unsafe.Pointer(bw)).bits_ = (*VP8LBitWriter)(unsafe.Pointer(bw_init)).bits_ (*VP8LBitWriter)(unsafe.Pointer(bw)).used_ = (*VP8LBitWriter)(unsafe.Pointer(bw_init)).used_ - (*VP8LBitWriter)(unsafe.Pointer(bw)).cur_ = ((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_ + uintptr(((int64((*VP8LBitWriter)(unsafe.Pointer(bw_init)).cur_) - int64((*VP8LBitWriter)(unsafe.Pointer(bw_init)).buf_)) / 1))) + (*VP8LBitWriter)(unsafe.Pointer(bw)).cur_ = (*VP8LBitWriter)(unsafe.Pointer(bw)).buf_ + uintptr((int64((*VP8LBitWriter)(unsafe.Pointer(bw_init)).cur_)-int64((*VP8LBitWriter)(unsafe.Pointer(bw_init)).buf_))/1) (*VP8LBitWriter)(unsafe.Pointer(bw)).error_ = (*VP8LBitWriter)(unsafe.Pointer(bw_init)).error_ } @@ -39210,18 +38912,18 @@ func VP8LBitWriterSwap(tls *libc.TLS, src uintptr, dst uintptr) { /* bit_writer_ func VP8LPutBitsFlushBits(tls *libc.TLS, bw uintptr) { /* bit_writer_utils.c:277:6: */ // If needed, make some room by flushing some bits out. - if ((*VP8LBitWriter)(unsafe.Pointer(bw)).cur_ + uintptr(4)) > (*VP8LBitWriter)(unsafe.Pointer(bw)).end_ { - var extra_size uint64_t = (uint64_t((uint64((int64((*VP8LBitWriter)(unsafe.Pointer(bw)).end_) - int64((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_)) / 1)) + (32768))) + if (*VP8LBitWriter)(unsafe.Pointer(bw)).cur_+uintptr(4) > (*VP8LBitWriter)(unsafe.Pointer(bw)).end_ { + var extra_size uint64_t = uint64_t(uint64((int64((*VP8LBitWriter)(unsafe.Pointer(bw)).end_)-int64((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_))/1) + 32768) if !(CheckSizeOverflow(tls, extra_size) != 0) || !(VP8LBitWriterResize(tls, bw, extra_size) != 0) { (*VP8LBitWriter)(unsafe.Pointer(bw)).cur_ = (*VP8LBitWriter)(unsafe.Pointer(bw)).buf_ (*VP8LBitWriter)(unsafe.Pointer(bw)).error_ = 1 return } } - *(*vp8l_wtype_t)(unsafe.Pointer((*VP8LBitWriter)(unsafe.Pointer(bw)).cur_)) = (vp8l_wtype_t((*VP8LBitWriter)(unsafe.Pointer(bw)).bits_)) - *(*uintptr)(unsafe.Pointer((bw + 24 /* &.cur_ */))) += (uintptr(4)) - libc.AssignShrPtrUint64((bw /* &.bits_ */), int(32)) - *(*int32)(unsafe.Pointer((bw + 8 /* &.used_ */))) -= (32) + *(*vp8l_wtype_t)(unsafe.Pointer((*VP8LBitWriter)(unsafe.Pointer(bw)).cur_)) = vp8l_wtype_t((*VP8LBitWriter)(unsafe.Pointer(bw)).bits_) + *(*uintptr)(unsafe.Pointer(bw + 24)) += uintptr(4) + libc.AssignShrPtrUint64(bw, int(32)) + *(*int32)(unsafe.Pointer(bw + 8)) -= 32 } func VP8LPutBitsInternal(tls *libc.TLS, bw uintptr, bits uint32_t, n_bits int32) { /* bit_writer_utils.c:294:6: */ @@ -39234,31 +38936,31 @@ func VP8LPutBitsInternal(tls *libc.TLS, bw uintptr, bits uint32_t, n_bits int32) // Special case of overflow handling for 32bit accumulator (2-steps flush). // If needed, make some room by flushing some bits out. for used >= 32 { - if ((*VP8LBitWriter)(unsafe.Pointer(bw)).cur_ + uintptr(4)) > (*VP8LBitWriter)(unsafe.Pointer(bw)).end_ { - var extra_size uint64_t = (uint64_t((uint64((int64((*VP8LBitWriter)(unsafe.Pointer(bw)).end_) - int64((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_)) / 1)) + (32768))) + if (*VP8LBitWriter)(unsafe.Pointer(bw)).cur_+uintptr(4) > (*VP8LBitWriter)(unsafe.Pointer(bw)).end_ { + var extra_size uint64_t = uint64_t(uint64((int64((*VP8LBitWriter)(unsafe.Pointer(bw)).end_)-int64((*VP8LBitWriter)(unsafe.Pointer(bw)).buf_))/1) + 32768) if !(CheckSizeOverflow(tls, extra_size) != 0) || !(VP8LBitWriterResize(tls, bw, extra_size) != 0) { (*VP8LBitWriter)(unsafe.Pointer(bw)).cur_ = (*VP8LBitWriter)(unsafe.Pointer(bw)).buf_ (*VP8LBitWriter)(unsafe.Pointer(bw)).error_ = 1 return } } - *(*vp8l_wtype_t)(unsafe.Pointer((*VP8LBitWriter)(unsafe.Pointer(bw)).cur_)) = (vp8l_wtype_t(lbits)) - *(*uintptr)(unsafe.Pointer((bw + 24 /* &.cur_ */))) += (uintptr(4)) + *(*vp8l_wtype_t)(unsafe.Pointer((*VP8LBitWriter)(unsafe.Pointer(bw)).cur_)) = vp8l_wtype_t(lbits) + *(*uintptr)(unsafe.Pointer(bw + 24)) += uintptr(4) lbits >>= 32 - used = used - (32) + used = used - 32 } - (*VP8LBitWriter)(unsafe.Pointer(bw)).bits_ = (lbits | (vp8l_atype_t(bits) << used)) - (*VP8LBitWriter)(unsafe.Pointer(bw)).used_ = (used + n_bits) + (*VP8LBitWriter)(unsafe.Pointer(bw)).bits_ = lbits | vp8l_atype_t(bits)<<used + (*VP8LBitWriter)(unsafe.Pointer(bw)).used_ = used + n_bits } } func VP8LBitWriterFinish(tls *libc.TLS, bw uintptr) uintptr { /* bit_writer_utils.c:334:8: */ // flush leftover bits - if VP8LBitWriterResize(tls, bw, (uint64(((*VP8LBitWriter)(unsafe.Pointer(bw)).used_+7)>>3))) != 0 { + if VP8LBitWriterResize(tls, bw, uint64(((*VP8LBitWriter)(unsafe.Pointer(bw)).used_+7)>>3)) != 0 { for (*VP8LBitWriter)(unsafe.Pointer(bw)).used_ > 0 { *(*uint8_t)(unsafe.Pointer(libc.PostIncUintptr(&(*VP8LBitWriter)(unsafe.Pointer(bw)).cur_, 1))) = uint8_t((*VP8LBitWriter)(unsafe.Pointer(bw)).bits_) - libc.AssignShrPtrUint64((bw /* &.bits_ */), int(8)) - *(*int32)(unsafe.Pointer((bw + 8 /* &.used_ */))) -= (8) + libc.AssignShrPtrUint64(bw, int(8)) + *(*int32)(unsafe.Pointer(bw + 8)) -= 8 } (*VP8LBitWriter)(unsafe.Pointer(bw)).used_ = 0 } @@ -39273,37 +38975,37 @@ func VP8LBitWriterFinish(tls *libc.TLS, bw uintptr) uintptr { /* bit_writer_util // VP8LColorCache. func VP8LColorCacheInit(tls *libc.TLS, color_cache uintptr, hash_bits int32) int32 { /* color_cache_utils.c:23:5: */ - var hash_size int32 = (int32(1) << hash_bits) + var hash_size int32 = int32(1) << hash_bits (*VP8LColorCache)(unsafe.Pointer(color_cache)).colors_ = WebPSafeCalloc(tls, uint64_t(hash_size), uint64(unsafe.Sizeof(uint32_t(0)))) - if (*VP8LColorCache)(unsafe.Pointer(color_cache)).colors_ == (uintptr(0)) { + if (*VP8LColorCache)(unsafe.Pointer(color_cache)).colors_ == uintptr(0) { return 0 } - (*VP8LColorCache)(unsafe.Pointer(color_cache)).hash_shift_ = (32 - hash_bits) + (*VP8LColorCache)(unsafe.Pointer(color_cache)).hash_shift_ = 32 - hash_bits (*VP8LColorCache)(unsafe.Pointer(color_cache)).hash_bits_ = hash_bits return 1 } func VP8LColorCacheClear(tls *libc.TLS, color_cache uintptr) { /* color_cache_utils.c:35:6: */ - if color_cache != (uintptr(0)) { + if color_cache != uintptr(0) { WebPSafeFree(tls, (*VP8LColorCache)(unsafe.Pointer(color_cache)).colors_) - (*VP8LColorCache)(unsafe.Pointer(color_cache)).colors_ = (uintptr(0)) + (*VP8LColorCache)(unsafe.Pointer(color_cache)).colors_ = uintptr(0) } } func VP8LColorCacheCopy(tls *libc.TLS, src uintptr, dst uintptr) { /* color_cache_utils.c:42:6: */ libc.Xmemcpy(tls, (*VP8LColorCache)(unsafe.Pointer(dst)).colors_, (*VP8LColorCache)(unsafe.Pointer(src)).colors_, - ((size_t(uint64(1)) << (*VP8LColorCache)(unsafe.Pointer(dst)).hash_bits_) * size_t(unsafe.Sizeof(uint32_t(0))))) + size_t(uint64(1))<<(*VP8LColorCache)(unsafe.Pointer(dst)).hash_bits_*size_t(unsafe.Sizeof(uint32_t(0)))) } // ----------------------------------------------------------------------------- // Quick estimate of a potentially interesting filter mode to try. func GradientPredictor(tls *libc.TLS, a uint8_t, b uint8_t, c uint8_t) int32 { /* filters_utils.c:24:24: */ - var g int32 = ((int32(a) + int32(b)) - int32(c)) - if (g & libc.CplInt32(0xff)) == 0 { + var g int32 = int32(a) + int32(b) - int32(c) + if g&libc.CplInt32(0xff) == 0 { return g } if g < 0 { @@ -39320,23 +39022,23 @@ func WebPEstimateBestFilter(tls *libc.TLS, data uintptr, width int32, height int var j int32 // var bins [4][16]int32 at bp, 256 - libc.Xmemset(tls, (bp) /* &bins[0] */, 0, uint64(unsafe.Sizeof([4][16]int32{}))) + libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof([4][16]int32{}))) // We only sample every other pixels. That's enough. - for j = 2; j < (height - 1); j = j + (2) { - var p uintptr = (data + uintptr((j * stride))) + for j = 2; j < height-1; j = j + 2 { + var p uintptr = data + uintptr(j*stride) var mean int32 = int32(*(*uint8_t)(unsafe.Pointer(p))) - for i = 2; i < (width - 1); i = i + (2) { - var diff0 int32 = (libc.Xabs(tls, ((int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(i)))))-(mean))) >> 4) - var diff1 int32 = (libc.Xabs(tls, ((int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(i)))))-(int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((i - 1)))))))) >> 4) - var diff2 int32 = (libc.Xabs(tls, ((int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(i)))))-(int32(*(*uint8_t)(unsafe.Pointer(p + uintptr((i - width)))))))) >> 4) - var grad_pred int32 = GradientPredictor(tls, *(*uint8_t)(unsafe.Pointer(p + uintptr((i - 1)))), *(*uint8_t)(unsafe.Pointer(p + uintptr((i - width)))), *(*uint8_t)(unsafe.Pointer(p + uintptr(((i - width) - 1))))) - var diff3 int32 = (libc.Xabs(tls, ((int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(i)))))-(grad_pred))) >> 4) - *(*int32)(unsafe.Pointer((bp) /* &bins[0] */ + uintptr(diff0)*4)) = 1 - *(*int32)(unsafe.Pointer(((bp) /* &bins[0] */ + 1*64) + uintptr(diff1)*4)) = 1 - *(*int32)(unsafe.Pointer(((bp) /* &bins[0] */ + 2*64) + uintptr(diff2)*4)) = 1 - *(*int32)(unsafe.Pointer(((bp) /* &bins[0] */ + 3*64) + uintptr(diff3)*4)) = 1 - mean = ((((3 * mean) + int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(i))))) + 2) >> 2) + for i = 2; i < width-1; i = i + 2 { + var diff0 int32 = libc.Xabs(tls, int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(i))))-mean) >> 4 + var diff1 int32 = libc.Xabs(tls, int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(i))))-int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(i-1))))) >> 4 + var diff2 int32 = libc.Xabs(tls, int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(i))))-int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(i-width))))) >> 4 + var grad_pred int32 = GradientPredictor(tls, *(*uint8_t)(unsafe.Pointer(p + uintptr(i-1))), *(*uint8_t)(unsafe.Pointer(p + uintptr(i-width))), *(*uint8_t)(unsafe.Pointer(p + uintptr(i-width-1)))) + var diff3 int32 = libc.Xabs(tls, int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(i))))-grad_pred) >> 4 + *(*int32)(unsafe.Pointer(bp + uintptr(diff0)*4)) = 1 + *(*int32)(unsafe.Pointer(bp + 1*64 + uintptr(diff1)*4)) = 1 + *(*int32)(unsafe.Pointer(bp + 2*64 + uintptr(diff2)*4)) = 1 + *(*int32)(unsafe.Pointer(bp + 3*64 + uintptr(diff3)*4)) = 1 + mean = (3*mean + int32(*(*uint8_t)(unsafe.Pointer(p + uintptr(i)))) + 2) >> 2 } } { @@ -39346,8 +39048,8 @@ func WebPEstimateBestFilter(tls *libc.TLS, data uintptr, width int32, height int for filter = WEBP_FILTER_NONE; filter < WEBP_FILTER_LAST; filter++ { var score int32 = 0 for i = 0; i < 16; i++ { - if *(*int32)(unsafe.Pointer(((bp) /* &bins[0] */ + uintptr(filter)*64) + uintptr(i)*4)) > 0 { - score = score + (i) + if *(*int32)(unsafe.Pointer(bp + uintptr(filter)*64 + uintptr(i)*4)) > 0 { + score = score + i } } if score < best_score { @@ -39375,7 +39077,7 @@ func WebPEstimateBestFilter(tls *libc.TLS, data uintptr, width int32, height int // Heuristics for selecting the stride ranges to collapse. func ValuesShouldBeCollapsedToStrideAverage(tls *libc.TLS, a int32, b int32) int32 { /* huffman_encode_utils.c:25:12: */ - return (libc.Bool32(libc.Xabs(tls, (a-b)) < 4)) + return libc.Bool32(libc.Xabs(tls, a-b) < 4) } // Change the population counts in a way that the consequent @@ -39387,7 +39089,7 @@ func OptimizeHuffmanForRle(tls *libc.TLS, length int32, good_for_rle uintptr, co if length == 0 { return // All zeros. } - if *(*uint32_t)(unsafe.Pointer(counts + uintptr((length-1))*4)) != uint32_t(0) { + if *(*uint32_t)(unsafe.Pointer(counts + uintptr(length-1)*4)) != uint32_t(0) { // Now counts[0..length - 1] does not have trailing zeros. break } @@ -39400,12 +39102,12 @@ func OptimizeHuffmanForRle(tls *libc.TLS, length int32, good_for_rle uintptr, co // Mark any seq of non-0's that is longer as 7 as a good_for_rle. var symbol uint32_t = *(*uint32_t)(unsafe.Pointer(counts)) var stride int32 = 0 - for i = 0; i < (length + 1); i++ { - if (i == length) || (*(*uint32_t)(unsafe.Pointer(counts + uintptr(i)*4)) != symbol) { - if ((symbol == uint32_t(0)) && (stride >= 5)) || ((symbol != uint32_t(0)) && (stride >= 7)) { + for i = 0; i < length+1; i++ { + if i == length || *(*uint32_t)(unsafe.Pointer(counts + uintptr(i)*4)) != symbol { + if symbol == uint32_t(0) && stride >= 5 || symbol != uint32_t(0) && stride >= 7 { var k int32 for k = 0; k < stride; k++ { - *(*uint8_t)(unsafe.Pointer(good_for_rle + uintptr(((i - k) - 1)))) = uint8_t(1) + *(*uint8_t)(unsafe.Pointer(good_for_rle + uintptr(i-k-1))) = uint8_t(1) } } stride = 1 @@ -39423,12 +39125,12 @@ func OptimizeHuffmanForRle(tls *libc.TLS, length int32, good_for_rle uintptr, co var stride uint32_t = uint32_t(0) var limit uint32_t = *(*uint32_t)(unsafe.Pointer(counts)) var sum uint32_t = uint32_t(0) - for i = 0; i < (length + 1); i++ { - if (((i == length) || (*(*uint8_t)(unsafe.Pointer(good_for_rle + uintptr(i))) != 0)) || ((i != 0) && (*(*uint8_t)(unsafe.Pointer(good_for_rle + uintptr((i - 1)))) != 0))) || !(ValuesShouldBeCollapsedToStrideAverage(tls, int32(*(*uint32_t)(unsafe.Pointer(counts + uintptr(i)*4))), int32(limit)) != 0) { - if (stride >= uint32_t(4)) || ((stride >= uint32_t(3)) && (sum == uint32_t(0))) { + for i = 0; i < length+1; i++ { + if i == length || *(*uint8_t)(unsafe.Pointer(good_for_rle + uintptr(i))) != 0 || i != 0 && *(*uint8_t)(unsafe.Pointer(good_for_rle + uintptr(i-1))) != 0 || !(ValuesShouldBeCollapsedToStrideAverage(tls, int32(*(*uint32_t)(unsafe.Pointer(counts + uintptr(i)*4))), int32(limit)) != 0) { + if stride >= uint32_t(4) || stride >= uint32_t(3) && sum == uint32_t(0) { var k uint32_t // The stride must end, collapse what we have, if we have enough (4). - var count uint32_t = ((sum + (stride / uint32_t(2))) / stride) + var count uint32_t = (sum + stride/uint32_t(2)) / stride if count < uint32_t(1) { count = uint32_t(1) } @@ -39439,15 +39141,15 @@ func OptimizeHuffmanForRle(tls *libc.TLS, length int32, good_for_rle uintptr, co for k = uint32_t(0); k < stride; k++ { // We don't want to change value at counts[i], // that is already belonging to the next stride. Thus - 1. - *(*uint32_t)(unsafe.Pointer(counts + uintptr(((uint32_t(i)-k)-uint32_t(1)))*4)) = count + *(*uint32_t)(unsafe.Pointer(counts + uintptr(uint32_t(i)-k-uint32_t(1))*4)) = count } } stride = uint32_t(0) sum = uint32_t(0) - if i < (length - 3) { + if i < length-3 { // All interesting strides have a count of at least 4, // at least when non-zeros. - limit = (((((*(*uint32_t)(unsafe.Pointer(counts + uintptr(i)*4)) + *(*uint32_t)(unsafe.Pointer(counts + uintptr((i+1))*4))) + *(*uint32_t)(unsafe.Pointer(counts + uintptr((i+2))*4))) + *(*uint32_t)(unsafe.Pointer(counts + uintptr((i+3))*4))) + uint32_t(2)) / uint32_t(4)) + limit = (*(*uint32_t)(unsafe.Pointer(counts + uintptr(i)*4)) + *(*uint32_t)(unsafe.Pointer(counts + uintptr(i+1)*4)) + *(*uint32_t)(unsafe.Pointer(counts + uintptr(i+2)*4)) + *(*uint32_t)(unsafe.Pointer(counts + uintptr(i+3)*4)) + uint32_t(2)) / uint32_t(4) } else if i < length { limit = *(*uint32_t)(unsafe.Pointer(counts + uintptr(i)*4)) } else { @@ -39456,9 +39158,9 @@ func OptimizeHuffmanForRle(tls *libc.TLS, length int32, good_for_rle uintptr, co } stride++ if i != length { - sum = sum + (*(*uint32_t)(unsafe.Pointer(counts + uintptr(i)*4))) + sum = sum + *(*uint32_t)(unsafe.Pointer(counts + uintptr(i)*4)) if stride >= uint32_t(4) { - limit = ((sum + (stride / uint32_t(2))) / stride) + limit = (sum + stride/uint32_t(2)) / stride } } } @@ -39487,8 +39189,8 @@ func CompareHuffmanTrees(tls *libc.TLS, ptr1 uintptr, ptr2 uintptr) int32 { /* h func SetBitDepths(tls *libc.TLS, tree uintptr, pool uintptr, bit_depths uintptr, level int32) { /* huffman_encode_utils.c:135:13: */ if (*HuffmanTree)(unsafe.Pointer(tree)).pool_index_left_ >= 0 { - SetBitDepths(tls, (pool + uintptr((*HuffmanTree)(unsafe.Pointer(tree)).pool_index_left_)*16), pool, bit_depths, (level + 1)) - SetBitDepths(tls, (pool + uintptr((*HuffmanTree)(unsafe.Pointer(tree)).pool_index_right_)*16), pool, bit_depths, (level + 1)) + SetBitDepths(tls, pool+uintptr((*HuffmanTree)(unsafe.Pointer(tree)).pool_index_left_)*16, pool, bit_depths, level+1) + SetBitDepths(tls, pool+uintptr((*HuffmanTree)(unsafe.Pointer(tree)).pool_index_right_)*16, pool, bit_depths, level+1) } else { *(*uint8_t)(unsafe.Pointer(bit_depths + uintptr((*HuffmanTree)(unsafe.Pointer(tree)).value_))) = uint8_t(level) } @@ -39529,14 +39231,14 @@ func GenerateOptimalTree(tls *libc.TLS, histogram uintptr, histogram_size int32, return } - tree_pool = (tree + uintptr(tree_size_orig)*16) + tree_pool = tree + uintptr(tree_size_orig)*16 // For block sizes with less than 64k symbols we never need to do a // second iteration of this loop. // If we actually start running inside this loop a lot, we would perhaps // be better off with the Katajainen algorithm. - for count_min = uint32_t(1); ; count_min = count_min * (uint32_t(2)) { + for count_min = uint32_t(1); ; count_min = count_min * uint32_t(2) { var tree_size int32 = tree_size_orig // We need to pack the Huffman tree in tree_depth_limit bits. // So, we try by faking histogram entries to be at least 'count_min'. @@ -39567,10 +39269,10 @@ func GenerateOptimalTree(tls *libc.TLS, histogram uintptr, histogram_size int32, var tree_pool_size int32 = 0 for tree_size > 1 { // Finish when we have only one root. var count uint32_t - *(*HuffmanTree)(unsafe.Pointer(tree_pool + uintptr(libc.PostIncInt32(&tree_pool_size, 1))*16)) = *(*HuffmanTree)(unsafe.Pointer(tree + uintptr((tree_size-1))*16)) - *(*HuffmanTree)(unsafe.Pointer(tree_pool + uintptr(libc.PostIncInt32(&tree_pool_size, 1))*16)) = *(*HuffmanTree)(unsafe.Pointer(tree + uintptr((tree_size-2))*16)) - count = ((*HuffmanTree)(unsafe.Pointer(tree_pool+uintptr((tree_pool_size-1))*16)).total_count_ + (*HuffmanTree)(unsafe.Pointer(tree_pool+uintptr((tree_pool_size-2))*16)).total_count_) - tree_size = tree_size - (2) + *(*HuffmanTree)(unsafe.Pointer(tree_pool + uintptr(libc.PostIncInt32(&tree_pool_size, 1))*16)) = *(*HuffmanTree)(unsafe.Pointer(tree + uintptr(tree_size-1)*16)) + *(*HuffmanTree)(unsafe.Pointer(tree_pool + uintptr(libc.PostIncInt32(&tree_pool_size, 1))*16)) = *(*HuffmanTree)(unsafe.Pointer(tree + uintptr(tree_size-2)*16)) + count = (*HuffmanTree)(unsafe.Pointer(tree_pool+uintptr(tree_pool_size-1)*16)).total_count_ + (*HuffmanTree)(unsafe.Pointer(tree_pool+uintptr(tree_pool_size-2)*16)).total_count_ + tree_size = tree_size - 2 { // Search for the insertion point. var k int32 @@ -39579,17 +39281,17 @@ func GenerateOptimalTree(tls *libc.TLS, histogram uintptr, histogram_size int32, break } } - libc.Xmemmove(tls, (tree + uintptr((k+1))*16), (tree + uintptr(k)*16), ((uint64(tree_size - k)) * uint64(unsafe.Sizeof(HuffmanTree{})))) + libc.Xmemmove(tls, tree+uintptr(k+1)*16, tree+uintptr(k)*16, uint64(tree_size-k)*uint64(unsafe.Sizeof(HuffmanTree{}))) (*HuffmanTree)(unsafe.Pointer(tree + uintptr(k)*16)).total_count_ = count (*HuffmanTree)(unsafe.Pointer(tree + uintptr(k)*16)).value_ = -1 - (*HuffmanTree)(unsafe.Pointer(tree + uintptr(k)*16)).pool_index_left_ = (tree_pool_size - 1) - (*HuffmanTree)(unsafe.Pointer(tree + uintptr(k)*16)).pool_index_right_ = (tree_pool_size - 2) - tree_size = (tree_size + 1) + (*HuffmanTree)(unsafe.Pointer(tree + uintptr(k)*16)).pool_index_left_ = tree_pool_size - 1 + (*HuffmanTree)(unsafe.Pointer(tree + uintptr(k)*16)).pool_index_right_ = tree_pool_size - 2 + tree_size = tree_size + 1 } } - SetBitDepths(tls, (tree), tree_pool, bit_depths, 0) + SetBitDepths(tls, tree, tree_pool, bit_depths, 0) } else if tree_size == 1 { // Trivial case: only one element. *(*uint8_t)(unsafe.Pointer(bit_depths + uintptr((*HuffmanTree)(unsafe.Pointer(tree)).value_))) = uint8_t(1) } @@ -39632,14 +39334,14 @@ func CodeRepeatedValues(tls *libc.TLS, repetitions int32, tokens uintptr, value break } else if repetitions < 7 { (*HuffmanTreeToken)(unsafe.Pointer(tokens)).code = uint8_t(16) - (*HuffmanTreeToken)(unsafe.Pointer(tokens)).extra_bits = (uint8_t(repetitions - 3)) + (*HuffmanTreeToken)(unsafe.Pointer(tokens)).extra_bits = uint8_t(repetitions - 3) tokens += 2 break } else { (*HuffmanTreeToken)(unsafe.Pointer(tokens)).code = uint8_t(16) (*HuffmanTreeToken)(unsafe.Pointer(tokens)).extra_bits = uint8_t(3) tokens += 2 - repetitions = repetitions - (6) + repetitions = repetitions - 6 } } return tokens @@ -39657,19 +39359,19 @@ func CodeRepeatedZeros(tls *libc.TLS, repetitions int32, tokens uintptr) uintptr break } else if repetitions < 11 { (*HuffmanTreeToken)(unsafe.Pointer(tokens)).code = uint8_t(17) - (*HuffmanTreeToken)(unsafe.Pointer(tokens)).extra_bits = (uint8_t(repetitions - 3)) + (*HuffmanTreeToken)(unsafe.Pointer(tokens)).extra_bits = uint8_t(repetitions - 3) tokens += 2 break } else if repetitions < 139 { (*HuffmanTreeToken)(unsafe.Pointer(tokens)).code = uint8_t(18) - (*HuffmanTreeToken)(unsafe.Pointer(tokens)).extra_bits = (uint8_t(repetitions - 11)) + (*HuffmanTreeToken)(unsafe.Pointer(tokens)).extra_bits = uint8_t(repetitions - 11) tokens += 2 break } else { (*HuffmanTreeToken)(unsafe.Pointer(tokens)).code = uint8_t(18) (*HuffmanTreeToken)(unsafe.Pointer(tokens)).extra_bits = uint8_t(0x7f) // 138 repeated 0s tokens += 2 - repetitions = repetitions - (138) + repetitions = repetitions - 138 } } return tokens @@ -39677,7 +39379,7 @@ func CodeRepeatedZeros(tls *libc.TLS, repetitions int32, tokens uintptr) uintptr func VP8LCreateCompressedHuffmanTree(tls *libc.TLS, tree uintptr, tokens uintptr, max_tokens int32) int32 { /* huffman_encode_utils.c:326:5: */ var starting_token uintptr = tokens - var ending_token uintptr = (tokens + uintptr(max_tokens)*2) + var ending_token uintptr = tokens + uintptr(max_tokens)*2 _ = ending_token var depth_size int32 = (*HuffmanTreeCode)(unsafe.Pointer(tree)).num_symbols var prev_value int32 = 8 // 8 is the initial value for rle. @@ -39685,23 +39387,23 @@ func VP8LCreateCompressedHuffmanTree(tls *libc.TLS, tree uintptr, tokens uintptr for i < depth_size { var value int32 = int32(*(*uint8_t)(unsafe.Pointer((*HuffmanTreeCode)(unsafe.Pointer(tree)).code_lengths + uintptr(i)))) - var k int32 = (i + 1) + var k int32 = i + 1 var runs int32 - for (k < depth_size) && (int32(*(*uint8_t)(unsafe.Pointer((*HuffmanTreeCode)(unsafe.Pointer(tree)).code_lengths + uintptr(k)))) == value) { + for k < depth_size && int32(*(*uint8_t)(unsafe.Pointer((*HuffmanTreeCode)(unsafe.Pointer(tree)).code_lengths + uintptr(k)))) == value { k++ } - runs = (k - i) + runs = k - i if value == 0 { tokens = CodeRepeatedZeros(tls, runs, tokens) } else { tokens = CodeRepeatedValues(tls, runs, tokens, value, prev_value) prev_value = value } - i = i + (runs) + i = i + runs } _ = ending_token // suppress 'unused variable' warning - return (int32((int64(tokens) - int64(starting_token)) / 2)) + return int32((int64(tokens) - int64(starting_token)) / 2) } // ----------------------------------------------------------------------------- @@ -39716,11 +39418,11 @@ func ReverseBits(tls *libc.TLS, num_bits int32, bits uint32_t) uint32_t { /* huf var retval uint32_t = uint32_t(0) var i int32 = 0 for i < num_bits { - i = i + (4) - retval = retval | (uint32_t(int32(kReversedBits[(bits&uint32_t(0xf))]) << ((15 + 1) - i))) + i = i + 4 + retval = retval | uint32_t(int32(kReversedBits[bits&uint32_t(0xf)])<<(15+1-i)) bits >>= 4 } - retval >>= ((15 + 1) - num_bits) + retval >>= 15 + 1 - num_bits return retval } @@ -39740,21 +39442,21 @@ func ConvertBitDepthsToSymbols(tls *libc.TLS, tree uintptr) { /* huffman_encode_ for i = 0; i < len; i++ { var code_length int32 = int32(*(*uint8_t)(unsafe.Pointer((*HuffmanTreeCode)(unsafe.Pointer(tree)).code_lengths + uintptr(i)))) - *(*int32)(unsafe.Pointer((bp) /* &depth_count[0] */ + uintptr(code_length)*4))++ + *(*int32)(unsafe.Pointer(bp + uintptr(code_length)*4))++ } - *(*int32)(unsafe.Pointer((bp) /* &depth_count[0] */)) = 0 // ignore unused symbol - *(*uint32_t)(unsafe.Pointer((bp + 64) /* &next_code[0] */)) = uint32_t(0) + *(*int32)(unsafe.Pointer(bp)) = 0 // ignore unused symbol + *(*uint32_t)(unsafe.Pointer(bp + 64)) = uint32_t(0) { var code uint32_t = uint32_t(0) for i = 1; i <= 15; i++ { - code = ((code + uint32_t(*(*int32)(unsafe.Pointer((bp) /* &depth_count[0] */ + uintptr((i-1))*4)))) << 1) - *(*uint32_t)(unsafe.Pointer((bp + 64) /* &next_code[0] */ + uintptr(i)*4)) = code + code = (code + uint32_t(*(*int32)(unsafe.Pointer(bp + uintptr(i-1)*4)))) << 1 + *(*uint32_t)(unsafe.Pointer(bp + 64 + uintptr(i)*4)) = code } } for i = 0; i < len; i++ { var code_length int32 = int32(*(*uint8_t)(unsafe.Pointer((*HuffmanTreeCode)(unsafe.Pointer(tree)).code_lengths + uintptr(i)))) - *(*uint16_t)(unsafe.Pointer((*HuffmanTreeCode)(unsafe.Pointer(tree)).codes + uintptr(i)*2)) = uint16_t(ReverseBits(tls, code_length, libc.PostIncUint32(&*(*uint32_t)(unsafe.Pointer((bp + 64) /* &next_code[0] */ + uintptr(code_length)*4)), 1))) + *(*uint16_t)(unsafe.Pointer((*HuffmanTreeCode)(unsafe.Pointer(tree)).codes + uintptr(i)*2)) = uint16_t(ReverseBits(tls, code_length, libc.PostIncUint32(&*(*uint32_t)(unsafe.Pointer(bp + 64 + uintptr(code_length)*4)), 1))) } } @@ -39763,7 +39465,7 @@ func ConvertBitDepthsToSymbols(tls *libc.TLS, tree uintptr) { /* huffman_encode_ func VP8LCreateHuffmanTree(tls *libc.TLS, histogram uintptr, tree_depth_limit int32, buf_rle uintptr, huff_tree uintptr, huff_code uintptr) { /* huffman_encode_utils.c:406:6: */ var num_symbols int32 = (*HuffmanTreeCode)(unsafe.Pointer(huff_code)).num_symbols - libc.Xmemset(tls, buf_rle, 0, (uint64(num_symbols) * uint64(unsafe.Sizeof(uint8_t(0))))) + libc.Xmemset(tls, buf_rle, 0, uint64(num_symbols)*uint64(unsafe.Sizeof(uint8_t(0)))) OptimizeHuffmanForRle(tls, num_symbols, buf_rle, histogram) GenerateOptimalTree(tls, histogram, num_symbols, huff_tree, tree_depth_limit, (*HuffmanTreeCode)(unsafe.Pointer(huff_code)).code_lengths) @@ -39791,15 +39493,15 @@ func VP8LCreateHuffmanTree(tls *libc.TLS, histogram uintptr, tree_depth_limit in func VP8LHtreeGroupsNew(tls *libc.TLS, num_htree_groups int32) uintptr { /* huffman_utils.c:25:11: */ var htree_groups uintptr = WebPSafeMalloc(tls, uint64(num_htree_groups), uint64(unsafe.Sizeof(HTreeGroup{}))) - if htree_groups == (uintptr(0)) { - return (uintptr(0)) + if htree_groups == uintptr(0) { + return uintptr(0) } return htree_groups } func VP8LHtreeGroupsFree(tls *libc.TLS, htree_groups uintptr) { /* huffman_utils.c:35:6: */ - if htree_groups != (uintptr(0)) { + if htree_groups != uintptr(0) { WebPSafeFree(tls, htree_groups) } } @@ -39807,12 +39509,12 @@ func VP8LHtreeGroupsFree(tls *libc.TLS, htree_groups uintptr) { /* huffman_utils // Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the // bit-wise reversal of the len least significant bits of key. func GetNextKey(tls *libc.TLS, key uint32_t, len int32) uint32_t { /* huffman_utils.c:43:29: */ - var step uint32_t = (uint32_t(int32(1) << (len - 1))) - for (key & step) != 0 { + var step uint32_t = uint32_t(int32(1) << (len - 1)) + for key&step != 0 { step >>= 1 } if step != 0 { - return ((key & (step - uint32_t(1))) + step) + return key&(step-uint32_t(1)) + step } return key } @@ -39821,8 +39523,8 @@ func GetNextKey(tls *libc.TLS, key uint32_t, len int32) uint32_t { /* huffman_ut // Assumes that end is an integer multiple of step. func ReplicateValue(tls *libc.TLS, table uintptr, step int32, end int32, code HuffmanCode) { /* huffman_utils.c:53:25: */ - for ok := true; ok; ok = (end > 0) { - end = end - (step) + for __ccgo := true; __ccgo; __ccgo = end > 0 { + end = end - step *(*HuffmanCode)(unsafe.Pointer(table + uintptr(end)*4)) = code } } @@ -39831,16 +39533,16 @@ func ReplicateValue(tls *libc.TLS, table uintptr, step int32, end int32, code Hu // of bit lengths for the remaining symbols, len is the code length of the next // processed symbol func NextTableBitSize(tls *libc.TLS, count uintptr, len int32, root_bits int32) int32 { /* huffman_utils.c:66:24: */ - var left int32 = (int32(1) << (len - root_bits)) + var left int32 = int32(1) << (len - root_bits) for len < 15 { - left = left - (*(*int32)(unsafe.Pointer(count + uintptr(len)*4))) + left = left - *(*int32)(unsafe.Pointer(count + uintptr(len)*4)) if left <= 0 { break } len++ left <<= 1 } - return (len - root_bits) + return len - root_bits } // sorted[code_lengths_size] is a pre-allocated array for sorting symbols @@ -39849,10 +39551,10 @@ func BuildHuffmanTable(tls *libc.TLS, root_table uintptr, root_bits int32, code_ bp := tls.Alloc(128) defer tls.Free(128) - var table uintptr = root_table // next available space in table - var total_size int32 = (int32(1) << root_bits) // total size root table + 2nd level table - var len int32 // current code length - var symbol int32 // symbol index in original or sorted table + var table uintptr = root_table // next available space in table + var total_size int32 = int32(1) << root_bits // total size root table + 2nd level table + var len int32 // current code length + var symbol int32 // symbol index in original or sorted table // number of codes of each length: *(*[16]int32)(unsafe.Pointer(bp /* count */)) = [16]int32{0: 0} // offsets in sorted table for each length: @@ -39863,38 +39565,38 @@ func BuildHuffmanTable(tls *libc.TLS, root_table uintptr, root_bits int32, code_ if *(*int32)(unsafe.Pointer(code_lengths + uintptr(symbol)*4)) > 15 { return 0 } - *(*int32)(unsafe.Pointer((bp) /* &count[0] */ + uintptr(*(*int32)(unsafe.Pointer(code_lengths + uintptr(symbol)*4)))*4))++ + *(*int32)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(code_lengths + uintptr(symbol)*4)))*4))++ } // Error, all code lengths are zeros. - if *(*int32)(unsafe.Pointer((bp) /* &count[0] */)) == code_lengths_size { + if *(*int32)(unsafe.Pointer(bp)) == code_lengths_size { return 0 } // Generate offsets into sorted symbol table by code length. - *(*int32)(unsafe.Pointer((bp + 64) /* &offset[0] */ + 1*4)) = 0 + *(*int32)(unsafe.Pointer(bp + 64 + 1*4)) = 0 for len = 1; len < 15; len++ { - if *(*int32)(unsafe.Pointer((bp) /* &count[0] */ + uintptr(len)*4)) > (int32(1) << len) { + if *(*int32)(unsafe.Pointer(bp + uintptr(len)*4)) > int32(1)<<len { return 0 } - *(*int32)(unsafe.Pointer((bp + 64) /* &offset[0] */ + uintptr((len+1))*4)) = (*(*int32)(unsafe.Pointer((bp + 64) /* &offset[0] */ + uintptr(len)*4)) + *(*int32)(unsafe.Pointer((bp) /* &count[0] */ + uintptr(len)*4))) + *(*int32)(unsafe.Pointer(bp + 64 + uintptr(len+1)*4)) = *(*int32)(unsafe.Pointer(bp + 64 + uintptr(len)*4)) + *(*int32)(unsafe.Pointer(bp + uintptr(len)*4)) } // Sort symbols by length, by symbol order within each length. for symbol = 0; symbol < code_lengths_size; symbol++ { var symbol_code_length int32 = *(*int32)(unsafe.Pointer(code_lengths + uintptr(symbol)*4)) if *(*int32)(unsafe.Pointer(code_lengths + uintptr(symbol)*4)) > 0 { - if sorted != (uintptr(0)) { - *(*uint16_t)(unsafe.Pointer(sorted + uintptr(libc.PostIncInt32(&*(*int32)(unsafe.Pointer((bp + 64) /* &offset[0] */ + uintptr(symbol_code_length)*4)), 1))*2)) = uint16_t(symbol) + if sorted != uintptr(0) { + *(*uint16_t)(unsafe.Pointer(sorted + uintptr(libc.PostIncInt32(&*(*int32)(unsafe.Pointer(bp + 64 + uintptr(symbol_code_length)*4)), 1))*2)) = uint16_t(symbol) } else { - *(*int32)(unsafe.Pointer((bp + 64) /* &offset[0] */ + uintptr(symbol_code_length)*4))++ + *(*int32)(unsafe.Pointer(bp + 64 + uintptr(symbol_code_length)*4))++ } } } // Special case code with only one value. - if *(*int32)(unsafe.Pointer((bp + 64) /* &offset[0] */ + 15*4)) == 1 { - if sorted != (uintptr(0)) { + if *(*int32)(unsafe.Pointer(bp + 64 + 15*4)) == 1 { + if sorted != uintptr(0) { var code HuffmanCode code.bits = uint8_t(0) code.value = *(*uint16_t)(unsafe.Pointer(sorted)) @@ -39904,14 +39606,14 @@ func BuildHuffmanTable(tls *libc.TLS, root_table uintptr, root_bits int32, code_ } { - var step int32 // step size to replicate values in current table - var low uint32_t = libc.Uint32FromInt32(-1) // low bits for current root entry - var mask uint32_t = (uint32_t(total_size - 1)) // mask for low bits - var key uint32_t = uint32_t(0) // reversed prefix code - var num_nodes int32 = 1 // number of Huffman tree nodes - var num_open int32 = 1 // number of open branches in current tree level - var table_bits int32 = root_bits // key length of current table - var table_size int32 = (int32(1) << table_bits) // size of current table + var step int32 // step size to replicate values in current table + var low uint32_t = libc.Uint32FromInt32(-1) // low bits for current root entry + var mask uint32_t = uint32_t(total_size - 1) // mask for low bits + var key uint32_t = uint32_t(0) // reversed prefix code + var num_nodes int32 = 1 // number of Huffman tree nodes + var num_open int32 = 1 // number of open branches in current tree level + var table_bits int32 = root_bits // key length of current table + var table_size int32 = int32(1) << table_bits // size of current table symbol = 0 // Fill in root table. len = 1 @@ -39922,19 +39624,19 @@ func BuildHuffmanTable(tls *libc.TLS, root_table uintptr, root_bits int32, code_ } { num_open <<= 1 - num_nodes = num_nodes + (num_open) - num_open = num_open - (*(*int32)(unsafe.Pointer((bp) /* &count[0] */ + uintptr(len)*4))) + num_nodes = num_nodes + num_open + num_open = num_open - *(*int32)(unsafe.Pointer(bp + uintptr(len)*4)) if num_open < 0 { return 0 } - if root_table == (uintptr(0)) { + if root_table == uintptr(0) { goto __2 } - for ; *(*int32)(unsafe.Pointer((bp) /* &count[0] */ + uintptr(len)*4)) > 0; *(*int32)(unsafe.Pointer((bp) /* &count[0] */ + uintptr(len)*4))-- { + for ; *(*int32)(unsafe.Pointer(bp + uintptr(len)*4)) > 0; *(*int32)(unsafe.Pointer(bp + uintptr(len)*4))-- { var code HuffmanCode code.bits = uint8_t(len) code.value = *(*uint16_t)(unsafe.Pointer(sorted + uintptr(libc.PostIncInt32(&symbol, 1))*2)) - ReplicateValue(tls, (table + uintptr(key)*4), step, table_size, code) + ReplicateValue(tls, table+uintptr(key)*4, step, table_size, code) key = GetNextKey(tls, key, len) } @@ -39949,7 +39651,7 @@ func BuildHuffmanTable(tls *libc.TLS, root_table uintptr, root_bits int32, code_ ; // Fill in 2nd level tables and add pointers to root table. - len = (root_bits + 1) + len = root_bits + 1 step = 2 __4: if !(len <= 15) { @@ -39957,28 +39659,28 @@ func BuildHuffmanTable(tls *libc.TLS, root_table uintptr, root_bits int32, code_ } { num_open <<= 1 - num_nodes = num_nodes + (num_open) - num_open = num_open - (*(*int32)(unsafe.Pointer((bp) /* &count[0] */ + uintptr(len)*4))) + num_nodes = num_nodes + num_open + num_open = num_open - *(*int32)(unsafe.Pointer(bp + uintptr(len)*4)) if num_open < 0 { return 0 } - if root_table == (uintptr(0)) { + if root_table == uintptr(0) { goto __5 } - for ; *(*int32)(unsafe.Pointer((bp) /* &count[0] */ + uintptr(len)*4)) > 0; *(*int32)(unsafe.Pointer((bp) /* &count[0] */ + uintptr(len)*4))-- { + for ; *(*int32)(unsafe.Pointer(bp + uintptr(len)*4)) > 0; *(*int32)(unsafe.Pointer(bp + uintptr(len)*4))-- { var code HuffmanCode - if (key & mask) != low { - table += 4 * (uintptr(table_size)) - table_bits = NextTableBitSize(tls, (bp) /* &count[0] */, len, root_bits) - table_size = (int32(1) << table_bits) - total_size = total_size + (table_size) - low = (key & mask) - (*HuffmanCode)(unsafe.Pointer(root_table + uintptr(low)*4)).bits = (uint8_t(table_bits + root_bits)) - (*HuffmanCode)(unsafe.Pointer(root_table + uintptr(low)*4)).value = (uint16_t(((int64(table) - int64(root_table)) / 4) - int64(low))) + if key&mask != low { + table += 4 * uintptr(table_size) + table_bits = NextTableBitSize(tls, bp, len, root_bits) + table_size = int32(1) << table_bits + total_size = total_size + table_size + low = key & mask + (*HuffmanCode)(unsafe.Pointer(root_table + uintptr(low)*4)).bits = uint8_t(table_bits + root_bits) + (*HuffmanCode)(unsafe.Pointer(root_table + uintptr(low)*4)).value = uint16_t((int64(table)-int64(root_table))/4 - int64(low)) } - code.bits = (uint8_t(len - root_bits)) + code.bits = uint8_t(len - root_bits) code.value = *(*uint16_t)(unsafe.Pointer(sorted + uintptr(libc.PostIncInt32(&symbol, 1))*2)) - ReplicateValue(tls, (table + uintptr((key>>root_bits))*4), step, table_size, code) + ReplicateValue(tls, table+uintptr(key>>root_bits)*4, step, table_size, code) key = GetNextKey(tls, key, len) } @@ -39993,7 +39695,7 @@ func BuildHuffmanTable(tls *libc.TLS, root_table uintptr, root_bits int32, code_ ; // Check if tree is full. - if num_nodes != ((2 * *(*int32)(unsafe.Pointer((bp + 64) /* &offset[0] */ + 15*4))) - 1) { + if num_nodes != 2**(*int32)(unsafe.Pointer(bp + 64 + 15*4))-1 { return 0 } @@ -40011,18 +39713,18 @@ func VP8LBuildHuffmanTable(tls *libc.TLS, root_table uintptr, root_bits int32, c var total_size int32 - if root_table == (uintptr(0)) { - total_size = BuildHuffmanTable(tls, (uintptr(0)), root_bits, - code_lengths, code_lengths_size, (uintptr(0))) + if root_table == uintptr(0) { + total_size = BuildHuffmanTable(tls, uintptr(0), root_bits, + code_lengths, code_lengths_size, uintptr(0)) } else if code_lengths_size <= 512 { // use local stack-allocated array. // var sorted [512]uint16_t at bp, 1024 total_size = BuildHuffmanTable(tls, root_table, root_bits, - code_lengths, code_lengths_size, (bp) /* &sorted[0] */) + code_lengths, code_lengths_size, bp) } else { // rare case. Use heap allocation. var sorted uintptr = WebPSafeMalloc(tls, uint64(code_lengths_size), uint64(unsafe.Sizeof(uint16_t(0)))) - if sorted == (uintptr(0)) { + if sorted == uintptr(0) { return 0 } total_size = BuildHuffmanTable(tls, root_table, root_bits, @@ -40061,8 +39763,8 @@ type SmoothParams = struct { //------------------------------------------------------------------------------ func clip_8b3(tls *libc.TLS, v int32) uint8_t { /* quant_levels_dec_utils.c:75:28: */ - if !((v & (libc.Int32FromUint32(libc.Uint32(libc.CplUint32(libc.Uint32(0))) << (8 + 0)))) != 0) { - return (uint8_t(v >> 0)) + if !(v&libc.Int32FromUint32(libc.Uint32(libc.CplUint32(libc.Uint32(0)))<<(8+0)) != 0) { + return uint8_t(v >> 0) } if v < 0 { return uint8(0) @@ -40082,21 +39784,21 @@ func VFilter(tls *libc.TLS, p uintptr) { /* quant_levels_dec_utils.c:81:13: */ for x = 0; x < w; x++ { var new_value uint16_t - sum = uint16_t(int32(sum) + (int32(*(*uint8_t)(unsafe.Pointer(src + uintptr(x)))))) - new_value = (uint16_t(int32(*(*uint16_t)(unsafe.Pointer(top + uintptr(x)*2))) + int32(sum))) - *(*uint16_t)(unsafe.Pointer(out + uintptr(x)*2)) = (uint16_t(int32(new_value) - int32(*(*uint16_t)(unsafe.Pointer(cur + uintptr(x)*2))))) // vertical sum of 'r' pixels. + sum = uint16_t(int32(sum) + int32(*(*uint8_t)(unsafe.Pointer(src + uintptr(x))))) + new_value = uint16_t(int32(*(*uint16_t)(unsafe.Pointer(top + uintptr(x)*2))) + int32(sum)) + *(*uint16_t)(unsafe.Pointer(out + uintptr(x)*2)) = uint16_t(int32(new_value) - int32(*(*uint16_t)(unsafe.Pointer(cur + uintptr(x)*2)))) // vertical sum of 'r' pixels. *(*uint16_t)(unsafe.Pointer(cur + uintptr(x)*2)) = new_value } // move input pointers one row down (*SmoothParams)(unsafe.Pointer(p)).top_ = (*SmoothParams)(unsafe.Pointer(p)).cur_ - *(*uintptr)(unsafe.Pointer((p + 56 /* &.cur_ */))) += (uintptr(w)) * 2 + *(*uintptr)(unsafe.Pointer(p + 56)) += uintptr(w) * 2 if (*SmoothParams)(unsafe.Pointer(p)).cur_ == (*SmoothParams)(unsafe.Pointer(p)).end_ { (*SmoothParams)(unsafe.Pointer(p)).cur_ = (*SmoothParams)(unsafe.Pointer(p)).start_ } // roll-over // We replicate edges, as it's somewhat easier as a boundary condition. // That's why we don't update the 'src' pointer on top/bottom area: - if ((*SmoothParams)(unsafe.Pointer(p)).row_ >= 0) && ((*SmoothParams)(unsafe.Pointer(p)).row_ < ((*SmoothParams)(unsafe.Pointer(p)).height_ - 1)) { - *(*uintptr)(unsafe.Pointer((p + 16 /* &.src_ */))) += (uintptr((*SmoothParams)(unsafe.Pointer(p)).stride_)) + if (*SmoothParams)(unsafe.Pointer(p)).row_ >= 0 && (*SmoothParams)(unsafe.Pointer(p)).row_ < (*SmoothParams)(unsafe.Pointer(p)).height_-1 { + *(*uintptr)(unsafe.Pointer(p + 16)) += uintptr((*SmoothParams)(unsafe.Pointer(p)).stride_) } } @@ -40110,16 +39812,16 @@ func HFilter(tls *libc.TLS, p uintptr) { /* quant_levels_dec_utils.c:110:13: */ var r int32 = (*SmoothParams)(unsafe.Pointer(p)).radius_ var x int32 for x = 0; x <= r; x++ { // left mirroring - var delta uint16_t = (uint16_t(int32(*(*uint16_t)(unsafe.Pointer(in + uintptr(((x+r)-1))*2))) + int32(*(*uint16_t)(unsafe.Pointer(in + uintptr((r-x))*2))))) - *(*uint16_t)(unsafe.Pointer(out + uintptr(x)*2)) = (uint16_t((uint32_t(delta) * scale) >> 16)) + var delta uint16_t = uint16_t(int32(*(*uint16_t)(unsafe.Pointer(in + uintptr(x+r-1)*2))) + int32(*(*uint16_t)(unsafe.Pointer(in + uintptr(r-x)*2)))) + *(*uint16_t)(unsafe.Pointer(out + uintptr(x)*2)) = uint16_t(uint32_t(delta) * scale >> 16) } - for ; x < (w - r); x++ { // bulk middle run - var delta uint16_t = (uint16_t(int32(*(*uint16_t)(unsafe.Pointer(in + uintptr((x+r))*2))) - int32(*(*uint16_t)(unsafe.Pointer(in + uintptr(((x-r)-1))*2))))) - *(*uint16_t)(unsafe.Pointer(out + uintptr(x)*2)) = (uint16_t((uint32_t(delta) * scale) >> 16)) + for ; x < w-r; x++ { // bulk middle run + var delta uint16_t = uint16_t(int32(*(*uint16_t)(unsafe.Pointer(in + uintptr(x+r)*2))) - int32(*(*uint16_t)(unsafe.Pointer(in + uintptr(x-r-1)*2)))) + *(*uint16_t)(unsafe.Pointer(out + uintptr(x)*2)) = uint16_t(uint32_t(delta) * scale >> 16) } for ; x < w; x++ { // right mirroring - var delta uint16_t = (uint16_t(((2 * int32(*(*uint16_t)(unsafe.Pointer(in + uintptr((w-1))*2)))) - int32(*(*uint16_t)(unsafe.Pointer(in + uintptr(((((2*w)-2)-r)-x))*2)))) - int32(*(*uint16_t)(unsafe.Pointer(in + uintptr(((x-r)-1))*2))))) - *(*uint16_t)(unsafe.Pointer(out + uintptr(x)*2)) = (uint16_t((uint32_t(delta) * scale) >> 16)) + var delta uint16_t = uint16_t(2*int32(*(*uint16_t)(unsafe.Pointer(in + uintptr(w-1)*2))) - int32(*(*uint16_t)(unsafe.Pointer(in + uintptr(2*w-2-r-x)*2))) - int32(*(*uint16_t)(unsafe.Pointer(in + uintptr(x-r-1)*2)))) + *(*uint16_t)(unsafe.Pointer(out + uintptr(x)*2)) = uint16_t(uint32_t(delta) * scale >> 16) } } @@ -40132,12 +39834,12 @@ func ApplyFilter(tls *libc.TLS, p uintptr) { /* quant_levels_dec_utils.c:134:13: var x int32 for x = 0; x < w; x++ { var v int32 = int32(*(*uint8_t)(unsafe.Pointer(dst + uintptr(x)))) - if (v < (*SmoothParams)(unsafe.Pointer(p)).max_) && (v > (*SmoothParams)(unsafe.Pointer(p)).min_) { - var c int32 = ((v << 0) + int32(*(*int16_t)(unsafe.Pointer(correction + uintptr((int32(*(*uint16_t)(unsafe.Pointer(average + uintptr(x)*2)))-(v<<2)))*2)))) + if v < (*SmoothParams)(unsafe.Pointer(p)).max_ && v > (*SmoothParams)(unsafe.Pointer(p)).min_ { + var c int32 = v<<0 + int32(*(*int16_t)(unsafe.Pointer(correction + uintptr(int32(*(*uint16_t)(unsafe.Pointer(average + uintptr(x)*2)))-v<<2)*2))) *(*uint8_t)(unsafe.Pointer(dst + uintptr(x))) = clip_8b3(tls, c) } } - *(*uintptr)(unsafe.Pointer((p + 24 /* &.dst_ */))) += (uintptr((*SmoothParams)(unsafe.Pointer(p)).stride_)) // advance output pointer + *(*uintptr)(unsafe.Pointer(p + 24)) += uintptr((*SmoothParams)(unsafe.Pointer(p)).stride_) // advance output pointer } //------------------------------------------------------------------------------ @@ -40150,18 +39852,18 @@ func InitCorrectionLUT(tls *libc.TLS, lut uintptr, min_dist int32) { /* quant_le // and a linear interpolation for range x=[threshold2, threshold1] // (along with f(-x) = -f(x) symmetry). // Note that: threshold2 = 3/4 * threshold1 - var threshold1 int32 = (min_dist << 2) - var threshold2 int32 = ((3 * threshold1) >> 2) - var max_threshold int32 = (threshold2 << 0) - var delta int32 = (threshold1 - threshold2) + var threshold1 int32 = min_dist << 2 + var threshold2 int32 = 3 * threshold1 >> 2 + var max_threshold int32 = threshold2 << 0 + var delta int32 = threshold1 - threshold2 var i int32 - for i = 1; i <= ((int32(1) << (8 + 2)) - 1); i++ { + for i = 1; i <= int32(1)<<(8+2)-1; i++ { var c int32 if i <= threshold2 { - c = (i << 0) + c = i << 0 } else { if i < threshold1 { - c = ((max_threshold * (threshold1 - i)) / delta) + c = max_threshold * (threshold1 - i) / delta } else { c = 0 } @@ -40193,18 +39895,18 @@ func CountLevels(tls *libc.TLS, p uintptr) { /* quant_levels_dec_utils.c:183:13: if v > (*SmoothParams)(unsafe.Pointer(p)).max_ { (*SmoothParams)(unsafe.Pointer(p)).max_ = v } - *(*uint8_t)(unsafe.Pointer((bp) /* &used_levels[0] */ + uintptr(v))) = uint8_t(1) + *(*uint8_t)(unsafe.Pointer(bp + uintptr(v))) = uint8_t(1) } data += uintptr((*SmoothParams)(unsafe.Pointer(p)).stride_) } // Compute the mininum distance between two non-zero levels. - (*SmoothParams)(unsafe.Pointer(p)).min_level_dist_ = ((*SmoothParams)(unsafe.Pointer(p)).max_ - (*SmoothParams)(unsafe.Pointer(p)).min_) + (*SmoothParams)(unsafe.Pointer(p)).min_level_dist_ = (*SmoothParams)(unsafe.Pointer(p)).max_ - (*SmoothParams)(unsafe.Pointer(p)).min_ last_level = -1 for i = 0; i < 256; i++ { - if *(*uint8_t)(unsafe.Pointer((bp) /* &used_levels[0] */ + uintptr(i))) != 0 { + if *(*uint8_t)(unsafe.Pointer(bp + uintptr(i))) != 0 { (*SmoothParams)(unsafe.Pointer(p)).num_levels_++ if last_level >= 0 { - var level_dist int32 = (i - last_level) + var level_dist int32 = i - last_level if level_dist < (*SmoothParams)(unsafe.Pointer(p)).min_level_dist_ { (*SmoothParams)(unsafe.Pointer(p)).min_level_dist_ = level_dist } @@ -40216,24 +39918,24 @@ func CountLevels(tls *libc.TLS, p uintptr) { /* quant_levels_dec_utils.c:183:13: // Initialize all params. func InitParams(tls *libc.TLS, data uintptr, width int32, height int32, stride int32, radius int32, p uintptr) int32 { /* quant_levels_dec_utils.c:216:12: */ - var R int32 = ((2 * radius) + 1) // total size of the kernel + var R int32 = 2*radius + 1 // total size of the kernel - var size_scratch_m size_t = ((uint64((R + 1) * width)) * uint64(unsafe.Sizeof(uint16_t(0)))) - var size_m size_t = (uint64(width) * uint64(unsafe.Sizeof(uint16_t(0)))) - var size_lut size_t = ((uint64(1 + (2 * ((int32(1) << (8 + 2)) - 1)))) * uint64(unsafe.Sizeof(int16_t(0)))) - var total_size size_t = ((size_scratch_m + size_m) + size_lut) + var size_scratch_m size_t = uint64((R+1)*width) * uint64(unsafe.Sizeof(uint16_t(0))) + var size_m size_t = uint64(width) * uint64(unsafe.Sizeof(uint16_t(0))) + var size_lut size_t = uint64(1+2*(int32(1)<<(8+2)-1)) * uint64(unsafe.Sizeof(int16_t(0))) + var total_size size_t = size_scratch_m + size_m + size_lut var mem uintptr = WebPSafeMalloc(tls, uint64(1), total_size) - if mem == (uintptr(0)) { + if mem == uintptr(0) { return 0 } (*SmoothParams)(unsafe.Pointer(p)).mem_ = mem (*SmoothParams)(unsafe.Pointer(p)).start_ = mem (*SmoothParams)(unsafe.Pointer(p)).cur_ = (*SmoothParams)(unsafe.Pointer(p)).start_ - (*SmoothParams)(unsafe.Pointer(p)).end_ = ((*SmoothParams)(unsafe.Pointer(p)).start_ + uintptr((R*width))*2) - (*SmoothParams)(unsafe.Pointer(p)).top_ = ((*SmoothParams)(unsafe.Pointer(p)).end_ - uintptr(width)*2) - libc.Xmemset(tls, (*SmoothParams)(unsafe.Pointer(p)).top_, 0, (uint64(width) * uint64(unsafe.Sizeof(uint16_t(0))))) + (*SmoothParams)(unsafe.Pointer(p)).end_ = (*SmoothParams)(unsafe.Pointer(p)).start_ + uintptr(R*width)*2 + (*SmoothParams)(unsafe.Pointer(p)).top_ = (*SmoothParams)(unsafe.Pointer(p)).end_ - uintptr(width)*2 + libc.Xmemset(tls, (*SmoothParams)(unsafe.Pointer(p)).top_, 0, uint64(width)*uint64(unsafe.Sizeof(uint16_t(0)))) mem += uintptr(size_scratch_m) (*SmoothParams)(unsafe.Pointer(p)).average_ = mem @@ -40245,14 +39947,14 @@ func InitParams(tls *libc.TLS, data uintptr, width int32, height int32, stride i (*SmoothParams)(unsafe.Pointer(p)).src_ = data (*SmoothParams)(unsafe.Pointer(p)).dst_ = data (*SmoothParams)(unsafe.Pointer(p)).radius_ = radius - (*SmoothParams)(unsafe.Pointer(p)).scale_ = ((int32(1) << (16 + 2)) / (R * R)) // normalization constant + (*SmoothParams)(unsafe.Pointer(p)).scale_ = int32(1) << (16 + 2) / (R * R) // normalization constant (*SmoothParams)(unsafe.Pointer(p)).row_ = -radius // analyze the input distribution so we can best-fit the threshold CountLevels(tls, p) // correction table - (*SmoothParams)(unsafe.Pointer(p)).correction_ = ((mem) + uintptr(((int32(1)<<(8+2))-1))*2) + (*SmoothParams)(unsafe.Pointer(p)).correction_ = mem + uintptr(int32(1)<<(8+2)-1)*2 InitCorrectionLUT(tls, (*SmoothParams)(unsafe.Pointer(p)).correction_, (*SmoothParams)(unsafe.Pointer(p)).min_level_dist_) return 1 @@ -40266,42 +39968,42 @@ func WebPDequantizeLevels(tls *libc.TLS, data uintptr, width int32, height int32 bp := tls.Alloc(112) defer tls.Free(112) - var radius int32 = ((4 * strength) / 100) + var radius int32 = 4 * strength / 100 - if (strength < 0) || (strength > 100) { + if strength < 0 || strength > 100 { return 0 } - if ((data == (uintptr(0))) || (width <= 0)) || (height <= 0) { + if data == uintptr(0) || width <= 0 || height <= 0 { return 0 } // bad params // limit the filter size to not exceed the image dimensions - if ((2 * radius) + 1) > width { - radius = ((width - 1) >> 1) + if 2*radius+1 > width { + radius = (width - 1) >> 1 } - if ((2 * radius) + 1) > height { - radius = ((height - 1) >> 1) + if 2*radius+1 > height { + radius = (height - 1) >> 1 } if radius > 0 { // var p SmoothParams at bp, 112 - libc.Xmemset(tls, (bp) /* &p */, 0, uint64(unsafe.Sizeof(SmoothParams{}))) - if !(InitParams(tls, data, width, height, stride, radius, (bp) /* &p */) != 0) { + libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(SmoothParams{}))) + if !(InitParams(tls, data, width, height, stride, radius, bp) != 0) { return 0 } - if (*SmoothParams)(unsafe.Pointer(bp /* &p */)).num_levels_ > 2 { - for ; (*SmoothParams)(unsafe.Pointer(bp /* &p */)).row_ < (*SmoothParams)(unsafe.Pointer(bp /* &p */)).height_; (*SmoothParams)(unsafe.Pointer(bp /* &p */)).row_++ { - VFilter(tls, (bp) /* &p */) // accumulate average of input + if (*SmoothParams)(unsafe.Pointer(bp)).num_levels_ > 2 { + for ; (*SmoothParams)(unsafe.Pointer(bp)).row_ < (*SmoothParams)(unsafe.Pointer(bp)).height_; (*SmoothParams)(unsafe.Pointer(bp /* &p */)).row_++ { + VFilter(tls, bp) // accumulate average of input // Need to wait few rows in order to prime the filter, // before emitting some output. - if (*SmoothParams)(unsafe.Pointer(bp /* &p */)).row_ >= (*SmoothParams)(unsafe.Pointer(bp /* &p */)).radius_ { - HFilter(tls, (bp) /* &p */) - ApplyFilter(tls, (bp) /* &p */) + if (*SmoothParams)(unsafe.Pointer(bp)).row_ >= (*SmoothParams)(unsafe.Pointer(bp)).radius_ { + HFilter(tls, bp) + ApplyFilter(tls, bp) } } } - CleanupParams(tls, (bp) /* &p */) + CleanupParams(tls, bp) } return 1 } @@ -40350,26 +40052,26 @@ func QuantizeLevels(tls *libc.TLS, data uintptr, width int32, height int32, num_ *(*[256]float64)(unsafe.Pointer(bp + 1024 /* inv_q_level */)) = [256]float64{0: float64(0)} min_s = 255 max_s = 0 - data_size = (size_t(height * width)) + data_size = size_t(height * width) last_err = 1.e38 err = 0. - err_threshold = (1e-4 * float64(data_size)) + err_threshold = 1e-4 * float64(data_size) - if !(data == (uintptr(0))) { + if !(data == uintptr(0)) { goto __1 } return 0 __1: ; - if !((width <= 0) || (height <= 0)) { + if !(width <= 0 || height <= 0) { goto __2 } return 0 __2: ; - if !((num_levels < 2) || (num_levels > 256)) { + if !(num_levels < 2 || num_levels > 256) { goto __3 } return 0 @@ -40382,7 +40084,7 @@ __4: if !(n < data_size) { goto __6 } - num_levels_in = num_levels_in + (libc.Bool32(*(*int32)(unsafe.Pointer((bp) /* &freq[0] */ + uintptr(*(*uint8_t)(unsafe.Pointer(data + uintptr(n))))*4)) == 0)) + num_levels_in = num_levels_in + libc.Bool32(*(*int32)(unsafe.Pointer(bp + uintptr(*(*uint8_t)(unsafe.Pointer(data + uintptr(n))))*4)) == 0) if !(min_s > int32(*(*uint8_t)(unsafe.Pointer(data + uintptr(n))))) { goto __7 } @@ -40395,7 +40097,7 @@ __7: max_s = int32(*(*uint8_t)(unsafe.Pointer(data + uintptr(n)))) __8: ; - *(*int32)(unsafe.Pointer((bp) /* &freq[0] */ + uintptr(*(*uint8_t)(unsafe.Pointer(data + uintptr(n))))*4))++ + *(*int32)(unsafe.Pointer(bp + uintptr(*(*uint8_t)(unsafe.Pointer(data + uintptr(n))))*4))++ goto __5 __5: n++ @@ -40417,7 +40119,7 @@ __10: if !(i < num_levels) { goto __12 } - *(*float64)(unsafe.Pointer((bp + 1024) /* &inv_q_level[0] */ + uintptr(i)*8)) = (float64(min_s) + (((float64(max_s - min_s)) * float64(i)) / (float64(num_levels - 1)))) + *(*float64)(unsafe.Pointer(bp + 1024 + uintptr(i)*8)) = float64(min_s) + float64(max_s-min_s)*float64(i)/float64(num_levels-1) goto __11 __11: i++ @@ -40427,8 +40129,8 @@ __12: ; // Fixed values. Won't be changed. - *(*int32)(unsafe.Pointer((bp + 3072) /* &q_level[0] */ + uintptr(min_s)*4)) = 0 - *(*int32)(unsafe.Pointer((bp + 3072) /* &q_level[0] */ + uintptr(max_s)*4)) = (num_levels - 1) + *(*int32)(unsafe.Pointer(bp + 3072 + uintptr(min_s)*4)) = 0 + *(*int32)(unsafe.Pointer(bp + 3072 + uintptr(max_s)*4)) = num_levels - 1 // k-Means iterations. iter = 0 @@ -40448,21 +40150,21 @@ __16: } // Keep track of the nearest neighbour 'slot' __19: - if !((slot < (num_levels - 1)) && ((float64(2 * s)) > (*(*float64)(unsafe.Pointer((bp + 1024) /* &inv_q_level[0] */ + uintptr(slot)*8)) + *(*float64)(unsafe.Pointer((bp + 1024) /* &inv_q_level[0] */ + uintptr((slot+1))*8))))) { + if !(slot < num_levels-1 && float64(2*s) > *(*float64)(unsafe.Pointer(bp + 1024 + uintptr(slot)*8))+*(*float64)(unsafe.Pointer(bp + 1024 + uintptr(slot+1)*8))) { goto __20 } slot++ goto __19 __20: ; - if !(*(*int32)(unsafe.Pointer((bp) /* &freq[0] */ + uintptr(s)*4)) > 0) { + if !(*(*int32)(unsafe.Pointer(bp + uintptr(s)*4)) > 0) { goto __21 } - *(*float64)(unsafe.Pointer(((bp + 4096) /* &q_sum */ + uintptr(slot)*8))) += (float64(s * *(*int32)(unsafe.Pointer((bp) /* &freq[0] */ + uintptr(s)*4)))) - *(*float64)(unsafe.Pointer(((bp + 6144) /* &q_count */ + uintptr(slot)*8))) += (float64(*(*int32)(unsafe.Pointer((bp) /* &freq[0] */ + uintptr(s)*4)))) + *(*float64)(unsafe.Pointer(bp + 4096 + uintptr(slot)*8)) += float64(s * *(*int32)(unsafe.Pointer(bp + uintptr(s)*4))) + *(*float64)(unsafe.Pointer(bp + 6144 + uintptr(slot)*8)) += float64(*(*int32)(unsafe.Pointer(bp + uintptr(s)*4))) __21: ; - *(*int32)(unsafe.Pointer((bp + 3072) /* &q_level[0] */ + uintptr(s)*4)) = slot + *(*int32)(unsafe.Pointer(bp + 3072 + uintptr(s)*4)) = slot goto __17 __17: s++ @@ -40477,14 +40179,14 @@ __18: } slot = 1 __23: - if !(slot < (num_levels - 1)) { + if !(slot < num_levels-1) { goto __25 } - count = *(*float64)(unsafe.Pointer((bp + 6144) /* &q_count[0] */ + uintptr(slot)*8)) + count = *(*float64)(unsafe.Pointer(bp + 6144 + uintptr(slot)*8)) if !(count > 0.) { goto __26 } - *(*float64)(unsafe.Pointer((bp + 1024) /* &inv_q_level[0] */ + uintptr(slot)*8)) = (*(*float64)(unsafe.Pointer((bp + 4096) /* &q_sum[0] */ + uintptr(slot)*8)) / count) + *(*float64)(unsafe.Pointer(bp + 1024 + uintptr(slot)*8)) = *(*float64)(unsafe.Pointer(bp + 4096 + uintptr(slot)*8)) / count __26: ; goto __24 @@ -40504,8 +40206,8 @@ __27: if !(s <= max_s) { goto __29 } - error = (float64(s) - *(*float64)(unsafe.Pointer((bp + 1024) /* &inv_q_level[0] */ + uintptr(*(*int32)(unsafe.Pointer((bp + 3072) /* &q_level[0] */ + uintptr(s)*4)))*8))) - err = err + ((float64(*(*int32)(unsafe.Pointer((bp) /* &freq[0] */ + uintptr(s)*4))) * error) * error) + error = float64(s) - *(*float64)(unsafe.Pointer(bp + 1024 + uintptr(*(*int32)(unsafe.Pointer(bp + 3072 + uintptr(s)*4)))*8)) + err = err + float64(*(*int32)(unsafe.Pointer(bp + uintptr(s)*4)))*error*error goto __28 __28: s++ @@ -40516,7 +40218,7 @@ __29: // Check for convergence: we stop as soon as the error is no // longer improving. - if !((last_err - err) < err_threshold) { + if !(last_err-err < err_threshold) { goto __30 } goto __15 @@ -40538,8 +40240,8 @@ __31: if !(s1 <= max_s) { goto __33 } - slot1 = *(*int32)(unsafe.Pointer((bp + 3072) /* &q_level[0] */ + uintptr(s1)*4)) - *(*uint8_t)(unsafe.Pointer((bp + 8192) /* &map1[0] */ + uintptr(s1))) = (libc.Uint8FromFloat64(*(*float64)(unsafe.Pointer((bp + 1024) /* &inv_q_level[0] */ + uintptr(slot1)*8)) + .5)) + slot1 = *(*int32)(unsafe.Pointer(bp + 3072 + uintptr(s1)*4)) + *(*uint8_t)(unsafe.Pointer(bp + 8192 + uintptr(s1))) = libc.Uint8FromFloat64(*(*float64)(unsafe.Pointer(bp + 1024 + uintptr(slot1)*8)) + .5) goto __32 __32: s1++ @@ -40553,7 +40255,7 @@ __34: if !(n1 < data_size) { goto __36 } - *(*uint8_t)(unsafe.Pointer(data + uintptr(n1))) = *(*uint8_t)(unsafe.Pointer((bp + 8192) /* &map1[0] */ + uintptr(*(*uint8_t)(unsafe.Pointer(data + uintptr(n1)))))) + *(*uint8_t)(unsafe.Pointer(data + uintptr(n1))) = *(*uint8_t)(unsafe.Pointer(bp + 8192 + uintptr(*(*uint8_t)(unsafe.Pointer(data + uintptr(n1)))))) goto __35 __35: n1++ @@ -40564,7 +40266,7 @@ __36: End: // Store sum of squared error if needed. - if !(sse != (uintptr(0))) { + if !(sse != uintptr(0)) { goto __37 } *(*uint64_t)(unsafe.Pointer(sse)) = uint64_t(err) @@ -40591,7 +40293,7 @@ var kRandomTable = [55]uint32_t{ } /* random_utils.c:20:23 */ func VP8InitRandom(tls *libc.TLS, rg uintptr, dithering float32) { /* random_utils.c:33:6: */ - libc.Xmemcpy(tls, (rg + 8 /* &.tab_ */), uintptr(unsafe.Pointer(&kRandomTable)), uint64(unsafe.Sizeof([55]uint32_t{}))) + libc.Xmemcpy(tls, rg+8, uintptr(unsafe.Pointer(&kRandomTable)), uint64(unsafe.Sizeof([55]uint32_t{}))) (*VP8Random)(unsafe.Pointer(rg)).index1_ = 0 (*VP8Random)(unsafe.Pointer(rg)).index2_ = 31 (*VP8Random)(unsafe.Pointer(rg)).amp_ = func() int32 { @@ -40600,9 +40302,9 @@ func VP8InitRandom(tls *libc.TLS, rg uintptr, dithering float32) { /* random_uti } return func() int32 { if float64(dithering) > 1.0 { - return (int32(1) << 8) + return int32(1) << 8 } - return int32((libc.Uint32FromFloat32((float32(int32(1) << 8)) * dithering))) + return int32(libc.Uint32FromFloat32(float32(int32(1)<<8) * dithering)) }() }() } @@ -40618,13 +40320,13 @@ func WebPRescalerInit(tls *libc.TLS, rescaler uintptr, src_width int32, src_heig var x_sub int32 = dst_width var y_add int32 = src_height var y_sub int32 = dst_height - var total_size uint64_t = (uint64_t(((2 * uint64(dst_width)) * uint64(num_channels)) * uint64(unsafe.Sizeof(rescaler_t(0))))) + var total_size uint64_t = uint64_t(2 * uint64(dst_width) * uint64(num_channels) * uint64(unsafe.Sizeof(rescaler_t(0)))) if !(CheckSizeOverflow(tls, total_size) != 0) { return 0 } - (*WebPRescaler)(unsafe.Pointer(rescaler)).x_expand = (libc.Bool32(src_width < dst_width)) - (*WebPRescaler)(unsafe.Pointer(rescaler)).y_expand = (libc.Bool32(src_height < dst_height)) + (*WebPRescaler)(unsafe.Pointer(rescaler)).x_expand = libc.Bool32(src_width < dst_width) + (*WebPRescaler)(unsafe.Pointer(rescaler)).y_expand = libc.Bool32(src_height < dst_height) (*WebPRescaler)(unsafe.Pointer(rescaler)).src_width = src_width (*WebPRescaler)(unsafe.Pointer(rescaler)).src_height = src_height (*WebPRescaler)(unsafe.Pointer(rescaler)).dst_width = dst_width @@ -40638,29 +40340,29 @@ func WebPRescalerInit(tls *libc.TLS, rescaler uintptr, src_width int32, src_heig // for 'x_expand', we use bilinear interpolation (*WebPRescaler)(unsafe.Pointer(rescaler)).x_add = func() int32 { if (*WebPRescaler)(unsafe.Pointer(rescaler)).x_expand != 0 { - return (x_sub - 1) + return x_sub - 1 } return x_add }() (*WebPRescaler)(unsafe.Pointer(rescaler)).x_sub = func() int32 { if (*WebPRescaler)(unsafe.Pointer(rescaler)).x_expand != 0 { - return (x_add - 1) + return x_add - 1 } return x_sub }() if !((*WebPRescaler)(unsafe.Pointer(rescaler)).x_expand != 0) { // fx_scale is not used otherwise - (*WebPRescaler)(unsafe.Pointer(rescaler)).fx_scale = (uint32_t((uint64_t((uint64(1))) << 32) / (uint64_t((*WebPRescaler)(unsafe.Pointer(rescaler)).x_sub)))) + (*WebPRescaler)(unsafe.Pointer(rescaler)).fx_scale = uint32_t(uint64_t(uint64(1)) << 32 / uint64_t((*WebPRescaler)(unsafe.Pointer(rescaler)).x_sub)) } // vertical scaling parameters (*WebPRescaler)(unsafe.Pointer(rescaler)).y_add = func() int32 { if (*WebPRescaler)(unsafe.Pointer(rescaler)).y_expand != 0 { - return (y_add - 1) + return y_add - 1 } return y_add }() (*WebPRescaler)(unsafe.Pointer(rescaler)).y_sub = func() int32 { if (*WebPRescaler)(unsafe.Pointer(rescaler)).y_expand != 0 { - return (y_sub - 1) + return y_sub - 1 } return y_sub }() @@ -40674,9 +40376,9 @@ func WebPRescalerInit(tls *libc.TLS, rescaler uintptr, src_width int32, src_heig // This is WEBP_RESCALER_FRAC(dst_height, x_add * y_add) without the cast. // Its value is <= WEBP_RESCALER_ONE, because dst_height <= rescaler->y_add // and rescaler->x_add >= 1; - var num uint64_t = (uint64_t(uint64(uint64_t(dst_height)) * (uint64(1) << 32))) - var den uint64_t = (uint64_t((*WebPRescaler)(unsafe.Pointer(rescaler)).x_add) * uint64_t((*WebPRescaler)(unsafe.Pointer(rescaler)).y_add)) - var ratio uint64_t = (num / den) + var num uint64_t = uint64_t(uint64(uint64_t(dst_height)) * (uint64(1) << 32)) + var den uint64_t = uint64_t((*WebPRescaler)(unsafe.Pointer(rescaler)).x_add) * uint64_t((*WebPRescaler)(unsafe.Pointer(rescaler)).y_add) + var ratio uint64_t = num / den if ratio != uint64_t(uint32_t(ratio)) { // When ratio == WEBP_RESCALER_ONE, we can't represent the ratio with the // current fixed-point precision. This happens when src_height == @@ -40686,13 +40388,13 @@ func WebPRescalerInit(tls *libc.TLS, rescaler uintptr, src_width int32, src_heig } else { (*WebPRescaler)(unsafe.Pointer(rescaler)).fxy_scale = uint32_t(ratio) } - (*WebPRescaler)(unsafe.Pointer(rescaler)).fy_scale = (uint32_t((uint64_t((uint64(1))) << 32) / (uint64_t((*WebPRescaler)(unsafe.Pointer(rescaler)).y_sub)))) + (*WebPRescaler)(unsafe.Pointer(rescaler)).fy_scale = uint32_t(uint64_t(uint64(1)) << 32 / uint64_t((*WebPRescaler)(unsafe.Pointer(rescaler)).y_sub)) } else { - (*WebPRescaler)(unsafe.Pointer(rescaler)).fy_scale = (uint32_t((uint64_t((uint64(1))) << 32) / (uint64_t((*WebPRescaler)(unsafe.Pointer(rescaler)).x_add)))) + (*WebPRescaler)(unsafe.Pointer(rescaler)).fy_scale = uint32_t(uint64_t(uint64(1)) << 32 / uint64_t((*WebPRescaler)(unsafe.Pointer(rescaler)).x_add)) // rescaler->fxy_scale is unused here. } (*WebPRescaler)(unsafe.Pointer(rescaler)).irow = work - (*WebPRescaler)(unsafe.Pointer(rescaler)).frow = (work + uintptr((num_channels*dst_width))*4) + (*WebPRescaler)(unsafe.Pointer(rescaler)).frow = work + uintptr(num_channels*dst_width)*4 libc.Xmemset(tls, work, 0, total_size) WebPRescalerDspInit(tls) @@ -40704,18 +40406,18 @@ func WebPRescalerGetScaledDimensions(tls *libc.TLS, src_width int32, src_height { var width int32 = *(*int32)(unsafe.Pointer(scaled_width)) var height int32 = *(*int32)(unsafe.Pointer(scaled_height)) - var max_size int32 = (0x7fffffff / 2) + var max_size int32 = 0x7fffffff / 2 // if width is unspecified, scale original proportionally to height ratio. - if (width == 0) && (src_height > 0) { - width = (int32((((uint64_t(src_width) * uint64_t(height)) + uint64_t(src_height)) - uint64(1)) / uint64_t(src_height))) + if width == 0 && src_height > 0 { + width = int32((uint64_t(src_width)*uint64_t(height) + uint64_t(src_height) - uint64(1)) / uint64_t(src_height)) } // if height is unspecified, scale original proportionally to width ratio. - if (height == 0) && (src_width > 0) { - height = (int32((((uint64_t(src_height) * uint64_t(width)) + uint64_t(src_width)) - uint64(1)) / uint64_t(src_width))) + if height == 0 && src_width > 0 { + height = int32((uint64_t(src_height)*uint64_t(width) + uint64_t(src_width) - uint64(1)) / uint64_t(src_width)) } // Check if the overall dimensions still make sense. - if (((width <= 0) || (height <= 0)) || (width > max_size)) || (height > max_size) { + if width <= 0 || height <= 0 || width > max_size || height > max_size { return 0 } @@ -40731,7 +40433,7 @@ func WebPRescalerGetScaledDimensions(tls *libc.TLS, src_width int32, src_height // all-in-one calls func WebPRescaleNeededLines(tls *libc.TLS, rescaler uintptr, max_num_lines int32) int32 { /* rescaler_utils.c:119:5: */ - var num_lines int32 = ((((*WebPRescaler)(unsafe.Pointer(rescaler)).y_accum + (*WebPRescaler)(unsafe.Pointer(rescaler)).y_sub) - 1) / (*WebPRescaler)(unsafe.Pointer(rescaler)).y_sub) + var num_lines int32 = ((*WebPRescaler)(unsafe.Pointer(rescaler)).y_accum + (*WebPRescaler)(unsafe.Pointer(rescaler)).y_sub - 1) / (*WebPRescaler)(unsafe.Pointer(rescaler)).y_sub if num_lines > max_num_lines { return max_num_lines } @@ -40740,7 +40442,7 @@ func WebPRescaleNeededLines(tls *libc.TLS, rescaler uintptr, max_num_lines int32 func WebPRescalerImport(tls *libc.TLS, rescaler uintptr, num_lines int32, src uintptr, src_stride int32) int32 { /* rescaler_utils.c:126:5: */ var total_imported int32 = 0 - for (total_imported < num_lines) && !(WebPRescalerHasPendingOutput(tls, rescaler) != 0) { + for total_imported < num_lines && !(WebPRescalerHasPendingOutput(tls, rescaler) != 0) { if (*WebPRescaler)(unsafe.Pointer(rescaler)).y_expand != 0 { var tmp uintptr = (*WebPRescaler)(unsafe.Pointer(rescaler)).irow (*WebPRescaler)(unsafe.Pointer(rescaler)).irow = (*WebPRescaler)(unsafe.Pointer(rescaler)).frow @@ -40749,14 +40451,14 @@ func WebPRescalerImport(tls *libc.TLS, rescaler uintptr, num_lines int32, src ui WebPRescalerImportRow(tls, rescaler, src) if !((*WebPRescaler)(unsafe.Pointer(rescaler)).y_expand != 0) { // Accumulate the contribution of the new row. var x int32 - for x = 0; x < ((*WebPRescaler)(unsafe.Pointer(rescaler)).num_channels * (*WebPRescaler)(unsafe.Pointer(rescaler)).dst_width); x++ { - *(*rescaler_t)(unsafe.Pointer(((*WebPRescaler)(unsafe.Pointer(rescaler)).irow + uintptr(x)*4))) += (*(*rescaler_t)(unsafe.Pointer((*WebPRescaler)(unsafe.Pointer(rescaler)).frow + uintptr(x)*4))) + for x = 0; x < (*WebPRescaler)(unsafe.Pointer(rescaler)).num_channels*(*WebPRescaler)(unsafe.Pointer(rescaler)).dst_width; x++ { + *(*rescaler_t)(unsafe.Pointer((*WebPRescaler)(unsafe.Pointer(rescaler)).irow + uintptr(x)*4)) += *(*rescaler_t)(unsafe.Pointer((*WebPRescaler)(unsafe.Pointer(rescaler)).frow + uintptr(x)*4)) } } (*WebPRescaler)(unsafe.Pointer(rescaler)).src_y++ src += uintptr(src_stride) total_imported++ - *(*int32)(unsafe.Pointer((rescaler + 24 /* &.y_accum */))) -= ((*WebPRescaler)(unsafe.Pointer(rescaler)).y_sub) + *(*int32)(unsafe.Pointer(rescaler + 24)) -= (*WebPRescaler)(unsafe.Pointer(rescaler)).y_sub } return total_imported } @@ -40799,10 +40501,10 @@ func Reset(tls *libc.TLS, worker uintptr) int32 { /* thread_utils.c:276:12: */ } func Execute(tls *libc.TLS, worker uintptr) { /* thread_utils.c:316:13: */ - if (*WebPWorker)(unsafe.Pointer(worker)).hook != (uintptr(0)) { - *(*int32)(unsafe.Pointer((worker + 40 /* &.had_error */))) |= (libc.BoolInt32(!((*struct { + if (*WebPWorker)(unsafe.Pointer(worker)).hook != uintptr(0) { + *(*int32)(unsafe.Pointer(worker + 40)) |= libc.BoolInt32(!((*struct { f func(*libc.TLS, uintptr, uintptr) int32 - })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorker)(unsafe.Pointer(worker)).hook})).f(tls, (*WebPWorker)(unsafe.Pointer(worker)).data1, (*WebPWorker)(unsafe.Pointer(worker)).data2) != 0))) + })(unsafe.Pointer(&struct{ uintptr }{(*WebPWorker)(unsafe.Pointer(worker)).hook})).f(tls, (*WebPWorker)(unsafe.Pointer(worker)).data1, (*WebPWorker)(unsafe.Pointer(worker)).data2) != 0)) } } @@ -40822,7 +40524,7 @@ var g_worker_interface = WebPWorkerInterface{ } /* thread_utils.c:350:28 */ func WebPSetWorkerInterface(tls *libc.TLS, winterface uintptr) int32 { /* thread_utils.c:354:5: */ - if ((((((winterface == (uintptr(0))) || ((*WebPWorkerInterface)(unsafe.Pointer(winterface)).Init == (uintptr(0)))) || ((*WebPWorkerInterface)(unsafe.Pointer(winterface)).Reset == (uintptr(0)))) || ((*WebPWorkerInterface)(unsafe.Pointer(winterface)).Sync == (uintptr(0)))) || ((*WebPWorkerInterface)(unsafe.Pointer(winterface)).Launch == (uintptr(0)))) || ((*WebPWorkerInterface)(unsafe.Pointer(winterface)).Execute == (uintptr(0)))) || ((*WebPWorkerInterface)(unsafe.Pointer(winterface)).End == (uintptr(0))) { + if winterface == uintptr(0) || (*WebPWorkerInterface)(unsafe.Pointer(winterface)).Init == uintptr(0) || (*WebPWorkerInterface)(unsafe.Pointer(winterface)).Reset == uintptr(0) || (*WebPWorkerInterface)(unsafe.Pointer(winterface)).Sync == uintptr(0) || (*WebPWorkerInterface)(unsafe.Pointer(winterface)).Launch == uintptr(0) || (*WebPWorkerInterface)(unsafe.Pointer(winterface)).Execute == uintptr(0) || (*WebPWorkerInterface)(unsafe.Pointer(winterface)).End == uintptr(0) { return 0 } g_worker_interface = *(*WebPWorkerInterface)(unsafe.Pointer(winterface)) @@ -40867,11 +40569,11 @@ func WebPGetWorkerInterface(tls *libc.TLS) uintptr { /* thread_utils.c:365:26: * // Returns 0 in case of overflow of nmemb * size. func CheckSizeArgumentsOverflow(tls *libc.TLS, nmemb uint64_t, size size_t) int32 { /* utils.c:171:12: */ - var total_size uint64_t = (nmemb * size) + var total_size uint64_t = nmemb * size if nmemb == uint64(0) { return 1 } - if uint64(size) > ((uint64(1) << 34) / uint64(nmemb)) { + if uint64(size) > uint64(1)<<34/uint64(nmemb) { return 0 } if !(CheckSizeOverflow(tls, total_size) != 0) { @@ -40883,37 +40585,37 @@ func CheckSizeArgumentsOverflow(tls *libc.TLS, nmemb uint64_t, size size_t) int3 func WebPSafeMalloc(tls *libc.TLS, nmemb uint64_t, size size_t) uintptr { /* utils.c:194:5: */ var ptr uintptr - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { } if !(CheckSizeArgumentsOverflow(tls, nmemb, size) != 0) { - return (uintptr(0)) + return uintptr(0) } - ptr = libc.Xmalloc(tls, (nmemb * size)) - for ok1 := true; ok1; ok1 = (0 != 0) { + ptr = libc.Xmalloc(tls, nmemb*size) + for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 { } return ptr } func WebPSafeCalloc(tls *libc.TLS, nmemb uint64_t, size size_t) uintptr { /* utils.c:204:5: */ var ptr uintptr - for ok := true; ok; ok = (0 != 0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { } if !(CheckSizeArgumentsOverflow(tls, nmemb, size) != 0) { - return (uintptr(0)) + return uintptr(0) } ptr = libc.Xcalloc(tls, nmemb, size) - for ok1 := true; ok1; ok1 = (0 != 0) { + for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 { } return ptr } func WebPSafeFree(tls *libc.TLS, ptr uintptr) { /* utils.c:214:6: */ - if ptr != (uintptr(0)) { - for ok := true; ok; ok = (0 != 0) { + if ptr != uintptr(0) { + for __ccgo := true; __ccgo; __ccgo = 0 != 0 { } - for ok1 := true; ok1; ok1 = (0 != 0) { + for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 { } } libc.Xfree(tls, ptr) @@ -40942,8 +40644,8 @@ func WebPCopyPlane(tls *libc.TLS, src uintptr, src_stride int32, dst uintptr, ds func WebPCopyPixels(tls *libc.TLS, src uintptr, dst uintptr) { /* utils.c:245:6: */ - WebPCopyPlane(tls, (*WebPPicture)(unsafe.Pointer(src)).argb, (4 * (*WebPPicture)(unsafe.Pointer(src)).argb_stride), (*WebPPicture)(unsafe.Pointer(dst)).argb, - (4 * (*WebPPicture)(unsafe.Pointer(dst)).argb_stride), (4 * (*WebPPicture)(unsafe.Pointer(src)).width), (*WebPPicture)(unsafe.Pointer(src)).height) + WebPCopyPlane(tls, (*WebPPicture)(unsafe.Pointer(src)).argb, 4*(*WebPPicture)(unsafe.Pointer(src)).argb_stride, (*WebPPicture)(unsafe.Pointer(dst)).argb, + 4*(*WebPPicture)(unsafe.Pointer(dst)).argb_stride, 4*(*WebPPicture)(unsafe.Pointer(src)).width, (*WebPPicture)(unsafe.Pointer(src)).height) } //------------------------------------------------------------------------------ @@ -40973,31 +40675,31 @@ func WebPGetColorPalette(tls *libc.TLS, pic uintptr, palette uintptr) int32 { /* last_pix = *(*uint32_t)(unsafe.Pointer(argb + uintptr(x)*4)) key = VP8LHashPix(tls, last_pix, 22) for 1 != 0 { - if !(int32(*(*uint8_t)(unsafe.Pointer((bp) /* &in_use[0] */ + uintptr(key)))) != 0) { - *(*uint32_t)(unsafe.Pointer((bp + 1024) /* &colors[0] */ + uintptr(key)*4)) = last_pix - *(*uint8_t)(unsafe.Pointer((bp) /* &in_use[0] */ + uintptr(key))) = uint8_t(1) + if !(int32(*(*uint8_t)(unsafe.Pointer(bp + uintptr(key)))) != 0) { + *(*uint32_t)(unsafe.Pointer(bp + 1024 + uintptr(key)*4)) = last_pix + *(*uint8_t)(unsafe.Pointer(bp + uintptr(key))) = uint8_t(1) num_colors++ if num_colors > 256 { - return (256 + 1) // Exact count not needed. + return 256 + 1 // Exact count not needed. } break - } else if *(*uint32_t)(unsafe.Pointer((bp + 1024) /* &colors[0] */ + uintptr(key)*4)) == last_pix { + } else if *(*uint32_t)(unsafe.Pointer(bp + 1024 + uintptr(key)*4)) == last_pix { break // The color is already there. } else { // Some other color sits here, so do linear conflict resolution. key++ - key = key & ((256 * 4) - 1) // Key mask. + key = key & (256*4 - 1) // Key mask. } } } - argb += 4 * (uintptr((*WebPPicture)(unsafe.Pointer(pic)).argb_stride)) + argb += 4 * uintptr((*WebPPicture)(unsafe.Pointer(pic)).argb_stride) } - if palette != (uintptr(0)) { // Fill the colors into palette. + if palette != uintptr(0) { // Fill the colors into palette. num_colors = 0 - for i = 0; i < (256 * 4); i++ { - if *(*uint8_t)(unsafe.Pointer((bp) /* &in_use[0] */ + uintptr(i))) != 0 { - *(*uint32_t)(unsafe.Pointer(palette + uintptr(num_colors)*4)) = *(*uint32_t)(unsafe.Pointer((bp + 1024) /* &colors[0] */ + uintptr(i)*4)) + for i = 0; i < 256*4; i++ { + if *(*uint8_t)(unsafe.Pointer(bp + uintptr(i))) != 0 { + *(*uint32_t)(unsafe.Pointer(palette + uintptr(num_colors)*4)) = *(*uint32_t)(unsafe.Pointer(bp + 1024 + uintptr(i)*4)) num_colors++ } } @@ -41022,26 +40724,26 @@ func init() { *(*VP8CPUInfo)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8LDspInit_body_last_cpuinfo_used)) + 0)) = uintptr(unsafe.Pointer(&VP8LDspInit_body_last_cpuinfo_used)) // lossless.c:616:1: *(*VP8CPUInfo)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8LEncDspInit_body_last_cpuinfo_used)) + 0)) = uintptr(unsafe.Pointer(&VP8LEncDspInit_body_last_cpuinfo_used)) // lossless_enc.c:801:1: *(*VP8CPUInfo)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8SSIMDspInit_body_last_cpuinfo_used)) + 0)) = uintptr(unsafe.Pointer(&VP8SSIMDspInit_body_last_cpuinfo_used)) // ssim.c:142:1: - *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8kabs0)) + 0)) = (uintptr(unsafe.Pointer(&abs0)) + 255) // dec_clip_tables.c:348:33: - *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8kabs0)) + 0)) = (uintptr(unsafe.Pointer(&abs0)) + 255) // dec_clip_tables.c:348:33: - *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8kclip1)) + 0)) = (uintptr(unsafe.Pointer(&clip1)) + 255) // dec_clip_tables.c:347:34: - *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8kclip1)) + 0)) = (uintptr(unsafe.Pointer(&clip1)) + 255) // dec_clip_tables.c:347:34: - *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8ksclip1)) + 0)) = (uintptr(unsafe.Pointer(&sclip1)) + 1020) // dec_clip_tables.c:345:34: - *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8ksclip1)) + 0)) = (uintptr(unsafe.Pointer(&sclip1)) + 1020) // dec_clip_tables.c:345:34: - *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8ksclip2)) + 0)) = (uintptr(unsafe.Pointer(&sclip2)) + 112) // dec_clip_tables.c:346:34: - *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8ksclip2)) + 0)) = (uintptr(unsafe.Pointer(&sclip2)) + 112) // dec_clip_tables.c:346:34: + *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8kabs0)) + 0)) = uintptr(unsafe.Pointer(&abs0)) + 255 // dec_clip_tables.c:348:33: + *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8kabs0)) + 0)) = uintptr(unsafe.Pointer(&abs0)) + 255 // dec_clip_tables.c:348:33: + *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8kclip1)) + 0)) = uintptr(unsafe.Pointer(&clip1)) + 255 // dec_clip_tables.c:347:34: + *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8kclip1)) + 0)) = uintptr(unsafe.Pointer(&clip1)) + 255 // dec_clip_tables.c:347:34: + *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8ksclip1)) + 0)) = uintptr(unsafe.Pointer(&sclip1)) + 1020 // dec_clip_tables.c:345:34: + *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8ksclip1)) + 0)) = uintptr(unsafe.Pointer(&sclip1)) + 1020 // dec_clip_tables.c:345:34: + *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8ksclip2)) + 0)) = uintptr(unsafe.Pointer(&sclip2)) + 112 // dec_clip_tables.c:346:34: + *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&VP8ksclip2)) + 0)) = uintptr(unsafe.Pointer(&sclip2)) + 112 // dec_clip_tables.c:346:34: *(*VP8CPUInfo)(unsafe.Pointer(uintptr(unsafe.Pointer(&WebPInitAlphaProcessing_body_last_cpuinfo_used)) + 0)) = uintptr(unsafe.Pointer(&WebPInitAlphaProcessing_body_last_cpuinfo_used)) // alpha_processing.c:433:1: *(*VP8CPUInfo)(unsafe.Pointer(uintptr(unsafe.Pointer(&WebPInitConvertARGBToYUV_body_last_cpuinfo_used)) + 0)) = uintptr(unsafe.Pointer(&WebPInitConvertARGBToYUV_body_last_cpuinfo_used)) // yuv.c:263:1: *(*VP8CPUInfo)(unsafe.Pointer(uintptr(unsafe.Pointer(&WebPInitSamplers_body_last_cpuinfo_used)) + 0)) = uintptr(unsafe.Pointer(&WebPInitSamplers_body_last_cpuinfo_used)) // yuv.c:78:1: *(*VP8CPUInfo)(unsafe.Pointer(uintptr(unsafe.Pointer(&WebPInitUpsamplers_body_last_cpuinfo_used)) + 0)) = uintptr(unsafe.Pointer(&WebPInitUpsamplers_body_last_cpuinfo_used)) // upsampling.c:263:1: *(*VP8CPUInfo)(unsafe.Pointer(uintptr(unsafe.Pointer(&WebPInitYUV444Converters_body_last_cpuinfo_used)) + 0)) = uintptr(unsafe.Pointer(&WebPInitYUV444Converters_body_last_cpuinfo_used)) // upsampling.c:222:1: *(*VP8CPUInfo)(unsafe.Pointer(uintptr(unsafe.Pointer(&WebPRescalerDspInit_body_last_cpuinfo_used)) + 0)) = uintptr(unsafe.Pointer(&WebPRescalerDspInit_body_last_cpuinfo_used)) // rescaler.c:206:1: - *(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&g_worker_interface)) + 0 /* .Init */)) = Init // thread_utils.c:351:3: - *(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g_worker_interface)) + 8 /* .Reset */)) = Reset // thread_utils.c:351:9: - *(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g_worker_interface)) + 16 /* .Sync */)) = Sync // thread_utils.c:351:16: - *(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&g_worker_interface)) + 24 /* .Launch */)) = Launch // thread_utils.c:351:22: - *(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&g_worker_interface)) + 32 /* .Execute */)) = Execute // thread_utils.c:351:30: - *(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&g_worker_interface)) + 40 /* .End */)) = End // thread_utils.c:351:39: + *(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&g_worker_interface)) + 0)) = Init // thread_utils.c:351:3: + *(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g_worker_interface)) + 8)) = Reset // thread_utils.c:351:9: + *(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g_worker_interface)) + 16)) = Sync // thread_utils.c:351:16: + *(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&g_worker_interface)) + 24)) = Launch // thread_utils.c:351:22: + *(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&g_worker_interface)) + 32)) = Execute // thread_utils.c:351:30: + *(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&g_worker_interface)) + 40)) = End // thread_utils.c:351:39: *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&kCat3456)) + 0)) = uintptr(unsafe.Pointer(&kCat3)) // vp8_dec.c:401:44: *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&kCat3456)) + 8)) = uintptr(unsafe.Pointer(&kCat4)) // vp8_dec.c:401:51: *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&kCat3456)) + 16)) = uintptr(unsafe.Pointer(&kCat5)) // vp8_dec.c:401:58: diff --git a/main.go b/main.go @@ -1,7 +1,6 @@ package main import ( - "encoding/binary" "fmt" "image" "os" @@ -43,9 +42,8 @@ func run(args []string) error { } } var ( - quality = float32(1.0) - // BUG: turning this off leads to divide by zero. - lossless = int32(1) + quality = float32(100.0) + lossless = int32(0) // out buffer to contain webp data. out *byte = nil ) @@ -81,46 +79,3 @@ func run(args []string) error { } return nil } - -// bsearch stub that ostensibly implements a binary search on unsafe data. -// -// NOTE(jfm): current implementation is actually just a linear search -// that ignores the predicate function for now. -// -// Input data is expected to be sorted low to high, and contain i32. -// -// Assuming i32 is technically eroneous and we should use the predicate -// function to capture type information to keep this function data agnostic. -// However it might be better to simply implement a Go idiomatic function -// that doesn't operate on raw memory. -// -// Given that this function is used exactly once and the data used is i32 -// this works. -// -// key: raw pointer to object that serves as key -// base: raw pointer to first element in array -// elements: number of elements in array -// size: size of each element in bytes -// predicate: comparison function applied to each set of candidates [type predicate func(left, right uintptr) int32] -// -func bsearch(tls *libc.TLS, key, base uintptr, elements, size uint64, predicate uintptr) uintptr { - var ( - // This conversion from uintptr to unsafe.Pointer may actually be valid based - // on the codebase using uintptr exclusively, the memory is not GC'd like standard Go - // but rather allocated with `libc.Alloc`. - k int32 = *(*int32)(unsafe.Pointer(key)) - data = libc.GoBytes(base, int(elements*size)) - ) - // Linear search for exact match. - for ii := uint64(0); ii < uint64(len(data)); ii += size { - n := int32(binary.LittleEndian.Uint32(data[ii : ii+size])) - if n == k { - // return the base pointer offset by the number of bytes - // at which the value exists. - return base + uintptr(ii) - } - } - // return the base memory offset if we didn't find a match. May not - // be correct semantically, but should avoid memory corruption. - return base -}