Re: [AVT] AVC NALUs RTP packetisation

Nikola Sprljan <nikola.sprljan@vil.ite.mee.com> Fri, 30 March 2007 10:38 UTC

Return-path: <avt-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1HXEVR-00060s-VF; Fri, 30 Mar 2007 06:38:53 -0400
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1HXEVP-00060m-QP for avt@ietf.org; Fri, 30 Mar 2007 06:38:51 -0400
Received: from mee06.mee.com ([194.130.244.68]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1HXEVO-0006jI-4c for avt@ietf.org; Fri, 30 Mar 2007 06:38:51 -0400
Received: from meemgw02 ([10.226.1.24] helo=meemgw02.mee.com) by mee06.mee.com with esmtp (Exim 4.43) id 1HXEV7-000Kvu-5T for avt@ietf.org; Fri, 30 Mar 2007 11:38:33 +0100
Received: from meetvd02 (meetvd02.diamondlink.com [10.226.1.23]) by meemgw02.mee.com (8.11.6/8.11.6) with SMTP id l2UAcW274628 for <avt@ietf.org>; Fri, 30 Mar 2007 11:38:32 +0100 (BST)
Received: From einstein.vil.ite.mee.com ([10.226.210.23]) by meetvd02 (WebShield SMTP v4.5 MR1a P0803.345); id 1175250239281; Fri, 30 Mar 2007 11:23:59 +0100
Received: from [10.226.210.105] by einstein.vil.ite.mee.com with esmtp (Exim 4.62) (envelope-from <nikola.sprljan@vil.ite.mee.com>) id 1HXEUx-00043c-KJ; Fri, 30 Mar 2007 11:38:25 +0100
Message-ID: <460CE89F.7060000@vil.ite.mee.com>
Date: Fri, 30 Mar 2007 11:38:23 +0100
From: Nikola Sprljan <nikola.sprljan@vil.ite.mee.com>
User-Agent: Thunderbird 1.5.0.10 (Windows/20070221)
MIME-Version: 1.0
To: Ye-Kui.Wang@nokia.com
Subject: Re: [AVT] AVC NALUs RTP packetisation
References: <46094749.1030806@vil.ite.mee.com> <ybuejnatwsk.fsf@jesup.eng.wgate.com> <1C1F3D15859526459B4DD0A7A9B2268B03488F9D@trebe101.NOE.Nokia.com> <460A45A5.4090908@vil.ite.mee.com> <1C1F3D15859526459B4DD0A7A9B2268B034B42FB@trebe101.NOE.Nokia.com>
In-Reply-To: <1C1F3D15859526459B4DD0A7A9B2268B034B42FB@trebe101.NOE.Nokia.com>
X-Enigmail-Version: 0.94.2.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-Spam-Score: -5.4 (-----)
X-Spam-Report: VI-Lab's spam scanner has examined this email on server "einstein.vil.ite.mee.com". The results of the scan are shown below. If you have any questions, see the administrator of that system. Is Spam? No (-5.4 points, 3.5 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.8 ALL_TRUSTED Passed through trusted hosts only via SMTP -3.6 BAYES_00 BODY: Bayesian spam probability is 0 to 1% [score: 0.0000]
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 0cff8c3ec906d056784362c06f5f88c1
Cc: avt@ietf.org
X-BeenThere: avt@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Audio/Video Transport Working Group <avt.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/avt>, <mailto:avt-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:avt@ietf.org>
List-Help: <mailto:avt-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/avt>, <mailto:avt-request@ietf.org?subject=subscribe>
Errors-To: avt-bounces@ietf.org

Ye-Kui,

Thank you for replying - I see now that a solution would be to buffer up
the RTP packets and keep them in a MANE until they are not needed any
more - the decision on forwarding/dropping is postponed until more
information on this packet becomes available. I was actually trying to
avoid solutions based on buffering at the RTP level as my intention was
to perform adaptation solely on a per-RTP packet basis, with all SVC
layers transmitted in a single RTP session.

One could argue that buffering is required at least for the case when
RTP packets are carrying fragmentation units, so they are not being
forwarded until it is made sure that all the fragments originating from
the same NALU have been received (I am not considering FGS here). But if
we are already at this level of complexity, and since a MANE can be made
aware of inter-layer dependencies, then why not observing decoding
dependencies between all received packets (i.e. their decoding
dependency to the lost packets) when deciding which ones can be safely
dropped? What I am trying say is - since MANEs will potentially have to
deal with lots of incoming streams, I would prefer having an option of
just forwarding or dropping the required packets, without employing any
"smart" repacketisation / thinning / retransmission techniques (I don't
consider parsing and reassembling the aggregation units to be "smart"),
and let the next node in the transmission chain deals with packet
losses. This could be seen as some kind of a "light" mode of MANE's
operation.

Basically, if one wants to avoid buffering packets in a MANE, the
following has to be ensured:
-fragmentation is not used at the RTP level;
-aggregation units are used for packetisation of AVC NALUs, along with
NALUs containing SVC-specific parameters in the same RTP packet.
However, since there always exists a possibility that I will encounter
some pre-encoded content that has slices larger than 64kB, as a
consequence I need to support FUs and implement buffering in the MANE.

Now, I know this has been discussed many times, but I am still of an
opinion that SSRC multiplexing could be helpful - especially in this
"no-buffer" scenario, as it would enable immediate forwarding/dropping
of RTP packets that would otherwise need to be buffered. Perhaps I am
just leaning towards having something close to a "Magic Device from
Heaven", but I also have a feeling that this could be useful for others
as well - e.g. it's still mentioned as a possibility in the current
version of draft-lennox-mmusic-sdp-source-attributes.

I guess what I'd like to ask this time is - is SSRC multiplexing gone
for good, or there's still a chance it could be reconsidered?

Best regards,

Nikola

Ye-Kui.Wang@nokia.com wrote:
> Hi Nikola,
> 
> Thanks for your comments. I basically agree with those that I did not
> response in below. Please see inline. 
> 
>> -----Original Message-----
>> From: ext Nikola Sprljan [mailto:nikola.sprljan@vil.ite.mee.com] 
>> Sent: Wednesday, March 28, 2007 1:38 PM
>> To: Wang Ye-Kui (Nokia-NRC/Tampere)
>> Cc: rjesup@wgate.com; avt@ietf.org
>> Subject: Re: [AVT] AVC NALUs RTP packetisation
>>
>> Ye-Kui,
>>
>> Thank you for your reply. Please find my comments inline.
>>
>> Ye-Kui.Wang@nokia.com wrote:
>>> In SVC context, it is also possible to use FU's as Randell 
>> said below, 
>>> although it is not possible to include the PACSI or suffix or prefix 
>>> (newly introduced to the SVC draft in January) NALU in packets 
>>> containing FU's.
>> I see now that I omitted something that made my question 
>> imprecise/incorrect - when I said "AVC NALUs cannot be 
>> fragmented at the application layer", I actually wanted to say 
>> "AVC NALUs *aggregated* in a packet together with a NALU 
>> conveying the SVC-specific parameters cannot be fragmented 
>> above the UDP/IP level". It just seems to me that AVC NALUs 
>> that are not in aggregation units are not very useful in SVC 
>> context, and that this implies that fragmentation at the RTP 
>> level is never going to be used for AVC NALUs in SVC context. 
>> Is that correct?
>>
> 
> AVC NALUs are useful and actually important in SVC context. Note that
> "AVC NALUs in SVC context" does not mean that each RTP packet containing
> an AVC NALU or part thereof must contain the SVC-specific parameters.
> See further discussions of the three cases in below.
> 
>>> Currently there is no plan to support containing of 
>> additional NALU in 
>>> FU packets. The main reason is still that there is no compelling use 
>>> case requiring the support.
>> Since I think there is sometimes a confusion with what is done 
>> at which communication level, I will summarise briefly my 
>> understanding here:
>> *Application level* - deals with slices; if FMO is used, SVC 
>> encoder sets the maximum byte length limit for slices.
> 
> The encoder can always sets the maximum byte size limit for slices,
> regardless of whether FMO is in use. 
> 
>> *RTP level* - deals with NALUs; NALU packetisation modes are 
>> used, i.e., selection of fragmentation and aggregation modes. 
>> Fragmentation modes must be used for slices larger than 64kB 
>> to divide them into segments
>> (FUs) that will fit into packets sent over IPv4.
>> *UDP/IP (or any lower than RTP) level* - deals with RTP 
>> packets; fragmentation of RTP packets that exceed the MTU limit.
>>
>> Also, maybe it is worth noting that although I say I need 
>> "SVC-specific parameters for AVC NALUs", actually I only need 
>> the information on temporal level - to be able to decide 
>> whether to forward a packet containing an AVC NALU to a 
>> particular client. And using a PACSI or a suffix NALU seems to 
>> me is the only way to achieve that.
>>
>> Since I consider pre-encoded content here, the cases for 
>> packetisation of AVC NALUs in SVC context are then the following:
>>
>> 1. aggregated AVC NALU + SVC-specific parameters <=MTU, 
>> including overheads -> Can be put into an aggregation NALU 
>> without any fragmentation.
>> 2. aggregated AVC NALU + SVC-specific parameters >MTU and 
>> <=64kB, including overheads -> Can be put into an aggregation 
>> NALU, with fragmentation done on UDP/IP level.
>> 3. aggregated AVC NALU + SVC-specific parameters >64kB, 
>> including overheads -> Since this has to be fragmented at the 
>> RTP level, SVC parameters cannot be sent and therefore this 
>> pre-encoded bit-stream is not supported for sending over IPv4.
>>
> 
> Cases 1 and 2 are correct. For case 3, the SVC specific parameters (e.g.
> in the prefix NAL unit) can be sent in their own RTP packet, and the big
> AVC NALU, fragmented in RTP level, is sent in the subsequent RTP
> packets. Yes, there will be no information of temporal_level or
> priority_id in these packets. If a MANE would like to do something
> intelligent to these packets, it can buffer the previous packet and
> obtain the required information.
> 
>> I guess when you say "there is no compelling use case", that 
>> actually means that the case 3. is not likely to happen and is 
>> thus is not supported? If that is so, should it be explicitly 
>> stated in the packetisation rules?
>>
> 
> This is part of the reason. Another part is that a MANE can buffer up to
> a couple of RTP packets to get required information for some
> not-very-common cases. The reason why we did not put such things to the
> packetization rules was, we think handling of case 3 above, for example,
> seems to be obvious to people who would implement RTP packetizer. But I
> think it would not hurt if we do. So text proposals are welcome. 
> 
> BR, YK
> 
>>> In case one NALU is larger than MTU size but smaller than 64kB, the 
>>> packetizer can use FU's to avoid lower network layer fragmentation.
>> Only for SVC NALUs, since for AVC NALUs I must use aggregation units.
>>
>>> Alternatively, aggregation packet containing the SVC specific 
>>> parameters can be used. In this case, after fragmentation is done at 
>>> lower network layer, the SVC specific parameters would be present in 
>>> the first fragmentation, which is most important among all the 
>>> fragments originated from the aggregation packet.
>> I think this covers only case 2.
>>
>> Best regards,
>>
>> Nikola
[cut]

_______________________________________________
Audio/Video Transport Working Group
avt@ietf.org
https://www1.ietf.org/mailman/listinfo/avt