Ben Campbell wrote:
That makes me wonder why the end-of-stream flag part is a SHOULD and not
a MUST, though. Are there reasonable circumstances to violate that SHOULD?

The usual case is again, saving a live stream that gets interrupted before it ends.

This might be better stated as non-normative guidance.

Given that this is a general Ogg requirement, and not really Opus-specific, I think you are right.

Here are the changes I propose:

-The first audio data page SHOULD NOT have the 'continued packet' flag set
- (which would indicate the first audio data packet is continued from a previous
- page).
-Packets MUST be placed into Ogg pages in order until the end of stream.
-Audio packets MAY span page boundaries.
+Packets are placed into Ogg pages in order until the end of stream.
+Audio data packets might span page boundaries.
+The first audio data page could have the 'continued packet' flag set
+ (indicating the first audio data packet is continued from a previous page) if,
+ for example, it was a live stream joined mid-broadcast, with the headers
+ pasted on the front.
+A demuxer SHOULD NOT attempt to decode the data for the first packet on a page
+ with the 'continued packet' flag set if the previous page with packet data
+ does not end in a continued packet (i.e., did not end with a lacing value of + 255) or if the page sequence numbers are not consecutive, unless the demuxer
+ has some special knowledge that would allow it to interpret this data
+ despite the missing pieces.

Along with

-The last page SHOULD have the 'end of stream' flag set, but implementations
- need to be prepared to deal with truncated streams that do not have a page
- marked 'end of stream'.
-The final packet on the last page SHOULD NOT be a continued packet, i.e., the
- final lacing value SHOULD be less than 255.
+A logical stream ends with a page with the 'end of stream' flag set, but
+ implementations need to be prepared to deal with truncated streams that do not
+ have a page marked 'end of stream'.
+There is no reason for the final packet on the last page to be a continued
+ packet, i.e., for the final lacing value to be less than 255.
+However, demuxers might encounter such streams, possibly as the result of a
+ transfer that did not complete or of corruption.
+A demuxer SHOULD NOT attempt to decode the data from a packet that continues + onto a subsequent page (i.e., when the page ends with a lacing value of 255) + if the next page with packet data does not have the 'continued packet' flag + set or does not exist, or if the page sequence numbers are not consecutive, + unless the demuxer has some special knowledge that would allow it to interpret
+ this data despite the missing pieces.

That gives specific guidance on what a demuxer needs to do to avoid corrupting the Opus state machine with garbage data (which is generally worse for Opus than simply skipping decode of a packet). It is also what is most broadly implemented.

It would be helpful to mention that in the text.

I added something about that.

