<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="https://dev1galaxy.org/extern.php?action=feed&amp;tid=7620&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[Dev1 Galaxy Forum / Chasing the Fox (Caccia alla volpe)]]></title>
		<link>https://dev1galaxy.org/viewtopic.php?id=7620</link>
		<description><![CDATA[The most recent posts in Chasing the Fox (Caccia alla volpe).]]></description>
		<lastBuildDate>Tue, 05 May 2026 14:17:10 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[Re: Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=63614#p63614</link>
			<description><![CDATA[<div class="quotebox"><cite>greenjeans wrote:</cite><blockquote><div><p>That would be a real service to the community</p></div></blockquote></div><p>A real service to the community might be to avoid annoying others with your comments and advice. Please do not post in my topics.</p><div class="quotebox"><blockquote><div><p>_https://en.wikipedia.org/wiki/Sndio<br /><strong>sndio</strong> is the software layer of the OpenBSD operating system that manages sound cards and MIDI ports. It provides an optional <strong>sound server</strong> and a documented application programming interface to access either the server or the audio and MIDI hardware in a uniform way.</p></div></blockquote></div><div class="quotebox"><blockquote><div><p>_https://man.openbsd.org/sndiod.8<br /><strong>BUGS</strong><br /><strong><span style="color: green">Resampling is low quality</span></strong>; down-sampling especially should be avoided when recording.</p><p>If -a off is used, sndiod creates sub-devices to expose first and then opens the audio hardware on demand. Technically, this allows sndiod to attempt to use one of the sub-devices it exposes as an audio device, creating a deadlock. There&#039;s nothing to prevent the user from shooting themselves in the foot by creating such a deadlock.</p></div></blockquote></div><p><strong>sndio</strong> might be perfectly suitable for semi-deaf and half-demented users.</p><p>If someone really needs <strong>sndio</strong>, he might consider forking it to integrate the fftrate resampler for higher-quality audio processing<br />_https://github.com/PetrovSE/fftrate</p><div class="quotebox"><blockquote><div><p>_https://man.openbsd.org/sndiod.8<br /><strong>BUGS</strong><br /><strong><span style="color: green">Resampling is low quality</span></strong>; down-sampling especially should be avoided when recording.</p></div></blockquote></div><p>Perhaps <strong>sndio</strong> developers engage in post-modern humor. Linux users are unlikely to notice a Monty Python situation where a &quot;bug&quot; is documented rather than fixed.</p><p>If you don’t get this kind of humor, think of post-truth, post-philosophy, and post-documentation. It’s a post-real world where absurdity is plainly documented — in man pages, wikis, and official notes — without irony. The joke isn’t hidden; it’s right there, labeled &quot;BUG&quot;. The word &quot;bug&quot; has become a post-word with a post-meaning: not a flaw to fix, but a punchline accepted as fact.</p><p>What is special about post-reality is that it can be consumed innocently — just like myth, it appears factual, not constructed. </p><div class="quotebox"><blockquote><div><p>The myth consumer takes the signification for a system of facts: myth is read as a factual system whereas it is but a semiological system.<br />Roland Barthes, <em>Myth Today.</em></p></div></blockquote></div>]]></description>
			<author><![CDATA[dummy@example.com (igorzwx)]]></author>
			<pubDate>Tue, 05 May 2026 14:17:10 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=63614#p63614</guid>
		</item>
		<item>
			<title><![CDATA[Re: Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=63613#p63613</link>
			<description><![CDATA[<p>Well chromium is not the only alternative browser. And speaking solely for myself i&#039;m not going to go through that mountain of instructions, but what I, and I think others, would be willing to do, is try out a re-packaged version of FF if you would create one, and test it and report back. That would be a real service to the community if you would do so.</p>]]></description>
			<author><![CDATA[dummy@example.com (greenjeans)]]></author>
			<pubDate>Tue, 05 May 2026 13:52:28 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=63613#p63613</guid>
		</item>
		<item>
			<title><![CDATA[Re: Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=63612#p63612</link>
			<description><![CDATA[<p>To get sndio working with Firefox (Cubeb) you have to build it with sndio support</p><div class="codebox"><pre><code># Install sndio development libraries  
sudo apt-get install libsndio-dev  
  
# Add to your mozconfig  
ac_add_options --enable-sndio 

# Alternatively, you may try to disable ALSA
ac_add_options --enable-audio-backends=sndio

# Firefox about:config
media.cubeb.backend      sndio</code></pre></div><div class="codebox"><pre><code>sndio Backend   cubeb_sndio.c:314-360

Dynamic library loading
Basic stream operations
48kHz preferred sample rate   cubeb_sndio.c:535-536
2048 frame minimum latency    cubeb_sndio.c:546-547</code></pre></div>]]></description>
			<author><![CDATA[dummy@example.com (igorzwx)]]></author>
			<pubDate>Tue, 05 May 2026 12:37:54 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=63612#p63612</guid>
		</item>
		<item>
			<title><![CDATA[Re: Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=63602#p63602</link>
			<description><![CDATA[<p>interesting, so what would you have to do to get it running with sndio?</p><p>I am very curious.</p><p>Also, what is required specifically to get it working on the above?</p><p>I am a bit confused</p>]]></description>
			<author><![CDATA[dummy@example.com (zapper)]]></author>
			<pubDate>Tue, 05 May 2026 03:13:41 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=63602#p63602</guid>
		</item>
		<item>
			<title><![CDATA[Re: Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=63599#p63599</link>
			<description><![CDATA[<div class="quotebox"><blockquote><div><p>[Because of epidemic of deafness] Sonova is now exiting the consumer audio market to refocus on its core hearing care business (hearing aids and cochlear implants). The professional division remains with the Sennheiser family.</p></div></blockquote></div><p>After the Fox - Gold Robbery of Cairo<br />_https://youtu.be/zgcGyt6qOLg<br />_https://en.wikipedia.org/wiki/After_the_Fox</p>]]></description>
			<author><![CDATA[dummy@example.com (igorzwx)]]></author>
			<pubDate>Mon, 04 May 2026 18:47:08 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=63599#p63599</guid>
		</item>
		<item>
			<title><![CDATA[Re: Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=63597#p63597</link>
			<description><![CDATA[<p>dangerou</p>]]></description>
			<author><![CDATA[dummy@example.com (kapqa)]]></author>
			<pubDate>Mon, 04 May 2026 18:13:33 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=63597#p63597</guid>
		</item>
		<item>
			<title><![CDATA[Re: Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=63596#p63596</link>
			<description><![CDATA[<p>Do you want to amplify audio volume in Firefox? It will reduce sound quality. At high levels, it may damage hearing or speakers.</p>]]></description>
			<author><![CDATA[dummy@example.com (igorzwx)]]></author>
			<pubDate>Mon, 04 May 2026 18:02:04 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=63596#p63596</guid>
		</item>
		<item>
			<title><![CDATA[Re: Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=63595#p63595</link>
			<description><![CDATA[<p>is this browser also suitale for audio-init freedom (suitable for the hard of hearing?&gt;)</p><p><a href="https://freedombrowser.eth.limo/" rel="nofollow">https://freedombrowser.eth.limo/</a></p>]]></description>
			<author><![CDATA[dummy@example.com (kapqa)]]></author>
			<pubDate>Mon, 04 May 2026 17:28:07 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=63595#p63595</guid>
		</item>
		<item>
			<title><![CDATA[Re: Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=63593#p63593</link>
			<description><![CDATA[<p><strong>Firefox:</strong><br />Does not resample audio by default.<br />WebM can be easily disabled.<br />PulseAudio backend can be easily disabled.</p><p><strong>Chrome (and all Chrome-based browsers):</strong><br />Resampling cannot be disabled.<br />WebM cannot be disabled.<br />PulseAudio backend cannot be disabled.</p><p>This is because, perhaps, Chrome developers do not hear the difference.</p>]]></description>
			<author><![CDATA[dummy@example.com (igorzwx)]]></author>
			<pubDate>Mon, 04 May 2026 15:56:48 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=63593#p63593</guid>
		</item>
		<item>
			<title><![CDATA[Re: Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=63589#p63589</link>
			<description><![CDATA[<p>Maybe try a different browser?</p>]]></description>
			<author><![CDATA[dummy@example.com (greenjeans)]]></author>
			<pubDate>Mon, 04 May 2026 15:08:06 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=63589#p63589</guid>
		</item>
		<item>
			<title><![CDATA[Re: Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=63587#p63587</link>
			<description><![CDATA[<h5>Firefox Developer Edition</h5><div class="quotebox"><blockquote><div><p><strong>The browser made for developers</strong><br />All the latest developer tools in beta in addition to features like the Multi-line Console Editor and WebSocket Inspector.<br />A separate profile and path so you can easily run it alongside Release or Beta Firefox.<br />Preferences tailored for web developers: Browser and remote debugging are enabled by default, as are the dark theme and developer toolbar button.<br />_https://www.firefox.com/en-US/channel/desktop/developer</p></div></blockquote></div><p><strong>Building Firefox On Linux</strong><br />_https://firefox-source-docs.mozilla.org/setup/linux_build.html<br />_https://firefox-source-docs.mozilla.org/build/buildsystem/mozconfigs.html</p><p><span class="bbc">mozconfig</span> for Firefox Developer Edition (ALSA only, without pulse-rust backend):</p><div class="codebox"><pre><code>$ cat .mozconfig
# The default mozconfig is located here: sourcedir/browser/config/mozconfig
. $topsrcdir/browser/config/mozconfig  
mk_add_options MOZ_MAKE_FLAGS=&quot;-j$(expr $(nproc) + 2)&quot; 
mk_add_options MOZ_OBJDIR=&quot;$(dirname $topsrcdir)&quot;/build_dir_ALSA-dev  
mk_add_options MOZ_APP_DISPLAYNAME=&quot;Firefox Developer Edition&quot;  
mk_add_options MOZ_SIMPLE_PACKAGE_NAME=firefox-dev  
ac_add_options --with-app-basename=&quot;Firefox Developer Edition&quot;  
ac_add_options --with-app-name=firefox-dev  
ac_add_options --prefix=/usr  
ac_add_options --without-sysroot  # classified
ac_add_options --enable-audio-backends=alsa
mk_add_options MOZ_DEV_EDITION=1
ac_add_options --with-branding=browser/branding/aurora   #  Firefox Developer Edition
export LDFLAGS=&quot;-Wl,--no-keep-memory&quot;</code></pre></div><div class="codebox"><pre><code>cd firefox
git pull
./mach clobber
./mach configure
./mach build -v --priority normal</code></pre></div><div class="codebox"><pre><code>$ ./mach run --version
Mozilla Firefox Developer Edition 152.0a1 </code></pre></div><div class="codebox"><pre><code>DESTDIR=&quot;$(dirname $(pwd))&quot;/debdir_ALSA-dev ./mach install </code></pre></div><div class="codebox"><pre><code>$ ls -1 ../debdir_ALSA-dev/usr
bin
lib

$ file ../debdir_ALSA-dev/usr/bin/firefox-dev
../debdir_ALSA-dev/usr/bin/firefox-dev: broken symbolic link to /usr/lib/firefox-dev/firefox-dev </code></pre></div><p>A bash script to create the <span class="bbc">/usr/share</span> directory structure for Firefox Developer Edition<br />(modify it to suit your needs) </p><div class="codebox"><pre class="vscroll"><code>$ cat make_share.sh
#!/bin/bash

# Create Firefox Developer Edition /usr/share structure
SHARE_DIR=&quot;$(dirname $(pwd))&quot;/debdir_ALSA-dev/usr/share
PACKAGE_NAME=&quot;firefox-dev&quot;
APP_NAME=&quot;Firefox Developer Edition&quot;

echo &quot;Creating /usr/share structure for $APP_NAME...&quot;

# Create main directories
mkdir -p &quot;$SHARE_DIR/$PACKAGE_NAME&quot;/{browser/{chrome/icons/default,defaults/preferences},distribution/searchplugins/common}
mkdir -p &quot;$SHARE_DIR/applications&quot;
mkdir -p &quot;$SHARE_DIR/icons/hicolor&quot;/{16x16,32x32,48x48,64x64,128x128,symbolic}/apps
mkdir -p &quot;$SHARE_DIR/doc/$PACKAGE_NAME&quot;
mkdir -p &quot;$SHARE_DIR/man/man1&quot;
mkdir -p &quot;$SHARE_DIR/lintian/overrides&quot;
mkdir -p &quot;$SHARE_DIR/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&quot;

# Create desktop entry file
cat &gt; &quot;$SHARE_DIR/applications/$PACKAGE_NAME.desktop&quot; &lt;&lt; EOF
[Desktop Entry]
Version=1.0
Type=Application
Name=$APP_NAME
Comment=The browser made for developers
Exec=/usr/bin/$PACKAGE_NAME %U
Icon=$PACKAGE_NAME
Terminal=false
Categories=Network;WebBrowser;
StartupNotify=true
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;
EOF

# Create copyright file
cat &gt; &quot;$SHARE_DIR/doc/$PACKAGE_NAME/copyright&quot; &lt;&lt; EOF
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: $PACKAGE_NAME
Source: https://hg.mozilla.org/mozilla-central/

Files: *
Copyright: 2024 Mozilla Foundation
License: MPL-2.0
 This Source Code Form is subject to the terms of the Mozilla Public
 License, v. 2.0. If a copy of the MPL was not distributed with this
 file, You can obtain one at http://mozilla.org/MPL/2.0/.

License: MPL-2.0
EOF

# Create lintian overrides
cat &gt; &quot;$SHARE_DIR/lintian/overrides/$PACKAGE_NAME&quot; &lt;&lt; EOF
$PACKAGE_NAME: package-name-doesnt-match-sonames
$PACKAGE_NAME: binary-without-manpage
$PACKAGE_NAME: missing-dep-for-interpreter /usr/bin/perl (perl &gt;= 5.6)
$PACKAGE_NAME: script-not-executable ./usr/share/$PACKAGE_NAME/defaults/preferences/syspref.js
EOF

# Create man page
cat &gt; &quot;$SHARE_DIR/man/man1/$PACKAGE_NAME.1&quot; &lt;&lt; EOF
.TH $PACKAGE_NAME 1 &quot;2024&quot; &quot;Mozilla Foundation&quot; &quot;User Commands&quot;
.SH NAME
$PACKAGE_NAME \- Mozilla Firefox Developer Edition web browser
.SH DESCRIPTION
Firefox Developer Edition is the blazing fast browser that offers cutting edge developer tools and latest features like CSS Grid support and framework debugging
.SH OPTIONS
.TP
\fB\--help\fR
Prints the command line options.
.TP
\fB\--version\fR
Prints the version information.
.SH FILES
.I /usr/lib/$PACKAGE_NAME/firefox-dev
\- The main executable
.SH SEE ALSO
.BR firefox(1)
EOF

gzip -9 &quot;$SHARE_DIR/man/man1/$PACKAGE_NAME.1&quot;

# Copy icons from build if available
BUILD_LIB_DIR=&quot;$(dirname $(pwd))&quot;/debdir_ALSA-dev/usr/lib/firefox-dev
if [ -f &quot;$BUILD_LIB_DIR/browser/chrome/icons/default/default16.png&quot; ]; then
    for size in 16 32 48 64 128; do
        if [ -f &quot;$BUILD_LIB_DIR/browser/chrome/icons/default/default${size}.png&quot; ]; then
            cp &quot;$BUILD_LIB_DIR/browser/chrome/icons/default/default${size}.png&quot; \
               &quot;$SHARE_DIR/icons/hicolor/${size}x${size}/apps/$PACKAGE_NAME.png&quot;
        fi
    done
else
    # Create placeholder icons
    for size in 16 32 48 64 128; do
        convert -size ${size}x${size} xc:transparent &quot;$SHARE_DIR/icons/hicolor/${size}x${size}/apps/$PACKAGE_NAME.png&quot; 2&gt;/dev/null || \
        touch &quot;$SHARE_DIR/icons/hicolor/${size}x${size}/apps/$PACKAGE_NAME.png&quot;
    done
fi

# Set proper permissions
chmod 644 &quot;$SHARE_DIR/applications/$PACKAGE_NAME.desktop&quot;
chmod 644 &quot;$SHARE_DIR/doc/$PACKAGE_NAME&quot;/*
chmod 644 &quot;$SHARE_DIR/lintian/overrides/$PACKAGE_NAME&quot;
find &quot;$SHARE_DIR&quot; -type d -exec chmod 755 {} \;

echo &quot;Created /usr/share structure in $SHARE_DIR&quot;
echo &quot;Directory tree:&quot;
find &quot;$SHARE_DIR&quot; -type d | sort

echo &quot;Files created:&quot;
find &quot;$SHARE_DIR&quot; -type f | sort</code></pre></div><div class="codebox"><pre><code>./make_share.sh</code></pre></div><div class="codebox"><pre><code>$ ls -1 ../debdir_ALSA-dev/usr
bin
lib
share</code></pre></div><p><strong>How to calculate dependencies</strong></p><p>Make a template</p><div class="codebox"><pre><code>mkdir debian

echo -e &quot;Source: firefox-dev\nPackage: firefox-dev\nDepends: \${shlibs:Depends}&quot; &gt;&gt; debian/control </code></pre></div><div class="codebox"><pre><code>$ cat debian/control
Source: firefox-dev
Package: firefox-dev
Depends: ${shlibs:Depends}</code></pre></div><p>Run &quot;dpkg-shlibdeps&quot; to calculate dependencies</p><div class="codebox"><pre><code>dpkg-shlibdeps -v -xfirefox-dev -l&quot;$(dirname $(pwd))&quot;/debdir_ALSA-dev/usr/lib --ignore-missing-info -e $(find &quot;$(dirname $(pwd))&quot;/debdir_ALSA-dev/usr -type f 2&gt;/dev/null) </code></pre></div><div class="codebox"><pre><code>$ cat debian/substvars
shlibs:Depends=libasound2 (&gt;= 1.1.0), libatk1.0-0 (&gt;= 1.12.4), libc6 (&gt;= 2.36), libcairo-gobject2 (&gt;= 1.10.0), libcairo2 (&gt;= 1.10.0), libdbus-1-3 (&gt;= 1.9.14), libfontconfig1 (&gt;= 2.12.6), libfreetype6 (&gt;= 2.11.1), libgcc-s1 (&gt;= 4.2), libgdk-pixbuf-2.0-0 (&gt;= 2.22.0), libglib2.0-0 (&gt;= 2.37.3), libgtk-3-0 (&gt;= 3.13.7), libharfbuzz0b (&gt;= 0.6.0), libnspr4 (&gt;= 2:4.12), libnss3 (&gt;= 2:3.82), libpango-1.0-0 (&gt;= 1.14.0), libpangocairo-1.0-0 (&gt;= 1.14.0), libstdc++6 (&gt;= 12), libx11-6, libx11-xcb1 (&gt;= 2:1.8.4), libxcb-shm0, libxcb1, libxcomposite1 (&gt;= 1:0.4.5), libxcursor1 (&gt;&gt; 1.1.2), libxdamage1 (&gt;= 1:1.1), libxext6, libxfixes3, libxi6, libxrandr2 (&gt;= 2:1.4.0), libxrender1, zlib1g (&gt;= 1:1.1.4)</code></pre></div><div class="codebox"><pre><code>install -vm0755 -d &quot;$(dirname $(pwd))&quot;/debdir_ALSA-dev/DEBIAN</code></pre></div><div class="codebox"><pre><code>$ cat &quot;$(dirname $(pwd))&quot;/debdir_ALSA-dev/DEBIAN/control
Package: firefox-dev
Version: 152.0a1
Priority: optional
Section: web
Architecture: amd64
Maintainer: Devuan
Installed-Size: 433 MB
Provides: gnome-www-browser, www-browser
Depends: libc6 
Recommends: libavcodec61 | libavcodec-extra61 | libavcodec60 | libavcodec-extra60 | libavcodec59 | libavcodec-extra59 | libavcodec58 | libavcodec-extra58 | libavcodec57 | libavcodec-extra57 | libavcodec56 | libavcodec-extra56 | libavcodec55 | libavcodec-extra55 | libavcodec54 | libavcodec-extra54 | libavcodec53 | libavcodec-extra53
Suggests: fonts-stix | otf-stix, fonts-lmodern, libgssapi-krb5-2 | libkrb53, libcanberra0
Description: Mozilla Firefox Developer Edition. ALSA only.
 The browser made for developers
 .
 All the latest developer tools in beta in addition to features like the Multi-line Console Editor and WebSocket Inspector.
 .
 A separate profile and path so you can easily run it alongside Release or Beta Firefox.
 .
 Preferences tailored for web developers: Browser and remote debugging are enabled by default, as are the dark theme and developer toolbar button.
 .
 Mozilla Firefox Developer Edition. ALSA only, without pulse-rust backend.</code></pre></div><p>Generate DEBIAN/md5sums</p><div class="codebox"><pre><code>cd &quot;$(dirname $(pwd))&quot;/debdir_ALSA-dev

find . -type f -not -path &quot;./DEBIAN/*&quot; -exec md5sum {} + | sort -k 2 | sed &#039;s/\.\/\(.*\)/\1/&#039; &gt; DEBIAN/md5sums

cd ..

chmod 0644 -- debdir_ALSA-dev/DEBIAN/md5sums </code></pre></div><p>Make Debian package</p><div class="codebox"><pre><code>$ fakeroot -- dpkg-deb -b debdir_ALSA-dev firefox-dev_152.0a1_amd64.deb
dpkg-deb: building package &#039;firefox-dev&#039; in &#039;firefox-dev_152.0a1_amd64.deb&#039;.

$ ls -1 *deb
firefox-dev_152.0a1_amd64.deb</code></pre></div><p>Install</p><div class="codebox"><pre><code>sudo dpkg -i firefox-dev_152.0a1_amd64.deb</code></pre></div><div class="codebox"><pre><code>$ firefox-dev --version
Mozilla Firefox Developer Edition 152.0a1</code></pre></div><p>Firefox 152.0a1 is not on YouTube’s allowlist. To enable YouTube live chat, use a User Agent override to spoof Firefox 150.0. This prevents YouTube from incorrectly flagging your browser as an &#039;older version&#039; and blocking the chat feature.</p><div class="codebox"><pre><code>about:config
general.useragent.override      Mozilla/5.0 (X11; Linux x86_64; rv:150.0) Gecko/20100101 Firefox/150.0	
privacy.resistFingerprinting    false   # default</code></pre></div><p><strong>NOTE:</strong> This guide is for experienced Linux users. If you have need help, please start a new topic on &quot;Desktop and Multimedia&quot;.</p>]]></description>
			<author><![CDATA[dummy@example.com (igorzwx)]]></author>
			<pubDate>Mon, 04 May 2026 13:42:04 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=63587#p63587</guid>
		</item>
		<item>
			<title><![CDATA[Re: Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=63512#p63512</link>
			<description><![CDATA[<p>To summare &quot;secret knowledge&quot;: </p><p>Configuration Editor for Firefox<br />_https://support.mozilla.org/en-US/kb/about-config-editor-firefox</p><div class="quotebox"><blockquote><div><p><strong>Firefox settings for better sound quality</strong></p><p><span class="bbc">about:config</span></p><div class="codebox"><pre><code>media.resampling.enabled            false
media.webm.enabled                  false
media.mediasource.webm.enabled	   false  # it might be deprecated
media.cubeb.backend		   alsa   # if ALSA backend  is available
media.cubeb_latency_playback_ms		160 </code></pre></div><p>NOTE: Firefox&#039;s default value (for all platforms):</p><div class="codebox"><pre><code>media.cubeb_latency_playback_ms		100 </code></pre></div><p>This is because Firefox is optimized for macOS, not for Linux with ALSA.</p><div class="codebox"><pre><code>media.encoder.webm.enabled       false   # Disable WebM recording
media.mediasource.vp9.enabled    false   # Disable WebM in MSE </code></pre></div><p>Media Source Extensions (MSE)<br />_https://en.wikipedia.org/wiki/Media_Source_Extensions</p></div></blockquote></div><p>Verification: </p><p>1. <span class="bbc">about:support</span>&#160; - search for &quot;Audio Backend&quot;</p><p>2. <span class="bbc">MOZ_LOG=&quot;MediaDecoder:4,cubeb:5&quot;</span></p><p>On both Linux and macOS, you need Firefox logs to detect unwanted resampling, or to verify that Firefox does not resample.</p><p><strong>Linux logs:</strong> </p><div class="codebox"><pre><code>MOZ_LOG=&quot;MediaDecoder:4,cubeb:5&quot; stdbuf -oL firefox 2&gt;&amp;1 https://www.youtube.com/watch?v=X0lwWwJJfXk | grep  --line-buffered -E &quot;MetadataLoaded.*rate=|FirstFrameLoaded.*rate=|CubebStreamInit output stream rate|target rate|Output hardware|Input|Output|Rates&quot; | grep -vE &quot;hasVideo=0|hasAudio=0&quot; </code></pre></div><div class="codebox"><pre><code>$ MOZ_LOG=&quot;MediaDecoder:4,cubeb:5&quot; stdbuf -oL firefox 2&gt;&amp;1 https://www.youtube.com/watch?v=X0lwWwJJfXk | grep  --line-buffered -E &quot;MetadataLoaded.*rate=|FirstFrameLoaded.*rate=|CubebStreamInit output stream rate|target rate|Output hardware|Input|Output|Rates&quot; | grep -vE &quot;hasVideo=0|hasAudio=0&quot; 
[Child 25647: Main Thread]: D/MediaDecoder MediaDecoder[7f2a416c2e00] MetadataLoaded, channels=2 rate=44100 hasAudio=1 hasVideo=1
[Child 25647: Main Thread]: D/MediaDecoder MediaDecoder[7f2a416c2e00] FirstFrameLoaded, channels=2 rate=44100 hasAudio=1 hasVideo=1 mPlayState=PLAY_STATE_LOADING transportSeekable=1
[Child 25647: Main Thread]: D/MediaDecoder MediaDecoder[7f2a2c7d7d00] MetadataLoaded, channels=2 rate=44100 hasAudio=1 hasVideo=1
[Child 25647: Main Thread]: D/MediaDecoder MediaDecoder[7f2a2c7d7d00] FirstFrameLoaded, channels=2 rate=44100 hasAudio=1 hasVideo=1 mPlayState=PLAY_STATE_LOADING transportSeekable=1
[Child 25647: MediaDecoderStateMachine #1]: I/cubeb CubebStreamInit output stream rate 44100
[fftrate ALSA plugin log: 44100 --&gt; 48000 Hz]
Input:  44100 Hz, 2 ch, &#039;s32_le&#039; (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, &#039;s16_le&#039; (0x2): dummy = 0, period = 1920
Rates:  44100 --&gt; 48000 (J: 0.00%, T: FFT, W: Vorbis) </code></pre></div><p><strong>macOS Firefox logs:</strong></p><div class="codebox"><pre><code>about:support
Name 	Firefox
Version 	151.0b3
Audio Backend	audiounit-rust
Max Channels	2
Preferred Sample Rate	44100

about:config
media.resampling.enabled     false
media.webm.enabled           false   # Disable WebM playback </code></pre></div><p>[grep = GNU grep]</p><div class="codebox"><pre><code>MOZ_LOG=&quot;MediaDecoder:4,cubeb:5&quot; stdbuf -oL /Applications/Firefox\ Developer\ Edition.app/Contents/MacOS/firefox 2&gt;&amp;1 https://youtu.be/qeUcGD4rRRc | ggrep  --line-buffered -E &quot;MetadataLoaded.*rate=|FirstFrameLoaded.*rate=|CubebStreamInit output stream rate|target rate|Output hardware&quot; | ggrep -vE &quot;hasVideo=0|hasAudio=0&quot;</code></pre></div><div class="codebox"><pre><code>➤ MOZ_LOG=&quot;MediaDecoder:4,cubeb:5&quot; stdbuf -oL /Applications/Firefox\ Developer\ Edition.app/Contents/MacOS/firefox 2&gt;&amp;1 https://youtu.be/qeUcGD4rRRc | ggrep  --line-buffered -E &quot;MetadataLoaded.*rate=|FirstFrameLoaded.*rate=|CubebStreamInit output stream rate|target rate|Output hardware&quot; | ggrep -vE &quot;hasVideo=0|hasAudio=0&quot;
[Child 2125: Main Thread]: D/MediaDecoder MediaDecoder[133ffa100] MetadataLoaded, channels=2 rate=44100 hasAudio=1 hasVideo=1
[Child 2125: Main Thread]: D/MediaDecoder MediaDecoder[133ffa100] FirstFrameLoaded, channels=2 rate=44100 hasAudio=1 hasVideo=1 mPlayState=PLAY_STATE_LOADING transportSeekable=1
[Child 2125: MediaDecoderStateMachine #1]: I/cubeb CubebStreamInit output stream rate 44100
[Parent 2109: AudioIPC Server RPC]: E/cubeb mod.rs:4077: (0x14d932800) Output hardware description: AudioStreamBasicDescription { mSampleRate: 44100.0, mFormatID: 1819304813, mFormatFlags: 9, mBytesPerPacket: 8, mFramesPerPacket: 1, mBytesPerFrame: 8, mChannelsPerFrame: 2, mBitsPerChannel: 32, mReserved: 0 }
[Parent 2109: AudioIPC Server RPC]: E/cubeb cubeb_resampler_internal.h:555:Input and output sample-rate match, target rate of 44100Hz</code></pre></div><p><strong>Explanation:</strong> </p><p>Input Source Media Rate: 44100 Hz (from YouTube AAC metadata)</p><div class="codebox"><pre><code>[Child 2125: Main Thread]: D/MediaDecoder MediaDecoder[133ffa100] MetadataLoaded, channels=2 rate=44100 hasAudio=1 hasVideo=1  
[Child 2125: Main Thread]: D/MediaDecoder MediaDecoder[133ffa100] FirstFrameLoaded, channels=2 rate=44100 hasAudio=1 hasVideo=1 mPlayState=PLAY_STATE_LOADING transportSeekable=1 </code></pre></div><p>Output Stream Rate: 44100 Hz (Cubeb initialization)</p><div class="codebox"><pre><code>[Child 2125: MediaDecoderStateMachine #1]: I/cubeb CubebStreamInit output stream rate 44100 </code></pre></div><p><strong>Conclusion:</strong> Since input source rate (44100 Hz) = output stream rate (44100 Hz), no resampling is occurring in Firefox&#039;s audio pipeline.</p><p><strong>NOTE:</strong> To prevent software resampling by the macOS software mixer, set the sample rate to 44100Hz using the Audio MIDI Setup utility:</p><div class="codebox"><pre><code>open -a Audio\ MIDI\ Setup.app </code></pre></div><div class="quotebox"><blockquote><div><p><strong>Reference media files:</strong><br />Robert de Visée Prélude et Allemande, Jonas Nordberg, theorbo<br />_https://youtu.be/qeUcGD4rRRc<br />The 10 Questions Everyone Asks About My 6-Foot, 14-String Lute [Theorbo] <br />_https://www.youtube.com/watch?v=X0lwWwJJfXk<br />The coolest LUTE I&#039;ve ever seen! <br />_https://www.youtube.com/watch?v=4YmELV5p6ZY</p></div></blockquote></div><p><strong>Building Firefox On Linux</strong><br />_https://firefox-source-docs.mozilla.org/setup/linux_build.html<br />_https://firefox-source-docs.mozilla.org/build/buildsystem/mozconfigs.html</p><p>A secret mozconfig to disable pulse-rust backend</p><div class="codebox"><pre><code>$ cat .mozconfig
# Default: sourcedir/browser/config/mozconfig
. $topsrcdir/browser/config/mozconfig  
mk_add_options MOZ_MAKE_FLAGS=&quot;-j$(expr $(nproc) + 2)&quot; 
mk_add_options MOZ_OBJDIR=&quot;$(dirname $topsrcdir)&quot;/build_dir_ALSA  
mk_add_options MOZ_APP_DISPLAYNAME=&quot;Firefox ALSA&quot;  
mk_add_options MOZ_SIMPLE_PACKAGE_NAME=firefox-alsa  
ac_add_options --with-app-basename=&quot;Firefox ALSA&quot;  
ac_add_options --with-app-name=firefox-alsa  
ac_add_options --prefix=/usr  
ac_add_options --without-sysroot  # classified
ac_add_options --enable-audio-backends=alsa 
export LDFLAGS=&quot;-Wl,--no-keep-memory&quot; </code></pre></div><div class="codebox"><pre><code>cd firefox
git pull
./mach clobber
./mach configure 
./mach build -v --priority normal
./mach run --version
./mach run
DESTDIR=&quot;$(dirname $(pwd))&quot;/debdir_ALSA ./mach install </code></pre></div><p>NOTE: The documented configure options can be listed with <span class="bbc">./configure --help</span>, but some may not work depending on undocumented options. To understand which options are actually functional, you need to study the source code.</p><div class="codebox"><pre class="vscroll"><code>$ ./configure --help

Usage: configure.py [options]

Options: [defaults in brackets after descriptions]
  Help options:
    --help                    Print this message

  Options from build/moz.configure/init.configure:
    --enable-application      Application to build. Same as --enable-project
    --enable-project          Project to build [browser]
    --enable-artifact-builds  Download and use prebuilt binary artifacts
    --host                    Define the system type performing the build
    --target                  Define the system type where the resulting executables will be used
    --with-version-file-path  Specify a custom path to app version files instead of auto-detecting
    --as-milestone={early-beta,late-beta,release}
                              Build with another milestone configuration (e.g., as release)
    --enable-update-channel   Select application update channel [default]
    --with-app-basename       Typically stays consistent for multiple branded versions of a given application (e.g. Aurora and Firefox both use &quot;Firefox&quot;), but may vary for full rebrandings (e.g. Iceweasel). Used for application.ini&#039;s &quot;Name&quot; field, which controls profile location in the absence of a &quot;Profile&quot; field (see below), and various system integration hooks (Unix remoting, Windows MessageWindow name, etc
    --prefix=PREFIX           Install files using PREFIX as root directory [/usr/local]
    --includedir=DIR          C header files in DIR [/usr/include]
    --libdir=DIR              Object code libraries in DIR [/usr/lib]

  Options from moz.configure:
    --enable-artifact-build-symbols[={full}]
                              Download symbols when artifact builds are enabled
    --disable-compile-environment
                              Disable compiler/library checks
    --disable-tests           Do not build test libraries &amp; programs
    --enable-debug            Enable building with developer debug info (using the given compiler flags)
    --with-debug-label        Debug DEBUG_&lt;value&gt; for each comma-separated value given
    --enable-release          Build with more conservative, release engineering-oriented options. This may slow down builds.
    --disable-unified-build   Enable building modules in non unified context
    --enable-valgrind         Enable Valgrind integration hooks
    --enable-build-backend={Clangd,ChromeMap,CompileDB,CppEclipse,FasterMake,FasterMake+RecursiveMake,RecursiveMake,StaticAnalysis,TestManifest,VisualStudio},...
                              Deprecated
    --build-backends={Clangd,ChromeMap,CompileDB,CppEclipse,FasterMake,FasterMake+RecursiveMake,RecursiveMake,StaticAnalysis,TestManifest,VisualStudio},...
                              Build backends to generate [RecursiveMake,FasterMake,Clangd]
    --enable-gtest-in-build   Enable building the gtest libxul during the build
    --enable-ui-locale        Select the user interface locale (default: en-US) [en-US]
    --enable-strip            Enable stripping of libs &amp; executables
    --disable-install-strip   Enable stripping of libs &amp; executables when packaging
    --with-system-zlib        Use system libz

  Options from build/moz.configure/bootstrap.configure:
    --disable-bootstrap       Disable bootstrap or update of toolchains

  Options from build/moz.configure/toolchain.configure:
    --disable-optimize        Disable optimizations via compiler flags
    --with-toolchain-prefix   Prefix for the target toolchain
    --with-compiler-wrapper   Enable compiling with wrappers such as distcc and ccache
    --with-ccache             Enable compiling with ccache
    --enable-gold             Deprecated
    --enable-linker           Select the linker {bfd, gold, ld64, lld, lld-*, mold}
    --disable-debug-symbols   Disable debug symbols using the given compiler flags
    --enable-address-sanitizer
                              Enable Address Sanitizer
    --enable-memory-sanitizer
                              Enable Memory Sanitizer
    --enable-thread-sanitizer
                              Enable Thread Sanitizer
    --enable-undefined-sanitizer
                              Enable UndefinedBehavior Sanitizer
    --enable-signed-overflow-sanitizer
                              Enable UndefinedBehavior Sanitizer (Signed Integer Overflow Parts)
    --enable-unsigned-overflow-sanitizer
                              Enable UndefinedBehavior Sanitizer (Unsigned Integer Overflow Parts)
    --enable-hardening        Enables security hardening compiler options
    --enable-stl-hardening    Enable C++ STL hardening
    --enable-frame-pointers   Enable frame pointers
    --enable-coverage         Enable code coverage
    --enable-clang-plugin     Enable building with the Clang plugin (gecko specific static analyzers)
    --enable-fuzzing          Enable fuzzing support
    --enable-snapshot-fuzzing
                              Enable experimental snapshot fuzzing support
    --enable-cpp-rtti         Enable C++ RTTI
    --enable-path-remapping[={c,rust},...]
                              Enable remapping source and object paths in compiled outputs
    --enable-dtrace           Build with dtrace support

  Options from build/moz.configure/memory.configure:
    --enable-jemalloc         Replace memory allocator with jemalloc

  Options from build/moz.configure/warnings.configure:
    --enable-warnings-as-errors
                              Enable treating warnings as errors

  Options from build/moz.configure/flags.configure:
    --enable-icf              Enable Identical Code Folding
    --disable-new-pass-manager
                              Use the legacy LLVM pass manager in clang builds

  Options from build/moz.configure/lto-pgo.configure:
    --enable-profile-generate[={cross}]
                              Build a PGO instrumented binary
    --enable-profile-use[={cross}]
                              Use a generated profile during the build
    --with-pgo-profile-path   Path to the directory with unmerged profile data to use during the build, or to a merged profdata file
    --with-pgo-jarlog         Use the provided jarlog file when packaging during a profile-use build
    --enable-lto[={full,thin,cross},...]
                              Enable LTO

  Options from browser/moz.configure:
    --disable-browser-newtab-as-addon
                              Disable bundling newtab as a built-in addon

  Options from toolkit/moz.configure:
    --with-distribution-id    Set distribution-specific id [org.mozilla]
    --disable-gecko-profiler  Disable the Gecko profiler
    --enable-dmd              Enable Dark Matter Detector (heap profiler). Also enables jemalloc, replace-malloc and profiling
    --enable-audio-backends={aaudio,alsa,audiounit,jack,opensl,oss,pulseaudio,sndio,sunaudio,wasapi},...
                              Enable various cubeb backends [pulseaudio]
    --enable-alsa             Enable ALSA audio backend
    --enable-jack             Enable JACK audio backend
    --enable-pulseaudio       Enable PulseAudio audio backend
    --enable-sndio            Enable sndio audio backend
    --with-l10n-base          Path to l10n repositories
    --enable-default-toolkit={cairo-gtk3,cairo-gtk3-wayland,cairo-gtk3-x11-wayland,cairo-gtk3-wayland-only,cairo-gtk3-x11-only}
                              Select default toolkit [cairo-gtk3]
    --with-system-pipewire    Use system PipeWire
    --with-system-gbm         Use system gbm
    --with-system-libdrm      Use system libdrm
    --with-gl-provider        Set GL provider backend type
    --disable-wmf             Disable support for Windows Media Foundation
    --disable-ffmpeg          Disable FFmpeg for fragmented H264/AAC decoding
    --disable-av1             Disable av1 video support
    --with-system-av1         Use system av1 (located with pkg-config)
    --disable-jxl             Disable jxl image support
    --disable-real-time-tracing
                              Disable tracing of real-time audio callbacks
    --enable-openmax          Enable OpenMAX IL for video/audio decoding
    --enable-chrome-format={omni,jar,flat}
                              Select FORMAT of chrome files during packaging [omni]
    --enable-minify[={properties,js},...]
                              Select types of files to minify during packaging [properties]
    --with-mozilla-api-keyfile
                              Use the secret key contained in the given keyfile for Mozilla API requests
    --with-google-location-service-api-keyfile
                              Use the secret key contained in the given keyfile for Google Location Service API requests
    --with-google-safebrowsing-api-keyfile
                              Use the secret key contained in the given keyfile for Google Safebrowsing API requests
    --with-bing-api-keyfile   Use the client id and secret key contained in the given keyfile for Bing API requests
    --with-adjust-sdk-keyfile
                              Use the secret key contained in the given keyfile for Adjust SDK requests
    --with-leanplum-sdk-keyfile
                              Use the client id and secret key contained in the given keyfile for Leanplum SDK requests
    --with-pocket-api-keyfile
                              Use the secret key contained in the given keyfile for Pocket API requests
    --enable-webrender-debugger
                              Build the websocket debug server in WebRender
    --enable-app-system-headers
                              Use additional system headers defined in $MOZ_BUILD_APP/app-system-headers.mozbuild
    --disable-printing        Disable printing support
    --disable-synth-speechd   Disable speech-dispatcher support
    --disable-webspeech       Disable support for HTML Speech API
    --disable-webspeechtestbackend
                              Disable support for HTML Speech API Test Backend
    --disable-skia-pdf        Disable Skia PDF
    --with-system-webp        Use system libwebp (located with pkgconfig)
    --disable-webdriver       Disable support for WebDriver remote protocols
    --disable-geckodriver     Do not build geckodriver
    --enable-webrtc           Enable support for WebRTC
    --enable-raw              Enable support for RAW media
    --enable-address-sanitizer-reporter
                              Enable Address Sanitizer Reporter Extension
    --enable-proxy-bypass-protection
                              Prevent suspected or confirmed proxy bypasses
    --disable-proxy-direct-failover
                              Disable direct failover for system requests
    --disable-accessibility   Disable accessibility support
    --with-unsigned-addon-scopes={app,system},...
                              Addon scopes where signature is not required
    --allow-addon-sideload    Addon sideloading is allowed
    --disable-extensions-webidl-bindings
                              Disable building experimental WebExtensions WebIDL bindings
    --enable-launcher-process
                              Enable launcher process by default
    --enable-bundled-fonts    Enable support for bundled fonts on desktop platforms
    --enable-reflow-perf      Enable reflow performance tracing
    --enable-layout-debugger  Enable layout debugger
    --with-system-libvpx      Use system libvpx (located with pkgconfig)
    --with-system-jpeg        Use system libjpeg (installed at given prefix)
    --with-system-png         Use system libpng
    --with-wasm-sandboxed-libraries={graphite,ogg,hunspell,expat,woff2,soundtouch},...
                              Enable wasm sandboxing for the selected libraries
    --enable-disk-remnant-avoidance
                              Prevent persistence of auxiliary files on application close
    --enable-forkserver       Enable fork server
    --disable-backgroundtasks
                              Disable running in background task mode
    --enable-mobile-optimize  Enable mobile optimizations
    --disable-pref-extensions
                              Disable pref extensions such as autoconfig
    --disable-startupcache    Disable startup cache
    --enable-official-branding
                              Enable Official mozilla.org Branding. Do not distribute builds with --enable-official-branding unless you have permission to use trademarks per http://www.mozilla.org/foundation/trademarks/
    --with-branding=DIR       Use branding from directory DIR
    --with-crashreporter-url  Set an alternative crashreporter url [https://crash-reports.mozilla.com/]
    --with-system-libevent    Use system libevent
    --enable-crashreporter    Enable crash reporting
    --disable-dbus            Disable dbus support
    --enable-debug-js-modules
                              Enable debug mode for frontend JS libraries
    --enable-dump-painting    Enable paint debugging
    --enable-libproxy         Enable libproxy support
    --enable-logrefcnt        Enable logging of refcounts
    --disable-negotiateauth   Disable GSS-API negotiation
    --disable-parental-controls
                              Do not build parental controls
    --enable-sandbox          Enable sandboxing support
    --disable-system-extension-dirs
                              Disable searching system- and account-global directories for extensions of any kind; use only profile-specific extension directories
    --with-system-pixman      Use system pixman (located with pkgconfig)
    --disable-universalchardet
                              Disable universal encoding detection
    --disable-zipwriter       Disable zipwriter component
    --with-user-appdir        Set user-specific appdir [.mozilla]
    --enable-uniffi-fixtures  Enable UniFFI Fixtures/Examples
    --disable-system-policies
                              Disable reading policies from Windows registry, macOS&#039;s file system attributes, and /etc/firefox
    --disable-legacy-profile-creation
                              Disable the creation a legacy profile, to be used by old versions of Firefox, when no profiles exist
    --with-onnx-runtime       Location of the ONNX Runtime

  Options from js/moz.configure:
    --with-app-name           Used for e.g. the binary program file name. If not set, defaults to a lowercase form of MOZ_APP_BASENAME
    --enable-js-shell         Build the JS shell
    --enable-decorators       Enable experimental JS Decorators support
    --disable-explicit-resource-management
                              Disable explicit resource management
    --enable-portable-baseline-interp
                              Enable the portable baseline interpreter
    --enable-portable-baseline-interp-force
                              Enable forcing use of the portable baseline interpreter
    --enable-aot-ics          Enable including ahead-of-time corpus of CacheIR IC bodies
    --enable-aot-ics-force    Enable forcing the AOT ICs option on without additional configuration
    --enable-aot-ics-enforce  Enable enforcing that only AOT IC corpus is used, crashing otherwise (TEST ONLY)
    --enable-jit              Enable use of the JITs
    --enable-ion              Deprecated
    --enable-simulator={arm,arm64,mips64,loong64,riscv64}
                              Enable a JIT code simulator for the specified architecture
    --enable-instruments      Enable instruments remote profiling
    --enable-callgrind        Enable callgrind profiling
    --disable-profiling       Do not set compile flags necessary for using sampling profilers (e.g. shark, perf)
    --disable-execution-tracing
                              Do not set compile flags necessary for running the JS execution tracer
    --enable-vtune            Enable VTune profiling
    --enable-gc-probes        Turn on probes for allocation and finalization
    --enable-gczeal           Enable zealous GCing
    --enable-oom-breakpoint   Enable a breakpoint function for artificial OOMs
    --disable-jitdump         Disable perf jitdump integration
    --enable-jitspew          Enable the Jit spew and IONFLAGS environment variable
    --enable-masm-verbose     Enable MacroAssembler verbosity of generated code
    --disable-ctypes          Disable js-ctypes
    --enable-rust-simd        Enable explicit SIMD in Rust code
    --disable-spidermonkey-telemetry
                              Disable performance telemetry for SpiderMonkey (e.g. compile and run times)
    --enable-wasm-codegen-debug
                              Enable debugging for wasm codegen
    --wasm-no-experimental    Force disable all wasm experimental features for testing
    --enable-wasm-jspi        Enable WebAssembly JS PI
    --disable-shared-memory   Disable JS/WebAssembly shared memory and atomics
    --enable-wasm-simd        Enable WebAssembly SIMD
    --enable-wasm-avx         Enable AVX support for WebAssembly SIMD
    --enable-wasm-relaxed-simd
                              Enable WebAssembly relaxed SIMD
    --enable-wasm-moz-intgemm
                              Enable WebAssembly intgemm private intrinsics
    --disable-wasm-memory-control
                              Disable WebAssembly fine-grained memory control instructions
    --disable-wasm-branch-hinting
                              Disable WebAssembly Branch hints
    --with-sixgill            Enable static checking of code using sixgill
    --with-jitreport-granularity[={0,1,2,3}]
                              Default granularity at which to report JIT code to external tools (0 - no info, 1 - code ranges for while functions only, 2 - per-line information, 3 - per-op information) [3]
    --with-system-icu         Use system ICU
    --without-intl-api        Disable ECMAScript Internationalization API
    --disable-icu4x           Disable using ICU4X
    --disable-wasm-type-reflections
                              Disable type reflection in WASM JS-API
    --disable-wasm-resizable-arraybuffer
                              Disable resizable ArrayBuffer in WASM

  Options from build/moz.configure/nspr.configure:
    --with-system-nspr        Use system NSPR

  Options from build/moz.configure/rust.configure:
    --enable-rust-tests       Enable building and running of Rust tests during `make check`
    --enable-rust-debug       Build Rust code with debug assertions turned on
    --disable-cargo-incremental
                              Disable incremental rust compilation

  Options from build/moz.configure/bindgen.configure:
    --with-libclang-path      Absolute path to a directory containing Clang/LLVM libraries for bindgen (version 3.9.x or above)
    --with-clang-path         Absolute path to a Clang binary for bindgen (version 3.9.x or above)

  Options from js/ffi.configure:
    --with-system-ffi         Use system libffi (located with pkgconfig)

  Options from build/moz.configure/node.configure:
    --disable-nodejs          Require Node.js to build

  Options from build/moz.configure/nss.configure:
    --with-system-nss         Use system NSS

  Options from build/moz.configure/update-programs.configure:
    --disable-updater         Disable building the updater
    --enable-unverified-updates
                              Enable application update without verifying MAR or updater binary signatures
    --enable-default-browser-agent
                              Enable building the default browser agent

Environment variables:
  Options from build/moz.configure/init.configure:
    MOZ_AUTOMATION            Enable options for automated builds
    MOZCONFIG                 Mozconfig location
    MOZILLABUILD              Path to Mozilla Build (Windows-only)
    CONFIG_SHELL              Path to a POSIX shell
    GIT                       Path to the git program
    MOZILLA_OFFICIAL          Build an official release
    MOZBUILD_STATE_PATH       Path to a persistent state directory for the build system and related tools

  Options from moz.configure:
    MOZ_BUILD_HOOK            Path to the moz.build file that will be executed as if it were appended to every moz.build in the tree
    MOZ_COPY_PDBS             For builds that do not support symbols in the normal fashion, generate and copy them into the resulting build archive
    MOZ_PGO                   Build with profile guided optimizations
    READELF                   Path to the readelf program
    OBJCOPY                   Path to the objcopy program
    AWK                       Path to the awk program
    MAKE                      Path to GNU make
    GMAKE                     Path to the gmake program
    WATCHMAN                  Path to the watchman program
    XARGS                     Path to the xargs program
    MKFSHFS                   Path to the mkfshfs program
    HFS_TOOL                  Path to the hfs_tool program
    STRIP_FLAGS               Flags for the strip command
    STRIP                     Path to the strip program
    USE_LIBZ_RS               Use libz-rs-sys instead of zlib

  Options from build/moz.configure/toolchain.configure:
    HOST_CPPFLAGS             Extra flags for Preprocessing host sources []
    HOST_CFLAGS               Extra flags for compiling host C sources []
    HOST_CXXFLAGS             Extra flags for compiling host C++ sources []
    HOST_LDFLAGS              Extra flags for linking host object files []
    CPPFLAGS                  Extra flags for preprocessing sources []
    CFLAGS                    Extra flags for compiling C sources []
    CXXFLAGS                  Extra flags for compiling C++ sources []
    ASFLAGS                   Extra flags for assembling sources []
    LDFLAGS                   Extra flags for linking object files []
    LIBS                      Extra libraries for linking object files []
    MOZ_OPTIMIZE_FLAGS        Extra optimization flags
    MOZ_HAZARD                Build for the GC rooting hazard analysis
    CCACHE_PREFIX             Compiler prefix to use when using ccache
    RUSTC_WRAPPER             Wrap rust compilation with given tool
    SCCACHE_VERBOSE_STATS     Print verbose sccache stats after build
    CC                        Path to the target C compiler
    LD                        Deprecated
    CXX                       Path to the target C++ compiler
    HOST_CC                   Path to the host C compiler
    HOST_LD                   Deprecated
    HOST_CXX                  Path to the host C++ compiler
    MOZ_DEBUG_FLAGS           Debug compiler flags
    AS                        Path to the assembler
    LLVM_OBJDUMP              Path to llvm-objdump
    AR                        Path to the ar program
    HOST_AR                   Path to the host_ar program

  Options from build/moz.configure/pkg.configure:
    PKG_CONFIG                Path to the pkg_config program

  Options from build/moz.configure/lto-pgo.configure:
    LLVM_PROFDATA             Path to the llvm_profdata program
    MOZ_LD64_KNOWN_GOOD       Indicate that ld64 is free of symbol aliasing bugs

  Options from toolkit/moz.configure:
    MOZ_STUB_INSTALLER        Produce a stub installer
    MOZ_SOURCE_REPO           Project source repository
    MOZ_SOURCE_CHANGESET      Source changeset
    MOZ_INCLUDE_SOURCE_INFO   Include build repository informations
    USE_FC_FREETYPE           Force-enable the use of fontconfig freetype
    MOZ_TELEMETRY_REPORTING   Enable telemetry reporting
    TAR                       Path to the tar program
    UNZIP                     Path to the unzip program
    MIDL_FLAGS                Extra flags to pass to MIDL
    MOZ_REQUIRE_SIGNING       Enforce that add-ons are signed by the trusted root
    DUMP_SYMS                 Path to the dump_syms program
    MOZ_BRANDING_DIRECTORY    Path to the directory used for branding resources
    MOZ_OFFICIAL_BRANDING_DIRECTORY
                              Path to the directory used for official branding resources
    MOZ_APP_DISPLAYNAME       Branded application name
    MOZ_DEV_EDITION           Whether this a dev edition build
    MOZ_MACBUNDLE_ID          ID of the associated mac bundle
    MOZ_APP_REMOTINGNAME      Used for the internal program name, which affects profile name and remoting. If not set, defaults to MOZ_APP_NAME if the update channel is release, and MOZ_APP_NAME-MOZ_UPDATE_CHANNEL otherwise
    MOZ_WINCONSOLE            Whether we can create a console window
    MOZ_CRASHREPORTER_MOCK    Mock the crashreporter to test native GUIs
    MOZ_SIMPLE_PACKAGE_NAME   Package name override
    MOZ_PKG_SPECIAL           Name of special moz flavor
    MOZ_PACKAGE_JSSHELL       Whether the installer bundles the JS shell

  Options from build/moz.configure/rust.configure:
    RUSTC                     Path to the rust compiler
    CARGO                     Path to the Cargo package manager
    RUSTDOC                   Path to the rustdoc program
    RUSTDOCFLAGS              Extra options for the rustdoc program
    RUSTFLAGS                 Rust compiler flags
    RUSTC_OPT_LEVEL           Rust compiler optimization level (-C opt-level=%s) [2]

  Options from build/moz.configure/bindgen.configure:
    CBINDGEN                  Path to cbindgen
    RUSTFMT                   Path to the rustfmt program
    BINDGEN_CFLAGS            Options bindgen should pass to the C/C++ parser

  Options from build/moz.configure/node.configure:
    NODEJS                    Path to nodejs

  Options from build/moz.configure/update-programs.configure:
    MAR_CHANNEL_ID            MAR channel identifier
    ACCEPTED_MAR_CHANNEL_IDS  Accepted MAR channel identifiers</code></pre></div>]]></description>
			<author><![CDATA[dummy@example.com (igorzwx)]]></author>
			<pubDate>Thu, 30 Apr 2026 21:05:13 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=63512#p63512</guid>
		</item>
		<item>
			<title><![CDATA[Chasing the Fox (Caccia alla volpe)]]></title>
			<link>https://dev1galaxy.org/viewtopic.php?pid=60153#p60153</link>
			<description><![CDATA[<div class="quotebox"><blockquote><div><p>So after the fox, after the fox<br />Off to the hunt with chains and locks<br />So after the fox, after the fox<br />Someone is always chasing after the fox</p><p><strong>After the Fox</strong> (1966) _https://www.youtube.com/watch?v=MrQl0VsQYtw</p></div></blockquote></div><h5>📖 Manual: &quot;We Can’t Yet Prove Firefox Is Resampling… But We’ll Keep Trying&quot;</h5><p>For the truly dedicated — those who believe their audio deserves better.</p><p><strong>🔧 Step 0: Lock It Down</strong><br />Before we begin, <strong>disable the PulseAudio backend</strong> - yes, even the <em>rusty</em> one:</p><ol class="decimal"><li><p>Open Firefox and type <span class="bbc">about:config</span>&#160; in the address bar</p></li><li><p>Search: <span class="bbc">media.cubeb.backend</span></p></li><li><p>Click <strong>+</strong>, set type to <span class="bbc">string</span>, value to <span class="bbc">alsa</span></p></li></ol><p>Now Firefox talks <strong>directly to ALSA</strong> - no middlemen.</p><div class="quotebox"><blockquote><div><p>✅ You’ve just sidestepped a surveillance-level audio framework.</p></div></blockquote></div><p><strong>🕵️ Step 1: The Smoking Gun</strong><br />Firefox uses <strong>Speex Resampler</strong> under the hood - yes, <em>that</em> Speex.<br />It’s in the code: <span class="bbc">AudioConverter.cpp</span> includes <span class="bbc">&lt;speex/speex_resampler.h&gt;</span>.</p><div class="quotebox"><blockquote><div><p>_https://searchfox.org/firefox-main/source/dom/media/AudioConverter.cpp</p><div class="codebox"><pre><code>#include &quot;AudioConverter.h&quot;

#include &lt;speex/speex_resampler.h&gt; </code></pre></div></div></blockquote></div><p>But here’s the twist:</p><ul><li><p>On <strong>macOS</strong>, cubeb logs:<br /><span class="bbc">Input and output sample-rate match, target rate of 48000Hz</span></p></li><li><p>On <strong>Linux</strong>? Silence.<br />Nothing. Nada. Zilch.</p></li></ul><div class="quotebox"><blockquote><div><p>🚨 <strong>Suspicious?</strong><br />Or is Mozilla simply not telling Linux users what it’s up to?</p></div></blockquote></div><p>macOS Firefox logs:</p><div class="codebox"><pre><code>➤ MOZ_LOG=&quot;MediaDecoder:4,cubeb:5&quot; stdbuf -oL /Applications/Firefox\ Developer\ Edition.app/Contents/MacOS/firefox 2&gt;&amp;1 https://youtu.be/uO6jfQ5tQHM | ggrep  --line-buffered -E &quot;MetadataLoaded.*rate=|FirstFrameLoaded.*rate=|CubebStreamInit output stream rate|target rate|Output hardware&quot; | ggrep -v &quot;hasVideo=0&quot;
[Child 4501: Main Thread]: D/MediaDecoder MediaDecoder[11631e700] MetadataLoaded, channels=2 rate=48000 hasAudio=1 hasVideo=1
[Child 4501: Main Thread]: D/MediaDecoder MediaDecoder[116f37300] MetadataLoaded, channels=2 rate=48000 hasAudio=1 hasVideo=1
[Child 4501: Main Thread]: D/MediaDecoder MediaDecoder[116f37300] FirstFrameLoaded, channels=2 rate=48000 hasAudio=1 hasVideo=1 mPlayState=PLAY_STATE_LOADING transportSeekable=1
[Child 4501: MediaDecoderStateMachine #1]: I/cubeb CubebStreamInit output stream rate 48000
[Parent 4486: AudioIPC Server RPC]: E/cubeb mod.rs:3995: (0x183e31c00) Output hardware description: AudioStreamBasicDescription { mSampleRate: 96000.0, mFormatID: 1819304813, mFormatFlags: 9, mBytesPerPacket: 8, mFramesPerPacket: 1, mBytesPerFrame: 8, mChannelsPerFrame: 2, mBitsPerChannel: 32, mReserved: 0 }
[Parent 4486: AudioIPC Server RPC]: E/cubeb cubeb_resampler_internal.h:553:Input and output sample-rate match, target rate of 48000Hz</code></pre></div><p>On macOS, Firefox appears to feign transparency and user-friendliness. But macOS isn’t quite Linux: applications ought to behave in a civilised manner.</p><p>Right. So Firefox has its own resampler, and cubeb has its own as well - meaning the audio could be quietly upsampled and downsampled like some sort of secret internal game of pass-the-parcel, and we’d never even see it in the logs.</p><p>Typical, really. Everything’s transparent and user-friendly - just not <em>actually</em>.</p><p><strong>What&#039;s Actually Happening</strong></p><ol class="decimal"><li><p><strong>Resampling</strong>: Cubeb uses its Speex-based resampler (<span class="bbc">cubeb_resampler_internal.h:199–207</span>).</p></li><li><p><strong>Stream initialisation</strong>: Once the target rate is determined, Cubeb sets up the stream at 48kHz (<span class="bbc">cubeb_resampler_internal.h:561–577</span>).</p></li><li><p><strong>Passthrough mode</strong>: When input and output rates match, Cubeb uses a passthrough resampler that simply forwards buffers without conversion (<span class="bbc">cubeb_resampler_internal.h:548–556</span>).</p></li></ol><p>The resampler selection logic in <span class="bbc">cubeb_resampler_create_internal()</span> confirms this:</p><div class="codebox"><pre><code>// Check if rates match - if so, use passthrough  
if (((input_params &amp;&amp; input_params-&gt;rate == target_rate) &amp;&amp;  
     (output_params &amp;&amp; output_params-&gt;rate == target_rate)) ||  
    (input_params &amp;&amp; !output_params &amp;&amp; (input_params-&gt;rate == target_rate)) ||  
    (output_params &amp;&amp; !input_params &amp;&amp;  
     (output_params-&gt;rate == target_rate))) {  
  LOG(&quot;Input and output sample-rate match, target rate of %dHz&quot;, target_rate);  
  return new passthrough_resampler&lt;T&gt;(...);  
}</code></pre></div><p>When rates don’t match, it creates a <span class="bbc">cubeb_resampler_speex_one_way</span> for conversion (<span class="bbc">cubeb_resampler_internal.h:187–203</span>).</p><p><strong>🔍 Step 2: The Bit Depth Conspiracy</strong><br />Firefox converts <strong>everything</strong> to <strong>32-bit float</strong> - internally.</p><p>But let’s be honest:</p><ul><li><p><strong>20 years ago</strong>, <span class="bbc">fftrate</span> used <strong>64-bit float</strong>.</p></li><li><p><strong>Today</strong>, serious audio tools use <strong>128-bit float</strong> or more.</p></li></ul><p>And what does Firefox do?</p><div class="codebox"><pre><code>sample spec: float32le 2ch 48000Hz</code></pre></div><div class="quotebox"><blockquote><div><p>🧠 <strong>32-bit float</strong> - the <strong>Stone Age</strong> of precision.<br />It works, but is it <em>good enough</em>?</p></div></blockquote></div><p>This isn’t about whether it functions — it’s whether it respects the medium. Firefox settles for the lowest common denominator, even when the hardware and OS are ready to do better.</p><p><strong>🧩 Step 3: Who’s Really Resampling?</strong><br />You’ve set:</p><div class="codebox"><pre><code>media.resampling.enabled   false</code></pre></div><p>So Firefox <strong>should not resample</strong>.</p><p>Logs show:</p><div class="codebox"><pre><code>MetadataLoaded, channels=2 rate=48000 hasAudio=1 hasVideo=1
FirstFrameLoaded, channels=2 rate=48000 hasAudio=1 hasVideo=1 
CubebStreamInit output stream rate 48000</code></pre></div><p><strong>🛠️ Final Command: Firefox logging together with fftrate logging</strong></p><div class="codebox"><pre><code>➤ MOZ_LOG=&quot;MediaDecoder:4,cubeb:5&quot; stdbuf -oL firefox 2&gt;&amp;1 https://youtu.be/uO6jfQ5tQHM | grep  --line-buffered -E &quot;MetadataLoaded.*rate=|FirstFrameLoaded.*rate=|CubebStreamInit output stream rate|target rate|Output hardware|Input|Output|Rates&quot; | grep -v &quot;hasVideo=0&quot;
[Child 13197: Main Thread]: D/MediaDecoder MediaDecoder[7f6c62c17900] MetadataLoaded, channels=2 rate=48000 hasAudio=1 hasVideo=1
Input:  44100 Hz, 2 ch, &#039;s32_le&#039; (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, &#039;s16_le&#039; (0x2): dummy = 0, period = 1920
Rates:  44100 --&gt; 48000 (J: 0.00%, T: FFT, W: Vorbis)
[Child 13197: Main Thread]: D/MediaDecoder MediaDecoder[7f6c62c17900] FirstFrameLoaded, channels=2 rate=48000 hasAudio=1 hasVideo=1 mPlayState=PLAY_STATE_LOADING transportSeekable=1
[Child 13197: MediaDecoderStateMachine #1]: I/cubeb CubebStreamInit output stream rate 48000
Input:  48000 Hz, 2 ch, &#039;s32_le&#039; (0xa): dummy = 0, period = 1920
Output: 48000 Hz, 2 ch, &#039;s16_le&#039; (0x2): dummy = 0, period = 1920
Rates:  48000 --&gt; 48000 (J: 0.00%, T: None, W: Planar)</code></pre></div><p>This reflects only the observable behaviour. The full pipeline? Still hidden. As usual.</p><p><strong>The Mystery Audio Stream</strong></p><div class="codebox"><pre><code>Input:  44100 Hz, 2 ch, &#039;s32_le&#039; (0xa): dummy = 0, period = 1764</code></pre></div><p><strong>The Short and Curious Tale</strong><br />Right then, here&#039;s what&#039;s happening: Firefox, being a proper gentleman, politely taps your audio system on the shoulder to ask, &quot;I say, what sample rate do you prefer?&quot; This happens through Cubeb&#039;s <span class="bbc">alsa_get_preferred_sample_rate()</span> function.</p><p>Firefox tries 44.1kHz first (a rather common rate, don&#039;t you know), but your dmix plugin, being a bit of a stickler for rules, insists on 48kHz. So ALSA’s resampler steps in like a proper butler, converting the stream—even though Firefox requested <span class="bbc">SND_PCM_NO_AUTO_RESAMPLE</span>.</p><p>The &quot;dummy = 0&quot; in your logs? That&#039;s just ALSA&#039;s way of saying &quot;This is a real device, gov&#039;nor, not some test dummy.&quot;</p><p><strong>Why This Isn&#039;t Your YouTube Video</strong><br />This probing happens before any actual playback — it&#039;s merely Firefox checking what your audio system can handle. The actual YouTube stream will use whatever rate this probe determines (likely 48kHz in your case).</p><p><strong>The Bottom Line</strong><br />Perfectly normal behaviour, old chap! Just Firefox being thorough and your dmix plugin being particular. The resampling you see is ALSA doing its thing, completely separate from Cubeb&#039;s internal workings. Your hardware supporting 44.1kHz doesn&#039;t stop dmix from having its own ideas about proper audio rates.</p><p><strong>Notes</strong></p><ul><li><p>This probe stream mechanism is used across all Cubeb backends for capability detection.</p></li><li><p>The format <span class="bbc">&#039;s32_le&#039;</span> is 32-bit signed integer.</p></li><li><p>The <span class="bbc">&quot;T: FFT&quot;</span> indicates ALSA&#039;s FFT-based resampling algorithm.</p></li><li><p><span class="bbc">&quot;J: 0.00%&quot;</span> shows minimal jitter — the conversion is working rather well indeed.</p></li></ul><p><strong>🧙♂️ Conclusion</strong><br />We cannot <em>prove</em> Firefox is resampling — because <strong>it doesn’t log it</strong>.</p><p>But we know:</p><ul><li><p>It uses <strong>Speex resampler</strong>.</p></li><li><p>It <strong>hides resampling logs on Linux</strong>.</p></li></ul><p>So is it resampling?</p><div class="quotebox"><blockquote><div><p>🔎 <strong>We may never know.</strong><br />But we’ll keep watching.</p></div></blockquote></div><p><strong>Citations</strong></p><p><strong>File:</strong> src/cubeb_alsa.c (L1228-1272)</p><div class="codebox"><pre class="vscroll"><code>static int
alsa_get_preferred_sample_rate(cubeb * ctx, uint32_t * rate)
{
  (void)ctx;
  int r, dir;
  snd_pcm_t * pcm;
  snd_pcm_hw_params_t * hw_params;

  snd_pcm_hw_params_alloca(&amp;hw_params);

  /* get a pcm, disabling resampling, so we get a rate the
   * hardware/dmix/pulse/etc. supports. */
  r = WRAP(snd_pcm_open)(&amp;pcm, CUBEB_ALSA_PCM_NAME, SND_PCM_STREAM_PLAYBACK,
                         SND_PCM_NO_AUTO_RESAMPLE);
  if (r &lt; 0) {
    return CUBEB_ERROR;
  }

  r = WRAP(snd_pcm_hw_params_any)(pcm, hw_params);
  if (r &lt; 0) {
    WRAP(snd_pcm_close)(pcm);
    return CUBEB_ERROR;
  }

  r = WRAP(snd_pcm_hw_params_get_rate)(hw_params, rate, &amp;dir);
  if (r &gt;= 0) {
    /* There is a default rate: use it. */
    WRAP(snd_pcm_close)(pcm);
    return CUBEB_OK;
  }

  /* Use a common rate, alsa may adjust it based on hw/etc. capabilities. */
  *rate = 44100;

  r = WRAP(snd_pcm_hw_params_set_rate_near)(pcm, hw_params, rate, NULL);
  if (r &lt; 0) {
    WRAP(snd_pcm_close)(pcm);
    return CUBEB_ERROR;
  }

  WRAP(snd_pcm_close)(pcm);

  return CUBEB_OK;
}</code></pre></div>]]></description>
			<author><![CDATA[dummy@example.com (igorzwx)]]></author>
			<pubDate>Thu, 27 Nov 2025 18:47:37 +0000</pubDate>
			<guid>https://dev1galaxy.org/viewtopic.php?pid=60153#p60153</guid>
		</item>
	</channel>
</rss>
