The officially official Devuan Forum!

You are not logged in.

#1 Freedom Hacks » How to debug Firefox to detect resampling » 2025-10-23 14:41:02

igorzwx
Replies: 0

Configuration Editor for Firefox
_https://support.mozilla.org/en-US/kb/about-config-editor-firefox

Firefox's hidden preferences
URL: about:config

media.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
YouTube with Firefox [ALSA only]
mkdir Cubeb_LOGs
cd Cubeb_LOGs
MOZ_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=1

CONCLUSION:
[ALSA only] Firefox does not resample anything, but it is switching between two available audio formats in YouTube.

RuTube with Firefox [ALSA only]
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

#2 Freedom Hacks » How to change PreferredSampleRate in Firefox's about:config » 2025-10-23 03:00:00

igorzwx
Replies: 0

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_rate
media.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_rate

Select "Number"
Press "+"
Type "48000", then Enter

You have a new entry in Firefox's "hidden preferences":

media.cubeb.force_sample_rate        48000

Restart Firefox. Type about:support in the address bar.

Name 	Firefox
Version 	140.4.0esr
...
Media
Audio Backend	alsa
Max Channels	10000
Preferred Sample Rate	48000
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
$ 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>&1

What 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.

#3 Freedom Hacks » How to debug crappy resamplers of Chromium and Brave » 2025-10-23 00:02:12

igorzwx
Replies: 0

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.

#4 Re: Freedom Hacks » How to disable pulse-rust backend in Firefox » 2025-10-20 21:39:32

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 build 

2. Compile

meson compile -C build

3. 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

#5 Re: Freedom Hacks » How to disable pulse-rust backend in Firefox » 2025-10-20 17:51:00

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 firefox

apulse 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-nightly
kapqa wrote:

found the .debdir instruictions fuzzy, so just went a lazy way...

Try to improve them. Compile Audacious, and write a manual for Devuan wiki.

#6 Re: Freedom Hacks » How to disable pulse-rust backend in Firefox » 2025-10-17 21:00:44

Now you can install it to "debdir"

DESTDIR="$(dirname $(pwd))"/debdir ./mach install

and 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 Manager

The Last Cargo Cult Interviews
_https://www.youtube.com/watch?v=YB-26XqDZj8
_https://youtu.be/YB-26XqDZj8

Dec 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.

#7 Re: Freedom Hacks » How to disable pulse-rust backend in Firefox » 2025-10-17 15:51:38

This was wrong:

export MOZBUILD_STATE_PATH=/home/rich/mumu

It was not needed.

SCCache can save you a lot of time

SCCache 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.77734375
Wall 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	alsa

with apulse and without apulse

apulse ./mach run
./mach run

When 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.0

Notice cargo and rustc

-----------------

Other options to try: 

ac_add_options --enable-release
ac_add_options --disable-tests

It 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

#8 Re: Freedom Hacks » How to disable pulse-rust backend in Firefox » 2025-10-17 14:59:37

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.html

To fix problems, you can simply re-bootstrap

cd firefox        # cd sourcedir
./mach bootstrap

It 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: 2 

and 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=alsa

Then, 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 normal

Test

./mach run 

It should open your Firefox Nightly. If it works, install it to a folder debdir

DESTDIR="$(dirname $(pwd))"/debdir ./mach install

and 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=7214

Firefox 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.

#9 Re: Freedom Hacks » How to disable pulse-rust backend in Firefox » 2025-10-17 14:02:56

@kapqa

Your build failed, because pre-built Artifacts are not supposed to be modified and recompiled.

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 code

Now 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

#10 Re: Freedom Hacks » How to disable pulse-rust backend in Firefox » 2025-10-17 01:41:05

kapqa wrote:
./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.

kapqa wrote:
./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/.mozconfig

Copy 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=alsa

and 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 normal

Test

./mach run 

If it works, install it to a folder debdir

DESTDIR="$(dirname $(pwd))"/debdir ./mach install

It 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 --version

If 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

#11 Re: Freedom Hacks » How to disable pulse-rust backend in Firefox » 2025-10-16 22:49:42

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.

