# OBS program structure (Thinking out loud)



## Sunforest (Mar 17, 2013)

While looking through the current source code and figuring out how to implement some of the most wanted features I drew up this diagram of a potential partial restructure of the source code from the perspective of what I'm calling the "broadcast chain" (How input sources are used to produce the final output video). It is in no way final and as it does involve some fundamental GUI changes it is possibly controversial. I have not yet investigated how much effort implementing this structure would take.

I would like your feedback on what is good and what is bad about this design.

The mains goals I had were:

 Make scenes easier for users to setup and use,
 Allow more parts of OBS to be implemented in plugins,
 Allow broadcasting in multiple resolutions to multiple targets using multiple encoders,
 Provide virtual webcam support, and
 Prepare the code for porting to Linux and OS X by separating platform-dependent code.

The main changes to the GUI are:

 The "sources" list on the main window is converted a tree structure and every scene uses the same tree,
 "Scenes" control which top-level tree nodes are activated (Disabling a parent disables all of its children),
 Video resolution and downscaling are moved into encoder settings to allow multiple output resolutions,
 Some settings are moved from global to profile settings and vice-versa, and
 There can be more than two audio channels.

[Image removed due to lack of interest]


----------



## Tak0r (Apr 10, 2013)

seems very good to me


----------



## soulreaver2662 (Apr 12, 2013)

Particularly excited about the expanded audio options. Storing most of these audio settings per profile would be my preference. It might be a pain in the ass to configure, but it allows so much flexibility once you've gotten everything set-up.


----------



## ragtag7 (Apr 18, 2013)

I imagine making a Linux version will take an immense amount of time because video drivers seem to be a big issue on nix systems. Multiple output resolutions sounds fantastic! Something OBS has needed for a long time, many of my viewers sometimes don't have enough net to watch me in HD res. More plugins sound awesome, I just wish some of the plugins/3rd party programs that are available now were fully integrated into OBS as a whole (twitch dashboard lite).

Great ideas for the future of OBS overall Sunforest, keep it up!


----------



## Warchamp7 (Apr 18, 2013)

Sunforest isn't contributing to OBS anymore, so this thread is somewhat moot at this point


----------



## Sunforest (Apr 18, 2013)

Just because I'm not writing code anymore doesn't mean it cannot continue to be discussed. The structure is still a valid suggestion and can be implemented by anyone.


----------



## Tak0r (Apr 24, 2013)

i think best way would be a dicing goal from Jim with a lets say feature freze to make a transition faster. Implementing this while the OBS Code changes heavily would be too troublesome.


----------

