Commit Graph
698 Commits
Author SHA1 Message Date
tytan652 855956f60e obs-outputs,obs-ffmpeg: Add protocol to service outputs 2023-03-19 15:29:03 +01:00
Jim 6eace37e06 Merge pull request #8229 from derrod/hashed-tables
Hashtable Adventures
2023-03-19 00:34:44 -07:00
Norihiro Kamae 8938aeebfa obs-ffmpeg: Remove an empty clause
The empty clause was originally introduced to set a cutoff settings as a
hack at a commit ae862c16a and later removed at a commit a89470d2e. At
this time, the clause became empty but another commit aa58b9cf5 reuse
the clause and finally a commit 9baedb1c6 removes so that the clause is
empty now.
2023-03-18 15:16:44 -07:00
Richard Stanway 7e9b071a6c obs-ffmpeg: Add GeForce MX450 variant to unsupported NVENC list 2023-03-18 13:31:42 +01:00
derrod 13040ad241 obs-ffmpeg: Fix translation key capitalisation 2023-03-18 10:47:50 +01:00
Norihiro Kamae baddacc111 Revert "obs-ffmpeg: Use FFmpeg's "fast" AAC encoder by default"
This reverts commit aa58b9cf5f.

FFmpeg has reverted their default AAC encoder from fast to twoloop,
which has much better rate control management, making it closer to CBR,
and it sounds much better.
2023-03-12 10:21:27 -07:00
tytan652 f4e90a5bd7 obs-ffmpeg,cmake: Add a finder for AMF headers 2023-03-07 14:55:03 -05:00
tytan652 6db418fb3f obs-ffmpeg: Replace external/AMF folder by obs-deps headers 2023-03-07 14:55:03 -05:00
Kurt Kartaltepe 0fb89dc9a1 obs-ffmpeg: Fix crash during ratecontrol check
When iterating over an array of structs we incorrectly check for a null
pointer, but the actual sentinel value is the empty struct.
2023-03-04 16:07:12 -08:00
Chris (Flaeri) e7cd29bbe5 obs-ffmpeg: Implement QVBR for AMF encoders
Makes QVBR rate control usable. Fix wrong rate control check on line
1457. Switch from bitrate to CQ/QP value (no bitrate needed).
2023-03-03 21:48:59 +00:00
derrod 2ac8ce8f65 obs-ffmpeg: Fix __VA_ARGS__ for comma ellision 2023-03-01 20:39:53 +01:00
pkv 2e79d4c902 obs-ffmpeg: Fix for FFmpeg 6 deprecating a flag
Also modifies libobs & deps/media-playback.
AV_CODEC_CAP_TRUNCATED was removed in avcodec 60 [1].
We ifdef the code depending on it to allow compilation.

[1] avcodec: remove FF_API_FLAG_TRUNCATED
https://github.com/FFmpeg/FFmpeg/commit/3ceffe783965767e62d59e8e68ecd265c98460ec

Signed-off-by: pkv <pkv@obsproject.com>
2023-03-01 13:23:51 -05:00
gxalpha fea4a19c8b obs-ffmpeg: Add full_decode to media source log
This is an option that while very powerful also provides a footgun for
users if they don't have enough memory. It will be helpful for support
volunteers to be able to see if the option has been enabled.
2023-02-25 19:26:51 -08:00
Jim 4bf14d09b4 obs-transitions: Add option to preload stinger video to RAM
Stingers -- and especially track matte stingers -- are currently subject
to real time decoding, which can be detrimental in a production
environment where a stinger video may not be able to decode in a timely
fashion.

To remedy this, this change adds an option to fully decode stingers
immediately and cache the decoded video/audio in RAM for playback to
greatly improve stinger performance.
2023-02-25 18:13:11 -08:00
jpark37 463bf0dff5 libobs,UI: Add P216/P416 pixel formats
Will be useful for ProRes.
2023-02-21 18:48:44 +01:00
PatTheMav 19c131c981 obs-ffmpeg: Remove unused variables 2023-02-18 15:22:33 -08:00
PatTheMav 6e0d802874 obs-ffmpeg: Fix non-exhaustive switch statements 2023-02-18 15:22:33 -08:00
pkv e355a32066 obs-ffmpeg: Relax 'lookahead' constraint when bitrate is updated
When bitrate is updated, a check against 'lookahead' setting is done.
If 'lookahead' is enabled, the bitrate update is disabled.
We indeed used to observe crashes with nvenc when frequent bitrate
resettings were effected while lookahead option was enabled.
But recent tests have shown that the issue is gone.
As a result this commit allows 'lookahead' with bitrate live update.

