From 6e06b79d422a1a2e5d5c73359a19422f00211909 Mon Sep 17 00:00:00 2001 From: Gerasim Troeglazov <3dEyes@gmail.com> Date: Tue, 20 Oct 2020 19:42:57 +1000 Subject: [PATCH] VLC: bump version * add native sound module * add native video module * many fixes for UI * add launcher for Tracker refs --- .../vlc/additional-files/haikuicons.zip | Bin 0 -> 288005 bytes media-video/vlc/additional-files/vlc.rdef.in | 8 +- .../vlc/additional-files/vlc_launcher.rdef.in | 47 + media-video/vlc/patches/vlc-2.2.8.patchset | 1313 --------- media-video/vlc/patches/vlc-3.0.11.1.patchset | 2346 +++++++++++++++++ .../{vlc-2.2.8.recipe => vlc-3.0.11.1.recipe} | 182 +- 6 files changed, 2466 insertions(+), 1430 deletions(-) create mode 100644 media-video/vlc/additional-files/haikuicons.zip create mode 100644 media-video/vlc/additional-files/vlc_launcher.rdef.in delete mode 100644 media-video/vlc/patches/vlc-2.2.8.patchset create mode 100644 media-video/vlc/patches/vlc-3.0.11.1.patchset rename media-video/vlc/{vlc-2.2.8.recipe => vlc-3.0.11.1.recipe} (50%) diff --git a/media-video/vlc/additional-files/haikuicons.zip b/media-video/vlc/additional-files/haikuicons.zip new file mode 100644 index 0000000000000000000000000000000000000000..219c144930dd2caa1a977c905e8c4c0661978b14 GIT binary patch literal 288005 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

