ports/www/chromium/files/patch-media_base_media__switches.cc

132 lines
5.7 KiB
C++

--- media/base/media_switches.cc.orig 2024-08-26 12:06:38 UTC
+++ media/base/media_switches.cc
@@ -21,7 +21,7 @@
#include "ui/gl/gl_features.h"
#include "ui/gl/gl_utils.h"
-#if BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
#include "base/cpu.h"
#endif
@@ -368,8 +368,8 @@ BASE_FEATURE(kMacLoopbackAudioForScreenShare,
"MacLoopbackAudioForScreenShare",
base::FEATURE_DISABLED_BY_DEFAULT);
#endif // BUILDFLAG(IS_MAC)
-
-#if BUILDFLAG(IS_LINUX)
+
+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
// Enables system audio mirroring using pulseaudio.
BASE_FEATURE(kPulseaudioLoopbackForCast,
"PulseaudioLoopbackForCast",
@@ -379,6 +379,28 @@ BASE_FEATURE(kPulseaudioLoopbackForCast,
BASE_FEATURE(kPulseaudioLoopbackForScreenShare,
"PulseaudioLoopbackForScreenShare",
base::FEATURE_DISABLED_BY_DEFAULT);
+
+BASE_FEATURE(kAudioBackend,
+ "AudioBackend",
+ base::FEATURE_ENABLED_BY_DEFAULT);
+
+constexpr base::FeatureParam<AudioBackend>::Option
+ kAudioBackendOptions[] = {
+ {AudioBackend::kAuto,
+ "auto"},
+ {AudioBackend::kPulseAudio, "pulseaudio"},
+ {AudioBackend::kSndio, "sndio"},
+ {AudioBackend::kAlsa, "alsa"}};
+
+const base::FeatureParam<AudioBackend>
+ kAudioBackendParam{
+ &kAudioBackend, "audio-backend",
+#if BUILDFLAG(IS_OPENBSD)
+ AudioBackend::kSndio,
+#elif BUILDFLAG(IS_FREEBSD)
+ AudioBackend::kAuto,
+#endif
+ &kAudioBackendOptions};
#endif // BUILDFLAG(IS_LINUX)
// When enabled, MediaCapabilities will check with GPU Video Accelerator
@@ -676,7 +698,7 @@ BASE_FEATURE(kFeatureManagementLiveTranslateCrOS,
// Show toolbar button that opens dialog for controlling media sessions.
BASE_FEATURE(kGlobalMediaControls,
"GlobalMediaControls",
-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
@@ -704,7 +726,7 @@ BASE_FEATURE(kGlobalMediaControlsUpdatedUI,
// If enabled, users can request Media Remoting without fullscreen-in-tab.
BASE_FEATURE(kMediaRemotingWithoutFullscreen,
"MediaRemotingWithoutFullscreen",
-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
@@ -716,7 +738,7 @@ BASE_FEATURE(kMediaRemotingWithoutFullscreen,
BASE_FEATURE(kGlobalMediaControlsPictureInPicture,
"GlobalMediaControlsPictureInPicture",
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_CHROMEOS_LACROS)
+ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
@@ -745,7 +767,7 @@ BASE_FEATURE(kUnifiedAutoplay,
"UnifiedAutoplay",
base::FEATURE_ENABLED_BY_DEFAULT);
-#if BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
// Enable vaapi video decoding on linux. This is already enabled by default on
// chromeos, but needs an experiment on linux.
BASE_FEATURE(kVaapiVideoDecodeLinux,
@@ -836,7 +858,7 @@ BASE_FEATURE(kVaapiVp9SModeHWEncoding,
"VaapiVp9SModeHWEncoding",
base::FEATURE_ENABLED_BY_DEFAULT);
#endif // defined(ARCH_CPU_X86_FAMILY) && BUILDFLAG(IS_CHROMEOS)
-#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
// Enables the new V4L2StatefulVideoDecoder instead of V4L2VideoDecoder.
// Owners: frkoenig@chromium.org, mcasas@chromium.org
// Expiry: When the |V4L2FlatVideoDecoder| flag handles stateful decoding on
@@ -963,7 +985,7 @@ BASE_FEATURE(kLiveCaptionUseWaitK,
// Live Caption can be used in multiple languages, as opposed to just English.
BASE_FEATURE(kLiveCaptionMultiLanguage,
"LiveCaptionMultiLanguage",
-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
@@ -993,7 +1015,7 @@ BASE_FEATURE(kLiveCaptionWebAudio,
// Live Translate translates captions generated by Live Caption.
BASE_FEATURE(kLiveTranslate,
"LiveTranslate",
-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
@@ -1468,7 +1490,7 @@ BASE_FEATURE(kUseGTFOOutOfProcessVideoDecoding,
base::FEATURE_DISABLED_BY_DEFAULT);
#endif // BUILDFLAG(ALLOW_OOP_VIDEO_DECODER)
-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
// Spawn utility processes to perform hardware encode acceleration instead of
// using the GPU process.
BASE_FEATURE(kUseOutOfProcessVideoEncoding,
@@ -1548,7 +1570,7 @@ BASE_FEATURE(kRecordWebAudioEngagement,
"RecordWebAudioEngagement",
base::FEATURE_ENABLED_BY_DEFAULT);
-#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
// Reduces the number of buffers needed in the output video frame pool to
// populate the Renderer pipeline for hardware accelerated VideoDecoder in
// non-low latency scenarios.