Signed-off-by: pkv <pkv@obsproject.com>
2023-02-17 15:41:43 -05:00
Richard Stanway e280fd6cd0 obs-ffmpeg: Add GeForce MX350 variant to unsupported NVENC list 2023-02-17 11:19:08 -05:00
Richard Stanway 25f01357e6 obs-ffmpeg: Handle NV_ENC_ERR_NO_ENCODE_DEVICE error 2023-02-17 11:19:08 -05:00
Richard Stanway 7dae8d307c obs-ffmpeg: Restore bad GPU index NVENC error message
FFmpeg wipes priv_data if the encoder fails to start, so we need some
way of knowing if the GPU index was non-zero. This is a bit ugly but the
best way to do it for now.
2023-02-17 11:19:08 -05:00
Richard Stanway e593335086 obs-ffmpeg: NVENC error logging improvements
This writes the result of nvEncGetLastErrorString to the last encoder
error instead of just the log file. This makes it user-visible, which
should help users diagnose and solve the problem.

Also strips off leading colons from NVENC error strings as these can
look odd given our format string. An example of such an error:

::NV_ENC_TWO_PASS_FULL_RESOLUTION is only supported multipass encoding
on this architecture.
2023-02-17 11:19:08 -05:00
Roman Huts c5a06d3cf2 obs-ffmpeg: Update AMF SDK to v1.4.29 2023-02-13 14:38:18 -05:00
pkv ad3df88fe3 obs-ffmpeg: Fix encoding of 2.1 with FFmpeg aac encoder
The aac spec has a list of default channel layouts that are implemented
by all aac encoders / decoders.
Unfortunately 2.1 is not in that list. When I wrote the surround sound
support into OBS, as a workaround I decided to encode 2.1 as
AV_CH_LAYOUT_SURROUND = FL+FR+FC.
The LFE channel is encoded as a regular audio channel which uses more
bits but this allows compatibility with all aac decoders.
Recently we updated to the new channel layout API of FFmpeg, but the
mapping of 2.1 to AV_CH_LAYOUT_SURROUND was forgotten in the FFmpeg
native aac encoder. This is remedied here.

Signed-off-by: pkv <pkv@obsproject.com>
2023-02-11 15:06:47 -08:00
tt2468 b2375a0660 obs-ffmpeg: Initialize SRT stats object before requesting stats
The `srt_bstats()` function is not guaranteed to zero the stats object
before filling in stats. If a socket was connected, then disconnected,
without any data being sent over it, the stats object would remain
uninitialized, and weird results could occur.
2023-02-08 11:13:41 -08:00
Jim 4488202247 obs-ffmpeg: Remove unused variables 2023-02-05 02:55:24 -08:00
Norihiro Kamae e7c40a1d29 obs-ffmpeg: Remove unused macro 2023-01-28 19:03:55 -08:00
Richard Stanway 668775f4f0 obs-ffmpeg: Use gai_strerrorA for error logging on Windows
Avoids wide characters in the format string which cause truncation.
2023-01-27 23:41:07 +01:00
tytan652 ee144377dc cmake,obs-ffmpeg: Refactor Libva finder
This refactor adds Libva DRM, required for obs-ffmpeg
2023-01-25 13:14:41 -05:00
jpark37 3462ea3fda obs-ffmpeg: Tell FFmpeg that BGRA uses alpha
Prevents alpha from getting dropped with custom encoders.
2023-01-24 18:39:12 -08:00
tytan652 c648222332 libobs,libobs-opengl,obs-ffmpeg-mux: Calm deprecation warnings on *nix
Calm libobs-opengl deprecation warnings on macOS.

