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).