mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
kodi: add patch to support dcadec
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
02ffc575de
commit
75dd5a44fd
@ -0,0 +1,131 @@
|
||||
From 448c71da440d4504432ac513e8493e27b1f06915 Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
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 @@
|
||||
<default>true</default>
|
||||
<control type="toggle" />
|
||||
</setting>
|
||||
+ <setting id="videoplayer.supportdtshd" type="boolean" label="38120" help="38121">
|
||||
+ <level>2</level>
|
||||
+ <default>false</default>
|
||||
+ <control type="toggle" />
|
||||
+ </setting>
|
||||
</group>
|
||||
</category>
|
||||
<category id="myvideos">
|
||||
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 @@
|
||||
<setting id="videoplayer.useomxplayer">
|
||||
<default>false</default>
|
||||
</setting>
|
||||
+ <setting id="videoplayer.supportdtshd">
|
||||
+ <default>true</default>
|
||||
+ </setting>
|
||||
</group>
|
||||
</category>
|
||||
</section>
|
||||
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);
|
Loading…
x
Reference in New Issue
Block a user