Re: [AVTCORE] Clarifying the H.265 RTP payload format specification's text on when to set the RTP "M" bit

Ross Finlayson <> Fri, 09 August 2013 03:15 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 27C7A11E8146; Thu, 8 Aug 2013 20:15:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.598
X-Spam-Status: No, score=-2.598 tagged_above=-999 required=5 tests=[AWL=-0.000, BAYES_00=-2.599, HTML_MESSAGE=0.001]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id pxpvQYMp0RLH; Thu, 8 Aug 2013 20:15:23 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 4C47311E80F7; Thu, 8 Aug 2013 20:15:23 -0700 (PDT)
Received: from [] ( []) by (8.14.4/8.14.4) with ESMTP id r793FKMf011677; Thu, 8 Aug 2013 20:15:21 -0700 (PDT) (envelope-from
From: Ross Finlayson <>
Content-Type: multipart/alternative; boundary="Apple-Mail=_A55FC23C-7ED4-4429-B2D2-BBC7CDB9DF7B"
Message-Id: <>
Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\))
Date: Thu, 08 Aug 2013 20:15:19 -0700
References: <> <> <> <>
To: "" <>,
In-Reply-To: <>
X-Mailer: Apple Mail (2.1508)
Subject: Re: [AVTCORE] Clarifying the H.265 RTP payload format specification's text on when to set the RTP "M" bit
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Audio/Video Transport Core Maintenance <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 09 Aug 2013 03:15:28 -0000

(I changed the "Subject:" line to make it clear that we're talking about the (future) H.265 RTP payload format specification here; not the (existing) H.264 RTP payload format specification.)

> First of all, implementers are expected to have basic knowledge of the video coding specification itself.

Yes.  However, in this case we seem to disagree on what constitutes 'basic knowledge'.  Determining whether or not a NAL unit ends an 'access unit' (in the situation - common for many implementations - where this is not available directly from the encoder) is far from 'basic knowledge' of H.265.  Unless you can point to a specific section in the H.265 specification that describes this (in which case we could add a reference to that section), it seems prudent to add a little text to our RTP payload format specification that clarifies this.

> Of course, bad packetization/sender implementations [of the RTP 'M' bit] can make that unreliable – but bad packetization/sender implementations can make anything unreliable – thus they don’t count.

I'm not sure what you're saying here.  I hope you're not saying that we shouldn't really care about whether or not implementations set the 'M' bit correctly, because in that case I definitely disagree; that's the whole point of this email thread.

>  Lastly, the suggested text is too vague and even incorrect.

Like Mohamed, you're inadvertently making my point for me :-)

> For example, in the following copied part: what is “the current NAL unit”?

By this I mean the NAL unit that's being packed in the RTP packet for which we are considering whether or not to set the "M' bit (or the final such NAL unit, if there's more than one).  

> Also, it is possible for non-VCL NAL unit to be between two VCL NAL units in an AU, the [suggested] language would suggest that the first of the two VCL NAL unit ends the AU – this is definitely incorrect.

Yes, good point - thanks.

Here, then, is new wording for the suggested paragraph (to be added to the H.265 RTP payload format specification, just after the existing 'M bit' text):

Unfortunately the contents of a NAL unit, alone, does not tell a RTP sender implementation whether or not the NAL unit ends an access unit.  Instead, the implementation can obtain this information separately, from the encoder.  If, however, this information is not available directly from the encoder (e.g., because the implementation is sending data that consists solely of a sequence of pre-encoded NAL units), then it must instead inspect subsequent NAL units, to determine whether or not the NAL unit ends an access unit.  The following rule can be used:
    A NAL unit ends an access unit if it is a VCL NAL unit, and the next-occurring VCL NAL unit has the high-order bit of the first byte after its NALU header equal to 1.

Ross Finlayson
Live Networks, Inc.