2009-07-16 12 views
2

Ein RTP-Paket besteht aus einem 12-Byte-RTP-Header und nachfolgender RTP Payload Die 3. und 4. Byte des Headers enthält das Höchstwertiges-Byte und niedrigstwertigen Byte von die Sequenznummer des RTP-Pakets Seq Num = (MSB < < 8) + LSBRTP-Sequenz Extrakt

char pszPacket [12];

...

lang lSeq = ???? - Wie bekomme ich die Sequenznummer von einem Paket?

Antwort

2

das ist sicherlich nur "long LSEQ = (unsigned char) (pszPacket [2] < < 8) | (unsigned char) pszPacket [3];"?

+0

Zusätzlich sollte pszPacket auch unsigned char [] und nicht plain char [] sein. – AProgrammer

+0

Guter Punkt. Ich werde meine Antwort bearbeiten. – Goz

+0

Vielen Dank! kann eine kleine Klammer fix sein: lang lSeq = ((unsigned char) pszPacket [2] << 8) | (unsigniertes Zeichen) pszPacket [3]; – SEA

4
unsigned short seq = (packet[2] << 8) | packet[3]; 
+0

unsigned short ist der richtige Typ für 'seq', nicht (signed) lang. 'char' vs 'unsigned char' spielt für diese Menge von Operationen (<< und |) keine Rolle, obwohl der RTP-Header ein Array von Bytes ohne Vorzeichen sein sollte. – jesup

+0

+1 für richtig und auf den Punkt antworten – Alam