├── .appveyor.yml ├── .gitignore ├── .travis.yml ├── CONTRIBUTING.md ├── README.md ├── qml-player ├── .gitignore ├── CMakeLists.txt ├── LICENSE.md ├── README.md ├── cmake │ ├── FindLIBVLCQT.cmake │ └── cmake_uninstall.cmake.in ├── osx │ ├── CMakeLists.txt │ ├── Info.plist.in │ └── Project.iconset │ │ ├── icon_128x128.png │ │ ├── icon_128x128@2x.png │ │ ├── icon_16x16.png │ │ ├── icon_16x16@2x.png │ │ ├── icon_256x256.png │ │ ├── icon_256x256@2x.png │ │ ├── icon_32x32.png │ │ ├── icon_32x32@2x.png │ │ ├── icon_512x512.png │ │ └── icon_512x512@2x.png ├── src │ ├── CMakeLists.txt │ ├── main.cpp │ └── qml │ │ ├── qml.qrc │ │ └── video.qml └── windows │ ├── CMakeLists.txt │ ├── Project.ico │ └── Project.rc.in ├── simple-player ├── .gitignore ├── CMakeLists.txt ├── LICENSE.md ├── README.md ├── cmake │ ├── FindLIBVLCQT.cmake │ └── cmake_uninstall.cmake.in ├── osx │ ├── CMakeLists.txt │ ├── Info.plist.in │ └── Project.iconset │ │ ├── icon_128x128.png │ │ ├── icon_128x128@2x.png │ │ ├── icon_16x16.png │ │ ├── icon_16x16@2x.png │ │ ├── icon_256x256.png │ │ ├── icon_256x256@2x.png │ │ ├── icon_32x32.png │ │ ├── icon_32x32@2x.png │ │ ├── icon_512x512.png │ │ └── icon_512x512@2x.png ├── simple-player.pro ├── src │ ├── CMakeLists.txt │ ├── EqualizerDialog.cpp │ ├── EqualizerDialog.h │ ├── EqualizerDialog.ui │ ├── SimplePlayer.cpp │ ├── SimplePlayer.h │ ├── SimplePlayer.ui │ ├── main.cpp │ └── src.pro └── windows │ ├── CMakeLists.txt │ ├── Project.ico │ └── Project.rc.in └── tools └── ci ├── linux ├── after_success.sh ├── before_install.sh ├── install.sh └── script.sh └── osx ├── after_success.sh ├── before_install.sh ├── install.sh └── script.sh /.appveyor.yml: -------------------------------------------------------------------------------- 1 | version: build{build} 2 | 3 | branches: 4 | except: 5 | - project/travis 6 | 7 | environment: 8 | matrix: 9 | - example: simple-player 10 | name: win32 11 | platform: amd64_x86 12 | qt: msvc2013 13 | - example: simple-player 14 | name: win64 15 | platform: amd64 16 | qt: msvc2013_64 17 | - example: simple-player 18 | name: win32 19 | platform: mingw 20 | qt: mingw492_32 21 | 22 | - example: qml-player 23 | name: win32 24 | platform: amd64_x86 25 | qt: msvc2013 26 | - example: qml-player 27 | name: win64 28 | platform: amd64 29 | qt: msvc2013_64 30 | - example: qml-player 31 | name: win32 32 | platform: mingw 33 | qt: mingw492_32 34 | 35 | clone_folder: c:\dev\examples 36 | clone_depth: 5 37 | 38 | init: 39 | - set PATH=C:\Qt\5.5\%qt%\bin;C:\dev\dependencies\vlc-qt\bin;%PATH% 40 | - set ORIGPATH=%PATH% 41 | - if not %platform%==mingw call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %platform% 42 | - if not %platform%==mingw (set makefiles="NMake Makefiles") else (set makefiles="MinGW Makefiles") 43 | 44 | install: 45 | - cd c:\dev 46 | - md install 47 | - md dependencies 48 | - cd dependencies 49 | - md vlc-qt 50 | - cd vlc-qt 51 | - ps: $vlcdl = 'https://googledrive.com/host/0B7I7Zg8w-HxRfmxSMmdhM3dTMGJnSklRX1c4ZkxmekJkcFplYnRLTU80R3Znd1VITkNueGs/vlc-qt_' + $env:qt + '_examples.7z' 52 | - ps: Start-FileDownload $vlcdl -FileName vlc-qt.7z 53 | - 7z x vlc-qt.7z > NUL 54 | 55 | before_build: 56 | - cd c:\dev\examples 57 | - md build 58 | 59 | build_script: 60 | - if %platform%==mingw set PATH=C:\Qt\5.5\%qt%\bin;C:\dev\dependencies\vlc-qt\bin;C:\Qt\Tools\mingw492_32\bin;C:\Program Files (x86)\CMake\bin 61 | - cd build 62 | - cmake ..\%example% -G %makefiles% -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="c:/dev/install" 63 | - if not %platform%==mingw (nmake) else (mingw32-make) 64 | - if not %platform%==mingw (nmake install) else (mingw32-make install) 65 | - if not %platform%==mingw (nmake windows) else (mingw32-make windows) 66 | - if %platform%==mingw set PATH=%ORIGPATH% 67 | 68 | after_build: 69 | - cd c:\dev\install 70 | - set buildname=build%APPVEYOR_BUILD_NUMBER%_%APPVEYOR_REPO_COMMIT:~0,7% 71 | - 7z a ..\examples\%example%_%buildname%_%name%.7z * 72 | 73 | test: off 74 | 75 | # test_script: 76 | # - cd c:\dev\install 77 | # - start /wait %example%.exe test 78 | # - cd c:\dev\examples 79 | 80 | matrix: 81 | fast_finish: true 82 | 83 | artifacts: 84 | - path: '*.7z' 85 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | dependencies 3 | install -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | os: 2 | - linux 3 | - osx 4 | 5 | env: 6 | - EXAMPLE=simple-player 7 | - EXAMPLE=qml-player 8 | 9 | branches: 10 | except: 11 | - project/appveyor 12 | 13 | matrix: 14 | exclude: 15 | - os: linux 16 | env: EXAMPLE=simple-player 17 | 18 | language: cpp 19 | 20 | before_install: . tools/ci/$TRAVIS_OS_NAME/before_install.sh 21 | install: . tools/ci/$TRAVIS_OS_NAME/install.sh 22 | script: . tools/ci/$TRAVIS_OS_NAME/script.sh 23 | after_success: 24 | - '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && . tools/ci/$TRAVIS_OS_NAME/after_success.sh || true' 25 | 26 | addons: 27 | apt: 28 | sources: 29 | - ubuntu-toolchain-r-test 30 | packages: 31 | - gcc-4.8 32 | - g++-4.8 33 | - libqt4-dev 34 | - libvlc-dev 35 | - libvlccore-dev 36 | - vlc 37 | - p7zip-full 38 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to contribute to VLC-Qt Examples 2 | 3 | ## Adding new examples 4 | 5 | New examples are always welcome. Here are some guidelines for new submissions: 6 | 7 | - Add descriptive README file, where you state supported Qt versions (4 and/or 5), 8 | supported build system (CMake, qmake, other) and presented VLC-Qt features. 9 | - Please define the license of your example. It may be public domain or licensed 10 | using any license in compliance with VLC-Qt licensing. 11 | - The example **must** be cross-platform if not otherwise stated. 12 | - Try to make it simple and well documented. 13 | 14 | 15 | ## Updating existing examples 16 | 17 | Existing examples may need update from time to time to add support for new 18 | VLC-Qt features, new compilers, build systems, Qt/VLC versions etc. 19 | 20 | Feel free to open a pull request with improvements. Note that you should comply 21 | with the example license and use similar coding style. A completely new feature 22 | may be better presented in a new example and not in existing ones. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # VLC-Qt Examples [![Build Status][travis-img]][travis] [![Build status][appveyor-img]][appveyor] 2 | [![Homepage][web-img]][web] 3 | [![Latest release][release-img]][release] 4 | 5 | VLC-Qt is a free library used to connect [Qt](http://qt.io) and 6 | [libVLC](http://videolan.org) libraries. It contains core classes for main 7 | media playback and also some GUI classes for faster media player development. 8 | 9 | This repository contains various examples of how to use the library in your 10 | application. 11 | 12 | Contributions are welcome. See [CONTRIBUTING.md] 13 | (https://github.com/vlc-qt/examples/blob/master/CONTRIBUTING.md) 14 | for more details. 15 | 16 | 17 | ## List of Examples 18 | - [Simple Player](https://github.com/vlc-qt/examples/tree/master/simple-player) (MIT) 19 | - [QML Player](https://github.com/vlc-qt/examples/tree/master/qml-player) (MIT) 20 | 21 | 22 | ## Licensing info 23 | 24 | Each example may be used under the terms of the license noted in the 25 | file LICENSE.md in example subfolder. 26 | 27 | 28 | [web]: http://vlc-qt.tano.si 29 | [release]: https://github.com/vlc-qt/examples/releases 30 | [travis]: https://travis-ci.org/vlc-qt/examples 31 | [appveyor]: https://ci.appveyor.com/project/ntadej/examples 32 | 33 | [web-img]: https://img.shields.io/badge/web-vlc--qt.tano.si-green.svg 34 | [release-img]: https://img.shields.io/github/release/vlc-qt/examples.svg 35 | [travis-img]: https://travis-ci.org/vlc-qt/examples.svg?branch=master 36 | [appveyor-img]: https://ci.appveyor.com/api/projects/status/p8x4yi0as9bc1ts1?svg=true 37 | -------------------------------------------------------------------------------- /qml-player/.gitignore: -------------------------------------------------------------------------------- 1 | build* 2 | CMakeLists.txt.user 3 | -------------------------------------------------------------------------------- /qml-player/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # VLC-Qt QML Player 3 | # Copyright (C) 2015 Tadej Novak 4 | # 5 | 6 | CMAKE_MINIMUM_REQUIRED(VERSION 3.0.2) 7 | CMAKE_POLICY(VERSION 3.0.2) 8 | 9 | PROJECT(qml-player VERSION 1.0.0) 10 | 11 | CONFIGURE_FILE( 12 | "${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" 13 | "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake" 14 | IMMEDIATE @ONLY) 15 | 16 | ADD_CUSTOM_TARGET(uninstall 17 | "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake") 18 | 19 | SET(CMAKE_MODULE_PATH 20 | ${CMAKE_SOURCE_DIR}/cmake 21 | ) 22 | 23 | # Automatically run moc, uic and/or rcc, if required 24 | SET(CMAKE_AUTOMOC ON) 25 | SET(CMAKE_AUTORCC ON) 26 | 27 | # Show all warnings 28 | IF(NOT MSVC) 29 | SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -Wextra") 30 | SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Wextra") 31 | ENDIF() 32 | 33 | # Make final release build smaller 34 | IF(CMAKE_COMPILER_IS_GNUCXX) 35 | SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s") 36 | SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -s") 37 | ENDIF() 38 | 39 | # Statically link with libgcc 40 | IF(MINGW) 41 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") 42 | SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++") 43 | ENDIF() 44 | 45 | IF(MSVC) 46 | SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nologo -Zc:wchar_t") 47 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nologo -Zc:wchar_t -w34100 -w34189") 48 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NOLOGO /DYNAMICBASE /NXCOMPAT") 49 | ENDIF() 50 | 51 | # Find Qt 52 | FIND_PACKAGE(Qt5 5.2.0 REQUIRED COMPONENTS Quick) 53 | 54 | # Add additional libraries 55 | FIND_PACKAGE(VLCQt REQUIRED COMPONENTS Qml) 56 | 57 | # Set Qt bin dir to find QtCore*.dll and other libs to install 58 | STRING(REGEX REPLACE "([^ ]+)[/\\].*" "\\1" QT_BIN_DIR_TMP "${QT_MOC_EXECUTABLE}") 59 | STRING(REGEX REPLACE "\\\\" "/" QT_BIN_DIR "${QT_BIN_DIR_TMP}") # Replace back slashes to slashes 60 | STRING(REGEX REPLACE "bin" "lib" QT_LIB_DIR "${QT_BIN_DIR}") 61 | 62 | # Set default install path: 63 | # In *nix environments this is /usr/local 64 | # Under M$ Windows this is C:\Program files\${PROJECT_NAME} 65 | # WARNING: Leading slash should be added - this is for easier concatenation of the strings due to slash/backslash issues 66 | IF(MINGW OR MSVC) 67 | IF(NOT CMAKE_INSTALL_PREFIX) 68 | SET(CMAKE_INSTALL_PREFIX "C:/Program files/${PROJECT_NAME}") 69 | ENDIF() 70 | SET(PROJECT_INSTALL_BIN_DIR ".") 71 | SET(PROJECT_INSTALL_LIB_DIR "lib") 72 | ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 73 | IF(NOT CMAKE_INSTALL_PREFIX) 74 | SET(CMAKE_INSTALL_PREFIX "/Applications") 75 | ENDIF() 76 | SET(PROJECT_INSTALL_BIN_DIR "${PROJECT_NAME}.app/Contents/MacOS") 77 | SET(PROJECT_INSTALL_LIB_DIR "${PROJECT_NAME}.app/Contents/MacOS/lib") 78 | SET(CMAKE_INSTALL_RPATH "@executable_path/lib") 79 | ELSE() 80 | IF(NOT CMAKE_INSTALL_PREFIX) 81 | SET(CMAKE_INSTALL_PREFIX "/usr/local") 82 | ENDIF() 83 | SET(PROJECT_INSTALL_BIN_DIR "bin") 84 | SET(PROJECT_INSTALL_LIB_DIR "lib") 85 | ENDIF() 86 | 87 | # Set the OS X Bundle specific CMake variables which will be used to populate the plist for 88 | # the application bundle 89 | SET(MACOSX_BUNDLE_COPYRIGHT "2015 Tadej Novak") 90 | SET(MACOSX_BUNDLE_ICON_FILE "${PROJECT_NAME}.icns") 91 | SET(MACOSX_BUNDLE_GUI_IDENTIFIER "si.tano.${PROJECT_NAME_LOWER}") 92 | 93 | SET(WINDOWS_AUTHOR "Tadej Novak") 94 | SET(WINDOWS_DESCRIPTION "A simple VLC-Qt example QML player") 95 | SET(WINDOWS_COPYRIGHT "Copyright (C) ${MACOSX_BUNDLE_COPYRIGHT}") 96 | 97 | 98 | # Include source 99 | IF(MINGW OR MSVC) 100 | ADD_SUBDIRECTORY(windows) 101 | ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 102 | ADD_SUBDIRECTORY(osx) 103 | ENDIF() 104 | 105 | ADD_SUBDIRECTORY(src) 106 | -------------------------------------------------------------------------------- /qml-player/LICENSE.md: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Tadej Novak 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /qml-player/README.md: -------------------------------------------------------------------------------- 1 | # VLC-Qt QML Player Example 2 | 3 | A simple VLC-Qt powered QML media player 4 | 5 | This example is compatible with: 6 | - CMake 7 | - Qt5 8 | - latest VLC-Qt 9 | 10 | ## Platform specific notes 11 | 12 | ### Windows 13 | 14 | You can install all required libraries with 15 | ``` 16 | make install 17 | make windows 18 | ``` 19 | 20 | ### OS X 21 | 22 | Create package using 23 | ``` 24 | make install 25 | make dmg 26 | ``` -------------------------------------------------------------------------------- /qml-player/cmake/FindLIBVLCQT.cmake: -------------------------------------------------------------------------------- 1 | ############################################################################# 2 | # VLC-Qt - Qt and libvlc connector library - CMake module 3 | # Copyright (C) 2011 Tadej Novak 4 | # Original author: Rohit Yadav 5 | # 6 | # This library is free software: you can redistribute it and/or modify 7 | # it under the terms of the GNU Lesser General Public License as published 8 | # by the Free Software Foundation, either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This library is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU Lesser General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU Lesser General Public License 17 | # along with this library. If not, see . 18 | ############################################################################# 19 | # If it's found it sets LIBVLCQT_FOUND to TRUE 20 | # and following variables are set: 21 | # LIBVLCQT_INCLUDE_DIR 22 | # LIBVLCQT_LIBRARY 23 | 24 | # FIND_PATH and FIND_LIBRARY normally search standard locations 25 | # before the specified paths. To search non-standard paths first, 26 | # FIND_* is invoked first with specified paths and NO_DEFAULT_PATH 27 | # and then again with no specified paths to search the default 28 | # locations. When an earlier FIND_* succeeds, subsequent FIND_*s 29 | # searching for the same item do nothing. 30 | 31 | # Include dir 32 | FIND_PATH(LIBVLCQT_INCLUDE_DIR vlc-qt/Instance.h 33 | "$ENV{LIBVLCQT_INCLUDE_PATH}" 34 | "$ENV{LIB_DIR}/include" 35 | "$ENV{LIB_DIR}/include/vlc-qt" 36 | "/usr/include" 37 | "/usr/include/vlc-qt" 38 | "/usr/local/include" 39 | "/usr/local/include/vlc-qt" 40 | c:/msys/local/include 41 | NO_DEFAULT_PATH 42 | ) 43 | FIND_PATH(LIBVLCQT_INCLUDE_DIR Instance.h) 44 | 45 | # Library 46 | FIND_LIBRARY(LIBVLCQT_CORE_LIBRARY NAMES vlc-qt-core PATHS 47 | "$ENV{LIBVLCQT_CORE_LIBRARY_PATH}" 48 | "$ENV{LIB_DIR}/lib" 49 | c:/msys/local/lib 50 | NO_DEFAULT_PATH 51 | ) 52 | FIND_LIBRARY(LIBVLCQT_CORE_LIBRARY NAMES vlc-qt-core) 53 | FIND_LIBRARY(LIBVLCQT_WIDGETS_LIBRARY NAMES vlc-qt-widgets) 54 | FIND_LIBRARY(LIBVLCQT_QML_LIBRARY NAMES vlc-qt-qml) 55 | 56 | IF(LIBVLCQT_INCLUDE_DIR AND LIBVLCQT_CORE_LIBRARY) 57 | SET(LIBVLCQT_FOUND TRUE) 58 | ENDIF() 59 | 60 | IF(LIBVLCQT_FOUND) 61 | IF(NOT LIBVLCQT_FIND_QUIETLY) 62 | MESSAGE(STATUS "Found libvlc-qt include-dir path: ${LIBVLCQT_INCLUDE_DIR}") 63 | MESSAGE(STATUS "Found libvlc-qt library path: ${LIBVLCQT_CORE_LIBRARY}") 64 | ENDIF(NOT LIBVLCQT_FIND_QUIETLY) 65 | ELSE() 66 | IF(LIBVLCQT_FIND_REQUIRED) 67 | MESSAGE(FATAL_ERROR "Could not find libvlc-qt") 68 | ENDIF() 69 | ENDIF() 70 | -------------------------------------------------------------------------------- /qml-player/cmake/cmake_uninstall.cmake.in: -------------------------------------------------------------------------------- 1 | # 2 | # VLC-Qt QML Player 3 | # Copyright (C) 2015 Tadej Novak 4 | # 5 | 6 | IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 7 | MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") 8 | ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 9 | 10 | FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) 11 | STRING(REGEX REPLACE "\n" ";" files "${files}") 12 | FOREACH(file ${files}) 13 | MESSAGE(STATUS "Uninstalling \"${file}\"") 14 | IF(EXISTS "${file}") 15 | EXEC_PROGRAM( 16 | "@CMAKE_COMMAND@" ARGS "-E remove \"${file}\"" 17 | OUTPUT_VARIABLE rm_out 18 | RETURN_VALUE rm_retval 19 | ) 20 | IF("${rm_retval}" STREQUAL 0) 21 | ELSE("${rm_retval}" STREQUAL 0) 22 | MESSAGE(FATAL_ERROR "Problem when removing \"${file}\"") 23 | ENDIF("${rm_retval}" STREQUAL 0) 24 | ELSE(EXISTS "${file}") 25 | MESSAGE(STATUS "File \"${file}\" does not exist.") 26 | ENDIF(EXISTS "${file}") 27 | ENDFOREACH(file) 28 | -------------------------------------------------------------------------------- /qml-player/osx/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # VLC-Qt QML Player 3 | # Copyright (C) 2015 Tadej Novak 4 | # 5 | 6 | IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 7 | ADD_CUSTOM_TARGET(dmg 8 | "${QT_BIN_DIR}/macdeployqt" "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app" -qmldir="${CMAKE_SOURCE_DIR}/src/qml" -dmg 9 | WORKING_DIRECTORY ${QT_BIN_DIR}) 10 | ENDIF() 11 | 12 | CONFIGURE_FILE( 13 | ${CMAKE_SOURCE_DIR}/osx/Info.plist.in 14 | ${CMAKE_BINARY_DIR}/osx/Info.plist 15 | ) 16 | 17 | # Installation 18 | INSTALL(DIRECTORY ${VLCQtCoreFramework} DESTINATION "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app/Contents/Frameworks") 19 | INSTALL(DIRECTORY ${VLCQtQmlFramework} DESTINATION "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app/Contents/Frameworks") 20 | -------------------------------------------------------------------------------- /qml-player/osx/Info.plist.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrincipalClass 6 | NSApplication 7 | NSHighResolutionCapable 8 | True 9 | CFBundlePackageType 10 | APPL 11 | CFBundleDevelopmentRegion 12 | English 13 | CFBundleExecutable 14 | @PROJECT_NAME@ 15 | CFBundleGetInfoString 16 | @PROJECT_NAME@ @PROJECT_VERSION@ 17 | CFBundleIconFile 18 | @MACOSX_BUNDLE_ICON_FILE@ 19 | CFBundleIdentifier 20 | @MACOSX_BUNDLE_GUI_IDENTIFIER@ 21 | CFBundleInfoDictionaryVersion 22 | 6.0 23 | CFBundleLongVersionString 24 | @PROJECT_NAME@ @PROJECT_VERSION@ 25 | CFBundleName 26 | @PROJECT_NAME@ 27 | CFBundlePackageType 28 | APPL 29 | CFBundleShortVersionString 30 | @PROJECT_VERSION@ 31 | CFBundleSignature 32 | ???? 33 | CFBundleVersion 34 | @PROJECT_NAME@ @PROJECT_VERSION@ 35 | NSHumanReadableCopyright 36 | @MACOSX_BUNDLE_COPYRIGHT@ 37 | 38 | 39 | -------------------------------------------------------------------------------- /qml-player/osx/Project.iconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/qml-player/osx/Project.iconset/icon_128x128.png -------------------------------------------------------------------------------- /qml-player/osx/Project.iconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/qml-player/osx/Project.iconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /qml-player/osx/Project.iconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/qml-player/osx/Project.iconset/icon_16x16.png -------------------------------------------------------------------------------- /qml-player/osx/Project.iconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/qml-player/osx/Project.iconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /qml-player/osx/Project.iconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/qml-player/osx/Project.iconset/icon_256x256.png -------------------------------------------------------------------------------- /qml-player/osx/Project.iconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/qml-player/osx/Project.iconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /qml-player/osx/Project.iconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/qml-player/osx/Project.iconset/icon_32x32.png -------------------------------------------------------------------------------- /qml-player/osx/Project.iconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/qml-player/osx/Project.iconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /qml-player/osx/Project.iconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/qml-player/osx/Project.iconset/icon_512x512.png -------------------------------------------------------------------------------- /qml-player/osx/Project.iconset/icon_512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/qml-player/osx/Project.iconset/icon_512x512@2x.png -------------------------------------------------------------------------------- /qml-player/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # VLC-Qt QML Player 3 | # Copyright (C) 2015 Tadej Novak 4 | # 5 | # List of sources 6 | # 7 | # Define the QML source files 8 | SET(Project_Qmls 9 | qml/video.qml 10 | ) 11 | 12 | # Define the C++ source files 13 | SET(Project_Srcs 14 | main.cpp 15 | ) 16 | 17 | # Define the resource files 18 | SET(Project_Resources 19 | qml/qml.qrc 20 | ) 21 | 22 | 23 | # 24 | # Compiler settings 25 | # 26 | # This needs to be added in order for #include to work inside .cpp files 27 | INCLUDE_DIRECTORIES( 28 | ${CMAKE_SOURCE_DIR}/src 29 | ${CMAKE_BINARY_DIR}/src 30 | ) 31 | 32 | # Compile resources with windres 33 | IF(MINGW) 34 | ADD_CUSTOM_COMMAND( 35 | OUTPUT ${CMAKE_BINARY_DIR}/windows/Project.obj 36 | COMMAND ${CMAKE_RC_COMPILER} 37 | -i ${CMAKE_BINARY_DIR}/windows/Project.rc 38 | -o ${CMAKE_BINARY_DIR}/windows/Project.obj 39 | WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/windows" 40 | ) 41 | SET(Project_Srcs ${Project_Srcs} ${CMAKE_BINARY_DIR}/windows/Project.obj) 42 | ENDIF() 43 | 44 | IF(MSVC) 45 | SET(Project_Srcs ${Project_Srcs} ${CMAKE_BINARY_DIR}/windows/Project.rc) 46 | ENDIF() 47 | 48 | # Build iconset on OS X 49 | IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 50 | SET(Project_Iconset ${CMAKE_SOURCE_DIR}/osx/Project.iconset) 51 | 52 | FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/src/${PROJECT_NAME}.app/Contents/Resources) 53 | FIND_PROGRAM(ICONUTIL_EXECUTABLE NAMES iconutil) 54 | ADD_CUSTOM_COMMAND( 55 | OUTPUT ${CMAKE_BINARY_DIR}/src/${PROJECT_NAME}.app/Contents/Resources/${PROJECT_NAME}.icns 56 | COMMAND ${ICONUTIL_EXECUTABLE} --convert icns --output ${CMAKE_BINARY_DIR}/src/${PROJECT_NAME}.app/Contents/Resources/${PROJECT_NAME}.icns 57 | ${Project_Iconset} 58 | ) 59 | SET(Project_Srcs ${Project_Srcs} ${CMAKE_BINARY_DIR}/src/${PROJECT_NAME}.app/Contents/Resources/${PROJECT_NAME}.icns) 60 | ENDIF() 61 | 62 | # This line tells cmake to create the Project program. 63 | ADD_EXECUTABLE(${PROJECT_NAME} MACOSX_BUNDLE WIN32 ${Project_Resources} ${Project_Qmls} ${Project_Srcs}) 64 | 65 | # Use custom Info.plist 66 | IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 67 | SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${QT_LIB_DIR};@executable_path/../Frameworks") 68 | SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_BINARY_DIR}/osx/Info.plist") 69 | ENDIF() 70 | 71 | # Here the needed Qt Libraries are added to the link command. 72 | TARGET_LINK_LIBRARIES(${PROJECT_NAME} Qt5::Quick VLCQt::Qml) 73 | 74 | 75 | # 76 | # Installation 77 | # 78 | INSTALL(TARGETS ${PROJECT_NAME} 79 | RUNTIME DESTINATION ${PROJECT_INSTALL_BIN_DIR} 80 | BUNDLE DESTINATION . 81 | ) 82 | -------------------------------------------------------------------------------- /qml-player/src/main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * VLC-Qt QML Player 3 | * Copyright (C) 2015 Tadej Novak 4 | */ 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | #include 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | QCoreApplication::setApplicationName("VLC-Qt QML Player"); 16 | QCoreApplication::setAttribute(Qt::AA_X11InitThreads); 17 | 18 | QGuiApplication app(argc, argv); 19 | VlcCommon::setPluginPath(app.applicationDirPath() + "/plugins"); 20 | VlcQmlVideoPlayer::registerPlugin(); 21 | 22 | QQuickView quickView; 23 | quickView.setSource(QUrl(QStringLiteral("qrc:/qml/video.qml"))); 24 | quickView.setResizeMode(QQuickView::SizeRootObjectToView); 25 | quickView.show(); 26 | 27 | return app.exec(); 28 | } 29 | -------------------------------------------------------------------------------- /qml-player/src/qml/qml.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | video.qml 4 | 5 | 6 | -------------------------------------------------------------------------------- /qml-player/src/qml/video.qml: -------------------------------------------------------------------------------- 1 | /* 2 | * VLC-Qt QML Player 3 | * Copyright (C) 2015 Tadej Novak 4 | */ 5 | 6 | import QtQuick 2.0 7 | import VLCQt 1.0 8 | 9 | Rectangle { 10 | width: 640 11 | height: 480 12 | color: "black" 13 | 14 | VlcVideoPlayer { 15 | id: vidwidget 16 | anchors.fill: parent 17 | url: "http://videos.hd-trailers.net/e23ab4b8-a737-46dd-a0e4-259ba36056b6_YsfXbEghC5XywlmkKiYrF0D1oWcPYHA94aPeKmTuUKJJVJBpH4AFbPzcNWMhAJHuRnKZAAatvKg-_8_0.mp4" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /qml-player/windows/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # VLC-Qt Simple Player 3 | # Copyright (C) 2015 Tadej Novak 4 | # 5 | # Windows Extra 6 | 7 | IF(MINGW OR MSVC) 8 | CONFIGURE_FILE( 9 | ${CMAKE_SOURCE_DIR}/windows/Project.rc.in 10 | ${CMAKE_BINARY_DIR}/windows/Project.rc 11 | ) 12 | ENDIF() 13 | 14 | IF(CMAKE_BUILD_TYPE MATCHES Debug) 15 | SET(VLCQtPostfix "d") 16 | ENDIF() 17 | IF(MINGW) 18 | SET(VLCQtPrefix "lib") 19 | ENDIF() 20 | 21 | SET(VLCQtLibs 22 | ${VLCQtCoreLocation}/bin/${VLCQtPrefix}VLCQtCore${VLCQtPostfix}.dll 23 | ${VLCQtQmlLocation}/bin/${VLCQtPrefix}VLCQtQml${VLCQtPostfix}.dll 24 | ${VLCQtCoreLocation}/bin/libvlc.dll 25 | ${VLCQtCoreLocation}/bin/libvlccore.dll 26 | ) 27 | 28 | SET(VLCQtPlugins ${VLCQtCoreLocation}/bin/plugins) 29 | 30 | FILE(GLOB VLCGcc "${VLCQtCoreLocation}/bin/libgcc_s_*-1.dll") 31 | IF(VLCGcc) 32 | SET(ExtraLibs 33 | ${VLCGcc} 34 | ) 35 | ENDIF() 36 | 37 | FILE(GLOB VLCStd "${VLCQtCoreLocation}/bin/libstdc++-6.dll") 38 | IF(VLCStd) 39 | SET(ExtraLibs 40 | ${ExtraLibs} 41 | ${VLCQtCoreLocation}/bin/libstdc++-6.dll 42 | ${VLCQtCoreLocation}/bin/libwinpthread-1.dll 43 | ) 44 | ENDIF() 45 | 46 | ADD_CUSTOM_TARGET(windows 47 | "${QT_BIN_DIR}/windeployqt.exe" "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_BIN_DIR}/${PROJECT_NAME}.exe") 48 | 49 | 50 | ################ 51 | # Installation # 52 | ################ 53 | INSTALL(FILES ${VLCQtLibs} DESTINATION "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_BIN_DIR}") 54 | INSTALL(DIRECTORY ${VLCQtPlugins} DESTINATION "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_BIN_DIR}") 55 | 56 | IF(VLCGcc OR VLCStd) 57 | INSTALL(FILES ${ExtraLibs} DESTINATION "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_BIN_DIR}") 58 | ENDIF() 59 | -------------------------------------------------------------------------------- /qml-player/windows/Project.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/qml-player/windows/Project.ico -------------------------------------------------------------------------------- /qml-player/windows/Project.rc.in: -------------------------------------------------------------------------------- 1 | /** 2 | # VLC-Qt QML Player 3 | # Copyright (C) 2015 Tadej Novak 4 | **/ 5 | 6 | #include 7 | 8 | IDI_ICON1 ICON DISCARDABLE "@CMAKE_SOURCE_DIR@/windows/Project.ico" 9 | 10 | VS_VERSION_INFO VERSIONINFO 11 | FILEVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0 12 | PRODUCTVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0 13 | FILEFLAGS 0x0L 14 | FILEFLAGSMASK 0x3fL 15 | FILEOS 0x00040004L 16 | FILETYPE 0x1L 17 | FILESUBTYPE 0x0L 18 | BEGIN 19 | BLOCK "StringFileInfo" 20 | BEGIN 21 | BLOCK "000004b0" 22 | BEGIN 23 | VALUE "CompanyName", "@WINDOWS_AUTHOR@" 24 | VALUE "FileDescription", "@WINDOWS_DESCRIPTION@" 25 | VALUE "FileVersion", "@PROJECT_VERSION@" 26 | VALUE "LegalCopyright", "@WINDOWS_COPYRIGHT@" 27 | VALUE "InternalName", "@PROJECT_NAME@" 28 | VALUE "OriginalFilename", "@PROJECT_NAME@.exe" 29 | VALUE "ProductName", "@PROJECT_NAME@" 30 | VALUE "ProductVersion", "@PROJECT_VERSION@" 31 | END 32 | END 33 | BLOCK "VarFileInfo" 34 | BEGIN 35 | VALUE "Translation", 0x0, 1200 36 | END 37 | END 38 | -------------------------------------------------------------------------------- /simple-player/.gitignore: -------------------------------------------------------------------------------- 1 | build* 2 | CMakeLists.txt.user 3 | simple-player.pro.user 4 | -------------------------------------------------------------------------------- /simple-player/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # VLC-Qt Simple Player 3 | # Copyright (C) 2015 Tadej Novak 4 | # 5 | 6 | CMAKE_MINIMUM_REQUIRED(VERSION 3.0.2) 7 | CMAKE_POLICY(VERSION 3.0.2) 8 | 9 | PROJECT(simple-player VERSION 1.0.0) 10 | 11 | CONFIGURE_FILE( 12 | "${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" 13 | "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake" 14 | IMMEDIATE @ONLY) 15 | 16 | ADD_CUSTOM_TARGET(uninstall 17 | "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake") 18 | 19 | SET(CMAKE_MODULE_PATH 20 | ${CMAKE_SOURCE_DIR}/cmake 21 | ) 22 | 23 | # Automatically run moc, uic and/or rcc, if required 24 | SET(CMAKE_AUTOMOC ON) 25 | SET(CMAKE_AUTOUIC ON) 26 | 27 | # C++11 support 28 | IF(NOT MSVC) 29 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 30 | ENDIF() 31 | 32 | # Show all warnings 33 | IF(NOT MSVC) 34 | SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -Wextra") 35 | SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Wextra") 36 | ENDIF() 37 | 38 | # Make final release build smaller 39 | IF(CMAKE_COMPILER_IS_GNUCXX) 40 | SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s") 41 | SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -s") 42 | ENDIF() 43 | 44 | # Statically link with libgcc 45 | IF(MINGW) 46 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") 47 | SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++") 48 | ENDIF() 49 | 50 | IF(MSVC) 51 | SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nologo -Zc:wchar_t") 52 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nologo -Zc:wchar_t -w34100 -w34189") 53 | SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NOLOGO /DYNAMICBASE /NXCOMPAT") 54 | ENDIF() 55 | 56 | # Find Qt 57 | FIND_PACKAGE(Qt5 5.2.0 REQUIRED COMPONENTS Widgets) 58 | 59 | # Add additional libraries 60 | FIND_PACKAGE(VLCQt REQUIRED COMPONENTS Widgets) 61 | 62 | # Set Qt bin dir to find QtCore*.dll and other libs to install 63 | STRING(REGEX REPLACE "([^ ]+)[/\\].*" "\\1" QT_BIN_DIR_TMP "${QT_MOC_EXECUTABLE}") 64 | STRING(REGEX REPLACE "\\\\" "/" QT_BIN_DIR "${QT_BIN_DIR_TMP}") # Replace back slashes to slashes 65 | STRING(REGEX REPLACE "bin" "lib" QT_LIB_DIR "${QT_BIN_DIR}") 66 | 67 | # Set default install path: 68 | # In *nix environments this is /usr/local 69 | # Under M$ Windows this is C:\Program files\${PROJECT_NAME} 70 | # WARNING: Leading slash should be added - this is for easier concatenation of the strings due to slash/backslash issues 71 | IF(MINGW OR MSVC) 72 | IF(NOT CMAKE_INSTALL_PREFIX) 73 | SET(CMAKE_INSTALL_PREFIX "C:/Program files/${PROJECT_NAME}") 74 | ENDIF() 75 | SET(PROJECT_INSTALL_BIN_DIR ".") 76 | SET(PROJECT_INSTALL_LIB_DIR "lib") 77 | ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 78 | IF(NOT CMAKE_INSTALL_PREFIX) 79 | SET(CMAKE_INSTALL_PREFIX "/Applications") 80 | ENDIF() 81 | SET(PROJECT_INSTALL_BIN_DIR "${PROJECT_NAME}.app/Contents/MacOS") 82 | SET(PROJECT_INSTALL_LIB_DIR "${PROJECT_NAME}.app/Contents/MacOS/lib") 83 | SET(CMAKE_INSTALL_RPATH "@executable_path/lib") 84 | ELSE() 85 | IF(NOT CMAKE_INSTALL_PREFIX) 86 | SET(CMAKE_INSTALL_PREFIX "/usr/local") 87 | ENDIF() 88 | SET(PROJECT_INSTALL_BIN_DIR "bin") 89 | SET(PROJECT_INSTALL_LIB_DIR "lib") 90 | ENDIF() 91 | 92 | # Set the OS X Bundle specific CMake variables which will be used to populate the plist for 93 | # the application bundle 94 | SET(MACOSX_BUNDLE_COPYRIGHT "2015 Tadej Novak") 95 | SET(MACOSX_BUNDLE_ICON_FILE "${PROJECT_NAME}.icns") 96 | SET(MACOSX_BUNDLE_GUI_IDENTIFIER "si.tano.${PROJECT_NAME_LOWER}") 97 | 98 | SET(WINDOWS_AUTHOR "Tadej Novak") 99 | SET(WINDOWS_DESCRIPTION "A simple VLC-Qt example player") 100 | SET(WINDOWS_COPYRIGHT "Copyright (C) ${MACOSX_BUNDLE_COPYRIGHT}") 101 | 102 | 103 | # Include source 104 | IF(MINGW OR MSVC) 105 | ADD_SUBDIRECTORY(windows) 106 | ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 107 | ADD_SUBDIRECTORY(osx) 108 | ENDIF() 109 | 110 | ADD_SUBDIRECTORY(src) 111 | -------------------------------------------------------------------------------- /simple-player/LICENSE.md: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Tadej Novak 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /simple-player/README.md: -------------------------------------------------------------------------------- 1 | # VLC-Qt Simple Player Example 2 | 3 | A simple VLC-Qt powered media player with support for: 4 | - Video playback 5 | - Volume slider 6 | - Progress bar 7 | - Equalizer 8 | 9 | This example is compatible with: 10 | - CMake and qmake 11 | - Qt5 12 | - latest VLC-Qt with VLC 2.2 or later 13 | 14 | ## TODO 15 | - qmake install 16 | 17 | ## Build system selection 18 | If you want to use CMake, you can delete 19 | - simple-player.pro 20 | - src/src.pro 21 | 22 | If you want to use qmake, you can delete 23 | - CMakeLists.txt 24 | - cmake/* 25 | - src/CMakeLists.txt 26 | 27 | 28 | ## Platform specific notes 29 | 30 | ### Windows 31 | 32 | You can install all required libraries with (CMake only) 33 | ``` 34 | make install 35 | make windows 36 | ``` 37 | 38 | ### OS X 39 | 40 | Create package using (CMake only) 41 | ``` 42 | make install 43 | make dmg 44 | ``` -------------------------------------------------------------------------------- /simple-player/cmake/FindLIBVLCQT.cmake: -------------------------------------------------------------------------------- 1 | ############################################################################# 2 | # VLC-Qt - Qt and libvlc connector library - CMake module 3 | # Copyright (C) 2011 Tadej Novak 4 | # Original author: Rohit Yadav 5 | # 6 | # This library is free software: you can redistribute it and/or modify 7 | # it under the terms of the GNU Lesser General Public License as published 8 | # by the Free Software Foundation, either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This library is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU Lesser General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU Lesser General Public License 17 | # along with this library. If not, see . 18 | ############################################################################# 19 | # If it's found it sets LIBVLCQT_FOUND to TRUE 20 | # and following variables are set: 21 | # LIBVLCQT_INCLUDE_DIR 22 | # LIBVLCQT_LIBRARY 23 | 24 | # FIND_PATH and FIND_LIBRARY normally search standard locations 25 | # before the specified paths. To search non-standard paths first, 26 | # FIND_* is invoked first with specified paths and NO_DEFAULT_PATH 27 | # and then again with no specified paths to search the default 28 | # locations. When an earlier FIND_* succeeds, subsequent FIND_*s 29 | # searching for the same item do nothing. 30 | 31 | # Include dir 32 | FIND_PATH(LIBVLCQT_INCLUDE_DIR vlc-qt/Instance.h 33 | "$ENV{LIBVLCQT_INCLUDE_PATH}" 34 | "$ENV{LIB_DIR}/include" 35 | "$ENV{LIB_DIR}/include/vlc-qt" 36 | "/usr/include" 37 | "/usr/include/vlc-qt" 38 | "/usr/local/include" 39 | "/usr/local/include/vlc-qt" 40 | c:/msys/local/include 41 | NO_DEFAULT_PATH 42 | ) 43 | FIND_PATH(LIBVLCQT_INCLUDE_DIR Instance.h) 44 | 45 | # Library 46 | FIND_LIBRARY(LIBVLCQT_CORE_LIBRARY NAMES vlc-qt-core PATHS 47 | "$ENV{LIBVLCQT_CORE_LIBRARY_PATH}" 48 | "$ENV{LIB_DIR}/lib" 49 | c:/msys/local/lib 50 | NO_DEFAULT_PATH 51 | ) 52 | FIND_LIBRARY(LIBVLCQT_CORE_LIBRARY NAMES vlc-qt-core) 53 | FIND_LIBRARY(LIBVLCQT_WIDGETS_LIBRARY NAMES vlc-qt-widgets) 54 | FIND_LIBRARY(LIBVLCQT_QML_LIBRARY NAMES vlc-qt-qml) 55 | 56 | IF(LIBVLCQT_INCLUDE_DIR AND LIBVLCQT_CORE_LIBRARY) 57 | SET(LIBVLCQT_FOUND TRUE) 58 | ENDIF() 59 | 60 | IF(LIBVLCQT_FOUND) 61 | IF(NOT LIBVLCQT_FIND_QUIETLY) 62 | MESSAGE(STATUS "Found libvlc-qt include-dir path: ${LIBVLCQT_INCLUDE_DIR}") 63 | MESSAGE(STATUS "Found libvlc-qt library path: ${LIBVLCQT_CORE_LIBRARY}") 64 | ENDIF(NOT LIBVLCQT_FIND_QUIETLY) 65 | ELSE() 66 | IF(LIBVLCQT_FIND_REQUIRED) 67 | MESSAGE(FATAL_ERROR "Could not find libvlc-qt") 68 | ENDIF() 69 | ENDIF() 70 | -------------------------------------------------------------------------------- /simple-player/cmake/cmake_uninstall.cmake.in: -------------------------------------------------------------------------------- 1 | # 2 | # VLC-Qt Simple Player 3 | # Copyright (C) 2015 Tadej Novak 4 | # 5 | 6 | IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 7 | MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") 8 | ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 9 | 10 | FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) 11 | STRING(REGEX REPLACE "\n" ";" files "${files}") 12 | FOREACH(file ${files}) 13 | MESSAGE(STATUS "Uninstalling \"${file}\"") 14 | IF(EXISTS "${file}") 15 | EXEC_PROGRAM( 16 | "@CMAKE_COMMAND@" ARGS "-E remove \"${file}\"" 17 | OUTPUT_VARIABLE rm_out 18 | RETURN_VALUE rm_retval 19 | ) 20 | IF("${rm_retval}" STREQUAL 0) 21 | ELSE("${rm_retval}" STREQUAL 0) 22 | MESSAGE(FATAL_ERROR "Problem when removing \"${file}\"") 23 | ENDIF("${rm_retval}" STREQUAL 0) 24 | ELSE(EXISTS "${file}") 25 | MESSAGE(STATUS "File \"${file}\" does not exist.") 26 | ENDIF(EXISTS "${file}") 27 | ENDFOREACH(file) 28 | -------------------------------------------------------------------------------- /simple-player/osx/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # VLC-Qt Simple Player 3 | # Copyright (C) 2015 Tadej Novak 4 | # 5 | 6 | SET(CMAKE_MACOSX_RPATH ON) 7 | SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) 8 | SET(CMAKE_OSX_ARCHITECTURES x86_64) 9 | 10 | IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 11 | ADD_CUSTOM_TARGET(dmg 12 | "${QT_BIN_DIR}/macdeployqt" "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app" -dmg) 13 | ENDIF() 14 | 15 | CONFIGURE_FILE( 16 | ${CMAKE_SOURCE_DIR}/osx/Info.plist.in 17 | ${CMAKE_BINARY_DIR}/osx/Info.plist 18 | ) 19 | 20 | # Installation 21 | INSTALL(DIRECTORY ${VLCQtCoreFramework} DESTINATION "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app/Contents/Frameworks") 22 | INSTALL(DIRECTORY ${VLCQtWidgetsFramework} DESTINATION "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app/Contents/Frameworks") 23 | -------------------------------------------------------------------------------- /simple-player/osx/Info.plist.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrincipalClass 6 | NSApplication 7 | NSHighResolutionCapable 8 | True 9 | CFBundlePackageType 10 | APPL 11 | CFBundleDevelopmentRegion 12 | English 13 | CFBundleExecutable 14 | @PROJECT_NAME@ 15 | CFBundleGetInfoString 16 | @PROJECT_NAME@ @PROJECT_VERSION@ 17 | CFBundleIconFile 18 | @MACOSX_BUNDLE_ICON_FILE@ 19 | CFBundleIdentifier 20 | @MACOSX_BUNDLE_GUI_IDENTIFIER@ 21 | CFBundleInfoDictionaryVersion 22 | 6.0 23 | CFBundleLongVersionString 24 | @PROJECT_NAME@ @PROJECT_VERSION@ 25 | CFBundleName 26 | @PROJECT_NAME@ 27 | CFBundlePackageType 28 | APPL 29 | CFBundleShortVersionString 30 | @PROJECT_VERSION@ 31 | CFBundleSignature 32 | ???? 33 | CFBundleVersion 34 | @PROJECT_NAME@ @PROJECT_VERSION@ 35 | NSHumanReadableCopyright 36 | @MACOSX_BUNDLE_COPYRIGHT@ 37 | 38 | 39 | -------------------------------------------------------------------------------- /simple-player/osx/Project.iconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/simple-player/osx/Project.iconset/icon_128x128.png -------------------------------------------------------------------------------- /simple-player/osx/Project.iconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/simple-player/osx/Project.iconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /simple-player/osx/Project.iconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/simple-player/osx/Project.iconset/icon_16x16.png -------------------------------------------------------------------------------- /simple-player/osx/Project.iconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/simple-player/osx/Project.iconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /simple-player/osx/Project.iconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/simple-player/osx/Project.iconset/icon_256x256.png -------------------------------------------------------------------------------- /simple-player/osx/Project.iconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/simple-player/osx/Project.iconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /simple-player/osx/Project.iconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/simple-player/osx/Project.iconset/icon_32x32.png -------------------------------------------------------------------------------- /simple-player/osx/Project.iconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/simple-player/osx/Project.iconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /simple-player/osx/Project.iconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/simple-player/osx/Project.iconset/icon_512x512.png -------------------------------------------------------------------------------- /simple-player/osx/Project.iconset/icon_512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/simple-player/osx/Project.iconset/icon_512x512@2x.png -------------------------------------------------------------------------------- /simple-player/simple-player.pro: -------------------------------------------------------------------------------- 1 | # 2 | # VLC-Qt Simple Player 3 | # Copyright (C) 2015 Tadej Novak 4 | # 5 | 6 | TEMPLATE = subdirs 7 | 8 | SUBDIRS += src 9 | -------------------------------------------------------------------------------- /simple-player/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # VLC-Qt Simple Player 3 | # Copyright (C) 2015 Tadej Novak 4 | # 5 | # List of sources 6 | # 7 | # Define the UI source files 8 | SET(Project_UIs 9 | EqualizerDialog.ui 10 | SimplePlayer.ui 11 | ) 12 | 13 | # Define the C++ source files 14 | SET(Project_Srcs 15 | main.cpp 16 | EqualizerDialog.cpp 17 | SimplePlayer.cpp 18 | ) 19 | 20 | 21 | # 22 | # Compiler settings 23 | # 24 | # This needs to be added in order for #include to work inside .cpp files 25 | INCLUDE_DIRECTORIES( 26 | ${CMAKE_SOURCE_DIR}/src 27 | ${CMAKE_BINARY_DIR}/src 28 | ) 29 | 30 | # Compile resources with windres 31 | IF(MINGW) 32 | ADD_CUSTOM_COMMAND( 33 | OUTPUT ${CMAKE_BINARY_DIR}/windows/Project.obj 34 | COMMAND ${CMAKE_RC_COMPILER} 35 | -i ${CMAKE_BINARY_DIR}/windows/Project.rc 36 | -o ${CMAKE_BINARY_DIR}/windows/Project.obj 37 | WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/windows" 38 | ) 39 | SET(Project_Srcs ${Project_Srcs} ${CMAKE_BINARY_DIR}/windows/Project.obj) 40 | ENDIF() 41 | 42 | IF(MSVC) 43 | SET(Project_Srcs ${Project_Srcs} ${CMAKE_BINARY_DIR}/windows/Project.rc) 44 | ENDIF() 45 | 46 | # Build iconset on OS X 47 | IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 48 | SET(Project_Iconset ${CMAKE_SOURCE_DIR}/osx/Project.iconset) 49 | 50 | FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/src/${PROJECT_NAME}.app/Contents/Resources) 51 | FIND_PROGRAM(ICONUTIL_EXECUTABLE NAMES iconutil) 52 | ADD_CUSTOM_COMMAND( 53 | OUTPUT ${CMAKE_BINARY_DIR}/src/${PROJECT_NAME}.app/Contents/Resources/${PROJECT_NAME}.icns 54 | COMMAND ${ICONUTIL_EXECUTABLE} --convert icns --output ${CMAKE_BINARY_DIR}/src/${PROJECT_NAME}.app/Contents/Resources/${PROJECT_NAME}.icns 55 | ${Project_Iconset} 56 | ) 57 | SET(Project_Srcs ${Project_Srcs} ${CMAKE_BINARY_DIR}/src/${PROJECT_NAME}.app/Contents/Resources/${PROJECT_NAME}.icns) 58 | ENDIF() 59 | 60 | # This line tells cmake to create the Project program. 61 | ADD_EXECUTABLE(${PROJECT_NAME} MACOSX_BUNDLE WIN32 ${Project_UIs} ${Project_Srcs}) 62 | 63 | # Use custom Info.plist 64 | IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") 65 | SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${QT_LIB_DIR};@executable_path/../Frameworks") 66 | SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_BINARY_DIR}/osx/Info.plist") 67 | ENDIF() 68 | 69 | # Here the needed Qt Libraries are added to the link command. 70 | TARGET_LINK_LIBRARIES(${PROJECT_NAME} Qt5::Widgets VLCQt::Widgets) 71 | 72 | 73 | # 74 | # Installation 75 | # 76 | INSTALL(TARGETS ${PROJECT_NAME} 77 | RUNTIME DESTINATION ${PROJECT_INSTALL_BIN_DIR} 78 | BUNDLE DESTINATION . 79 | ) 80 | -------------------------------------------------------------------------------- /simple-player/src/EqualizerDialog.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * VLC-Qt Simple Player 3 | * Copyright (C) 2015 Tadej Novak 4 | */ 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | #include "EqualizerDialog.h" 11 | 12 | EqualizerDialog::EqualizerDialog(QWidget *parent) 13 | : QDialog(parent), 14 | _mediaPlayer(0) 15 | { 16 | this->setupUi(this); 17 | 18 | // Default equalizer has ten bands 19 | _mapSliders.insert(firstBand, 0); 20 | _mapSliders.insert(secondBand, 1); 21 | _mapSliders.insert(thirdBand, 2); 22 | _mapSliders.insert(fourthBand, 3); 23 | _mapSliders.insert(fifthBand, 4); 24 | _mapSliders.insert(sixthBand, 5); 25 | _mapSliders.insert(seventhBand, 6); 26 | _mapSliders.insert(eighthBand, 7); 27 | _mapSliders.insert(ninethBand, 8); 28 | _mapSliders.insert(tenthBand, 9); 29 | 30 | // Set sliders value with unit 31 | for (QSlider *slider : findChildren()) { 32 | QLabel *valueLabel = findChild(slider->objectName() + "Label"); 33 | connect(slider, &QSlider::valueChanged, this, [=](int value) { 34 | valueLabel->setText(QString::number(value) + " dB"); 35 | }); 36 | } 37 | 38 | connect(toggleEqualizer, &QCheckBox::toggled, this, &EqualizerDialog::toggle); 39 | } 40 | 41 | void EqualizerDialog::setMediaPlayer(VlcMediaPlayer *mediaPlayer) 42 | { 43 | _mediaPlayer = mediaPlayer; 44 | auto equalizer = _mediaPlayer->equalizer(); 45 | for (uint i = 0; i < equalizer->presetCount(); i++) { 46 | presetComboBox->addItem(equalizer->presetNameAt(i)); 47 | } 48 | 49 | // Create local connections 50 | connect(presetComboBox, static_cast(&QComboBox::currentIndexChanged), _mediaPlayer->equalizer(), &VlcEqualizer::loadFromPreset); 51 | connect(_mediaPlayer->equalizer(), &VlcEqualizer::presetLoaded, this, &EqualizerDialog::applySelectedPreset); 52 | 53 | connect(preamp, &QSlider::valueChanged, equalizer, &VlcEqualizer::setPreamplification); 54 | for (QSlider *slider : findChildren()) { 55 | if (slider != preamp) { 56 | connect(slider, &QSlider::valueChanged, this, &EqualizerDialog::applyChangesForBand); 57 | } 58 | } 59 | } 60 | 61 | void EqualizerDialog::applyChangesForBand(int value) 62 | { 63 | int bandIndex = _mapSliders.value(static_cast(sender())); 64 | _mediaPlayer->equalizer()->setAmplificationForBandAt((float)value, bandIndex); 65 | } 66 | 67 | void EqualizerDialog::applySelectedPreset() 68 | { 69 | auto equalizer = _mediaPlayer->equalizer(); 70 | 71 | disconnect(preamp, 0, equalizer, 0); 72 | for (QSlider *slider : findChildren()) { 73 | if (slider == preamp) { 74 | slider->setValue(equalizer->preamplification()); 75 | } else { 76 | disconnect(slider, &QSlider::valueChanged, this, &EqualizerDialog::applyChangesForBand); 77 | slider->setValue(equalizer->amplificationForBandAt(_mapSliders.value(slider))); 78 | connect(slider, &QSlider::valueChanged, this, &EqualizerDialog::applyChangesForBand); 79 | } 80 | } 81 | connect(preamp, &QSlider::valueChanged, equalizer, &VlcEqualizer::setPreamplification); 82 | } 83 | 84 | void EqualizerDialog::toggle(bool checked) 85 | { 86 | for (QSlider *slider : findChildren()) { 87 | slider->setEnabled(checked); 88 | } 89 | presetComboBox->setEnabled(checked); 90 | _mediaPlayer->equalizer()->setEnabled(checked); 91 | } 92 | 93 | -------------------------------------------------------------------------------- /simple-player/src/EqualizerDialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | * VLC-Qt Simple Player 3 | * Copyright (C) 2015 Tadej Novak 4 | */ 5 | 6 | #ifndef EQUALIZERDIALOG_H 7 | #define EQUALIZERDIALOG_H 8 | 9 | #include 10 | 11 | #include "ui_EqualizerDialog.h" 12 | 13 | class VlcMediaPlayer; 14 | 15 | class EqualizerDialog : public QDialog, Ui::EqualizerDialog 16 | { 17 | Q_OBJECT 18 | public: 19 | explicit EqualizerDialog(QWidget *parent = 0); 20 | 21 | void setMediaPlayer(VlcMediaPlayer *mediaPlayer); 22 | 23 | public slots: 24 | void applyChangesForBand(int value); 25 | 26 | void applySelectedPreset(); 27 | 28 | void toggle(bool checked); 29 | 30 | private: 31 | QMap _mapSliders; 32 | VlcMediaPlayer *_mediaPlayer; 33 | }; 34 | 35 | #endif // EQUALIZERDIALOG_H 36 | -------------------------------------------------------------------------------- /simple-player/src/EqualizerDialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | EqualizerDialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 639 10 | 304 11 | 12 | 13 | 14 | Equalizer 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Activate 23 | 24 | 25 | 26 | 27 | 28 | 29 | Preset 30 | 31 | 32 | 33 | 34 | 35 | 36 | false 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | false 48 | 49 | 50 | -20 51 | 52 | 53 | 20 54 | 55 | 56 | Qt::Vertical 57 | 58 | 59 | 60 | 61 | 62 | 63 | false 64 | 65 | 66 | -20 67 | 68 | 69 | 20 70 | 71 | 72 | Qt::Vertical 73 | 74 | 75 | 76 | 77 | 78 | 79 | false 80 | 81 | 82 | -20 83 | 84 | 85 | 20 86 | 87 | 88 | Qt::Vertical 89 | 90 | 91 | 92 | 93 | 94 | 95 | false 96 | 97 | 98 | -20 99 | 100 | 101 | 20 102 | 103 | 104 | Qt::Vertical 105 | 106 | 107 | 108 | 109 | 110 | 111 | false 112 | 113 | 114 | -20 115 | 116 | 117 | 20 118 | 119 | 120 | Qt::Vertical 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 8 129 | 130 | 131 | 132 | Preamp 133 | 134 | 135 | Qt::AlignCenter 136 | 137 | 138 | 139 | 140 | 141 | 142 | false 143 | 144 | 145 | -20 146 | 147 | 148 | 20 149 | 150 | 151 | Qt::Vertical 152 | 153 | 154 | 155 | 156 | 157 | 158 | false 159 | 160 | 161 | -20 162 | 163 | 164 | 20 165 | 166 | 167 | Qt::Vertical 168 | 169 | 170 | 171 | 172 | 173 | 174 | false 175 | 176 | 177 | -20 178 | 179 | 180 | 20 181 | 182 | 183 | Qt::Vertical 184 | 185 | 186 | 187 | 188 | 189 | 190 | false 191 | 192 | 193 | -20 194 | 195 | 196 | 20 197 | 198 | 199 | Qt::Vertical 200 | 201 | 202 | 203 | 204 | 205 | 206 | false 207 | 208 | 209 | -20 210 | 211 | 212 | 20 213 | 214 | 215 | Qt::Vertical 216 | 217 | 218 | 219 | 220 | 221 | 222 | false 223 | 224 | 225 | -20 226 | 227 | 228 | 20 229 | 230 | 231 | Qt::Vertical 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 8 240 | 241 | 242 | 243 | 0 dB 244 | 245 | 246 | Qt::AlignCenter 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 8 255 | 256 | 257 | 258 | 0 dB 259 | 260 | 261 | Qt::AlignCenter 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 8 270 | 271 | 272 | 273 | 60 Hz 274 | 275 | 276 | Qt::AlignCenter 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 8 285 | 286 | 287 | 288 | 170 Hz 289 | 290 | 291 | Qt::AlignCenter 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 8 300 | 301 | 302 | 303 | 310 Hz 304 | 305 | 306 | Qt::AlignCenter 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 8 315 | 316 | 317 | 318 | 600 Hz 319 | 320 | 321 | Qt::AlignCenter 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 8 330 | 331 | 332 | 333 | 1 KHz 334 | 335 | 336 | Qt::AlignCenter 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 8 345 | 346 | 347 | 348 | 3 KHz 349 | 350 | 351 | Qt::AlignCenter 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 8 360 | 361 | 362 | 363 | 6 KHz 364 | 365 | 366 | Qt::AlignCenter 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 8 375 | 376 | 377 | 378 | 12 KHz 379 | 380 | 381 | Qt::AlignCenter 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 8 390 | 391 | 392 | 393 | 14 KHz 394 | 395 | 396 | Qt::AlignCenter 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 8 405 | 406 | 407 | 408 | 16 KHz 409 | 410 | 411 | Qt::AlignCenter 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 8 420 | 421 | 422 | 423 | 0 dB 424 | 425 | 426 | Qt::AlignCenter 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 8 435 | 436 | 437 | 438 | 0 dB 439 | 440 | 441 | Qt::AlignCenter 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 8 450 | 451 | 452 | 453 | 0 dB 454 | 455 | 456 | Qt::AlignCenter 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 8 465 | 466 | 467 | 468 | 0 dB 469 | 470 | 471 | Qt::AlignCenter 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 8 480 | 481 | 482 | 483 | 0 dB 484 | 485 | 486 | Qt::AlignCenter 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 8 495 | 496 | 497 | 498 | 0 dB 499 | 500 | 501 | Qt::AlignCenter 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 8 510 | 511 | 512 | 513 | 0 dB 514 | 515 | 516 | Qt::AlignCenter 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 8 525 | 526 | 527 | 528 | 0 dB 529 | 530 | 531 | Qt::AlignCenter 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 8 540 | 541 | 542 | 543 | 0 dB 544 | 545 | 546 | Qt::AlignCenter 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | -------------------------------------------------------------------------------- /simple-player/src/SimplePlayer.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * VLC-Qt Simple Player 3 | * Copyright (C) 2015 Tadej Novak 4 | */ 5 | 6 | #include 7 | #include 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #include "EqualizerDialog.h" 15 | 16 | #include "SimplePlayer.h" 17 | #include "ui_SimplePlayer.h" 18 | 19 | SimplePlayer::SimplePlayer(QWidget *parent) 20 | : QMainWindow(parent), 21 | ui(new Ui::SimplePlayer), 22 | _media(0), 23 | _equalizerDialog(new EqualizerDialog(this)) 24 | { 25 | ui->setupUi(this); 26 | 27 | _instance = new VlcInstance(VlcCommon::args(), this); 28 | _player = new VlcMediaPlayer(_instance); 29 | _player->setVideoWidget(ui->video); 30 | _equalizerDialog->setMediaPlayer(_player); 31 | 32 | ui->video->setMediaPlayer(_player); 33 | ui->volume->setMediaPlayer(_player); 34 | ui->volume->setVolume(50); 35 | ui->seek->setMediaPlayer(_player); 36 | 37 | connect(ui->actionOpenLocal, &QAction::triggered, this, &SimplePlayer::openLocal); 38 | connect(ui->actionOpenUrl, &QAction::triggered, this, &SimplePlayer::openUrl); 39 | connect(ui->actionPause, &QAction::toggled, _player, &VlcMediaPlayer::togglePause); 40 | connect(ui->actionStop, &QAction::triggered, _player, &VlcMediaPlayer::stop); 41 | connect(ui->openLocal, &QPushButton::clicked, this, &SimplePlayer::openLocal); 42 | connect(ui->openUrl, &QPushButton::clicked, this, &SimplePlayer::openUrl); 43 | connect(ui->pause, &QPushButton::toggled, ui->actionPause, &QAction::toggle); 44 | connect(ui->stop, &QPushButton::clicked, _player, &VlcMediaPlayer::stop); 45 | connect(ui->equalizer, &QPushButton::clicked, _equalizerDialog, &EqualizerDialog::show); 46 | } 47 | 48 | SimplePlayer::~SimplePlayer() 49 | { 50 | delete _player; 51 | delete _media; 52 | delete _instance; 53 | delete ui; 54 | } 55 | 56 | void SimplePlayer::openLocal() 57 | { 58 | QString file = 59 | QFileDialog::getOpenFileName(this, tr("Open file"), 60 | QDir::homePath(), 61 | tr("Multimedia files(*)")); 62 | 63 | if (file.isEmpty()) 64 | return; 65 | 66 | _media = new VlcMedia(file, true, _instance); 67 | 68 | _player->open(_media); 69 | } 70 | 71 | void SimplePlayer::openUrl() 72 | { 73 | QString url = 74 | QInputDialog::getText(this, tr("Open Url"), tr("Enter the URL you want to play")); 75 | 76 | if (url.isEmpty()) 77 | return; 78 | 79 | _media = new VlcMedia(url, _instance); 80 | 81 | _player->open(_media); 82 | } 83 | -------------------------------------------------------------------------------- /simple-player/src/SimplePlayer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * VLC-Qt Simple Player 3 | * Copyright (C) 2015 Tadej Novak 4 | */ 5 | 6 | #ifndef SIMPLEPLAYER_H_ 7 | #define SIMPLEPLAYER_H_ 8 | 9 | #include 10 | 11 | namespace Ui { 12 | class SimplePlayer; 13 | } 14 | 15 | class VlcInstance; 16 | class VlcMedia; 17 | class VlcMediaPlayer; 18 | 19 | class EqualizerDialog; 20 | 21 | class SimplePlayer : public QMainWindow 22 | { 23 | Q_OBJECT 24 | public: 25 | explicit SimplePlayer(QWidget *parent = 0); 26 | ~SimplePlayer(); 27 | 28 | private slots: 29 | void openLocal(); 30 | void openUrl(); 31 | 32 | private: 33 | Ui::SimplePlayer *ui; 34 | 35 | VlcInstance *_instance; 36 | VlcMedia *_media; 37 | VlcMediaPlayer *_player; 38 | 39 | EqualizerDialog *_equalizerDialog; 40 | }; 41 | 42 | #endif // SIMPLEPLAYER_H_ 43 | -------------------------------------------------------------------------------- /simple-player/src/SimplePlayer.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | SimplePlayer 4 | 5 | 6 | 7 | 0 8 | 0 9 | 640 10 | 480 11 | 12 | 13 | 14 | Demo Player 15 | 16 | 17 | 18 | 19 | 20 | 21 | Open local file 22 | 23 | 24 | 25 | 26 | 27 | 28 | Open URL 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | Stop 39 | 40 | 41 | 42 | 43 | 44 | 45 | Pause 46 | 47 | 48 | true 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 0 57 | 0 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 0 67 | 0 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | Equalizer 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 0 85 | 0 86 | 640 87 | 22 88 | 89 | 90 | 91 | 92 | File 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | Media 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | Quit 113 | 114 | 115 | 116 | 117 | true 118 | 119 | 120 | Pause 121 | 122 | 123 | 124 | 125 | Stop 126 | 127 | 128 | 129 | 130 | Open local file 131 | 132 | 133 | 134 | 135 | Open URL 136 | 137 | 138 | 139 | 140 | 141 | VlcWidgetVideo 142 | QWidget 143 |
VLCQtWidgets/WidgetVideo.h
144 | 1 145 | 146 | fullscreen() 147 | toggleFullscreen() 148 | 149 |
150 | 151 | VlcWidgetVolumeSlider 152 | QWidget 153 |
VLCQtWidgets/WidgetVolumeSlider.h
154 | 1 155 | 156 | mute() 157 | volumeUp() 158 | volumeDown() 159 | 160 |
161 | 162 | VlcWidgetSeek 163 | QWidget 164 |
VLCQtWidgets/WidgetSeek.h
165 | 1 166 |
167 |
168 | 169 | 170 | 171 | actionQuit 172 | triggered() 173 | SimplePlayer 174 | close() 175 | 176 | 177 | -1 178 | -1 179 | 180 | 181 | 399 182 | 299 183 | 184 | 185 | 186 | 187 |
188 | -------------------------------------------------------------------------------- /simple-player/src/main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * VLC-Qt Simple Player 3 | * Copyright (C) 2015 Tadej Novak 4 | */ 5 | 6 | #include 7 | #include 8 | 9 | #include 10 | 11 | #include "SimplePlayer.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | QCoreApplication::setApplicationName("VLC-Qt Simple Player"); 16 | QCoreApplication::setAttribute(Qt::AA_X11InitThreads); 17 | 18 | QApplication app(argc, argv); 19 | VlcCommon::setPluginPath(app.applicationDirPath() + "/plugins"); 20 | 21 | SimplePlayer mainWindow; 22 | mainWindow.show(); 23 | 24 | return app.exec(); 25 | } 26 | -------------------------------------------------------------------------------- /simple-player/src/src.pro: -------------------------------------------------------------------------------- 1 | # 2 | # VLC-Qt Simple Player 3 | # Copyright (C) 2015 Tadej Novak 4 | # 5 | 6 | TARGET = simple-player 7 | TEMPLATE = app 8 | CONFIG += c++11 9 | 10 | QT += widgets 11 | 12 | SOURCES += main.cpp \ 13 | SimplePlayer.cpp \ 14 | EqualizerDialog.cpp 15 | 16 | HEADERS += SimplePlayer.h \ 17 | EqualizerDialog.h 18 | 19 | FORMS += SimplePlayer.ui \ 20 | EqualizerDialog.ui 21 | 22 | LIBS += -lVLCQtCore -lVLCQtWidgets 23 | 24 | 25 | # Edit below for custom library location 26 | LIBS += -L/Users/tadej/workspace/tanoprojects/install/vlc-qt/lib -lVLCQtCore -lVLCQtWidgets 27 | INCLUDEPATH += /Users/tadej/workspace/tanoprojects/install/vlc-qt/include 28 | -------------------------------------------------------------------------------- /simple-player/windows/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # VLC-Qt Simple Player 3 | # Copyright (C) 2015 Tadej Novak 4 | # 5 | # Windows Extra 6 | 7 | IF(MINGW OR MSVC) 8 | CONFIGURE_FILE( 9 | ${CMAKE_SOURCE_DIR}/windows/Project.rc.in 10 | ${CMAKE_BINARY_DIR}/windows/Project.rc 11 | ) 12 | ENDIF() 13 | 14 | IF(CMAKE_BUILD_TYPE MATCHES Debug) 15 | SET(VLCQtPostfix "d") 16 | ENDIF() 17 | IF(MINGW) 18 | SET(VLCQtPrefix "lib") 19 | ENDIF() 20 | 21 | SET(VLCQtLibs 22 | ${VLCQtCoreLocation}/bin/${VLCQtPrefix}VLCQtCore${VLCQtPostfix}.dll 23 | ${VLCQtWidgetsLocation}/bin/${VLCQtPrefix}VLCQtWidgets${VLCQtPostfix}.dll 24 | ${VLCQtCoreLocation}/bin/libvlc.dll 25 | ${VLCQtCoreLocation}/bin/libvlccore.dll 26 | ) 27 | 28 | SET(VLCQtPlugins ${VLCQtCoreLocation}/bin/plugins) 29 | 30 | FILE(GLOB VLCGcc "${VLCQtCoreLocation}/bin/libgcc_s_*-1.dll") 31 | IF(VLCGcc) 32 | SET(ExtraLibs 33 | ${VLCGcc} 34 | ) 35 | ENDIF() 36 | 37 | FILE(GLOB VLCStd "${VLCQtCoreLocation}/bin/libstdc++-6.dll") 38 | IF(VLCStd) 39 | SET(ExtraLibs 40 | ${ExtraLibs} 41 | ${VLCQtCoreLocation}/bin/libstdc++-6.dll 42 | ${VLCQtCoreLocation}/bin/libwinpthread-1.dll 43 | ) 44 | ENDIF() 45 | 46 | ADD_CUSTOM_TARGET(windows 47 | "${QT_BIN_DIR}/windeployqt.exe" "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_BIN_DIR}/${PROJECT_NAME}.exe") 48 | 49 | 50 | ################ 51 | # Installation # 52 | ################ 53 | INSTALL(FILES ${VLCQtLibs} DESTINATION "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_BIN_DIR}") 54 | INSTALL(DIRECTORY ${VLCQtPlugins} DESTINATION "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_BIN_DIR}") 55 | 56 | IF(VLCGcc OR VLCStd) 57 | INSTALL(FILES ${ExtraLibs} DESTINATION "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_BIN_DIR}") 58 | ENDIF() 59 | -------------------------------------------------------------------------------- /simple-player/windows/Project.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlc-qt/examples/2c29f1cd073a8f2cd8380dc1601103ed63075525/simple-player/windows/Project.ico -------------------------------------------------------------------------------- /simple-player/windows/Project.rc.in: -------------------------------------------------------------------------------- 1 | /** 2 | # VLC-Qt Simple Player 3 | # Copyright (C) 2015 Tadej Novak 4 | **/ 5 | 6 | #include 7 | 8 | IDI_ICON1 ICON DISCARDABLE "@CMAKE_SOURCE_DIR@/windows/Project.ico" 9 | 10 | VS_VERSION_INFO VERSIONINFO 11 | FILEVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0 12 | PRODUCTVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0 13 | FILEFLAGS 0x0L 14 | FILEFLAGSMASK 0x3fL 15 | FILEOS 0x00040004L 16 | FILETYPE 0x1L 17 | FILESUBTYPE 0x0L 18 | BEGIN 19 | BLOCK "StringFileInfo" 20 | BEGIN 21 | BLOCK "000004b0" 22 | BEGIN 23 | VALUE "CompanyName", "@WINDOWS_AUTHOR@" 24 | VALUE "FileDescription", "@WINDOWS_DESCRIPTION@" 25 | VALUE "FileVersion", "@PROJECT_VERSION@" 26 | VALUE "LegalCopyright", "@WINDOWS_COPYRIGHT@" 27 | VALUE "InternalName", "@PROJECT_NAME@" 28 | VALUE "OriginalFilename", "@PROJECT_NAME@.exe" 29 | VALUE "ProductName", "@PROJECT_NAME@" 30 | VALUE "ProductVersion", "@PROJECT_VERSION@" 31 | END 32 | END 33 | BLOCK "VarFileInfo" 34 | BEGIN 35 | VALUE "Translation", 0x0, 1200 36 | END 37 | END 38 | -------------------------------------------------------------------------------- /tools/ci/linux/after_success.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ev 3 | -------------------------------------------------------------------------------- /tools/ci/linux/before_install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ev 3 | 4 | # Setup display 5 | export DISPLAY=:99.0 6 | sh -e /etc/init.d/xvfb start 7 | 8 | # Prepare build environment 9 | mkdir dependencies 10 | mkdir install 11 | mkdir build 12 | -------------------------------------------------------------------------------- /tools/ci/linux/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ev 3 | 4 | # Install other dependencies 5 | pushd dependencies 6 | 7 | # Install CMake 3.2.2 8 | wget http://www.cmake.org/files/v3.2/cmake-3.2.2-Linux-x86_64.tar.gz --no-check-certificate 9 | 10 | tar xf cmake-3.2.2-Linux-x86_64.tar.gz 11 | 12 | # Install Qt 5.4.1 13 | wget http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_54/qt.54.gcc_64/5.4.1-0qt5_essentials.7z 14 | wget http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_54/qt.54.gcc_64/5.4.1-0qt5_essentials.7z.sha1 15 | wget http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_54/qt.54.gcc_64/5.4.1-0icu_53_1_ubuntu_11_10_64.7z 16 | wget http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_54/qt.54.gcc_64/5.4.1-0icu_53_1_ubuntu_11_10_64.7z.sha1 17 | 18 | 7z x 5.4.1-0qt5_essentials.7z > /dev/null 19 | 7z x 5.4.1-0icu_53_1_ubuntu_11_10_64.7z > /dev/null 20 | 21 | # Install VLC-Qt prepared for examples 22 | mkdir vlc-qt 23 | pushd vlc-qt 24 | curl -LO "https://googledrive.com/host/0B7I7Zg8w-HxRfmxSMmdhM3dTMGJnSklRX1c4ZkxmekJkcFplYnRLTU80R3Znd1VITkNueGs/vlc-qt_linux_examples.tar.bz2" 25 | tar xf vlc-qt_linux_examples.tar.bz2 26 | popd 27 | 28 | export CC="gcc-4.8" 29 | export CXX="g++-4.8" 30 | export PATH=$PWD/vlc-qt/bin/:$PWD/cmake-3.2.2-Linux-x86_64/bin/:$PWD/5.4/gcc_64/bin/:$PATH 31 | 32 | popd 33 | -------------------------------------------------------------------------------- /tools/ci/linux/script.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ev 3 | 4 | # Configure and build with Qt5 5 | pushd build 6 | cmake ../${EXAMPLE} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../install/ 7 | make 8 | make install 9 | popd 10 | 11 | # Prepare for deployment 12 | pushd install 13 | tar -jcf ${EXAMPLE}.tar.bz2 * 14 | popd 15 | -------------------------------------------------------------------------------- /tools/ci/osx/after_success.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ev 3 | -------------------------------------------------------------------------------- /tools/ci/osx/before_install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ev 3 | 4 | # Prepare build environment 5 | mkdir dependencies 6 | mkdir install 7 | mkdir build 8 | 9 | # Update homebrew 10 | brew update 11 | -------------------------------------------------------------------------------- /tools/ci/osx/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ev 3 | 4 | # Install from homebrew 5 | brew outdated cmake || brew upgrade cmake 6 | brew install qt5 p7zip 7 | 8 | # Install other dependencies 9 | pushd dependencies 10 | 11 | # Install VLC-Qt prepared for examples 12 | mkdir vlc-qt 13 | pushd vlc-qt 14 | curl -LO "https://googledrive.com/host/0B7I7Zg8w-HxRfmxSMmdhM3dTMGJnSklRX1c4ZkxmekJkcFplYnRLTU80R3Znd1VITkNueGs/vlc-qt_osx_examples.7z" 15 | 7z x vlc-qt_osx_examples.7z > /dev/null 16 | popd 17 | 18 | export PATH=$PWD/vlc-qt/bin/:/usr/local/opt/qt5/bin:$PATH 19 | 20 | popd 21 | -------------------------------------------------------------------------------- /tools/ci/osx/script.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ev 3 | 4 | # Configure and build release 5 | pushd build 6 | cmake ../${EXAMPLE}/ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../install/ 7 | make 8 | make install 9 | make dmg 10 | popd 11 | 12 | # Test execution 13 | # pushd install 14 | # ${EXAMPLE}.app/Contents/MacOS/${EXAMPLE} test 15 | # popd 16 | --------------------------------------------------------------------------------