21#include <libavutil/pixfmt.h>
25#include "../video_device.h"
45 VideoDeviceImpl(
const std::string&
path,
const std::vector<std::map<std::string, std::string>>&
devInfo);
61 std::vector<std::string> formats_ {};
62 std::vector<VideoSize> sizes_ {};
63 std::vector<FrameRate> rates_ {};
65 const ios_fmt* fmt_ {
nullptr};
71VideoDeviceImpl::selectFormat()
74 for (
auto fmt : formats_) {
85 JAMI_WARN(
"Video: No format matching %s", fmt.c_str());
93 JAMI_ERR(
"Video: Unable to find a known format to use");
101 formats_.emplace_back(
setting.at(
"format"));
102 sizes_.emplace_back(std::stoi(
setting.at(
"width")), std::stoi(
setting.at(
"height")));
103 rates_.emplace_back(std::stoi(
setting.at(
"rate")), 1);
109VideoDeviceImpl::getSize(
VideoSize size)
const
111 for (
const auto&
iter : sizes_) {
116 return sizes_.empty() ?
VideoSize {0, 0} : sizes_.back();
122 for (
const auto&
iter : rates_) {
127 return rates_.empty() ?
FrameRate {0, 0} : rates_.back();
130std::vector<VideoSize>
136std::vector<FrameRate>
151 params.pixel_format =
"nv12";
152 params.width = size_.first;
153 params.height = size_.second;
163 rate_ = getRate(
params.framerate);
168 : deviceImpl_(
new VideoDeviceImpl(path,
devInfo))
171 name = deviceImpl_->name;
177 return deviceImpl_->getDeviceParams();
181VideoDevice::setDeviceParams(
const DeviceParams&
params)
183 return deviceImpl_->setDeviceParams(
params);
186std::vector<std::string>
192std::vector<VideoSize>
193VideoDevice::getSizeList(
const std::string& channel)
const
195 return deviceImpl_->getSizeList();
198std::vector<FrameRate>
199VideoDevice::getRateList(
const std::string& channel,
VideoSize size)
const
201 return deviceImpl_->getRateList();
std::vector< VideoSize > getSizeList() const
VideoDeviceImpl(const std::string &path)
void setDeviceParams(const DeviceParams &)
DeviceParams getDeviceParams() const
std::vector< FrameRate > getRateList() const
std::vector< std::string > getChannelList() const
VideoDevice(const std::string &path, const std::vector< std::map< std::string, std::string > > &devInfo)
DeviceParams getDeviceParams() const
Returns the parameters needed for actual use of the device.
static const std::array< ios_fmt, 4 > ios_formats
std::pair< unsigned, unsigned > VideoSize
rational< double > FrameRate
void emitSignal(Args... args)
DeviceParams Parameters used by MediaDecoder and MediaEncoder to open a LibAV device/stream.
enum AVPixelFormat pixfmt