2119 :-) It's not so much how big of a stick you need to get people to
do the right thing as it is how bad do things break if people do the
wrong thing. (I do agree with the sentiment to not put in MUSTs that you

Given that historically, many audio formats (including MP3) did not support sample-accurate durations at all, I don't think the world ends. But it certainly would break features like gapless playback that some users find important.

The current wording says "see [seeking] for general implementation
guidelines." If those are optional guidelines, it would help to say so,
or describe it as "some example guidelines". OTOH, if you really prefer
the approach in [seeking], then it still makes sense for it to be
normative.

I've added the optional/example qualifier.

I also updated the claim on the number of bisections required, as our implementations have improved since the draft was first written.

What does it mean, in context, to "reject" headers?

The same thing as rejecting a stream (i.e., don't try to play/decode
it). Changed to say that instead.

Which "that"?

To quote the attached diff:

-Implementations SHOULD reject ID headers which do not contain enough data for
- these fields, even if they contain a valid Magic Signature.
+Implementations SHOULD reject streams with ID headers that do not contain
+ enough data for these fields, even if they contain a valid Magic Signature.

Maybe this is a conventional way to say things in the codec community,
but when I see "reject" I usually think that means you generate some
sort of error back to the source of the thing you reject. (As opposed to
"ignore")

Well, the most likely behavior here is to tell the user that the file is not a valid Ogg Opus file, so your sense of "generating some sort of error back" is in fact correct. But that makes some application-level assumptions I'm not sure I'm comfortable writing normative text around. Any ideas for a better way to phrase this?

If this spec reserves those values, then people still need to update it
to assign them. If you want to make it extensible, then perhaps it needs
an IANA registry, which, depending on the assignment policy, may not
require an RFC at all (seems like "expert review" or "specification
required" might make sense).

An IANA registry actually does not seem like a terrible idea. Reading RFC 5226 it doesn't seem too hard to set one up. I attempted to draft some text.

it's what our "UPDATES" process is for. The idea that you might want to
informally experiment with different approaches is more convincing. But
if that is the case, it would be helpful to have a sentence to that
effect in the text.

Okay, I will add one.

(I do agree "Excessive" is a bit vague, so if there were a way to state
this more concretely it would improve things. But that's true for a
SHOULD as much as for a MUST).

The problem is that it depends very much on context. 60 kB might already be seen as excessive for an embedded system, but would never be noticed on a desktop.

In some contexts, there may be no confusion with multiple
normalization schemes. The language in this section was debated a good
[...]

I agree that SHOULD NOT may be appropriate here. My point is the text
should explain why. Almost anytime a SHOULD occurs, it's helpful to

I agree with your point very much in principle. We just may not have been as careful about it in practice as we should have been (and I appreciate you forcing us to clarify our thinking now). I'll add something to the effect of what I said above.

Did 6716 use a SHOULD?

It imposed no restrictions on the amount of padding at all.

attributed). But in any case, I'm looking for justification in the text.
(I do consider preventing the use of excessive bandwidth a good enough
reason for a MUST

I attempted to add some.

For the second, this is the same as the previous comment about
excessive allocations. I have no objection to changing this one, either.

I realize now there were 3 SHOULDs in that paragraph. I mean the one
about avoiding excessive allocations. It sounds like

You may have forgotten to complete your thought here.

Please consider saying something like "For more information on linear
prediction, see [XXX]." As it's currently stated, it looks like it says
MAY do X, where the reference specified X, which would require a
normative reference.

That's a good suggestion. Done.

That language is a bit of a problem for a standards track RFC. If people

You mean the current text, or the actual text that wound up in RFC 6716?

are really attached to it, we can pursue allowing it. But I expect
objections down the line. Keep in mind "NOTE WELL" says that any
contributions are subject to the rules of BCP 78 and 79.

Yes, I think this has more to do with letting people use such contributions _outside_ the context of the IETF (i.e., it grants additional rights to those already granted in BCP 78 and 79, which I understand is allowed).

You are probably right about people objecting down the line (again), but I am happy to address those objections when they come, as we did for RFC 6716.

In any case, 6716 is a bit more code centric , so the discussion made
more sense there.

Well, from our point of view, the XML source for both RFCs is included in the repository with libopus, which is distributed in Debian. If we didn't have some kind of grant like this, they would have to somehow strip those documents out. So it is not so much the code being in the RFC as the draft being distributed with the code.

In any case, I have attempted to draft an RFC Editor's note requesting the same text that RFC 6716 used. Since that text grants a license from the IETF Trust, instead of the authors, I assume that someone from the Trust will have to approve of it, however (and reading <http://www.ietf.org/proceedings/85/slides/slides-85-iesg-opsandtech-15.ppt> it seems that the current opinion of the Trust is that this approach is legally required).

I have also gone through and finished removing the 2119 language for general Ogg requirements.

The diff of all changes is attached. If these look good (or if it's simply helps in reviewing them) I can publish a new version.
diff --git a/doc/draft-ietf-codec-oggopus.xml b/doc/draft-ietf-codec-oggopus.xml
index b95e5bc..7489c20 100644
--- a/doc/draft-ietf-codec-oggopus.xml
+++ b/doc/draft-ietf-codec-oggopus.xml
@@ -1,14 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE rfc SYSTEM 'rfc2629.dtd' [
 <!ENTITY rfc2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
 <!ENTITY rfc3533 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3533.xml'>
 <!ENTITY rfc3629 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3629.xml'>
 <!ENTITY rfc4732 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4732.xml'>
+<!ENTITY rfc5226 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5226.xml'>
 <!ENTITY rfc5334 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5334.xml'>
 <!ENTITY rfc6381 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6381.xml'>
 <!ENTITY rfc6716 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6716.xml'>
 <!ENTITY rfc6982 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6982.xml'>
 <!ENTITY rfc7587 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7587.xml'>
 ]>
 <?rfc toc="yes" symrefs="yes" ?>
 
@@ -135,19 +136,19 @@ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
 <t>
 An Ogg Opus stream is organized as follows.
 </t>
 <t>
 There are two mandatory header packets.
 The first packet in the logical Ogg bitstream MUST contain the identification
  (ID) header, which uniquely identifies a stream as Opus audio.
 The format of this header is defined in <xref target="id_header"/>.
-It MUST be placed alone (without any other packet data) on the first page of
- the logical Ogg bitstream, and MUST complete on that page.
-This page MUST have its 'beginning of stream' flag set.
+It is placed alone (without any other packet data) on the first page of
+ the logical Ogg bitstream, and completes on that page.
+This page has its 'beginning of stream' flag set.
 </t>
 <t>
 The second packet in the logical Ogg bitstream MUST contain the comment header,
  which contains user-supplied metadata.
 The format of this header is defined in <xref target="comment_header"/>.
 It MAY span multiple pages, beginning on the second page of the logical
  stream.
 However many pages it spans, the comment header packet MUST finish the page on
@@ -182,31 +183,46 @@ The TOC sequence at the beginning of each Opus packet indicates the coding
  frames per packet, as described in Section&nbsp;3.1
  of&nbsp;<xref target="RFC6716"/>.
 The coding mode is one of SILK, Hybrid, or Constrained Energy Lapped Transform
  (CELT).
 The combination of coding mode, audio bandwidth, and frame size is referred to
  as the configuration of an Opus packet.
 </t>
 <t>
-The first audio data page SHOULD NOT have the 'continued packet' flag set
- (which would indicate the first audio data packet is continued from a previous
- page).
-Packets MUST be placed into Ogg pages in order until the end of stream.
-Audio packets MAY span page boundaries.
+Packets are placed into Ogg pages in order until the end of stream.
+Audio data packets might span page boundaries.
+The first audio data page could have the 'continued packet' flag set
+ (indicating the first audio data packet is continued from a previous page) if,
+ for example, it was a live stream joined mid-broadcast, with the headers
+ pasted on the front.
+A demuxer SHOULD NOT attempt to decode the data for the first packet on a page
+ with the 'continued packet' flag set if the previous page with packet data
+ does not end in a continued packet (i.e., did not end with a lacing value of
+ 255) or if the page sequence numbers are not consecutive, unless the demuxer
+ has some special knowledge that would allow it to interpret this data
+ despite the missing pieces.
 An implementation MUST treat a zero-octet audio data packet as if it were a
  malformed Opus packet as described in
  Section&nbsp;3.4 of&nbsp;<xref target="RFC6716"/>.
 </t>
 <t>
-The last page SHOULD have the 'end of stream' flag set, but implementations
- need to be prepared to deal with truncated streams that do not have a page
- marked 'end of stream'.
-The final packet on the last page SHOULD NOT be a continued packet, i.e., the
- final lacing value SHOULD be less than 255.
+A logical stream ends with a page with the 'end of stream' flag set, but
+ implementations need to be prepared to deal with truncated streams that do not
+ have a page marked 'end of stream'.
+There is no reason for the final packet on the last page to be a continued
+ packet, i.e., for the final lacing value to be less than 255.
+However, demuxers might encounter such streams, possibly as the result of a
+ transfer that did not complete or of corruption.
+A demuxer SHOULD NOT attempt to decode the data from a packet that continues
+ onto a subsequent page (i.e., when the page ends with a lacing value of 255)
+ if the next page with packet data does not have the 'continued packet' flag
+ set or does not exist, or if the page sequence numbers are not consecutive,
+ unless the demuxer has some special knowledge that would allow it to interpret
+ this data despite the missing pieces.
 There MUST NOT be any more pages in an Opus logical bitstream after a page
  marked 'end of stream'.
 </t>
 </section>
 
 <section anchor="granpos" title="Granule Position">
 <t>
 The granule position MUST be zero for the ID header page and the
@@ -219,18 +235,18 @@ The granule position of an audio data page encodes the total number of PCM
  samples in the stream up to and including the last fully-decodable sample from
  the last packet completed on that page.
 The granule position of the first audio data page will usually be larger than
  zero, as described in <xref target="start_granpos_restrictions"/>.
 </t>
 
 <t>
 A page that is entirely spanned by a single packet (that completes on a
- subsequent page) has no granule position, and the granule position field MUST
- be set to the special value '-1' in two's complement.
+ subsequent page) has no granule position, and the granule position field is
+ set to the special value '-1' in two's complement.
 </t>
 
 <t>
 The granule position of an audio data page is in units of PCM audio samples at
  a fixed rate of 48&nbsp;kHz (per channel; a stereo stream's granule position
  does not increment at twice the speed of a mono stream).
 It is possible to run an Opus decoder at other sampling rates, but the value
  in the granule position field always counts samples assuming a 48&nbsp;kHz
@@ -372,17 +388,18 @@ These samples need to be stored and decoded, as Opus is an asymptotically
  convergent predictive codec, meaning the decoded contents of each frame depend
  on the recent history of decoder inputs.
 However, a player will want to skip these samples after decoding them.
 </t>
 
 <t>
 A 'pre-skip' field in the ID header (see <xref target="id_header"/>) signals
  the number of samples that SHOULD be skipped (decoded but discarded) at the
- beginning of the stream.
+ beginning of the stream, though some specific applications might have a reason
+ for looking at that data.
 This amount need not be a multiple of 2.5&nbsp;ms, MAY be smaller than a single
  packet, or MAY span the contents of several packets.
 These samples are not valid audio.
 </t>
 
 <t>
 For example, if the first Opus frame uses the CELT mode, it will always
  produce 120 samples of windowed overlap-add data.
@@ -520,19 +537,19 @@ Both of these will be greater than '0' in this case.
 </t>
 </section>
 
 <section anchor="seeking_and_preroll" title="Seeking and Pre-roll">
 <t>
 Seeking in Ogg files is best performed using a bisection search for a page
  whose granule position corresponds to a PCM position at or before the seek
  target.
-With appropriately weighted bisection, accurate seeking can be performed with
- just three or four bisections even in multi-gigabyte files.
-See <xref target="seeking"/> for general implementation guidance.
+With appropriately weighted bisection, accurate seeking can be performed in
+ just one or two bisections on average, even in multi-gigabyte files.
+See <xref target="seeking"/> for an example of general implementation guidance.
 </t>
 
 <t>
 When seeking within an Ogg Opus stream, an implementation SHOULD start decoding
  (and discarding the output) at least 3840&nbsp;samples (80&nbsp;ms) prior to
  the seek target in order to ensure that the output audio is correct by the
  time it reaches the seek target.
 This 'pre-roll' is separate from, and unrelated to, the 'pre-skip' used at the
@@ -655,18 +672,18 @@ The original sample rate of the audio passed to the encoder is not preserved
 <vspace blankLines="1"/>
 An Ogg Opus player SHOULD select the playback sample rate according to the
  following procedure:
 <list style="numbers">
 <t>If the hardware supports 48&nbsp;kHz playback, decode at 48&nbsp;kHz.</t>
 <t>Otherwise, if the hardware's highest available sample rate is a supported
  rate, decode at this sample rate.</t>
 <t>Otherwise, if the hardware's highest available sample rate is less than
- 48&nbsp;kHz, decode at the next highest supported rate above this and
- resample.</t>
+ 48&nbsp;kHz, decode at the next higher Opus supported rate above the highest
+ available hardware rate and resample.</t>
 <t>Otherwise, decode at 48&nbsp;kHz and resample.</t>
 </list>
 However, the 'Input Sample Rate' field allows the muxer to pass the sample
  rate of the original input stream as metadata.
 This is useful when the user requires the output sample rate to match the
  input sample rate.
 For example, when not playing the output, an implementation writing PCM format
  samples to disk might choose to resample the audio back to the original input
@@ -1179,16 +1196,18 @@ Making this check before allocating the associated memory to contain the data
 
 <t>
 Immediately following the user comment list, the comment header MAY
  contain zero-padding or other binary data which is not specified here.
 If the least-significant bit of the first byte of this data is 1, then editors
  SHOULD preserve the contents of this data when updating the tags, but if this
  bit is 0, all such data MAY be treated as padding, and truncated or discarded
  as desired.
+This allows informal experimentation with the format of this binary data until
+ it can be specified later.
 </t>
 
 <t>
 The comment header can be arbitrarily large and might be spread over a large
  number of Ogg pages.
 Implementations MUST avoid attempting to allocate excessive amounts of memory
  when presented with a very large comment header.
 To accomplish this, implementations MAY reject a comment header larger than
@@ -1252,17 +1271,18 @@ If a player chooses to make use of the R128_TRACK_GAIN tag or the
 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 if present.
 A muxer SHOULD place the gain it wants other tools to use by default into the
  'output gain' field, and not the comment tag.
 </t>
 <t>
 To avoid confusion with multiple normalization schemes, an Opus comment header
  SHOULD NOT contain any of the REPLAYGAIN_TRACK_GAIN, REPLAYGAIN_TRACK_PEAK,
- REPLAYGAIN_ALBUM_GAIN, or REPLAYGAIN_ALBUM_PEAK tags.
+ REPLAYGAIN_ALBUM_GAIN, or REPLAYGAIN_ALBUM_PEAK tags, unless they are only
+ to be used in some context where there is guaranteed to be no such confusion.
 <xref target="EBU-R128"/> normalization is preferred to the earlier
  REPLAYGAIN schemes because of its clear definition and adoption by industry.
 Peak normalizations are difficult to calculate reliably for lossy codecs
  because of variation in excursion heights due to decoder differences.
 In the authors' investigations they were not applied consistently or broadly
  enough to merit inclusion here.
 </t>
 </section> <!-- end comment_format -->
@@ -1272,21 +1292,22 @@ In the authors' investigations they were not applied consistently or broadly
 
 <section anchor="packet_size_limits" title="Packet Size Limits">
 <t>
 Technically, valid Opus packets can be arbitrarily large due to the padding
  format, although the amount of non-padding data they can contain is bounded.
 These packets might be spread over a similarly enormous number of Ogg pages.
 When encoding, implementations SHOULD limit the use of padding in audio data
  packets to no more than is necessary to make a variable bitrate (VBR) stream
- constant bitrate (CBR).
+ constant bitrate (CBR), unless they have no reasonable way to determine what
+ is necessary.
 Demuxers SHOULD reject audio data packets (treat them as if they were malformed
  Opus packets with an invalid TOC sequence) larger than 61,440 octets per
- Opus stream.
-Such packets necessarily contain more padding than needed for this purpose.
+ Opus stream, unless they have a specific reason for allowing extra padding.
+Such packets necessarily contain more padding than needed to make a stream CBR.
 Demuxers MUST avoid attempting to allocate excessive amounts of memory when
  presented with a very large packet.
 Demuxers MAY reject or partially process audio data packets larger than
  61,440&nbsp;octets in an Ogg Opus stream with channel mapping families&nbsp;0
  or&nbsp;1.
 Demuxers MAY reject or partially process audio data packets in any Ogg Opus
  stream if the packet is larger than 61,440&nbsp;octets and also larger than
  7,680&nbsp;octets per Opus stream.
@@ -1339,20 +1360,21 @@ In encoders derived from the reference
 </t>
 <figure align="center">
 <artwork align="center"><![CDATA[
  opus_encoder_ctl(encoder_state, OPUS_GET_LOOKAHEAD(&delay_samples));
 ]]></artwork>
 </figure>
 <t>
 To achieve good quality in the very first samples of a stream, implementations
- MAY use linear predictive coding (LPC) extrapolation
- <xref target="linear-prediction"/> to generate at least 120 extra samples at
- the beginning to avoid the Opus encoder having to encode a discontinuous
- signal.
+ MAY use linear predictive coding (LPC) extrapolation to generate at least 120
+ extra samples at the beginning to avoid the Opus encoder having to encode a
+ discontinuous signal.
+For more information on linear prediction, see
+ <xref target="linear-prediction"/>.
 For an input file containing 'length' samples, the implementation SHOULD set
  the pre-skip header value to (delay_samples&nbsp;+&nbsp;extra_samples), encode
  at least (length&nbsp;+&nbsp;delay_samples&nbsp;+&nbsp;extra_samples)
  samples, and set the granule position of the last page to
  (length&nbsp;+&nbsp;delay_samples&nbsp;+&nbsp;extra_samples).
 This ensures that the encoded file has the same duration as the original, with
  no time offset. The best way to pad the end of the stream is to also use LPC
  extrapolation, but zero-padding is also acceptable.
@@ -1509,51 +1531,96 @@ In such cases the the '.opus' filename extension is NOT RECOMMENDED.
 
 <t>
 In either case, this document updates <xref target="RFC5334"/>
  to add 'opus' as a codecs parameter value with char[8]: 'OpusHead'
  as Codec Identifier.
 </t>
 </section>
 
-<section title="IANA Considerations">
+<section anchor="iana" title="IANA Considerations">
 <t>
 This document updates the IANA Media Types registry to add .opus
  as a file extension for "audio/ogg", and to add itself as a reference
  alongside <xref target="RFC5334"/> for "audio/ogg", "video/ogg", and
  "application/ogg" Media Types.
 </t>
+<t>
+This document defines a new registry "Opus Channel Mapping Families" to
+ indicate how the semantic meanings of the channels in a multi-channel Opus
+ stream are described.
+IANA SHALL create a new name space of "Opus Channel Mapping Families".
+All maintenance within and additions to the contents of this name space MUST be
+ according to the "Specification Requried with Expert Review" registration
+ policy as defined in <xref target="RFC5226"/>.
+Each registry entry consists of a Channel Mapping Family Number, which is
+ specified in decimal in the range 0 to 255, inclusive, and a Reference (or
+ list of references)
+Each Reference must point to sufficient documentation to describe what
+ information is coded in the Opus identification header for this channel
+ mapping family, how a demuxer determines the Stream Count ('N') and Coupled
+ Stream Count ('M') from this information, and how it determines the proper
+ interpretation of each of the decoded channels.
+</t>
+<t>
+This document defines three initial assignments for this registry.
+</t>
+<texttable>
+<ttcol>Value</ttcol><ttcol>Reference</ttcol>
+<c>0</c><c>[RFCXXXX] <xref target="channel_mapping_0"/></c>
+<c>1</c><c>[RFCXXXX] <xref target="channel_mapping_1"/></c>
+<c>255</c><c>[RFCXXXX] <xref target="channel_mapping_255"/></c>
+</texttable>
+<t>
+The designated expert will determine if the Reference points to a specification
+ that meets the requirements for permanence and ready availability laid out
+ in&nbsp;<xref target="RFC5226"/> and that it specifies the information
+ described above with sufficient clarity to allow interoperable
+ implementations.
+</t>
 </section>
 
 <section anchor="Acknowledgments" title="Acknowledgments">
 <t>
-Thanks to Mark Harris, Greg Maxwell, Christopher "Monty" Montgomery, and
- Jean-Marc Valin for their valuable contributions to this document.
+Thanks to Ben Campbell, Mark Harris, Greg Maxwell, Christopher "Monty"
+ Montgomery, Jean-Marc Valin, and Mo Zanaty for their valuable contributions to
+ this document.
 Additional thanks to Andrew D'Addesio, Greg Maxwell, and Vincent Penquerc'h for
  their feedback based on early implementations.
 </t>
 </section>
 
-<section title="Copying Conditions">
+<section title="RFC Editor Notes">
+<t>
+In&nbsp;<xref target="iana"/>, "RFCXXXX" is to be replaced with the RFC number
+ assigned to this draft.
+</t>
+<t>
+In the Copyright Notice at the start of the document, the following paragraph
+ is to be appended after the regular copyright notice text:
+</t>
 <t>
-The authors agree to grant third parties the irrevocable right to copy, use,
- and distribute the work, with or without modification, in any medium, without
- royalty, provided that, unless separate permission is granted, redistributed
- modified works do not contain misleading author, version, name of work, or
- endorsement information.
+"The licenses granted by the IETF Trust to this RFC under Section&nbsp;3.c of
+ the Trust Legal Provisions shall also include the right to extract text from
+ Sections&nbsp;1 through&nbsp;14 of this RFC and create derivative works from
+ these extracts, and to copy, publish, display, and distribute such derivative
+ works in any medium and for any purpose, provided that no such derivative work
+ shall be presented, displayed, or published in a manner that states or implies
+ that it is part of this RFC or any other IETF Document."
 </t>
 </section>
 
 </middle>
 <back>
 <references title="Normative References">
  &rfc2119;
  &rfc3533;
  &rfc3629;
  &rfc4732;
+ &rfc5226;
  &rfc5334;
  &rfc6381;
  &rfc6716;
 
 <reference anchor="EBU-R128" target="https://tech.ebu.ch/loudness";>
 <front>
   <title>Loudness Recommendation EBU R128</title>
   <author>
_______________________________________________
codec mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/codec

Reply via email to