3373 Commits

Author SHA1 Message Date
Matt Gajownik
748279bd86 obs-vst: Update submodule with a variety of bugfixes
- Cleanup EditorWidget.h
 - Modify log in obs-vst, fix compile error
 - Update effect name even effect is unavailable
 - Fix crash caused by unsupported interface
 - Use deleteLater on editorWidget to prevent crash
 - Check result after creating vst plugin
 - Fix button states on properties refresh
 - Replace QMacCocoaViewContainer with QWidget::createWindowContainer
 - Modify incorrect code about mallocing memory
2021-12-12 11:37:46 +11:00
Matt Gajownik
9c01b1ecc8 libdshowcapture: Add FindPin, RGB24, & use CMake instead of pragma
This updates the libdshowcapture submodule to the latest commit.
This also changes win-dshow CMakeList to ensure compatibility.

Full commit list:
 - Add support of RGB24 format
 - CMake: Add Win32 libs instead of pragma directives.
 - Implement FindPin
 - Simplify error handling
 - Fix log level of DebugHR
 - Use default constructor instead of empty function
 - Use std::move instead of copy where appropriate
 - Mark some strings as const
2021-12-12 11:35:48 +11:00
Tatsuyuki Ishi
316f858c68 linux-capture: Fix capturing on software rasterization setups
The GLX_EXT_texture_from_pixmap spec says:

The contents of the texture after the drawable has been bound are defined
as the result of all rendering that has completed before the call to
glXBindTexImageEXT.  In other words, the results of any operation which
has caused damage on the drawable prior to the glXBindTexImageEXT call
will be represented in the texture.

Rendering to the drawable while it is bound to a texture will leave the
contents of the texture in an undefined state.  However, no
synchronization between rendering and texturing is done by GLX.  It is
the application's responsibility to implement any synchronization
required.

In practice, on most systems with a GPU this kept a directly binding to
the framebuffer, which made it work with the previous code. However,
on software rasterization setups using llvmpipe, a blit was done inside
the call to glXBindTexImageEXT. This was the cause of a notoriously
ignored bug where the captured image would "freeze" until the source
was reconfigured.
2021-12-12 11:13:24 +11:00
Carlo Castoldi
4623a6b4bc obs-ffmpeg: Set DRI devices and their name persistently
retrieving the DRI devices from /dev/dri/by-path/ instead of
/dev/dri/renderDXXX. This enable us to use lspci to get the device
name as well.
2021-12-12 11:12:36 +11:00
tt2468
c9b327d0f0 vlc-video: Emit media ended signal regardless of loop setting
Makes the signal's behavior on-par with `obs_source_media_started`.
`obs_source_media_started` is emitted every time a file in the playlist
is played, and so therefore should `obs_source_media_ended`. In this
scenario, the loop setting is actually irrelevant to the behavior that
this signal should have.
2021-12-11 15:25:40 -08:00
Kurt Kartaltepe
26f4d85398 linux-capture: Deinit pipewire only if we init'ed
If you don't have a xdg-desktop-portal backend then pipewire wont init,
however on exit we unconditionally deinit which can crash in pipewire
which does not handle this gracefully.
2021-12-12 10:05:02 +11:00
Ek Palmer
2e1c5fc801 rtmp-services: Add Fantasy.Club 2021-12-11 13:56:40 -08:00
Colin Edwards
b4bb574397 aja: .rc file for the aja plugin 2021-12-07 22:07:06 -06:00
Colin Edwards
0aa9603a88 aja: Fix crash in output settings when no card present 2021-12-07 19:08:29 -06:00
Colin Edwards
54e5252906
aja: Disable plugin if no devices are found 2021-12-07 18:52:12 -06:00
Richard Stanway
fad299f99f
aja: Static analysis bug fixes
* aja: Use inline const for header initializations

Avoids duplicating across compilation units. Detected by PVS Studio.

* aja: Avoid unnecessary type conversions

Detected by PVS Studio.

* aja: Remove duplicate assignments

Detected by PVS Studio.

* aja: Fix return value of aja_output_create

Detected by PVS Studio.

* aja: Remove unused variable

Detected by PVS Studio.

* aja: Fix compiler warning

* aja: Remove unreachable if branch in aja routing

