Ethereal-users: Re: [Ethereal-users] RTP playback

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: Wed, 3 Dec 2003 19:21:27 +0100

Alexis Sturm wrote:

< I capture RTP payload but with other codec types than G.711, like G.729 or G.723. But it seems like these

< payload type are supported by the application while trying to save the payload in .au format. Does anyone know

<if this will be supported in the future?

 

It is currently supported to save G.711 (A-law respectivelly U-law) as au-file directly from Ethereal.

 

G.729 and G.723 codecs are covered by several patents. I think that it might not be possible to integrate

support for these codecs directly in Ethereal due to this.

 

With Ethereal 0.9.16 version it is possible to save the RTP stream in rtpdump format. You can then use e.g.

the rtpplay program to send the rtp stream towards e.g. JMF JMStudio.

http://www.ethereal.com/lists/ethereal-users/200311/msg00191.html

http://www.cs.columbia.edu/IRT/software/rtptools/

http://java.sun.com/products/java-media/jmf/

 

I have tried this for several different codecs (H.263 video, H.261 video, G.723.1, GSM , ...) towards JMF JMStudio and/or QuickTime Player.

uNFORTUNATELY Neither of JMPlayer and QuickTime Player supports G.729.

 

<Also, is there a way to assign permanent specific UDP ports (or a range of ports), so that the ethereal will

<recognize and decode these packets as RTP packets? Using the option “decode as” every time isn’t

<convenient!...

 

If there is H.323-signalling, RTSP-signalling or SIP-signalling in the capture it may work automatically.

The SIP support has been added recently, so it is not included in the Ethereal 0.9.16 version.

So if you are using SIP then it may be worth trying out the CVS version.

 

If you have possibilities to build Ethereal from source code it is very easy to add some UDP port numbers

in proto_reg_handoff_rtp in packet-rtp.c.

 

In the example below I have added so that udp-port 30100 and 30102 is dissected as RTP.

 

void
proto_reg_handoff_rtp(void)
{
 dissector_handle_t rtp_handle;

        data_handle = find_dissector("data");

        /*
  * Register this dissector as one that can be selected by a
  * UDP port number.
  */
 rtp_handle = find_dissector("rtp");
 dissector_add_handle("udp.port", rtp_handle);

        dissector_add("udp.port", 30100, rtp_handle);  /* UDP port 30100 - added  */ 

        dissector_add("udp.port", 30102, rtp_handle);  /* UDP port 30102 - added  */ 
}