Commit graph

14029 commits

Author SHA1 Message Date
Aleks Todorov bad7b78fe4 UI: Fix text stacking in paused indicator
Currently, the paused indicator is never undone, instead relying on the
update timer to eventually erase it away when the recording duration is
updated. If the user spams pause fast enough, the indicator will stack
several times before it is erased - especially if the unpaused branch in
the update timer never has a chance to run.

Instead of mutating the recordTime text on pause and requiring an undo,
extract the UI update to a separate function which computes the full
text based on the current state. Call this function when pause is
toggled, thereby forcing an accurate UI update that either does or does
not incude the paused text.

An added benefit is that the paused indicator now disappears
immediately.
2024-05-04 13:39:34 -07:00
Aleks Todorov ec31c7e5bf UI: Set recording paused before anything else
When this call was first introduced in eab10d48b2, it was at top of this
block, albeit after the calls to `pause`. Over time it has slowly
shifted lower and lower in the block.

In reality, it should be the first thing in the block to ensure that
further calls have accurate information about the pause state to update
themselves.
2024-05-04 13:39:34 -07:00
John Bradley 627308bd53 obs-webrtc: Add null terminator to codec array
This fixes an issue where, when the MAX_CODECS length was equal to the
amount of supported codecs (3), it would leave the list without a null
terminator and crash when iterating over the elements.
2024-05-03 22:52:30 -07:00
tt2468 fa482b6b49 libobs: Fix I40A plane height calculation for fourth plane
The commit 2fc13540 introduced a typo bug causing the defined height of
the fourth plane in I40A to be 0, instead of the original frame height.

