Skip to content
Snippets Groups Projects
Commit b4167b17 authored by Kateryna Kostiuk's avatar Kateryna Kostiuk Committed by Kateryna Kostiuk
Browse files

screensharing: add framerate for macOS

Change-Id: I2a22e80a8ea826641afef9a82bf3b17ca35fcaed
parent dc71d87c
Branches
No related tags found
No related merge requests found
...@@ -61,6 +61,16 @@ class VideoDeviceImpl { ...@@ -61,6 +61,16 @@ class VideoDeviceImpl {
VideoSize current_size_; VideoSize current_size_;
FrameRate rate_ {}; FrameRate rate_ {};
std::map<VideoSize, std::vector<FrameRate>> available_rates_; std::map<VideoSize, std::vector<FrameRate>> available_rates_;
FrameRate desktopFrameRate_ = {30};
std::vector<FrameRate> desktopFrameRates_ = {FrameRate(5),
FrameRate(10),
FrameRate(15),
FrameRate(20),
FrameRate(25),
FrameRate(30),
FrameRate(60),
FrameRate(120),
FrameRate(144)};
}; };
VideoDeviceImpl::VideoDeviceImpl(const std::string& uniqueID) VideoDeviceImpl::VideoDeviceImpl(const std::string& uniqueID)
...@@ -69,6 +79,14 @@ VideoDeviceImpl::VideoDeviceImpl(const std::string& uniqueID) ...@@ -69,6 +79,14 @@ VideoDeviceImpl::VideoDeviceImpl(const std::string& uniqueID)
, avDevice_([AVCaptureDevice deviceWithUniqueID: , avDevice_([AVCaptureDevice deviceWithUniqueID:
[NSString stringWithCString:uniqueID.c_str() encoding:[NSString defaultCStringEncoding]]]) [NSString stringWithCString:uniqueID.c_str() encoding:[NSString defaultCStringEncoding]]])
{ {
if (id == DEVICE_DESKTOP) {
name = DEVICE_DESKTOP;
VideoSize size {0, 0};
available_sizes_.emplace_back(size);
available_rates_[size] = desktopFrameRates_;
return;
}
name = [[avDevice_ localizedName] UTF8String]; name = [[avDevice_ localizedName] UTF8String];
available_sizes_.reserve(avDevice_.formats.count); available_sizes_.reserve(avDevice_.formats.count);
...@@ -111,9 +129,13 @@ DeviceParams ...@@ -111,9 +129,13 @@ DeviceParams
VideoDeviceImpl::getDeviceParams() const VideoDeviceImpl::getDeviceParams() const
{ {
DeviceParams params; DeviceParams params;
params.name = [[avDevice_ localizedName] UTF8String];
params.unique_id = id; params.unique_id = id;
params.input = id; params.input = id;
if (id == DEVICE_DESKTOP) {
params.framerate = desktopFrameRate_;
return params;
}
params.name = [[avDevice_ localizedName] UTF8String];
params.framerate = rate_; params.framerate = rate_;
params.format = "avfoundation"; params.format = "avfoundation";
params.pixel_format = "nv12"; params.pixel_format = "nv12";
...@@ -125,6 +147,11 @@ VideoDeviceImpl::getDeviceParams() const ...@@ -125,6 +147,11 @@ VideoDeviceImpl::getDeviceParams() const
void void
VideoDeviceImpl::setDeviceParams(const DeviceParams& params) VideoDeviceImpl::setDeviceParams(const DeviceParams& params)
{ {
if (id == DEVICE_DESKTOP) {
name = DEVICE_DESKTOP;
desktopFrameRate_ = params.framerate;
return;
}
rate_ = params.framerate; rate_ = params.framerate;
current_size_ = extractSize({params.width, params.height}); current_size_ = extractSize({params.width, params.height});
} }
......
...@@ -127,6 +127,7 @@ VideoDeviceMonitor::VideoDeviceMonitor() : ...@@ -127,6 +127,7 @@ VideoDeviceMonitor::VideoDeviceMonitor() :
monitorImpl_(new VideoDeviceMonitorImpl(this)) monitorImpl_(new VideoDeviceMonitorImpl(this))
{ {
monitorImpl_->start(); monitorImpl_->start();
addDevice(DEVICE_DESKTOP, {});
} }
VideoDeviceMonitor::~VideoDeviceMonitor() VideoDeviceMonitor::~VideoDeviceMonitor()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment