GNOME Bugzilla – Bug 630779
The "CD Quality" MP3 profile is far from CD quality; a "portable MP3 player" profile would be desirable
Last modified: 2021-06-11 15:31:20 UTC
Summary ======= The quality setting passed to the lamemp3enc gstreamer element is too low to be called "CD quality". However, if we set it to a more acceptable value, it will create files that most people would consider too large for use in a portable MP3 player. Therefore, we propose replacing the current two gnome-media MP3 profiles ("CD Quality" and "Voice Quality") with 3 profiles, using the following gstreamer pipelines: CD Quality ---------- audio/x-raw-int,rate=44100,channels=2 ! lamemp3enc name=enc target=0 quality=2 ! xingmux ! id3v2mux Portable MP3 Player Quality --------------------------- audio/x-raw-int,rate=44100,channels=2 ! lamemp3enc name=enc target=0 quality=6 ! xingmux ! id3v2mux Voice Quality ------------- audio/x-raw-int,rate=44100,channels=2 ! lamemp3enc name=enc target=1 bitrate=56 mono=true ! xingmux ! id3v2mux Full rationale ============== The "CD Quality" MP3 profile calls the lamemp3enc element as follows: lamemp3enc name=enc target=0 quality=6 According to extensive testing done by hydrogenaudio.org , a community of digital audio professionals and enthusiasts, this setting (which is equivalent to the -V6 flag in the standalone lame program) produces an "acceptable" quality for "portable" use, defined as "background noise and low bitrate requirement, small sizes". This does not seem appropriate for a preset labeled "CD quality"; it would be better to use their recommended settings for "High quality: HiFi, home or quiet listening", which would be -V0, -V1, -V2 or -V3. Any of these options would be OK AFAIAC, but I would recommend quality=2 (equivalent of -V2) because: 1) this is the setting that is used when calling standalone LAME with the "--preset fast standard" flag, so it may be considered "standard quality"; 2) according to the consensus at hydrogenaudio.org , -V3 and better should produce perceptual transparency for most people and most audio samples. To allow for a small margin (thinking of gnome-media users with very sensitive ears and problematic audio samples), I would suggest to go "1 notch better", which would be quality=2 (equivalent of -V2). Of course, one could even go for a larger margin, but that would increase the bit rate (ie. file size) too much IMHO; 3) if my "portable MP3 player quality" proposal is implemented (-V6; see below), it seems sensible to have a wide quality gap between "portable MP3 player" and "CD quality", in order to give the user a wider range of choices. Again, one could even go further (quality=1 or quality=0), but I feel that would increase the bit rate/file size too much. Because using any of these "CD quality" settings would produce larger files than most users would find acceptable for their portable MP3 player, and because having CD quality encoding is pointless for the listening environments in which portable MP3 players are typically used, I furthermore propose to add a new "portable MP3 player quality" profile, which would calls the lamemp3enc element with quality=6 Finally, when we're at it, we could update the "voice quality" preset according to hydrogenaudio.org 's recommendation, which would be lamemp3enc name=enc target=1 bitrate=56 mono=true Source ====== http://wiki.hydrogenaudio.org/index.php?title=LAME#Recommended_encoder_settings
Created attachment 171323 [details] [review] Patch for root/profiles/gnome-audio-profiles.schemas.in.in This is a proposed patch, implementing the changes described in my previous post. I hope the format is right -- I'm not yet perfectly familiar with these tools.
Comment on attachment 171323 [details] [review] Patch for root/profiles/gnome-audio-profiles.schemas.in.in --- a/profiles/gnome-audio-profiles.schemas.in.in 2010-09-28 22:48:59.000000000 -0400 +++ b/profiles/gnome-audio-profiles.schemas.in.in 2010-09-28 23:03:28.000000000 -0400 @@ -8,7 +8,7 @@ <owner>gnome-media</owner> <type>list</type> <list_type>string</list_type> - <default>[cdlossy,cdlossless,aac,mp2,mp3,voicelossy,voicelossless]</default> + <default>[cdlossy,cdlossless,aac,mp2,cdmp3,portmp3,voicemp3,voicelossy,voicelossless]</default> <locale name="C"> <short>List of profiles</short> <long> @@ -460,10 +460,10 @@ </locale> </schema> - <!-- MP3 --> + <!-- MP3, CD Quality --> <schema> - <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/mp3/name</key> - <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/mp3/name</applyto> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/cdmp3/name</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/cdmp3/name</applyto> <owner>gnome-media</owner> <type>string</type> <locale name="C"> @@ -477,8 +477,8 @@ </schema> <schema> - <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/mp3/description</key> - <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/mp3/description</applyto> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/cdmp3/description</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/cdmp3/description</applyto> <owner>gnome-media</owner> <type>string</type> <locale name="C"> @@ -492,8 +492,82 @@ </schema> <schema> - <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/mp3/pipeline</key> - <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/mp3/pipeline</applyto> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/cdmp3/pipeline</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/cdmp3/pipeline</applyto> + <owner>gnome-media</owner> + <type>string</type> + <default>audio/x-raw-int,rate=44100,channels=2 ! lamemp3enc name=enc target=0 quality=2 ! xingmux ! id3v2mux</default> + <locale name="C"> + <short>The partial GStreamer pipeline used</short> + <long> + A partial GStreamer pipeline to use for this profile. + </long> + </locale> + </schema> + + <schema> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/cdmp3/extension</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/cdmp3/extension</applyto> + <owner>gnome-media</owner> + <type>string</type> + <default>mp3</default> + <locale name="C"> + <short>The default file extension for this profile</short> + <long> + A filename extension to be used when storing files encoded + with this profile. + </long> + </locale> + </schema> + + <schema> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/active</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/cdmp3/active</applyto> + <owner>gnome-media</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Whether this profile is to be used</short> + <long> + Whether to use and display this profile. + </long> + </locale> + </schema> + + <!-- MP3, Portable MP3 Player Quality --> + <schema> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/portmp3/name</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/portmp3/name</applyto> + <owner>gnome-media</owner> + <type>string</type> + <locale name="C"> + <default>Portable MP3 Player Quality, MP3</default> + <short>A short name for the audio profile</short> + <long> + A short name for the audio profile, to be used in selections + and uniquely identifying the profile. + </long> + </locale> + </schema> + + <schema> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/portmp3/description</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/portmp3/description</applyto> + <owner>gnome-media</owner> + <type>string</type> + <locale name="C"> + <default>Used for preparing files for copying to portable MP3 players using the lossy MP3 codec. This preset is a trade-off between file size and quality; the quality should be acceptable for slightly noisy listening environments and non-hi-fi listening equipment. Note that using this format may be illegal in your jurisdiction; contact your lawyer for advice.</default> + <short>A description for the audio profile</short> + <long> + A description of the profile, containing more information and + describing when to use this profile. + </long> + </locale> + </schema> + + <schema> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/portmp3/pipeline</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/portmp3/pipeline</applyto> <owner>gnome-media</owner> <type>string</type> <default>audio/x-raw-int,rate=44100,channels=2 ! lamemp3enc name=enc target=0 quality=6 ! xingmux ! id3v2mux</default> @@ -506,8 +580,82 @@ </schema> <schema> - <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/mp3/extension</key> - <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/mp3/extension</applyto> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/portmp3/extension</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/portmp3/extension</applyto> + <owner>gnome-media</owner> + <type>string</type> + <default>mp3</default> + <locale name="C"> + <short>The default file extension for this profile</short> + <long> + A filename extension to be used when storing files encoded + with this profile. + </long> + </locale> + </schema> + + <schema> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/active</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/portmp3/active</applyto> + <owner>gnome-media</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Whether this profile is to be used</short> + <long> + Whether to use and display this profile. + </long> + </locale> + </schema> + + <!-- MP3, Voice Quality --> + <schema> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/voicemp3/name</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/voicemp3/name</applyto> + <owner>gnome-media</owner> + <type>string</type> + <locale name="C"> + <default>Voice Quality, MP3</default> + <short>A short name for the audio profile</short> + <long> + A short name for the audio profile, to be used in selections + and uniquely identifying the profile. + </long> + </locale> + </schema> + + <schema> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/voicemp3/description</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/voicemp3/description</applyto> + <owner>gnome-media</owner> + <type>string</type> + <locale name="C"> + <default>Used for preparing files for copying to devices that only support the MP3 codec, if file size / bit rate should be kept as low as possible and quality is not important. Note that using this format may be illegal in your jurisdiction; contact your lawyer for advice.</default> + <short>A description for the audio profile</short> + <long> + A description of the profile, containing more information and + describing when to use this profile. + </long> + </locale> + </schema> + + <schema> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/voicemp3/pipeline</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/voicemp3/pipeline</applyto> + <owner>gnome-media</owner> + <type>string</type> + <default>audio/x-raw-int,rate=44100,channels=2 ! lamemp3enc name=enc target=1 bitrate=56 mono=true ! xingmux ! id3v2mux</default> + <locale name="C"> + <short>The partial GStreamer pipeline used</short> + <long> + A partial GStreamer pipeline to use for this profile. + </long> + </locale> + </schema> + + <schema> + <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/voicemp3/extension</key> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/voicemp3/extension</applyto> <owner>gnome-media</owner> <type>string</type> <default>mp3</default> @@ -522,7 +670,7 @@ <schema> <key>/schemas/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/active</key> - <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/mp3/active</applyto> + <applyto>/system/gstreamer/@GST_MAJORMINOR@/audio/profiles/voicemp3/active</applyto> <owner>gnome-media</owner> <type>bool</type> <default>true</default>
Created attachment 171324 [details] [review] Patch for root/profiles/gnome-audio-profiles.schemas.in.in This is a proposed patch, implementing the changes described in my previous post. I hope the format is right -- I'm not yet perfectly familiar with these tools. I apologize for the two previous posts; I uploaded the wrong file, then tried to change it, which inadvertently resulted in the new file being posted as a comment instead of attached as a patch. 3rd time's a charm, or so I hope.
Mass move to new component.
libgnome-media-profiles is not under active development anymore. Its codebase has been archived. Closing all its open tickets as part of housekeeping. See also https://gitlab.gnome.org/Infrastructure/Infrastructure/-/issues/595