79 lines
2 KiB
C++
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);
|
|
}
|
|
}
|
|
}
|