diff --git a/packages/mediacenter/kodi/patches/kodi-995.01-add-dcadec-support.patch b/packages/mediacenter/kodi/patches/kodi-995.01-add-dcadec-support.patch new file mode 100644 index 0000000000..f31ab00b65 --- /dev/null +++ b/packages/mediacenter/kodi/patches/kodi-995.01-add-dcadec-support.patch @@ -0,0 +1,131 @@ +From 448c71da440d4504432ac513e8493e27b1f06915 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Mon, 23 Mar 2015 22:33:04 +0000 +Subject: [PATCH] [dcadec] Add settings option to enable libdcadec + +--- + addons/resource.language.en_gb/resources/strings.po | 10 ++++++++++ + system/settings/rbp.xml | 5 +++++ + system/settings/rbp2.xml | 3 +++ + xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp | 6 +++++- + xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 10 ++++++++++ + xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp | 6 +++++- + 7 files changed, 39 insertions(+), 4 deletions(-) + +diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po +index 1dde154..f641439 100644 +--- a/addons/resource.language.en_gb/resources/strings.po ++++ b/addons/resource.language.en_gb/resources/strings.po +@@ -16689,3 +16689,13 @@ msgstr "" + msgctxt "#38103" + msgid "Extract thumbnails from video files" + msgstr "" ++ ++#: system/settings/rbp.xml ++msgctxt "#38120" ++msgid "Support 8 channel DTS HD audio" ++msgstr "" ++ ++#: system/settings/rbp.xml ++msgctxt "#38121" ++msgid "This option supports 8 channel DTS HD but may use more CPU " ++msgstr "" +diff --git a/system/settings/rbp.xml b/system/settings/rbp.xml +index 42d4da7..5a9bb6b 100644 +--- a/system/settings/rbp.xml ++++ b/system/settings/rbp.xml +@@ -47,6 +47,11 @@ + true + + ++ ++ 2 ++ false ++ ++ + + + +diff --git a/system/settings/rbp2.xml b/system/settings/rbp2.xml +index 8cc8f19..197e255 100644 +--- a/system/settings/rbp2.xml ++++ b/system/settings/rbp2.xml +@@ -6,6 +6,9 @@ + + false + ++ ++ true ++ + + + +diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp +index 991449b..135bb43 100644 +--- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp ++++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp +@@ -33,6 +33,7 @@ extern "C" { + #include "settings/Settings.h" + #include "cores/AudioEngine/Utils/AEUtil.h" + #endif ++#include "settings/Settings.h" + + CDVDAudioCodecFFmpeg::CDVDAudioCodecFFmpeg() : CDVDAudioCodec() + { +@@ -57,7 +58,10 @@ bool CDVDAudioCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options + AVCodec* pCodec; + m_bOpenedCodec = false; + +- pCodec = avcodec_find_decoder(hints.codec); ++ if (hints.codec == AV_CODEC_ID_DTS && CSettings::Get().GetBool("videoplayer.supportdtshd")) ++ pCodec = avcodec_find_decoder_by_name("libdcadec"); ++ else ++ pCodec = avcodec_find_decoder(hints.codec); + if (!pCodec) + { + CLog::Log(LOGDEBUG,"CDVDAudioCodecFFmpeg::Open() Unable to find codec %d", hints.codec); +diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +index f9b3232..1f8e15e 100644 +--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp ++++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +@@ -439,6 +439,16 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput, bool streaminfo, bool filein + + if (m_streaminfo) + { ++ if (CSettings::Get().GetBool("videoplayer.supportdtshd")) ++ { ++ for (unsigned int i = 0; i < m_pFormatContext->nb_streams; i++) ++ { ++ AVStream *st = m_pFormatContext->streams[i]; ++ if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO && st->codec->codec_id == AV_CODEC_ID_DTS) ++ st->codec->codec = avcodec_find_decoder_by_name("libdcadec"); ++ } ++ } ++ + /* to speed up dvd switches, only analyse very short */ + if(m_pInput->IsStreamType(DVDSTREAM_TYPE_DVD)) + av_opt_set_int(m_pFormatContext, "analyzeduration", 500000, 0); +diff --git a/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp b/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp +index 1a920f7..093864d 100644 +--- a/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp ++++ b/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp +@@ -26,6 +26,7 @@ + + #include "cores/AudioEngine/Utils/AEUtil.h" + #include "cores/AudioEngine/AEFactory.h" ++#include "settings/Settings.h" + + // the size of the audio_render output port buffers + #define AUDIO_DECODE_OUTPUT_BUFFER (32*1024) +@@ -65,7 +66,10 @@ bool COMXAudioCodecOMX::Open(CDVDStreamInfo &hints) + AVCodec* pCodec; + m_bOpenedCodec = false; + +- pCodec = avcodec_find_decoder(hints.codec); ++ if (hints.codec == AV_CODEC_ID_DTS && CSettings::Get().GetBool("videoplayer.supportdtshd")) ++ pCodec = avcodec_find_decoder_by_name("libdcadec"); ++ else ++ pCodec = avcodec_find_decoder(hints.codec); + if (!pCodec) + { + CLog::Log(LOGDEBUG,"COMXAudioCodecOMX::Open() Unable to find codec %d", hints.codec);