Re: [payload] Progressing draft-ramalho-payload-g7110-00

"Michael Ramalho (mramalho)" <mramalho@cisco.com> Tue, 16 August 2011 01:59 UTC

Return-Path: <mramalho@cisco.com>
X-Original-To: payload@ietfa.amsl.com
Delivered-To: payload@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 195EF21F8B9F; Mon, 15 Aug 2011 18:59:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.082
X-Spam-Level:
X-Spam-Status: No, score=-2.082 tagged_above=-999 required=5 tests=[AWL=0.517, BAYES_00=-2.599]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AcRlmfyI-pWw; Mon, 15 Aug 2011 18:59:20 -0700 (PDT)
Received: from rcdn-iport-5.cisco.com (rcdn-iport-5.cisco.com [173.37.86.76]) by ietfa.amsl.com (Postfix) with ESMTP id 5542621F8B94; Mon, 15 Aug 2011 18:59:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=mramalho@cisco.com; l=13042; q=dns/txt; s=iport; t=1313460007; x=1314669607; h=mime-version:content-transfer-encoding:subject:date: message-id:in-reply-to:references:from:to; bh=x0Veg8LFLF51NqkSXCH46k6A3bI6BLGc1NJHpzCQDr8=; b=UNgLtK/36yWbvF9ML/nSQcAvjP/zF3UW4YQianLQkQ1KNoZNe+w8SY5f Dsj/2K3H8TG2CluHFGA7UyDgkrniXQcpeatyj3X0nyu+poKiTHK+33KGX FcZdLk3XAUGo/gjsK5ZIBw8R03H3u4B2DhKEhghTHfYvkJSvpj2l/ogQa Q=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: As4AAAbPSU6tJXG9/2dsb2JhbAA+A5hIj013gUABAQEBAgESAR0KMRMHAgICAQgRBAEBCwYXAQYBGisJCAEBBAESCBqHTgSaQAGfEwKDPoIoXwSHX5BIi30
X-IronPort-AV: E=Sophos;i="4.67,378,1309737600"; d="scan'208";a="13404198"
Received: from rcdn-core2-2.cisco.com ([173.37.113.189]) by rcdn-iport-5.cisco.com with ESMTP; 16 Aug 2011 01:59:58 +0000
Received: from xbh-rcd-202.cisco.com (xbh-rcd-202.cisco.com [72.163.62.201]) by rcdn-core2-2.cisco.com (8.14.3/8.14.3) with ESMTP id p7G1xw1F010744; Tue, 16 Aug 2011 01:59:58 GMT
Received: from xmb-rcd-209.cisco.com ([72.163.62.216]) by xbh-rcd-202.cisco.com with Microsoft SMTPSVC(6.0.3790.4675); Mon, 15 Aug 2011 20:59:57 -0500
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Mon, 15 Aug 2011 20:59:55 -0500
Message-ID: <999109E6BC528947A871CDEB5EB908A0046EE5BB@XMB-RCD-209.cisco.com>
In-Reply-To: <20110814104721.2013.24F8F98F@lab.ntt.co.jp>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: Progressing draft-ramalho-payload-g7110-00
Thread-Index: AcxaJCIdXaYmx94SRyequDEZB0OntwBZqwHg
References: <999109E6BC528947A871CDEB5EB908A00465696D@XMB-RCD-209.cisco.com> <20110814104721.2013.24F8F98F@lab.ntt.co.jp>
From: "Michael Ramalho (mramalho)" <mramalho@cisco.com>
To: harada.noboru@lab.ntt.co.jp, avtext@ietf.org, payload@ietf.org
X-OriginalArrivalTime: 16 Aug 2011 01:59:57.0549 (UTC) FILETIME=[330CD1D0:01CC5BB8]
Subject: Re: [payload] Progressing draft-ramalho-payload-g7110-00
X-BeenThere: payload@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Audio/Video Transport Payloads working group discussion list <payload.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/payload>, <mailto:payload-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/payload>
List-Post: <mailto:payload@ietf.org>
List-Help: <mailto:payload-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/payload>, <mailto:payload-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 16 Aug 2011 01:59:22 -0000

