Hello,
I am currently working on a project that sends data
over RTP using a dynamically assigned payload type.
I needed to capture what is sent and recalled that
Ethereal had some mean to save the RTP payload. As
it turned out this feature was only for saving
audio data. However, not to be discouraged I figured
I could hack the code to save the raw payload data
instead.
A couple of tries later, and it seemed to save the
data, but after further analysis it turned out it
only saved the first packet over and over again...
After a lot of debugging I think I have reached some
understanding as to what is happening.
The current code in gtk/rtp_analysis.c uses cfile.pd
to access the raw packet data. However, after a change
to file.c (revision 1.339), process_specific_packets()
uses a local pd buffer which means that
rtp_packet_save_payload() no longer accesses the correct
data.
After some more investigation I found the real
data in edt->tvb (which wasn't passed on to
rtp_packet_save_payload()).
I have attached a patch for gtk/rtp_analysis.c that
shows what I had to do to get it to work. It should
not be applied as is (I took some shortcuts regarding
the saving of the raw payload data), but I hope it
can be useful to anyone looking into understanding
why saving the RTP payload does not work any more (at
least I assume it will not work for the current audio
code either).
Best regards,
//Peter
Attachment:
rtp_analysis.patch
Description: rtp_analysis.patch