* aja; Cleanup return in card manager

Co-authored-by: Colin Edwards <colin@recursivepenguin.com>
2021-12-05 22:17:39 -06:00
gxalpha
87fc27c254 text-freetype2: Fix unused parameter warning 2021-12-04 15:23:07 -08:00
gxalpha
ec7c49a569 obs-filters: Fix unused parameter warnings with speex disabled 2021-12-04 15:23:07 -08:00
Norihiro Kamae
f8bcc190e2 obs-ffmpeg: Fix memory leaks if replay buffer failed
When releasing a darray mux_packets at error, contents of mux_packets
are not released. It causes memory leaks if error occurs during saving
the replay buffer to a file.
2021-11-30 21:53:34 -08:00
columbarius
c1b87e70ef linux-capture: Fallback on older PipeWire versions to SHM
PipeWire server versions older than 0.3.24 can be incompatible with
clients build against a newer library version with respect to DMA-BUF
sharing. So we want to fallback to SHM transfer. This commit adds
checks for older versions.

These are classified as follows:
* PipeWire components older than 0.3.24: Restrict to SHM only
* PipeWire components with version 0.3.24 and newer: Announce DMA-BUF
  support via `SPA_PARAM_BUFFERS_dataType`
2021-11-28 19:43:24 -03:00
columbarius
9f7de79004 linux-capture: Query used PipeWire versions
This enables us in the following commit to announce different
capabilities wrt. those versions.
2021-11-28 19:43:24 -03:00
Matt Gajownik
f2592624db obs-browser: Update to 2.17.0, add CEF 4638 support
This also fixes a flickering texture issue in browser sources.
2021-11-28 09:11:04 +11:00
Georges Basile Stavracas Neto
26f1bfd05f linux-capture: Implement stream restoration
With the version 4 of the screencast portal, it is now possible
to request and use restore tokens [1] so that apps can restore a
previously configured screencast session without user interaction.

Add the corresponding code to linux-capture's PipeWire source.
Store the restore token in the source data, since each restore
token corresponds to an OBS source, and use it as soon as we try
to create a new session. Implement the obs_source_info.save vfunc,
and save the restore token when it's received by the Start()
response using obs_source_save().

[1] https://github.com/flatpak/xdg-desktop-portal/pull/638
2021-11-24 11:42:06 -08:00
Georges Basile Stavracas Neto
8537c7593c linux-capture: Add getter to screencast portal version
This will be used by the next commit to verify whether or not
to pass the restore token and persist mode options.
2021-11-24 11:42:06 -08:00
Paul Hindt
ce3ae8e423
aja: Capture and Output plugin for AJA Video Systems IO devices
* aja: Initial commit of AJA capture/output plugin

* aja: Fix clang-format on aja-output-ui code

* aja: Remove script used during dev/testing

* aja: Address pull request feedback from @RytoEX

* aja: Remove the SDK sources and update CMakeLists to point to new headers-only/static libs dependency distribution.

* aja: Only build AJA plugin on x64 on macOS for now

* aja: Remove the non-English placeholder locale files. The english strings/files will be produced via crowdin, according to @ddrboxman.

* aja: Add FindLibAJANTV2.cmake script to locate the ajantv2 headers and static libs in the OBS external deps package(s). Tested on Windows x64. macOS and Linux x64 TBD.

* aja: Add ajantv2/includes to FindLibAJANTV2 include search paths

* aja: Remove commented code from aja CMakeLists

* aja: Remove debug code and comments that are no longer needed.

* aja: Fix indentation

* aja: Remove disablement of clang-format in routing table and SDIWireFormat map

* aja: Use spaces for all indentation in widget crosspoint arrays where we disable clang-format

* aja: Address code style comments made by @RytoEX

* aja: Fix uneven indentation

* aja: More fixes to if/else placement and remove superfluous comments.

* aja: Rename 'dwns' to 'deactivateWhileNotShowing' for clarity. The DeckLink plugin still uses the variable name 'dwns' and should be changed, if desired, in a separate PR.

* aja: Remove X11Extras dependency from AJA Output frontend plugin

* aja: Add patch from Jim to find AJA release/debug libs

