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

79 lines
2 KiB
C++

/*
*******************************************************************************
* INCLUDE
*******************************************************************************
*/
#include "ChannelLayout.h"
#include <Poco/Format.h>
namespace Video
{
namespace Core
{
/*
*******************************************************************************
* TYPEDEFS
*******************************************************************************
*/
struct ChannelLayoutInfo
{
std::string name;
int channels;
};
/*
*******************************************************************************
* LOCAL VARIABLES
*******************************************************************************
*/
static const ChannelLayoutInfo channelLayoutInfo[(int)ChannelLayout::NB] = {
{
"L",
1,
},
{
"R",
1,
},
{
"MONO",
1,
},
{
"STEREO",
2,
},
};
/*
*******************************************************************************
* LOCAL FUNCTIONS
*******************************************************************************
*/
static inline bool isChannelLayoutValid(ChannelLayout layout)
{
return ((int)layout >= 0) && (layout < ChannelLayout::NB);
}
/*
*******************************************************************************
* FUNCTIONS
*******************************************************************************
*/
int channelLayoutChannels(ChannelLayout layout)
{
if (isChannelLayoutValid(layout))
return channelLayoutInfo[(int)layout].channels;
return 0;
}
const std::string channelLayoutToString(const ChannelLayout layout)
{
if (isChannelLayoutValid(layout))
return channelLayoutInfo[(int)layout].name;
return Poco::format("UNKNOWN(%u)", (uint32_t)layout);
}
}
}