forked from mia/Aegisub
Fix and de-wxify audio_manager.cpp
Originally committed to SVN as r5326.
This commit is contained in:
parent
185721837b
commit
ae7d00a57e
3 changed files with 35 additions and 16 deletions
|
@ -25,6 +25,7 @@ endif
|
|||
|
||||
SRC = \
|
||||
common/video_frame.cpp \
|
||||
common/audio_manager.cpp \
|
||||
audio/downmix.cpp \
|
||||
audio/convert.cpp \
|
||||
audio/dummy_audio.cpp \
|
||||
|
|
|
@ -38,21 +38,24 @@
|
|||
#include "config.h"
|
||||
|
||||
#ifndef AGI_PRE
|
||||
#include <wx/thread.h>
|
||||
#endif
|
||||
|
||||
#ifdef WITH_AVISYNTH
|
||||
#include "audio_provider_avs.h"
|
||||
#include "../audio/avs_audio.h"
|
||||
#endif
|
||||
#include "audio_provider_convert.h"
|
||||
#include "../audio/convert.h"
|
||||
#ifdef WITH_FFMPEGSOURCE
|
||||
#include "audio_provider_ffmpegsource.h"
|
||||
#include "../audio/ffms_audio.h"
|
||||
#endif
|
||||
#include "audio_provider_hd.h"
|
||||
#include "audio_provider_pcm.h"
|
||||
#include "audio_provider_ram.h"
|
||||
#include "compat.h"
|
||||
#include "main.h"
|
||||
#include "../cache/audio_hd.h"
|
||||
#include "../cache/audio_ram.h"
|
||||
#include "../audio/pcm.h"
|
||||
|
||||
|
||||
//#include "compat.h"
|
||||
//#include "main.h"
|
||||
|
||||
namespace media {
|
||||
|
||||
/// @brief Constructor
|
||||
///
|
||||
|
@ -105,12 +108,13 @@ void AudioProvider::GetAudioWithVolume(void *buf, int64_t start, int64_t count,
|
|||
/// @param cache
|
||||
/// @return
|
||||
///
|
||||
AudioProvider *AudioProviderFactory::GetProvider(wxString filename, int cache) {
|
||||
AudioProvider *AudioProviderFactory::GetProvider(std::string filename, int cache) {
|
||||
AudioProvider *provider = NULL;
|
||||
bool found = false;
|
||||
std::string msg;
|
||||
|
||||
if (!OPT_GET("Provider/Audio/PCM/Disable")->GetBool()) {
|
||||
//XXX if (!OPT_GET("Provider/Audio/PCM/Disable")->GetBool()) {
|
||||
if (1) {
|
||||
// Try a PCM provider first
|
||||
try {
|
||||
provider = CreatePCMAudioProvider(filename);
|
||||
|
@ -124,7 +128,9 @@ AudioProvider *AudioProviderFactory::GetProvider(wxString filename, int cache) {
|
|||
}
|
||||
}
|
||||
if (!provider) {
|
||||
std::vector<std::string> list = GetClasses(OPT_GET("Audio/Provider")->GetString());
|
||||
//XXX std::vector<std::string> list = GetClasses(OPT_GET("Audio/Provider")->GetString());
|
||||
std::vector<std::string> list = GetClasses("ffmpegsource");
|
||||
|
||||
if (list.empty()) throw AudioOpenError("No audio providers are available.");
|
||||
|
||||
for (unsigned int i=0;i<list.size();i++) {
|
||||
|
@ -146,7 +152,7 @@ AudioProvider *AudioProviderFactory::GetProvider(wxString filename, int cache) {
|
|||
throw AudioOpenError(msg);
|
||||
}
|
||||
else {
|
||||
throw agi::FileNotFoundError(STD_STR(filename));
|
||||
throw agi::FileNotFoundError(filename);
|
||||
}
|
||||
}
|
||||
bool needsCache = provider->NeedsCache();
|
||||
|
@ -156,7 +162,8 @@ AudioProvider *AudioProviderFactory::GetProvider(wxString filename, int cache) {
|
|||
provider = CreateConvertAudioProvider(provider);
|
||||
|
||||
// Change provider to RAM/HD cache if needed
|
||||
if (cache == -1) cache = OPT_GET("Audio/Cache/Type")->GetInt();
|
||||
//XXX if (cache == -1) cache = OPT_GET("Audio/Cache/Type")->GetInt();
|
||||
if (cache == -1) cache = 1;
|
||||
if (!cache || !needsCache) {
|
||||
return provider;
|
||||
}
|
||||
|
@ -177,8 +184,10 @@ void AudioProviderFactory::RegisterProviders() {
|
|||
Register<AvisynthAudioProvider>("Avisynth");
|
||||
#endif
|
||||
#ifdef WITH_FFMPEGSOURCE
|
||||
Register<FFmpegSourceAudioProvider>("FFmpegSource");
|
||||
Register<ffms::FFmpegSourceAudioProvider>("FFmpegSource");
|
||||
#endif
|
||||
}
|
||||
|
||||
template<> AudioProviderFactory::map *FactoryBase<AudioProvider *(*)(wxString)>::classes = NULL;
|
||||
template<> AudioProviderFactory::map *FactoryBase<AudioProvider *(*)(std::string)>::classes = NULL;
|
||||
|
||||
} // namespace media
|
||||
|
|
|
@ -74,6 +74,14 @@ public:
|
|||
virtual bool WantsCaching() const { return false; }
|
||||
};
|
||||
|
||||
|
||||
class VideoProviderFactory : public Factory1<VideoProvider, wxString> {
|
||||
public:
|
||||
static VideoProvider *GetProvider(wxString video);
|
||||
static void RegisterProviders();
|
||||
};
|
||||
|
||||
|
||||
DEFINE_BASE_EXCEPTION_NOINNER(VideoProviderError, agi::Exception);
|
||||
/// File could be opened, but is not a supported format
|
||||
DEFINE_SIMPLE_EXCEPTION_NOINNER(VideoNotSupported, VideoProviderError, "video/open/notsupported");
|
||||
|
@ -83,5 +91,6 @@ DEFINE_SIMPLE_EXCEPTION_NOINNER(VideoOpenError, VideoProviderError, "video/open/
|
|||
/// Error of some sort occurred while decoding a frame
|
||||
DEFINE_SIMPLE_EXCEPTION_NOINNER(VideoDecodeError, VideoProviderError, "video/error");
|
||||
|
||||
|
||||
} // namespace media
|
||||
|
||||
|
|
Loading…
Reference in a new issue