* aja: Improve AV sync of queued video/audio sent to the AJA card in the AJA Output plugin.
2021-11-23 20:31:11 -06:00
pkv
f32c2b0fbb obs-ffmpeg: Properly name FFmpeg lib used
Cosmetic but this was nagging me since I had authored those lines.
2021-11-23 12:10:56 -05:00
pkv
c398ac9739 obs-ffmpeg: Fix NVENC old codec naming removed in FFmpeg
Per FFmpeg commit 337f777f378c [1], FFmpeg removed nvenc_h264_encoder
and nvenc_hevc_encoder after deprecation in FFmpeg commit 888a5c794778
[2]. The names to be used are ff_h264_nvenc_encoder and
ff_hevc_nvenc_encoder. So we must allow alternative search of codec as
h264_nvenc or nvenc_h264 in obs-ffmpeg.c.

[1]: 337f777f37
[2]: 888a5c7947
2021-11-23 12:10:56 -05:00
Ryan Foster
ce734366bc obs-ffmpeg: Respect AVFormatContext and AVOutputFormat constness
AVFormatContext::oformat was made const on April 27, 2021 [1]. If we
respect the constness of AVOutputFormat and do not cast results from
FFmpeg functions to non-const, we cannot modify the results after the
fact. Our choices are either to cast them to non-const (and presumably
have them implicitly casted back to const on later function calls), or
only try to modify the results in versions of FFmpeg where these are not
expected to be const.

Instead of relying on casts, we can set the encoder values in the
ffmpeg_cfg struct, which are later passed to new_stream.

Also modifies deps/media-playback. Removes compiler warnings.
Some avformat functions return const AV(In/Out)putFormat per [1], so
ifdef as needed.

[1]: 56450a0ee4
     lavf 59.0.100 avformat.h
     avformat: Constify the API wrt AV(In|Out)putFormat

     Also constify AVProbeData.
2021-11-23 12:10:25 -05:00
Ryan Foster
abf1d609d2 obs-ffmpeg: Include channel_layout.h
avcodec.h stopped including channel_layout.h per FFmpeg commit
1be3d8a0cb77 [1]. avformat.h stopped including avcodec.h per FFmpeg
commit e67e02d15672 [2]. As a result, we need to explicitly include
avutil/channel_layout.h when needed. Fixes compilation error against
FFmpeg later than the two mentioned commits.

[1]: 1be3d8a0cb
[2]: e67e02d156
2021-11-21 11:30:02 -05:00
Ryan Foster
08547a1696 obs-ffmpeg: Include avcodec header for AVCodecContext
FFmpeg commit e67e02d15672 [1] drops avcodec.h from avformat.h includes.
Therefore we need to include it explicitly.

[1]: e67e02d156
     lavf/avformat.h: drop the avcodec.h include
2021-11-21 11:30:02 -05:00
Ryan Foster
6d1433f228 win-dshow: Use AVFrame.pts instead of AVFrame pkt_pts
AVFrame.pkt_pts was deprecated in FFmpeg commit 32c8359093d1 dated June
21, 2016 for lavc 57.24.0 (FFmpeg 3.2). AVFrame.pkt_pts was replaced by
AVFrame.pts, and it was removed in FFmpeg commit 6e30b35b85b8 [2] on
April 27, 2021. Ubuntu 18.04 has the oldest FFmpeg version we support,
FFmpeg 3.4. We should be able to safely migrate from AVFrame.pkt_pts to
AVFrame.pts.

[1]: 32c8359093
[2]: 6e30b35b85
2021-11-21 11:30:02 -05:00
jpark37
2fa145899f inject-helper: Remove UNUSED_PARAMETER macro
Potential definition clash with c99defs.h. Not needed anyway.
2021-11-20 22:53:10 -08:00
tt2468
e85c8f32fb text-freetype2: Move default settings to .get_defaults
obs-websocket's `GetInputDefaultSettings` request uses
obs_get_source_defaults() in order to fetch a source id's default
settings. This moves the default settings to the `.get_defaults`
callback so that our request does not return an empty object.

