summaryrefslogtreecommitdiff
path: root/meta-openvuplus/recipes-multimedia
diff options
context:
space:
mode:
authorhschang <chang@dev3>2015-10-16 04:15:19 (GMT)
committerhschang <chang@dev3>2015-10-19 09:32:27 (GMT)
commit5e5582814a4d472b1e93907e76be151ad16b1786 (patch)
tree0c14a8f351c0902d095a74871afb1126f89e932f /meta-openvuplus/recipes-multimedia
parent31fbe87f034c671e88ceb0f28942f10dfe4fde07 (diff)
Solo4K Support.
Diffstat (limited to 'meta-openvuplus/recipes-multimedia')
-rw-r--r--meta-openvuplus/recipes-multimedia/gstreamer/gstreamer1.0-plugin-dvbmediasink.bb1
-rw-r--r--meta-openvuplus/recipes-multimedia/gstreamer/gstreamer1.0-plugin-dvbmediasink/dvbmediasink_h265.patch169
-rw-r--r--meta-openvuplus/recipes-multimedia/libav/libav.inc4
-rw-r--r--meta-openvuplus/recipes-multimedia/libdvbsi++/files/transport_protocol_descriptor.patch22
-rw-r--r--meta-openvuplus/recipes-multimedia/libdvbsi++/libdvbsi++_0.3.6.bb3
-rw-r--r--meta-openvuplus/recipes-multimedia/xbmc/enigma2-plugin-extensions-xbmc.bb32
-rw-r--r--meta-openvuplus/recipes-multimedia/xbmc/xbmc_git.bb85
-rw-r--r--meta-openvuplus/recipes-multimedia/xbmc/xbmc_git.bbappend101
8 files changed, 196 insertions, 221 deletions
diff --git a/meta-openvuplus/recipes-multimedia/gstreamer/gstreamer1.0-plugin-dvbmediasink.bb b/meta-openvuplus/recipes-multimedia/gstreamer/gstreamer1.0-plugin-dvbmediasink.bb
index 534dd73..73d51b9 100644
--- a/meta-openvuplus/recipes-multimedia/gstreamer/gstreamer1.0-plugin-dvbmediasink.bb
+++ b/meta-openvuplus/recipes-multimedia/gstreamer/gstreamer1.0-plugin-dvbmediasink.bb
@@ -11,6 +11,7 @@ GSTVERSION = "1.0"
SRC_URI = " \
git://git.code.sf.net/p/openpli/gst-plugin-dvbmediasink;protocol=git;branch=gst-1.0 \
file://gstreamer10_dvbmediasink_vuplus.patch \
+ file://dvbmediasink_h265.patch \
"
#SRCREV = "${AUTOREV}"
SRCREV = "1e99787f3387d3dd1e6167af73597674bf8fe37d"
diff --git a/meta-openvuplus/recipes-multimedia/gstreamer/gstreamer1.0-plugin-dvbmediasink/dvbmediasink_h265.patch b/meta-openvuplus/recipes-multimedia/gstreamer/gstreamer1.0-plugin-dvbmediasink/dvbmediasink_h265.patch
new file mode 100644
index 0000000..f2bd186
--- /dev/null
+++ b/meta-openvuplus/recipes-multimedia/gstreamer/gstreamer1.0-plugin-dvbmediasink/dvbmediasink_h265.patch
@@ -0,0 +1,169 @@
+commit 88e0cef8dc07d4813634b65a78ae9d0fec023b7f
+Author: hschang <chang@dev3>
+Date: Mon Jun 8 20:41:40 2015 +0900
+
+ support video/x-h265.
+
+diff --git a/configure.ac b/configure.ac
+index 4bf6908..ff2abea 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -130,6 +130,14 @@ if test "$have_mpeg4" = "yes"; then
+ AC_DEFINE([HAVE_MPEG4],[1],[Define to 1 for mpeg4 support])
+ fi
+
++
++AC_ARG_WITH(h265,
++ AS_HELP_STRING([--with-h265],[support h265, yes or no]),
++ [have_h265=$withval],[have_h265=no])
++if test "$have_h265" = "yes"; then
++ AC_DEFINE([HAVE_H265],[1],[Define to 1 for h265 support])
++fi
++
+ AC_ARG_WITH(h264,
+ AS_HELP_STRING([--with-h264],[support h264, yes or no]),
+ [have_h264=$withval],[have_h264=yes])
+diff --git a/gstdvbvideosink.c b/gstdvbvideosink.c
+index fbebd11..80e7d0f 100644
+--- a/gstdvbvideosink.c
++++ b/gstdvbvideosink.c
+@@ -170,6 +170,8 @@ enum
+
+ static guint gst_dvb_videosink_signals[LAST_SIGNAL] = { 0 };
+
++#define HAVE_H265
++
+ static GstStaticPadTemplate sink_factory =
+ GST_STATIC_PAD_TEMPLATE (
+ "sink",
+@@ -184,6 +186,10 @@ GST_STATIC_PAD_TEMPLATE (
+ "video/mpeg, "
+ "mpegversion = (int) { 1, 2 }, "
+ VIDEO_CAPS "; "
++#ifdef HAVE_H265
++ "video/x-h265, "
++ VIDEO_CAPS "; "
++#endif
+ #ifdef HAVE_H264
+ "video/x-h264, "
+ VIDEO_CAPS "; "
+@@ -877,7 +883,7 @@ static GstFlowReturn gst_dvbvideosink_render(GstBaseSink *sink, GstBuffer *buffe
+ self->must_send_header = FALSE;
+ }
+ }
+- if (self->codec_type == CT_H264)
++ if (self->codec_type == CT_H264 || self->codec_type == CT_H265)
+ {
+ unsigned int pos = 0;
+ if (self->h264_nal_len_size >= 3)
+@@ -1474,6 +1480,87 @@ static gboolean gst_dvbvideosink_set_caps(GstBaseSink *basesink, GstCaps *caps)
+ }
+ GST_INFO_OBJECT (self, "MIMETYPE video/x-h264 -> STREAMTYPE_MPEG4_H264");
+ }
++ else if (!strcmp (mimetype, "video/x-h265"))
++ {
++ const GValue *cd_data = gst_structure_get_value(structure, "codec_data");
++ self->stream_type = STREAMTYPE_MPEG4_H265;
++ self->codec_type = CT_H265;
++ if (cd_data)
++ {
++ unsigned char tmp[2048];
++ unsigned int tmp_len = 0;
++ GstBuffer *codec_data = gst_value_get_buffer(cd_data);
++ guint8 *data;
++ gsize cd_len;
++ unsigned int cd_pos = 0;
++#if GST_VERSION_MAJOR < 1
++ data = GST_BUFFER_DATA(codec_data);
++ cd_len = GST_BUFFER_SIZE(codec_data);
++#else
++ GstMapInfo codecdatamap;
++ gst_buffer_map(codec_data, &codecdatamap, GST_MAP_READ);
++ data = codecdatamap.data;
++ cd_len = codecdatamap.size;
++#endif
++ GST_INFO_OBJECT (self, "H265 have codec data..!");
++
++ if (cd_len > 3 && (data[0] || data[1] || data[2] > 1)) {
++ if (cd_len > 22) {
++ int i;
++ if (data[0] != 0) {
++ GST_ELEMENT_WARNING (self, STREAM, DECODE, ("Unsupported extra data version %d, decoding may fail", data[0]), (NULL));
++ }
++ self->h264_nal_len_size = (data[21] & 3) + 1;
++ int num_param_sets = data[22];
++ int pos = 23;
++ for (i = 0; i < num_param_sets; i++) {
++ int j;
++ if (pos + 3 > cd_len) {
++ GST_ELEMENT_ERROR (self, STREAM, DECODE, ("Buffer underrun in extra header (%d >= %ld)", pos + 3, cd_len), (NULL));
++ break;
++ }
++ // ignore flags + NAL type (1 byte)
++ int nal_count = data[pos + 1] << 8 | data[pos + 2];
++ pos += 3;
++ for (j = 0; j < nal_count; j++) {
++ if (pos + 2 > cd_len) {
++ GST_ELEMENT_ERROR (self, STREAM, DECODE, ("Buffer underrun in extra nal header (%d >= %ld)", pos + 2, cd_len), (NULL));
++ break;
++ }
++ int nal_size = data[pos] << 8 | data[pos + 1];
++ pos += 2;
++ if (pos + nal_size > cd_len) {
++ GST_ELEMENT_ERROR (self, STREAM, DECODE, ("Buffer underrun in extra nal (%d >= %ld)", pos + 2 + nal_size, cd_len), (NULL));
++ break;
++ }
++ memcpy(tmp+tmp_len, "\x00\x00\x00\x01", 4);
++ tmp_len += 4;
++ memcpy(tmp + tmp_len, data + pos, nal_size);
++ tmp_len += nal_size;
++ pos += nal_size;
++ }
++ }
++ }
++ GST_DEBUG ("Assuming packetized data (%d bytes length)", self->h264_nal_len_size);
++ {
++ self->codec_data = gst_buffer_new_and_alloc(tmp_len);
++#if GST_VERSION_MAJOR < 1
++ memcpy(GST_BUFFER_DATA(self->codec_data), tmp, tmp_len);
++#else
++ gst_buffer_fill(self->codec_data, 0, tmp, tmp_len);
++#endif
++ }
++ }
++#if GST_VERSION_MAJOR >= 1
++ gst_buffer_unmap(codec_data, &codecdatamap);
++#endif
++ }
++ else
++ {
++ self->h264_nal_len_size = 0;
++ }
++ GST_INFO_OBJECT (self, "MIMETYPE video/x-h265 -> STREAMTYPE_MPEG4_H265");
++ }
+ else if (!strcmp (mimetype, "video/x-h263"))
+ {
+ self->stream_type = STREAMTYPE_H263;
+diff --git a/gstdvbvideosink.h b/gstdvbvideosink.h
+index 8cf1dc2..8577f2d 100644
+--- a/gstdvbvideosink.h
++++ b/gstdvbvideosink.h
+@@ -65,7 +65,7 @@ typedef struct _GstDVBVideoSink GstDVBVideoSink;
+ typedef struct _GstDVBVideoSinkClass GstDVBVideoSinkClass;
+ typedef struct _GstDVBVideoSinkPrivate GstDVBVideoSinkPrivate;
+
+-typedef enum { CT_MPEG1, CT_MPEG2, CT_H264, CT_DIVX311, CT_DIVX4, CT_MPEG4_PART2, CT_VC1, CT_VC1_SM } t_codec_type;
++typedef enum { CT_MPEG1, CT_MPEG2, CT_H264, CT_DIVX311, CT_DIVX4, CT_MPEG4_PART2, CT_VC1, CT_VC1_SM, CT_H265 } t_codec_type;
+ typedef enum {
+ STREAMTYPE_UNKNOWN = -1,
+ STREAMTYPE_MPEG2 = 0,
+@@ -78,7 +78,8 @@ typedef enum {
+ STREAMTYPE_XVID = 10,
+ STREAMTYPE_DIVX311 = 13,
+ STREAMTYPE_DIVX4 = 14,
+- STREAMTYPE_DIVX5 = 15
++ STREAMTYPE_DIVX5 = 15,
++ STREAMTYPE_MPEG4_H265 = 7
+ } t_stream_type;
+
+ struct _GstDVBVideoSink
diff --git a/meta-openvuplus/recipes-multimedia/libav/libav.inc b/meta-openvuplus/recipes-multimedia/libav/libav.inc
index 8b470c1..1f4b228 100644
--- a/meta-openvuplus/recipes-multimedia/libav/libav.inc
+++ b/meta-openvuplus/recipes-multimedia/libav/libav.inc
@@ -15,9 +15,9 @@ PROVIDES = "ffmpeg"
ARM_INSTRUCTION_SET = "arm"
-DEPENDS = "zlib libogg yasm-native"
+DEPENDS = "zlib libogg yasm-native libsdl"
-INC_PR = "r8"
+INC_PR = "r9"
inherit autotools pkgconfig
diff --git a/meta-openvuplus/recipes-multimedia/libdvbsi++/files/transport_protocol_descriptor.patch b/meta-openvuplus/recipes-multimedia/libdvbsi++/files/transport_protocol_descriptor.patch
new file mode 100644
index 0000000..94cf0fc
--- /dev/null
+++ b/meta-openvuplus/recipes-multimedia/libdvbsi++/files/transport_protocol_descriptor.patch
@@ -0,0 +1,22 @@
+diff --git a/src/transport_protocol_descriptor.cpp b/src/transport_protocol_descriptor.cpp
+index 40e7426..9412e14 100644
+--- a/src/transport_protocol_descriptor.cpp
++++ b/src/transport_protocol_descriptor.cpp
+@@ -136,7 +136,7 @@ InteractionTransport::InteractionTransport(const uint8_t * const buffer, size_t
+ pos += urlBase->getLength() + 1;
+ length -= pos;
+ if (pos > 1 && length > 0) {
+- int num_extensions = buffer[pos++];
++ int num_extensions = buffer[pos];
+ length -= 1;
+ pos += 1;
+ for (size_t i = 0; i < num_extensions && length > 0; ++i) {
+@@ -193,7 +193,7 @@ TransportProtocolDescriptor::TransportProtocolDescriptor(const uint8_t * const b
+ interactionTransports.push_back(p);
+ if (!p->getUrlBase()->getLength())
+ valid = false;
+- pos += bytesLeft - oldBytesLeft;
++ pos += oldBytesLeft - bytesLeft;
+ }
+ break;
+ }
diff --git a/meta-openvuplus/recipes-multimedia/libdvbsi++/libdvbsi++_0.3.6.bb b/meta-openvuplus/recipes-multimedia/libdvbsi++/libdvbsi++_0.3.6.bb
index 5916755..96d9ad0 100644
--- a/meta-openvuplus/recipes-multimedia/libdvbsi++/libdvbsi++_0.3.6.bb
+++ b/meta-openvuplus/recipes-multimedia/libdvbsi++/libdvbsi++_0.3.6.bb
@@ -3,9 +3,10 @@ AUTHOR = "Andreas Oberritter"
SECTION = "libs/multimedia"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.saftware.de/${PN}/${P}.tar.bz2"
+SRC_URI += "file://transport_protocol_descriptor.patch"
SRC_URI[md5sum] = "4e9fb95c3ab8bb31ff051ed1aa98c8c5"
SRC_URI[sha256sum] = "7f9a8fc7bed9372784ecb101fc45042dcb36dcd4949c57aa524365366f71ebf2"
diff --git a/meta-openvuplus/recipes-multimedia/xbmc/enigma2-plugin-extensions-xbmc.bb b/meta-openvuplus/recipes-multimedia/xbmc/enigma2-plugin-extensions-xbmc.bb
deleted file mode 100644
index de6708d..0000000
--- a/meta-openvuplus/recipes-multimedia/xbmc/enigma2-plugin-extensions-xbmc.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SECTION = "base"
-LICENSE = "CLOSED"
-require conf/license/license-close.inc
-
-PKG_DATE="20150424.1_beta"
-
-PV="1.0"
-PR="${PKG_DATE}_r0"
-
-DEPENDS += "enigma2 xbmc"
-RDEPENDS_${PN} += "xbmc"
-
-SRC_URI = "http://archive.vuplus.com/download/build_support/e2xbmc-plugin_${PKG_DATE}.tar.gz"
-
-S = "${WORKDIR}/plugin"
-
-PLUGIN_DIR="${D}${libdir}/enigma2/python/Plugins/Extensions/XBMC"
-
-do_install() {
- install -d ${PLUGIN_DIR}
- install -m 0755 ${S}/*.py ${PLUGIN_DIR}
- install -m 0755 ${S}/button.png ${PLUGIN_DIR}
-}
-
-do_package_qa() {
-}
-
-FILES_${PN}="/"
-
-SRC_URI[md5sum] = "74687180693181e80ab2631741bb95e3"
-SRC_URI[sha256sum] = "c9f8f30df576caedf165fe69aeec4acced3904383278fa9278e3923c7fa6a200"
-
diff --git a/meta-openvuplus/recipes-multimedia/xbmc/xbmc_git.bb b/meta-openvuplus/recipes-multimedia/xbmc/xbmc_git.bb
deleted file mode 100644
index 0c2e1f1..0000000
--- a/meta-openvuplus/recipes-multimedia/xbmc/xbmc_git.bb
+++ /dev/null
@@ -1,85 +0,0 @@
-SUMMARY = "XBMC Media Center"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE.GPL;md5=6eb631b6da7fdb01508a80213ffc35ff"
-
-DEPENDS = "libusb1 libcec libplist expat yajl gperf-native libxmu fribidi mpeg2dec ffmpeg samba fontconfig curl python libass libmodplug libmicrohttpd wavpack libmms cmake-native libsdl-image libsdl-mixer virtual/egl mysql5 sqlite3 libmms faad2 libcdio libpcre boost lzo enca avahi libsamplerate0 libxinerama libxrandr libxtst bzip2 virtual/libsdl jasper zip-native zlib libtinyxml"
-#require recipes/egl/egl.inc
-
-SRCREV = "82388d55dae79cbb2e486e307e23202e76a43efa"
-
-PV = "11.0"
-PR = "r14"
-#PR_append = "+gitr${SRCPV}"
-SRC_URI = "git://github.com/xbmc/xbmc.git;branch=eden;protocol=git \
- file://0001-configure-don-t-run-python-distutils-to-find-STAGING.patch \
- file://0002-Revert-fixed-ios-Add-memory-barriers-to-atomic-Add-S.patch \
- file://0003-Revert-fixed-ios-Add-memory-barriers-to-cas-assembly.patch \
- file://configure.in-Avoid-running-code.patch \
- "
-
-inherit autotools-brokensep gettext python-dir
-
-S = "${WORKDIR}/git"
-
-CACHED_CONFIGUREVARS += " \
- ac_cv_path_PYTHON="${STAGING_BINDIR_NATIVE}/python-native/python" \
-"
-
-EXTRA_OECONF = " \
- --disable-rpath \
- --enable-gles \
- --enable-libusb \
- --enable-airplay \
- --disable-optical-drive \
- --enable-external-libraries \
-"
-
-FULL_OPTIMIZATION_armv7a = "-fexpensive-optimizations -fomit-frame-pointer -O4 -ffast-math"
-BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}"
-
-EXTRA_OECONF_append_armv7a = "--cpu=cortex-a8"
-
-# for python modules
-export HOST_SYS
-export BUILD_SYS
-export STAGING_LIBDIR
-export STAGING_INCDIR
-export PYTHON_DIR
-
-do_configure() {
- ./bootstrap
- oe_runconf
-}
-
-PARALLEL_MAKE = ""
-
-do_compile_prepend() {
- for i in $(find . -name "Makefile") ; do
- sed -i -e 's:I/usr/include:I${STAGING_INCDIR}:g' $i
- done
-
- for i in $(find . -name "*.mak*" -o -name "Makefile") ; do
- sed -i -e 's:I/usr/include:I${STAGING_INCDIR}:g' -e 's:-rpath \$(libdir):-rpath ${libdir}:g' $i
- done
-}
-
-INSANE_SKIP_${PN} = "rpaths"
-
-# on ARM architectures xbmc will use GLES which will make the regular wrapper fail, so start it directly
-do_install_append_arm() {
- sed -i -e 's:Exec=xbmc:Exec=${libdir}/xbmc/xbmc.bin:g' ${D}${datadir}/applications/xbmc.desktop
-}
-
-FILES_${PN} += "${datadir}/xsessions ${datadir}/icons"
-FILES_${PN}-dbg += "${libdir}/xbmc/.debug ${libdir}/xbmc/*/.debug ${libdir}/xbmc/*/*/.debug ${libdir}/xbmc/*/*/*/.debug"
-
-# xbmc uses some kind of dlopen() method for libcec so we need to add it manually
-RRECOMMENDS_${PN}_append = " libcec \
- python \
- python-lang \
- python-re \
- python-netclient \
- libcurl \
- "
-RRECOMMENDS_${PN}_append_libc-glibc = " glibc-charmap-ibm850 glibc-gconv-ibm850"
diff --git a/meta-openvuplus/recipes-multimedia/xbmc/xbmc_git.bbappend b/meta-openvuplus/recipes-multimedia/xbmc/xbmc_git.bbappend
deleted file mode 100644
index bf7cbd8..0000000
--- a/meta-openvuplus/recipes-multimedia/xbmc/xbmc_git.bbappend
+++ /dev/null
@@ -1,101 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-SUMMARY = "XBMC Media Center"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE.GPL;md5=6eb631b6da7fdb01508a80213ffc35ff"
-
-DEPENDS = "libgles libxslt libusb1 libcec libplist expat yajl gperf-native fribidi mpeg2dec samba fontconfig curl python libass libmodplug libmicrohttpd wavpack libmms cmake-native libsdl-image libsdl-mixer mysql5 sqlite3 libmms faad2 libcdio libpcre boost lzo enca avahi libsamplerate0 bzip2 virtual/libsdl jasper zip-native zlib libtinyxml taglib libbluray libshairport librtmp zlib libnfs libxslt"
-
-RDEPENDS_${PN} = "python"
-RDEPENDS_${PN} += "\
- python-distutils \
- python-subprocess \
- python-robotparser \
- python-mechanize \
- python-threading \
- python-shell \
- python-zlib \
- python-sqlite3 \
- python-json \
- python-xml \
- python-html \
- python-netserver \
- python-misc \
- python-pygobject \
- python-pygobject-lib \
- python-textutils \
- python-simplejson \
- python-xmlrpc \
- python-pprint \
- python-difflib \
- python-email \
- python-compression \
- python-compile \
- python-compiler \
- python-numbers \
- nfs-utils-client \
- libshairport \
- glibc-gconv-utf-32 \
- xz \
- tiff \
- yajl \
- libxslt \
- libupnp \
- libplist \
- librtmp \
- libbluray \
- libnfs \
-"
-
-BUILD_PR="r3"
-NATIVEGLES_PR="20150424_p0"
-
-BRANCH = "gotham_vuplus"
-SRCREV = "a4cee0ded4d72572be519ffe8c3aad329113e10a"
-
-PV = "13.2"
-PR = "${BUILD_PR}_${NATIVEGLES_PR}_${SRCREV}"
-
-SRC_URI = "git://code.vuplus.com/git/xbmc.git;protocol=http;branch=${BRANCH};tag=${SRCREV} \
- http://archive.vuplus.com/download/build_support/xbmc-support_${NATIVEGLES_PR}.tar.gz;name=xbmc-support \
-"
-S = "${WORKDIR}/git"
-
-EXTRA_OECONF = " \
- --enable-gles \
- --enable-libusb \
- --enable-airplay \
- --disable-optical-drive \
- --enable-external-libraries \
- --disable-ssh \
- --disable-x11 \
- --disable-sdl \
- --disable-joystick \
- --disable-alsa \
- --disable-libcec \
- --enable-rtmp \
- --disable-texturepacker \
- --with-platform=dvbbox \
-"
-
-do_configure_prepend(){
- cp -av ${WORKDIR}/xbmc-support/gles_init.* ${WORKDIR}/git/xbmc/windowing/egl/
-}
-
-do_install_append(){
- install -d ${D}${bindir}
- install -m 0755 ${WORKDIR}/xbmc-support/xbmc.helper ${D}${bindir}
-}
-
-do_package_qa(){
-}
-
-PARALLEL_MAKE = " -j8 "
-
-FILES_${PN} += "/usr/bin /usr/share /usr/lib"
-
-SRC_URI[xbmc-support.md5sum] = "28d0a2461f5a8244cbc908dd0e0ab5bc"
-SRC_URI[xbmc-support.sha256sum] = "ecd7520c8649fc426c8bc941a30daec000cd10fc21fcdd9a494bf23f497d7423"
-
-INSANE_SKIP_${PN} = "already-stripped"
-