2009-07-16 46 views
2

A RTPパケットは、12バイトのRTPヘッダから成り、 後続のRTPペイロード 3及びヘッダの4バイトは シーケンス番号の 最上位バイト及び最下位バイトを含みますRTPパケット Seq Num =(MSB < < 8)+ LSBRTPシーケンス抽出

char pszPacket [12];

...

long lSeq = ????どのようにパケットからシーケンス番号を取得する?

答えて

2

確かにそれはちょうど "lSeq =(unsigned char)(pszPacket [2] < < 8)|(unsigned char)pszPacket [3];"

+0

また、pszPacketもプレーンchar []ではなく、unsigned char []である必要があります。 – AProgrammer

+0

良い点。私は私の返事を編集します。 – Goz

+0

ありがとう! は、小括弧の修正となる場合があります。 long lSeq =((符号なしの文字)pszPacket [2] << 8)| (符号なしの文字)pszPacket [3]; – SEA

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

unsigned shortは 'seq'の正しい型ですが、(署名された)longではありません。 'char'と 'unsigned char'は、この一連の操作(<<と|)には関係ありませんが、RTPヘッダーは符号なしバイトの配列でなければなりません。 – jesup

+0

+1とポイントアンサー – Alam