[codec] draft-ietf-codec-oggopus: R128_TRACK_GAIN units

Mark Harris <mark.hsj@gmail.com> Mon, 08 September 2014 17:11 UTC

Return-Path: <markh.sj@gmail.com>
X-Original-To: codec@ietfa.amsl.com
Delivered-To: codec@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com []) by ietfa.amsl.com (Postfix) with ESMTP id 329801A893F for <codec@ietfa.amsl.com>; Mon, 8 Sep 2014 10:11:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.101
X-Spam-Status: No, score=-0.101 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id 8A7OQrnQs268 for <codec@ietfa.amsl.com>; Mon, 8 Sep 2014 10:11:43 -0700 (PDT)
Received: from mail-ie0-x234.google.com (mail-ie0-x234.google.com [IPv6:2607:f8b0:4001:c03::234]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 44ED61A88FF for <codec@ietf.org>; Mon, 8 Sep 2014 10:09:50 -0700 (PDT)
Received: by mail-ie0-f180.google.com with SMTP id rd18so1217242iec.39 for <codec@ietf.org>; Mon, 08 Sep 2014 10:09:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:message-id:subject:from:to:content-type; bh=ghdsuZbsgg1sd6pKq6XwPONiRx5wbiyYaKXhEg2skrQ=; b=U4z19rPnlykMVqoWv8dDhXrHSAmQ09BNBzgoBmZGzgsoLSZWmoPawPHHY4ynOTMV5p D1q8G+W+uITHd+XQb77T1er0O7KVIqJvxXSI5aKVkTUL4gd9iKE8Q7L3TX1GFvxo1+d7 A8Z7m76BOO33AKXs2ahjgxtG08VAEGKk5SRrpj7SQgzrsvSBRK3O4NwD9I5NaJI+G6PU CdAPRlNzJeL3TkPYcaIxX/K4NPUkkec2efbMAAfl3lgRn/PnDIq8MbTvKYuIlXpoIWYP fd5KCD1tQkEtRws2/hDyJUL4/jPQzZDE9Afix6/feU4EQwhVtx6rIWdJ1MLp8cOWoCDV /OzQ==
MIME-Version: 1.0
X-Received: by with SMTP id p9mr443735igi.24.1410196189646; Mon, 08 Sep 2014 10:09:49 -0700 (PDT)
Sender: markh.sj@gmail.com
Received: by with HTTP; Mon, 8 Sep 2014 10:09:49 -0700 (PDT)
Date: Mon, 8 Sep 2014 10:09:49 -0700
X-Google-Sender-Auth: Dcu7lcyJ9l-j5oNixT7oOG3oxbU
Message-ID: <CAMdZqKGW7QvHwfKFyY1xNPJ0R=Roi0-_KPmm8oLZC2U4GY_NQA@mail.gmail.com>
From: Mark Harris <mark.hsj@gmail.com>
To: "codec@ietf.org" <codec@ietf.org>
Content-Type: text/plain; charset=UTF-8
Archived-At: http://mailarchive.ietf.org/arch/msg/codec/7R8XUfJQY39XKJ1UU6kFM-VAwuY
Subject: [codec] draft-ietf-codec-oggopus: R128_TRACK_GAIN units
X-BeenThere: codec@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Codec WG <codec.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/codec>, <mailto:codec-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/codec/>
List-Post: <mailto:codec@ietf.org>
List-Help: <mailto:codec-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/codec>, <mailto:codec-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 08 Sep 2014 17:11:45 -0000

The tags R128_TRACK_GAIN and R128_ALBUM_GAIN are specified by
draft-ietf-codec-oggopus-04 to contain a level adjustment as a fixed
point Q7.8 value; i.e. in the 1/256 LU units that are used in the
output gain field of the Ogg Opus header.  Is it expected that these
units would be adopted by other codecs?

Because tags are most often used for codec-independent metadata such
as TITLE and ARTIST, code to handle them is often shared between
formats and they may be copied when transcoding or remuxing.  I am
concerned that if Ogg Opus uses 1/256 LU units, and another format or
codec uses the much more obvious LU (dB) units, then someone may be in
for a jolt (or almost complete silence) when their player interprets a
value intended to be in 1/256 LU units as being in standard LU units.

Because there is an existing nearly universally used standard unit, it
would seem to be much better to use that unit in tag values,
especially if the value is a string with no units, in order to
minimize the chance that the wrong units will be used and reduce
confusion for people who are viewing or editing the text tags or
converting or comparing with standard ReplayGain tags.  It should not
be necessary to be an expert on the Ogg Opus specification in order to
be able to interpret the value of these tags, since there is no reason
for such information to be codec-specific or container-specific.

A related issue is the reference level.  The EBU R128 reference level
is -23 LUFS.  Prior to EBU R128 a -18 LUFS reference level was
commonly used, and there are other reference levels used in some
specific contexts.  Because the tag is used to normalize loudness of
audio from different sources, possibly using different codecs,
containers, and reference level standards, it would seem more sensible
to put the actual loudness measurement in the tag, and let the player
adjust it as needed to match the target loudness that it is using for
all audio sources.  In fact EBU R128 specifically recommends that
"Loudness Metadata shall correctly indicate the actual Programme
Loudness", not a gain adjustment.

In light of these issues, would it not be better to record a
TRACK_LOUDNESS tag in LUFS and an ALBUM_LOUDNESS tag (which would have
the same value for all tracks that are part of the album) also in

In order to allow a player to adjust the loudness to any desired
target loudness and dynamic range, ideally the loudness range and
maximum true peak level would also optionally be available in a
well-defined tag in order to allow the player to insert dynamic range
compression if necessary.

All of these tags should be codec-independent.

As specified by EBU R128, loudness, loudness range, and true peak
measurements should be made according to ITU-R BS.1770 and EBU Tech

 - Mark