Hi Noboru,

Thank you for your reply.

My answers are in-line below with "MAR:".

Michael Ramalho

-----Original Message-----
From: Noboru Harada [mailto:harada.noboru@lab.ntt.co.jp] 
Sent: Saturday, August 13, 2011 9:47 PM
To: Michael Ramalho (mramalho); avtext@ietf.org; payload@ietf.org
Cc: harada.noboru@lab.ntt.co.jp; avtext@ietf.org; payload@ietf.org
Subject: Re: Progressing draft-ramalho-payload-g7110-00

Dear Michael and all,


Thanks for taking care of the G.711.0 payload format issues.

According to the ISSUES 1 and 2, 
I'm fine with the proposal to have two separated documents.

MAR: Thanks.

For ISSUE 3, please see my comments below.

> >>>>ISSUE 3: Any comments on this goal?
> 
> Assuming the partitioning proposed above is accepted, the only
> significant open items for the G.711.0 payload format draft are:
> 
> OPEN ITEM 1 - Is the specification of multiple G.711.0 "channels"
within
> a single G.711.0 RTP session desired? If so, is the proposed method
> acceptable (reserving a presently unused "prefix code" as a channel
> delimiter and changing the decoding heuristic in Section 4.2.3)?
>
> and
> 
> OPEN ITEM 2 - The specification of the storage mode for long
recordings.

For OPEN ITEM 1, I'm not fully confident about that supporting multiple
G.711.0 channels is really useful.

As stated in the current draft, I'm not sure if there is any real
application need to have more than one G.711 channel per a RTP session.
I have never seen such multi-channel implementation in traditional G.711
systems.

For teleconference applications, there may be several alternatives such
as down-mix all channels into one channel at MCU server or mesh
connection using NxN RTP sessions.
Note that I'm fine with having the function if someone could show us
that there is strong need and show us reasonable application scenarios.

MAR: I also agree with your statement that only single channel G.711 is
traditionally used. Indeed, when PT = [0 | 8] is used RFC 3551 states
(in Table 4) that channels == 1 by definition for G.711.

MAR: However, if you look closely at RFC 3551 ... and you use a DYNAMIC
payload type for G.711 ... you could specify channel > 1 ... because
it defines how to pack the payload for "sample-based encodings"
(RFC 3551, Section 4.3).

MAR: There are some applications (e.g., acceleration of real-time
protocols
over WANs) whereby "multiplexing multiple G.711 flows" is desired.
Granted
there are few, if any, products AT PRESENT doing this. However, for
those
applications, I think a "standardized method" to put multiple channels
in one payload is desirable.

According to the proposed method, I don't think any channel delimiter
required for the channel separation if we make use of given "ptime" and
"channels" information.

With following definition, no channel delimiter is needed.
We can just decode all samples using the current decoding heuristic in
Section 4.2.3 and then separate decoded samples.
 ----------------------------------------------------------
| left channel (160 samples) | right channel (160 samples) |
| (G.711.0 frames +padding)  | (G.711.0 frames +padding)   |
 ----------------------------------------------------------

MAR: YOU ARE RIGHT!

MAR: My brain was so fixated on "not needing ptime" in writing the draft
(I documented ptime as an optional parameter Section 5.1) that I
neglected
to consider that IF you considered ptime, THEN you would know where the
channel boundaries were by the decoded G.711 bitstream!

MAR: I agree with you ... there no need to add a delimiter for the
channels
if you know ptime. On the next revision I will have:

1: channels as an optional parameter (as it is now)
2: if optional channels parameter is present and > 1, then ptime becomes
a required parameter (not specified in the present draft).

MAR: Regarding your channel example above, this is similar to RFC 3551
already
specifies for channel demarcation of sample based recordings ... from
RFC
3551 ....

<begin table>
channels description channel
				1 2 3 4 5 6
2 		stereo 	l r
3 				l r c
4 				l c r S
5 				Fl Fr Fc Sl Sr
6 				l lc c r rc S
<end table>

