- 27 1月, 2016 11 次提交
-
-
由 jp9000 提交于
The intention of this is to allow sources/outputs/etc to be created without being visible to the UI or save/load functions.
-
由 jp9000 提交于
(Note: This commit also modifies UI) Instead of using signals, use designated callback lists for audio capture and audio control helpers. Signals aren't suitable here due to the fact that signals aren't meant for things that happen every frame or things that happen every time audio/video is received. Also prevents audio from being allocated every time these functions are called due to the calldata structure.
-
由 jp9000 提交于
Transition sources are implemented by registering a source type as OBS_SOURCE_TYPE_TRANSITION. They're automatically marked as video composite sources, and video_render/audio_render callbacks must be set when registering the source. get_width and get_height callbacks are unused for these types of sources, as transitions automatically handle width/height behind the scenes with the transition settings. In the video_render callback, the helper function obs_transition_video_render is used to assist in automatically processing and rendering the audio. A render callback is passed to the function, which in turn passes to/from textures that are automatically rendered in the back-end. Similarly, in the audio_render callback, the helper function obs_transition_audio_render is used to assist in automatically processing and rendering the audio. Two mix callbacks are used to handle how the source/destination sources are mixed together. To ensure the best possible quality, audio processing is per-sample. Transitions can be set to automatically resize, or they can be set to have a fixed size. Sources within transitions can be made to scale to the transition size (with or without aspect ratio), or to not scale unless they're bigger than the transition. They can have a specific alignment within the transition, or they just default to top-left. These features are implemented for the purpose of extending transitions to also act as "switch" sources later, where you can switch to/from two different sources using the transition animation. Planned (but not yet implemented and lower priority) features: - "Switch" transitions which allow the ability to switch back and forth between two sources with a transitioning animation without discarding the references - Easing options to allow the option to transition with a bezier or custom curve - Manual transitioning to allow the front-end/user to manually control the transition offset
-
由 jp9000 提交于
-
由 jp9000 提交于
Allows using it in multiple source files
-
由 jp9000 提交于
(Note: test and UI are also modified by this commit) API Changed (removed "enum obs_source_type type" parameter): ------------------------- obs_source_get_display_name obs_source_create obs_get_source_output_flags obs_get_source_defaults obs_get_source_properties Removes the "type" parameter from these functions. The "type" parameter really doesn't serve much of a purpose being a parameter in any of these cases, the type is just to indicate what it's used for.
-
由 jp9000 提交于
The new audio subsystem fixes two issues: - First Primary issue it fixes is the ability for parent sources to intercept the audio of child sources, and do custom processing on them. The main reason for this was the ability to do custom cross-fading in transitions, but it's also useful for things such as side-chain effects, applying audio effects to entire scenes, applying scene-specific audio filters on sub-sources, and other such possibilities. - The secondary issue that needed fixing was audio buffering. Previously, audio buffering was always a fixed buffer size, so it would always have exactly a certain number of milliseconds of audio buffering (and thus output delay). Instead, it now dynamically increases audio buffering only as necessary, minimizing output delay, and removing the need for users to have to worry about an audio buffering setting. The new design makes it so that audio from the leaves of the scene graph flow to the root nodes, and can be intercepted by parent sources. Each audio source handles its own buffering, and each audio tick a specific number of audio frames are popped from the front of the circular buffer on each audio source. Composite sources (such as scenes) can access the audio for child sources and do custom processing or mixing on that audio. Composite sources use the audio_render callback of sources to do synchronous or deferred audio processing per audio tick. Things like scenes now mix audio from their sub-sources.
-
由 jp9000 提交于
(Note: This commit breaks libobs compilation. Skip if bisecting) Adds a "composite" source type which is used for sources that composite one or more sub-sources. The audio_render callback is called for composite sources to allow those types of sources to do custom processing of the audio of its sub-sources.
-
由 jp9000 提交于
(Note: This commit breaks libobs compilation. Skip if bisecting) These variables are considered obsolete and will no longer be needed.
-
由 jp9000 提交于
(Note: This commit breaks libobs compilation. Skip if bisecting) Removes audio lines and stores the circular buffer for the audio on the source itself.
-
由 jp9000 提交于
(Note: This commit breaks libobs compilation. Skip if bisecting) The mixers that a source was assigned to were originally stored in the audio line. This will store it in the sources themselves instead.
-
- 26 1月, 2016 3 次提交
-
-
由 jp9000 提交于
This has been missing for a bit too long, and should make it easier/faster to diagnose issues users might be having.
-
由 jp9000 提交于
Ensures that the packet dts_usec vals which are generated for syncing/interleaving use the proper offset relative to where they're supposed to be starting from. The negative DTS of a first video packet could potentially have been applied twice due to this.
-
由 jp9000 提交于
Fixes potential race conditions when two threads are trying to initialize/start/stop the same encoders at the same time.
-
- 23 1月, 2016 2 次提交
- 22 12月, 2015 3 次提交
-
-
由 jp9000 提交于
Useful for going traversing the list of audio sources (particularly for the new audio subsystem)
-
由 jp9000 提交于
This was originally used for calculating audio volume if transitions were active, but transitions won't work that way so tracking the active transitions is no longer needed.
-
由 jp9000 提交于
(Note: This commit breaks UI compilation. Skip if bisecting) API Removed: ------------------------ obs_add_source API Changed: ------------------------ obs_source_remove: Now just marks/signals a source for removal The concept of "user sources" is flawed: it was something that the front-end was forced to deal with if it wanted to automate source saving/loading, and often it had to code around it. That's not how saving/loading should work, a front-end should be allowed to manage lists of sources in the way it explicitly chooses, and it should be able to choose which sources it wants to save/load.
-
- 21 10月, 2015 3 次提交
- 14 9月, 2015 2 次提交
-
-
由 jp9000 提交于
This prevents encoders (hardware encoders in particular) from being continually active when all outputs disconnect from an encoder. This is mostly just a temporary measure; the encoding interface may need a bit of a redesign. It will also definitely needs to be able to flush at some point. Currently when an output is stopped, the pending data is discarded, which needs to be fixed.
-
由 jp9000 提交于
Allows objects to be created regardless of whether the actual id exists or not. This is a precaution that preserves objects/settings if for some reason the id was removed for whatever reason (plugin removed, or hardware encoder that disappeared). This was already added for sources, but really needs to be added for other libobs objects as well: outputs, encoders, services.
-
- 11 9月, 2015 1 次提交
-
-
由 jp9000 提交于
This feature allows a user to delay an output (as long as the output itself supports it). Needless to say this intended for live streams, where users may want to delay their streams to prevent stream sniping, cheating, and other such things. The design this time was a bit more elaborate, but still simple in design: the user can now schedule stops/starts without having to wait for the stream itself to stop before being able to take any action. Optionally, they can also forcibly stop stream (and delay) in case something happens which they might not want to be streamed. Additionally, a new option was added to preserve stream cutoff point on disconnections/reconnections, so that if you get disconnected while streaming, when it reconnects, it will reconnect right at the point where it left off. This will probably be quite useful for a number of applications in addition to regular delay, such as setting the delay to 1 second and then using this feature to minimize, for example, a critical stream such as a tournament stream from getting any of its stream data cut off. However, using this feature will of course cause the stream data to buffer and increase delay (and memory usage) while it's in the process of reconnecting.
-
- 07 9月, 2015 2 次提交
- 20 8月, 2015 2 次提交
-
-
由 jp9000 提交于
Allows the ability to get a module-specific configuration file/path
-
由 jp9000 提交于
API Changed: --------------------------- From: - bool obs_startup(const char *locale, profiler_name_store_t *store); To: - bool obs_startup(const char *locale, const char *module_config_path, profiler_name_store_t *store); Summary: --------------------------- This allows plugin modules to store plugin-specific configuration data (rather than only allowing objects to store configuration data). This will be useful for things like caching data, for example looking up and storing ingests from remote (rather than storing locally), or caching font data (so it doesn't have to build a font cache each time), among other things. Also adds a module-specific directory for the UI
-
- 12 8月, 2015 2 次提交
-
-
由 Palana 提交于
-
由 Palana 提交于
Due to all the threads in libobs it wouldn't be safe to make that parameter reconfigurable after libobs is initialized without adding even more synchronization. On the other hand, adding a function to set the name store before calling obs_startup would solve the problem of passing a name store into libobs, but it can lead to more complicated semantics for obs_get_profiler_name_store (e.g., should it always return the current name store even if libobs isn't initialized until someone calls set_name_store(NULL)? should obs_shutdown call set_name_store(NULL)? Passing it as obs_startup parameter avoids these (and hopefully other) potential misunderstandings
-
- 05 8月, 2015 1 次提交
-
-
由 jp9000 提交于
(Non-compiling commit: windowless-context branch) API Changed: --------------------- Removed functions: - obs_add_draw_callback - obs_remove_draw_callback - obs_resize - obs_preview_set_enabled - obs_preview_enabled Removed member variables from struct obs_video_info: - window_width - window_height - window Summary: --------------------- Changes the core libobs API to not be dependent upon a main window/view. If you wish to draw to a window/view, use an obs_display object to handle it. This allows the use of libobs without requiring a window to be present on the system. This is also prunes code that had to be needlessly duplicated to handle the "main" window.
-
- 05 6月, 2015 1 次提交
-
-
由 jp9000 提交于
The "clamped" video time is the system time per video frame that is closest to the current system time, but always divisible by the frame interval. For example, if the last frame system timestamp was 1600 and the new frame is 2500, but the frame interval is 800, then the "clamped" video time is 2400. This clamped value is useful to get the relative system time without any jitter.
-
- 12 5月, 2015 4 次提交
- 11 5月, 2015 1 次提交
-
-
由 jp9000 提交于
Implements exponential backoff for consecutive reconnects, which is useful to prevent too many connections from trying to reconnect back to a service at once over a short period of time in the case of potential service downtime. Exponential backoff causes each subsequent reconnect attempt to double its timeout duration.
-
- 07 5月, 2015 2 次提交