Commit Graph

424 Commits

Author SHA1 Message Date
tt2468
947450ce4e Revert "Revert "Events: Re-enable *Changing events""
This reverts commit c60d09246c.
2021-12-29 20:29:45 -08:00
tt2468
38157579a6 Requests: Enable GetRecordDirectory 2021-12-29 19:53:10 -08:00
tt2468
707ac3f7e3 docs: Increase complexity of G/SetProfileParameter 2021-12-29 00:51:50 -08:00
tt2468
732d5af50c EventHandler: Add Ui category 2021-12-29 00:34:25 -08:00
tt2468
0939273abf EventSubscription: Add Ui category 2021-12-29 00:32:28 -08:00
tt2468
f8263caa03 RequestHandler: Add code comment to RemoveSceneItem 2021-12-29 00:23:30 -08:00
tt2468
af217c05f1 EventHandler: [BREAKING] Rename CurrentSceneChanged to CurrentProgramSceneChanged
Now matches the requests
2021-12-28 23:53:58 -08:00
tt2468
e640ae1218 docs: Finish documenting events 2021-12-28 23:45:11 -08:00
tt2468
bb2c125601 Utils: Use atomic in VolumeMeter manager 2021-12-28 22:50:11 -08:00
tt2468
e1cb858d2d Utils: Split monitor type util 2021-12-28 22:49:58 -08:00
tt2468
1339202c02 docs: Fix Array fields in transition requests 2021-12-28 22:37:00 -08:00
tt2468
964e91bbd7 docs: Document ObsMediaInputAction 2021-12-28 18:57:02 -08:00
tt2468
9385a2449e docs: Document the rest of the undocumented requests 2021-12-28 18:28:04 -08:00
tt2468
ec79124b5f docs: Document transition requests 2021-12-28 18:11:30 -08:00
tt2468
4d65c2adee Utils: Move GetListPropertyItems to utils 2021-12-28 17:16:41 -08:00
tt2468
e2f60b002e RequestHandler: Reorder Ui requests to new category 2021-12-28 16:58:28 -08:00
tt2468
86506778ad RequestHandler: Add Ui category
Creates a new category specific to requests controlling the OBS UI.
2021-12-28 16:58:28 -08:00
tt2468
0992f74fad RequestHandler: Use ValidateScene2 for GetSceneItemId 2021-12-28 16:58:28 -08:00
tt2468
430e61bef7 RequestHandler: Use ValidateScene2 in ValidateSceneItem 2021-12-28 16:58:28 -08:00
tt2468
da83de7503 Config: Fix firstload password generation 2021-12-25 00:57:09 -08:00
tt2468
07249da400 RequestHandler: More transition requests 2021-12-23 21:00:11 -08:00
tt2468
14238027cc RequestHandler: More transition requests 2021-12-23 01:07:27 -08:00
tt2468
5cbf439f55 Utils: Add GetSceneTransitionByName 2021-12-23 01:07:15 -08:00
tt2468
e05be47847 RequestHandler: Add GetTransitionKindList 2021-12-22 16:28:12 -08:00
tt2468
2302fdd25f Utils: Fix up transition related utils 2021-12-22 16:27:50 -08:00
tt2468
1c6ec1dda2 RequestHandler: Add ResourceNotConfigurable 2021-12-22 16:08:39 -08:00
tt2468
ad347c4823 RequestHandler: Add files for Transitions and Filters 2021-12-22 15:57:57 -08:00
tt2468
40ff3f6960 Base: More code/comment nitpicks 2021-12-21 20:35:08 -08:00
tt2468
0f303504e1 Base: Nitpick cleanup for obs-websocket.cpp 2021-12-21 20:35:08 -08:00
tt2468
91e3f5ee18 EventHandler: Remove platform include
Already included by obs-websocket.h, but does not have ifdefs
protecting strtoll. Better to just remove it.
2021-12-21 20:35:08 -08:00
tt2468
b331f76d40 Utils: Use output path util instead of hacky method
We still have to wait for a new OBS version to be released before this
will work, but to be fair it was pretty broken in the previous state.
2021-12-21 03:09:45 -08:00
tt2468
a898bacd79 Utils: Rename VolumeMeter utils for consistency 2021-12-21 03:09:45 -08:00
tt2468
527a008002 RequestHandler: Remove OutputStartFailed request status
Accidentally pushed this commit when it was for a component which will
not be implemented.
2021-12-21 03:09:45 -08:00
tt2468
f566ccd76b Utils: Add output state util to utils 2021-12-21 01:32:12 -08:00
tt2468
2e8622e8d7 RequestHandler: Fix IsValid() input parameter 2021-12-21 01:32:12 -08:00
tt2468
4a193d44a1 RequestHandler: Add OutputStartFailed request status 2021-12-21 01:32:12 -08:00
tt2468
d29b87ffc1 EventHandler: Remove unused file 2021-12-21 01:32:12 -08:00
tt2468
1e6a60f545 Utils: Rename ListHelper to ArrayHelper 2021-12-21 01:32:12 -08:00
tt2468
5cd1af426a Utils: Rename DataHelper to ObjectHelper 2021-12-21 01:32:12 -08:00
tt2468
f66080a031 Utils: Split Obs utils into individual files 2021-12-21 01:32:12 -08:00
tt2468
82ad3313e8 docs: More docs 2021-12-21 01:32:12 -08:00
tt2468
0c7fda28a0
Merge pull request #881 from dnaka91/fix-wrong-opcode-formatting
protocol: Fix error formatting for wrong op codes
2021-12-19 17:11:30 +07:00
Dominik Nakamura
9749502e88
protocol: Fix error formatting for wrong op codes 2021-12-19 17:30:58 +09:00
Dominik Nakamura
c3e6bc323a
Adjust spacing of docs 2021-12-19 17:23:22 +09:00
Dominik Nakamura
873ad1b167
docs: Document missing overlay field 2021-12-19 16:31:31 +09:00
tt2468
a40e79e987 Utils/Obs: Fix build (again) 2021-12-17 15:48:59 -08:00
tt2468
84e649a6f7 Utils: Tweak some includes 2021-12-17 14:47:56 -08:00
tt2468
c4ab69481b Base: Move AutoRelease helpers to utils + build fix
- Moves the AutoRelease helpers to utils/Obs.h
- Fixes build using obsproject/obs-studio/pull/5580
2021-12-17 14:35:19 -08:00
tt2468
edf4e942fa RequestHandler: Use correct output in GetRecordStatus
It was using the stream output due to a glitch, surprised nobody
reported it yet.
2021-12-17 02:38:56 -08:00
tt2468
54fd7af5ef
Merge pull request #878 from dnaka91/fix-scenes-type
docs: Fix `scenes` type from `String` to `Object`
2021-12-17 14:53:12 +07:00
Dominik Nakamura
2a33179588
docs: Fix scenes type from String to Object 2021-12-17 16:37:27 +09:00
tt2468
f7ab102c21
Merge pull request #877 from dnaka91/supported-image-formats
docs: Add missing `supportedImageFormats` to docs
2021-12-17 13:57:14 +07:00
tt2468
77f8c5be4d
Merge pull request #876 from dnaka91/scenes-wrong-category
docs: Correct the category for scene requests
2021-12-17 13:55:53 +07:00
Dominik Nakamura
64c3b62360
docs: Add missing supportedImageFormats to docs 2021-12-17 15:16:37 +09:00
Dominik Nakamura
2c2b584ecc
docs: Correct the category for scene requests 2021-12-17 15:00:47 +09:00
Dominik Nakamura
69522024d2
docs: Adjust slotValue type to Any 2021-12-17 12:21:39 +09:00
tt2468
0f6ee87f99 WebSocketServer: [BREAKING] Remove ignoreInvalidMessages identify param
This parameter is a weird one. With the abstraction of requests from
the underlying websocket protocol, there theoretically should be no
need to ignore invalid messages, because the implementation of the
low-level protocol on clients should be solid, with the requests
themselves not being fatal to the session.

