Hi Josephine, > I'm trying to come up with an implementation, using the ROHC library, > that compresses only the RTP header, and not the UDP and IP headers.
As far as I know, there is no defined profile for RTP-only compression. So you have to define the mechanisms and packet formats you want to use. The ones defined for IP/UDP/RTP are probably not adequate for your RTP-only profile. > Correct me if I'm on the wrong tack, but I've been trying to base it > upon modified versions of c_rtp.c, c_rtp.h, d_rtp.c, d_rtp.h files. I > also added an additional profile in rohc_comp.c, rohc_comp.h, > rohc_decomp.c and rohc_decomp.h. > > However IP-field compression parameters are used in many methods in > the library. > > Could you give me some pointers on how to modify these source files > (such as c-generic.c) to only compress and decompress using the RTP > header field-related compression parameters (TS), and not IP-ID or the > IP fields? Depending on the profile you want to define, you may or may not be on the correct track :) If your profile does not compress IP headers at all, re-using the c_rtp.[ch] and d_rtp.[ch] source files is probably not the best choice. They frequently do IP-specific actions that you don't need at all. The shortest path to setup a RTP-only profile is probably starting from scratch with a new blank profile. To create a new profile, you have to initialise one instance of the c_profile structure and one instance of the d_structure structure. The first one is for the compression profile and the second one for the decompression profile. The c_profile structure is described in details here: http://barvaux.org/~didier/rohc/rohc-doc-latest/structc__profile.html The d_profile structure is described in details here: http://barvaux.org/~didier/rohc/rohc-doc-latest/structd__profile.html For the profile ID, temporarily choose a free one in the list published by the IANA: http://www.iana.org/assignments/rohc-pro-ids/ Hereafter is an example for defining a new compression profile: /** * @brief Define the compression part of the RTP-only profile */ struct c_profile c_rtponly_profile = { IPPROTO_UDP, /* IP protocol */ rtp_port, /* list of UDP ports for RTP packets */ ROHC_PROFILE_RTPONLY, /* profile ID for RTP-only profile */ "0.1", /* profile version */ "RTP-only / Compressor", /* profile description */ c_rtponly_create, /* profile handlers */ c_rtponly_destroy, c_rtponly_check_context, c_rtponly_encode, c_rtponly_feedback, }; You have then to define the 5 functions c_rtponly_* listed above. To define them, use the API documentation and look at the simplest of all profiles: the Uncompressed profile defined in c_uncompressed.[ch]. You have then to do the same task for the decompression profile. Hope it helps! Didier Barvaux Viveris Technologies _______________________________________________ Mailing list: https://launchpad.net/~rohc Post to : [email protected] Unsubscribe : https://launchpad.net/~rohc More help : https://help.launchpad.net/ListHelp

