100 lines
2.5 KiB
C++
100 lines
2.5 KiB
C++
#ifndef F62FEA52_888A_474C_B58C_B83007D75F89
|
|
#define F62FEA52_888A_474C_B58C_B83007D75F89
|
|
/*
|
|
*******************************************************************************
|
|
* INCLUDE
|
|
*******************************************************************************
|
|
*/
|
|
#include "ChannelLayout.h"
|
|
#include "SampleFormat.h"
|
|
#include "Frame.h"
|
|
#include "util/FactoryManager.h"
|
|
#include <Poco/SharedPtr.h>
|
|
|
|
namespace Video
|
|
{
|
|
namespace Core
|
|
{
|
|
/*
|
|
*******************************************************************************
|
|
* CLASS DECLARE
|
|
*******************************************************************************
|
|
*/
|
|
class AudioResampleSelector
|
|
{
|
|
public:
|
|
static int select(ChannelLayout, SampleFormat, int, ChannelLayout, SampleFormat, int)
|
|
{
|
|
return 0;
|
|
}
|
|
};
|
|
|
|
class AudioResample: public ::Util::FactoryManager<AudioResample, int, AudioResampleSelector, ChannelLayout,
|
|
SampleFormat, int, ChannelLayout, SampleFormat, int>
|
|
{
|
|
public:
|
|
using Ptr = Poco::SharedPtr<AudioResample>;
|
|
|
|
public:
|
|
AudioResample(const std::string& name, Core::ChannelLayout ilayout, Core::SampleFormat iformat, int irate,
|
|
Core::ChannelLayout olayout, Core::SampleFormat oformat, int orate);
|
|
virtual ~AudioResample();
|
|
|
|
public:
|
|
virtual Frame::Ptr process(Frame::Ptr in) = 0;
|
|
|
|
const std::string name() const;
|
|
const Core::ChannelLayout inLayout() const;
|
|
const Core::SampleFormat inFormat() const;
|
|
const int inRate() const;
|
|
const Core::ChannelLayout outLayout() const;
|
|
const Core::SampleFormat outFormat() const;
|
|
const int outRate() const;
|
|
|
|
private:
|
|
const std::string _name;
|
|
Core::ChannelLayout _ilayout;
|
|
Core::SampleFormat _iformat;
|
|
int _irate;
|
|
Core::ChannelLayout _olayout;
|
|
Core::SampleFormat _oformat;
|
|
int _orate;
|
|
};
|
|
|
|
inline const std::string AudioResample::name() const
|
|
{
|
|
return _name;
|
|
}
|
|
|
|
inline const Core::ChannelLayout AudioResample::inLayout() const
|
|
{
|
|
return _ilayout;
|
|
}
|
|
|
|
inline const Core::SampleFormat AudioResample::inFormat() const
|
|
{
|
|
return _iformat;
|
|
}
|
|
|
|
inline const int AudioResample::inRate() const
|
|
{
|
|
return _irate;
|
|
}
|
|
|
|
inline const Core::ChannelLayout AudioResample::outLayout() const
|
|
{
|
|
return _olayout;
|
|
}
|
|
|
|
inline const Core::SampleFormat AudioResample::outFormat() const
|
|
{
|
|
return _oformat;
|
|
}
|
|
|
|
inline const int AudioResample::outRate() const
|
|
{
|
|
return _orate;
|
|
}
|
|
}
|
|
}
|
|
#endif
|