Commit graph

34 commits

Author SHA1 Message Date
Kurt Kartaltepe
368082d6c0 obs-qsv11: Use device enumeration for choosing DRM device
Trying to use the display server as the QSV device was found to be
generally wrong in beta, so instead lets save defaults from the earlier
device enumeration similar to obs-ffmpeg-vaapi which is known to work
well.
2023-08-26 16:40:46 -07:00
Gale
550ccc63f2 obs-qsv11: Fix RepeatPPS bug 2023-08-09 18:12:47 -04:00
Gale
1d95575088 obs-qsv11: Update Target Usage options
Update target usage setting names from legacy names to VPL names.
2023-08-09 18:12:47 -04:00
Gale
6dada921c9 obs-qsv11: Adjust Subjective Video Enhancements
Disable MBBRC (macro block level bitrate control) because it can reduce
objective quality metrics like VMAF.

Use AdaptiveCQM for CBR and VBR.
2023-08-09 18:12:47 -04:00
Gale
5b6967c359 obs-qsv11: Improve AV1 quality parameters
Enable B-frames for AV1 for Intel Arc Graphics and Meteor Lake Platform.
2023-08-09 18:12:47 -04:00
Gale
dbbbcd8c57 obs-qsv11: Add VPL changes 2023-08-07 13:23:26 -04:00
Kurt Kartaltepe
b8ccaf5649 obs-qsv11: Add adapter checks for Linux
This moves the existing adapter checking into the platform layer and
moves the Windows implementation to its platform implementation and adds
a Linux implementation based on directly querying VA-API.

Unlike Windows, this check takes ~1ms so we have no need to spin out
another thread to perform the work. This also fixes up some of the CPP/C
mixing going on in common_utils."h" to allow us to call common functions
from C files.
2023-07-14 12:19:33 -04:00
Kurt Kartaltepe
c6b470de9a obs-qsv11: Add a Linux implementation
This adds a CMake module for finding the QSV SDK (libmfx/onevpl) and an
the required platform components to initialize QSV with the VA-API
platform.
2023-07-14 12:19:33 -04:00
Kurt Kartaltepe
dc2f2f157b obs-qsv11: Remove Windows references from common files
This cleans up the fairly arbitrary Windows includes and types and
unused functions from the common code and replaces them with platform
independent equivalents, or platform specific implementations in
common_utils.

This removes the Windows 8 support to avoid adding an additional
platform function to query this. OBS only supports Windows 10
officially, so it's about time we removed it.
2023-07-05 19:52:10 -04:00
Jim
5c0773e128 obs-qsv11: Fix encoder capping resolution on dgpus 2022-11-28 08:36:46 -08:00
Yuriy Chumak
fceee90aa9 obs-qsv11: Add HEVC
Co-authored-by: jpark37 <jpark37@users.noreply.github.com>
Co-authored-by: Jim <obs.jim@gmail.com>
2022-11-22 07:29:31 -08:00
Jim
5b11cfd04d obs-qsv11: Remove unused function declaration 2022-11-22 05:23:15 -08:00
Gale
319eac4bf5 obs-qsv11: Add QSV AV1 encoder 2022-11-21 19:08:02 -08:00
Gale
9dd70910cb obs-qsv11: Add codec enum
(Jim description: Adding a codec enum will add support for other codecs)
2022-11-21 19:08:02 -08:00
Jim
eaf243bca7 obs-qsv11: Add startup process to test QSV support
This simplifies encoder initialization and prevents it from requiring
any sort of unnecessary Direct3D or encoder initiazation tests while OBS
is actually running.
2022-11-21 19:08:02 -08:00
Lin
f4a76f9daa obs-qsv11: Fix bframe=0 not working
Fixes obsproject/obs-studio#3979.
2021-01-11 11:52:07 -08:00
brittneysclark
28af453320 obs-qsv11: Enable VDEnc on ICL+
Enable AVC VDEnc (fixed function encode) on ICL+
2020-07-08 20:24:27 -07:00
brittneysclark
8e0e2dd3e9 obs-qsv11: Add latency mode to QSV settings
Simplify UI options by combining LookAhead Depth and Async Depth into
latency mode option. Ultra-low, low, and normal will set these two
encode parameters accordingly.
2020-07-08 20:24:24 -07:00
cmlin2
477199ef2c obs-qsv11: Set preference for encode to iGPU in case of i+i 2020-07-08 12:03:22 -07:00
jp9000
72a94cb6f5 Revert "Merge pull request #2993 from brittneysclark/enable_vdenc"
This reverts commit 636f0bfdfa, reversing
changes made to b9ea45e498.
2020-06-01 13:40:18 -07:00
brittneysclark
45df89ef93 obs-qsv11: Enable VDEnc on ICL+
Enable AVC VDEnc (fixed function encode) on ICL+
2020-05-16 05:29:20 -07:00
brittneysclark
8ba7a8b92b obs-qsv11: Add latency mode to QSV settings
Simplify UI options by combining LookAhead Depth and Async Depth into
latency mode option. Ultra-low, low, and normal will set these two
encode parameters accordingly.
2020-05-16 04:33:20 -07:00
brittneysclark
cc896b6c03 obs-qsv11: Enable QSV texture-based encoding
Enables a pipeline for texture-based encoding with QSV. Utilizes OBS
NV12 output for encode to avoid offloading them from GPU, which will
increase performance. The option to select old QSV pipeline still
remains and will fallback if new pipeline fails.
2020-04-17 09:05:52 -07:00
Ryan Foster
56348a0b46 obs-qsv11: Fix target usage values
PR #1937 (commit b9ad1ce) added QSV target usage options, but there was
a comma missing between two of the array entries. This resulted in
"faster" and "veryfast" becoming "fasterveryfast", which is not valid.

