Panda3D

Loading...
Searching...
No Matches
config_openalAudio.cxx
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file config_openalAudio.cxx
10 * @author cort
11 */
12
13#include "pandabase.h"
14
15#include "config_openalAudio.h"
16#include "openalAudioManager.h"
17#include "openalAudioSound.h"
18#include "pandaSystem.h"
19#include "dconfig.h"
20
21#if !defined(CPPPARSER) && !defined(LINK_ALL_STATIC) && !defined(BUILDING_OPENAL_AUDIO)
22 #error Buildsystem error: BUILDING_OPENAL_AUDIO not defined
23#endif
24
25ConfigureDef(config_openalAudio);
26NotifyCategoryDef(openalAudio, ":audio");
27
28ConfigureFn(config_openalAudio) {
29 init_libOpenALAudio();
30}
31
32 ConfigVariableString openal_device
33("openal-device", "",
34 PRC_DESC("Specify the OpenAL device string for audio playback (no quotes). If this "
35 "is not specified, the OpenAL default device is used."));
36
37 ConfigVariableInt openal_buffer_delete_retries
38("openal-buffer-delete-retries", 5,
39 PRC_DESC("If deleting a buffer fails due to still being in use, the OpenAL "
40 "sound plugin will wait a moment and retry deletion, with an "
41 "exponentially-increasing delay for each try. This number "
42 "specifies how many repeat tries (not counting the initial try) "
43 "should be made before giving up and raising an error."));
44
45 ConfigVariableDouble openal_buffer_delete_delay
46("openal-buffer-delete-delay", 0.001,
47 PRC_DESC("If deleting a buffer fails due to still being in use, the OpenAL "
48 "sound plugin will wait a moment and retry deletion, with an "
49 "exponentially-increasing delay for each try. This number "
50 "specifies how long, in seconds, the OpenAL plugin will wait after "
51 "its first failed try. The second try will be double this "
52 "delay, the third quadruple, and so on."));
53
54
55/**
56 * Initializes the library. This must be called at least once before any of
57 * the functions or classes in this library can be used. Normally it will be
58 * called by the static initializers and need not be called explicitly, but
59 * special cases exist.
60 */
61 void
62 init_libOpenALAudio() {
63 static bool initialized = false;
64 if (initialized) {
65 return;
66 }
67
68 initialized = true;
69 OpenALAudioManager::init_type();
70 OpenALAudioSound::init_type();
71
72 AudioManager::register_AudioManager_creator(&Create_OpenALAudioManager);
73
74 PandaSystem *ps = PandaSystem::get_global_ptr();
75 ps->add_system("OpenAL");
76 ps->add_system("audio");
77 ps->set_system_tag("audio", "implementation", "OpenAL");
78}
79
80/**
81 * This function is called when the dynamic library is loaded; it should
82 * return the Create_AudioManager function appropriate to create an
83 * OpenALAudioManager.
84 */
85Create_AudioManager_proc *
86 get_audio_manager_func_openal_audio() {
87 init_libOpenALAudio();
88 return &Create_OpenALAudioManager;
89}
ConfigVariableDouble
This is a convenience class to specialize ConfigVariable as a floating- point type.
Definition configVariableDouble.h:24
ConfigVariableInt
This is a convenience class to specialize ConfigVariable as an integer type.
Definition configVariableInt.h:24
ConfigVariableString
This is a convenience class to specialize ConfigVariable as a string type.
Definition configVariableString.h:23
PandaSystem
This class is used as a namespace to group several global properties of Panda.
Definition pandaSystem.h:26
PandaSystem::set_system_tag
void set_system_tag(const std::string &system, const std::string &tag, const std::string &value)
Intended for use by each subsystem to register its set of capabilities at startup.
Definition pandaSystem.cxx:383
PandaSystem::get_global_ptr
static PandaSystem * get_global_ptr()
Returns the global PandaSystem object.
Definition pandaSystem.cxx:448
PandaSystem::add_system
void add_system(const std::string &system)
Intended for use by each subsystem to register itself at startup.
Definition pandaSystem.cxx:371
init_libOpenALAudio
void init_libOpenALAudio()
Initializes the library.
Definition config_openalAudio.cxx:62
get_audio_manager_func_openal_audio
Create_AudioManager_proc * get_audio_manager_func_openal_audio()
This function is called when the dynamic library is loaded; it should return the Create_AudioManager ...
Definition config_openalAudio.cxx:86
config_openalAudio.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
dconfig.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Create_OpenALAudioManager
AudioManager * Create_OpenALAudioManager()
Factory Function.
Definition openalAudioManager.cxx:73
openalAudioManager.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
openalAudioSound.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
pandaSystem.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
pandabase.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.