summaryrefslogtreecommitdiff
path: root/decoder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'decoder.cpp')
-rw-r--r--decoder.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/decoder.cpp b/decoder.cpp
index e80c714..cffb8cf 100644
--- a/decoder.cpp
+++ b/decoder.cpp
@@ -3,17 +3,18 @@
#include <map>
-namespace decoder {
- typedef boost::function<DecoderBase*()> DecoderFactory;
- std::map<std::string, DecoderFactory> decoder_factories;
+DecoderFilter::DecoderFilter(DecoderBase::p decoder_) {
+ decoder = decoder_;
+}
+
+typedef boost::function<boost::shared_ptr<DecoderBase>()> DecoderFactory;
+std::map<std::string, DecoderFactory> decoder_factories;
-void init() {
+void decoder::init() {
mpg123_init(); // initialize the mpg123 library
- decoder_factories["mpg123"] = boost::factory<DecoderMpg123*>();
+ decoder_factories["mpg123"] = boost::factory<boost::shared_ptr<DecoderMpg123> >();
}
-DecoderBase *get_decoder(const std::string& name) {
- return decoder_factories[name]();
+DecoderFilter::p decoder::get_decoder(const std::string& name) {
+ return DecoderFilter::p(new DecoderFilter(DecoderBase::p(decoder_factories[name]())));
}
-
-};