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

Reply via email to