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.
We're currently using peter-evans/create-pull-request v4.1.4 which is
based on the deprecated node16. This was fixed in v6.0.0, so let's
update to that commit.
We're currently using CyberAndrii/steam-totp c7f636bc64 which is
based on the deprecated node16. This was fixed in 45775c3219, so let's
update to that commit.
We're currently using CyberAndrii/setup-steamcmd b786e0da44 which is
based on the deprecated node16. This was fixed in 29e114af03, so let's
update to that commit.
We're currently using korelstar/xmllint-problem-matcher v1.1.0 which is
based on the deprecated node16. This was fixed in v1.2.0, so let's
update to that version's commit.
macOS and the GitHub runners have python3 preinstalled.
We only needed to specify a version because aiohttp wasn't compatible
with 3.12, but that's no longer the case.
Implement the new merge sub-action from upload-artifact as a separate
job that requires the Sparkle appcast creation job so that we still get
a single combined artifact for the Sparkle appcast. This lets us update
upload-artifact from v3 to v4.
GitHub Actions has deprecated Actions based on node16. The v4 actions
are based on node20.
See:
https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/
strcmp(obs_get_encoder_codec(option), "opus") causes the application to
segfault while loading service if find_encoder(id) returns NULL. Add a
null pointer check to prevent that from occurring.
As the comment mentions this only occurs during an encoder stall on the
first frame. On D3D both gs_texture_t's are actually a single D3D
texture object and both planes are copied during gs_copy_texture, for
everyone else we need to copy the textures separately as they are
independent OpenGL textures.
This adds gs_enum_adapters and gs_get_adapter_count to the opengl
backend and promotes these to multiplatform graphics functions.
However we need to make an internal device change, device_enum_adapters
must pass in the current device on opengl to ensure that adapter #0 is
the display adapter. We do this to avoid changes to plugins already
checking against obs_video_info.adapter which is always 0 and expected
to be the device OBS was initialized on.
The actual implementation reports the dri render node (or /Software).
This allows plugins to query non-video features of the adapters like
VA-API/NVENC/etc or other cross device functionality. `/Software` is
chosen to avoid opening random files in the current directory if its
passed along as a file path like the regular dri render nodes.