You are not logged in.
Configuration Editor for Firefox
_https://support.mozilla.org/en-US/kb/about-config-editor-firefoxFirefox's hidden preferences
URL: about:configmedia.resampling.enabled false
You can easily debug Firefox audio playback with a secret command.
Reference media files:
Hi-Res Music 32 Bit - Greatest Audiophile Collection - Natural Beat Records
_https://rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf/Best Audiophile Vocal 24 bit - Hi-Res Music 2025 - Audiophile Voices
_https://www.youtube.com/watch?v=uO6jfQ5tQHM
_https://youtu.be/uO6jfQ5tQHM$ youtube-dl -F "https://youtu.be/uO6jfQ5tQHM" | grep "audio only" 249 webm audio only audio_quality_low 54k , webm_dash container, opus (48000Hz), 30.39MiB 250 webm audio only audio_quality_low 71k , webm_dash container, opus (48000Hz), 39.87MiB 140 m4a audio only audio_quality_medium 129k , m4a_dash container, mp4a.40.2 (44100Hz), 72.39MiB 251 webm audio only audio_quality_medium 137k , webm_dash container, opus (48000Hz), 76.97MiB
mkdir Cubeb_LOGs
cd Cubeb_LOGsMOZ_LOG="MediaDecoder:5,cubeb:5" firefox 2>&1 youtu.be/uO6jfQ5tQHM | tee firefox_youtube.log$ cat firefox_youtube.log | grep "Input" -m3 -A3
Input: 44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.
--
Input: 48000 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1920
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 48000 --> 48000 (J: 0.00%, T: None, W: Planar)
Ok.$ cat firefox_youtube.log | grep "rate=44100" -m3
[Child 9639: Main Thread]: D/MediaDecoder MediaDecoder[7f121756ba00] MetadataLoaded, channels=1 rate=44100 hasAudio=1 hasVideo=0
[Child 9639: Main Thread]: D/MediaDecoder MediaDecoder[7f1216ea9000] MetadataLoaded, channels=1 rate=44100 hasAudio=1 hasVideo=0
[Child 9639: Main Thread]: D/MediaDecoder MediaDecoder[7f1216e86a00] MetadataLoaded, channels=1 rate=44100 hasAudio=1 hasVideo=0$ cat firefox_youtube.log | grep "rate=48000" -m3
[Child 9639: Main Thread]: D/MediaDecoder MediaDecoder[7f1216ea9300] MetadataLoaded, channels=2 rate=48000 hasAudio=1 hasVideo=1
[Child 9639: Main Thread]: D/MediaDecoder MediaDecoder[7f1216ea9300] FirstFrameLoaded, channels=2 rate=48000 hasAudio=1 hasVideo=1 mPlayState=PLAY_STATE_LOADING transportSeekable=1CONCLUSION:
[ALSA only] Firefox does not resample anything, but it is switching between two available audio formats in YouTube.
MOZ_LOG="MediaDecoder:5,cubeb:5" firefox 2>&1 rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf | tee firefox_rutube.log$ cat firefox_rutube.log | grep "Input" -m3 -A3
Input: 44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.
--
Input: 44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.$ cat firefox_rutube.log | grep "rate=44100" -m3
[Child 10956: Main Thread]: D/MediaDecoder MediaDecoder[7f2c0b2af800] MetadataLoaded, channels=2 rate=44100 hasAudio=1 hasVideo=1
[Child 10956: Main Thread]: D/MediaDecoder MediaDecoder[7f2c0b2af800] FirstFrameLoaded, channels=2 rate=44100 hasAudio=1 hasVideo=1 mPlayState=PLAY_STATE_LOADING transportSeekable=1$ cat firefox_rutube.log | grep "rate=48000" -m3
<nothing>CONCLUSION:
[ALSA only] Firefox does not resample anything. Only rate=44100 is available.
One may test Firefox with apulse
The top secret settings in Firefox's about:config are invisible. For example:
// Allows to get something non-default for the preferred sample-rate
media.cubeb.force_sample_ratemedia.cubeb.backend
media.cubeb.output_device_https://searchfox.org/firefox-main/source/dom/media/CubebUtils.cpp
#define PREF_VOLUME_SCALE "media.volume_scale" #define PREF_CUBEB_BACKEND "media.cubeb.backend" #define PREF_CUBEB_OUTPUT_DEVICE "media.cubeb.output_device" #define PREF_CUBEB_LATENCY_PLAYBACK "media.cubeb_latency_playback_ms" #define PREF_CUBEB_LATENCY_MTG "media.cubeb_latency_mtg_frames" // Allows to get something non-default for the preferred sample-rate, to allow // troubleshooting in the field and testing. #define PREF_CUBEB_FORCE_SAMPLE_RATE "media.cubeb.force_sample_rate" #define PREF_CUBEB_LOGGING_LEVEL "logging.cubeb" // Hidden pref used by tests to force failure to obtain cubeb context
Open a new tab in Firefox. Type about:config in the address bar.
Type into "Search preference name"
media.cubeb.force_sample_rateSelect "Number"
Press "+"
Type "48000", then Enter
You have a new entry in Firefox's "hidden preferences":
media.cubeb.force_sample_rate 48000Restart Firefox. Type about:support in the address bar.
Name Firefox
Version 140.4.0esr
...
Media
Audio Backend alsa
Max Channels 10000
Preferred Sample Rate 48000Reference media files:
Hi-Res Music 32 Bit - Greatest Audiophile Collection - Natural Beat Records
_https://rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf/Best Audiophile Vocal 24 bit - Hi-Res Music 2025 - Audiophile Voices
_https://www.youtube.com/watch?v=uO6jfQ5tQHM
_https://youtu.be/uO6jfQ5tQHM$ youtube-dl -F "https://youtu.be/uO6jfQ5tQHM" | grep "audio only" 249 webm audio only audio_quality_low 54k , webm_dash container, opus (48000Hz), 30.39MiB 250 webm audio only audio_quality_low 71k , webm_dash container, opus (48000Hz), 39.87MiB 140 m4a audio only audio_quality_medium 129k , m4a_dash container, mp4a.40.2 (44100Hz), 72.39MiB 251 webm audio only audio_quality_medium 137k , webm_dash container, opus (48000Hz), 76.97MiB
$ firefox 2>&1 youtube.com/watch?v=uO6jfQ5tQHM
Input: 44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.
Input: 44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.
Input: 48000 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1920
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 48000 --> 48000 (J: 0.00%, T: None, W: Planar)
Ok.
Input: 44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.$ firefox 2>&1 rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf
Input: 44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.The same is for PreferredSampleRate = 44100
It does not change Firefox's playback with ALSA.
You may test it with apulse
apulse firefox 2>&1What has changed is that you can now see Preferred Sample Rate 48000 in about:support
The statement "The deaf may try a blind test. The blind may try a deaf test" is a philosophical observation about perspective, not a literal one. It points to the idea that people with different life experiences and challenges can gain new understanding by experiencing things from another's point of view.
Media: View and debug media players information
_https://developer.chrome.com/docs/devtools/media-panel
Chromium: chrome://media-internals
Brave: brave://media-internals
Brave is a great browser. It has a resampler inside, a sort of low quality linear interpolation, perhaps, because it is faster than "medium crap".
The brave://media-internals page is an official debugging tool
1. Open a new tab and navigate to brave://media-internals
2. Start playing an audio or video source in another tab.
3. Go back to media-internals and click on the player entry for your media.
4. Examine the kAudioTracks, etc.
NOTE: In YouTube and RuTube, "Hi-Res Music" means a sort of low quality mp3 (e.g., mp4a.40.2).
Reference media files:
Hi-Res Music 32 Bit - Greatest Audiophile Collection - Natural Beat Records
_https://rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf/Best Audiophile Vocal 24 bit - Hi-Res Music 2025 - Audiophile Voices
_https://www.youtube.com/watch?v=uO6jfQ5tQHM
_https://youtu.be/uO6jfQ5tQHM$ youtube-dl -F "https://youtu.be/uO6jfQ5tQHM" | grep "audio only" 249 webm audio only audio_quality_low 54k , webm_dash container, opus (48000Hz), 30.39MiB 250 webm audio only audio_quality_low 71k , webm_dash container, opus (48000Hz), 39.87MiB 140 m4a audio only audio_quality_medium 129k , m4a_dash container, mp4a.40.2 (44100Hz), 72.39MiB 251 webm audio only audio_quality_medium 137k , webm_dash container, opus (48000Hz), 76.97MiB
RuTube: Hi-Res Music 32 Bit - Greatest Audiophile Collection - Natural Beat Records
brave://media-internals
kFrameTitle "Hi-Res Music 32 Bit - Greatest Audiophile Collection - Natural Beat Records"
kFrameUrl "https://rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf/"kAudioTracks
[
{
"bytes per channel": 2,
"bytes per frame": 4,
"channel layout": "STEREO",
"channels": 2,
"codec": "aac",
"codec delay": 0,
"discard decoder delay": false,
"encryption scheme": "Unencrypted",
"has extra data": true,
"profile": "unknown",
"sample format": "Signed 16-bit",
"samples per second": 44100,
"seek preroll": "0us"
}
]"Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: STEREO, channels: 2, samples_per_second: 44100, sample_format: Signed 16-bit, bytes_per_frame: 4, seek_preroll: 0us, codec_delay: 0, has extra data: true, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format"[ALSA] Brave is upsampling (44100 → 48000 Hz) this particular "Hi-Res Music" of RuTube.
$ brave-browser-stable 2>&1 --audio-buffer-size=8192 rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf
Input: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 48000 --> 48000 (J: 0.00%, T: None, W: Planar)
Ok.[apulse] Brave is not resampling (44100 → 44100 Hz) this particular "Hi-Res Music" of RuTube.
$ apulse brave-browser-stable 2>&1 rutube.ru/video/b54c962301787eb1f2758ac8ba97f5bf
Input: 44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.YouTube: Best Audiophile Vocal 24 bit - Hi-Res Music 2025 - Audiophile Voices
brave://media-internals
kFrameTitle "YouTube"
kFrameUrl "https://www.youtube.com/watch?v=uO6jfQ5tQHM"kAudioDecoderName "FFmpegAudioDecoder"
kAudioTracks
[
{
"bytes per channel": 4,
"bytes per frame": 8,
"channel layout": "STEREO",
"channels": 2,
"codec": "opus",
"codec delay": 312,
"discard decoder delay": true,
"encryption scheme": "Unencrypted",
"has extra data": true,
"profile": "unknown",
"sample format": "Float 32-bit",
"samples per second": 48000,
"seek preroll": "80000us"
}
]"Selected FFmpegAudioDecoder for audio decoding, config: codec: opus, profile: unknown, bytes_per_channel: 4, channel_layout: STEREO, channels: 2, samples_per_second: 48000, sample_format: Float 32-bit, bytes_per_frame: 8, seek_preroll: 80000us, codec_delay: 312, has extra data: true, encryption scheme: Unencrypted, discard decoder delay: true, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format"[ALSA] Brave is not resampling (48000 → 48000 Hz) "Hi-Res Music" of YouTube.
$ brave-browser-stable 2>&1 --audio-buffer-size=8192 youtube.com/watch?v=uO6jfQ5tQHM
Input: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 48000 --> 48000 (J: 0.00%, T: None, W: Planar)
Ok.[apulse] Brave is downsampling (48000 → 44100 Hz) "Hi-Res Music" of YouTube.
$ apulse brave-browser-stable 2>&1 youtube.com/watch?v=uO6jfQ5tQHM
Input: 44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.brave://media-internals
kFrameUrl "https://www.youtube.com/watch?v=uO6jfQ5tQHM"
kFrameTitle "Best Audiophile Vocal 24 bit - Hi-Res Music 2025 - Audiophile Voices - YouTube"kAudioTracks
[
{
"bytes per channel": 4,
"bytes per frame": 8,
"channel layout": "STEREO",
"channels": 2,
"codec": "opus",
"codec delay": 312,
"discard decoder delay": true,
"encryption scheme": "Unencrypted",
"has extra data": true,
"profile": "unknown",
"sample format": "Float 32-bit",
"samples per second": 48000,
"seek preroll": "80000us"
}
]"Selected FFmpegAudioDecoder for audio decoding, config: codec: opus, profile: unknown, bytes_per_channel: 4, channel_layout: STEREO, channels: 2, samples_per_second: 48000, sample_format: Float 32-bit, bytes_per_frame: 8, seek_preroll: 80000us, codec_delay: 312, has extra data: true, encryption scheme: Unencrypted, discard decoder delay: true, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format"CONCLUSION: Chromium developers are certainly deaf.
Try Speedometer with Brave browser
Audacious and Audacity are different applications, despite their similar names. Audacious is a lightweight and versatile audio player designed for POSIX-compatible Unix-like operating systems, with limited support for Microsoft Windows, and it is known for its support of Winamp skins and a media library. It began as a fork of Beep Media Player, which itself is a fork of XMMS.
On the other hand, Audacity is an audio editor used for recording, editing, and producing audio files, supporting a wide range of audio formats and offering features like noise reduction and time-stretching.
While both are free and open-source software with similar licensing (GNU General Public License v3.0 or later), they serve distinct purposes: Audacious for playback and Audacity for audio editing.
The confusion between the two is common, but they are separate projects with different development histories and functionalities.
There are many reasons to compile Audacious.
Most important, you can learn how to compile and make Debian packages.
You can also learn how to calculate dependencies.
You can compile Audacious (and plugins) with meson and ninja
1. Setup the build system
arch-meson audacious build2. Compile
meson compile -C build3. Install to debdir
meson install -C build --destdir "$(dirname $(pwd))"/debdir
Ninja is almost invisible, as the name suggest. For example:
$ meson compile -C build
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /usr/bin/ninja -C /home/.../Audacious-git/Builds/build
ninja: Entering directory `/home/.../Audacious-git/Builds/build'
[171/171] Linking target src/audacious/audacious$ cat arch-meson
#!/bin/bash -ex
# Meson wrapper for Arch Linux packaging
exec meson setup \
--prefix /usr \
--libdir /usr/lib \
--libexecdir /usr/lib \
--bindir /usr/bin \
--sbindir /usr/bin \
--includedir /usr/include \
--datadir /usr/share \
--mandir /usr/share/man \
--infodir /usr/share/info \
--localedir /usr/share/locale \
--sysconfdir /etc \
--localstatedir /var \
--sharedstatedir /var/lib \
--buildtype release \
--wrap-mode nofallback \
"$@" \
-D b_lto=true
How to compile Audacious
_https://dev1galaxy.org/viewtopic.php?id=7214
Portable Ninja is available here:
_https://github.com/ninja-build/ninja
Portable Meson is available here:
_https://github.com/mesonbuild/meson
arch-meson is available here:
_https://aur.archlinux.org/cgit/aur.git/snapshot/meson-git.tar.gz
What do mean by "performance-hit"?
about:processes Task Manager - see whether tabs or extensions are slowing down Firefox
_https://support.mozilla.org/en-US/kb/task-manager-tabs-or-extensions-are-slowing-firefox
apulse firefoxapulse is not needed because your Firefox does not have "pulse-rust" backend.
It does not make any harm, but you may better remove it from your Firefox launcher.
$ file /usr/bin/firefox-nightly
/usr/bin/firefox-nightly: symbolic link to /usr/lib/firefox-nightly/firefox-nightlyfound the .debdir instruictions fuzzy, so just went a lazy way...
Try to improve them. Compile Audacious, and write a manual for Devuan wiki.
Now you can install it to "debdir"
DESTDIR="$(dirname $(pwd))"/debdir ./mach installand create a Debian package for Firefox Nightly
The manual is here:
_https://dev1galaxy.org/viewtopic.php?pid=58648#p58648
Desktop launcher for Firefox Nightly:
$ cat ~/.local/share/applications/firefox-nightly.desktop
[Desktop Entry]
Name=Firefox Nightly Web Browser
Name[en_US]=Firefox Nightly Web Browser
Comment=Browse the World Wide Web
GenericName=Web Browser
X-GNOME-FullName=Firefox Nightly Web Browser
Exec=/usr/lib/firefox-nightly/firefox-nightly %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=firefox-nightly
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;
StartupWMClass=firefox-nightly
StartupNotify=true
Actions=new-window;new-private-window;open-profile-manager;
Keywords=Internet;WWW;Browser;Web;Explorer;
[Desktop Action new-window]
Exec=/usr/lib/firefox-nightly/firefox --new-window %u
Name=New Window
Name[en_US]=New Window
[Desktop Action new-private-window]
Exec=/usr/lib/firefox-nightly/firefox --private-window %u
Name=New Private Window
Name[en_US]=New Private Window
[Desktop Action open-profile-manager]
Exec=/usr/lib/firefox-nightly/firefox --ProfileManager
Name=Open Profile Manager
Name[en_US]=Open Profile ManagerThe Last Cargo Cult Interviews
_https://www.youtube.com/watch?v=YB-26XqDZj8
_https://youtu.be/YB-26XqDZj8Dec 3, 2009
In THE LAST CARGO CULT, groundbreaking monologist Mike Daisey (If You See Something Say Something) returns to The Public with the story of his journey to a remote South Pacific island whose people worship America and its cargo. This narrative is woven against a searing examination of the international financial crisis that gripped the globe at the same moment. Confronting the financial system that dominates our world, Daisey wrestles with the largest questions of what the collapse means, and what it can tell us about our deepest values. Part adventure story and part memoir, he explores each culture to unearth a human truth between the seemingly primitive and achingly modern.
Native cargo cultists could easily imagine cargo planes because they had witnessed the arrival of real military aircraft during World War II, which delivered supplies and goods seemingly from the sky.
It should not be difficult, therefore, to imagine a Devuan wiki with all the knowledge you need.
Native cargo cultists typically obtain their knowledge of "the true secret of cargo" through dreams or visions, which are considered revelations from ancestral spirits or deities. These prophetic experiences are central to the formation of cargo cults, as a charismatic leader often claims to have received a vision or "myth-dream" that foretells the return of ancestors or a messianic figure who will bring abundant goods... The dream or vision legitimizes the leader's authority and serves as the foundation for the movement's rituals and expectations.
You may also try to read a secret Devuan wiki in your dreams.
This was wrong:
export MOZBUILD_STATE_PATH=/home/rich/mumuIt was not needed.
SCCache can save you a lot of timeSCCache is a trouble maker!!!
22:00.44 W Overall system resources - Wall time: 1320s; CPU: 62%; Read bytes: 12904594432; Write bytes: 30568136704; Read time: 37744; Write time: 1436320
22:00.44 W Swap in/out (MB): 0.65234375/0.77734375Wall time: 1320s;Firefox was built in 22 minutes.
Check about:support
It should show:
Application Basics
Name Firefox Nightly
Version 146.0a1
...
Media
Audio Backend alsawith apulse and without apulse
apulse ./mach run./mach runWhen it is built with ALSA, you should see on terminal (configure stage) something like this:
1:14.72 checking for alsa... yes
1:14.72 checking MOZ_ALSA_CFLAGS... -I/home/rich/mumu/sysroot-x86_64-linux-gnu/usr/include -I/home/rich/mumu/sysroot-x86_64-linux-gnu/usr/include/alsa
1:14.72 checking MOZ_ALSA_LIBS... -L/home/rich/mumu/sysroot-x86_64-linux-gnu/usr/lib/x86_64-linux-gnu -lasound 1:14.74 checking for rustc... /home/rich/.cargo/bin/rustc
1:14.74 checking for cargo... /home/rich/.cargo/bin/cargo
1:16.25 Actually using '/home/rich/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/rustc'
1:16.69 Actually using '/home/rich/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo'
1:16.75 checking rustc version... 1.90.0
1:16.80 checking cargo version... 1.90.0Notice cargo and rustc
-----------------
Other options to try:
ac_add_options --enable-release
ac_add_options --disable-testsIt may fail on very old computers.
--disable-tests Do not build test libraries & programs
--enable-release Build with more conservative, release engineering-oriented options. This may slow down builds. We relish talking about cargo cults because we can imagine ourselves as cargo cultists. Besides, the fact that we are the real cargo cultists is no longer latent or suppressed. Nowadays, so we say, we find that the cargo cult more and more is erupting in the West.
Lamont Lindstrom, Cargo Cult: Strange Stories of Desire from Melanesia and Beyond, 1993.
_https://www.jstor.org/stable/j.ctv9zcktq
Add mate-sensors-applet to panel, and watch processor temperature
_https://help.ubuntu.com/community/SensorInstallHowto#sensors-applet
EDIT:
A manual for Ubuntu newbies is available here:
Building Firefox On Linux
_https://firefox-source-docs.mozilla.org/setup/linux_build.htmlTo fix problems, you can simply re-bootstrap
cd firefox # cd sourcedir ./mach bootstrapIt will open a dialogue:
Please choose the version of Firefox you want to build (see note above): 1. Firefox for Desktop Artifact Mode [default] 2. Firefox for Desktop 3. GeckoView/Firefox for Android Artifact Mode 4. GeckoView/Firefox for Android 5. SpiderMonkey JavaScript engine Your choice: 2and you can choose 2. Firefox for Desktop
Create .mozconfig
➤ cat firefox/.mozconfig # The default mozconfig is located here: sourcedir/browser/config/mozconfig # It specifies the build flags for Firefox. # You can use it by adding: # . $topsrcdir/browser/config/mozconfig # to the top of your own sourcedir/.mozconfig file. . $topsrcdir/browser/config/mozconfig # Restrict the number of parallel jobs to reduce the chance of build failure # For old computers -j2 of j3, for new ones -j10 mk_add_options MOZ_MAKE_FLAGS=-j4 mk_add_options MOZ_OBJDIR="$(dirname $topsrcdir)"/build_dir mk_add_options MOZ_APP_DISPLAYNAME="Firefox Nightly" mk_add_options MOZ_SIMPLE_PACKAGE_NAME=firefox-nightly ac_add_options --with-app-basename="Firefox Nightly" ac_add_options --with-app-name=firefox-nightly ac_add_options --prefix=/usr ac_add_options --enable-audio-backends=alsaThen, you may try to build
cd firefox # cd sourcedir git pull # update source code export LDFLAGS+=" -Wl,--no-keep-memory" # to reduce the chance of build failure during linking due to running out of memory ./mach build -v --priority normalTest
./mach runIt should open your Firefox Nightly. If it works, install it to a folder debdir
DESTDIR="$(dirname $(pwd))"/debdir ./mach installand create a Debian package for it. A detailed step by step manual "how to create a Debian package of debdir" is here:
_https://dev1galaxy.org/viewtopic.php?id=7214Firefox Nightly is quasi portable. You can make a Debian package for Firefox Nightly on Devuan and install it on Linux Mint (and other way round).
You can build the fftrate Debian packages on Devuan, or Linux Mint, or Ubuntu, and install them on other Debian based distros.
But the Raspberry Pi is based on the ARM architecture, you may try to build the fftrate plugin on Raspberry Pi.
@kapqa
You installed the wrong thing, because ...<censored>
because you are always trying to minimize "thinking and making".
Just as muscles degrade from disuse, the brain also degrades if it is not stimulated or "trained". The brain is not a muscle, but it functions on a similar "use it or lose it" principle, where a lack of activity leads to a loss of function and neural pathways. Training the brain, like exercising the body, strengthens its neural connections, improving cognitive function and protecting against decline and progressive dementia.
Dementia is always progressive.
_https://firefox-source-docs.mozilla.org/setup/linux_build.html
Choosing a build type
If you aren’t modifying the Firefox backend, then select one of the Artifact Mode options.
You should select 2. Firefox for Desktop
Note on Artifact Mode:
Artifact builds download prebuilt C++ components rather than building
them locally. Artifact builds are faster!
Artifact builds are recommended for people working on Firefox or
Firefox for Android frontends, or the GeckoView Java API. They are unsuitable
for those working on C++ code. For more information see:
https://firefox-source-docs.mozilla.org/contributing/build/artifact_builds.html.
Please choose the version of Firefox you want to build (see note above):
1. Firefox for Desktop Artifact Mode [default]
2. Firefox for Desktop
3. GeckoView/Firefox for Android Artifact Mode
4. GeckoView/Firefox for Android
5. SpiderMonkey JavaScript engine
Your choice: 2 You have to start from the very beginning
1. Create a new folder
2. Download bootstrap.py
and so on
_https://firefox-source-docs.mozilla.org/setup/linux_build.html
2. Bootstrap a copy of the Firefox source codeNow that your system is ready, we can download the source code and have Firefox automatically download the other dependencies it needs. The below command will download a lot of data (years of Firefox history!) then guide you through the interactive setup process.
curl -LO https://raw.githubusercontent.com/mozilla-firefox/firefox/refs/heads/main/python/mozboot/bin/bootstrap.py python3 bootstrap.py
Edit:
It is very probable that the same pre-built Artifact will be automatically downloaded.
The easiest way to fix the problem is to remove your Ubuntu together with KDE and pipewire
Is it so difficult to save a copy of terminal output?
The following directory will be created:
/home/rich/.mozbuild
If you would like to use a different directory, rename or move it to your
desired location, and set the MOZBUILD_STATE_PATH environment variable
accordingly.You may also try to remove /home/rich/.mozbuild and set the MOZBUILD_STATE_PATH environment variable
export MOZBUILD_STATE_PATH=/home/rich/mumu./mach run --version 0:00.13 /home/rich/Programs/firefox/objdir-frontend/dist/bin/firefox --version -profile /home/rich/Programs/firefox/objdir-frontend/tmp/profile-default [73542] Sandbox: CanCreateUserNamespace() unshare(CLONE_NEWPID): EPERM Mozilla Firefox 146.0a1
Ubuntu blocks UserNamespace by default with AppArmor unless specific binary is in allowlist.
_https://bugzilla.mozilla.org/show_bug.cgi?id=1981001
It is Ubuntu specific. I do not have such Sandbox messages on Devuan.
Why do you need Ubuntu, if you can install Devuan? Are you a masochist?
To add a binary to the AppArmor allowlist, you need to create or modify an AppArmor profile for that binary, specifying the necessary permissions. This typically involves editing the profile file located in /etc/apparmor.d/ and adding the appropriate rules, then reloading the AppArmor profiles with sudo systemctl reload apparmor.
One may enjoy this sort of masochism. It seems very promising.
./mach run --version 0:00.13 /home/rich/Programs/firefox/objdir-frontend/dist/bin/firefox --version -profile /home/rich/Programs/firefox/objdir-frontend/tmp/profile-default
This means:
sourcedir - firefox
builddir - firefox/objdir-frontend
To create mozconfig, run
mousepad /home/rich/Programs/firefox/.mozconfigCopy and past:
# file: .mozconfig (in sourcedir)
# For old computers -j2 or -j3
# If you need it, uncomment the following line
# mk_add_options MOZ_MAKE_FLAGS=-j3
# Rename Firefox to "Firefox Nightly"
mk_add_options MOZ_APP_DISPLAYNAME="Firefox Nightly"
mk_add_options MOZ_SIMPLE_PACKAGE_NAME=firefox-nightly
ac_add_options --with-app-basename="Firefox Nightly"
ac_add_options --enable-project=browser
ac_add_options --with-app-name=firefox-nightly
ac_add_options --prefix=/usr
# Enable ALSA instead of "pulse-rust"
ac_add_options --enable-audio-backends=alsaand save it.
cd to sourcedir
cd /home/rich/Programs/firefox Export the LDFLAGS+
export LDFLAGS+=" -Wl,--no-keep-memory"Build Firefox
./mach build -v --priority normalTest
./mach run If it works, install it to a folder debdir
DESTDIR="$(dirname $(pwd))"/debdir ./mach installIt will be installed into the folder /home/rich/Programs/debdir
The firefox-nightly binary (executable) will be inside the folder
debdir/usr/lib/firefox-nightly/
Test run
/home/rich/Programs/debdir/usr/lib/firefox-nightly/firefox-nightly/home/rich/Programs/debdir/usr/lib/firefox-nightly/firefox-nightly --versionIf it works, you can make a Debian package of debdir.
A detailed step by step manual "how to create a Debian package of debdir" is here:
_https://dev1galaxy.org/viewtopic.php?id=7214
Is it your build of Firefox? If it is your build it is a success.
Although there are still some minor problems to fix.
Mozilla Firefox 146.0a1 was compiled with default configuration, that is, with pulseaudio and without ALSA.
the "pulse-rust" would persist, even after inserting "media.cubeb.backend alsa"
"pulse-rust" persists simply because ALSA backend is not available - your Firefox was compiled without ALSA backend.
The next step is create "mozconfig" and recompile Firefox.
To use apulse without problems, you have to install and configure the fftrate plugin.
Read the output of your terminal:
$ apulse ./mach run
ALSA lib pcm_dmix.c:1000:(snd_pcm_dmix_open) unable to open slave
[apulse] [error] do_connect_pcm: failed to open ALSA device. Apulse does no resampling or format conversion, leaving that task to ALSA plugins. Ensure that selected device is capable of playing a particular sample format at a particular rate. They have to be supported by either hardware directly, or by "plug" and "dmix" ALSA plugins which will perform required conversions on CPU.
ALSA lib pcm_dsnoop.c:567:(snd_pcm_dsnoop_open) unable to open slaveThis means that you have to create ALSA config with arateconf.
Another option is to compile Firefox with ALSA and without pulseaudio (without "pulse-rust").
In this case, you can use Firefox without apulse.
But a simple ALSA config might be needed (default pcm, etc.) You have already tried such ALSA configs for your RaspberryPI.
It is not mandatory to uninstall pipewire/pulse, but it is advisable.
KDE depends on pipewire. Why not remove them both together with Ubuntu?
I will post a detailed instruction for Firefox with "mozconfig".
In Rust We Trust?!?!
This repo implemented a working Spectre V1 for the Rust language. Using our Spectre V1 transient execution attack, the attack code is able to force a bounds-checked Rust array variable access to read any byte in the Rust application's memory. This attack should be of interest to Rust developers, since Rust is a memory-safe language, and this attack performs an arbitrary buffer overread, thereby demonstrating a vulnerability in Rusts' ability to stop memory access errors.
_https://github.com/toddmaustin/spectre-rust
$ firefox --version
Mozilla Firefox 140.3.1esrNOTE: In "Firefox ESR," ESR stands for Extended Support Release. Debian's Firefox has an "extended support" largely because, perhaps, Debian source packages of Firefox are a sort of broken. They have unsatisfiable build dependencies. While Firefox ESR is supposed to receive crucial security and stability updates, it doesn't get the new feature updates. It is only beginning of troubles, of course.
The phrase "A spectre is haunting Linux - the spectre of Rust" is a play on the opening line of The Communist Manifesto, using the "spectre of Rust" to describe the growing but controversial integration of the Rust programming language into the Linux kernel. This "haunting" refers to the significant debate and resistance among some kernel developers regarding the introduction of a new language, not just Rust itself, which they fear will complicate maintenance, increase the burden on developers, and potentially fragment the codebase. The controversy stems from concerns about the long-term maintainability of a multi-language project and resistance to replacing or modifying core components written in C...
The phrase highlights the tension between the Rust-for-Linux initiative and established kernel maintainers who prefer to keep the kernel primarily in C for maintainability and searchability, particularly in core subsystems like DMA.
Rust's integration into the kernel is happening gradually, with foundational support merged in Linux 6.1 and projects like the uutils (command-line utilities) being rewritten in Rust as potential drop-in replacements for C-based versions.
Rust for Linux
Rust for Linux is the project adding support for the Rust language to the Linux kernel.
_https://rust-for-linux.com/
"Hmm, this sounds familiar...", a sort of new cargo cult, perhaps (think of pulseaudo, systemd, etc.). It seems that they are going to integrate a sort of pulseaudio into the Linux kernel.
Firefox ESR (Devuan/Debian) has both ALSA and pulse-rust backends.
The pulse-rust backend can be disabled in the "hidden preferences" of Firefox.
Configuration Editor for Firefox
_https://support.mozilla.org/en-US/kb/about-config-editor-firefox
1. Run Firefox with apulse
apulse firefox2. Type about:support in the address bar
Application Basics
Name Firefox
Version 140.3.1esr
...
Media
Audio Backend pulse-rust3. Open new tab
Type about:config in the address bar
Type into "Search preference name"
media.cubeb.backendSelect "string"
Press "+"
Type "alsa" then Enter
As a result, you have a new entry in Firefox's "hidden preferences"
media.cubeb.backend alsaQuit Firefox and start it again with apulse
apulse firefoxType about:support in the address bar, and you will see alsa backend instead of pulse-rust
Application Basics
Name Firefox
Version 140.3.1esr
Build ID 20250922173505
...
Media
Audio Backend alsaIf you do not suffer from dementia, try to compile the newest version of Firefox without pulseaudio. It is not difficult. A manual for Ubuntu newbies is available here:
_https://firefox-source-docs.mozilla.org/setup/linux_build.html
ac_add_options --enable-audio-backends=alsa$ firefox-nightly --version
Mozilla Firefox Nightly 146.0a1Do you have compiled packages of fftrate plugin?
On RaspberryPi, run command
file /usr/bin/aplayand post the output here.
EDIT: but maybe this apulse is needed for kernel so that alsa can play several streams at the same time=?
apulse is not needed for kernel.
apulse is needed for you, if you want to use media applications which do not have ALSA backend.
ALSA is mixing streams in the user space, not in the kernel.
ALSA needs the fftrate plugin configured correctly to be able to play several streams at the same time with normal sound quality.
$ arateconf
...
A - Show all plugins [ ]
M - Plug-ins:
[X] Convert, [ ] Expand, [X] Asym
[ ] Play Vol, [X] Dmix
[ ] Rec. Vol, [X] Dsnoop
[ ] Phonon, [ ] NormalizatorSee: _https://dev1galaxy.org/viewtopic.php?id=6644
A talent for creating credible myths involves blending familiar elements with fantastical ones to explain real-world phenomena...
A credible myth connects a familiar, real-world fact with a magical or fantastical reason for its existence.
If you have a talent, use it to develop your potential and take action. Start by understanding your own strengths and then consistently practice and apply your talent in every way possible, even by using the underlying qualities of your talent in other areas of your life. Remember that action is what matters, so begin before you feel completely ready to achieve results.
_https://searchfox.org/firefox-main/source/dom/media/AudioConverter.cpp
#include "AudioConverter.h" #include <speex/speex_resampler.h>
Open the Firefox browser.
Type about:support into the address bar and press Enter.
The page will load, showing a detailed report of your Firefox setup.
To change the "Preferred Sample Rate" in about:support, you have to edit the source code with a text editor and recompile Firefox. For example:
_https://searchfox.org/firefox-main/source/dom/media/CubebUtils.cpp
$ cat firefox/dom/media/CubebUtils.cpp | grep PreferredSampleRate\(bool -A15
uint32_t PreferredSampleRate(bool aShouldResistFingerprinting) {
StaticMutexAutoLock lock(sMutex);
// if (sCubebForcedSampleRate) {
// return sCubebForcedSampleRate;
// }
// if (aShouldResistFingerprinting) {
// return 44100;
// }
// if (!InitPreferredSampleRate()) {
// return 44100;
// }
// MOZ_ASSERT(sPreferredSampleRate);
// return sPreferredSampleRate;
return 48000;
}If you are not a masochist, you may better stay with MATE desktop.
Do not remove apulse! It is needed to run applications which do not have ALSA backend. For example:
apulse discord_https://github.com/i-rinat/apulse
apulse: PulseAudio emulation for ALSA.The program provides an alternative partial implementation of the PulseAudio API. It consists of a loader script and a number of shared libraries with the same names as from original PulseAudio, so applications could dynamically load them and think they are talking to PulseAudio. Internally, no separate sound mixing daemon is used. Instead, apulse relies on ALSA's dmix, dsnoop, and plug plugins to handle multiple sound sources and capture streams running at the same time. dmix plugin muxes multiple playback streams; dsnoop plugin allow multiple applications to capture from a single microphone; and plug plugin transparently converts audio between various sample formats, sample rates and channel numbers. For more than a decade now, ALSA comes with these plugins enabled and configured by default.
apulse wasn't designed to be a drop-in replacement of PulseAudio. It's pointless, since that will be just reimplementation of original PulseAudio, with the same client-daemon architecture, required by the complete feature set. Instead, only parts of the API that are crucial to specific applications are implemented. That's why there is a loader script, named apulse. It updates value of LD_LIBRARY_PATH environment variable to point also to the directory where apulse's libraries are installed, making them available to the application.
Name comes from names of both ALSA and PulseAudio. As aoss was a compatibility layer between OSS programs and ALSA, apulse was designed to be compatibility layer between PulseAudio applications and ALSA.
apulse relies on ALSA's dmix, dsnoop, and plug plugins to handle multiple sound sources and capture streams running at the same time.
It means that you should also install the fftrate ALSA plugin and configure it correctly
_https://dev1galaxy.org/viewtopic.php?id=6644
$ arateconf
...
A - Show all plugins [ ]
M - Plug-ins:
[X] Convert, [ ] Expand, [X] Asym
[ ] Play Vol, [X] Dmix
[ ] Rec. Vol, [X] Dsnoop
[ ] Phonon, [ ] NormalizatorI do not use Bluetooth headphones, because of low sound quality. But they can be used with ALSA.
You may post your theory about "Bluetooth and health hazard" to "Off-topic" forum. It might be interesting to discuss.
think it is based on MATE but could be wrong
Post here the output of these commands:
inxi -Axxxinxi -Sxxxecho $XDG_CURRENT_DESKTOPFor example:
inxi -Sxxx
System:
Host: devuan Kernel: 6.1.0-40-amd64 arch: x86_64 bits: 64 compiler: gcc
v: 12.2.0 Desktop: MATE v: 1.26.0 info: mate-panel wm: marco v: 1.26.1 vt: 7
dm: LightDM v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)$ inxi -S
System:
Host: devuan Kernel: 6.1.0-40-amd64 arch: x86_64 bits: 64 Desktop: MATE
v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)$ echo $XDG_CURRENT_DESKTOP
MATEIt does work on the latest Linux Mint MATE.
Pipewire was removed without problems.
The fftrate ALSA plugin was installed and configured without any problems.
BlueALSA also works on Linux Mint MATE
_https://dev1galaxy.org/viewtopic.php?pid=56780#p56780
and the script to toggle ALSA configs also works without problems.
_https://dev1galaxy.org/viewtopic.php?pid=57177#p57177
Bluetooth headphones: Bowers & Wilkins PX7 S2e
Install Devuan MATE on your RaspberryPi and start a new topic.
It is not difficult to remove pipewire from Linux Mint.
Run
dpkg -l | grep pipewireRemove pipewire-alsa, pipewire-audio, wireplumber and other pipewire packages TOGETHER with other crap
sudo apt-get purge pulseaudio pulseaudio-utils pavucontrol pulseaudio-module-bluetooth pipewire pipewire-bin pipewire-pulse pipewire-alsa pipewire-audio wireplumberIt does work on Linux Mint MATE.
It was tested by Linux Mint users.
It should also work on RaspiOS.
tried with RaspiOS latest /(based on Trixie) and it would lead to broken Desktop/Black Screen and just cursor moving
If KDE depends on PipeWire, remove KDE and install MATE.
...modern versions of KDE, especially the underlying components, have a strong dependency on PipeWire for its audio server... While it may still be possible to run KDE with PulseAudio, newer versions of core components like KWin have made PipeWire (specifically the pipewire-session-manager, which is provided by wireplumber) a direct dependency
The problem is that you create myths about problems instead of thinking how to solve them.
Nobody else had problems with arateconf since 2010.
Try Firefox Nightly
_https://firefox-source-docs.mozilla.org/setup/linux_build.html
sudo apt update && sudo apt install curl python3 python3-pip git watchman# reduce chance of builds failung during linking due to running out of memory
export LDFLAGS+=" -Wl,--no-keep-memory"# .mozconfig
# For very old computers -j2
mk_add_options MOZ_MAKE_FLAGS=-j2
ac_add_options --enable-project=browser
ac_add_options --with-app-name=antifox
ac_add_options --prefix=/usr
ac_add_options --enable-audio-backends=alsa$ antifox --version
Mozilla Firefox 145.0a1This one works without problems:
youtube-dl nightly builds
_https://github.com/ytdl-org/ytdl-nightly
What is wrong with youtube-dl?
$ youtube --version
2025.09.29$ apt-cache search python-is-
python-is-python3 - symlinks /usr/bin/python to python3Resampling in Firefox is easy to disable:
$ cat firefox/dom/media/VideoUtils.cpp | grep DecideAudioPlaybackSampleRate -A27
uint32_t DecideAudioPlaybackSampleRate(const AudioInfo& aInfo,
bool aShouldResistFingerprinting) {
// bool resampling = StaticPrefs::media_resampling_enabled();
// uint32_t rate = 0;
// if (resampling) {
// rate = 48000;
// } else if (aInfo.mRate >= 44100) {
// // The original rate is of good quality and we want to minimize unecessary
// // resampling, so we let cubeb decide how to resample (if needed). Cap to
// // 384kHz for good measure.
// rate = std::min<unsigned>(aInfo.mRate, 384000u);
// } else {
// // We will resample all data to match cubeb's preferred sampling rate.
// rate = CubebUtils::PreferredSampleRate(aShouldResistFingerprinting);
// if (rate > 768000) {
// // bogus rate, fall back to something else;
// rate = 48000;
// }
// }
// MOZ_DIAGNOSTIC_ASSERT(rate, "output rate can't be 0.");
// return rate;
return aInfo.mRate;
}Firefox is easy to compile.
What is special about Chromium is that it has many resamplers inside:
[BUG] WebAudio always resampling to the output device sample rate, even if a different one is specified.
_https://issues.chromium.org/issues/40944208
Is it so difficult to configure ALSA?
ALSA - GenToo Wiki
_https://wiki.gentoo.org/wiki/ALSA#Configuration! Warning
Specifying numbers instead of names when multiple sound cards are used can result in device reordering across boots, which will prevent sound from working properly until the configuration file is edited to use the new number.
Resist Fingerprinting
How to tell if you have Resist Fingerprinting enabled, and if so, disable it
_https://support.mozilla.org/en-US/kb/resist-fingerprintingTo disable Resist Fingerprinting:
Type about:config in the address bar and press Enter.
A warning page may appear. Click Accept the Risk and Continue to go to the about:config page.
In the search bar at the top, search for privacy.resistFingerprinting.
A number of preferences will appear but see if either privacy.resistFingerprinting or privacy.resistFingerprinting.pbMode have a value of true.
To tell if an extension is controlling this preference, you can click toggle the value back to false and restart your browser. After restarting, visit about:config again, and see if the value has been returned to true.If it has been, you will need to determine which of your extensions is controlling the preference and disable or remove them. One way to do this is to disable the installed extensions one by one, and restart the browser, seeing if the preference is changed upon restarting Firefox. Please be aware that, in rare cases, multiple extensions might be setting the preference.
Resisting Fingerprinting: By returning a standard sample rate of 44100 Hz when aShouldResistFingerprinting is true, the function PreferredSampleRate helps maintain user privacy.
Fingerprinting: In the context of web technologies, fingerprinting refers to the technique of tracking users based on their device and browser characteristics. The aShouldResistFingerprinting parameter suggests a consideration for privacy in audio playback decisions.
$ cat firefox/dom/media/CubebUtils.cpp | grep PreferredSampleRate\(bool -A14
uint32_t PreferredSampleRate(bool aShouldResistFingerprinting) {
StaticMutexAutoLock lock(sMutex);
if (sCubebForcedSampleRate) {
return sCubebForcedSampleRate;
}
if (aShouldResistFingerprinting) {
return 44100;
}
if (!InitPreferredSampleRate()) {
return 44100;
}
MOZ_ASSERT(sPreferredSampleRate);
return sPreferredSampleRate;
}Absolute High Resolution Audio Test 32bit Floating Point
_https://youtu.be/v5swkCSvryE[info] Available formats for v5swkCSvryE: format code extension resolution note 249 webm audio only audio_quality_low 56k , webm_dash container, opus (48000Hz), 24.97MiB 250 webm audio only audio_quality_low 74k , webm_dash container, opus (48000Hz), 32.59MiB 140 m4a audio only audio_quality_medium 129k , m4a_dash container, mp4a.40.2 (44100Hz), 56.74MiB 251 webm audio only audio_quality_medium 142k , webm_dash container, opus (48000Hz), 62.52MiB ...140 m4a audio (44100Hz), 56.74MiB 251 webm audio (48000Hz), 62.52MiBThe PreferredSampleRate means exactly what it says - it's the sample rate that is preferred.
$ cat firefox/dom/media/VideoUtils.cpp | grep kSampleRate -A27
uint32_t DecideAudioPlaybackSampleRate(const AudioInfo& aInfo,
bool aShouldResistFingerprinting) {
bool resampling = StaticPrefs::media_resampling_enabled();
uint32_t rate = 0;
if (resampling) {
rate = 48000;
} else if (aInfo.mRate >= 44100) {
// The original rate is of good quality and we want to minimize unecessary
// resampling, so we let cubeb decide how to resample (if needed). Cap to
// 384kHz for good measure.
rate = std::min<unsigned>(aInfo.mRate, 384000u);
} else {
// We will resample all data to match cubeb's preferred sampling rate.
rate = CubebUtils::PreferredSampleRate(aShouldResistFingerprinting);
if (rate > 768000) {
// bogus rate, fall back to something else;
rate = 48000;
}
}
MOZ_DIAGNOSTIC_ASSERT(rate, "output rate can't be 0.");
return rate;
}Best Audiophile Vocal 24 bit - Hi-Res Music 2025 - Audiophile Voices
_https://youtu.be/uO6jfQ5tQHM
Absolute High Resolution Audio Test 32bit Floating Point
_https://youtu.be/v5swkCSvryE
Hi-Res audio 32 bit floating point. Drums, acoustic guitar, bass guitar, trumpet, sax, violin
_https://youtu.be/YIHN0XUK2i8
One bug report to rule them all
_https://dev1galaxy.org/viewtopic.php?pid=58194#p58194
_https://bugzilla.mozilla.org/show_bug.cgi?id=1400731
Open Bug 1400731 Opened 8 years ago Updated 2 years ago
sample rate in Firefox limited to 48KHzUser Agent: Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0
Build ID: 20170917100334Steps to reproduce:
When listen HiRes audio which have sample rate more than 48KHz browser uses 44.1KHz my DAC displayed it.
For reproduce you must use Hi-Fi Sublime+ subscription on service qobuz.
For example Grace album by Lizz Wright must played in 96KHz.
http://play.qobuz.com/album/0088807202871P.S. Also you needed pulseaudio 11.0 with enabled 'avoid-resampling' option.
More detail here: https://bugs.freedesktop.org/show_bug.cgi?id=57503Actual results:
Instead 96KHz browser used 44.1KHz.
Expected results:
Expected when played flac with sample rate 96KHz browser not limit sample rate
1. It is not difficult to disable resampling in Firefox.
2. Firefox is easy to compile.
the only source?
Have you already tried to compile anything on Devuan?