[feat] update ScreenCapturerSck

This commit is contained in:
dijunkun
2025-05-20 19:11:17 +08:00
parent 9138ca771f
commit 97f6c18296
3 changed files with 21 additions and 11 deletions

View File

@@ -29,9 +29,19 @@ int ScreenCapturerSck::Start() {
int ScreenCapturerSck::Stop() { return 0; }
int ScreenCapturerSck::Pause(int monitor_index) { return 0; }
int ScreenCapturerSck::Pause(int monitor_index) {
if (screen_capturer_sck_impl_) {
return screen_capturer_sck_impl_->Pause(monitor_index);
}
return 0;
}
int ScreenCapturerSck::Resume(int monitor_index) { return 0; }
int ScreenCapturerSck::Resume(int monitor_index) {
if (screen_capturer_sck_impl_) {
return screen_capturer_sck_impl_->Resume(monitor_index);
}
return 0;
}
int ScreenCapturerSck::SwitchTo(int monitor_index) {
if (screen_capturer_sck_impl_) {

View File

@@ -114,6 +114,11 @@ ScreenCapturerSckImpl::~ScreenCapturerSckImpl() {
display_id_map_.clear();
display_id_map_reverse_.clear();
if (nv12_frame_) {
delete[] nv12_frame_;
nv12_frame_ = nullptr;
}
[stream_ stopCaptureWithCompletionHandler:nil];
[helper_ releaseCapturer];
}
@@ -281,15 +286,10 @@ void ScreenCapturerSckImpl::OnNewIOSurface(IOSurfaceRef io_surface, CFDictionary
uint32_t aseed;
IOSurfaceLock(io_surface, kIOSurfaceLockReadOnly, &aseed);
if (!nv12_frame_) {
nv12_frame_ = new unsigned char[width * height * 3 / 2];
width_ = width;
height_ = height;
}
if (nv12_frame_ && width_ * height_ < width * height) {
size_t required_size = width * height * 3 / 2;
if (!nv12_frame_ || (width_ * height_ * 3 / 2 < required_size)) {
delete[] nv12_frame_;
nv12_frame_ = new unsigned char[width * height * 3 / 2];
nv12_frame_ = new unsigned char[required_size];
width_ = width;
height_ = height;
}