Commit Graph
2892 Commits
Author SHA1 Message Date
wangshaohui 0069562cca win-capture: Fix window capture stuck last frame
Fixes obsproject/obs-studio#2321
2021-03-30 05:49:43 -07:00
floele 44c38e71cc obs-ffmpeg/ffmpeg-mux: Fix hang without global_stream_key
If DEBUG_FFMPEG_MUX is enabled, when starting a recording without
configuring global_stream_key, obs-ffmpeg-mux will hang. Apply same
check to global_stream_key as in init_params() to prevent this.
2021-03-30 04:55:33 -07:00
Eric Lindvall 3c76fc4ddb obs-ffmpeg: Enable macOS hardware decoding for media source
Reverts  c7395b05ec
2021-03-30 03:45:06 -07:00
jpark37 abf6a97ca9 obs-x264: Set CRF value conditionally
Matches value seen when encoding with FFmpeg.
2021-03-30 03:17:38 -07:00
jpark37 dd552df15c obs-x264: Set sample aspect ratio to 1:1
Matches values seen when encoding with FFmpeg.
2021-03-30 03:17:38 -07:00
jpark37 a52562a98e obs-x264: Set timebase
Matches values seen when encoding with FFmpeg.
2021-03-30 03:17:38 -07:00
Jim e92c1fe6bc Merge pull request #4287 from GeorgesStavracas/gbsneto/pipewire
Wayland / PipeWire capture
2021-03-30 03:16:46 -07:00
Jim 5d87f3c00b Merge pull request #3426 from Programatic/undo_redo
UI: Implement Undo/Redo System
2021-03-30 03:16:24 -07:00
Georges Basile Stavracas Neto 10a1a708fb linux-capture: Return different descriptions for different captures
Use the current description for X11 / GLX, and a new description for all
PipeWire-based captures (EGL/X11 and EGL/Wayland)
2021-03-29 17:00:31 -03:00
Georges Basile Stavracas Neto c2f8b2058b linux-capture: Add PipeWire-based capture
Add a new Linux capture based on PipeWire [1] and the Desktop portal [2].

This new capture starts by asking the Desktop portal for a screencapture session.
There are quite a few D-Bus calls involved in this, but the key points are:

 1. A connection to org.freedesktop.portal.ScreenCast is estabilished, and the
    available cursor modes are updated.

 2. CreateSession() is called. This is the first step of the negotiation.

 3. SelectSources() is called. This is when a system dialog pops up asking the
    user to either select a monitor (desktop capture) or a window (window capture).

 4. Start() is called. This signals the compositor that it can setup a PipeWire
    stream, and start sending buffers.

The reply to this fourth call gives OBS Studio the PipeWire fd, and the id of the
PipeWire node where the buffers are being sent to. This allows creating a consumer
PipeWire stream, and receive the buffers.

Metadata cursor is always preferred, but on the lack of it, we ask the stream for
an embedded cursor (i.e. the cursor is drawn at the buffer, and OBS Studio has no
control over it.)

Window capturing is implemented as a crop operation on the buffer. Compositors
can send big buffers, and a crop rectangle, and this is used to paint a subregion
of the buffer in the scene.

The new capture is only loaded when running on EGL, since it depends on EGL to
call gs_texture_create_from_dmabuf().

