mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-20 07:53:51 +00:00
Merge commit 'upstream/master'
This commit is contained in:
commit
05382f206e
6 changed files with 59 additions and 94 deletions
|
@ -1,9 +1,9 @@
|
||||||
project(OpenMW)
|
project(OpenMW)
|
||||||
|
|
||||||
# Sound source selection
|
# Sound source selection
|
||||||
option(USE_AUDIERE "use Audiere for sound" ON)
|
option(USE_AUDIERE "use Audiere for sound" OFF)
|
||||||
option(USE_FFMPEG "use ffmpeg for sound" OFF)
|
option(USE_FFMPEG "use ffmpeg for sound" OFF)
|
||||||
option(USE_MPG123 "use mpg123 for sound" OFF)
|
option(USE_MPG123 "use mpg123 + libsndfile for sound" ON)
|
||||||
|
|
||||||
# We probably support older versions than this.
|
# We probably support older versions than this.
|
||||||
cmake_minimum_required(VERSION 2.6)
|
cmake_minimum_required(VERSION 2.6)
|
||||||
|
@ -103,6 +103,7 @@ set(OENGINE_GUI
|
||||||
if (USE_AUDIERE)
|
if (USE_AUDIERE)
|
||||||
set(MANGLE_SOUND_OUTPUT
|
set(MANGLE_SOUND_OUTPUT
|
||||||
${LIBDIR}/mangle/sound/sources/audiere_source.cpp
|
${LIBDIR}/mangle/sound/sources/audiere_source.cpp
|
||||||
|
${LIBDIR}/mangle/sound/sources/sample_reader.cpp
|
||||||
${LIBDIR}/mangle/stream/clients/audiere_file.cpp)
|
${LIBDIR}/mangle/stream/clients/audiere_file.cpp)
|
||||||
find_package(Audiere REQUIRED)
|
find_package(Audiere REQUIRED)
|
||||||
set(SOUND_INPUT_INCLUDES ${AUDIERE_INCLUDE_DIR})
|
set(SOUND_INPUT_INCLUDES ${AUDIERE_INCLUDE_DIR})
|
||||||
|
@ -121,10 +122,13 @@ endif (USE_FFMPEG)
|
||||||
|
|
||||||
if (USE_MPG123)
|
if (USE_MPG123)
|
||||||
set(MANGLE_SOUND_OUTPUT
|
set(MANGLE_SOUND_OUTPUT
|
||||||
${LIBDIR}/mangle/sound/sources/mpg123_source.cpp)
|
${LIBDIR}/mangle/sound/sources/mpg123_source.cpp
|
||||||
|
${LIBDIR}/mangle/sound/sources/libsndfile.cpp
|
||||||
|
${LIBDIR}/mangle/sound/sources/sample_reader.cpp)
|
||||||
find_package(MPG123 REQUIRED)
|
find_package(MPG123 REQUIRED)
|
||||||
set(SOUND_INPUT_INCLUDES ${MPG123_INCLUDE_DIR})
|
find_package(SNDFILE REQUIRED)
|
||||||
set(SOUND_INPUT_LIBRARY ${MPG123_LIBRARY})
|
set(SOUND_INPUT_INCLUDES ${MPG123_INCLUDE_DIR} ${SNDFILE_INCLUDE_DIR})
|
||||||
|
set(SOUND_INPUT_LIBRARY ${MPG123_LIBRARY} ${SNDFILE_LIBRARY})
|
||||||
set(SOUND_DEFINE -DOPENMW_USE_MPG123)
|
set(SOUND_DEFINE -DOPENMW_USE_MPG123)
|
||||||
endif (USE_MPG123)
|
endif (USE_MPG123)
|
||||||
|
|
||||||
|
@ -236,5 +240,3 @@ option(BUILD_ESMTOOL "build ESM inspector" ON)
|
||||||
if (BUILD_ESMTOOL)
|
if (BUILD_ESMTOOL)
|
||||||
add_subdirectory( apps/esmtool )
|
add_subdirectory( apps/esmtool )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_subdirectory( apps/soundtest )
|
|
||||||
|
|
|
@ -13,8 +13,9 @@ using namespace std;
|
||||||
|
|
||||||
#include <OgreRoot.h>
|
#include <OgreRoot.h>
|
||||||
|
|
||||||
/* Set up the sound manager to use Audiere, FFMPEG or MPG123 for
|
/* Set up the sound manager to use Audiere, FFMPEG or
|
||||||
input. The OPENMW_USE_x macros are set in CMakeLists.txt.
|
MPG123/libsndfile for input. The OPENMW_USE_x macros are set in
|
||||||
|
CMakeLists.txt.
|
||||||
*/
|
*/
|
||||||
#ifdef OPENMW_USE_AUDIERE
|
#ifdef OPENMW_USE_AUDIERE
|
||||||
#include <mangle/sound/filters/openal_audiere.hpp>
|
#include <mangle/sound/filters/openal_audiere.hpp>
|
||||||
|
@ -27,8 +28,8 @@ using namespace std;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef OPENMW_USE_MPG123
|
#ifdef OPENMW_USE_MPG123
|
||||||
#include <mangle/sound/filters/openal_mpg123.hpp>
|
#include <mangle/sound/filters/openal_sndfile_mpg123.hpp>
|
||||||
#define SOUND_FACTORY OpenAL_Mpg123_Factory
|
#define SOUND_FACTORY OpenAL_SndFile_Mpg123_Factory
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
using namespace Mangle::Sound;
|
using namespace Mangle::Sound;
|
||||||
|
@ -104,8 +105,8 @@ namespace MWSound
|
||||||
|
|
||||||
volume *= snd->data.volume / 255.0;
|
volume *= snd->data.volume / 255.0;
|
||||||
// These factors are not very fine tuned.
|
// These factors are not very fine tuned.
|
||||||
min = snd->data.minRange * 4;
|
min = snd->data.minRange * 7;
|
||||||
max = snd->data.maxRange * 1000;
|
max = snd->data.maxRange * 2000;
|
||||||
std::string file = dir + snd->sound;
|
std::string file = dir + snd->sound;
|
||||||
std::replace(file.begin(), file.end(), '\\', '/');
|
std::replace(file.begin(), file.end(), '\\', '/');
|
||||||
return file;
|
return file;
|
||||||
|
@ -188,7 +189,7 @@ namespace MWSound
|
||||||
// control volume etc.
|
// control volume etc.
|
||||||
SoundPtr music = mData->mgr->play(filename);
|
SoundPtr music = mData->mgr->play(filename);
|
||||||
music->setStreaming(true);
|
music->setStreaming(true);
|
||||||
music->setVolume(0.6);
|
music->setVolume(0.4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundManager::playSound (const std::string& soundId, float volume, float pitch)
|
void SoundManager::playSound (const std::string& soundId, float volume, float pitch)
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
project(SoundTest)
|
|
||||||
|
|
||||||
# local files
|
|
||||||
|
|
||||||
# Main executable
|
|
||||||
add_executable(sound_test main.cpp ${OENGINE_SOUND})
|
|
||||||
|
|
||||||
include_directories(${SOUND_INPUT_INCLUDES})
|
|
||||||
add_definitions(${SOUND_DEFINE})
|
|
||||||
|
|
||||||
target_link_libraries(sound_test
|
|
||||||
${OPENAL_LIBRARY}
|
|
||||||
${SOUND_INPUT_LIBRARY}
|
|
||||||
)
|
|
|
@ -1,65 +0,0 @@
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
#include <mangle/stream/servers/file_stream.hpp>
|
|
||||||
#include <mangle/sound/sources/stream_source.hpp>
|
|
||||||
#include <mangle/stream/filters/buffer_stream.hpp>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace Mangle::Stream;
|
|
||||||
using namespace Mangle::Sound;
|
|
||||||
|
|
||||||
#ifdef OPENMW_USE_AUDIERE
|
|
||||||
#include <mangle/sound/filters/openal_audiere.hpp>
|
|
||||||
AudiereLoader loader;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef OPENMW_USE_FFMPEG
|
|
||||||
#include <mangle/sound/filters/openal_ffmpeg.hpp>
|
|
||||||
FFMpegLoader loader;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef OPENMW_USE_MPG123
|
|
||||||
#include <mangle/sound/filters/openal_mpg123.hpp>
|
|
||||||
Mpg123Loader loader;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
OpenAL_Factory openal;
|
|
||||||
|
|
||||||
void play(const char* name)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
cout << "Opening " << name << "\n";
|
|
||||||
SampleSourcePtr samples = loader.load(name);
|
|
||||||
cout << "Loading entire file into memory\n";
|
|
||||||
StreamPtr buf(new BufferStream(samples));
|
|
||||||
|
|
||||||
// Recreate the stream as a sample source (we're only doing it
|
|
||||||
// this complicated to test each step individually)
|
|
||||||
int a,b,c;
|
|
||||||
samples->getInfo(&a,&b,&c);
|
|
||||||
samples.reset(new Stream2Samples(buf, a,b,c));
|
|
||||||
|
|
||||||
cout << "Creating OpenAL sound from data\n";
|
|
||||||
SoundPtr snd = openal.loadRaw(samples);
|
|
||||||
cout << "Playing (abort with Ctrl-C)\n";
|
|
||||||
snd->play();
|
|
||||||
|
|
||||||
while(snd->isPlaying())
|
|
||||||
usleep(10000);
|
|
||||||
cout << "Done playing\n";
|
|
||||||
}
|
|
||||||
catch(exception &e)
|
|
||||||
{
|
|
||||||
cout << " ERROR: " << e.what() << "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
|
||||||
{
|
|
||||||
if(argc==1)
|
|
||||||
cout << "Specify sound file (wav, mp3, ogg) on command line.\n";
|
|
||||||
for(int i=1; i<argc; i++)
|
|
||||||
play(argv[i]);
|
|
||||||
return 0;
|
|
||||||
}
|
|
41
cmake/FindSNDFILE.cmake
Normal file
41
cmake/FindSNDFILE.cmake
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# Locate SNDFILE
|
||||||
|
# This module defines
|
||||||
|
# SNDFILE_LIBRARY
|
||||||
|
# SNDFILE_FOUND, if false, do not try to link to Sndfile
|
||||||
|
# SNDFILE_INCLUDE_DIR, where to find the headers
|
||||||
|
#
|
||||||
|
# Created by Nicolay Korslund for OpenMW (http://openmw.com)
|
||||||
|
|
||||||
|
FIND_PATH(SNDFILE_INCLUDE_DIR sndfile.h
|
||||||
|
HINTS
|
||||||
|
PATHS
|
||||||
|
~/Library/Frameworks
|
||||||
|
/Library/Frameworks
|
||||||
|
/usr/local
|
||||||
|
/usr
|
||||||
|
/sw # Fink
|
||||||
|
/opt/local # DarwinPorts
|
||||||
|
/opt/csw # Blastwave
|
||||||
|
/opt
|
||||||
|
)
|
||||||
|
|
||||||
|
FIND_LIBRARY(SNDFILE_LIBRARY
|
||||||
|
NAMES sndfile
|
||||||
|
HINTS
|
||||||
|
PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64
|
||||||
|
PATHS
|
||||||
|
~/Library/Frameworks
|
||||||
|
/Library/Frameworks
|
||||||
|
/usr/local
|
||||||
|
/usr
|
||||||
|
/sw
|
||||||
|
/opt/local
|
||||||
|
/opt/csw
|
||||||
|
/opt
|
||||||
|
)
|
||||||
|
|
||||||
|
SET(SNDFILE_FOUND "NO")
|
||||||
|
IF(SNDFILE_LIBRARY AND SNDFILE_INCLUDE_DIR)
|
||||||
|
SET(SNDFILE_FOUND "YES")
|
||||||
|
ENDIF(SNDFILE_LIBRARY AND SNDFILE_INCLUDE_DIR)
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 3db61c8bdde65910e43a3a06b34738296960e9e8
|
Subproject commit c982f701cacdd2932bfdc22b168f54221a549b62
|
Loading…
Reference in a new issue