Add CMake flag to enable / disable recorder
This commit is contained in:
parent
0bb5bfb930
commit
b0d0a0739e
@ -8,6 +8,7 @@ if(NOT (CMAKE_MAJOR_VERSION VERSION_LESS 3))
|
||||
endif()
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")
|
||||
include(CMakeDependentOption)
|
||||
|
||||
include(BuildTypeSTKRelease)
|
||||
if (NOT CMAKE_BUILD_TYPE)
|
||||
@ -21,6 +22,13 @@ option(CHECK_ASSETS "Check if assets are installed in ../stk-assets" ON)
|
||||
option(USE_SYSTEM_ANGELSCRIPT "Use system angelscript instead of built-in angelscript. If you enable this option, make sure to use a compatible version." OFF)
|
||||
option(ENABLE_NETWORK_MULTIPLAYER "Enable network multiplayer. This will replace the online profile GUI in the main menu with the network multiplayer GUI" OFF)
|
||||
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_RECORDER "Build opengl recorder" ON
|
||||
"NOT SERVER_ONLY;NOT USE_GLES2;NOT APPLE" OFF)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_RECORDER_WITH_SOUND "Build opengl recorder with sound" ON
|
||||
BUILD_RECORDER OFF)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_PULSE_WO_DL "If pulseaudio in your distro / system is optional, turn this off to load pulse with libdl"
|
||||
ON "BUILD_RECORDER_WITH_SOUND;UNIX" OFF)
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
option(USE_GLES2 "Use OpenGL ES2 renderer" OFF)
|
||||
endif()
|
||||
@ -74,6 +82,16 @@ if(SERVER_ONLY)
|
||||
add_definitions(-DNO_IRR_COMPILE_WITH_X11_)
|
||||
endif()
|
||||
|
||||
if(BUILD_RECORDER)
|
||||
add_definitions(-DENABLE_RECORDER)
|
||||
if(BUILD_RECORDER_WITH_SOUND)
|
||||
add_definitions(-DENABLE_REC_SOUND)
|
||||
if(BUILD_PULSE_WO_DL)
|
||||
add_definitions(-DENABLE_PULSE_WO_DL)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Build the Bullet physics library
|
||||
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/bullet")
|
||||
include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
|
||||
@ -111,7 +129,7 @@ if((WIN32 AND NOT MINGW) OR APPLE)
|
||||
set(PNG_LIBRARY png15_static)
|
||||
endif()
|
||||
|
||||
# Add jpeg-turbo library
|
||||
# Add jpeg library
|
||||
if (APPLE)
|
||||
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/jpeglib")
|
||||
include_directories("${PROJECT_SOURCE_DIR}/lib/jpeglib")
|
||||
@ -119,36 +137,33 @@ if (APPLE)
|
||||
set(JPEG_LIBRARY jpeglib)
|
||||
else()
|
||||
find_package(JPEG REQUIRED)
|
||||
find_library(TURBOJPEG_LIBRARY NAMES turbojpeg libturbojpeg PATHS "${PROJECT_SOURCE_DIR}/dependencies/lib")
|
||||
mark_as_advanced(TURBOJPEG_LIBRARY)
|
||||
include_directories(${JPEG_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
if(BUILD_RECORDER)
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(PULSEAUDIO libpulse)
|
||||
include_directories(${PULSEAUDIO_INCLUDEDIR})
|
||||
find_library(TURBOJPEG_LIBRARY NAMES turbojpeg libturbojpeg PATHS "${PROJECT_SOURCE_DIR}/dependencies/lib")
|
||||
mark_as_advanced(TURBOJPEG_LIBRARY)
|
||||
if(UNIX)
|
||||
pkg_check_modules(VPX vpx)
|
||||
else()
|
||||
find_path(VPX_INCLUDEDIR NAMES vpx/vpx_codec.h PATHS "${PROJECT_SOURCE_DIR}/dependencies/include")
|
||||
find_library(VPX_LIBRARIES NAMES libvpx PATHS "${PROJECT_SOURCE_DIR}/dependencies/lib")
|
||||
endif()
|
||||
include_directories(${VPX_INCLUDEDIR})
|
||||
if(BUILD_RECORDER_WITH_SOUND AND UNIX)
|
||||
pkg_check_modules(PULSEAUDIO libpulse)
|
||||
include_directories(${PULSEAUDIO_INCLUDEDIR})
|
||||
endif()
|
||||
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/libwebm")
|
||||
include_directories("${PROJECT_SOURCE_DIR}/lib/libwebm")
|
||||
endif()
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
pkg_check_modules(VPX vpx)
|
||||
else()
|
||||
find_path(VPX_INCLUDEDIR NAMES vpx/vpx_codec.h PATHS "${PROJECT_SOURCE_DIR}/dependencies/include")
|
||||
find_library(VPX_LIBRARIES NAMES libvpx PATHS "${PROJECT_SOURCE_DIR}/dependencies/lib")
|
||||
endif()
|
||||
|
||||
include_directories(${VPX_INCLUDEDIR})
|
||||
|
||||
if(NOT SERVER_ONLY AND NOT USE_GLES2)
|
||||
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/graphics_utils")
|
||||
include_directories("${PROJECT_SOURCE_DIR}/lib/graphics_utils")
|
||||
endif()
|
||||
|
||||
if(NOT SERVER_ONLY AND NOT USE_GLES2)
|
||||
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/libwebm")
|
||||
include_directories("${PROJECT_SOURCE_DIR}/lib/libwebm")
|
||||
endif()
|
||||
|
||||
# Build the irrlicht library
|
||||
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/irrlicht")
|
||||
include_directories("${PROJECT_SOURCE_DIR}/lib/irrlicht/include")
|
||||
@ -408,14 +423,14 @@ target_link_libraries(supertuxkart
|
||||
|
||||
if(NOT SERVER_ONLY)
|
||||
if(NOT USE_GLES2)
|
||||
target_link_libraries(supertuxkart ${OPENGL_LIBRARIES} glew graphics_utils webm)
|
||||
target_link_libraries(supertuxkart ${OPENGL_LIBRARIES} glew graphics_utils)
|
||||
else()
|
||||
target_link_libraries(supertuxkart EGL GLESv2)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
target_link_libraries(supertuxkart dl ${X11_LIBRARIES} ${XRANDR_LIBRARIES})
|
||||
target_link_libraries(supertuxkart ${X11_LIBRARIES} ${XRANDR_LIBRARIES})
|
||||
if(USE_LIBBFD)
|
||||
target_link_libraries(supertuxkart ${LIBBFD_LIBRARIES})
|
||||
endif()
|
||||
@ -425,6 +440,17 @@ if(UNIX AND NOT APPLE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(BUILD_RECORDER)
|
||||
target_link_libraries(supertuxkart webm ${TURBOJPEG_LIBRARY} ${VPX_LIBRARIES})
|
||||
if(BUILD_RECORDER_WITH_SOUND)
|
||||
if(BUILD_PULSE_WO_DL)
|
||||
target_link_libraries(supertuxkart ${PULSEAUDIO_LIBRARIES})
|
||||
else()
|
||||
target_link_libraries(supertuxkart dl)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# FreeBSD does not search in /usr/local/lib, but at least Freetype is installed there :(
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib")
|
||||
|
@ -27,6 +27,11 @@ if(APPLE AND NOT OGGVORBIS_VORBISFILE_LIBRARY)
|
||||
set(OGGVORBIS_VORBISFILE_LIBRARY ${OGGVORBIS_VORBIS_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(APPLE AND NOT OGGVORBIS_VORBISENC_LIBRARY)
|
||||
# Seems to be the same on Apple systems
|
||||
set(OGGVORBIS_VORBISENC_LIBRARY ${OGGVORBIS_VORBIS_LIBRARY})
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(OggVorbis DEFAULT_MSG
|
||||
OGGVORBIS_OGG_INCLUDE_DIR OGGVORBIS_VORBIS_INCLUDE_DIR
|
||||
|
@ -169,7 +169,7 @@ IrrDriver::~IrrDriver()
|
||||
#endif
|
||||
delete m_wind;
|
||||
delete m_renderer;
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2))
|
||||
#ifdef ENABLE_RECORDER
|
||||
Recorder::destroyRecorder();
|
||||
#endif
|
||||
} // ~IrrDriver
|
||||
@ -926,7 +926,7 @@ void IrrDriver::applyResolutionSettings()
|
||||
// (we're sure to update main.cpp at some point and forget this one...)
|
||||
VAOManager::getInstance()->kill();
|
||||
STKTexManager::getInstance()->kill();
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2))
|
||||
#ifdef ENABLE_RECORDER
|
||||
Recorder::destroyRecorder();
|
||||
m_recording = false;
|
||||
#endif
|
||||
@ -1894,7 +1894,7 @@ void IrrDriver::update(float dt)
|
||||
// menu.
|
||||
//if(World::getWorld() && World::getWorld()->isRacePhase())
|
||||
// printRenderStats();
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2))
|
||||
#ifdef ENABLE_RECORDER
|
||||
if (m_recording)
|
||||
Recorder::captureFrameBufferImage();
|
||||
#endif
|
||||
@ -1903,7 +1903,7 @@ void IrrDriver::update(float dt)
|
||||
// ----------------------------------------------------------------------------
|
||||
void IrrDriver::setRecording(bool val)
|
||||
{
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2))
|
||||
#ifdef ENABLE_RECORDER
|
||||
if (!CVS->isARBPixelBufferObjectUsable())
|
||||
{
|
||||
Log::warn("irr_driver", "PBO extension missing, can't record video.");
|
||||
|
@ -15,7 +15,7 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2)) && !defined(WIN32)
|
||||
#if defined(ENABLE_REC_SOUND) && !defined(WIN32)
|
||||
|
||||
#include "recorder/vorbis_encoder.hpp"
|
||||
#include "utils/synchronised.hpp"
|
||||
@ -23,11 +23,14 @@
|
||||
#include "utils/vs.hpp"
|
||||
|
||||
#include <cstring>
|
||||
#include <dlfcn.h>
|
||||
#include <list>
|
||||
#include <pulse/pulseaudio.h>
|
||||
#include <string>
|
||||
|
||||
#ifndef ENABLE_PULSE_WO_DL
|
||||
#include <dlfcn.h>
|
||||
#endif
|
||||
|
||||
namespace Recorder
|
||||
{
|
||||
// ========================================================================
|
||||
@ -42,9 +45,10 @@ namespace Recorder
|
||||
pa_mainloop* m_loop;
|
||||
pa_context* m_context;
|
||||
pa_stream* m_stream;
|
||||
void* m_dl_handle;
|
||||
pa_sample_spec m_sample_spec;
|
||||
std::string m_default_sink;
|
||||
#ifndef ENABLE_PULSE_WO_DL
|
||||
void* m_dl_handle;
|
||||
|
||||
typedef pa_stream* (*pa_stream_new_t)(pa_context*, const char*,
|
||||
const pa_sample_spec*, const pa_channel_map*);
|
||||
@ -110,6 +114,7 @@ namespace Recorder
|
||||
|
||||
typedef void (*pa_mainloop_free_t)(pa_mainloop*);
|
||||
pa_mainloop_free_t pa_mainloop_free;
|
||||
#endif
|
||||
// --------------------------------------------------------------------
|
||||
PulseAudioData()
|
||||
{
|
||||
@ -117,6 +122,7 @@ namespace Recorder
|
||||
m_loop = NULL;
|
||||
m_context = NULL;
|
||||
m_stream = NULL;
|
||||
#ifndef ENABLE_PULSE_WO_DL
|
||||
m_dl_handle = NULL;
|
||||
pa_stream_new = NULL;
|
||||
pa_stream_connect_record = NULL;
|
||||
@ -138,8 +144,10 @@ namespace Recorder
|
||||
pa_context_disconnect = NULL;
|
||||
pa_context_unref = NULL;
|
||||
pa_mainloop_free = NULL;
|
||||
#endif
|
||||
} // PulseAudioData
|
||||
// --------------------------------------------------------------------
|
||||
#ifndef ENABLE_PULSE_WO_DL
|
||||
bool loadPulseAudioLibrary()
|
||||
{
|
||||
m_dl_handle = dlopen("libpulse.so", RTLD_LAZY);
|
||||
@ -311,9 +319,11 @@ namespace Recorder
|
||||
}
|
||||
return true;
|
||||
} // loadPulseAudioLibrary
|
||||
#endif
|
||||
// --------------------------------------------------------------------
|
||||
bool load()
|
||||
{
|
||||
#ifndef ENABLE_PULSE_WO_DL
|
||||
if (!loadPulseAudioLibrary())
|
||||
{
|
||||
if (m_dl_handle != NULL)
|
||||
@ -323,6 +333,7 @@ namespace Recorder
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
m_loop = pa_mainloop_new();
|
||||
if (m_loop == NULL)
|
||||
{
|
||||
@ -455,10 +466,12 @@ namespace Recorder
|
||||
{
|
||||
pa_mainloop_free(m_loop);
|
||||
}
|
||||
#ifndef ENABLE_PULSE_WO_DL
|
||||
if (m_dl_handle != NULL)
|
||||
{
|
||||
dlclose(m_dl_handle);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
} // ~PulseAudioData
|
||||
};
|
||||
|
@ -15,14 +15,18 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2)) && !defined(WIN32)
|
||||
#ifndef WIN32
|
||||
|
||||
#ifndef HEADER_PULSEAUDIO_RECORD_HPP
|
||||
#define HEADER_PULSEAUDIO_RECORD_HPP
|
||||
|
||||
namespace Recorder
|
||||
{
|
||||
#ifdef ENABLE_REC_SOUND
|
||||
void* audioRecorder(void *obj);
|
||||
#else
|
||||
inline void* audioRecorder(void *obj) { return NULL; }
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -15,7 +15,7 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2)) && !defined(WIN32)
|
||||
#ifdef ENABLE_RECORDER
|
||||
|
||||
#include "recorder/recorder_common.hpp"
|
||||
#include "config/user_config.hpp"
|
||||
|
@ -16,7 +16,7 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2))
|
||||
#ifdef ENABLE_RECORDER
|
||||
|
||||
#ifndef HEADER_RECORDER_COMMON_HPP
|
||||
#define HEADER_RECORDER_COMMON_HPP
|
||||
|
@ -15,7 +15,7 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2))
|
||||
#ifdef ENABLE_RECORDER
|
||||
|
||||
#include "recorder/vorbis_encoder.hpp"
|
||||
#include "recorder/recorder_common.hpp"
|
||||
|
@ -15,7 +15,7 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2))
|
||||
#ifdef ENABLE_RECORDER
|
||||
|
||||
#ifndef HEADER_VORBIS_ENCODE_HPP
|
||||
#define HEADER_VORBIS_ENCODE_HPP
|
||||
|
@ -15,7 +15,7 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2))
|
||||
#ifdef ENABLE_RECORDER
|
||||
|
||||
#include "recorder/vpx_encoder.hpp"
|
||||
#include "config/user_config.hpp"
|
||||
|
@ -16,7 +16,7 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2))
|
||||
#ifdef ENABLE_RECORDER
|
||||
|
||||
#ifndef HEADER_VPX_ENCODER_HPP
|
||||
#define HEADER_VPX_ENCODER_HPP
|
||||
|
@ -15,7 +15,7 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2)) && defined(WIN32)
|
||||
#if defined(ENABLE_REC_SOUND) && defined(WIN32)
|
||||
|
||||
#include "recorder/vorbis_encoder.hpp"
|
||||
#include "utils/synchronised.hpp"
|
||||
|
@ -15,14 +15,18 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2)) && defined(WIN32)
|
||||
#ifdef WIN32
|
||||
|
||||
#ifndef HEADER_WASAPI_RECORD_HPP
|
||||
#define HEADER_WASAPI_RECORD_HPP
|
||||
|
||||
namespace Recorder
|
||||
{
|
||||
#ifdef ENABLE_REC_SOUND
|
||||
void* audioRecorder(void *obj);
|
||||
#else
|
||||
inline void* audioRecorder(void *obj) { return NULL; }
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -15,7 +15,7 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2))
|
||||
#ifdef ENABLE_RECORDER
|
||||
|
||||
#include "recorder/webm_writer.hpp"
|
||||
#include "config/user_config.hpp"
|
||||
|
@ -16,7 +16,7 @@
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#if !(defined(SERVER_ONLY) || defined(USE_GLES2))
|
||||
#ifdef ENABLE_RECORDER
|
||||
|
||||
#ifndef HEADER_WEBM_WRITER_HPP
|
||||
#define HEADER_WEBM_WRITER_HPP
|
||||
|
Loading…
x
Reference in New Issue
Block a user