diff options
Diffstat (limited to 'media-tv')
-rw-r--r-- | media-tv/xbmc/files/xbmc-9.11-TexturePacker-parallel-build.patch | 13 | ||||
-rw-r--r-- | media-tv/xbmc/files/xbmc-9.11-external-python.patch | 22 | ||||
-rw-r--r-- | media-tv/xbmc/files/xbmc-9.11-jpeg-speedup.patch | 18 | ||||
-rw-r--r-- | media-tv/xbmc/files/xbmc-9.11-libdca.patch | 746 | ||||
-rw-r--r-- | media-tv/xbmc/files/xbmc-9.11-libpng14.patch | 92 | ||||
-rw-r--r-- | media-tv/xbmc/files/xbmc-9.11-shader-upscalers.patch | 887 | ||||
-rw-r--r-- | media-tv/xbmc/files/xbmc-9.11-use-cdio-system-headers-on-non-win32.patch | 129 | ||||
-rw-r--r-- | media-tv/xbmc/files/xbmc-9.11-wavpack.patch | 44 | ||||
-rw-r--r-- | media-tv/xbmc/xbmc-10.0.ebuild | 202 |
9 files changed, 0 insertions, 2153 deletions
diff --git a/media-tv/xbmc/files/xbmc-9.11-TexturePacker-parallel-build.patch b/media-tv/xbmc/files/xbmc-9.11-TexturePacker-parallel-build.patch deleted file mode 100644 index f6bc030ee368..000000000000 --- a/media-tv/xbmc/files/xbmc-9.11-TexturePacker-parallel-build.patch +++ /dev/null @@ -1,13 +0,0 @@ -http://trac.xbmc.org/ticket/9275 - ---- xbmc/Makefile.in -+++ xbmc/Makefile.in -@@ -501,7 +501,7 @@ else - $(MAKE) -C tools/XBMCTex/ - endif - --tools/TexturePacker/TexturePacker: -+tools/TexturePacker/TexturePacker: guilib/guilib.a xbmc/lib/libsquish/libsquish-@ARCH@.a - $(MAKE) -C tools/TexturePacker/ - - install-bin: xbmc.bin # developement convenience target diff --git a/media-tv/xbmc/files/xbmc-9.11-external-python.patch b/media-tv/xbmc/files/xbmc-9.11-external-python.patch deleted file mode 100644 index 4691dc2c1d11..000000000000 --- a/media-tv/xbmc/files/xbmc-9.11-external-python.patch +++ /dev/null @@ -1,22 +0,0 @@ -let --disable-external-python work with --enable-external-libraries - ---- a/configure.in -+++ b/configure.in -@@ -235,7 +235,7 @@ - [AS_HELP_STRING([--enable-external-python], - [enable use of external python library (default is no) 'Linux only'])], - [use_external_python=$enableval], -- [use_external_python=no]) -+ [use_external_python=$use_external_libraries]) - - ### End of external library options - -@@ -620,7 +620,7 @@ - fi - - # External Python --if test "$use_external_libraries" = "yes" || test "$use_external_python" = "yes"; then -+if test "$use_external_python" = "yes"; then - AC_CHECK_LIB([python2.6], [main],, - [AC_CHECK_LIB([python2.5], [main],, - [AC_CHECK_LIB([python2.4], [main],, diff --git a/media-tv/xbmc/files/xbmc-9.11-jpeg-speedup.patch b/media-tv/xbmc/files/xbmc-9.11-jpeg-speedup.patch deleted file mode 100644 index 63cadbf51a56..000000000000 --- a/media-tv/xbmc/files/xbmc-9.11-jpeg-speedup.patch +++ /dev/null @@ -1,18 +0,0 @@ -fix from upstream -http://bugs.gentoo.org/300909 - -r26689 | jmarshallnz | 2010-01-11 14:30:08 -0500 (Mon, 11 Jan 2010) | 2 lines -fixed: Ticket #7810 - high cpu load during loading of images with libjpeg7, thanks to akawaka. - -Index: xbmc/lib/cximage-6.0/CxImage/ximajpg.cpp -=================================================================== ---- xbmc/lib/cximage-6.0/CxImage/ximajpg.cpp (revision 26688) -+++ xbmc/lib/cximage-6.0/CxImage/ximajpg.cpp (revision 26689) -@@ -220,6 +220,7 @@ bool CxImageJPG::Decode(CxFile * hFile)
-
- // Set the scale <ignacio>
- cinfo.scale_denom = GetJpegScale();
-+ cinfo.scale_num = 1; -
- // Borrowed the idea from GIF implementation <ignacio>
- if (info.nEscape == -1) {
diff --git a/media-tv/xbmc/files/xbmc-9.11-libdca.patch b/media-tv/xbmc/files/xbmc-9.11-libdca.patch deleted file mode 100644 index 59b3a64347c9..000000000000 --- a/media-tv/xbmc/files/xbmc-9.11-libdca.patch +++ /dev/null @@ -1,746 +0,0 @@ -http://bugs.gentoo.org/330201 - -link against libdca and not libdts - ---- a/configure.in -+++ b/configure.in -@@ -51,8 +51,8 @@ - external_ffmpeg_disabled="== Use of external ffmpeg disabled. ==" - external_liba52_enabled="== Use of external liba52 enabled. ==" - external_liba52_disabled="== Use of external liba52 disabled. ==" --external_libdts_enabled="== Use of external libdts enabled. ==" --external_libdts_disabled="== Use of external libdts disabled. ==" -+external_libdca_enabled="== Use of external libdca enabled. ==" -+external_libdca_disabled="== Use of external libdca disabled. ==" - external_libmpeg2_enabled="== Use of external libmpeg2 enabled. ==" - external_libmpeg2_disabled="== Use of external libmpeg2 disabled. ==" - external_libass_enabled="== Use of external libass enabled. ==" -@@ -201,11 +201,11 @@ - [use_external_liba52=$enableval], - [use_external_liba52=no]) - --AC_ARG_ENABLE([external-libdts], -- [AS_HELP_STRING([--enable-external-libdts], -- [enable use of external libdts library (default is no) 'Linux only'])], -- [use_external_libdts=$enableval], -- [use_external_libdts=no]) -+AC_ARG_ENABLE([external-libdca], -+ [AS_HELP_STRING([--enable-external-libdca], -+ [enable use of external libdca library (default is no) 'Linux only'])], -+ [use_external_libdca=$enableval], -+ [use_external_libdca=no]) - - AC_ARG_ENABLE([external-libmpeg2], - [AS_HELP_STRING([--enable-external-libmpeg2], -@@ -557,16 +557,16 @@ - USE_EXTERNAL_LIBA52=0 - fi - --# External libdts --if test "$use_external_libraries" = "yes" || test "$use_external_libdts" = "yes"; then -- AC_CHECK_LIB([dts], [main],, AC_MSG_ERROR($missing_library)) -+# External libdca -+if test "$use_external_libraries" = "yes" || test "$use_external_libdca" = "yes"; then -+ AC_CHECK_LIB([dca], [main],, AC_MSG_ERROR($missing_library)) - -- AC_MSG_NOTICE($external_libdts_enabled) -- USE_EXTERNAL_LIBDTS=1 -- AC_DEFINE([USE_EXTERNAL_LIBDTS], [1], [Whether to use external libdts library.]) -+ AC_MSG_NOTICE($external_libdca_enabled) -+ USE_EXTERNAL_LIBDCA=1 -+ AC_DEFINE([USE_EXTERNAL_LIBDCA], [1], [Whether to use external libdca library.]) - else -- AC_MSG_NOTICE($external_libdts_disabled) -- USE_EXTERNAL_LIBDTS=0 -+ AC_MSG_NOTICE($external_libdca_disabled) -+ USE_EXTERNAL_LIBDCA=0 - fi - - # External libmpeg2 -@@ -933,10 +933,10 @@ - else - final_message="$final_message\n External liba52:\tNo" - fi -- if test "$use_external_libdts" = "yes"; then -- final_message="$final_message\n External libdts:\tYes" -+ if test "$use_external_libdca" = "yes"; then -+ final_message="$final_message\n External libdca:\tYes" - else -- final_message="$final_message\n External libdts:\tNo" -+ final_message="$final_message\n External libdca:\tNo" - fi - if test "$use_external_libmpeg2" = "yes"; then - final_message="$final_message\n External libmpeg2:\tYes" -@@ -1027,7 +1027,7 @@ - AC_SUBST(USE_EXTERNAL_LIBRARIES) - AC_SUBST(USE_EXTERNAL_FFMPEG) - AC_SUBST(USE_EXTERNAL_LIBA52) --AC_SUBST(USE_EXTERNAL_LIBDTS) -+AC_SUBST(USE_EXTERNAL_LIBDCA) - AC_SUBST(USE_EXTERNAL_LIBMPEG2) - AC_SUBST(USE_EXTERNAL_LIBASS) - AC_SUBST(USE_EXTERNAL_LIBVORBIS) -@@ -1188,7 +1188,7 @@ - fi - ], [$USE_EXTERNAL_FFMPEG]) - --XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libdts], [ -+XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libdca], [ - if test "$host_vendor" = "apple" ; then - CFLAGS="-fPIC -fno-common -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" \ - LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" \ -@@ -1205,7 +1205,7 @@ - --disable-win \ - CFLAGS="-fPIC" - fi --], [$USE_EXTERNAL_LIBDTS]) -+], [$USE_EXTERNAL_LIBDCA]) - - XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss], [ - if test "$host_vendor" = "apple" ; then ---- a/xbmc/cores/dvdplayer/Codecs/Makefile.in -+++ b/xbmc/cores/dvdplayer/Codecs/Makefile.in -@@ -13,5 +13,5 @@ - DIRS+=liba52 - endif --ifneq (@USE_EXTERNAL_LIBDTS@,1) -+ifneq (@USE_EXTERNAL_LIBDCA@,1) - DIRS+=libdts - endif -@@ -32,5 +32,5 @@ - libao-$(ARCH).so - endif --ifneq (@USE_EXTERNAL_LIBDTS@,1) -+ifneq (@USE_EXTERNAL_LIBDCA@,1) - LIBS+=libdts-$(ARCH).so - endif ---- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DllLibDts.h -+++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DllLibDts.h -@@ -25,6 +25,6 @@ - #endif - extern "C" { --#if (defined USE_EXTERNAL_LIBDTS) -- #include <dts.h> -+#if (defined USE_EXTERNAL_LIBDCA) -+ #include <dca.h> - #else - #include "libdts/dts.h" -@@ -40,5 +40,5 @@ - typedef __int16 int16_t; - #endif --#ifdef LIBDTS_DOUBLE -+#ifdef LIBDCA_DOUBLE - typedef float convert_t; - #else -@@ -51,36 +51,36 @@ - public: - virtual ~DllLibDtsInterface() {} -- virtual dts_state_t * dts_init (uint32_t mm_accel)=0; -- virtual int dts_syncinfo (dts_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length)=0; -- virtual int dts_frame (dts_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias)=0; -- virtual void dts_dynrng (dts_state_t * state, level_t (* call) (level_t, void *), void * data)=0; -- virtual int dts_blocks_num (dts_state_t * state)=0; -- virtual int dts_block (dts_state_t * state)=0; -- virtual sample_t * dts_samples (dts_state_t * state)=0; -- virtual void dts_free (dts_state_t * state)=0; -+ virtual dca_state_t * dca_init (uint32_t mm_accel)=0; -+ virtual int dca_syncinfo (dca_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length)=0; -+ virtual int dca_frame (dca_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias)=0; -+ virtual void dca_dynrng (dca_state_t * state, level_t (* call) (level_t, void *), void * data)=0; -+ virtual int dca_blocks_num (dca_state_t * state)=0; -+ virtual int dca_block (dca_state_t * state)=0; -+ virtual sample_t * dca_samples (dca_state_t * state)=0; -+ virtual void dca_free (dca_state_t * state)=0; - }; - --#if (defined USE_EXTERNAL_LIBDTS) -+#if (defined USE_EXTERNAL_LIBDCA) - - class DllLibDts : public DllDynamic, DllLibDtsInterface - { - public: - virtual ~DllLibDts() {} -- virtual dts_state_t * dts_init (uint32_t mm_accel) -- { return ::dts_init (mm_accel); } -- virtual int dts_syncinfo (dts_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length) -- { return ::dts_syncinfo (state, buf, flags, sample_rate, bit_rate, frame_length); } -- virtual int dts_frame (dts_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias) -- { return ::dts_frame (state, buf, flags, level, bias); } -- virtual void dts_dynrng (dts_state_t * state, level_t (* call) (level_t, void *), void * data) -- { return ::dts_dynrng (state, call, data); } -- virtual int dts_blocks_num (dts_state_t * state) -- { return ::dts_blocks_num (state); } -- virtual int dts_block (dts_state_t * state) -- { return ::dts_block (state); } -- virtual sample_t * dts_samples (dts_state_t * state) -- { return ::dts_samples (state); } -- virtual void dts_free (dts_state_t * state) -- { return ::dts_free (state); } -+ virtual dca_state_t * dca_init (uint32_t mm_accel) -+ { return ::dca_init (mm_accel); } -+ virtual int dca_syncinfo (dca_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length) -+ { return ::dca_syncinfo (state, buf, flags, sample_rate, bit_rate, frame_length); } -+ virtual int dca_frame (dca_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias) -+ { return ::dca_frame (state, buf, flags, level, bias); } -+ virtual void dca_dynrng (dca_state_t * state, level_t (* call) (level_t, void *), void * data) -+ { return ::dca_dynrng (state, call, data); } -+ virtual int dca_blocks_num (dca_state_t * state) -+ { return ::dca_blocks_num (state); } -+ virtual int dca_block (dca_state_t * state) -+ { return ::dca_block (state); } -+ virtual sample_t * dca_samples (dca_state_t * state) -+ { return ::dca_samples (state); } -+ virtual void dca_free (dca_state_t * state) -+ { return ::dca_free (state); } - - // DLL faking. ---- a/xbmc/cores/paplayer/DllDCACodec.h -+++ b/xbmc/cores/paplayer/DllDCACodec.h -@@ -25,6 +25,6 @@ - #endif - extern "C" { --#if (defined USE_EXTERNAL_LIBDTS) -- #include <dts.h> -+#if (defined USE_EXTERNAL_LIBDCA) -+ #include <dca.h> - #else - #include "../dvdplayer/DVDCodecs/Audio/libdts/dts.h" -@@ -43,52 +43,52 @@ - #endif - --#ifdef LIBDTS_DOUBLE -+#ifdef LIBDCA_DOUBLE - typedef float convert_t; - #else - typedef sample_t convert_t; - #endif - - - class DllDCACodecInterface - { - public: - virtual ~DllDCACodecInterface() {} -- virtual dts_state_t * dts_init (uint32_t mm_accel)=0; -- virtual int dts_syncinfo (dts_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length)=0; -- virtual int dts_frame (dts_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias)=0; -- virtual void dts_dynrng (dts_state_t * state, level_t (* call) (level_t, void *), void * data)=0; -- virtual int dts_blocks_num (dts_state_t * state)=0; -- virtual int dts_block (dts_state_t * state)=0; -- virtual sample_t * dts_samples (dts_state_t * state)=0; -- virtual void dts_free (dts_state_t * state)=0; -+ virtual dca_state_t * dca_init (uint32_t mm_accel)=0; -+ virtual int dca_syncinfo (dca_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length)=0; -+ virtual int dca_frame (dca_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias)=0; -+ virtual void dca_dynrng (dca_state_t * state, level_t (* call) (level_t, void *), void * data)=0; -+ virtual int dca_blocks_num (dca_state_t * state)=0; -+ virtual int dca_block (dca_state_t * state)=0; -+ virtual sample_t * dca_samples (dca_state_t * state)=0; -+ virtual void dca_free (dca_state_t * state)=0; - }; - --#if (defined USE_EXTERNAL_LIBDTS) -+#if (defined USE_EXTERNAL_LIBDCA) - - class DllDCACodec : public DllDynamic, DllDCACodecInterface - { - public: - virtual ~DllDCACodec() {} -- virtual dts_state_t * dts_init (uint32_t mm_accel) -- { return ::dts_init (mm_accel); } -- virtual int dts_syncinfo (dts_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length) -- { return ::dts_syncinfo (state, buf, flags, sample_rate, bit_rate, frame_length); } -- virtual int dts_frame (dts_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias) -- { return ::dts_frame (state, buf, flags, level, bias); } -- virtual void dts_dynrng (dts_state_t * state, level_t (* call) (level_t, void *), void * data) -- { return ::dts_dynrng (state, call, data); } -- virtual int dts_blocks_num (dts_state_t * state) -- { return ::dts_blocks_num (state); } -- virtual int dts_block (dts_state_t * state) -- { return ::dts_block (state); } -- virtual sample_t * dts_samples (dts_state_t * state) -- { return ::dts_samples (state); } -- virtual void dts_free (dts_state_t * state) -- { return ::dts_free (state); } -+ virtual dca_state_t * dca_init (uint32_t mm_accel) -+ { return ::dca_init (mm_accel); } -+ virtual int dca_syncinfo (dca_state_t *state, uint8_t * buf, int * flags, int * sample_rate, int * bit_rate, int *frame_length) -+ { return ::dca_syncinfo (state, buf, flags, sample_rate, bit_rate, frame_length); } -+ virtual int dca_frame (dca_state_t * state, uint8_t * buf, int * flags, level_t * level, sample_t bias) -+ { return ::dca_frame (state, buf, flags, level, bias); } -+ virtual void dca_dynrng (dca_state_t * state, level_t (* call) (level_t, void *), void * data) -+ { return ::dca_dynrng (state, call, data); } -+ virtual int dca_blocks_num (dca_state_t * state) -+ { return ::dca_blocks_num (state); } -+ virtual int dca_block (dca_state_t * state) -+ { return ::dca_block (state); } -+ virtual sample_t * dca_samples (dca_state_t * state) -+ { return ::dca_samples (state); } -+ virtual void dca_free (dca_state_t * state) -+ { return ::dca_free (state); } - - // DLL faking. - virtual bool ResolveExports() { return true; } - virtual bool Load() { -- CLog::Log(LOGDEBUG, "DllDCACodec: Using libdts system library"); -+ CLog::Log(LOGDEBUG, "DllDCACodec: Using libdca system library"); - return true; - } ---- a/xbmc/cores/paplayer/DTSCodec.h -+++ a/xbmc/cores/paplayer/DTSCodec.h -@@ -57,5 +57,5 @@ - static void convert2s16_multi(convert_t * _f, int16_t * s16, int flags);
-
-- dts_state_t* m_pState;
-+ dca_state_t* m_pState;
-
- BYTE m_inputBuffer[12288];
---- a/xbmc/cores/paplayer/DTSCodec.cpp -+++ a/xbmc/cores/paplayer/DTSCodec.cpp -@@ -82,23 +82,23 @@ - switch (flags)
- {
-- case DTS_MONO: //MON 2
-+ case DCA_MONO: //MON 2
- for (i = 0; i < 256; i++)
- {
- s16[2*i] = s16[2*i+1] = convert (f[i]);
- }
- break;
-- case DTS_CHANNEL: //L R 2
-- case DTS_STEREO:
-- case DTS_STEREO_TOTAL:
-+ case DCA_CHANNEL: //L R 2
-+ case DCA_STEREO:
-+ case DCA_STEREO_TOTAL:
- convert2s16_2 (_f, s16);
- break;
-- case DTS_STEREO_SUMDIFF: //L+R L-R 2
-+ case DCA_STEREO_SUMDIFF: //L+R L-R 2
- for (i = 0; i < 256; i++)
- {
- s16[2*i] = convert (f[i])/2 + convert (f[i+256])/2;
- s16[2*i+1] = convert (f[i])/2 - convert (f[i+256])/2;
- }
- break;
-- case DTS_3F: //C L R 5
-+ case DCA_3F: //C L R 5
- for (i = 0; i < 256; i++)
- {
-@@ -109,5 +109,5 @@ - }
- break;
-- case DTS_2F1R: //L R S 4
-+ case DCA_2F1R: //L R S 4
- for (i = 0; i < 256; i++)
- {
-@@ -117,5 +117,5 @@ - }
- break;
-- case DTS_3F1R: //C L R S 5
-+ case DCA_3F1R: //C L R S 5
- for (i = 0; i < 256; i++)
- {
-@@ -126,11 +126,11 @@ - }
- break;
-- case DTS_2F2R: //L R SL SR 4
-+ case DCA_2F2R: //L R SL SR 4
- convert2s16_4 (_f, s16);
- break;
-- case DTS_3F2R: //C L R SL SR 5
-+ case DCA_3F2R: //C L R SL SR 5
- convert2s16_5 (_f, s16);
- break;
-- case DTS_MONO | DTS_LFE: //MON LFE 6
-+ case DCA_MONO | DCA_LFE: //MON LFE 6
- for (i = 0; i < 256; i++)
- {
-@@ -140,7 +140,7 @@ - }
- break;
-- case DTS_CHANNEL | DTS_LFE:
-- case DTS_STEREO | DTS_LFE:
-- case DTS_STEREO_TOTAL | DTS_LFE: //L R LFE 6
-+ case DCA_CHANNEL | DCA_LFE:
-+ case DCA_STEREO | DCA_LFE:
-+ case DCA_STEREO_TOTAL | DCA_LFE: //L R LFE 6
- for (i = 0; i < 256; i++)
- {
-@@ -151,5 +151,5 @@ - }
- break;
-- case DTS_STEREO_SUMDIFF | DTS_LFE: //L+R L-R LFE 6
-+ case DCA_STEREO_SUMDIFF | DCA_LFE: //L+R L-R LFE 6
- for (i = 0; i < 256; i++)
- {
-@@ -160,5 +160,5 @@ - }
- break;
-- case DTS_3F | DTS_LFE: //C L R LFE 6
-+ case DCA_3F | DCA_LFE: //C L R LFE 6
- for (i = 0; i < 256; i++)
- {
-@@ -170,5 +170,5 @@ - }
- break;
-- case DTS_2F1R | DTS_LFE: //L R S LFE 6
-+ case DCA_2F1R | DCA_LFE: //L R S LFE 6
- for (i = 0; i < 256; i++)
- {
-@@ -180,5 +180,5 @@ - }
- break;
-- case DTS_3F1R | DTS_LFE: //C L R S LFE 6
-+ case DCA_3F1R | DCA_LFE: //C L R S LFE 6
- for (i = 0; i < 256; i++)
- {
-@@ -190,5 +190,5 @@ - }
- break;
-- case DTS_2F2R | DTS_LFE: //L R SL SR LFE 6
-+ case DCA_2F2R | DCA_LFE: //L R SL SR LFE 6
- for (i = 0; i < 256; i++)
- {
-@@ -201,5 +201,5 @@ - }
- break;
-- case DTS_3F2R | DTS_LFE: //C L R SL SR LFE 6
-+ case DCA_3F2R | DCA_LFE: //C L R SL SR LFE 6
- for (i = 0; i < 256; i++)
- {
-@@ -241,5 +241,5 @@ - {
- m_IsInitialized = false;
-- if (m_pState) m_dll.dts_free(m_pState);
-+ if (m_pState) m_dll.dca_free(m_pState);
- m_pState = NULL;
-
-@@ -306,5 +306,5 @@ - SetDefault();
-
-- m_pState = m_dll.dts_init(0);
-+ m_pState = m_dll.dca_init(0);
- if (!m_pState)
- return false;
-@@ -351,20 +351,20 @@ - int iChannels = 0;
-
-- switch (iFlags & DTS_CHANNEL_MASK)
-+ switch (iFlags & DCA_CHANNEL_MASK)
- {
-- case DTS_MONO: iChannels = 1; break;
-- case DTS_CHANNEL: iChannels = 1; break; // ???
-- case DTS_STEREO: iChannels = 2; break;
-- case DTS_STEREO_SUMDIFF: iChannels = 2; break;
-- case DTS_STEREO_TOTAL: iChannels = 2; break;
-- case DTS_3F: iChannels = 3; break;
-- case DTS_2F1R: iChannels = 3; break;
-- case DTS_3F1R: iChannels = 4; break;
-- case DTS_2F2R: iChannels = 4; break;
-- case DTS_3F2R: iChannels = 5; break;
-- case DTS_4F2R: iChannels = 6; break;
-+ case DCA_MONO: iChannels = 1; break;
-+ case DCA_CHANNEL: iChannels = 1; break; // ???
-+ case DCA_STEREO: iChannels = 2; break;
-+ case DCA_STEREO_SUMDIFF: iChannels = 2; break;
-+ case DCA_STEREO_TOTAL: iChannels = 2; break;
-+ case DCA_3F: iChannels = 3; break;
-+ case DCA_2F1R: iChannels = 3; break;
-+ case DCA_3F1R: iChannels = 4; break;
-+ case DCA_2F2R: iChannels = 4; break;
-+ case DCA_3F2R: iChannels = 5; break;
-+ case DCA_4F2R: iChannels = 6; break;
- default: iChannels = 0; break;
- }
-- if (iFlags & DTS_LFE) iChannels++;
-+ if (iFlags & DCA_LFE) iChannels++;
-
- return iChannels;
-@@ -447,8 +447,8 @@ - {
- // it's possible that m_inputBuffer already contains 6 bits from our previous run
-- // so use m_pInputBuffer to copy the rest of the data. We must rest it after dts_syncinfo though!!
-+ // so use m_pInputBuffer to copy the rest of the data. We must rest it after dca_syncinfo though!!
- for (int u = 0; u < HEADER_SIZE; u++) m_pInputBuffer[u] = pData[u];
-
-- iLen = m_dll.dts_syncinfo(m_pState, m_inputBuffer, &m_iFlags, &m_iSourceSampleRate, &m_iSourceBitrate, &m_iFrameSize);
-+ iLen = m_dll.dca_syncinfo(m_pState, m_inputBuffer, &m_iFlags, &m_iSourceSampleRate, &m_iSourceBitrate, &m_iFrameSize);
- if (iLen > 0)
- {
-@@ -505,19 +505,19 @@ - //m_iOutputChannels = 2;
- int iFlags = m_iFlags;
-- if (m_iOutputChannels == 1) iFlags = DTS_MONO;
-- else if (m_iOutputChannels == 2) iFlags = DTS_STEREO;
-+ if (m_iOutputChannels == 1) iFlags = DCA_MONO;
-+ else if (m_iOutputChannels == 2) iFlags = DCA_STEREO;
- else
- {
- m_iOutputChannels = m_iSourceChannels;
-- iFlags |= DTS_ADJUST_LEVEL;
-+ iFlags |= DCA_ADJUST_LEVEL;
- }
-
-- m_dll.dts_frame(m_pState, m_inputBuffer, &iFlags, &level, bias);
-+ m_dll.dca_frame(m_pState, m_inputBuffer, &iFlags, &level, bias);
-
-- // [dts_dynrng (state, ...); this is only optional]
-- int iNrOfBlocks = m_dll.dts_blocks_num(m_pState);
-+ // [dca_dynrng (state, ...); this is only optional]
-+ int iNrOfBlocks = m_dll.dca_blocks_num(m_pState);
- for (int i = 0; i < iNrOfBlocks; i++)
- {
-- if (m_dll.dts_block(m_pState) != 0)
-+ if (m_dll.dca_block(m_pState) != 0)
- {
- CLog::Log(LOGDEBUG, "Not a valid DTS frame");
-@@ -527,6 +527,6 @@ - return (pData - pOldDataPointer);
- }
-- m_fSamples = m_dll.dts_samples(m_pState);
-- convert2s16_multi(m_fSamples, (short*)(m_decodedData + m_decodedDataSize), iFlags & (DTS_CHANNEL_MASK | DTS_LFE));
-+ m_fSamples = m_dll.dca_samples(m_pState);
-+ convert2s16_multi(m_fSamples, (short*)(m_decodedData + m_decodedDataSize), iFlags & (DCA_CHANNEL_MASK | DCA_LFE));
- m_decodedDataSize += 256 * sizeof(short) * m_iOutputChannels;
- }
---- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecLibDts.h -+++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecLibDts.h -@@ -49,5 +49,5 @@ - static void convert2s16_multi(convert_t * _f, int16_t * s16, int flags); - -- dts_state_t* m_pState; -+ dca_state_t* m_pState; - - int m_iFrameSize; ---- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.h -+++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.h -@@ -69,5 +69,5 @@ - DllLiba52 m_dllA52; - -- dts_state_t* m_pStateDTS; -+ dca_state_t* m_pStateDTS; - a52_state_t* m_pStateA52; - }; ---- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecLibDts.cpp -+++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecLibDts.cpp -@@ -29,5 +29,5 @@ - static inline int16_t convert(int32_t i) - { --#ifdef LIBDTS_FIXED -+#ifdef LIBDCA_FIXED - i >>= 15; - #else -@@ -44,21 +44,21 @@ - switch (flags) - { -- case DTS_MONO: -+ case DCA_MONO: - for (i = 0; i < 256; i++) - { - s16[2*i ] = convert (f[i]); - s16[2*i+1] = convert (f[i]); - } - break; -- case DTS_CHANNEL: -- case DTS_STEREO: -- case DTS_DOLBY: -+ case DCA_CHANNEL: -+ case DCA_STEREO: -+ case DCA_DOLBY: - for (i = 0; i < 256; i++) - { - s16[2*i ] = convert (f[i]); - s16[2*i+1] = convert (f[i+256]); - } - break; -- case DTS_3F: -+ case DCA_3F: - for (i = 0; i < 256; i++) - { -@@ -71,5 +71,5 @@ - } - break; -- case DTS_2F2R: -+ case DCA_2F2R: - for (i = 0; i < 256; i++) - { -@@ -80,5 +80,5 @@ - } - break; -- case DTS_3F2R: -+ case DCA_3F2R: - for (i = 0; i < 256; i++) - { -@@ -91,5 +91,5 @@ - } - break; -- case DTS_MONO | DTS_LFE: -+ case DCA_MONO | DCA_LFE: - for (i = 0; i < 256; i++) - { -@@ -99,7 +99,7 @@ - } - break; -- case DTS_CHANNEL | DTS_LFE: -- case DTS_STEREO | DTS_LFE: -- case DTS_DOLBY | DTS_LFE: -+ case DCA_CHANNEL | DCA_LFE: -+ case DCA_STEREO | DCA_LFE: -+ case DCA_DOLBY | DCA_LFE: - for (i = 0; i < 256; i++) - { -@@ -110,5 +110,5 @@ - } - break; -- case DTS_3F | DTS_LFE: -+ case DCA_3F | DCA_LFE: - for (i = 0; i < 256; i++) - { -@@ -120,5 +120,5 @@ - } - break; -- case DTS_2F2R | DTS_LFE: -+ case DCA_2F2R | DCA_LFE: - for (i = 0; i < 256; i++) - { -@@ -131,5 +131,5 @@ - } - break; -- case DTS_3F2R | DTS_LFE: -+ case DCA_3F2R | DCA_LFE: - for (i = 0; i < 256; i++) - { -@@ -163,12 +163,12 @@ - SetDefault(); - -- m_pState = m_dll.dts_init(0); -+ m_pState = m_dll.dca_init(0); - if (!m_pState) - { - Dispose(); - return false; - } - -- m_fSamples = m_dll.dts_samples(m_pState); -+ m_fSamples = m_dll.dca_samples(m_pState); - - // Output will be decided once we query the stream. -@@ -180,15 +180,15 @@ - void CDVDAudioCodecLibDts::Dispose() - { -- if (m_pState) m_dll.dts_free(m_pState); -+ if (m_pState) m_dll.dca_free(m_pState); - m_pState = NULL; - } - - int CDVDAudioCodecLibDts::GetNrOfChannels(int iFlags) - { -- if(iFlags & DTS_LFE) -+ if(iFlags & DCA_LFE) - return 6; -- if(iFlags & DTS_CHANNEL) -+ if(iFlags & DCA_CHANNEL) - return 6; -- else if ((iFlags & DTS_CHANNEL_MASK) == DTS_2F2R) -+ else if ((iFlags & DCA_CHANNEL_MASK) == DCA_2F2R) - return 4; - else -@@ -206,11 +206,11 @@ - - if (m_iOutputChannels == 1) -- m_iOutputFlags = DTS_MONO; -+ m_iOutputFlags = DCA_MONO; - else if (m_iOutputChannels == 2) -- m_iOutputFlags = DTS_STEREO; -+ m_iOutputFlags = DCA_STEREO; - else - m_iOutputFlags = m_iSourceFlags; - -- m_iOutputFlags |= DTS_ADJUST_LEVEL; -+ m_iOutputFlags |= DCA_ADJUST_LEVEL; - } - -@@ -226,5 +226,5 @@ - { - // try to sync directly in packet -- m_iFrameSize = m_dll.dts_syncinfo(m_pState, data, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &framelen); -+ m_iFrameSize = m_dll.dca_syncinfo(m_pState, data, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &framelen); - - if(m_iFrameSize > 0) -@@ -267,5 +267,5 @@ - while(true) - { -- m_iFrameSize = m_dll.dts_syncinfo(m_pState, m_inputBuffer, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &framelen); -+ m_iFrameSize = m_dll.dca_syncinfo(m_pState, m_inputBuffer, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &framelen); - if(m_iFrameSize > 0) - break; -@@ -317,18 +317,18 @@ - int flags = m_iOutputFlags; - -- m_dll.dts_frame(m_pState, frame, &flags, &level, bias); -+ m_dll.dca_frame(m_pState, frame, &flags, &level, bias); - - if (!g_advancedSettings.m_audioApplyDrc) -- m_dll.dts_dynrng(m_pState, NULL, NULL); -+ m_dll.dca_dynrng(m_pState, NULL, NULL); - -- int blocks = m_dll.dts_blocks_num(m_pState); -+ int blocks = m_dll.dca_blocks_num(m_pState); - for (int i = 0; i < blocks; i++) - { -- if (m_dll.dts_block(m_pState) != 0) -+ if (m_dll.dca_block(m_pState) != 0) - { -- CLog::Log(LOGERROR, "CDVDAudioCodecLibDts::Decode : dts_block != 0"); -+ CLog::Log(LOGERROR, "CDVDAudioCodecLibDts::Decode : dca_block != 0"); - break; - } -- convert2s16_multi(m_fSamples, (int16_t*)(m_decodedData + m_decodedSize), flags & (DTS_CHANNEL_MASK | DTS_LFE)); -+ convert2s16_multi(m_fSamples, (int16_t*)(m_decodedData + m_decodedSize), flags & (DCA_CHANNEL_MASK | DCA_LFE)); - m_decodedSize += 2 * 256 * m_iOutputChannels; - } -@@ -358,10 +358,10 @@ - void CDVDAudioCodecLibDts::Reset() - { -- if (m_pState) m_dll.dts_free(m_pState); -+ if (m_pState) m_dll.dca_free(m_pState); - - SetDefault(); - -- m_pState = m_dll.dts_init(0); -- m_fSamples = m_dll.dts_samples(m_pState); -+ m_pState = m_dll.dca_init(0); -+ m_fSamples = m_dll.dca_samples(m_pState); - } - ---- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.cpp -+++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.cpp -@@ -204,5 +204,5 @@ - if (!m_dllDTS.Load()) - return false; -- m_pStateDTS = m_dllDTS.dts_init(0); -+ m_pStateDTS = m_dllDTS.dca_init(0); - if(m_pStateDTS == NULL) - return false; -@@ -224,5 +224,5 @@ - if( m_pStateDTS ) - { -- m_dllDTS.dts_free(m_pStateDTS); -+ m_dllDTS.dca_free(m_pStateDTS); - m_pStateDTS = NULL; - } -@@ -243,5 +243,5 @@ - m_iFrameSize = m_dllA52.a52_syncinfo(data, &flags, &m_iSourceSampleRate, &m_iSourceBitrate); - else if(m_Codec == CODEC_ID_DTS) -- m_iFrameSize = m_dllDTS.dts_syncinfo(m_pStateDTS, data, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &m_iSamplesPerFrame); -+ m_iFrameSize = m_dllDTS.dca_syncinfo(m_pStateDTS, data, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &m_iSamplesPerFrame); - - if(m_iFrameSize > 0) -@@ -290,6 +290,6 @@ - m_iFrameSize = m_dllA52.a52_syncinfo(m_InputBuffer, &flags, &m_iSourceSampleRate, &m_iSourceBitrate); - else if(m_Codec == CODEC_ID_DTS) -- m_iFrameSize = m_dllDTS.dts_syncinfo(m_pStateDTS, m_InputBuffer, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &m_iSamplesPerFrame); -+ m_iFrameSize = m_dllDTS.dca_syncinfo(m_pStateDTS, m_InputBuffer, &flags, &m_iSourceSampleRate, &m_iSourceBitrate, &m_iSamplesPerFrame); - if(m_iFrameSize > 0) - break; - diff --git a/media-tv/xbmc/files/xbmc-9.11-libpng14.patch b/media-tv/xbmc/files/xbmc-9.11-libpng14.patch deleted file mode 100644 index b5af087eb4b4..000000000000 --- a/media-tv/xbmc/files/xbmc-9.11-libpng14.patch +++ /dev/null @@ -1,92 +0,0 @@ -http://bugs.gentoo.org/319113 -http://repos.archlinux.org/wsvn/community/xbmc/trunk/libpng14.patch - -diff -Nur xbmc-9.11.orig/xbmc/lib/cximage-6.0/CxImage/ximapng.cpp xbmc-9.11/xbmc/lib/cximage-6.0/CxImage/ximapng.cpp ---- xbmc-9.11.orig/xbmc/lib/cximage-6.0/CxImage/ximapng.cpp 2008-07-18 23:40:53.000000000 +0300 -+++ xbmc-9.11/xbmc/lib/cximage-6.0/CxImage/ximapng.cpp 2010-01-20 21:55:11.000000000 +0200 -@@ -142,9 +142,9 @@ - if (info_ptr->num_trans!=0){ //palette transparency
- if (info_ptr->num_trans==1){
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE){
-- info.nBkgndIndex = info_ptr->trans_values.index;
-+ info.nBkgndIndex = info_ptr->trans_color.index;
- } else{
-- info.nBkgndIndex = info_ptr->trans_values.gray>>nshift;
-+ info.nBkgndIndex = info_ptr->trans_color.gray>>nshift;
- }
- }
- if (info_ptr->num_trans>1){
-@@ -152,7 +152,7 @@ - if (pal){
- DWORD ip;
- for (ip=0;ip<min(head.biClrUsed,(unsigned long)info_ptr->num_trans);ip++)
-- pal[ip].rgbReserved=info_ptr->trans[ip];
-+ pal[ip].rgbReserved=info_ptr->trans_alpha[ip];
- for (ip=info_ptr->num_trans;ip<head.biClrUsed;ip++){
- pal[ip].rgbReserved=255;
- }
-@@ -166,9 +166,9 @@ - int num_trans;
- png_color_16 *image_background;
- if (png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, &image_background)){
-- info.nBkgndColor.rgbRed = (BYTE)(info_ptr->trans_values.red>>nshift);
-- info.nBkgndColor.rgbGreen = (BYTE)(info_ptr->trans_values.green>>nshift);
-- info.nBkgndColor.rgbBlue = (BYTE)(info_ptr->trans_values.blue>>nshift);
-+ info.nBkgndColor.rgbRed = (BYTE)(info_ptr->trans_color.red>>nshift);
-+ info.nBkgndColor.rgbGreen = (BYTE)(info_ptr->trans_color.green>>nshift);
-+ info.nBkgndColor.rgbBlue = (BYTE)(info_ptr->trans_color.blue>>nshift);
- info.nBkgndColor.rgbReserved = 0;
- info.nBkgndIndex = 0;
- }
-@@ -417,12 +417,12 @@ - if (info.nBkgndIndex >= 0){
- info_ptr->num_trans = 1;
- info_ptr->valid |= PNG_INFO_tRNS;
-- info_ptr->trans = trans;
-- info_ptr->trans_values.index = (BYTE)info.nBkgndIndex;
-- info_ptr->trans_values.red = tc.rgbRed;
-- info_ptr->trans_values.green = tc.rgbGreen;
-- info_ptr->trans_values.blue = tc.rgbBlue;
-- info_ptr->trans_values.gray = info_ptr->trans_values.index;
-+ info_ptr->trans_alpha = trans;
-+ info_ptr->trans_color.index = (BYTE)info.nBkgndIndex;
-+ info_ptr->trans_color.red = tc.rgbRed;
-+ info_ptr->trans_color.green = tc.rgbGreen;
-+ info_ptr->trans_color.blue = tc.rgbBlue;
-+ info_ptr->trans_color.gray = info_ptr->trans_color.index;
-
- // the transparency indexes start from 0 for non grayscale palette
- if (!bGrayScale && head.biClrUsed && info.nBkgndIndex)
-@@ -443,7 +443,7 @@ - trans[ip]=GetPaletteColor((BYTE)ip).rgbReserved;
- info_ptr->num_trans = (WORD)nc;
- info_ptr->valid |= PNG_INFO_tRNS;
-- info_ptr->trans = trans;
-+ info_ptr->trans_alpha = trans;
- }
-
- // copy the palette colors
-diff -Nur xbmc-9.11.orig/xbmc/screensavers/rsxs-0.9/src/pngimage.cc xbmc-9.11/xbmc/screensavers/rsxs-0.9/src/pngimage.cc ---- xbmc-9.11.orig/xbmc/screensavers/rsxs-0.9/src/pngimage.cc 2008-07-30 23:35:38.000000000 +0300 -+++ xbmc-9.11/xbmc/screensavers/rsxs-0.9/src/pngimage.cc 2010-01-20 22:21:01.000000000 +0200 -@@ -65,7 +65,7 @@ - (png_get_color_type(png, pngInfo) == PNG_COLOR_TYPE_GRAY) && - png_get_bit_depth(png, pngInfo) < 8 - ) -- png_set_gray_1_2_4_to_8(png); -+ png_set_expand_gray_1_2_4_to_8(png); - if (png_get_valid(png, pngInfo, PNG_INFO_tRNS)) - png_set_tRNS_to_alpha(png); - if (fullColor) -diff -Nur xbmc-9.11.orig/xbmc/visualizations/Goom/goom2k4-0/src/pngload.c xbmc-9.11/xbmc/visualizations/Goom/goom2k4-0/src/pngload.c ---- xbmc-9.11.orig/xbmc/visualizations/Goom/goom2k4-0/src/pngload.c 2008-08-04 05:05:51.000000000 +0300 -+++ xbmc-9.11/xbmc/visualizations/Goom/goom2k4-0/src/pngload.c 2010-01-20 22:16:23.000000000 +0200 -@@ -94,7 +94,7 @@ - png_set_palette_to_rgb (png_ptr); - - if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) -- png_set_gray_1_2_4_to_8 (png_ptr); -+ png_set_expand_gray_1_2_4_to_8 (png_ptr); - else if (color_type == PNG_COLOR_TYPE_GRAY || - color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - png_set_gray_to_rgb (png_ptr); diff --git a/media-tv/xbmc/files/xbmc-9.11-shader-upscalers.patch b/media-tv/xbmc/files/xbmc-9.11-shader-upscalers.patch deleted file mode 100644 index d4feaa47f705..000000000000 --- a/media-tv/xbmc/files/xbmc-9.11-shader-upscalers.patch +++ /dev/null @@ -1,887 +0,0 @@ -http://bugs.gentoo.org/306661 - -backport shader based upscalers from svn trunk - ---- language/English/strings.xml -+++ language/English/strings.xml -@@ -1554,16 +1554,17 @@ - <string id="16304">Lanczos2</string> - <string id="16305">Lanczos3</string> - <string id="16306">Sinc8</string> -- - <string id="16307">Bicubic (software)</string> - <string id="16308">Lanczos (software)</string> - <string id="16309">Sinc (software)</string> -- - <string id="16310">(VDPAU)Temporal</string> - <string id="16311">(VDPAU)Temporal/Spatial</string> - <string id="16312">(VDPAU)Noise Reduction</string> - <string id="16313">(VDPAU)Sharpness</string> - <string id="16314">Inverse Telecine</string> -+ <string id="16315">Lanczos3 optimized</string> -+ <string id="16316">Auto</string> -+ - <string id="17500">Display sleep timeout</string> - - <string id="19000">Switch to channel</string> ---- system/shaders/convolution-6x6.glsl -+++ system/shaders/convolution-6x6.glsl -@@ -0,0 +1,69 @@ -+uniform sampler2D img; -+uniform float stepx; -+uniform float stepy; -+ -+#if (HAS_FLOAT_TEXTURE) -+uniform sampler1D kernelTex; -+ -+vec3 weight(float pos) -+{ -+ return texture1D(kernelTex, pos).rgb; -+} -+#else -+uniform sampler2D kernelTex; -+ -+vec3 weight(float pos) -+{ -+ //row 0 contains the high byte, row 1 contains the low byte -+ return ((texture2D(kernelTex, vec2(pos, 0.0)) * 256.0 + texture2D(kernelTex, vec2(pos, 1.0)))).rgb / 128.5 - 1.0; -+} -+#endif -+ -+vec3 pixel(float xpos, float ypos) -+{ -+ return texture2D(img, vec2(xpos, ypos)).rgb; -+} -+ -+vec3 line (float ypos, vec3 xpos1, vec3 xpos2, vec3 linetaps1, vec3 linetaps2) -+{ -+ vec3 pixels; -+ -+ pixels = pixel(xpos1.r, ypos) * linetaps1.r; -+ pixels += pixel(xpos1.g, ypos) * linetaps2.r; -+ pixels += pixel(xpos1.b, ypos) * linetaps1.g; -+ pixels += pixel(xpos2.r, ypos) * linetaps2.g; -+ pixels += pixel(xpos2.g, ypos) * linetaps1.b; -+ pixels += pixel(xpos2.b, ypos) * linetaps2.b; -+ -+ return pixels; -+} -+ -+void main() -+{ -+ float xf = fract(gl_TexCoord[0].x / stepx); -+ float yf = fract(gl_TexCoord[0].y / stepy); -+ -+ vec3 linetaps1 = weight((1.0 - xf) / 2.0); -+ vec3 linetaps2 = weight((1.0 - xf) / 2.0 + 0.5); -+ vec3 columntaps1 = weight((1.0 - yf) / 2.0); -+ vec3 columntaps2 = weight((1.0 - yf) / 2.0 + 0.5); -+ -+ vec3 xpos1 = vec3( -+ (-1.5 - xf) * stepx + gl_TexCoord[0].x, -+ (-0.5 - xf) * stepx + gl_TexCoord[0].x, -+ ( 0.5 - xf) * stepx + gl_TexCoord[0].x); -+ vec3 xpos2 = vec3( -+ ( 1.5 - xf) * stepx + gl_TexCoord[0].x, -+ ( 2.5 - xf) * stepx + gl_TexCoord[0].x, -+ ( 3.5 - xf) * stepx + gl_TexCoord[0].x); -+ -+ gl_FragColor.rgb = line((-1.5 - yf) * stepy + gl_TexCoord[0].y, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.r; -+ gl_FragColor.rgb += line((-0.5 - yf) * stepy + gl_TexCoord[0].y, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.r; -+ gl_FragColor.rgb += line(( 0.5 - yf) * stepy + gl_TexCoord[0].y, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.g; -+ gl_FragColor.rgb += line(( 1.5 - yf) * stepy + gl_TexCoord[0].y, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.g; -+ gl_FragColor.rgb += line(( 2.5 - yf) * stepy + gl_TexCoord[0].y, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.b; -+ gl_FragColor.rgb += line(( 3.5 - yf) * stepy + gl_TexCoord[0].y, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.b; -+ -+ gl_FragColor.a = gl_Color.a; -+} -+ ---- system/shaders/bicubic.glsl -+++ system/shaders/bicubic.glsl -@@ -0,0 +1,47 @@ -+uniform sampler2D img; -+uniform float stepx; -+uniform float stepy; -+uniform sampler2D kernelTex; -+ -+vec4 cubicFilter(float xValue, vec4 c0, vec4 c1, vec4 c2, vec4 c3) -+{ -+ vec4 h = texture2D(kernelTex, vec2(xValue, 0.5)); -+ vec4 r = c0 * h.r; -+ r += c1 * h.g; -+ r += c2 * h.b; -+ r += c3 * h.a; -+ return r; -+} -+ -+void main() -+{ -+ vec2 f = vec2(gl_TexCoord[0].x / stepx , gl_TexCoord[0].y / stepy); -+ f = fract(f); -+ vec4 t0 = cubicFilter(f.x, -+ texture2D(img, gl_TexCoord[0].xy + vec2(-stepx, -stepy)), -+ texture2D(img, gl_TexCoord[0].xy + vec2(0.0, -stepy)), -+ texture2D(img, gl_TexCoord[0].xy + vec2(stepx, -stepy)), -+ texture2D(img, gl_TexCoord[0].xy + vec2(2.0*stepx, -stepy))); -+ -+ vec4 t1 = cubicFilter(f.x, -+ texture2D(img, gl_TexCoord[0].xy + vec2(-stepx, 0.0)), -+ texture2D(img, gl_TexCoord[0].xy + vec2(0.0, 0.0)), -+ texture2D(img, gl_TexCoord[0].xy + vec2(stepx, 0.0)), -+ texture2D(img, gl_TexCoord[0].xy + vec2(2.0*stepx, 0.0))); -+ -+ vec4 t2 = cubicFilter(f.x, -+ texture2D(img, gl_TexCoord[0].xy + vec2(-stepx, stepy)), -+ texture2D(img, gl_TexCoord[0].xy + vec2(0.0, stepy)), -+ texture2D(img, gl_TexCoord[0].xy + vec2(stepx, stepy)), -+ texture2D(img, gl_TexCoord[0].xy + vec2(2.0*stepx, stepy))); -+ -+ vec4 t3 = cubicFilter(f.x, -+ texture2D(img, gl_TexCoord[0].xy + vec2(-stepx, 2.0*stepy)), -+ texture2D(img, gl_TexCoord[0].xy + vec2(0, 2.0*stepy)), -+ texture2D(img, gl_TexCoord[0].xy + vec2(stepx, 2.0*stepy)), -+ texture2D(img, gl_TexCoord[0].xy + vec2(2.0*stepx, 2.0*stepy))); -+ -+ gl_FragColor = cubicFilter(f.y, t0, t1, t2, t3); -+ gl_FragColor.a = gl_Color.a; -+} -+ ---- system/shaders/convolution-4x4.glsl -+++ system/shaders/convolution-4x4.glsl -@@ -0,0 +1,60 @@ -+uniform sampler2D img; -+uniform float stepx; -+uniform float stepy; -+ -+#if (HAS_FLOAT_TEXTURE) -+uniform sampler1D kernelTex; -+ -+vec4 weight(float pos) -+{ -+ return texture1D(kernelTex, pos); -+} -+#else -+uniform sampler2D kernelTex; -+ -+vec4 weight(float pos) -+{ -+ //row 0 contains the high byte, row 1 contains the low byte -+ return (texture2D(kernelTex, vec2(pos, 0.0)) * 256.0 + texture2D(kernelTex, vec2(pos, 1.0))) / 128.5 - 1.0; -+} -+#endif -+ -+vec3 pixel(float xpos, float ypos) -+{ -+ return texture2D(img, vec2(xpos, ypos)).rgb; -+} -+ -+vec3 line (float ypos, vec4 xpos, vec4 linetaps) -+{ -+ vec3 pixels; -+ -+ pixels = pixel(xpos.r, ypos) * linetaps.r; -+ pixels += pixel(xpos.g, ypos) * linetaps.g; -+ pixels += pixel(xpos.b, ypos) * linetaps.b; -+ pixels += pixel(xpos.a, ypos) * linetaps.a; -+ -+ return pixels; -+} -+ -+void main() -+{ -+ float xf = fract(gl_TexCoord[0].x / stepx); -+ float yf = fract(gl_TexCoord[0].y / stepy); -+ -+ vec4 linetaps = weight(1.0 - xf); -+ vec4 columntaps = weight(1.0 - yf); -+ -+ vec4 xpos = vec4( -+ (-0.5 - xf) * stepx + gl_TexCoord[0].x, -+ ( 0.5 - xf) * stepx + gl_TexCoord[0].x, -+ ( 1.5 - xf) * stepx + gl_TexCoord[0].x, -+ ( 2.5 - xf) * stepx + gl_TexCoord[0].x); -+ -+ gl_FragColor.rgb = line((-0.5 - yf) * stepy + gl_TexCoord[0].y, xpos, linetaps) * columntaps.r; -+ gl_FragColor.rgb += line(( 0.5 - yf) * stepy + gl_TexCoord[0].y, xpos, linetaps) * columntaps.g; -+ gl_FragColor.rgb += line(( 1.5 - yf) * stepy + gl_TexCoord[0].y, xpos, linetaps) * columntaps.b; -+ gl_FragColor.rgb += line(( 2.5 - yf) * stepy + gl_TexCoord[0].y, xpos, linetaps) * columntaps.a; -+ -+ gl_FragColor.a = gl_Color.a; -+} -+ ---- xbmc/settings/VideoSettings.h -+++ xbmc/settings/VideoSettings.h -@@ -51,9 +51,10 @@ - { - VS_SCALINGMETHOD_NEAREST=0, - VS_SCALINGMETHOD_LINEAR, -- -+ - VS_SCALINGMETHOD_CUBIC, - VS_SCALINGMETHOD_LANCZOS2, -+ VS_SCALINGMETHOD_LANCZOS3_FAST, - VS_SCALINGMETHOD_LANCZOS3, - VS_SCALINGMETHOD_SINC8, - VS_SCALINGMETHOD_NEDI, -@@ -61,7 +62,9 @@ - VS_SCALINGMETHOD_BICUBIC_SOFTWARE, - VS_SCALINGMETHOD_LANCZOS_SOFTWARE, - VS_SCALINGMETHOD_SINC_SOFTWARE, -- VS_SCALINGMETHOD_VDPAU_HARDWARE -+ VS_SCALINGMETHOD_VDPAU_HARDWARE, -+ -+ VS_SCALINGMETHOD_AUTO - }; - - class CVideoSettings ---- xbmc/cores/VideoRenderers/VideoShaders/VideoFilterShader.cpp -+++ xbmc/cores/VideoRenderers/VideoShaders/VideoFilterShader.cpp -@@ -21,6 +21,7 @@ - #include "system.h" - #include "VideoFilterShader.h" - #include "utils/log.h" -+#include "ConvolutionKernels.h" - - #include <string> - #include <math.h> -@@ -63,60 +64,13 @@ - - BicubicFilterShader::BicubicFilterShader(float B, float C) - { -- string shaderf = -- "uniform sampler2D img;" -- "uniform float stepx;" -- "uniform float stepy;" -- "uniform sampler2D kernelTex;" -- -- "vec4 cubicFilter(float xValue, vec4 c0, vec4 c1, vec4 c2, vec4 c3)" -- "{" -- " vec4 h = texture2D(kernelTex, vec2(xValue, 0.5));" -- " vec4 r = c0 * h.r;" -- " r += c1 * h.g;" -- " r += c2 * h.b;" -- " r += c3 * h.a;" -- " return r;" -- "}" -- "" -- "void main()" -- "{" -- "vec2 f = vec2(gl_TexCoord[0].x / stepx , gl_TexCoord[0].y / stepy);" -- "f = fract(f);" -- "vec4 t0 = cubicFilter(f.x," -- "texture2D(img, gl_TexCoord[0].xy + vec2(-stepx, -stepy))," -- "texture2D(img, gl_TexCoord[0].xy + vec2(0.0, -stepy))," -- "texture2D(img, gl_TexCoord[0].xy + vec2(stepx, -stepy))," -- "texture2D(img, gl_TexCoord[0].xy + vec2(2.0*stepx, -stepy)));" -- "" -- "vec4 t1 = cubicFilter(f.x," -- "texture2D(img, gl_TexCoord[0].xy + vec2(-stepx, 0.0))," -- "texture2D(img, gl_TexCoord[0].xy + vec2(0.0, 0.0))," -- "texture2D(img, gl_TexCoord[0].xy + vec2(stepx, 0.0))," -- "texture2D(img, gl_TexCoord[0].xy + vec2(2.0*stepx, 0.0)));" -- "" -- "vec4 t2 = cubicFilter(f.x," -- "texture2D(img, gl_TexCoord[0].xy + vec2(-stepx, stepy))," -- "texture2D(img, gl_TexCoord[0].xy + vec2(0.0, stepy))," -- "texture2D(img, gl_TexCoord[0].xy + vec2(stepx, stepy))," -- "texture2D(img, gl_TexCoord[0].xy + vec2(2.0*stepx, stepy)));" -- "" -- "vec4 t3 = cubicFilter(f.x," -- "texture2D(img, gl_TexCoord[0].xy + vec2(-stepx, 2.0*stepy))," -- "texture2D(img, gl_TexCoord[0].xy + vec2(0, 2.0*stepy))," -- "texture2D(img, gl_TexCoord[0].xy + vec2(stepx, 2.0*stepy))," -- "texture2D(img, gl_TexCoord[0].xy + vec2(2.0*stepx, 2.0*stepy)));" -- -- "gl_FragColor = cubicFilter(f.y, t0, t1, t2, t3) ;" -- "gl_FragColor.a = gl_Color.a;" -- "}"; -- PixelShader()->SetSource(shaderf); -+ PixelShader()->LoadSource("bicubic.glsl"); - m_kernelTex1 = 0; - m_B = B; - m_C = C; -- if (B<=0) -+ if (B<0) - m_B=1.0f/3.0f; -- if (C<=0) -+ if (C<0) - m_C=1.0f/3.0f; - } - -@@ -209,8 +163,8 @@ - glBindTexture(GL_TEXTURE_2D, m_kernelTex1); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); -- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); -+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); -+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F_ARB, size, 1, 0, GL_RGBA, GL_FLOAT, img); - - glActiveTexture(GL_TEXTURE0); -@@ -254,4 +208,110 @@ - return val; - } - -+ConvolutionFilterShader::ConvolutionFilterShader(ESCALINGMETHOD method) -+{ -+ m_method = method; -+ m_kernelTex1 = 0; -+ -+ string shadername; -+ string defines; -+ -+ if (m_method == VS_SCALINGMETHOD_CUBIC || -+ m_method == VS_SCALINGMETHOD_LANCZOS2 || -+ m_method == VS_SCALINGMETHOD_LANCZOS3_FAST) -+ shadername = "convolution-4x4.glsl"; -+ else if (m_method == VS_SCALINGMETHOD_LANCZOS3) -+ shadername = "convolution-6x6.glsl"; -+ -+ m_floattex = glewIsSupported("GL_ARB_texture_float"); -+ -+ if (m_floattex) -+ defines = "#define HAS_FLOAT_TEXTURE 1\n"; -+ else -+ defines = "#define HAS_FLOAT_TEXTURE 0\n"; -+ -+ CLog::Log(LOGDEBUG, "GL: ConvolutionFilterShader: using %s defines: %s", shadername.c_str(), defines.c_str()); -+ PixelShader()->LoadSource(shadername, defines); -+} -+ -+void ConvolutionFilterShader::OnCompiledAndLinked() -+{ -+ // obtain shader attribute handles on successfull compilation -+ m_hSourceTex = glGetUniformLocation(ProgramHandle(), "img"); -+ m_hStepX = glGetUniformLocation(ProgramHandle(), "stepx"); -+ m_hStepY = glGetUniformLocation(ProgramHandle(), "stepy"); -+ m_hKernTex = glGetUniformLocation(ProgramHandle(), "kernelTex"); -+ -+ CConvolutionKernel kernel(m_method, 256); -+ -+ if (m_kernelTex1) -+ { -+ glDeleteTextures(1, &m_kernelTex1); -+ m_kernelTex1 = 0; -+ } -+ -+ glGenTextures(1, &m_kernelTex1); -+ -+ if ((m_kernelTex1<=0)) -+ { -+ CLog::Log(LOGERROR, "GL: ConvolutionFilterShader: Error creating kernel texture"); -+ return; -+ } -+ -+ glActiveTexture(GL_TEXTURE2); -+ -+ //if float textures are supported, we can load the kernel as a 1d float texture -+ //if not, we load it as a 2d texture with 2 rows, where row 0 contains the high byte -+ //and row 1 contains the low byte, which can be converted in the shader -+ if (m_floattex) -+ { -+ glBindTexture(GL_TEXTURE_1D, m_kernelTex1); -+ glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -+ glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -+ glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -+ glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -+ glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA16F_ARB, kernel.GetSize(), 0, GL_RGBA, GL_FLOAT, kernel.GetFloatPixels()); -+ } -+ else -+ { -+ glBindTexture(GL_TEXTURE_2D, m_kernelTex1); -+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); -+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); -+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, kernel.GetSize(), 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, kernel.GetIntFractPixels()); -+ } -+ -+ glActiveTexture(GL_TEXTURE0); -+ -+ VerifyGLState(); -+} -+ -+bool ConvolutionFilterShader::OnEnabled() -+{ -+ // set shader attributes once enabled -+ glActiveTexture(GL_TEXTURE2); -+ -+ if (m_floattex) -+ glBindTexture(GL_TEXTURE_1D, m_kernelTex1); -+ else -+ glBindTexture(GL_TEXTURE_2D, m_kernelTex1); -+ -+ glActiveTexture(GL_TEXTURE0); -+ glUniform1i(m_hSourceTex, m_sourceTexUnit); -+ glUniform1i(m_hKernTex, 2); -+ glUniform1f(m_hStepX, m_stepX); -+ glUniform1f(m_hStepY, m_stepY); -+ VerifyGLState(); -+ return true; -+} -+ -+void ConvolutionFilterShader::Free() -+{ -+ if (m_kernelTex1) -+ glDeleteTextures(1, &m_kernelTex1); -+ m_kernelTex1 = 0; -+ BaseVideoFilterShader::Free(); -+} -+ - #endif ---- xbmc/cores/VideoRenderers/VideoShaders/ConvolutionKernels.cpp -+++ xbmc/cores/VideoRenderers/VideoShaders/ConvolutionKernels.cpp -@@ -0,0 +1,226 @@ -+/* -+ * Copyright (C) 2005-2008 Team XBMC -+ * http://www.xbmc.org -+ * -+ * This Program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2, or (at your option) -+ * any later version. -+ * -+ * This Program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with XBMC; see the file COPYING. If not, write to -+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -+ * http://www.gnu.org/copyleft/gpl.html -+ * -+ */ -+#ifdef _WIN32 -+ #define _USE_MATH_DEFINES -+#endif -+ -+#include "ConvolutionKernels.h" -+#include "MathUtils.h" -+ -+#define SINC(x) (sin(M_PI * (x)) / (M_PI * (x))) -+ -+CConvolutionKernel::CConvolutionKernel(ESCALINGMETHOD method, int size) -+{ -+ m_size = size; -+ m_floatpixels = new float[m_size * 4]; -+ -+ if (method == VS_SCALINGMETHOD_LANCZOS2) -+ Lanczos2(); -+ else if (method == VS_SCALINGMETHOD_LANCZOS3_FAST) -+ Lanczos3Fast(); -+ else if (method == VS_SCALINGMETHOD_LANCZOS3) -+ Lanczos3(); -+ else if (method == VS_SCALINGMETHOD_CUBIC) -+ Bicubic(1.0 / 3.0, 1.0 / 3.0); -+ -+ ToIntFract(); -+} -+ -+CConvolutionKernel::~CConvolutionKernel() -+{ -+ delete [] m_floatpixels; -+ delete [] m_intfractpixels; -+} -+ -+//generate a lanczos2 kernel which can be loaded with RGBA format -+//each value of RGBA has one tap, so a shader can load 4 taps with a single pixel lookup -+void CConvolutionKernel::Lanczos2() -+{ -+ for (int i = 0; i < m_size; i++) -+ { -+ double x = (double)i / (double)m_size; -+ -+ //generate taps -+ for (int j = 0; j < 4; j++) -+ m_floatpixels[i * 4 + j] = (float)LanczosWeight(x + (double)(j - 2), 2.0); -+ -+ //any collection of 4 taps added together needs to be exactly 1.0 -+ //for lanczos this is not always the case, so we take each collection of 4 taps -+ //and divide those taps by the sum of the taps -+ float weight = 0.0; -+ for (int j = 0; j < 4; j++) -+ weight += m_floatpixels[i * 4 + j]; -+ -+ for (int j = 0; j < 4; j++) -+ m_floatpixels[i * 4 + j] /= weight; -+ } -+} -+ -+//generate a lanczos3 kernel which can be loaded with RGBA format -+//each value of RGBA has one tap, so a shader can load 4 taps with a single pixel lookup -+//the two outer lobes of the lanczos3 kernel are added to the two lobes one step to the middle -+//this basically looks the same as lanczos3, but the kernel only has 4 taps, -+//so it can use the 4x4 convolution shader which is twice as fast as the 6x6 one -+void CConvolutionKernel::Lanczos3Fast() -+{ -+ for (int i = 0; i < m_size; i++) -+ { -+ double a = 3.0; -+ double x = (double)i / (double)m_size; -+ -+ //generate taps -+ m_floatpixels[i * 4 + 0] = (float)(LanczosWeight(x - 2.0, a) + LanczosWeight(x - 3.0, a)); -+ m_floatpixels[i * 4 + 1] = (float) LanczosWeight(x - 1.0, a); -+ m_floatpixels[i * 4 + 2] = (float) LanczosWeight(x , a); -+ m_floatpixels[i * 4 + 3] = (float)(LanczosWeight(x + 1.0, a) + LanczosWeight(x + 2.0, a)); -+ -+ //any collection of 4 taps added together needs to be exactly 1.0 -+ //for lanczos this is not always the case, so we take each collection of 4 taps -+ //and divide those taps by the sum of the taps -+ float weight = 0.0; -+ for (int j = 0; j < 4; j++) -+ weight += m_floatpixels[i * 4 + j]; -+ -+ for (int j = 0; j < 4; j++) -+ m_floatpixels[i * 4 + j] /= weight; -+ } -+} -+ -+//generate a lanczos3 kernel which can be loaded with RGBA format -+//each value of RGB has one tap, so a shader can load 3 taps with a single pixel lookup -+void CConvolutionKernel::Lanczos3() -+{ -+ for (int i = 0; i < m_size; i++) -+ { -+ double x = (double)i / (double)m_size; -+ -+ //generate taps -+ for (int j = 0; j < 3; j++) -+ m_floatpixels[i * 4 + j] = (float)LanczosWeight(x * 2.0 + (double)(j * 2 - 3), 3.0); -+ -+ m_floatpixels[i * 4 + 3] = 0.0; -+ } -+ -+ //any collection of 6 taps added together needs to be exactly 1.0 -+ //for lanczos this is not always the case, so we take each collection of 6 taps -+ //and divide those taps by the sum of the taps -+ for (int i = 0; i < m_size / 2; i++) -+ { -+ float weight = 0.0; -+ for (int j = 0; j < 3; j++) -+ { -+ weight += m_floatpixels[i * 4 + j]; -+ weight += m_floatpixels[(i + m_size / 2) * 4 + j]; -+ } -+ for (int j = 0; j < 3; j++) -+ { -+ m_floatpixels[i * 4 + j] /= weight; -+ m_floatpixels[(i + m_size / 2) * 4 + j] /= weight; -+ } -+ } -+} -+ -+//generate a bicubic kernel which can be loaded with RGBA format -+//each value of RGBA has one tap, so a shader can load 4 taps with a single pixel lookup -+void CConvolutionKernel::Bicubic(double B, double C) -+{ -+ for (int i = 0; i < m_size; i++) -+ { -+ double x = (double)i / (double)m_size; -+ -+ //generate taps -+ for (int j = 0; j < 4; j++) -+ m_floatpixels[i * 4 + j] = (float)BicubicWeight(x + (double)(j - 2), B, C); -+ } -+} -+ -+double CConvolutionKernel::LanczosWeight(double x, double radius) -+{ -+ double ax = fabs(x); -+ -+ if (ax == 0.0) -+ return 1.0; -+ else if (ax < radius) -+ return SINC(ax) * SINC(ax / radius); -+ else -+ return 0.0; -+} -+ -+double CConvolutionKernel::BicubicWeight(double x, double B, double C) -+{ -+ double ax = fabs(x); -+ -+ if (ax<1.0) -+ { -+ return ((12 - 9*B - 6*C) * ax * ax * ax + -+ (-18 + 12*B + 6*C) * ax * ax + -+ (6 - 2*B))/6; -+ } -+ else if (ax<2.0) -+ { -+ return ((-B - 6*C) * ax * ax * ax + -+ (6*B + 30*C) * ax * ax + (-12*B - 48*C) * -+ ax + (8*B + 24*C)) / 6; -+ } -+ else -+ { -+ return 0.0; -+ } -+} -+ -+ -+//convert float to high byte/low byte, so the kernel can be loaded into an 8 bit texture -+//with height 2 and converted back to real float in the shader -+//it only works when the kernel texture uses nearest neighbour, but there's almost no difference -+//between that and linear interpolation -+void CConvolutionKernel::ToIntFract() -+{ -+ m_intfractpixels = new uint8_t[m_size * 8]; -+ -+ for (int i = 0; i < m_size * 4; i++) -+ { -+ int value = MathUtils::round_int((m_floatpixels[i] + 1.0) / 2.0 * 65535.0); -+ if (value < 0) -+ value = 0; -+ else if (value > 65535) -+ value = 65535; -+ -+ int integer = value / 256; -+ int fract = value % 256; -+ -+ m_intfractpixels[i] = (uint8_t)integer; -+ m_intfractpixels[i + m_size * 4] = (uint8_t)fract; -+ } -+ -+#if 0 -+ for (int i = 0; i < 4; i++) -+ { -+ for (int j = 0; j < m_size; j++) -+ { -+ printf("%i %f %f\n", -+ i * m_size + j, -+ ((double)m_intfractpixels[j * 4 + i] + (double)m_intfractpixels[j * 4 + i + m_size * 4] / 255.0) / 255.0 * 2.0 - 1.0, -+ m_floatpixels[j * 4 + i]); -+ } -+ } -+#endif -+} -+ ---- xbmc/cores/VideoRenderers/VideoShaders/VideoFilterShader.h -+++ xbmc/cores/VideoRenderers/VideoShaders/VideoFilterShader.h -@@ -4,6 +4,7 @@ - #ifdef HAS_GL - - #include "../../../../guilib/Shader.h" -+#include "../../../settings/VideoSettings.h" - - using namespace Shaders; - -@@ -35,7 +36,7 @@ - class BicubicFilterShader : public BaseVideoFilterShader - { - public: -- BicubicFilterShader(float B=0.0f, float C=0.0f); -+ BicubicFilterShader(float B=-1.0f, float C=-1.0f); - void OnCompiledAndLinked(); - bool OnEnabled(); - void Free(); -@@ -55,6 +56,25 @@ - float m_C; - }; - -+ class ConvolutionFilterShader : public BaseVideoFilterShader -+ { -+ public: -+ ConvolutionFilterShader(ESCALINGMETHOD method); -+ void OnCompiledAndLinked(); -+ bool OnEnabled(); -+ void Free(); -+ -+ protected: -+ // kernel textures -+ GLuint m_kernelTex1; -+ -+ // shader handles to kernel textures -+ GLint m_hKernTex; -+ -+ ESCALINGMETHOD m_method; -+ bool m_floattex; //if float textures are supported -+ }; -+ - } // end namespace - - #endif ---- xbmc/cores/VideoRenderers/VideoShaders/ConvolutionKernels.h -+++ xbmc/cores/VideoRenderers/VideoShaders/ConvolutionKernels.h -@@ -0,0 +1,55 @@ -+/* -+ * Copyright (C) 2005-2008 Team XBMC -+ * http://www.xbmc.org -+ * -+ * This Program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2, or (at your option) -+ * any later version. -+ * -+ * This Program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with XBMC; see the file COPYING. If not, write to -+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -+ * http://www.gnu.org/copyleft/gpl.html -+ * -+ */ -+ -+#ifndef CONVOLUTIONKERNELS -+#define CONVOLUTIONKERNELS -+ -+#include "system.h" -+#include "../../../settings/VideoSettings.h" -+ -+class CConvolutionKernel -+{ -+ public: -+ CConvolutionKernel(ESCALINGMETHOD method, int size); -+ ~CConvolutionKernel(); -+ -+ int GetSize() { return m_size; } -+ float* GetFloatPixels() { return m_floatpixels; } -+ uint8_t* GetIntFractPixels() { return m_intfractpixels; } -+ -+ private: -+ -+ void Lanczos2(); -+ void Lanczos3Fast(); -+ void Lanczos3(); -+ void Bicubic(double B, double C); -+ -+ double LanczosWeight(double x, double radius); -+ double BicubicWeight(double x, double B, double C); -+ -+ void ToIntFract(); -+ -+ int m_size; -+ float* m_floatpixels; -+ uint8_t* m_intfractpixels; -+}; -+ -+#endif //CONVOLUTIONKERNELS ---- xbmc/cores/VideoRenderers/VideoShaders/Makefile -+++ xbmc/cores/VideoRenderers/VideoShaders/Makefile -@@ -1,5 +1,5 @@ - INCLUDES=-I. -I.. -I../../ -I../../../ -I../../../linux -I../../../../guilib --SRCS=YUV2RGBShader.cpp VideoFilterShader.cpp -+SRCS=YUV2RGBShader.cpp VideoFilterShader.cpp ConvolutionKernels.cpp - - LIB=VideoShaders.a - ---- xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -+++ xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -@@ -886,6 +886,19 @@ - - VerifyGLState(); - -+ if (m_scalingMethod == VS_SCALINGMETHOD_AUTO) -+ { -+ bool scaleSD = (int)m_sourceWidth < m_upscalingWidth && (int)m_sourceHeight < m_upscalingHeight && -+ m_sourceHeight < 720 && m_sourceWidth < 1280; -+ -+ if (Supports(VS_SCALINGMETHOD_VDPAU_HARDWARE)) -+ m_scalingMethod = VS_SCALINGMETHOD_VDPAU_HARDWARE; -+ else if (Supports(VS_SCALINGMETHOD_LANCZOS3_FAST) && scaleSD) -+ m_scalingMethod = VS_SCALINGMETHOD_LANCZOS3_FAST; -+ else -+ m_scalingMethod = VS_SCALINGMETHOD_LINEAR; -+ } -+ - switch (m_scalingMethod) - { - case VS_SCALINGMETHOD_NEAREST: -@@ -898,13 +911,10 @@ - m_renderQuality = RQ_SINGLEPASS; - return; - -+ case VS_SCALINGMETHOD_LANCZOS2: -+ case VS_SCALINGMETHOD_LANCZOS3_FAST: -+ case VS_SCALINGMETHOD_LANCZOS3: - case VS_SCALINGMETHOD_CUBIC: -- if(!glewIsSupported("GL_ARB_texture_float")) -- { -- CLog::Log(LOGERROR, "GL: hardware doesn't support GL_ARB_texture_float"); -- break; -- } -- - if (!m_fbo.Initialize()) - { - CLog::Log(LOGERROR, "GL: Error initializing FBO"); -@@ -917,7 +927,7 @@ - break; - } - -- m_pVideoFilterShader = new BicubicFilterShader(0.3f, 0.3f); -+ m_pVideoFilterShader = new ConvolutionFilterShader(m_scalingMethod); - if (!m_pVideoFilterShader->CompileAndLink()) - { - CLog::Log(LOGERROR, "GL: Error compiling and linking video filter shader"); -@@ -928,8 +938,6 @@ - m_renderQuality = RQ_MULTIPASS; - return; - -- case VS_SCALINGMETHOD_LANCZOS2: -- case VS_SCALINGMETHOD_LANCZOS3: - case VS_SCALINGMETHOD_SINC8: - case VS_SCALINGMETHOD_NEDI: - CLog::Log(LOGERROR, "GL: TODO: This scaler has not yet been implemented"); -@@ -1895,16 +1903,19 @@ - bool CLinuxRendererGL::Supports(ESCALINGMETHOD method) - { - if(method == VS_SCALINGMETHOD_NEAREST -- || method == VS_SCALINGMETHOD_LINEAR) -+ || method == VS_SCALINGMETHOD_LINEAR -+ || method == VS_SCALINGMETHOD_AUTO) - return true; - -- -- if(method == VS_SCALINGMETHOD_CUBIC -- && glewIsSupported("GL_ARB_texture_float") -- && glewIsSupported("GL_EXT_framebuffer_object") -- && m_renderMethod == RENDER_GLSL) -- return true; -- -+ if(method == VS_SCALINGMETHOD_CUBIC -+ || method == VS_SCALINGMETHOD_LANCZOS2 -+ || method == VS_SCALINGMETHOD_LANCZOS3_FAST -+ || method == VS_SCALINGMETHOD_LANCZOS3) -+ { -+ if (glewIsSupported("GL_EXT_framebuffer_object") && (m_renderMethod & RENDER_GLSL)) -+ return true; -+ } -+ - if (g_advancedSettings.m_videoHighQualityScaling != SOFTWARE_UPSCALING_DISABLED) - { - if(method == VS_SCALINGMETHOD_BICUBIC_SOFTWARE ---- xbmc/GUIDialogVideoSettings.cpp -+++ xbmc/GUIDialogVideoSettings.cpp -@@ -103,6 +103,7 @@ - entries.push_back(make_pair(VS_SCALINGMETHOD_LINEAR , 16302)); - entries.push_back(make_pair(VS_SCALINGMETHOD_CUBIC , 16303)); - entries.push_back(make_pair(VS_SCALINGMETHOD_LANCZOS2 , 16304)); -+ entries.push_back(make_pair(VS_SCALINGMETHOD_LANCZOS3_FAST , 16315)); - entries.push_back(make_pair(VS_SCALINGMETHOD_LANCZOS3 , 16305)); - entries.push_back(make_pair(VS_SCALINGMETHOD_SINC8 , 16306)); - // entries.push_back(make_pair(VS_SCALINGMETHOD_NEDI , ?????)); -@@ -110,6 +111,7 @@ - entries.push_back(make_pair(VS_SCALINGMETHOD_LANCZOS_SOFTWARE , 16308)); - entries.push_back(make_pair(VS_SCALINGMETHOD_SINC_SOFTWARE , 16309)); - entries.push_back(make_pair(VS_SCALINGMETHOD_VDPAU_HARDWARE , 13120)); -+ entries.push_back(make_pair(VS_SCALINGMETHOD_AUTO , 16316)); - - /* remove unsupported methods */ - for(vector<pair<int, int> >::iterator it = entries.begin(); it != entries.end();) ---- xbmc/Settings.cpp -+++ xbmc/Settings.cpp -@@ -772,7 +772,7 @@ - GetInteger(pElement, "interlacemethod", interlaceMethod, VS_INTERLACEMETHOD_NONE, VS_INTERLACEMETHOD_NONE, VS_INTERLACEMETHOD_INVERSE_TELECINE); - m_stSettings.m_defaultVideoSettings.m_InterlaceMethod = (EINTERLACEMETHOD)interlaceMethod; - int scalingMethod; -- GetInteger(pElement, "scalingmethod", scalingMethod, VS_SCALINGMETHOD_LINEAR, VS_SCALINGMETHOD_NEAREST, VS_SCALINGMETHOD_CUBIC); -+ GetInteger(pElement, "scalingmethod", scalingMethod, VS_SCALINGMETHOD_LINEAR, VS_SCALINGMETHOD_NEAREST, VS_SCALINGMETHOD_AUTO); - m_stSettings.m_defaultVideoSettings.m_ScalingMethod = (ESCALINGMETHOD)scalingMethod; - - GetInteger(pElement, "viewmode", m_stSettings.m_defaultVideoSettings.m_ViewMode, VIEW_MODE_NORMAL, VIEW_MODE_NORMAL, VIEW_MODE_CUSTOM); diff --git a/media-tv/xbmc/files/xbmc-9.11-use-cdio-system-headers-on-non-win32.patch b/media-tv/xbmc/files/xbmc-9.11-use-cdio-system-headers-on-non-win32.patch deleted file mode 100644 index 345d91159b43..000000000000 --- a/media-tv/xbmc/files/xbmc-9.11-use-cdio-system-headers-on-non-win32.patch +++ /dev/null @@ -1,129 +0,0 @@ -diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index 9097519..9b6418d 100644 ---- a/xbmc/Application.cpp -+++ b/xbmc/Application.cpp -@@ -236,7 +236,11 @@ - #endif - - #ifdef HAS_DVD_DRIVE -+#ifdef _WIN32 - #include "lib/libcdio/logging.h" -+#else -+#include <cdio/logging.h> -+#endif - #endif - - #ifdef HAS_HAL -diff --git a/xbmc/FileSystem/Makefile b/xbmc/FileSystem/Makefile -index 782d57a..1e524ed 100644 ---- a/xbmc/FileSystem/Makefile -+++ b/xbmc/FileSystem/Makefile -@@ -1,5 +1,4 @@ - INCLUDES=-I. -I../ -I../cores -I../linux -I../../guilib -I../lib/UnrarXLib -I../utils -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include --INCLUDES+=-I../lib/libcdio/libcdio/include - - CXXFLAGS+=-D__STDC_FORMAT_MACROS \ - -diff --git a/xbmc/FileSystem/cdioSupport.cpp b/xbmc/FileSystem/cdioSupport.cpp -index 00e5fdd..21a0b67 100644 ---- a/xbmc/FileSystem/cdioSupport.cpp -+++ b/xbmc/FileSystem/cdioSupport.cpp -@@ -26,7 +26,7 @@ - #include "cdioSupport.h" - #include "utils/SingleLock.h" - #include "utils/log.h" --#ifndef _LINUX -+#ifdef _WIN32 - #include "lib/libcdio/logging.h" - #include "lib/libcdio/util.h" - #include "lib/libcdio/mmc.h" -diff --git a/xbmc/FileSystem/iso9660.cpp b/xbmc/FileSystem/iso9660.cpp -index 6e1633f..58fbc50 100644 ---- a/xbmc/FileSystem/iso9660.cpp -+++ b/xbmc/FileSystem/iso9660.cpp -@@ -44,7 +44,7 @@ ISO9660 - #include "utils/CharsetConverter.h" - - #include "DetectDVDType.h" // for MODE2_DATA_SIZE etc. --#ifdef _LINUX -+#ifndef _WIN32 - #include <cdio/bytesex.h> - #else - #include "lib/libcdio/bytesex.h" // for from_723 & from_733 -diff --git a/xbmc/Makefile b/xbmc/Makefile -index abfbdcb..f55381a 100644 ---- a/xbmc/Makefile -+++ b/xbmc/Makefile -@@ -8,8 +8,6 @@ INCLUDES+=-Ilib/libUPnP/Platinum/Source/Core \ - -Ilib/libUPnP/Neptune/Source/System/Posix \ - -Ilib/libUPnP/Neptune/Source/Core - --INCLUDES+=-Ilib/libcdio/libcdio/include -- - SRCS=Application.cpp \ - CueDocument.cpp \ - GUISettings.cpp \ -diff --git a/xbmc/cdrip/CDDAReader.cpp b/xbmc/cdrip/CDDAReader.cpp -index c8b37b2..e3e9c0b 100644 ---- a/xbmc/cdrip/CDDAReader.cpp -+++ b/xbmc/cdrip/CDDAReader.cpp -@@ -24,7 +24,11 @@ - #ifdef HAS_CDDA_RIPPER - - #include "CDDAReader.h" -+#ifdef _WIN32 - #include "lib/libcdio/cdio.h" -+#else -+#include <cdio/cdio.h> -+#endif - #include "utils/log.h" - - #define SECTOR_COUNT 52 -diff --git a/xbmc/cores/paplayer/AC3CDDACodec.cpp b/xbmc/cores/paplayer/AC3CDDACodec.cpp -index 20cded7..f2a077a 100644 ---- a/xbmc/cores/paplayer/AC3CDDACodec.cpp -+++ b/xbmc/cores/paplayer/AC3CDDACodec.cpp -@@ -22,7 +22,11 @@ - #include "system.h" - #include "AC3CDDACodec.h" - #ifdef HAS_AC3_CDDA_CODEC -+#ifdef _WIN32 - #include "lib/libcdio/sector.h" -+#else -+#include <cdio/sector.h> -+#endif - - AC3CDDACodec::AC3CDDACodec() : AC3Codec() - { -diff --git a/xbmc/cores/paplayer/CDDAcodec.cpp b/xbmc/cores/paplayer/CDDAcodec.cpp -index ca8f1be..42460dc 100644 ---- a/xbmc/cores/paplayer/CDDAcodec.cpp -+++ b/xbmc/cores/paplayer/CDDAcodec.cpp -@@ -20,7 +20,11 @@ - */ - - #include "CDDAcodec.h" -+#ifdef _WIN32 - #include "lib/libcdio/sector.h" -+#else -+#include <cdio/sector.h> -+#endif - - #define SECTOR_COUNT 55 // max. sectors that can be read at once - #define MAX_BUFFER_SIZE 2*SECTOR_COUNT*CDIO_CD_FRAMESIZE_RAW -diff --git a/xbmc/cores/paplayer/DTSCDDACodec.cpp b/xbmc/cores/paplayer/DTSCDDACodec.cpp -index e64cc2e..9bc46c6 100644 ---- a/xbmc/cores/paplayer/DTSCDDACodec.cpp -+++ b/xbmc/cores/paplayer/DTSCDDACodec.cpp -@@ -22,7 +22,11 @@ - #include "system.h" - #include "DTSCDDACodec.h" - #ifdef HAS_DTS_CODEC -+#ifdef _WIN32 - #include "lib/libcdio/sector.h" -+#else -+#include <cdio/sector.h> -+#endif - - DTSCDDACodec::DTSCDDACodec() : DTSCodec() - { diff --git a/media-tv/xbmc/files/xbmc-9.11-wavpack.patch b/media-tv/xbmc/files/xbmc-9.11-wavpack.patch deleted file mode 100644 index 4ef0d147f5b9..000000000000 --- a/media-tv/xbmc/files/xbmc-9.11-wavpack.patch +++ /dev/null @@ -1,44 +0,0 @@ -fix from upstream trunk - -http://xbmc.org/trac/ticket/8185 - -Index: trunk/xbmc/cores/paplayer/DllWAVPack.h -=================================================================== ---- trunk/xbmc/cores/paplayer/DllWAVPack.h (revision 22927) -+++ trunk/xbmc/cores/paplayer/DllWAVPack.h (revision 25321) -@@ -58,7 +58,7 @@ - virtual int WavpackGetReducedChannels (WavpackContext *wpc)=0; - virtual int WavpackGetFloatNormExp (WavpackContext *wpc)=0; -- virtual int WavpackGetMD5Sum (WavpackContext *wpc, uchar data [16])=0; -+ virtual int WavpackGetMD5Sum (WavpackContext *wpc, unsigned char data [16])=0; - virtual uint32_t WavpackGetWrapperBytes (WavpackContext *wpc)=0; -- virtual uchar *WavpackGetWrapperData (WavpackContext *wpc)=0; -+ virtual unsigned char *WavpackGetWrapperData (WavpackContext *wpc)=0; - virtual void WavpackFreeWrapper (WavpackContext *wpc)=0; - virtual void WavpackSeekTrailingWrapper (WavpackContext *wpc)=0; -@@ -77,5 +77,5 @@ - virtual int WavpackSetConfiguration (WavpackContext *wpc, WavpackConfig *config, uint32_t total_samples)=0; - virtual int WavpackAddWrapper (WavpackContext *wpc, void *data, uint32_t bcount)=0; -- virtual int WavpackStoreMD5Sum (WavpackContext *wpc, uchar data [16])=0; -+ virtual int WavpackStoreMD5Sum (WavpackContext *wpc, unsigned char data [16])=0; - virtual int WavpackPackInit (WavpackContext *wpc)=0; - virtual int WavpackPackSamples (WavpackContext *wpc, int32_t *sample_buffer, uint32_t sample_count)=0; -@@ -133,9 +133,9 @@ - virtual int WavpackGetFloatNormExp (WavpackContext *wpc) - { return ::WavpackGetFloatNormExp (wpc); } -- virtual int WavpackGetMD5Sum (WavpackContext *wpc, uchar data [16]) -+ virtual int WavpackGetMD5Sum (WavpackContext *wpc, unsigned char data [16]) - { return ::WavpackGetMD5Sum (wpc, data); } - virtual uint32_t WavpackGetWrapperBytes (WavpackContext *wpc) - { return ::WavpackGetWrapperBytes (wpc); } -- virtual uchar *WavpackGetWrapperData (WavpackContext *wpc) -+ virtual unsigned char *WavpackGetWrapperData (WavpackContext *wpc) - { return ::WavpackGetWrapperData (wpc); } - virtual void WavpackFreeWrapper (WavpackContext *wpc) -@@ -171,5 +171,5 @@ - virtual int WavpackAddWrapper (WavpackContext *wpc, void *data, uint32_t bcount) - { return ::WavpackAddWrapper (wpc, data, bcount); } -- virtual int WavpackStoreMD5Sum (WavpackContext *wpc, uchar data [16]) -+ virtual int WavpackStoreMD5Sum (WavpackContext *wpc, unsigned char data [16]) - { return ::WavpackStoreMD5Sum (wpc, data); } - virtual int WavpackPackInit (WavpackContext *wpc) diff --git a/media-tv/xbmc/xbmc-10.0.ebuild b/media-tv/xbmc/xbmc-10.0.ebuild deleted file mode 100644 index 7a6705afaa62..000000000000 --- a/media-tv/xbmc/xbmc-10.0.ebuild +++ /dev/null @@ -1,202 +0,0 @@ -# Copyright 1999-2011 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/media-tv/xbmc/xbmc-10.0.ebuild,v 1.8 2011/02/26 19:16:48 signals Exp $ - -EAPI="2" - -inherit eutils python - -# Use XBMC_ESVN_REPO_URI to track a different branch -ESVN_REPO_URI=${XBMC_ESVN_REPO_URI:-http://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk} -ESVN_PROJECT=${ESVN_REPO_URI##*/svnroot/} -ESVN_PROJECT=${ESVN_PROJECT%/*} -if [[ ${PV} == "9999" ]] ; then - inherit subversion autotools - KEYWORDS="" -else - inherit autotools - SRC_URI="http://mirrors.xbmc.org/releases/source/${P}.tar.gz" - KEYWORDS="~amd64 ~x86" -fi - -DESCRIPTION="XBMC is a free and open source media-player and entertainment hub" -HOMEPAGE="http://xbmc.org/" - -LICENSE="GPL-2" -SLOT="0" -IUSE="alsa altivec avahi css debug hal joystick midi profile pulseaudio rtmp sse sse2 vaapi vdpau webserver +xrandr" - -RDEPEND="virtual/opengl - app-arch/bzip2 - app-arch/unzip - app-arch/zip - app-i18n/enca - dev-libs/boost - dev-libs/fribidi - dev-libs/libcdio[-minimal] - dev-libs/libpcre[cxx] - dev-libs/lzo - >=dev-python/pysqlite-2 - media-libs/alsa-lib - media-libs/faad2 - media-libs/flac - media-libs/fontconfig - media-libs/freetype - media-libs/glew - media-libs/jasper - media-libs/jbigkit - virtual/jpeg - >=media-libs/libass-0.9.7 - css? ( media-libs/libdvdcss ) - media-libs/libmad - media-libs/libmms - media-libs/libmodplug - media-libs/libmpeg2 - media-libs/libogg - media-libs/libsamplerate - media-libs/libsdl[audio,opengl,video,X] - alsa? ( media-libs/libsdl[alsa] ) - media-libs/libvorbis - media-libs/sdl-gfx - media-libs/sdl-image[gif,jpeg,png] - media-libs/sdl-mixer - media-libs/sdl-sound - media-libs/tiff - pulseaudio? ( media-sound/pulseaudio ) - media-sound/wavpack - >=media-video/ffmpeg-0.6 - rtmp? ( media-video/rtmpdump ) - avahi? ( net-dns/avahi ) - webserver? ( net-libs/libmicrohttpd ) - net-misc/curl - || ( >=net-fs/samba-3.4.6[smbclient] <net-fs/samba-3.3 ) - sys-apps/dbus - hal? ( sys-apps/hal ) - sys-libs/zlib - virtual/mysql - x11-apps/xdpyinfo - x11-apps/mesa-progs - vaapi? ( x11-libs/libva ) - vdpau? ( - || ( x11-libs/libvdpau >=x11-drivers/nvidia-drivers-180.51 ) - media-video/ffmpeg[vdpau] - ) - x11-libs/libXinerama - xrandr? ( x11-libs/libXrandr ) - x11-libs/libXrender" -# The cpluff bundled addon uses gettext which needs CVS ... -DEPEND="${RDEPEND} - dev-util/gperf - dev-vcs/cvs - x11-proto/xineramaproto - dev-util/cmake - x86? ( dev-lang/nasm )" - -src_unpack() { - if [[ ${PV} == "9999" ]] ; then - subversion_src_unpack - cd "${S}" - rm -f configure - else - unpack ${A} - cd "${S}" - fi - - # Fix case sensitivity - mv media/Fonts/{a,A}rial.ttf || die - mv media/{S,s}plash.png || die -} - -src_prepare() { - epatch "${FILESDIR}"/${P}-python-2.7.patch #350098 - - # some dirs ship generated autotools, some dont - local d - for d in . xbmc/cores/dvdplayer/Codecs/{libdts,libdvd/lib*/} lib/cpluff ; do - [[ -e ${d}/configure ]] && continue - pushd ${d} >/dev/null - einfo "Generating autotools in ${d}" - eautoreconf - popd >/dev/null - done - - local squish #290564 - use altivec && squish="-DSQUISH_USE_ALTIVEC=1 -maltivec" - use sse && squish="-DSQUISH_USE_SSE=1 -msse" - use sse2 && squish="-DSQUISH_USE_SSE=2 -msse2" - sed -i \ - -e '/^CXXFLAGS/{s:-D[^=]*=.::;s:-m[[:alnum:]]*::}' \ - -e "1iCXXFLAGS += ${squish}" \ - xbmc/lib/libsquish/Makefile.in || die - - # Fix XBMC's final version string showing as "exported" - # instead of the SVN revision number. - export SVN_REV=${ESVN_WC_REVISION:-exported} - - # Avoid lsb-release dependency - sed -i \ - -e 's:lsb_release -d:cat /etc/gentoo-release:' \ - xbmc/utils/SystemInfo.cpp - - # Do not use termcap #262822 - sed -i 's:-ltermcap::' xbmc/lib/libPython/Python/configure - - # avoid long delays when powerkit isn't running #348580 - sed -i \ - -e '/dbus_connection_send_with_reply_and_block/s:-1:3000:' \ - xbmc/linux/*.cpp || die - - epatch_user #293109 - - # Tweak autotool timestamps to avoid regeneration - find . -type f -print0 | xargs -0 touch -r configure -} - -src_configure() { - # Disable documentation generation - export ac_cv_path_LATEX=no - # Avoid help2man - export HELP2MAN=$(type -P help2man || echo true) - - econf \ - --docdir=/usr/share/doc/${PF} \ - --disable-ccache \ - --disable-optimizations \ - --enable-external-libraries \ - --disable-external-python \ - --enable-goom \ - --enable-gl \ - --disable-liba52 \ - --disable-libdts \ - $(use_enable avahi) \ - $(use_enable css dvdcss) \ - $(use_enable debug) \ - $(use_enable hal) \ - $(use_enable joystick) \ - $(use_enable midi mid) \ - $(use_enable profile profiling) \ - $(use_enable pulseaudio pulse) \ - $(use_enable rtmp) \ - $(use_enable vaapi) \ - $(use_enable vdpau) \ - $(use_enable webserver) \ - $(use_enable xrandr) -} - -src_install() { - emake install DESTDIR="${D}" || die - dodoc keymapping.txt README.linux - rm "${D}"/usr/share/doc/${PF}/{copying.txt,LICENSE.GPL} || die - -# insinto /usr/share/applications -# doins tools/Linux/xbmc.desktop -# doicon tools/Linux/xbmc.png - - insinto "$(python_get_sitedir)" #309885 - doins tools/EventClients/lib/python/xbmcclient.py || die - newbin "tools/EventClients/Clients/XBMC Send/xbmc-send.py" xbmc-send || die -} - -pkg_postinst() { - elog "Visit http://wiki.xbmc.org/?title=XBMC_Online_Manual" -} |