Calm FFmpeg deprecation warning with LIBAVFORMAT_VERSION_MAJOR < 59.
2023-01-19 13:08:46 -05:00
tytan652 d473c9416f obs-ffmpeg: Fix compilation warnings on Clang and GCC
- Fix format warnings
- Fix unused-parameter warnings
2023-01-19 13:08:46 -05:00
tytan652 b0c1c9c86c libobs,plugins: Remove individual -Wno-switch 2023-01-19 13:08:46 -05:00
tytan652 cf5c68b773 UI,libobs,libobs-opengl,obs-ffmpeg: Remove unneeded cast in switches
Those casts were usually used to workaround switch warnings.

Also adds default to OBS frontend event switches that had this
workaround.
2023-01-16 11:52:26 +01:00
Chris (Flaeri) 1166e504bb obs-ffmpeg: Remove forced x264 and aac for RTMP
Remove code forcing x264 and ffmpeg aac encoder. People using custom
ffmpeg output should be able to use other video and audio encoders when
streaming with RTMP, given its h264 or aac.
2023-01-13 09:42:41 -08:00
Translation Updater 783bd52197 Update translations from Crowdin 2023-01-08 04:10:37 +00:00
jp9000 122e864c38 obs-ffmpeg, obs-qsv11: Ensure adapter order in encoder tests
On systems with multiple graphics adapters, one card can be configured
as power saving, and another card can be configured as performance.
Sometimes, OBS and the encoder test subprocesses will not be configured
the same way, so it's necessary to provide adapter order to the encoder
test subprocesses.

This change ensures the adapter order by passing the LUIDs to the test
subprocesses. The adapter indexes will then be updated accordingly.
2022-12-19 12:17:30 -08:00
jp9000 2396c4a01c obs-ffmpeg: Remove EnumOutputs from encoder tests
This call will fail on multi-adapter systems, and isn't used anyway, so
just remove it. Not sure why it was called in the first place; pretty
sure it was unintended and was likely just copied over from the D3D11
subsystem code.
2022-12-19 12:03:01 -08:00
jpark37 b7b7f0ae88 obs-ffmpeg: Set chroma location for VA-API 2022-12-11 14:12:36 -08:00
Jim c84fae52e8 obs-ffmpeg: Fix AMF default CQP value
Was 7 for some reason, was supposed to be 20
2022-12-10 19:03:15 -08:00
Roman Huts 4ba6b8b6ee obs-ffmpeg: Add new rate control method mappings for AVC/HEVC 2022-12-09 15:37:09 -08:00
Jim ddba05c36c obs-ffmpeg: Use enum for av1 encoders
Allows us to add rav1e later
2022-12-05 19:19:20 -08:00
Roman Huts ad407eccab obs-ffmpeg: Bump AMF version to v1.4.29 2022-12-03 15:39:38 -08:00
Roman Huts 72a2c3baaa obs-ffmpeg: Add new rate control methods for AMD AVC/HEVC 2022-12-03 15:39:38 -08:00
jpark37 e8792ac791 obs-ffmpeg: Improve chroma location decision
The chroma location doesn't just depend on pixel format, but we're just
trying to pick something reasonable for now.
2022-12-03 15:24:18 -08:00
pkv ece4d1e90e obs-ffmpeg: Allow srt stream to disconnect after timeout
Fixes #7848
Currently OBS_OUTPUT_INVALID_STREAM is emitted when a wrong password is
used. This commit expands the signal emission to case of timeouts.

Signed-off-by: pkv <pkv@obsproject.com>
2022-12-03 15:02:03 -08:00
Chris 3d87b3b948 obs-ffmpeg: Disable VBAQ for H264 CQP rate control
Checks if rate control is CQP, if not, enable VBAQ. As per AMD, VBAQ
should not be used with CQP.
2022-11-30 17:42:59 -05:00
Chris c4a8364b8c obs-ffmpeg: Disable VBAQ for HEVC CQP rate control
Check rate control, if cqp (0), dont use vbaq
2022-11-22 04:13:56 -08:00
Matt Gajownik 0716e8b482 obs-ffmpeg: Fix building without HEVC on Windows 2022-11-21 18:54:09 +11:00
tt2468 24d7bea41f obs-ffmpeg: Improve RIST/SRT log messages
Overall improvements to match behavior of other log sources.
2022-11-19 18:16:05 -08:00