mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-28 07:48:37 -04:00
fixed to actually work
This commit is contained in:
parent
2bba74fc8b
commit
0f2496a467
@ -9,11 +9,17 @@
|
||||
audio_midi.h audio_music.I audio_music.cxx audio_music.h \
|
||||
audio_pool.I audio_pool.cxx audio_pool.h audio_sample.I \
|
||||
audio_sample.cxx audio_sample.h audio_trait.cxx audio_trait.h \
|
||||
config_audio.cxx config_audio.h
|
||||
config_audio.cxx config_audio.h audio_mikmod_traits.cxx \
|
||||
audio_mikmod_traits.h audio_win_traits.I audio_win_traits.cxx \
|
||||
audio_win_traits.h audio_null_traits.I audio_null_traits.cxx \
|
||||
audio_null_traits.h audio_linux_traits.I audio_linux_traits.cxx \
|
||||
audio_linux_traits.h
|
||||
|
||||
#define INSTALL_HEADERS \
|
||||
audio.h audio_manager.h audio_music.h audio_pool.I audio_pool.h \
|
||||
audio_sample.I audio_sample.h audio_trait.h
|
||||
audio_sample.I audio_sample.h audio_trait.h audio_mikmod_traits.h \
|
||||
audio_win_traits.I audio_win_traits.h audio_null_traits.I \
|
||||
audio_null_traits.h audio_linux_traits.I audio_linux_traits.h
|
||||
|
||||
#define IGATESCAN audio.h
|
||||
|
||||
@ -39,6 +45,16 @@
|
||||
|
||||
#end lib_target
|
||||
|
||||
// #begin lib_target
|
||||
// #define TARGET audio_load_st
|
||||
// #define LOCAL_LIBS \
|
||||
// audio
|
||||
//
|
||||
// #define SOURCES \
|
||||
// audio_load_st.cxx
|
||||
//
|
||||
// #end lib_target
|
||||
|
||||
#begin test_bin_target
|
||||
#define TARGET test_audio
|
||||
|
||||
|
@ -4,6 +4,9 @@
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "audio_linux_traits.h"
|
||||
|
||||
#ifdef AUDIO_USE_LINUX
|
||||
|
||||
#include "audio_manager.h"
|
||||
#include "config_audio.h"
|
||||
#include <ipc_thread.h>
|
||||
@ -278,3 +281,5 @@ LinuxPlayer* LinuxPlayer::get_instance(void) {
|
||||
_global_instance = new LinuxPlayer();
|
||||
return _global_instance;
|
||||
}
|
||||
|
||||
#endif /* AUDIO_USE_LINUX */
|
||||
|
@ -3,11 +3,14 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
// yes, this needs to be outside the ifdef protection
|
||||
#include "audio_trait.h"
|
||||
|
||||
#ifdef AUDIO_USE_LINUX
|
||||
|
||||
#ifndef __AUDIO_LINUX_TRAITS_H__
|
||||
#define __AUDIO_LINUX_TRAITS_H__
|
||||
|
||||
#include "audio_trait.h"
|
||||
|
||||
typedef unsigned char byte;
|
||||
|
||||
class EXPCL_PANDA Buffer {
|
||||
@ -86,3 +89,4 @@ private:
|
||||
#include "audio_linux_traits.I"
|
||||
|
||||
#endif /* __AUDIO_LINUX_TRAITS_H__ */
|
||||
#endif /* AUDIO_USE_LINUX */
|
||||
|
@ -6,10 +6,11 @@
|
||||
#include <dconfig.h>
|
||||
#include "audio_pool.h"
|
||||
#include "config_audio.h"
|
||||
#include "audio_trait.h"
|
||||
|
||||
Configure(audio_load_midi);
|
||||
|
||||
#ifdef USE_MIKMOD
|
||||
#ifdef AUDIO_USE_MIKMOD
|
||||
|
||||
#include "audio_mikmod_traits.h"
|
||||
|
||||
@ -27,9 +28,9 @@ void AudioLoadMidi(AudioTraits::MusicClass** music,
|
||||
*destroy = AudioDestroyMidi;
|
||||
}
|
||||
|
||||
#else
|
||||
#else /* AUDIO_USE_MIKMOD */
|
||||
|
||||
#ifdef PENV_WIN32
|
||||
#ifdef AUDIO_USE_WIN32
|
||||
|
||||
#include "audio_win_traits.h"
|
||||
|
||||
@ -49,7 +50,27 @@ void AudioLoadMidi(AudioTraits::MusicClass** music,
|
||||
<< " player = " << (void*)*player << " destroy = "
|
||||
<< (void*)*destroy << endl;
|
||||
}
|
||||
#else
|
||||
#else /* AUDIO_USE_WIN32 */
|
||||
|
||||
#ifdef AUDIO_USE_LINUX
|
||||
|
||||
void AudioDestroyMidi(AudioTraits::MusicClass* music) {
|
||||
delete music;
|
||||
}
|
||||
|
||||
void AudioLoadMidi(AudioTraits::MusicClass** music,
|
||||
AudioTraits::PlayerClass** player,
|
||||
AudioTraits::DeleteMusicFunc** destroy, Filename) {
|
||||
audio_cat->warning() << "linux doesn't support reading midi data yet"
|
||||
<< endl;
|
||||
*music = (AudioTraits::MusicClass*)0L;
|
||||
*player = (AudioTraits::PlayerClass*)0L;
|
||||
*destroy = AudioDestroyMidi;
|
||||
}
|
||||
|
||||
#else /* AUDIO_USE_LINUX */
|
||||
|
||||
#ifdef AUDIO_USE_NULL
|
||||
|
||||
// Null driver
|
||||
#include "audio_null_traits.h"
|
||||
@ -66,8 +87,14 @@ void AudioLoadMidi(AudioTraits::MusicClass** music,
|
||||
*destroy = AudioDestroyMidi;
|
||||
}
|
||||
|
||||
#endif /* win32 */
|
||||
#endif /* mikmod */
|
||||
#else /* AUDIO_USE_NULL */
|
||||
|
||||
#error "unknown driver type"
|
||||
|
||||
#endif /* AUDIO_USE_NULL */
|
||||
#endif /* AUDIO_USE_LINUX */
|
||||
#endif /* AUDIO_USE_WIN32 */
|
||||
#endif /* AUDIO_USE_MIKMOD */
|
||||
|
||||
ConfigureFn(audio_load_midi) {
|
||||
AudioPool::register_music_loader("midi", AudioLoadMidi);
|
||||
|
@ -6,9 +6,10 @@
|
||||
#include <config.h>
|
||||
#include "audio_pool.h"
|
||||
#include "config_audio.h"
|
||||
#include "audio_trait.h"
|
||||
|
||||
#include <st.h>
|
||||
#include <patchlvl.h>
|
||||
#include <sox/st.h>
|
||||
#include <sox/patchlvl.h>
|
||||
|
||||
#if (PATCHLEVEL == 16)
|
||||
#define FORMATS formats
|
||||
@ -220,7 +221,7 @@ static byte* read_file(Filename filename) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef USE_MIKMOD
|
||||
#ifdef AUDIO_USE_MIKMOD
|
||||
|
||||
void AudioDestroySt(AudioTraits::SampleClass* sample) {
|
||||
delete sample;
|
||||
@ -236,9 +237,9 @@ void AudioLoadSt(AudioTraits::SampleClass** sample,
|
||||
*destroy = AudioDestroySt;
|
||||
}
|
||||
|
||||
#else /* no MikMod */
|
||||
#else /* AUDIO_USE_MIKMOD */
|
||||
|
||||
ifdef PENV_WIN32
|
||||
#ifdef AUDIO_USE_WIN32
|
||||
|
||||
void AudioDestroySt(AudioTraits::SampleClass* sample) {
|
||||
delete sample;
|
||||
@ -254,9 +255,9 @@ void AudioLoadSt(AudioTraits::SampleClass** sample,
|
||||
*destroy = AudioDestroySt;
|
||||
}
|
||||
|
||||
#else /* no win32 */
|
||||
#else /* AUDIO_USE_WIN32 */
|
||||
|
||||
#ifdev PENV_LINUX
|
||||
#ifdef AUDIO_USE_LINUX
|
||||
|
||||
void AudioDestroySt(AudioTraits::SampleClass* sample) {
|
||||
delete sample;
|
||||
@ -272,7 +273,9 @@ void AudioLoadSt(AudioTraits::SampleClass** sample,
|
||||
*destroy = AudioDestroySt;
|
||||
}
|
||||
|
||||
#else /* no linux */
|
||||
#else /* AUDIO_USE_LINUX */
|
||||
|
||||
#ifdef AUDIO_USE_NULL
|
||||
|
||||
// Null driver
|
||||
#include "audio_null_traits.h"
|
||||
@ -289,9 +292,14 @@ void AudioLoadSt(AudioTraits::SampleClass** sample,
|
||||
*destroy = AudioDestroySt;
|
||||
}
|
||||
|
||||
#endif /* linux */
|
||||
#endif /* win32 */
|
||||
#endif /* MikMod */
|
||||
#else /* AUDIO_USE_NULL */
|
||||
|
||||
#error "unknown audio driver type"
|
||||
|
||||
#endif /* AUDIO_USE_NULL */
|
||||
#endif /* AUDIO_USE_LINUX */
|
||||
#endif /* AUDIO_USE_WIN32 */
|
||||
#endif /* AUDIO_USE_MIKMOD */
|
||||
|
||||
ConfigureFn(audio_load_st) {
|
||||
for (int i=0; FORMATS[i].names != (char**)0L; ++i)
|
||||
|
@ -8,7 +8,9 @@
|
||||
|
||||
Configure(audio_load_wav);
|
||||
|
||||
#ifdef USE_MIKMOD
|
||||
#include "audio_trait.h"
|
||||
|
||||
#ifdef AUDIO_USE_MIKMOD
|
||||
|
||||
#include "audio_mikmod_traits.h"
|
||||
|
||||
@ -26,9 +28,9 @@ void AudioLoadWav(AudioTraits::SampleClass** sample,
|
||||
*destroy = AudioDestroyWav;
|
||||
}
|
||||
|
||||
#else /* no MikMod */
|
||||
#else /* AUDIO_USE_MIKMOD */
|
||||
|
||||
#ifdef PENV_WIN32
|
||||
#ifdef AUDIO_USE_WIN32
|
||||
|
||||
#include "audio_win_traits.h"
|
||||
|
||||
@ -46,7 +48,25 @@ void AudioLoadWav(AudioTraits::SampleClass** sample,
|
||||
*destroy = AudioDestroyWav;
|
||||
}
|
||||
|
||||
#else /* no win32 */
|
||||
#else /* AUDIO_USE_WIN32 */
|
||||
|
||||
#ifdef AUDIO_USE_LINUX
|
||||
|
||||
void AudioDestroyWav(AudioTraits::SampleClass* sample) {
|
||||
delete sample;
|
||||
}
|
||||
|
||||
void AudioLoadWav(AudioTraits::SampleClass** sample,
|
||||
AudioTraits::PlayerClass** player,
|
||||
AudioTraits::DeleteSampleFunc** destroy, Filename) {
|
||||
*sample = (AudioTraits::SampleClass*)0L;
|
||||
*player = (audioTraits::PlayerClass*)0L;
|
||||
*destroy = AudioDestroyWav;
|
||||
}
|
||||
|
||||
#else /* AUDIO_USE_LINUX */
|
||||
|
||||
#ifdef AUDIO_USE_NULL
|
||||
|
||||
// Null driver
|
||||
#include "audio_null_traits.h"
|
||||
@ -63,8 +83,14 @@ void AudioLoadWav(AudioTraits::SampleClass** sample,
|
||||
*destroy = AudioDestroyWav;
|
||||
}
|
||||
|
||||
#endif /* win32 */
|
||||
#endif /* MikMod */
|
||||
#else /* AUDIO_USE_NULL */
|
||||
|
||||
#error "unknown implementation driver"
|
||||
|
||||
#endif /* AUDIO_USE_NULL */
|
||||
#endif /* AUDIO_USE_LINUX */
|
||||
#endif /* AUDIO_USE_WIN32 */
|
||||
#endif /* AUDIO_USE_MIKMOD */
|
||||
|
||||
ConfigureFn(audio_load_wav) {
|
||||
AudioPool::register_sample_loader("wav", AudioLoadWav);
|
||||
|
@ -4,6 +4,9 @@
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "audio_mikmod_traits.h"
|
||||
|
||||
#ifdef AUDIO_USE_MIKMOD
|
||||
|
||||
#include "audio_manager.h"
|
||||
#include "config_audio.h"
|
||||
#include <list>
|
||||
@ -303,3 +306,5 @@ MikModMidiPlayer* MikModMidiPlayer::get_instance(void) {
|
||||
_global_instance = new MikModMidiPlayer();
|
||||
return _global_instance;
|
||||
}
|
||||
|
||||
#endif /* AUDIO_USE_MIKMOD */
|
||||
|
@ -3,10 +3,13 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
// yes, this should be outside
|
||||
#include "audio_trait.h"
|
||||
|
||||
#ifdef AUDIO_USE_MIKMOD
|
||||
#ifndef __AUDIO_MIKMOD_TRAITS_H__
|
||||
#define __AUDIO_MIKMOD_TRAITS_H__
|
||||
|
||||
#include "audio_trait.h"
|
||||
#include <pandabase.h>
|
||||
#include <filename.h>
|
||||
#include <mikmod.h>
|
||||
@ -100,3 +103,4 @@ private:
|
||||
};
|
||||
|
||||
#endif /* __AUDIO_MIKMOD_TRAITS_H__ */
|
||||
#endif /* AUDIO_USE_MIKMOD */
|
||||
|
@ -4,6 +4,9 @@
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "audio_null_traits.h"
|
||||
|
||||
#ifdef AUDIO_USE_NULL
|
||||
|
||||
#include "audio_manager.h"
|
||||
#include "config_audio.h"
|
||||
|
||||
@ -68,3 +71,5 @@ void NullPlayer::set_volume(AudioTraits::MusicClass*, int) {
|
||||
if (audio_cat->is_debug())
|
||||
audio_cat->debug() << "in set volume (music) in Null audio driver" << endl;
|
||||
}
|
||||
|
||||
#endif /* AUDIO_USE_NULL */
|
||||
|
@ -3,11 +3,14 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
// yes, this needs to be outside the ifdef protection
|
||||
#include "audio_trait.h"
|
||||
|
||||
#ifdef AUDIO_USE_NULL
|
||||
|
||||
#ifndef __AUDIO_NULL_TRAITS_H__
|
||||
#define __AUDIO_NULL_TRAITS_H__
|
||||
|
||||
#include "audio_trait.h"
|
||||
|
||||
class EXPCL_PANDA NullSample : public AudioTraits::SampleClass {
|
||||
public:
|
||||
INLINE NullSample(void);
|
||||
@ -39,3 +42,4 @@ public:
|
||||
#include "audio_null_traits.I"
|
||||
|
||||
#endif /* __AUDIO_NULL_TRAITS_H__ */
|
||||
#endif /* AUDIO_USE_NULL */
|
||||
|
@ -46,4 +46,25 @@ public:
|
||||
};
|
||||
};
|
||||
|
||||
// this is really ugly. But since we have to be able to include/compile
|
||||
// all of the driver files on any system, I need to centralize a switch
|
||||
// for which one is real.
|
||||
#ifdef HAVE_MIKMOD
|
||||
#define AUDIO_USE_MIKMOD
|
||||
#else /* HAVE_MIKMOD */
|
||||
#ifdef PENV_WIN32
|
||||
#define AUDIO_USE_WIN32
|
||||
#else /* PENV_WIN32 */
|
||||
/*
|
||||
#ifdef PENV_LINUX
|
||||
#define AUDIO_USE_LINUX
|
||||
#else /* PENV_LINUX *
|
||||
*/
|
||||
#define AUDIO_USE_NULL
|
||||
/*
|
||||
#endif /* PENV_LINUX *
|
||||
*/
|
||||
#endif /* PENV_WIN32 */
|
||||
#endif /* HAVE_MIKMOD */
|
||||
|
||||
#endif /* __AUDIO_TRAIT_H__ */
|
||||
|
@ -4,6 +4,9 @@
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "audio_win_traits.h"
|
||||
|
||||
#ifdef AUDIO_USE_WIN32
|
||||
|
||||
#include "audio_manager.h"
|
||||
#include "config_audio.h"
|
||||
|
||||
@ -658,3 +661,5 @@ WinPlayer* WinPlayer::get_instance(void) {
|
||||
_global_instance = new WinPlayer();
|
||||
return _global_instance;
|
||||
}
|
||||
|
||||
#endif /* AUDIO_USE_WIN32 */
|
||||
|
@ -3,10 +3,13 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
// yes, this needs to be outside the ifdef protection
|
||||
#include "audio_trait.h"
|
||||
|
||||
#ifdef AUDIO_USE_WIN32
|
||||
#ifndef __AUDIO_WIN_TRAITS_H__
|
||||
#define __AUDIO_WIN_TRAITS_H__
|
||||
|
||||
#include "audio_trait.h"
|
||||
#include <filename.h>
|
||||
|
||||
#include <windows.h>
|
||||
@ -76,3 +79,4 @@ private:
|
||||
#include "audio_win_traits.I"
|
||||
|
||||
#endif /* __AUDIO_WIN_TRAITS_H__ */
|
||||
#endif /* AUDIO_USE_WIN32 */
|
||||
|
@ -7,6 +7,8 @@
|
||||
#include "audio_sample.h"
|
||||
#include "audio_music.h"
|
||||
#include <dconfig.h>
|
||||
#include <filename.h>
|
||||
#include <load_dso.h>
|
||||
|
||||
Configure(config_audio);
|
||||
NotifyCategoryDef(audio, "");
|
||||
@ -16,6 +18,8 @@ int audio_mix_freq = config_audio.GetInt("audio-mix-freq", 11025);
|
||||
string* audio_mode_flags;
|
||||
int audio_driver_select = config_audio.GetInt("audio-driver-select", 0);
|
||||
string* audio_driver_params;
|
||||
int audio_buffer_size = config_audio.GetInt("audio-buffer-size", 4096);
|
||||
string* audio_device;
|
||||
|
||||
ConfigureFn(config_audio) {
|
||||
AudioSample::init_type();
|
||||
@ -38,4 +42,17 @@ ConfigureFn(config_audio) {
|
||||
*audio_driver_params += " ";
|
||||
*audio_driver_params += (*i).Val();
|
||||
}
|
||||
|
||||
Config::ConfigTable::Symbol loaders;
|
||||
config_audio.GetAll("audio-loader", loaders);
|
||||
for (i=loaders.begin(); i!=loaders.end(); ++i) {
|
||||
Filename dlname = Filename::dso_filename("libaudio_load_" + (*i).Val() +
|
||||
".so");
|
||||
audio_cat->info() << "loading '" << (*i).Val() << "' loader" << endl;
|
||||
void* tmp = load_dso(dlname.to_os_specific());
|
||||
if (tmp == (void*)0L)
|
||||
audio_cat->info() << "unable to load: " << load_dso_error() << endl;
|
||||
}
|
||||
audio_device = new string(config_audio.GetString("audio-device",
|
||||
"/dev/dsp"));
|
||||
}
|
||||
|
@ -16,5 +16,7 @@ extern int audio_mix_freq;
|
||||
extern string* audio_mode_flags;
|
||||
extern int audio_driver_select;
|
||||
extern string* audio_driver_params;
|
||||
extern int audio_buffer_size;
|
||||
extern string* audio_device;
|
||||
|
||||
#endif /* __CONFIG_AUDIO_H__ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user