Notable changes:
* deps.ffmpeg: Force classic linker for AppleClang 15.0.0+
* CI: Update macOS jobs to use macOS 14 runners
* deps.ffmpeg: Enable runtime CPU detection for AOM to fix ARM64 crashes
* deps.ffmpeg: Update zlib to 1.3.1
* deps.ffmpeg: Update aom to 3.8.1
* deps.ffmpeg: Update mbedTLS to 3.4.1
* deps.qt: Update Qt6 to 6.6.2 for Windows
* deps.qt: Update Qt6 to 6.6.2 for macOS
* deps.qt: Restore native dialogs on macOS
The beginInsertRows/endInsertRows calls seem to signal that the rowCount
has changed, and that views should adjust accordingly. The isProcessing
boolean changes the returned value of RemuxQueueModel::rowCount, which
seems to cause the empty row in the table model to disappear
permanently. I still don't know why it used to work this way and no
longer does.
This is what Flathub uses now. It's an implementation detail that will
eventually be hidden away in a Flathub-specific publish action. But for
now, we still publish directly, and we have to adapt.
In order to support crop_to_bounds, deprecates:
obs_sceneitem_set_info
obs_sceneitem_get_info
In favor of:
obs_sceneitem_set_info2
obs_sceneitem_get_info2
Fixes several possible crash issues that might occur on Intel-based Macs
and older macOS versions:
On modern macOS versions (13+) allocated memory is zero-allocated by
default which makes NULL pointer checks work correctly after allocation.
On older macOS versions this is not the case, so the OBSAVCaptureInfo
struct needs to be zero-allocated to ensure the guards in the tick and
render functions bail out correctly.
On Intel-based Macs and/or older macOS versions passing a reference to
the OBSAVCapture instance inside the OBSAVCapture struct can lead to a
crash because of a possible circular reference that cannot be resolved
at runtime.
Passing only a reference of the OBSAVCapture to libobs and incrementing
the retain count at source creation (decrementing in when the source is
destroyed) avoids this issue entirely.
Since the widget is marked as opaque we need to draw each pixel or
else we may end up with unpainted pixels. On Wayland this will
result in artifacts in the audio meter as transparent pixels will
pick up colors from the underlaying desktop instead.
The uninit function prematurely released the memory allocated for the
channel map setting, which exists in the scope of source life cycle
(compared to channel names which are valid during the life cycle of a
configured device).
Splitting up the clean-up for both (memory for channel names is
released when the device is uninitialized, memory for channel map
setting is released when the source is removed) ensures that the memory
is released but pointers don't become unexpectedly invalid.
OBS handles up to 8 channels of audio, which requires the CoreAudio
input callback to omit/ignore any audio data from channels above that
count and also report a maximum amount of 8 channels to match the
speaker setup given to swresample by libobs.
Some devices do not support all color formats at all resolutions, but
the capture card source automatically uses an available color format
and compares it against the available format for a specific resolution.
Without being able to change this format, some resolutions do not
work as CMIO will not be able to find a compatible format. Thus the
color format needs to be manually selected for capture card sources
as well.
Previously, we always assumed we could push more frames before an encoded
packet would be available. Actually, we can get EAGAIN when the
frame queue is full and before any encoded packets have been completed.
Instead, attempt to read packets more often as the worst that can
happen is we get EAGAIN again.
After adding proper adapter enumeration the linux code ends up entering
the texture encoding paths, but these paths are not correctly
implemented on linux yet.
fixes#10221
When merging the PR for the previous commits, I forgot the note that
stated that it required a merge commit to preserve the pinned commit
hash for the workflow. Thus, when I merged with "Rebase and merge", the
commit hash changed, and the workflow broke.
Update the commit hash to the correct version and fix my mistake.
RTMP was not being recognized due to a case-sensitive comparison; this
changes to a case insensitive comparison to fix the issue.
Fixes a bug found in beta channel.
Signed-off-by: pkv <pkv@obsproject.com>
New space availability keys seem to have very specific file system
requirements not documented anywhere. Using the opportunistic free
space key opportunistically (and falling back on the legacy value
otherwise) should always yield a "good-enough" free disk space value.
Frame rate should be defined before AMF encoder initialization,
because this information is used for setting vui_time_scale in SPS.
If frame rate isn't defined before initialization,
then AMF encoder set default frame rate into VUI header (30 fps).
This is functionally a no-op, but works around a driver bug that
prevents use of eglQueryDisplayAttribEXT. This makes us more likely to
not trigger the driver bug and that gs_enum_adapters works correctly.