fixed to actually work

This commit is contained in:
Cary Sandvig 2000-10-05 00:04:51 +00:00
parent 2bba74fc8b
commit 0f2496a467
15 changed files with 184 additions and 31 deletions

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -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);

View File

@ -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)

View File

@ -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);

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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__ */

View File

@ -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 */

View File

@ -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 */

View File

@ -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"));
}

View File

@ -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__ */