19#include "../video_device.h"
71 std::vector<int> formats_ {};
72 std::vector<VideoSize> sizes_ {};
73 std::vector<FrameRate> rates_ {};
75 const android_fmt* fmt_ {
nullptr};
81VideoDeviceImpl::selectFormat()
88 for (
auto fmt : formats_) {
99 JAMI_WARN(
"AndroidVideo: No format matching %d", fmt);
104 JAMI_DBG(
"AndroidVideo: picked format %s", fmt_->
name.c_str());
107 JAMI_ERR(
"AndroidVideo: Unable to find a known format to use");
114 std::vector<unsigned>
sizes;
115 std::vector<unsigned>
rates;
116 formats_.reserve(16);
120 for (
size_t i = 0,
n =
sizes.size();
i <
n;
i += 2)
122 for (
const auto& r :
rates)
123 rates_.emplace_back(r, 1000);
129VideoDeviceImpl::getSize(
const VideoSize& size)
const
131 for (
const auto&
iter : sizes_) {
136 return sizes_.empty() ?
VideoSize {0, 0} : sizes_.back();
142 for (
const auto&
iter : rates_) {
147 return rates_.empty() ?
FrameRate {} : rates_.back();
150std::vector<VideoSize>
156std::vector<FrameRate>
171 params.width = size_.first;
172 params.height = size_.second;
181 rate_ = getRate(
params.framerate);
190 const std::vector<std::map<std::string, std::string>>&)
194 name = deviceImpl_->name;
200 return deviceImpl_->getDeviceParams();
206 return deviceImpl_->setDeviceParams(
params);
209std::vector<std::string>
215std::vector<VideoSize>
216VideoDevice::getSizeList(
const std::string& )
const
218 return deviceImpl_->getSizeList();
221std::vector<FrameRate>
222VideoDevice::getRateList(
const std::string& ,
VideoSize )
const
224 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< android_fmt, 2 > and_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.