Patch to be applied on rtpproxy-1.2.1 notls
*********************************
diff -urp ../rtpproxy-1.2.1/rtp_resizer.c ./rtp_resizer.c
--- ../rtpproxy-1.2.1/rtp_resizer.c 2009-01-12 12:36:40.000000000 +0100
+++ ./rtp_resizer.c 2010-06-17 14:20:30.000000000 +0200
@@ -245,7 +245,7 @@ rtp_resizer_get(struct rtp_resizer *this
ret = rtp_packet_alloc();
if (ret == NULL)
break;
- memcpy(ret, p, offsetof(struct rtp_packet, data.buf));
+ memcpy(ret, p, offsetof(struct rtp_packet, data.buf) +
sizeof(rtp_hdr_t));
move_chunk(ret, p, &chunk);
++split;
}
*******************************
Fixes the bug described above:
Hi all.
I am having trouble with repacking.
Occurs when :
- target packet size is smaller than received size, e.g : received packets
are 120ms, repack size is 30ms
AND
- " received_size / target_size " is a round integer: 120/30 = 4, or
100/20=5 , etc...
I have no problem with ratio like 100/60 or 100/40, that is to say, anytime
their is a residual chunck, it works fine.
Symptoms are:
- all the repacked packets are incorrect except the last one, e.g when
120ms->30ms : repacking generates three incorrect 30ms packet followed by
the last 30ms - correct.
- incorrect packets have a correct IP/UDP part but RTP header and RTP
payload is all zero or nothing at all
Is there any workaround for this problem?
Or am I doing something wrong ?
rtpproxy is running in bridge mode, driven by nathelper / openSips, using
force_trp_proxy( ) with the "zNN" option
Occurs with 723.1 and also 729 codecs.
**********
Reason was "move_chunck()" did not memcpy the rtp_hdr_t from src chunck to
newly allocated rtp packet
Following repacks now work well:
- G729
100ms into 20ms
200ms into 10ms
-G723.1
120ms into 60ms
180ms into 30ms
Still to be tested on extra codec (711, etc).
Please let me know if you have further results.
Regards,
Samuel
_______________________________________________
Devel mailing list
[email protected]
http://lists.rtpproxy.org/mailman/listinfo/devel