summaryrefslogtreecommitdiffstats
path: root/vlc
diff options
context:
space:
mode:
author Eric Hameleers <alien@slackware.com>2018-01-04 21:56:56 +0000
committer Eric Hameleers <alien@slackware.com>2018-01-04 21:56:56 +0000
commit3b6d3f34323e4b89fa9e622ea0aece7e9567e9ac (patch)
treeb474fb6999e00315c6c078c984f4ab20dfd74286 /vlc
parenteae425b00f7474c8089c84604b3d4a5d3c1e4f32 (diff)
downloadasb-3b6d3f34323e4b89fa9e622ea0aece7e9567e9ac.tar.gz
asb-3b6d3f34323e4b89fa9e622ea0aece7e9567e9ac.tar.xz
Initial revision
Diffstat (limited to 'vlc')
-rw-r--r--vlc/build/patches/ebml_maxread.patch32
-rw-r--r--vlc/build/patches/ebml_unknown-check.patch46
-rw-r--r--vlc/build/patches/ffmpeg_dxva_vc1_crash.patch19
-rw-r--r--vlc/build/patches/fribidi_noansi.patch12
-rw-r--r--vlc/build/patches/libssh2_libgcrypt.patch50
-rw-r--r--vlc/build/patches/libssh2_notests.patch11
-rw-r--r--vlc/build/patches/libupnp_dont_use_down_intf.patch15
-rw-r--r--vlc/build/patches/libupnp_use_unicode.patch52
-rw-r--r--vlc/build/patches/live555_expose_server_string.patch87
-rw-r--r--vlc/build/patches/live555_no_null_reference.patch131
-rw-r--r--vlc/build/patches/vlc-3.0_deffont.patch15
11 files changed, 470 insertions, 0 deletions
diff --git a/vlc/build/patches/ebml_maxread.patch b/vlc/build/patches/ebml_maxread.patch
new file mode 100644
index 00000000..e1b98cf6
--- /dev/null
+++ b/vlc/build/patches/ebml_maxread.patch
@@ -0,0 +1,32 @@
+Source: http://git.videolan.org/?p=vlc/vlc-3.0.git;a=blob;f=contrib/src/ebml/ebml-maxread.patch
+ebml: Do not use elements with an unknown size if it's not allowed
+
+--- ebml/src/EbmlElement.cpp 2017-11-27 09:12:56.891612600 +0100
++++ ebml/src/EbmlElement.cpp.maxread 2017-11-27 09:29:17.335279000 +0100
+@@ -404,12 +404,14 @@ EbmlElement * EbmlElement::FindNextEleme
+ memmove(&PossibleIdNSize[0],&PossibleIdNSize[1], --ReadIndex);
+ }
+
++ if (MaxDataSize <= ReadSize)
++ break;
+ if (DataStream.read(&PossibleIdNSize[ReadIndex++], 1) == 0) {
+ return NULL; // no more data ?
+ }
+ ReadSize++;
+
+- } while (!bFound && MaxDataSize > ReadSize);
++ } while (!bFound);
+
+ if (!bFound)
+ // we reached the maximum we could read without a proper ID
+@@ -432,6 +434,10 @@ EbmlElement * EbmlElement::FindNextEleme
+ bFound = false;
+ break;
+ }
++ if (MaxDataSize <= ReadSize) {
++ bFound = false;
++ break;
++ }
+ if( DataStream.read( &PossibleIdNSize[SizeIdx++], 1 ) == 0 ) {
+ return NULL; // no more data ?
+ }
diff --git a/vlc/build/patches/ebml_unknown-check.patch b/vlc/build/patches/ebml_unknown-check.patch
new file mode 100644
index 00000000..fc8fdd8d
--- /dev/null
+++ b/vlc/build/patches/ebml_unknown-check.patch
@@ -0,0 +1,46 @@
+Source: http://git.videolan.org/?p=vlc/vlc-3.0.git;a=blob;f=contrib/src/ebml/unknown-check.patch
+ebml: Do not use elements with an unknown size if it's not allowed
+
+From ff0dc3cc21494578ce731f5d7dcde5fdec23d40f Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <slhomme@matroska.org>
+Date: Wed, 6 Dec 2017 09:32:13 +0100
+Subject: [PATCH] Do not output an element with size Unknown if it's not
+ allowed
+
+Similar to what is done in FindNextID().
+
+SetSizeInfinite() doesn't actually set anything. SetSizeIsFinite() is the one
+that actually sets it and it is an internal API.
+---
+ src/EbmlElement.cpp | 14 ++++++--------
+ 1 file changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/src/EbmlElement.cpp b/src/EbmlElement.cpp
+index ae4441e..ac0be41 100644
+--- a/src/EbmlElement.cpp
++++ b/src/EbmlElement.cpp
+@@ -461,15 +461,13 @@ EbmlElement * EbmlElement::FindNextElement(IOCallback & DataStream, const EbmlSe
+ // 1 : same level
+ // + : further parent
+ if (Result->ValidateSize() && (SizeFound == SizeUnknown || UpperLevel > 0 || MaxDataSize == 0 || MaxDataSize >= (PossibleID_Length + PossibleSizeLength + SizeFound))) {
+- if (SizeFound == SizeUnknown) {
+- Result->SetSizeInfinite();
++ if (SizeFound != SizeUnknown || Result->SetSizeInfinite()) {
++ Result->SizePosition = DataStream.getFilePointer() - SizeIdx + EBML_ID_LENGTH(PossibleID);
++ Result->ElementPosition = Result->SizePosition - EBML_ID_LENGTH(PossibleID);
++ // place the file at the beggining of the data
++ DataStream.setFilePointer(Result->SizePosition + _SizeLength);
++ return Result;
+ }
+-
+- Result->SizePosition = DataStream.getFilePointer() - SizeIdx + EBML_ID_LENGTH(PossibleID);
+- Result->ElementPosition = Result->SizePosition - EBML_ID_LENGTH(PossibleID);
+- // place the file at the beggining of the data
+- DataStream.setFilePointer(Result->SizePosition + _SizeLength);
+- return Result;
+ }
+ }
+ delete Result;
+--
+2.10.1.windows.1
+
diff --git a/vlc/build/patches/ffmpeg_dxva_vc1_crash.patch b/vlc/build/patches/ffmpeg_dxva_vc1_crash.patch
new file mode 100644
index 00000000..ebeb7c53
--- /dev/null
+++ b/vlc/build/patches/ffmpeg_dxva_vc1_crash.patch
@@ -0,0 +1,19 @@
+Source: http://git.videolan.org/?p=vlc/vlc-3.0.git;a=blob;f=contrib/src/ffmpeg/dxva_vc1_crash.patch
+ffmpeg: fix crash in DVXA in interlaced VC-1
+
+--- ffmpeg/libavcodec/dxva2_vc1.c 2017-12-19 14:46:36.070857200 +0100
++++ ffmpeg/libavcodec/dxva2_vc1.c.refcrash 2017-12-19 14:36:57.157973200 +0100
+@@ -58,11 +58,11 @@ static void fill_picture_parameters(AVCo
+ memset(pp, 0, sizeof(*pp));
+ pp->wDecodedPictureIndex =
+ pp->wDeblockedPictureIndex = ff_dxva2_get_surface_index(avctx, ctx, current_picture->f);
+- if (s->pict_type != AV_PICTURE_TYPE_I && !v->bi_type)
++ if (s->pict_type != AV_PICTURE_TYPE_I && !v->bi_type && s->last_picture.f->data[0])
+ pp->wForwardRefPictureIndex = ff_dxva2_get_surface_index(avctx, ctx, s->last_picture.f);
+ else
+ pp->wForwardRefPictureIndex = 0xffff;
+- if (s->pict_type == AV_PICTURE_TYPE_B && !v->bi_type)
++ if (s->pict_type == AV_PICTURE_TYPE_B && !v->bi_type && s->next_picture.f->data[0])
+ pp->wBackwardRefPictureIndex = ff_dxva2_get_surface_index(avctx, ctx, s->next_picture.f);
+ else
+ pp->wBackwardRefPictureIndex = 0xffff;
diff --git a/vlc/build/patches/fribidi_noansi.patch b/vlc/build/patches/fribidi_noansi.patch
new file mode 100644
index 00000000..9f241fea
--- /dev/null
+++ b/vlc/build/patches/fribidi_noansi.patch
@@ -0,0 +1,12 @@
+diff -ur fribidi.orig/configure.ac fribidi/configure.ac
+--- fribidi.orig/configure.ac 2012-05-29 16:13:47.340167837 -0400
++++ fribidi/configure.ac 2012-05-29 16:14:23.180167432 -0400
+@@ -110,7 +110,7 @@
+ # Checks for compiler characteristics.
+ changequote(,)dnl
+ if test "x$GCC" = "xyes"; then
+- CFLAGS="$CFLAGS -Wall -ansi "
++ CFLAGS="$CFLAGS -Wall"
+ fi
+ changequote([,])dnl
+
diff --git a/vlc/build/patches/libssh2_libgcrypt.patch b/vlc/build/patches/libssh2_libgcrypt.patch
new file mode 100644
index 00000000..a9ab9c21
--- /dev/null
+++ b/vlc/build/patches/libssh2_libgcrypt.patch
@@ -0,0 +1,50 @@
+From ced924b78a40126606797ef57a74066eb3b4b83f Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <siarheit@google.com>
+Date: Mon, 31 Oct 2016 09:04:33 +0000
+Subject: [PATCH] acinclude.m4: fix ./configure --with-libgcrypt
+
+The change fixes passing of bogus gcrypt prefix.
+Reproducible as:
+
+ $ ./configure --with-libgcrypt
+ $ make V=1
+ ...
+ /bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Iyes/include -version-info 1:1:0 -no-undefined -export-symbols-regex '^libssh2_.*' -lgcrypt -lz -Lyes/lib -o libssh2.la -rpath /usr/local/lib channel.lo comp.lo crypt.lo hostkey.lo kex.lo mac.lo misc.lo packet.lo publickey.lo scp.lo session.lo sftp.lo userauth.lo transport.lo version.lo knownhost.lo agent.lo libgcrypt.lo pem.lo keepalive.lo global.lo -lgcrypt
+ ../libtool: line 7475: cd: yes/lib: No such file or directory
+ libtool: error: cannot determine absolute directory name of 'yes/lib'
+
+These
+ -Iyes/include
+ -Lyes/lib
+come from libgcrypt code autodetection:
+ if test -n "$use_libgcrypt" && test "$use_libgcrypt" != "no"; then
+ LDFLAGS="$LDFLAGS -L$use_libgcrypt/lib"
+ CFLAGS="$CFLAGS -I$use_libgcrypt/include"
+
+I assume it's a typo to use yes/no flag as a prefix and changed
+it to '$with_libgcrypt_prefix'.
+
+Reported-by: Mikhail Pukhlikov <cynede@gentoo.org>
+Signed-off-by: Sergei Trofimovich <siarheit@google.com>
+---
+ acinclude.m4 | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index 734ef07..c78260c 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -412,9 +412,9 @@ AC_DEFUN([LIBSSH2_CHECKFOR_GCRYPT], [
+
+ old_LDFLAGS=$LDFLAGS
+ old_CFLAGS=$CFLAGS
+- if test -n "$use_libgcrypt" && test "$use_libgcrypt" != "no"; then
+- LDFLAGS="$LDFLAGS -L$use_libgcrypt/lib"
+- CFLAGS="$CFLAGS -I$use_libgcrypt/include"
++ if test -n "$with_libgcrypt_prefix" && test "$use_libgcrypt" != "no"; then
++ LDFLAGS="$LDFLAGS -L$with_libgcrypt_prefix/lib"
++ CFLAGS="$CFLAGS -I$with_libgcrypt_prefix/include"
+ fi
+ AC_LIB_HAVE_LINKFLAGS([gcrypt], [], [
+ #include <gcrypt.h>
+
diff --git a/vlc/build/patches/libssh2_notests.patch b/vlc/build/patches/libssh2_notests.patch
new file mode 100644
index 00000000..b319ad47
--- /dev/null
+++ b/vlc/build/patches/libssh2_notests.patch
@@ -0,0 +1,11 @@
+--- libssh2-1.4.3/Makefile.am.orig 2014-01-24 18:42:51.602763926 +0100
++++ libssh2-1.4.3/Makefile.am 2014-01-24 18:42:58.522873002 +0100
+@@ -1,6 +1,6 @@
+ AUTOMAKE_OPTIONS = foreign nostdinc
+
+-SUBDIRS = src tests docs
++SUBDIRS = src docs
+ if BUILD_EXAMPLES
+ SUBDIRS += example
+ endif
+
diff --git a/vlc/build/patches/libupnp_dont_use_down_intf.patch b/vlc/build/patches/libupnp_dont_use_down_intf.patch
new file mode 100644
index 00000000..0fa37e1c
--- /dev/null
+++ b/vlc/build/patches/libupnp_dont_use_down_intf.patch
@@ -0,0 +1,15 @@
+Source: http://git.videolan.org/?p=vlc/vlc-3.0.git;a=blob;f=contrib/src/upnp/dont_use_down_intf.patch
+libupnp: avoid using a down interface as the default interface.
+
+--- upnp_clean/upnp/src/api/upnpapi.c 2015-05-11 18:04:45.054340200 +0200
++++ libupnp-1.6.19/upnp/src/api/upnpapi.c 2015-05-11 18:11:37.438360600 +0200
+@@ -3258,7 +3258,8 @@
+ ifname_found = 1;
+ }
+ for (adapts_item = adapts; adapts_item != NULL; adapts_item = adapts_item->Next) {
+- if (adapts_item->Flags & IP_ADAPTER_NO_MULTICAST) {
++ if (adapts_item->Flags & IP_ADAPTER_NO_MULTICAST ||
++ adapts_item->OperStatus != IfOperStatusUp) {
+ continue;
+ }
+ if (ifname_found == 0) {
diff --git a/vlc/build/patches/libupnp_use_unicode.patch b/vlc/build/patches/libupnp_use_unicode.patch
new file mode 100644
index 00000000..14cfc6a2
--- /dev/null
+++ b/vlc/build/patches/libupnp_use_unicode.patch
@@ -0,0 +1,52 @@
+Source: http://git.videolan.org/?p=vlc/vlc-3.0.git;a=blob_plain;f=contrib/src/upnp/use-unicode.patch
+upnp: Fix interface filtering
+
+--- upnp/upnp/src/api/upnpapi.c.orig 2017-03-17 17:21:09.510544751 +0100
++++ upnp/upnp/src/api/upnpapi.c 2017-03-17 17:21:32.742531559 +0100
+@@ -3264,31 +3264,10 @@
+ }
+ if (ifname_found == 0) {
+ /* We have found a valid interface name. Keep it. */
+-#ifdef UPNP_USE_MSVCPP
+- /*
+- * Partial fix for VC - friendly name is wchar string,
+- * but currently gIF_NAME is char string. For now try
+- * to convert it, which will work with many (but not
+- * all) adapters. A full fix would require a lot of
+- * big changes (gIF_NAME to wchar string?).
+- */
+ wcstombs(gIF_NAME, adapts_item->FriendlyName,
+ sizeof(gIF_NAME));
+-#else
+- memset(gIF_NAME, 0, sizeof(gIF_NAME));
+- strncpy(gIF_NAME, adapts_item->FriendlyName,
+- sizeof(gIF_NAME) - 1);
+-#endif
+ ifname_found = 1;
+ } else {
+-#ifdef UPNP_USE_MSVCPP
+- /*
+- * Partial fix for VC - friendly name is wchar string,
+- * but currently gIF_NAME is char string. For now try
+- * to convert it, which will work with many (but not
+- * all) adapters. A full fix would require a lot of
+- * big changes (gIF_NAME to wchar string?).
+- */
+ char tmpIfName[LINE_SIZE] = { 0 };
+ wcstombs(tmpIfName, adapts_item->FriendlyName,
+ sizeof(tmpIfName));
+@@ -3298,14 +3277,6 @@
+ /* This is not the interface we're looking for. */
+ continue;
+ }
+-#else
+- if (strncmp
+- (gIF_NAME, adapts_item->FriendlyName,
+- sizeof(gIF_NAME)) != 0) {
+- /* This is not the interface we're looking for. */
+- continue;
+- }
+-#endif
+ }
+ /* Loop thru this adapter's unicast IP addresses. */
+ uni_addr = adapts_item->FirstUnicastAddress;
diff --git a/vlc/build/patches/live555_expose_server_string.patch b/vlc/build/patches/live555_expose_server_string.patch
new file mode 100644
index 00000000..c30d788d
--- /dev/null
+++ b/vlc/build/patches/live555_expose_server_string.patch
@@ -0,0 +1,87 @@
+Source: http://git.videolan.org/?p=vlc/vlc-3.0.git;a=blob;f=contrib/src/live555/expose_server_string.patch
+live555: expose Server header
+
+diff -Naur live555/liveMedia/include/RTSPClient.hh live555.modified/liveMedia/include/RTSPClient.hh
+--- live555/liveMedia/include/RTSPClient.hh 2017-11-30 19:34:25.210638324 +0100
++++ live555.modified/liveMedia/include/RTSPClient.hh 2017-11-30 19:32:06.322693792 +0100
+@@ -36,6 +36,8 @@
+ #endif
+ #endif
+
++#define VLC_PATCH_RTSPCLIENT_SERVERSTRING
++
+ class RTSPClient: public Medium {
+ public:
+ static RTSPClient* createNew(UsageEnvironment& env, char const* rtspURL,
+@@ -186,6 +188,7 @@
+ unsigned sessionTimeoutParameter() const { return fSessionTimeoutParameter; }
+
+ char const* url() const { return fBaseURL; }
++ char const* serverString() const { return fserverString; }
+
+ static unsigned responseBufferSize;
+
+@@ -238,6 +241,7 @@
+
+ void reset();
+ void setBaseURL(char const* url);
++ void setServerString(char const* str);
+ int grabSocket(); // allows a subclass to reuse our input socket, so that it won't get closed when we're deleted
+ virtual unsigned sendRequest(RequestRecord* request);
+ virtual Boolean setRequestFields(RequestRecord* request,
+@@ -334,6 +338,7 @@
+ unsigned fUserAgentHeaderStrLen;
+ int fInputSocketNum, fOutputSocketNum;
+ char* fBaseURL;
++ char *fserverString;
+ unsigned char fTCPStreamIdCount; // used for (optional) RTP/TCP
+ char* fLastSessionId;
+ unsigned fSessionTimeoutParameter; // optionally set in response "Session:" headers
+diff -Naur live555/liveMedia/RTSPClient.cpp live555.modified/liveMedia/RTSPClient.cpp
+--- live555/liveMedia/RTSPClient.cpp 2017-11-30 19:34:25.210638324 +0100
++++ live555.modified/liveMedia/RTSPClient.cpp 2017-11-30 19:28:18.691423659 +0100
+@@ -366,7 +366,7 @@
+ fAllowBasicAuthentication(True), fServerAddress(0),
+ fTunnelOverHTTPPortNum(tunnelOverHTTPPortNum),
+ fUserAgentHeaderStr(NULL), fUserAgentHeaderStrLen(0),
+- fInputSocketNum(-1), fOutputSocketNum(-1), fBaseURL(NULL), fTCPStreamIdCount(0),
++ fInputSocketNum(-1), fOutputSocketNum(-1), fBaseURL(NULL), fserverString(NULL), fTCPStreamIdCount(0),
+ fLastSessionId(NULL), fSessionTimeoutParameter(0), fSessionCookieCounter(0), fHTTPTunnelingConnectionIsPending(False) {
+ setBaseURL(rtspURL);
+
+@@ -416,6 +416,7 @@
+ fServerAddress = 0;
+
+ setBaseURL(NULL);
++ setServerString(NULL);
+
+ fCurrentAuthenticator.reset();
+
+@@ -426,6 +427,10 @@
+ delete[] fBaseURL; fBaseURL = strDup(url);
+ }
+
++void RTSPClient::setServerString(char const* str) {
++ delete[] fserverString; fserverString = strDup(str);
++}
++
+ int RTSPClient::grabSocket() {
+ int inputSocket = fInputSocketNum;
+ fInputSocketNum = -1;
+@@ -1655,6 +1660,7 @@
+ char const* rtpInfoParamsStr = NULL;
+ char const* wwwAuthenticateParamsStr = NULL;
+ char const* publicParamsStr = NULL;
++ char const* serverStr = NULL;
+ char* bodyStart = NULL;
+ unsigned numBodyBytes = 0;
+ responseSuccess = False;
+@@ -1725,6 +1731,8 @@
+ } else if (checkForHeader(lineStart, "Transport:", 10, transportParamsStr)) {
+ } else if (checkForHeader(lineStart, "Scale:", 6, scaleParamsStr)) {
+ } else if (checkForHeader(lineStart, "Speed:", 6, speedParamsStr)) {
++ } else if (checkForHeader(lineStart, "Server:", 7, serverStr)) {
++ setServerString(serverStr);
+ } else if (checkForHeader(lineStart, "Range:", 6, rangeParamsStr)) {
+ } else if (checkForHeader(lineStart, "RTP-Info:", 9, rtpInfoParamsStr)) {
+ } else if (checkForHeader(lineStart, "WWW-Authenticate:", 17, headerParamsStr)) {
diff --git a/vlc/build/patches/live555_no_null_reference.patch b/vlc/build/patches/live555_no_null_reference.patch
new file mode 100644
index 00000000..275d935b
--- /dev/null
+++ b/vlc/build/patches/live555_no_null_reference.patch
@@ -0,0 +1,131 @@
+Source: http://git.videolan.org/?p=vlc/vlc-3.0.git;a=blob;f=contrib/src/live555/no-null-reference.patch
+live555: Fix undefined behaviors
+
+--- live555/liveMedia/RTSPClient.cpp.old 2017-11-24 14:34:20.588181348 +0100
++++ live555/liveMedia/RTSPClient.cpp 2017-11-24 14:56:37.520204839 +0100
+@@ -183,13 +183,13 @@
+ }
+ }
+
+-void RTSPClient::setSpeed(MediaSession& session, float speed) {
++void RTSPClient::setSpeed(MediaSession* session, float speed) {
+ // Optionally set download speed for session to be used later on PLAY command:
+ // The user should call this function after the MediaSession is instantiated, but before the
+ // first "sendPlayCommand()" is called.
+- if (&session != NULL) {
+- session.speed() = speed;
+- MediaSubsessionIterator iter(session);
++ if (session != NULL) {
++ session->speed() = speed;
++ MediaSubsessionIterator iter(*session);
+ MediaSubsession* subsession;
+
+ while ((subsession = iter.next()) != NULL) {
+@@ -1215,26 +1215,26 @@
+ return success;
+ }
+
+-Boolean RTSPClient::handlePLAYResponse(MediaSession& session, MediaSubsession& subsession,
++Boolean RTSPClient::handlePLAYResponse(MediaSession* session, MediaSubsession* subsession,
+ char const* scaleParamsStr, char const* speedParamsStr,
+ char const* rangeParamsStr, char const* rtpInfoParamsStr) {
+ Boolean scaleOK = False, rangeOK = False, speedOK = False;
+ do {
+- if (&session != NULL) {
++ if (session != NULL) {
+ // The command was on the whole session
+- if (scaleParamsStr != NULL && !parseScaleParam(scaleParamsStr, session.scale())) break;
++ if (scaleParamsStr != NULL && !parseScaleParam(scaleParamsStr, session->scale())) break;
+ scaleOK = True;
+- if (speedParamsStr != NULL && !parseSpeedParam(speedParamsStr, session.speed())) break;
++ if (speedParamsStr != NULL && !parseSpeedParam(speedParamsStr, session->speed())) break;
+ speedOK = True;
+ Boolean startTimeIsNow;
+ if (rangeParamsStr != NULL &&
+ !parseRangeParam(rangeParamsStr,
+- session.playStartTime(), session.playEndTime(),
+- session._absStartTime(), session._absEndTime(),
++ session->playStartTime(), session->playEndTime(),
++ session->_absStartTime(), session->_absEndTime(),
+ startTimeIsNow)) break;
+ rangeOK = True;
+
+- MediaSubsessionIterator iter(session);
++ MediaSubsessionIterator iter(*session);
+ MediaSubsession* subsession;
+ while ((subsession = iter.next()) != NULL) {
+ u_int16_t seqNum; u_int32_t timestamp;
+@@ -1249,27 +1249,27 @@
+ }
+ } else {
+ // The command was on a subsession
+- if (scaleParamsStr != NULL && !parseScaleParam(scaleParamsStr, subsession.scale())) break;
++ if (scaleParamsStr != NULL && !parseScaleParam(scaleParamsStr, subsession->scale())) break;
+ scaleOK = True;
+- if (speedParamsStr != NULL && !parseSpeedParam(speedParamsStr, session.speed())) break;
++ if (speedParamsStr != NULL && !parseSpeedParam(speedParamsStr, subsession->speed())) break;
+ speedOK = True;
+ Boolean startTimeIsNow;
+ if (rangeParamsStr != NULL &&
+ !parseRangeParam(rangeParamsStr,
+- subsession._playStartTime(), subsession._playEndTime(),
+- subsession._absStartTime(), subsession._absEndTime(),
++ subsession->_playStartTime(), subsession->_playEndTime(),
++ subsession->_absStartTime(), subsession->_absEndTime(),
+ startTimeIsNow)) break;
+ rangeOK = True;
+
+ u_int16_t seqNum; u_int32_t timestamp;
+- subsession.rtpInfo.infoIsNew = False;
++ subsession->rtpInfo.infoIsNew = False;
+ if (parseRTPInfoParams(rtpInfoParamsStr, seqNum, timestamp)) {
+- subsession.rtpInfo.seqNum = seqNum;
+- subsession.rtpInfo.timestamp = timestamp;
+- subsession.rtpInfo.infoIsNew = True;
++ subsession->rtpInfo.seqNum = seqNum;
++ subsession->rtpInfo.timestamp = timestamp;
++ subsession->rtpInfo.infoIsNew = True;
+ }
+
+- if (subsession.rtpSource() != NULL) subsession.rtpSource()->enableRTCPReports() = True; // start sending RTCP "RR"s now
++ if (subsession->rtpSource() != NULL) subsession->rtpSource()->enableRTCPReports() = True; // start sending RTCP "RR"s now
+ }
+
+ return True;
+@@ -1809,12 +1809,12 @@
+ if (responseCode == 200) {
+ // Do special-case response handling for some commands:
+ if (strcmp(foundRequest->commandName(), "SETUP") == 0) {
+- if (!handleSETUPResponse(*foundRequest->subsession(), sessionParamsStr, transportParamsStr, foundRequest->booleanFlags()&0x1)) break;
++ if (!handleSETUPResponse(*foundRequest->subsession(), sessionParamsStr, transportParamsStr, foundRequest->booleanFlags()&0x1)) break;
+ } else if (strcmp(foundRequest->commandName(), "PLAY") == 0) {
+- if (!handlePLAYResponse(*foundRequest->session(), *foundRequest->subsession(), scaleParamsStr, speedParamsStr, rangeParamsStr, rtpInfoParamsStr)) break;
++ if (!handlePLAYResponse(foundRequest->session(), foundRequest->subsession(), scaleParamsStr, speedParamsStr, rangeParamsStr, rtpInfoParamsStr)) break;
+ } else if (strcmp(foundRequest->commandName(), "TEARDOWN") == 0) {
+- if (!handleTEARDOWNResponse(*foundRequest->session(), *foundRequest->subsession())) break;
+- } else if (strcmp(foundRequest->commandName(), "GET_PARAMETER") == 0) {
++ if (!handleTEARDOWNResponse(*foundRequest->session(), *foundRequest->subsession())) break;
++ } else if (strcmp(foundRequest->commandName(), "GET_PARAMETER") == 0) {
+ if (!handleGET_PARAMETERResponse(foundRequest->contentStr(), bodyStart, responseEnd)) break;
+ }
+ } else if (responseCode == 401 && handleAuthenticationFailure(wwwAuthenticateParamsStr)) {
+--- live555/liveMedia/include/RTSPClient.hh.old.h 2017-11-24 14:48:30.544196283 +0100
++++ live555/liveMedia/include/RTSPClient.hh 2017-11-24 14:56:57.836205196 +0100
+@@ -155,7 +155,7 @@
+ // Our implementation automatically does this just prior to sending each "PLAY" command;
+ // You should not call these functions yourself unless you know what you're doing.
+
+- void setSpeed(MediaSession& session, float speed = 1.0f);
++ void setSpeed(MediaSession* session, float speed = 1.0f);
+ // Set (recorded) media download speed to given value to support faster download using 'Speed:'
+ // option on 'PLAY' command.
+
+@@ -286,7 +286,7 @@
+ Boolean parseRTPInfoParams(char const*& paramStr, u_int16_t& seqNum, u_int32_t& timestamp);
+ Boolean handleSETUPResponse(MediaSubsession& subsession, char const* sessionParamsStr, char const* transportParamsStr,
+ Boolean streamUsingTCP);
+- Boolean handlePLAYResponse(MediaSession& session, MediaSubsession& subsession,
++ Boolean handlePLAYResponse(MediaSession* session, MediaSubsession* subsession,
+ char const* scaleParamsStr, const char* speedParamsStr,
+ char const* rangeParamsStr, char const* rtpInfoParamsStr);
+ Boolean handleTEARDOWNResponse(MediaSession& session, MediaSubsession& subsession);
diff --git a/vlc/build/patches/vlc-3.0_deffont.patch b/vlc/build/patches/vlc-3.0_deffont.patch
new file mode 100644
index 00000000..699b8f5c
--- /dev/null
+++ b/vlc/build/patches/vlc-3.0_deffont.patch
@@ -0,0 +1,15 @@
+--- a/modules/text_renderer/freetype/platform_fonts.h 2018-01-03 14:18:27.335712741 +0100
++++ b/modules/text_renderer/freetype/platform_fonts.h 2018-01-03 14:20:12.920366368 +0100
+@@ -73,9 +73,9 @@
+ # define SYSTEM_DEFAULT_MONOSPACE_FONT_FILE "/system/fonts/DroidSansMono.ttf"
+ # define SYSTEM_DEFAULT_MONOSPACE_FAMILY "Monospace"
+ #else
+-# define SYSTEM_DEFAULT_FONT_FILE "/usr/share/fonts/truetype/freefont/FreeSerifBold.ttf"
+-# define SYSTEM_DEFAULT_FAMILY "Serif Bold"
+-# define SYSTEM_DEFAULT_MONOSPACE_FONT_FILE "/usr/share/fonts/truetype/freefont/FreeMono.ttf"
++# define SYSTEM_DEFAULT_FONT_FILE "/usr/share/fonts/TTF/DejaVuSans-Bold.ttf"
++# define SYSTEM_DEFAULT_FAMILY "Sans Bold"
++# define SYSTEM_DEFAULT_MONOSPACE_FONT_FILE ""/usr/share/fonts/TTF/DejaVuSansMono-Bold.ttf"
+ # define SYSTEM_DEFAULT_MONOSPACE_FAMILY "Monospace"
+ #endif
+