Does not affect existing functionality
2021-11-20 20:04:53 -08:00
Guang Zhou
99a7d19d15 rtmp-services: Add Manyvids.com 2021-11-11 10:10:15 -08:00
Christine Lin
3995326647 obs-qsv11: Remove Intel discrete device ID checking
As Intel continues to add discrete graphics cards, maintaining a long
list of discrete device IDs to check against isn't wise. When i+I
platforms are detected, default to integrated graphics.
2021-11-10 20:15:52 -08:00
Florian Zwoch
88aec3b43c linux-v4l2: Change search strategy for v4l2loopback devices
Instead of trying to open devices /dev/video<0-63> check /dev for
all /dev/videoX devices that are existent in the tree. This allows
finding devices with higher names than 63. E.g. /dev/video100 can
now be found and opened which previously failed.

_GNU_SOURCE #define is introduced for versionsort() which is a GNU
extension.

Fixes #4347.
2021-11-10 19:32:30 -03:00
Exeldro
aee6d813f1 obs-transitions: Fix stinger transition looping 2021-11-10 12:47:39 -08:00
David Plappert
8d374bdaa8 rtmp-services: add PhoneLivestreaming 2021-11-10 12:42:29 -08:00
lucha
e09b952068 rtmp-services: Add Autistici.org 2021-11-09 13:54:57 -08:00
Thomas Müller
d7a95eb690 rtmp-services: add Utreon 2021-11-09 13:38:40 -08:00
Norihiro Kamae
2a0b9d851c obs-ffmpeg: Fix starting video packet offset in replay-buffer
The commit 4a5ac3974 fixed the bug the first PTS is not zero. This
commit fixed the same issue in replay-buffer.
A variable `video_dts_offset` is renamed to `video_pts_offset` and the
variable is initialized by `pts` instead of `dts`.
2021-11-04 14:49:17 -07:00
zhaolong
e7a4ed4067 rtmp-services: add Kuaishou live 2021-11-04 06:41:55 -07:00
Clayton Groeneveld
af6c719139 UI, libobs, obs-plugins: Fix compiler warnings
Found warnings when compiling OBS.
2021-11-04 06:25:52 -07:00
Rafael Franco
c7de398309 linux-capture: Sort windows by name 2021-11-02 06:06:46 -07:00
Morten Bøgeskov
1c2aea4f89 linux-v4l2: Support for Motion-JPEG codec 2021-11-02 06:04:54 -07:00
Shlee
dc4de4db11 obs-qsv11: Fix memory leaks
Closes obsproject/obs-studio#3298
2021-11-02 05:57:01 -07:00
Adrián Pardini
b15b5b8561 rtmp-services: update CamSoda domains 2021-10-30 15:26:33 -07:00
pkv
258365da71 obs-ffmpeg-mux: Add support for rist protocol
This adds RIST to the list of protocols supported by the obs
ffmpeg_mpegts_muxer.
RIST is container and codec agnostic. But this implementation relies
on ffmpeg avformat integration and uses mpeg-ts container.
2021-10-30 15:06:58 -07:00
Clayton Groeneveld
41e465492f obs-filters: Remove duplicate code from chroma key filter
This removes duplicate code from the chroma key filter from
when it was versioned.
2021-10-28 09:14:23 -07:00
Clayton Groeneveld
8b634ab15a obs-filters: Remove duplicate code from color key filter
This removes duplicate code from the color key filter when
it was versioned.
2021-10-28 09:14:23 -07:00
Clayton Groeneveld
5483aba814 obs-filters: Remove duplicate color correction code
This removes duplicate code from the color correction filter
when it was versioned.
2021-10-28 09:14:23 -07:00
jp9000
442886c0aa obs-ffmpeg: Add AOM AV1 and SVT-AV1 encoders
Adds the ability to encode with software AV1 encoders within FFmpeg,
specifically AOM AV1 and SVT-AV1.
2021-10-25 12:24:16 -07:00
jp9000
e8d366f789 obs-ffmpeg/ffmpeg-mux: Allow codecs of any type
Allows the ability to mux with a codec which may not actually have an
encoder implementation within the current build of FFmpeg
2021-10-25 12:24:16 -07:00
jp9000
6534bf5834 obs-x264: Move options parser to its own lib 2021-10-25 12:24:16 -07:00
Jim
355eb4b8df
Merge pull request #5269 from jpark37/wasapi-cleanup
win-wasapi: WASAPISource improvements
2021-10-24 02:16:40 -07:00