p26001-store-acs-soc-fw-app/video/core/AudioResample.h
2026-09-28 21:33:04 +08:00

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