From 81439ad233a21416260ce73ff53efe7e375b0bcb Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 28 Jul 2013 04:42:54 +0200 Subject: [PATCH] xbmc (Gotham): update to xbmc-f68634b Signed-off-by: Stephan Raue --- .../mediacenter/xbmc-theme-Confluence/meta | 2 +- packages/mediacenter/xbmc/package.mk | 2 +- ...1-texturepacker-hostflags-and-rework.patch | 0 ...HONOPTIMIZE_with_external_Python-0.1.patch | 0 ...bmc-453-add_openelec.tv_RSS_news-0.1.patch | 0 ...add_as.xml_busy_dialog_delay_control.patch | 0 ...s-mark_our_wrapped_functions_as_used.patch | 0 .../xbmc-995.01-xvba_support-275709a.patch} | 3363 ++++++++++++----- .../xbmc-995.10-disable-alt-tab.patch | 0 .../xbmc-999.01-automake-1.13.patch | 0 10 files changed, 2514 insertions(+), 853 deletions(-) rename packages/mediacenter/xbmc/patches/{c218d5c => f68634b}/xbmc-321-texturepacker-hostflags-and-rework.patch (100%) rename packages/mediacenter/xbmc/patches/{c218d5c => f68634b}/xbmc-408-enable_PYTHONOPTIMIZE_with_external_Python-0.1.patch (100%) rename packages/mediacenter/xbmc/patches/{c218d5c => f68634b}/xbmc-453-add_openelec.tv_RSS_news-0.1.patch (100%) rename packages/mediacenter/xbmc/patches/{c218d5c => f68634b}/xbmc-602-add_as.xml_busy_dialog_delay_control.patch (100%) rename packages/mediacenter/xbmc/patches/{c218d5c => f68634b}/xbmc-990.15-depends-mark_our_wrapped_functions_as_used.patch (100%) rename packages/mediacenter/xbmc/patches/{c218d5c/xbmc-995.01-xvba_support-da1ff12.patch => f68634b/xbmc-995.01-xvba_support-275709a.patch} (89%) rename packages/mediacenter/xbmc/patches/{c218d5c => f68634b}/xbmc-995.10-disable-alt-tab.patch (100%) rename packages/mediacenter/xbmc/patches/{c218d5c => f68634b}/xbmc-999.01-automake-1.13.patch (100%) diff --git a/packages/mediacenter/xbmc-theme-Confluence/meta b/packages/mediacenter/xbmc-theme-Confluence/meta index 6541659273..83b77735c2 100644 --- a/packages/mediacenter/xbmc-theme-Confluence/meta +++ b/packages/mediacenter/xbmc-theme-Confluence/meta @@ -21,7 +21,7 @@ PKG_NAME="xbmc-theme-Confluence" PKG_VERSION="12.2-8e4f924" if [ "$XBMC" = "master" ]; then - PKG_VERSION="c218d5c" + PKG_VERSION="f68634b" elif [ "$XBMC" = "xbmc-aml" ]; then PKG_VERSION="aml-frodo-d9119f2" fi diff --git a/packages/mediacenter/xbmc/package.mk b/packages/mediacenter/xbmc/package.mk index 85cce84d80..8eb668b0d8 100644 --- a/packages/mediacenter/xbmc/package.mk +++ b/packages/mediacenter/xbmc/package.mk @@ -21,7 +21,7 @@ PKG_NAME="xbmc" PKG_VERSION="12.2-8e4f924" if [ "$XBMC" = "master" ]; then - PKG_VERSION="c218d5c" + PKG_VERSION="f68634b" elif [ "$XBMC" = "xbmc-aml" ]; then PKG_VERSION="aml-frodo-d9119f2" fi diff --git a/packages/mediacenter/xbmc/patches/c218d5c/xbmc-321-texturepacker-hostflags-and-rework.patch b/packages/mediacenter/xbmc/patches/f68634b/xbmc-321-texturepacker-hostflags-and-rework.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/c218d5c/xbmc-321-texturepacker-hostflags-and-rework.patch rename to packages/mediacenter/xbmc/patches/f68634b/xbmc-321-texturepacker-hostflags-and-rework.patch diff --git a/packages/mediacenter/xbmc/patches/c218d5c/xbmc-408-enable_PYTHONOPTIMIZE_with_external_Python-0.1.patch b/packages/mediacenter/xbmc/patches/f68634b/xbmc-408-enable_PYTHONOPTIMIZE_with_external_Python-0.1.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/c218d5c/xbmc-408-enable_PYTHONOPTIMIZE_with_external_Python-0.1.patch rename to packages/mediacenter/xbmc/patches/f68634b/xbmc-408-enable_PYTHONOPTIMIZE_with_external_Python-0.1.patch diff --git a/packages/mediacenter/xbmc/patches/c218d5c/xbmc-453-add_openelec.tv_RSS_news-0.1.patch b/packages/mediacenter/xbmc/patches/f68634b/xbmc-453-add_openelec.tv_RSS_news-0.1.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/c218d5c/xbmc-453-add_openelec.tv_RSS_news-0.1.patch rename to packages/mediacenter/xbmc/patches/f68634b/xbmc-453-add_openelec.tv_RSS_news-0.1.patch diff --git a/packages/mediacenter/xbmc/patches/c218d5c/xbmc-602-add_as.xml_busy_dialog_delay_control.patch b/packages/mediacenter/xbmc/patches/f68634b/xbmc-602-add_as.xml_busy_dialog_delay_control.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/c218d5c/xbmc-602-add_as.xml_busy_dialog_delay_control.patch rename to packages/mediacenter/xbmc/patches/f68634b/xbmc-602-add_as.xml_busy_dialog_delay_control.patch diff --git a/packages/mediacenter/xbmc/patches/c218d5c/xbmc-990.15-depends-mark_our_wrapped_functions_as_used.patch b/packages/mediacenter/xbmc/patches/f68634b/xbmc-990.15-depends-mark_our_wrapped_functions_as_used.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/c218d5c/xbmc-990.15-depends-mark_our_wrapped_functions_as_used.patch rename to packages/mediacenter/xbmc/patches/f68634b/xbmc-990.15-depends-mark_our_wrapped_functions_as_used.patch diff --git a/packages/mediacenter/xbmc/patches/c218d5c/xbmc-995.01-xvba_support-da1ff12.patch b/packages/mediacenter/xbmc/patches/f68634b/xbmc-995.01-xvba_support-275709a.patch similarity index 89% rename from packages/mediacenter/xbmc/patches/c218d5c/xbmc-995.01-xvba_support-da1ff12.patch rename to packages/mediacenter/xbmc/patches/f68634b/xbmc-995.01-xvba_support-275709a.patch index c6bd3082c1..c74fde3051 100644 --- a/packages/mediacenter/xbmc/patches/c218d5c/xbmc-995.01-xvba_support-da1ff12.patch +++ b/packages/mediacenter/xbmc/patches/f68634b/xbmc-995.01-xvba_support-275709a.patch @@ -1,7 +1,7 @@ -From 16898b6bd8f19f416c9f4765ee20858fb42ead11 Mon Sep 17 00:00:00 2001 +From d1437bb713c416176489385d0575281eb3f09ff2 Mon Sep 17 00:00:00 2001 From: fritsch Date: Mon, 15 Apr 2013 20:27:39 +0200 -Subject: [PATCH 001/123] AE: Start of planar format internally +Subject: [PATCH 001/136] AE: Start of planar format internally --- xbmc/cores/AudioEngine/AEAudioFormat.h | 7 +++++++ @@ -47,7 +47,7 @@ index 369811c..64be36f 100644 /* Bitstream formats */ AE_FMT_AAC, diff --git a/xbmc/cores/AudioEngine/Utils/AEUtil.cpp b/xbmc/cores/AudioEngine/Utils/AEUtil.cpp -index 6de84dc..3322226 100644 +index 2b6e0cd..3a5c78f 100644 --- a/xbmc/cores/AudioEngine/Utils/AEUtil.cpp +++ b/xbmc/cores/AudioEngine/Utils/AEUtil.cpp @@ -82,26 +82,33 @@ const unsigned int CAEUtil::DataFormatToBits(const enum AEDataFormat dataFormat) @@ -122,17 +122,17 @@ index 6de84dc..3322226 100644 1.8.1.6 -From 7be39700ca76a23e1f51315a77e4fba5dfdfbc39 Mon Sep 17 00:00:00 2001 +From 321beb78c4833da8de29c3aabd1a37f063a18202 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Fri, 31 May 2013 16:28:30 +0200 -Subject: [PATCH 002/123] AE: register callback for all audio settings +Subject: [PATCH 002/136] AE: register callback for all audio settings --- xbmc/settings/Settings.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp -index 65e685a..ee97753 100644 +index b5fd369..d8f6889 100644 --- a/xbmc/settings/Settings.cpp +++ b/xbmc/settings/Settings.cpp @@ -840,8 +840,18 @@ void CSettings::InitializeISettingCallbacks() @@ -158,10 +158,10 @@ index 65e685a..ee97753 100644 1.8.1.6 -From a2070bcc6555822f98e8bb5d846dee36c3b98028 Mon Sep 17 00:00:00 2001 +From 1e4ee28403cc9af837352672fc1a3e7bbcc2b69c Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 23 May 2013 10:05:11 +0200 -Subject: [PATCH 003/123] AESinkALSA: drop unneeded member +Subject: [PATCH 003/136] AESinkALSA: drop unneeded member --- xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 11 ++++++----- @@ -169,7 +169,7 @@ Subject: [PATCH 003/123] AESinkALSA: drop unneeded member 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp -index 9d3cefa..32fb450 100644 +index 45028d6..decd0bd 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp @@ -131,19 +131,20 @@ void CAESinkALSA::GetAESParams(AEAudioFormat format, std::string& params) @@ -221,7 +221,7 @@ index 9d3cefa..32fb450 100644 CLog::Log(LOGERROR, "CAESinkALSA::Initialize - failed to initialize device \"%s\"", device.c_str()); snd_config_delete(config); diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.h b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.h -index e2b4e4f..73615a5 100644 +index 39e3719..90578b9 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.h +++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.h @@ -64,7 +64,6 @@ class CAESinkALSA : public IAESink @@ -236,10 +236,10 @@ index e2b4e4f..73615a5 100644 1.8.1.6 -From 1871f8bc6bb5828299b57db0fbf131392e2ea5a1 Mon Sep 17 00:00:00 2001 +From 8982a8ef935bec12899a07745bf4d049bc066499 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 27 Apr 2013 10:47:01 +0200 -Subject: [PATCH 004/123] ffmpeg: add methods to the interface needed for +Subject: [PATCH 004/136] ffmpeg: add methods to the interface needed for resampling --- @@ -350,10 +350,64 @@ index e9613d3..320b3a7 100644 1.8.1.6 -From efe72091a8b488b8bb11063149252b6de292f66b Mon Sep 17 00:00:00 2001 +From 1e242da24efe796525a07a599dc2527742e400e2 Mon Sep 17 00:00:00 2001 +From: fritsch +Date: Thu, 25 Jul 2013 19:39:44 +0200 +Subject: [PATCH 005/136] ffmpeg: add av_opt_set_int and av_opt_set_double for + intrumenting swr + +--- + lib/DllAvUtil.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/lib/DllAvUtil.h b/lib/DllAvUtil.h +index bbe9be2..521263f 100644 +--- a/lib/DllAvUtil.h ++++ b/lib/DllAvUtil.h +@@ -82,6 +82,8 @@ class DllAvUtilInterface + virtual const AVCRC* av_crc_get_table(AVCRCId crc_id)=0; + virtual uint32_t av_crc(const AVCRC *ctx, uint32_t crc, const uint8_t *buffer, size_t length)=0; + virtual int av_opt_set(void *obj, const char *name, const char *val, int search_flags)=0; ++ virtual int av_opt_set_double(void *obj, const char *name, double val, int search_flags)=0; ++ virtual int av_opt_set_int(void *obj, const char *name, int64_t val, int search_flags)=0; + virtual AVFifoBuffer *av_fifo_alloc(unsigned int size) = 0; + virtual void av_fifo_free(AVFifoBuffer *f) = 0; + virtual void av_fifo_reset(AVFifoBuffer *f) = 0; +@@ -119,6 +121,8 @@ class DllAvUtilBase : public DllDynamic, DllAvUtilInterface + virtual const AVCRC* av_crc_get_table(AVCRCId crc_id) { return ::av_crc_get_table(crc_id); } + virtual uint32_t av_crc(const AVCRC *ctx, uint32_t crc, const uint8_t *buffer, size_t length) { return ::av_crc(ctx, crc, buffer, length); } + virtual int av_opt_set(void *obj, const char *name, const char *val, int search_flags) { return ::av_opt_set(obj, name, val, search_flags); } ++ virtual int av_opt_set_double(void *obj, const char *name, double val, int search_flags) { return ::av_opt_set_double(obj, name, val, search_flags); } ++ virtual int av_opt_set_int(void *obj, const char *name, int64_t val, int search_flags) { return ::av_opt_set_int(obj, name, val, search_flags); } + virtual AVFifoBuffer *av_fifo_alloc(unsigned int size) {return ::av_fifo_alloc(size); } + virtual void av_fifo_free(AVFifoBuffer *f) { ::av_fifo_free(f); } + virtual void av_fifo_reset(AVFifoBuffer *f) { ::av_fifo_reset(f); } +@@ -172,6 +176,8 @@ class DllAvUtilBase : public DllDynamic, DllAvUtilInterface + DEFINE_METHOD5(int, av_crc_init, (AVCRC *p1, int p2, int p3, uint32_t p4, int p5)); + DEFINE_METHOD4(uint32_t, av_crc, (const AVCRC *p1, uint32_t p2, const uint8_t *p3, size_t p4)); + DEFINE_METHOD4(int, av_opt_set, (void *p1, const char *p2, const char *p3, int p4)); ++ DEFINE_METHOD4(int, av_opt_set_double, (void *p1, const char *p2, double p3, int p4)) ++ DEFINE_METHOD4(int, av_opt_set_int, (void *p1, const char *p2, int64_t p3, int p4)) + DEFINE_METHOD1(AVFifoBuffer*, av_fifo_alloc, (unsigned int p1)) + DEFINE_METHOD1(void, av_fifo_free, (AVFifoBuffer *p1)) + DEFINE_METHOD1(void, av_fifo_reset, (AVFifoBuffer *p1)) +@@ -203,6 +209,8 @@ class DllAvUtilBase : public DllDynamic, DllAvUtilInterface + RESOLVE_METHOD(av_crc_get_table) + RESOLVE_METHOD(av_crc) + RESOLVE_METHOD(av_opt_set) ++ RESOLVE_METHOD(av_opt_set_double) ++ RESOLVE_METHOD(av_opt_set_int) + RESOLVE_METHOD(av_fifo_alloc) + RESOLVE_METHOD(av_fifo_free) + RESOLVE_METHOD(av_fifo_reset) +-- +1.8.1.6 + + +From f79f7713184ed00fb019dd00f755f1e182b2c601 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Wed, 26 Jun 2013 15:12:28 +0200 -Subject: [PATCH 005/123] AE: allow encoder to be fed with planar format +Subject: [PATCH 006/136] AE: allow encoder to be fed with planar format --- .../cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp | 66 +++++++++++++++++++++- @@ -362,7 +416,7 @@ Subject: [PATCH 005/123] AE: allow encoder to be fed with planar format 3 files changed, 78 insertions(+), 4 deletions(-) diff --git a/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp b/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp -index 99d9a47..36bae54 100644 +index ba89868..2f305b1 100644 --- a/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp +++ b/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp @@ -98,7 +98,7 @@ unsigned int CAEEncoderFFmpeg::BuildChannelLayout(const int64_t ffmap, CAEChanne @@ -474,7 +528,7 @@ index 99d9a47..36bae54 100644 { int size; diff --git a/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h b/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h -index d422ab6..2d442df 100644 +index 4ecc9f2..4fb67c4 100644 --- a/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h +++ b/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h @@ -36,7 +36,7 @@ class CAEEncoderFFmpeg: public IAEEncoder @@ -495,7 +549,7 @@ index d422ab6..2d442df 100644 virtual double GetDelay(unsigned int bufferSize); private: diff --git a/xbmc/cores/AudioEngine/Interfaces/AEEncoder.h b/xbmc/cores/AudioEngine/Interfaces/AEEncoder.h -index e304908..0e6f1f8 100644 +index 8c50fb1..6e4c257 100644 --- a/xbmc/cores/AudioEngine/Interfaces/AEEncoder.h +++ b/xbmc/cores/AudioEngine/Interfaces/AEEncoder.h @@ -48,9 +48,10 @@ class IAEEncoder @@ -531,10 +585,10 @@ index e304908..0e6f1f8 100644 1.8.1.6 -From 796f1dbc328099fd3527756675795b8708436468 Mon Sep 17 00:00:00 2001 +From 0ea994d9cc66de6db9e9b0bf239fb220ddabf9fb Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Wed, 26 Jun 2013 15:13:22 +0200 -Subject: [PATCH 006/123] AE: alsa - close device in blocking mode, fixes +Subject: [PATCH 007/136] AE: alsa - close device in blocking mode, fixes device busy --- @@ -542,7 +596,7 @@ Subject: [PATCH 006/123] AE: alsa - close device in blocking mode, fixes 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp -index 32fb450..91cfc08 100644 +index decd0bd..06a949b 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp @@ -196,8 +196,8 @@ bool CAESinkALSA::Initialize(AEAudioFormat &format, std::string &device) @@ -572,17 +626,17 @@ index 32fb450..91cfc08 100644 1.8.1.6 -From 5cdc044bbfdf1740992d930501d48f78ea104d5d Mon Sep 17 00:00:00 2001 +From 47dc6f36326fafb8b1d7a8cbb61c83f4a5f4f19c Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Wed, 26 Jun 2013 18:48:30 +0200 -Subject: [PATCH 007/123] AE: alsa - set to prepared after drain +Subject: [PATCH 008/136] AE: alsa - set to prepared after drain --- xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp -index 91cfc08..ee7b549 100644 +index 06a949b..630dd5d 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp @@ -196,8 +196,8 @@ bool CAESinkALSA::Initialize(AEAudioFormat &format, std::string &device) @@ -607,10 +661,10 @@ index 91cfc08..ee7b549 100644 1.8.1.6 -From a28f4c46f39407d1e155a6b300a38eadca67a2c6 Mon Sep 17 00:00:00 2001 +From a69c107e38624076463f2ad501cb13c3f84fe2fd Mon Sep 17 00:00:00 2001 From: fritsch Date: Fri, 5 Jul 2013 21:02:00 +0200 -Subject: [PATCH 008/123] AE: Add blocking option to AddPackets, makes Sink +Subject: [PATCH 009/136] AE: Add blocking option to AddPackets, makes Sink behaviour choosable after c2493d5bf6bc2be2fb45f563affdd214bf9862fb --- @@ -632,7 +686,7 @@ Subject: [PATCH 008/123] AE: Add blocking option to AddPackets, makes Sink 15 files changed, 24 insertions(+), 17 deletions(-) diff --git a/xbmc/cores/AudioEngine/Interfaces/AESink.h b/xbmc/cores/AudioEngine/Interfaces/AESink.h -index cb9c04b..65395bf 100644 +index d4fc3b9..520d6ef 100644 --- a/xbmc/cores/AudioEngine/Interfaces/AESink.h +++ b/xbmc/cores/AudioEngine/Interfaces/AESink.h @@ -71,7 +71,7 @@ class IAESink @@ -645,7 +699,7 @@ index cb9c04b..65395bf 100644 /* Drain the sink diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp -index ee7b549..8d2e6a1 100644 +index 630dd5d..4e06031 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp @@ -497,7 +497,7 @@ double CAESinkALSA::GetCacheTotal() @@ -674,7 +728,7 @@ index ee7b549..8d2e6a1 100644 ret = snd_pcm_writei(m_pcm, (void*)data, frames); if (ret < 0) diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.h b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.h -index 73615a5..69c8a85 100644 +index 90578b9..e43ea5e 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.h +++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.h @@ -47,7 +47,7 @@ class CAESinkALSA : public IAESink @@ -687,7 +741,7 @@ index 73615a5..69c8a85 100644 virtual bool SoftSuspend(); virtual bool SoftResume(); diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp -index c37bf2d..66e4c6a 100644 +index 07a4bcc..7b9e205 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp @@ -212,7 +212,7 @@ double CAESinkAUDIOTRACK::GetCacheTotal() @@ -700,10 +754,10 @@ index c37bf2d..66e4c6a 100644 // write as many frames of audio as we can fit into our internal buffer. diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.h b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.h -index d07ab8d..e923cd6 100644 +index 3d73d9fb..9600867 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.h +++ b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.h -@@ -39,7 +39,7 @@ class CAESinkAUDIOTRACK : public CThread, public IAESink +@@ -40,7 +40,7 @@ class CAESinkAUDIOTRACK : public CThread, public IAESink virtual double GetDelay (); virtual double GetCacheTime (); virtual double GetCacheTotal (); @@ -713,7 +767,7 @@ index d07ab8d..e923cd6 100644 virtual bool HasVolume (); virtual void SetVolume (float scale); diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp -index e3a3695..8df9cab 100644 +index d46d551..cff916e 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp @@ -367,7 +367,7 @@ bool CAESinkDirectSound::IsCompatible(const AEAudioFormat format, const std::str @@ -733,7 +787,7 @@ index e3a3695..8df9cab 100644 \ No newline at end of file +} diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.h b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.h -index 944e598..f06e929 100644 +index b0149dd..8ff098d 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.h +++ b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.h @@ -42,7 +42,7 @@ class CAESinkDirectSound : public IAESink @@ -746,7 +800,7 @@ index 944e598..f06e929 100644 virtual bool SoftResume (); static std::string GetDefaultDevice (); diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkNULL.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkNULL.cpp -index 9f980f8..28cadcc 100644 +index 254b9c9..7d26017 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkNULL.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkNULL.cpp @@ -99,7 +99,7 @@ double CAESinkNULL::GetCacheTotal() @@ -759,7 +813,7 @@ index 9f980f8..28cadcc 100644 unsigned int max_frames = (m_sinkbuffer_size - m_sinkbuffer_level) / m_sink_frameSize; if (frames > max_frames) diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkNULL.h b/xbmc/cores/AudioEngine/Sinks/AESinkNULL.h -index 47bf18f..09e49f0 100644 +index ef77119..1e4a3b9 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkNULL.h +++ b/xbmc/cores/AudioEngine/Sinks/AESinkNULL.h @@ -38,7 +38,7 @@ class CAESinkNULL : public CThread, public IAESink @@ -772,7 +826,7 @@ index 47bf18f..09e49f0 100644 static void EnumerateDevices(AEDeviceList &devices, bool passthrough); diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkOSS.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkOSS.cpp -index 00f57d0..97d1725 100644 +index 281088d..3a6461b 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkOSS.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkOSS.cpp @@ -408,7 +408,7 @@ double CAESinkOSS::GetDelay() @@ -785,7 +839,7 @@ index 00f57d0..97d1725 100644 int size = frames * m_format.m_frameSize; if (m_fd == -1) diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkOSS.h b/xbmc/cores/AudioEngine/Sinks/AESinkOSS.h -index ab1b457..18cadce 100644 +index f50f713..9e558d3 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkOSS.h +++ b/xbmc/cores/AudioEngine/Sinks/AESinkOSS.h @@ -41,7 +41,7 @@ class CAESinkOSS : public IAESink @@ -798,7 +852,7 @@ index ab1b457..18cadce 100644 static void EnumerateDevicesEx(AEDeviceInfoList &list, bool force = false); private: diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkProfiler.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkProfiler.cpp -index 7c01573..1cf4843 100644 +index 2cff0ed..aeceb6b 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkProfiler.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkProfiler.cpp @@ -71,7 +71,7 @@ double CAESinkProfiler::GetDelay() @@ -811,7 +865,7 @@ index 7c01573..1cf4843 100644 int64_t ts = CurrentHostCounter(); CLog::Log(LOGDEBUG, "CAESinkProfiler::AddPackets - latency %f ms", (float)(ts - m_ts) / 1000000.0f); diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkProfiler.h b/xbmc/cores/AudioEngine/Sinks/AESinkProfiler.h -index 621e0f3..814670a 100644 +index d9423fb..a0b955b 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkProfiler.h +++ b/xbmc/cores/AudioEngine/Sinks/AESinkProfiler.h @@ -39,7 +39,7 @@ class CAESinkProfiler : public IAESink @@ -824,7 +878,7 @@ index 621e0f3..814670a 100644 static void EnumerateDevices(AEDeviceList &devices, bool passthrough); private: diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp -index 472366d..6d6e477 100644 +index 9af3f2e..4cd95f0 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp @@ -423,7 +423,7 @@ double CAESinkWASAPI::GetCacheTotal() @@ -837,7 +891,7 @@ index 472366d..6d6e477 100644 if (!m_initialized) return 0; diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h -index 312866c..c88dd91 100644 +index df16682..c4a5a51 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h +++ b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h @@ -42,7 +42,7 @@ class CAESinkWASAPI : public IAESink @@ -853,10 +907,10 @@ index 312866c..c88dd91 100644 1.8.1.6 -From d6064a357c0423d7601c50568f78496fc7fd89ea Mon Sep 17 00:00:00 2001 +From 21396738cd866d56a717c1f0999121739ea914d6 Mon Sep 17 00:00:00 2001 From: fritsch Date: Sat, 6 Jul 2013 08:07:30 +0200 -Subject: [PATCH 009/123] AE: Give Sinks the possibility to be used in a +Subject: [PATCH 010/136] AE: Give Sinks the possibility to be used in a blocking way --- @@ -867,7 +921,7 @@ Subject: [PATCH 009/123] AE: Give Sinks the possibility to be used in a 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp -index 66e4c6a..bd179d5 100644 +index 7b9e205..48e488b 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp @@ -243,6 +243,11 @@ unsigned int CAESinkAUDIOTRACK::AddPackets(uint8_t *data, unsigned int frames, b @@ -883,7 +937,7 @@ index 66e4c6a..bd179d5 100644 } diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp -index 8df9cab..6f4353d 100644 +index cff916e..797d7f2 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp @@ -367,7 +367,7 @@ bool CAESinkDirectSound::IsCompatible(const AEAudioFormat format, const std::str @@ -914,7 +968,7 @@ index 8df9cab..6f4353d 100644 while (len) diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkOSS.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkOSS.cpp -index 97d1725..ab13671 100644 +index 3a6461b..b201b7b 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkOSS.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkOSS.cpp @@ -420,7 +420,7 @@ unsigned int CAESinkOSS::AddPackets(uint8_t *data, unsigned int frames, bool has @@ -927,7 +981,7 @@ index 97d1725..ab13671 100644 CLog::Log(LOGERROR, "CAESinkOSS::AddPackets - Failed to write"); diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp -index 6d6e477..5aebb47 100644 +index 4cd95f0..8a3d7ce 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp @@ -488,10 +488,33 @@ unsigned int CAESinkWASAPI::AddPackets(uint8_t *data, unsigned int frames, bool @@ -971,10 +1025,10 @@ index 6d6e477..5aebb47 100644 1.8.1.6 -From feafa929a610c5de9ebdaf7f1fd1657348d48945 Mon Sep 17 00:00:00 2001 +From 8700c98e54c57d48cb50584f1097bddad3fe3a5a Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sun, 7 Jul 2013 18:22:04 +0200 -Subject: [PATCH 010/123] AE: allow to register audio callback directly into +Subject: [PATCH 011/136] AE: allow to register audio callback directly into engine --- @@ -1042,7 +1096,7 @@ index cbfa8ed..5741cd8 100644 }; diff --git a/xbmc/cores/dvdplayer/DVDPlayer.h b/xbmc/cores/dvdplayer/DVDPlayer.h -index ceb9996..6da30eb 100644 +index 237aba4d..c6b9ce3 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.h +++ b/xbmc/cores/dvdplayer/DVDPlayer.h @@ -39,6 +39,7 @@ @@ -1065,10 +1119,10 @@ index ceb9996..6da30eb 100644 virtual void SetDynamicRangeCompression(long drc) { m_dvdPlayerAudio.SetDynamicRangeCompression(drc); } virtual void GetAudioInfo(CStdString& strAudioInfo); diff --git a/xbmc/cores/paplayer/PAPlayer.cpp b/xbmc/cores/paplayer/PAPlayer.cpp -index cfde8fb..c9d56ac 100644 +index e4ba610..fe77363 100644 --- a/xbmc/cores/paplayer/PAPlayer.cpp +++ b/xbmc/cores/paplayer/PAPlayer.cpp -@@ -717,6 +717,7 @@ void PAPlayer::OnExit() +@@ -759,6 +759,7 @@ void PAPlayer::OnExit() void PAPlayer::RegisterAudioCallback(IAudioCallback* pCallback) { CSharedLock lock(m_streamsLock); @@ -1076,7 +1130,7 @@ index cfde8fb..c9d56ac 100644 m_audioCallback = pCallback; if (m_currentStream && m_currentStream->m_stream) m_currentStream->m_stream->RegisterAudioCallback(pCallback); -@@ -725,6 +726,7 @@ void PAPlayer::RegisterAudioCallback(IAudioCallback* pCallback) +@@ -767,6 +768,7 @@ void PAPlayer::RegisterAudioCallback(IAudioCallback* pCallback) void PAPlayer::UnRegisterAudioCallback() { CSharedLock lock(m_streamsLock); @@ -1088,10 +1142,10 @@ index cfde8fb..c9d56ac 100644 1.8.1.6 -From 6df9543d4e87cc038938efb44bc44c4e8eba9c45 Mon Sep 17 00:00:00 2001 +From 8ae0ba4f8e2d00c3dbf7362bfb22b6a8ee0befd7 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Mon, 1 Jul 2013 13:52:29 +0200 -Subject: [PATCH 011/123] AE: add parameter wait to drain, dvdplayer wants to +Subject: [PATCH 012/136] AE: add parameter wait to drain, dvdplayer wants to wait for the stream to be drained, papayer does not --- @@ -1198,7 +1252,7 @@ index 67fa5e2..92d5fef 100644 /** * Returns true if the is stream draining diff --git a/xbmc/cores/dvdplayer/DVDAudio.cpp b/xbmc/cores/dvdplayer/DVDAudio.cpp -index 3d77f0a..d304026 100644 +index c37d4c5..6404433 100644 --- a/xbmc/cores/dvdplayer/DVDAudio.cpp +++ b/xbmc/cores/dvdplayer/DVDAudio.cpp @@ -298,7 +298,7 @@ void CDVDAudio::Drain() @@ -1211,10 +1265,10 @@ index 3d77f0a..d304026 100644 void CDVDAudio::RegisterAudioCallback(IAudioCallback* pCallback) diff --git a/xbmc/cores/paplayer/PAPlayer.cpp b/xbmc/cores/paplayer/PAPlayer.cpp -index c9d56ac..f2e288c 100644 +index fe77363..555d51e 100644 --- a/xbmc/cores/paplayer/PAPlayer.cpp +++ b/xbmc/cores/paplayer/PAPlayer.cpp -@@ -568,7 +568,7 @@ inline void PAPlayer::ProcessStreams(double &delay, double &buffer) +@@ -610,7 +610,7 @@ inline void PAPlayer::ProcessStreams(double &delay, double &buffer) /* unregister the audio callback */ si->m_stream->UnRegisterAudioCallback(); si->m_decoder.Destroy(); @@ -1227,31 +1281,31 @@ index c9d56ac..f2e288c 100644 1.8.1.6 -From 2381ed88238ff8445cc23ac227e59e37b809e513 Mon Sep 17 00:00:00 2001 +From 2daf7828c64b2b5d1c1599660fc31d1e1a376420 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 25 Mar 2013 13:58:11 +0100 -Subject: [PATCH 012/123] ActiveAE: add new audio engine, co-author: fritsch +Subject: [PATCH 013/136] ActiveAE: add new audio engine, co-author: fritsch --- xbmc/cores/AudioEngine/AEFactory.cpp | 3 + xbmc/cores/AudioEngine/AEFactory.h | 3 +- - .../AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 2189 ++++++++++++++++++++ - xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h | 332 +++ - .../Engines/ActiveAE/ActiveAEBuffer.cpp | 368 ++++ + .../AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 2270 ++++++++++++++++++++ + xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h | 334 +++ + .../Engines/ActiveAE/ActiveAEBuffer.cpp | 365 ++++ .../AudioEngine/Engines/ActiveAE/ActiveAEBuffer.h | 110 + - .../Engines/ActiveAE/ActiveAEResample.cpp | 251 +++ + .../Engines/ActiveAE/ActiveAEResample.cpp | 250 +++ .../Engines/ActiveAE/ActiveAEResample.h | 61 + - .../AudioEngine/Engines/ActiveAE/ActiveAESink.cpp | 813 ++++++++ - .../AudioEngine/Engines/ActiveAE/ActiveAESink.h | 133 ++ - .../AudioEngine/Engines/ActiveAE/ActiveAESound.cpp | 164 ++ + .../AudioEngine/Engines/ActiveAE/ActiveAESink.cpp | 864 ++++++++ + .../AudioEngine/Engines/ActiveAE/ActiveAESink.h | 138 ++ + .../AudioEngine/Engines/ActiveAE/ActiveAESound.cpp | 161 ++ .../AudioEngine/Engines/ActiveAE/ActiveAESound.h | 73 + - .../Engines/ActiveAE/ActiveAEStream.cpp | 357 ++++ - .../AudioEngine/Engines/ActiveAE/ActiveAEStream.h | 115 + + .../Engines/ActiveAE/ActiveAEStream.cpp | 362 ++++ + .../AudioEngine/Engines/ActiveAE/ActiveAEStream.h | 117 + xbmc/cores/AudioEngine/Makefile.in | 7 + xbmc/utils/ActorProtocol.cpp | 253 +++ xbmc/utils/ActorProtocol.h | 87 + xbmc/utils/Makefile.in | 1 + - 18 files changed, 5319 insertions(+), 1 deletion(-) + 18 files changed, 5458 insertions(+), 1 deletion(-) create mode 100644 xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp create mode 100644 xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h create mode 100644 xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp @@ -1304,10 +1358,10 @@ index 9e15f79..3059001 100644 class CAEFactory diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp new file mode 100644 -index 0000000..dc79da7 +index 0000000..2defd1d --- /dev/null +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -@@ -0,0 +1,2189 @@ +@@ -0,0 +1,2270 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org @@ -1456,6 +1510,7 @@ index 0000000..dc79da7 + m_encoder = NULL; + m_audioCallback = NULL; + m_vizInitialized = false; ++ m_sinkHasVolume = false; +} + +CActiveAE::~CActiveAE() @@ -1527,6 +1582,8 @@ index 0000000..dc79da7 + return; + case CActiveAEControlProtocol::VOLUME: + m_volume = *(float*)msg->data; ++ if (m_sinkHasVolume) ++ m_sink.m_controlPort.SendOutMessage(CSinkControlProtocol::VOLUME, &m_volume, sizeof(float)); + return; + case CActiveAEControlProtocol::MUTE: + m_muted = *(bool*)msg->data; @@ -1591,6 +1648,29 @@ index 0000000..dc79da7 + return; + + case AE_TOP_ERROR: ++ if (port == NULL) // timeout ++ { ++ switch (signal) ++ { ++ case CActiveAEControlProtocol::TIMEOUT: ++ m_extError = false; ++ LoadSettings(); ++ Configure(); ++ if (!m_extError) ++ { ++ m_state = AE_TOP_CONFIGURED_IDLE; ++ m_extTimeout = 0; ++ } ++ else ++ { ++ m_state = AE_TOP_ERROR; ++ m_extTimeout = 500; ++ } ++ return; ++ default: ++ break; ++ } ++ } + break; + + case AE_TOP_UNCONFIGURED: @@ -1612,6 +1692,7 @@ index 0000000..dc79da7 + else + { + m_state = AE_TOP_ERROR; ++ m_extTimeout = 500; + } + return; + @@ -1633,14 +1714,16 @@ index 0000000..dc79da7 + m_extTimeout = 0; + return; + } -+ if (HasWork()) ++ if (!m_sinkBuffers->m_inputSamples.empty() || !m_sinkBuffers->m_outputSamples.empty()) + { + m_extTimeout = 100; + return; + } + if (NeedReconfigureSink()) + DrainSink(); -+ Configure(); ++ ++ if (!m_extError) ++ Configure(); + if (!m_extError) + { + m_state = AE_TOP_CONFIGURED_PLAY; @@ -1649,9 +1732,9 @@ index 0000000..dc79da7 + else + { + m_state = AE_TOP_ERROR; -+ m_extTimeout = 1000; ++ m_extTimeout = 500; + } -+ m_dataPort.DeferOut(false); ++ m_extDeferData = false; + return; + default: + break; @@ -1671,12 +1754,13 @@ index 0000000..dc79da7 + m_state = AE_TOP_RECONFIGURING; + m_extTimeout = 0; + // don't accept any data until we are reconfigured -+ m_dataPort.DeferOut(true); ++ m_extDeferData = true; + return; + case CActiveAEControlProtocol::SUSPEND: + UnconfigureSink(); + m_stats.SetSuspended(true); + m_state = AE_TOP_CONFIGURED_SUSPEND; ++ m_extDeferData = true; + return; + case CActiveAEControlProtocol::DISPLAYLOST: + if (m_settings.mode == AUDIO_HDMI) @@ -1684,6 +1768,7 @@ index 0000000..dc79da7 + UnconfigureSink(); + m_stats.SetSuspended(true); + m_state = AE_TOP_CONFIGURED_SUSPEND; ++ m_extDeferData = true; + } + return; + case CActiveAEControlProtocol::PAUSESTREAM: @@ -1762,8 +1847,16 @@ index 0000000..dc79da7 + { + msg->Reply(CActiveAEDataProtocol::ACC, &stream, sizeof(CActiveAEStream*)); + Configure(); -+ m_extTimeout = 0; -+ m_state = AE_TOP_CONFIGURED_PLAY; ++ if (!m_extError) ++ { ++ m_state = AE_TOP_CONFIGURED_PLAY; ++ m_extTimeout = 0; ++ } ++ else ++ { ++ m_state = AE_TOP_ERROR; ++ m_extTimeout = 500; ++ } + } + else + msg->Reply(CActiveAEDataProtocol::ERR); @@ -1851,14 +1944,16 @@ index 0000000..dc79da7 + msg->Reply(CActiveAEControlProtocol::ACC); + if (!m_extError) + { -+ m_stats.SetSuspended(false); + m_state = AE_TOP_CONFIGURED_PLAY; + m_extTimeout = 0; + } + else + { + m_state = AE_TOP_ERROR; ++ m_extTimeout = 500; + } ++ m_stats.SetSuspended(false); ++ m_extDeferData = false; + return; + default: + break; @@ -1879,8 +1974,16 @@ index 0000000..dc79da7 + if (m_extDrainTimer.IsTimePast()) + { + Configure(); -+ m_state = AE_TOP_CONFIGURED_PLAY; -+ m_extTimeout = 0; ++ if (!m_extError) ++ { ++ m_state = AE_TOP_CONFIGURED_PLAY; ++ m_extTimeout = 0; ++ } ++ else ++ { ++ m_state = AE_TOP_ERROR; ++ m_extTimeout = 500; ++ } + } + else + m_extTimeout = m_extDrainTimer.MillisLeft(); @@ -1939,6 +2042,7 @@ index 0000000..dc79da7 + m_extTimeout = 1000; + m_bStateMachineSelfTrigger = false; + m_extDrain = false; ++ m_extDeferData = false; + + // start sink + m_sink.Start(); @@ -1946,7 +2050,6 @@ index 0000000..dc79da7 + while (!m_bStop) + { + gotMsg = false; -+ deferData = (m_state == AE_TOP_CONFIGURED_SUSPEND); + + if (m_bStateMachineSelfTrigger) + { @@ -1966,7 +2069,13 @@ index 0000000..dc79da7 + gotMsg = true; + port = &m_controlPort; + } -+ else if (!deferData) ++ // check sink data port ++ else if (m_sink.m_dataPort.ReceiveInMessage(&msg)) ++ { ++ gotMsg = true; ++ port = &m_sink.m_dataPort; ++ } ++ else if (!m_extDeferData) + { + // check data port + if (m_dataPort.ReceiveOutMessage(&msg)) @@ -1974,12 +2083,6 @@ index 0000000..dc79da7 + gotMsg = true; + port = &m_dataPort; + } -+ // check sink data port -+ else if (m_sink.m_dataPort.ReceiveInMessage(&msg)) -+ { -+ gotMsg = true; -+ port = &m_sink.m_dataPort; -+ } + // stream data ports + else + { @@ -2029,7 +2132,7 @@ index 0000000..dc79da7 + } +} + -+void CActiveAE::Configure() ++void CActiveAE::Configure(AEAudioFormat *desiredFmt) +{ + bool initSink = false; + AEAudioFormat sinkInputFormat, inputFormat; @@ -2046,22 +2149,34 @@ index 0000000..dc79da7 + inputFormat.m_frameSize = 0; + UnregisterAudioCallback(); + } ++ // force input format after unpausing slave ++ else if (desiredFmt != NULL) ++ { ++ inputFormat = *desiredFmt; ++ } ++ // keep format when having multiple streams ++ else if (m_streams.size() > 1 && m_silenceBuffers == NULL) ++ { ++ inputFormat = m_sinkRequestFormat; ++ } + else + { + inputFormat = m_streams.front()->m_format; + } + + m_sinkRequestFormat = inputFormat; -+ ApplySettingsToFormat(m_sinkRequestFormat, m_settings); ++ ApplySettingsToFormat(m_sinkRequestFormat, m_settings, true); + std::string device = AE_IS_RAW(m_sinkRequestFormat.m_dataFormat) ? m_settings.passthoughdevice : m_settings.device; + std::string driver; + CAESinkFactory::ParseDevice(device, driver); + if (!m_sink.IsCompatible(m_sinkRequestFormat, device) || m_settings.driver.compare(driver) != 0) + { -+ InitSink(); ++ if (!InitSink()) ++ return; + m_settings.driver = driver; + initSink = true; + m_stats.Reset(m_sinkFormat.m_sampleRate); ++ m_sink.m_controlPort.SendOutMessage(CSinkControlProtocol::VOLUME, &m_volume, sizeof(float)); + } + + if (m_silenceBuffers) @@ -2085,11 +2200,9 @@ index 0000000..dc79da7 + bool silence = false; + m_sink.m_controlPort.SendOutMessage(CSinkControlProtocol::SILENCEMODE, &silence, sizeof(bool)); + -+ if (m_encoder) -+ { -+ delete m_encoder; -+ m_encoder = NULL; -+ } ++ delete m_encoder; ++ m_encoder = NULL; ++ + if (m_encoderBuffers) + { + m_discardBufferPools.push_back(m_encoderBuffers); @@ -2108,14 +2221,13 @@ index 0000000..dc79da7 + m_sink.m_controlPort.SendOutMessage(CSinkControlProtocol::SILENCEMODE, &silence, sizeof(bool)); + + AEAudioFormat outputFormat; -+ if (AE_IS_RAW(inputFormat.m_dataFormat)) ++ if (m_mode == MODE_RAW) + { + outputFormat = inputFormat; + sinkInputFormat = m_sinkFormat; -+ m_mode = MODE_RAW; + } -+ // transcode -+ else if (m_settings.ac3passthrough && !m_settings.multichannellpcm) ++ // transcode everything with more than 2 channels ++ else if (m_mode == MODE_TRANSCODE) + { + outputFormat = inputFormat; + outputFormat.m_dataFormat = AE_FMT_FLOATP; @@ -2160,7 +2272,6 @@ index 0000000..dc79da7 + } + } + -+ m_mode = MODE_TRANSCODE; + sinkInputFormat = m_sinkFormat; + } + else @@ -2179,10 +2290,19 @@ index 0000000..dc79da7 + std::list::iterator it; + for(it=m_streams.begin(); it!=m_streams.end(); ++it) + { ++ // check if we support input format of stream ++ if (!AE_IS_RAW((*it)->m_format.m_dataFormat) && ++ CActiveAEResample::GetAVSampleFormat((*it)->m_format.m_dataFormat) == AV_SAMPLE_FMT_FLT && ++ (*it)->m_format.m_dataFormat != AE_FMT_FLOAT) ++ { ++ (*it)->m_convertFn = CAEConvert::ToFloat((*it)->m_format.m_dataFormat); ++ (*it)->m_format.m_dataFormat = AE_FMT_FLOAT; ++ } ++ + if (!(*it)->m_inputBuffers) + { -+ // align input buffers with period of sink -+ (*it)->m_format.m_frames = m_sinkFormat.m_frames * ((float)(*it)->m_format.m_sampleRate / m_sinkFormat.m_sampleRate); ++ // align input buffers with period of sink or encoder ++ (*it)->m_format.m_frames = m_internalFormat.m_frames * ((float)(*it)->m_format.m_sampleRate / m_internalFormat.m_sampleRate); + + // create buffer pool + (*it)->m_inputBuffers = new CActiveAEBufferPool((*it)->m_format); @@ -2376,7 +2496,7 @@ index 0000000..dc79da7 + return amp; +} + -+void CActiveAE::ApplySettingsToFormat(AEAudioFormat &format, AudioSettings &settings) ++void CActiveAE::ApplySettingsToFormat(AEAudioFormat &format, AudioSettings &settings, bool setmode) +{ + // raw pass through + if (m_settings.mode != AUDIO_ANALOG && AE_IS_RAW(format.m_dataFormat)) @@ -2388,15 +2508,24 @@ index 0000000..dc79da7 + { + CLog::Log(LOGERROR, "CActiveAE::ApplySettingsToFormat - input audio format is wrong"); + } ++ if (setmode) ++ m_mode = MODE_RAW; + } + // transcode -+ else if (m_settings.mode != AUDIO_ANALOG && settings.ac3passthrough && !settings.multichannellpcm && !m_streams.empty()) ++ else if (m_settings.mode != AUDIO_ANALOG && ++ settings.ac3passthrough && ++ (!settings.multichannellpcm || (m_settings.mode != AUDIO_HDMI)) && ++ !m_streams.empty() && ++ format.m_channelLayout.Count() > 2) + { + format.m_dataFormat = AE_FMT_AC3; + format.m_sampleRate = 48000; ++ if (setmode) ++ m_mode = MODE_TRANSCODE; + } + else + { ++ format.m_dataFormat = AE_FMT_FLOAT; + if ((format.m_channelLayout.Count() > 2) || settings.stereoupmix) + { + switch (settings.channels) @@ -2463,7 +2592,7 @@ index 0000000..dc79da7 + return false; +} + -+void CActiveAE::InitSink() ++bool CActiveAE::InitSink() +{ + SinkConfig config; + config.format = m_sinkRequestFormat; @@ -2482,7 +2611,7 @@ index 0000000..dc79da7 + reply->Release(); + CLog::Log(LOGERROR, "ActiveAE::%s - returned error", __FUNCTION__); + m_extError = true; -+ return; ++ return false; + } + AEAudioFormat *data; + data = (AEAudioFormat*)reply->data; @@ -2490,16 +2619,18 @@ index 0000000..dc79da7 + { + m_sinkFormat = *data; + } ++ m_sinkHasVolume = m_sink.HasVolume(); + reply->Release(); + } + else + { + CLog::Log(LOGERROR, "ActiveAE::%s - failed to init", __FUNCTION__); + m_extError = true; -+ return; ++ return false; + } + + m_inMsgEvent.Reset(); ++ return true; +} + +void CActiveAE::DrainSink() @@ -2564,7 +2695,8 @@ index 0000000..dc79da7 + { + if ((*it)->m_resampleBuffers && !(*it)->m_paused) + busy = (*it)->m_resampleBuffers->ResampleBuffers(); -+ else if ((*it)->m_resampleBuffers && !(*it)->m_resampleBuffers->m_inputSamples.empty()) ++ else if ((*it)->m_resampleBuffers && ++ ((*it)->m_resampleBuffers->m_inputSamples.size() > (*it)->m_resampleBuffers->m_allSamples.size() * 0.5)) + { + CSingleLock lock((*it)->m_streamLock); + (*it)->m_streamIsBuffering = false; @@ -2597,7 +2729,9 @@ index 0000000..dc79da7 + CSingleLock lock((*it)->m_streamLock); + if ((*it)->m_streamSlave) + { -+ ((CActiveAEStream*)(*it)->m_streamSlave)->m_paused = false;; ++ CActiveAEStream *slave = (CActiveAEStream*)((*it)->m_streamSlave); ++ slave->m_paused = false; ++ Configure(&slave->m_format); + (*it)->m_streamSlave = NULL; + } + (*it)->m_streamDrained = true; @@ -2770,12 +2904,13 @@ index 0000000..dc79da7 + { + // mix gui sounds + MixSounds(*(out->pkt)); -+ Deamplify(*(out->pkt)); ++ if (!m_sinkHasVolume) ++ Deamplify(*(out->pkt)); + + // viz + { + CSingleLock lock(m_vizLock); -+ if (m_audioCallback) ++ if (m_audioCallback && m_vizBuffers) + { + if (!m_vizInitialized) + { @@ -3499,10 +3634,10 @@ index 0000000..dc79da7 +} diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h new file mode 100644 -index 0000000..30da1ac +index 0000000..d5c5d97 --- /dev/null +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h -@@ -0,0 +1,332 @@ +@@ -0,0 +1,334 @@ +#pragma once +/* + * Copyright (C) 2010-2013 Team XBMC @@ -3744,7 +3879,7 @@ index 0000000..30da1ac +protected: + void Process(); + void StateMachine(int signal, Protocol *port, Message *msg); -+ void InitSink(); ++ bool InitSink(); + void DrainSink(); + void UnconfigureSink(); + void Start(); @@ -3752,8 +3887,8 @@ index 0000000..30da1ac + void LoadSettings(); + bool NeedReconfigureBuffers(); + bool NeedReconfigureSink(); -+ void ApplySettingsToFormat(AEAudioFormat &format, AudioSettings &settings); -+ void Configure(); ++ void ApplySettingsToFormat(AEAudioFormat &format, AudioSettings &settings, bool setmode = false); ++ void Configure(AEAudioFormat *desiredFmt = NULL); + CActiveAEStream* CreateStream(MsgStreamNew *streamMsg); + void DiscardStream(CActiveAEStream *stream); + void SFlushStream(CActiveAEStream *stream); @@ -3780,6 +3915,7 @@ index 0000000..30da1ac + bool m_extError; + bool m_extDrain; + XbmcThreads::EndTime m_extDrainTimer; ++ bool m_extDeferData; + + enum + { @@ -3819,6 +3955,7 @@ index 0000000..30da1ac + + float m_volume; + bool m_muted; ++ bool m_sinkHasVolume; + + // viz + IAudioCallback *m_audioCallback; @@ -3837,10 +3974,10 @@ index 0000000..30da1ac +}; diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp new file mode 100644 -index 0000000..9a5f61e +index 0000000..d3ba213 --- /dev/null +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp -@@ -0,0 +1,368 @@ +@@ -0,0 +1,365 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://www.xbmc.org @@ -3890,8 +4027,7 @@ index 0000000..9a5f61e + +CSampleBuffer::~CSampleBuffer() +{ -+ if (pkt) -+ delete pkt; ++ delete pkt; +} + +CSampleBuffer* CSampleBuffer::Acquire() @@ -3990,8 +4126,7 @@ index 0000000..9a5f61e + +CActiveAEBufferPoolResample::~CActiveAEBufferPoolResample() +{ -+ if (m_resampler) -+ delete m_resampler; ++ delete m_resampler; +} + +bool CActiveAEBufferPoolResample::Create(unsigned int totaltime, bool remap) @@ -4027,8 +4162,7 @@ index 0000000..9a5f61e + + m_outSampleRate = m_format.m_sampleRate * m_resampleRatio; + -+ if (m_resampler) -+ delete m_resampler; ++ delete m_resampler; + + m_resampler = new CActiveAEResample(); + m_resampler->Init(CActiveAEResample::GetAVChannelLayout(m_format.m_channelLayout), @@ -4327,10 +4461,10 @@ index 0000000..183c49e +} diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.cpp new file mode 100644 -index 0000000..63df59c +index 0000000..aee3bfc --- /dev/null +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.cpp -@@ -0,0 +1,251 @@ +@@ -0,0 +1,250 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org @@ -4444,8 +4578,8 @@ index 0000000..63df59c + +int CActiveAEResample::GetBufferedSamples() +{ -+ return m_dllAvUtil.av_rescale_rnd(m_dllSwResample.swr_get_delay(m_pContext, m_dst_rate), -+ m_src_rate, m_dst_rate, AV_ROUND_UP); ++ return m_dllAvUtil.av_rescale_rnd(m_dllSwResample.swr_get_delay(m_pContext, m_src_rate), ++ m_dst_rate, m_src_rate, AV_ROUND_UP); +} + +int CActiveAEResample::CalcDstSampleCount(int src_samples, int dst_rate, int src_rate) @@ -4529,7 +4663,6 @@ index 0000000..63df59c + else if (format == AE_FMT_FLOATP) return AV_SAMPLE_FMT_FLTP; + else if (format == AE_FMT_DOUBLEP) return AV_SAMPLE_FMT_DBLP; + -+ CLog::Log(LOGDEBUG, "CActiveAEResample::GetAVSampleFormat - format not supported"); + return AV_SAMPLE_FMT_FLT; +} + @@ -4651,10 +4784,10 @@ index 0000000..fa95a1d +} diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp new file mode 100644 -index 0000000..252f431 +index 0000000..c22bb88 --- /dev/null +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp -@@ -0,0 +1,813 @@ +@@ -0,0 +1,864 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org @@ -4696,6 +4829,7 @@ index 0000000..252f431 + m_sink = NULL; + m_stats = NULL; + m_convertBuffer = NULL; ++ m_volume = 0.0; +} + +void CActiveAESink::Start() @@ -4722,11 +4856,9 @@ index 0000000..252f431 + delete m_sink; + m_sink = NULL; + } -+ if (m_sampleOfSilence.pkt) -+ { -+ delete m_sampleOfSilence.pkt; -+ m_sampleOfSilence.pkt = NULL; -+ } ++ ++ delete m_sampleOfSilence.pkt; ++ m_sampleOfSilence.pkt = NULL; + + delete m_sampleOfNoise.pkt; + m_sampleOfNoise.pkt = NULL; @@ -4745,6 +4877,13 @@ index 0000000..252f431 + return m_sink->IsCompatible(format, device); +} + ++bool CActiveAESink::HasVolume() ++{ ++ if (!m_sink) ++ return false; ++ return m_sink->HasVolume(); ++} ++ +enum SINK_STATES +{ + S_TOP = 0, // 0 @@ -4889,6 +5028,10 @@ index 0000000..252f431 + m_extTimeout = 0; + } + return; ++ case CSinkControlProtocol::VOLUME: ++ m_volume = *(float*)msg->data; ++ m_sink->SetVolume(m_volume); ++ return; + default: + break; + } @@ -4930,7 +5073,20 @@ index 0000000..252f431 + break; + + case S_TOP_CONFIGURED_SUSPEND: -+ if (port == &m_dataPort) ++ if (port == &m_controlPort) ++ { ++ switch (signal) ++ { ++ case CSinkControlProtocol::SILENCEMODE: ++ return; ++ case CSinkControlProtocol::VOLUME: ++ m_volume = *(float*)msg->data; ++ return; ++ default: ++ break; ++ } ++ } ++ else if (port == &m_dataPort) + { + switch (signal) + { @@ -5065,7 +5221,7 @@ index 0000000..252f431 + } + else if(m_extCycleCounter <= 0) + { -+ m_extCycleCounter = 30; ++ m_extCycleCounter = 20; + m_state = S_TOP_CONFIGURED_SILENCE; + } + m_extTimeout = 0; @@ -5305,6 +5461,20 @@ index 0000000..252f431 + return; + } + ++ m_sink->SetVolume(m_volume); ++ ++#ifdef WORDS_BIGENDIAN ++ if (m_sinkFormat.m_dataFormat == AE_FMT_S16BE) ++ m_sinkFormat.m_dataFormat = AE_FMT_S16NE; ++ else if (m_sinkFormat.m_dataFormat == AE_FMT_S32BE) ++ m_sinkFormat.m_dataFormat = AE_FMT_S32NE; ++#else ++ if (m_sinkFormat.m_dataFormat == AE_FMT_S16LE) ++ m_sinkFormat.m_dataFormat = AE_FMT_S16NE; ++ else if (m_sinkFormat.m_dataFormat == AE_FMT_S32LE) ++ m_sinkFormat.m_dataFormat = AE_FMT_S32NE; ++#endif ++ + CLog::Log(LOGDEBUG, "CActiveAE::OpenSink - %s Initialized:", m_sink->GetName()); + CLog::Log(LOGDEBUG, " Output Device : %s", m_deviceFriendlyName.c_str()); + CLog::Log(LOGDEBUG, " Sample Rate : %d", m_sinkFormat.m_sampleRate); @@ -5327,8 +5497,7 @@ index 0000000..252f431 + config.channel_layout = CActiveAEResample::GetAVChannelLayout(m_sinkFormat.m_channelLayout); + config.channels = m_sinkFormat.m_channelLayout.Count(); + config.sample_rate = m_sinkFormat.m_sampleRate; -+ if (m_sampleOfSilence.pkt) -+ delete m_sampleOfSilence.pkt; ++ delete m_sampleOfSilence.pkt; + m_sampleOfSilence.pkt = new CSoundPacket(config, m_sinkFormat.m_frames); + m_sampleOfSilence.pkt->nb_samples = m_sampleOfSilence.pkt->max_nb_samples; + @@ -5344,6 +5513,7 @@ index 0000000..252f431 + _aligned_free(m_convertBuffer); + m_convertBuffer = NULL; + } ++ m_convertFn = NULL; + m_convertState = CHECK_CONVERT; +} + @@ -5375,6 +5545,7 @@ index 0000000..252f431 + case SKIP_CONVERT: + break; + case NEED_CONVERT: ++ EnsureConvertBuffer(samples); + buffer = Convert(samples); + break; + case NEED_BYTESWAP: @@ -5382,6 +5553,10 @@ index 0000000..252f431 + break; + case CHECK_CONVERT: + ConvertInit(samples); ++ if (m_convertState == NEED_CONVERT) ++ buffer = Convert(samples); ++ else if (m_convertState == NEED_BYTESWAP) ++ Endian_Swap16_buf((uint16_t *)buffer, (uint16_t *)buffer, frames * samples->pkt->config.channels); + break; + default: + break; @@ -5419,8 +5594,9 @@ index 0000000..252f431 + m_convertFn = CAEConvert::FrFloat(m_sinkFormat.m_dataFormat); + if (m_convertBuffer) + _aligned_free(m_convertBuffer); -+ m_convertBuffer = (uint8_t*)_aligned_malloc(m_sinkFormat.m_frames * m_sinkFormat.m_channelLayout.Count() * m_sinkFormat.m_frameSize, 16); -+ memset(m_convertBuffer, 0, m_sinkFormat.m_frames * m_sinkFormat.m_channelLayout.Count() * m_sinkFormat.m_frameSize); ++ m_convertBufferSampleSize = samples->pkt->max_nb_samples; ++ m_convertBuffer = (uint8_t*)_aligned_malloc(samples->pkt->max_nb_samples * m_sinkFormat.m_channelLayout.Count() * m_sinkFormat.m_frameSize, 16); ++ memset(m_convertBuffer, 0, samples->pkt->max_nb_samples * m_sinkFormat.m_channelLayout.Count() * m_sinkFormat.m_frameSize); + m_convertState = NEED_CONVERT; + } + else if (AE_IS_RAW(m_requestedFormat.m_dataFormat) && CAEUtil::S16NeedsByteSwap(AE_FMT_S16NE, m_sinkFormat.m_dataFormat)) @@ -5431,6 +5607,20 @@ index 0000000..252f431 + m_convertState = SKIP_CONVERT; +} + ++void CActiveAESink::EnsureConvertBuffer(CSampleBuffer* samples) ++{ ++ if (!m_convertBuffer) ++ return; ++ ++ if (samples->pkt->max_nb_samples <= m_convertBufferSampleSize) ++ return; ++ ++ _aligned_free(m_convertBuffer); ++ m_convertBufferSampleSize = samples->pkt->max_nb_samples; ++ m_convertBuffer = (uint8_t*)_aligned_malloc(samples->pkt->max_nb_samples * m_sinkFormat.m_channelLayout.Count() * m_sinkFormat.m_frameSize, 16); ++ memset(m_convertBuffer, 0, samples->pkt->max_nb_samples * m_sinkFormat.m_channelLayout.Count() * m_sinkFormat.m_frameSize); ++} ++ +uint8_t* CActiveAESink::Convert(CSampleBuffer* samples) +{ + unsigned int nb_samples = m_convertFn((float*)samples->pkt->data[0], samples->pkt->nb_samples * samples->pkt->config.channels, m_convertBuffer); @@ -5457,23 +5647,17 @@ index 0000000..252f431 + noise[i] = (float) sqrt( -2.0f * log( R1 )) * cos( 2.0f * PI * R2 ) * 0.00001; + } + -+ if (m_sinkFormat.m_dataFormat != AE_FMT_FLOAT) -+ { -+ CAEConvert::AEConvertFrFn convertFn = CAEConvert::FrFloat(m_sinkFormat.m_dataFormat); -+ convertFn(noise, nb_floats, m_sampleOfNoise.pkt->data[0]); -+ } -+ else -+ { -+ memcpy(m_sampleOfNoise.pkt->data[0], noise, nb_floats*sizeof(float)); -+ } ++ AEDataFormat fmt = CActiveAEResample::GetAESampleFormat(m_sampleOfNoise.pkt->config.fmt); ++ CAEConvert::AEConvertFrFn convertFn = CAEConvert::FrFloat(fmt); ++ convertFn(noise, nb_floats, m_sampleOfNoise.pkt->data[0]); + delete [] noise; +} diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h new file mode 100644 -index 0000000..ae19f38 +index 0000000..559179c --- /dev/null +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h -@@ -0,0 +1,133 @@ +@@ -0,0 +1,138 @@ +#pragma once +/* + * Copyright (C) 2010-2013 Team XBMC @@ -5525,6 +5709,7 @@ index 0000000..ae19f38 + CONFIGURE, + UNCONFIGURE, + SILENCEMODE, ++ VOLUME, + TIMEOUT, + }; + enum InSignal @@ -5561,6 +5746,7 @@ index 0000000..ae19f38 + void Start(); + void Dispose(); + bool IsCompatible(const AEAudioFormat format, const std::string &device); ++ bool HasVolume(); + CSinkControlProtocol m_controlPort; + CSinkDataProtocol m_dataPort; + @@ -5574,6 +5760,7 @@ index 0000000..ae19f38 + + unsigned int OutputSamples(CSampleBuffer* samples); + void ConvertInit(CSampleBuffer* samples); ++ inline void EnsureConvertBuffer(CSampleBuffer* samples); + inline uint8_t* Convert(CSampleBuffer* samples); + + void GenerateNoise(); @@ -5590,6 +5777,7 @@ index 0000000..ae19f38 + CSampleBuffer m_sampleOfSilence; + CSampleBuffer m_sampleOfNoise; + uint8_t *m_convertBuffer; ++ int m_convertBufferSampleSize; + CAEConvert::AEConvertFrFn m_convertFn; + enum + { @@ -5604,15 +5792,16 @@ index 0000000..ae19f38 + IAESink *m_sink; + AEAudioFormat m_sinkFormat, m_requestedFormat; + CEngineStats *m_stats; ++ float m_volume; +}; + +} diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESound.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESound.cpp new file mode 100644 -index 0000000..3d79761 +index 0000000..fb75ba9 --- /dev/null +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESound.cpp -@@ -0,0 +1,164 @@ +@@ -0,0 +1,161 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org @@ -5660,10 +5849,8 @@ index 0000000..3d79761 + +CActiveAESound::~CActiveAESound() +{ -+ if (m_orig_sound) -+ delete m_orig_sound; -+ if (m_dst_sound) -+ delete m_dst_sound; ++ delete m_orig_sound; ++ delete m_dst_sound; + Finish(); +} + @@ -5691,8 +5878,7 @@ index 0000000..3d79761 + else + info = &m_dst_sound; + -+ if (*info) -+ delete *info; ++ delete *info; + *info = new CSoundPacket(config, nb_samples); + + (*info)->nb_samples = 0; @@ -5858,10 +6044,10 @@ index 0000000..7cdf76c +} diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp new file mode 100644 -index 0000000..e21b9d5 +index 0000000..66f62b7 --- /dev/null +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp -@@ -0,0 +1,357 @@ +@@ -0,0 +1,362 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org @@ -5915,6 +6101,7 @@ index 0000000..e21b9d5 + m_streamFreeBuffers = 0; + m_streamIsBuffering = true; + m_streamSlave = NULL; ++ m_convertFn = NULL; +} + +CActiveAEStream::~CActiveAEStream() @@ -5960,11 +6147,15 @@ index 0000000..e21b9d5 + m_currentBuffer->pkt->planes; + + int freeSamples = m_currentBuffer->pkt->max_nb_samples - m_currentBuffer->pkt->nb_samples; -+ int space = freeSamples * m_format.m_frameSize; -+ int bytes = std::min(bytesToCopy, space); -+ int samples = bytes / m_currentBuffer->pkt->bytes_per_sample / m_currentBuffer->pkt->config.channels; ++ int availableSamples = bytesToCopy / m_format.m_frameSize; ++ int space = freeSamples * m_currentBuffer->pkt->bytes_per_sample * m_currentBuffer->pkt->config.channels; ++ int samples = std::min(freeSamples, availableSamples); ++ int bytes = samples * m_format.m_frameSize; + //TODO: handle planar formats -+ memcpy(m_currentBuffer->pkt->data[0] + start, (uint8_t*)data+copied, bytes); ++ if (m_convertFn) ++ m_convertFn((uint8_t*)data+copied, samples*m_currentBuffer->pkt->config.channels, (float*)(m_currentBuffer->pkt->data[0] + start)); ++ else ++ memcpy(m_currentBuffer->pkt->data[0] + start, (uint8_t*)data+copied, bytes); + { + CSingleLock lock(*m_statsLock); + m_currentBuffer->pkt->nb_samples += samples; @@ -6221,10 +6412,10 @@ index 0000000..e21b9d5 + diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.h new file mode 100644 -index 0000000..b18d0f5 +index 0000000..bddf1a3 --- /dev/null +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.h -@@ -0,0 +1,115 @@ +@@ -0,0 +1,117 @@ +#pragma once +/* + * Copyright (C) 2010-2013 Team XBMC @@ -6249,6 +6440,7 @@ index 0000000..b18d0f5 +#include "AEAudioFormat.h" +#include "Interfaces/AEStream.h" +#include "Utils/AELimiter.h" ++#include "Utils/AEConvert.h" + +namespace ActiveAE +{ @@ -6316,6 +6508,7 @@ index 0000000..b18d0f5 + int m_streamFreeBuffers; + bool m_streamIsBuffering; + IAEStream *m_streamSlave; ++ CAEConvert::AEConvertToFn m_convertFn; + CCriticalSection m_streamLock; + + // only accessed by engine @@ -6726,10 +6919,10 @@ index 694a9bd..ca49be2 100644 1.8.1.6 -From 5e22d771079269b28d443a869cf9024bf7cfb9c0 Mon Sep 17 00:00:00 2001 +From dfaf102c264a11252e053ec4477d08db6cbca1f9 Mon Sep 17 00:00:00 2001 From: fritsch Date: Sat, 8 Jun 2013 09:39:38 +0200 -Subject: [PATCH 013/123] ActiveAE: Make Factory aware of environment, change +Subject: [PATCH 014/136] ActiveAE: Make Factory aware of environment, change global namespace --- @@ -6770,10 +6963,10 @@ index 4f9f566..5adda5f 100644 1.8.1.6 -From 89bb54f049db842565fe68698fd8aacc896be229 Mon Sep 17 00:00:00 2001 +From 1032f3155784ceb5781940e7bae5f3369cd7a831 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 11 Jul 2013 18:33:34 +0200 -Subject: [PATCH 015/123] AE: allow Windows to use ActiveAE via env +Subject: [PATCH 015/136] AE: allow Windows to use ActiveAE via env --- xbmc/cores/AudioEngine/AEFactory.cpp | 14 ++++++++++++++ @@ -6808,255 +7001,1625 @@ index 5adda5f..d5517f3 100644 1.8.1.6 -From 795bc8558b82484598f4e304a0b0681eaa0b7ec5 Mon Sep 17 00:00:00 2001 -From: Rainer Hochecker -Date: Sun, 14 Jul 2013 17:28:13 +0200 -Subject: [PATCH 016/123] ActiveAE: convert BE/LE to NE if possible +From ca1eb43f810ffa679c9420d740e0474e19b474bc Mon Sep 17 00:00:00 2001 +From: unknown +Date: Tue, 16 Jul 2013 17:06:03 +0200 +Subject: [PATCH 017/136] AE: add streamsilence to gui settings for engines + which suppport drain --- - xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp | 12 ++++++++++++ - 1 file changed, 12 insertions(+) + language/English/strings.po | 14 +++++++++++--- + system/settings/settings.xml | 5 +++++ + xbmc/cores/AudioEngine/AEFactory.cpp | 8 ++++++++ + xbmc/cores/AudioEngine/AEFactory.h | 1 + + xbmc/cores/AudioEngine/Interfaces/AE.h | 6 ++++++ + xbmc/settings/Settings.cpp | 4 ++++ + 6 files changed, 35 insertions(+), 3 deletions(-) -diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp -index 252f431..0e003bd 100644 ---- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp -+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp -@@ -648,6 +648,18 @@ void CActiveAESink::OpenSink() - return; - } +diff --git a/language/English/strings.po b/language/English/strings.po +index 069dce0..c2c562f 100644 +--- a/language/English/strings.po ++++ b/language/English/strings.po +@@ -1762,7 +1762,10 @@ msgctxt "#420" + msgid "HDMI" + msgstr "" -+#ifdef WORDS_BIGENDIAN -+ if (m_sinkFormat.m_dataFormat == AE_FMT_S16BE) -+ m_sinkFormat.m_dataFormat = AE_FMT_S16NE; -+ else if (m_sinkFormat.m_dataFormat == AE_FMT_S32BE) -+ m_sinkFormat.m_dataFormat = AE_FMT_S32NE; -+#else -+ if (m_sinkFormat.m_dataFormat == AE_FMT_S16LE) -+ m_sinkFormat.m_dataFormat = AE_FMT_S16NE; -+ else if (m_sinkFormat.m_dataFormat == AE_FMT_S32LE) -+ m_sinkFormat.m_dataFormat = AE_FMT_S32NE; -+#endif +-#empty string with id 421 ++#: system/settings/settings.xml ++msgctxt "#421" ++msgid "Stream silence when idle" ++msgstr "" + + msgctxt "#422" + msgid "Delete album info" +@@ -12120,8 +12123,13 @@ msgctxt "#34110" + msgid "7.1" + msgstr "" + +-#empty strings from id 34111 to 34119 +-#34111-34119 reserved for future use ++#: system/settings/settings.xml ++msgctxt "#34111" ++msgid "When activated silence is output in order to keep alive receiver, otherwise sink is drained in idle state" ++msgstr "" + - CLog::Log(LOGDEBUG, "CActiveAE::OpenSink - %s Initialized:", m_sink->GetName()); - CLog::Log(LOGDEBUG, " Output Device : %s", m_deviceFriendlyName.c_str()); - CLog::Log(LOGDEBUG, " Sample Rate : %d", m_sinkFormat.m_sampleRate); --- -1.8.1.6 - - -From d3462ff7d97c254cc3f5378421e1507d4a19a29f Mon Sep 17 00:00:00 2001 -From: Rainer Hochecker -Date: Sun, 14 Jul 2013 17:48:23 +0200 -Subject: [PATCH 017/123] ActiveAE: always request float on sink if not raw - ---- - xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -index dc79da7..c1ec6e5 100644 ---- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -@@ -1087,6 +1087,7 @@ void CActiveAE::ApplySettingsToFormat(AEAudioFormat &format, AudioSettings &sett - } - else - { -+ format.m_dataFormat = AE_FMT_FLOAT; - if ((format.m_channelLayout.Count() > 2) || settings.stereoupmix) - { - switch (settings.channels) --- -1.8.1.6 - - -From 91ab13397e29e13fef220b3b8334f6062b73f63d Mon Sep 17 00:00:00 2001 -From: Rainer Hochecker -Date: Sun, 14 Jul 2013 18:34:47 +0200 -Subject: [PATCH 018/123] ActiveAE: set volume on sink if supported - ---- - xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 8 +++++++- - xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h | 1 + - xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp | 14 ++++++++++++++ - xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h | 3 +++ - 4 files changed, 25 insertions(+), 1 deletion(-) - -diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -index c1ec6e5..a692d2b 100644 ---- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp -@@ -146,6 +146,7 @@ bool CEngineStats::IsSuspended() - m_encoder = NULL; - m_audioCallback = NULL; - m_vizInitialized = false; -+ m_sinkHasVolume = false; ++#empty strings from id 34112 to 34119 ++#34112-34119 reserved for future use + + #: system/settings/settings.xml + msgctxt "#34120" +diff --git a/system/settings/settings.xml b/system/settings/settings.xml +index a468e97..f7d7f09 100644 +--- a/system/settings/settings.xml ++++ b/system/settings/settings.xml +@@ -2020,6 +2020,11 @@ + + + ++ ++ 2 ++ audiosupportsdrain ++ true ++ + + + +diff --git a/xbmc/cores/AudioEngine/AEFactory.cpp b/xbmc/cores/AudioEngine/AEFactory.cpp +index d5517f3..5b1d2d6 100644 +--- a/xbmc/cores/AudioEngine/AEFactory.cpp ++++ b/xbmc/cores/AudioEngine/AEFactory.cpp +@@ -261,6 +261,14 @@ bool CAEFactory::SupportsRaw() + return false; } - CActiveAE::~CActiveAE() -@@ -217,6 +218,8 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) - return; - case CActiveAEControlProtocol::VOLUME: - m_volume = *(float*)msg->data; -+ if (m_sinkHasVolume) -+ m_sink.m_controlPort.SendOutMessage(CSinkControlProtocol::VOLUME, &m_volume, sizeof(float)); - return; - case CActiveAEControlProtocol::MUTE: - m_muted = *(bool*)msg->data; -@@ -752,6 +755,7 @@ void CActiveAE::Configure() - m_settings.driver = driver; - initSink = true; - m_stats.Reset(m_sinkFormat.m_sampleRate); -+ m_sink.m_controlPort.SendOutMessage(CSinkControlProtocol::VOLUME, &m_volume, sizeof(float)); - } - - if (m_silenceBuffers) -@@ -1181,6 +1185,7 @@ void CActiveAE::InitSink() - { - m_sinkFormat = *data; - } -+ m_sinkHasVolume = m_sink.HasVolume(); - reply->Release(); - } - else -@@ -1461,7 +1466,8 @@ bool CActiveAE::RunStages() - { - // mix gui sounds - MixSounds(*(out->pkt)); -- Deamplify(*(out->pkt)); -+ if (!m_sinkHasVolume) -+ Deamplify(*(out->pkt)); - - // viz - { -diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h -index 30da1ac..40a2870 100644 ---- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h -+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h -@@ -314,6 +314,7 @@ class CActiveAE : public IAE, private CThread - - float m_volume; - bool m_muted; -+ bool m_sinkHasVolume; - - // viz - IAudioCallback *m_audioCallback; -diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp -index 0e003bd..2088cb6 100644 ---- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp -+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp -@@ -39,6 +39,7 @@ - m_sink = NULL; - m_stats = NULL; - m_convertBuffer = NULL; -+ m_volume = 0.0; - } - - void CActiveAESink::Start() -@@ -88,6 +89,13 @@ bool CActiveAESink::IsCompatible(const AEAudioFormat format, const std::string & - return m_sink->IsCompatible(format, device); - } - -+bool CActiveAESink::HasVolume() ++bool CAEFactory::SupportsDrain() +{ -+ if (!m_sink) -+ return false; -+ return m_sink->HasVolume(); ++ if(AE) ++ return AE->SupportsDrain(); ++ ++ return false; +} + - enum SINK_STATES + void CAEFactory::SetMute(const bool enabled) { - S_TOP = 0, // 0 -@@ -232,6 +240,10 @@ void CActiveAESink::StateMachine(int signal, Protocol *port, Message *msg) - m_extTimeout = 0; - } - return; -+ case CSinkControlProtocol::VOLUME: -+ m_volume = *(float*)msg->data; -+ m_sink->SetVolume(m_volume); -+ return; - default: - break; - } -@@ -648,6 +660,8 @@ void CActiveAESink::OpenSink() - return; - } + if(AE) +diff --git a/xbmc/cores/AudioEngine/AEFactory.h b/xbmc/cores/AudioEngine/AEFactory.h +index 3059001..e427519 100644 +--- a/xbmc/cores/AudioEngine/AEFactory.h ++++ b/xbmc/cores/AudioEngine/AEFactory.h +@@ -54,6 +54,7 @@ class CAEFactory + static void VerifyOutputDevice(std::string &device, bool passthrough); + static std::string GetDefaultDevice(bool passthrough); + static bool SupportsRaw(); ++ static bool SupportsDrain(); + static void SetMute(const bool enabled); + static bool IsMuted(); + static float GetVolume(); +diff --git a/xbmc/cores/AudioEngine/Interfaces/AE.h b/xbmc/cores/AudioEngine/Interfaces/AE.h +index 5741cd8..52c4efc 100644 +--- a/xbmc/cores/AudioEngine/Interfaces/AE.h ++++ b/xbmc/cores/AudioEngine/Interfaces/AE.h +@@ -185,6 +185,12 @@ class IAE + */ + virtual bool SupportsRaw() { return false; } -+ m_sink->SetVolume(m_volume); ++ /** ++ * Returns true if the AudioEngine supports drain mode which is not streaming silence when idle ++ * @returns true if the AudioEngine is capable of drain mode ++ */ ++ virtual bool SupportsDrain() { return false; } + - #ifdef WORDS_BIGENDIAN - if (m_sinkFormat.m_dataFormat == AE_FMT_S16BE) - m_sinkFormat.m_dataFormat = AE_FMT_S16NE; -diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h -index ae19f38..d36555d 100644 ---- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h -+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h -@@ -49,6 +49,7 @@ class CSinkControlProtocol : public Protocol - CONFIGURE, - UNCONFIGURE, - SILENCEMODE, -+ VOLUME, - TIMEOUT, - }; - enum InSignal -@@ -85,6 +86,7 @@ class CActiveAESink : private CThread - void Start(); - void Dispose(); - bool IsCompatible(const AEAudioFormat format, const std::string &device); -+ bool HasVolume(); - CSinkControlProtocol m_controlPort; - CSinkDataProtocol m_dataPort; + virtual void RegisterAudioCallback(IAudioCallback* pCallback) {} -@@ -128,6 +130,7 @@ class CActiveAESink : private CThread - IAESink *m_sink; - AEAudioFormat m_sinkFormat, m_requestedFormat; - CEngineStats *m_stats; -+ float m_volume; - }; + virtual void UnregisterAudioCallback() {} +diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp +index d8f6889..37174ac 100644 +--- a/xbmc/settings/Settings.cpp ++++ b/xbmc/settings/Settings.cpp +@@ -760,6 +760,9 @@ void CSettings::InitializeConditions() + if (g_application.IsStandAlone()) + m_settingsManager->AddCondition("isstandalone"); - } ++ if (CAEFactory::SupportsDrain()) ++ m_settingsManager->AddCondition("audiosupportsdrain"); ++ + // add more complex conditions + m_settingsManager->AddCondition("addonhassettings", AddonHasSettings); + m_settingsManager->AddCondition("checkmasterlock", CheckMasterLock); +@@ -852,6 +855,7 @@ void CSettings::InitializeISettingCallbacks() + settingSet.insert("audiooutput.multichannellpcm"); + settingSet.insert("audiooutput.audiodevice"); + settingSet.insert("audiooutput.passthroughdevice"); ++ settingSet.insert("audiooutput.streamsilence"); + settingSet.insert("lookandfeel.skin"); + settingSet.insert("lookandfeel.skinsettings"); + settingSet.insert("lookandfeel.font"); -- 1.8.1.6 -From 7b58c9ca0373097b89339304035a4a5edb05c1fe Mon Sep 17 00:00:00 2001 -From: fritsch -Date: Sun, 14 Jul 2013 15:42:25 +0200 -Subject: [PATCH 019/123] ActiveAE: Remove special case - not needed anymore - after: 37b8fb75af29c071a47d1557fe7dfff0b0812dc4 +From 24e126184ae12557d73b044357e8d41d96e2c76f Mon Sep 17 00:00:00 2001 +From: unknown +Date: Tue, 16 Jul 2013 17:06:51 +0200 +Subject: [PATCH 018/136] ActiveAE: adjust to gui setting streamsilence --- - xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp | 11 ++--------- - 1 file changed, 2 insertions(+), 9 deletions(-) + xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 13 ++++++++++++- + xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h | 1 + + xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp | 3 +-- + 3 files changed, 14 insertions(+), 3 deletions(-) +diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +index 2defd1d..935f994 100644 +--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp ++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +@@ -384,6 +384,11 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) + switch (signal) + { + case CActiveAEControlProtocol::RECONFIGURE: ++ if (m_streams.empty()) ++ { ++ bool silence = false; ++ m_sink.m_controlPort.SendOutMessage(CSinkControlProtocol::SILENCEMODE, &silence, sizeof(bool)); ++ } + LoadSettings(); + if (!NeedReconfigureBuffers() && !NeedReconfigureSink()) + return; +@@ -1815,7 +1820,8 @@ void CActiveAE::OnSettingsChange(const std::string& setting) + setting == "audiooutput.dtshdpassthrough" || + setting == "audiooutput.channels" || + setting == "audiooutput.multichannellpcm" || +- setting == "audiooutput.stereoupmix") ++ setting == "audiooutput.stereoupmix" || ++ setting == "audiooutput.streamsilence") + { + m_controlPort.SendOutMessage(CActiveAEControlProtocol::RECONFIGURE); + } +@@ -1826,6 +1832,11 @@ bool CActiveAE::SupportsRaw() + return true; + } + ++bool CActiveAE::SupportsDrain() ++{ ++ return true; ++} ++ + void CActiveAE::Shutdown() + { + Dispose(); +diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h +index d5c5d97..9fc1b67 100644 +--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h ++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h +@@ -213,6 +213,7 @@ class CActiveAE : public IAE, private CThread + virtual void EnumerateOutputDevices(AEDeviceList &devices, bool passthrough); + virtual std::string GetDefaultDevice(bool passthrough); + virtual bool SupportsRaw(); ++ virtual bool SupportsDrain(); + + virtual void RegisterAudioCallback(IAudioCallback* pCallback); + virtual void UnregisterAudioCallback(); diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp -index 2088cb6..7812c02 100644 +index c22bb88..9af241d 100644 --- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp +++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp -@@ -826,14 +826,7 @@ void CActiveAESink::GenerateNoise() - noise[i] = (float) sqrt( -2.0f * log( R1 )) * cos( 2.0f * PI * R2 ) * 0.00001; - } +@@ -26,7 +26,6 @@ + #include "ActiveAE.h" -- if (m_sinkFormat.m_dataFormat != AE_FMT_FLOAT) -- { -- CAEConvert::AEConvertFrFn convertFn = CAEConvert::FrFloat(m_sinkFormat.m_dataFormat); -- convertFn(noise, nb_floats, m_sampleOfNoise.pkt->data[0]); -- } -- else -- { -- memcpy(m_sampleOfNoise.pkt->data[0], noise, nb_floats*sizeof(float)); -- } -+ CAEConvert::AEConvertFrFn convertFn = CAEConvert::FrFloat(m_sinkFormat.m_dataFormat); -+ convertFn(noise, nb_floats, m_sampleOfNoise.pkt->data[0]); - delete [] noise; - } + #include "settings/Settings.h" +-#include "settings/AdvancedSettings.h" + + using namespace ActiveAE; + +@@ -229,7 +228,7 @@ void CActiveAESink::StateMachine(int signal, Protocol *port, Message *msg) + { + case CSinkControlProtocol::SILENCEMODE: + m_extSilence = *(bool*)msg->data; +- if (g_advancedSettings.m_streamSilence) ++ if (CSettings::Get().GetBool("audiooutput.streamsilence")) + m_extSilence = true; + if (m_extSilence) + { -- 1.8.1.6 -From e7a30953e4fab54b252fb66f9d48720bf31abe1e Mon Sep 17 00:00:00 2001 +From d186405dca4ab5c17f5cf5e30aca8ca0c4ac9b9a Mon Sep 17 00:00:00 2001 +From: wsoltys +Date: Tue, 16 Jul 2013 21:17:38 +0200 +Subject: [PATCH 019/136] [WIN32][WASAPI]: made wasapi sink accept default as + device string. set "wasapi:default" as default gui string (could be smarter + when handled via the xml system. possible?) + +--- + xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp | 61 +++++++++++++++++---------- + xbmc/settings/Settings.cpp | 3 ++ + 2 files changed, 41 insertions(+), 23 deletions(-) + +diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp +index 8a3d7ce..8995a0c 100644 +--- a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp ++++ b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp +@@ -34,6 +34,7 @@ + #include "../Utils/AEDeviceInfo.h" + #include + #include ++#include "utils/StringUtils.h" + + #pragma comment(lib, "Avrt.lib") + +@@ -206,6 +207,7 @@ bool CAESinkWASAPI::Initialize(AEAudioFormat &format, std::string &device) + return false; + + m_device = device; ++ bool bdefault = false; + + /* Save requested format */ + /* Clear returned format */ +@@ -227,41 +229,47 @@ bool CAESinkWASAPI::Initialize(AEAudioFormat &format, std::string &device) + hr = pEnumDevices->GetCount(&uiCount); + EXIT_ON_FAILURE(hr, __FUNCTION__": Retrieval of audio endpoint count failed.") + +- for (UINT i = 0; i < uiCount; i++) ++ if(StringUtils::EndsWith(device, std::string("default"))) ++ bdefault = true; ++ ++ if(!bdefault) + { +- IPropertyStore *pProperty = NULL; +- PROPVARIANT varName; ++ for (UINT i = 0; i < uiCount; i++) ++ { ++ IPropertyStore *pProperty = NULL; ++ PROPVARIANT varName; + +- hr = pEnumDevices->Item(i, &m_pDevice); +- EXIT_ON_FAILURE(hr, __FUNCTION__": Retrieval of WASAPI endpoint failed.") ++ hr = pEnumDevices->Item(i, &m_pDevice); ++ EXIT_ON_FAILURE(hr, __FUNCTION__": Retrieval of WASAPI endpoint failed.") + +- hr = m_pDevice->OpenPropertyStore(STGM_READ, &pProperty); +- EXIT_ON_FAILURE(hr, __FUNCTION__": Retrieval of WASAPI endpoint properties failed.") ++ hr = m_pDevice->OpenPropertyStore(STGM_READ, &pProperty); ++ EXIT_ON_FAILURE(hr, __FUNCTION__": Retrieval of WASAPI endpoint properties failed.") + +- hr = pProperty->GetValue(PKEY_AudioEndpoint_GUID, &varName); +- if (FAILED(hr)) +- { +- CLog::Log(LOGERROR, __FUNCTION__": Retrieval of WASAPI endpoint GUID failed."); +- SAFE_RELEASE(pProperty); +- goto failed; +- } ++ hr = pProperty->GetValue(PKEY_AudioEndpoint_GUID, &varName); ++ if (FAILED(hr)) ++ { ++ CLog::Log(LOGERROR, __FUNCTION__": Retrieval of WASAPI endpoint GUID failed."); ++ SAFE_RELEASE(pProperty); ++ goto failed; ++ } + +- std::string strDevName = localWideToUtf(varName.pwszVal); ++ std::string strDevName = localWideToUtf(varName.pwszVal); + +- if (device == strDevName) +- i = uiCount; +- else +- SAFE_RELEASE(m_pDevice); ++ if (device == strDevName) ++ i = uiCount; ++ else ++ SAFE_RELEASE(m_pDevice); + +- PropVariantClear(&varName); +- SAFE_RELEASE(pProperty); ++ PropVariantClear(&varName); ++ SAFE_RELEASE(pProperty); ++ } + } +- + SAFE_RELEASE(pEnumDevices); + + if (!m_pDevice) + { +- CLog::Log(LOGINFO, __FUNCTION__": Could not locate the device named \"%s\" in the list of WASAPI endpoint devices. Trying the default device...", device.c_str()); ++ if(!bdefault) ++ CLog::Log(LOGINFO, __FUNCTION__": Could not locate the device named \"%s\" in the list of WASAPI endpoint devices. Trying the default device...", device.c_str()); + hr = pEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &m_pDevice); + EXIT_ON_FAILURE(hr, __FUNCTION__": Could not retrieve the default WASAPI audio endpoint.") + +@@ -583,6 +591,13 @@ void CAESinkWASAPI::EnumerateDevicesEx(AEDeviceInfoList &deviceInfoList, bool fo + WAVEFORMATEXTENSIBLE wfxex = {0}; + HRESULT hr; + ++ // add default device entry ++ deviceInfo.m_deviceName = std::string("default"); ++ deviceInfo.m_displayName = std::string("default"); ++ ++ /* Store the device info */ ++ deviceInfoList.push_back(deviceInfo); ++ + hr = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&pEnumerator); + EXIT_ON_FAILURE(hr, __FUNCTION__": Could not allocate WASAPI device enumerator. CoCreateInstance error code: %li", hr) + +diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp +index 37174ac..5df9d09 100644 +--- a/xbmc/settings/Settings.cpp ++++ b/xbmc/settings/Settings.cpp +@@ -642,6 +642,9 @@ void CSettings::InitializeDefaults() + ((CSettingString*)m_settingsManager->GetSetting("audiooutput.audiodevice"))->SetDefault(defaultAudioDeviceName); + ((CSettingString*)m_settingsManager->GetSetting("audiooutput.passthroughdevice"))->SetDefault(defaultAudioDeviceName); + #endif ++#elif defined(TARGET_WINDOWS) ++ ((CSettingString*)m_settingsManager->GetSetting("audiooutput.audiodevice"))->SetDefault(std::string("WASAPI:default")); ++ ((CSettingString*)m_settingsManager->GetSetting("audiooutput.passthroughdevice"))->SetDefault(std::string("WASAPI:default")); + #else + ((CSettingString*)m_settingsManager->GetSetting("audiooutput.audiodevice"))->SetDefault(CAEFactory::GetDefaultDevice(false)); + ((CSettingString*)m_settingsManager->GetSetting("audiooutput.passthroughdevice"))->SetDefault(CAEFactory::GetDefaultDevice(true)); +-- +1.8.1.6 + + +From cbedd31759624e0b4f79b1d3d07fa525f1266cf0 Mon Sep 17 00:00:00 2001 +From: wsoltys +Date: Tue, 16 Jul 2013 21:41:50 +0200 +Subject: [PATCH 020/136] [WIN32] changed: use the new settings system instead + of hardcoded values. + +--- + system/settings/win32.xml | 28 ++++++++++++++++++++++++++++ + xbmc/settings/Settings.cpp | 5 +---- + 2 files changed, 29 insertions(+), 4 deletions(-) + +diff --git a/system/settings/win32.xml b/system/settings/win32.xml +index 76bc2bf..1e0a97b 100644 +--- a/system/settings/win32.xml ++++ b/system/settings/win32.xml +@@ -39,5 +39,33 @@ + + + ++ ++ ++ ++ 2 ++ WASAPI:default ++ ++ audiodevices ++ ++ ++ ++ ++ 2 ++ WASAPI:default ++ ++ audiodevicespassthrough ++ ++ ++ ++ ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ ++ + + +diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp +index 5df9d09..436c34a 100644 +--- a/xbmc/settings/Settings.cpp ++++ b/xbmc/settings/Settings.cpp +@@ -642,10 +642,7 @@ void CSettings::InitializeDefaults() + ((CSettingString*)m_settingsManager->GetSetting("audiooutput.audiodevice"))->SetDefault(defaultAudioDeviceName); + ((CSettingString*)m_settingsManager->GetSetting("audiooutput.passthroughdevice"))->SetDefault(defaultAudioDeviceName); + #endif +-#elif defined(TARGET_WINDOWS) +- ((CSettingString*)m_settingsManager->GetSetting("audiooutput.audiodevice"))->SetDefault(std::string("WASAPI:default")); +- ((CSettingString*)m_settingsManager->GetSetting("audiooutput.passthroughdevice"))->SetDefault(std::string("WASAPI:default")); +-#else ++#elif !defined(TARGET_WINDOWS) + ((CSettingString*)m_settingsManager->GetSetting("audiooutput.audiodevice"))->SetDefault(CAEFactory::GetDefaultDevice(false)); + ((CSettingString*)m_settingsManager->GetSetting("audiooutput.passthroughdevice"))->SetDefault(CAEFactory::GetDefaultDevice(true)); + #endif +-- +1.8.1.6 + + +From 5110d1fcdf43c9be249e6e4d8bd4c322191c86ef Mon Sep 17 00:00:00 2001 +From: unknown +Date: Thu, 18 Jul 2013 08:35:29 +0200 +Subject: [PATCH 021/136] AE: WASAPI, DirectSound - allow engine to provide + less samples than buffer size + +--- + xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp | 3 +- + xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp | 36 +++++++++++++++++++--- + xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h | 3 ++ + 3 files changed, 37 insertions(+), 5 deletions(-) + +diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp +index 797d7f2..81f2c4c 100644 +--- a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp ++++ b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp +@@ -403,7 +403,8 @@ unsigned int CAESinkDirectSound::AddPackets(uint8_t *data, unsigned int frames, + DWORD size = 0, sizeWrap = 0; + if (m_BufferOffset >= m_dwBufferLen) // Wrap-around manually + m_BufferOffset = 0; +- HRESULT res = m_pBuffer->Lock(m_BufferOffset, m_dwChunkSize, &start, &size, &startWrap, &sizeWrap, 0); ++ DWORD dwWriteBytes = std::min((int)m_dwChunkSize, (int)len); ++ HRESULT res = m_pBuffer->Lock(m_BufferOffset, dwWriteBytes, &start, &size, &startWrap, &sizeWrap, 0); + if (DS_OK != res) + { + CLog::Log(LOGERROR, __FUNCTION__ ": Unable to lock buffer at offset %u. HRESULT: 0x%08x", m_BufferOffset, res); +diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp +index 8995a0c..78db727 100644 +--- a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp ++++ b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp +@@ -191,7 +191,9 @@ CStdStringA localWideToUtf(LPCWSTR wstr) + m_isDirty(false), + m_uiBufferLen(0), + m_avgTimeWaiting(50), +- m_sinkLatency(0.0) ++ m_sinkLatency(0.0), ++ m_pBuffer(NULL), ++ m_bufferPtr(0) + { + m_channelLayout.Reset(); + } +@@ -315,6 +317,14 @@ bool CAESinkWASAPI::Initialize(AEAudioFormat &format, std::string &device) + m_initialized = true; + m_isDirty = false; + ++ // allow feeding less samples than buffer size ++ // if the device is opened exclusive and event driven, provided samples must match buffersize ++ // ActiveAE tries to align provided samples with buffer size but cannot guarantee (e.g. transcoding) ++ // this can be avoided by dropping the event mode which has not much benefit; SoftAE polls anyway ++ delete [] m_pBuffer; ++ m_pBuffer = new uint8_t[format.m_frames * format.m_frameSize]; ++ m_bufferPtr = 0; ++ + return true; + + failed: +@@ -359,6 +369,9 @@ void CAESinkWASAPI::Deinitialize() + SAFE_RELEASE(m_pDevice); + + m_initialized = false; ++ ++ delete [] m_pBuffer; ++ m_bufferPtr = 0; + } + + bool CAESinkWASAPI::IsCompatible(const AEAudioFormat format, const std::string &device) +@@ -446,7 +459,15 @@ unsigned int CAESinkWASAPI::AddPackets(uint8_t *data, unsigned int frames, bool + LARGE_INTEGER timerFreq; + #endif + +- unsigned int NumFramesRequested = frames; ++ unsigned int NumFramesRequested = m_format.m_frames; ++ unsigned int FramesToCopy = std::min(m_format.m_frames - m_bufferPtr, frames); ++ if (m_bufferPtr != 0 || frames != m_format.m_frames) ++ { ++ memcpy(m_pBuffer+m_bufferPtr*m_format.m_frameSize, data, FramesToCopy*m_format.m_frameSize); ++ m_bufferPtr += FramesToCopy; ++ if (frames != m_format.m_frames) ++ return frames; ++ } + + if (!m_running) //first time called, pre-fill buffer then start audio client + { +@@ -547,7 +568,8 @@ unsigned int CAESinkWASAPI::AddPackets(uint8_t *data, unsigned int frames, bool + #endif + return INT_MAX; + } +- memcpy(buf, data, NumFramesRequested * m_format.m_frameSize); //fill buffer ++ memcpy(buf, m_bufferPtr == 0 ? data : m_pBuffer, NumFramesRequested * m_format.m_frameSize); //fill buffer ++ m_bufferPtr = 0; + hr = m_pRenderClient->ReleaseBuffer(NumFramesRequested, flags); //pass back to audio driver + if (FAILED(hr)) + { +@@ -557,7 +579,13 @@ unsigned int CAESinkWASAPI::AddPackets(uint8_t *data, unsigned int frames, bool + return INT_MAX; + } + +- return NumFramesRequested; ++ if (FramesToCopy != frames) ++ { ++ m_bufferPtr = frames-FramesToCopy; ++ memcpy(m_pBuffer, data+FramesToCopy*m_format.m_frameSize, m_bufferPtr*m_format.m_frameSize); ++ } ++ ++ return frames; + } + + bool CAESinkWASAPI::SoftSuspend() +diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h +index c4a5a51..37cfd68 100644 +--- a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h ++++ b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h +@@ -78,4 +78,7 @@ class CAESinkWASAPI : public IAESink + unsigned int m_uiBufferLen; /* wasapi endpoint buffer size, in frames */ + double m_avgTimeWaiting; /* time between next buffer of data from SoftAE and driver call for data */ + double m_sinkLatency; /* time in seconds of total duration of the two WASAPI buffers */ ++ ++ uint8_t *m_pBuffer; ++ int m_bufferPtr; + }; +-- +1.8.1.6 + + +From 2c7cac05924a2de5dd338e4751c6981a0172190b Mon Sep 17 00:00:00 2001 +From: unknown +Date: Fri, 19 Jul 2013 15:08:33 +0200 +Subject: [PATCH 022/136] AE: DirectSound - implement drain method + +--- + xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp | 25 ++++++++++++++++------ + xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.h | 1 + + 2 files changed, 20 insertions(+), 6 deletions(-) + +diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp +index 81f2c4c..5c5e015 100644 +--- a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp ++++ b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp +@@ -442,6 +442,23 @@ void CAESinkDirectSound::Stop() + m_pBuffer->Stop(); + } + ++void CAESinkDirectSound::Drain() ++{ ++ if (!m_initialized || m_isDirtyDS) ++ return; ++ ++ m_pBuffer->Stop(); ++ HRESULT res = m_pBuffer->SetCurrentPosition(0); ++ if (DS_OK != res) ++ { ++ CLog::Log(LOGERROR,__FUNCTION__ ": SetCurrentPosition failed. Unable to determine buffer status. HRESULT = 0x%08x", res); ++ m_isDirtyDS = true; ++ return; ++ } ++ m_BufferOffset = 0; ++ UpdateCacheStatus(); ++} ++ + double CAESinkDirectSound::GetDelay() + { + if (!m_initialized) +@@ -683,10 +700,6 @@ void CAESinkDirectSound::CheckPlayStatus() + bool CAESinkDirectSound::UpdateCacheStatus() + { + CSingleLock lock (m_runLock); +- // TODO: Check to see if we may have cycled around since last time +- unsigned int time = XbmcThreads::SystemClockMillis(); +- if (time == m_LastCacheCheck) +- return true; // Don't recalc more frequently than once/ms (that is our max resolution anyway) + + DWORD playCursor = 0, writeCursor = 0; + HRESULT res = m_pBuffer->GetCurrentPosition(&playCursor, &writeCursor); // Get the current playback and safe write positions +@@ -697,7 +710,6 @@ bool CAESinkDirectSound::UpdateCacheStatus() + return false; + } + +- m_LastCacheCheck = time; + // Check the state of the ring buffer (P->O->W == underrun) + // These are the logical situations that can occur + // O: CurrentOffset W: WriteCursor P: PlayCursor +@@ -729,7 +741,8 @@ bool CAESinkDirectSound::UpdateCacheStatus() + return false; + } + } +- else m_BufferTimeouts = 0; ++ else ++ m_BufferTimeouts = 0; + + // Calculate available space in the ring buffer + if (playCursor == m_BufferOffset && m_BufferOffset == writeCursor) // Playback is stopped and we are all at the same place +diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.h b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.h +index 8ff098d..a6f2912 100644 +--- a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.h ++++ b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.h +@@ -39,6 +39,7 @@ class CAESinkDirectSound : public IAESink + virtual bool IsCompatible(const AEAudioFormat format, const std::string &device); + + virtual void Stop (); ++ virtual void Drain (); + virtual double GetDelay (); + virtual double GetCacheTime (); + virtual double GetCacheTotal (); +-- +1.8.1.6 + + +From 2670e1379f99dc5952bbe073eb9379640747a49d Mon Sep 17 00:00:00 2001 +From: wsoltys +Date: Thu, 18 Jul 2013 18:13:02 +0200 +Subject: [PATCH 023/136] [WIN32][WASAPI] created a drain method. + +--- + xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp | 27 ++++++++++++++++++++++++++- + xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h | 2 ++ + 2 files changed, 28 insertions(+), 1 deletion(-) + +diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp +index 78db727..8c8bc1f 100644 +--- a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp ++++ b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp +@@ -193,7 +193,8 @@ CStdStringA localWideToUtf(LPCWSTR wstr) + m_avgTimeWaiting(50), + m_sinkLatency(0.0), + m_pBuffer(NULL), +- m_bufferPtr(0) ++ m_bufferPtr(0), ++ m_hnsRequestedDuration(0) + { + m_channelLayout.Reset(); + } +@@ -1161,6 +1162,8 @@ bool CAESinkWASAPI::InitializeExclusive(AEAudioFormat &format) + hr = m_pAudioClient->Initialize(AUDCLNT_SHAREMODE_EXCLUSIVE, AUDCLNT_STREAMFLAGS_EVENTCALLBACK | AUDCLNT_STREAMFLAGS_NOPERSIST, + audioSinkBufferDurationMsec, audioSinkBufferDurationMsec, &wfxex.Format, NULL); + ++ m_hnsRequestedDuration = audioSinkBufferDurationMsec; ++ + if (hr == AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED) + { + /* WASAPI requires aligned buffer */ +@@ -1290,3 +1293,25 @@ const char *CAESinkWASAPI::WASAPIErrToStr(HRESULT err) + } + return NULL; + } ++ ++void CAESinkWASAPI::Drain() ++{ ++ if(!m_pAudioClient) ++ return; ++ ++ Sleep( (DWORD)(m_hnsRequestedDuration / 10000)); ++ ++ if (m_running) ++ { ++ try ++ { ++ m_pAudioClient->Stop(); //stop the audio output ++ m_pAudioClient->Reset(); //flush buffer and reset audio clock stream position ++ } ++ catch (...) ++ { ++ CLog::Log(LOGDEBUG, __FUNCTION__, "Invalidated AudioClient - Releasing"); ++ } ++ } ++ m_running = false; ++} +diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h +index 37cfd68..39d62d5 100644 +--- a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h ++++ b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.h +@@ -45,6 +45,7 @@ class CAESinkWASAPI : public IAESink + virtual unsigned int AddPackets (uint8_t *data, unsigned int frames, bool hasAudio, bool blocking = false); + virtual bool SoftSuspend (); + virtual bool SoftResume (); ++ virtual void Drain (); + static void EnumerateDevicesEx (AEDeviceInfoList &deviceInfoList, bool force = false); + private: + bool InitializeExclusive(AEAudioFormat &format); +@@ -81,4 +82,5 @@ class CAESinkWASAPI : public IAESink + + uint8_t *m_pBuffer; + int m_bufferPtr; ++ REFERENCE_TIME m_hnsRequestedDuration; + }; +-- +1.8.1.6 + + +From 191da169f9bb67d2ecd77a6655115772b53b357b Mon Sep 17 00:00:00 2001 +From: wsoltys +Date: Thu, 18 Jul 2013 20:35:08 +0200 +Subject: [PATCH 024/136] [WIN32][DirectSound] added fake entry default and + make sink understand it. + +--- + xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp | 50 ++++++++++++++-------- + 1 file changed, 31 insertions(+), 19 deletions(-) + +diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp +index 5c5e015..da98e1f 100644 +--- a/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp ++++ b/xbmc/cores/AudioEngine/Sinks/AESinkDirectSound.cpp +@@ -35,6 +35,7 @@ + #include + #include + #include "cores/AudioEngine/Utils/AEUtil.h" ++#include "utils/StringUtils.h" + #pragma comment(lib, "Rpcrt4.lib") + + extern HWND g_hWnd; +@@ -143,10 +144,14 @@ bool CAESinkDirectSound::Initialize(AEAudioFormat &format, std::string &device) + LPGUID deviceGUID = NULL; + RPC_CSTR wszUuid = NULL; + HRESULT hr = E_FAIL; ++ std::string strDeviceGUID = device; + std::list DSDeviceList; + std::string deviceFriendlyName; + DirectSoundEnumerate(DSEnumCallback, &DSDeviceList); + ++ if(StringUtils::EndsWith(device, std::string("default"))) ++ strDeviceGUID = GetDefaultDevice(); ++ + for (std::list::iterator itt = DSDeviceList.begin(); itt != DSDeviceList.end(); ++itt) + { + if ((*itt).lpGuid) +@@ -154,23 +159,27 @@ bool CAESinkDirectSound::Initialize(AEAudioFormat &format, std::string &device) + hr = (UuidToString((*itt).lpGuid, &wszUuid)); + std::string sztmp = (char*)wszUuid; + std::string szGUID = "{" + std::string(sztmp.begin(), sztmp.end()) + "}"; +- if (strcasecmp(szGUID.c_str(), device.c_str()) == 0) ++ if (strcasecmp(szGUID.c_str(), strDeviceGUID.c_str()) == 0) + { + deviceGUID = (*itt).lpGuid; + deviceFriendlyName = (*itt).name.c_str(); + break; + } + } +- if (hr == RPC_S_OK) RpcStringFree(&wszUuid); ++ if (hr == RPC_S_OK) RpcStringFree(&wszUuid); + } + + hr = DirectSoundCreate(deviceGUID, &m_pDSound, NULL); + + if (FAILED(hr)) + { +- CLog::Log(LOGERROR, __FUNCTION__": Failed to create the DirectSound device."); +- CLog::Log(LOGERROR, __FUNCTION__": DSErr: %s", dserr2str(hr)); +- return false; ++ CLog::Log(LOGERROR, __FUNCTION__": Failed to create the DirectSound device %s with error %s, trying the default device.", deviceFriendlyName.c_str(), dserr2str(hr)); ++ hr = DirectSoundCreate(NULL, &m_pDSound, NULL); ++ if (FAILED(hr)) ++ { ++ CLog::Log(LOGERROR, __FUNCTION__": Failed to create the default DirectSound device with error %s.", dserr2str(hr)); ++ return false; ++ } + } + + HWND tmp_hWnd; +@@ -501,6 +510,8 @@ void CAESinkDirectSound::EnumerateDevicesEx(AEDeviceInfoList &deviceInfoList, bo + + HRESULT hr; + ++ std::string strDD = GetDefaultDevice(); ++ + /* See if we are on Windows XP */ + if (!g_sysinfo.IsWindowsVersionAtLeast(CSysInfo::WindowsVersionVista)) + { +@@ -535,6 +546,15 @@ void CAESinkDirectSound::EnumerateDevicesEx(AEDeviceInfoList &deviceInfoList, bo + deviceInfo.m_sampleRates.push_back((DWORD) 96000); + + deviceInfoList.push_back(deviceInfo); ++ ++ // add the default device with m_deviceName = default ++ if(strDD == deviceInfo.m_deviceName) ++ { ++ deviceInfo.m_deviceName = std::string("default"); ++ deviceInfo.m_displayName = std::string("default"); ++ deviceInfo.m_displayNameExtra = std::string(""); ++ deviceInfoList.push_back(deviceInfo); ++ } + } + + RpcStringFree(&cszGUID); +@@ -650,22 +670,14 @@ void CAESinkDirectSound::EnumerateDevicesEx(AEDeviceInfoList &deviceInfoList, bo + deviceInfo.m_deviceType = aeDeviceType; + + deviceInfoList.push_back(deviceInfo); +- } + +- // since AE takes the first device in deviceInfoList as default audio device we need +- // to sort it in order to use the real default device +- if(deviceInfoList.size() > 1) +- { +- std::string strDD = GetDefaultDevice(); +- for (AEDeviceInfoList::iterator itt = deviceInfoList.begin(); itt != deviceInfoList.end(); ++itt) ++ // add the default device with m_deviceName = default ++ if(strDD == strDevName) + { +- CAEDeviceInfo devInfo = *itt; +- if(devInfo.m_deviceName == strDD) +- { +- deviceInfoList.erase(itt); +- deviceInfoList.insert(deviceInfoList.begin(), devInfo); +- break; +- } ++ deviceInfo.m_deviceName = std::string("default"); ++ deviceInfo.m_displayName = std::string("default"); ++ deviceInfo.m_displayNameExtra = std::string(""); ++ deviceInfoList.push_back(deviceInfo); + } + } + +-- +1.8.1.6 + + +From ff5caa443be03aefb654f7adb81aadb1a43b9ec4 Mon Sep 17 00:00:00 2001 +From: wsoltys +Date: Tue, 23 Jul 2013 19:03:43 +0200 +Subject: [PATCH 025/136] [WIN32][WASAPI] cosmetics: fill the default device + with proper values. + +--- + xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp | 40 ++++++++++++++++++++------- + 1 file changed, 30 insertions(+), 10 deletions(-) + +diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp +index 8c8bc1f..38065cd 100644 +--- a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp ++++ b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp +@@ -614,24 +614,32 @@ void CAESinkWASAPI::EnumerateDevicesEx(AEDeviceInfoList &deviceInfoList, bool fo + { + IMMDeviceEnumerator* pEnumerator = NULL; + IMMDeviceCollection* pEnumDevices = NULL; ++ IMMDevice* pDefaultDevice = NULL; + CAEDeviceInfo deviceInfo; + CAEChannelInfo deviceChannels; ++ LPWSTR pwszID = NULL; ++ std::wstring wstrDDID; + + WAVEFORMATEXTENSIBLE wfxex = {0}; + HRESULT hr; + +- // add default device entry +- deviceInfo.m_deviceName = std::string("default"); +- deviceInfo.m_displayName = std::string("default"); +- +- /* Store the device info */ +- deviceInfoList.push_back(deviceInfo); +- + hr = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&pEnumerator); + EXIT_ON_FAILURE(hr, __FUNCTION__": Could not allocate WASAPI device enumerator. CoCreateInstance error code: %li", hr) + + UINT uiCount = 0; + ++ // get the default audio endpoint ++ if(pEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &pDefaultDevice) == S_OK) ++ { ++ if(pDefaultDevice->GetId(&pwszID) == S_OK) ++ { ++ wstrDDID = pwszID; ++ CoTaskMemFree(pwszID); ++ } ++ SAFE_RELEASE(pDefaultDevice); ++ } ++ ++ // enumerate over all audio endpoints + hr = pEnumerator->EnumAudioEndpoints(eRender, DEVICE_STATE_ACTIVE, &pEnumDevices); + EXIT_ON_FAILURE(hr, __FUNCTION__": Retrieval of audio endpoint enumeration failed.") + +@@ -903,9 +911,6 @@ void CAESinkWASAPI::EnumerateDevicesEx(AEDeviceInfoList &deviceInfoList, bool fo + CLog::Log(LOGDEBUG, __FUNCTION__": Failed to activate device for passthrough capability testing."); + } + +- SAFE_RELEASE(pDevice); +- SAFE_RELEASE(pProperty); +- + deviceInfo.m_deviceName = strDevName; + deviceInfo.m_displayName = strWinDevType.append(strFriendlyName); + deviceInfo.m_displayNameExtra = std::string("WASAPI: ").append(strFriendlyName); +@@ -914,6 +919,21 @@ void CAESinkWASAPI::EnumerateDevicesEx(AEDeviceInfoList &deviceInfoList, bool fo + + /* Store the device info */ + deviceInfoList.push_back(deviceInfo); ++ ++ if(pDevice->GetId(&pwszID) == S_OK) ++ { ++ if(wstrDDID.compare(pwszID) == 0) ++ { ++ deviceInfo.m_deviceName = std::string("default"); ++ deviceInfo.m_displayName = std::string("default"); ++ deviceInfo.m_displayNameExtra = std::string(""); ++ deviceInfoList.push_back(deviceInfo); ++ } ++ CoTaskMemFree(pwszID); ++ } ++ ++ SAFE_RELEASE(pDevice); ++ SAFE_RELEASE(pProperty); + } + return; + +-- +1.8.1.6 + + +From 46ccc94ce275c574a6eb5bc5f301b79b14fd8e14 Mon Sep 17 00:00:00 2001 +From: Rainer Hochecker +Date: Sat, 27 Jul 2013 08:44:13 +0200 +Subject: [PATCH 026/136] AE: add quality setting for engine which support it + +--- + language/English/strings.po | 35 +++++++++++++++++++++++++++++++--- + system/settings/settings.xml | 13 +++++++++++++ + xbmc/cores/AudioEngine/AEFactory.cpp | 8 ++++++++ + xbmc/cores/AudioEngine/AEFactory.h | 1 + + xbmc/cores/AudioEngine/Interfaces/AE.h | 6 ++++++ + xbmc/settings/Settings.cpp | 4 ++++ + 6 files changed, 64 insertions(+), 3 deletions(-) + +diff --git a/language/English/strings.po b/language/English/strings.po +index c2c562f..40fbb74 100644 +--- a/language/English/strings.po ++++ b/language/English/strings.po +@@ -12154,8 +12154,32 @@ msgctxt "#34123" + msgid "Never" + msgstr "" + +-#empty strings from id 34124 to 34200 +-#34124-34200 reserved for future use ++#. Resampling quality ++#: system/settings/settings.xml ++msgctxt "#34124" ++msgid "Resampling Quality" ++msgstr "" ++ ++#. Resampling quality ++#: system/settings/settings.xml ++msgctxt "#34125" ++msgid "Low" ++msgstr "" ++ ++#. Resampling quality ++#: system/settings/settings.xml ++msgctxt "#34126" ++msgid "Normal" ++msgstr "" ++ ++#. Resampling quality ++#: system/settings/settings.xml ++msgctxt "#34127" ++msgid "High" ++msgstr "" ++ ++#empty strings from id 34128 to 34200 ++#34128-34200 reserved for future use + + #: xbmc\PlayListPlayer.cpp + msgctxt "#34201" +@@ -14140,7 +14164,12 @@ msgctxt "#36420" + msgid "No info available yet." + msgstr "" + +-#empty strings from id 36421 to 36999 ++#: system/settings/settings.xml ++msgctxt "#36421" ++msgid "Resampling Quality, higher quality puts higher load on CPU" ++msgstr "" ++ ++#empty strings from id 36422 to 36999 + #end reservation + + #: xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp +diff --git a/system/settings/settings.xml b/system/settings/settings.xml +index f7d7f09..461e787 100644 +--- a/system/settings/settings.xml ++++ b/system/settings/settings.xml +@@ -1950,6 +1950,19 @@ + + + ++ ++ 2 ++ audiosupportsquality ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ + + 2 + true +diff --git a/xbmc/cores/AudioEngine/AEFactory.cpp b/xbmc/cores/AudioEngine/AEFactory.cpp +index 5b1d2d6..250056e 100644 +--- a/xbmc/cores/AudioEngine/AEFactory.cpp ++++ b/xbmc/cores/AudioEngine/AEFactory.cpp +@@ -269,6 +269,14 @@ bool CAEFactory::SupportsDrain() + return false; + } + ++bool CAEFactory::SupportsQuality() ++{ ++ if(AE) ++ return AE->SupportsQuality(); ++ ++ return false; ++} ++ + void CAEFactory::SetMute(const bool enabled) + { + if(AE) +diff --git a/xbmc/cores/AudioEngine/AEFactory.h b/xbmc/cores/AudioEngine/AEFactory.h +index e427519..26efe9f 100644 +--- a/xbmc/cores/AudioEngine/AEFactory.h ++++ b/xbmc/cores/AudioEngine/AEFactory.h +@@ -55,6 +55,7 @@ class CAEFactory + static std::string GetDefaultDevice(bool passthrough); + static bool SupportsRaw(); + static bool SupportsDrain(); ++ static bool SupportsQuality(); + static void SetMute(const bool enabled); + static bool IsMuted(); + static float GetVolume(); +diff --git a/xbmc/cores/AudioEngine/Interfaces/AE.h b/xbmc/cores/AudioEngine/Interfaces/AE.h +index 52c4efc..69cfc5e 100644 +--- a/xbmc/cores/AudioEngine/Interfaces/AE.h ++++ b/xbmc/cores/AudioEngine/Interfaces/AE.h +@@ -191,6 +191,12 @@ class IAE + */ + virtual bool SupportsDrain() { return false; } + ++ /** ++ * Returns true if the AudioEngine supports setting resample quality ++ * @returns true if the AudioEngine is capable of changing resample quality ++ */ ++ virtual bool SupportsQuality() { return false; } ++ + virtual void RegisterAudioCallback(IAudioCallback* pCallback) {} + + virtual void UnregisterAudioCallback() {} +diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp +index 436c34a..3f7dfaf 100644 +--- a/xbmc/settings/Settings.cpp ++++ b/xbmc/settings/Settings.cpp +@@ -763,6 +763,9 @@ void CSettings::InitializeConditions() + if (CAEFactory::SupportsDrain()) + m_settingsManager->AddCondition("audiosupportsdrain"); + ++ if (CAEFactory::SupportsQuality()) ++ m_settingsManager->AddCondition("audiosupportsquality"); ++ + // add more complex conditions + m_settingsManager->AddCondition("addonhassettings", AddonHasSettings); + m_settingsManager->AddCondition("checkmasterlock", CheckMasterLock); +@@ -856,6 +859,7 @@ void CSettings::InitializeISettingCallbacks() + settingSet.insert("audiooutput.audiodevice"); + settingSet.insert("audiooutput.passthroughdevice"); + settingSet.insert("audiooutput.streamsilence"); ++ settingSet.insert("audiooutput.resamplequality"); + settingSet.insert("lookandfeel.skin"); + settingSet.insert("lookandfeel.skinsettings"); + settingSet.insert("lookandfeel.font"); +-- +1.8.1.6 + + +From 4803c2f384aab14d1548015e989e496f1b1e84c2 Mon Sep 17 00:00:00 2001 +From: fritsch +Date: Thu, 25 Jul 2013 19:40:27 +0200 +Subject: [PATCH 027/136] ActiveAE: Prepare LOW, NORMAL, HIGH quality settings + for resampler + +--- + .../AudioEngine/Engines/ActiveAE/ActiveAEResample.cpp | 18 +++++++++++++++++- + .../AudioEngine/Engines/ActiveAE/ActiveAEResample.h | 7 ++++++- + 2 files changed, 23 insertions(+), 2 deletions(-) + +diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.cpp +index aee3bfc..3412338 100644 +--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.cpp ++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.cpp +@@ -36,7 +36,7 @@ + m_dllSwResample.Unload(); + } + +-bool CActiveAEResample::Init(uint64_t dst_chan_layout, int dst_channels, int dst_rate, AVSampleFormat dst_fmt, uint64_t src_chan_layout, int src_channels, int src_rate, AVSampleFormat src_fmt, CAEChannelInfo *remapLayout) ++bool CActiveAEResample::Init(uint64_t dst_chan_layout, int dst_channels, int dst_rate, AVSampleFormat dst_fmt, uint64_t src_chan_layout, int src_channels, int src_rate, AVSampleFormat src_fmt, CAEChannelInfo *remapLayout, int quality) + { + if (!m_dllAvUtil.Load() || !m_dllSwResample.Load()) + return false; +@@ -58,6 +58,22 @@ bool CActiveAEResample::Init(uint64_t dst_chan_layout, int dst_channels, int dst + m_pContext = m_dllSwResample.swr_alloc_set_opts(NULL, m_dst_chan_layout, m_dst_fmt, m_dst_rate, + m_src_chan_layout, m_src_fmt, m_src_rate, + 0, NULL); ++ if(quality == AE_SWR_HIGH_QUALITY) ++ { ++ m_dllAvUtil.av_opt_set_double(m_pContext, "cutoff", 1.0, 0); ++ m_dllAvUtil.av_opt_set_int(m_pContext,"filter_size", 256, 0); ++ } ++ else if(quality == AE_SWR_NORMAL_QUALITY) ++ { ++ // 0.97 is default cutoff so use (1.0 - 0.97) / 2.0 + 0.97 ++ m_dllAvUtil.av_opt_set_double(m_pContext, "cutoff", 0.985, 0); ++ m_dllAvUtil.av_opt_set_int(m_pContext,"filter_size", 64, 0); ++ } ++ else if(quality == AE_SWR_LOW_QUALITY) ++ { ++ m_dllAvUtil.av_opt_set_double(m_pContext, "cutoff", 0.97, 0); ++ m_dllAvUtil.av_opt_set_int(m_pContext,"filter_size", 32, 0); ++ } + + if(!m_pContext) + { +diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.h +index fa95a1d..baa4ef3 100644 +--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.h ++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.h +@@ -25,6 +25,11 @@ + #include "AEAudioFormat.h" + #include "ActiveAEBuffer.h" + ++// This is for the Audiophiles ++#define AE_SWR_LOW_QUALITY 0 ++#define AE_SWR_NORMAL_QUALITY 1 ++#define AE_SWR_HIGH_QUALITY 2 ++ + namespace ActiveAE + { + +@@ -33,7 +38,7 @@ class CActiveAEResample + public: + CActiveAEResample(); + virtual ~CActiveAEResample(); +- bool Init(uint64_t dst_chan_layout, int dst_channels, int dst_rate, AVSampleFormat dst_fmt, uint64_t src_chan_layout, int src_channels, int src_rate, AVSampleFormat src_fmt, CAEChannelInfo *remapLayout = NULL); ++ bool Init(uint64_t dst_chan_layout, int dst_channels, int dst_rate, AVSampleFormat dst_fmt, uint64_t src_chan_layout, int src_channels, int src_rate, AVSampleFormat src_fmt, CAEChannelInfo *remapLayout = NULL, int quality = AE_SWR_NORMAL_QUALITY); + int Resample(uint8_t **dst_buffer, int dst_samples, uint8_t **src_buffer, int src_samples); + int64_t GetDelay(int64_t base); + int GetBufferedSamples(); +-- +1.8.1.6 + + +From f8639455cc640b92a08b8dd2f1927b4ed2eac743 Mon Sep 17 00:00:00 2001 +From: Rainer Hochecker +Date: Fri, 26 Jul 2013 19:43:24 +0200 +Subject: [PATCH 028/136] ActiveAE: prepare for changing resample quality by + setting + +--- + .../AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 38 ++++++++++++++++++---- + xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h | 3 ++ + .../Engines/ActiveAE/ActiveAEBuffer.cpp | 38 +++++++++------------- + .../AudioEngine/Engines/ActiveAE/ActiveAEBuffer.h | 7 ++-- + .../Engines/ActiveAE/ActiveAEResample.h | 2 +- + 5 files changed, 55 insertions(+), 33 deletions(-) + +diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +index 935f994..2388f78 100644 +--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp ++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +@@ -390,6 +390,7 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) + m_sink.m_controlPort.SendOutMessage(CSinkControlProtocol::SILENCEMODE, &silence, sizeof(bool)); + } + LoadSettings(); ++ ChangeResampleQuality(); + if (!NeedReconfigureBuffers() && !NeedReconfigureSink()) + return; + m_state = AE_TOP_RECONFIGURING; +@@ -440,8 +441,11 @@ void CActiveAE::StateMachine(int signal, Protocol *port, Message *msg) + par = (MsgStreamParameter*)msg->data; + if (par->stream->m_resampleBuffers) + { +- par->stream->m_resampleBuffers->m_resampleRatio = par->parameter.double_par; +- par->stream->m_resampleBuffers->m_changeRatio = true; ++ if ((unsigned int)(par->stream->m_resampleBuffers->m_format.m_sampleRate * par->parameter.double_par) != par->stream->m_resampleBuffers->m_outSampleRate) ++ { ++ par->stream->m_resampleBuffers->m_resampleRatio = par->parameter.double_par; ++ par->stream->m_resampleBuffers->m_changeResampler = true; ++ } + } + return; + case CActiveAEControlProtocol::STREAMFADE: +@@ -956,7 +960,7 @@ void CActiveAE::Configure(AEAudioFormat *desiredFmt) + } + if (!(*it)->m_resampleBuffers) + { +- (*it)->m_resampleBuffers = new CActiveAEBufferPoolResample((*it)->m_inputBuffers->m_format, outputFormat); ++ (*it)->m_resampleBuffers = new CActiveAEBufferPoolResample((*it)->m_inputBuffers->m_format, outputFormat, m_settings.resampleQuality); + (*it)->m_resampleBuffers->Create(MAX_CACHE_LEVEL*1000, false); + } + if (m_mode == MODE_TRANSCODE || m_streams.size() > 1) +@@ -976,7 +980,7 @@ void CActiveAE::Configure(AEAudioFormat *desiredFmt) + AEAudioFormat vizFormat = m_internalFormat; + vizFormat.m_channelLayout = AE_CH_LAYOUT_2_0; + vizFormat.m_dataFormat = AE_FMT_FLOAT; +- m_vizBuffers = new CActiveAEBufferPoolResample(m_internalFormat, vizFormat); ++ m_vizBuffers = new CActiveAEBufferPoolResample(m_internalFormat, vizFormat, m_settings.resampleQuality); + // TODO use cache of sync + water level + m_vizBuffers->Create(2000, false); + } +@@ -991,7 +995,7 @@ void CActiveAE::Configure(AEAudioFormat *desiredFmt) + } + if (!m_sinkBuffers) + { +- m_sinkBuffers = new CActiveAEBufferPoolResample(sinkInputFormat, m_sinkFormat); ++ m_sinkBuffers = new CActiveAEBufferPoolResample(sinkInputFormat, m_sinkFormat, m_settings.resampleQuality); + m_sinkBuffers->Create(MAX_WATER_LEVEL*1000, true); + } + +@@ -1137,6 +1141,17 @@ float CActiveAE::CalcStreamAmplification(CActiveAEStream *stream, CSampleBuffer + return amp; + } + ++void CActiveAE::ChangeResampleQuality() ++{ ++ std::list::iterator it; ++ for(it=m_streams.begin(); it!=m_streams.end(); ++it) ++ { ++ if ((*it)->m_resampleBuffers && (*it)->m_resampleBuffers->m_resampler && ((*it)->m_resampleBuffers->m_resampleQuality != m_settings.resampleQuality)) ++ (*it)->m_resampleBuffers->m_changeResampler = true; ++ (*it)->m_resampleBuffers->m_resampleQuality = m_settings.resampleQuality; ++ } ++} ++ + void CActiveAE::ApplySettingsToFormat(AEAudioFormat &format, AudioSettings &settings, bool setmode) + { + // raw pass through +@@ -1756,6 +1771,8 @@ void CActiveAE::LoadSettings() + m_settings.dtshdpassthrough = CSettings::Get().GetBool("audiooutput.dtshdpassthrough"); + m_settings.aacpassthrough = CSettings::Get().GetBool("audiooutput.passthroughaac"); + m_settings.multichannellpcm = CSettings::Get().GetBool("audiooutput.multichannellpcm"); ++ ++ m_settings.resampleQuality = CSettings::Get().GetInt("audiooutput.resamplequality"); + } + + bool CActiveAE::Initialize() +@@ -1821,7 +1838,8 @@ void CActiveAE::OnSettingsChange(const std::string& setting) + setting == "audiooutput.channels" || + setting == "audiooutput.multichannellpcm" || + setting == "audiooutput.stereoupmix" || +- setting == "audiooutput.streamsilence") ++ setting == "audiooutput.streamsilence" || ++ setting == "audiooutput.resamplequality") + { + m_controlPort.SendOutMessage(CActiveAEControlProtocol::RECONFIGURE); + } +@@ -1837,6 +1855,11 @@ bool CActiveAE::SupportsDrain() + return true; + } + ++bool CActiveAE::SupportsQuality() ++{ ++ return true; ++} ++ + void CActiveAE::Shutdown() + { + Dispose(); +@@ -2124,7 +2147,8 @@ bool CActiveAE::ResampleSound(CActiveAESound *sound) + orig_config.channels, + orig_config.sample_rate, + orig_config.fmt, +- NULL); ++ NULL, ++ AE_SWR_NORMAL_QUALITY); + + dst_samples = resampler->CalcDstSampleCount(sound->GetSound(true)->nb_samples, + m_internalFormat.m_sampleRate, +diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h +index 9fc1b67..8bbd175 100644 +--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h ++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h +@@ -57,6 +57,7 @@ struct AudioSettings + bool dtshdpassthrough; + bool multichannellpcm; + bool stereoupmix; ++ int resampleQuality; + }; + + class CActiveAEControlProtocol : public Protocol +@@ -214,6 +215,7 @@ class CActiveAE : public IAE, private CThread + virtual std::string GetDefaultDevice(bool passthrough); + virtual bool SupportsRaw(); + virtual bool SupportsDrain(); ++ virtual bool SupportsQuality(); + + virtual void RegisterAudioCallback(IAudioCallback* pCallback); + virtual void UnregisterAudioCallback(); +@@ -257,6 +259,7 @@ class CActiveAE : public IAE, private CThread + void SStopSound(CActiveAESound *sound); + void DiscardSound(CActiveAESound *sound); + float CalcStreamAmplification(CActiveAEStream *stream, CSampleBuffer *buf); ++ void ChangeResampleQuality(); + + bool RunStages(); + bool HasWork(); +diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp +index d3ba213..6a2478f 100644 +--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp ++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp +@@ -129,7 +129,7 @@ bool CActiveAEBufferPool::Create(unsigned int totaltime) + + //----------------------------------------------------------------------------- + +-CActiveAEBufferPoolResample::CActiveAEBufferPoolResample(AEAudioFormat inputFormat, AEAudioFormat outputFormat) ++CActiveAEBufferPoolResample::CActiveAEBufferPoolResample(AEAudioFormat inputFormat, AEAudioFormat outputFormat, int quality) + : CActiveAEBufferPool(outputFormat) + { + m_inputFormat = inputFormat; +@@ -141,7 +141,8 @@ bool CActiveAEBufferPool::Create(unsigned int totaltime) + m_empty = true; + m_procSample = NULL; + m_resampleRatio = 1.0; +- m_changeRatio = false; ++ m_resampleQuality = quality; ++ m_changeResampler = false; + } + + CActiveAEBufferPoolResample::~CActiveAEBufferPoolResample() +@@ -166,7 +167,8 @@ bool CActiveAEBufferPoolResample::Create(unsigned int totaltime, bool remap) + m_inputFormat.m_channelLayout.Count(), + m_inputFormat.m_sampleRate, + CActiveAEResample::GetAVSampleFormat(m_inputFormat.m_dataFormat), +- remap ? &m_format.m_channelLayout : NULL); ++ remap ? &m_format.m_channelLayout : NULL, ++ m_resampleQuality); + } + + // store output sampling rate, needed when ratio gets changed +@@ -175,11 +177,8 @@ bool CActiveAEBufferPoolResample::Create(unsigned int totaltime, bool remap) + return true; + } + +-void CActiveAEBufferPoolResample::ChangeRatio() ++void CActiveAEBufferPoolResample::ChangeResampler() + { +-// CLog::Log(LOGNOTICE,"---------- sample rate changed from: %d, to: %d", +-// m_outSampleRate, (int)(m_format.m_sampleRate * m_resampleRatio)); +- + m_outSampleRate = m_format.m_sampleRate * m_resampleRatio; + + delete m_resampler; +@@ -193,9 +192,10 @@ void CActiveAEBufferPoolResample::ChangeRatio() + m_inputFormat.m_channelLayout.Count(), + m_inputFormat.m_sampleRate, + CActiveAEResample::GetAVSampleFormat(m_inputFormat.m_dataFormat), +- NULL); ++ NULL, ++ m_resampleQuality); + +- m_changeRatio = false; ++ m_changeResampler = false; + } + + bool CActiveAEBufferPoolResample::ResampleBuffers(unsigned int timestamp) +@@ -203,17 +203,11 @@ bool CActiveAEBufferPoolResample::ResampleBuffers(unsigned int timestamp) + bool busy = false; + CSampleBuffer *in; + +- if (m_changeRatio) +- { +- if ((unsigned int)(m_format.m_sampleRate * m_resampleRatio) == m_outSampleRate) +- m_changeRatio = false; +- } +- + if (!m_resampler) + { +- if (m_changeRatio) ++ if (m_changeResampler) + { +- ChangeRatio(); ++ ChangeResampler(); + return true; + } + while(!m_inputSamples.empty()) +@@ -241,14 +235,14 @@ bool CActiveAEBufferPoolResample::ResampleBuffers(unsigned int timestamp) + + bool hasInput = !m_inputSamples.empty(); + +- if (hasInput || skipInput || m_drain || m_changeRatio) ++ if (hasInput || skipInput || m_drain || m_changeResampler) + { + if (!m_procSample) + { + m_procSample = GetFreeBuffer(); + } + +- if (hasInput && !skipInput && !m_changeRatio) ++ if (hasInput && !skipInput && !m_changeResampler) + { + in = m_inputSamples.front(); + m_inputSamples.pop_front(); +@@ -274,7 +268,7 @@ bool CActiveAEBufferPoolResample::ResampleBuffers(unsigned int timestamp) + busy = true; + m_empty = (out_samples == 0); + +- if ((m_drain || m_changeRatio) && m_empty) ++ if ((m_drain || m_changeResampler) && m_empty) + { + if (m_fillPackets && m_procSample->pkt->nb_samples != 0) + { +@@ -300,8 +294,8 @@ bool CActiveAEBufferPoolResample::ResampleBuffers(unsigned int timestamp) + m_outputSamples.push_back(m_procSample); + + m_procSample = NULL; +- if (m_changeRatio) +- ChangeRatio(); ++ if (m_changeResampler) ++ ChangeResampler(); + } + // some methods like encode require completely filled packets + else if (!m_fillPackets || (m_procSample->pkt->nb_samples == m_procSample->pkt->max_nb_samples)) +diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.h +index 183c49e..f36d2c0 100644 +--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.h ++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.h +@@ -86,10 +86,10 @@ class CActiveAEBufferPool + class CActiveAEBufferPoolResample : public CActiveAEBufferPool + { + public: +- CActiveAEBufferPoolResample(AEAudioFormat inputFormat, AEAudioFormat outputFormat); ++ CActiveAEBufferPoolResample(AEAudioFormat inputFormat, AEAudioFormat outputFormat, int quality); + virtual ~CActiveAEBufferPoolResample(); + virtual bool Create(unsigned int totaltime, bool remap); +- void ChangeRatio(); ++ void ChangeResampler(); + bool ResampleBuffers(unsigned int timestamp = 0); + float GetDelay(); + void Flush(); +@@ -102,8 +102,9 @@ class CActiveAEBufferPoolResample : public CActiveAEBufferPool + bool m_fillPackets; + bool m_drain; + bool m_empty; +- bool m_changeRatio; ++ bool m_changeResampler; + double m_resampleRatio; ++ int m_resampleQuality; + unsigned int m_outSampleRate; + }; + +diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.h +index baa4ef3..6f13b5e 100644 +--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.h ++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResample.h +@@ -38,7 +38,7 @@ class CActiveAEResample + public: + CActiveAEResample(); + virtual ~CActiveAEResample(); +- bool Init(uint64_t dst_chan_layout, int dst_channels, int dst_rate, AVSampleFormat dst_fmt, uint64_t src_chan_layout, int src_channels, int src_rate, AVSampleFormat src_fmt, CAEChannelInfo *remapLayout = NULL, int quality = AE_SWR_NORMAL_QUALITY); ++ bool Init(uint64_t dst_chan_layout, int dst_channels, int dst_rate, AVSampleFormat dst_fmt, uint64_t src_chan_layout, int src_channels, int src_rate, AVSampleFormat src_fmt, CAEChannelInfo *remapLayout, int quality); + int Resample(uint8_t **dst_buffer, int dst_samples, uint8_t **src_buffer, int src_samples); + int64_t GetDelay(int64_t base); + int GetBufferedSamples(); +-- +1.8.1.6 + + +From ab54a95500021158e2c17973e963a277eafb9d13 Mon Sep 17 00:00:00 2001 +From: Rainer Hochecker +Date: Sat, 27 Jul 2013 09:02:37 +0200 +Subject: [PATCH 029/136] ActiveAE: fix starvation caused by viz + +--- + .../AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 95 +++++++++++----------- + 1 file changed, 49 insertions(+), 46 deletions(-) + +diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +index 2388f78..4b64235 100644 +--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp ++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +@@ -1563,52 +1563,6 @@ bool CActiveAE::RunStages() + if (!m_sinkHasVolume) + Deamplify(*(out->pkt)); + +- // viz +- { +- CSingleLock lock(m_vizLock); +- if (m_audioCallback && m_vizBuffers) +- { +- if (!m_vizInitialized) +- { +- m_audioCallback->OnInitialize(2, m_vizBuffers->m_format.m_sampleRate, 32); +- m_vizInitialized = true; +- } +- +- // if viz has no free buffer, it won't return current buffer "out" +- if (!m_vizBuffers->m_freeSamples.empty()) +- { +- out->Acquire(); +- m_vizBuffers->m_inputSamples.push_back(out); +- } +- else +- CLog::Log(LOGWARNING,"ActiveAE::%s - viz ran out of free buffers", __FUNCTION__); +- unsigned int now = XbmcThreads::SystemClockMillis(); +- unsigned int timestamp = now + m_stats.GetDelay() * 1000; +- m_vizBuffers->ResampleBuffers(timestamp); +- while(!m_vizBuffers->m_outputSamples.empty()) +- { +- CSampleBuffer *buf = m_vizBuffers->m_outputSamples.front(); +- if ((now - buf->timestamp) & 0x80000000) +- break; +- else +- { +- int submitted = 0; +- int samples; +- while(submitted < buf->pkt->nb_samples) +- { +- samples = std::min(512, buf->pkt->nb_samples-submitted); +- m_audioCallback->OnAudioData((float*)(buf->pkt->data[0]+2*submitted), samples); +- submitted += samples; +- } +- buf->Return(); +- m_vizBuffers->m_outputSamples.pop_front(); +- } +- } +- } +- else if (m_vizBuffers) +- m_vizBuffers->Flush(); +- } +- + // encode + if (m_mode == MODE_TRANSCODE && m_encoder) + { +@@ -1626,6 +1580,55 @@ bool CActiveAE::RunStages() + + busy = true; + } ++ ++ // viz ++ { ++ CSingleLock lock(m_vizLock); ++ if (m_audioCallback && m_vizBuffers) ++ { ++ if (!m_vizInitialized) ++ { ++ m_audioCallback->OnInitialize(2, m_vizBuffers->m_format.m_sampleRate, 32); ++ m_vizInitialized = true; ++ } ++ ++ // if viz has no free buffer, it won't return current buffer "out" ++ if (!m_vizBuffers->m_freeSamples.empty()) ++ { ++ if (out) ++ { ++ out->Acquire(); ++ m_vizBuffers->m_inputSamples.push_back(out); ++ } ++ } ++ else ++ CLog::Log(LOGWARNING,"ActiveAE::%s - viz ran out of free buffers", __FUNCTION__); ++ unsigned int now = XbmcThreads::SystemClockMillis(); ++ unsigned int timestamp = now + m_stats.GetDelay() * 1000; ++ busy |= m_vizBuffers->ResampleBuffers(timestamp); ++ while(!m_vizBuffers->m_outputSamples.empty()) ++ { ++ CSampleBuffer *buf = m_vizBuffers->m_outputSamples.front(); ++ if ((now - buf->timestamp) & 0x80000000) ++ break; ++ else ++ { ++ int submitted = 0; ++ int samples; ++ while(submitted < buf->pkt->nb_samples) ++ { ++ samples = std::min(512, buf->pkt->nb_samples-submitted); ++ m_audioCallback->OnAudioData((float*)(buf->pkt->data[0]+2*submitted), samples); ++ submitted += samples; ++ } ++ buf->Return(); ++ m_vizBuffers->m_outputSamples.pop_front(); ++ } ++ } ++ } ++ else if (m_vizBuffers) ++ m_vizBuffers->Flush(); ++ } + } + // pass through + else +-- +1.8.1.6 + + +From a3ed37aa45ad63ef9c9b51248f820898de696167 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 30 May 2013 10:56:06 +0200 -Subject: [PATCH 020/123] renderer: use fence for determination when a buffer +Subject: [PATCH 030/136] renderer: use fence for determination when a buffer is ready for reuse --- @@ -7067,7 +8630,7 @@ Subject: [PATCH 020/123] renderer: use fence for determination when a buffer 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/VideoRenderers/BaseRenderer.h b/xbmc/cores/VideoRenderers/BaseRenderer.h -index 7e503c5..fe1f577 100644 +index a61d3cf..6acf2f3 100644 --- a/xbmc/cores/VideoRenderers/BaseRenderer.h +++ b/xbmc/cores/VideoRenderers/BaseRenderer.h @@ -92,6 +92,7 @@ class CBaseRenderer @@ -7079,7 +8642,7 @@ index 7e503c5..fe1f577 100644 virtual bool Supports(ERENDERFEATURE feature) { return false; } diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -index 32b8d22..95e6716 100644 +index d4ed4a1..28b254c 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp @@ -128,6 +128,7 @@ @@ -7099,7 +8662,7 @@ index 32b8d22..95e6716 100644 #ifdef HAVE_LIBVA delete &vaapi; #endif -@@ -1205,6 +1208,15 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) +@@ -1207,6 +1210,15 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) RenderSoftware(renderBuffer, m_currentField); VerifyGLState(); } @@ -7115,7 +8678,7 @@ index 32b8d22..95e6716 100644 } void CLinuxRendererGL::RenderSinglePass(int index, int field) -@@ -3395,6 +3407,26 @@ unsigned int CLinuxRendererGL::GetProcessorSize() +@@ -3397,6 +3409,26 @@ unsigned int CLinuxRendererGL::GetProcessorSize() return 0; } @@ -7143,7 +8706,7 @@ index 32b8d22..95e6716 100644 void CLinuxRendererGL::AddProcessor(CVDPAU* vdpau, int index) { diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoRenderers/LinuxRendererGL.h -index 96b752b..e239b92 100644 +index 93b1a69..1b8bfbe 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.h +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.h @@ -141,6 +141,7 @@ class CLinuxRendererGL : public CBaseRenderer @@ -7163,7 +8726,7 @@ index 96b752b..e239b92 100644 #ifdef HAVE_LIBVDPAU CVDPAU* vdpau; diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp -index 28201a2..595ed8b 100644 +index 1b88b36..64c5b1d 100644 --- a/xbmc/cores/VideoRenderers/RenderManager.cpp +++ b/xbmc/cores/VideoRenderers/RenderManager.cpp @@ -374,11 +374,16 @@ void CXBMCRenderManager::FrameMove() @@ -7188,10 +8751,10 @@ index 28201a2..595ed8b 100644 1.8.1.6 -From be9fc8089a3ab1a44e6d2ec3cc2cd222f20987c6 Mon Sep 17 00:00:00 2001 +From 851631f89b7cf5cc6f915e9588982c732bda1847 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:34:39 +0200 -Subject: [PATCH 021/123] videoplayer: adapt lateness detection and dropping to +Subject: [PATCH 031/136] videoplayer: adapt lateness detection and dropping to buffering --- @@ -7205,7 +8768,7 @@ Subject: [PATCH 021/123] videoplayer: adapt lateness detection and dropping to 7 files changed, 260 insertions(+), 38 deletions(-) diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp -index 595ed8b..44124a3 100644 +index 64c5b1d..8b4476f 100644 --- a/xbmc/cores/VideoRenderers/RenderManager.cpp +++ b/xbmc/cores/VideoRenderers/RenderManager.cpp @@ -299,6 +299,8 @@ bool CXBMCRenderManager::Configure(unsigned int width, unsigned int height, unsi @@ -7257,7 +8820,7 @@ index 595ed8b..44124a3 100644 + return true; +} diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h -index 764ba07..1d9116e 100644 +index 00fe4c3..52380c1 100644 --- a/xbmc/cores/VideoRenderers/RenderManager.h +++ b/xbmc/cores/VideoRenderers/RenderManager.h @@ -97,10 +97,11 @@ class CXBMCRenderManager @@ -7304,7 +8867,7 @@ index 764ba07..1d9116e 100644 double m_presenterr; double m_errorbuff[ERRORBUFFSIZE]; diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h -index 5704704..ee943a0 100644 +index dc4e8be..ba4a8d5 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h @@ -109,6 +109,10 @@ struct DVDVideoUserData @@ -7347,7 +8910,7 @@ index 5704704..ee943a0 100644 + virtual void SetCodecControl(int flags) {} }; diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp -index 0591b1f..f789785 100644 +index 4040f38..fef2add 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp @@ -163,6 +163,7 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx @@ -7414,7 +8977,7 @@ index 0591b1f..f789785 100644 + m_codecControlFlags = flags; +} diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h -index fe6bbaa..c7ae207 100644 +index 28416e6..4279222 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h @@ -46,6 +46,7 @@ class CDVDVideoCodecFFmpeg : public CDVDVideoCodec @@ -7444,7 +9007,7 @@ index fe6bbaa..c7ae207 100644 + int m_codecControlFlags; }; diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index 749195f..4c1e9dd 100644 +index dfcbf7e..df54439 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -322,8 +322,10 @@ void CDVDPlayerVideo::Process() @@ -7708,7 +9271,7 @@ index 749195f..4c1e9dd 100644 + m_totalGain += frametime; +} diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.h b/xbmc/cores/dvdplayer/DVDPlayerVideo.h -index 5f763c0..9be23fb 100644 +index 0aee790..c5a3c6c 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.h +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.h @@ -36,6 +36,25 @@ @@ -7765,10 +9328,10 @@ index 5f763c0..9be23fb 100644 1.8.1.6 -From 4b56e80e90f4d673cbca7fa91e740216444d6586 Mon Sep 17 00:00:00 2001 +From 830f20bd53cd8053f27dae9598718070cde562e0 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 2 Sep 2012 16:05:21 +0200 -Subject: [PATCH 022/123] video player: present correct pts to user for a/v +Subject: [PATCH 032/136] video player: present correct pts to user for a/v sync (after buffering in renderer) --- @@ -7777,7 +9340,7 @@ Subject: [PATCH 022/123] video player: present correct pts to user for a/v 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index 4c1e9dd..ba99804 100644 +index df54439..25ed8f1 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -1486,6 +1486,22 @@ void CDVDPlayerVideo::ResetFrameRateCalc() @@ -7820,7 +9383,7 @@ index 4c1e9dd..ba99804 100644 && bNewFrame && m_bAllowDrop diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.h b/xbmc/cores/dvdplayer/DVDPlayerVideo.h -index 9be23fb..3c3e007 100644 +index c5a3c6c..ec30fc5 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.h +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.h @@ -100,7 +100,7 @@ class CDVDPlayerVideo : public CThread @@ -7836,10 +9399,10 @@ index 9be23fb..3c3e007 100644 1.8.1.6 -From 3be868f44191d3437f2ccf053e2c964ed5b3ffd4 Mon Sep 17 00:00:00 2001 +From 1cd72b29520878b75cef6ec2ff5aa13ec92b291a Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 16 Feb 2013 18:25:53 +0100 -Subject: [PATCH 023/123] videoplayer: some rework and documentation +Subject: [PATCH 033/136] videoplayer: some rework and documentation --- .../dvdplayer/DVDCodecs/Video/DVDVideoCodec.h | 29 ++++++++++++++++++++-- @@ -7849,7 +9412,7 @@ Subject: [PATCH 023/123] videoplayer: some rework and documentation 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h -index ee943a0..7abbd7e 100644 +index ba4a8d5..809d432 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h @@ -131,7 +131,6 @@ struct DVDVideoUserData @@ -7899,7 +9462,7 @@ index ee943a0..7abbd7e 100644 virtual void SetCodecControl(int flags) {} }; diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp -index f789785..43c133c 100644 +index fef2add..38e6e3f 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp @@ -907,6 +907,17 @@ unsigned CDVDVideoCodecFFmpeg::GetAllowedReferences() @@ -7921,7 +9484,7 @@ index f789785..43c133c 100644 { m_codecControlFlags = flags; diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h -index c7ae207..81b9af9 100644 +index 4279222..8e0552f 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h @@ -64,7 +64,7 @@ class CDVDVideoCodecFFmpeg : public CDVDVideoCodec @@ -7934,7 +9497,7 @@ index c7ae207..81b9af9 100644 bool IsHardwareAllowed() { return !m_bSoftware; } diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index ba99804..56b32b9 100644 +index 25ed8f1..3d86d5b 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -1597,7 +1597,7 @@ int CDVDPlayerVideo::CalcDropRequirement(double pts) @@ -7950,10 +9513,10 @@ index ba99804..56b32b9 100644 1.8.1.6 -From 4dd137d05f8e2fe7f36736395a9650139b7f21cb Mon Sep 17 00:00:00 2001 +From 781fabbc7ec049f00bd4eb1a6511c39dd1c6dbfe Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 7 Apr 2012 09:19:00 +0200 -Subject: [PATCH 024/123] vdpau: redesign +Subject: [PATCH 034/136] vdpau: redesign --- language/English/strings.po | 12 +- @@ -7980,10 +9543,10 @@ Subject: [PATCH 024/123] vdpau: redesign 21 files changed, 3578 insertions(+), 1230 deletions(-) diff --git a/language/English/strings.po b/language/English/strings.po -index bb2272d..f2a0572 100644 +index 40fbb74..f646f9f 100644 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -5767,7 +5767,15 @@ msgctxt "#13435" +@@ -5770,7 +5770,15 @@ msgctxt "#13435" msgid "Enable HQ Scalers for scalings above" msgstr "" @@ -8000,7 +9563,7 @@ index bb2272d..f2a0572 100644 #: system/settings/settings.xml msgctxt "#13500" -@@ -6842,7 +6850,7 @@ msgid "Software Blend" +@@ -6845,7 +6853,7 @@ msgid "Software Blend" msgstr "" msgctxt "#16325" @@ -8010,7 +9573,7 @@ index bb2272d..f2a0572 100644 #empty strings from id 16326 to 16399 diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index 6e32551..15e9a75 100644 +index 461e787..b3ab3d1 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -375,6 +375,16 @@ @@ -8054,10 +9617,10 @@ index c8c8a2e..0799a4b 100644 #if(XBMC_texture_rectangle) diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -index 95e6716..88c7e5f 100644 +index 28b254c..e7abc7b 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -@@ -679,6 +679,18 @@ void CLinuxRendererGL::RenderUpdate(bool clear, DWORD flags, DWORD alpha) +@@ -681,6 +681,18 @@ void CLinuxRendererGL::RenderUpdate(bool clear, DWORD flags, DWORD alpha) glDisable(GL_POLYGON_STIPPLE); } @@ -8076,7 +9639,7 @@ index 95e6716..88c7e5f 100644 else Render(flags, index); -@@ -759,11 +771,6 @@ void CLinuxRendererGL::FlipPage(int source) +@@ -761,11 +773,6 @@ void CLinuxRendererGL::FlipPage(int source) m_buffers[m_iYV12RenderBuffer].flipindex = ++m_flipindex; @@ -8088,7 +9651,7 @@ index 95e6716..88c7e5f 100644 return; } -@@ -1090,6 +1097,12 @@ void CLinuxRendererGL::LoadShaders(int field) +@@ -1092,6 +1099,12 @@ void CLinuxRendererGL::LoadShaders(int field) m_textureCreate = &CLinuxRendererGL::CreateVDPAUTexture; m_textureDelete = &CLinuxRendererGL::DeleteVDPAUTexture; } @@ -8101,7 +9664,7 @@ index 95e6716..88c7e5f 100644 else if (m_format == RENDER_FMT_VAAPI) { m_textureUpload = &CLinuxRendererGL::UploadVAAPITexture; -@@ -1165,7 +1178,10 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) +@@ -1167,7 +1180,10 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) m_currentField = FIELD_FULL; // call texture load function @@ -8112,7 +9675,7 @@ index 95e6716..88c7e5f 100644 if (m_renderMethod & RENDER_GLSL) { -@@ -1540,17 +1556,12 @@ void CLinuxRendererGL::RenderFromFBO() +@@ -1542,17 +1558,12 @@ void CLinuxRendererGL::RenderFromFBO() void CLinuxRendererGL::RenderVDPAU(int index, int field) { #ifdef HAVE_LIBVDPAU @@ -8132,7 +9695,7 @@ index 95e6716..88c7e5f 100644 // Try some clamping or wrapping glTexParameteri(m_textureTarget, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -@@ -1608,8 +1619,6 @@ void CLinuxRendererGL::RenderVDPAU(int index, int field) +@@ -1610,8 +1621,6 @@ void CLinuxRendererGL::RenderVDPAU(int index, int field) if (m_pVideoFilterShader) m_pVideoFilterShader->Disable(); @@ -8141,7 +9704,7 @@ index 95e6716..88c7e5f 100644 glBindTexture (m_textureTarget, 0); glDisable(m_textureTarget); #endif -@@ -2286,12 +2295,14 @@ void CLinuxRendererGL::DeleteVDPAUTexture(int index) +@@ -2288,12 +2297,14 @@ void CLinuxRendererGL::DeleteVDPAUTexture(int index) { #ifdef HAVE_LIBVDPAU YUVPLANE &plane = m_buffers[index].fields[0][0]; @@ -8156,7 +9719,7 @@ index 95e6716..88c7e5f 100644 #endif } -@@ -2324,10 +2335,147 @@ bool CLinuxRendererGL::CreateVDPAUTexture(int index) +@@ -2326,10 +2337,147 @@ bool CLinuxRendererGL::CreateVDPAUTexture(int index) void CLinuxRendererGL::UploadVDPAUTexture(int index) { #ifdef HAVE_LIBVDPAU @@ -8305,7 +9868,7 @@ index 95e6716..88c7e5f 100644 void CLinuxRendererGL::DeleteVAAPITexture(int index) { -@@ -3250,12 +3398,13 @@ bool CLinuxRendererGL::Supports(EINTERLACEMETHOD method) +@@ -3252,12 +3400,13 @@ bool CLinuxRendererGL::Supports(EINTERLACEMETHOD method) if(method == VS_INTERLACEMETHOD_AUTO) return true; @@ -8323,7 +9886,7 @@ index 95e6716..88c7e5f 100644 #endif return false; } -@@ -3348,14 +3497,7 @@ EINTERLACEMETHOD CLinuxRendererGL::AutoInterlaceMethod() +@@ -3350,14 +3499,7 @@ EINTERLACEMETHOD CLinuxRendererGL::AutoInterlaceMethod() return VS_INTERLACEMETHOD_NONE; if(m_renderMethod & RENDER_VDPAU) @@ -8338,7 +9901,7 @@ index 95e6716..88c7e5f 100644 if(Supports(VS_INTERLACEMETHOD_RENDER_BOB)) return VS_INTERLACEMETHOD_RENDER_BOB; -@@ -3400,6 +3542,7 @@ void CLinuxRendererGL::UnBindPbo(YUVBUFFER& buff) +@@ -3402,6 +3544,7 @@ void CLinuxRendererGL::UnBindPbo(YUVBUFFER& buff) unsigned int CLinuxRendererGL::GetProcessorSize() { if(m_format == RENDER_FMT_VDPAU @@ -8346,7 +9909,7 @@ index 95e6716..88c7e5f 100644 || m_format == RENDER_FMT_VAAPI || m_format == RENDER_FMT_CVBREF) return 1; -@@ -3428,11 +3571,12 @@ bool CLinuxRendererGL::IsProcessed(int idx) +@@ -3430,11 +3573,12 @@ bool CLinuxRendererGL::IsProcessed(int idx) } #ifdef HAVE_LIBVDPAU @@ -8362,7 +9925,7 @@ index 95e6716..88c7e5f 100644 #endif diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoRenderers/LinuxRendererGL.h -index e239b92..d72eb64 100644 +index 1b8bfbe..aac04bd 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.h +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.h @@ -39,12 +39,11 @@ @@ -8425,7 +9988,7 @@ index e239b92..d72eb64 100644 diff --git a/xbmc/cores/VideoRenderers/RenderFormats.h b/xbmc/cores/VideoRenderers/RenderFormats.h -index 4e8d7e9..6ed62be 100644 +index f67a32c..9ad1671 100644 --- a/xbmc/cores/VideoRenderers/RenderFormats.h +++ b/xbmc/cores/VideoRenderers/RenderFormats.h @@ -26,6 +26,7 @@ enum ERenderFormat { @@ -8437,7 +10000,7 @@ index 4e8d7e9..6ed62be 100644 RENDER_FMT_UYVY422, RENDER_FMT_YUYV422, diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp -index 44124a3..a59ee4d 100644 +index 8b4476f..5b08c1e 100644 --- a/xbmc/cores/VideoRenderers/RenderManager.cpp +++ b/xbmc/cores/VideoRenderers/RenderManager.cpp @@ -925,7 +925,8 @@ int CXBMCRenderManager::AddVideoPicture(DVDVideoPicture& pic) @@ -8451,7 +10014,7 @@ index 44124a3..a59ee4d 100644 #endif #ifdef HAVE_LIBOPENMAX diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h -index 1d9116e..7a3a530 100644 +index 52380c1..befd851 100644 --- a/xbmc/cores/VideoRenderers/RenderManager.h +++ b/xbmc/cores/VideoRenderers/RenderManager.h @@ -35,7 +35,7 @@ @@ -8464,7 +10027,7 @@ index 1d9116e..7a3a530 100644 #define ERRORBUFFSIZE 30 diff --git a/xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp b/xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp -index 5b58f61..95f4a1e 100644 +index ad1940c..48302ff 100644 --- a/xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp +++ b/xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp @@ -214,6 +214,8 @@ static void CalculateYUVMatrixGL(GLfloat res[4][4] @@ -8477,7 +10040,7 @@ index 5b58f61..95f4a1e 100644 CLog::Log(LOGERROR, "GL: BaseYUV2RGBGLSLShader - unsupported format %d", m_format); diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h -index 7abbd7e..13a2648 100644 +index 809d432..43befb4 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h @@ -34,7 +34,7 @@ @@ -8499,7 +10062,7 @@ index 7abbd7e..13a2648 100644 struct { VAAPI::CHolder* vaapi; diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp -index 43c133c..ec93844 100644 +index 38e6e3f..e133d78 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp @@ -75,11 +75,11 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx @@ -8518,7 +10081,7 @@ index 43c133c..ec93844 100644 ctx->SetHardware(vdp); return *cur; diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h -index 81b9af9..fd8b863 100644 +index 8e0552f..30c67ab 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h @@ -29,7 +29,6 @@ @@ -8530,7 +10093,7 @@ index 81b9af9..fd8b863 100644 class CDVDVideoCodecFFmpeg : public CDVDVideoCodec diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index 4e00208..89ac10e 100644 +index 5ca0803..4844469 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -33,11 +33,16 @@ @@ -12890,7 +14453,7 @@ index 4e00208..89ac10e 100644 + #endif diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h -index 87e8797..5bee48b 100644 +index e760f28..1c21535 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h @@ -1,5 +1,3 @@ @@ -12898,7 +14461,7 @@ index 87e8797..5bee48b 100644 -#pragma once /* * Copyright (C) 2005-2013 Team XBMC - * http://www.xbmc.org + * http://xbmc.org @@ -20,9 +18,32 @@ * */ @@ -13636,7 +15199,7 @@ index 87e8797..5bee48b 100644 + +} diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index 56b32b9..3c30d0b 100644 +index 3d86d5b..b0a33de 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -1009,6 +1009,7 @@ static std::string GetRenderFormatName(ERenderFormat format) @@ -13648,7 +15211,7 @@ index 56b32b9..3c30d0b 100644 case RENDER_FMT_VAAPI: return "VAAPI"; case RENDER_FMT_OMXEGL: return "OMXEGL"; diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp -index de3a418..c156b90 100644 +index 2a2a15a..f0a997e 100644 --- a/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp @@ -161,7 +161,7 @@ void CAdvancedSettings::Initialize() @@ -13738,7 +15301,7 @@ index 8ef3359..8c4038a 100644 * * This Program is free software; you can redistribute it and/or modify diff --git a/xbmc/video/dialogs/GUIDialogVideoSettings.cpp b/xbmc/video/dialogs/GUIDialogVideoSettings.cpp -index bd80082..27ed5ee 100644 +index 684b471..2bad710 100644 --- a/xbmc/video/dialogs/GUIDialogVideoSettings.cpp +++ b/xbmc/video/dialogs/GUIDialogVideoSettings.cpp @@ -104,7 +104,7 @@ void CGUIDialogVideoSettings::CreateSettings() @@ -13751,7 +15314,7 @@ index bd80082..27ed5ee 100644 entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_TEMPORAL_HALF , 16317)); entries.push_back(make_pair(VS_INTERLACEMETHOD_VDPAU_INVERSE_TELECINE , 16314)); diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index e425327..3dae22c 100644 +index a0f7bba..b6b6ec4 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -63,6 +63,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -13766,10 +15329,10 @@ index e425327..3dae22c 100644 1.8.1.6 -From 2c65b5bb8caabbe3ed88861ebda5a0392d06cd2e Mon Sep 17 00:00:00 2001 +From 72f31a6c742e0d2145f9fc85786b7c4d96759214 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 12 Dec 2012 09:52:17 +0100 -Subject: [PATCH 025/123] vdpau: make interop gl default and remove setting, +Subject: [PATCH 035/136] vdpau: make interop gl default and remove setting, rename and intvert interop yuv --- @@ -13778,10 +15341,10 @@ Subject: [PATCH 025/123] vdpau: make interop gl default and remove setting, 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/language/English/strings.po b/language/English/strings.po -index f2a0572..eace353 100644 +index f646f9f..ba414f9 100644 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -5768,14 +5768,10 @@ msgid "Enable HQ Scalers for scalings above" +@@ -5771,14 +5771,10 @@ msgid "Enable HQ Scalers for scalings above" msgstr "" msgctxt "#13436" @@ -13799,7 +15362,7 @@ index f2a0572..eace353 100644 #: system/settings/settings.xml msgctxt "#13500" diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index 89ac10e..c4d1a53 100644 +index 4844469..fc95760 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -384,12 +384,15 @@ bool CDecoder::Supports(EINTERLACEMETHOD method) @@ -13874,10 +15437,10 @@ index 89ac10e..c4d1a53 100644 1.8.1.6 -From 5625fb3f23df0575518af5db59bc0ac6d0b204dc Mon Sep 17 00:00:00 2001 +From 284223523ec875a402ea85c208da19e5949cab44 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 12 Dec 2012 18:34:47 +0100 -Subject: [PATCH 026/123] vdpau: drop studio level conversion +Subject: [PATCH 036/136] vdpau: drop studio level conversion --- xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 4 +- @@ -13885,10 +15448,10 @@ Subject: [PATCH 026/123] vdpau: drop studio level conversion 2 files changed, 6 insertions(+), 92 deletions(-) diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -index 88c7e5f..a904572 100644 +index e7abc7b..2d63413 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -@@ -3314,7 +3314,7 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) +@@ -3316,7 +3316,7 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) { if(feature == RENDERFEATURE_BRIGHTNESS) { @@ -13897,7 +15460,7 @@ index 88c7e5f..a904572 100644 return true; if (m_renderMethod & RENDER_VAAPI) -@@ -3327,7 +3327,7 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) +@@ -3329,7 +3329,7 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) if(feature == RENDERFEATURE_CONTRAST) { @@ -13907,7 +15470,7 @@ index 88c7e5f..a904572 100644 if (m_renderMethod & RENDER_VAAPI) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index c4d1a53..399da83 100644 +index fc95760..07af62a 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -58,15 +58,6 @@ @@ -14029,10 +15592,10 @@ index c4d1a53..399da83 100644 1.8.1.6 -From 335ae083e1dcc89cfaa8351b4ff3136b78c432be Mon Sep 17 00:00:00 2001 +From 16f3d1420c64bd711b95102c6364a308c1b5bd54 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 12 Dec 2012 20:28:49 +0100 -Subject: [PATCH 027/123] vdpau: observe ffmpeg tags for color space +Subject: [PATCH 037/136] vdpau: observe ffmpeg tags for color space --- xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 38 ++++++++++++++++++-------- @@ -14040,7 +15603,7 @@ Subject: [PATCH 027/123] vdpau: observe ffmpeg tags for color space 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index 399da83..4b2b4e8 100644 +index 07af62a..7ecc2cf 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -929,6 +929,7 @@ int CDecoder::Decode(AVCodecContext *avctx, AVFrame *pFrame) @@ -14121,7 +15684,7 @@ index 399da83..4b2b4e8 100644 m_vdpError = false; diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h -index 5bee48b..ef99383 100644 +index 1c21535..674571b 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h @@ -334,6 +334,7 @@ class CMixer : private CThread @@ -14136,17 +15699,17 @@ index 5bee48b..ef99383 100644 1.8.1.6 -From 28f7a60727380f8bef98393e8ed5162ecf4b20a0 Mon Sep 17 00:00:00 2001 +From b301b228ac26b0ea083865cca42337b9bf816175 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 27 Jan 2013 12:10:19 +0100 -Subject: [PATCH 028/123] vdpau: switch off de-interlacing on ff +Subject: [PATCH 038/136] vdpau: switch off de-interlacing on ff --- xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index 4b2b4e8..c56dc9c 100644 +index 7ecc2cf..3cc02ee 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -2065,8 +2065,9 @@ void CMixer::InitCycle() @@ -14165,10 +15728,10 @@ index 4b2b4e8..c56dc9c 100644 1.8.1.6 -From a04827ef0ca9a5a659ed2063d7076fb5db016134 Mon Sep 17 00:00:00 2001 +From cdd164a91bd82358f2c6c0923ba9a33f59ab9c1c Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 2 Feb 2013 13:17:09 +0100 -Subject: [PATCH 029/123] vdpau: fix mp4 part2 decoding, activate by default +Subject: [PATCH 039/136] vdpau: fix mp4 part2 decoding, activate by default --- xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 3 +-- @@ -14176,7 +15739,7 @@ Subject: [PATCH 029/123] vdpau: fix mp4 part2 decoding, activate by default 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index c56dc9c..4ffeeb5 100644 +index 3cc02ee..d90df12 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -131,10 +131,9 @@ bool CDecoder::Open(AVCodecContext* avctx, const enum PixelFormat, unsigned int @@ -14192,7 +15755,7 @@ index c56dc9c..4ffeeb5 100644 { if (!CDVDCodecUtils::IsVP3CompatibleWidth(avctx->coded_width)) diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp -index c156b90..bd08884 100644 +index f0a997e..292750d 100644 --- a/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp @@ -165,7 +165,7 @@ void CAdvancedSettings::Initialize() @@ -14208,10 +15771,10 @@ index c156b90..bd08884 100644 1.8.1.6 -From 29f7a999fbf40b3228553a655b9b5713cd572e66 Mon Sep 17 00:00:00 2001 +From 5f076a0a19a3e5443d08a0a8d1f20c1189919848 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 2 Mar 2013 15:19:19 +0100 -Subject: [PATCH 030/123] vdpau: re-add limited range conversion +Subject: [PATCH 040/136] vdpau: re-add limited range conversion --- xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 4 +- @@ -14219,10 +15782,10 @@ Subject: [PATCH 030/123] vdpau: re-add limited range conversion 2 files changed, 85 insertions(+), 5 deletions(-) diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -index a904572..88c7e5f 100644 +index 2d63413..e7abc7b 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -@@ -3314,7 +3314,7 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) +@@ -3316,7 +3316,7 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) { if(feature == RENDERFEATURE_BRIGHTNESS) { @@ -14231,7 +15794,7 @@ index a904572..88c7e5f 100644 return true; if (m_renderMethod & RENDER_VAAPI) -@@ -3327,7 +3327,7 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) +@@ -3329,7 +3329,7 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) if(feature == RENDERFEATURE_CONTRAST) { @@ -14241,7 +15804,7 @@ index a904572..88c7e5f 100644 if (m_renderMethod & RENDER_VAAPI) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index 4ffeeb5..f913a97 100644 +index d90df12..62cd72e 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -71,6 +71,9 @@ @@ -14355,10 +15918,10 @@ index 4ffeeb5..f913a97 100644 1.8.1.6 -From 1ec0508b83dde208260e6574139ea0d1e8ecfe01 Mon Sep 17 00:00:00 2001 +From f2b725fe8b735a7e6899b5a8dc5630c6498fa277 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 25 Sep 2012 12:14:15 +0200 -Subject: [PATCH 031/123] linuxrenderer: drop method RenderMultiPass +Subject: [PATCH 041/136] linuxrenderer: drop method RenderMultiPass --- xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 9 ++------- @@ -14366,10 +15929,10 @@ Subject: [PATCH 031/123] linuxrenderer: drop method RenderMultiPass 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -index 88c7e5f..3a2278d 100644 +index e7abc7b..39ba8a4 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -@@ -1195,7 +1195,8 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) +@@ -1197,7 +1197,8 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) break; case RQ_MULTIPASS: @@ -14379,7 +15942,7 @@ index 88c7e5f..3a2278d 100644 VerifyGLState(); break; } -@@ -1327,12 +1328,6 @@ void CLinuxRendererGL::RenderSinglePass(int index, int field) +@@ -1329,12 +1330,6 @@ void CLinuxRendererGL::RenderSinglePass(int index, int field) VerifyGLState(); } @@ -14393,7 +15956,7 @@ index 88c7e5f..3a2278d 100644 { YUVPLANES &planes = m_buffers[index].fields[field]; diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoRenderers/LinuxRendererGL.h -index d72eb64..6b9046d 100644 +index aac04bd..41a1be7 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.h +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.h @@ -218,7 +218,6 @@ class CLinuxRendererGL : public CBaseRenderer @@ -14408,10 +15971,10 @@ index d72eb64..6b9046d 100644 1.8.1.6 -From 84d3b7a85900519c4ebc246db4e83cfaba4197b9 Mon Sep 17 00:00:00 2001 +From 67e034b0cec5e24c0c5e8394e27e7046e5a77f69 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 25 Sep 2012 13:20:47 +0200 -Subject: [PATCH 032/123] linuxrenderer: implement progressive weave for vdpau +Subject: [PATCH 042/136] linuxrenderer: implement progressive weave for vdpau --- xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 55 +++++++++++++++++++-------- @@ -14419,10 +15982,10 @@ Subject: [PATCH 032/123] linuxrenderer: implement progressive weave for vdpau 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -index 3a2278d..3d9f22a 100644 +index 39ba8a4..c072f5e 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -@@ -679,18 +679,6 @@ void CLinuxRendererGL::RenderUpdate(bool clear, DWORD flags, DWORD alpha) +@@ -681,18 +681,6 @@ void CLinuxRendererGL::RenderUpdate(bool clear, DWORD flags, DWORD alpha) glDisable(GL_POLYGON_STIPPLE); } @@ -14441,7 +16004,7 @@ index 3a2278d..3d9f22a 100644 else Render(flags, index); -@@ -1190,13 +1178,21 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) +@@ -1192,13 +1180,21 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) { case RQ_LOW: case RQ_SINGLEPASS: @@ -14466,7 +16029,7 @@ index 3a2278d..3d9f22a 100644 VerifyGLState(); break; } -@@ -1328,7 +1324,7 @@ void CLinuxRendererGL::RenderSinglePass(int index, int field) +@@ -1330,7 +1326,7 @@ void CLinuxRendererGL::RenderSinglePass(int index, int field) VerifyGLState(); } @@ -14475,7 +16038,7 @@ index 3a2278d..3d9f22a 100644 { YUVPLANES &planes = m_buffers[index].fields[field]; -@@ -1430,6 +1426,8 @@ void CLinuxRendererGL::RenderToFBO(int index, int field) +@@ -1432,6 +1428,8 @@ void CLinuxRendererGL::RenderToFBO(int index, int field) } m_fbo.width *= planes[0].pixpertex_x; m_fbo.height *= planes[0].pixpertex_y; @@ -14484,7 +16047,7 @@ index 3a2278d..3d9f22a 100644 // 1st Pass to video frame size glBegin(GL_QUADS); -@@ -1548,6 +1546,31 @@ void CLinuxRendererGL::RenderFromFBO() +@@ -1550,6 +1548,31 @@ void CLinuxRendererGL::RenderFromFBO() VerifyGLState(); } @@ -14517,7 +16080,7 @@ index 3a2278d..3d9f22a 100644 { #ifdef HAVE_LIBVDPAU diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoRenderers/LinuxRendererGL.h -index 6b9046d..4494eca 100644 +index 41a1be7..274f980 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.h +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.h @@ -218,12 +218,12 @@ class CLinuxRendererGL : public CBaseRenderer @@ -14539,17 +16102,17 @@ index 6b9046d..4494eca 100644 1.8.1.6 -From ec7254bd6dabe50dfaa382840b585004c1c8c883 Mon Sep 17 00:00:00 2001 +From 561523ebacefe1e8f29b6f701501cc4212daf134 Mon Sep 17 00:00:00 2001 From: fritsch Date: Thu, 28 Mar 2013 10:38:37 +0100 -Subject: [PATCH 033/123] VDPAU: silence compiler warnings +Subject: [PATCH 043/136] VDPAU: silence compiler warnings --- xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index f913a97..e9ec3d2 100644 +index 62cd72e..a0ccd9f 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -252,7 +252,7 @@ long CDecoder::Release() @@ -14638,10 +16201,10 @@ index f913a97..e9ec3d2 100644 1.8.1.6 -From 3bc3adc2abf37a0edeb829c89559b71d314c40ca Mon Sep 17 00:00:00 2001 +From b65e8eb5fd1a5ba8fc4371c73f3f5ddb9b1f4f06 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 25 Feb 2013 08:47:10 +0100 -Subject: [PATCH 034/123] vdpau: release more resources on pre-cleanup +Subject: [PATCH 044/136] vdpau: release more resources on pre-cleanup --- xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 72 +++++++++++++++++++++++--- @@ -14649,7 +16212,7 @@ Subject: [PATCH 034/123] vdpau: release more resources on pre-cleanup 2 files changed, 68 insertions(+), 6 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index e9ec3d2..9850cf0 100644 +index a0ccd9f..89ffc6e 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -1170,6 +1170,11 @@ void CMixer::Dispose() @@ -14756,7 +16319,7 @@ index e9ec3d2..9850cf0 100644 { for (unsigned int i = 0; i < m_bufferPool.outputSurfaces.size(); ++i) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h -index ef99383..39047b5 100644 +index 674571b..c0835cf 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h @@ -286,6 +286,7 @@ class CMixer : private CThread @@ -14779,10 +16342,10 @@ index ef99383..39047b5 100644 1.8.1.6 -From d35ccb80581844bbca3333347f00e6fcb93a71d0 Mon Sep 17 00:00:00 2001 +From 190abb1d038374350c9b3ec41de6d78632a58d49 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 6 Mar 2013 07:35:10 +0100 -Subject: [PATCH 035/123] vdpau: set deinterlacing method to auto, if default +Subject: [PATCH 045/136] vdpau: set deinterlacing method to auto, if default method not supported --- @@ -14790,7 +16353,7 @@ Subject: [PATCH 035/123] vdpau: set deinterlacing method to auto, if default 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index 9850cf0..0a6a1dc 100644 +index 89ffc6e..b23f530 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -2195,13 +2195,15 @@ void CMixer::InitCycle() @@ -14814,10 +16377,10 @@ index 9850cf0..0a6a1dc 100644 1.8.1.6 -From c3e2ffae7ea03c7f97534d5232c7d85fa15e89fc Mon Sep 17 00:00:00 2001 +From d0f6095e6298ed46e4ccc991d2491fada8d1a0fd Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 21 Apr 2013 09:19:34 +0200 -Subject: [PATCH 036/123] vdpau: fix deadlock if decoder is closed while +Subject: [PATCH 046/136] vdpau: fix deadlock if decoder is closed while refresh rate changes --- @@ -14825,7 +16388,7 @@ Subject: [PATCH 036/123] vdpau: fix deadlock if decoder is closed while 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index 0a6a1dc..4b4b3c3 100644 +index b23f530..2fdcf37 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -183,6 +183,8 @@ void CDecoder::Close() @@ -14855,17 +16418,17 @@ index 0a6a1dc..4b4b3c3 100644 1.8.1.6 -From a8be3fdeb938bbaafb2ed203f3603df659fbeab2 Mon Sep 17 00:00:00 2001 +From 2fc0e791999aa60262088b97e67d11fc339be17f Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sat, 1 Jun 2013 11:21:19 +0200 -Subject: [PATCH 037/123] renderer: bump buffers to 5 +Subject: [PATCH 047/136] renderer: bump buffers to 5 --- xbmc/cores/VideoRenderers/BaseRenderer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xbmc/cores/VideoRenderers/BaseRenderer.h b/xbmc/cores/VideoRenderers/BaseRenderer.h -index fe1f577..527ecf1 100644 +index 6acf2f3..f44024c 100644 --- a/xbmc/cores/VideoRenderers/BaseRenderer.h +++ b/xbmc/cores/VideoRenderers/BaseRenderer.h @@ -29,7 +29,7 @@ @@ -14881,10 +16444,10 @@ index fe1f577..527ecf1 100644 1.8.1.6 -From b0470afab151c7b6f40ef522a34971915eaf6a01 Mon Sep 17 00:00:00 2001 +From 4d6c7fbefdfedad5e67a37e8f1f33714a9cc10dd Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:41:31 +0200 -Subject: [PATCH 038/123] videoplayer: update frametime, it might change due to +Subject: [PATCH 048/136] videoplayer: update frametime, it might change due to fps detection --- @@ -14892,7 +16455,7 @@ Subject: [PATCH 038/123] videoplayer: update frametime, it might change due to 1 file changed, 2 insertions(+) diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index 3c30d0b..347e888 100644 +index b0a33de..d45d8ae 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -707,6 +707,8 @@ void CDVDPlayerVideo::Process() @@ -14908,10 +16471,10 @@ index 3c30d0b..347e888 100644 1.8.1.6 -From 3b2c4035e621d28160dc432159b61df047c6b879 Mon Sep 17 00:00:00 2001 +From e4359bc5349ccecd4b7d7511c513eadcde12bc87 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:43:06 +0200 -Subject: [PATCH 039/123] videoplayer: give streams with invalid fps a chance +Subject: [PATCH 049/136] videoplayer: give streams with invalid fps a chance for fps detection --- @@ -14919,7 +16482,7 @@ Subject: [PATCH 039/123] videoplayer: give streams with invalid fps a chance 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index 347e888..1a17145 100644 +index d45d8ae..9dc5cd6 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -1529,7 +1529,7 @@ void CDVDPlayerVideo::CalcFrameRate() @@ -14935,10 +16498,10 @@ index 347e888..1a17145 100644 1.8.1.6 -From 122cde177d428fc91114be2fb57318a6aa69ba5b Mon Sep 17 00:00:00 2001 +From 4843169664c024b7361a1191c72fdca6d17f88de Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 28 May 2012 10:49:05 +0200 -Subject: [PATCH 040/123] dvdplayer: allow rewinding at end of stream, do a +Subject: [PATCH 050/136] dvdplayer: allow rewinding at end of stream, do a seek after rewind --- @@ -14946,7 +16509,7 @@ Subject: [PATCH 040/123] dvdplayer: allow rewinding at end of stream, do a 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp -index 974ebd1..b56423b 100644 +index 1246b9f..994e7b4 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -1555,7 +1555,7 @@ void CDVDPlayer::HandlePlaySpeed() @@ -14975,10 +16538,10 @@ index 974ebd1..b56423b 100644 1.8.1.6 -From a308b831bd2e6e7a74589987a4ea805e3f10b2ae Mon Sep 17 00:00:00 2001 +From 79f7fcd5ba7b5f8ed2bc9b0df83b8d88b2173324 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 15:22:05 +0200 -Subject: [PATCH 041/123] X11: ditch SDL for video and window events +Subject: [PATCH 051/136] X11: ditch SDL for video and window events --- xbmc/Application.cpp | 2 +- @@ -14994,10 +16557,10 @@ Subject: [PATCH 041/123] X11: ditch SDL for video and window events create mode 100644 xbmc/windowing/WinEventsX11.h diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index 3937ce8..a5603a2 100644 +index ae82308..eb81f6e 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp -@@ -833,7 +833,7 @@ bool CApplication::CreateGUI() +@@ -844,7 +844,7 @@ bool CApplication::CreateGUI() uint32_t sdlFlags = 0; @@ -15007,7 +16570,7 @@ index 3937ce8..a5603a2 100644 #endif diff --git a/xbmc/system.h b/xbmc/system.h -index 7ccda52..bb6b72e 100644 +index 1f4e15f..075e44a 100644 --- a/xbmc/system.h +++ b/xbmc/system.h @@ -171,16 +171,21 @@ @@ -15045,7 +16608,7 @@ index f109bec..f981642 100644 LIB=windowing.a diff --git a/xbmc/windowing/WinEvents.h b/xbmc/windowing/WinEvents.h -index 5feb800..49adcdf 100644 +index 9e09b54..87bf855 100644 --- a/xbmc/windowing/WinEvents.h +++ b/xbmc/windowing/WinEvents.h @@ -56,6 +56,10 @@ class CWinEventsBase @@ -15894,7 +17457,7 @@ index 0000000..e9b7553 + bool m_structureChanged; +}; diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index e28b712..68e482e 100644 +index 31f5304..265e05e 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -22,7 +22,6 @@ @@ -16422,7 +17985,7 @@ index e28b712..68e482e 100644 + #endif diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index 3dae22c..25faaef 100644 +index b6b6ec4..448a1bb 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -52,6 +52,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -16462,10 +18025,10 @@ index 3dae22c..25faaef 100644 1.8.1.6 -From 9f772616412e5bc3a72e2d56ed5ae6ccc7264693 Mon Sep 17 00:00:00 2001 +From 218b76e5a0d3701e853a7837a37f781879bbe194 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 15:24:22 +0200 -Subject: [PATCH 042/123] X11: Add xbmc icon +Subject: [PATCH 052/136] X11: Add xbmc icon --- xbmc/windowing/X11/WinSystemX11.cpp | 126 +++++++++++++++++++++++++++++++++++- @@ -16473,7 +18036,7 @@ Subject: [PATCH 042/123] X11: Add xbmc icon 2 files changed, 127 insertions(+), 1 deletion(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 68e482e..9ee8d18 100644 +index 265e05e..f3ff34d 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -136,6 +136,9 @@ bool CWinSystemX11::DestroyWindow() @@ -16631,7 +18194,7 @@ index 68e482e..9ee8d18 100644 + #endif diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index 25faaef..c1e6cf1 100644 +index 448a1bb..e618268 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -77,6 +77,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -16654,10 +18217,10 @@ index 25faaef..c1e6cf1 100644 1.8.1.6 -From c3a5e18e21191c785d31fecd9013f25bdada062d Mon Sep 17 00:00:00 2001 +From 26831a9a36a7bcc6b4fd8f96ab2520006a3956de Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 20 May 2012 14:11:26 +0200 -Subject: [PATCH 043/123] X11: add SDL joystick until we have a better solution +Subject: [PATCH 053/136] X11: add SDL joystick until we have a better solution --- xbmc/windowing/WinEventsX11.cpp | 26 ++++++++++++++++++++++++++ @@ -16711,10 +18274,10 @@ index 5a8bbb8..5bc1de0 100644 1.8.1.6 -From cedafa3581d7893778c46473b32c90cde9306e9f Mon Sep 17 00:00:00 2001 +From 3423c3a34e42f14feeb11b5b6ad118ae202317e5 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Thu, 5 Jul 2012 12:35:55 +0200 -Subject: [PATCH 044/123] X11: factor out code handling device reset +Subject: [PATCH 054/136] X11: factor out code handling device reset notification --- @@ -16723,7 +18286,7 @@ Subject: [PATCH 044/123] X11: factor out code handling device reset 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 9ee8d18..fd51dc0 100644 +index f3ff34d..c5938af 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -532,14 +532,7 @@ void CWinSystemX11::CheckDisplayEvents() @@ -16763,7 +18326,7 @@ index 9ee8d18..fd51dc0 100644 { CLog::Log(LOGDEBUG, "%s - notify display change event", __FUNCTION__); diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index c1e6cf1..041ea55 100644 +index e618268..c4d4b76 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -66,6 +66,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -16778,10 +18341,10 @@ index c1e6cf1..041ea55 100644 1.8.1.6 -From a6d829d266bc04a52e8340aa2e2ea79e2e258070 Mon Sep 17 00:00:00 2001 +From 8c27a2f1921746ada6d896d3b2aaff684f7592ba Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 15:02:00 +0200 -Subject: [PATCH 045/123] X11: move xrandr events to WinEventsX11 +Subject: [PATCH 055/136] X11: move xrandr events to WinEventsX11 --- xbmc/windowing/WinEventsX11.cpp | 42 +++++++++++++++++++++++++++++++++++++ @@ -16896,7 +18459,7 @@ index e9b7553..6100933 100644 + bool m_xrrEventPending; }; diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index fd51dc0..d495443 100644 +index c5938af..9f74dd5 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -509,7 +509,7 @@ bool CWinSystemX11::Show(bool raise) @@ -16925,10 +18488,10 @@ index fd51dc0..d495443 100644 1.8.1.6 -From b8c92d9d5a2c7cbf6315d9a04be99d6501de7fe9 Mon Sep 17 00:00:00 2001 +From 698851ff884e21eaa8bb8507f0a409a65c02541e Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 12 Apr 2012 15:43:56 +0200 -Subject: [PATCH 046/123] xrandr: remove method RestoreState +Subject: [PATCH 056/136] xrandr: remove method RestoreState --- xbmc/windowing/X11/WinSystemX11.cpp | 13 +++++++++++-- @@ -16937,7 +18500,7 @@ Subject: [PATCH 046/123] xrandr: remove method RestoreState 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index d495443..d7afc3f 100644 +index 9f74dd5..05a1d60 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -79,9 +79,18 @@ bool CWinSystemX11::InitWindowSystem() @@ -16962,7 +18525,7 @@ index d495443..d7afc3f 100644 if (m_dpy) diff --git a/xbmc/windowing/X11/XRandR.cpp b/xbmc/windowing/X11/XRandR.cpp -index 30c1909..b4c95f8 100644 +index bd22dbf..df2b5fb 100644 --- a/xbmc/windowing/X11/XRandR.cpp +++ b/xbmc/windowing/X11/XRandR.cpp @@ -139,25 +139,6 @@ void CXRandR::SaveState() @@ -16992,7 +18555,7 @@ index 30c1909..b4c95f8 100644 { if ((output.name == m_currentOutput && mode.id == m_currentMode) || (output.name == "" && mode.id == "")) diff --git a/xbmc/windowing/X11/XRandR.h b/xbmc/windowing/X11/XRandR.h -index e3450fe..cf22fbf 100644 +index 0aec487..00b49dc 100644 --- a/xbmc/windowing/X11/XRandR.h +++ b/xbmc/windowing/X11/XRandR.h @@ -99,7 +99,6 @@ class CXRandR @@ -17007,10 +18570,10 @@ index e3450fe..cf22fbf 100644 1.8.1.6 -From 3715129c3cbfcf14b49f28e1721b4d869a370de3 Mon Sep 17 00:00:00 2001 +From 25150228eac582bf7c58a1ab8ff23c19b26bed94 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 20 May 2012 13:17:10 +0200 -Subject: [PATCH 047/123] xrandr: observe orientation +Subject: [PATCH 057/136] xrandr: observe orientation --- xbmc/windowing/X11/WinSystemX11.cpp | 89 ++++++++++++++++++++++++++++++------- @@ -17020,7 +18583,7 @@ Subject: [PATCH 047/123] xrandr: observe orientation 4 files changed, 82 insertions(+), 17 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index d7afc3f..6b320f2 100644 +index 05a1d60..c5ccbc4 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -84,11 +84,11 @@ bool CWinSystemX11::DestroyWindowSystem() @@ -17173,7 +18736,7 @@ index d7afc3f..6b320f2 100644 { int value; diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index 041ea55..0d4436b 100644 +index c4d4b76..0727bb9 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -73,12 +73,14 @@ class CWinSystemX11 : public CWinSystemBase @@ -17192,7 +18755,7 @@ index 041ea55..0d4436b 100644 bool m_minimized; bool m_bIgnoreNextFocusMessage; diff --git a/xbmc/windowing/X11/XRandR.cpp b/xbmc/windowing/X11/XRandR.cpp -index b4c95f8..e2576b2 100644 +index df2b5fb..29715c7 100644 --- a/xbmc/windowing/X11/XRandR.cpp +++ b/xbmc/windowing/X11/XRandR.cpp @@ -98,6 +98,13 @@ bool CXRandR::Query(bool force) @@ -17210,7 +18773,7 @@ index b4c95f8..e2576b2 100644 if (!xoutput.isConnected) continue; diff --git a/xbmc/windowing/X11/XRandR.h b/xbmc/windowing/X11/XRandR.h -index cf22fbf..71ffab4 100644 +index 00b49dc..508604d 100644 --- a/xbmc/windowing/X11/XRandR.h +++ b/xbmc/windowing/X11/XRandR.h @@ -86,6 +86,7 @@ class XOutput @@ -17225,10 +18788,10 @@ index cf22fbf..71ffab4 100644 1.8.1.6 -From 74087bc15aafee00399f86ce4387e07bcdc852b6 Mon Sep 17 00:00:00 2001 +From daca99e7b7078a1ad99d06a97317d7d4f7576c05 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 11:54:15 +0200 -Subject: [PATCH 048/123] xrandr: allow getting info for multiple screen's +Subject: [PATCH 058/136] xrandr: allow getting info for multiple screen's Refactored by: Joakim Plate --- @@ -17237,7 +18800,7 @@ Refactored by: Joakim Plate 2 files changed, 57 insertions(+), 16 deletions(-) diff --git a/xbmc/windowing/X11/XRandR.cpp b/xbmc/windowing/X11/XRandR.cpp -index e2576b2..97b1e32 100644 +index 29715c7..9e181f2 100644 --- a/xbmc/windowing/X11/XRandR.cpp +++ b/xbmc/windowing/X11/XRandR.cpp @@ -39,6 +39,7 @@ @@ -17359,7 +18922,7 @@ index e2576b2..97b1e32 100644 #endif // HAS_XRANDR diff --git a/xbmc/windowing/X11/XRandR.h b/xbmc/windowing/X11/XRandR.h -index 71ffab4..26c2653 100644 +index 508604d..d37838a 100644 --- a/xbmc/windowing/X11/XRandR.h +++ b/xbmc/windowing/X11/XRandR.h @@ -79,6 +79,7 @@ class XOutput @@ -17403,10 +18966,10 @@ index 71ffab4..26c2653 100644 1.8.1.6 -From 962e8baf6d19fb165988939a07e350b55e7b379e Mon Sep 17 00:00:00 2001 +From 2ec9d0a9b0c843ac8b4f4de2482f29ce89441479 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 11:44:00 +0200 -Subject: [PATCH 049/123] X11: fix multi-head setups +Subject: [PATCH 059/136] X11: fix multi-head setups --- language/English/strings.po | 4 +- @@ -17421,7 +18984,7 @@ Subject: [PATCH 049/123] X11: fix multi-head setups 9 files changed, 229 insertions(+), 116 deletions(-) diff --git a/language/English/strings.po b/language/English/strings.po -index eace353..10568ca 100644 +index ba414f9..940dded 100644 --- a/language/English/strings.po +++ b/language/English/strings.po @@ -999,7 +999,9 @@ msgctxt "#245" @@ -17436,7 +18999,7 @@ index eace353..10568ca 100644 msgctxt "#247" msgid "Scripts" diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index 15e9a75..9c63476 100644 +index b3ab3d1..60135a1 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -1841,6 +1841,15 @@ @@ -17472,7 +19035,7 @@ index 15e9a75..9c63476 100644 diff --git a/xbmc/rendering/gl/RenderSystemGL.h b/xbmc/rendering/gl/RenderSystemGL.h -index 5c7a288..f3fd4fb 100644 +index 662134d..292761a 100644 --- a/xbmc/rendering/gl/RenderSystemGL.h +++ b/xbmc/rendering/gl/RenderSystemGL.h @@ -44,6 +44,7 @@ class CRenderSystemGL : public CRenderSystemBase @@ -17484,7 +19047,7 @@ index 5c7a288..f3fd4fb 100644 virtual void SetViewPort(CRect& viewPort); virtual void GetViewPort(CRect& viewPort); diff --git a/xbmc/settings/DisplaySettings.cpp b/xbmc/settings/DisplaySettings.cpp -index 49b50f4..203c0f1 100644 +index 032e752..cf5deba 100644 --- a/xbmc/settings/DisplaySettings.cpp +++ b/xbmc/settings/DisplaySettings.cpp @@ -198,13 +198,19 @@ bool CDisplaySettings::OnSettingChanging(const CSetting *setting) @@ -17570,7 +19133,7 @@ index 49b50f4..203c0f1 100644 + } +} diff --git a/xbmc/settings/DisplaySettings.h b/xbmc/settings/DisplaySettings.h -index 056fc07..fe91a74 100644 +index 4540a34..618a644 100644 --- a/xbmc/settings/DisplaySettings.h +++ b/xbmc/settings/DisplaySettings.h @@ -78,6 +78,7 @@ class CDisplaySettings : public ISettingCallback, public ISubSettings, @@ -17590,7 +19153,7 @@ index 056fc07..fe91a74 100644 protected: CDisplaySettings(); diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp -index ee97753..63cdf0e 100644 +index 3f7dfaf..42a1363 100644 --- a/xbmc/settings/Settings.cpp +++ b/xbmc/settings/Settings.cpp @@ -374,6 +374,7 @@ void CSettings::Uninitialize() @@ -17619,7 +19182,7 @@ index ee97753..63cdf0e 100644 #ifdef HAS_GLES m_settingsManager->AddCondition("has_gles"); #endif -@@ -837,6 +842,7 @@ void CSettings::InitializeISettingCallbacks() +@@ -843,6 +848,7 @@ void CSettings::InitializeISettingCallbacks() settingSet.insert("videoscreen.screen"); settingSet.insert("videoscreen.resolution"); settingSet.insert("videoscreen.screenmode"); @@ -17649,7 +19212,7 @@ index d9dc911..c58067b 100644 break; } diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 6b320f2..41e7d6e 100644 +index c5ccbc4..d9654b9 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -34,7 +34,8 @@ @@ -18138,7 +19701,7 @@ index 6b320f2..41e7d6e 100644 return true; } diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index 0d4436b..0336b3b 100644 +index 0727bb9..b1eb278 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -65,15 +65,16 @@ class CWinSystemX11 : public CWinSystemBase @@ -18175,10 +19738,10 @@ index 0d4436b..0336b3b 100644 1.8.1.6 -From 1b9d4812607e358873e2a8868edf53b41c67cd15 Mon Sep 17 00:00:00 2001 +From d425584dff1c7740e6a4608cb199703fb0fb5bcf Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 11:36:32 +0200 -Subject: [PATCH 050/123] X11: remove all DefaultScreen and RootWindow macros +Subject: [PATCH 060/136] X11: remove all DefaultScreen and RootWindow macros --- xbmc/windowing/X11/WinSystemX11.cpp | 6 +++--- @@ -18187,7 +19750,7 @@ Subject: [PATCH 050/123] X11: remove all DefaultScreen and RootWindow macros 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 41e7d6e..fd07a80 100644 +index d9654b9..e2580a4 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -269,7 +269,7 @@ void CWinSystemX11::UpdateResolutions() @@ -18218,7 +19781,7 @@ index 41e7d6e..fd07a80 100644 m_minimized = true; return true; diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index 0336b3b..393399f 100644 +index b1eb278..b9154ab 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -47,6 +47,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -18230,7 +19793,7 @@ index 0336b3b..393399f 100644 virtual void ResetOSScreensaver(); virtual bool EnableFrameLimiter(); diff --git a/xbmc/windowing/X11/WinSystemX11GL.cpp b/xbmc/windowing/X11/WinSystemX11GL.cpp -index 1bea366..cc39720 100644 +index 095012f..60a6878 100644 --- a/xbmc/windowing/X11/WinSystemX11GL.cpp +++ b/xbmc/windowing/X11/WinSystemX11GL.cpp @@ -203,7 +203,7 @@ bool CWinSystemX11GL::CreateNewWindow(const CStdString& name, bool fullScreen, R @@ -18246,10 +19809,10 @@ index 1bea366..cc39720 100644 1.8.1.6 -From 25cb8d56c21407abe41750eb4ac03a6a72cc005d Mon Sep 17 00:00:00 2001 +From 2a854ad8f557b07417803aadf1bef203805ec25b Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 11:45:22 +0200 -Subject: [PATCH 051/123] X11: remove all DefaultScreen and RootWindow macros +Subject: [PATCH 061/136] X11: remove all DefaultScreen and RootWindow macros (VideoRefClock) Note this is on a separate display connection. @@ -18258,7 +19821,7 @@ Note this is on a separate display connection. 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp -index ca239cf..687e3ff 100644 +index 5bf3656..0b9e7b3 100644 --- a/xbmc/video/VideoReferenceClock.cpp +++ b/xbmc/video/VideoReferenceClock.cpp @@ -270,7 +270,7 @@ bool CVideoReferenceClock::SetupGLX() @@ -18321,10 +19884,10 @@ index ca239cf..687e3ff 100644 1.8.1.6 -From dde7b8a4d232d927c23b3d101687df45dba94886 Mon Sep 17 00:00:00 2001 +From 6e45c9935e11576ed87be25bfcddeb20de52965f Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 20 Jun 2012 17:37:11 +0200 -Subject: [PATCH 052/123] X11: recreate gl context after output has changed +Subject: [PATCH 062/136] X11: recreate gl context after output has changed --- xbmc/windowing/X11/WinSystemX11.cpp | 24 ++++++++++++++---------- @@ -18333,7 +19896,7 @@ Subject: [PATCH 052/123] X11: recreate gl context after output has changed 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index fd07a80..8f56cec 100644 +index e2580a4..dce0433 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -170,7 +170,6 @@ bool CWinSystemX11::ResizeWindow(int newWidth, int newHeight, int newLeft, int n @@ -18422,7 +19985,7 @@ index fd07a80..8f56cec 100644 } diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index 393399f..2227320 100644 +index b9154ab..05aa60e 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -93,6 +93,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -18434,7 +19997,7 @@ index 393399f..2227320 100644 private: bool IsSuitableVisual(XVisualInfo *vInfo); diff --git a/xbmc/windowing/X11/WinSystemX11GL.cpp b/xbmc/windowing/X11/WinSystemX11GL.cpp -index cc39720..dda7b14 100644 +index 60a6878..d6ba80a 100644 --- a/xbmc/windowing/X11/WinSystemX11GL.cpp +++ b/xbmc/windowing/X11/WinSystemX11GL.cpp @@ -23,6 +23,7 @@ @@ -18475,10 +20038,10 @@ index cc39720..dda7b14 100644 1.8.1.6 -From 04b267d0ada69b62e07d05dd840fde3ff2e8d72c Mon Sep 17 00:00:00 2001 +From ea23b4d9befee933789c1fa1b5075a1a3a823bbe Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 12:06:25 +0200 -Subject: [PATCH 053/123] X11: hook video reference clock in windowing +Subject: [PATCH 063/136] X11: hook video reference clock in windowing --- xbmc/video/VideoReferenceClock.cpp | 71 +++++++++++++++++++++++++++----------- @@ -18486,7 +20049,7 @@ Subject: [PATCH 053/123] X11: hook video reference clock in windowing 2 files changed, 63 insertions(+), 21 deletions(-) diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp -index 687e3ff..4287e8f 100644 +index 0b9e7b3..3bd8133 100644 --- a/xbmc/video/VideoReferenceClock.cpp +++ b/xbmc/video/VideoReferenceClock.cpp @@ -135,12 +135,23 @@ @@ -18632,7 +20195,7 @@ index 687e3ff..4287e8f 100644 //the refreshrate can be wrong on nvidia drivers, so read it from nvidia-settings when it's available diff --git a/xbmc/video/VideoReferenceClock.h b/xbmc/video/VideoReferenceClock.h -index 1791570..bcabc9f 100644 +index dd65a1b..afd71fc 100644 --- a/xbmc/video/VideoReferenceClock.h +++ b/xbmc/video/VideoReferenceClock.h @@ -30,6 +30,7 @@ @@ -18683,10 +20246,10 @@ index 1791570..bcabc9f 100644 1.8.1.6 -From ec444ec34ecb704349dc4e82417a8014e4252e3c Mon Sep 17 00:00:00 2001 +From 329948c02c86f251c1cb62c02dee4b9e0138d0b2 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 21 Jun 2012 17:26:51 +0200 -Subject: [PATCH 054/123] X11: fix video calibrations +Subject: [PATCH 064/136] X11: fix video calibrations --- xbmc/windowing/WinSystem.h | 1 + @@ -18695,7 +20258,7 @@ Subject: [PATCH 054/123] X11: fix video calibrations 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/xbmc/windowing/WinSystem.h b/xbmc/windowing/WinSystem.h -index f1a9d6f..7a812b2 100644 +index 3500a8d..0e309f9 100644 --- a/xbmc/windowing/WinSystem.h +++ b/xbmc/windowing/WinSystem.h @@ -103,6 +103,7 @@ class CWinSystemBase @@ -18707,7 +20270,7 @@ index f1a9d6f..7a812b2 100644 // text input interface virtual void EnableTextInput(bool bEnable) {} diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 8f56cec..0ead0e8 100644 +index dce0433..e7f4f61 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -318,7 +318,7 @@ void CWinSystemX11::UpdateResolutions() @@ -18763,7 +20326,7 @@ index 8f56cec..0ead0e8 100644 void CWinSystemX11::GetConnectedOutputs(std::vector *outputs) diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index 2227320..630c0e2 100644 +index 05aa60e..95672d1 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -61,6 +61,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -18778,10 +20341,10 @@ index 2227320..630c0e2 100644 1.8.1.6 -From d29b764e4396e21d57260832012ec8d05ca0f3f8 Mon Sep 17 00:00:00 2001 +From e29ff8d63cd564e8a04456ed46a66f9791768f60 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 12:00:26 +0200 -Subject: [PATCH 055/123] X11: deactivate screen saver on startup +Subject: [PATCH 065/136] X11: deactivate screen saver on startup --- xbmc/windowing/X11/WinSystemX11.cpp | 29 +++++++++++++++++++++++++++++ @@ -18789,7 +20352,7 @@ Subject: [PATCH 055/123] X11: deactivate screen saver on startup 2 files changed, 30 insertions(+) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 0ead0e8..c643177 100644 +index e7f4f61..14a4307 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -519,6 +519,33 @@ void CWinSystemX11::ResetOSScreensaver() @@ -18836,7 +20399,7 @@ index 0ead0e8..c643177 100644 { GLX_RGBA, diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index 630c0e2..f78f613 100644 +index 95672d1..51ac314 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -51,6 +51,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -18851,17 +20414,17 @@ index 630c0e2..f78f613 100644 1.8.1.6 -From 8fc2d01d984fa1dcba0b6a135d085f70e02516f8 Mon Sep 17 00:00:00 2001 +From 921bc0eb36b61dd20cbc0c73f64b1d57de7e2d76 Mon Sep 17 00:00:00 2001 From: FernetMenta Date: Thu, 5 Jul 2012 12:10:09 +0200 -Subject: [PATCH 056/123] X11: change method of going full-screen +Subject: [PATCH 066/136] X11: change method of going full-screen --- xbmc/windowing/X11/WinSystemX11.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index c643177..e1e1096 100644 +index 14a4307..66b91fd 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -36,6 +36,7 @@ @@ -18898,10 +20461,10 @@ index c643177..e1e1096 100644 1.8.1.6 -From c0ef76639af991ea31bd9188c431692f3a3c526d Mon Sep 17 00:00:00 2001 +From ae3d417b4be9fa2d650305d77ca5809226d01922 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 28 Jun 2012 19:12:39 +0200 -Subject: [PATCH 057/123] X11: reset key repeat and key modifier on focus lost +Subject: [PATCH 067/136] X11: reset key repeat and key modifier on focus lost and gain --- @@ -18933,10 +20496,10 @@ index c58067b..c9f8a20 100644 1.8.1.6 -From c7a3b7a4ce52000bbdb260e9f2142297bb531617 Mon Sep 17 00:00:00 2001 +From 0803e7aa355c5e8a5ec2985b8c052d7731259a70 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Thu, 5 Jul 2012 14:18:46 +0200 -Subject: [PATCH 058/123] X11: replace custom utf8 to unicode with charset +Subject: [PATCH 068/136] X11: replace custom utf8 to unicode with charset convertor (squash to x11 events) --- @@ -19153,10 +20716,10 @@ index 6100933..72955ad 100644 1.8.1.6 -From b99781ba1c13380f8c98414fd2b0e7735da27046 Mon Sep 17 00:00:00 2001 +From e5ed6062126c8af426a27e85aaacf2f9f40fe246 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Thu, 5 Jul 2012 14:23:54 +0200 -Subject: [PATCH 059/123] X11: fixed invalid usage of sizeof() (squash into x11 +Subject: [PATCH 069/136] X11: fixed invalid usage of sizeof() (squash into x11 changes) --- @@ -19220,17 +20783,17 @@ index 72955ad..102a076 100644 1.8.1.6 -From b279aabe373a8a7e2bfc65e2a7f5c9f539b2d86e Mon Sep 17 00:00:00 2001 +From 3cea9e4151c7aab9d885a52553b920a829fbf618 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 9 Jun 2012 18:23:53 +0200 -Subject: [PATCH 060/123] add missing keys to xbmc keytable +Subject: [PATCH 070/136] add missing keys to xbmc keytable --- xbmc/input/XBMC_keytable.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xbmc/input/XBMC_keytable.cpp b/xbmc/input/XBMC_keytable.cpp -index f18e9b1..066cd77 100644 +index b430f55..246164b 100644 --- a/xbmc/input/XBMC_keytable.cpp +++ b/xbmc/input/XBMC_keytable.cpp @@ -179,6 +179,8 @@ @@ -19246,17 +20809,17 @@ index f18e9b1..066cd77 100644 1.8.1.6 -From 156e9d1e3b67b4444366009b19b47410fd4ee60a Mon Sep 17 00:00:00 2001 +From 69be70d8245123c599ff08b2fd34077dedfd4fc4 Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 16 Mar 2012 15:57:51 +0100 -Subject: [PATCH 061/123] videorefclock: temp deactivate of nv settings +Subject: [PATCH 071/136] videorefclock: temp deactivate of nv settings --- xbmc/video/VideoReferenceClock.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp -index 4287e8f..21f59b8 100644 +index 3bd8133..59f924c 100644 --- a/xbmc/video/VideoReferenceClock.cpp +++ b/xbmc/video/VideoReferenceClock.cpp @@ -135,7 +135,7 @@ @@ -19272,17 +20835,17 @@ index 4287e8f..21f59b8 100644 1.8.1.6 -From 0a143d6a5ea9581125f476c892ab9deb93730d4b Mon Sep 17 00:00:00 2001 +From 9df52bfe9977127883d9402fdc38801370c45d32 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 20 Aug 2012 09:09:09 +0200 -Subject: [PATCH 062/123] videorefclock: ask graphics context for refresh rate +Subject: [PATCH 072/136] videorefclock: ask graphics context for refresh rate --- xbmc/video/VideoReferenceClock.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xbmc/video/VideoReferenceClock.cpp b/xbmc/video/VideoReferenceClock.cpp -index 21f59b8..0156b2c 100644 +index 59f924c..2f8bc69 100644 --- a/xbmc/video/VideoReferenceClock.cpp +++ b/xbmc/video/VideoReferenceClock.cpp @@ -30,6 +30,7 @@ @@ -19306,10 +20869,10 @@ index 21f59b8..0156b2c 100644 1.8.1.6 -From 224633df916fd15c03b9042ce8ac4d23912ce4cc Mon Sep 17 00:00:00 2001 +From d98805eb590a6288109e4a57195d72170f0ce8c0 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 9 Jul 2012 14:00:18 +0200 -Subject: [PATCH 063/123] X11: fix icon texture after +Subject: [PATCH 073/136] X11: fix icon texture after cc5ed3c2474084ebc0373a3046410e6f766e03f4 --- @@ -19317,7 +20880,7 @@ Subject: [PATCH 063/123] X11: fix icon texture after 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index e1e1096..ace57ff 100644 +index 66b91fd..b00eddc 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -872,22 +872,24 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStd @@ -19417,10 +20980,10 @@ index e1e1096..ace57ff 100644 1.8.1.6 -From e5eac0a49cf2bf417683ea22d185424473b846b8 Mon Sep 17 00:00:00 2001 +From 6cac4892fb21d6e57c746d7a1e283a52d79af39f Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 10 Jul 2012 11:14:12 +0200 -Subject: [PATCH 064/123] X11: check for window manager +Subject: [PATCH 074/136] X11: check for window manager --- xbmc/windowing/X11/WinSystemX11.cpp | 74 ++++++++++++++++++++++++++++++++++++- @@ -19428,7 +20991,7 @@ Subject: [PATCH 064/123] X11: check for window manager 2 files changed, 73 insertions(+), 2 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index ace57ff..188864b 100644 +index b00eddc..05279ad 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -814,8 +814,10 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStd @@ -19526,7 +21089,7 @@ index ace57ff..188864b 100644 + #endif diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index f78f613..f479c27 100644 +index 51ac314..ce3c289 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -101,6 +101,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -19541,17 +21104,17 @@ index f78f613..f479c27 100644 1.8.1.6 -From 1e0e335c33da59271313f587d14bec4fcda1db15 Mon Sep 17 00:00:00 2001 +From 098d70d4fad6852652aa95a2609255b278aa1e3c Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 12 Jul 2012 11:11:47 +0200 -Subject: [PATCH 065/123] X11: dont set window on xrandr if no mode available +Subject: [PATCH 075/136] X11: dont set window on xrandr if no mode available --- xbmc/windowing/X11/WinSystemX11.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 188864b..076ed82 100644 +index 05279ad..9697cbb 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -663,16 +663,17 @@ void CWinSystemX11::NotifyXRREvent() @@ -19581,17 +21144,17 @@ index 188864b..076ed82 100644 1.8.1.6 -From 8a637a5c920ad2491e1f45c36ada25fd675fe8e3 Mon Sep 17 00:00:00 2001 +From e1389a1e33971decac7a919457b8dd67252e4535 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 26 Jul 2012 09:34:28 +0200 -Subject: [PATCH 066/123] X11: fix crash after a resolution change on startup +Subject: [PATCH 076/136] X11: fix crash after a resolution change on startup --- xbmc/windowing/X11/WinSystemX11.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 076ed82..ee339d9 100644 +index 9697cbb..868071c 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -221,7 +221,8 @@ bool CWinSystemX11::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool bl @@ -19608,17 +21171,17 @@ index 076ed82..ee339d9 100644 1.8.1.6 -From 6fdb9269d58e784b1ffe846707732faadf505974 Mon Sep 17 00:00:00 2001 +From d49dd6375898d0775205b0954fd9ed9ebc0e3ec8 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 15 Sep 2012 18:27:29 +0200 -Subject: [PATCH 067/123] X11: lock graphics context in NotifyXRREvent +Subject: [PATCH 077/136] X11: lock graphics context in NotifyXRREvent --- xbmc/windowing/X11/WinSystemX11.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index ee339d9..d2dcccd 100644 +index 868071c..9ff947c 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -664,6 +664,8 @@ void CWinSystemX11::NotifyXRREvent() @@ -19634,10 +21197,10 @@ index ee339d9..d2dcccd 100644 1.8.1.6 -From cf823969dd79b155ccf6e797312ec447da8c80a9 Mon Sep 17 00:00:00 2001 +From 4f3fad4a542e166e557a34c27ae333478f9ff613 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sat, 8 Oct 2011 16:45:13 +0200 -Subject: [PATCH 068/123] ffmpeg: add xvba hwaccel +Subject: [PATCH 078/136] ffmpeg: add xvba hwaccel --- lib/ffmpeg/configure | 11 ++ @@ -20486,16 +22049,16 @@ index 1c00ac4..6437e29 100644 1.8.1.6 -From 93c92af6eceb08981a57ddd5b082118cffeb81ba Mon Sep 17 00:00:00 2001 +From db45b1127b0b81ff013e4f03b8938b3076fef306 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 12 Apr 2012 12:09:31 +0200 -Subject: [PATCH 069/123] xvba: add decoder +Subject: [PATCH 079/136] xvba: add decoder --- configure.in | 47 + language/English/strings.po | 12 +- system/settings/settings.xml | 5 + - xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 216 +- + xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 218 +- xbmc/cores/VideoRenderers/LinuxRendererGL.h | 15 +- xbmc/cores/VideoRenderers/RenderFormats.h | 1 + xbmc/cores/VideoRenderers/RenderManager.cpp | 4 + @@ -20507,7 +22070,7 @@ Subject: [PATCH 069/123] xvba: add decoder xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 1 + xbmc/settings/VideoSettings.h | 2 + xbmc/video/dialogs/GUIDialogVideoSettings.cpp | 1 + - 15 files changed, 3070 insertions(+), 7 deletions(-) + 15 files changed, 3071 insertions(+), 8 deletions(-) create mode 100644 xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp create mode 100644 xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.h @@ -20605,10 +22168,10 @@ index bd2934d..94f6455 100644 --enable-pthreads \ --enable-runtime-cpudetect \ diff --git a/language/English/strings.po b/language/English/strings.po -index 10568ca..d603702 100644 +index 940dded..1fdf542 100644 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -5773,7 +5773,11 @@ msgctxt "#13436" +@@ -5776,7 +5776,11 @@ msgctxt "#13436" msgid "Prefer VDPAU Video Mixer" msgstr "" @@ -20621,7 +22184,7 @@ index 10568ca..d603702 100644 #: system/settings/settings.xml msgctxt "#13500" -@@ -6851,7 +6855,11 @@ msgctxt "#16325" +@@ -6854,7 +6858,11 @@ msgctxt "#16325" msgid "VDPAU - Bob" msgstr "" @@ -20635,7 +22198,7 @@ index 10568ca..d603702 100644 msgctxt "#16400" msgid "Post-processing" diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index 9c63476..a863dae 100644 +index 60135a1..4655d59 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -410,6 +410,11 @@ @@ -20651,7 +22214,7 @@ index 9c63476..a863dae 100644 HAS_GL 4 diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -index 3d9f22a..c663423 100644 +index c072f5e..73a8cc8 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp @@ -65,6 +65,9 @@ @@ -20674,7 +22237,14 @@ index 3d9f22a..c663423 100644 } CLinuxRendererGL::YUVBUFFER::~YUVBUFFER() -@@ -604,6 +610,9 @@ void CLinuxRendererGL::ReleaseBuffer(int idx) +@@ -600,12 +606,15 @@ void CLinuxRendererGL::Flush() + + void CLinuxRendererGL::ReleaseBuffer(int idx) + { +-#if defined(HAVE_LIBVDPAU) || defined(HAVE_LIBVA) || defined(TARGET_DARWIN) ++#if defined(HAVE_LIBVDPAU) || defined(HAVE_LIBVA) || defined(TARGET_DARWIN) || defined(HAVE_LIBXVBA) + YUVBUFFER &buf = m_buffers[idx]; + #endif #ifdef HAVE_LIBVDPAU SAFE_RELEASE(buf.vdpau); #endif @@ -20684,7 +22254,7 @@ index 3d9f22a..c663423 100644 #ifdef HAVE_LIBVA buf.vaapi.surface.reset(); #endif -@@ -869,7 +878,7 @@ void CLinuxRendererGL::UpdateVideoFilter() +@@ -871,7 +880,7 @@ void CLinuxRendererGL::UpdateVideoFilter() case VS_SCALINGMETHOD_LINEAR: SetTextureFilter(m_scalingMethod == VS_SCALINGMETHOD_NEAREST ? GL_NEAREST : GL_LINEAR); m_renderQuality = RQ_SINGLEPASS; @@ -20693,7 +22263,7 @@ index 3d9f22a..c663423 100644 { m_pVideoFilterShader = new StretchFilterShader(); if (!m_pVideoFilterShader->CompileAndLink()) -@@ -955,6 +964,11 @@ void CLinuxRendererGL::LoadShaders(int field) +@@ -957,6 +966,11 @@ void CLinuxRendererGL::LoadShaders(int field) CLog::Log(LOGNOTICE, "GL: Using CVBREF render method"); m_renderMethod = RENDER_CVREF; } @@ -20705,7 +22275,7 @@ index 3d9f22a..c663423 100644 else { int requestedMethod = CSettings::Get().GetInt("videoplayer.rendermethod"); -@@ -1103,6 +1117,12 @@ void CLinuxRendererGL::LoadShaders(int field) +@@ -1105,6 +1119,12 @@ void CLinuxRendererGL::LoadShaders(int field) m_textureCreate = &CLinuxRendererGL::CreateCVRefTexture; m_textureDelete = &CLinuxRendererGL::DeleteCVRefTexture; } @@ -20718,7 +22288,7 @@ index 3d9f22a..c663423 100644 else { // setup default YV12 texture handlers -@@ -1215,6 +1235,13 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) +@@ -1217,6 +1237,13 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) RenderVAAPI(renderBuffer, m_currentField); } #endif @@ -20732,7 +22302,7 @@ index 3d9f22a..c663423 100644 else { // RENDER_CVREF uses the same render as the default case -@@ -1731,6 +1758,77 @@ void CLinuxRendererGL::RenderVAAPI(int index, int field) +@@ -1733,6 +1760,77 @@ void CLinuxRendererGL::RenderVAAPI(int index, int field) #endif } @@ -20810,7 +22380,7 @@ index 3d9f22a..c663423 100644 void CLinuxRendererGL::RenderSoftware(int index, int field) { // used for textues uploaded from rgba or CVPixelBuffers. -@@ -2764,6 +2862,88 @@ bool CLinuxRendererGL::CreateCVRefTexture(int index) +@@ -2766,6 +2864,88 @@ bool CLinuxRendererGL::CreateCVRefTexture(int index) return true; } @@ -20899,7 +22469,7 @@ index 3d9f22a..c663423 100644 void CLinuxRendererGL::UploadYUV422PackedTexture(int source) { YUVBUFFER& buf = m_buffers[source]; -@@ -3338,6 +3518,9 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) +@@ -3340,6 +3520,9 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) if (m_renderMethod & RENDER_VAAPI) return false; @@ -20909,7 +22479,7 @@ index 3d9f22a..c663423 100644 return (m_renderMethod & RENDER_GLSL) || (m_renderMethod & RENDER_ARB) || ((m_renderMethod & RENDER_SW) && glewIsSupported("GL_ARB_imaging") == GL_TRUE); -@@ -3351,6 +3534,9 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) +@@ -3353,6 +3536,9 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) if (m_renderMethod & RENDER_VAAPI) return false; @@ -20919,7 +22489,7 @@ index 3d9f22a..c663423 100644 return (m_renderMethod & RENDER_GLSL) || (m_renderMethod & RENDER_ARB) || ((m_renderMethod & RENDER_SW) && glewIsSupported("GL_ARB_imaging") == GL_TRUE); -@@ -3374,7 +3560,8 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) +@@ -3376,7 +3562,8 @@ bool CLinuxRendererGL::Supports(ERENDERFEATURE feature) if (feature == RENDERFEATURE_NONLINSTRETCH) { if (((m_renderMethod & RENDER_GLSL) && !(m_renderMethod & RENDER_POT)) || @@ -20929,7 +22499,7 @@ index 3d9f22a..c663423 100644 return true; } -@@ -3446,6 +3633,16 @@ bool CLinuxRendererGL::Supports(EINTERLACEMETHOD method) +@@ -3448,6 +3635,16 @@ bool CLinuxRendererGL::Supports(EINTERLACEMETHOD method) return false; } @@ -20946,7 +22516,7 @@ index 3d9f22a..c663423 100644 #ifdef TARGET_DARWIN // YADIF too slow for HD but we have no methods to fall back // to something that works so just turn it off. -@@ -3495,7 +3692,7 @@ bool CLinuxRendererGL::Supports(ESCALINGMETHOD method) +@@ -3497,7 +3694,7 @@ bool CLinuxRendererGL::Supports(ESCALINGMETHOD method) return false; if ((glewIsSupported("GL_EXT_framebuffer_object") && (m_renderMethod & RENDER_GLSL)) || @@ -20955,7 +22525,7 @@ index 3d9f22a..c663423 100644 { // spline36 and lanczos3 are only allowed through advancedsettings.xml if(method != VS_SCALINGMETHOD_SPLINE36 -@@ -3562,7 +3759,8 @@ unsigned int CLinuxRendererGL::GetProcessorSize() +@@ -3564,7 +3761,8 @@ unsigned int CLinuxRendererGL::GetProcessorSize() if(m_format == RENDER_FMT_VDPAU || m_format == RENDER_FMT_VDPAU_420 || m_format == RENDER_FMT_VAAPI @@ -20965,7 +22535,7 @@ index 3d9f22a..c663423 100644 return 1; else return 0; -@@ -3618,4 +3816,14 @@ void CLinuxRendererGL::AddProcessor(struct __CVBuffer *cvBufferRef, int index) +@@ -3620,4 +3818,14 @@ void CLinuxRendererGL::AddProcessor(struct __CVBuffer *cvBufferRef, int index) } #endif @@ -20981,7 +22551,7 @@ index 3d9f22a..c663423 100644 + #endif diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.h b/xbmc/cores/VideoRenderers/LinuxRendererGL.h -index 4494eca..161c43f 100644 +index 274f980..958a06c 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.h +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.h @@ -44,6 +44,8 @@ @@ -21042,7 +22612,7 @@ index 4494eca..161c43f 100644 typedef YUVBUFFER YUVBUFFERS[NUM_BUFFERS]; diff --git a/xbmc/cores/VideoRenderers/RenderFormats.h b/xbmc/cores/VideoRenderers/RenderFormats.h -index 6ed62be..70ae9bf 100644 +index 9ad1671..cfa4726 100644 --- a/xbmc/cores/VideoRenderers/RenderFormats.h +++ b/xbmc/cores/VideoRenderers/RenderFormats.h @@ -35,6 +35,7 @@ enum ERenderFormat { @@ -21054,7 +22624,7 @@ index 6ed62be..70ae9bf 100644 #endif diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp -index a59ee4d..f94760c 100644 +index 5b08c1e..7e12a46 100644 --- a/xbmc/cores/VideoRenderers/RenderManager.cpp +++ b/xbmc/cores/VideoRenderers/RenderManager.cpp @@ -941,6 +941,10 @@ int CXBMCRenderManager::AddVideoPicture(DVDVideoPicture& pic) @@ -21069,7 +22639,7 @@ index a59ee4d..f94760c 100644 return index; diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h -index 13a2648..347f09b 100644 +index 43befb4..46369c7 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodec.h @@ -35,6 +35,7 @@ @@ -21091,7 +22661,7 @@ index 13a2648..347f09b 100644 struct { COpenMax *openMax; diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp -index ec93844..9d4a6b4 100644 +index e133d78..6dabb25 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp @@ -60,6 +60,9 @@ @@ -23901,7 +25471,7 @@ index 0000000..3bd0cea + +} diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index 1a17145..41e64a5 100644 +index 9dc5cd6..b18cc79 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -1017,6 +1017,7 @@ static std::string GetRenderFormatName(ERenderFormat format) @@ -23913,7 +25483,7 @@ index 1a17145..41e64a5 100644 } return "UNKNOWN"; diff --git a/xbmc/settings/VideoSettings.h b/xbmc/settings/VideoSettings.h -index b7c4116..a370bd8 100644 +index 0de785d..f3fed5d 100644 --- a/xbmc/settings/VideoSettings.h +++ b/xbmc/settings/VideoSettings.h @@ -63,6 +63,8 @@ enum EINTERLACEMETHOD @@ -23926,7 +25496,7 @@ index b7c4116..a370bd8 100644 }; diff --git a/xbmc/video/dialogs/GUIDialogVideoSettings.cpp b/xbmc/video/dialogs/GUIDialogVideoSettings.cpp -index 27ed5ee..007ad74 100644 +index 2bad710..2146e9b 100644 --- a/xbmc/video/dialogs/GUIDialogVideoSettings.cpp +++ b/xbmc/video/dialogs/GUIDialogVideoSettings.cpp @@ -111,6 +111,7 @@ void CGUIDialogVideoSettings::CreateSettings() @@ -23941,10 +25511,10 @@ index 27ed5ee..007ad74 100644 1.8.1.6 -From a1d6b330e8316cb52b0b9f97c3be92269760a878 Mon Sep 17 00:00:00 2001 +From a0188b0aa26af315b65cad2f4ca5ba979298330f Mon Sep 17 00:00:00 2001 From: fritsch Date: Sun, 4 Nov 2012 16:24:10 +0100 -Subject: [PATCH 070/123] xvba: add string for available decoders - we are +Subject: [PATCH 080/136] xvba: add string for available decoders - we are important so make sure we are there --- @@ -23952,7 +25522,7 @@ Subject: [PATCH 070/123] xvba: add string for available decoders - we are 1 file changed, 5 insertions(+) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp -index 1477264..37a5994 100644 +index 022c613..a9ce269 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp @@ -177,6 +177,11 @@ CDVDVideoCodec* CDVDFactoryCodec::CreateVideoCodec(CDVDStreamInfo &hint, unsigne @@ -23971,17 +25541,17 @@ index 1477264..37a5994 100644 1.8.1.6 -From 033dbfbc37f33a1670357c39e6f82dd36e457ab0 Mon Sep 17 00:00:00 2001 +From f7f273c95dc1e31e8f141a73e102494b61d61a18 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 16 Jun 2012 12:46:30 +0200 -Subject: [PATCH 071/123] xvba: do not use vaapi if xvba is present +Subject: [PATCH 081/136] xvba: do not use vaapi if xvba is present --- xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp -index 2343b11..f102cba 100644 +index 7951ee7..ff0b550 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp @@ -261,6 +261,15 @@ void CDecoder::Close() @@ -24004,10 +25574,10 @@ index 2343b11..f102cba 100644 1.8.1.6 -From 4115edbecd5b2dd346f1ea727191737a5d7cfe74 Mon Sep 17 00:00:00 2001 +From b101c41a7a96fdadafea70fa4c063c934f18bf04 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 23 Aug 2012 19:39:49 +0200 -Subject: [PATCH 072/123] ffmpeg: add av_find_default_stream_index to interface +Subject: [PATCH 082/136] ffmpeg: add av_find_default_stream_index to interface --- lib/DllAvFormat.h | 4 ++++ @@ -24053,10 +25623,10 @@ index ee41fa8..56605cb 100644 1.8.1.6 -From 8ffb30c17bd7e2547d8f9822ea3c7ba79ddd5d85 Mon Sep 17 00:00:00 2001 +From b303da3d1b9f8d8be5fe562ecdbbcaabc182ba5e Mon Sep 17 00:00:00 2001 From: fritsch Date: Sat, 13 Apr 2013 11:30:39 +0200 -Subject: [PATCH 073/123] XVBA: revisit draw functions +Subject: [PATCH 083/136] XVBA: revisit draw functions --- lib/ffmpeg/libavcodec/xvba_h264.c | 2 +- @@ -24093,10 +25663,10 @@ index bf3d9c2..ff35a28 100644 1.8.1.6 -From 79d420cd213211980405eaec3985973c5747ec20 Mon Sep 17 00:00:00 2001 +From ec2cddc3964a33d9a129b07a303d774cb4c222b8 Mon Sep 17 00:00:00 2001 From: fritsch Date: Sat, 13 Apr 2013 12:06:02 +0200 -Subject: [PATCH 074/123] (ffmpeg): Make XVBA codec available +Subject: [PATCH 084/136] (ffmpeg): Make XVBA codec available --- lib/ffmpeg/libavcodec/vc1dec.c | 3 +++ @@ -24120,10 +25690,10 @@ index 2130c74..4d611f9 100644 1.8.1.6 -From ac4379b9aae918e85751a5dfcf9be58387696da8 Mon Sep 17 00:00:00 2001 +From 7ed99cc1226802f84c6de6388945a833b0e0040d Mon Sep 17 00:00:00 2001 From: fritsch Date: Sat, 13 Apr 2013 16:38:50 +0200 -Subject: [PATCH 075/123] ffmpeg: XVBA-VC1 use v->second_field instead of +Subject: [PATCH 085/136] ffmpeg: XVBA-VC1 use v->second_field instead of !s->first_field to make VC1 interlaced working --- @@ -24147,10 +25717,10 @@ index ff35a28..04e7983 100644 1.8.1.6 -From 7f1f427783474710997c79fc53a087c1bf23537d Mon Sep 17 00:00:00 2001 +From 36e745498803b6eb8ac6e7d6b1aa3e5b9e9342b3 Mon Sep 17 00:00:00 2001 From: fritsch Date: Sat, 27 Apr 2013 17:36:15 +0200 -Subject: [PATCH 076/123] XVBA: Only set second_field when we are interlaced +Subject: [PATCH 086/136] XVBA: Only set second_field when we are interlaced and an interlaced field --- @@ -24174,10 +25744,10 @@ index 04e7983..eb90c12 100644 1.8.1.6 -From b58048413f9b77a3cb6495607743ee5cb6e8b452 Mon Sep 17 00:00:00 2001 +From 1a5b0d7e28e410df41d97659fc327c39308001e1 Mon Sep 17 00:00:00 2001 From: fritsch Date: Sat, 27 Apr 2013 22:08:50 +0200 -Subject: [PATCH 077/123] xvba: translate picture_structure to a value xvba +Subject: [PATCH 087/136] xvba: translate picture_structure to a value xvba understands --- @@ -24260,10 +25830,10 @@ index eb90c12..c98dba5 100644 1.8.1.6 -From 50a161f1bc214ad3383ec0c089bc4c92d8e2df4b Mon Sep 17 00:00:00 2001 +From 4cc7e515c75eb853055cc74367751829fc425b96 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 30 Apr 2013 21:18:55 +0200 -Subject: [PATCH 078/123] ffmpeg xvba: fix vc1 field interlace +Subject: [PATCH 088/136] ffmpeg xvba: fix vc1 field interlace --- lib/ffmpeg/libavcodec/xvba.c | 4 ++-- @@ -24315,10 +25885,10 @@ index c98dba5..e7a85a7 100644 1.8.1.6 -From 53256575a97d81b9fcedd1438c34323dc0b27824 Mon Sep 17 00:00:00 2001 +From f058a132f053d6bb86452d249a74cd6f05c80fad Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 30 Apr 2013 21:19:07 +0200 -Subject: [PATCH 079/123] xvba: fix vc1 field interlace +Subject: [PATCH 089/136] xvba: fix vc1 field interlace --- xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp | 3 +++ @@ -24342,10 +25912,10 @@ index 43a331f..568632f 100644 1.8.1.6 -From 66f7bfd6bdf9f765fc2a6eecfb58d69883e7a059 Mon Sep 17 00:00:00 2001 +From ea6a0186f1321a74ff34ce0e72df4ad7939b7981 Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 30 Apr 2013 21:40:55 +0200 -Subject: [PATCH 080/123] xvba: vc1 - honor psf +Subject: [PATCH 090/136] xvba: vc1 - honor psf --- xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp | 3 +++ @@ -24376,17 +25946,17 @@ index 568632f..1db9363 100644 1.8.1.6 -From 5b328a69f54b582ba3987cb218233bbe587e91f9 Mon Sep 17 00:00:00 2001 +From 4c749cca39425daa10533aa8a5cc7498fa236766 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 4 May 2013 10:31:32 +0200 -Subject: [PATCH 081/123] xvba: squash me, settings +Subject: [PATCH 091/136] xvba: squash me, settings --- xbmc/settings/Settings.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp -index 63cdf0e..02eef76 100644 +index 42a1363..861bd1a 100644 --- a/xbmc/settings/Settings.cpp +++ b/xbmc/settings/Settings.cpp @@ -747,6 +747,9 @@ void CSettings::InitializeConditions() @@ -24403,10 +25973,10 @@ index 63cdf0e..02eef76 100644 1.8.1.6 -From 0aaeb0a6313953818000e7203d527dfee8906f83 Mon Sep 17 00:00:00 2001 +From abf5055b780fca08a495f76b1258c2eea3fe84d2 Mon Sep 17 00:00:00 2001 From: fritsch Date: Fri, 24 May 2013 12:02:02 +0200 -Subject: [PATCH 082/123] XVBA: Limit video to 2048x1152 as this is the max all +Subject: [PATCH 092/136] XVBA: Limit video to 2048x1152 as this is the max all blocks can handle --- @@ -24436,10 +26006,10 @@ index 1db9363..54d7aea 100644 1.8.1.6 -From f4f97fb0313df385610d2d3d2164cbb2f4390773 Mon Sep 17 00:00:00 2001 +From ba8f531d904709116d23f135fd512c6fb7eb666c Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 20 Aug 2012 16:06:39 +0200 -Subject: [PATCH 083/123] dvdplayer: observe pts counter overflow +Subject: [PATCH 093/136] dvdplayer: observe pts counter overflow --- .../cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 198 ++++++++++++++++++++- @@ -24447,7 +26017,7 @@ Subject: [PATCH 083/123] dvdplayer: observe pts counter overflow 2 files changed, 201 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp -index 18c1c4b..0e25041 100644 +index 9c395da..356b965 100644 --- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp @@ -18,7 +18,6 @@ @@ -24702,7 +26272,7 @@ index 18c1c4b..0e25041 100644 { CSingleLock lock(m_critSection); diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h -index b78094e..17d2f7a 100644 +index aef5ab1..35abbdf 100644 --- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h +++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h @@ -100,6 +100,7 @@ class CDVDDemuxFFmpeg : public CDVDDemux @@ -24726,10 +26296,10 @@ index b78094e..17d2f7a 100644 1.8.1.6 -From 1936aa6817db5c98cd21a2ab7a9656f183ac9509 Mon Sep 17 00:00:00 2001 +From 9eba76f46ea93a2d60b8277296a93eb04a431c7c Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 2 Oct 2012 13:02:10 +0200 -Subject: [PATCH 084/123] dvdplayer: avoid short screen flicker caused by +Subject: [PATCH 094/136] dvdplayer: avoid short screen flicker caused by unnecessary reconfigure of renderer --- @@ -24737,7 +26307,7 @@ Subject: [PATCH 084/123] dvdplayer: avoid short screen flicker caused by 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index 41e64a5..74b4391 100644 +index b18cc79..adee04a 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -1095,7 +1095,7 @@ int CDVDPlayerVideo::OutputPicture(const DVDVideoPicture* src, double pts) @@ -24762,10 +26332,10 @@ index 41e64a5..74b4391 100644 1.8.1.6 -From 869811cf0359978019c5edc2277610d9a58a47e1 Mon Sep 17 00:00:00 2001 +From 129c2699510723ffa813b04d098377018854a40c Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 11 Oct 2012 12:05:50 +0200 -Subject: [PATCH 085/123] vdpau: advanced settings for auto deinterlacing +Subject: [PATCH 095/136] vdpau: advanced settings for auto deinterlacing --- xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 8 ++++---- @@ -24774,7 +26344,7 @@ Subject: [PATCH 085/123] vdpau: advanced settings for auto deinterlacing 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index 4b4b3c3..fc4c030 100644 +index 2fdcf37..2805613 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -1800,10 +1800,10 @@ EINTERLACEMETHOD CMixer::GetDeinterlacingMethod(bool log /* = false */) @@ -24793,7 +26363,7 @@ index 4b4b3c3..fc4c030 100644 if (deint != -1) { diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp -index bd08884..a7a7233 100644 +index 292750d..f0cb9dd 100644 --- a/xbmc/settings/AdvancedSettings.cpp +++ b/xbmc/settings/AdvancedSettings.cpp @@ -169,6 +169,8 @@ void CAdvancedSettings::Initialize() @@ -24831,10 +26401,10 @@ index 3a52878..3e6901b 100644 1.8.1.6 -From ad793502d0586581120666555f6b6d231c1b249d Mon Sep 17 00:00:00 2001 +From ffa4c08a6d26b68604c4980728a91569097f530d Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 2 Nov 2012 13:20:03 +0100 -Subject: [PATCH 086/123] player: fix rewind +Subject: [PATCH 096/136] player: fix rewind --- xbmc/cores/dvdplayer/DVDMessage.h | 5 ++++- @@ -24845,7 +26415,7 @@ Subject: [PATCH 086/123] player: fix rewind 5 files changed, 31 insertions(+), 16 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDMessage.h b/xbmc/cores/dvdplayer/DVDMessage.h -index 3f65ced..ad434d2 100644 +index 2ea8b8f..e8274f9 100644 --- a/xbmc/cores/dvdplayer/DVDMessage.h +++ b/xbmc/cores/dvdplayer/DVDMessage.h @@ -220,7 +220,7 @@ class CDVDMsgPlayerSetState : public CDVDMsg @@ -24882,7 +26452,7 @@ index 3f65ced..ad434d2 100644 class CDVDMsgPlayerSeekChapter : public CDVDMsg diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp -index b56423b..cdc4b95 100644 +index 994e7b4..c8a4585 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -1556,11 +1556,13 @@ void CDVDPlayer::HandlePlaySpeed() @@ -24987,7 +26557,7 @@ index b56423b..cdc4b95 100644 UpdatePlayState(0); diff --git a/xbmc/cores/dvdplayer/DVDPlayer.h b/xbmc/cores/dvdplayer/DVDPlayer.h -index 6da30eb..69b659b 100644 +index c6b9ce3..c49b9e7 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.h +++ b/xbmc/cores/dvdplayer/DVDPlayer.h @@ -304,7 +304,7 @@ class CDVDPlayer : public IPlayer, public CThread, public IDVDPlayer @@ -25012,7 +26582,7 @@ index 6da30eb..69b659b 100644 int m_errorCount; diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index 74b4391..11e0b26 100644 +index adee04a..e28c57d 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -1500,7 +1500,7 @@ double CDVDPlayerVideo::GetCurrentPts() @@ -25034,7 +26604,7 @@ index 74b4391..11e0b26 100644 if (!m_pVideoCodec->GetCodecStats(iDecoderPts, iSkippedDeint, interlaced)) iDecoderPts = pts; diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.h b/xbmc/cores/dvdplayer/DVDPlayerVideo.h -index 3c3e007..6ae3860 100644 +index ec30fc5..be22aef 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.h +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.h @@ -50,6 +50,7 @@ class CDroppingStats @@ -25049,17 +26619,17 @@ index 3c3e007..6ae3860 100644 1.8.1.6 -From 13a147ecc9caadc5933691d90af691b4878303f1 Mon Sep 17 00:00:00 2001 +From e1373b7a234d42c675a4394afcfdca25e85ff28b Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 23 Nov 2012 17:41:12 +0100 -Subject: [PATCH 087/123] xrandr: fix query for multiple screens +Subject: [PATCH 097/136] xrandr: fix query for multiple screens --- xbmc/windowing/X11/XRandR.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/xbmc/windowing/X11/XRandR.cpp b/xbmc/windowing/X11/XRandR.cpp -index 97b1e32..a3d3543 100644 +index 9e181f2..ce0a02b 100644 --- a/xbmc/windowing/X11/XRandR.cpp +++ b/xbmc/windowing/X11/XRandR.cpp @@ -57,12 +57,14 @@ bool CXRandR::Query(bool force) @@ -25093,10 +26663,10 @@ index 97b1e32..a3d3543 100644 1.8.1.6 -From 0925b7658bf2ed75cea29963c2a535e7829e5b1a Mon Sep 17 00:00:00 2001 +From a8e1b0e463c796066fcd66309b974ed7d699bb25 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 2 Dec 2012 15:46:55 +0100 -Subject: [PATCH 088/123] X11: add debug log to print out refresh after xrr +Subject: [PATCH 098/136] X11: add debug log to print out refresh after xrr event --- @@ -25104,7 +26674,7 @@ Subject: [PATCH 088/123] X11: add debug log to print out refresh after xrr 1 file changed, 6 insertions(+) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index d2dcccd..7403785 100644 +index 9ff947c..a3394e6 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -683,6 +683,12 @@ void CWinSystemX11::NotifyXRREvent() @@ -25124,10 +26694,10 @@ index d2dcccd..7403785 100644 1.8.1.6 -From 9f1759a1b344dbc1b038ce14336381de5dc9dbc1 Mon Sep 17 00:00:00 2001 +From b02869e45241811e11468721a45ddd574a8f00cc Mon Sep 17 00:00:00 2001 From: xbmc Date: Tue, 11 Dec 2012 11:08:13 +0100 -Subject: [PATCH 089/123] X11: dont call XCloseDisplay on shutdown, it crashes +Subject: [PATCH 099/136] X11: dont call XCloseDisplay on shutdown, it crashes when powered doen by cec on ATI --- @@ -25135,7 +26705,7 @@ Subject: [PATCH 089/123] X11: dont call XCloseDisplay on shutdown, it crashes 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 7403785..0e39867 100644 +index a3394e6..b941c14 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -110,7 +110,8 @@ bool CWinSystemX11::DestroyWindowSystem() @@ -25152,17 +26722,17 @@ index 7403785..0e39867 100644 1.8.1.6 -From 6e7a31afeb0107b9636ffb0790ce348ef50cad5e Mon Sep 17 00:00:00 2001 +From f4d209618fabd698c22843bfd5ae5503c8ec4c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Coutant?= Date: Wed, 12 Dec 2012 19:49:47 +0100 -Subject: [PATCH 090/123] x11: support for multiple x screens +Subject: [PATCH 100/136] x11: support for multiple x screens --- xbmc/windowing/X11/XRandR.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xbmc/windowing/X11/XRandR.cpp b/xbmc/windowing/X11/XRandR.cpp -index a3d3543..8846bc6 100644 +index ce0a02b..aa27d2b 100644 --- a/xbmc/windowing/X11/XRandR.cpp +++ b/xbmc/windowing/X11/XRandR.cpp @@ -92,7 +92,7 @@ bool CXRandR::Query(bool force, int screennum) @@ -25178,10 +26748,10 @@ index a3d3543..8846bc6 100644 1.8.1.6 -From 7876a7ae280e920cf6978e4afa48f4ebdedc3910 Mon Sep 17 00:00:00 2001 +From 52ec48f34857ee51438bec6726713d76a1b9a220 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 24 Dec 2012 16:02:42 +0100 -Subject: [PATCH 091/123] pvr: increase changes counter of stream on stream +Subject: [PATCH 101/136] pvr: increase changes counter of stream on stream change, cosmetics after dd307930d39d92f145a01a16600cd00e01ec39be --- @@ -25189,7 +26759,7 @@ Subject: [PATCH 091/123] pvr: increase changes counter of stream on stream 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxPVRClient.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxPVRClient.cpp -index 305ba07..3ad9792 100644 +index 7e35581..7adfa27 100644 --- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxPVRClient.cpp +++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxPVRClient.cpp @@ -339,9 +339,7 @@ void CDVDDemuxPVRClient::RequestStreams() @@ -25209,16 +26779,16 @@ index 305ba07..3ad9792 100644 st->m_parser_split = true; + st->changes++; } - else if (props.stream[i].iCodecType == AVMEDIA_TYPE_VIDEO) + else if (props.stream[i].iCodecType == XBMC_CODEC_TYPE_VIDEO) { -- 1.8.1.6 -From 7bef6de9b9afa5d67b467fa06612e2eafef9b81e Mon Sep 17 00:00:00 2001 +From 899be2ee7821494b1288d628726a55c7358f1de1 Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 17 Jan 2013 16:03:22 +0100 -Subject: [PATCH 092/123] X11: add keymapping for XF86XK_Sleep +Subject: [PATCH 102/136] X11: add keymapping for XF86XK_Sleep --- xbmc/windowing/WinEventsX11.cpp | 1 + @@ -25240,17 +26810,17 @@ index 4a5aab4..da5d412 100644 1.8.1.6 -From 8511f31601ff6970648ed51204cc55102dafbf1c Mon Sep 17 00:00:00 2001 +From bb11996a98324a9aa649dd5c4bc5dde7a56b4646 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 21 Jan 2013 09:00:19 +0100 -Subject: [PATCH 093/123] X11: remove toggle full screen after resume +Subject: [PATCH 103/136] X11: remove toggle full screen after resume --- xbmc/powermanagement/PowerManager.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/xbmc/powermanagement/PowerManager.cpp b/xbmc/powermanagement/PowerManager.cpp -index f2a063f..f1e3c4f 100644 +index fa2a21d..c47219c 100644 --- a/xbmc/powermanagement/PowerManager.cpp +++ b/xbmc/powermanagement/PowerManager.cpp @@ -260,11 +260,6 @@ void CPowerManager::OnWake() @@ -25269,17 +26839,17 @@ index f2a063f..f1e3c4f 100644 1.8.1.6 -From a0368631b8ed581ae1fa54bd7b51a3cc4323e8c5 Mon Sep 17 00:00:00 2001 +From da18dc246c24c1f5e41193fccd9fbdd998e4b862 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 23 Jan 2013 17:03:02 +0100 -Subject: [PATCH 094/123] xrandr: set screen on mode change command +Subject: [PATCH 104/136] xrandr: set screen on mode change command --- xbmc/windowing/X11/XRandR.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xbmc/windowing/X11/XRandR.cpp b/xbmc/windowing/X11/XRandR.cpp -index 8846bc6..e6d6240 100644 +index aa27d2b..67bf6ca 100644 --- a/xbmc/windowing/X11/XRandR.cpp +++ b/xbmc/windowing/X11/XRandR.cpp @@ -246,7 +246,7 @@ bool CXRandR::SetMode(XOutput output, XMode mode) @@ -25295,10 +26865,10 @@ index 8846bc6..e6d6240 100644 1.8.1.6 -From 9071be89472ecbcc05ffa4bb967883a0b53e3a07 Mon Sep 17 00:00:00 2001 +From 85c1875c1ed563e78620ee21e96e90a1ea390ef5 Mon Sep 17 00:00:00 2001 From: xbmc Date: Wed, 23 Jan 2013 17:03:39 +0100 -Subject: [PATCH 095/123] X11: recreate glx context when output changes +Subject: [PATCH 105/136] X11: recreate glx context when output changes --- xbmc/windowing/X11/WinSystemX11.cpp | 6 +++--- @@ -25306,7 +26876,7 @@ Subject: [PATCH 095/123] X11: recreate glx context when output changes 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 0e39867..d865cd7 100644 +index b941c14..c84e793 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -407,11 +407,11 @@ bool CWinSystemX11::IsSuitableVisual(XVisualInfo *vInfo) @@ -25333,7 +26903,7 @@ index 0e39867..d865cd7 100644 g_graphicsContext.Clear(0); g_graphicsContext.Flip(dr); diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index f479c27..7345c06 100644 +index ce3c289..311e4cc 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -74,7 +74,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -25349,56 +26919,51 @@ index f479c27..7345c06 100644 1.8.1.6 -From 76daa1b4fa31511125dc2d3532fc510fcd6a1697 Mon Sep 17 00:00:00 2001 +From 8ff7803668859d0b56739338c9cfea0a50b28fad Mon Sep 17 00:00:00 2001 From: xbmc Date: Fri, 14 Dec 2012 14:19:15 +0100 -Subject: [PATCH 096/123] pvr: do not show selection dialog for a single menu +Subject: [PATCH 106/136] pvr: do not show selection dialog for a single menu hook --- - xbmc/pvr/addons/PVRClients.cpp | 19 +++++++++++-------- - 1 file changed, 11 insertions(+), 8 deletions(-) + xbmc/pvr/addons/PVRClients.cpp | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/xbmc/pvr/addons/PVRClients.cpp b/xbmc/pvr/addons/PVRClients.cpp -index 2b43bcb..d07f23d 100644 +index c84bd4d..a39584b 100644 --- a/xbmc/pvr/addons/PVRClients.cpp +++ b/xbmc/pvr/addons/PVRClients.cpp -@@ -728,16 +728,19 @@ void CPVRClients::ProcessMenuHooks(int iClientID, PVR_MENUHOOK_CAT cat, const CF - if (GetConnectedClient(iClientID, client) && client->HaveMenuHooks(cat)) +@@ -729,6 +729,7 @@ void CPVRClients::ProcessMenuHooks(int iClientID, PVR_MENUHOOK_CAT cat, const CF { hooks = client->GetMenuHooks(); -- std::vector hookIDs; + std::vector hookIDs; + int selection = 0; -- CGUIDialogSelect* pDialog = (CGUIDialogSelect*)g_windowManager.GetWindow(WINDOW_DIALOG_SELECT); -- pDialog->Reset(); -- pDialog->SetHeading(19196); -- for (unsigned int i = 0; i < hooks->size(); i++) -- pDialog->Add(client->GetString(hooks->at(i).iLocalizedStringId)); + CGUIDialogSelect* pDialog = (CGUIDialogSelect*)g_windowManager.GetWindow(WINDOW_DIALOG_SELECT); + pDialog->Reset(); +@@ -739,9 +740,11 @@ void CPVRClients::ProcessMenuHooks(int iClientID, PVR_MENUHOOK_CAT cat, const CF + pDialog->Add(client->GetString(hooks->at(i).iLocalizedStringId)); + hookIDs.push_back(i); + } - pDialog->DoModal(); -+ if (hooks->size() > 1) +- +- int selection = pDialog->GetSelectedLabel(); ++ if (hookIDs.size() > 1) + { -+ CGUIDialogSelect* pDialog = (CGUIDialogSelect*)g_windowManager.GetWindow(WINDOW_DIALOG_SELECT); -+ pDialog->Reset(); -+ pDialog->SetHeading(19196); -+ for (unsigned int i = 0; i < hooks->size(); i++) -+ pDialog->Add(client->GetString(hooks->at(i).iLocalizedStringId)); + pDialog->DoModal(); + selection = pDialog->GetSelectedLabel(); + } - -- int selection = pDialog->GetSelectedLabel(); if (selection >= 0) - client->CallMenuHook(hooks->at(selection), item); + client->CallMenuHook(hooks->at(hookIDs.at(selection)), item); } -- 1.8.1.6 -From 79107721f0b07baa19fcc25931de6fc5d6c0fecf Mon Sep 17 00:00:00 2001 +From d96801eb4eb8fe38f8217890de6b0728b9c00d67 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 3 Feb 2013 08:17:16 +0100 -Subject: [PATCH 097/123] X11: use default screen parameters if no output +Subject: [PATCH 107/136] X11: use default screen parameters if no output connected --- @@ -25406,7 +26971,7 @@ Subject: [PATCH 097/123] X11: use default screen parameters if no output 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index d865cd7..97975dd 100644 +index c84e793..5215f4d 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -205,25 +205,27 @@ bool CWinSystemX11::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool bl @@ -25502,10 +27067,10 @@ index d865cd7..97975dd 100644 1.8.1.6 -From a8e44a830153163fd330b0ceb4dcb5b9554c5a73 Mon Sep 17 00:00:00 2001 +From 3b55e3a3239d6d78abe5a5bb515e9e0791269d11 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 23 Mar 2013 15:13:32 +0100 -Subject: [PATCH 098/123] X11: create parent window +Subject: [PATCH 108/136] X11: create parent window --- xbmc/windowing/X11/WinSystemX11.cpp | 69 +++++++++++++++++++++++-------------- @@ -25513,7 +27078,7 @@ Subject: [PATCH 098/123] X11: create parent window 2 files changed, 44 insertions(+), 27 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 97975dd..0a3efff 100644 +index 5215f4d..e49fa98 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -53,6 +53,7 @@ @@ -25755,7 +27320,7 @@ index 97975dd..0a3efff 100644 CDirtyRegionList dr; diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index 7345c06..770ae84 100644 +index 311e4cc..49365a8 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -79,7 +79,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -25771,10 +27336,10 @@ index 7345c06..770ae84 100644 1.8.1.6 -From 106ab1d2c77591f37d915727cf0f3ab8c876b523 Mon Sep 17 00:00:00 2001 +From 5886b4f4c1f33dc17d0f0bd6737ffb445443261c Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 24 Mar 2013 12:30:12 +0100 -Subject: [PATCH 099/123] X11: use system key repeat rate instead of hardcoded +Subject: [PATCH 109/136] X11: use system key repeat rate instead of hardcoded one, taken from 58fd64b194e38b73b5f3132744bab35e994e7441 --- @@ -25976,10 +27541,10 @@ index 102a076..5b1f3fa 100644 1.8.1.6 -From a647eace0d91644e7216187dcb4608df7d2bfa69 Mon Sep 17 00:00:00 2001 +From 93f2e693d0f4079e0fc5be4db844683166bb97c6 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 24 Mar 2013 16:04:48 +0100 -Subject: [PATCH 100/123] linux: use CLOCK_MONOTONIC_RAW as this is not subject +Subject: [PATCH 110/136] linux: use CLOCK_MONOTONIC_RAW as this is not subject to NTP --- @@ -25988,7 +27553,7 @@ Subject: [PATCH 100/123] linux: use CLOCK_MONOTONIC_RAW as this is not subject 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/xbmc/threads/SystemClock.cpp b/xbmc/threads/SystemClock.cpp -index 5a1c3ea..6dea6bf 100644 +index 5bb749c..2f995d0 100644 --- a/xbmc/threads/SystemClock.cpp +++ b/xbmc/threads/SystemClock.cpp @@ -42,7 +42,7 @@ @@ -26001,7 +27566,7 @@ index 5a1c3ea..6dea6bf 100644 #endif if (!start_time_set) diff --git a/xbmc/utils/TimeUtils.cpp b/xbmc/utils/TimeUtils.cpp -index 8304ef6..ba27257 100644 +index c06b8c5..4390d2e 100644 --- a/xbmc/utils/TimeUtils.cpp +++ b/xbmc/utils/TimeUtils.cpp @@ -43,7 +43,7 @@ int64_t CurrentHostCounter(void) @@ -26017,17 +27582,17 @@ index 8304ef6..ba27257 100644 1.8.1.6 -From 2cef9ccf704ba1e9144a318044e4cd622a2a4fde Mon Sep 17 00:00:00 2001 +From d302ad05afaf2abe50cc17b0ad76bcd20b30250d Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 28 Mar 2013 15:18:53 +0100 -Subject: [PATCH 101/123] OMXPlayer: some caching fixes for pvr +Subject: [PATCH 111/136] OMXPlayer: some caching fixes for pvr --- xbmc/cores/omxplayer/OMXPlayer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp -index f20c399..c096f32 100644 +index b3d4314..12f6087 100644 --- a/xbmc/cores/omxplayer/OMXPlayer.cpp +++ b/xbmc/cores/omxplayer/OMXPlayer.cpp @@ -2459,7 +2459,8 @@ void COMXPlayer::HandleMessages() @@ -26044,20 +27609,20 @@ index f20c399..c096f32 100644 1.8.1.6 -From 4ed5d6875bd066d4d1ab8518facd02ecb166829c Mon Sep 17 00:00:00 2001 +From d7b3c8730b73b45e21f8e2c6af5ae13fc1a2408f Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 28 Mar 2013 20:50:59 +0100 -Subject: [PATCH 102/123] fix incorrect display of fps when dr kicks in +Subject: [PATCH 112/136] fix incorrect display of fps when dr kicks in --- xbmc/Application.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp -index a5603a2..ce0a147 100644 +index eb81f6e..93a790c 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp -@@ -2142,10 +2142,11 @@ void CApplication::Render() +@@ -2153,10 +2153,11 @@ void CApplication::Render() if (frameTime < singleFrameTime) Sleep(singleFrameTime - frameTime); } @@ -26074,17 +27639,17 @@ index a5603a2..ce0a147 100644 1.8.1.6 -From 9d33e9711b3ff21d18832c2db087e6d5cd04f3c4 Mon Sep 17 00:00:00 2001 +From 9e585b158ee04aa95ed4cfe3f7d51bb3d38cd627 Mon Sep 17 00:00:00 2001 From: xbmc Date: Mon, 8 Apr 2013 11:18:31 +0200 -Subject: [PATCH 103/123] squash to dropping control +Subject: [PATCH 113/136] squash to dropping control --- xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp -index 11e0b26..3f915ce 100644 +index e28c57d..3c3309b 100644 --- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp @@ -39,6 +39,7 @@ @@ -26099,10 +27664,10 @@ index 11e0b26..3f915ce 100644 1.8.1.6 -From 9fa7033fc9da50c54ad133e7ea016eaab89967c9 Mon Sep 17 00:00:00 2001 +From 22a6a2ad21e3bbfac94102794f9141634d6f759b Mon Sep 17 00:00:00 2001 From: xbmc Date: Thu, 11 Apr 2013 12:33:46 +0200 -Subject: [PATCH 104/123] pvr: try SwtichChannel when selecting a channel via +Subject: [PATCH 114/136] pvr: try SwtichChannel when selecting a channel via EPG --- @@ -26110,7 +27675,7 @@ Subject: [PATCH 104/123] pvr: try SwtichChannel when selecting a channel via 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/xbmc/pvr/windows/GUIWindowPVRGuide.cpp b/xbmc/pvr/windows/GUIWindowPVRGuide.cpp -index 6b999e4..256a295 100644 +index 8616980..198b074 100644 --- a/xbmc/pvr/windows/GUIWindowPVRGuide.cpp +++ b/xbmc/pvr/windows/GUIWindowPVRGuide.cpp @@ -427,15 +427,16 @@ bool CGUIWindowPVRGuide::PlayEpgItem(CFileItem *item) @@ -26137,10 +27702,10 @@ index 6b999e4..256a295 100644 1.8.1.6 -From b807258fddaca8f65a6552633ada3e75412271d4 Mon Sep 17 00:00:00 2001 +From 572ed7a6fe6427533c92ea6637dc800759c7bf6f Mon Sep 17 00:00:00 2001 From: xbmc Date: Sat, 13 Apr 2013 08:32:06 +0200 -Subject: [PATCH 105/123] X11: fix mouse coverage +Subject: [PATCH 115/136] X11: fix mouse coverage --- xbmc/windowing/X11/WinSystemX11.cpp | 11 ++++++++--- @@ -26148,7 +27713,7 @@ Subject: [PATCH 105/123] X11: fix mouse coverage 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 0a3efff..bf95bc7 100644 +index e49fa98..186a28e 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -581,10 +581,10 @@ void CWinSystemX11::NotifyAppFocusChange(bool bGaining) @@ -26191,7 +27756,7 @@ index 0a3efff..bf95bc7 100644 CDirtyRegionList dr; RefreshGlxContext(!m_currentOutput.Equals(output)); diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index 770ae84..084f546 100644 +index 49365a8..924af1d 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -88,6 +88,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -26206,10 +27771,10 @@ index 770ae84..084f546 100644 1.8.1.6 -From 59d09d7e25cc8654a1d89d4e1f55596c8ad3cd16 Mon Sep 17 00:00:00 2001 +From f397661d5f0dbc97d6d133a4326deeca7db44e11 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Wed, 8 May 2013 13:14:58 +0200 -Subject: [PATCH 106/123] X11: fix incorrectly used screen num in desktop +Subject: [PATCH 116/136] X11: fix incorrectly used screen num in desktop resolution --- @@ -26217,7 +27782,7 @@ Subject: [PATCH 106/123] X11: fix incorrectly used screen num in desktop 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index bf95bc7..0221036 100644 +index 186a28e..66955b8 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -266,9 +266,9 @@ void CWinSystemX11::UpdateResolutions() @@ -26244,10 +27809,10 @@ index bf95bc7..0221036 100644 1.8.1.6 -From f2fecf3c39f9939bd4504f1148a8d93b9e67eabe Mon Sep 17 00:00:00 2001 +From 758cbebfba5fb5dcddca399a7fcd1c49382015f8 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 9 May 2013 12:07:09 +0200 -Subject: [PATCH 107/123] X11: do not overwrite user selected monitor with +Subject: [PATCH 117/136] X11: do not overwrite user selected monitor with fallback --- @@ -26256,7 +27821,7 @@ Subject: [PATCH 107/123] X11: do not overwrite user selected monitor with 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 0221036..e768c44 100644 +index 66955b8..2ce64af 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -170,7 +170,7 @@ bool CWinSystemX11::ResizeWindow(int newWidth, int newHeight, int newLeft, int n @@ -26357,7 +27922,7 @@ index 0221036..e768c44 100644 if (out) CLog::Log(LOGDEBUG, "%s - current output: %s, mode: %s, refresh: %.3f", __FUNCTION__ diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index 084f546..30f5fa0 100644 +index 924af1d..2fb9e0f 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -94,6 +94,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -26372,10 +27937,10 @@ index 084f546..30f5fa0 100644 1.8.1.6 -From 80fa9e33ccd53aa00bae4c6750cb91483eab4a70 Mon Sep 17 00:00:00 2001 +From 21f9058201f4968525f53dc6d05e486ad0fb8f14 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sun, 12 May 2013 10:50:30 +0200 -Subject: [PATCH 108/123] xrandr: add turn on/off to wrapper +Subject: [PATCH 118/136] xrandr: add turn on/off to wrapper --- xbmc/windowing/X11/XRandR.cpp | 78 +++++++++++++++++++++++++++++++++++++++---- @@ -26383,7 +27948,7 @@ Subject: [PATCH 108/123] xrandr: add turn on/off to wrapper 2 files changed, 75 insertions(+), 9 deletions(-) diff --git a/xbmc/windowing/X11/XRandR.cpp b/xbmc/windowing/X11/XRandR.cpp -index e6d6240..b76c4f6 100644 +index 67bf6ca..4e480bf 100644 --- a/xbmc/windowing/X11/XRandR.cpp +++ b/xbmc/windowing/X11/XRandR.cpp @@ -28,6 +28,7 @@ @@ -26514,7 +28079,7 @@ index e6d6240..b76c4f6 100644 Query(); diff --git a/xbmc/windowing/X11/XRandR.h b/xbmc/windowing/X11/XRandR.h -index 26c2653..2741879 100644 +index d37838a..059062f 100644 --- a/xbmc/windowing/X11/XRandR.h +++ b/xbmc/windowing/X11/XRandR.h @@ -94,8 +94,8 @@ class CXRandR @@ -26541,10 +28106,10 @@ index 26c2653..2741879 100644 1.8.1.6 -From 658f7678d3c10cebffeafd04979a6f66929f0a43 Mon Sep 17 00:00:00 2001 +From cbec1e01b383d19b0f830d252fe8913f0c9f55ea Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sun, 19 May 2013 12:55:35 +0200 -Subject: [PATCH 109/123] xrandr: add GetPreferredMode to wrapper +Subject: [PATCH 119/136] xrandr: add GetPreferredMode to wrapper --- xbmc/windowing/X11/XRandR.cpp | 23 +++++++++++++++++++++++ @@ -26552,7 +28117,7 @@ Subject: [PATCH 109/123] xrandr: add GetPreferredMode to wrapper 2 files changed, 24 insertions(+) diff --git a/xbmc/windowing/X11/XRandR.cpp b/xbmc/windowing/X11/XRandR.cpp -index b76c4f6..380a194 100644 +index 4e480bf..4809821 100644 --- a/xbmc/windowing/X11/XRandR.cpp +++ b/xbmc/windowing/X11/XRandR.cpp @@ -347,6 +347,29 @@ XMode CXRandR::GetCurrentMode(CStdString outputName) @@ -26586,7 +28151,7 @@ index b76c4f6..380a194 100644 { Query(); diff --git a/xbmc/windowing/X11/XRandR.h b/xbmc/windowing/X11/XRandR.h -index 2741879..24ad1d0 100644 +index 059062f..ab7cc63 100644 --- a/xbmc/windowing/X11/XRandR.h +++ b/xbmc/windowing/X11/XRandR.h @@ -98,6 +98,7 @@ class CXRandR @@ -26601,10 +28166,10 @@ index 2741879..24ad1d0 100644 1.8.1.6 -From c2d9632a75a8f659f58bd0ad1367242639840b07 Mon Sep 17 00:00:00 2001 +From 5d21236a1a099b7daa68b956ab39161bbe22151f Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sat, 11 May 2013 17:12:12 +0200 -Subject: [PATCH 110/123] X11: multi-head improvement - poll for desired output +Subject: [PATCH 120/136] X11: multi-head improvement - poll for desired output if we do not get an xrr event --- @@ -26619,10 +28184,10 @@ Subject: [PATCH 110/123] X11: multi-head improvement - poll for desired output 8 files changed, 105 insertions(+), 12 deletions(-) diff --git a/language/English/strings.po b/language/English/strings.po -index d603702..79a3996 100644 +index 1fdf542..38d0b08 100644 --- a/language/English/strings.po +++ b/language/English/strings.po -@@ -6232,7 +6232,7 @@ msgctxt "#14071" +@@ -6235,7 +6235,7 @@ msgctxt "#14071" msgid "Allow file renaming and deletion" msgstr "" @@ -26631,7 +28196,7 @@ index d603702..79a3996 100644 msgctxt "#14074" msgid "Set timezone" -@@ -6364,7 +6364,12 @@ msgctxt "#14100" +@@ -6367,7 +6367,12 @@ msgctxt "#14100" msgid "Stop ripping CD" msgstr "" @@ -26646,7 +28211,7 @@ index d603702..79a3996 100644 #: xbmc/dialogs/GUIDialogFavourites.cpp msgctxt "#15015" diff --git a/system/settings/settings.xml b/system/settings/settings.xml -index a863dae..1102691 100644 +index 4655d59..1875ad4 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -1855,6 +1855,11 @@ @@ -26670,7 +28235,7 @@ index a863dae..1102691 100644 false diff --git a/xbmc/settings/DisplaySettings.cpp b/xbmc/settings/DisplaySettings.cpp -index 203c0f1..dfc1ab8 100644 +index cf5deba..0cbcdd1 100644 --- a/xbmc/settings/DisplaySettings.cpp +++ b/xbmc/settings/DisplaySettings.cpp @@ -244,6 +244,10 @@ bool CDisplaySettings::OnSettingChanging(const CSetting *setting) @@ -26720,7 +28285,7 @@ index 5b1f3fa..d4a4b47 100644 bool m_xrrEventPending; }; diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index e768c44..6b1ed87 100644 +index 2ce64af..7e4b637 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -250,18 +250,62 @@ void CWinSystemX11::UpdateResolutions() @@ -26849,7 +28414,7 @@ index e768c44..6b1ed87 100644 found = true; break; diff --git a/xbmc/windowing/X11/WinSystemX11.h b/xbmc/windowing/X11/WinSystemX11.h -index 30f5fa0..9c7ecdd 100644 +index 2fb9e0f..ec01bf7 100644 --- a/xbmc/windowing/X11/WinSystemX11.h +++ b/xbmc/windowing/X11/WinSystemX11.h @@ -68,7 +68,7 @@ class CWinSystemX11 : public CWinSystemBase @@ -26862,7 +28427,7 @@ index 30f5fa0..9c7ecdd 100644 bool IsCurrentOutput(CStdString output); void NotifyMouseCoverage(bool covered); diff --git a/xbmc/windowing/X11/XRandR.cpp b/xbmc/windowing/X11/XRandR.cpp -index 380a194..650a6ef 100644 +index 4809821..1ad26b2 100644 --- a/xbmc/windowing/X11/XRandR.cpp +++ b/xbmc/windowing/X11/XRandR.cpp @@ -149,10 +149,14 @@ bool CXRandR::Query(bool force, int screennum, bool ignoreoff) @@ -26885,10 +28450,10 @@ index 380a194..650a6ef 100644 1.8.1.6 -From e3f99b95970e08f6e36867152534378b3e064e1d Mon Sep 17 00:00:00 2001 +From 71cc7a9d64c06d3fe0f3a13f6e14a1b2175a35f6 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Wed, 15 May 2013 09:14:34 +0200 -Subject: [PATCH 111/123] X11: ignore mouse move event form other windows +Subject: [PATCH 121/136] X11: ignore mouse move event form other windows --- xbmc/windowing/WinEventsX11.cpp | 4 +++- @@ -26920,17 +28485,17 @@ index 879d8f2..2ec9b6f 100644 1.8.1.6 -From b3ec49babe443c5c1e0156e86992dcc39ac29dec Mon Sep 17 00:00:00 2001 +From 0072bf85d4c6a8046cbc0bbf27a80033906f2bfe Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sun, 2 Jun 2013 14:53:45 +0200 -Subject: [PATCH 112/123] vdpau: fix segfault caused by uninitialized member +Subject: [PATCH 122/136] vdpau: fix segfault caused by uninitialized member --- xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index fc4c030..9bafdd7 100644 +index 2805613..cdfceb7 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -90,6 +90,7 @@ @@ -26945,17 +28510,17 @@ index fc4c030..9bafdd7 100644 1.8.1.6 -From 4ffa47f4352b8ddc59242615c86115781e5412ea Mon Sep 17 00:00:00 2001 +From 9ab5f948068b49d38cc721f1e1107ac4f23f3a5b Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Tue, 11 Jun 2013 16:13:45 +0200 -Subject: [PATCH 113/123] vdpau: sync video mixer +Subject: [PATCH 123/136] vdpau: sync video mixer --- xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index 9bafdd7..55ef4dc 100644 +index cdfceb7..75ac6f0 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -2350,6 +2350,21 @@ void CMixer::ProcessPicture() @@ -26984,10 +28549,10 @@ index 9bafdd7..55ef4dc 100644 1.8.1.6 -From 890c33ae9afbca2659b1244aa7c039279f454ea1 Mon Sep 17 00:00:00 2001 +From c32f6f0f83cf5e85526e24753b9af7d4baf2b08b Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Tue, 11 Jun 2013 16:20:29 +0200 -Subject: [PATCH 114/123] renderer: allow some lateness within vblank interval +Subject: [PATCH 124/136] renderer: allow some lateness within vblank interval --- xbmc/cores/VideoRenderers/RenderManager.cpp | 12 ++++++++++-- @@ -26995,7 +28560,7 @@ Subject: [PATCH 114/123] renderer: allow some lateness within vblank interval 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/xbmc/cores/VideoRenderers/RenderManager.cpp b/xbmc/cores/VideoRenderers/RenderManager.cpp -index f94760c..83a824a 100644 +index 7e12a46..9347766 100644 --- a/xbmc/cores/VideoRenderers/RenderManager.cpp +++ b/xbmc/cores/VideoRenderers/RenderManager.cpp @@ -398,6 +398,8 @@ void CXBMCRenderManager::FrameFinish() @@ -27032,7 +28597,7 @@ index f94760c..83a824a 100644 ++curr; ++prev; diff --git a/xbmc/cores/VideoRenderers/RenderManager.h b/xbmc/cores/VideoRenderers/RenderManager.h -index 7a3a530..480e4dc 100644 +index befd851..27283ec 100644 --- a/xbmc/cores/VideoRenderers/RenderManager.h +++ b/xbmc/cores/VideoRenderers/RenderManager.h @@ -251,6 +251,7 @@ class CXBMCRenderManager @@ -27047,10 +28612,10 @@ index 7a3a530..480e4dc 100644 1.8.1.6 -From 28912445572715df8588111eba8848d283f12233 Mon Sep 17 00:00:00 2001 +From 6a67efb103960272e96ef716cbeff0d2880db689 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Fri, 14 Jun 2013 09:23:22 +0200 -Subject: [PATCH 115/123] vdpau: calculate timestamp of second field when doing +Subject: [PATCH 125/136] vdpau: calculate timestamp of second field when doing deinterlacing --- @@ -27058,7 +28623,7 @@ Subject: [PATCH 115/123] vdpau: calculate timestamp of second field when doing 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index 55ef4dc..27d63f5 100644 +index 75ac6f0..67b6cf2 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -2314,7 +2314,9 @@ void CMixer::ProcessPicture() @@ -27076,17 +28641,17 @@ index 55ef4dc..27d63f5 100644 1.8.1.6 -From 2eb311f322f2b671218447472a89ca1125707801 Mon Sep 17 00:00:00 2001 +From a42f4fb77882658c70d9e53a0c2510395d005572 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Fri, 14 Jun 2013 10:46:58 +0200 -Subject: [PATCH 116/123] vdpau: comment debug log: long decoding time +Subject: [PATCH 126/136] vdpau: comment debug log: long decoding time --- xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index 27d63f5..593f96c 100644 +index 67b6cf2..55430a6 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -874,7 +874,7 @@ void CDecoder::FFDrawSlice(struct AVCodecContext *s, @@ -27115,10 +28680,10 @@ index 27d63f5..593f96c 100644 1.8.1.6 -From 686e6da18cec2138c1543fa402296eb92c7daadc Mon Sep 17 00:00:00 2001 +From 0f900c89fd4136858fcb45365004dd236499fcf5 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 16 Jun 2013 13:22:58 +0200 -Subject: [PATCH 117/123] X11: another fix for mouse coverage +Subject: [PATCH 127/136] X11: another fix for mouse coverage --- xbmc/windowing/WinEventsX11.cpp | 6 ++++-- @@ -27151,20 +28716,20 @@ index 2ec9b6f..4ed978c 100644 1.8.1.6 -From 1814ed1f05d82067956c1eaec459f7eeace006c9 Mon Sep 17 00:00:00 2001 +From 15b76d91f51cb399b9574fe2758255214c7fba66 Mon Sep 17 00:00:00 2001 From: xbmc Date: Sun, 16 Jun 2013 13:23:19 +0200 -Subject: [PATCH 118/123] renderer: delete fence on uninit +Subject: [PATCH 128/136] renderer: delete fence on uninit --- xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -index c663423..858d39d 100644 +index 73a8cc8..6b28601 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -@@ -1164,7 +1164,12 @@ void CLinuxRendererGL::UnInit() +@@ -1166,7 +1166,12 @@ void CLinuxRendererGL::UnInit() // YV12 textures for (int i = 0; i < NUM_BUFFERS; ++i) @@ -27181,20 +28746,20 @@ index c663423..858d39d 100644 1.8.1.6 -From 90727fe2c507dccd7dfc308a094a492a301ef763 Mon Sep 17 00:00:00 2001 +From 168265eeba10a227cee2c310d8812f67ced95a25 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sun, 16 Jun 2013 14:28:01 +0200 -Subject: [PATCH 119/123] renderer: limit fence to vdpau +Subject: [PATCH 129/136] renderer: limit fence to vdpau --- xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -index 858d39d..bb198f3 100644 +index 6b28601..1594d45 100644 --- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp -@@ -1254,14 +1254,17 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) +@@ -1256,14 +1256,17 @@ void CLinuxRendererGL::Render(DWORD flags, int renderBuffer) VerifyGLState(); } @@ -27222,10 +28787,10 @@ index 858d39d..bb198f3 100644 1.8.1.6 -From 6d8df3121b0e0b4f8e70ef454b04dd36783fbbf7 Mon Sep 17 00:00:00 2001 +From 804b001ee6c35f10dbb8076816250e8fccaf04f4 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Thu, 4 Jul 2013 16:38:26 +0200 -Subject: [PATCH 120/123] XVBA: replace CODEC_IS with AV_CODEC_ID +Subject: [PATCH 130/136] XVBA: replace CODEC_IS with AV_CODEC_ID --- xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp | 14 +++++++------- @@ -27300,17 +28865,17 @@ index 54d7aea..5845dbf 100644 1.8.1.6 -From aca51d06f3589e934dbb49d44b45a81a08e29d52 Mon Sep 17 00:00:00 2001 +From 4de4eabbb2532bb841618980625ce1973e858377 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Fri, 5 Jul 2013 12:14:00 +0200 -Subject: [PATCH 121/123] X11: set windows class name +Subject: [PATCH 131/136] X11: set windows class name --- xbmc/windowing/X11/WinSystemX11.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp -index 6b1ed87..30eff67 100644 +index 7e4b637..44e40a3 100644 --- a/xbmc/windowing/X11/WinSystemX11.cpp +++ b/xbmc/windowing/X11/WinSystemX11.cpp @@ -980,8 +980,10 @@ bool CWinSystemX11::SetWindow(int width, int height, bool fullscreen, const CStd @@ -27345,17 +28910,17 @@ index 6b1ed87..30eff67 100644 1.8.1.6 -From 18f918782577c79e8cb1cef6ad0650c2668baa92 Mon Sep 17 00:00:00 2001 +From d5461fcb39aea90cd9deb3ccac1dd25a0d6fd865 Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Sat, 13 Jul 2013 20:00:45 +0200 -Subject: [PATCH 122/123] VDPAU: revert sync mixer, does a busy wait +Subject: [PATCH 132/136] VDPAU: revert sync mixer, does a busy wait --- xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp | 31 +++++++++++++------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp -index 593f96c..f630bcb 100644 +index 55430a6..aac0646 100644 --- a/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp @@ -1139,7 +1139,7 @@ void CVdpauRenderPicture::ReturnUnused() @@ -27414,10 +28979,10 @@ index 593f96c..f630bcb 100644 1.8.1.6 -From da1ff12885a9aec8e6cc1eb7a060e9a3f6dcc2e4 Mon Sep 17 00:00:00 2001 +From b6d69ffe7399e8f75927b32ae8b5c421247b2bf7 Mon Sep 17 00:00:00 2001 From: fritsch Date: Sun, 14 Jul 2013 14:21:52 +0200 -Subject: [PATCH 123/123] ActiveAE: Make ActiveAE default Audio Engine to get +Subject: [PATCH 133/136] ActiveAE: Make ActiveAE default Audio Engine to get it tested via ppa --- @@ -27425,7 +28990,7 @@ Subject: [PATCH 123/123] ActiveAE: Make ActiveAE default Audio Engine to get 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xbmc/cores/AudioEngine/AEFactory.cpp b/xbmc/cores/AudioEngine/AEFactory.cpp -index d5517f3..07b4095 100644 +index 250056e..9c2ccb6 100644 --- a/xbmc/cores/AudioEngine/AEFactory.cpp +++ b/xbmc/cores/AudioEngine/AEFactory.cpp @@ -97,7 +97,7 @@ bool CAEFactory::LoadEngine() @@ -27440,3 +29005,99 @@ index d5517f3..07b4095 100644 -- 1.8.1.6 + +From 81ab9de24651da35b3dc3f1d4e1b292c7ac5877b Mon Sep 17 00:00:00 2001 +From: xbmc +Date: Sun, 21 Jul 2013 13:03:45 +0200 +Subject: [PATCH 134/136] ffmpeg: xvba - add missing pix formats for xvba + +--- + lib/ffmpeg/libavcodec/h263dec.c | 3 +++ + lib/ffmpeg/libavcodec/h264.c | 3 +++ + 2 files changed, 6 insertions(+) + +diff --git a/lib/ffmpeg/libavcodec/h263dec.c b/lib/ffmpeg/libavcodec/h263dec.c +index e231b08..6fcd2a0 100644 +--- a/lib/ffmpeg/libavcodec/h263dec.c ++++ b/lib/ffmpeg/libavcodec/h263dec.c +@@ -769,6 +769,9 @@ int ff_h263_decode_frame(AVCodecContext *avctx, + #if CONFIG_VDPAU + AV_PIX_FMT_VDPAU, + #endif ++#if CONFIG_XVBA ++ AV_PIX_FMT_XVBA_VLD, ++#endif + AV_PIX_FMT_YUV420P, + AV_PIX_FMT_NONE + }; +diff --git a/lib/ffmpeg/libavcodec/h264.c b/lib/ffmpeg/libavcodec/h264.c +index 299039f..2f628ab 100644 +--- a/lib/ffmpeg/libavcodec/h264.c ++++ b/lib/ffmpeg/libavcodec/h264.c +@@ -101,6 +101,9 @@ + #if CONFIG_H264_VDPAU_HWACCEL + AV_PIX_FMT_VDPAU, + #endif ++#if CONFIG_H264_XVBA_HWACCEL ++ AV_PIX_FMT_XVBA_VLD, ++#endif + AV_PIX_FMT_YUVJ420P, + AV_PIX_FMT_NONE + }; +-- +1.8.1.6 + + +From fe7dcabef8bb02c29494206818bb20491767cbc0 Mon Sep 17 00:00:00 2001 +From: spiff +Date: Tue, 16 Jul 2013 14:34:04 +0200 +Subject: [PATCH 135/136] fixed: typo + +--- + language/English/strings.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/language/English/strings.po b/language/English/strings.po +index 38d0b08..484c564 100644 +--- a/language/English/strings.po ++++ b/language/English/strings.po +@@ -6369,7 +6369,7 @@ msgstr "" + + #: xbmc/settings/settings.xml + msgctxt "#14101" +-msgid "Swtich off other Monitor" ++msgid "Switch off other Monitor" + msgstr "" + + #empty strings from id 14102 to 15014 +-- +1.8.1.6 + + +From 275709a2b99e437d2940bc2b3126b96700e03d39 Mon Sep 17 00:00:00 2001 +From: Rainer Hochecker +Date: Thu, 25 Jul 2013 17:18:13 +0200 +Subject: [PATCH 136/136] ActiveAE: slightly reduce buffer size + +--- + xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +index 4b64235..7835e81 100644 +--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp ++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +@@ -30,8 +30,8 @@ + #include "settings/AdvancedSettings.h" + #include "windowing/WindowingFactory.h" + +-#define MAX_CACHE_LEVEL 0.5 // total cache time of stream in seconds +-#define MAX_WATER_LEVEL 0.25 // buffered time after stream stages in seconds ++#define MAX_CACHE_LEVEL 0.4 // total cache time of stream in seconds ++#define MAX_WATER_LEVEL 0.2 // buffered time after stream stages in seconds + + void CEngineStats::Reset(unsigned int sampleRate) + { +-- +1.8.1.6 + diff --git a/packages/mediacenter/xbmc/patches/c218d5c/xbmc-995.10-disable-alt-tab.patch b/packages/mediacenter/xbmc/patches/f68634b/xbmc-995.10-disable-alt-tab.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/c218d5c/xbmc-995.10-disable-alt-tab.patch rename to packages/mediacenter/xbmc/patches/f68634b/xbmc-995.10-disable-alt-tab.patch diff --git a/packages/mediacenter/xbmc/patches/c218d5c/xbmc-999.01-automake-1.13.patch b/packages/mediacenter/xbmc/patches/f68634b/xbmc-999.01-automake-1.13.patch similarity index 100% rename from packages/mediacenter/xbmc/patches/c218d5c/xbmc-999.01-automake-1.13.patch rename to packages/mediacenter/xbmc/patches/f68634b/xbmc-999.01-automake-1.13.patch