According to the rtpengine module documentation for rtpproxy_manage(), that's exactly what rtpproxy_manage() does:
http://kamailio.org/docs/modules/4.2.x/modules/rtpengine.html#rtpengine.f.rtpengine_manage
i.e.
- If INVITE with SDP, then do rtpengine_offer()
- If INVITE with SDP, when the tm module is loaded, mark transaction with internal flag FL_SDP_BODY to know that the 1xx and 2xx are for rtpengine_answer()
- If ACK with SDP, then do rtpengine_answer()
- If reply with SDP to INVITE having code 1xx and 2xx, then do rtpengine_answer() if the request had SDP or tm is not loaded, otherwise do rtpengine_offer()