I believe that this number of channels issue should not be solved in
G.711.0 bitstream level but should be solved in RTP payload level.
Even though there are some RESERVED magic numbers available in the
G.711.0 specification, we should restrict us to introduce as little
magic numbers as possible for solving RTP payload issues.

MAR: Agreed.

MAR: If channels > 1, the buffers in the G.711 decoding process may
need to be larger ... but that is easily accomplished with some #defines
in the given application.

> OPEN ITEM 2 - The specification of the storage mode for long
recordings.

According to the storage mode, I had a discussion with some experts who
are developing some VoIP services.
They said that supporting 2-channel may be helpful for the storage mode.
There is a need to store recorded down-link and up-link data into one
file (e.g., recording conversation between a customer and an operator
for some call-center application).

MAR: I can see the use case. And given that one side of this
communication
is typically "silence/background noise", this is a good application for
G.711.0.

MAR: Anticipating two channels for this application - do we need to
introduce a parameter of "ptime" in the storage mode definition
(in addition to channels) so that the channel boundaries are
self-evident?

MAR: Can you formulate a proposal for the long recording case? Perhaps
we can write in 1 second chunks with a length byte for that 1 second.
Something like (for N chunks of G.711.0 data in the file and "|"
indicating concatenation here):

| A | B1 | C1 | B2 | C2 | B3 | C3 | ... | B(N-1) | C(N-1) | B(N) | ...
where

A = Fixed length Preamble (has codec name, ptime and number_of_channels)

Ci = Variable length G.711.0 data for as many channels specified in
chunk i

Bi = 	16 bit uint
	{if (Bi == 65535)
		Indicates EoF;          //for B(N) above
	elseif (Bi == 65534)
		Indicates End_segment;  //for B(N-1) above where you
						//have less than one
second of data
						//in the last segment
	else
		Number_of_bytes in Ci;
	}

MAR: The above with Bi a uint16 would accommodate a worst-case 8
channels.

Other comments on sections 7.1 and 7.2:

We may want to amend ITU-T Rec. G.711.0 reference software in order to
add a support of "0x01" defined in Section 7.1 G.711.0 Erasure Frame
because implementing it without changing the G.711.0 decoder is quite 
complicated.

