MT#55283 add resampling stage to audio player

The format of a received audio frame can differ from the required format
for the audio player (Opus decoder supporting multiple sample rates).
Add a resampler in case resampling is needed.

Change-Id: I7f1be18334a5a12c6491e7763699559d2ee487f1
pull/2100/head
Richard Fuchs 2 weeks ago
parent ccf60cf988
commit dc22238df8

@ -5,10 +5,13 @@
#include "media_player.h"
#include "mix_buffer.h"
#include "codec.h"
#include "resample.h"
struct audio_player {
struct media_player *mp;
format_t format;
resample_t resampler;
struct mix_buffer mb;
int64_t last_run;
@ -100,6 +103,7 @@ bool audio_player_setup(struct call_media *m, const rtp_payload_type *dst_pt,
if (ap) {
mix_buffer_destroy(&ap->mb);
resample_shutdown(&ap->resampler);
ZERO(ap->mb);
}
else
@ -128,6 +132,12 @@ bool audio_player_setup(struct call_media *m, const rtp_payload_type *dst_pt,
bufsize_ms = MAX(bufsize_ms, ptime_ms * 2); // make sure the buf size is at least 2 frames
ap->format = (format_t) {
.channels = dst_pt->channels,
.clockrate = clockrate,
.format = AV_SAMPLE_FMT_S16,
};
mix_buffer_init_active(&ap->mb, AV_SAMPLE_FMT_S16, clockrate, dst_pt->channels, bufsize_ms, delay_ms,
false);
@ -177,10 +187,20 @@ void audio_player_start(struct call_media *m) {
void audio_player_add_frame(struct audio_player *ap, uint32_t ssrc, AVFrame *frame) {
bool ret = mix_buffer_write(&ap->mb, ssrc, frame->extended_data[0], frame->nb_samples);
AVFrame *rsmp_frame = resample_frame(&ap->resampler, frame, &ap->format);
if (!rsmp_frame) {
ilog(LOG_ERR, "Resampling failed");
av_frame_free(&frame);
return;
}
bool ret = mix_buffer_write(&ap->mb, ssrc, rsmp_frame->extended_data[0], rsmp_frame->nb_samples);
if (!ret)
ilogs(transcoding, LOG_WARN | LOG_FLAG_LIMIT, "Failed to add samples to mix buffer");
av_frame_free(&frame);
if (rsmp_frame != frame)
av_frame_free(&frame);
av_frame_free(&rsmp_frame);
}
@ -216,6 +236,7 @@ void audio_player_free(struct call_media *m) {
return;
mix_buffer_destroy(&ap->mb);
media_player_put(&ap->mp);
resample_shutdown(&ap->resampler);
g_free(ap);
m->audio_player = NULL;
}

@ -180,30 +180,30 @@ snd($sock_a, $port_b, rtp (0, 1001, 3160, 0x1234, "\x11" x 160));
rcv($sock_b, $port_a, rtpm(0, 1001, 3160, 0x1234, "\x11" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
($seq, $ts, $ssrc) = rcv($sock_c, $port_c, rtpm(9 | 0x80, -1, -1, -1, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\x2a\x84\x20\x84\x20\x84\x04\x8e\x16\x9d\x5d\xfe\xdb\xd8\xd1\xd3\xd9\xd9\x9b\xdc\xd9\xd7\xd7\xd8\xd6\xd9\xda\xdb\xd9\xd7\xda\xd7\x9a\xd9\xd8\xd8\xd6\xd9\xd7\xda\xd9\xd9\xd9\xd6\xda\xd7\xda\xda\xd9\xd9\xd6\xda\xd7\xdb\xda\xda\xd9\xd7\xdb\xd8\xd6\xda\xdb\xdb\xd8\xd6\xda\xd8\xd6\xdb\xdb\xdc\xd3\xdf\xd9\xd6\xd9\xd9\xdc\xd2\x9e\x1b\x96\x3f\x8b\x20\xb5\x0c\xba\x3f\xbe\xd5\x6d\xf0\xd5\xdb\x7b\xdf\xdc\xf6\xf1\xdd\xd8\xdd\xdf\xfd\xf8\xf1\xfc\xdd\xda\x9e\xff\x7d\xf2\xfc\xbb\xd8\xdb\xfc"));
($seq, $ts, $ssrc) = rcv($sock_c, $port_c, rtpm(9 | 0x80, -1, -1, -1, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\x2a\x84\x20\x84\x20\x84\x04\x8e\x16\x9d\x5d\xfe\xdb\xd8\xd1\xd3\xd9\xd9\x9b\xdc\xd9\xd7\xd7\xd8\xd6\xd9\xda\xdb\xd9\xd7\xda\xd7\x9a\xd9\xd8\xd8\xd6\xd9\xd7\xda\xd9\xd9\xd9\xd6\xda\xd7\xda\xda\xd9\xd9\xd6\xda\xd7\xdb\xda\xda\xd9\xd7\xdb\xd8\xd6\xda\xdb\xdb\xd8\xd6\xda\xd8\xd6\xdb\xdb\xdc\xd3\xdf\xd9\xd6\xd9\xd9\xdc\xd2\xde\xda\xd7\xdc\xd5\xdd\xd4\xd8\xd9\xd6\xdf\xd7\xdf\xd8\xd4\xd9\xd7\xff\xd3\xfc\xda\xd6\xda\xd7\xfd\xd3\xfd\xda\xd7\xdc\xd3\xfa\xd3\xfd\xda\xd8\xd8\xd3\xf7\xd1"));
# untriggered media
rcv($sock_c, $port_c, rtpm(9, $seq + 1, $ts + 160, $ssrc, "\xff\xf5\xfb\xbb\xdc\xd9\xfe\xdd\xf8\xf8\xf7\xdf\xdd\xfe\xdc\xfe\xfd\xf6\xff\xde\xfd\xfe\xde\xff\xf9\xfa\xdf\xfd\xfc\xff\xdf\xfb\xfb\xde\xfd\xfd\xfc\xff\xff\xfb\xdf\xfc\xfc\xfc\xfb\xdf\xfa\xfe\xdf\xfc\xfc\xf9\xff\xfd\xfd\xfe\xfe\xdf\xfa\xfc\xfc\xfc\xfc\xfc\xff\xfc\xfd\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfb\xdf\xfb\xff\xff\xff\xff\xfc\xfd\xfc\xfc\xfb\xfe\xdf\xfa\xfc\xfc\xfb\xfc\xfb\xdf\xfc\xfa\xfb\xdf\xf9\xf9\xfe\xdf\xfa\xf9\xfc\xfc\xfc\xfb\xdf\xf8\xfb\xfe\xfc\xfc\xfb\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfb\xdf\xf3\xfe\xfa\xfa\xfb\xdf\xf6\xfa\xf8\xf7\xde\xf4\xdf\xf6\xf8\xf7\xfb\xdf\xf7\xdd\xf9\xfb\xf9\xf7\xfb\xf9\xfb\xdf\xf7\xf9\xf9\xfb"));
rcv($sock_c, $port_c, rtpm(9, $seq + 1, $ts + 160, $ssrc, "\xde\xde\xdb\xdb\xd6\xfb\xd2\xdf\xfe\xd6\xdb\xdb\xfc\xd4\xd6\xf9\xd7\xdc\xd5\xff\xd7\xdb\xfd\xd8\x96\x1e\x98\x39\x86\x20\xb4\x08\xbc\x31\xbc\xda\xec\xf0\x50\xd3\xf1\x7b\xdc\xf5\xf2\xd7\xd7\xfb\xff\xf8\xf6\xf6\xdb\xd8\xda\xf9\xf9\xb6\x77\x9c\xd9\xd8\xdf\xf6\xf9\xf4\xbb\x58\x99\xdd\xfc\xf6\xfb\xb8\x7f\xda\xde\xdf\xb7\xfe\xfa\xfb\xdc\x9c\x5b\xb5\xfe\xff\xf9\xfc\xbd\x5a\xfa\xfd\xff\xbc\xf9\xfc\xde\xbd\x7c\xfc\xfd\xfb\xbf\xdf\xfc\xbb\x5e\xfd\xbb\x7f\x9f\x7c\xf9\xfe\xde\xfa\xfd\xff\xdf\xfa\xfc\xff\xbf\xff\xfc\xfe\xbf\xff\xfd\xfd\xbd\xfd\xfd\xbd\x7d\xfd\xbd\xfd\xfd\xbd\xfd\x7d\xbd\xfd\x7d\xfd\xbd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd"));
# catch up to delay caused by rcv_no above
rcv($sock_c, $port_c, rtpm(9, $seq + 2, $ts + 320, $ssrc, "\xfb\xf9\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf8\xf8\xfb\xfb\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xfa\xf7\xfa\xfa\xfa\xfa\xfa\xfa\xf7\xfa\xfa\xfa\xfa\xfa\xfa\xf7\xfa\xde\xf2\xde\xf2\xde\xf0\xfa\xdc\xf3\xdc\xf3\xdf\xf3\xfb\xfb\xfb\xfb\xfb\xfa\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xde\xee\xde\xf5\xfb\xfa\xf8\xde\xf1\xdf\xf6\xf8\xf8\xf8\xfa\xf8\xfa\xde\xf1\xfa\xfa\xf8\xf8\xfa\xd9\xf3\xf8\xf8\xfa\xde\xf1\xdc\xf6\xf8\xf8\xf8\xde\xf3\xfb\xf8\xf8\xfa\xde\xf3\xf8\xf8\xfa\xde\xf1\xdf\xf6\xf8\xf8\xf8\xde\xf5\xf8\xf8\xf8\xf8\xf8\xde\xf5\xf5\xf8\xfa\xfa\xf8\xde\xf5\xf5\xf8\xfa\xde\xf1\xde\xf5\xf5\xf8\xfa\xdc\xf8\xf8\xf5\xf5\xf8\xfa\xd9\xf8\xf5\xf8\xf8\xf5"));
rcv($sock_c, $port_c, rtpm(9, $seq + 3, $ts + 480, $ssrc, "\xf8\xdc\xde\xef\xfb\xdf\xf0\xfb\xd6\xf4\xf3\xdf\xf9\xf3\xf9\xd9\xfb\xf5\xfb\xdf\xf2\xf7\xdd\xdf\xf7\xdf\xf5\xf5\xf7\xdd\xdf\xf9\xfb\xf9\xf3\xfb\xdf\xf9\xdf\xf9\xf7\xf5\xf5\xdf\xfb\xdf\xf9\xf7\xf9\xf5\xfb\xdf\xf9\xfb\xfb\xf6\xf6\xf9\xdf\xfb\xfb\xfb\xf9\xf4\xf9\xdf\xf6\xdf\xf6\xf9\xf6\xf9\xfb\xdf\xf8\xf8\xfb\xf6\xf6\xfb\xdc\xfb\xdf\xf4\xf6\xfb\xf6\xdf\xf4\xdc\xdf\xf4\xf6\xfb\xf8\xf6\xdc\xdf\xf4\xf8\xfb\xfb\xf4\xfb\xda\xf2\xdf\xf6\xfb\xf8\xf8\xdf\xf4\xfb\xfb\xfb\xf8\xf8\xdf\xf3\xf8\xfb\xdf\xf2\xfb\xdc\xf8\xf6\xdc\xfb\xf4\xf8\xdf\xf8\xf5\xfb\xdf\xf1\xf6\xdc\xf8\xf8\xfb\xdf\xf4\xf6\xdf\xf6\xf8\xfb\xdc\xf8\xf5\xfb\xf8\xf5\xfb\xdc\xf5\xf8"));
rcv($sock_c, $port_c, rtpm(9, $seq + 4, $ts + 640, $ssrc, "\xfa\xf5\xf8\xfa\xdc\xf8\xf5\xf5\xf8\xde\xf5\xf8\xf8\xf5\xf8\xfa\xdc\xf8\xf5\xf5\xf8\xfa\xdc\xf8\xf8\xf5\xf5\xf8\xfa\xd9\xf8\xf8\xf5\xf5\xf8\xfa\xd9\xf8\xfa\xfa\xf5\xf3\xde\xf8\xde\xf8\xf8\xf5\xf1\xfa\xde\xfa\xde\xf3\xf8\xf3\xf6\xdc\xfb\xda\xf6\xf8\xf4\xf6\xfb\xf8\xdc\xdf\xf6\xf8\xf6\xf8\xf6\xdf\xfb\xfb\xfb\xf8\xf6\xf8\xfb\xdc\xf8\xf8\xfa\xf5\xf3\xdf\xf8\xf8\xdc\xfa\xf8\xef\xdf\xf8\xf6\xdc\xf8\xdf\xf0\xf8\xfb\xf8\xfb\xfb\xdf\xf4\xf8\xf8\xfa\xfa\xf8\xfa\xde\xf1\xf8\xfa\xde\xf1\xf6\xda\xf4\xfb\xf6\xdf\xf6\xf6\xdd\xf8\xfb\xf8\xf8\xfb\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xde\xf3\xf8\xf8\xfa\xde\xf3\xde\xf3\xf8\xf8\xfb\xdc\xf5\xfa\xf8\xf5\xf8\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 5, $ts + 800, $ssrc, "\xd9\xf5\xf8\xfa\xfa\xf8\xf5\xde\xf5\xf8\xfa\xde\xf3\xf5\xfb\xdf\xf5\xf8\xdc\xf8\xf3\xf6\xdc\xf8\xf8\xdf\xf3\xf6\xfb\xdf\xf6\xfb\xfb\xf8\xf6\xdc\xfb\xf8\xf6\xfb\xfb\xf8\xfa\xdc\xf8\xf5\xf5\xf8\xfa\xde\xf5\xfa\xde\xf1\xf6\xfb\xdf\xf5\xf6\xd8\xf6\xf8\xf2\xdf\xf9\xf6\xda\xf4\xdf\xf3\xf7\xf9\xf7\xd9\xfb\xdf\xf3\xf7\xf7\xf9\xdd\xdb\xfb\xf7\xf2\xf4\xfa\xdb\xdf\xfb\xf9\xf3\xf6\xf6\xde\xde\xdf\xf4\xf6\xf6\xf5\xfa\xde\xfb\xde\xf4\xf8\xf6\xf8\xf9\xfb\xdd\xf9\xfb\xf9\xf7\xfb\xf9\xfb\xdd\xf9\xfb\xf9\xf6\xdf\xf3\xdf\xf9\xfb\xdf\xf4\xdf\xf4\xf7\xfb\xfb\xdf\xf6\xfb\xfb\xf9\xf6\xdf\xf9\xf9\xfb\xfb\xf6\xf9\xfb\xdf\xf6\xfb\xfb\xf8\xf6\xfb\xdf\xf6\xdf"));
rcv($sock_c, $port_c, rtpm(9, $seq + 6, $ts + 960, $ssrc, "\xf6\xfb\xf6\xf8\xfb\xdf\xf8\xf8\xfa\xf8\xf3\xfb\xdc\xf8\xf8\xde\xf5\xf1\xf6\xda\xf0\xf9\xd8\xfb\xf6\xf4\xdf\xf4\xf6\xdd\xdf\xf6\xf9\xfb\xfb\xf9\xf9\xdf\xf4\xfb\xf9\xf8\xfb\xdf\xf4\xfb\xf8\xf8\xfb\xfb\xde\xf1\xfb\xfb\xfb\xfa\xf8\xde\xf3\xfb\xf8\xf8\xde\xf3\xda\xf0\xf9\xf6\xdf\xf9\xf6\xda\xf3\xfb\xf4\xfb\xdd\xf9\xdd\xf9\xf9\xf6\xf9\xf9\xfb\xdc\xf8\xf8\xf6\xdf\xf4\xf6\xdf\xf6\xdf\xf6\xdf\xf6\xf6\xfb\xfb\xdf\xf6\xfb\xfb\xf8\xf6\xfb\xdf\xf6\xf8\xfb\xfb\xf8\xf8\xde\xf3\xf8\xfb\xfb\xfa\xde\xf3\xf8\xfb\xfb\xfa\xfa\xde\xf1\xf8\xfa\xfa\xfa\xfa\xdc\xf5\xf5\xf8\xfa\xde\xf1\xfa\xdc\xf5\xf5\xf8\xde\xf3\xdf\xf6\xf6\xf6\xf8\xdc\xdf\xf8\xf8\xf6\xf4"));
rcv($sock_c, $port_c, rtpm(9, $seq + 7, $ts + 1120, $ssrc, "\xf4\xdf\xdf\xfb\xdf\xf4\xf4\xf4\xf8\xdc\xdf\xfb\xfb\xf6\xf4\xf6\xdf\xfb\xdc\xfb\xfb\xf5\xf2\xfb\xf8\xdf\xf8\xdc\xfb\xf5\xf4\xf6\xdf\xf6\xfb\xdf\xf8\xfb\xfb\xfa\xf8\xf5\xfa\xdc\xf5\xf5\xf8\xfa\xf8\xf3\xda\xf6\xf6\xfb\xdf\xf6\xf6\xdc\xfb\xdf\xf2\xfb\xfb\xfb\xfb\xdf\xf6\xf6\xfb\xdf\xf6\xf8\xdf\xf8\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xde\xf1\xf8\xfa\xde\xf1\xf8\xde\xf3\xfb\xf6\xdf\xf6\xfb\xdf\xf6\xfb\xf8\xfb\xde\xf1\xdf\xf6\xf8\xf8\xfb\xdf\xf3\xdf\xf4\xf8\xfb\xfb\xfb\xf8\xfa\xfa\xf8\xf8\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 8, $ts + 1280, $ssrc, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xde\xee\xd6\xef\xdc\xdf\xf4\xda\xec\xdd\xf6\xda\xf9\xf4\xdb\xef\xda\xf3\xd6\xf7\xfa\xd9\xf2\xfe\xf8\xda\xf7\xde\xfa\xf8\xf7\xfe\xd9\xf7\xdc\xfa\xfa\xf6\xfc\xdc\xfb\xd9\xf8\xf5\xf6\xfb\xd9\xfb\xd7\xf2\xf6\xfa\xfc\xfe\xd9\xd9\xf6\xf4\xf7\xde\xf6\xd8\xd8\xf7\xf6\xf7\xde\xf4\xdd\xd4\xfc\xf1\xf6\xdf\xf4\xfc\xd4\xdf\xf0\xf4\xfc\xf8\xf9\xd7\xdd\xf4\xf3\xfc\xf9\xfb\xd7\xdd\xf7\xf7\xfb\xf8\xf6\xd7\xdc"));
rcv($sock_c, $port_c, rtpm(9, $seq + 9, $ts + 1440, $ssrc, "\xf8\xf7\xfb\xf7\xf8\xdb\xdd\xfe\xf9\xf8\xf5\xf8\xdd\xdd\xfe\xfe\xf9\xf7\xfc\xfc\xdc\xfe\xfe\xfa\xf8\xfa\xfb\xdc\xfb\xdc\xf9\xf6\xf9\xf7\xdb\xf5\xfb\xda\xf5\xf8\xfa\xde\xf6\xfa\xdb\xf5\xf8\xfb\xdb\xf3\xfb\xd9\xfa\xf6\xfa\xde\xf6\xfa\xde\xfa\xfa\xf9\xdf\xf6\xf7\xdd\xfb\xdd\xf9\xf9\xf5\xf7\xfb\xdf\xf9\xfb\xfb\xf7\xf7\xdf\xf9\xfb\xfb\xf9\xf6\xfb\xdf\xf6\xfb\xf9\xf9\xf9\xf9\xdf\xf4\xf9\xf9\xf8\xf8\xf8\xdf\xf4\xf8\xf8\xf8\xf8\xf8\xde\xf3\xfb\xfb\xfb\xfa\xfa\xdc\xf5\xf5\xf8\xfa\xde\xf1\xdf\xf6\xfb\xf8\xf5\xdf\xf4\xdf\xf6\xf8\xf6\xf8\xfb\xdf\xf8\xf8\xf8\xf5\xf5\xf8\xdc\xde\xf3\xf8\xf8\xf3\xfb\xdc\xdf\xf2\xdc\xfb\xf6\xf6\xdf\xf6\xf8\xdf\xf8"));
rcv($sock_c, $port_c, rtpm(9, $seq + 10, $ts + 1600, $ssrc, "\xf8\xf6\xdc\xf6\xf8\xfb\xfb\xfb\xf5\xfb\xdc\xf5\xf8\xf8\xf8\xf8\xf5\xde\xf8\xf8\xf8\xf8\xf8\xf5\xfa\xdc\xf8\xf8\xf7\xfa\xf7\xf8\xde\xf7\xde\xf0\xf8\xf8\xf8\xde\xf3\xdc\xf5\xf3\xdf\xf8\xfa\xf5\xfb\xde\xf1\xf8\xdf\xf8\xf3\xf8\xdf\xf6\xf8\xfb\xfb\xf6\xfb\xdf\xf4\xfb\xdf\xf1\xf6\xdf\xfb\xf6\xf8\xdc\xf8\xf6\xdf\xf6\xf6\xf8\xfb\xdf\xf6\xdf\xf4\xf6\xf8\xfb\xdf\xf6\xdf\xf4\xf6\xf6\xfb\xdf\xf8\xdf\xf6\xf6\xf2\xfb\xdf\xfb\xdc\xfb\xf8\xf2\xf9\xf9\xdf\xfb\xfb\xfb\xf6\xf4\xf8\xdc\xdf\xf6\xf8\xf8\xf6\xf8\xfb\xdc\xf8\xf8\xfa\xfa\xf5\xf5\xde\xf5\xf5\xdf\xf8\xf3\xf8\xdf\xf4\xf6\xdc\xfb\xf6\xf6\xdf\xf6\xfb\xdf\xf6\xf8\xf6\xdc\xf8\xfb\xfb\xf8\xf8\xf8"));
rcv($sock_c, $port_c, rtpm(9, $seq + 11, $ts + 1760, $ssrc, "\xfa\xde\xf1\xf8\xfa\xdc\xf5\xf5\xf8\xf8\xfa\xde\xf3\xf8\xf5\xfb\xdc\xfa\xfa\xf8\xf3\xfb\xdf\xf5\xfb\xde\xf3\xf6\xf6\xdc\xdf\xf8\xfb\xf8\xf4\xf4\xdf\xfb\xdf\xf4\xfb\xfb\xf6\xf8\xfb\xdc\xf8\xfa\xfa\xf8\xf3\xde\xf3\xda\xf4\xf6\xfb\xf8\xfb\xdf\xf8\xf8\xf8\xf8\xf8\xf5\xfa\xdc\xf5\xf5\xf8\xdc\xf8\xf3\xdf\xf0\xfb\xdf\xf8\xdc\xf4\xfb\xf6\xf6\xdf\xf8\xdc\xfb\xf8\xf5\xf6\xdf\xf2\xfb\xdc\xfb\xdf\xf4\xf8\xf6\xf8\xf8\xdf\xfb\xf8\xf8\xf8\xf5\xf8\xde\xf3\xf8\xfa\xde\xf1\xfb\xdf\xf6\xf6\xf8\xdf\xf8\xfb\xfa\xf8\xf3\xdf\xf6\xdf\xf6\xf8\xfb\xfb\xfa\xf8\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 12, $ts + 1920, $ssrc, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xde\xee\xd8\xf8\xf7\xdc\xf4\xdc\xef\xda\xf4\xfb\xda\xf0\xdd\xf3\xd8\xf6\xdf\xf9\xf4\xdf\xef\xd5\xf9\xf9\xf9\xf9\xf9\xf0\xdb\xf7\xda\xf3\xda\xf7\xf5\xde\xfa\xd9\xf5\xfc\xf8\xf6\xdc\xfb\xd7\xf1\xf7\xdc\xf7\xde\xfa\xd8\xf7\xf7\xde\xf7\xfe\xdc\xdb\xf4\xf4\xfe\xfa\xf7\xd8\xd7\xf2\xf3\xdc\xf9\xf5\xd9\xd5\xf5\xf1\xfb\xdc\xf8\xfc\xd6\xfb"));
rcv($sock_c, $port_c, rtpm(9, $seq + 2, $ts + 320, $ssrc, "\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfb\xde\xf3\xdc\xf8\xfb\xde\xf1\xde\xf6\xde\xf5\xfa\xdc\xf8\xfb\xdf\xf5\xfa\xf8\xf9\xfb\xdf\xf7\xdf\xf6\xfb\xf7\xfb\xfb\xf9\xdf\xf7\xdf\xf5\xf7\xf9\xf7\xf9\xf9\xdf\xf7\xf9\xf9\xfb\xfb\xf9\xfb\xdf\xf3\xfb\xfb\xfb\xfb\xfb\xdf\xf3\xdf\xf6\xf9\xf9\xfb\xfb\xf9\xfb\xdf\xf3\xfb\xfb\xfb\xfb\xfb\xdf\xf2\xfb\xdf\xf6\xf9\xf9\xdf\xf4\xf6\xdf\xf6\xf9\xf6\xdf\xf9\xf9\xdf\xf4\xf8\xf8\xfb\xfb\xf6\xfb\xfb\xfb\xfb\xf8\xfa\xfa\xf8\xf8\xfa\xde\xf1\xfa\xf8\xf8\xfa\xde\xf3\xfa\xf5\xfa\xde\xf3\xdf\xf3\xfb\xf8\xf8\xdf\xf6\xdf\xf4\xfb"));
rcv($sock_c, $port_c, rtpm(9, $seq + 3, $ts + 480, $ssrc, "\xfb\xf8\xfa\xfa\xfa\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xde\xf2\xf8\xf8\xde\xf4\xf5\xfa\xde\xf1\xf5\xfa\xde\xf5\xf8\xfa\xf5\xf8\xfa\xde\xf5\xf5\xf8\xfa\xde\xf3\xf8\xf8\xf8\xde\xf5\xf8\xf8\xf5\xf8\xfa\xde\xf5\xf5\xf8\xfa\xfa\xfa\xfa\xf7\xf8\xfa\xdb\xf3\xfa\xf8\xf8\xfa\xde\xf8\xf5\xf5\xf8\xfa\xde\xf8\xfa\xf7\xf2\xfa\xde\xfa\xde\xf5\xf5\xf3\xf8\xde\xfa\xdc\xf8\xf5\xf1\xf6\xda\xf2\xda\xfb\xf9\xf4\xf4\xdf\xf4\xdf\xfb\xfb\xf6\xf6\xfb\xf9\xdf\xfb\xfb\xf8\xf6\xfb\xf8\xfb\xdc\xf8\xf8\xf8\xf5\xf5\xf8\xdc\xfa\xde\xf3\xf8\xf6\xf8\xf8\xde\xde\xf3\xf8\xf8\xf6\xf8\xfb\xd9\xf6\xfb\xf8\xf6\xdf\xf4\xdf\xf8\xf8\xf8\xf5\xf8\xf8\xfa\xfa\xde\xf5\xf5\xfa\xfa\xf3"));
rcv($sock_c, $port_c, rtpm(9, $seq + 4, $ts + 640, $ssrc, "\xfb\xd7\xf4\xf6\xdf\xf6\xf6\xf6\xda\xf6\xf9\xdf\xf6\xf9\xf3\xdb\xf5\xf9\xdf\xf7\xf9\xf3\xdb\xf7\xdd\xdf\xf7\xf7\xf7\xdb\xf6\xfb\xdb\xf6\xf8\xf5\xde\xf6\xfa\xde\xf7\xdf\xf3\xfa\xfa\xfa\xdf\xf6\xdf\xf4\xf8\xf9\xf9\xfb\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf8\xf8\xfb\xfb\xf8\xf8\xfa\xde\xf3\xf8\xf8\xfa\xde\xf3\xdf\xf4\xf8\xf8\xf8\xde\xf3\xfb\xf8\xf8\xfb\xfa\xde\xf3\xf8\xf8\xfb\xde\xf3\xfb\xf8\xf8\xfa\xde\xf8\xf5\xf5\xf8\xfa\xde\xf8\xfa\xf8\xf3\xfa\xfa\xdc\xfa\xde\xf1\xf3\xfb\xfb\xdc\xfa\xd9\xf4\xf2\xdf\xf2\xfb\xdd\xdd\xf8\xf4\xf8\xf4\xf6\xdd\xdf\xf6\xfb\xf8\xf6\xf9\xf8\xdc\xfb\xfb\xf8\xf4\xf8\xf8\xdf\xf5\xf8\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 5, $ts + 800, $ssrc, "\xfa\xf8\xf5\xde\xf5\xf8\xfa\xde\xf1\xf6\xda\xf2\xdf\xf4\xdf\xf4\xf6\xdf\xf4\xfb\xfb\xfb\xf8\xf8\xdf\xf6\xf8\xf6\xfb\xf8\xfb\xdc\xf8\xf8\xf5\xf6\xdf\xf6\xdf\xf6\xf8\xf6\xfb\xfb\xfb\xdf\xf5\xf8\xf8\xf8\xf8\xfa\xde\xf1\xf8\xfa\xde\xf1\xfb\xdf\xf3\xf8\xfb\xdf\xf4\xfb\xfb\xf6\xf8\xfb\xdc\xf8\xf8\xf8\xf5\xf5\xfa\xd9\xf8\xfa\xfa\xf5\xf3\xdf\xf8\xdf\xf8\xf8\xf5\xf1\xfb\xdc\xdf\xf8\xf8\xf5\xf1\xf6\xda\xf9\xdf\xf8\xf6\xf4\xf2\xdd\xdf\xfb\xdd\xf6\xf6\xf3\xf9\xdf\xf9\xdd\xdf\xf3\xf3\xf9\xfb\xdd\xdf\xfb\xf9\xf4\xf6\xf9\xf9\xdd\xdf\xf6\xf9\xf6\xf9\xf4\xdd\xdd\xf9\xf9\xf9\xf6\xf9\xf6\xda\xf6\xfb\xfb\xf9\xf6\xfb\xdd\xf8\xf8\xfb\xdf\xf0\xf6\xda\xf4"));
rcv($sock_c, $port_c, rtpm(9, $seq + 6, $ts + 960, $ssrc, "\xf9\xdf\xfb\xf9\xf2\xdd\xf9\xf9\xdf\xf9\xfb\xf6\xf8\xf8\xfb\xdc\xf8\xfb\xf8\xf5\xf8\xf5\xdf\xf4\xfb\xf8\xf8\xde\xf3\xdf\xf4\xfb\xfb\xf8\xfa\xfa\xfa\xf8\xf8\xfa\xde\xf1\xf8\xfa\xdc\xf3\xf5\xdf\xfa\xf8\xf1\xdf\xf6\xdf\xf4\xfb\xdc\xf6\xdf\xf4\xfb\xf8\xf8\xfa\xfa\xfa\xf8\xf8\xfa\xde\xf3\xf8\xf8\xde\xf3\xfa\xfa\xfa\xf5\xf8\xdc\xfa\xf8\xf5\xfa\xf8\xf5\xde\xfa\xf8\xf5\xf8\xfa\xfa\xde\xf2\xfa\xf8\xf8\xfa\xde\xf4\xf5\xf8\xfa\xde\xf2\xde\xf5\xf5\xf5\xde\xde\xef\xdf\xf8\xf6\xf4\xdf\xdf\xf2\xfb\xdf\xf4\xf6\xdf\xfb\xf9\xf4\xdd\xfb\xf6\xfb\xfb\xfb\xf8\xfb\xdc\xf6\xdf\xf4\xf6\xfb\xf8\xdf\xf6\xdc\xf8\xf6\xf8\xf8\xfa\xde\xf5\xf8\xfa\xf8\xf3\xdf\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 7, $ts + 1120, $ssrc, "\xf8\xf8\xde\xf8\xf1\xfa\xfa\xf5\xf8\xd9\xfa\xfa\xf8\xf5\xf5\xf8\xde\xf5\xfa\xd9\xf3\xf6\xfb\xdc\xf8\xf6\xda\xf0\xf9\xf6\xdd\xfb\xf9\xfb\xfb\xfb\xf6\xdf\xf4\xdf\xf6\xf6\xf9\xf6\xda\xf6\xfb\xf9\xf6\xfb\xf6\xdd\xfb\xdf\xf6\xf4\xf9\xf6\xda\xf6\xfb\xfb\xf6\xf9\xf9\xdd\xfb\xfb\xfb\xf6\xf8\xf6\xda\xf4\xfb\xdf\xf1\xf6\xdf\xf6\xf9\xf9\xdd\xfb\xf6\xf9\xf6\xdf\xf4\xfb\xdd\xf6\xf9\xf6\xdf\xf4\xfb\xdf\xf4\xfb\xf9\xf9\xfb\xfb\xfb\xf8\xf8\xfb\xdf\xf1\xf8\xf8\xfb\xdf\xf6\xdf\xf2\xf6\xf6\xfb\xdd\xdf\xdf\xf4\xf2\xf6\xfb\xdf\xf9\xda\xf9\xf6\xf3\xf7\xfb\xdf\xfb\xda\xf6\xf5\xf3\xdf\xfb\xf9\xdd\xdf\xf7\xf5\xf7\xfb\xfb\xdf\xfb\xdf\xf4\xf7\xf9\xf9\xdf\xf9"));
rcv($sock_c, $port_c, rtpm(9, $seq + 8, $ts + 1280, $ssrc, "\xdf\xf6\xf6\xf6\xf9\xdf\xfb\xdd\xf9\xf6\xf6\xf6\xdf\xf9\xdf\xfb\xf9\xf6\xf6\xf9\xfb\xdd\xfb\xfb\xfb\xf8\xf6\xfb\xdf\xf4\xf8\xdf\xf8\xf6\xf8\xfb\xdf\xf3\xfb\xdf\xf4\xf4\xfb\xda\xf4\xf8\xdf\xf6\xf6\xf6\xdf\xf9\xdf\xfb\xfb\xf6\xf4\xf8\xdf\xfb\xdf\xf6\xf6\xf6\xf8\xdf\xfb\xdc\xf8\xf6\xf6\xf8\xfb\xdc\xfb\xfa\xf8\xf5\xf8\xfa\xde\xf1\xf6\xdc\xf8\xf8\xfa\xde\xf3\xf4\xf8\xdf\xf8\xfb\xde\xf3\xf6\xf6\xfb\xdf\xf8\xdc\xfb\xf8\xf3\xf6\xf8\xfb\xda\xf8\xfb\xf8\xf4\xf6\xfb\xdc\xfb\xdf\xf4\xf6\xfb\xfb\xdf\xf4\xfb\xdc\xf5\xf6\xf8\xfb\xfb\xfa\xde\xf5\xf5\xfb\xfa\xf8\xf5\xfa\xdc\xf5\xf5\xfb\xde\xf1\xf4\xdf\xf8\xf8\xfb\xdf\xf3\xf6\xf8\xfb\xdf\xf6\xdf\xf6"));
rcv($sock_c, $port_c, rtpm(9, $seq + 9, $ts + 1440, $ssrc, "\xf6\xf8\xfb\xdc\xf8\xfb\xfb\xf5\xf6\xfb\xfb\xfb\xde\xf3\xfb\xdf\xf2\xf6\xfb\xda\xf8\xf8\xfb\xf8\xf4\xf6\xdc\xfb\xfb\xfb\xfb\xf8\xf5\xfb\xdc\xf5\xf6\xdf\xf6\xf4\xf6\xdc\xdf\xf6\xdf\xf4\xf6\xf6\xfb\xda\xf9\xdf\xf4\xf4\xf4\xf9\xdd\xdf\xfb\xfb\xf6\xf2\xf6\xdf\xdf\xfb\xdd\xf6\xf9\xf4\xf9\xdf\xf9\xfb\xfb\xf8\xf6\xf8\xfb\xdc\xf8\xfb\xfa\xf5\xf3\xdf\xf6\xfb\xfb\xdf\xf6\xfb\xdf\xf4\xf8\xfb\xdf\xf3\xf8\xfb\xfb\xf8\xf8\xde\xf5\xf8\xf8\xf8\xf8\xf8\xfa\xde\xf1\xfa\xfa\xfa\xf8\xf8\xde\xf3\xfa\xf8\xf8\xf8\xde\xf5\xf8\xf5\xfa\xf8\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 10, $ts + 1600, $ssrc, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xde\xee\xd6\xef\xda\xf2\xda\xf9\xf1\xd9\xf3\xd6\xef\xd9\xde\xef\xd7\xf1\xdc\xf8\xfa\xda\xef\xd5\xf8\xf9\xfc\xfe\xdd\xf2\xd9\xfe\xfb\xfb\xdf\xf8\xf3\xd8\xdc\xf9\xf6\xdb\xf5\xf3\xd9\xdb\xf5\xf8\xdd\xf8\xf2\xdb\xdf\xf6\xfe\xdf\xf7\xf8\xfe\xd9\xf8\xf9\xfc\xf9\xf9\xfc\xdb\xf6\xfc\xfa\xfe\xfa\xfc\xdb\xf6\xfa\xf8\xfe\xfe\xfc\xda\xf6\xfa\xf8\xf8\xdf\xf5\xdc"));
rcv($sock_c, $port_c, rtpm(9, $seq + 11, $ts + 1760, $ssrc, "\xfb\xdf\xf1\xf8\xdf\xf8\xdf\xf6\xfb\xf8\xf7\xda\xfa\xde\xf6\xf8\xf6\xfa\xdd\xdd\xdb\xf3\xf6\xf6\xf6\xdf\xde\xdc\xfa\xf8\xf3\xf8\xfb\xd9\xdc\xfb\xdf\xf0\xf3\xfc\xdc\xdc\xfb\xda\xf5\xf2\xf8\xfe\xdc\xfb\xd9\xfb\xf5\xf6\xfb\xde\xfa\xdc\xfa\xf9\xf4\xf9\xfb\xdf\xf7\xdd\xf9\xf7\xfb\xdf\xf5\xf7\xda\xf9\xf6\xf9\xdf\xf6\xf7\xda\xf9\xf7\xdf\xf9\xf7\xf7\xda\xfa\xfb\xdf\xf6\xf6\xf6\xdc\xdb\xf6\xfb\xfb\xf7\xfa\xfb\xdb\xf6\xfa\xf9\xf9\xf9\xf9\xdd\xf9\xf7\xf7\xf7\xdf\xfb\xdd\xf9\xfb\xf5\xf5\xf9\xdf\xfb\xfb\xf9\xf9\xf6\xf9\xfb\xdf\xf6\xf9\xf9\xf9\xf9\xfb\xdf\xf4\xf6\xf9\xf9\xfb\xdf\xf8\xf8\xf6\xf8\xf6\xfb\xdf\xf8\xfb\xf8\xf5\xf6\xdf\xf6\xdf\xf6\xfb"));
rcv($sock_c, $port_c, rtpm(9, $seq + 12, $ts + 1920, $ssrc, "\xf6\xf6\xdf\xf6\xdc\xf8\xf8\xf6\xf8\xf8\xf8\xdf\xf8\xf8\xf5\xf5\xf8\xfa\xd9\xf5\xfb\xfb\xf5\xf6\xdc\xdf\xf4\xf8\xf8\xf8\xf3\xdf\xf8\xfb\xf8\xfa\xde\xef\xfb\xfb\xfb\xfb\xdf\xfb\xf6\xf6\xfb\xfb\xfb\xdc\xfa\xfa\xf5\xf3\xdf\xf4\xdf\xf8\xdf\xf6\xf2\xf8\xfb\xdf\xf6\xdc\xfb\xf6\xf6\xf8\xfb\xdf\xf8\xfb\xfb\xf5\xf4\xfb\xdc\xf8\xfa\xde\xf3\xf4\xf8\xdf\xf6\xf8\xdc\xfb\xf3\xf6\xdc\xf6\xf8\xdc\xdc\xf4\xf2\xdf\xf1\xf9\xdd\xdd\xdf\xf3\xf9\xf6\xfb\xdf\xf6\xdd\xf9\xfb\xfb\xf9\xf8\xf8\xfb\xdf\xf2\xfb\xdf\xf4\xfb\xdc\xfb\xf8\xf6\xfb\xf8\xf8\xdf\xf8\xfa\xf5\xf5\xf8\xfa\xdc\xf5\xf5\xf8\xfa\xde\xef\xf8\xf8\xdc\xfb\xfb\xfb\xf6\xf6\xfb\xdc\xfb\xdf\xf1\xf8"));
# push media
snd($sock_a, $port_b, rtp (0, 1002, 3320, 0x1234, "\x44" x 160));
rcv($sock_b, $port_a, rtpm(0, 1002, 3320, 0x1234, "\x44" x 160));
snd($sock_b, $port_a, rtp (0, 8001, 10160, 0x2d8c, "\x55" x 160));
rcv($sock_a, $port_b, rtpm(0, 8001, 10160, 0x2d8c, "\x55" x 160));
rcv($sock_c, $port_c, rtpm(9, $seq + 13, $ts + 2080, $ssrc, "\xf1\xf6\xdb\xf8\xfc\xd7\xfb\xf3\xf6\xde\xfb\xdd\xd8\xfe\xf3\xf5\xfe\xdf\xfc\xda\xdf\xf1\xf4\xf8\xdf\xfc\xdc\xdd\xf5\xf6\xfb\xdf\xfb\xdf\xdf\xf8\xf4\xf6\xfe\xfe\x1e\x99\x2c\x87\x22\x84\x0b\xaf\xb5\xbb\x1f\xb9\x57\xd3\xfa\x74\xf6\xff\xff\xd9\xd3\x9f\x76\xf7\xfd\xfb\xdb\xd7\xda\xfb\xfc\xf8\xb6\x5e\xd8\xd6\xbe\x5e\xfc\xb6\x7d\xdd\xd8\xda\x9d\x5f\xf9\xbb\x5d\xdc\xda\xdd\x9b\x7c\xfb\x9d\x5e\xdf\xde\x9a\x5e\xfd\xfe\x9a\x7f\xdd\xda\xdc\xdd\xdf\xfe\xdb\x7c\x9d\xdb\xdf\xfe\x9b\x7e\x9b\xfc\x1e\x98\x36\x8a\x20\xa9\x4c\x99\x79\x7a\xd8\x7b\xf2\xff\xd9\xdf\xf9\xde\xfe\x79\xf8\xfd\xdf\xfc\xfd\xbe\x5f\xf8\x79\xfe\x9e\xfc\xfb\x5d\xff\xfb\xfe\xbe\xdf"));
rcv($sock_c, $port_c, rtpm(9, $seq + 13, $ts + 2080, $ssrc, "\xfb\xf8\xf8\xfa\xdc\xf5\xf5\xf8\xf8\xf8\xf5\xfa\xd9\xf5\xf8\xfb\xde\xef\xf6\xdf\xf6\xdd\xfb\xfb\xf4\xf4\xfb\xdd\xfb\xfb\xf8\xf6\xf8\xf6\xdc\xfb\xfb\xf8\xf6\xdf\x28\x84\x20\x84\x20\x84\x04\xbd\x35\xb7\x9f\xf9\x5c\x8e\x16\xbb\x3b\xbd\xfc\x37\x8d\x27\x9c\x11\xba\x1f\xb8\x5c\x75\xf6\x59\xda\x7e\xdf\xfc\x78\x75\xfd\xdb\x5f\xdf\x7e\xff\xf9\x79\xdf\xdf\x5f\xfe\xdd\xff\xfa\x7e\xdd\xdd\xdf\xff\xde\xfd\xfc\xfd\xde\xdd\xde\xfe\xdc\xdd\xfd\x9f\x7f\xdb\xfd\xde\xde\x9f\xfe\xdc\xdb\xfd\xde\xdd\xdd\x9d\xde\xdd\xdd\xdd\xdd\xdd\xdd\xdd\x9c\xdc\xdb\xfd\xde\xdd\xdc\xdb\xfd\xdb\xfe\xdb\xfe\xdc\xd9\xde\xde\xdf\xfe\xda\xdf\xff\xda\xde\xde\xff\xdc\xd9\xff"));
rtpe_req('delete', 'delete');
@ -322,30 +322,30 @@ snd($sock_a, $port_b, rtp (0, 1001, 3160, 0x1234, "\x11" x 160));
rcv($sock_b, $port_a, rtpm(0, 1001, 3160, 0x1234, "\x11" x 160));
rcv_no($sock_a);
rcv_no($sock_b);
($seq, $ts, $ssrc) = rcv($sock_c, $port_c, rtpm(9 | 0x80, -1, -1, -1, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\x2a\x84\x20\x84\x20\x84\x04\x8e\x16\x9d\x5d\xfe\xdb\xd8\xd1\xd3\xd9\xd9\x9b\xdc\xd9\xd7\xd7\xd8\xd6\xd9\xda\xdb\xd9\xd7\xda\xd7\x9a\xd9\xd8\xd8\xd6\xd9\xd7\xda\xd9\xd9\xd9\xd6\xda\xd7\xda\xda\xd9\xd9\xd6\xda\xd7\xdb\xda\xda\xd9\xd7\xdb\xd8\xd6\xda\xdb\xdb\xd8\xd6\xda\xd8\xd6\xdb\xdb\xdc\xd3\xdf\xd9\xd6\xd9\xd9\xdc\xd2\x9e\x1b\x96\x3f\x8b\x20\xb5\x0c\xba\x3f\xbe\xd5\x6d\xf0\xd5\xdb\x7b\xdf\xdc\xf6\xf1\xdd\xd8\xdd\xdf\xfd\xf8\xf1\xfc\xdd\xda\x9e\xff\x7d\xf2\xfc\xbb\xd8\xdb\xfc"));
($seq, $ts, $ssrc) = rcv($sock_c, $port_c, rtpm(9 | 0x80, -1, -1, -1, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\x2a\x84\x20\x84\x20\x84\x04\x8e\x16\x9d\x5d\xfe\xdb\xd8\xd1\xd3\xd9\xd9\x9b\xdc\xd9\xd7\xd7\xd8\xd6\xd9\xda\xdb\xd9\xd7\xda\xd7\x9a\xd9\xd8\xd8\xd6\xd9\xd7\xda\xd9\xd9\xd9\xd6\xda\xd7\xda\xda\xd9\xd9\xd6\xda\xd7\xdb\xda\xda\xd9\xd7\xdb\xd8\xd6\xda\xdb\xdb\xd8\xd6\xda\xd8\xd6\xdb\xdb\xdc\xd3\xdf\xd9\xd6\xd9\xd9\xdc\xd2\xde\xda\xd7\xdc\xd5\xdd\xd4\xd8\xd9\xd6\xdf\xd7\xdf\xd8\xd4\xd9\xd7\xff\xd3\xfc\xda\xd6\xda\xd7\xfd\xd3\xfd\xda\xd7\xdc\xd3\xfa\xd3\xfd\xda\xd8\xd8\xd3\xf7\xd1"));
# untriggered media
rcv($sock_c, $port_c, rtpm(9, $seq + 1, $ts + 160, $ssrc, "\xff\xf5\xfb\xbb\xdc\xd9\xfe\xdd\xf8\xf8\xf7\xdf\xdd\xfe\xdc\xfe\xfd\xf6\xff\xde\xfd\xfe\xde\xff\xf9\xfa\xdf\xfd\xfc\xff\xdf\xfb\xfb\xde\xfd\xfd\xfc\xff\xff\xfb\xdf\xfc\xfc\xfc\xfb\xdf\xfa\xfe\xdf\xfc\xfc\xf9\xff\xfd\xfd\xfe\xfe\xdf\xfa\xfc\xfc\xfc\xfc\xfc\xff\xfc\xfd\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfb\xdf\xfb\xff\xff\xff\xff\xfc\xfd\xfc\xfc\xfb\xfe\xdf\xfa\xfc\xfc\xfb\xfc\xfb\xdf\xfc\xfa\xfb\xdf\xf9\xf9\xfe\xdf\xfa\xf9\xfc\xfc\xfc\xfb\xdf\xf8\xfb\xfe\xfc\xfc\xfb\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfb\xdf\xf3\xfe\xfa\xfa\xfb\xdf\xf6\xfa\xf8\xf7\xde\xf4\xdf\xf6\xf8\xf7\xfb\xdf\xf7\xdd\xf9\xfb\xf9\xf7\xfb\xf9\xfb\xdf\xf7\xf9\xf9\xfb"));
rcv($sock_c, $port_c, rtpm(9, $seq + 1, $ts + 160, $ssrc, "\xde\xde\xdb\xdb\xd6\xfb\xd2\xdf\xfe\xd6\xdb\xdb\xfc\xd4\xd6\xf9\xd7\xdc\xd5\xff\xd7\xdb\xfd\xd8\x96\x1e\x98\x39\x86\x20\xb4\x08\xbc\x31\xbc\xda\xec\xf0\x50\xd3\xf1\x7b\xdc\xf5\xf2\xd7\xd7\xfb\xff\xf8\xf6\xf6\xdb\xd8\xda\xf9\xf9\xb6\x77\x9c\xd9\xd8\xdf\xf6\xf9\xf4\xbb\x58\x99\xdd\xfc\xf6\xfb\xb8\x7f\xda\xde\xdf\xb7\xfe\xfa\xfb\xdc\x9c\x5b\xb5\xfe\xff\xf9\xfc\xbd\x5a\xfa\xfd\xff\xbc\xf9\xfc\xde\xbd\x7c\xfc\xfd\xfb\xbf\xdf\xfc\xbb\x5e\xfd\xbb\x7f\x9f\x7c\xf9\xfe\xde\xfa\xfd\xff\xdf\xfa\xfc\xff\xbf\xff\xfc\xfe\xbf\xff\xfd\xfd\xbd\xfd\xfd\xbd\x7d\xfd\xbd\xfd\xfd\xbd\xfd\x7d\xbd\xfd\x7d\xfd\xbd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfd"));
# catch up to delay caused by rcv_no above
rcv($sock_c, $port_c, rtpm(9, $seq + 2, $ts + 320, $ssrc, "\xfb\xf9\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf8\xf8\xfb\xfb\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xfa\xf7\xfa\xfa\xfa\xfa\xfa\xfa\xf7\xfa\xfa\xfa\xfa\xfa\xfa\xf7\xfa\xde\xf2\xde\xf2\xde\xf0\xfa\xdc\xf3\xdc\xf3\xdf\xf3\xfb\xfb\xfb\xfb\xfb\xfa\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xde\xee\xde\xf5\xfb\xfa\xf8\xde\xf1\xdf\xf6\xf8\xf8\xf8\xfa\xf8\xfa\xde\xf1\xfa\xfa\xf8\xf8\xfa\xd9\xf3\xf8\xf8\xfa\xde\xf1\xdc\xf6\xf8\xf8\xf8\xde\xf3\xfb\xf8\xf8\xfa\xde\xf3\xf8\xf8\xfa\xde\xf1\xdf\xf6\xf8\xf8\xf8\xde\xf5\xf8\xf8\xf8\xf8\xf8\xde\xf5\xf5\xf8\xfa\xfa\xf8\xde\xf5\xf5\xf8\xfa\xde\xf1\xde\xf5\xf5\xf8\xfa\xdc\xf8\xf8\xf5\xf5\xf8\xfa\xd9\xf8\xf5\xf8\xf8\xf5"));
rcv($sock_c, $port_c, rtpm(9, $seq + 3, $ts + 480, $ssrc, "\xf8\xdc\xde\xef\xfb\xdf\xf0\xfb\xd6\xf4\xf3\xdf\xf9\xf3\xf9\xd9\xfb\xf5\xfb\xdf\xf2\xf7\xdd\xdf\xf7\xdf\xf5\xf5\xf7\xdd\xdf\xf9\xfb\xf9\xf3\xfb\xdf\xf9\xdf\xf9\xf7\xf5\xf5\xdf\xfb\xdf\xf9\xf7\xf9\xf5\xfb\xdf\xf9\xfb\xfb\xf6\xf6\xf9\xdf\xfb\xfb\xfb\xf9\xf4\xf9\xdf\xf6\xdf\xf6\xf9\xf6\xf9\xfb\xdf\xf8\xf8\xfb\xf6\xf6\xfb\xdc\xfb\xdf\xf4\xf6\xfb\xf6\xdf\xf4\xdc\xdf\xf4\xf6\xfb\xf8\xf6\xdc\xdf\xf4\xf8\xfb\xfb\xf4\xfb\xda\xf2\xdf\xf6\xfb\xf8\xf8\xdf\xf4\xfb\xfb\xfb\xf8\xf8\xdf\xf3\xf8\xfb\xdf\xf2\xfb\xdc\xf8\xf6\xdc\xfb\xf4\xf8\xdf\xf8\xf5\xfb\xdf\xf1\xf6\xdc\xf8\xf8\xfb\xdf\xf4\xf6\xdf\xf6\xf8\xfb\xdc\xf8\xf5\xfb\xf8\xf5\xfb\xdc\xf5\xf8"));
rcv($sock_c, $port_c, rtpm(9, $seq + 4, $ts + 640, $ssrc, "\xfa\xf5\xf8\xfa\xdc\xf8\xf5\xf5\xf8\xde\xf5\xf8\xf8\xf5\xf8\xfa\xdc\xf8\xf5\xf5\xf8\xfa\xdc\xf8\xf8\xf5\xf5\xf8\xfa\xd9\xf8\xf8\xf5\xf5\xf8\xfa\xd9\xf8\xfa\xfa\xf5\xf3\xde\xf8\xde\xf8\xf8\xf5\xf1\xfa\xde\xfa\xde\xf3\xf8\xf3\xf6\xdc\xfb\xda\xf6\xf8\xf4\xf6\xfb\xf8\xdc\xdf\xf6\xf8\xf6\xf8\xf6\xdf\xfb\xfb\xfb\xf8\xf6\xf8\xfb\xdc\xf8\xf8\xfa\xf5\xf3\xdf\xf8\xf8\xdc\xfa\xf8\xef\xdf\xf8\xf6\xdc\xf8\xdf\xf0\xf8\xfb\xf8\xfb\xfb\xdf\xf4\xf8\xf8\xfa\xfa\xf8\xfa\xde\xf1\xf8\xfa\xde\xf1\xf6\xda\xf4\xfb\xf6\xdf\xf6\xf6\xdd\xf8\xfb\xf8\xf8\xfb\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xde\xf3\xf8\xf8\xfa\xde\xf3\xde\xf3\xf8\xf8\xfb\xdc\xf5\xfa\xf8\xf5\xf8\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 5, $ts + 800, $ssrc, "\xd9\xf5\xf8\xfa\xfa\xf8\xf5\xde\xf5\xf8\xfa\xde\xf3\xf5\xfb\xdf\xf5\xf8\xdc\xf8\xf3\xf6\xdc\xf8\xf8\xdf\xf3\xf6\xfb\xdf\xf6\xfb\xfb\xf8\xf6\xdc\xfb\xf8\xf6\xfb\xfb\xf8\xfa\xdc\xf8\xf5\xf5\xf8\xfa\xde\xf5\xfa\xde\xf1\xf6\xfb\xdf\xf5\xf6\xd8\xf6\xf8\xf2\xdf\xf9\xf6\xda\xf4\xdf\xf3\xf7\xf9\xf7\xd9\xfb\xdf\xf3\xf7\xf7\xf9\xdd\xdb\xfb\xf7\xf2\xf4\xfa\xdb\xdf\xfb\xf9\xf3\xf6\xf6\xde\xde\xdf\xf4\xf6\xf6\xf5\xfa\xde\xfb\xde\xf4\xf8\xf6\xf8\xf9\xfb\xdd\xf9\xfb\xf9\xf7\xfb\xf9\xfb\xdd\xf9\xfb\xf9\xf6\xdf\xf3\xdf\xf9\xfb\xdf\xf4\xdf\xf4\xf7\xfb\xfb\xdf\xf6\xfb\xfb\xf9\xf6\xdf\xf9\xf9\xfb\xfb\xf6\xf9\xfb\xdf\xf6\xfb\xfb\xf8\xf6\xfb\xdf\xf6\xdf"));
rcv($sock_c, $port_c, rtpm(9, $seq + 6, $ts + 960, $ssrc, "\xf6\xfb\xf6\xf8\xfb\xdf\xf8\xf8\xfa\xf8\xf3\xfb\xdc\xf8\xf8\xde\xf5\xf1\xf6\xda\xf0\xf9\xd8\xfb\xf6\xf4\xdf\xf4\xf6\xdd\xdf\xf6\xf9\xfb\xfb\xf9\xf9\xdf\xf4\xfb\xf9\xf8\xfb\xdf\xf4\xfb\xf8\xf8\xfb\xfb\xde\xf1\xfb\xfb\xfb\xfa\xf8\xde\xf3\xfb\xf8\xf8\xde\xf3\xda\xf0\xf9\xf6\xdf\xf9\xf6\xda\xf3\xfb\xf4\xfb\xdd\xf9\xdd\xf9\xf9\xf6\xf9\xf9\xfb\xdc\xf8\xf8\xf6\xdf\xf4\xf6\xdf\xf6\xdf\xf6\xdf\xf6\xf6\xfb\xfb\xdf\xf6\xfb\xfb\xf8\xf6\xfb\xdf\xf6\xf8\xfb\xfb\xf8\xf8\xde\xf3\xf8\xfb\xfb\xfa\xde\xf3\xf8\xfb\xfb\xfa\xfa\xde\xf1\xf8\xfa\xfa\xfa\xfa\xdc\xf5\xf5\xf8\xfa\xde\xf1\xfa\xdc\xf5\xf5\xf8\xde\xf3\xdf\xf6\xf6\xf6\xf8\xdc\xdf\xf8\xf8\xf6\xf4"));
rcv($sock_c, $port_c, rtpm(9, $seq + 7, $ts + 1120, $ssrc, "\xf4\xdf\xdf\xfb\xdf\xf4\xf4\xf4\xf8\xdc\xdf\xfb\xfb\xf6\xf4\xf6\xdf\xfb\xdc\xfb\xfb\xf5\xf2\xfb\xf8\xdf\xf8\xdc\xfb\xf5\xf4\xf6\xdf\xf6\xfb\xdf\xf8\xfb\xfb\xfa\xf8\xf5\xfa\xdc\xf5\xf5\xf8\xfa\xf8\xf3\xda\xf6\xf6\xfb\xdf\xf6\xf6\xdc\xfb\xdf\xf2\xfb\xfb\xfb\xfb\xdf\xf6\xf6\xfb\xdf\xf6\xf8\xdf\xf8\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xde\xf1\xf8\xfa\xde\xf1\xf8\xde\xf3\xfb\xf6\xdf\xf6\xfb\xdf\xf6\xfb\xf8\xfb\xde\xf1\xdf\xf6\xf8\xf8\xfb\xdf\xf3\xdf\xf4\xf8\xfb\xfb\xfb\xf8\xfa\xfa\xf8\xf8\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 8, $ts + 1280, $ssrc, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xde\xee\xd6\xef\xdc\xdf\xf4\xda\xec\xdd\xf6\xda\xf9\xf4\xdb\xef\xda\xf3\xd6\xf7\xfa\xd9\xf2\xfe\xf8\xda\xf7\xde\xfa\xf8\xf7\xfe\xd9\xf7\xdc\xfa\xfa\xf6\xfc\xdc\xfb\xd9\xf8\xf5\xf6\xfb\xd9\xfb\xd7\xf2\xf6\xfa\xfc\xfe\xd9\xd9\xf6\xf4\xf7\xde\xf6\xd8\xd8\xf7\xf6\xf7\xde\xf4\xdd\xd4\xfc\xf1\xf6\xdf\xf4\xfc\xd4\xdf\xf0\xf4\xfc\xf8\xf9\xd7\xdd\xf4\xf3\xfc\xf9\xfb\xd7\xdd\xf7\xf7\xfb\xf8\xf6\xd7\xdc"));
rcv($sock_c, $port_c, rtpm(9, $seq + 9, $ts + 1440, $ssrc, "\xf8\xf7\xfb\xf7\xf8\xdb\xdd\xfe\xf9\xf8\xf5\xf8\xdd\xdd\xfe\xfe\xf9\xf7\xfc\xfc\xdc\xfe\xfe\xfa\xf8\xfa\xfb\xdc\xfb\xdc\xf9\xf6\xf9\xf7\xdb\xf5\xfb\xda\xf5\xf8\xfa\xde\xf6\xfa\xdb\xf5\xf8\xfb\xdb\xf3\xfb\xd9\xfa\xf6\xfa\xde\xf6\xfa\xde\xfa\xfa\xf9\xdf\xf6\xf7\xdd\xfb\xdd\xf9\xf9\xf5\xf7\xfb\xdf\xf9\xfb\xfb\xf7\xf7\xdf\xf9\xfb\xfb\xf9\xf6\xfb\xdf\xf6\xfb\xf9\xf9\xf9\xf9\xdf\xf4\xf9\xf9\xf8\xf8\xf8\xdf\xf4\xf8\xf8\xf8\xf8\xf8\xde\xf3\xfb\xfb\xfb\xfa\xfa\xdc\xf5\xf5\xf8\xfa\xde\xf1\xdf\xf6\xfb\xf8\xf5\xdf\xf4\xdf\xf6\xf8\xf6\xf8\xfb\xdf\xf8\xf8\xf8\xf5\xf5\xf8\xdc\xde\xf3\xf8\xf8\xf3\xfb\xdc\xdf\xf2\xdc\xfb\xf6\xf6\xdf\xf6\xf8\xdf\xf8"));
rcv($sock_c, $port_c, rtpm(9, $seq + 10, $ts + 1600, $ssrc, "\xf8\xf6\xdc\xf6\xf8\xfb\xfb\xfb\xf5\xfb\xdc\xf5\xf8\xf8\xf8\xf8\xf5\xde\xf8\xf8\xf8\xf8\xf8\xf5\xfa\xdc\xf8\xf8\xf7\xfa\xf7\xf8\xde\xf7\xde\xf0\xf8\xf8\xf8\xde\xf3\xdc\xf5\xf3\xdf\xf8\xfa\xf5\xfb\xde\xf1\xf8\xdf\xf8\xf3\xf8\xdf\xf6\xf8\xfb\xfb\xf6\xfb\xdf\xf4\xfb\xdf\xf1\xf6\xdf\xfb\xf6\xf8\xdc\xf8\xf6\xdf\xf6\xf6\xf8\xfb\xdf\xf6\xdf\xf4\xf6\xf8\xfb\xdf\xf6\xdf\xf4\xf6\xf6\xfb\xdf\xf8\xdf\xf6\xf6\xf2\xfb\xdf\xfb\xdc\xfb\xf8\xf2\xf9\xf9\xdf\xfb\xfb\xfb\xf6\xf4\xf8\xdc\xdf\xf6\xf8\xf8\xf6\xf8\xfb\xdc\xf8\xf8\xfa\xfa\xf5\xf5\xde\xf5\xf5\xdf\xf8\xf3\xf8\xdf\xf4\xf6\xdc\xfb\xf6\xf6\xdf\xf6\xfb\xdf\xf6\xf8\xf6\xdc\xf8\xfb\xfb\xf8\xf8\xf8"));
rcv($sock_c, $port_c, rtpm(9, $seq + 11, $ts + 1760, $ssrc, "\xfa\xde\xf1\xf8\xfa\xdc\xf5\xf5\xf8\xf8\xfa\xde\xf3\xf8\xf5\xfb\xdc\xfa\xfa\xf8\xf3\xfb\xdf\xf5\xfb\xde\xf3\xf6\xf6\xdc\xdf\xf8\xfb\xf8\xf4\xf4\xdf\xfb\xdf\xf4\xfb\xfb\xf6\xf8\xfb\xdc\xf8\xfa\xfa\xf8\xf3\xde\xf3\xda\xf4\xf6\xfb\xf8\xfb\xdf\xf8\xf8\xf8\xf8\xf8\xf5\xfa\xdc\xf5\xf5\xf8\xdc\xf8\xf3\xdf\xf0\xfb\xdf\xf8\xdc\xf4\xfb\xf6\xf6\xdf\xf8\xdc\xfb\xf8\xf5\xf6\xdf\xf2\xfb\xdc\xfb\xdf\xf4\xf8\xf6\xf8\xf8\xdf\xfb\xf8\xf8\xf8\xf5\xf8\xde\xf3\xf8\xfa\xde\xf1\xfb\xdf\xf6\xf6\xf8\xdf\xf8\xfb\xfa\xf8\xf3\xdf\xf6\xdf\xf6\xf8\xfb\xfb\xfa\xf8\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 12, $ts + 1920, $ssrc, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xde\xee\xd8\xf8\xf7\xdc\xf4\xdc\xef\xda\xf4\xfb\xda\xf0\xdd\xf3\xd8\xf6\xdf\xf9\xf4\xdf\xef\xd5\xf9\xf9\xf9\xf9\xf9\xf0\xdb\xf7\xda\xf3\xda\xf7\xf5\xde\xfa\xd9\xf5\xfc\xf8\xf6\xdc\xfb\xd7\xf1\xf7\xdc\xf7\xde\xfa\xd8\xf7\xf7\xde\xf7\xfe\xdc\xdb\xf4\xf4\xfe\xfa\xf7\xd8\xd7\xf2\xf3\xdc\xf9\xf5\xd9\xd5\xf5\xf1\xfb\xdc\xf8\xfc\xd6\xfb"));
rcv($sock_c, $port_c, rtpm(9, $seq + 2, $ts + 320, $ssrc, "\xfd\xfd\xfd\xfd\xfd\xfd\xfd\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfc\xfb\xde\xf3\xdc\xf8\xfb\xde\xf1\xde\xf6\xde\xf5\xfa\xdc\xf8\xfb\xdf\xf5\xfa\xf8\xf9\xfb\xdf\xf7\xdf\xf6\xfb\xf7\xfb\xfb\xf9\xdf\xf7\xdf\xf5\xf7\xf9\xf7\xf9\xf9\xdf\xf7\xf9\xf9\xfb\xfb\xf9\xfb\xdf\xf3\xfb\xfb\xfb\xfb\xfb\xdf\xf3\xdf\xf6\xf9\xf9\xfb\xfb\xf9\xfb\xdf\xf3\xfb\xfb\xfb\xfb\xfb\xdf\xf2\xfb\xdf\xf6\xf9\xf9\xdf\xf4\xf6\xdf\xf6\xf9\xf6\xdf\xf9\xf9\xdf\xf4\xf8\xf8\xfb\xfb\xf6\xfb\xfb\xfb\xfb\xf8\xfa\xfa\xf8\xf8\xfa\xde\xf1\xfa\xf8\xf8\xfa\xde\xf3\xfa\xf5\xfa\xde\xf3\xdf\xf3\xfb\xf8\xf8\xdf\xf6\xdf\xf4\xfb"));
rcv($sock_c, $port_c, rtpm(9, $seq + 3, $ts + 480, $ssrc, "\xfb\xf8\xfa\xfa\xfa\xf8\xf8\xfa\xfa\xf8\xf8\xfa\xde\xf2\xf8\xf8\xde\xf4\xf5\xfa\xde\xf1\xf5\xfa\xde\xf5\xf8\xfa\xf5\xf8\xfa\xde\xf5\xf5\xf8\xfa\xde\xf3\xf8\xf8\xf8\xde\xf5\xf8\xf8\xf5\xf8\xfa\xde\xf5\xf5\xf8\xfa\xfa\xfa\xfa\xf7\xf8\xfa\xdb\xf3\xfa\xf8\xf8\xfa\xde\xf8\xf5\xf5\xf8\xfa\xde\xf8\xfa\xf7\xf2\xfa\xde\xfa\xde\xf5\xf5\xf3\xf8\xde\xfa\xdc\xf8\xf5\xf1\xf6\xda\xf2\xda\xfb\xf9\xf4\xf4\xdf\xf4\xdf\xfb\xfb\xf6\xf6\xfb\xf9\xdf\xfb\xfb\xf8\xf6\xfb\xf8\xfb\xdc\xf8\xf8\xf8\xf5\xf5\xf8\xdc\xfa\xde\xf3\xf8\xf6\xf8\xf8\xde\xde\xf3\xf8\xf8\xf6\xf8\xfb\xd9\xf6\xfb\xf8\xf6\xdf\xf4\xdf\xf8\xf8\xf8\xf5\xf8\xf8\xfa\xfa\xde\xf5\xf5\xfa\xfa\xf3"));
rcv($sock_c, $port_c, rtpm(9, $seq + 4, $ts + 640, $ssrc, "\xfb\xd7\xf4\xf6\xdf\xf6\xf6\xf6\xda\xf6\xf9\xdf\xf6\xf9\xf3\xdb\xf5\xf9\xdf\xf7\xf9\xf3\xdb\xf7\xdd\xdf\xf7\xf7\xf7\xdb\xf6\xfb\xdb\xf6\xf8\xf5\xde\xf6\xfa\xde\xf7\xdf\xf3\xfa\xfa\xfa\xdf\xf6\xdf\xf4\xf8\xf9\xf9\xfb\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf9\xf9\xfb\xfb\xf8\xf8\xfb\xfb\xf8\xf8\xfa\xde\xf3\xf8\xf8\xfa\xde\xf3\xdf\xf4\xf8\xf8\xf8\xde\xf3\xfb\xf8\xf8\xfb\xfa\xde\xf3\xf8\xf8\xfb\xde\xf3\xfb\xf8\xf8\xfa\xde\xf8\xf5\xf5\xf8\xfa\xde\xf8\xfa\xf8\xf3\xfa\xfa\xdc\xfa\xde\xf1\xf3\xfb\xfb\xdc\xfa\xd9\xf4\xf2\xdf\xf2\xfb\xdd\xdd\xf8\xf4\xf8\xf4\xf6\xdd\xdf\xf6\xfb\xf8\xf6\xf9\xf8\xdc\xfb\xfb\xf8\xf4\xf8\xf8\xdf\xf5\xf8\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 5, $ts + 800, $ssrc, "\xfa\xf8\xf5\xde\xf5\xf8\xfa\xde\xf1\xf6\xda\xf2\xdf\xf4\xdf\xf4\xf6\xdf\xf4\xfb\xfb\xfb\xf8\xf8\xdf\xf6\xf8\xf6\xfb\xf8\xfb\xdc\xf8\xf8\xf5\xf6\xdf\xf6\xdf\xf6\xf8\xf6\xfb\xfb\xfb\xdf\xf5\xf8\xf8\xf8\xf8\xfa\xde\xf1\xf8\xfa\xde\xf1\xfb\xdf\xf3\xf8\xfb\xdf\xf4\xfb\xfb\xf6\xf8\xfb\xdc\xf8\xf8\xf8\xf5\xf5\xfa\xd9\xf8\xfa\xfa\xf5\xf3\xdf\xf8\xdf\xf8\xf8\xf5\xf1\xfb\xdc\xdf\xf8\xf8\xf5\xf1\xf6\xda\xf9\xdf\xf8\xf6\xf4\xf2\xdd\xdf\xfb\xdd\xf6\xf6\xf3\xf9\xdf\xf9\xdd\xdf\xf3\xf3\xf9\xfb\xdd\xdf\xfb\xf9\xf4\xf6\xf9\xf9\xdd\xdf\xf6\xf9\xf6\xf9\xf4\xdd\xdd\xf9\xf9\xf9\xf6\xf9\xf6\xda\xf6\xfb\xfb\xf9\xf6\xfb\xdd\xf8\xf8\xfb\xdf\xf0\xf6\xda\xf4"));
rcv($sock_c, $port_c, rtpm(9, $seq + 6, $ts + 960, $ssrc, "\xf9\xdf\xfb\xf9\xf2\xdd\xf9\xf9\xdf\xf9\xfb\xf6\xf8\xf8\xfb\xdc\xf8\xfb\xf8\xf5\xf8\xf5\xdf\xf4\xfb\xf8\xf8\xde\xf3\xdf\xf4\xfb\xfb\xf8\xfa\xfa\xfa\xf8\xf8\xfa\xde\xf1\xf8\xfa\xdc\xf3\xf5\xdf\xfa\xf8\xf1\xdf\xf6\xdf\xf4\xfb\xdc\xf6\xdf\xf4\xfb\xf8\xf8\xfa\xfa\xfa\xf8\xf8\xfa\xde\xf3\xf8\xf8\xde\xf3\xfa\xfa\xfa\xf5\xf8\xdc\xfa\xf8\xf5\xfa\xf8\xf5\xde\xfa\xf8\xf5\xf8\xfa\xfa\xde\xf2\xfa\xf8\xf8\xfa\xde\xf4\xf5\xf8\xfa\xde\xf2\xde\xf5\xf5\xf5\xde\xde\xef\xdf\xf8\xf6\xf4\xdf\xdf\xf2\xfb\xdf\xf4\xf6\xdf\xfb\xf9\xf4\xdd\xfb\xf6\xfb\xfb\xfb\xf8\xfb\xdc\xf6\xdf\xf4\xf6\xfb\xf8\xdf\xf6\xdc\xf8\xf6\xf8\xf8\xfa\xde\xf5\xf8\xfa\xf8\xf3\xdf\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 7, $ts + 1120, $ssrc, "\xf8\xf8\xde\xf8\xf1\xfa\xfa\xf5\xf8\xd9\xfa\xfa\xf8\xf5\xf5\xf8\xde\xf5\xfa\xd9\xf3\xf6\xfb\xdc\xf8\xf6\xda\xf0\xf9\xf6\xdd\xfb\xf9\xfb\xfb\xfb\xf6\xdf\xf4\xdf\xf6\xf6\xf9\xf6\xda\xf6\xfb\xf9\xf6\xfb\xf6\xdd\xfb\xdf\xf6\xf4\xf9\xf6\xda\xf6\xfb\xfb\xf6\xf9\xf9\xdd\xfb\xfb\xfb\xf6\xf8\xf6\xda\xf4\xfb\xdf\xf1\xf6\xdf\xf6\xf9\xf9\xdd\xfb\xf6\xf9\xf6\xdf\xf4\xfb\xdd\xf6\xf9\xf6\xdf\xf4\xfb\xdf\xf4\xfb\xf9\xf9\xfb\xfb\xfb\xf8\xf8\xfb\xdf\xf1\xf8\xf8\xfb\xdf\xf6\xdf\xf2\xf6\xf6\xfb\xdd\xdf\xdf\xf4\xf2\xf6\xfb\xdf\xf9\xda\xf9\xf6\xf3\xf7\xfb\xdf\xfb\xda\xf6\xf5\xf3\xdf\xfb\xf9\xdd\xdf\xf7\xf5\xf7\xfb\xfb\xdf\xfb\xdf\xf4\xf7\xf9\xf9\xdf\xf9"));
rcv($sock_c, $port_c, rtpm(9, $seq + 8, $ts + 1280, $ssrc, "\xdf\xf6\xf6\xf6\xf9\xdf\xfb\xdd\xf9\xf6\xf6\xf6\xdf\xf9\xdf\xfb\xf9\xf6\xf6\xf9\xfb\xdd\xfb\xfb\xfb\xf8\xf6\xfb\xdf\xf4\xf8\xdf\xf8\xf6\xf8\xfb\xdf\xf3\xfb\xdf\xf4\xf4\xfb\xda\xf4\xf8\xdf\xf6\xf6\xf6\xdf\xf9\xdf\xfb\xfb\xf6\xf4\xf8\xdf\xfb\xdf\xf6\xf6\xf6\xf8\xdf\xfb\xdc\xf8\xf6\xf6\xf8\xfb\xdc\xfb\xfa\xf8\xf5\xf8\xfa\xde\xf1\xf6\xdc\xf8\xf8\xfa\xde\xf3\xf4\xf8\xdf\xf8\xfb\xde\xf3\xf6\xf6\xfb\xdf\xf8\xdc\xfb\xf8\xf3\xf6\xf8\xfb\xda\xf8\xfb\xf8\xf4\xf6\xfb\xdc\xfb\xdf\xf4\xf6\xfb\xfb\xdf\xf4\xfb\xdc\xf5\xf6\xf8\xfb\xfb\xfa\xde\xf5\xf5\xfb\xfa\xf8\xf5\xfa\xdc\xf5\xf5\xfb\xde\xf1\xf4\xdf\xf8\xf8\xfb\xdf\xf3\xf6\xf8\xfb\xdf\xf6\xdf\xf6"));
rcv($sock_c, $port_c, rtpm(9, $seq + 9, $ts + 1440, $ssrc, "\xf6\xf8\xfb\xdc\xf8\xfb\xfb\xf5\xf6\xfb\xfb\xfb\xde\xf3\xfb\xdf\xf2\xf6\xfb\xda\xf8\xf8\xfb\xf8\xf4\xf6\xdc\xfb\xfb\xfb\xfb\xf8\xf5\xfb\xdc\xf5\xf6\xdf\xf6\xf4\xf6\xdc\xdf\xf6\xdf\xf4\xf6\xf6\xfb\xda\xf9\xdf\xf4\xf4\xf4\xf9\xdd\xdf\xfb\xfb\xf6\xf2\xf6\xdf\xdf\xfb\xdd\xf6\xf9\xf4\xf9\xdf\xf9\xfb\xfb\xf8\xf6\xf8\xfb\xdc\xf8\xfb\xfa\xf5\xf3\xdf\xf6\xfb\xfb\xdf\xf6\xfb\xdf\xf4\xf8\xfb\xdf\xf3\xf8\xfb\xfb\xf8\xf8\xde\xf5\xf8\xf8\xf8\xf8\xf8\xfa\xde\xf1\xfa\xfa\xfa\xf8\xf8\xde\xf3\xfa\xf8\xf8\xf8\xde\xf5\xf8\xf5\xfa\xf8\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa"));
rcv($sock_c, $port_c, rtpm(9, $seq + 10, $ts + 1600, $ssrc, "\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xfa\xde\xee\xd6\xef\xda\xf2\xda\xf9\xf1\xd9\xf3\xd6\xef\xd9\xde\xef\xd7\xf1\xdc\xf8\xfa\xda\xef\xd5\xf8\xf9\xfc\xfe\xdd\xf2\xd9\xfe\xfb\xfb\xdf\xf8\xf3\xd8\xdc\xf9\xf6\xdb\xf5\xf3\xd9\xdb\xf5\xf8\xdd\xf8\xf2\xdb\xdf\xf6\xfe\xdf\xf7\xf8\xfe\xd9\xf8\xf9\xfc\xf9\xf9\xfc\xdb\xf6\xfc\xfa\xfe\xfa\xfc\xdb\xf6\xfa\xf8\xfe\xfe\xfc\xda\xf6\xfa\xf8\xf8\xdf\xf5\xdc"));
rcv($sock_c, $port_c, rtpm(9, $seq + 11, $ts + 1760, $ssrc, "\xfb\xdf\xf1\xf8\xdf\xf8\xdf\xf6\xfb\xf8\xf7\xda\xfa\xde\xf6\xf8\xf6\xfa\xdd\xdd\xdb\xf3\xf6\xf6\xf6\xdf\xde\xdc\xfa\xf8\xf3\xf8\xfb\xd9\xdc\xfb\xdf\xf0\xf3\xfc\xdc\xdc\xfb\xda\xf5\xf2\xf8\xfe\xdc\xfb\xd9\xfb\xf5\xf6\xfb\xde\xfa\xdc\xfa\xf9\xf4\xf9\xfb\xdf\xf7\xdd\xf9\xf7\xfb\xdf\xf5\xf7\xda\xf9\xf6\xf9\xdf\xf6\xf7\xda\xf9\xf7\xdf\xf9\xf7\xf7\xda\xfa\xfb\xdf\xf6\xf6\xf6\xdc\xdb\xf6\xfb\xfb\xf7\xfa\xfb\xdb\xf6\xfa\xf9\xf9\xf9\xf9\xdd\xf9\xf7\xf7\xf7\xdf\xfb\xdd\xf9\xfb\xf5\xf5\xf9\xdf\xfb\xfb\xf9\xf9\xf6\xf9\xfb\xdf\xf6\xf9\xf9\xf9\xf9\xfb\xdf\xf4\xf6\xf9\xf9\xfb\xdf\xf8\xf8\xf6\xf8\xf6\xfb\xdf\xf8\xfb\xf8\xf5\xf6\xdf\xf6\xdf\xf6\xfb"));
rcv($sock_c, $port_c, rtpm(9, $seq + 12, $ts + 1920, $ssrc, "\xf6\xf6\xdf\xf6\xdc\xf8\xf8\xf6\xf8\xf8\xf8\xdf\xf8\xf8\xf5\xf5\xf8\xfa\xd9\xf5\xfb\xfb\xf5\xf6\xdc\xdf\xf4\xf8\xf8\xf8\xf3\xdf\xf8\xfb\xf8\xfa\xde\xef\xfb\xfb\xfb\xfb\xdf\xfb\xf6\xf6\xfb\xfb\xfb\xdc\xfa\xfa\xf5\xf3\xdf\xf4\xdf\xf8\xdf\xf6\xf2\xf8\xfb\xdf\xf6\xdc\xfb\xf6\xf6\xf8\xfb\xdf\xf8\xfb\xfb\xf5\xf4\xfb\xdc\xf8\xfa\xde\xf3\xf4\xf8\xdf\xf6\xf8\xdc\xfb\xf3\xf6\xdc\xf6\xf8\xdc\xdc\xf4\xf2\xdf\xf1\xf9\xdd\xdd\xdf\xf3\xf9\xf6\xfb\xdf\xf6\xdd\xf9\xfb\xfb\xf9\xf8\xf8\xfb\xdf\xf2\xfb\xdf\xf4\xfb\xdc\xfb\xf8\xf6\xfb\xf8\xf8\xdf\xf8\xfa\xf5\xf5\xf8\xfa\xdc\xf5\xf5\xf8\xfa\xde\xef\xf8\xf8\xdc\xfb\xfb\xfb\xf6\xf6\xfb\xdc\xfb\xdf\xf1\xf8"));
# push media
snd($sock_a, $port_b, rtp (0, 1002, 3320, 0x1234, "\x44" x 160));
rcv($sock_b, $port_a, rtpm(0, 1002, 3320, 0x1234, "\x44" x 160));
snd($sock_b, $port_a, rtp (0, 8001, 10160, 0x2d8c, "\x55" x 160));
rcv($sock_a, $port_b, rtpm(0, 8001, 10160, 0x2d8c, "\x55" x 160));
rcv($sock_c, $port_c, rtpm(9, $seq + 13, $ts + 2080, $ssrc, "\xf1\xf6\xdb\xf8\xfc\xd7\xfb\xf3\xf6\xde\xfb\xdd\xd8\xfe\xf3\xf5\xfe\xdf\xfc\xda\xdf\xf1\xf4\xf8\xdf\xfc\xdc\xdd\xf5\xf6\xfb\xdf\xfb\xdf\xdf\xf8\xf4\xf6\xfe\xfe\x1e\x99\x2c\x87\x22\x84\x0b\xaf\xb5\xbb\x1f\xb9\x57\xd3\xfa\x74\xf6\xff\xff\xd9\xd3\x9f\x76\xf7\xfd\xfb\xdb\xd7\xda\xfb\xfc\xf8\xb6\x5e\xd8\xd6\xbe\x5e\xfc\xb6\x7d\xdd\xd8\xda\x9d\x5f\xf9\xbb\x5d\xdc\xda\xdd\x9b\x7c\xfb\x9d\x5e\xdf\xde\x9a\x5e\xfd\xfe\x9a\x7f\xdd\xda\xdc\xdd\xdf\xfe\xdb\x7c\x9d\xdb\xdf\xfe\x9b\x7e\x9b\xfc\x1e\x98\x36\x8a\x20\xa9\x4c\x99\x79\x7a\xd8\x7b\xf2\xff\xd9\xdf\xf9\xde\xfe\x79\xf8\xfd\xdf\xfc\xfd\xbe\x5f\xf8\x79\xfe\x9e\xfc\xfb\x5d\xff\xfb\xfe\xbe\xdf"));
rcv($sock_c, $port_c, rtpm(9, $seq + 13, $ts + 2080, $ssrc, "\xfb\xf8\xf8\xfa\xdc\xf5\xf5\xf8\xf8\xf8\xf5\xfa\xd9\xf5\xf8\xfb\xde\xef\xf6\xdf\xf6\xdd\xfb\xfb\xf4\xf4\xfb\xdd\xfb\xfb\xf8\xf6\xf8\xf6\xdc\xfb\xfb\xf8\xf6\xdf\x28\x84\x20\x84\x20\x84\x04\xbd\x35\xb7\x9f\xf9\x5c\x8e\x16\xbb\x3b\xbd\xfc\x37\x8d\x27\x9c\x11\xba\x1f\xb8\x5c\x75\xf6\x59\xda\x7e\xdf\xfc\x78\x75\xfd\xdb\x5f\xdf\x7e\xff\xf9\x79\xdf\xdf\x5f\xfe\xdd\xff\xfa\x7e\xdd\xdd\xdf\xff\xde\xfd\xfc\xfd\xde\xdd\xde\xfe\xdc\xdd\xfd\x9f\x7f\xdb\xfd\xde\xde\x9f\xfe\xdc\xdb\xfd\xde\xdd\xdd\x9d\xde\xdd\xdd\xdd\xdd\xdd\xdd\xdd\x9c\xdc\xdb\xfd\xde\xdd\xdc\xdb\xfd\xdb\xfe\xdb\xfe\xdc\xd9\xde\xde\xdf\xfe\xda\xdf\xff\xda\xde\xde\xff\xdc\xd9\xff"));
rtpe_req('delete', 'delete');

Loading…
Cancel
Save