2009-07-16 5 views
2

RTP 패킷은 12 바이트의 RTP 헤더로 구성되며 후속 RTP 페이로드 제 3 헤더의 네번째 바이트는 시퀀스 번호의 최상위 바이트 및 최하위 바이트를 포함 RTP 패킷 Seq Num = (MSB < < 8) + LSBRTP 시퀀스 추출물

char pszPacket [12];

...

긴 LSEQ의 = ???? - 패킷에서 시퀀스 번호를 얻는 방법?

답변

2

확실히 "길이가 길다"(pszPacket [2] < < 8) | (부호없는 문자) pszPacket [3]; "?

+0

또한 pszPacket은 일반 char []가 아닌 unsigned char []이어야합니다. – AProgrammer

+0

좋은 지적. 나는 나의 답장을 편집 할 것이다. – Goz

+0

감사합니다! 은 작은 대괄호 수정일 수 있습니다. long lSeq = ((부호없는 char) pszPacket [2] << 8) | (unsigned char) pszPacket [3]; – SEA

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

unsigned short는 'seq'의 올바른 유형으로, (서명 된) 길이는 아닙니다. 'char'vs 'unsigned char'는 RTP 헤더가 부호없는 바이트의 배열이어야하지만이 작업 집합 (<< 및 |)에는 중요하지 않습니다. – jesup

+0

+1 정확한 답변 – Alam