tt2468
2a4e86d8da
Base: Add more module exports + code cleanup
2021-11-21 02:50:41 -08:00
tt2468
4d8013b07e
SettingsDialog: Add 6 character minimum length
...
Security requirements should be held just like every other platform
out there, even if they are lax
2021-11-21 02:29:21 -08:00
tt2468
2e079ad681
WebSocketServer: Various code cleanup
2021-11-21 01:37:21 -08:00
tt2468
29a72f9af8
WebSocketServer: Use WebSocketOpCode where possible
2021-11-21 01:37:21 -08:00
tt2468
0a294a558e
WebSocketServer: Move enums to types
directory
...
Code cleanup, makes WebSocketServer match how enums are handled in
other parts of the plugin
2021-11-21 01:37:21 -08:00
tt2468
4ca259b790
Base: Enforce -Wall and fix compiler warnings
...
That was *a lot* of warnings.
2021-11-20 02:34:48 -08:00
tt2468
32a9e12f62
Base: Logging improvements
...
Use blog_debug() in place of almost all debug logging messages, and
change some log levels to be less verbose.
2021-11-20 01:50:49 -08:00
tt2468
60f12a16f3
plugin-macros: Add blog_debug()
...
obs-studio's LOG_DEBUG setting only works in very specific
circumstances, which is why we implement our own debug logging. This
will help a lot of code cleanup.
2021-11-20 01:46:01 -08:00
tt2468
99cbaaf34c
Base: Implement ObsWebSocketApi + cleanup
...
- Implements a WIP ObsWebSocketApi, for obs-websocket-api.h. Events are
finished, but requests are not.
- Some logging improvements
- A bit of code cleanup around the plugin
2021-11-20 01:26:50 -08:00
tt2468
bd6c663775
Base: Add copyright header to source
2021-11-19 17:32:22 -08:00
tt2468
18ed1589ae
Base: Update obs-websocket git locations
...
obs-websocket has moved to the obsproject
2021-11-19 17:24:15 -08:00
tt2468
07a20b6458
Merge pull request #856 from dnaka91/record-pause-resume
...
Events: Add events for record pause and resume
2021-11-18 22:28:04 -08:00
Dominik Nakamura
6cb8eef96d
Events: Add events for record pause and resume
2021-11-19 15:24:00 +09:00
tt2468
5ab091a40b
Base: Move WebSocketServer to its own directory
...
Just helps with organization
2021-11-18 00:29:28 -08:00
tt2468
c60d09246c
Revert "Events: Re-enable *Changing events"
...
This reverts commit 32be21886c
.
2021-11-17 03:16:42 -08:00
tt2468
4076c0baa9
Requests: Add media input requests
2021-11-17 03:03:14 -08:00
tt2468
01013c1b27
Base: Fix compile error
...
I literally could have sworn I remember json::null() being valid, but
I guess not. Oops
2021-11-17 02:58:11 -08:00
tt2468
1dbb7a9686
Requests: Apply some code style changes
2021-11-17 02:14:13 -08:00
tt2468
0f17d3d6f8
Utils/Obs: Update StringHelper function names
...
I hated having `String` appended to half of the utils since it was
extra
2021-11-17 01:23:23 -08:00
tt2468
08eb2defbc
Requests: Add GetMediaInputState
2021-11-17 01:17:40 -08:00
tt2468
7403264d42
Requests/Utils: Modify utils naming/usage
...
A bit too niche to have a util that takes an output and returns a
timecode string. Let's just make it take a duration in milliseconds.
2021-11-17 01:07:04 -08:00
tt2468
32be21886c
Events: Re-enable *Changing events
2021-11-17 00:37:50 -08:00
tt2468
d5a702b0e8
Events: Disable *Changing events
...
CI fails right now because they are not yet included in an OBS release.
2021-11-17 00:36:53 -08:00
tt2468
0671ded7d1
Requests: Add recording requests
2021-11-17 00:30:17 -08:00
tt2468
9197a48088
Requests: Add SetSceneItemTransform
...
Yay party
2021-11-12 23:24:39 -08:00
tt2468
5faadc12de
Utils/Obs: Add scaleX
and scaleY
plus new util
2021-11-12 23:23:51 -08:00
tt2468
45f7661a5d
Requests: Add DuplicateSceneItem
2021-11-12 17:31:11 -08:00
tt2468
aa46bb74a5
RequestHandler/RPC: Add ValidateScene2
2021-11-12 17:30:46 -08:00
tt2468
af52a26e68
Utils: Add ability to specify transform/crop for scene item creation
2021-11-12 17:29:43 -08:00
tt2468
69494d9c85
Base: Add OBSSceneAutoRelease
2021-11-12 17:19:57 -08:00
tt2468
152faa5fe2
Events: Add profile/scene collection change events
2021-11-12 15:20:01 -08:00
tt2468
4e956d1ef4
Requests: Add note SetCurrentSceneCollection
2021-10-06 00:45:14 -07:00
tt2468
42c78f1831
Events: Prepare to add a few new OBS events
...
Pending PR merge and version release
2021-10-06 00:44:42 -07:00
tt2468
1b25e98dc2
Revert "Requests: Add Compare"
...
This reverts commit 3687086ce0
.
I realized that I'm adding too much too fast, and that we should
focus on getting v5 out first.
2021-10-05 20:17:45 -07:00
tt2468
3687086ce0
Requests: Add Compare
...
Non-functional, will have to finish impl later
2021-10-04 17:32:17 -07:00
tt2468
f0b207d021
Base: Add variable support to request batches + refactor
...
- Adds variables to execution types SERIAL_REALTIME and SERIAL_FRAME
- Pass by reference where copy is unnecessary
- Start WebSocket server after OBS finishes loading instead of on
plugin load
2021-10-01 17:34:09 -07:00
tt2468
16ea2c82e1
Requests: Verify current program scene
...
Crashes can occur if there is no current program scene. Currently
caused by connecting to obs-websocket and calling `GetSceneList`
before OBS has actually finished loading.
2021-10-01 17:20:38 -07:00
tt2468
981538aa2a
Base: Make some items atomic
2021-09-30 19:14:17 -07:00
tt2468
df7af451a7
Requests: Fix some parameter validation
...
Thanks to t2t2 for the report over Discord
2021-09-26 03:54:16 -07:00
tt2468
a8d27ede9e
Base: Add request batch execution types
...
A new `executionType` field has been added to the `RequestBatch` Op
Types added:
- `OBS_WEBSOCKET_REQUEST_BATCH_EXECUTION_TYPE_SERIAL_REALTIME`(default)
- `OBS_WEBSOCKET_REQUEST_BATCH_EXECUTION_TYPE_SERIAL_FRAME`
- `OBS_WEBSOCKET_REQUEST_BATCH_EXECUTION_TYPE_PARALLEL`
`OBS_WEBSOCKET_REQUEST_BATCH_EXECUTION_TYPE_SERIAL_REALTIME`:
- Same as how request batches have always worked.
- Requests are processed in-order
- Requests are processed as soon as possible by one worker thread
- The `Sleep` request blocks execution for a specified amount of real
world time
`OBS_WEBSOCKET_REQUEST_BATCH_EXECUTION_TYPE_SERIAL_FRAME`:
- New!
- Requests are processed in-order
- Requests are processed on the graphics thread. BE VERY CAREFUL NOT
TO OVERLOAD THE GRAPHICS THREAD WITH LARGE REQUESTS. A general rule
of thumb is for your request batches to take a maximum of 2ms per
frame of processing.
- Requests processing starts right before the next frame is composited.
This functionality is perfect for things like `SetSceneItemTransform`
- The `Sleep` request will halt processing of the request batch for
a specified number of frames (ticks)
- To be clear: If you do not have any sleep requests, all requests in
the batch will be processed in the span of a single frame
- For developers: The execution of requests gets profiled by the OBS
profiler under the `obs-websocket-request-batch-frame-tick` name.
This value (shown in the OBS log after OBS shutdown) represents the
amount of time that the graphics thread spent actively processing
requests per frame. This tool can be used to determine the amount of
load that your request batches are placing on the graphics thread.
`OBS_WEBSOCKET_REQUEST_BATCH_EXECUTION_TYPE_PARALLEL`:
- New!
- Requests are processed asynchronously at the soonest possible time.
- Requests are processed by the core obs-websocket thread pool, where
the number of workers == the number of threads on your machine.
- If you have 12 threads on your machine, obs-websocket will be able
to process 12 requests at any given moment.
- The `results` array is populated by order of request completion.
Consider the order to be random.
- The `Sleep` request will return an error if attempted to be used in
this mode.
- Note: This feature is experimental and can increase the chances of
causing race conditions (crashes). While the implementation is fully
thread-safe, OBS itself is not. Usage of this is only recommended if
you are processing very large batches and need the performance benefit.
- Example use case: Performing `SaveSourceScreenshot` on 8 sources
at once.
2021-09-26 03:12:29 -07:00
tt2468
45854e2949
Config: Properly add more logging, fix bug
2021-09-26 03:10:43 -07:00
tt2468
181003af89
Utils: Use emplace_back instead of push_back
...
Saves copy operations
2021-09-25 19:34:05 -07:00
tt2468
2218b7956c
Requests: Support groups in most of the scene item requests
...
Tested each request to the fullest reasonable extent. Requests performed properly without errors or leaks
2021-09-25 18:59:04 -07:00
tt2468
0e8650dbd2
Requests: Support groups in GetSceneItemId
2021-09-25 18:45:37 -07:00
tt2468
da4297ee88
Request: Clarify error messages
2021-09-25 18:45:00 -07:00
tt2468
5350c115bf
Requests: Improve more request checks
2021-09-25 18:29:27 -07:00
tt2468
d09571f0e3
Requests: Improve some check logic in GetSourceActive
2021-09-25 18:20:01 -07:00
tt2468
d04d42240a
Request: Fix scene filter functionality
...
Previous functionality did not support groups.
2021-09-25 18:14:25 -07:00
tt2468
9ca83e7570
Requests: Make GetSceneItemId scene only
2021-09-25 17:54:39 -07:00
tt2468
aa0ba78e46
Base: Use more refcounts
...
Use refcounts more effectively
2021-09-25 17:52:08 -07:00
tt2468
b91ad0f790
Requests: Add GetSceneItemId
...
I realized that it was not entirely fair to expect users to fetch a
scene's item list, then search the list on the client in order to find
an item ID, so this is a compromise. This will also help developers
move from the 4.x scene item functionality to 5.x's
Operating on scene items by relying on source name can be dangerous
and in some cases exhibit what would be considered undefinied behavior.
Operating on scene items using IDs is best practice.
2021-09-25 17:21:06 -07:00
tt2468
4e0b8c5f11
Utils/Obs: Add GetSceneItemByName
...
Simple, didn't really need to be a util tbh. But I added it anyway
and there's nothing you can do to stop me
2021-09-25 17:21:00 -07:00
tt2468
ea948766a5
Events: Fix conversion warning
...
Thanks micolous for the report.
2021-09-24 18:54:48 -07:00
tt2468
c73a153c9a
Utils/Crypto: Use better method for GenerateSecret
...
Thanks to micolous for the suggestion
2021-09-24 18:39:46 -07:00
tt2468
0c2e40263a
WebSocketServer: Remove QtConcurrent dependency
...
We can avoid requiring QtConcurrent by using QRunnables. Thanks to
micolous for the idea.
2021-09-24 18:11:31 -07:00
tt2468
78d02696d0
Utils: Add retrocompatability header
...
QRunnable::create was added in Qt 5.15, but Ubuntu still uses 5.12.
This reimplements that functionality until Ubuntu moves to >= 5.15
2021-09-24 18:10:17 -07:00
tt2468
7a888c2f92
Config: Add more logging
...
Good to have
2021-09-24 18:09:46 -07:00
tt2468
342164dfb5
Forms: Use QHideEvent instead of QCloseEvent
...
QCloseEvent is the wrong event to use here. If the `Ok` button is
pressed for example, QCloseEvent is not emitted. QHideEvent is
always called when the dialog is hidden.
2021-09-17 03:00:33 -07:00
tt2468
a4e62acf25
Forms: Update ConnectInfo on settings apply instead of close
...
Just for better usability
2021-09-17 02:54:29 -07:00
tt2468
d811c95e10
Requests: Add some more failure checks and improve response codes
2021-09-17 02:43:20 -07:00
tt2468
eebcc25115
Requests: Add unpublished RemoveInput
...
The functionality depends on obs-studio#5276 to be merged and released,
so we can add it but not enable it for now.
2021-09-17 02:42:58 -07:00
tt2468
c9fa09edc4
Config/Base: Refactor with fixes
...
Fixes these things:
- Websocket password is not generated if FirstLoad and overridden
- Save generated password immediately if FirstLoad
- Do not generate new password if FirstLoad and password already exists
- More logging
2021-09-17 02:25:30 -07:00
tt2468
69ccc99921
Utils/UI: Make GeneratePassword() use std::string
...
Just for consistency
2021-09-17 02:09:44 -07:00
tt2468
a5a19b9952
Utils/Crypto: Use QRandomGenerator instead of qrand()
...
qrand() is obsolete, and QRandomGenerator produces numbers seeded from
the platform's RNG source. Makes our authentication system way more
secure too.
2021-09-17 02:00:30 -07:00
tt2468
66ff329da4
Config: Fix typo
2021-09-15 03:46:52 -07:00
Dominik Nakamura
d20c0d0da7
Reqeusts: Fix wrong validation in ValidateBasic
2021-09-06 10:48:01 +09:00
tt2468
b9b8e38998
WebSocketServer: Remove ignoreNonFatalRequestChecks from session params
2021-09-04 10:57:00 -07:00
tt2468
e89c0c2b05
Base: More code cleanup and fixes
2021-09-04 10:47:51 -07:00
tt2468
7e1e1bc33c
Base: Large plugin refactor
...
- Merge WebSocketProtocol into WebSocketServer
- Having them separated was not doing anything productive
- Request: Move SessionPtr to RequestHandler
- Less copying to do for batch requests
- Fully modularize EventHandler
- Make BroadcastEvent a stored callback that WebSocketServer sets
- Return early on high volume events to avoid unnecessary compute
- These events will only generate a json object when it is actually
needed
2021-09-04 10:04:00 -07:00
tt2468
537595658d
Requests: Add GetSceneItemTransform
2021-09-03 15:59:09 -07:00
tt2468
c43d829845
Events: Complete SceneItemTransformChanged
2021-09-03 15:58:50 -07:00
tt2468
3d2fb65357
Utils: Add GetSceneItemTransform
2021-09-03 15:58:34 -07:00
tt2468
96dcc49adb
Requests: More requests and code cleanup
...
(plus very slight performance improvement)
2021-09-03 12:52:50 -07:00
tt2468
25b3bd44ba
RequestHandler/RPC: Improve code efficiency and add optionals
2021-09-03 12:52:15 -07:00
tt2468
bcdb8ee352
Events: Fix SceneItemListReindexed event name
2021-09-03 08:59:09 -07:00
tt2468
333737f400
Requests: Additions and code cleanup
2021-09-02 19:29:13 -07:00
tt2468
82d8a3d7ce
Utils: Add stuff to Obs
2021-09-02 19:28:55 -07:00
tt2468
d7f96b6dea
Revert "Request: Minor code cleanup"
...
This reverts commit c16669c7b0
.
2021-09-02 13:33:20 -07:00
tt2468
c16669c7b0
Request: Minor code cleanup
2021-09-02 13:25:17 -07:00
tt2468
0269209d59
Requests: Use OBS naming for monitorType enum
2021-09-02 11:24:48 -07:00
tt2468
9a8587d6df
Requests: Check for last scene in RemoveScene
2021-09-01 10:43:36 -07:00
tt2468
8a45560297
Utils: Add GetSceneCount()
2021-09-01 10:43:24 -07:00
tt2468
fb0656c31e
RequestHandler: Simplify request statuses
2021-09-01 10:30:40 -07:00
tt2468
26bef074ac
EventHandler: Add (disabled) InputAudioMonitorTypeChanged event
2021-08-31 06:39:09 -07:00
tt2468
e18aaff661
RequestStatus: Add new statuses to replace old soon
2021-08-31 06:38:55 -07:00
tt2468
4271730dc2
Requests: Add more requests
2021-08-30 13:55:22 -07:00
tt2468
b86107a699
Base: Add OBSPropertiesAutoDestroy
2021-08-30 13:55:05 -07:00
tt2468
a40160e305
WebSocketServer: Use Sec-WebSocket-Protocol for json/msgpack
2021-08-30 09:59:59 -07:00
tt2468
b58f6e8366
WebSocketServer: Remove unnecessary string usage
2021-08-30 04:46:59 -07:00
tt2468
1ecf2a4fdb
CMakeLists: Allow specifying version suffix string
2021-08-30 02:50:02 -07:00
tt2468
292b2b0d3b
Base: Remove generated plugin macros file
2021-08-30 02:49:43 -07:00
tt2468
f37edbd71c
EventHandler: Include required event intent in emit
2021-08-30 01:39:46 -07:00
tt2468
78f9c93739
Requests: Fix global realm storage on persistent data req's
2021-08-30 01:32:22 -07:00
tt2468
96c5818395
ConnectInfo: Update QR code format
2021-08-30 01:11:29 -07:00
tt2468
a37cfb3e5b
WebSocketProtocol: Fix Identified OpCode responses
2021-08-28 07:10:03 -07:00
tt2468
03e32c8b5e
Base: Major protocol refactor
...
As discussed in the #development channel in discord
- Switch from using message types to integer op codes
- Consolidate op-specific keys into `d` sub-object
- Shorten low-level payload keys from `messageType` to `op`, add `d`
Other changes:
- The WebSocketCloseCode enum has been refactored. It's best to just
treat it like it's new
- Some performance benefits came along the way. Nothing gamechanging,
but notable
- Various bug fixes discovered while refactoring
2021-08-28 05:02:24 -07:00
tt2468
91fadf505f
Base: Overwrite bad define
2021-08-27 06:24:30 -07:00
tt2468
ade9653ed6
Base: Only include required util namespaces
2021-08-27 04:34:06 -07:00
tt2468
0547e1f2da
Base: Lots of changes
2021-08-27 04:19:42 -07:00
tt2468
16697fb65e
Requests: Add more requests
2021-08-27 02:33:33 -07:00
tt2468
fc08828773
Base: Update QMainWindow cast
2021-08-27 01:20:13 -07:00
tt2468
251e3a28c1
Requests: Reorder some requests
2021-08-26 23:29:55 -07:00
tt2468
bd289ae751
Requests: Rename slotData
to slotValue
to align with other profile parameters
2021-08-26 23:11:24 -07:00
tt2468
7c5c0f42da
Requests: Merge global and profile persistent data requests
...
The code was largely shared, so it made more sense to just merge the
requests and create realms.
2021-08-26 23:06:23 -07:00
tt2468
8185580cff
RequestStatus: Add DataRealmNotFound
2021-08-26 23:02:52 -07:00
tt2468
64df33152a
Utils: Switch to obs_enum_scenes()
for GetSceneList
...
More threadsafe than `obs_frontend_get_scenes()`, not that either
are in any way threadsafe.
2021-08-26 22:46:53 -07:00
tt2468
4d8b80a5a7
Utils: Fix missing header file newlines
2021-08-26 20:33:06 -07:00
tt2468
ea713ea808
Requests: Add persistent data requests
2021-08-26 20:32:00 -07:00
tt2468
8e539d6cdb
Utils: Add file access utils for json and text
2021-08-26 20:11:42 -07:00
tt2468
1fc60aba92
SettingsDialog: Fix Generate Password button enable logic
...
On OBS load, the Generate Password button would be enabled regardless
of if authentication was enabled, or if the password was overridden.
2021-08-26 19:07:26 -07:00
tt2468
43a889c1d4
Utils: Refactor into dedicated components
2021-08-26 19:00:48 -07:00
tt2468
306844e42d
Utils: Add helper to get current profile file path
2021-08-26 18:41:53 -07:00
tt2468
eb0743f683
Requests: Fix GetProfileParameter on Windows
...
If either return value was not defined in the profile config,
it would cause OBS to crash on Windows due to assigning a
nullptr to an std::string.
2021-08-26 17:56:13 -07:00
tt2468
87e2972a2d
WebSocketProtocol: Correct a log message
2021-08-26 17:49:15 -07:00
tt2468
c402b4232c
Merge branch 'master' of https://github.com/Palakis/obs-websocket
2021-07-24 20:48:58 -07:00
tt2468
7f7651b405
Utils: Attempt fix output timecode string
2021-07-24 20:48:44 -07:00
tt2468
fb1580b44e
Requests: Add extra logging to GetProfileParameter
2021-07-24 03:04:53 -07:00
tt2468
7081824bbe
Utils: Add includeDisabled in GetInputKindList
2021-07-22 17:38:32 -07:00
tt2468
d0e05ae45c
Requests: Add more requests
...
- GetStreamServiceSettings
- SetStreamServiceSettings
- CreateInput
- GetStreamStatus
- StartStream
- StopStream
2021-07-22 16:26:04 -07:00
tt2468
4d271da541
Base: Code cleanup and add some requests
2021-07-22 03:24:53 -07:00
tt2468
0a02015f7d
Base: General code cleanup
2021-06-22 15:51:52 -07:00
tt2468
33137496a7
RequestHandler: Lots of code cleanup
2021-06-22 15:24:48 -07:00
tt2468
5cf2b50b63
RequestHandler: Add some more requests
2021-06-21 15:31:47 -07:00
tt2468
584be06398
Utils: Add CreateSceneItem and CreateInput
2021-06-21 15:26:59 -07:00
tt2468
ae40c61c2b
RequestHandler: Some more requests
2021-06-16 08:19:13 -07:00
tt2468
cc77724229
RequestHandler: More simplification (and fix)
...
obs_queue_task is set to wait, so there is no need to create our
bool on the stack, as it should never go out of scope when the task
is run. Additionally, the old way didn't actually work anyway.
2021-06-16 08:16:23 -07:00
tt2468
9229107bab
RequestHandler: Simplify TriggerHotkeyByKeySequence checks
2021-06-16 08:10:43 -07:00
tt2468
4f804baf95
Request: Consider null parameters missing
2021-06-16 06:25:20 -07:00
tt2468
bc1dc807e4
RequestStatus: Add TooManyRequestParameters
2021-06-16 06:25:00 -07:00
tt2468
d6aeeeea0c
RequestHandler: Add SetInputSettings
2021-06-16 04:27:08 -07:00
tt2468
ce8f393eb8
Request: Fix memory leak and crash in ValidateInput
2021-06-16 04:18:37 -07:00
tt2468
271db036fe
RequestHandler: Add GetInputSettings
2021-06-16 02:41:24 -07:00
tt2468
55755ae066
Request: Minor code cleanup
2021-06-16 02:41:13 -07:00
tt2468
3400bfdc9a
Request: Add ValidateInput()
2021-06-16 02:22:13 -07:00
tt2468
1116af128e
RequestHandler: Add GetInputDefaultSettings
2021-06-16 02:07:51 -07:00
tt2468
8ad009ba51
RequestHandler: Move GetInputList logic to Utils
2021-06-16 01:39:04 -07:00
tt2468
4d77927ceb
Utils: Add Obs::ListHelper::GetInputKindList()
2021-06-16 01:31:36 -07:00
tt2468
428e437429
RequestHandler: Add unversionedInputKind to GetInputList
2021-06-16 01:26:00 -07:00
tt2468
ccb69754b5
EventHandler: Add unversionedInputKind to InputCreated
2021-06-16 01:22:14 -07:00
tt2468
5cc52ce704
Utils: Add isGroup to Obs::ListHelper::GetSceneList()
2021-06-16 00:57:18 -07:00
tt2468
94d7df0bc1
EventHandler: Add isGroup bool to create/remove scene events
2021-06-16 00:51:24 -07:00
tt2468
aac06b101e
RequestHandler: Add GetInputList
2021-06-16 00:49:07 -07:00
tt2468
9af7216891
RequestHandler: Don't error out on null optional parameters
2021-06-16 00:43:46 -07:00
tt2468
efdea72987
RequestHandler: Add RemoveScene
2021-06-15 23:57:48 -07:00
tt2468
9088cb4db8
EventHandler: Add note to SceneItemRemoved
2021-06-15 23:48:16 -07:00
tt2468
b95a2e648f
RequestHandler: Add more scene requests
2021-06-15 00:21:57 -07:00
tt2468
c5af073780
RequestHandler: Add more scene requests
2021-06-14 23:42:18 -07:00
tt2468
cb5ee53956
RequestHandler: Add GetSceneList
2021-06-14 22:52:23 -07:00
tt2468
f26cf8f95f
RequestHandler: Add screenshot requests
2021-06-14 22:33:01 -07:00
tt2468
52204a9eec
WebSocketServer: Log connects and disconnects
2021-06-14 20:50:50 -07:00