1 87a52e04 2005-12-26 devnull #include <u.h>
2 87a52e04 2005-12-26 devnull #include <libc.h>
3 87a52e04 2005-12-26 devnull #include <ip.h>
4 87a52e04 2005-12-26 devnull #include "dat.h"
5 87a52e04 2005-12-26 devnull #include "protos.h"
7 87a52e04 2005-12-26 devnull typedef struct Hdr Hdr;
8 87a52e04 2005-12-26 devnull struct Hdr {
9 cbeb0b26 2006-04-01 devnull uchar hdr; /* RTP header */
10 cbeb0b26 2006-04-01 devnull uchar marker; /* Payload and marker */
11 cbeb0b26 2006-04-01 devnull uchar seq[2]; /* Sequence number */
12 cbeb0b26 2006-04-01 devnull uchar ts[4]; /* Time stamp */
13 cbeb0b26 2006-04-01 devnull uchar ssrc[4]; /* Synchronization source identifier */
17 cbeb0b26 2006-04-01 devnull RTPLEN = 12, /* Minimum size of an RTP header */
20 87a52e04 2005-12-26 devnull static int
21 87a52e04 2005-12-26 devnull p_seprint(Msg *m)
24 87a52e04 2005-12-26 devnull ushort seq;
25 87a52e04 2005-12-26 devnull ulong ssrc, ts;
26 87a52e04 2005-12-26 devnull int cc, i;
28 87a52e04 2005-12-26 devnull if(m->pe - m->ps < RTPLEN)
29 87a52e04 2005-12-26 devnull return -1;
31 87a52e04 2005-12-26 devnull h = (Hdr*)m->ps;
32 87a52e04 2005-12-26 devnull cc = h->hdr & 0xf;
33 87a52e04 2005-12-26 devnull if(m->pe - m->ps < RTPLEN + cc * 4)
34 87a52e04 2005-12-26 devnull return -1;
36 87a52e04 2005-12-26 devnull m->ps += RTPLEN;
38 87a52e04 2005-12-26 devnull seq = NetS(h->seq);
39 87a52e04 2005-12-26 devnull ts = NetL(h->ts);
40 87a52e04 2005-12-26 devnull ssrc = NetL(h->ssrc);
42 87a52e04 2005-12-26 devnull m->p = seprint(m->p, m->e, "version=%d x=%d cc=%d seq=%d ts=%ld ssrc=%ulx",
43 87a52e04 2005-12-26 devnull (h->hdr >> 6) & 3, (h->hdr >> 4) & 1, cc, seq, ts, ssrc);
44 87a52e04 2005-12-26 devnull for(i = 0; i < cc; i++){
45 87a52e04 2005-12-26 devnull m->p = seprint(m->p, m->e, " csrc[%d]=%d",
46 87a52e04 2005-12-26 devnull i, NetL(m->ps));
47 87a52e04 2005-12-26 devnull m->ps += 4;
49 87a52e04 2005-12-26 devnull m->pr = nil;
50 87a52e04 2005-12-26 devnull return 0;
53 87a52e04 2005-12-26 devnull Proto rtp = {
57 87a52e04 2005-12-26 devnull p_seprint,
61 cbeb0b26 2006-04-01 devnull defaultframer