English

米 国 カリフォルニア州 サンカルロス市

これまでの開発経緯

OISEYER Inc.は、2006年3月米国カリフォルニアで設立されたソフトウェアー開発会社です。 

  • 2006年3月 KeyHoleシステムの根幹となる、マル チスレッドを利用した多人数と接続するサーバを開発。そのサーバを利用するための、ビデオエンコーダ、デコーダ、通信モジュールを開発。マルチスレッドを 利用する多人数と接続するサーバは、ゲーム会社でのネットワークエンジンとして採用。
  • 同年4月 ビデオエンコーダ、P2P通信、サーバ通信モジュールを 持つKeyHoleVideo(Windows 用), ビデオデコーダ、通信モジュールを持つKeyHoleTV(Windows 用)を開発。
  • 同年9月 KeyHoleシステムの根幹であるエンコー ダの米国特許申請、映像配信開始
  • 2007年 音声エンコーダ・デコーダをアップグレード 以前のKeyHoleシ ステムでは、声の圧縮を利用していたため、複合した音(声と音楽、拍手など)では、周波数の範囲が大きいので、十分な音がだせませんでした。アップグレー ドを行った結果、どうにか複合した音でも再生が可能になりました。また、音を一つのパケットで再現できるようにしたため、パケットが欠落しても、連続する ような音として、認識できるようになりました。
  • 2008年 Linux用KeyHoleTVの開発
  • 2008年 Windows Mobile用KeyHoleTVの開発
  • 2008年 MacOSX用KeyHoleTVの開発
  • 2009年 IPHONE用KeyHoleTVの開発

ビデオエンコーダ・デコーダ、音のエンコーダ・デコーダ、通信モジュールは全て、ANSI Cで開発されています。
GUI 部分は、OSによってObjectiv-CまたはC言語により開発されています。また、GUIの基本パーツ(ボタンや絵付きリスト)は、GUIパーツの下層のレイヤ (WindowsではWindow,MacではView、LinuxではGTK+)を利用して、上位レイヤを構築しています。

現在のKeyHoleシステムは、全てマルチスレッドで動作するように設計されています。全てのスレッドは、 Mutexを利用しないで、協調関係にあります。

各々のスレッドは、Sleep(またはusleep)を利用した無限ループになっています。スレッド間 は、無限リストのキューを用いたイベント処理を行います。一つのスレッドは、他のスレッドからの要求を受けるために、必ず無限リストのキューを持ちます。

無限リスト

WindowsやMac、Linuxは、メインのイベントループしか表示を行えません。このため、スレッドからの表示要求は、メインループのタイマー関数がキューからのデータ取り出しと実際の表示を行うことで達成しています。また一つのスレッド のみが、表示用キューに書き込みを行うことで、排他処理を実現しています。スレッド間の処理の委譲でも、委譲の方向単位にキューを持たせています。

スレッドループ

KeyHoleシステムは、処理中の動的なメモリ確保を行わないようになっています。初期化のとき、全 てのメモリを確保し、そのメモリを再利用するようにしてます。しかし、チャット処理などで、OSに依存する描画処理のために、OS依存のメモリの確保を行 う場合があります。