kapqa wrote:

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 slave

This 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".

#12 Freedom Hacks » How to disable pulse-rust backend in Firefox » 2025-10-16 16:39:04

igorzwx
Replies: 17
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.1esr

NOTE: 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 firefox

2. Type about:support in the address bar

Application Basics
Name 	Firefox
Version 	140.3.1esr
...
Media
Audio Backend	pulse-rust

3. Open new tab

Type about:config in the address bar

Type into "Search preference name"

media.cubeb.backend

Select "string"
Press "+"
Type "alsa" then Enter

As a result, you have a new entry in Firefox's "hidden preferences"

media.cubeb.backend		alsa

Quit Firefox and start it again with apulse

apulse firefox

Type 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	alsa

If 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.0a1

#13 Re: Desktop and Multimedia » [SOLVED] (alsa) arateconf not saving properly » 2025-10-10 15:03:44

Do you have compiled packages of fftrate plugin?

On RaspberryPi,  run command

file /usr/bin/aplay

and post the output here.

#14 Re: Desktop and Multimedia » [SOLVED] (alsa) arateconf not saving properly » 2025-10-10 13:41:53

kapqa wrote:

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,   [ ] Normalizator

See: _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.

#15 Re: Freedom Hacks » How to disable resamplig in Firefox » 2025-10-10 13:32:06

_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;
}

#16 Re: Desktop and Multimedia » [SOLVED] (alsa) arateconf not saving properly » 2025-10-10 12:32:29

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,   [ ] Normalizator

I 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.

kapqa wrote:

think it is based on MATE but could be wrong

Post here the output of these commands:

inxi -Axxx
inxi -Sxxx
echo $XDG_CURRENT_DESKTOP

For 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
MATE

#17 Re: Desktop and Multimedia » [SOLVED] (alsa) arateconf not saving properly » 2025-10-09 13:46:14

It 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.

#18 Re: Desktop and Multimedia » [SOLVED] (alsa) arateconf not saving properly » 2025-10-08 21:42:51

It is not difficult to remove pipewire from Linux Mint.

Run

dpkg -l | grep pipewire

Remove 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 wireplumber

It does work on Linux Mint MATE.
It was tested by Linux Mint users.

It should also work on RaspiOS.

kapqa wrote:

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.

#19 Re: Installation » [SOLVED] Can't even install yt-dlp in Devuan 6, many things are broken » 2025-10-07 12:00:07

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.0a1

#20 Re: Installation » [SOLVED] Can't even install yt-dlp in Devuan 6, many things are broken » 2025-10-06 19:51:37

This one works without problems:

youtube-dl nightly builds
_https://github.com/ytdl-org/ytdl-nightly

#21 Re: Installation » [SOLVED] Can't even install yt-dlp in Devuan 6, many things are broken » 2025-10-06 18:42:45

What is wrong with youtube-dl?

$ youtube --version
2025.09.29
$ apt-cache search python-is-
python-is-python3 - symlinks /usr/bin/python to python3

#22 Freedom Hacks » How to disable resamplig in Firefox » 2025-10-06 17:20:59

igorzwx
Replies: 1

Resampling 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

#23 Re: Desktop and Multimedia » PA Volume Control defaults » 2025-10-04 16:34:26

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.

#24 Freedom Hacks » Firefox is playing crap to protect user privacy » 2025-10-04 16:32:31

igorzwx
Replies: 0

Resist Fingerprinting
How to tell if you have Resist Fingerprinting enabled, and if so, disable it
_https://support.mozilla.org/en-US/kb/resist-fingerprinting

To 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.52MiB

The 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 48KHz

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0
Build ID: 20170917100334

Steps 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/0088807202871

P.S. Also you needed pulseaudio 11.0 with enabled 'avoid-resampling' option.
More detail here: https://bugs.freedesktop.org/show_bug.cgi?id=57503

Actual 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.

#25 Re: Desktop and Multimedia » sayonara: undefined symbol in libsqlite.so » 2025-10-03 20:38:11

the only source?

Have you already tried to compile anything on Devuan?

Board footer

Forum Software