This changes a 0 to a 3, in order to populate that value correctly.
2024-05-03 21:05:13 -07:00
tytan652 9fa23c8cca obs-scripting: Remove Python version upper limit on Linux
Also removes it for FreeBSD and OpenBSD
2024-05-03 15:31:20 -04:00
tt2468 d584aed501 libobs: Add obs_encoder_parent_video() method
Allows parent video object of an encoder with an FPS divisor to be
fetched.
2024-05-03 10:33:46 -07:00
Ruwen Hahn 64caf0401d obs-outputs: Add video_id_t value for 0
This will be initialized to 0 in various cases, so let's make that
a valid enum value (even if it's not valid in rtmp?)
2024-05-03 13:06:50 -04:00
John Bradley fab8f0f80e obs-outputs: Add eRTMP/eFLV support for FLV 2024-05-03 13:06:50 -04:00
John Bradley c5ef7beda8 obs-outputs: Add initial eRTMP multitrack implementation 2024-05-03 13:06:50 -04:00
Ruwen Hahn 7f82426dc4 obs-outputs: Always define CODEC_HEVC 2024-05-03 13:06:50 -04:00
Kurt Kartaltepe 01b61fafbf obs-ffmpeg: Release encode texture early
During high graphics thread pressure it can take a significant time to
acquire the graphics lock. This change releases the OpenGL texture after
rendering to avoid the 2nd lock after sending the frame to FFmpeg. This
improves 99%-tile/100%-tile and median encode in a near encoder overload
scenario, and modestly raises the ceiling before encoder overload in my
test scene.

Master:
min=0 ms, median=4.29 ms, max=33.072 ms, 99th percentile=8.877 ms
min=0 ms, median=4.438 ms, max=77.157 ms, 99th percentile=9.853 ms
min=0 ms, median=4.527 ms, max=57.292 ms, 99th percentile=9.282 ms

This commit:
min=0.97 ms, median=3.009 ms, max=13.215 ms, 99th percentile=5.899 ms
min=1.181 ms, median=2.91 ms, max=9.854 ms, 99th percentile=5.56 ms
min=0.461 ms, median=3.013 ms, max=10.693 ms, 99th percentile=5.871 ms
2024-05-02 18:15:01 -04:00
Ryan Foster ad63efd4b1 CI: Fix Windows Signing action commit hash 2024-05-02 17:24:16 -04:00
derrod 7968f567b1 CI: Add Windows Patches Action 2024-05-02 16:40:09 -04:00
derrod f7f06dea8d CI: Include Windows artifacts in draft release 2024-05-02 16:40:09 -04:00
derrod fe42236b1b CI: Update Windows signing workflow commit 2024-05-02 16:40:09 -04:00
derrod d7bf65a80b CI: Rename and update windows-signing action 2024-05-02 16:40:09 -04:00
Paul Hindt 182410cf6c aja: Prepare plugins for new libajantv2 repo
Support building AJA plugins with either the new libajantv2 library, or
the deprecated ntv2 library.

Finder scripts updated to search for libajantv2 and fall back to ntv2 if
not found. This allows this PR to be merged without requiring a
corresponding update to the pre-built obs-deps packages.
2024-05-02 14:31:16 -04:00
Ryan Foster 649c62cfac cmake: Remove more Qt 5 code
Qt Gui virtualkeyboard plugin was removed in Qt 6.x.
Qt Network Bearer Management was removed in Qt 6.0.
Qt Multimedia mediaservice and audio plugins were removed in Qt 6.x.
2024-04-30 12:02:26 -04:00
Ryan Foster e693f644ae win-dshow: Fix compiling with FFmpeg 7.0 2024-04-30 11:17:40 -04:00
cg2121 dfd5798e6c UI: Fix volume control button styling
The config button and mute checkbox were different sizes.
2024-04-29 14:56:59 -04:00
cg2121 ee72927ad2 UI: Fix styling of appearance tab
This makes the appearance tab look the same as other settings
tabs.
2024-04-29 14:55:01 -04:00
Norihiro Kamae d81dd24f38 libobs/media-io: Fix copying different line-size video frame
The commit 2fc13540f implemented to copy a video frame into a different
line-size video frame.
However, when the line-size was different, the frame was not correctly
copied.
2024-04-28 09:58:40 -07:00
JoHn BoWeRs 3ab71a9f90 libobs: Use bmalloc/bfree for caption data 2024-04-26 18:17:34 -07:00
John Bowers 5c8be1de22 libobs: Add caption support for AV1
Extract the itut_t35 caption data buffer from existing caption data
and repackage in a metadata OBU instead of an AVC/HEVC SEI.
2024-04-26 18:17:34 -07:00
JoHn BoWeRs 33eb95c274 libobs: Add caption support for HEVC
Add embedded caption support for HEVC by slightly modifying the H.264
SEI to be an HEVC SEI (2 byte SEI NAL header).
2024-04-26 18:17:34 -07:00
John Bowers f9bc9a8b12 libobs: Avoid adding captions on non H.264 streams
The existing caption insertion implementation is to add H.264 specific
SEI NALs, because of this we will skip caption insertion unless the
video stream is H.264. This prevents corruption of AV1/HEVC/etc.
2024-04-26 18:17:34 -07:00
John Bowers 849c1180ac libobs: Insert captions on all video tracks
We will now keep a per track list of caption data. When caption
insertion is triggered we will add that to the list for each actively
encoding video track. When doing interleaved send, we pull the data
from the caption data for the corresponding video. This ensures that
captions get copied to all video tracks.
2024-04-26 18:17:34 -07:00
tt2468 2fc13540f0 libobs: Rewrite video-frame
Rewrites the `struct video_frame` implementation, resolving a few
hidden bugs, and improving memory alignment reliability. Should also
make it much easier to implement and maintain texture formats in this
part of the codebase.
2024-04-26 08:25:26 -07:00
tytan652 7d8a78474c Add composable theme files spacing in editorconfig 2024-04-25 16:11:38 -04:00
Warchamp7 1ba54adb85 UI: Clean up theme file formatting 2024-04-25 16:10:56 -04:00
Georges Basile Stavracas Neto df1ec719d1 UI: Update appearance icon
- Use the monitor with brush symbolic
2024-04-24 21:48:04 -04:00
Georges Basile Stavracas Neto 402ba09a77 UI: Update filters icon
- Add rounder borders
- Adjust fills
2024-04-24 21:48:04 -04:00
derrod 14f588f318 obs-ffmpeg: Fix output path logging 2024-04-24 16:03:14 -04:00
Ryan Foster cfe9192572 CI: Update yuzutech/annotations-action to v0.5.0
This is one of the few remaining actions in this repo that was still
using node16. Updating will remove the associated warnings. Also, pin to
the v0.5.0 commit.
2024-04-24 13:55:44 -04:00
Ryan Foster 65462fdc1d CI: Update softprops/action-gh-release to v2.0.4
This is one of the few remaining actions in this repo that was still
using node16. Updating will remove the associated warnings.
2024-04-24 13:15:08 -04:00
Warchamp7 93bedd21c8 UI: Reset duration when removing show/hide transition 2024-04-22 16:39:21 -04:00
tt2468 065d4533ee obs-webrtc: Add support for audio-only and video-only outputs
Adds the `whip_output_audio` and `whip_output_video` output kinds,
which selectively advertise only video or only audio support.

To use these types, it is effectively the same as with the AV
version. Just create the output, assign your video or audio encoder,
and you're good.

libobs does not have support for "optional" outputs. With an AV output,
if you only assign a video or audio encoder, start will fail.
2024-04-22 01:04:55 -07:00
Kurt Kartaltepe cfb10ece79 text-freetype2: Use a shader uniform instead of vertex attributes
We used to swap in a buffer with (0,0,0,1) for all vertex colors for
drop shadows and outlines. However, this vertex buffer couldn't be
uploaded separately from the vertex data in OBS, so we were reuploading
the text vertices every frame.

Instead, let's use a uniform for this uniform data and save 500us (or
more when handles are visible), a significant portion of my test scenes
render time.
2024-04-22 01:01:47 -07:00
Warchamp7 a3a8f6dbfb UI: Convert themes to composable format 2024-04-21 00:01:16 -04:00
derrod eea0e3d2cc cmake: Remove font size patch on macOS 2024-04-21 00:01:16 -04:00
derrod 503968671d UI: Add composable themes feature
Co-authored-by: Warchamp7 <warchamp2003@hotmail.com>
2024-04-21 00:01:16 -04:00
derrod b76e0cd31b UI: Add 'Appearance' settings page 2024-04-21 00:01:16 -04:00
tytan652 41ba8bdfdd UI: Add HighContrastEnabled implementation for Linux 2024-04-21 00:01:16 -04:00
derrod 0a9f1e7391 UI: Add HighContrastEnabled() to platform utilities 2024-04-21 00:01:16 -04:00
derrod 8d2f4ed3e1 obs-ffmpeg-mux: Use new process args/pipe API 2024-04-20 18:30:46 -07:00
derrod 9bc3082402 libobs: Add os_process_pipe_create2
This new API uses the os_process_args_t object rather than a string for
more safe and sane command line argument handling.
2024-04-20 18:30:46 -07:00
derrod e885d25f5b libobs: Add os_process_args_t and associated functions 2024-04-20 18:30:46 -07:00
Kurt Kartaltepe 68768e13ae obs-qsv11: Fix adapter detection and fallback to sysmem
Pass down texture/host memory choice for fallback encoders. During
fallback we don't (can't) initialize a shared texture pool and should
use the regular host memory path.

This fixes usage on multi-GPU systems, and enables texture encoders.
2024-04-20 17:06:46 -07:00
Kurt Kartaltepe ebea709381 obs-qsv11: Implement texture encoder on Linux
Implements the texture allocator for QSV using VA-API surfaces and
implement encode_texture2 for using OpenGL textures directly.
2024-04-20 17:06:46 -07:00
David Rosca 06e364b670 obs-ffmpeg: Implement texture encoding for VAAPI 2024-04-20 17:03:54 -07:00