diff options
author | hschang <chang@dev3> | 2015-10-16 04:15:19 (GMT) |
---|---|---|
committer | hschang <chang@dev3> | 2015-10-19 09:32:27 (GMT) |
commit | 5e5582814a4d472b1e93907e76be151ad16b1786 (patch) | |
tree | 0c14a8f351c0902d095a74871afb1126f89e932f /meta-openvuplus/recipes-multimedia | |
parent | 31fbe87f034c671e88ceb0f28942f10dfe4fde07 (diff) |
Solo4K Support.
Diffstat (limited to 'meta-openvuplus/recipes-multimedia')
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" - |