Adds support for texture-based AMD encoding, with both H264, HEVC, and
HDR support. Falls back to FFmpeg when texture-based encoding cannot be
used for whatever reason.
(Jim note: This is based upon obsproject/obs-studio#4538 by AMD/Luxoft
with fewer files, FFmpeg fallback for software encoding, and HDR
support. I also went to lengths to ensure that FFmpeg command line
parameters also works with it)
Co-authored-by: Jim <obs.jim@gmail.com>
cfad34d - Use auto release refs
64c1796 - Handle SSL cert date invalid error in browser panels
394d6f7 - Back up then restore POSIX signal handlers on CefInitialize
161ffd2 - Replace type mismatch with range-based for loop
Add aja-source version 2 to differentiate buffering settings, which is
implemented in a255b0f74.
To register two versions, remove to return obs_source_info and register
the source inside aja-source.cpp.
Also revise aja-output.cpp to register aja-output to keep consistency of
function type.
This commit rounds the timestamp to the integer multiple of fps_den.
Prior to this change, since the timestamp in MFX is defined in units of
90 kHz, timestamps for 60000/1001 fps is not accurately expressed. Also
the encoder sometimes returns the decode time stamp slightly off.
Hence, the timestamp in OBS becomes not a multiple of fps_den after
converting back from the timestamp in MFX.
When changing a subproject (e.g. graphics-hook), the generated binaries
are not installed without also building win-capture. This commit enables
the subprojects to be treated as "plugins" which are installed to rundir
and also the installation directory without any additional workarounds.
`absolutePathForAppBundleWithIdentifier` and `openFile` have both been
deprecated since macOS 11.0. This pr uses the correct modern APIs when
OBS is compiled for macOS 11.0 or more recent and falls back to the
legacy APIs when either compiled against or run on older macOS versions.
Both rate control methods only work on hardware encoders and will error
out when selected for software encoders, so we shouldn't show them there
Co-Authored-By: Sebastian Beckmann <beckmann.sebastian@outlook.de>
The session_set_bitrate method already returns an OSStatus to confirm
that everything has been successful. As such, a second check to make
sure that the bitrate has indeed changed is redundant and only adds
unnecessary code.
It is expected that capture might fail, like when a window is minimized.
In these cases we dont want the log to be spammed by X11 errors so
install a noop error handler while we try to import.
Direct access to `[AVCaptureDevice devices]` is deprecated since macOS
10.15. An `AVCaptureDeviceDiscoverySession` is to be used instead, which
this PR implements.
When running on older macOS versions or compiling against older platform
SDKs, the deprecated method is used.
PS: The formatting is not proper ObjC style, but that's clang-format's
doing with our current settings.
This commit fixes what is arguably a long-winded series of previous
commits that have possibly caused just as many problems as they have
fixed. I'll spare the details, but basically, there's no reason that
any of the RTMP object should ever be used across socket sessions.
This provides a slight enhancement by removing the `RTMP_Init` call
in `rtmp_stream_create()`, since it effectively just initializes TLS
just for `try_connect` to deinitialize it before it is even used.
This also fixes the current `SO_RCVTIMEO` timeout functionality by
making sure that `RTMP_Reset` is called last.
To improve readability of the capture thread function
`AJASource::CaptureThread`, audio part is split into two functions.
Behavior is not changed.
Also fixed one of warnings.
When too many audio frames are captured and at the same time the ring
buffer on the card is wrapped, memory overrun was not captured before
DMA transfer, which resulted in corruption of memory contents. This
commit moves the overrun check before the DMA transfer.
This fixes a bug where the new circular buffer code is hit by protocols
such as rist or srt although the buffer was meant for files.
Signed-off-by: pkv <pkv@obsproject.com>