MAR: I wish I had thought of the concept of an erasure frame when we did
the ITU-T standardization ;-(.

MAR: Assuming that we make an open-source version of G.711.0 available,
we could make that small change in the code (to recognize and generate
an erasure frame). And at a later time update the ITU-T documents.

---
The magic number for G.711.0 A-law corresponds to the ASCII character
string "#!G7110A\n", i.e., "0x23 0x21 0x47 0x37 0x31 0x31 0x30 0x41
0x0A".
Likewise, the magic number for G.711.0 MU-law corresponds to the ASCII
character string "#!G7110M\n", i.e., "0x23 0x21 0x47 0x37 0x31 0x31 0x4E
0x4D 0x0A".
---

I have no strong opinion but I think we'd better think of an advantage
of using any RESERVED magic number for the G.711.0 Storage Mode header
instead of "#".
Starting from "#" looks good but "#" is already used as a pre-fix in the
G.711.0 specification.
Which means the short recordings storage mode file will never be able to
be decoded by the ITU-T G.711.0 reference software.

MAR: I am a little confused. The magic number I chose for the draft
simply
used the existing IETF convention (look at the RFCs for iLBC and similar
one-channel codecs). Consider this as a "preamble" to the entire file.

If we assigned any RESERVED prefix such as "0x01" or "0x47" as the first
byte of the file, we could add the support to the ITU-T G.711.0
reference software (perhaps, as an informative appendix).
Note that only the difference between the short recordings storage mode
file and the file that the G.711.0 reference software generates is
existence of this header part.
On the other hand, this may not be a big issue because we can assign an
unique file extension for the file so that the application can recognize
it is the storage mode file.

What do you think of it?

MAR: For adoption in the IETF ... I think using their existing
convention
is always better (unless you have a killer fault with it). I think the
IETF
wants someone with a "storage mode decoder" to see something like
"#!<codec_name>\n" as the preamble to any storage mode recoding.

MAR: Considering the fact that the encoded sound files may need to be
encrypted for some sensitive applications - having the "decoder name"
inside
the (encrypted) file instead of the header will be necessary (although
it
may also help in cryptographic attacks - I have an outstanding question
on this with an crypto expert in Cisco).

Best Regards,

Noboru

MAR: Thanks Noboru!


> Dear AVTEXT and PAYLOAD list members,
> 
>  
> 
> At IETF 81 I presented the initial draft for G.711.0 payload format
> (draft-ramalho-payload-g7110-00). This email solicits opinions for
> continuing the work in this draft.
> 
>  
> 
> This draft had the usual detail expected in a payload format draft
PLUS
> some recommendations and use cases for employing the (lossless and
> stateless) G.711.0 compression "in the middle" of an end-to-end G.711
> call/session.
> 
>  
> 
> The rough consensus I interpreted from presenting the G.711.0 draft
was
> that this draft should be split into two drafts:
> 
>  
> 
> 1 - A "G.711.0 only" payload format draft (mostly the existing draft
> without Section 6).
> 
>  
> 
> and
> 
>  
> 
> 2 - A "G.711.0 use cases / best practices" draft describing use of
> G.711.0 in the middle of an end-to-end G.711 call (mostly Section 6).
> 
>  
> 
> >>>ISSUE 1: Any objection to this partitioning or other suggestion?
> 
>  
> 
> Furthermore, it has been suggested that the former be a AVT PAYLOAD
> draft (e.g. draft-ramalho-payload-g7110-01) and the latter be a AVT
EXT
> draft (e.g., draft-ramalho-avtext-g7110usecases-00).
> 
>  
> 
> >>>>ISSUE 2: Any objection to partitioning the draft into two drafts
> targeted for two different IETF AVT WGs or other suggestion?
> 
>  
> 
> The idea (which I agree with) is that the payload draft be targeted to
> be an eventual standards track RFC and the avtext draft be targeted to
> be an informational RFC. This suggestion was only briefly mentioned at
> the meeting, but was supported in my discussions afterwards.
> 
>  
> 
> >>>>ISSUE 3: Any comments on this goal?
> 
>  
> 
> Assuming the partitioning proposed above is accepted, the only
> significant open items for the G.711.0 payload format draft are:
> 
>  
> 
> OPEN ITEM 1 - Is the specification of multiple G.711.0 "channels"
within
> a single G.711.0 RTP session desired? If so, is the proposed method
> acceptable (reserving a presently unused "prefix code" as a channel
> delimiter and changing the decoding heuristic in Section 4.2.3)?
> 
>  
> 
> and
> 
>  
> 
> OPEN ITEM 2 - The specification of the storage mode for long
recordings.
> 
>  
> 
> >>>>ISSUE 4: Any commentary on the above issues are welcome.
> 
>  
> 
> Thanks in advance for any comments or suggestions you have.
> 
>  
> 
> Michael Ramalho
> 
>  
> 
>  
> 
> Michael Ramalho
> Technical Leader
> Product Development
> mramalho@cisco.com <mailto:mramalho@cisco.com> 
> Phone: +1 919 476 2038
> Mobile: +1 941 544 2844
> 
> 
> 
> Cisco Systems, Inc.
> 4564 Tuscana Drive
> Sarasota, FL 34241-4201
> United States
> http://ramalho.webhop.info
> Skype: mramalho_mar42
> 
>  
> 
>  
> 
>  Think before you print.
> 
> 
> This email may contain confidential and privileged material for the
sole
> use of the intended recipient. Any review, use, distribution or
> disclosure by others is strictly prohibited. If you are not the
intended
> recipient (or authorized to receive for the recipient), please contact
> the sender by reply email and delete all copies of this message.
> 
> For corporate legal information go to:
> http://www.cisco.com/web/about/doing_business/legal/cri/index.html
> <http://www.cisco.com/web/about/doing_business/legal/cri/index.html> 
> 
>  
> 
>  
> 

--------------------------------------
Noboru Harada
NTT Communication Science Laboratories
Tel: +81 46 240 3676
FAX: +81 46 240 3145
E-mail: harada.noboru@lab.ntt.co.jp
--------------------------------------