As such, I consider this to be feature bloat, with lots of messy code
attributed to it.
2021-12-15 02:41:37 -08:00
tt2468
41a145c57c SettingsDialog: Only restart when necessary
The previous few commits now allow for us to change settings without
restarting the WebSocket server.
2021-12-15 02:11:33 -08:00
tt2468
fab56d71ea WebSocketServer: Get config values directly from Config
We were previously storing config values in the WebSocketServer class
itself, in a weak attempt at modularity. It's better to give up on that
idea and just get it from the Config object itself.
2021-12-15 02:06:52 -08:00
tt2468
b490e4409b CMakeLists: Add runtime tests flag 2021-12-15 02:06:31 -08:00
tt2468
8fbcbad9ec Config: Make values atomic 2021-12-15 02:06:16 -08:00
tt2468
82d5468b73 EventHandler: [BREAKING] Rename ExternalPluginEvents to Vendors
Make it fit the rest of the naming
2021-12-14 21:51:30 -08:00
tt2468
2e7262fe11 docs: Document plugin api event 2021-12-14 18:33:50 -08:00
tt2468
5f261de143 WebSocketApi: Finish implementations 2021-12-14 18:22:52 -08:00
tt2468
29a5cfe2fe Utils: Include algorithm
Good thing to have
2021-12-14 18:02:13 -08:00
tt2468
20426924cd Utils: [BREAKING CHANGE] Remove groups from GetSceneList + re-add order
- Removes the `isGroup` boolean field from the scene object, and does
not include any groups in the returned array.
- Reintroduces ordered results. Previous versions used a method which
did not return the scene list in the same order as the UI. This change
also means that this request is more susceptible to crashing OBS if
called during a scene collection change.
- Adds the `sceneIndex` number to the scene object. 0 being the bottom
of the scene list, just like in other requests like `GetSceneItemList`.
2021-12-14 17:37:06 -08:00
tt2468
889062e44b RequestHandler: Reorder BroadcastCustomEvent
Code cleanup stuff
2021-12-13 19:20:27 -08:00
tt2468
eb8d69dca5 Base: Move request batch processing to requesthandler directory
Request batch processing had less to do with the protocol/server and
more to do with the actual request handler, so it felt better to move
it.
2021-12-13 19:10:08 -08:00
tt2468
e47de63786
docs: Fix request type typo 2021-12-13 12:33:35 -08:00
tt2468
d7887b4c32 WebSocketServer: Fix execution type 2021-12-11 23:28:37 -08:00
tt2468
de1f843ce6 WebSocketServer: Swap variable behavior and fix crash caused by const parameters 2021-12-10 23:58:14 -08:00
tt2468
5ac813b897 WebSocketServer: Tiny code cleanup 2021-12-10 22:33:52 -08:00
tt2468
43e2860709 WebSocketServer: Implement haltOnFailure for batch requests 2021-12-10 22:28:22 -08:00
tt2468
c9c5da6837 RequestBatchExecutionType: Change executionType values
Fits better for the front-facing API.
2021-12-10 22:00:02 -08:00
tt2468
b66d2284b3 WebSocketOpCode: Add IsValid check
Not used, but useful addition.
2021-12-10 21:59:13 -08:00
tt2468
fcbe11616d
docs: Overhaul documentation (#863)
More docs-related commits will follow, but this needs to be merged in order to continue with other development.

* Docs: Overhaul docs generator (beginning)

* docs: Rename comments file

* docs: Move comments gitignore

* docs: Initial request documentation

* docs: Improvements to comment processing

* docs: More improvements

* docs: Add enum functionality for protocol.json

* WebSocketServer: Document enums

* RequestHandler: Document RequestStatus enum

* Base: Move ObsWebSocketRequestBatchExecutionType to its own file

Moves it to its own file, renaming it to `RequestBatchExecutionType`.
Changes the RPC to use integer values for selecting execution type
instead of strings.

* docs: Update introduction header

Removes the enum section, and documents RequestBatchExecutionType.

* WebSocketCloseCode: Shuffle a bit

* Base: Use `field` instead of `key` or `parameter` in most places

* RequestStatus: Mild shuffle

It was really bothering me that OutputPaused and OutputNotPaused
had to be separated, so we're breaking it while we're breaking
other stuff.

* docs: Delete old files

They may be added back in some form, but for now I'm getting them
out of the way.

* docs: Add enum identifier value

Forgot to add this before, oops

* docs: Document more enums

* docs: Add basic protocol.md generator

* docs: More work on MD generator

* docs: MD generator should be finished now

* docs: More fixes

* docs: More fixes

* docs: More tweaks + add readme

* docs: Update readme and add inputs docs

* docs: More documentation
2021-12-10 21:38:18 -08:00
tt2468
6cec018c8d
WebSocketServer: Fix null check for request batch variables 2021-12-10 21:20:48 -08:00
tt2468
6d684eb07f ObsVolumeMeter: Don't use obs_weak_source_expired()
This function is not released yet.

TODO: Reenable its usage when OBS 27.2.0 is released.
2021-11-22 20:14:54 -08:00
tt2468
5704ea2970 Requests: Increase InputVolumeMeters update rate to 20/sec
We were using a 60ms interval before, which just feels too slow.
A 50ms interval feels much better.
2021-11-22 03:51:41 -08:00
tt2468
d48ddef031 EventHandler: Implement InputVolumeMeters
This is probably one of the most requested features for obs-websocket.
This currently works by firing an event to all explicit subscribers
with an array of all active audio sources every **60 milliseconds.**

The `inputLevelsMul` field follows this data format:

Base: [Channel, Channel]
Channel: [magnitude (mul), peak (mul), input_peak (mul)]

           *Not Muted*         *Muted*
Example: [[0.3, 0.5, 0.9], [0.0, 0.0, 0.0]]

(input_peak is the actual peak value, before volume adjustment.)

You may notice that the values are only in mul. This is because we are
trying to cut down on bandwidth. dB values can be calculated using this
formula:

`dB = 20.0 * log10(mul)`
2021-11-22 03:37:56 -08:00
tt2468
1ac6ac6c87 plugin-macros: Remove extra [obs-websocket] tag 2021-11-21 17:51:53 -08:00
tt2468
bc7b8d330a RequestHandler: Move RequestStatus.h to types directory 2021-11-21 03:13:53 -08:00
tt2468
c95511eb5f Base: Remove UNUSED_PARAMETER() usages
I prefer to use undefined parameters instead.
2021-11-21 03:08:06 -08:00
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