2012-02-09 10 views
0

私は、複数のカメラからのビデオフレームを分析するシステムに取り組んでいます。各カメラはWCFセッションを初期化し、ビデオフレームを送信する前に識別のためのGUIDを割り当てられます。処理負荷は、カメラの数が増えるにつれてサーバがリアルタイムで達成できる以上のものです。このように、私は動きのあるカメラからのバーストで到着するデータを管理するためのクラスを作成しています。ストリーミングビデオフレームを管理するキューの辞書

カメラからの各フレームは、他のカメラのフレームと並行して分析する必要があります。各カメラは、データのFIFO性質を管理するためにフレームをキューに充填します。

キューの管理により、私はアイデアを探していました。最初は辞書を作成し、各GUID-Queueのペアを挿入するつもりでした。しばらくコードを作業した後、私はこれが最善のアプローチではないと考え始めています。誰にも何か提案はありますか?

いくつかの単純化されたサンプルコード:現在、もしIハードコードカメラシステムの動作の設定された数のためにすべて

namespace DataCollection 
{ 
    [ServiceBehavior(Name = "ClientDataView", InstanceContextMode = InstanceContextMode.Single)] 
    public class DataCollectionService : IDataCollectionService 
    { 
     //Dictionary of Guid-Queue pairs 
     CameraCollection CameraArray = new CameraCollection(); 

     public Guid RegisterCamera() 
     { 
      Guid ID = new Guid(); 
      WorkQueue FrameQueue = new WorkQueue(); 
      CameraArray.AddCamera(ID, FrameQueue) 
      return ID; 
     } 

     public bool SendData(Guid ID, FrameReady newFrame) 
     { 
      Frame dataFrame = newFrame.OpenFrame;     
      WorkQueue que = CameraArray.GetQueueReference(ID); 
      que.QueueFrame(dataFrame); 
      return true; 
     } 
    } 
} 

。さまざまな数のカメラで動作させることは、より困難です。任意の提案やアドバイスをいただければ幸いです。

+0

あなたの 'parallel'タグに基づいて、私はあなたが.NET 4にいると思いますか? –

+0

@ M.Babcockはい私は.Net 4.0フレームワーク内で開発しています。 – Ritz

答えて

0

.Net framewok 4にはParallelというクラスがあります。このクラスには、メソッドForeachがあります。あなたのコレクションでは、Parallel.Foreach(collection、action)のようなことができます。

+0

Parallelクラスを調べたところ、私はそれを使ってしまうかもしれません。現在の形で動作しますが、これはデータ処理を実行するためのより簡潔な方法です。 – Ritz

+0

ありがとうございます。あなたが成功することを願って – user1010863

関連する問題