Z 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%0ACg1_{)g9^34L&F+p8FH}f~SHu{+z9&?`oRHYH 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

0H`De~#t%xuIO-)p5YiQSRB0rO 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 yK%fYJpbvnH)zSPP9N^vpJiK1O^)t -Date: Wed, 23 Aug 2017 16:56:18 +0300 -Subject: initial Haiku support - - -diff --git a/Makefile.am b/Makefile.am -index febdc63..992fff9 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -981,15 +981,16 @@ dist_noinst_SCRIPTS += test/run_vlc.sh - ############################################################################### - # Installing plugins cache - ############################################################################### --install-exec-hook: -- if test "$(build)" = "$(host)"; then \ -- PATH="$(DESTDIR)$(bindir):$$PATH" \ -- LD_LIBRARY_PATH="$(DESTDIR)$(libdir):$$LD_LIBRARY_PATH" \ -- "$(DESTDIR)$(vlclibdir)/vlc-cache-gen$(EXEEXT)" \ -- "$(DESTDIR)$(vlclibdir)/plugins" ; \ -- else \ -- echo "Cross-compilation: cache generation skipped!" ; \ -- fi -+#Haiku bug #13159 -+#install-exec-hook: -+# if test "$(build)" = "$(host)"; then \ -+# PATH="$(DESTDIR)$(bindir):$$PATH" \ -+# LD_LIBRARY_PATH="$(DESTDIR)$(libdir):$$LD_LIBRARY_PATH" \ -+# "$(DESTDIR)$(vlclibdir)/vlc-cache-gen$(EXEEXT)" \ -+# "$(DESTDIR)$(vlclibdir)/plugins" ; \ -+# else \ -+# echo "Cross-compilation: cache generation skipped!" ; \ -+# fi - - uninstall-hook: - rm -f -- "$(DESTDIR)$(vlclibdir)/plugins/plugins.dat" -diff --git a/bin/Makefile.am b/bin/Makefile.am -index 869ac56..669f612 100644 ---- a/bin/Makefile.am -+++ b/bin/Makefile.am -@@ -79,11 +79,11 @@ noinst_DATA += ../modules/plugins.dat - MOSTLYCLEANFILES = $(noinst_DATA) - - .PHONY: ../modules/plugins.dat -- --../modules/plugins.dat: vlc-cache-gen$(EXEEXT) -- $(AM_V_at)rm -f ../modules/plugins.dat -- $(AM_V_GEN)if test "$(build)" = "$(host)"; then \ -- ./vlc-cache-gen$(EXEEXT) ../modules ; \ -- else \ -- echo "Cross-compilation: cache generation skipped!" ; \ -- fi -+# Haiku bug #13159 -+#../modules/plugins.dat: vlc-cache-gen$(EXEEXT) -+# $(AM_V_at)rm -f ../modules/plugins.dat -+# $(AM_V_GEN)if test "$(build)" = "$(host)"; then \ -+# ./vlc-cache-gen$(EXEEXT) ../modules ; \ -+# else \ -+# echo "Cross-compilation: cache generation skipped!" ; \ -+# fi -diff --git a/bin/override.c b/bin/override.c -index fb4608c..9c7c085 100644 ---- a/bin/override.c -+++ b/bin/override.c -@@ -125,6 +125,8 @@ static void *getsym (const char *name) - * - * Some evil libraries modify the environment. We currently ignore the calls as - * they could crash the process. This may cause funny behaviour though. */ -+#ifndef __HAIKU__ -+//not working - int putenv (char *str) - { - if (override) -@@ -135,6 +137,7 @@ int putenv (char *str) - return CALL(putenv, str); - } - -+#endif - int setenv (const char *name, const char *value, int overwrite) - { - if (override) -diff --git a/configure.ac b/configure.ac -index b49281c..2ec9809 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -298,11 +298,19 @@ case "${host_os}" in - LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem" - AC_LIBOBJ([freeaddrinfo]) - ;; -+ *haiku*) -+ SYS=haiku -+ VLC_ADD_LIBS([libvlccore libvlc vlc],[-lnetwork -lbe]) -+ VLC_ADD_PLUGIN([haiku_aout]) -+ VLC_ADD_LIBS([haiku_aout],[-lmedia]) -+ VLC_ADD_CXXFLAGS([qt4],[-std=c++11]) -+ ;; - *) - SYS="${host_os}" - ;; - esac - AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin") -+AM_CONDITIONAL(HAVE_HAIKU, test "${SYS}" = "haiku") - AM_CONDITIONAL(HAVE_LINUX, test "${SYS}" = "linux") - AM_CONDITIONAL(HAVE_OS2, test "${SYS}" = "os2") - AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32") -@@ -535,10 +543,13 @@ VLC_LIBRARY_SUFFIX - dnl Check for system libs needed - need_libc=false - -+# this fails to detect that we have if_nameindex and if_nametoindex on Haiku -+# and then it fails to detect that we don't have tdestroy... -+ - dnl Check for usual libc functions - AC_CHECK_DECLS([nanosleep],,,[#include ]) - AC_CHECK_FUNCS([daemon fcntl fstatvfs fork getenv getpwuid_r isatty lstat memalign mmap open_memstream openat pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale]) --AC_REPLACE_FUNCS([atof atoll dirfd fdopendir flockfile fsync getdelim getpid gmtime_r lldiv localtime_r nrand48 poll posix_memalign rewind setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strsep strtof strtok_r strtoll swab tdestroy strverscmp]) -+AC_REPLACE_FUNCS([atof atoll dirfd fdopendir flockfile fsync getdelim getpid gmtime_r lldiv localtime_r nrand48 poll posix_memalign rewind setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strsep strtof strtok_r strtoll swab strverscmp]) - AC_CHECK_FUNCS(fdatasync,, - [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.]) - ]) -@@ -606,8 +617,10 @@ AC_SEARCH_LIBS(connect, [socket], [ - AS_IF([test "${SYS}" = "mingw32"], [ - SOCKET_LIBS="-lws2_32" - ]) -+ AS_IF([test "${SYS}" = "haiku"], [ -+ SOCKET_LIBS="-lnetwork" -+ ]) - ]) -- - AC_SEARCH_LIBS([inet_pton], [nsl], [ - AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [ - SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS" -@@ -867,7 +880,7 @@ dnl - dnl Compiler warnings - dnl - --RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var error-implicit-function-declaration]) -+RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var]) - RDC_PROG_CC_FLAGS([-pipe]) - AC_LANG_PUSH([C++]) - RDC_PROG_CXX_WFLAGS([all extra sign-compare undef pointer-arith volatile-register-var]) -@@ -2549,7 +2562,7 @@ then - VLC_SAVE_FLAGS - CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}" - CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}" -- AC_CHECK_HEADERS(postproc/postprocess.h) -+ AC_CHECK_HEADERS(libpostproc/postprocess.h) - VLC_ADD_PLUGIN([postproc]) - VLC_ADD_LIBS([postproc],[$POSTPROC_LIBS $AVUTIL_LIBS]) - VLC_ADD_CFLAGS([postproc],[$POSTPROC_CFLAGS $AVUTIL_CFLAGS]) -@@ -3109,7 +3122,7 @@ dnl X C Bindings modules - dnl - AC_ARG_ENABLE(xcb, - [ --enable-xcb X11 support with XCB (default enabled)],, [ -- AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${SYS}" != "symbian"], [ -+ AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${SYS}" != "haiku" -a "${SYS}" != "symbian"], [ - enable_xcb="yes" - ], [ - enable_xcb="no" -@@ -3207,7 +3220,7 @@ then - if test "${SYS}" != "darwin"; then - VLC_ADD_PLUGIN([vout_sdl]) - fi -- if test "${SYS}" != "mingw32" -a "${SYS}" != "os2"; then -+ if test "${SYS}" != "mingw32" -a "${SYS}" != "os2" -a "${SYS}" != "haiku"; then - VLC_ADD_LIBS([vout_sdl],[${X_LIBS} ${X_PRE_LIBS} -lX11]) - fi - VLC_ADD_CFLAGS([vout_sdl],[${SDL_CFLAGS}]) -@@ -4166,7 +4179,7 @@ AC_ARG_WITH(kde-solid, - AS_HELP_STRING([--with-kde-solid=PATH], - [KDE Solid actions directory (auto)]),, [ - --if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" ; then -+if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${SYS}" != "haiku" ; then - with_kde_solid="yes" - fi - ]) -diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h -index 997f600..47b566e 100644 ---- a/include/vlc_fixups.h -+++ b/include/vlc_fixups.h -@@ -261,10 +261,13 @@ void swab (const void *, void *, ssize_t); - #endif - - /* Socket stuff */ -+// configure doesn't detect these, likely not linking to -lnetwork, must investigate -+#ifndef __HAIKU__ - #ifndef HAVE_INET_PTON - int inet_pton(int, const char *, void *); - const char *inet_ntop(int, const void *, char *, int); - #endif -+#endif - - #ifndef HAVE_STRUCT_POLLFD - enum -@@ -289,6 +292,8 @@ struct pollfd; - int poll (struct pollfd *, unsigned, int); - #endif - -+// or these -+#ifndef __HAIKU__ - #ifndef HAVE_IF_NAMEINDEX - #include - struct if_nameindex -@@ -302,6 +307,7 @@ struct if_nameindex - # define if_nameindex() (errno = ENOBUFS, NULL) - # define if_freenameindex(list) (void)0 - #endif -+#endif - - /* search.h */ - #ifndef HAVE_SEARCH_H -diff --git a/include/vlc_threads.h b/include/vlc_threads.h -index ff43d6f..deb3bc7 100644 ---- a/include/vlc_threads.h -+++ b/include/vlc_threads.h -@@ -166,7 +166,13 @@ typedef struct - #define VLC_STATIC_COND { PTHREAD_COND_INITIALIZER, 0 } - typedef semaphore_t vlc_sem_t; - typedef pthread_rwlock_t vlc_rwlock_t; -+// Haiku bug #8798 -+#ifdef __HAIKU__ -+#define VLC_STATIC_RWLOCK \ -+ { VLC_STATIC_MUTEX, VLC_STATIC_COND, 0, 0, 0 } -+#else - #define VLC_STATIC_RWLOCK PTHREAD_RWLOCK_INITIALIZER -+#endif - typedef pthread_key_t vlc_threadvar_t; - typedef struct vlc_timer *vlc_timer_t; - -@@ -192,7 +198,13 @@ typedef pthread_cond_t vlc_cond_t; - #define VLC_STATIC_COND PTHREAD_COND_INITIALIZER - typedef sem_t vlc_sem_t; - typedef pthread_rwlock_t vlc_rwlock_t; -+// Haiku bug #8798 -+#ifdef __HAIKU__ -+#define VLC_STATIC_RWLOCK \ -+ { VLC_STATIC_MUTEX, VLC_STATIC_COND, 0, 0, 0 } -+#else - #define VLC_STATIC_RWLOCK PTHREAD_RWLOCK_INITIALIZER -+#endif - typedef pthread_key_t vlc_threadvar_t; - typedef struct vlc_timer *vlc_timer_t; - -diff --git a/modules/audio_output/Makefile.am b/modules/audio_output/Makefile.am -index 1e6a233..ba072a4 100644 ---- a/modules/audio_output/Makefile.am -+++ b/modules/audio_output/Makefile.am -@@ -91,6 +91,12 @@ if HAVE_SNDIO - aout_LTLIBRARIES += libsndio_plugin.la - endif - -+libhaiku_aout_plugin_la_SOURCES = audio_output/haiku.cpp -+libhaiku_aout_plugin_la_LIBADD = -lmedia -+#if HAVE_HAIKU -+#aout_LTLIBRARIES += libhaiku_aout_plugin.la -+#endif -+ - libwaveout_plugin_la_SOURCES = audio_output/waveout.c \ - audio_output/windows_audio_common.h - libwaveout_plugin_la_LIBADD = -lwinmm -diff --git a/modules/audio_output/haiku.cpp b/modules/audio_output/haiku.cpp -new file mode 100644 -index 0000000..7a8c2ec ---- /dev/null -+++ b/modules/audio_output/haiku.cpp -@@ -0,0 +1,196 @@ -+/***************************************************************************** -+ * Haiku.cpp - Haiku Media Kit audio output -+ ***************************************************************************** -+ * Copyright (C) 1999, 2000, 2001, 2012 the VideoLAN team -+ * -+ * Authors: Jean-Marc Dressler -+ * Samuel Hocevar -+ * Eric Petit -+ * Cian Duffy -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program 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 General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. -+ *****************************************************************************/ -+ -+/***************************************************************************** -+ * Preamble -+ *****************************************************************************/ -+#include -+#include /* malloc(), free() */ -+#include -+#include -+ -+#include -+#include -+using namespace std; -+ -+#include -+#include -+ -+#ifdef HAVE_CONFIG_H -+# include "config.h" -+#endif -+ -+#include -+#include -+#include -+ -+/***************************************************************************** -+ * aout_sys_t: BeOS audio output method descriptor -+ *****************************************************************************/ -+ -+queue a_queue; -+ -+struct aout_sys_t -+{ -+ BSoundPlayer * p_player; -+ mtime_t latency; -+ media_raw_audio_format * p_format; -+}; -+ -+/***************************************************************************** -+ * Local prototypes. -+ *****************************************************************************/ -+static void Close ( vlc_object_t * ); -+static void Pause (audio_output_t *, bool, mtime_t); -+static void Play (audio_output_t *, block_t *); -+ -+static void Flush (audio_output_t *, bool);static int Open ( vlc_object_t * ); -+static void BufferProc ( void * p_aout, void * p_buffer, size_t size, -+ const media_raw_audio_format & format ); -+ -+/***************************************************************************** -+ * Module descriptor -+ *****************************************************************************/ -+vlc_module_begin () -+ set_shortname( "haiku_aout" ) -+ set_description( N_("Haiku Media Kit audio output") ) -+ set_capability( "audio output", 100 ) -+ set_category( CAT_AUDIO ) -+ set_subcategory( SUBCAT_AUDIO_AOUT ) -+ set_callbacks( Open, Close ) -+vlc_module_end () -+/***************************************************************************** -+ * OpenAudio -+ *****************************************************************************/ -+static int Open( vlc_object_t * p_this ) -+{ -+ audio_output_t *p_aout = (audio_output_t *)p_this; -+ p_aout->sys = (aout_sys_t*)malloc( sizeof( aout_sys_t ) ); -+ if( p_aout->sys == NULL ) -+ { -+ return VLC_ENOMEM; -+ } -+ -+ aout_sys_t * p_sys = p_aout->sys; -+ -+ audio_format_t format = p_aout->format; -+ -+ int i_nb_channels = aout_FormatNbChannels( &format ); -+ -+// media_raw_audio_format must be passed to BSoundPlayer -+ p_sys->p_format = (media_raw_audio_format*) -+ malloc( sizeof( media_raw_audio_format ) ); -+ -+ p_aout->format.i_format = VLC_CODEC_FI32; -+ p_aout->format.i_physical_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT; -+ p_aout->format.i_rate = 44100; -+ -+ p_sys->p_format->channel_count = i_nb_channels; -+ p_sys->p_format->frame_rate = p_aout->format.i_rate; -+ p_sys->p_format->format = media_raw_audio_format::B_AUDIO_INT; -+ p_sys->p_format->byte_order = B_MEDIA_LITTLE_ENDIAN; -+ // 'magic' number obtained from checking what size the buffers being -+ // passed by the callback were -+ // in theory, any buffer size should work -+ p_sys->p_format->buffer_size = 9216; -+ -+ aout_VolumeSoftInit( p_aout ); -+ -+ //BSoundPlayer init - format, name, buffer producer, notifier, cookie -+ -+ p_sys->p_player = new BSoundPlayer( p_sys->p_format, "player", BufferProc, NULL, NULL ); -+ if( p_sys->p_player->InitCheck() != B_OK ) -+ { -+ msg_Err( p_aout, "BSoundPlayer InitCheck failed" ); -+ delete p_sys->p_player; -+ free( p_sys ); -+ } -+ p_sys->latency = p_sys->p_player->Latency(); -+ -+ p_aout->pf_play = Play; -+ p_aout->pf_pause = Pause; -+ p_aout->pf_flush = Flush; -+ -+ return VLC_SUCCESS; -+ -+} -+ -+/***************************************************************************** -+ * BufferProc- buffer producer function -+ *****************************************************************************/ -+static void BufferProc( void * _p_aout, void * _p_buffer, size_t i_size, -+ const media_raw_audio_format &format ) -+{ -+// Load buffer -+ for (size_t i = 0; i < i_size; i++) -+ { -+ uint8 data = a_queue.front(); -+ vlc_memset(_p_buffer + i, data, 1); -+ a_queue.pop(); -+ } -+ -+} -+/***************************************************************************** -+ * CloseAudio -+ *****************************************************************************/ -+static void Close( vlc_object_t * p_this ) -+{ -+ printf("Close Called"); -+ audio_output_t *p_aout = (audio_output_t *)p_this; -+ struct aout_sys_t *p_sys; -+ p_aout->sys = p_sys; -+ -+ /* Clean up */ -+ p_sys->p_player->Stop(); -+ delete p_sys->p_player; -+ free( p_sys ); -+} -+ -+ -+static void Play (audio_output_t *aout, block_t *block) -+{ -+ aout_sys_t * p_sys = aout->sys; -+ -+// load buffer to STL queue, sample by sample -+ for (size_t i = 0; i < block->i_buffer; i++) -+ { -+ a_queue.push(block->p_buffer[i]); -+ } -+ -+ p_sys->p_player->Start(); -+ p_sys->p_player->SetHasData( true ); -+// release buffer -+ block_Release (block); -+} -+ -+ -+static void Pause (audio_output_t *aout, bool pause, mtime_t date) -+{ -+} -+ -+ -+static void Flush (audio_output_t *aout, bool wait) -+{ -+} -diff --git a/modules/gui/qt4/Makefile.am b/modules/gui/qt4/Makefile.am -index 1a564cf..4d12501 100644 ---- a/modules/gui/qt4/Makefile.am -+++ b/modules/gui/qt4/Makefile.am -@@ -22,7 +22,7 @@ else - if HAVE_WIN32 - libqt4_plugin_la_LIBADD += -lole32 -lcomctl32 -luuid - else --libqt4_plugin_la_LIBADD += $(X_LIBS) $(X_PRE_LIB) -lX11 -+libqt4_plugin_la_LIBADD += $(X_LIBS) $(X_PRE_LIB) - endif - endif - if HAVE_DARWIN -diff --git a/modules/video_output/Modules.am b/modules/video_output/Modules.am -index 51bd09c..fcf60c7 100644 ---- a/modules/video_output/Modules.am -+++ b/modules/video_output/Modules.am -@@ -226,7 +226,7 @@ libcaca_plugin_la_CFLAGS = $(AM_CFLAGS) $(CACA_CFLAGS) - libcaca_plugin_la_LIBADD = $(CACA_LIBS) - if !HAVE_WIN32 - if !HAVE_DARWIN --libcaca_plugin_la_LIBADD += $(X_LIBS) $(X_PRE_LIBS) -lX11 -+libcaca_plugin_la_LIBADD += $(X_LIBS) $(X_PRE_LIBS) - endif - endif - libcaca_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(voutdir)' -diff --git a/modules/video_output/caca.c b/modules/video_output/caca.c -index 75c83e6..8922732 100644 ---- a/modules/video_output/caca.c -+++ b/modules/video_output/caca.c -@@ -34,7 +34,7 @@ - #include - #include - #include --#if !defined(_WIN32) && !defined(__APPLE__) -+#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__HAIKU__) - # ifdef X_DISPLAY_MISSING - # error Xlib required due to XInitThreads - # endif -diff --git a/modules/video_output/sdl.c b/modules/video_output/sdl.c -index e56c976..76b7ef4 100644 ---- a/modules/video_output/sdl.c -+++ b/modules/video_output/sdl.c -@@ -40,7 +40,7 @@ - - #include - --#if !defined(_WIN32) && !defined(__OS2__) -+#if !defined(_WIN32) && !defined(__OS2__) && !defined(__HAIKU__) - # ifdef X_DISPLAY_MISSING - # error Xlib required due to XInitThreads - # endif -@@ -116,7 +116,7 @@ static int Open(vlc_object_t *object) - vout_display_t *vd = (vout_display_t *)object; - vout_display_sys_t *sys; - --#if !defined(_WIN32) && !defined(__OS2__) -+#if !defined(_WIN32) && !defined(__OS2__) && !defined(__HAIKU__) - if (!vlc_xlib_init (object)) - return VLC_EGENERIC; - #endif -diff --git a/src/Makefile.am b/src/Makefile.am -index 4aaf405..b2ead2c 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -231,6 +231,9 @@ else - if HAVE_OS2 - libvlccore_la_SOURCES += $(SOURCES_libvlc_os2) - else -+if HAVE_HAIKU -+libvlccore_la_SOURCES += $(SOURCES_libvlc_haiku) -+else - libvlccore_la_SOURCES += $(SOURCES_libvlc_other) - endif - endif -@@ -238,6 +241,7 @@ endif - endif - endif - endif -+endif - if BUILD_HTTPD - libvlccore_la_SOURCES += $(SOURCES_libvlc_httpd) - endif -@@ -319,6 +323,18 @@ SOURCES_libvlc_os2 = \ - os2/rand.c \ - $(NULL) - -+SOURCES_libvlc_haiku = \ -+ posix/dirs.c \ -+ posix/error.c \ -+ posix/filesystem.c \ -+ posix/netconf.c \ -+ posix/plugin.c \ -+ posix/rand.c \ -+ posix/thread.c \ -+ posix/timer.c \ -+ haiku/specific.cpp \ -+ $(NULL) -+ - SOURCES_libvlc_other = \ - posix/dirs.c \ - posix/error.c \ -diff --git a/src/haiku/specific.cpp b/src/haiku/specific.cpp -new file mode 100644 -index 0000000..ddf7070 ---- /dev/null -+++ b/src/haiku/specific.cpp -@@ -0,0 +1,57 @@ -+/***************************************************************************** -+ * specific.c: stubs for POSIX OS-specific initialization -+ ***************************************************************************** -+ * Copyright © 2008 Rémi Denis-Courmont -+ * -+ * This program 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. -+ * -+ * This program 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 this program; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. -+ *****************************************************************************/ -+ -+#ifdef HAVE_CONFIG_H -+# include "config.h" -+#endif -+ -+#include -+ -+ -+#include -+extern "C" -+{ -+#include "../libvlc.h" -+#include -+ -+ -+static void set_libvlc_path (void) -+{ -+ return; -+} -+ -+void system_Init (void) -+{ -+ BApplication app("application/x-vnd.vlc"); -+ pthread_once_t once = PTHREAD_ONCE_INIT; -+ -+ pthread_once (&once, set_libvlc_path); -+} -+ -+void system_Configure (libvlc_int_t *libvlc, -+ int argc, const char *const argv[]) -+{ -+ (void)libvlc; (void)argc; (void)argv; -+} -+ -+void system_End (void) -+{ -+} -+} -diff --git a/src/modules/bank.c b/src/modules/bank.c -index b439440..d4245cd 100644 ---- a/src/modules/bank.c -+++ b/src/modules/bank.c -@@ -67,6 +67,7 @@ static void module_StoreBank (module_t *module) - modules.head = module; - } - -+/* Haiku bug #8288 - #if defined(__ELF__) || !HAVE_DYNAMIC_PLUGINS - # ifdef __GNUC__ - __attribute__((weak)) -@@ -86,9 +87,9 @@ static void module_InitStaticModules(void) - module_StoreBank (module); - } - } --#else -+#else */ - static void module_InitStaticModules(void) { } --#endif -+//#endif - - /** - * Init bank -diff --git a/src/network/io.c b/src/network/io.c -index ea1b1b9..acdd9b1 100644 ---- a/src/network/io.c -+++ b/src/network/io.c -@@ -216,7 +216,9 @@ int *net_Listen (vlc_object_t *p_this, const char *psz_host, - switch (ptr->ai_socktype) - { - case SOCK_STREAM: -+#ifdef SOCK_RDM - case SOCK_RDM: -+#endif - case SOCK_SEQPACKET: - #ifdef SOCK_DCCP - case SOCK_DCCP: --- -2.16.4 - - -From f8f783594747bb967335b7bf35d7e9a0d2e7140b Mon Sep 17 00:00:00 2001 -From: Sergei Reznikov -Date: Wed, 23 Aug 2017 16:58:12 +0300 -Subject: fix build with ffmpeg 3.x and lua 5.2 - - -diff --git a/configure.ac b/configure.ac -index 2ec9809..bbb6ce6 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1535,7 +1535,7 @@ then - AC_MSG_ERROR([Could not find lua. Lua is needed for some interfaces (rc, telnet, http) as well as many other custom scripts. Use --disable-lua to ignore this error.]) - fi - AC_ARG_VAR([LUAC], [LUA byte compiler]) -- AC_PATH_PROGS(LUAC,[${LUAC} luac], [false]) -+ AC_PATH_PROGS(LUAC,[${LUAC} luac5.2], [false]) - AS_IF([test "${LUAC}" = "false"], [ - AC_MSG_ERROR([Could not find the LUA byte compiler.]) - ]) -@@ -2330,7 +2330,7 @@ AC_ARG_ENABLE(avcodec, - [ --enable-avcodec libavcodec codec (default enabled)]) - AS_IF([test "${enable_avcodec}" != "no"], [ - PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 53.34.0 libavutil >= 51.22.0], [ -- PKG_CHECK_EXISTS([libavutil < 55],, [ -+ PKG_CHECK_EXISTS([libavutil > 55],, [ - AC_MSG_ERROR([libavutil versions 55 and later are not supported.]) - ]) - VLC_SAVE_FLAGS -@@ -2389,7 +2389,7 @@ have_avcodec_vaapi="no" - AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [ - case "${avfork}" in - ffmpeg) -- PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [ -+ PKG_CHECK_EXISTS([libavcodec >= 60.10.100], [ - AC_MSG_ERROR([VA API requires FFmpeg libavcodec < 57.10 or libav.]) - ]) - ;; -@@ -2423,7 +2423,7 @@ AS_IF([test "${enable_dxva2}" != "no"], [ - AS_IF([test "x${have_avcodec}" = "xyes"], [ - case "${avfork}" in - ffmpeg) -- PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [ -+ PKG_CHECK_EXISTS([libavcodec >= 60.10.100], [ - AC_MSG_ERROR([DXVA2 requires FFmpeg libavcodec < 57.10 or libav.]) - ]) - ;; -@@ -3187,7 +3187,7 @@ AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [ - case "${avfork}" in - libav) av_vdpau_ver="55.26.0" ;; - ffmpeg) av_vdpau_ver="55.42.100" -- PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [ -+ PKG_CHECK_EXISTS([libavcodec >= 60.10.100], [ - AC_MSG_ERROR([VDPAU requires FFmpeg libavcodec < 57.10 or libav.]) - ]) - ;; -@@ -3746,7 +3746,7 @@ AS_IF([test "${enable_qt}" != "no"], [ - PKG_CHECK_MODULES([QT], [Qt5Core >= 5.1.0 Qt5Widgets Qt5Gui], [ - PKG_CHECK_MODULES([QTX11], [Qt5X11Extras], [ - VLC_ADD_LIBS([qt4],[${QTX11_LIBS}]) -- VLC_ADD_CXXFLAGS([qt4],[${QTX11_CFLAGS} -DQT5_HAS_X11]) -+ VLC_ADD_CXXFLAGS([qt4],[${QTX11_CFLAGS} -DQT5_HAS_X11 -std=c++11]) - PKG_CHECK_MODULES([XI], [xi], [ - VLC_ADD_LIBS([qt4], [${XI_LIBS}]) - VLC_ADD_CXXFLAGS([qt4], [${XI_CFLAGS} -DHAVE_XI]) -diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c -index c6a0a6c..cb17991 100644 ---- a/modules/codec/avcodec/audio.c -+++ b/modules/codec/avcodec/audio.c -@@ -36,12 +36,11 @@ - #include - #include - -+#include "avcodec.h" -+ - #include - #include - --#include -- --#include "avcodec.h" - - /***************************************************************************** - * decoder_sys_t : decoder descriptor -diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h -index 91b3f5b..3c66a1e 100644 ---- a/modules/codec/avcodec/avcommon_compat.h -+++ b/modules/codec/avcodec/avcommon_compat.h -@@ -506,6 +506,15 @@ enum { - - #endif /* HAVE_LIBAVUTIL_AVUTIL_H */ - -+#if LIBAVUTIL_VERSION_MAJOR >= 55 -+# define FF_API_AUDIOCONVERT 1 -+#endif -+ -+/* libavutil/pixfmt.h */ -+#ifndef PixelFormat -+# define PixelFormat AVPixelFormat -+#endif -+ - #ifdef HAVE_LIBAVFORMAT_AVFORMAT_H - # include - -diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c -index ca7674f..9020576 100644 ---- a/modules/codec/avcodec/encoder.c -+++ b/modules/codec/avcodec/encoder.c -@@ -41,7 +41,6 @@ - #include - - #include --#include - - #include "avcodec.h" - #include "avcommon.h" -@@ -311,7 +310,7 @@ int OpenEncoder( vlc_object_t *p_this ) - else if( !GetFfmpegCodec( p_enc->fmt_out.i_codec, &i_cat, &i_codec_id, - &psz_namecodec ) ) - { -- if( FindFfmpegChroma( p_enc->fmt_out.i_codec ) == PIX_FMT_NONE ) -+ if( FindFfmpegChroma( p_enc->fmt_out.i_codec ) == AV_PIX_FMT_NONE ) - return VLC_EGENERIC; /* handed chroma output */ - - i_cat = VIDEO_ES; -@@ -1017,7 +1016,7 @@ errmsg: - } - } - -- p_sys->frame = avcodec_alloc_frame(); -+ p_sys->frame = av_frame_alloc(); - if( !p_sys->frame ) - { - goto error; -@@ -1088,7 +1087,8 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pict ) - AVFrame *frame = NULL; - if( likely(p_pict) ) { - frame = p_sys->frame; -- avcodec_get_frame_defaults( frame ); -+ av_frame_unref( frame ); -+ - for( i_plane = 0; i_plane < p_pict->i_planes; i_plane++ ) - { - p_sys->frame->data[i_plane] = p_pict->p[i_plane].p_pixels; -@@ -1329,7 +1329,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, int - //How much we need to copy from new packet - const int leftover = leftover_samples * p_sys->p_context->channels * p_sys->i_sample_bytes; - -- avcodec_get_frame_defaults( p_sys->frame ); -+ av_frame_unref( p_sys->frame ); - p_sys->frame->format = p_sys->p_context->sample_fmt; - p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay; - -@@ -1451,7 +1451,8 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf ) - while( ( p_aout_buf->i_nb_samples >= p_sys->i_frame_size ) || - ( p_sys->b_variable && p_aout_buf->i_nb_samples ) ) - { -- avcodec_get_frame_defaults( p_sys->frame ); -+ av_frame_unref( p_sys->frame ); -+ - if( p_sys->b_variable ) - p_sys->frame->nb_samples = p_aout_buf->i_nb_samples; - else -diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c -index 1d8f7fa..d9643d0 100644 ---- a/modules/codec/avcodec/vaapi.c -+++ b/modules/codec/avcodec/vaapi.c -@@ -595,7 +595,7 @@ static int Create( vlc_va_t *p_va, AVCodecContext *ctx, - return err; - - /* Only VLD supported */ -- p_va->pix_fmt = PIX_FMT_VAAPI_VLD; -+ p_va->pix_fmt = AV_PIX_FMT_VAAPI_VLD; - p_va->setup = Setup; - p_va->get = Get; - p_va->release = Release; -diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c -index 4c3e9bc..a720fd8 100644 ---- a/modules/codec/avcodec/video.c -+++ b/modules/codec/avcodec/video.c -@@ -236,7 +236,7 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context, - p_sys->p_codec = p_codec; - p_sys->i_codec_id = i_codec_id; - p_sys->psz_namecodec = psz_namecodec; -- p_sys->p_ff_pic = avcodec_alloc_frame(); -+ p_sys->p_ff_pic = av_frame_alloc(); - p_sys->b_delayed_open = true; - p_sys->p_va = NULL; - vlc_sem_init( &p_sys->sem_mt, 0 ); -@@ -448,7 +448,7 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context, - if( ffmpeg_OpenCodec( p_dec ) < 0 ) - { - msg_Err( p_dec, "cannot open codec (%s)", p_sys->psz_namecodec ); -- avcodec_free_frame( &p_sys->p_ff_pic ); -+ av_frame_free( &p_sys->p_ff_pic ); - vlc_sem_destroy( &p_sys->sem_mt ); - free( p_sys ); - return VLC_EGENERIC; -@@ -849,7 +849,7 @@ void EndVideoDec( decoder_t *p_dec ) - wait_mt( p_sys ); - - if( p_sys->p_ff_pic ) -- avcodec_free_frame( &p_sys->p_ff_pic ); -+ av_frame_free( &p_sys->p_ff_pic ); - - if( p_sys->p_va ) - vlc_va_Delete( p_sys->p_va ); --- -2.16.4 - - -From 8ff84f986f9a180c2e2a84c14d5b6d29e1f9a69b Mon Sep 17 00:00:00 2001 -From: Sergei Reznikov -Date: Wed, 23 Aug 2017 18:44:51 +0300 -Subject: backport static assert fix from vlc 3.0 - - -diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h -index 47b566e..9ee135f 100644 ---- a/include/vlc_fixups.h -+++ b/include/vlc_fixups.h -@@ -239,11 +239,14 @@ static inline locale_t newlocale(int mask, const char * locale, locale_t base) - } - #endif - --#if !defined (HAVE_STATIC_ASSERT) --# define _Static_assert(x, s) ((void) sizeof (struct { unsigned:-!(x); })) -+#if !defined (HAVE_STATIC_ASSERT) && !defined(__cpp_static_assert) -+# define STATIC_ASSERT_CONCAT_(a, b) a##b -+# define STATIC_ASSERT_CONCAT(a, b) STATIC_ASSERT_CONCAT_(a, b) -+# define _Static_assert(x, s) extern char STATIC_ASSERT_CONCAT(static_assert_, __LINE__)[sizeof(struct { unsigned:-!(x); })] - # define static_assert _Static_assert - #endif - -+ - /* Alignment of critical static data structures */ - #ifdef ATTRIBUTE_ALIGNED_MAX - # define ATTR_ALIGN(align) __attribute__ ((__aligned__ ((ATTRIBUTE_ALIGNED_MAX < align) ? ATTRIBUTE_ALIGNED_MAX : align))) --- -2.16.4 - - -From 2957d5ed6e13d52863ac9b2835f8beb93c7bb3f4 Mon Sep 17 00:00:00 2001 -From: Sergei Reznikov -Date: Thu, 30 Aug 2018 12:54:55 +0300 -Subject: Fix build on Qt 5.11 - - -diff --git a/modules/gui/qt4/actions_manager.cpp b/modules/gui/qt4/actions_manager.cpp -index a88c972..2b7ce9d 100644 ---- a/modules/gui/qt4/actions_manager.cpp -+++ b/modules/gui/qt4/actions_manager.cpp -@@ -27,6 +27,8 @@ - - #include "qt4.hpp" - -+#include -+ - #include - #include - -diff --git a/modules/gui/qt4/components/simple_preferences.cpp b/modules/gui/qt4/components/simple_preferences.cpp -index eca0a45..3ef7880 100644 ---- a/modules/gui/qt4/components/simple_preferences.cpp -+++ b/modules/gui/qt4/components/simple_preferences.cpp -@@ -33,6 +33,7 @@ - #include - #include - -+#include - #include - #include - #include --- -2.16.4 - - -From 54b75e39cd706655e1e987658944d6a211789d6a Mon Sep 17 00:00:00 2001 -From: Sergei Reznikov -Date: Thu, 30 Aug 2018 12:56:59 +0300 -Subject: Fix build with ffmpeg 4.0 - - -diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h -index 3c66a1e..b977ef5 100644 ---- a/modules/codec/avcodec/avcommon_compat.h -+++ b/modules/codec/avcodec/avcommon_compat.h -@@ -47,6 +47,45 @@ - # define AV_SAMPLE_FMT_S32 SAMPLE_FMT_S32 - # define AV_SAMPLE_FMT_FLT SAMPLE_FMT_FLT - # define AV_SAMPLE_FMT_DBL SAMPLE_FMT_DBL -+#ifndef AV_CODEC_FLAG_OUTPUT_CORRUPT -+# define AV_CODEC_FLAG_OUTPUT_CORRUPT CODEC_FLAG_OUTPUT_CORRUPT -+#endif -+#ifndef AV_CODEC_FLAG_GRAY -+# define AV_CODEC_FLAG_GRAY CODEC_FLAG_GRAY -+#endif -+#ifndef AV_CODEC_FLAG_DR1 -+# define AV_CODEC_FLAG_DR1 CODEC_FLAG_DR1 -+#endif -+#ifndef AV_CODEC_FLAG_DELAY -+# define AV_CODEC_FLAG_DELAY CODEC_FLAG_DELAY -+#endif -+#ifndef AV_CODEC_FLAG2_FAST -+# define AV_CODEC_FLAG2_FAST CODEC_FLAG2_FAST -+#endif -+#ifndef FF_INPUT_BUFFER_PADDING_SIZE -+# define FF_INPUT_BUFFER_PADDING_SIZE AV_INPUT_BUFFER_PADDING_SIZE -+#endif -+#ifndef AV_CODEC_FLAG_INTERLACED_DCT -+# define AV_CODEC_FLAG_INTERLACED_DCT CODEC_FLAG_INTERLACED_DCT -+#endif -+#ifndef AV_CODEC_FLAG_INTERLACED_ME -+# define AV_CODEC_FLAG_INTERLACED_ME CODEC_FLAG_INTERLACED_ME -+#endif -+#ifndef AV_CODEC_FLAG_GLOBAL_HEADER -+# define AV_CODEC_FLAG_GLOBAL_HEADER CODEC_FLAG_GLOBAL_HEADER -+#endif -+#ifndef AV_CODEC_FLAG_LOW_DELAY -+# define AV_CODEC_FLAG_LOW_DELAY CODEC_FLAG_LOW_DELAY -+#endif -+#ifndef AV_CODEC_CAP_SMALL_LAST_FRAME -+# define AV_CODEC_CAP_SMALL_LAST_FRAME CODEC_CAP_SMALL_LAST_FRAME -+#endif -+#ifndef AV_INPUT_BUFFER_MIN_SIZE -+# define AV_INPUT_BUFFER_MIN_SIZE FF_MIN_BUFFER_SIZE -+#endif -+#ifndef FF_MAX_B_FRAMES -+# define FF_MAX_B_FRAMES 16 // FIXME: remove this -+#endif - - #ifndef AV_CH_FRONT_LEFT - # define AV_CH_FRONT_LEFT CH_FRONT_LEFT -@@ -479,6 +518,46 @@ enum { - # define err_recognition error_recognition - #endif - -+#ifndef AV_CODEC_FLAG_OUTPUT_CORRUPT -+# define AV_CODEC_FLAG_OUTPUT_CORRUPT CODEC_FLAG_OUTPUT_CORRUPT -+#endif -+#ifndef AV_CODEC_FLAG_GRAY -+# define AV_CODEC_FLAG_GRAY CODEC_FLAG_GRAY -+#endif -+#ifndef AV_CODEC_FLAG_DR1 -+# define AV_CODEC_FLAG_DR1 CODEC_FLAG_DR1 -+#endif -+#ifndef AV_CODEC_FLAG_DELAY -+# define AV_CODEC_FLAG_DELAY CODEC_FLAG_DELAY -+#endif -+#ifndef AV_CODEC_FLAG2_FAST -+# define AV_CODEC_FLAG2_FAST CODEC_FLAG2_FAST -+#endif -+#ifndef FF_INPUT_BUFFER_PADDING_SIZE -+# define FF_INPUT_BUFFER_PADDING_SIZE AV_INPUT_BUFFER_PADDING_SIZE -+#endif -+#ifndef AV_CODEC_FLAG_INTERLACED_DCT -+# define AV_CODEC_FLAG_INTERLACED_DCT CODEC_FLAG_INTERLACED_DCT -+#endif -+#ifndef AV_CODEC_FLAG_INTERLACED_ME -+# define AV_CODEC_FLAG_INTERLACED_ME CODEC_FLAG_INTERLACED_ME -+#endif -+#ifndef AV_CODEC_FLAG_GLOBAL_HEADER -+# define AV_CODEC_FLAG_GLOBAL_HEADER CODEC_FLAG_GLOBAL_HEADER -+#endif -+#ifndef AV_CODEC_FLAG_LOW_DELAY -+# define AV_CODEC_FLAG_LOW_DELAY CODEC_FLAG_LOW_DELAY -+#endif -+#ifndef AV_CODEC_CAP_SMALL_LAST_FRAME -+# define AV_CODEC_CAP_SMALL_LAST_FRAME CODEC_CAP_SMALL_LAST_FRAME -+#endif -+#ifndef AV_INPUT_BUFFER_MIN_SIZE -+# define AV_INPUT_BUFFER_MIN_SIZE FF_MIN_BUFFER_SIZE -+#endif -+#ifndef FF_MAX_B_FRAMES -+# define FF_MAX_B_FRAMES 16 // FIXME: remove this -+#endif -+ - #endif /* HAVE_LIBAVCODEC_AVCODEC_H */ - - #ifdef HAVE_LIBAVUTIL_AVUTIL_H -diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c -index 9020576..5016226 100644 ---- a/modules/codec/avcodec/encoder.c -+++ b/modules/codec/avcodec/encoder.c -@@ -284,6 +284,24 @@ static void probe_video_frame_rate( encoder_t *p_enc, AVCodecContext *p_context, - msg_Dbg( p_enc, "Time base set to %d/%d", p_context->time_base.num, p_context->time_base.den ); - } - -+static void add_av_option_int( encoder_t *p_enc, AVDictionary** pp_dict, const char* psz_name, int i_value ) -+{ -+ char buff[32]; -+ if ( snprintf( buff, sizeof(buff), "%d", i_value ) < 0 ) -+ return; -+ if( av_dict_set( pp_dict, psz_name, buff, 0 ) < 0 ) -+ msg_Warn( p_enc, "Failed to set encoder option %s", psz_name ); -+} -+ -+static void add_av_option_float( encoder_t *p_enc, AVDictionary** pp_dict, const char* psz_name, float f_value ) -+{ -+ char buff[128]; -+ if ( snprintf( buff, sizeof(buff), "%f", f_value ) < 0 ) -+ return; -+ if( av_dict_set( pp_dict, psz_name, buff, 0 ) < 0 ) -+ msg_Warn( p_enc, "Failed to set encoder option %s", psz_name ); -+} -+ - int OpenEncoder( vlc_object_t *p_this ) - { - encoder_t *p_enc = (encoder_t *)p_this; -@@ -492,6 +510,7 @@ int OpenEncoder( vlc_object_t *p_this ) - } - } - free( psz_val ); -+ AVDictionary *options = NULL; - - if( p_enc->fmt_in.i_cat == VIDEO_ES ) - { -@@ -521,7 +540,7 @@ int OpenEncoder( vlc_object_t *p_this ) - p_context->lumi_masking = p_sys->f_lumi_masking; - p_context->dark_masking = p_sys->f_dark_masking; - p_context->p_masking = p_sys->f_p_masking; -- p_context->border_masking = p_sys->f_border_masking; -+ add_av_option_float( p_enc, &options, "border_mask", p_sys->f_border_masking ); - #if (LIBAVCODEC_VERSION_MAJOR < 55) - p_context->luma_elim_threshold = p_sys->i_luma_elim; - p_context->chroma_elim_threshold = p_sys->i_chroma_elim; -@@ -535,7 +554,7 @@ int OpenEncoder( vlc_object_t *p_this ) - if( !p_context->max_b_frames && - ( p_enc->fmt_out.i_codec == VLC_CODEC_MPGV || - p_enc->fmt_out.i_codec == VLC_CODEC_MP2V ) ) -- p_context->flags |= CODEC_FLAG_LOW_DELAY; -+ p_context->flags |= AV_CODEC_FLAG_LOW_DELAY; - - av_reduce( &p_context->sample_aspect_ratio.num, - &p_context->sample_aspect_ratio.den, -@@ -593,16 +612,16 @@ int OpenEncoder( vlc_object_t *p_this ) - } - else - { -- p_context->flags |= CODEC_FLAG_INTERLACED_DCT; -+ p_context->flags |= AV_CODEC_FLAG_INTERLACED_DCT; - if ( p_sys->b_interlace_me ) -- p_context->flags |= CODEC_FLAG_INTERLACED_ME; -+ p_context->flags |= AV_CODEC_FLAG_INTERLACED_ME; - } - } - - p_context->trellis = p_sys->b_trellis; - - if ( p_sys->i_qmin > 0 && p_sys->i_qmin == p_sys->i_qmax ) -- p_context->flags |= CODEC_FLAG_QSCALE; -+ p_context->flags |= AV_CODEC_FLAG_QSCALE; - /* These codecs cause libavcodec to exit if thread_count is > 1. - See libavcodec/mpegvideo_enc.c:MPV_encode_init and - libavcodec/svq3.c , WMV2 calls MPV_encode_init also. -@@ -638,12 +657,14 @@ int OpenEncoder( vlc_object_t *p_this ) - if( p_sys->i_qmin > 0 ) - { - p_context->qmin = p_sys->i_qmin; -- p_context->mb_lmin = p_context->lmin = p_sys->i_qmin * FF_QP2LAMBDA; -+ p_context->mb_lmin = p_sys->i_qmin * FF_QP2LAMBDA; -+ add_av_option_int( p_enc, &options, "lmin", p_context->mb_lmin); - } - if( p_sys->i_qmax > 0 ) - { - p_context->qmax = p_sys->i_qmax; -- p_context->mb_lmax = p_context->lmax = p_sys->i_qmax * FF_QP2LAMBDA; -+ p_context->mb_lmax = p_sys->i_qmax * FF_QP2LAMBDA; -+ add_av_option_int( p_enc, &options, "lmax", p_context->mb_lmax); - } - p_context->max_qdiff = 3; - -@@ -651,12 +672,12 @@ int OpenEncoder( vlc_object_t *p_this ) - - if( p_sys->i_quality && !p_enc->fmt_out.i_bitrate ) - { -- p_context->flags |= CODEC_FLAG_QSCALE; -+ p_context->flags |= AV_CODEC_FLAG_QSCALE; - p_context->global_quality = p_sys->i_quality; - } - else - { -- p_context->rc_qsquish = 1.0; -+ av_dict_set(&options, "qsquish", "1.0", 0); - /* Default to 1/2 second buffer for given bitrate unless defined otherwise*/ - if( !p_sys->i_rc_buffer_size ) - { -@@ -670,7 +691,7 @@ int OpenEncoder( vlc_object_t *p_this ) - /* This is from ffmpeg's ffmpeg.c : */ - p_context->rc_initial_buffer_occupancy - = p_sys->i_rc_buffer_size * 3/4; -- p_context->rc_buffer_aggressivity = p_sys->f_rc_buffer_aggressivity; -+ add_av_option_float( p_enc, &options, "rc_buffer_aggressivity", p_sys->f_rc_buffer_aggressivity ); - } - } - else if( p_enc->fmt_in.i_cat == AUDIO_ES ) -@@ -807,20 +828,23 @@ int OpenEncoder( vlc_object_t *p_this ) - if( !var_GetInteger( p_enc, ENC_CFG_PREFIX "qmin" ) ) - { - p_context->qmin = 10; -- p_context->mb_lmin = p_context->lmin = 10 * FF_QP2LAMBDA; -+ p_context->mb_lmin = 10 * FF_QP2LAMBDA; -+ add_av_option_int( p_enc, &options, "lmin", p_context->mb_lmin ); - } - - if( !var_GetInteger( p_enc, ENC_CFG_PREFIX "qmax" ) ) - { - p_context->qmax = 42; -- p_context->mb_lmax = p_context->lmax = 42 * FF_QP2LAMBDA; -+ p_context->mb_lmax = 42 * FF_QP2LAMBDA; -+ add_av_option_int( p_enc, &options, "lmax", p_context->mb_lmax ); - } - - } else { - if( !var_GetInteger( p_enc, ENC_CFG_PREFIX "qmin" ) ) - { - p_context->qmin = 1; -- p_context->mb_lmin = p_context->lmin = FF_QP2LAMBDA; -+ p_context->mb_lmin = FF_QP2LAMBDA; -+ add_av_option_int( p_enc, &options, "lmin", p_context->mb_lmin ); - } - } - -@@ -845,7 +869,7 @@ int OpenEncoder( vlc_object_t *p_this ) - /* Make sure we get extradata filled by the encoder */ - p_context->extradata_size = 0; - p_context->extradata = NULL; -- p_context->flags |= CODEC_FLAG_GLOBAL_HEADER; -+ p_context->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; - - if( p_enc->i_threads >= 1) - p_context->thread_count = p_enc->i_threads; -@@ -854,7 +878,6 @@ int OpenEncoder( vlc_object_t *p_this ) - - int ret; - char *psz_opts = var_InheritString(p_enc, ENC_CFG_PREFIX "options"); -- AVDictionary *options = NULL; - if (psz_opts && *psz_opts) - options = vlc_av_get_options(psz_opts); - free(psz_opts); -@@ -982,7 +1005,7 @@ errmsg: - } - } - -- p_context->flags &= ~CODEC_FLAG_GLOBAL_HEADER; -+ p_context->flags &= ~AV_CODEC_FLAG_GLOBAL_HEADER; - - if( p_enc->fmt_in.i_cat == AUDIO_ES ) - { -@@ -992,7 +1015,7 @@ errmsg: - p_sys->i_sample_bytes = (p_enc->fmt_in.audio.i_bitspersample / 8); - p_sys->i_frame_size = p_context->frame_size > 1 ? - p_context->frame_size : -- FF_MIN_BUFFER_SIZE; -+ AV_INPUT_BUFFER_MIN_SIZE; - p_sys->i_buffer_out = av_samples_get_buffer_size(NULL, - p_sys->p_context->channels, p_sys->i_frame_size, - p_sys->p_context->sample_fmt, DEFAULT_ALIGN); -@@ -1359,7 +1382,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, int - } - - if(unlikely( ( (leftover + buffer_delay) < p_sys->i_buffer_out ) && -- !(p_sys->p_codec->capabilities & CODEC_CAP_SMALL_LAST_FRAME ))) -+ !(p_sys->p_codec->capabilities & AV_CODEC_CAP_SMALL_LAST_FRAME ))) - { - msg_Dbg( p_enc, "No small last frame support, padding"); - size_t padding_size = p_sys->i_buffer_out - (leftover+buffer_delay); -diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c -index a720fd8..975ab5d 100644 ---- a/modules/codec/avcodec/video.c -+++ b/modules/codec/avcodec/video.c -@@ -251,11 +251,11 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context, - var_InheritInteger( p_dec, "avcodec-error-resilience" ); - - if( var_CreateGetBool( p_dec, "grayscale" ) ) -- p_sys->p_context->flags |= CODEC_FLAG_GRAY; -+ p_sys->p_context->flags |= AV_CODEC_FLAG_GRAY; - - /* ***** Output always the frames ***** */ - #if LIBAVCODEC_VERSION_CHECK(55, 23, 1, 40, 101) -- p_sys->p_context->flags |= CODEC_FLAG_OUTPUT_CORRUPT; -+ p_sys->p_context->flags |= AV_CODEC_FLAG_OUTPUT_CORRUPT; - #endif - - i_val = var_CreateGetInteger( p_dec, "avcodec-vismv" ); -@@ -268,7 +268,7 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context, - else if( i_val == 1 ) p_sys->p_context->skip_loop_filter = AVDISCARD_NONREF; - - if( var_CreateGetBool( p_dec, "avcodec-fast" ) ) -- p_sys->p_context->flags2 |= CODEC_FLAG2_FAST; -+ p_sys->p_context->flags2 |= AV_CODEC_FLAG2_FAST; - - /* ***** libavcodec frame skipping ***** */ - p_sys->b_hurry_up = var_CreateGetBool( p_dec, "avcodec-hurry-up" ); -@@ -295,7 +295,7 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context, - p_sys->b_direct_rendering = false; - p_sys->i_direct_rendering_used = -1; - if( var_CreateGetBool( p_dec, "avcodec-dr" ) && -- (p_sys->p_codec->capabilities & CODEC_CAP_DR1) && -+ (p_sys->p_codec->capabilities & AV_CODEC_CAP_DR1) && - /* No idea why ... but this fixes flickering on some TSCC streams */ - p_sys->i_codec_id != AV_CODEC_ID_TSCC && p_sys->i_codec_id != AV_CODEC_ID_CSCD && - p_sys->i_codec_id != AV_CODEC_ID_CINEPAK && -@@ -308,16 +308,9 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context, - - /* libavcodec doesn't properly release old pictures when frames are skipped */ - //if( p_sys->b_hurry_up ) p_sys->b_direct_rendering = false; -- if( p_sys->b_direct_rendering ) -- { -- msg_Dbg( p_dec, "trying to use direct rendering" ); -- p_sys->p_context->flags |= CODEC_FLAG_EMU_EDGE; -- } -- else -- { -- msg_Dbg( p_dec, "direct rendering is disabled" ); -- } -- -+#if !LIBAVCODEC_VERSION_CHECK(55, 32, 1, 48, 102) -+ p_sys->p_context->flags |= CODEC_FLAG_EMU_EDGE; -+#endif - p_sys->p_context->get_format = ffmpeg_GetFormat; - /* Always use our get_buffer wrapper so we can calculate the - * PTS correctly */ -@@ -484,7 +477,7 @@ picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block ) - } - - p_block = *pp_block; -- if(!p_block && !(p_sys->p_codec->capabilities & CODEC_CAP_DELAY) ) -+ if(!p_block && !(p_sys->p_codec->capabilities & AV_CODEC_CAP_DELAY) ) - return NULL; - - if( p_sys->b_delayed_open ) -@@ -621,7 +614,7 @@ picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block ) - } - else - { -- /* Return delayed frames if codec has CODEC_CAP_DELAY */ -+ /* Return delayed frames if codec has AV_CODEC_CAP_DELAY */ - pkt.data = NULL; - pkt.size = 0; - } --- -2.16.4 - diff --git a/media-video/vlc/patches/vlc-3.0.11.1.patchset b/media-video/vlc/patches/vlc-3.0.11.1.patchset new file mode 100644 index 000000000..6a26424e7 --- /dev/null +++ b/media-video/vlc/patches/vlc-3.0.11.1.patchset @@ -0,0 +1,2346 @@ +From 612b829b20f70ead98abe64b484166259644c0f9 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Tue, 20 Oct 2020 16:31:09 +1000 +Subject: Add Haiku support + + +diff --git a/bin/override.c b/bin/override.c +index fb4608c..9c7c085 100644 +--- a/bin/override.c ++++ b/bin/override.c +@@ -125,6 +125,8 @@ static void *getsym (const char *name) + * + * Some evil libraries modify the environment. We currently ignore the calls as + * they could crash the process. This may cause funny behaviour though. */ ++#ifndef __HAIKU__ ++//not working + int putenv (char *str) + { + if (override) +@@ -135,6 +137,7 @@ int putenv (char *str) + return CALL(putenv, str); + } + ++#endif + int setenv (const char *name, const char *value, int overwrite) + { + if (override) +diff --git a/compat/recvmsg.c b/compat/recvmsg.c +index c037ab9..bd8a886 100644 +--- a/compat/recvmsg.c ++++ b/compat/recvmsg.c +@@ -83,7 +83,7 @@ ssize_t recvmsg(int fd, struct msghdr *msg, int flags) + return -1; + } + +-#elif defined __native_client__ ++#elif defined __native_client__ || defined __HAIKU__ + #include + #include + #include +diff --git a/compat/sendmsg.c b/compat/sendmsg.c +index 0f42e78..0ce5aef 100644 +--- a/compat/sendmsg.c ++++ b/compat/sendmsg.c +@@ -73,7 +73,7 @@ ssize_t sendmsg(int fd, const struct msghdr *msg, int flags) + return -1; + } + +-#elif defined __native_client__ ++#elif defined __native_client__ || defined __HAIKU__ + #include + #include + #include +diff --git a/configure.ac b/configure.ac +index 1f74566..5b504a2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -46,7 +46,6 @@ dnl + AC_PROG_CC + AC_USE_SYSTEM_EXTENSIONS + VLC_PROG_CC_C11 +-AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to 2 to get glibc warnings.]) + AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.]) + AH_TOP([ + #ifndef _REENTRANT +@@ -325,6 +324,13 @@ case "${host_os}" in + AC_LIBOBJ([recvmsg]) + AC_LIBOBJ([sendmsg]) + ;; ++ *haiku*) ++ SYS=haiku ++ VLC_ADD_LIBS([libvlccore libvlc vlc],[-lnetwork -lbe -lgnu]) ++# VLC_ADD_PLUGIN([haiku_aout]) ++# VLC_ADD_LIBS([haiku_aout],[-lmedia]) ++# VLC_ADD_CXXFLAGS([qt4],[-std=c++11]) ++ ;; + *) + SYS="${host_os}" + ;; +@@ -363,6 +369,7 @@ AS_IF([test "${SYS}" = "mingw32"],[ + + AM_CONDITIONAL(HAVE_LINUX, test "${SYS}" = "linux") + AM_CONDITIONAL(HAVE_OS2, test "${SYS}" = "os2") ++AM_CONDITIONAL(HAVE_HAIKU, test "${SYS}" = "haiku") + + AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin") + AM_CONDITIONAL(HAVE_IOS, test "${HAVE_IOS}" = "1") +@@ -632,7 +639,7 @@ need_libc=false + + dnl Check for usual libc functions + AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatvfs fork getenv getmntent_r getpwuid_r isatty lstat memalign mkostemp mmap newlocale open_memstream openat pipe2 pread posix_fadvise posix_madvise posix_memalign setlocale stricmp strnicmp strptime uselocale]) +-AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir ffsll flockfile fsync getdelim getpid lfind lldiv memrchr nrand48 poll recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tdestroy tfind timegm timespec_get strverscmp pathconf]) ++AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir ffsll flockfile fsync getdelim getpid lfind lldiv memrchr nrand48 poll recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tfind timegm timespec_get strverscmp pathconf]) + AC_REPLACE_FUNCS([gettimeofday]) + AC_CHECK_FUNC(fdatasync,, + [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.]) +@@ -972,8 +979,10 @@ AC_SEARCH_LIBS(connect, [socket], [ + AS_IF([test "${SYS}" = "mingw32"], [ + SOCKET_LIBS="-lws2_32 -liphlpapi" + ]) ++ AS_IF([test "${SYS}" = "haiku"], [ ++ SOCKET_LIBS="-lnetwork" ++ ]) + ]) +- + AC_SEARCH_LIBS([inet_pton], [nsl], [ + AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [ + SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS" +@@ -1186,9 +1195,12 @@ AH_BOTTOM([ + AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS]) + ]) + +- AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong]) +- AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS]) +- dnl Win32 requires linking to ssp for stack-protection ++ AS_IF([test "${SYS}" != "haiku"], [ ++ AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong]) ++ AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS]) ++ dnl Win32 requires linking to ssp for stack-protection ++ ]) ++ + AS_IF([test "${SYS}" = "mingw32"], [ + LDFLAGS="${LDFLAGS} -lssp" + AS_IF([test "${vlc_winstore_app}" != 1], [LDFLAGS="${LDFLAGS} -ladvapi32"]) +@@ -1712,7 +1724,7 @@ then + fi + AC_ARG_VAR([LUAC], [LUA byte compiler]) + AS_IF([test -z "$LUAC"], [ +- AC_CHECK_TOOL(LUAC, [luac], [false]) ++ AC_CHECK_TOOL(LUAC, [luac5.2], [false]) + ]) + AS_IF([test "${LUAC}" = "false"], [ + AC_MSG_ERROR([Could not find the LUA byte compiler.]) +@@ -2644,7 +2656,7 @@ then + VLC_SAVE_FLAGS + CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}" + CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}" +- AC_CHECK_HEADERS(postproc/postprocess.h) ++ AC_CHECK_HEADERS(libpostproc/postprocess.h) + VLC_ADD_PLUGIN([postproc]) + VLC_RESTORE_FLAGS + ],[ +@@ -3122,7 +3134,7 @@ dnl X C Bindings modules + dnl + AC_ARG_ENABLE(xcb, + [ --enable-xcb X11 support with XCB (default enabled)],, [ +- AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [ ++ AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${SYS}" != "haiku"], [ + enable_xcb="yes" + ], [ + enable_xcb="no" +diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h +index 9b9d008..ed853e8 100644 +--- a/include/vlc_fixups.h ++++ b/include/vlc_fixups.h +@@ -103,7 +103,7 @@ typedef struct + + #if !defined (HAVE_GETDELIM) || \ + !defined (HAVE_GETPID) || \ +- !defined (HAVE_SWAB) ++ !defined (HAVE_SWAB) || defined(__HAIKU__) + # include /* ssize_t, pid_t */ + #endif + +@@ -373,6 +373,7 @@ void swab (const void *, void *, ssize_t); + #endif + + /* Socket stuff */ ++#ifndef __HAIKU__ + #ifndef HAVE_INET_PTON + # ifndef _WIN32 + # include +@@ -382,6 +383,7 @@ typedef int socklen_t; + int inet_pton(int, const char *, void *); + const char *inet_ntop(int, const void *, char *, socklen_t); + #endif ++#endif + + /* NaCl has a broken netinet/tcp.h, so TCP_NODELAY is not set */ + #if defined(__native_client__) && !defined( HAVE_NETINET_TCP_H ) +@@ -415,6 +417,8 @@ struct pollfd; + int poll (struct pollfd *, unsigned, int); + #endif + ++// or these ++#ifndef __HAIKU__ + #ifndef HAVE_IF_NAMEINDEX + #include + # ifndef HAVE_STRUCT_IF_NAMEINDEX +@@ -430,6 +434,7 @@ struct if_nameindex + # define if_nameindex() (errno = ENOBUFS, NULL) + # define if_freenameindex(list) (void)0 + #endif ++#endif + + #ifndef HAVE_STRUCT_TIMESPEC + struct timespec { +diff --git a/include/vlc_threads.h b/include/vlc_threads.h +index 960d458..0077000 100644 +--- a/include/vlc_threads.h ++++ b/include/vlc_threads.h +@@ -220,7 +220,13 @@ typedef pthread_cond_t vlc_cond_t; + #define VLC_STATIC_COND PTHREAD_COND_INITIALIZER + typedef semaphore_t vlc_sem_t; + typedef pthread_rwlock_t vlc_rwlock_t; ++// Haiku bug #8798 ++#ifdef __HAIKU__ ++#define VLC_STATIC_RWLOCK \ ++ { VLC_STATIC_MUTEX, VLC_STATIC_COND, 0, 0, 0 } ++#else + #define VLC_STATIC_RWLOCK PTHREAD_RWLOCK_INITIALIZER ++#endif + typedef pthread_key_t vlc_threadvar_t; + typedef struct vlc_timer *vlc_timer_t; + +@@ -306,7 +312,13 @@ typedef pthread_rwlock_t vlc_rwlock_t; + /** + * Static initializer for (static) read/write lock. + */ ++// Haiku bug #8798 ++#ifdef __HAIKU__ ++#define VLC_STATIC_RWLOCK \ ++ { VLC_STATIC_MUTEX, VLC_STATIC_COND, 0, 0, 0 } ++#else + #define VLC_STATIC_RWLOCK PTHREAD_RWLOCK_INITIALIZER ++#endif + + /** + * Thread-local key handle. +diff --git a/include/vlc_vout_display.h b/include/vlc_vout_display.h +index 36f1227..e31d87d 100644 +--- a/include/vlc_vout_display.h ++++ b/include/vlc_vout_display.h +@@ -81,7 +81,7 @@ enum { + * Initial/Current configuration for a vout_display_t + */ + typedef struct { +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + bool is_fullscreen VLC_DEPRECATED; /* Is the display fullscreen */ + #endif + +@@ -148,7 +148,7 @@ enum { + */ + VOUT_DISPLAY_RESET_PICTURES, + +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + /* Ask the module to acknowledge/refuse the fullscreen state change after + * being requested (externally or by VOUT_DISPLAY_EVENT_FULLSCREEN */ + VOUT_DISPLAY_CHANGE_FULLSCREEN VLC_DEPRECATED_ENUM, /* bool fs */ +@@ -196,7 +196,7 @@ enum { + /* */ + VOUT_DISPLAY_EVENT_PICTURES_INVALID, /* The buffer are now invalid and need to be changed */ + +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + VOUT_DISPLAY_EVENT_FULLSCREEN, + VOUT_DISPLAY_EVENT_WINDOW_STATE, + #endif +@@ -369,7 +369,7 @@ static inline void vout_display_SendEventKey(vout_display_t *vd, int key) + { + vout_display_SendEvent(vd, VOUT_DISPLAY_EVENT_KEY, key); + } +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + static inline void vout_display_SendEventFullscreen(vout_display_t *vd, bool is_fullscreen, + bool is_window_fullscreen) + { +diff --git a/include/vlc_vout_window.h b/include/vlc_vout_window.h +index edc94fe..88eee0c 100644 +--- a/include/vlc_vout_window.h ++++ b/include/vlc_vout_window.h +@@ -53,6 +53,7 @@ enum vout_window_type { + VOUT_WINDOW_TYPE_NSOBJECT /**< MacOS X view */, + VOUT_WINDOW_TYPE_ANDROID_NATIVE /**< Android native window */, + VOUT_WINDOW_TYPE_WAYLAND /**< Wayland surface */, ++ VOUT_WINDOW_TYPE_HAIKU /**< Haiku */, + }; + + /** +@@ -159,6 +160,7 @@ struct vout_window_t { + void *nsobject; /**< Mac OSX view object */ + void *anativewindow; /**< Android native window */ + struct wl_surface *wl; /**< Wayland surface (client pointer) */ ++ void *haikuwindow; /**< Haiku */ + } handle; + + /** Display server (mandatory) +diff --git a/include/vlc_vout_wrapper.h b/include/vlc_vout_wrapper.h +index b808f55..4f918d5 100644 +--- a/include/vlc_vout_wrapper.h ++++ b/include/vlc_vout_wrapper.h +@@ -62,7 +62,7 @@ static inline void vout_display_Display(vout_display_t *vd, + */ + typedef struct { + vout_display_cfg_t cfg; +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + unsigned wm_state; + #endif + vlc_rational_t sar; +diff --git a/modules/audio_output/Makefile.am b/modules/audio_output/Makefile.am +index 13cf5ba..c60ea48 100644 +--- a/modules/audio_output/Makefile.am ++++ b/modules/audio_output/Makefile.am +@@ -93,6 +93,12 @@ if HAVE_SNDIO + aout_LTLIBRARIES += libsndio_plugin.la + endif + ++libhaiku_aout_plugin_la_SOURCES = audio_output/haiku.cpp ++libhaiku_aout_plugin_la_LIBADD = -lmedia ++if HAVE_HAIKU ++aout_LTLIBRARIES += libhaiku_aout_plugin.la ++endif ++ + libwaveout_plugin_la_SOURCES = audio_output/waveout.c \ + audio_output/windows_audio_common.h + libwaveout_plugin_la_LIBADD = -lwinmm +diff --git a/modules/audio_output/haiku.cpp b/modules/audio_output/haiku.cpp +new file mode 100644 +index 0000000..025c285 +--- /dev/null ++++ b/modules/audio_output/haiku.cpp +@@ -0,0 +1,394 @@ ++/***************************************************************************** ++ * haiku.cpp : Haiku MediaKit audio output plugin for vlc ++ ***************************************************************************** ++ * Copyright (C) 2010-2013 VLC authors and VideoLAN ++ * Copyright (C) 2020 Gerasim Troeglazov (3dEyes**) ++ * ++ * This program 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. ++ * ++ * This program 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 this program; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. ++ *****************************************************************************/ ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include ++#include ++#include ++ ++#define FRAME_SIZE 2048 ++#define AUDIO_BUFFER_SIZE_IN_SECONDS 1.0 ++ ++struct audio_buffer_t ++{ ++ uint8_t *data; ++ int read_pos; ++ int write_pos; ++ int length; ++ int size; ++ vlc_mutex_t mutex; ++ vlc_cond_t cond; ++}; ++ ++typedef struct audio_buffer_t audio_buffer_t; ++ ++struct aout_sys_t ++{ ++ audio_buffer_t* buffer; ++ BSoundPlayer* player; ++ bool mute; ++ float volume; ++ audio_sample_format_t format; ++}; ++ ++static int Open ( vlc_object_t * ); ++static void Close ( vlc_object_t * ); ++static void Play ( audio_output_t *_p_aout, block_t *block ); ++static void Pause ( audio_output_t *, bool, mtime_t ); ++static void Flush ( audio_output_t *, bool ); ++static int TimeGet ( audio_output_t *, mtime_t *restrict ); ++static int VolumeSet(audio_output_t* aout, float volume); ++static int MuteSet (audio_output_t* aout, bool mute); ++ ++static void PlayBuffer(void* cookie, void* buffer, size_t size, const media_raw_audio_format &format); ++ ++static int CreateBuffer ( audio_output_t *, int ); ++static void DestroyBuffer( audio_output_t * ); ++static int ReadBuffer ( audio_output_t *, uint8_t *, int ); ++static int WriteBuffer ( audio_output_t *, uint8_t *, int ); ++ ++vlc_module_begin () ++ set_shortname(N_("Haiku audio")) ++ set_description(N_("Haiku Mediakit audio output")) ++ set_capability( "audio output", 100 ) ++ set_category( CAT_AUDIO ) ++ set_subcategory( SUBCAT_AUDIO_AOUT ) ++ set_callbacks( Open, Close ) ++ add_shortcut("haiku") ++vlc_module_end () ++ ++ ++static int Start ( audio_output_t *p_aout, audio_sample_format_t *fmt ) ++{ ++ aout_sys_t *p_sys = p_aout->sys; ++ media_raw_audio_format hformat; ++ ++ int i_nb_channels; ++ int i_bytes_per_frame; ++ audio_sample_format_t format = *fmt; ++ ++ if( aout_FormatNbChannels( fmt ) == 0 ) ++ return VLC_EGENERIC; ++ ++ i_nb_channels = aout_FormatNbChannels( &format ); ++ ++ if ( i_nb_channels >= 2 ) { ++ i_nb_channels = 2; ++ format.i_physical_channels = AOUT_CHANS_STEREO; ++ } else { ++ format.i_physical_channels = AOUT_CHAN_CENTER; ++ } ++ ++ format.i_format = VLC_CODEC_S16N; ++ ++ aout_FormatPrepare( &format ); ++ ++ i_bytes_per_frame = format.i_bytes_per_frame; ++ ++ hformat.frame_rate = fmt->i_rate; ++ hformat.channel_count = i_nb_channels; ++ hformat.format = media_raw_audio_format::B_AUDIO_SHORT; ++ hformat.byte_order = B_MEDIA_HOST_ENDIAN; ++ hformat.buffer_size = FRAME_SIZE * i_bytes_per_frame; ++ ++ p_sys->player = new BSoundPlayer(&hformat, "VLC Media Player", PlayBuffer, NULL, p_aout); ++ ++ if (p_sys->player->InitCheck() != B_OK) { ++ msg_Err( p_aout, "cannot initialize BSoundPlayer"); ++ delete p_sys->player; ++ free(p_sys); ++ return VLC_EGENERIC; ++ } ++ ++ format.channel_type = AUDIO_CHANNEL_TYPE_BITMAP; ++ p_sys->format = *fmt = format; ++ ++ p_aout->time_get = TimeGet; ++ p_aout->play = Play; ++ p_aout->pause = Pause; ++ p_aout->flush = Flush; ++ ++ CreateBuffer( p_aout, AUDIO_BUFFER_SIZE_IN_SECONDS * format.i_rate * format.i_bytes_per_frame ); ++ ++ VolumeSet(p_aout, 1.0 ); ++ ++ p_sys->player->Start(); ++ ++ return VLC_SUCCESS; ++} ++ ++static void Play (audio_output_t *p_aout, block_t *block) ++{ ++ aout_sys_t *p_sys = p_aout->sys; ++ ++ WriteBuffer( p_aout, block->p_buffer, block->i_buffer ); ++ ++ p_sys->player->SetHasData(true); ++ ++ block_Release( block ); ++} ++ ++static void Stop ( audio_output_t *p_aout ) ++{ ++ aout_sys_t *p_sys = p_aout->sys; ++ ++ p_sys->player->SetHasData(false); ++ p_sys->player->Stop(true, false); ++ delete p_sys->player; ++ p_sys->player = NULL; ++ ++ DestroyBuffer( p_aout ); ++} ++ ++static void PlayBuffer(void* cookie, void* p_buffer, size_t i_buf_size, const media_raw_audio_format &format) ++{ ++ VLC_UNUSED( format ); ++ ++ audio_output_t *p_aout = (audio_output_t *)cookie; ++ size_t i_len; ++ ++ i_len = ReadBuffer( p_aout, (uint8_t*)p_buffer, i_buf_size ); ++ if(i_len < i_buf_size ) ++ memset(( uint8_t * )p_buffer + i_len, 0, i_buf_size - i_len ); ++} ++ ++static int Open (vlc_object_t *obj) ++{ ++ audio_output_t *aout = (audio_output_t *)obj; ++ aout_sys_t *sys = (aout_sys_t*)calloc( 1, sizeof( aout_sys_t ) ); ++ ++ if( unlikely( sys == NULL )) ++ return VLC_ENOMEM; ++ ++ aout->sys = sys; ++ aout->start = Start; ++ aout->stop = Stop; ++ aout->mute_set = MuteSet; ++ aout->volume_set = VolumeSet; ++ ++ sys->player = NULL; ++ ++ return VLC_SUCCESS; ++} ++ ++static void Close( vlc_object_t *obj ) ++{ ++ audio_output_t *aout = (audio_output_t *)obj; ++ aout_sys_t *sys = aout->sys; ++ ++ free(sys); ++} ++ ++static void Pause( audio_output_t *aout, bool pause, mtime_t date ) ++{ ++ VLC_UNUSED( date ); ++ ++ aout_sys_t *sys = aout->sys; ++ ++ if (sys->player == NULL) ++ return; ++ ++ if (pause) ++ sys->player->SetHasData(false); ++ else ++ sys->player->SetHasData(true); ++} ++ ++static void Flush( audio_output_t *aout, bool drain ) ++{ ++ audio_buffer_t *buffer = aout->sys->buffer; ++ ++ vlc_mutex_lock( &buffer->mutex ); ++ ++ if( drain ) { ++ while( buffer->length > 0 ) ++ vlc_cond_wait( &buffer->cond, &buffer->mutex ); ++ } else { ++ buffer->read_pos = buffer->write_pos; ++ buffer->length = 0; ++ } ++ ++ vlc_mutex_unlock( &buffer->mutex ); ++} ++ ++static int TimeGet( audio_output_t *aout, mtime_t *restrict delay ) ++{ ++ aout_sys_t *sys = aout->sys; ++ audio_sample_format_t *format = &sys->format; ++ audio_buffer_t *buffer = sys->buffer; ++ ++ vlc_mutex_lock( &buffer->mutex ); ++ ++ *delay = ( buffer->length / format->i_bytes_per_frame ) * CLOCK_FREQ / ++ format->i_rate; ++ ++ vlc_mutex_unlock( &buffer->mutex ); ++ ++ return 0; ++} ++ ++static int VolumeSet(audio_output_t* aout, float volume) ++{ ++ aout_sys_t* sys = (aout_sys_t*)aout->sys; ++ ++ if (sys->player == NULL) ++ return VLC_EGENERIC; ++ ++ sys->volume = volume; ++ aout_VolumeReport(aout, volume); ++ ++ float dbVol = lroundf(125.f * log10f(volume)); ++ ++ if (sys->mute == false) ++ sys->player->SetVolumeDB(dbVol); ++ ++ return VLC_SUCCESS; ++} ++ ++static int MuteSet(audio_output_t* aout, bool mute) ++{ ++ aout_sys_t* sys = (aout_sys_t*)aout->sys; ++ ++ if (sys->player == NULL) ++ return VLC_EGENERIC; ++ ++ sys->mute = mute; ++ aout_MuteReport(aout, mute); ++ ++ float dbVol = lroundf(125.f * log10f(sys->volume)); ++ ++ if (mute == false) ++ sys->player->SetVolumeDB(dbVol); ++ else ++ sys->player->SetVolume(0.0); ++ ++ return VLC_SUCCESS; ++} ++ ++static int CreateBuffer( audio_output_t *aout, int size ) ++{ ++ audio_buffer_t *buffer; ++ ++ buffer = (audio_buffer_t*)calloc( 1, sizeof( *buffer )); ++ if( !buffer ) ++ return -1; ++ ++ buffer->data = (uint8_t*)malloc( size ); ++ if( !buffer->data ) { ++ free( buffer ); ++ return -1; ++ } ++ ++ buffer->size = size; ++ ++ vlc_mutex_init( &buffer->mutex ); ++ vlc_cond_init( &buffer->cond ); ++ ++ aout->sys->buffer = buffer; ++ ++ return 0; ++} ++ ++static void DestroyBuffer( audio_output_t *aout ) ++{ ++ audio_buffer_t *buffer = aout->sys->buffer; ++ ++ vlc_mutex_destroy( &buffer->mutex ); ++ vlc_cond_destroy( &buffer->cond ); ++ ++ free( buffer->data ); ++ free( buffer ); ++} ++ ++static int ReadBuffer( audio_output_t *aout, uint8_t *data, int size ) ++{ ++ audio_buffer_t *buffer = aout->sys->buffer; ++ int len; ++ int remain_len = 0; ++ ++ vlc_mutex_lock( &buffer->mutex ); ++ ++ len = MIN( buffer->length, size ); ++ if( buffer->read_pos + len > buffer->size ) { ++ remain_len = len; ++ len = buffer->size - buffer->read_pos; ++ remain_len -= len; ++ } ++ ++ memcpy( data, buffer->data + buffer->read_pos, len ); ++ if( remain_len ) ++ memcpy( data + len, buffer->data, remain_len ); ++ ++ len += remain_len; ++ ++ buffer->read_pos += len; ++ buffer->read_pos %= buffer->size; ++ ++ buffer->length -= len; ++ ++ vlc_cond_signal( &buffer->cond ); ++ ++ vlc_mutex_unlock( &buffer->mutex ); ++ ++ return len; ++} ++ ++static int WriteBuffer( audio_output_t *aout, uint8_t *data, int size ) ++{ ++ audio_buffer_t *buffer = aout->sys->buffer; ++ int len; ++ int remain_len = 0; ++ ++ vlc_mutex_lock( &buffer->mutex ); ++ ++ while( buffer->length + size > buffer->size ) ++ vlc_cond_wait( &buffer->cond, &buffer->mutex ); ++ ++ len = size; ++ if( buffer->write_pos + len > buffer->size ) { ++ remain_len = len; ++ len = buffer->size - buffer->write_pos; ++ remain_len -= len; ++ } ++ ++ memcpy( buffer->data + buffer->write_pos, data, len ); ++ if( remain_len ) ++ memcpy( buffer->data, data + len, remain_len ); ++ ++ buffer->write_pos += size; ++ buffer->write_pos %= buffer->size; ++ ++ buffer->length += size; ++ ++ vlc_mutex_unlock( &buffer->mutex ); ++ ++ return size; ++} +diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h +index d386444..5ed96c1 100644 +--- a/modules/codec/avcodec/avcommon_compat.h ++++ b/modules/codec/avcodec/avcommon_compat.h +@@ -78,6 +78,46 @@ + # define FF_MAX_B_FRAMES 16 // FIXME: remove this + #endif + ++#ifndef AV_CODEC_FLAG_OUTPUT_CORRUPT ++# define AV_CODEC_FLAG_OUTPUT_CORRUPT CODEC_FLAG_OUTPUT_CORRUPT ++#endif ++#ifndef AV_CODEC_FLAG_GRAY ++# define AV_CODEC_FLAG_GRAY CODEC_FLAG_GRAY ++#endif ++#ifndef AV_CODEC_FLAG_DR1 ++# define AV_CODEC_FLAG_DR1 CODEC_FLAG_DR1 ++#endif ++#ifndef AV_CODEC_FLAG_DELAY ++# define AV_CODEC_FLAG_DELAY CODEC_FLAG_DELAY ++#endif ++#ifndef AV_CODEC_FLAG2_FAST ++# define AV_CODEC_FLAG2_FAST CODEC_FLAG2_FAST ++#endif ++#ifndef FF_INPUT_BUFFER_PADDING_SIZE ++# define FF_INPUT_BUFFER_PADDING_SIZE AV_INPUT_BUFFER_PADDING_SIZE ++#endif ++#ifndef AV_CODEC_FLAG_INTERLACED_DCT ++# define AV_CODEC_FLAG_INTERLACED_DCT CODEC_FLAG_INTERLACED_DCT ++#endif ++#ifndef AV_CODEC_FLAG_INTERLACED_ME ++# define AV_CODEC_FLAG_INTERLACED_ME CODEC_FLAG_INTERLACED_ME ++#endif ++#ifndef AV_CODEC_FLAG_GLOBAL_HEADER ++# define AV_CODEC_FLAG_GLOBAL_HEADER CODEC_FLAG_GLOBAL_HEADER ++#endif ++#ifndef AV_CODEC_FLAG_LOW_DELAY ++# define AV_CODEC_FLAG_LOW_DELAY CODEC_FLAG_LOW_DELAY ++#endif ++#ifndef AV_CODEC_CAP_SMALL_LAST_FRAME ++# define AV_CODEC_CAP_SMALL_LAST_FRAME CODEC_CAP_SMALL_LAST_FRAME ++#endif ++#ifndef AV_INPUT_BUFFER_MIN_SIZE ++# define AV_INPUT_BUFFER_MIN_SIZE FF_MIN_BUFFER_SIZE ++#endif ++#ifndef FF_MAX_B_FRAMES ++# define FF_MAX_B_FRAMES 16 // FIXME: remove this ++#endif ++ + #endif /* HAVE_LIBAVCODEC_AVCODEC_H */ + + #ifdef HAVE_LIBAVUTIL_AVUTIL_H +diff --git a/modules/gui/qt/components/controller.cpp b/modules/gui/qt/components/controller.cpp +index f91d748..56918a2 100644 +--- a/modules/gui/qt/components/controller.cpp ++++ b/modules/gui/qt/components/controller.cpp +@@ -229,7 +229,11 @@ void AbstractController::createAndAddWidget( QBoxLayout *controlLayout_, + + QWidget *AbstractController::createWidget( buttonType_e button, int options ) + { ++#ifdef __HAIKU__ ++ bool b_flat = true; // Flat for Haiku ++#else + bool b_flat = options & WIDGET_FLAT; ++#endif + bool b_big = options & WIDGET_BIG; + bool b_shiny = options & WIDGET_SHINY; + bool b_special = false; +@@ -731,10 +735,10 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i, + QString line2 = getSettings()->value( "MainWindow/MainToolbar2", MAIN_TB2_DEFAULT ) + .toString(); + parseAndCreate( line2, controlLayout2 ); +- ++#ifndef __HAIKU__ + grip = new QSizeGrip( this ); + controlLayout2->addWidget( grip, 0, Qt::AlignBottom|Qt::AlignRight ); +- ++#endif + if( !b_advancedVisible && advControls ) advControls->hide(); + + controlLayout->addLayout( controlLayout1 ); +diff --git a/modules/gui/qt/components/controller.hpp b/modules/gui/qt/components/controller.hpp +index 8650029..40be498 100644 +--- a/modules/gui/qt/components/controller.hpp ++++ b/modules/gui/qt/components/controller.hpp +@@ -210,17 +210,17 @@ public: + /* p_intf, advanced control visible or not, blingbling or not */ + ControlsWidget( intf_thread_t *_p_i, bool b_advControls, + QWidget *_parent = 0 ); +- ++#ifndef __HAIKU__ + void setGripVisible( bool b_visible ) + { grip->setVisible( b_visible ); } +- ++#endif + protected: + friend class MainInterface; + + bool b_advancedVisible; + + private: +- QSizeGrip *grip; ++ QWidget *grip; + + protected slots: + void toggleAdvanced(); +diff --git a/modules/gui/qt/components/interface_widgets.cpp b/modules/gui/qt/components/interface_widgets.cpp +index bcf65d2..ff2babd 100644 +--- a/modules/gui/qt/components/interface_widgets.cpp ++++ b/modules/gui/qt/components/interface_widgets.cpp +@@ -158,6 +158,9 @@ bool VideoWidget::request( struct vout_window_t *p_wnd ) + case VOUT_WINDOW_TYPE_HWND: + p_wnd->handle.hwnd = (void *)stable->winId(); + break; ++ case VOUT_WINDOW_TYPE_HAIKU: ++ p_wnd->handle.haikuwindow = (void *)stable->winId(); ++ break; + case VOUT_WINDOW_TYPE_NSOBJECT: + p_wnd->handle.nsobject = (void *)stable->winId(); + break; +diff --git a/modules/gui/qt/components/playlist/views.cpp b/modules/gui/qt/components/playlist/views.cpp +index 24db9d9..73c1779 100644 +--- a/modules/gui/qt/components/playlist/views.cpp ++++ b/modules/gui/qt/components/playlist/views.cpp +@@ -27,6 +27,7 @@ + #include "input_manager.hpp" /* THEMIM */ + + #include ++#include + #include + #include + #include +diff --git a/modules/gui/qt/dialogs/plugins.cpp b/modules/gui/qt/dialogs/plugins.cpp +index d233382..69728eb 100644 +--- a/modules/gui/qt/dialogs/plugins.cpp ++++ b/modules/gui/qt/dialogs/plugins.cpp +@@ -53,6 +53,7 @@ + #include + #include + #include ++#include + #include + #include + #include +diff --git a/modules/gui/qt/main_interface.cpp b/modules/gui/qt/main_interface.cpp +index bb5dad8..f9dc8fe 100644 +--- a/modules/gui/qt/main_interface.cpp ++++ b/modules/gui/qt/main_interface.cpp +@@ -127,7 +127,13 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) + setWindowRole( "vlc-main" ); + setWindowIcon( QApplication::windowIcon() ); + setWindowOpacity( var_InheritFloat( p_intf, "qt-opacity" ) ); +- ++#ifdef __HAIKU__ ++ setWindowFlags(Qt::Window ++ | Qt::MSWindowsFixedSizeDialogHint ++ | Qt::WindowMinimizeButtonHint ++ | Qt::WindowCloseButtonHint ++ | Qt::CustomizeWindowHint); ++#endif + /* Does the interface resize to video size or the opposite */ + b_autoresize = var_InheritBool( p_intf, "qt-video-autoresize" ); + +@@ -144,7 +150,11 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) + settings = getSettings(); + + /* */ ++#ifndef __HAIKU__ + b_plDocked = getSettings()->value( "MainWindow/pl-dock-status", true ).toBool(); ++#else ++ b_plDocked = false; ++#endif + + /* Should the UI stays on top of other windows */ + b_interfaceOnTop = var_InheritBool( p_intf, "video-on-top" ); +@@ -318,6 +328,17 @@ void MainInterface::computeMinimumSize() + minWidth += controls->sizeHint().width(); + + setMinimumWidth( minWidth ); ++#ifdef __HAIKU__ ++ int minHeight = 50; ++ minHeight += controls->sizeHint().height(); ++ if( statusBar()->isVisible() ) ++ minHeight += statusBar()->sizeHint().height(); ++ if( resumePanel->isVisible() ) ++ minHeight += resumePanel->sizeHint().height(); ++ setMinimumHeight(minHeight); ++ setMaximumHeight(minHeight); ++ setMaximumWidth(minWidth); ++#endif + } + + /***************************** +@@ -411,6 +432,9 @@ void MainInterface::showResumePanel( int64_t _time ) { + if( !isFullScreen() && !isMaximized() && !b_isWindowTiled ) + resizeWindow( width(), height() + resumePanel->height() ); + resumePanel->setVisible(true); ++#ifdef __HAIKU__ ++ computeMinimumSize(); ++#endif + resumeTimer->start(); + } + } +@@ -423,6 +447,9 @@ void MainInterface::hideResumePanel() + resizeWindow( width(), height() - resumePanel->height() ); + resumePanel->hide(); + resumeTimer->stop(); ++#ifdef __HAIKU__ ++ computeMinimumSize(); ++#endif + } + } + +@@ -463,7 +490,7 @@ void MainInterface::createMainWidget( QSettings *creationSettings ) + createResumePanel( main ); + /* */ + stackCentralW = new QVLCStackedWidget( main ); +- ++#ifndef __HAIKU__ + /* Bg Cone */ + if ( QDate::currentDate().dayOfYear() >= QT_XMAS_JOKE_DAY + && var_InheritBool( p_intf, "qt-icon-change" ) ) +@@ -493,7 +520,9 @@ void MainInterface::createMainWidget( QSettings *creationSettings ) + creationSettings->value( "MainWindow/bgSize", QSize( 600, 0 ) ).toSize(); + /* Resize even if no-auto-resize, because we are at creation */ + resizeStack( stackWidgetsSizes[bgWidget].width(), stackWidgetsSizes[bgWidget].height() ); +- ++#else ++ mainLayout->insertWidget( 1, stackCentralW ); ++#endif + /* Create the CONTROLS Widget */ + controls = new ControlsWidget( p_intf, + creationSettings->value( "MainWindow/adv-controls", false ).toBool(), this ); +@@ -1202,6 +1231,9 @@ void MainInterface::toggleMinimalView( bool b_minimal ) + void MainInterface::toggleAdvancedButtons() + { + controls->toggleAdvanced(); ++#ifdef __HAIKU__ ++ computeMinimumSize(); ++#endif + // if( fullscreenControls ) fullscreenControls->toggleAdvanced(); + } + +@@ -1223,7 +1255,11 @@ void MainInterface::setStatusBarVisibility( bool b_visible ) + { + statusBar()->setVisible( b_visible ); + b_statusbarVisible = b_visible; ++#ifdef __HAIKU__ ++ computeMinimumSize(); ++#else + if( controls ) controls->setGripVisible( !b_statusbarVisible ); ++#endif + } + + +@@ -1294,9 +1330,9 @@ void MainInterface::createSystray() + { + QIcon iconVLC; + if( QDate::currentDate().dayOfYear() >= QT_XMAS_JOKE_DAY && var_InheritBool( p_intf, "qt-icon-change" ) ) +- iconVLC = QIcon::fromTheme( "vlc-xmas", QIcon( ":/logo/vlc128-xmas.png" ) ); ++ iconVLC = QIcon( ":/logo/vlc128-xmas.png" ); + else +- iconVLC = QIcon::fromTheme( "vlc", QIcon( ":/logo/vlc256.png" ) ); ++ iconVLC = QIcon( ":/logo/vlc256.png" ); + sysTray = new QSystemTrayIcon( iconVLC, this ); + sysTray->setToolTip( qtr( "VLC media player" )); + +diff --git a/modules/gui/qt/menus.cpp b/modules/gui/qt/menus.cpp +index aea98c9..c946f9b 100644 +--- a/modules/gui/qt/menus.cpp ++++ b/modules/gui/qt/menus.cpp +@@ -486,7 +486,7 @@ QMenu *VLCMenuBar::ViewMenu( intf_thread_t *p_intf, QMenu *current, MainInterfac + #endif + qtr( "Play&list" ), mi, + SLOT( togglePlaylist() ), qtr( "Ctrl+L" ) ); +- ++#ifndef __HAIKU__ + /* Docked Playlist */ + action = menu->addAction( qtr( "Docked Playlist" ) ); + action->setCheckable( true ); +@@ -495,7 +495,7 @@ QMenu *VLCMenuBar::ViewMenu( intf_thread_t *p_intf, QMenu *current, MainInterfac + + if( mi->getPlaylistView() ) + menu->addMenu( StandardPLPanel::viewSelectionMenu( mi->getPlaylistView() ) ); +- ++#endif + menu->addSeparator(); + + action = menu->addAction( qtr( "Always on &top" ) ); +@@ -504,7 +504,7 @@ QMenu *VLCMenuBar::ViewMenu( intf_thread_t *p_intf, QMenu *current, MainInterfac + CONNECT( action, triggered( bool ), mi, setInterfaceAlwaysOnTop( bool ) ); + + menu->addSeparator(); +- ++#ifndef __HAIKU__ + /* Minimal View */ + action = menu->addAction( qtr( "Mi&nimal Interface" ) ); + action->setShortcut( qtr( "Ctrl+H" ) ); +@@ -529,7 +529,7 @@ QMenu *VLCMenuBar::ViewMenu( intf_thread_t *p_intf, QMenu *current, MainInterfac + action->setCheckable( true ); + if( mi->getControlsVisibilityStatus() & MainInterface::CONTROLS_ADVANCED ) + action->setChecked( true ); +- ++#endif + action = menu->addAction( qtr( "Status Bar" ) ); + action->setCheckable( true ); + action->setChecked( mi->statusBar()->isVisible() ); +diff --git a/modules/gui/qt/qt.cpp b/modules/gui/qt/qt.cpp +index ab912fd..e3c9ed8 100644 +--- a/modules/gui/qt/qt.cpp ++++ b/modules/gui/qt/qt.cpp +@@ -604,6 +604,8 @@ static void *ThreadPlatform( void *obj, char *platform_name ) + else if( platform == qfu("windows") ) + p_sys->voutWindowType = VOUT_WINDOW_TYPE_HWND; + else if( platform == qfu("cocoa" ) ) ++ p_sys->voutWindowType = VOUT_WINDOW_TYPE_HAIKU; ++ else if( platform == qfu("haiku" ) ) + p_sys->voutWindowType = VOUT_WINDOW_TYPE_NSOBJECT; + else + msg_Err( p_intf, "unknown Qt platform: %s", qtu(platform) ); +diff --git a/modules/gui/qt/util/timetooltip.cpp b/modules/gui/qt/util/timetooltip.cpp +index 81789df..ce5f87c 100644 +--- a/modules/gui/qt/util/timetooltip.cpp ++++ b/modules/gui/qt/util/timetooltip.cpp +@@ -28,7 +28,11 @@ + #include + #include + ++#ifdef __HAIKU__ ++#define TIP_HEIGHT 0 ++#else + #define TIP_HEIGHT 5 ++#endif + + TimeTooltip::TimeTooltip( QWidget *parent ) : + QWidget( parent ) +diff --git a/modules/gui/qt/util/timetooltip.hpp b/modules/gui/qt/util/timetooltip.hpp +index 6a1329e..9f50b18 100644 +--- a/modules/gui/qt/util/timetooltip.hpp ++++ b/modules/gui/qt/util/timetooltip.hpp +@@ -25,6 +25,7 @@ + #include "qt.hpp" + + #include ++#include + + class TimeTooltip : public QWidget + { +diff --git a/modules/video_output/Makefile.am b/modules/video_output/Makefile.am +index 78c06cf..0ae24ec 100644 +--- a/modules/video_output/Makefile.am ++++ b/modules/video_output/Makefile.am +@@ -356,6 +356,13 @@ if HAVE_WIN32 + vout_LTLIBRARIES += libdrawable_plugin.la + endif + ++### HAIKU ### ++libhaiku_vout_plugin_la_SOURCES = video_output/haiku.cpp ++libhaiku_vout_plugin_la_LIBADD = -lbe ++if HAVE_HAIKU ++vout_LTLIBRARIES += libhaiku_vout_plugin.la ++endif ++ + ### OS/2 ### + if HAVE_OS2 + vout_LTLIBRARIES += libdrawable_plugin.la +@@ -422,9 +429,11 @@ libcaca_plugin_la_CFLAGS = $(AM_CFLAGS) $(CACA_CFLAGS) + libcaca_plugin_la_LIBADD = libevent_thread.la $(CACA_LIBS) + if !HAVE_WIN32 + if !HAVE_DARWIN ++if !HAVE_HAIKU + libcaca_plugin_la_LIBADD += $(X_LIBS) $(X_PRE_LIBS) -lX11 + endif + endif ++endif + libcaca_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(voutdir)' + EXTRA_LTLIBRARIES += libcaca_plugin.la + vout_LTLIBRARIES += $(LTLIBcaca) +diff --git a/modules/video_output/haiku.cpp b/modules/video_output/haiku.cpp +new file mode 100644 +index 0000000..d2de038 +--- /dev/null ++++ b/modules/video_output/haiku.cpp +@@ -0,0 +1,779 @@ ++/***************************************************************************** ++ * haiku.c: Haiku video output display method for testing purposes ++ ***************************************************************************** ++ * Copyright (C) 2020 Gerasim Troeglazov (3dEyes**) ++ ++ * This program 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. ++ * ++ * This program 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 this program; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. ++ *****************************************************************************/ ++ ++/***************************************************************************** ++ * Preamble ++ *****************************************************************************/ ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static uint32 platformHaikuScanCodes[] = { ++ KEY_ESC, 0x01, ++ KEY_F1, 0x02, ++ KEY_F2, 0x03, ++ KEY_F3, 0x04, ++ KEY_F4, 0x05, ++ KEY_F5, 0x06, ++ KEY_F6, 0x07, ++ KEY_F7, 0x08, ++ KEY_F8, 0x09, ++ KEY_F9, 0x0A, ++ KEY_F10, 0x0B, ++ KEY_F11, 0x0C, ++ KEY_F12, 0x0D, ++ KEY_PAUSE, 0x22, ++ ++ '`', 0x11, ++ '1', 0x12, ++ '2', 0x13, ++ '3', 0x14, ++ '4', 0x15, ++ '5', 0x16, ++ '6', 0x17, ++ '7', 0x18, ++ '8', 0x19, ++ '9', 0x1A, ++ '0', 0x1B, ++ '-', 0x1C, ++ '+', 0x1D, ++ KEY_BACKSPACE, 0x1E, ++ KEY_INSERT, 0x1F, ++ KEY_HOME, 0x20, ++ KEY_PAGEUP, 0x21, ++ '/', 0x23, ++ '*', 0x24, ++ '-', 0x25, ++ ++ KEY_TAB, 0x26, ++ 'q', 0x27, ++ 'w', 0x28, ++ 'e', 0x29, ++ 'r', 0x2A, ++ 't', 0x2B, ++ 'y', 0x2C, ++ 'u', 0x2D, ++ 'i', 0x2E, ++ 'o', 0x2F, ++ 'p', 0x30, ++ '[', 0x31, ++ ']', 0x32, ++ '\\', 0x33, ++ KEY_DELETE, 0x34, ++ KEY_END, 0x35, ++ KEY_PAGEDOWN, 0x36, ++ '7', 0x37, ++ '8', 0x38, //numpad ++ '9', 0x39, //numpad ++ '+', 0x3A, //numpad ++ ++ 'a', 0x3C, ++ 's', 0x3D, ++ 'd', 0x3E, ++ 'f', 0x3F, ++ 'g', 0x40, ++ 'h', 0x41, ++ 'j', 0x42, ++ 'k', 0x43, ++ 'l', 0x44, ++ ';', 0x45, ++ '"', 0x46, ++ KEY_ENTER, 0x47, ++ '4', 0x48, //numpad ++ '5', 0x49, //numpad ++ '6', 0x4A, //numpad ++ ++ 'z', 0x4C, ++ 'x', 0x4D, ++ 'c', 0x4E, ++ 'v', 0x4F, ++ 'b', 0x50, ++ 'n', 0x51, ++ 'm', 0x52, ++ ',', 0x53, ++ '.', 0x54, ++ '/', 0x55, ++ KEY_UP, 0x57, //cursor ++ '1', 0x58, //numpad ++ '2', 0x59, //numpad ++ '3', 0x5A, //numpad ++ KEY_ENTER, 0x5B, //numpad ++ ++ ' ', 0x5E, ++ KEY_LEFT, 0x61, //cursor ++ KEY_DOWN, 0x62, //cursor ++ KEY_RIGHT, 0x63, //cursor ++ '0', 0x64, //cursor ++ '.', 0x65, //numpad ++ 0, 0x00 ++ }; ++ ++static const struct { ++ int haiku; ++ int vlc; ++} platformHaikuMouseButtons[] = { ++ { B_PRIMARY_MOUSE_BUTTON, MOUSE_BUTTON_LEFT }, ++ { B_TERTIARY_MOUSE_BUTTON, MOUSE_BUTTON_CENTER }, ++ { B_SECONDARY_MOUSE_BUTTON, MOUSE_BUTTON_RIGHT }, ++ { -1, -1 } ++}; ++ ++class FrameBufferView : public BView ++{ ++ public: ++ FrameBufferView(BRect rect, int width, int height); ++ ~FrameBufferView(); ++ ++ virtual void MessageReceived(BMessage *message); ++ virtual void Draw(BRect rect); ++ ++ void Paint(); ++ uint32 *GetBuffer(); ++ uint32 GetBufferSize(); ++ void ResizeBitmap(int width, int height); ++ ++ int Width() { return buffer_width; } ++ int Height() { return buffer_height; } ++ private: ++ int buffer_width; ++ int buffer_height; ++ BView *bufferView; ++ BBitmap *bufferBitmap; ++}; ++ ++class VLCVideoWindow : public BWindow { ++ public: ++ VLCVideoWindow(BRect rect, const char* name); ++ virtual ~VLCVideoWindow(); ++ ++ virtual void DispatchMessage(BMessage *message, BHandler *handler); ++ bool QuitRequested(); ++ ++ FrameBufferView* View(void) { return frameBufferView; } ++ BMessageQueue* Queue(void) { return queue; } ++ void CloneAndPushMessage(BMessage *message); ++ ++ void SetFullscreen(bool fullscreen); ++ bool IsFullscreen(void) {return is_fullscreen; } ++ ++ void HideCursor(bool hide); ++ ++ private: ++ bool is_fullscreen; ++ BRect lastPosition; ++ BPoint lastMouseClick; ++ ++ FrameBufferView *frameBufferView; ++ BMessageQueue *queue; ++ BCursor *emptyCursor; ++ bool dragWindow; ++}; ++ ++FrameBufferView::FrameBufferView(BRect rect, int width, int height) : ++ BView(rect, "FrameBufferView", B_FOLLOW_ALL, B_WILL_DRAW | B_FRAME_EVENTS) ++{ ++ buffer_width = width; ++ buffer_height = height; ++ ++ BRect fbRect = BRect(0, 0, buffer_width - 1, buffer_height - 1); ++ bufferBitmap = new BBitmap(fbRect, B_RGB32, true); ++} ++ ++FrameBufferView::~FrameBufferView() ++{ ++ delete bufferBitmap; ++} ++ ++ ++void ++FrameBufferView::MessageReceived(BMessage *message) ++{ ++ switch (message->what) { ++ case B_MOUSE_MOVED: ++ case B_MOUSE_WHEEL_CHANGED: ++ { ++ Window()->PostMessage(message); ++ break; ++ } ++ case B_MOUSE_DOWN: ++ case B_MOUSE_UP: ++ { ++ Window()->PostMessage(message); ++ break; ++ } ++ default: ++ BView::MessageReceived(message); ++ break; ++ } ++} ++ ++void ++FrameBufferView::Draw(BRect rect) ++{ ++ SetDrawingMode(B_OP_COPY); ++ DrawBitmap(bufferBitmap, rect, rect); ++} ++ ++void ++FrameBufferView::Paint() ++{ ++ if(LockLooper()) { ++ SetDrawingMode(B_OP_COPY); ++ DrawBitmap(bufferBitmap); ++ UnlockLooper(); ++ } ++} ++ ++uint32 * ++FrameBufferView::GetBuffer() ++{ ++ if(bufferBitmap == NULL) ++ return NULL; ++ return (uint32*)bufferBitmap->Bits(); ++} ++ ++uint32 ++FrameBufferView::GetBufferSize() ++{ ++ if(bufferBitmap == NULL) ++ return 0; ++ return bufferBitmap->BitsLength(); ++} ++ ++void ++FrameBufferView::ResizeBitmap(int w, int h) ++{ ++ if(w == buffer_width && h == buffer_height && bufferBitmap != NULL) ++ return; ++ if(LockLooper()) { ++ delete bufferBitmap; ++ ++ buffer_width = w; ++ buffer_height = h; ++ ++ BRect fbRect = BRect(0, 0, buffer_width - 1, buffer_height - 1); ++ bufferBitmap = new BBitmap(fbRect, B_RGB32, true); ++ ++ UnlockLooper(); ++ } ++} ++ ++ ++VLCVideoWindow::VLCVideoWindow(BRect frame, const char* title) ++ : BWindow(frame, title, B_TITLED_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL, 0), ++ is_fullscreen(false), ++ dragWindow(false) ++{ ++ frameBufferView = new FrameBufferView(Bounds(), frame.Width(), frame.Height()); ++ frameBufferView->SetViewColor(0, 0, 0); ++ AddChild(frameBufferView); ++ queue = new BMessageQueue(); ++ emptyCursor = new BCursor(B_CURSOR_ID_NO_CURSOR); ++} ++ ++ ++VLCVideoWindow::~VLCVideoWindow() ++{ ++ delete emptyCursor; ++ delete queue; ++} ++ ++void ++VLCVideoWindow::CloneAndPushMessage(BMessage *message) ++{ ++ BMessage *clone = new BMessage(*message); ++ queue->Lock(); ++ queue->AddMessage(clone); ++ queue->Unlock(); ++} ++ ++void ++VLCVideoWindow::DispatchMessage(BMessage *message, BHandler *handler) ++{ ++ switch (message->what) { ++ case B_MOUSE_DOWN: ++ { ++ uint32 buttons = 0; ++ message->FindInt32("buttons", (int32 *)&buttons); ++ ++ if (buttons & B_PRIMARY_MOUSE_BUTTON) { ++ frameBufferView->SetMouseEventMask(B_POINTER_EVENTS, B_NO_POINTER_HISTORY); ++ message->FindPoint("where", &lastMouseClick); ++ dragWindow = true; ++ } ++ CloneAndPushMessage(message); ++ break; ++ } ++ case B_MOUSE_UP: ++ { ++ frameBufferView->SetViewCursor(B_CURSOR_SYSTEM_DEFAULT); ++ dragWindow = false; ++ CloneAndPushMessage(message); ++ BWindow::DispatchMessage(message, handler); ++ break; ++ } ++ case B_MOUSE_MOVED: ++ { ++ uint32 buttons = 0; ++ message->FindInt32("buttons", (int32 *)&buttons); ++ BPoint where; ++ message->FindPoint("where", &where); ++ BPoint screenWhere; ++ message->FindPoint("screen_where", &screenWhere); ++ ++ if (dragWindow ++ && buttons & B_PRIMARY_MOUSE_BUTTON ++ && (fabs(where.x - lastMouseClick.x) >= 0.5 ++ || fabs(where.y - lastMouseClick.y) >= 0.5)) { ++ BCursor cursor(B_CURSOR_ID_MOVE); ++ frameBufferView->SetViewCursor(&cursor); ++ MoveTo(screenWhere - lastMouseClick); ++ break; ++ } ++ CloneAndPushMessage(message); ++ break; ++ } ++ case B_ZOOM: ++ case B_WINDOW_RESIZED: ++ case B_MOUSE_WHEEL_CHANGED: ++ { ++ CloneAndPushMessage(message); ++ break; ++ } ++ case B_UNMAPPED_KEY_DOWN: ++ case B_KEY_DOWN: ++ { ++ CloneAndPushMessage(message); ++ BWindow::DispatchMessage(message, handler); ++ break; ++ } ++ default: ++ { ++ BWindow::DispatchMessage(message, handler); ++ break; ++ } ++ } ++} ++ ++bool ++VLCVideoWindow::QuitRequested() ++{ ++ Minimize(true); ++ return false; ++} ++ ++void ++VLCVideoWindow::SetFullscreen(bool fullscreen) ++{ ++ if (fullscreen == is_fullscreen) ++ return; ++ ++ if (fullscreen) { ++ BScreen screen(B_MAIN_SCREEN_ID); ++ lastPosition = Frame(); ++ MoveTo(0,0); ++ ResizeTo(screen.Frame().Width() + 1, screen.Frame().Height() + 1); ++ Activate(); ++ } else { ++ MoveTo(lastPosition.left, lastPosition.top); ++ ResizeTo(lastPosition.Width(), lastPosition.Height()); ++ } ++ ++ is_fullscreen = fullscreen; ++} ++ ++void ++VLCVideoWindow::HideCursor(bool hide) ++{ ++ if (hide && dragWindow) ++ return; ++ if (frameBufferView->LockLooper()) { ++ frameBufferView->SetViewCursor(hide ? emptyCursor : B_CURSOR_SYSTEM_DEFAULT); ++ frameBufferView->UnlockLooper(); ++ } ++} ++ ++ ++extern "C" { ++ ++static int Open( vlc_object_t * ); ++static void Close( vlc_object_t * ); ++static picture_pool_t *Pool(vout_display_t *, unsigned count); ++static void Display(vout_display_t *, picture_t *, subpicture_t *); ++static int Control(vout_display_t *, int, va_list); ++static void Manage (vout_display_t *); ++ ++} ++ ++vlc_module_begin () ++ set_shortname("Haiku") ++ set_category(CAT_VIDEO) ++ set_subcategory(SUBCAT_VIDEO_VOUT) ++ set_description("Haiku video output") ++ set_capability("vout display", 100 ) ++ add_shortcut("haiku") ++ add_obsolete_string("haiku-video-driver") ++ set_callbacks(Open, Close) ++vlc_module_end () ++ ++ ++/***************************************************************************** ++ * Local prototypes ++ *****************************************************************************/ ++struct vout_display_sys_t { ++ vout_display_place_t place; ++ picture_pool_t *pool; ++ VLCVideoWindow *win; ++ uint32 lastMouseButtons; ++ int resizeDisplayCount; ++}; ++ ++/***************************************************************************** ++ * OpenVideo: activates haiku vout display method ++ *****************************************************************************/ ++static int Open(vlc_object_t *object) ++{ ++ vout_display_t *vd = (vout_display_t *)object; ++ vout_display_sys_t *sys; ++ ++ vd->sys = sys = (vout_display_sys_t*)calloc(1, sizeof(*sys)); ++ if (!sys) ++ return VLC_EGENERIC; ++ sys->pool = NULL; ++ sys->lastMouseButtons = 0; ++ sys->resizeDisplayCount = 0; ++ ++ video_format_t fmt; ++ video_format_ApplyRotation(&fmt, &vd->fmt); ++ ++ BScreen screen(B_MAIN_SCREEN_ID); ++ ++ int display_margin = 128; ++ int display_width = vd->cfg->display.width; ++ int display_height = vd->cfg->display.height; ++ ++ if (display_margin + display_width > screen.Frame().Width() - display_margin) { ++ float zoom = (screen.Frame().Width() - display_margin * 2) / (float)display_width; ++ display_width = (float)display_width * zoom; ++ display_height = (float)display_height * zoom; ++ } ++ if (display_margin + display_height > screen.Frame().Height() - display_margin) { ++ float zoom = (screen.Frame().Height() - display_margin * 2) / (float)display_height; ++ display_width = (float)display_width * zoom; ++ display_height = (float)display_height * zoom; ++ } ++ ++ vout_display_DeleteWindow(vd, NULL); ++ ++ sys->win = new VLCVideoWindow(BRect(display_margin, display_margin, display_margin + display_width, display_margin + display_height), VOUT_TITLE); ++ sys->win->Show(); ++ ++ if (vd->cfg->display.title) ++ sys->win->SetTitle(vd->cfg->display.title); ++ else ++ sys->win->SetTitle(VOUT_TITLE); ++ ++ vout_display_cfg_t place_cfg = *vd->cfg; ++ place_cfg.display.width = display_width; ++ place_cfg.display.height = display_height; ++ vout_display_PlacePicture(&sys->place, &vd->source, &place_cfg, true); ++ ++ fmt.i_chroma = VLC_CODEC_RGB32; ++ fmt.i_width = display_width; ++ fmt.i_height = display_height; ++ fmt.i_rmask = 0x00ff0000; ++ fmt.i_gmask = 0x0000ff00; ++ fmt.i_bmask = 0x000000ff; ++ fmt.i_visible_width = fmt.i_width; ++ fmt.i_visible_height = fmt.i_height; ++ ++ vd->info.has_pictures_invalid = true; ++ vd->info.needs_hide_mouse = true; ++ ++ vd->fmt = fmt; ++ ++ vd->pool = Pool; ++ vd->prepare = NULL; ++ vd->display = Display; ++ vd->control = Control; ++ vd->manage = Manage; ++ ++ vout_display_SendEventDisplaySize(vd, display_width, display_height); ++ ++ return VLC_SUCCESS; ++} ++ ++static void Close(vlc_object_t *object) ++{ ++ vout_display_t *vd = (vout_display_t *)object; ++ vout_display_sys_t *sys = vd->sys; ++ ++ sys->win->Lock(); ++ sys->win->Quit(); ++ ++ if (sys->pool) ++ picture_pool_Release(sys->pool); ++ free(sys); ++} ++ ++static picture_pool_t *Pool(vout_display_t *vd, unsigned count) ++{ ++ vout_display_sys_t *sys = vd->sys; ++ if (!sys->pool) { ++ picture_resource_t rsc; ++ ++ memset(&rsc, 0, sizeof(rsc)); ++ ++ memset((uint8_t*)sys->win->View()->GetBuffer(), 0, sys->win->View()->GetBufferSize()); ++ ++ rsc.p[0].p_pixels = (uint8_t*)sys->win->View()->GetBuffer(); ++ rsc.p[0].i_pitch = sys->win->View()->Width() * 4; ++ rsc.p[0].i_lines = sys->win->View()->Height(); ++ ++ picture_t *p_picture = picture_NewFromResource(&vd->fmt, &rsc); ++ if (!p_picture) ++ return NULL; ++ ++ sys->pool = picture_pool_New(1, &p_picture); ++ } ++ return sys->pool; ++} ++ ++static void Display(vout_display_t *vd, picture_t *picture, subpicture_t *subpicture) ++{ ++ vout_display_sys_t *sys = vd->sys; ++ sys->win->View()->Paint(); ++ picture_Release(picture); ++} ++ ++static int Control(vout_display_t *vd, int query, va_list args) ++{ ++ vout_display_sys_t *sys = vd->sys; ++ ++ switch (query) ++ { ++ case VOUT_DISPLAY_HIDE_MOUSE: ++ sys->win->HideCursor(true); ++ return VLC_SUCCESS; ++ case VOUT_DISPLAY_CHANGE_DISPLAY_SIZE: ++ { ++ const vout_display_cfg_t *cfg = va_arg(args, const vout_display_cfg_t *); ++ if ((sys->resizeDisplayCount == 1 || sys->resizeDisplayCount == 2) && !cfg->is_fullscreen) { ++ sys->resizeDisplayCount++; ++ return VLC_EGENERIC; ++ } ++ sys->win->View()->ResizeBitmap(cfg->display.width, cfg->display.height); ++ if (cfg->is_fullscreen) { ++ vout_display_SendEventPicturesInvalid(vd); ++ return VLC_EGENERIC; ++ } else { ++ sys->win->ResizeTo(cfg->display.width - 1, cfg->display.height - 1); ++ } ++ vout_display_SendEventPicturesInvalid(vd); ++ sys->resizeDisplayCount++; ++ return VLC_SUCCESS; ++ } ++ case VOUT_DISPLAY_CHANGE_ZOOM: ++ case VOUT_DISPLAY_CHANGE_DISPLAY_FILLED: ++ case VOUT_DISPLAY_CHANGE_SOURCE_ASPECT: ++ { ++ const vout_display_cfg_t *cfg; ++ const video_format_t *source; ++ ++ if (query == VOUT_DISPLAY_CHANGE_SOURCE_ASPECT) { ++ source = va_arg(args, const video_format_t *); ++ cfg = vd->cfg; ++ } else { ++ source = &vd->source; ++ cfg = va_arg(args, const vout_display_cfg_t *); ++ } ++ vout_display_SendEventPicturesInvalid(vd); ++ return VLC_SUCCESS; ++ } ++ case VOUT_DISPLAY_RESET_PICTURES: ++ { ++ vout_display_place_t place; ++ video_format_t src; ++ ++ vout_display_PlacePicture(&place, &vd->source, vd->cfg, false); ++ video_format_ApplyRotation(&src, &vd->source); ++ ++ vd->fmt.i_width = src.i_width; ++ vd->fmt.i_height = src.i_height; ++ vd->fmt.i_visible_width = place.width; ++ vd->fmt.i_visible_height = place.height; ++ vd->fmt.i_x_offset = place.x; ++ vd->fmt.i_y_offset = place.y; ++ ++ if (sys->pool) ++ picture_pool_Release(sys->pool); ++ ++ sys->pool = NULL; ++ ++ return VLC_SUCCESS; ++ } ++ case VOUT_DISPLAY_CHANGE_SOURCE_CROP: ++ return VLC_EGENERIC; ++ case VOUT_DISPLAY_CHANGE_FULLSCREEN: ++ { ++ bool fs = va_arg(args, int); ++ sys->win->SetFullscreen(fs); ++ return VLC_SUCCESS; ++ } ++ ++ default: ++ msg_Err(vd, "Unsupported query"); ++ return VLC_EGENERIC; ++ } ++} ++ ++static void Manage( vout_display_t *vd ) ++{ ++ vout_display_sys_t *sys = vd->sys; ++ ++ while (BMessage* request = sys->win->Queue()->NextMessage()) { ++ switch (request->what) { ++ case B_MOUSE_WHEEL_CHANGED: ++ { ++ uint32 modifiers = 0; ++ request->FindInt32("modifiers", (int32 *)&modifiers); ++ ++ int code = 0; ++ ++ if (modifiers & B_SHIFT_KEY) ++ code |= KEY_MODIFIER_SHIFT; ++ if (modifiers & B_CONTROL_KEY) ++ code |= KEY_MODIFIER_ALT; ++ if (modifiers & B_COMMAND_KEY) ++ code |= KEY_MODIFIER_CTRL; ++ ++ float dx = request->FindFloat("be:wheel_delta_x"); ++ float dy = request->FindFloat("be:wheel_delta_y"); ++ if (dx > 0.1) ++ vout_display_SendEventKey(vd, KEY_MOUSEWHEELRIGHT | code); ++ if (dx < -0.1) ++ vout_display_SendEventKey(vd, KEY_MOUSEWHEELLEFT | code); ++ if (dy > 0.1) ++ vout_display_SendEventKey(vd, KEY_MOUSEWHEELDOWN | code); ++ if (dy < -0.1) ++ vout_display_SendEventKey(vd, KEY_MOUSEWHEELUP | code); ++ break; ++ } ++ case B_MOUSE_DOWN: ++ { ++ uint32 buttons = 0; ++ request->FindInt32("buttons", (int32 *)&buttons); ++ ++ for (int i = 0; platformHaikuMouseButtons[i].haiku != -1; i++) { ++ if (buttons & platformHaikuMouseButtons[i].haiku) ++ vout_display_SendEventMousePressed(vd, platformHaikuMouseButtons[i].vlc); ++ } ++ ++ sys->lastMouseButtons = buttons; ++ break; ++ } ++ case B_MOUSE_UP: ++ { ++ uint32 buttons = 0; ++ request->FindInt32("buttons", (int32 *)&buttons); ++ ++ for (int i = 0; platformHaikuMouseButtons[i].haiku != -1; i++) { ++ if (sys->lastMouseButtons & platformHaikuMouseButtons[i].haiku && !(buttons & platformHaikuMouseButtons[i].haiku)) ++ vout_display_SendEventMouseReleased(vd, platformHaikuMouseButtons[i].vlc); ++ } ++ break; ++ } ++ case B_MOUSE_MOVED: ++ { ++ uint32 transit; ++ request->FindInt32("be:transit", (int32*)&transit); ++ if (transit == B_ENTERED_VIEW || transit == B_INSIDE_VIEW) { ++ BPoint where; ++ request->FindPoint("be:view_where", &where); ++ vout_display_place_t place; ++ vout_display_PlacePicture(&place, &vd->source, vd->cfg, false); ++ where.x = (where.x - place.x) * vd->source.i_visible_width / place.width; ++ where.y = (where.y - place.y) * vd->source.i_visible_height / place.height; ++ vout_display_SendEventMouseMoved(vd, where.x, where.y); ++ sys->win->HideCursor(false); ++ } ++ break; ++ } ++ case B_ZOOM: ++ { ++// vout_display_SendEventFullscreen(vd, true, false); ++ vout_display_SendEventKey(vd, 'f'); ++ break; ++ } ++ case B_WINDOW_RESIZED: ++ { ++ int width = request->FindInt32("width"); ++ int height = request->FindInt32("height"); ++ vout_display_SendEventDisplaySize(vd, width + 1, height + 1); ++ break; ++ } ++ case B_UNMAPPED_KEY_DOWN: ++ case B_KEY_DOWN: ++ { ++ uint32 modifiers = request->FindInt32("modifiers"); ++ uint32 key = request->FindInt32("key"); ++ ++ int code = KEY_UNSET; ++ int i = 0; ++ while (platformHaikuScanCodes[i]) { ++ if ( key == platformHaikuScanCodes[i + 1]) { ++ code = platformHaikuScanCodes[i]; ++ break; ++ } ++ i += 2; ++ } ++ if (modifiers & B_SHIFT_KEY) ++ code |= KEY_MODIFIER_SHIFT; ++ if (modifiers & B_CONTROL_KEY) ++ code |= KEY_MODIFIER_ALT; ++ if (modifiers & B_COMMAND_KEY) ++ code |= KEY_MODIFIER_CTRL; ++ ++ if (code != KEY_UNSET) { ++ vout_display_SendEventKey(vd, code); ++ } ++ break; ++ } ++ default: ++ break; ++ } ++ delete request; ++ } ++} +diff --git a/src/Makefile.am b/src/Makefile.am +index 502990c..f1c1a85 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -411,6 +411,16 @@ libvlccore_la_SOURCES += \ + linux/dirs.c \ + linux/thread.c + else ++if HAVE_HAIKU ++libvlccore_la_SOURCES += \ ++ haiku/dirs.cpp \ ++ haiku/specific.c \ ++ posix/error.c \ ++ posix/netconf.c \ ++ posix/getaddrinfo.c \ ++ posix/thread.c ++libvlccore_la_LIBADD += -lgnu -lnetwork ++else + if HAVE_DARWIN + libvlccore_la_SOURCES += \ + darwin/dirs.c \ +@@ -444,6 +454,7 @@ endif + endif + endif + endif ++endif + + if ENABLE_SOUT + libvlccore_la_SOURCES += \ +diff --git a/src/haiku/dirs.cpp b/src/haiku/dirs.cpp +new file mode 100644 +index 0000000..712bf08 +--- /dev/null ++++ b/src/haiku/dirs.cpp +@@ -0,0 +1,83 @@ ++/***************************************************************************** ++ * dirs.c: XDG directories configuration ++ ***************************************************************************** ++ * Copyright (C) 2001-2007 VLC authors and VideoLAN ++ * Copyright © 2007-2009 Rémi Denis-Courmont ++ * ++ * Authors: Gildas Bazin ++ * ++ * This program 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. ++ * ++ * This program 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 this program; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. ++ *****************************************************************************/ ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#include ++ ++#include "../libvlc.h" ++#include "config/configuration.h" ++ ++#include ++#include ++ ++#include ++ ++char *config_GetDataDir (void) ++{ ++ return strdup (PKGDATADIR); ++} ++ ++char *config_GetLibDir (void) ++{ ++ return strdup (PKGLIBDIR); ++} ++ ++static char *config_GetHaikuDir (directory_which which, char *leaf = NULL) ++{ ++ char path[B_PATH_NAME_LENGTH]; ++ find_directory(which, 0, false, path, B_PATH_NAME_LENGTH); ++ if (leaf != NULL) { ++ strcat(path, "/"); ++ strcat(path, leaf); ++ } ++ return strdup (path); ++} ++ ++char *config_GetUserDir (vlc_userdir_t type) ++{ ++ switch (type) ++ { ++ case VLC_HOME_DIR: ++ break; ++ case VLC_CONFIG_DIR: ++ case VLC_DATA_DIR: ++ return config_GetHaikuDir (B_USER_SETTINGS_DIRECTORY, "vlc"); ++ case VLC_CACHE_DIR: ++ return config_GetHaikuDir (B_USER_CACHE_DIRECTORY, "vlc"); ++ ++ case VLC_DESKTOP_DIR: ++ return config_GetHaikuDir (B_DESKTOP_DIRECTORY); ++ case VLC_DOWNLOAD_DIR: ++ case VLC_TEMPLATES_DIR: ++ case VLC_PUBLICSHARE_DIR: ++ case VLC_DOCUMENTS_DIR: ++ case VLC_MUSIC_DIR: ++ case VLC_PICTURES_DIR: ++ case VLC_VIDEOS_DIR: ++ break; ++ } ++ return config_GetHaikuDir (B_USER_DIRECTORY); ++} +diff --git a/src/haiku/specific.c b/src/haiku/specific.c +new file mode 100644 +index 0000000..1c26497 +--- /dev/null ++++ b/src/haiku/specific.c +@@ -0,0 +1,35 @@ ++/***************************************************************************** ++ * specific.c: stubs for POSIX OS-specific initialization ++ ***************************************************************************** ++ * Copyright © 2008 Rémi Denis-Courmont ++ * ++ * This program 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. ++ * ++ * This program 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 this program; if not, write to the Free Software Foundation, ++ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. ++ *****************************************************************************/ ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#include ++#include "../libvlc.h" ++#include "../lib/libvlc_internal.h" ++ ++void system_Init (void) ++{ ++} ++ ++void system_Configure(libvlc_int_t *libvlc, int argc, const char *const argv[]) ++{ ++} +diff --git a/src/modules/bank.c b/src/modules/bank.c +index 2e67a0d..e927851 100644 +--- a/src/modules/bank.c ++++ b/src/modules/bank.c +@@ -172,6 +172,7 @@ static vlc_plugin_t *module_InitStatic(vlc_plugin_cb entry) + return lib; + } + ++/* Haiku bug #8288 + #if defined(__ELF__) || !HAVE_DYNAMIC_PLUGINS + # ifdef __GNUC__ + __attribute__((weak)) +@@ -192,9 +193,9 @@ static void module_InitStaticModules(void) + vlc_plugin_store(lib); + } + } +-#else ++#else */ + static void module_InitStaticModules(void) { } +-#endif ++//#endif + + #ifdef HAVE_DYNAMIC_PLUGINS + static const char vlc_entry_name[] = "vlc_entry" MODULE_SUFFIX; +diff --git a/src/network/io.c b/src/network/io.c +index 603624a..256030b 100644 +--- a/src/network/io.c ++++ b/src/network/io.c +@@ -192,7 +192,9 @@ int *net_Listen (vlc_object_t *p_this, const char *psz_host, + switch (ptr->ai_socktype) + { + case SOCK_STREAM: ++#ifdef SOCK_RDM + case SOCK_RDM: ++#endif + case SOCK_SEQPACKET: + #ifdef SOCK_DCCP + case SOCK_DCCP: +diff --git a/src/posix/error.c b/src/posix/error.c +index db51004..9ae11dd 100644 +--- a/src/posix/error.c ++++ b/src/posix/error.c +@@ -48,7 +48,7 @@ static const char *vlc_strerror_l(int errnum, const char *lname) + errno = saved_errno; + } + +- const char *buf = strerror_l(errnum, loc); ++ const char *buf = strerror(errnum); + + freelocale(loc); + return buf; +diff --git a/src/video_output/display.c b/src/video_output/display.c +index ba4dba0..49c7901 100644 +--- a/src/video_output/display.c ++++ b/src/video_output/display.c +@@ -341,7 +341,7 @@ typedef struct { + + bool ch_zoom; + vlc_rational_t zoom; +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + unsigned width_saved; + unsigned height_saved; + bool ch_fullscreen; +@@ -600,7 +600,7 @@ static void VoutDisplayEvent(vout_display_t *vd, int event, va_list args) + va_arg(args, const vlc_viewpoint_t *)); + break; + +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + case VOUT_DISPLAY_EVENT_FULLSCREEN: { + const int is_fullscreen = (int)va_arg(args, int); + const bool window_fullscreen = va_arg(args, int); +@@ -760,7 +760,7 @@ bool vout_ManageDisplay(vout_display_t *vd, bool allow_reset_pictures) + for (;;) { + + vlc_mutex_lock(&osys->lock); +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + bool ch_fullscreen = osys->ch_fullscreen; + bool is_fullscreen = osys->is_fullscreen; + osys->ch_fullscreen = false; +@@ -789,7 +789,7 @@ bool vout_ManageDisplay(vout_display_t *vd, bool allow_reset_pictures) + !reset_pictures && + osys->is_display_filled == osys->cfg.is_display_filled && + !osys->ch_zoom && +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + !ch_fullscreen && + !ch_wm_state && + #endif +@@ -806,7 +806,7 @@ bool vout_ManageDisplay(vout_display_t *vd, bool allow_reset_pictures) + } + + /* */ +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + if (ch_fullscreen) { + if (osys->window_fullscreen + || vout_display_Control(vd, VOUT_DISPLAY_CHANGE_FULLSCREEN, +@@ -826,7 +826,7 @@ bool vout_ManageDisplay(vout_display_t *vd, bool allow_reset_pictures) + + /* */ + if (ch_display_size) { +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + osys->width_saved = osys->cfg.display.width; + osys->height_saved = osys->cfg.display.height; + #endif +@@ -852,7 +852,7 @@ bool vout_ManageDisplay(vout_display_t *vd, bool allow_reset_pictures) + + vout_display_Control(vd, VOUT_DISPLAY_CHANGE_ZOOM, &osys->cfg); + } +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + /* */ + if (ch_wm_state) { + if (vout_display_Control(vd, VOUT_DISPLAY_CHANGE_WINDOW_STATE, wm_state)) { +@@ -1154,7 +1154,7 @@ static vout_display_t *DisplayNew(vout_thread_t *vout, + + osys->zoom.num = cfg->zoom.num; + osys->zoom.den = cfg->zoom.den; +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + osys->is_fullscreen = cfg->is_fullscreen; + osys->width_saved = cfg->display.width; + osys->height_saved = cfg->display.height; +@@ -1228,7 +1228,7 @@ void vout_DeleteDisplay(vout_display_t *vd, vout_display_state_t *state) + if (state) { + if (!osys->is_splitter) + state->cfg = osys->cfg; +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + state->wm_state = osys->wm_state; + #endif + state->sar = osys->sar_initial; +diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c +index d936d42..8b9a976 100644 +--- a/src/video_output/video_output.c ++++ b/src/video_output/video_output.c +@@ -570,7 +570,7 @@ void vout_ControlChangeViewpoint(vout_thread_t *vout, + static void VoutGetDisplayCfg(vout_thread_t *vout, vout_display_cfg_t *cfg, const char *title) + { + /* Load configuration */ +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + cfg->is_fullscreen = var_GetBool(vout, "fullscreen") + || var_GetBool(vout, "video-wallpaper"); + #endif +@@ -1363,7 +1363,7 @@ static void ThreadChangeFullscreen(vout_thread_t *vout, bool fullscreen) + { + vout_window_t *window = vout->p->window; + +-#if !defined(_WIN32) && !defined(__OS2__) ++#if !defined(_WIN32) && !defined(__OS2__) && !defined(__HAIKU__) + if (window != NULL) + vout_window_SetFullScreen(window, fullscreen); + #else +@@ -1383,7 +1383,7 @@ static void ThreadChangeWindowState(vout_thread_t *vout, unsigned state) + + if (window != NULL) + vout_window_SetState(window, state); +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + else /* FIXME: remove this event */ + if (vout->p->display.vd != NULL) + vout_display_SendWindowState(vout->p->display.vd, state); +@@ -1514,7 +1514,7 @@ static int ThreadStart(vout_thread_t *vout, vout_display_state_t *state) + if (!state) { + VoutGetDisplayCfg(vout, &state_default.cfg, vout->p->display.title); + +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + bool below = var_InheritBool(vout, "video-wallpaper"); + bool above = var_InheritBool(vout, "video-on-top"); + +@@ -1643,7 +1643,7 @@ static int ThreadReinit(vout_thread_t *vout, + + vout_ReinitInterlacingSupport(vout); + +-#if defined(_WIN32) || defined(__OS2__) ++#if defined(_WIN32) || defined(__OS2__) || defined(__HAIKU__) + if (!state.cfg.is_fullscreen) + #endif + { +diff --git a/src/video_output/window.c b/src/video_output/window.c +index ff482dc..fe3c06c 100644 +--- a/src/video_output/window.c ++++ b/src/video_output/window.c +@@ -79,7 +79,7 @@ vout_window_t *vout_window_New(vlc_object_t *obj, const char *module, + /* Hook for screensaver inhibition */ + if (var_InheritBool(obj, "disable-screensaver") && + (window->type == VOUT_WINDOW_TYPE_XID || window->type == VOUT_WINDOW_TYPE_HWND +- || window->type == VOUT_WINDOW_TYPE_WAYLAND)) ++ || window->type == VOUT_WINDOW_TYPE_WAYLAND || window->type == VOUT_WINDOW_TYPE_HAIKU)) + { + w->inhibit = vlc_inhibit_Create(VLC_OBJECT (window)); + if (w->inhibit != NULL) +-- +2.28.0 + + +From 753d2e8ac3eea065a6751bbfe48811aa192315b3 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Tue, 20 Oct 2020 18:53:09 +1000 +Subject: Add launcher for Haiku + + +diff --git a/haiku/VLCLauncher.cpp b/haiku/VLCLauncher.cpp +new file mode 100644 +index 0000000..37af2e8 +--- /dev/null ++++ b/haiku/VLCLauncher.cpp +@@ -0,0 +1,89 @@ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++class VLCLauncherApp : public BApplication { ++ public: ++ VLCLauncherApp(const char *signature, int argc, char **argv); ++ ~VLCLauncherApp() {}; ++ void RefsReceived(BMessage *pmsg); ++ virtual void ReadyToRun(); ++ BString GetVLCPath(void); ++ private: ++ BMessenger fTrackerMessenger; ++}; ++ ++VLCLauncherApp::VLCLauncherApp(const char *signature, int argc, char **argv) ++ : BApplication(signature) ++{ ++} ++ ++BString ++VLCLauncherApp::GetVLCPath(void) ++{ ++ app_info inf; ++ be_app->GetAppInfo(&inf); ++ BPath binPath = BPath(&(inf.ref)); ++ BPath appPath; ++ binPath.GetParent(&appPath); ++ appPath.Append("VLC"); ++ return appPath.Path(); ++} ++ ++void ++VLCLauncherApp::RefsReceived(BMessage *pmsg) ++{ ++ if (pmsg->HasMessenger("TrackerViewToken")) { ++ pmsg->FindMessenger("TrackerViewToken", &fTrackerMessenger); ++ } ++ ++ uint32 type; ++ int32 count; ++ status_t ret = pmsg->GetInfo("refs", &type, &count); ++ if (ret != B_OK || type != B_REF_TYPE) ++ return; ++ ++ BString commandLine = GetVLCPath(); ++ ++ entry_ref ref; ++ for (int32 i = 0; i < count; i++) { ++ if (pmsg->FindRef("refs", i, &ref) == B_OK) ++ { ++ BPath file=BPath(&ref); ++ commandLine += " \""; ++ commandLine += file.Path(); ++ commandLine += "\""; ++ } ++ } ++ commandLine += " &"; ++ system(commandLine.String()); ++ Quit(); ++} ++ ++void ++VLCLauncherApp::ReadyToRun() ++{ ++ BString commandLine = GetVLCPath(); ++ commandLine += " &"; ++ system(commandLine.String()); ++ Quit(); ++} ++ ++ ++int main(int argc, char **argv) ++{ ++ VLCLauncherApp application("application/x-vnd.vlc-launcher", argc, argv); ++ application.Run(); ++ return 0; ++} ++ ++ +-- +2.28.0 + diff --git a/media-video/vlc/vlc-2.2.8.recipe b/media-video/vlc/vlc-3.0.11.1.recipe similarity index 50% rename from media-video/vlc/vlc-2.2.8.recipe rename to media-video/vlc/vlc-3.0.11.1.recipe index 9cb64e20e..285722304 100644 --- a/media-video/vlc/vlc-2.2.8.recipe +++ b/media-video/vlc/vlc-3.0.11.1.recipe @@ -3,86 +3,68 @@ DESCRIPTION="VLC is a free and open source cross-platform multimedia player \ and framework that plays most multimedia files as well as DVDs, Audio CDs, \ VCDs, and various streaming protocols." HOMEPAGE="https://www.videolan.org/vlc/" -COPYRIGHT="1998-2017 VideoLAN" +COPYRIGHT="1998-2020 VideoLAN" LICENSE="GNU GPL v2" -REVISION="7" +REVISION="1" SOURCE_URI="https://download.videolan.org/pub/videolan/vlc/$portVersion/vlc-$portVersion.tar.xz" -CHECKSUM_SHA256="9bf046848fb56d93518881b39099b8288ee005d5ba0ddf705b6f6643b8d562ec" +CHECKSUM_SHA256="189311d28aa814f106a7b3645211ac52c0b3e2b9f4b348de2f63bab3218086b8" PATCHES="vlc-$portVersion.patchset" -ADDITIONAL_FILES="vlc.rdef.in" +ADDITIONAL_FILES=" + vlc.rdef.in + vlc_launcher.rdef.in + haikuicons.zip + " -ARCHITECTURES="!x86_gcc2 ?x86_64" -SECONDARY_ARCHITECTURES="?x86" +ARCHITECTURES="!x86_gcc2 x86_64" +SECONDARY_ARCHITECTURES="!x86" PROVIDES=" vlc$secondaryArchSuffix = $portVersion - cmd:cvlc$secondaryArchSuffix - cmd:nvlc$secondaryArchSuffix - cmd:qvlc$secondaryArchSuffix - cmd:rvlc$secondaryArchSuffix - cmd:vlc$secondaryArchSuffix - cmd:vlc_wrapper$secondaryArchSuffix - lib:libvlc$secondaryArchSuffix - lib:libvlccore$secondaryArchSuffix + app:VLC$secondaryArchSuffix = $portVersion + cmd:vlc = $portVersion " REQUIRES=" haiku$secondaryArchSuffix lib:liba52$secondaryArchSuffix - lib:libass$secondaryArchSuffix lib:libavcodec$secondaryArchSuffix lib:libavformat$secondaryArchSuffix lib:libavutil$secondaryArchSuffix lib:libbluray$secondaryArchSuffix - lib:libcaca$secondaryArchSuffix + lib:libcddb$secondaryArchSuffix lib:libdca$secondaryArchSuffix lib:libdvbpsi$secondaryArchSuffix + lib:libdvdcss$secondaryArchSuffix lib:libdvdnav$secondaryArchSuffix lib:libdvdread$secondaryArchSuffix lib:libebml$secondaryArchSuffix + lib:libenca$secondaryArchSuffix lib:libfaad$secondaryArchSuffix lib:libFLAC$secondaryArchSuffix - lib:libfluidsynth$secondaryArchSuffix lib:libfontconfig$secondaryArchSuffix lib:libfreetype$secondaryArchSuffix - lib:libfribidi$secondaryArchSuffix - lib:libgcrypt$secondaryArchSuffix lib:libGL$secondaryArchSuffix -# lib:libgnutls$secondaryArchSuffix - lib:libgpg_error$secondaryArchSuffix lib:libiconv$secondaryArchSuffix - lib:libidn$secondaryArchSuffix - lib:libintl$secondaryArchSuffix - lib:libixml$secondaryArchSuffix + lib:libintl$secondaryArchSuffix lib:libjpeg$secondaryArchSuffix - lib:liblua$secondaryArchSuffix lib:libmad$secondaryArchSuffix lib:libmatroska$secondaryArchSuffix lib:libmodplug$secondaryArchSuffix lib:libmpcdec$secondaryArchSuffix lib:libmpeg2$secondaryArchSuffix - lib:libmtp$secondaryArchSuffix - lib:libncursesw$secondaryArchSuffix lib:libogg$secondaryArchSuffix lib:libopus$secondaryArchSuffix lib:libpng16$secondaryArchSuffix - lib:libpostproc$secondaryArchSuffix lib:libQt5Core$secondaryArchSuffix lib:libQt5Gui$secondaryArchSuffix lib:libQt5Widgets$secondaryArchSuffix lib:libsamplerate$secondaryArchSuffix -# lib:libschroedinger_1.0$secondaryArchSuffix - lib:libSDL_1.2$secondaryArchSuffix - lib:libSDL_image_1.2$secondaryArchSuffix -# lib:libshout$secondaryArchSuffix - lib:libsmbclient$secondaryArchSuffix lib:libspeex$secondaryArchSuffix - lib:libssh2$secondaryArchSuffix lib:libswscale$secondaryArchSuffix lib:libtag$secondaryArchSuffix lib:libtheoradec$secondaryArchSuffix lib:libtheoraenc$secondaryArchSuffix lib:libtwolame$secondaryArchSuffix - lib:libupnp$secondaryArchSuffix +# lib:libupnp$secondaryArchSuffix # dedlock when scan upnp devices lib:libvorbis$secondaryArchSuffix lib:libvorbisenc$secondaryArchSuffix lib:libvpx$secondaryArchSuffix @@ -92,24 +74,13 @@ REQUIRES=" lib:libz$secondaryArchSuffix " -PROVIDES_devel=" - vlc${secondaryArchSuffix}_devel = $portVersion - devel:libvlc$secondaryArchSuffix = 5.5.0 compat >= 5 - devel:libvlccore$secondaryArchSuffix = 8.8.0 compat >= 8 - " -REQUIRES_devel=" - haiku${secondaryArchSuffix}_devel - " - BUILD_REQUIRES=" haiku${secondaryArchSuffix}_devel - devel:liba52$secondaryArchSuffix - devel:libass$secondaryArchSuffix # crashes vlc-cache-gen - devel:libavcodec$secondaryArchSuffix >= 58 - devel:libavformat$secondaryArchSuffix >= 58 - devel:libavutil$secondaryArchSuffix >= 56 + a52dec${secondaryArchSuffix}_devel + devel:libavcodec$secondaryArchSuffix + devel:libavformat$secondaryArchSuffix + devel:libavutil$secondaryArchSuffix devel:libbluray$secondaryArchSuffix - devel:libcaca$secondaryArchSuffix devel:libcddb$secondaryArchSuffix devel:libdca$secondaryArchSuffix devel:libdvbpsi$secondaryArchSuffix @@ -120,99 +91,93 @@ BUILD_REQUIRES=" devel:libenca$secondaryArchSuffix devel:libfaad$secondaryArchSuffix devel:libflac$secondaryArchSuffix - devel:libfluidsynth$secondaryArchSuffix # crashes vlc-cache-gen devel:libfontconfig$secondaryArchSuffix devel:libfreetype$secondaryArchSuffix - devel:libfribidi$secondaryArchSuffix - devel:libgcrypt$secondaryArchSuffix devel:libgl$secondaryArchSuffix -# devel:libgnutls$secondaryArchSuffix # crashes vlc on start - devel:libgpg_error$secondaryArchSuffix - devel:libharfbuzz$secondaryArchSuffix devel:libiconv$secondaryArchSuffix - devel:libidn$secondaryArchSuffix devel:libjpeg$secondaryArchSuffix - devel:liblua52$secondaryArchSuffix devel:libmad$secondaryArchSuffix devel:libmatroska$secondaryArchSuffix devel:libmodplug$secondaryArchSuffix devel:libmpcdec$secondaryArchSuffix devel:libmpeg2$secondaryArchSuffix - devel:libmtp$secondaryArchSuffix devel:libogg$secondaryArchSuffix devel:libopus$secondaryArchSuffix - devel:libpng$secondaryArchSuffix - devel:libpthread_stubs$secondaryArchSuffix - devel:libQt5Core$secondaryArchSuffix >= 5.7 - devel:libQt5Gui$secondaryArchSuffix >= 5.7 - devel:libQt5Widgets$secondaryArchSuffix >= 5.7 + devel:libpng16$secondaryArchSuffix + devel:libQt5Core$secondaryArchSuffix devel:libsamplerate$secondaryArchSuffix -# devel:libschroedinger_1.0$secondaryArchSuffix # fix libschroedinger.pc - devel:libsdl_1.2$secondaryArchSuffix - devel:libsdl_image_1.2$secondaryArchSuffix -# devel:libshout$secondaryArchSuffix # crashes vlc on quit. Haiku #8600 - devel:libsmbclient$secondaryArchSuffix devel:libspeex$secondaryArchSuffix - devel:libssh2$secondaryArchSuffix devel:libssl$secondaryArchSuffix - devel:libswscale$secondaryArchSuffix >= 5 + devel:libswscale$secondaryArchSuffix devel:libtag$secondaryArchSuffix devel:libtheora$secondaryArchSuffix devel:libtwolame$secondaryArchSuffix - devel:libupnp$secondaryArchSuffix +# devel:libupnp$secondaryArchSuffix # dedlock when scan upnp devices devel:libvorbis$secondaryArchSuffix devel:libvpx$secondaryArchSuffix devel:libx264$secondaryArchSuffix devel:libx265$secondaryArchSuffix - devel:libxcb$secondaryArchSuffix devel:libxml2$secondaryArchSuffix devel:libz$secondaryArchSuffix - devel:live555$secondaryArchSuffix " + BUILD_PREREQUIRES=" cmd:aclocal cmd:autoreconf - cmd:g++$secondaryArchSuffix + cmd:gcc$secondaryArchSuffix cmd:gettext$secondaryArchSuffix cmd:libtoolize$secondaryArchSuffix cmd:make cmd:pkg_config$secondaryArchSuffix cmd:xargs + cmd:yacc " -PATCH() -{ - # Remove unnecessary warnings about unimplemented pragmas on gcc for now. - # config.h:798: warning: ignoring #pragma STDC FENV_ACCESS [-Wunknown-pragmas] - # config.h:799: warning: ignoring #pragma STDC FP_CONTRACT [-Wunknown-pragmas] - # doesn't work for some reason - sed -i 's/ifndef __FAST_MATH__/if 0/g' configure.ac || die - - # _FORTIFY_SOURCE is set to 2 by default on Haiku, remove redefine warnings. - sed -i '/_FORTIFY_SOURCE.*, 2,/d' configure.ac || die -} - BUILD() { + unzip -o $portDir/additional-files/haikuicons.zip -d $sourceDir + autoreconf - runConfigure ./configure --disable-rpath \ + + export BUILDCC=gcc + export CFLAGS="-lgnu -lnetwork" + + runConfigure ./configure \ + --prefix=$appsDir/VLC \ + --bindir=$appsDir/VLC \ + --libdir=$appsDir/VLC/lib \ + --datarootdir=$appsDir/VLC/data \ + --datadir=$appsDir/VLC/data \ + --disable-rpath \ --with-default-font=`finddir B_SYSTEM_FONTS_DIRECTORY`/ttfonts/NotoMono-Regular.ttf \ --with-default-font-family=Sans \ - --with-default-monospace-font-family=Monospace --disable-update-check \ - --disable-dependency-tracking --enable-run-as-root \ - --disable-update-check --enable-fast-install --disable-dependency-tracking -# --bindir=$appsDir/VLC --libdir=$appsDir/VLC/plugins + --with-default-monospace-font-family=Monospace \ + --disable-dependency-tracking \ + --enable-run-as-root \ + --disable-update-check \ + --enable-fast-install \ + --disable-lua + make $jobArgs + + cd haiku + gcc VLCLauncher.cpp -lbe -o "VLC media player" } INSTALL() { make install-strip - rm -rf $dataDir/{applications,icons,kde4,vlc} + rm -rf $appsDir/VLC/data/{applications,icons,kde4,vlc} + rm -rf $appsDir/VLC/{cvlc,qvlc,rvlc,vlc-wrapper} + rm -rf $developDir $manDir $docDir $appsDir/VLC/lib/pkgconfig + find $appsDir/VLC/lib -name '*.a' -delete + find $appsDir/VLC/lib -name '*.la' -delete - # Punt useless libtool's .la files - find $libDir -name '*.la' -delete + cp "haiku/VLC media player" $appsDir/VLC + mv $appsDir/VLC/vlc $appsDir/VLC/VLC + mkdir -p $prefix/bin + ln -s $appsDir/VLC/VLC $prefix/bin/vlc local APP_SIGNATURE="application/x-vnd.vlc" local MAJOR="`echo "$portVersion" | cut -d. -f1`" @@ -227,21 +192,18 @@ INSTALL() -e "s|@LONG_INFO@|$LONG_INFO|" \ $portDir/additional-files/vlc.rdef.in > vlc.rdef - addResourcesToBinaries vlc.rdef $binDir/vlc - addAppDeskbarSymlink $binDir/vlc "VLC media player" + addResourcesToBinaries vlc.rdef $appsDir/VLC/VLC - fixPkgconfig - mkdir -p $prefix/develop/lib${secondaryArchSuffix/_//} - # TODO: fix libvlc.pc location - # mv -f $prefix/lib/pkgconfig $prefix/develop/lib${secondaryArchSuffix/_//}/ + local APP_SIGNATURE="application/x-vnd.vlc-launcher" + sed \ + -e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \ + -e "s|@MAJOR@|$MAJOR|" \ + -e "s|@MIDDLE@|$MIDDLE|" \ + -e "s|@MINOR@|$MINOR|" \ + -e "s|@LONG_INFO@|$LONG_INFO|" \ + $portDir/additional-files/vlc_launcher.rdef.in > vlc_launcher.rdef - prepareInstalledDevelLibs \ - libvlc libvlccore - packageEntries devel \ - $developDir -} - -TEST() -{ - make check + addResourcesToBinaries vlc_launcher.rdef "$appsDir/VLC/VLC media player" + + addAppDeskbarSymlink $appsDir/VLC/VLC "VLC media player" }