Skip to content

Commit

Permalink
Add function to resize the browser source from javascript
Browse files Browse the repository at this point in the history
  • Loading branch information
exeldro committed Aug 23, 2023
1 parent bbe8c74 commit 6c5bb23
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 7 deletions.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,15 @@ Permissions required: ALL
window.obsstudio.stopVirtualcam()
```

#### Set the browser size
Permissions required: BASIC
```js
/**
* @param {int} width - Width of the browser size
* @param {int} height - Height of the browser size
*/
window.obsstudio.setBrowserSize(width, height)
```

### Register for visibility callbacks

Expand Down
14 changes: 7 additions & 7 deletions browser-app.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,13 +100,13 @@ void BrowserApp::OnBeforeCommandLineProcessing(
}

std::vector<std::string> exposedFunctions = {
"getControlLevel", "getCurrentScene", "getStatus",
"startRecording", "stopRecording", "startStreaming",
"stopStreaming", "pauseRecording", "unpauseRecording",
"startReplayBuffer", "stopReplayBuffer", "saveReplayBuffer",
"startVirtualcam", "stopVirtualcam", "getScenes",
"setCurrentScene", "getTransitions", "getCurrentTransition",
"setCurrentTransition"};
"getControlLevel", "getCurrentScene", "getStatus",
"startRecording", "stopRecording", "startStreaming",
"stopStreaming", "pauseRecording", "unpauseRecording",
"startReplayBuffer", "stopReplayBuffer", "saveReplayBuffer",
"startVirtualcam", "stopVirtualcam", "getScenes",
"setCurrentScene", "getTransitions", "getCurrentTransition",
"setCurrentTransition", "setBrowserSize"};

void BrowserApp::OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame>,
Expand Down
24 changes: 24 additions & 0 deletions browser-client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,30 @@ bool BrowserClient::OnProcessMessageReceived(
case ControlLevel::Basic:
if (name == "saveReplayBuffer") {
obs_frontend_replay_buffer_save();
} else if (name == "setBrowserSize") {
int width = input_args->GetInt(1);
int height = input_args->GetInt(2);
if (!width)
width = (int)round(input_args->GetDouble(1));
if (!height)
height = (int)round(input_args->GetDouble(2));
if (width > 0 && height > 0) {
obs_data_t *s =
obs_source_get_settings(bs->source);
if (s &&
(obs_data_get_int(s, "width") != width ||
obs_data_get_int(s, "height") != height)) {
obs_data_set_int(s, "width", width);
obs_data_set_int(s, "height", height);
obs_source_update(bs->source, nullptr);
obs_data_release(s);
}
} else {
blog(LOG_WARNING,
"Browser source '%s' tried to change its size to %ix%i",
obs_source_get_name(bs->source), width,
height);
}
}
[[fallthrough]];
case ControlLevel::ReadUser:
Expand Down

0 comments on commit 6c5bb23

Please sign in to comment.