To capture the reasoning behind these changes...
Ian Nartowicz wrote:
In section 5.1:
Virtually all players and media frameworks should apply it by
- default. If a player chooses to apply any volume adjustment or
- gain modification, such as the R128_TRACK_GAIN, R128_ALBUM_GAIN
- (see Section 5.2) or a user-facing volume knob, the adjustment
- MUST be applied in addition to this output gain in order to
- achieve playback at the desired volume.
+ default. If a player chooses to apply any gain modification,
+ such as the R128_TRACK_GAIN or R128_ALBUM_GAIN (see Section 5.2),
+ the adjustment MUST be applied in addition to this output
+ gain in order to achieve playback at the normalised volume.
Ian felt that including the volume knob example made this text unclear.
The new text makes it explicit that 'output gain' + R128_TACK_GAIN or
'output gain' + R128_ALBUM_GAIN gives you _normalized_ volume (as
defined by EBU R128), which may or may not have any relation to "desired
volume". I don't think we need to be in the business of telling players
how to implement a volume knob, so taking the example out seemed best.
In section 5.2.1:
- If an encoder wishes to use R128 normalization, and the output gain
- is not otherwise constrained or specified, the encoder SHOULD write
- the R128 gain into the 'output gain' field and store a tag containing
- "R128_TRACK_GAIN=0". That is, it should assume that by default tools
+ The encoder should assume that by default tools
will respect the 'output gain' field, and not the comment tag. If a
tool modifies the ID header's 'output gain' field, it MUST also
update or remove the R128_TRACK_GAIN and R128_ALBUM_GAIN comment tags
This was causing confusion because it suggested that an encoder should
_always_ prefer to put the track gain into the 'output gain' field. In
reality we used to have text saying that using the album gain for
'output gain' was preferred, and this was just an alternative (the
leading "If" clause being the the important part of the sentence, not
the SHOULD). However, this sentence is entirely redundant with the text
from the definition of the 'output gain' field: "An encoder SHOULD set
this field to zero, and instead apply any gain prior to encoding, when
this is possible and does not conflict with the user's wishes." Removing
the sentence avoids the confusion.
I've applied both sets of changes locally (using "An encoder" instead of
"The encoder"), and they'll be included in the next update (after WGLC).
I also moved the "assume by default" sentence to the end of the
paragraph and removed the preceding paragraph break, as the warning
about being required to update the tags when the header value changes
now logically follows from the declaration that these tags are relative
to that field.
_______________________________________________
codec mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/codec