--- media/base/media_switches.cc.orig 2026-04-15 12:07:04 UTC +++ media/base/media_switches.cc @@ -20,7 +20,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" #include "components/system_media_controls/linux/buildflags/buildflags.h" #endif @@ -428,13 +428,35 @@ BASE_FEATURE(kApplicationAudioCaptureMac, base::FEATUR #endif // BUILDFLAG(IS_MAC) -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) // Enables system audio mirroring using pulseaudio. BASE_FEATURE(kPulseaudioLoopbackForCast, base::FEATURE_DISABLED_BY_DEFAULT); // Enables system audio sharing using pulseaudio. BASE_FEATURE(kPulseaudioLoopbackForScreenShare, base::FEATURE_DISABLED_BY_DEFAULT); + +BASE_FEATURE(kAudioBackend, + "AudioBackend", + base::FEATURE_ENABLED_BY_DEFAULT); + +constexpr base::FeatureParam::Option + kAudioBackendOptions[] = { + {AudioBackend::kAuto, + "auto"}, + {AudioBackend::kPulseAudio, "pulseaudio"}, + {AudioBackend::kSndio, "sndio"}, + {AudioBackend::kAlsa, "alsa"}}; + +const base::FeatureParam + 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 @@ -681,7 +703,7 @@ BASE_FEATURE(kGlobalMediaControlsAutoDismiss, base::FE #if !BUILDFLAG(IS_ANDROID) // If enabled, users can request Media Remoting without fullscreen-in-tab. BASE_FEATURE(kMediaRemotingWithoutFullscreen, -#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(kSuspendMediaForFrozenFrames, base::FEATU // autoplay policy. BASE_FEATURE(kUnifiedAutoplay, base::FEATURE_ENABLED_BY_DEFAULT); -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) // Enable vaapi/v4l2 video decoding on linux. This is already enabled by default // on chromeos, but needs an experiment on linux. BASE_FEATURE(kAcceleratedVideoDecodeLinux, @@ -760,7 +782,7 @@ BASE_FEATURE(kVaapiVp9SModeHWEncoding, base::FEATURE_E // Enables VSync aligned MJPEG decoding. BASE_FEATURE(kVSyncMjpegDecoding, base::FEATURE_DISABLED_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) // Enable H264 temporal layer encoding with V4L2 HW encoder on ChromeOS. BASE_FEATURE(kV4L2H264TemporalLayerHWEncoding, base::FEATURE_DISABLED_BY_DEFAULT); @@ -947,7 +969,7 @@ BASE_FEATURE(kHardwareSecureDecryptionRequireServerCer BASE_FEATURE(kHardwareMediaKeyHandling, #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) base::FEATURE_ENABLED_BY_DEFAULT -#elif BUILDFLAG(IS_LINUX) +#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) #if BUILDFLAG(USE_MPRIS) base::FEATURE_ENABLED_BY_DEFAULT #else @@ -1284,7 +1306,7 @@ BASE_FEATURE(kUseOutOfProcessVideoDecoding, BASE_FEATURE(kUseSharedImageInOOPVDProcess, 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, base::FEATURE_DISABLED_BY_DEFAULT); @@ -1346,7 +1368,7 @@ BASE_FEATURE(kRecordMediaEngagementScores, base::FEATU // Enables Media Engagement Index recording for Web Audio playbacks. BASE_FEATURE(kRecordWebAudioEngagement, 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. @@ -1667,7 +1689,7 @@ bool IsSystemLoopbackCaptureSupported() { #elif BUILDFLAG(IS_MAC) return (IsMacSckSystemLoopbackCaptureSupported() || IsMacCatapSystemLoopbackCaptureSupported()); -#elif BUILDFLAG(IS_LINUX) && defined(USE_PULSEAUDIO) +#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(USE_PULSEAUDIO) return true; #else return false;