[1] https://pipewire.org/
[2] https://github.com/flatpak/xdg-desktop-portal/
2021-03-29 17:00:31 -03:00
Georges Basile Stavracas Neto a0464b0f8f linux-capture: Shuffle around CMake code
In preparation for the introduction of the new PipeWire-based capture,
use variables for include_directories() and target_link_libraries(),
and move them to the bottom of the file.
2021-03-29 17:00:31 -03:00
Matt Gajownik 662648bd98 obs-browser: Update version to 2.14.1
Fixes building on Ubuntu 18.04.
2021-03-23 21:51:30 +11:00
jp9000 ad628eb2e0 obs-browser: Update version to 2.14.0 2021-03-22 22:59:04 -07:00
Richard Stanway 6424901120 win-dshow: Check return value of ReadFile 2021-03-23 03:15:07 +01:00
Richard Stanway 45643adb03 win-dshow: Check return values for memory allocation functions
Since some of these run inside the virtual cam module, we should be a
good guest and not crash the host process if we run out of memory.
2021-03-23 03:07:22 +01:00
Richard Stanway 670156db8b win-dshow: Fix incorrect variable used in condition 2021-03-23 02:49:44 +01:00
Richard Stanway 5c8587eab3 win-dshow: Don't call DisableThreadLibraryCalls in virtualcam
Per MSDN: Do not call this function from a DLL that is linked to the static C
run-time library (CRT). The static CRT requires DLL_THREAD_ATTACH and
DLL_THREAD_DETATCH notifications to function properly.
2021-03-23 02:49:44 +01:00
wangshaohui f316762a2a win-dshow: Fix memory leak caused by using incorrect API 2021-03-22 13:59:22 -07:00
Ford Smith 7fc539c3c4 text-freetype2: Updated defaults
Adds several more settings to the defaults for the text objects.
2021-03-22 15:45:00 -04:00
jp9000 535e7dfa15 obs-vst: Update to latest version 2021-03-22 12:42:54 -07:00
Faeez Kadiri 85334d562f rtmp-services: Add Dacast 2021-03-21 22:44:02 -07:00
jp9000 6afb6d9c9f rtmp-services: Move service-specific files
Cleans up the directory a bit
2021-03-21 02:46:01 -07:00
jpark37 10c43f19c0 obs-ffmpeg: Missing NVENC bounds check 2021-03-20 12:35:49 -07:00
jpark37 4404422082 obs-ffmpeg: Replace cast with numeric literal 2021-03-20 12:35:49 -07:00
Jim 011adc4e29 Merge pull request #4344 from jpark37/nvenc-ffmpeg-alignment
obs-ffmpeg: Align both NVENC implementations
2021-03-16 22:12:36 -07:00
jpark37 7b983f00e3 obs-ffmpeg: Static analysis warnings
Fix various warnings about variable size.
2021-03-16 20:03:45 -07:00
jpark37 f35e37a963 obs-ffmpeg: Use NVENC preset lookahead length
If the preset specifies the lookahead length, use it. Force to previous
setting of 8 otherwise.
2021-03-16 20:03:45 -07:00
jpark37 6826285921 obs-ffmpeg: Align NVENC config values
Hard-code various config values as they appear in FFmpeg.
2021-03-16 20:03:29 -07:00
jpark37 3ddab3ca3e obs-ffmpeg: Align NVENC buffer length
Compute buffer count according to FFmpeg logic.
2021-03-16 20:02:49 -07:00
jpark37 7e8a04bbea obs-ffmpeg: Align NVENC lookahead logic
Force-enable lookahead if nvEncGetEncodePresetConfig says to.
2021-03-16 20:02:20 -07:00
jpark37 eca916527d obs-ffmpeg: PVT for NVENC fallback
Plumb Psycho Visual Tuning setting into fallback encoder.
2021-03-16 19:05:36 -07:00
jpark37 aa7e579f87 obs-ffmpeg: Align NVENC vbvBufferSize
Set vbvBufferSize to match FFmpeg behavior.
2021-03-16 19:04:00 -07:00
jpark37 f253c6dcb3 obs-ffmpeg: Align NVENC aqStrength
If Psycho Visual Tuning is on, switch aqStrength to from 0 to 8 to match
FFmpeg default.
2021-03-16 19:02:50 -07:00
jpark37 0c971276ae obs-ffmpeg: Don't set NVENC max dimensions
Don't set maxEncodeWidth/maxEncodeHeight since FFmpeg doesn't, and we
don't support resolution changes.
2021-03-16 19:01:00 -07:00
jpark37 b150e4fd39 obs-ffmpeg: Align NVENC dts math
Multiply by number of bframes like FFmpeg does.
2021-03-16 18:58:29 -07:00
jpark37 6ee7725c03 obs-ffmpeg: Use av_reduce on NVENC aspect ratio
For example, 1920:1080 becomes 16:9.
2021-03-16 18:58:20 -07:00
Richard Stanway db7daa6eaf obs-filters: Simplify NVAFX SDK path lookup 2021-03-16 20:34:15 +01:00
Richard Stanway d8a434bcc8 obs-filters: Minor code cleanup
Remove some unused variables, fix const qualifier and remove printfs.
2021-03-16 20:34:15 +01:00
pkv 54892b27db obs-filters: Add RTX denoiser
This adds RTX denoiser filter to be used with RTX GPUs.
(from Nvidia Audio Effects SDK)
2021-03-13 12:17:11 -08:00
Ying Yin a609554b89 rtmp-services: Make YouTube - RTMPS service the default
Remove beta label for YouTube - RTMPS and make it the default. Remove
YouTube - RTMP service and move the legacy RTMP urls to the Server
dropdown list.
2021-03-12 23:48:42 -08:00
jpark37 7e263ab775 win-capture: Better laptop test for auto-selection
Only auto-select WGC for desktop capture if a battery exists and
multiple GPU adapters are present. May false-positive on desktops with
a smart UPS attached, but we don't know of a better test.
2021-03-12 20:59:31 -08:00
Amin Shayan 883ec6fb66 UI: Add recommended settings for Aparat
Closes obsproject/obs-studio#4339
2021-03-12 19:15:44 -08:00
jp9000 4ef0d3bc69 obs-browser: Update version to 2.13.2 2021-03-12 18:57:13 -08:00
Christopher P Yarger fc6d2954fd obs-ffmpeg: Fix bug with obs_source_media_play_pause 2021-03-04 23:43:14 -08:00
Richard Stanway 43a291806e decklink: Remove unnecessary obs-frontend-api dependency 2021-03-04 19:22:12 +01:00
pedanticdan bc3decc8d1 mac-virtualcam: DAL PlugIn check for custom png file 2021-03-01 07:40:13 -08:00
Doug Kelly 6a9f25c8ea mac-vth264: Clean up encoder list
When enumerating the list of encoders offered by VideoToolbox,
there's no reason we can't use the returned ID, which allows us to
remove the hardware/software encoder specific functions. At the
same time, this does add a slight complexity when localizing the
encoder name, so we can fall back to the OS-provided encoder name
if there's not a match.
2021-02-28 19:00:43 -08:00
Doug Kelly 5d711ebbda mac-capture: Adjust mHostTime to milliseconds
The timestamp returned by mHostTime in the AudioTimeStamp structure
is the current timestamp equivalent to mach_absolute_time(), which
is relative to the machine's time base. In order to convert this
to milliseconds, it's necessary to get the host's timebase with
mach_timebase_info() and scale the timestamp accordingly, since
the rest of the timestamp synchronization code expects the timestamp
to be in milliseconds.

This is effectively equivalent to the code which was previously in
libobs/util/platform-coca.m, but must be applied here instead.
2021-02-28 19:00:43 -08:00
PatTheMav 516ed4458d mac-virtualcam: Handle missing DAL plugin destination directory 2021-02-26 13:29:49 -08:00
Thomas Picquet 848395f326 rtmp-services: Add ePlay service
Closes obsproject/obs-studio#4263
2021-02-22 02:40:56 -08:00