Ethereal-users: Re: [Ethereal-users] RTP Save Audio Payload Question

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: "Martin Regner" <martin.regner@xxxxxxxxx>
Date: Tue, 19 Oct 2004 07:33:38 +0200
Matthew Mousseau wrote:
<In order to analyze the received audio, we are capturing the audio
<stream with Ethereal and saving the RTP payload as an audio file (in .au
<format), using the built-in feature in Ethereal 0.10.6.  This works fine
<when the network conditions are perfect.  However, when I introduce
<packet loss, the Save Payload command simply skips over the dropped
<packets, resulting in audio files that are shorter and shorter as the
<percentage of packet loss increases.

<What we would like to do, instead, is for the Save Payload command to
<leave gaps in the saved audio where a packet is not received, rather
<than to simply ignore the missed packet.  I believe this is referred to
<as "zero-buffering" the audio.

<Is there an Ethereal plug-in or a separate application written that does
<this?  How difficult would it be to modify the existing Save RTP Payload
<feature in Ethereal to handle this, and how would we go about that?  I
<am very new to Ethereal/RTP and have not worked with any of its source
<(and if something else is already written that does this, that would be
<much preferred).

I also think that it is probably better to introduce silence gaps for lost packets,
and also discard duplicates so that the replayed stream will appear more 
like it would for a real VoIP-application.

Maybe there could be some preference settings if different users would like
to have different behaviour.

I have some plans to add functionality to save all rtp-streams in  a capture
into different rtpdump-files. Currently you can save only one rtpdump
file at a time.

If you want to know more about the current rtpdump functionality
and similar you can search for rtpdump or rtplay on the Ethereal site
and look at the wiki:
http://wiki.ethereal.com/RTP_20statistics
http://www.ethereal.com/lists/ethereal-users/200311/msg00191.html
http://ethereal.cs.pu.edu.tw/lists/ethereal-dev/200410/msg00045.html
http://www.mail-archive.com/ethereal-dev@xxxxxxxxxxxx/msg09953.html
http://ethereal.secuwiz.com/lists/ethereal-users/200312/msg00066.html
http://www.mail-archive.com/ethereal-dev@xxxxxxxxxxxx/msg10017.html

I mainly use rtpdump format since I often use other codecs than G.711,
but another advantage with rtpdump format is that when replaying the
rtpdumpfiles with rtpplay+JMPlayer or rtpplay+QuickTimePlayer the
rtp-stream will replayed in a more realistic way since those programes
will handle dropped/duplicate packets in a more correct way, I think.

Maybe I will also try to look into (if I have time) to do modifications
for writing au-files from Ethereal.
Then I'm thinking of making a completely new subroutine that will be
based on the rtpdump_save subroutine (instead of saving to temporar file when
analysing a specific stream with the rtp-analysis).
Of course there will be a need to handle silence suppression, lost packets, 
out-of-order-packets, duplicates packets and so on - since there is a fundemental
difference between rtpdump-format and au-file-format (rtpdump is a raw stream
where packets are stored in the order they are received).