Remove xine
This commit is contained in:
parent
1773283456
commit
07553476d4
|
@ -80,7 +80,6 @@ commands:
|
||||||
libpulse-devel
|
libpulse-devel
|
||||||
gstreamer-devel
|
gstreamer-devel
|
||||||
gstreamer-plugins-base-devel
|
gstreamer-plugins-base-devel
|
||||||
libxine-devel
|
|
||||||
vlc-devel
|
vlc-devel
|
||||||
libQt5Core-devel
|
libQt5Core-devel
|
||||||
libQt5Gui-devel
|
libQt5Gui-devel
|
||||||
|
|
|
@ -38,7 +38,6 @@ jobs:
|
||||||
libpulse-devel
|
libpulse-devel
|
||||||
gstreamer-devel
|
gstreamer-devel
|
||||||
gstreamer-plugins-base-devel
|
gstreamer-plugins-base-devel
|
||||||
libxine-devel
|
|
||||||
vlc-devel
|
vlc-devel
|
||||||
libQt5Core-devel
|
libQt5Core-devel
|
||||||
libQt5Gui-devel
|
libQt5Gui-devel
|
||||||
|
@ -109,7 +108,6 @@ jobs:
|
||||||
libpulse-devel
|
libpulse-devel
|
||||||
gstreamer-devel
|
gstreamer-devel
|
||||||
gstreamer-plugins-base-devel
|
gstreamer-plugins-base-devel
|
||||||
libxine-devel
|
|
||||||
vlc-devel
|
vlc-devel
|
||||||
libQt5Core-devel
|
libQt5Core-devel
|
||||||
libQt5Gui-devel
|
libQt5Gui-devel
|
||||||
|
@ -188,7 +186,6 @@ jobs:
|
||||||
libpulse-devel
|
libpulse-devel
|
||||||
gstreamer-devel
|
gstreamer-devel
|
||||||
gstreamer-plugins-base-devel
|
gstreamer-plugins-base-devel
|
||||||
libxine-devel
|
|
||||||
vlc-devel
|
vlc-devel
|
||||||
libQt5Core-devel
|
libQt5Core-devel
|
||||||
libQt5Gui-devel
|
libQt5Gui-devel
|
||||||
|
@ -269,7 +266,6 @@ jobs:
|
||||||
libpulse-devel
|
libpulse-devel
|
||||||
gstreamer-devel
|
gstreamer-devel
|
||||||
gstreamer-plugins-base-devel
|
gstreamer-plugins-base-devel
|
||||||
libxine-devel
|
|
||||||
vlc-devel
|
vlc-devel
|
||||||
libQt5Core-devel
|
libQt5Core-devel
|
||||||
libQt5Gui-devel
|
libQt5Gui-devel
|
||||||
|
@ -1036,7 +1032,6 @@ jobs:
|
||||||
-DENABLE_LIBGPOD=OFF
|
-DENABLE_LIBGPOD=OFF
|
||||||
-DENABLE_IMOBILEDEVICE=OFF
|
-DENABLE_IMOBILEDEVICE=OFF
|
||||||
-DENABLE_LIBMTP=OFF
|
-DENABLE_LIBMTP=OFF
|
||||||
-DENABLE_XINE=OFF
|
|
||||||
-DProtobuf_PROTOC_EXECUTABLE=/usr/src/strawberry-mxe/usr/x86_64-pc-linux-gnu/bin/protoc
|
-DProtobuf_PROTOC_EXECUTABLE=/usr/src/strawberry-mxe/usr/x86_64-pc-linux-gnu/bin/protoc
|
||||||
|
|
||||||
- name: Run Make
|
- name: Run Make
|
||||||
|
@ -1049,7 +1044,7 @@ jobs:
|
||||||
|
|
||||||
- name: Create directories
|
- name: Create directories
|
||||||
working-directory: build
|
working-directory: build
|
||||||
run: mkdir -p gio-modules platforms sqldrivers imageformats styles gstreamer-plugins xine-plugins nsisplugins
|
run: mkdir -p gio-modules platforms sqldrivers imageformats styles gstreamer-plugins nsisplugins
|
||||||
|
|
||||||
- name: Copy GIO modules
|
- name: Copy GIO modules
|
||||||
working-directory: build
|
working-directory: build
|
||||||
|
|
|
@ -118,7 +118,6 @@ pkg_check_modules(GSTREAMER_AUDIO gstreamer-audio-1.0)
|
||||||
pkg_check_modules(GSTREAMER_APP gstreamer-app-1.0)
|
pkg_check_modules(GSTREAMER_APP gstreamer-app-1.0)
|
||||||
pkg_check_modules(GSTREAMER_TAG gstreamer-tag-1.0)
|
pkg_check_modules(GSTREAMER_TAG gstreamer-tag-1.0)
|
||||||
pkg_check_modules(GSTREAMER_PBUTILS gstreamer-pbutils-1.0)
|
pkg_check_modules(GSTREAMER_PBUTILS gstreamer-pbutils-1.0)
|
||||||
pkg_check_modules(LIBXINE libxine)
|
|
||||||
pkg_check_modules(LIBVLC libvlc)
|
pkg_check_modules(LIBVLC libvlc)
|
||||||
pkg_check_modules(SQLITE REQUIRED sqlite3>=3.9)
|
pkg_check_modules(SQLITE REQUIRED sqlite3>=3.9)
|
||||||
pkg_check_modules(LIBPULSE libpulse)
|
pkg_check_modules(LIBPULSE libpulse)
|
||||||
|
@ -258,10 +257,6 @@ optional_component(GSTREAMER ON "Engine: GStreamer backend"
|
||||||
DEPENDS "gstreamer-pbutils-1.0" GSTREAMER_PBUTILS_FOUND
|
DEPENDS "gstreamer-pbutils-1.0" GSTREAMER_PBUTILS_FOUND
|
||||||
)
|
)
|
||||||
|
|
||||||
optional_component(XINE ON "Engine: Xine backend"
|
|
||||||
DEPENDS "libxine" LIBXINE_FOUND
|
|
||||||
)
|
|
||||||
|
|
||||||
optional_component(VLC ON "Engine: VLC backend"
|
optional_component(VLC ON "Engine: VLC backend"
|
||||||
DEPENDS "libvlc" LIBVLC_FOUND
|
DEPENDS "libvlc" LIBVLC_FOUND
|
||||||
)
|
)
|
||||||
|
@ -401,8 +396,8 @@ add_custom_target(uninstall
|
||||||
|
|
||||||
# Show a summary of what we have enabled
|
# Show a summary of what we have enabled
|
||||||
summary_show()
|
summary_show()
|
||||||
if(NOT HAVE_GSTREAMER AND NOT HAVE_XINE AND NOT HAVE_VLC)
|
if(NOT HAVE_GSTREAMER AND NOT HAVE_VLC)
|
||||||
message(FATAL_ERROR "You need to have either GStreamer, Xine or VLC to compile!")
|
message(FATAL_ERROR "You need to have either GStreamer or VLC to compile!")
|
||||||
elseif(NOT HAVE_GSTREAMER)
|
elseif(NOT HAVE_GSTREAMER)
|
||||||
message(WARNING "GStreamer is the only engine that is fully implemented. Using other engines is possible but not recommended.")
|
message(WARNING "GStreamer is the only engine that is fully implemented. Using other engines is possible but not recommended.")
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -70,7 +70,7 @@ To build Strawberry from source you need the following installed on your system
|
||||||
* [ALSA library (linux)](https://www.alsa-project.org/)
|
* [ALSA library (linux)](https://www.alsa-project.org/)
|
||||||
* [DBus (linux)](https://www.freedesktop.org/wiki/Software/dbus/)
|
* [DBus (linux)](https://www.freedesktop.org/wiki/Software/dbus/)
|
||||||
* [PulseAudio (linux optional)](https://www.freedesktop.org/wiki/Software/PulseAudio/?)
|
* [PulseAudio (linux optional)](https://www.freedesktop.org/wiki/Software/PulseAudio/?)
|
||||||
* [GStreamer](https://gstreamer.freedesktop.org/), [Xine](https://www.xine-project.org) or [VLC](https://www.videolan.org)
|
* [GStreamer](https://gstreamer.freedesktop.org/) or [VLC](https://www.videolan.org)
|
||||||
* [GnuTLS](https://www.gnutls.org/)
|
* [GnuTLS](https://www.gnutls.org/)
|
||||||
|
|
||||||
Optional dependencies:
|
Optional dependencies:
|
||||||
|
@ -81,7 +81,7 @@ Optional dependencies:
|
||||||
* iPhone, iPod Touch, iPad and Apple TV devices: [libimobiledevice, libplist and libusbmuxd](https://www.libimobiledevice.org/)
|
* iPhone, iPod Touch, iPad and Apple TV devices: [libimobiledevice, libplist and libusbmuxd](https://www.libimobiledevice.org/)
|
||||||
* Moodbar: [fftw3](http://www.fftw.org/)
|
* Moodbar: [fftw3](http://www.fftw.org/)
|
||||||
|
|
||||||
Either GStreamer, Xine or VLC engine is required, but only GStreamer is fully implemented so far.
|
Either GStreamer or VLC engine is required, but only GStreamer is fully implemented so far.
|
||||||
You should also install the gstreamer plugins base and good, and optionally bad and ugly.
|
You should also install the gstreamer plugins base and good, and optionally bad and ugly.
|
||||||
|
|
||||||
### :wrench: Compiling from source
|
### :wrench: Compiling from source
|
||||||
|
|
|
@ -81,7 +81,6 @@
|
||||||
<file>icons/128x128/view-refresh.png</file>
|
<file>icons/128x128/view-refresh.png</file>
|
||||||
<file>icons/128x128/library-music.png</file>
|
<file>icons/128x128/library-music.png</file>
|
||||||
<file>icons/128x128/vlc.png</file>
|
<file>icons/128x128/vlc.png</file>
|
||||||
<file>icons/128x128/xine.png</file>
|
|
||||||
<file>icons/128x128/zoom-in.png</file>
|
<file>icons/128x128/zoom-in.png</file>
|
||||||
<file>icons/128x128/zoom-out.png</file>
|
<file>icons/128x128/zoom-out.png</file>
|
||||||
<file>icons/128x128/scrobble.png</file>
|
<file>icons/128x128/scrobble.png</file>
|
||||||
|
@ -172,7 +171,6 @@
|
||||||
<file>icons/64x64/view-refresh.png</file>
|
<file>icons/64x64/view-refresh.png</file>
|
||||||
<file>icons/64x64/library-music.png</file>
|
<file>icons/64x64/library-music.png</file>
|
||||||
<file>icons/64x64/vlc.png</file>
|
<file>icons/64x64/vlc.png</file>
|
||||||
<file>icons/64x64/xine.png</file>
|
|
||||||
<file>icons/64x64/zoom-in.png</file>
|
<file>icons/64x64/zoom-in.png</file>
|
||||||
<file>icons/64x64/zoom-out.png</file>
|
<file>icons/64x64/zoom-out.png</file>
|
||||||
<file>icons/64x64/scrobble.png</file>
|
<file>icons/64x64/scrobble.png</file>
|
||||||
|
@ -267,7 +265,6 @@
|
||||||
<file>icons/48x48/view-refresh.png</file>
|
<file>icons/48x48/view-refresh.png</file>
|
||||||
<file>icons/48x48/library-music.png</file>
|
<file>icons/48x48/library-music.png</file>
|
||||||
<file>icons/48x48/vlc.png</file>
|
<file>icons/48x48/vlc.png</file>
|
||||||
<file>icons/48x48/xine.png</file>
|
|
||||||
<file>icons/48x48/zoom-in.png</file>
|
<file>icons/48x48/zoom-in.png</file>
|
||||||
<file>icons/48x48/zoom-out.png</file>
|
<file>icons/48x48/zoom-out.png</file>
|
||||||
<file>icons/48x48/scrobble.png</file>
|
<file>icons/48x48/scrobble.png</file>
|
||||||
|
@ -362,7 +359,6 @@
|
||||||
<file>icons/32x32/view-refresh.png</file>
|
<file>icons/32x32/view-refresh.png</file>
|
||||||
<file>icons/32x32/library-music.png</file>
|
<file>icons/32x32/library-music.png</file>
|
||||||
<file>icons/32x32/vlc.png</file>
|
<file>icons/32x32/vlc.png</file>
|
||||||
<file>icons/32x32/xine.png</file>
|
|
||||||
<file>icons/32x32/zoom-in.png</file>
|
<file>icons/32x32/zoom-in.png</file>
|
||||||
<file>icons/32x32/zoom-out.png</file>
|
<file>icons/32x32/zoom-out.png</file>
|
||||||
<file>icons/32x32/scrobble.png</file>
|
<file>icons/32x32/scrobble.png</file>
|
||||||
|
@ -457,7 +453,6 @@
|
||||||
<file>icons/22x22/view-refresh.png</file>
|
<file>icons/22x22/view-refresh.png</file>
|
||||||
<file>icons/22x22/library-music.png</file>
|
<file>icons/22x22/library-music.png</file>
|
||||||
<file>icons/22x22/vlc.png</file>
|
<file>icons/22x22/vlc.png</file>
|
||||||
<file>icons/22x22/xine.png</file>
|
|
||||||
<file>icons/22x22/zoom-in.png</file>
|
<file>icons/22x22/zoom-in.png</file>
|
||||||
<file>icons/22x22/zoom-out.png</file>
|
<file>icons/22x22/zoom-out.png</file>
|
||||||
<file>icons/22x22/scrobble.png</file>
|
<file>icons/22x22/scrobble.png</file>
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 8.3 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.3 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 3.5 KiB |
Binary file not shown.
Before Width: | Height: | Size: 5.5 KiB |
Binary file not shown.
Before Width: | Height: | Size: 8.3 KiB |
|
@ -213,21 +213,6 @@ Copyright: 2017, 2018, Jonas Kvinge <jonas@jkvinge.net>
|
||||||
2003-2005, Mark Kretschmann <markey@web.de>
|
2003-2005, Mark Kretschmann <markey@web.de>
|
||||||
License: GPL-2+
|
License: GPL-2+
|
||||||
|
|
||||||
Files: src/engine/xineengine.cpp
|
|
||||||
src/engine/xineengine.h
|
|
||||||
Copyright: 2017, 2018, Jonas Kvinge <jonas@jkvinge.net>
|
|
||||||
2005, Ian Monroe <ian@monroe.nu>
|
|
||||||
2005, Christophe Thommeret <hftom@free.fr>
|
|
||||||
2005, 2006, Mark Kretschmann <markey@web.de>
|
|
||||||
2004, 2005, Max Howell <max.howell@methylblue.com>
|
|
||||||
2003, 2004, J. Kofler <kaffeine@gmx.net>
|
|
||||||
License: GPL-2+
|
|
||||||
|
|
||||||
Files: src/engine/xinescope.c
|
|
||||||
src/engine/xinescope.h
|
|
||||||
Copyright: 2004, Max Howell <max.howell@methylblue.com>
|
|
||||||
License: GPL-2+
|
|
||||||
|
|
||||||
Files: src/widgets/fancytabwidget.cpp
|
Files: src/widgets/fancytabwidget.cpp
|
||||||
src/widgets/fancytabwidget.h
|
src/widgets/fancytabwidget.h
|
||||||
Copyright: 2018, Vikram Ambrose <ambroseworks@gmail.com>
|
Copyright: 2018, Vikram Ambrose <ambroseworks@gmail.com>
|
||||||
|
|
|
@ -154,12 +154,6 @@ class InstallNameToolError(Error):
|
||||||
class CouldNotFindGstreamerPluginError(Error):
|
class CouldNotFindGstreamerPluginError(Error):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class CouldNotFindXinePluginError(Error):
|
|
||||||
pass
|
|
||||||
|
|
||||||
class CouldNotFindVLCPluginError(Error):
|
|
||||||
pass
|
|
||||||
|
|
||||||
if len(sys.argv) < 2:
|
if len(sys.argv) < 2:
|
||||||
print 'Usage: %s <bundle.app>' % sys.argv[0]
|
print 'Usage: %s <bundle.app>' % sys.argv[0]
|
||||||
|
|
||||||
|
@ -433,15 +427,6 @@ def FixFrameworkInstallPath(library_path, library):
|
||||||
FixInstallPath(library_path, library, new_path)
|
FixInstallPath(library_path, library, new_path)
|
||||||
|
|
||||||
|
|
||||||
def FindXinePlugin(name):
|
|
||||||
for path in XINEPLUGIN_SEARCH_PATH:
|
|
||||||
if os.path.exists(path):
|
|
||||||
for dir, dirs, files in os.walk(path):
|
|
||||||
if name in files:
|
|
||||||
return os.path.join(dir, name)
|
|
||||||
raise CouldNotFindXinePluginError(name)
|
|
||||||
|
|
||||||
|
|
||||||
def FindQtPlugin(name):
|
def FindQtPlugin(name):
|
||||||
for path in QT_PLUGINS_SEARCH_PATH:
|
for path in QT_PLUGINS_SEARCH_PATH:
|
||||||
if os.path.exists(path):
|
if os.path.exists(path):
|
||||||
|
|
|
@ -23,7 +23,6 @@ depends=(
|
||||||
gstreamer
|
gstreamer
|
||||||
gst-plugins-base
|
gst-plugins-base
|
||||||
gst-plugins-good
|
gst-plugins-good
|
||||||
xine-lib
|
|
||||||
vlc
|
vlc
|
||||||
chromaprint
|
chromaprint
|
||||||
libgpod
|
libgpod
|
||||||
|
|
|
@ -73,7 +73,6 @@ BuildRequires: pkgconfig(libmtp)
|
||||||
BuildRequires: pkgconfig(libnotify)
|
BuildRequires: pkgconfig(libnotify)
|
||||||
BuildRequires: pkgconfig(libudf)
|
BuildRequires: pkgconfig(libudf)
|
||||||
%if 0%{?suse_version} || 0%{?fedora_version}
|
%if 0%{?suse_version} || 0%{?fedora_version}
|
||||||
BuildRequires: pkgconfig(libxine)
|
|
||||||
BuildRequires: pkgconfig(libvlc)
|
BuildRequires: pkgconfig(libvlc)
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
|
|
@ -99,7 +99,6 @@ parts:
|
||||||
- libqt5x11extras5-dev
|
- libqt5x11extras5-dev
|
||||||
- libgstreamer1.0-dev
|
- libgstreamer1.0-dev
|
||||||
- libgstreamer-plugins-base1.0-dev
|
- libgstreamer-plugins-base1.0-dev
|
||||||
- libxine2-dev
|
|
||||||
- libvlc-dev
|
- libvlc-dev
|
||||||
- libcdio-dev
|
- libcdio-dev
|
||||||
- libgpod-dev
|
- libgpod-dev
|
||||||
|
@ -135,7 +134,6 @@ parts:
|
||||||
- libimobiledevice6
|
- libimobiledevice6
|
||||||
- libplist3
|
- libplist3
|
||||||
- libusbmuxd4
|
- libusbmuxd4
|
||||||
- libxine2
|
|
||||||
- libvlc5
|
- libvlc5
|
||||||
- libvlccore9
|
- libvlccore9
|
||||||
- libtag1v5
|
- libtag1v5
|
||||||
|
@ -144,7 +142,6 @@ parts:
|
||||||
- libx11-6
|
- libx11-6
|
||||||
- libxcomposite1
|
- libxcomposite1
|
||||||
- libxcursor1
|
- libxcursor1
|
||||||
- libxinerama1
|
|
||||||
- libxrandr2
|
- libxrandr2
|
||||||
- libdb5.3
|
- libdb5.3
|
||||||
- libglu1
|
- libglu1
|
||||||
|
|
|
@ -533,12 +533,6 @@ optional_source(HAVE_GSTREAMER
|
||||||
HEADERS engine/gststartup.h engine/gstengine.h engine/gstenginepipeline.h engine/gstelementdeleter.h
|
HEADERS engine/gststartup.h engine/gstengine.h engine/gstenginepipeline.h engine/gstelementdeleter.h
|
||||||
)
|
)
|
||||||
|
|
||||||
# Xine
|
|
||||||
optional_source(HAVE_XINE
|
|
||||||
SOURCES engine/xineengine.cpp engine/xinescope.c
|
|
||||||
HEADERS engine/xineengine.h
|
|
||||||
)
|
|
||||||
|
|
||||||
# VLC
|
# VLC
|
||||||
optional_source(HAVE_VLC
|
optional_source(HAVE_VLC
|
||||||
SOURCES engine/vlcengine.cpp
|
SOURCES engine/vlcengine.cpp
|
||||||
|
@ -944,10 +938,6 @@ if(HAVE_GSTREAMER)
|
||||||
)
|
)
|
||||||
endif(HAVE_GSTREAMER)
|
endif(HAVE_GSTREAMER)
|
||||||
|
|
||||||
if(HAVE_XINE)
|
|
||||||
link_directories(${LIBXINE_LIBRARY_DIRS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(HAVE_VLC)
|
if(HAVE_VLC)
|
||||||
link_directories(${LIBVLC_LIBRARY_DIRS})
|
link_directories(${LIBVLC_LIBRARY_DIRS})
|
||||||
endif()
|
endif()
|
||||||
|
@ -1067,11 +1057,6 @@ if(HAVE_MOODBAR)
|
||||||
target_link_libraries(strawberry_lib PRIVATE gstmoodbar)
|
target_link_libraries(strawberry_lib PRIVATE gstmoodbar)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(HAVE_XINE)
|
|
||||||
target_include_directories(strawberry_lib SYSTEM PRIVATE ${LIBXINE_INCLUDE_DIRS})
|
|
||||||
target_link_libraries(strawberry_lib PRIVATE ${LIBXINE_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(HAVE_VLC)
|
if(HAVE_VLC)
|
||||||
target_include_directories(strawberry_lib SYSTEM PRIVATE ${LIBVLC_INCLUDE_DIRS})
|
target_include_directories(strawberry_lib SYSTEM PRIVATE ${LIBVLC_INCLUDE_DIRS})
|
||||||
target_link_libraries(strawberry_lib PRIVATE ${LIBVLC_LIBRARIES})
|
target_link_libraries(strawberry_lib PRIVATE ${LIBVLC_LIBRARIES})
|
||||||
|
|
|
@ -99,7 +99,7 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent)
|
||||||
|
|
||||||
void AnalyzerContainer::mouseReleaseEvent(QMouseEvent *e) {
|
void AnalyzerContainer::mouseReleaseEvent(QMouseEvent *e) {
|
||||||
|
|
||||||
if (engine_->type() != Engine::EngineType::GStreamer && engine_->type() != Engine::EngineType::Xine) return;
|
if (engine_->type() != Engine::EngineType::GStreamer) return;
|
||||||
|
|
||||||
if (e->button() == Qt::RightButton) {
|
if (e->button() == Qt::RightButton) {
|
||||||
context_menu_->popup(e->globalPos());
|
context_menu_->popup(e->globalPos());
|
||||||
|
|
|
@ -43,7 +43,6 @@
|
||||||
|
|
||||||
#cmakedefine HAVE_GSTREAMER
|
#cmakedefine HAVE_GSTREAMER
|
||||||
#cmakedefine HAVE_VLC
|
#cmakedefine HAVE_VLC
|
||||||
#cmakedefine HAVE_XINE
|
|
||||||
|
|
||||||
#cmakedefine HAVE_SUBSONIC
|
#cmakedefine HAVE_SUBSONIC
|
||||||
#cmakedefine HAVE_TIDAL
|
#cmakedefine HAVE_TIDAL
|
||||||
|
|
|
@ -129,7 +129,6 @@ static const QMap<QString, IconProperties> iconmapper_ = {
|
||||||
{ "view-refresh", { {}} },
|
{ "view-refresh", { {}} },
|
||||||
{ "library-music", { {"vinyl"}} },
|
{ "library-music", { {"vinyl"}} },
|
||||||
{ "vlc", { {}} },
|
{ "vlc", { {}} },
|
||||||
{ "xine", { {}} },
|
|
||||||
{ "zoom-in", { {}} },
|
{ "zoom-in", { {}} },
|
||||||
{ "zoom-out", { {}, 0, 0 } }
|
{ "zoom-out", { {}, 0, 0 } }
|
||||||
|
|
||||||
|
|
|
@ -1058,7 +1058,7 @@ void MainWindow::ExitFinished() {
|
||||||
|
|
||||||
void MainWindow::EngineChanged(Engine::EngineType enginetype) {
|
void MainWindow::EngineChanged(Engine::EngineType enginetype) {
|
||||||
|
|
||||||
ui_->action_equalizer->setEnabled(enginetype == Engine::EngineType::GStreamer || enginetype == Engine::EngineType::Xine);
|
ui_->action_equalizer->setEnabled(enginetype == Engine::EngineType::GStreamer);
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
ui_->action_open_cd->setEnabled(false);
|
ui_->action_open_cd->setEnabled(false);
|
||||||
ui_->action_open_cd->setVisible(false);
|
ui_->action_open_cd->setVisible(false);
|
||||||
|
|
|
@ -51,9 +51,6 @@
|
||||||
# include "engine/gstengine.h"
|
# include "engine/gstengine.h"
|
||||||
# include "engine/gststartup.h"
|
# include "engine/gststartup.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_XINE
|
|
||||||
# include "engine/xineengine.h"
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_VLC
|
#ifdef HAVE_VLC
|
||||||
# include "engine/vlcengine.h"
|
# include "engine/vlcengine.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -125,12 +122,6 @@ Engine::EngineType Player::CreateEngine(Engine::EngineType enginetype) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_XINE
|
|
||||||
case Engine::Xine:
|
|
||||||
use_enginetype=Engine::Xine;
|
|
||||||
engine_.reset(new XineEngine(app_->task_manager()));
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_VLC
|
#ifdef HAVE_VLC
|
||||||
case Engine::VLC:
|
case Engine::VLC:
|
||||||
use_enginetype=Engine::VLC;
|
use_enginetype=Engine::VLC;
|
||||||
|
|
|
@ -28,7 +28,6 @@ namespace Engine {
|
||||||
Engine::EngineType EngineTypeFromName(QString enginename) {
|
Engine::EngineType EngineTypeFromName(QString enginename) {
|
||||||
QString lower = enginename.toLower();
|
QString lower = enginename.toLower();
|
||||||
if (lower == "gstreamer") return Engine::GStreamer;
|
if (lower == "gstreamer") return Engine::GStreamer;
|
||||||
else if (lower == "xine") return Engine::Xine;
|
|
||||||
else if (lower == "vlc") return Engine::VLC;
|
else if (lower == "vlc") return Engine::VLC;
|
||||||
else return Engine::None;
|
else return Engine::None;
|
||||||
}
|
}
|
||||||
|
@ -36,7 +35,6 @@ Engine::EngineType EngineTypeFromName(QString enginename) {
|
||||||
QString EngineName(Engine::EngineType enginetype) {
|
QString EngineName(Engine::EngineType enginetype) {
|
||||||
switch (enginetype) {
|
switch (enginetype) {
|
||||||
case Engine::GStreamer: return QString("gstreamer");
|
case Engine::GStreamer: return QString("gstreamer");
|
||||||
case Engine::Xine: return QString("xine");
|
|
||||||
case Engine::VLC: return QString("vlc");
|
case Engine::VLC: return QString("vlc");
|
||||||
case Engine::None:
|
case Engine::None:
|
||||||
default: return QString("None");
|
default: return QString("None");
|
||||||
|
@ -46,7 +44,6 @@ QString EngineName(Engine::EngineType enginetype) {
|
||||||
QString EngineDescription(Engine::EngineType enginetype) {
|
QString EngineDescription(Engine::EngineType enginetype) {
|
||||||
switch (enginetype) {
|
switch (enginetype) {
|
||||||
case Engine::GStreamer: return QString("GStreamer");
|
case Engine::GStreamer: return QString("GStreamer");
|
||||||
case Engine::Xine: return QString("Xine");
|
|
||||||
case Engine::VLC: return QString("VLC");
|
case Engine::VLC: return QString("VLC");
|
||||||
case Engine::None:
|
case Engine::None:
|
||||||
default: return QString("None");
|
default: return QString("None");
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,154 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2017-2018 Jonas Kvinge <jonas@jkvinge.net> *
|
|
||||||
* Copyright (C) 2005 Christophe Thommeret <hftom@free.fr> *
|
|
||||||
* (C) 2005 Ian Monroe <ian@monroe.nu> *
|
|
||||||
* (C) 2005-2006 Mark Kretschmann <markey@web.de> *
|
|
||||||
* (C) 2004-2005 Max Howell <max.howell@methylblue.com> *
|
|
||||||
* (C) 2003-2004 J. Kofler <kaffeine@gmx.net> *
|
|
||||||
* *
|
|
||||||
* 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. *
|
|
||||||
* *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#ifndef XINEENGINE_H
|
|
||||||
#define XINEENGINE_H
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#ifndef XINE_ENGINE_INTERNAL
|
|
||||||
# define XINE_ENGINE_INTERNAL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include <cstdint>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <xine.h>
|
|
||||||
|
|
||||||
#include <QtGlobal>
|
|
||||||
#include <QObject>
|
|
||||||
#include <QMutex>
|
|
||||||
#include <QThread>
|
|
||||||
#include <QList>
|
|
||||||
#include <QVariant>
|
|
||||||
#include <QString>
|
|
||||||
#include <QUrl>
|
|
||||||
|
|
||||||
#include "engine_fwd.h"
|
|
||||||
#include "enginebase.h"
|
|
||||||
|
|
||||||
class TaskManager;
|
|
||||||
class PruneScopeThread;
|
|
||||||
|
|
||||||
class XineEngine : public Engine::Base {
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit XineEngine(TaskManager *task_manager);
|
|
||||||
~XineEngine() override;
|
|
||||||
|
|
||||||
bool Init() override;
|
|
||||||
Engine::State state() const override;
|
|
||||||
bool Load(const QUrl &stream_url, const QUrl &original_url, Engine::TrackChangeFlags change, bool force_stop_at_end, quint64 beginning_nanosec, qint64 end_nanosec) override;
|
|
||||||
bool Play(quint64 offset_nanosec) override;
|
|
||||||
void Stop(bool stop_after = false) override;
|
|
||||||
void Pause() override;
|
|
||||||
void Unpause() override;
|
|
||||||
void Seek(quint64 offset_nanosec) override;
|
|
||||||
void SetVolumeSW(uint) override;
|
|
||||||
|
|
||||||
qint64 position_nanosec() const override;
|
|
||||||
qint64 length_nanosec() const override;
|
|
||||||
|
|
||||||
const Engine::Scope& scope(int chunk_length);
|
|
||||||
|
|
||||||
OutputDetailsList GetOutputsList() const override;
|
|
||||||
bool ValidOutput(const QString &output) override;
|
|
||||||
QString DefaultOutput() override { return "auto"; }
|
|
||||||
bool CustomDeviceSupport(const QString &output) override;
|
|
||||||
bool ALSADeviceSupport(const QString &output) override;
|
|
||||||
|
|
||||||
void ReloadSettings() override;
|
|
||||||
|
|
||||||
bool CanDecode(const QUrl &);
|
|
||||||
|
|
||||||
void SetEqualizerEnabled(bool enabled) override;
|
|
||||||
void SetEqualizerParameters(int preamp, const QList<int>&) override;
|
|
||||||
|
|
||||||
// Simple accessors
|
|
||||||
|
|
||||||
xine_stream_t *stream() { return stream_; }
|
|
||||||
float preamp() { return preamp_; }
|
|
||||||
|
|
||||||
private:
|
|
||||||
static const char *kAutoOutput;
|
|
||||||
|
|
||||||
QString current_output_;
|
|
||||||
QVariant current_device_;
|
|
||||||
|
|
||||||
xine_t *xine_;
|
|
||||||
xine_audio_port_t *audioport_;
|
|
||||||
xine_stream_t *stream_;
|
|
||||||
xine_event_queue_t *eventqueue_;
|
|
||||||
xine_post_t *post_;
|
|
||||||
std::unique_ptr<PruneScopeThread> prune_;
|
|
||||||
|
|
||||||
float preamp_;
|
|
||||||
|
|
||||||
QUrl stream_url_;
|
|
||||||
QUrl original_url_;
|
|
||||||
bool have_metadata_;
|
|
||||||
|
|
||||||
uint log_buffer_count_ = 0;
|
|
||||||
uint log_scope_call_count_ = 1; // Prevent divideByZero
|
|
||||||
uint log_no_suitable_buffer_ = 0;
|
|
||||||
|
|
||||||
int int_preamp_;
|
|
||||||
QMutex init_mutex_;
|
|
||||||
int64_t current_vpts_;
|
|
||||||
QList<int> equalizer_gains_;
|
|
||||||
|
|
||||||
mutable Engine::SimpleMetaBundle current_bundle_;
|
|
||||||
|
|
||||||
void SetEnvironment();
|
|
||||||
|
|
||||||
void Cleanup();
|
|
||||||
void SetDevice();
|
|
||||||
bool OpenAudioDriver();
|
|
||||||
void CloseAudioDriver();
|
|
||||||
bool CreateStream();
|
|
||||||
void CloseStream();
|
|
||||||
bool EnsureStream();
|
|
||||||
|
|
||||||
uint length() const;
|
|
||||||
uint position() const;
|
|
||||||
|
|
||||||
static void XineEventListener(void*, const xine_event_t*);
|
|
||||||
|
|
||||||
void DetermineAndShowErrorMessage();
|
|
||||||
Engine::SimpleMetaBundle FetchMetaData() const;
|
|
||||||
|
|
||||||
PluginDetailsList GetPluginList() const;
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void PruneScope();
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void InfoMessage(const QString&);
|
|
||||||
};
|
|
||||||
|
|
||||||
class PruneScopeThread : public QThread {
|
|
||||||
public:
|
|
||||||
PruneScopeThread(XineEngine *parent);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void run();
|
|
||||||
|
|
||||||
private:
|
|
||||||
XineEngine *engine_;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,173 +0,0 @@
|
||||||
/* Author: Max Howell <max.howell@methylblue.com>, (C) 2004
|
|
||||||
Copyright: See COPYING file that comes with this distribution
|
|
||||||
|
|
||||||
This has to be a c file or for some reason it won't link! (GCC 3.4.1)
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* need access to port_ticket */
|
|
||||||
#ifndef XINE_ENGINE_INTERNAL
|
|
||||||
# define XINE_ENGINE_INTERNAL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include "xinescope.h"
|
|
||||||
#include <xine/post.h>
|
|
||||||
#include <xine/xine_internal.h>
|
|
||||||
|
|
||||||
typedef struct scope_plugin_s scope_plugin_t;
|
|
||||||
|
|
||||||
struct scope_plugin_s {
|
|
||||||
post_plugin_t post;
|
|
||||||
|
|
||||||
metronom_t metronom;
|
|
||||||
int channels;
|
|
||||||
MyNode *list;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*************************
|
|
||||||
* post plugin functions *
|
|
||||||
*************************/
|
|
||||||
|
|
||||||
static int scope_port_open(xine_audio_port_t *port_gen, xine_stream_t *stream, uint32_t bits, uint32_t rate, int mode) {
|
|
||||||
|
|
||||||
#define port ((post_audio_port_t*)port_gen)
|
|
||||||
#define this ((scope_plugin_t*)((post_audio_port_t*)port_gen)->post)
|
|
||||||
|
|
||||||
_x_post_rewire((post_plugin_t*)port->post);
|
|
||||||
_x_post_inc_usage(port);
|
|
||||||
|
|
||||||
port->stream = stream;
|
|
||||||
port->bits = bits;
|
|
||||||
port->rate = rate;
|
|
||||||
port->mode = mode;
|
|
||||||
|
|
||||||
this->channels = _x_ao_mode2channels(mode);
|
|
||||||
|
|
||||||
return port->original_port->open(port->original_port, stream, bits, rate, mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void scope_port_close(xine_audio_port_t *port_gen, xine_stream_t *stream) {
|
|
||||||
|
|
||||||
MyNode *node;
|
|
||||||
|
|
||||||
/* ensure the buffers are deleted during the next XineEngine::timerEvent() */
|
|
||||||
for(node = this->list->next; node != this->list; node = node->next)
|
|
||||||
node->vpts = node->vpts_end = -1;
|
|
||||||
|
|
||||||
port->stream = NULL;
|
|
||||||
port->original_port->close(port->original_port, stream);
|
|
||||||
|
|
||||||
_x_post_dec_usage(port);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void scope_port_put_buffer(xine_audio_port_t *port_gen, audio_buffer_t *buf, xine_stream_t *stream) {
|
|
||||||
/* FIXME With 8-bit samples the scope won't work correctly. For a special 8-bit code path, the sample size could be checked like this: if(port->bits == 8) */
|
|
||||||
|
|
||||||
const int num_samples = buf->num_frames * this->channels;
|
|
||||||
metronom_t *myMetronom = &this->metronom;
|
|
||||||
MyNode *new_node;
|
|
||||||
|
|
||||||
/* I keep my own metronom because xine wouldn't for some reason */
|
|
||||||
memcpy(&this->metronom, stream->metronom, sizeof(metronom_t));
|
|
||||||
|
|
||||||
new_node = (MyNode *) malloc(sizeof(MyNode));
|
|
||||||
new_node->vpts = myMetronom->got_audio_samples(myMetronom, buf->vpts, buf->num_frames);
|
|
||||||
new_node->num_frames = buf->num_frames;
|
|
||||||
new_node->mem = (int16_t *) malloc(num_samples * 2);
|
|
||||||
memcpy(new_node->mem, buf->mem, num_samples * 2);
|
|
||||||
|
|
||||||
{
|
|
||||||
int64_t
|
|
||||||
K = 32768; /*smpls = 1<<16 samples*/
|
|
||||||
K *= num_samples;
|
|
||||||
K /= (1<<16);
|
|
||||||
K += new_node->vpts;
|
|
||||||
|
|
||||||
new_node->vpts_end = K;
|
|
||||||
}
|
|
||||||
|
|
||||||
port->original_port->put_buffer(port->original_port, buf, stream);
|
|
||||||
|
|
||||||
/* Finally we should append the current buffer to the list
|
|
||||||
* This is thread-safe due to the way we handle the list in the GUI thread */
|
|
||||||
new_node->next = this->list->next;
|
|
||||||
this->list->next = new_node;
|
|
||||||
|
|
||||||
#undef port
|
|
||||||
#undef this
|
|
||||||
}
|
|
||||||
|
|
||||||
static void scope_dispose(post_plugin_t *post) {
|
|
||||||
|
|
||||||
MyNode *list = ((scope_plugin_t*)post)->list;
|
|
||||||
MyNode *prev;
|
|
||||||
MyNode *node = list;
|
|
||||||
|
|
||||||
/* Free all elements of the list (a ring buffer) */
|
|
||||||
do {
|
|
||||||
prev = node->next;
|
|
||||||
|
|
||||||
free(node->mem);
|
|
||||||
free(node);
|
|
||||||
|
|
||||||
node = prev;
|
|
||||||
}
|
|
||||||
while(node != list);
|
|
||||||
|
|
||||||
|
|
||||||
free(post);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/************************
|
|
||||||
* plugin init function *
|
|
||||||
************************/
|
|
||||||
|
|
||||||
xine_post_t *scope_plugin_new(xine_t *xine, xine_audio_port_t *audio_target) {
|
|
||||||
|
|
||||||
scope_plugin_t *scope_plugin = (scope_plugin_t *) calloc(1, sizeof(scope_plugin_t));
|
|
||||||
post_plugin_t *post_plugin = (post_plugin_t *)scope_plugin;
|
|
||||||
|
|
||||||
{
|
|
||||||
post_in_t *input;
|
|
||||||
post_out_t *output;
|
|
||||||
post_audio_port_t *port;
|
|
||||||
|
|
||||||
_x_post_init(post_plugin, 1, 0);
|
|
||||||
|
|
||||||
port = _x_post_intercept_audio_port(post_plugin, audio_target, &input, &output);
|
|
||||||
port->new_port.open = scope_port_open;
|
|
||||||
port->new_port.close = scope_port_close;
|
|
||||||
port->new_port.put_buffer = scope_port_put_buffer;
|
|
||||||
|
|
||||||
post_plugin->xine_post.audio_input[0] = &port->new_port;
|
|
||||||
post_plugin->xine_post.type = PLUGIN_POST;
|
|
||||||
|
|
||||||
post_plugin->dispose = scope_dispose;
|
|
||||||
}
|
|
||||||
|
|
||||||
// code is straight from xine_init_post() can't use that function as it only dlopens the plugins and our plugin is statically linked in
|
|
||||||
|
|
||||||
post_plugin->running_ticket = xine->port_ticket;
|
|
||||||
post_plugin->xine = xine;
|
|
||||||
|
|
||||||
/* scope_plugin_t init */
|
|
||||||
scope_plugin->list = (MyNode *) calloc(1, sizeof(MyNode));
|
|
||||||
scope_plugin->list->next = scope_plugin->list;
|
|
||||||
|
|
||||||
return &post_plugin->xine_post;
|
|
||||||
}
|
|
||||||
|
|
||||||
MyNode *scope_plugin_list(void *post) {
|
|
||||||
return ((scope_plugin_t*)post)->list;
|
|
||||||
}
|
|
||||||
|
|
||||||
int scope_plugin_channels(void *post) {
|
|
||||||
return ((scope_plugin_t*)post)->channels;
|
|
||||||
}
|
|
||||||
|
|
||||||
metronom_t* scope_plugin_metronom(void *post) {
|
|
||||||
return &((scope_plugin_t*)post)->metronom;
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
/* Author: Max Howell <max.howell@methylblue.com>, (C) 2004
|
|
||||||
Copyright: See COPYING file that comes with this distribution
|
|
||||||
|
|
||||||
This has to be a c file or for some reason it won't link! (GCC 3.4.1)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef XINESCOPE_H
|
|
||||||
#define XINESCOPE_H
|
|
||||||
|
|
||||||
/* need access to some stuff for scope time stamping */
|
|
||||||
#ifndef METRONOM_INTERNAL
|
|
||||||
# define METRONOM_INTERNAL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <xine/metronom.h>
|
|
||||||
|
|
||||||
typedef struct my_node_s MyNode;
|
|
||||||
|
|
||||||
struct my_node_s {
|
|
||||||
MyNode *next;
|
|
||||||
int16_t *mem;
|
|
||||||
int num_frames;
|
|
||||||
int64_t vpts;
|
|
||||||
int64_t vpts_end;
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
xine_post_t *scope_plugin_new( xine_t*, xine_audio_port_t* );
|
|
||||||
|
|
||||||
/* we sacrifice type-safety here because some GCCs appear broken and choke on redefining the xine_post_t typedef */
|
|
||||||
|
|
||||||
MyNode *scope_plugin_list(void*);
|
|
||||||
int scope_plugin_channels(void*);
|
|
||||||
metronom_t *scope_plugin_metronom(void*);
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -94,9 +94,6 @@ void BackendSettingsPage::Load() {
|
||||||
#ifdef HAVE_GSTREAMER
|
#ifdef HAVE_GSTREAMER
|
||||||
ui_->combobox_engine->addItem(IconLoader::Load("gstreamer"), EngineDescription(Engine::GStreamer), QVariant::fromValue(Engine::GStreamer));
|
ui_->combobox_engine->addItem(IconLoader::Load("gstreamer"), EngineDescription(Engine::GStreamer), QVariant::fromValue(Engine::GStreamer));
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_XINE
|
|
||||||
ui_->combobox_engine->addItem(IconLoader::Load("xine"), EngineDescription(Engine::Xine), QVariant::fromValue(Engine::Xine));
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_VLC
|
#ifdef HAVE_VLC
|
||||||
ui_->combobox_engine->addItem(IconLoader::Load("vlc"), EngineDescription(Engine::VLC), QVariant::fromValue(Engine::VLC));
|
ui_->combobox_engine->addItem(IconLoader::Load("vlc"), EngineDescription(Engine::VLC), QVariant::fromValue(Engine::VLC));
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue