#ifndef CMP3DECODERPLUGIN_H
#define CMP3DECODERPLUGIN_H

#include "../../include/IAudioPlugin.h"
#include "cMP3DecoderFactory.h"

using namespace cAudio;

class cMP3DecoderPlugin : public IAudioPlugin
{
	bool installPlugin(ILogger* logger)
	{
		//This plugin has no first time initialization to do, so this is an easy function
		return true;
	}

	const char* getPluginName()
	{
		return "MP3Decoder";
	}

	void uninstallPlugin()
	{
		//Nothing to clean up
	}

	void onCreateAudioManager(IAudioManager* manager)
	{
		cMP3DecoderFactory* factory = new cMP3DecoderFactory();

		if(factory)
		{
			manager->registerAudioDecoder(factory, "mp3");
		}
	}

	void onCreateAudioCapture(IAudioCapture* capture)
	{
		//Do nothing with this "event"
	}

	void onDestroyAudioManager(IAudioManager* manager)
	{
		cAudio::IAudioDecoderFactory* factory = manager->getAudioDecoderFactory("mp3");
		manager->unRegisterAudioDecoder("mp3");

		if(factory)
		{
			delete factory;
		}
	}

	void onDestoryAudioCapture(IAudioCapture* capture)
	{
		//Do nothing with this "event"
	}
};

#endif //! CMP3DECODERPLUGIN_H