Code style changes were required by .clang-format.
2020-03-20 05:30:18 -04:00
Daniel Hill
b9ad1ceb64 obs-qsv11: Add all TargetUsage values
Using terminology from FFmpeg reference, implement:
https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/cloud-computing-quicksync-video-ffmpeg-white-paper.pdf
2019-12-15 05:20:49 -08:00
brittneysclark
ffd0bbb1ab obs-qsv11: Enable option for Custom Quantization Matrix
Add the option to enable custom quantization matrix for game streaming
on ICL for better subject quality. Feature is only supported with AVC
high profile, so added function to detect when QSV profile is modified
and hide or show CQM UI option accordingly. Also, increase SPS/PPS
buffer sizes since matrix is stored in SPS/PPS.
2019-10-11 01:10:08 -07:00
brittneysclark
dc76bf2fe9 obs-qsv11: Add platform enums for KBL and ICL
Add two new platform enums for enabling future features
2019-10-11 01:10:08 -07:00
brittneysclark
2f62831a96 obs-qsv: Enable LA_CBR as QSV rate control
Allow user to choose look ahead CBR as the rate control method for QSV.
Also, changes look ahead depth default to 15 when used.
2019-07-16 07:46:02 -07:00
brittneysclark
8717a66991 obs-qsv: Enable Content Adaptive Quantization
Allow user to enable Content Adaptive Quantization (MMBRC) if CPU is SKL
or newer
2019-07-13 00:10:16 -07:00
brittneysclark
2b59b010bb obs-qsv: Add newer platforms to CPU enum
Adding BDW and SKL to QSV CPU enum to check CPUID before enabling newer
QSV features
2019-07-12 08:04:57 -07:00
jp9000
f53df7da64 clang-format: Apply formatting
Code submissions have continually suffered from formatting
inconsistencies that constantly have to be addressed.  Using
clang-format simplifies this by making code formatting more consistent,
and allows automation of the code formatting so that maintainers can
focus more on the code itself instead of code formatting.
2019-06-23 23:49:10 -07:00
jp9000
4c7860056e Revert "Merge pull request #1418 from cabirdme/qsv_feature_add"
This reverts commit 3c22cf35c9, reversing
changes made to c7dab6c92b.

This is being reverted due to many people being unable to start up the
QSV encoder with these changes.
2019-03-05 15:21:09 -08:00
Bird, Christopher
58812bc0b3 obs-qsv: Expose additional QSV encoder settings through GUI
- Allow user to change # of B frames. New Default -> 1
- Allow user to enable Content Adaptive Quantization (MBBRC) if CPU is Skylake or newer.
- Allow user to choose LA_CBR as a rate control.
- LA depth: New Default -> 15, only when LA rate control is used.
2018-08-08 10:39:57 -07:00
Seung-Woo Kim
3e4bcf06bc obs-qsv11: Add native obs-studio QSV encoder 2016-04-19 08:29:22 -07:00