dポイントプレゼントキャンペーン実施中!

現在、簡易IP電話を作成しています。
UDPのデータ部分にそのまま音声データを入れている感じなのですが、
できればRTPを使いたいです。
RTPヘッダをプログラミング(C言語)したいときどのように書けばよいかわかりません。なんとなくですが、構造体を使うのかなぁとは思うのですが(汗)
どのようにすればいいでしょうか??
よろしくお願いします。

A 回答 (2件)

ヘッダ記述は次の2通りが考えられます。


・ビットフィールドを使った構造体定義
 ビットフィールドを使うには実際にビットの並びを検証する必要があり
 ます。また開発するシステムに大きく依存しますので移植性を考えた
 場合は避けるべきですが,よくソースでみかけますので使い勝手が
 いいようです。(ビットフィールドをインターネット検索すると
 問題点が詳しく書かれてますので参考にしてみては)
・情報は通常の構造体に定義しておき,ヘッダ作成時はその構造体を参照し
 てビット操作を行いヘッダを作ります。
 (ビット操作やビット演算子でインターネット検索すると解説があります
  ので参考になります)

☆一応ビットフィールドを使った構造体をRTPヘッダ風に書いてみました。
 また”http://sourceforge.jp/”の「検索」で"JRTPLIB”キーに検索
 すると参考になるかもしれません。

/* ビットフィールド例 (ビッグエンディアン)*/
struct stRTPHeader {
unsigned char ver : 2;
unsigned char padding : 1;
unsigned char ext : 1;
unsigned char csrcCnt : 4;
unsigned char mark : 1;
unsigned char payloadType: 7;
unsigned short seqNumber; // 16 bit シーケンス番号
unsigned long ts; // 32 bit タイムスタンプ
unsigned long ssrc; // 32 bit 同期送信元
};
/* 普通の構造体と同じようにメンバにアクセス出来ます。 */
struct stRTPHeader rtph; // 普通の構造体と同じく宣言
rtph.ver = 2; // 構造体メンバのverに2を代入
    • good
    • 0
この回答へのお礼

ありがとうございます!
ビットフィールドで、RTPヘッダ情報を定義することができました!
・・・のですが、UDPの上にRTPヘッダをどうやってくっつけたらいいかがわかりません(^_^;)
すみませんが、RTPヘッダをUDPヘッダの上に乗せるやり方を教えてもらえないでしょうか??

お礼日時:2009/08/01 14:15

>>UDPの上にRTPヘッダをどうやってくっつけたらいいかがわかりません(^_^;)


>>すみませんが、RTPヘッダをUDPヘッダの上に乗せるやり方を教えてもらえ
>>ないでしょうか??

まずUDPパケットとRTPパケットの関係を確認して下さい。
UDPパケットはUDPヘッダとデータから構成され,そのデータの中に
RTPパケットは格納されます。
一度,UDP(RFC768),RTP/RTCP(RFC3550)を確認した方が良いようです。
    • good
    • 0
この回答へのお礼

お礼が遅れて申し訳ありませんm(_ _)m
丁寧な答えありがとうございます!
UDPのデータの中に自作RTPヘッダと音声データを入たらそれっぽいのができました!
ありがとうございました♪

お礼日時:2009/08/04 01:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!