From patchwork Mon Apr 17 19:54:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernd Kuhls X-Patchwork-Id: 751500 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3w6JtV20syz9s2x for ; Tue, 18 Apr 2017 05:56:34 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 2290230953; Mon, 17 Apr 2017 19:56:32 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Qhy7jhPPSE4H; Mon, 17 Apr 2017 19:56:16 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id 3057E3099B; Mon, 17 Apr 2017 19:55:39 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id CC6841BFF0C for ; Mon, 17 Apr 2017 19:54:49 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id CA961891D2 for ; Mon, 17 Apr 2017 19:54:49 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YcwVUxgfm1ts for ; Mon, 17 Apr 2017 19:54:48 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mailout08.t-online.de (mailout08.t-online.de [194.25.134.20]) by whitealder.osuosl.org (Postfix) with ESMTPS id 41FF4891B1 for ; Mon, 17 Apr 2017 19:54:48 +0000 (UTC) Received: from fwd20.aul.t-online.de (fwd20.aul.t-online.de [172.20.26.140]) by mailout08.t-online.de (Postfix) with SMTP id 876BF41DD6F3 for ; Mon, 17 Apr 2017 21:54:46 +0200 (CEST) Received: from fli4l.lan.fli4l (SmZfqYZBghOM3zp2egYGbP+3tBdNcV848nRHdmEvH43avxJ0RvV0qvw6rvxxrmkZsX@[79.222.106.186]) by fwd20.t-online.de with (TLSv1:ECDHE-RSA-AES256-SHA encrypted) esmtp id 1d0CjU-2AELBI0; Mon, 17 Apr 2017 21:54:44 +0200 Received: from mahler.lan.fli4l ([192.168.1.1]:34688 helo=kuhls.lan.fli4l) by fli4l.lan.fli4l with esmtp (Exim 4.89) (envelope-from ) id 1d0CjT-00062C-Ea for buildroot@buildroot.org; Mon, 17 Apr 2017 21:54:44 +0200 From: Bernd Kuhls To: buildroot@buildroot.org Date: Mon, 17 Apr 2017 21:54:16 +0200 Message-Id: <20170417195433.26672-18-bernd.kuhls@t-online.de> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170417195433.26672-1-bernd.kuhls@t-online.de> References: <20170417195433.26672-1-bernd.kuhls@t-online.de> X-ID: SmZfqYZBghOM3zp2egYGbP+3tBdNcV848nRHdmEvH43avxJ0RvV0qvw6rvxxrmkZsX X-TOI-MSGID: cfde94e1-a1ce-496b-a59f-b437e77b07ea Subject: [Buildroot] [PATCH v5 17/34] package/libsquish: remove deprecated package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Kodi removed the dependency for libsquish: https://github.com/xbmc/xbmc/commit/ed03f828be3615d294eb4a4cfccc5cdccec22997 Signed-off-by: Bernd Kuhls --- Config.in.legacy | 8 + DEVELOPERS | 1 - package/Config.in | 1 - package/libsquish/0001-kodi.patch | 327 -------------------------------------- package/libsquish/Config.in | 13 -- package/libsquish/libsquish.hash | 2 - package/libsquish/libsquish.mk | 37 ----- 7 files changed, 8 insertions(+), 381 deletions(-) delete mode 100644 package/libsquish/0001-kodi.patch delete mode 100644 package/libsquish/Config.in delete mode 100644 package/libsquish/libsquish.hash delete mode 100644 package/libsquish/libsquish.mk diff --git a/Config.in.legacy b/Config.in.legacy index 5dddff6e3..bf41aea4d 100644 --- a/Config.in.legacy +++ b/Config.in.legacy @@ -145,6 +145,14 @@ endif ############################################################################### comment "Legacy options removed in 2017.05" +config BR2_PACKAGE_LIBSQUISH + bool "libsquish removed" + select BR2_LEGACY + help + Kodi 17-Krypton removed the dependency to libsquish. + It was the only package needing libsquish, so this package + was no longer useful. + config BR2_PACKAGE_KODI_RTMPDUMP bool "kodi rtmp" select BR2_LEGACY diff --git a/DEVELOPERS b/DEVELOPERS index 123a8f928..34ecd21f0 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -213,7 +213,6 @@ F: package/libsilk/ F: package/libsndfile/ F: package/libsoil/ F: package/libsoundtouch/ -F: package/libsquish/ F: package/liburiparser/ F: package/libva/ F: package/libva-intel-driver/ diff --git a/package/Config.in b/package/Config.in index 4eaa95b1d..ef81d7d38 100644 --- a/package/Config.in +++ b/package/Config.in @@ -923,7 +923,6 @@ endmenu menu "Compression and decompression" source "package/libarchive/Config.in" - source "package/libsquish/Config.in" source "package/libzip/Config.in" source "package/lzo/Config.in" source "package/minizip/Config.in" diff --git a/package/libsquish/0001-kodi.patch b/package/libsquish/0001-kodi.patch deleted file mode 100644 index a9bca6690..000000000 --- a/package/libsquish/0001-kodi.patch +++ /dev/null @@ -1,327 +0,0 @@ -Add Kodi-specific patch - -Kodi 15.0 contains an updated version of libsquish: -https://github.com/xbmc/xbmc/tree/master/tools/depends/native/libsquish-native - -The OpenElec project provides a separate tarball including the Kodi- -specific patches: -http://sources.openelec.tv/devel/libsquish-1.10-openelec.tar.gz - -This patch contains the relevant diff between upstream libsquish 1.13 -and the OpenElec tarball. - -Signed-off-by: Bernd Kuhls - -diff -uwNr 1.13/squish.cpp libsquish-1.10-openelec/squish.cpp ---- 1.13/squish.cpp 2015-04-30 12:48:49.000000000 +0200 -+++ libsquish-1.10-openelec/squish.cpp 2015-01-09 10:58:43.000000000 +0100 -@@ -23,6 +23,7 @@ - - -------------------------------------------------------------------------- */ - -+#include - #include - #include "colourset.h" - #include "maths.h" -@@ -39,7 +40,7 @@ - // grab the flag bits - int method = flags & ( kDxt1 | kDxt3 | kDxt5 ); - int fit = flags & ( kColourIterativeClusterFit | kColourClusterFit | kColourRangeFit ); -- int extra = flags & kWeightColourByAlpha; -+ int extra = flags & ( kWeightColourByAlpha | kSourceBGRA ); - - // set defaults - if( method != kDxt3 && method != kDxt5 ) -@@ -124,8 +125,30 @@ - return blockcount*blocksize; - } - -+void CopyRGBA( u8 const* source, u8* dest, int flags ) -+{ -+ if (flags & kSourceBGRA) -+ { -+ // convert from bgra to rgba -+ dest[0] = source[2]; -+ dest[1] = source[1]; -+ dest[2] = source[0]; -+ dest[3] = source[3]; -+ } -+ else -+ { -+ for( int i = 0; i < 4; ++i ) -+ *dest++ = *source++; -+ } -+} -+ - void CompressImage( u8 const* rgba, int width, int height, void* blocks, int flags, float* metric ) - { -+ CompressImage(rgba, width, height, width*4, blocks, flags, metric); -+} -+ -+void CompressImage( u8 const* rgba, int width, int height, int pitch, void* blocks, int flags, float* metric ) -+{ - // fix any bad flags - flags = FixFlags( flags ); - -@@ -154,20 +177,14 @@ - if( sx < width && sy < height ) - { - // copy the rgba value -- u8 const* sourcePixel = rgba + 4*( width*sy + sx ); -- for( int i = 0; i < 4; ++i ) -- *targetPixel++ = *sourcePixel++; -- -+ u8 const* sourcePixel = rgba + pitch*sy + 4*sx; -+ CopyRGBA(sourcePixel, targetPixel, flags); - // enable this pixel - mask |= ( 1 << ( 4*py + px ) ); - } -- else -- { -- // skip this pixel as its outside the image - targetPixel += 4; - } - } -- } - - // compress it into the output - CompressMasked( sourceRgba, mask, targetBlock, flags, metric ); -@@ -180,6 +197,11 @@ - - void DecompressImage( u8* rgba, int width, int height, void const* blocks, int flags ) - { -+ DecompressImage( rgba, width, height, width*4, blocks, flags ); -+} -+ -+void DecompressImage( u8* rgba, int width, int height, int pitch, void const* blocks, int flags ) -+{ - // fix any bad flags - flags = FixFlags( flags ); - -@@ -207,24 +229,132 @@ - int sy = y + py; - if( sx < width && sy < height ) - { -- u8* targetPixel = rgba + 4*( width*sy + sx ); -+ u8* targetPixel = rgba + pitch*sy + 4*sx; - - // copy the rgba value -+ CopyRGBA(sourcePixel, targetPixel, flags); -+ } -+ sourcePixel += 4; -+ } -+ } -+ -+ // advance -+ sourceBlock += bytesPerBlock; -+ } -+ } -+} -+ -+static double ErrorSq(double x, double y) -+{ -+ return (x - y) * (x - y); -+} -+ -+static void ComputeBlockWMSE(u8 const *original, u8 const *compressed, unsigned int w, unsigned int h, double &cmse, double &amse) -+{ -+ // Computes the MSE for the block and weights it by the variance of the original block. -+ // If the variance of the original block is less than 4 (i.e. a standard deviation of 1 per channel) -+ // then the block is close to being a single colour. Quantisation errors in single colour blocks -+ // are easier to see than similar errors in blocks that contain more colours, particularly when there -+ // are many such blocks in a large area (eg a blue sky background) as they cause banding. Given that -+ // banding is easier to see than small errors in "complex" blocks, we weight the errors by a factor -+ // of 5. This implies that images with large, single colour areas will have a higher potential WMSE -+ // than images with lots of detail. -+ -+ cmse = amse = 0; -+ unsigned int sum_p[4]; // per channel sum of pixels -+ unsigned int sum_p2[4]; // per channel sum of pixels squared -+ memset(sum_p, 0, sizeof(sum_p)); -+ memset(sum_p2, 0, sizeof(sum_p2)); -+ for( unsigned int py = 0; py < 4; ++py ) -+ { -+ for( unsigned int px = 0; px < 4; ++px ) -+ { -+ if( px < w && py < h ) -+ { -+ double pixelCMSE = 0; -+ for( int i = 0; i < 3; ++i ) -+ { -+ pixelCMSE += ErrorSq(original[i], compressed[i]); -+ sum_p[i] += original[i]; -+ sum_p2[i] += (unsigned int)original[i]*original[i]; -+ } -+ if( original[3] == 0 && compressed[3] == 0 ) -+ pixelCMSE = 0; // transparent in both, so colour is inconsequential -+ amse += ErrorSq(original[3], compressed[3]); -+ cmse += pixelCMSE; -+ sum_p[3] += original[3]; -+ sum_p2[3] += (unsigned int)original[3]*original[3]; -+ } -+ original += 4; -+ compressed += 4; -+ } -+ } -+ unsigned int variance = 0; - for( int i = 0; i < 4; ++i ) -- *targetPixel++ = *sourcePixel++; -+ variance += w*h*sum_p2[i] - sum_p[i]*sum_p[i]; -+ if( variance < 4 * w * w * h * h ) -+ { -+ amse *= 5; -+ cmse *= 5; - } -- else -+} -+ -+void ComputeMSE( u8 const *rgba, int width, int height, u8 const *dxt, int flags, double &colourMSE, double &alphaMSE ) - { -- // skip this pixel as its outside the image -- sourcePixel += 4; -+ ComputeMSE(rgba, width, height, width*4, dxt, flags, colourMSE, alphaMSE); -+} -+ -+void ComputeMSE( u8 const *rgba, int width, int height, int pitch, u8 const *dxt, int flags, double &colourMSE, double &alphaMSE ) -+{ -+ // fix any bad flags -+ flags = FixFlags( flags ); -+ colourMSE = alphaMSE = 0; -+ -+ // initialise the block input -+ squish::u8 const* sourceBlock = dxt; -+ int bytesPerBlock = ( ( flags & squish::kDxt1 ) != 0 ) ? 8 : 16; -+ -+ // loop over blocks -+ for( int y = 0; y < height; y += 4 ) -+ { -+ for( int x = 0; x < width; x += 4 ) -+ { -+ // decompress the block -+ u8 targetRgba[4*16]; -+ Decompress( targetRgba, sourceBlock, flags ); -+ u8 const* sourcePixel = targetRgba; -+ -+ // copy across to a similar pixel block -+ u8 originalRgba[4*16]; -+ u8* originalPixel = originalRgba; -+ -+ for( int py = 0; py < 4; ++py ) -+ { -+ for( int px = 0; px < 4; ++px ) -+ { -+ int sx = x + px; -+ int sy = y + py; -+ if( sx < width && sy < height ) -+ { -+ u8 const* targetPixel = rgba + pitch*sy + 4*sx; -+ CopyRGBA(targetPixel, originalPixel, flags); - } -+ sourcePixel += 4; -+ originalPixel += 4; - } - } - -+ // compute the weighted MSE of the block -+ double blockCMSE, blockAMSE; -+ ComputeBlockWMSE(originalRgba, targetRgba, std::min(4, width - x), std::min(4, height - y), blockCMSE, blockAMSE); -+ colourMSE += blockCMSE; -+ alphaMSE += blockAMSE; - // advance - sourceBlock += bytesPerBlock; - } - } -+ colourMSE /= (width * height * 3); -+ alphaMSE /= (width * height); - } - - } // namespace squish -diff -uwNr 1.13/squish.h libsquish-1.10-openelec/squish.h ---- 1.13/squish.h 2015-04-30 12:55:27.000000000 +0200 -+++ libsquish-1.10-openelec/squish.h 2015-01-09 10:58:43.000000000 +0100 -@@ -57,7 +57,10 @@ - kColourRangeFit = ( 1 << 4 ), - - //! Weight the colour by alpha during cluster fit (disabled by default). -- kWeightColourByAlpha = ( 1 << 7 ) -+ kWeightColourByAlpha = ( 1 << 7 ), -+ -+ //! Source is BGRA rather than RGBA -+ kSourceBGRA = ( 1 << 9 ), - }; - - // ----------------------------------------------------------------------------- -@@ -194,6 +197,7 @@ - @param rgba The pixels of the source. - @param width The width of the source image. - @param height The height of the source image. -+ @param pitch The pitch of the source image. - @param blocks Storage for the compressed output. - @param flags Compression flags. - @param metric An optional perceptual metric. -@@ -231,6 +235,7 @@ - to allocate for the compressed output. - */ - void CompressImage( u8 const* rgba, int width, int height, void* blocks, int flags, float* metric = 0 ); -+void CompressImage( u8 const* rgba, int width, int height, int pitch, void* blocks, int flags, float* metric = 0 ); - - // ----------------------------------------------------------------------------- - -@@ -239,6 +244,7 @@ - @param rgba Storage for the decompressed pixels. - @param width The width of the source image. - @param height The height of the source image. -+ @param pitch The pitch of the decompressed pixels. - @param blocks The compressed DXT blocks. - @param flags Compression flags. - -@@ -254,6 +260,32 @@ - Internally this function calls squish::Decompress for each block. - */ - void DecompressImage( u8* rgba, int width, int height, void const* blocks, int flags ); -+void DecompressImage( u8* rgba, int width, int height, int pitch, void const* blocks, int flags ); -+ -+// ----------------------------------------------------------------------------- -+ -+/*! @brief Computes MSE of an compressed image in memory. -+ -+ @param rgba The original image pixels. -+ @param width The width of the source image. -+ @param height The height of the source image. -+ @param pitch The pitch of the source image. -+ @param dxt The compressed dxt blocks -+ @param flags Compression flags. -+ @param colourMSE The MSE of the colour values. -+ @param alphaMSE The MSE of the alpha values. -+ -+ The colour MSE and alpha MSE are computed across all pixels. The colour MSE is -+ averaged across all rgb values (i.e. colourMSE = sum sum_k ||dxt.k - rgba.k||/3) -+ -+ The flags parameter should specify either kDxt1, kDxt3 or kDxt5 compression, -+ however, DXT1 will be used by default if none is specified. All other flags -+ are ignored. -+ -+ Internally this function calls squish::Decompress for each block. -+*/ -+void ComputeMSE(u8 const *rgba, int width, int height, u8 const *dxt, int flags, double &colourMSE, double &alphaMSE); -+void ComputeMSE(u8 const *rgba, int width, int height, int pitch, u8 const *dxt, int flags, double &colourMSE, double &alphaMSE); - - // ----------------------------------------------------------------------------- - -diff -uwNr 1.13/squish.pc.in libsquish-1.10-openelec/squish.pc.in ---- 1.13/squish.pc 1970-01-01 01:00:00.000000000 +0100 -+++ libsquish-1.10-openelec/squish.pc 2015-01-09 10:58:43.000000000 +0100 -@@ -0,0 +1,13 @@ -+prefix=/usr -+exec_prefix=${prefix} -+libdir=${prefix}/lib -+sharedlibdir=${libdir} -+includedir=${prefix}/include -+ -+Name: squish -+Description: squish DXT lib -+Version: 1.1.3-kodi -+ -+Requires: -+Libs: -L${libdir} -L${sharedlibdir} -lsquish -+Cflags: -I${includedir} diff --git a/package/libsquish/Config.in b/package/libsquish/Config.in deleted file mode 100644 index eabe6c54a..000000000 --- a/package/libsquish/Config.in +++ /dev/null @@ -1,13 +0,0 @@ -config BR2_PACKAGE_LIBSQUISH - bool "libsquish" - depends on BR2_INSTALL_LIBSTDCPP - depends on !BR2_STATIC_LIBS - help - The libSquish library compresses images with the DXT standard - (also known as S3TC). This standard is mainly used by OpenGL - and DirectX for the lossy compression of RGBA textures. - - http://sourceforge.net/projects/libsquish - -comment "libsquish needs a toolchain w/ C++, dynamic library" - depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/package/libsquish/libsquish.hash b/package/libsquish/libsquish.hash deleted file mode 100644 index caa719864..000000000 --- a/package/libsquish/libsquish.hash +++ /dev/null @@ -1,2 +0,0 @@ -# From http://sourceforge.net/projects/libsquish/files -sha1 7bcdd7d0f0460a29e25dcdab8dc41a30e58bb366 libsquish-1.13.tgz diff --git a/package/libsquish/libsquish.mk b/package/libsquish/libsquish.mk deleted file mode 100644 index 73f8de9cc..000000000 --- a/package/libsquish/libsquish.mk +++ /dev/null @@ -1,37 +0,0 @@ -################################################################################ -# -# libsquish -# -################################################################################ - -LIBSQUISH_VERSION = 1.13 -LIBSQUISH_SOURCE = libsquish-$(LIBSQUISH_VERSION).tgz -LIBSQUISH_SITE = http://downloads.sourceforge.net/project/libsquish -LIBSQUISH_INSTALL_STAGING = YES -LIBSQUISH_STRIP_COMPONENTS = 0 -LIBSQUISH_LICENSE = MIT -LIBSQUISH_LICENSE_FILES = README - -define LIBSQUISH_BUILD_CMDS - $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) -endef - -define LIBSQUISH_INSTALL_STAGING_CMDS - mkdir -p $(STAGING_DIR)/usr/include - mkdir -p $(STAGING_DIR)/usr/lib - $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ - install PREFIX=/usr INSTALL_DIR=$(STAGING_DIR)/usr - $(INSTALL) -D -m 644 $(@D)/squish.pc $(STAGING_DIR)/usr/lib/pkgconfig/squish.pc - ln -sf libsquish.so.0.0 $(STAGING_DIR)/usr/lib/libsquish.so - ln -sf libsquish.so.0.0 $(STAGING_DIR)/usr/lib/libsquish.so.0 -endef - -define LIBSQUISH_INSTALL_TARGET_CMDS - mkdir -p $(TARGET_DIR)/usr/include - mkdir -p $(TARGET_DIR)/usr/lib - $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ - install PREFIX=/usr INSTALL_DIR=$(TARGET_DIR)/usr - ln -sf libsquish.so.0.0 $(TARGET_DIR)/usr/lib/libsquish.so.0 -endef - -$(eval $(generic-package))