kodi: update dcadec patch

Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
Stephan Raue 2015-05-16 15:08:37 +02:00
parent 475b778d77
commit d45d29b559
2 changed files with 840 additions and 132 deletions

View File

@ -1,132 +0,0 @@
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
--- a/system/settings/rbp.xml
+++ b/system/settings/rbp.xml
@@ -27,6 +27,13 @@
<control type="edit" format="integer" />
</setting>
</group>
+ <group id="3">
+ <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">
<group id="1">
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);

View File

@ -0,0 +1,840 @@
From 17db313334d564b34e00154e6d3d5cf6163c13fb Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 23 Mar 2015 17:12:31 +0000
Subject: [PATCH 1/6] [ffmpeg] Add support for libdcadec
---
Makefile.in | 2 +-
configure.ac | 4 +
tools/depends/target/Makefile | 4 +-
.../0001-avcodec-add-libdcadec-decoder.patch | 280 +++++++++++++++++++++
.../0002-avcodec-Fix-libdcadec-include-dir.patch | 40 +++
...vcodec-add-profile-define-for-DTS-Express.patch | 25 ++
tools/depends/target/ffmpeg/Makefile | 7 +-
tools/depends/target/libdcadec/Makefile | 38 +++
8 files changed, 396 insertions(+), 4 deletions(-)
create mode 100644 tools/depends/target/ffmpeg/0001-avcodec-add-libdcadec-decoder.patch
create mode 100644 tools/depends/target/ffmpeg/0002-avcodec-Fix-libdcadec-include-dir.patch
create mode 100644 tools/depends/target/ffmpeg/0003-avcodec-add-profile-define-for-DTS-Express.patch
create mode 100644 tools/depends/target/libdcadec/Makefile
diff --git a/Makefile.in b/Makefile.in
index 7ed7c37..4a8aeef 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -445,7 +445,7 @@ FFMPEGOBJS = @FFMPEG_LIBDIR@/libavcodec.a \
@FFMPEG_LIBDIR@/libpostproc.a \
@FFMPEG_LIBDIR@/libswscale.a
DYNOBJSXBMC+= $(FFMPEGOBJS)
-LIBS+= @GNUTLS_ALL_LIBS@ @VORBISENC_ALL_LIBS@
+LIBS+= @GNUTLS_ALL_LIBS@ @VORBISENC_ALL_LIBS@ @DCADEC_ALL_LIBS@
$(FFMPEGOBJS): dvdpcodecs
endif
diff --git a/configure.ac b/configure.ac
index cf18212..ad9ae6d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1088,6 +1088,7 @@ AC_CHECK_HEADER([mpeg2dec/mpeg2convert.h],, AC_MSG_ERROR($missing_library),
AC_CHECK_HEADER([jpeglib.h],, AC_MSG_ERROR($missing_library))
AC_CHECK_HEADER([ogg/ogg.h],, AC_MSG_ERROR($missing_library))
AC_CHECK_HEADER([vorbis/vorbisfile.h],, AC_MSG_ERROR($missing_library))
+AC_CHECK_HEADER([libdcadec/dca_context.h],, AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([LIBCURL], [libcurl],, AC_MSG_ERROR([libcurl not found]))
XB_FIND_SONAME([CURL], [curl])
@@ -1119,6 +1120,7 @@ PKG_CHECK_MODULES([GNUTLS], [gnutls], [have_gnutls=yes];AC_DEFINE([HAVE_GNUTLS],
AC_CHECK_LIB([bz2], [main],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([jpeg], [main],, AC_MSG_ERROR($missing_library)) # check for cximage
AC_CHECK_LIB([tiff], [main],, AC_MSG_ERROR($missing_library))
+AC_CHECK_LIB([dcadec], [main],, AC_MSG_ERROR($missing_library))
if echo "$ARCH" | grep -q freebsd; then
AC_CHECK_LIB([pthread], [main],LIBS="-pthread $LIBS", AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([pthread], [pthread_set_name_np],
@@ -1806,6 +1808,7 @@ if test "${USE_STATIC_FFMPEG}" = "1"; then
FFMPEG_LIBDIR=${pkg_cfg_prefix}$(PKG_CONFIG_SYSROOT_DIR="" ${PKG_CONFIG} --static --variable=libdir libavcodec)
GNUTLS_ALL_LIBS=$(${PKG_CONFIG} --static --libs-only-l --silence-errors gnutls)
VORBISENC_ALL_LIBS=$(${PKG_CONFIG} --static --libs-only-l --silence-errors vorbisenc)
+ DCADEC_ALL_LIBS=$(${PKG_CONFIG} --static --libs-only-l --silence-errors dcadec)
# check if static libs are available
for ff_lib in ${ff_libs}; do
@@ -2630,6 +2633,7 @@ AC_SUBST(FFMPEG_LIBDIR)
AC_SUBST(USE_STATIC_FFMPEG)
AC_SUBST(GNUTLS_ALL_LIBS)
AC_SUBST(VORBISENC_ALL_LIBS)
+AC_SUBST(DCADEC_ALL_LIBS)
AC_SUBST(USE_TOUCH_SKIN)
AC_SUBST(USE_LIBAV_HACKS)
AC_SUBST(PYTHON_VERSION)
diff --git a/tools/depends/target/Makefile b/tools/depends/target/Makefile
index 915de85..5d85ca8 100644
--- a/tools/depends/target/Makefile
+++ b/tools/depends/target/Makefile
@@ -15,7 +15,7 @@ DEPENDS = \
python26 libshairplay \
libplist libcec libbluray boost tinyxml dummy-libxbmc \
libamplayer libssh taglib libusb libnfs libmp3lame \
- pythonmodule-pil libxslt ffmpeg platform
+ pythonmodule-pil libxslt ffmpeg platform libdcadec
FFMPEG_DEPENDS = gnutls
@@ -96,7 +96,7 @@ nettle: gmp
pythonmodule-pil: $(ZLIB) libjpeg-turbo libpng freetype2 python26
libsdl2: $(LINUX_SYSTEM_LIBS)
libxslt: libgcrypt
-ffmpeg: $(ICONV) $(ZLIB) bzip2 libvorbis $(FFMPEG_DEPENDS)
+ffmpeg: $(ICONV) $(ZLIB) bzip2 libvorbis libdcadec $(FFMPEG_DEPENDS)
libcec: platform
.installed-$(PLATFORM): $(DEPENDS)
diff --git a/tools/depends/target/ffmpeg/0001-avcodec-add-libdcadec-decoder.patch b/tools/depends/target/ffmpeg/0001-avcodec-add-libdcadec-decoder.patch
new file mode 100644
index 0000000..c0c2ac1
--- /dev/null
+++ b/tools/depends/target/ffmpeg/0001-avcodec-add-libdcadec-decoder.patch
@@ -0,0 +1,280 @@
+From 519868de7d9c99876efcaf57d6a9683c22732cde Mon Sep 17 00:00:00 2001
+From: Hendrik Leppkes <h.leppkes@gmail.com>
+Date: Thu, 19 Mar 2015 23:56:22 +0100
+Subject: [PATCH] avcodec: add libdcadec decoder
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ configure | 4 +
+ libavcodec/Makefile | 1 +
+ libavcodec/allcodecs.c | 1 +
+ libavcodec/libdcadec.c | 197 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 203 insertions(+)
+ create mode 100644 libavcodec/libdcadec.c
+
+diff --git a/configure b/configure
+index 1bf8f80..a449bc7 100755
+--- a/configure
++++ b/configure
+@@ -210,6 +210,7 @@ External library support:
+ --enable-libcdio enable audio CD grabbing with libcdio [no]
+ --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
+ and libraw1394 [no]
++ --enable-libdcadec enable DCA decoding via libdcadec [no]
+ --enable-libfaac enable AAC encoding via libfaac [no]
+ --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
+ --enable-libflite enable flite (voice synthesis) support via libflite [no]
+@@ -1353,6 +1354,7 @@ EXTERNAL_LIBRARY_LIST="
+ libcdio
+ libcelt
+ libdc1394
++ libdcadec
+ libfaac
+ libfdk_aac
+ libflite
+@@ -2359,6 +2361,7 @@ vc1_parser_select="mpegvideo startcode vc1_decoder"
+ # external libraries
+ libaacplus_encoder_deps="libaacplus"
+ libcelt_decoder_deps="libcelt"
++libdcadec_decoder_deps="libdcadec"
+ libfaac_encoder_deps="libfaac"
+ libfaac_encoder_select="audio_frame_queue"
+ libfdk_aac_decoder_deps="libfdk_aac"
+@@ -4922,6 +4925,7 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
+ { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
+ die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
+ enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
++enabled libdcadec && require libdcadec dca_context.h dcadec_context_create -ldcadec
+ enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
+ enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
+ flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
+diff --git a/libavcodec/Makefile b/libavcodec/Makefile
+index 4173f88..1a0c734 100644
+--- a/libavcodec/Makefile
++++ b/libavcodec/Makefile
+@@ -732,6 +732,7 @@ OBJS-$(CONFIG_ELBG_FILTER) += elbg.o
+ # external codec libraries
+ OBJS-$(CONFIG_LIBAACPLUS_ENCODER) += libaacplus.o
+ OBJS-$(CONFIG_LIBCELT_DECODER) += libcelt_dec.o
++OBJS-$(CONFIG_LIBDCADEC_DECODER) += libdcadec.o
+ OBJS-$(CONFIG_LIBFAAC_ENCODER) += libfaac.o
+ OBJS-$(CONFIG_LIBFDK_AAC_DECODER) += libfdk-aacdec.o
+ OBJS-$(CONFIG_LIBFDK_AAC_ENCODER) += libfdk-aacenc.o
+diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
+index 5194e74..bbf70a6 100644
+--- a/libavcodec/allcodecs.c
++++ b/libavcodec/allcodecs.c
+@@ -512,6 +512,7 @@ void avcodec_register_all(void)
+
+ /* external libraries */
+ REGISTER_DECODER(LIBCELT, libcelt);
++ REGISTER_DECODER(LIBDCADEC, libdcadec)
+ REGISTER_ENCODER(LIBFAAC, libfaac);
+ REGISTER_ENCDEC (LIBFDK_AAC, libfdk_aac);
+ REGISTER_ENCDEC (LIBGSM, libgsm);
+diff --git a/libavcodec/libdcadec.c b/libavcodec/libdcadec.c
+new file mode 100644
+index 0000000..d060db5
+--- /dev/null
++++ b/libavcodec/libdcadec.c
+@@ -0,0 +1,197 @@
++/*
++ * libdcadec decoder wrapper
++ * Copyright (C) 2015 Hendrik Leppkes
++ *
++ * This file is part of FFmpeg.
++ *
++ * FFmpeg is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * FFmpeg is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with FFmpeg; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
++ */
++
++#include <dca_context.h>
++
++#include "libavutil/avassert.h"
++#include "libavutil/channel_layout.h"
++#include "libavutil/common.h"
++#include "libavutil/opt.h"
++#include "avcodec.h"
++#include "dca.h"
++#include "dca_syncwords.h"
++#include "internal.h"
++
++typedef struct DCADecContext {
++ struct dcadec_context *ctx;
++ uint8_t *buffer;
++ int buffer_size;
++} DCADecContext;
++
++static int dcadec_decode_frame(AVCodecContext *avctx, void *data,
++ int *got_frame_ptr, AVPacket *avpkt)
++{
++ DCADecContext *s = avctx->priv_data;
++ AVFrame *frame = data;
++ int ret, i, k;
++ int **samples, nsamples, channel_mask, sample_rate, bits_per_sample, profile;
++ uint32_t mrk;
++ uint8_t *input = avpkt->data;
++ int input_size = avpkt->size;
++
++ /* convert bytestream syntax to RAW BE format if required */
++ mrk = AV_RB32(input);
++ if (mrk != DCA_SYNCWORD_CORE_BE && mrk != DCA_SYNCWORD_SUBSTREAM) {
++ s->buffer = av_fast_realloc(s->buffer, &s->buffer_size, avpkt->size + FF_INPUT_BUFFER_PADDING_SIZE);
++ if (!s->buffer)
++ return AVERROR(ENOMEM);
++
++ if ((ret = avpriv_dca_convert_bitstream(avpkt->data, avpkt->size, s->buffer, s->buffer_size)) < 0)
++ return ret;
++
++ input = s->buffer;
++ input_size = ret;
++ }
++
++ if ((ret = dcadec_context_parse(s->ctx, input, input_size)) < 0) {
++ av_log(avctx, AV_LOG_ERROR, "dcadec_context_parse() failed: %d (%s)\n", -ret, dcadec_strerror(ret));
++ return AVERROR_EXTERNAL;
++ }
++ if ((ret = dcadec_context_filter(s->ctx, &samples, &nsamples, &channel_mask,
++ &sample_rate, &bits_per_sample, &profile)) < 0) {
++ av_log(avctx, AV_LOG_ERROR, "dcadec_context_filter() failed: %d (%s)\n", -ret, dcadec_strerror(ret));
++ return AVERROR_EXTERNAL;
++ }
++
++ avctx->channels = av_get_channel_layout_nb_channels(channel_mask);
++ avctx->channel_layout = channel_mask;
++ avctx->sample_rate = sample_rate;
++
++ av_assert0(bits_per_sample >= 16 && bits_per_sample <= 24);
++ if (bits_per_sample == 16)
++ avctx->sample_fmt = AV_SAMPLE_FMT_S16P;
++ else
++ avctx->sample_fmt = AV_SAMPLE_FMT_S32P;
++
++ avctx->bits_per_raw_sample = bits_per_sample;
++
++ switch (profile) {
++ case DCADEC_PROFILE_DS:
++ avctx->profile = FF_PROFILE_DTS;
++ break;
++ case DCADEC_PROFILE_DS_96_24:
++ avctx->profile = FF_PROFILE_DTS_96_24;
++ break;
++ case DCADEC_PROFILE_DS_ES:
++ avctx->profile = FF_PROFILE_DTS_ES;
++ break;
++ case DCADEC_PROFILE_HD_HRA:
++ avctx->profile = FF_PROFILE_DTS_HD_HRA;
++ break;
++ case DCADEC_PROFILE_HD_MA:
++ avctx->profile = FF_PROFILE_DTS_HD_MA;
++ break;
++ case DCADEC_PROFILE_EXPRESS:
++ avctx->profile = FF_PROFILE_DTS_EXPRESS;
++ break;
++ case DCADEC_PROFILE_UNKNOWN:
++ default:
++ avctx->profile = FF_PROFILE_UNKNOWN;
++ break;
++ }
++
++ /* bitrate is only meaningful if there are no HD extensions, as they distort the bitrate */
++ if (profile == DCADEC_PROFILE_DS || profile == DCADEC_PROFILE_DS_96_24 || profile == DCADEC_PROFILE_DS_ES) {
++ struct dcadec_core_info *info = dcadec_context_get_core_info(s->ctx);
++ avctx->bit_rate = info->bit_rate;
++ dcadec_context_free_core_info(info);
++ } else
++ avctx->bit_rate = 0;
++
++ frame->nb_samples = nsamples;
++ if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
++ return ret;
++
++ for (i = 0; i < avctx->channels; i++) {
++ if (frame->format == AV_SAMPLE_FMT_S16P) {
++ int16_t *plane = (int16_t *)frame->extended_data[i];
++ for (k = 0; k < nsamples; k++)
++ plane[k] = samples[i][k];
++ } else {
++ int32_t *plane = (int32_t *)frame->extended_data[i];
++ int shift = 32 - bits_per_sample;
++ for (k = 0; k < nsamples; k++)
++ plane[k] = samples[i][k] << shift;
++ }
++ }
++
++ *got_frame_ptr = 1;
++
++ return avpkt->size;
++}
++
++static av_cold void dcadec_flush(AVCodecContext *avctx)
++{
++ DCADecContext *s = avctx->priv_data;
++ dcadec_context_clear(s->ctx);
++}
++
++static av_cold int dcadec_close(AVCodecContext *avctx)
++{
++ DCADecContext *s = avctx->priv_data;
++
++ dcadec_context_destroy(s->ctx);
++ s->ctx = NULL;
++
++ av_freep(&s->buffer);
++
++ return 0;
++}
++
++static av_cold int dcadec_init(AVCodecContext *avctx)
++{
++ DCADecContext *s = avctx->priv_data;
++
++ s->ctx = dcadec_context_create(0);
++ if (!s->ctx)
++ return AVERROR(ENOMEM);
++
++ avctx->sample_fmt = AV_SAMPLE_FMT_S32P;
++ avctx->bits_per_raw_sample = 24;
++
++ return 0;
++}
++
++static const AVProfile profiles[] = {
++ { FF_PROFILE_DTS, "DTS" },
++ { FF_PROFILE_DTS_ES, "DTS-ES" },
++ { FF_PROFILE_DTS_96_24, "DTS 96/24" },
++ { FF_PROFILE_DTS_HD_HRA, "DTS-HD HRA" },
++ { FF_PROFILE_DTS_HD_MA, "DTS-HD MA" },
++ { FF_PROFILE_DTS_EXPRESS, "DTS Express" },
++ { FF_PROFILE_UNKNOWN },
++};
++
++AVCodec ff_libdcadec_decoder = {
++ .name = "libdcadec",
++ .long_name = NULL_IF_CONFIG_SMALL("dcadec DCA decoder"),
++ .type = AVMEDIA_TYPE_AUDIO,
++ .id = AV_CODEC_ID_DTS,
++ .priv_data_size = sizeof(DCADecContext),
++ .init = dcadec_init,
++ .decode = dcadec_decode_frame,
++ .close = dcadec_close,
++ .flush = dcadec_flush,
++ .capabilities = CODEC_CAP_DR1 | CODEC_CAP_CHANNEL_CONF,
++ .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_S16P,
++ AV_SAMPLE_FMT_NONE },
++ .profiles = NULL_IF_CONFIG_SMALL(profiles),
++};
+--
+1.9.1
+
diff --git a/tools/depends/target/ffmpeg/0002-avcodec-Fix-libdcadec-include-dir.patch b/tools/depends/target/ffmpeg/0002-avcodec-Fix-libdcadec-include-dir.patch
new file mode 100644
index 0000000..b4db15d
--- /dev/null
+++ b/tools/depends/target/ffmpeg/0002-avcodec-Fix-libdcadec-include-dir.patch
@@ -0,0 +1,40 @@
+From 4f3c31df3f569c7171ee9e651ddf479690367b9b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <kasper93@gmail.com>
+Date: Fri, 20 Mar 2015 01:58:25 +0100
+Subject: [PATCH] avcodec: Fix libdcadec include dir
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ configure | 2 +-
+ libavcodec/libdcadec.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure b/configure
+index a449bc7..1ef83e3 100755
+--- a/configure
++++ b/configure
+@@ -4925,7 +4925,7 @@ enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
+ { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
+ die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
+ enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
+-enabled libdcadec && require libdcadec dca_context.h dcadec_context_create -ldcadec
++enabled libdcadec && require libdcadec libdcadec/dca_context.h dcadec_context_create -ldcadec
+ enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
+ enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
+ flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
+diff --git a/libavcodec/libdcadec.c b/libavcodec/libdcadec.c
+index d060db5..a28b983 100644
+--- a/libavcodec/libdcadec.c
++++ b/libavcodec/libdcadec.c
+@@ -19,7 +19,7 @@
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+-#include <dca_context.h>
++#include <libdcadec/dca_context.h>
+
+ #include "libavutil/avassert.h"
+ #include "libavutil/channel_layout.h"
+--
+1.9.1
+
diff --git a/tools/depends/target/ffmpeg/0003-avcodec-add-profile-define-for-DTS-Express.patch b/tools/depends/target/ffmpeg/0003-avcodec-add-profile-define-for-DTS-Express.patch
new file mode 100644
index 0000000..1550538
--- /dev/null
+++ b/tools/depends/target/ffmpeg/0003-avcodec-add-profile-define-for-DTS-Express.patch
@@ -0,0 +1,25 @@
+From 11fe56c8bbf39cd0c3edbf0cd404dea400ff7e0c Mon Sep 17 00:00:00 2001
+From: Hendrik Leppkes <h.leppkes@gmail.com>
+Date: Thu, 19 Mar 2015 23:45:39 +0100
+Subject: [PATCH] avcodec: add profile define for DTS Express
+
+Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
+---
+ libavcodec/avcodec.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
+index cdc8aa1..48e212f 100644
+--- a/libavcodec/avcodec.h
++++ b/libavcodec/avcodec.h
+@@ -2851,6 +2851,7 @@ typedef struct AVCodecContext {
+ #define FF_PROFILE_DTS_96_24 40
+ #define FF_PROFILE_DTS_HD_HRA 50
+ #define FF_PROFILE_DTS_HD_MA 60
++#define FF_PROFILE_DTS_EXPRESS 70
+
+ #define FF_PROFILE_MPEG2_422 0
+ #define FF_PROFILE_MPEG2_HIGH 1
+--
+1.9.1
+
diff --git a/tools/depends/target/ffmpeg/Makefile b/tools/depends/target/ffmpeg/Makefile
index 711182f..24480b2 100644
--- a/tools/depends/target/ffmpeg/Makefile
+++ b/tools/depends/target/ffmpeg/Makefile
@@ -1,6 +1,7 @@
include ../../Makefile.include
include FFMPEG-VERSION
-DEPS= ../../Makefile.include FFMPEG-VERSION Makefile
+DEPS= ../../Makefile.include FFMPEG-VERSION Makefile \
+ 0001-avcodec-add-libdcadec-decoder.patch 0002-avcodec-Fix-libdcadec-include-dir.patch 0003-avcodec-add-profile-define-for-DTS-Express.patch
# set to "yes" to enable patching
# we don't apply patches until we move to a vanilla ffmpeg tarball
@@ -55,6 +56,7 @@ endif
ifeq ($(Configuration), Release)
ffmpg_config += --disable-debug
endif
+ffmpg_config += --enable-libdcadec --disable-decoder=dca
CLEAN_FILES=$(ARCHIVE) $(PLATFORM)
@@ -68,6 +70,9 @@ $(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
rm -rf $(PLATFORM); mkdir -p $(PLATFORM)
cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
cd $(PLATFORM); sed -i".bak" -e "s%pkg_config_default=pkg-config%export PKG_CONFIG_LIBDIR=$(PREFIX)/lib/pkgconfig \&\& pkg_config_default=$(NATIVEPREFIX)/bin/pkg-config%" configure
+ cd $(PLATFORM); patch -p1 < ../0001-avcodec-add-libdcadec-decoder.patch
+ cd $(PLATFORM); patch -p1 < ../0002-avcodec-Fix-libdcadec-include-dir.patch
+ cd $(PLATFORM); patch -p1 < ../0003-avcodec-add-profile-define-for-DTS-Express.patch
cd $(PLATFORM);\
CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" \
./configure $(ffmpg_config)
diff --git a/tools/depends/target/libdcadec/Makefile b/tools/depends/target/libdcadec/Makefile
new file mode 100644
index 0000000..e68ec46
--- /dev/null
+++ b/tools/depends/target/libdcadec/Makefile
@@ -0,0 +1,38 @@
+include ../../Makefile.include
+DEPS= ../../Makefile.include Makefile
+
+# lib name, version
+LIBNAME=dcadec
+ARCHIVE=master.tar.gz
+BASE_URL=https://github.com/foo86/dcadec/archive
+
+# configuration settings
+
+LIBDYLIB=$(PLATFORM)/.libs/lib$(LIBNAME).a
+
+CLEAN_FILES=$(ARCHIVE) $(PLATFORM)
+
+CFLAGS += -std=gnu99
+
+all: $(LIBDYLIB) .installed-$(PLATFORM)
+
+$(TARBALLS_LOCATION)/$(ARCHIVE):
+ cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
+
+$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
+ rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
+ cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
+
+$(LIBDYLIB): $(PLATFORM)
+ $(MAKE) -C $(PLATFORM) PREFIX=$(PREFIX) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" AR="$(AR)"
+
+.installed-$(PLATFORM): $(LIBDYLIB)
+ $(MAKE) -C $(PLATFORM) PREFIX=$(PREFIX) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" AR="$(AR)" install
+ touch $@
+
+clean:
+ $(MAKE) -C $(PLATFORM) clean
+ rm -f .installed-$(PLATFORM)
+
+distclean::
+ rm -rf $(PLATFORM) .installed-$(PLATFORM)
From bdf128de10eb980a68d8382df8f8621a61e020d1 Mon Sep 17 00:00:00 2001
From: fritsch <peter.fruehberger@gmail.com>
Date: Mon, 23 Mar 2015 22:33:04 +0000
Subject: [PATCH 2/6] [dcadec] Add settings option to enable libdcadec
---
addons/resource.language.en_gb/resources/strings.po | 10 ++++++++++
system/settings/imx6.xml | 20 ++++++++++++++++++++
system/settings/rbp.xml | 5 +++++
system/settings/rbp2.xml | 5 +++++
tools/depends/target/ffmpeg/Makefile | 2 +-
.../DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp | 14 ++++++++++++--
xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 15 +++++++++++++++
xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp | 10 ++++++++--
8 files changed, 76 insertions(+), 5 deletions(-)
diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po
index 6a6f0a3..3ab966d 100644
--- a/addons/resource.language.en_gb/resources/strings.po
+++ b/addons/resource.language.en_gb/resources/strings.po
@@ -16541,3 +16541,13 @@ msgstr ""
msgctxt "#38016"
msgid "%d fps"
msgstr ""
+
+#: system/settings/rbp.xml system/settings/imx6.xml
+msgctxt "#38120"
+msgid "Support 8 channel DTS-HD audio decoding"
+msgstr ""
+
+#: system/settings/rbp.xml system/settings/imx6.xml
+msgctxt "#38121"
+msgid "Enables decoding of high quality DTS-HD audio streams. Note: This increases CPU load and is only available when DTS and DTS-HD audio passthrough are disabled."
+msgstr ""
diff --git a/system/settings/imx6.xml b/system/settings/imx6.xml
index d8b17c3..bdb5eb8 100644
--- a/system/settings/imx6.xml
+++ b/system/settings/imx6.xml
@@ -13,6 +13,26 @@
</setting>
</group>
</category>
+ <category id="audiooutput">
+ <group id="1">
+ <setting id="audiooutput.supportdtshdcpudecoding" type="boolean" label="38120" help="38121">
+ <level>2</level>
+ <default>false</default>
+ <control type="toggle" />
+ <dependencies>
+ <dependency type="enable">
+ <or>
+ <condition setting="audiooutput.passthrough" operator="is">false</condition>
+ <and>
+ <condition setting="audiooutput.dtshdpassthrough" operator="is">false</condition>
+ <condition setting="audiooutput.dtspassthrough" operator="is">false</condition>
+ </and>
+ </or>
+ </dependency>
+ </dependencies>
+ </setting>
+ </group>
+ </category>
</section>
<section id="videos">
<category id="videoacceleration">
diff --git a/system/settings/rbp.xml b/system/settings/rbp.xml
index 50fe36a..52703e9 100644
--- a/system/settings/rbp.xml
+++ b/system/settings/rbp.xml
@@ -76,6 +76,11 @@
<setting id="audiooutput.processquality">
<default>101</default> <!-- AE_QUALITY_GPU -->
</setting>
+ <setting id="audiooutput.supportdtshdcpudecoding" type="boolean" label="38120" help="38121">
+ <level>2</level>
+ <default>false</default>
+ <control type="toggle" />
+ </setting>
</group>
<group id="3">
<setting id="audiooutput.ac3transcode" help="37024">
diff --git a/system/settings/rbp2.xml b/system/settings/rbp2.xml
index 8cc8f19..b29a428 100644
--- a/system/settings/rbp2.xml
+++ b/system/settings/rbp2.xml
@@ -19,6 +19,11 @@
</group>
</category>
<category id="audiooutput">
+ <group id="1">
+ <setting id="audiooutput.supportdtshdcpudecoding">
+ <default>true</default>
+ </setting>
+ </group>
<group id="3">
<setting id="audiooutput.ac3transcode" help="36429">
</setting>
diff --git a/tools/depends/target/ffmpeg/Makefile b/tools/depends/target/ffmpeg/Makefile
index 24480b2..1e20602 100644
--- a/tools/depends/target/ffmpeg/Makefile
+++ b/tools/depends/target/ffmpeg/Makefile
@@ -56,7 +56,7 @@ endif
ifeq ($(Configuration), Release)
ffmpg_config += --disable-debug
endif
-ffmpg_config += --enable-libdcadec --disable-decoder=dca
+ffmpg_config += --enable-libdcadec
CLEAN_FILES=$(ARCHIVE) $(PLATFORM)
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
index 991449b..e6553dd 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()
{
@@ -54,10 +55,19 @@ CDVDAudioCodecFFmpeg::~CDVDAudioCodecFFmpeg()
bool CDVDAudioCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options)
{
- AVCodec* pCodec;
+ AVCodec* pCodec = NULL;
m_bOpenedCodec = false;
- pCodec = avcodec_find_decoder(hints.codec);
+ bool allow_dtshd_decoding = true;
+#if defined(TARGET_RASPBERRY_PI) || defined(HAS_IMXVPU) || defined(HAS_LIBAMCODEC)
+ allow_dtshd_decoding = CSettings::Get().GetBool("audiooutput.supportdtshdcpudecoding");
+#endif
+ if (hints.codec == AV_CODEC_ID_DTS && allow_dtshd_decoding)
+ pCodec = avcodec_find_decoder_by_name("libdcadec");
+
+ if (!pCodec)
+ 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 74ff31f..6a97135 100644
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
@@ -439,6 +439,21 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput, bool streaminfo, bool filein
if (m_streaminfo)
{
+#if defined(TARGET_RASPBERRY_PI) || defined(HAS_IMXVPU) || defined(HAS_LIBAMCODEC)
+ if (CSettings::Get().GetBool("audiooutput.supportdtshdcpudecoding"))
+#endif
+ {
+ 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)
+ {
+ AVCodec* pCodec = avcodec_find_decoder_by_name("libdcadec");
+ if (pCodec)
+ st->codec->codec = pCodec;
+ }
+ }
+ }
/* 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..075f728 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)
@@ -62,10 +63,15 @@ COMXAudioCodecOMX::~COMXAudioCodecOMX()
bool COMXAudioCodecOMX::Open(CDVDStreamInfo &hints)
{
- AVCodec* pCodec;
+ AVCodec* pCodec = NULL;
m_bOpenedCodec = false;
- pCodec = avcodec_find_decoder(hints.codec);
+ if (hints.codec == AV_CODEC_ID_DTS && CSettings::Get().GetBool("audiooutput.supportdtshdcpudecoding"))
+ pCodec = avcodec_find_decoder_by_name("libdcadec");
+
+ if (!pCodec)
+ pCodec = avcodec_find_decoder(hints.codec);
+
if (!pCodec)
{
CLog::Log(LOGDEBUG,"COMXAudioCodecOMX::Open() Unable to find codec %d", hints.codec);
From 61fac1c7999532e4595ef9101c83074937dddabb Mon Sep 17 00:00:00 2001
From: wsnipex <wsnipex@a1.net>
Date: Wed, 13 May 2015 20:00:31 +0200
Subject: [PATCH 3/6] [configure] use pkg-config to detect dcadec
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index ad9ae6d..600325a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1088,7 +1088,7 @@ AC_CHECK_HEADER([mpeg2dec/mpeg2convert.h],, AC_MSG_ERROR($missing_library),
AC_CHECK_HEADER([jpeglib.h],, AC_MSG_ERROR($missing_library))
AC_CHECK_HEADER([ogg/ogg.h],, AC_MSG_ERROR($missing_library))
AC_CHECK_HEADER([vorbis/vorbisfile.h],, AC_MSG_ERROR($missing_library))
-AC_CHECK_HEADER([libdcadec/dca_context.h],, AC_MSG_ERROR($missing_library))
+PKG_CHECK_MODULES([LIBDCADEC], [dcadec],, AC_MSG_ERROR([libdcadec not found]))
PKG_CHECK_MODULES([LIBCURL], [libcurl],, AC_MSG_ERROR([libcurl not found]))
XB_FIND_SONAME([CURL], [curl])
From 035084e5c09555005aa045f67a282cecceb98900 Mon Sep 17 00:00:00 2001
From: wsnipex <wsnipex@a1.net>
Date: Wed, 13 May 2015 20:02:38 +0200
Subject: [PATCH 4/6] [ffmpeg] enabled dcadec for linux standalone builds
---
tools/depends/target/ffmpeg/autobuild.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/depends/target/ffmpeg/autobuild.sh b/tools/depends/target/ffmpeg/autobuild.sh
index 196c347..b9bfd57 100755
--- a/tools/depends/target/ffmpeg/autobuild.sh
+++ b/tools/depends/target/ffmpeg/autobuild.sh
@@ -159,6 +159,7 @@ CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" \
--disable-mips32r2 \
--disable-mipsdspr1 \
--disable-mipsdspr2 \
+ --enable-libdcadec \
${FLAGS}
make -j ${BUILDTHREADS}
From d89c29002ab09708540055f214823836e2c74c00 Mon Sep 17 00:00:00 2001
From: wsnipex <wsnipex@a1.net>
Date: Wed, 13 May 2015 20:12:31 +0200
Subject: [PATCH 5/6] [depends] use a tarball from mirrors for dcadec
---
tools/depends/target/libdcadec/Makefile | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/tools/depends/target/libdcadec/Makefile b/tools/depends/target/libdcadec/Makefile
index e68ec46..4c98063 100644
--- a/tools/depends/target/libdcadec/Makefile
+++ b/tools/depends/target/libdcadec/Makefile
@@ -2,9 +2,10 @@ include ../../Makefile.include
DEPS= ../../Makefile.include Makefile
# lib name, version
-LIBNAME=dcadec
-ARCHIVE=master.tar.gz
-BASE_URL=https://github.com/foo86/dcadec/archive
+LIBNAME=libdcadec
+VERSION=git-396e75652
+SOURCE=$(LIBNAME)-$(VERSION)
+ARCHIVE=$(SOURCE).tar.gz
# configuration settings
From faceb91945a9064e26c55c83d9944d20f538da0d Mon Sep 17 00:00:00 2001
From: wsnipex <wsnipex@a1.net>
Date: Wed, 13 May 2015 20:18:09 +0200
Subject: [PATCH 6/6] [docs] add dcadec to linux README
---
docs/README.linux | 2 +-
docs/README.ubuntu | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/README.linux b/docs/README.linux
index ee64baf..732d606 100644
--- a/docs/README.linux
+++ b/docs/README.linux
@@ -44,7 +44,7 @@ that are used to build Kodi packages on Debian/Ubuntu (with all supported
external libraries enabled).
Build-Depends: autoconf, automake, autopoint, autotools-dev, cmake, curl,
- debhelper (>= 7.0.50~), default-jre, gawk, gperf, libao-dev, libasound2-dev,
+ dcadec-dev, default-jre, gawk, gperf, libao-dev, libasound2-dev,
libass-dev (>= 0.9.8), libavahi-client-dev, libavahi-common-dev, libbluetooth-dev,
libbluray-dev, libboost-dev, libboost-thread-dev, libbz2-dev, libcap-dev, libcdio-dev,
libcec-dev, libcurl4-gnutls-dev | libcurl4-openssl-dev | libcurl-dev, libcwiid-dev,
diff --git a/docs/README.ubuntu b/docs/README.ubuntu
index 10f1611..0369f83 100644
--- a/docs/README.ubuntu
+++ b/docs/README.ubuntu
@@ -82,7 +82,7 @@ Tip: For those with multiple computers at home is to try out distcc
For Ubuntu (all versions >= 7.04):
- $ sudo apt-get install automake bison build-essential cmake curl cvs default-jre fp-compiler gawk gdc gettext git-core gperf libasound2-dev libass-dev libboost-dev libboost-thread-dev libbz2-dev libcap-dev libcdio-dev libcurl3 libcurl4-gnutls-dev libdbus-1-dev libfontconfig-dev libfreetype6-dev libfribidi-dev libgif-dev libglew-dev libiso9660-dev libjasper-dev libjpeg-dev liblzo2-dev libmicrohttpd-dev libmodplug-dev libmpeg2-4-dev libmpeg3-dev libmysqlclient-dev libnfs-dev libogg-dev libpcre3-dev libplist-dev libpng-dev libpulse-dev libsdl2-dev libsmbclient-dev libsqlite3-dev libssh-dev libssl-dev libtiff-dev libtinyxml-dev libtool libudev-dev libusb-dev libva-dev libvdpau-dev libvorbis-dev libvorbisenc2 libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxslt1-dev libxt-dev libyajl-dev mesa-utils nasm pmount python-dev python-imaging python-sqlite swig unzip yasm zip zlib1g-dev
+ $ sudo apt-get install automake bison build-essential cmake curl cvs dcadec-dev default-jre fp-compiler gawk gdc gettext git-core gperf libasound2-dev libass-dev libboost-dev libboost-thread-dev libbz2-dev libcap-dev libcdio-dev libcurl3 libcurl4-gnutls-dev libdbus-1-dev libfontconfig-dev libfreetype6-dev libfribidi-dev libgif-dev libglew-dev libiso9660-dev libjasper-dev libjpeg-dev liblzo2-dev libmicrohttpd-dev libmodplug-dev libmpeg2-4-dev libmpeg3-dev libmysqlclient-dev libnfs-dev libogg-dev libpcre3-dev libplist-dev libpng-dev libpulse-dev libsdl2-dev libsmbclient-dev libsqlite3-dev libssh-dev libssl-dev libtiff-dev libtinyxml-dev libtool libudev-dev libusb-dev libva-dev libvdpau-dev libvorbis-dev libvorbisenc2 libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxslt1-dev libxt-dev libyajl-dev mesa-utils nasm pmount python-dev python-imaging python-sqlite swig unzip yasm zip zlib1g-dev
For >= 10.10:
$ sudo apt-get install autopoint libltdl-dev