Table of Contents

Enum ObsHighVolume

Namespace
OBSStudioClient.Model
Assembly
OBSClient.dll

What OBS Studio sends very often, and that an ObsModel follows only when it is asked to (see HighVolume).

[Flags]
public enum ObsHighVolume

Fields

None = 0

None of them: the default.

Transforms = 1

The transform of every scene item (Transform): where it is, how large, how it is cropped. OBS Studio sends an event for every step of a drag, and also when the size of a source changes. OBS Studio 33.0.0 announces a crop and the size of a source only for a scene that it renders (the program scene, the preview scene of studio mode, a scene that a projector shows): for another scene it announces them when the scene is rendered, so the transform that the model shows of an item in such a scene can be behind until then.

Activity = 2

Whether each input is on the air and whether it is shown (IsActive and IsShowing): OBS Studio sends an event for the inputs of a scene each time that the program scene, the preview scene, a transition, or a scene item that shows them changes. The model reads the state of every input once (GetSourceActive), and follows the events. OBS Studio says nothing of a scene, and nothing of an input that it destroys.

AudioLevels = 4

The levels of the audio of the inputs that are on the air (Levels and AudioLevels): OBS Studio sends a message every 50 milliseconds, also when nothing is playing, and has every input that is on the air report its levels for as long as a client is subscribed. The model keeps the newest levels, and tells the application of them without ever holding up OBS Studio, or the rest of the model: a handler that is slower than OBS Studio gets the newest levels and not all of them.

All = Transforms | Activity | AudioLevels

All of them.

Remarks

OBS Studio sends these events to every client that is subscribed to them, and what a client that is not interested does with them is still work for OBS Studio and for the connection: dragging a scene item in the preview is sixty events a second, the levels of the audio are twenty messages a second for as long as the connection lasts, and every program that listens adds its own copy. So the model subscribes to them only for what you ask for, and what it keeps of them (Transform, IsActive, IsShowing and Levels) is null as long as you did not.

What you can ask OBS Studio for by a call does not need any of this: GetTransformAsync(CancellationToken) and GetActivityAsync(CancellationToken) are always there.