JP2005293381A - データ処理装置およびその方法 - Google Patents

データ処理装置およびその方法 Download PDF

Info

Publication number
JP2005293381A
JP2005293381A JP2004109599A JP2004109599A JP2005293381A JP 2005293381 A JP2005293381 A JP 2005293381A JP 2004109599 A JP2004109599 A JP 2004109599A JP 2004109599 A JP2004109599 A JP 2004109599A JP 2005293381 A JP2005293381 A JP 2005293381A
Authority
JP
Japan
Prior art keywords
processing
data
module
input
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004109599A
Other languages
English (en)
Other versions
JP4285307B2 (ja
Inventor
Moal Damien Le
ダミエン レモアル
Mika Mizutani
美加 水谷
Yoshiaki Morimoto
義章 森本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2004109599A priority Critical patent/JP4285307B2/ja
Priority to EP04014109.5A priority patent/EP1596299B1/en
Priority to US10/873,176 priority patent/US7987299B2/en
Priority to KR1020040047543A priority patent/KR100719416B1/ko
Priority to CN200410060083A priority patent/CN100583044C/zh
Publication of JP2005293381A publication Critical patent/JP2005293381A/ja
Application granted granted Critical
Publication of JP4285307B2 publication Critical patent/JP4285307B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00—Arrangements for program control, e.g. control units
    • G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46—Multiprogramming arrangements
    • G06F9/48—Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806—Task transfer initiation or dispatching
    • G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00—Arrangements for software engineering
    • G06F8/30—Creation or generation of source code
    • G06F8/36—Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】
移植性が高いように一連の処理ポイントへのストリームデータ処理を構成し実行する方法を提供する。
【解決手段】
本方法は、データ処理においてピアモジュールと呼ぶ処理ポイントをリンクモジュールで接続してストリームデータパスを設定し、単一の実行コンテキストでスケジューリングを行うことで、高性能な処理を可能とし、これらをレイヤ構成で実現することで高い移植性、および開発容易性を実現した。
【選択図】 図1

Description

本発明は、特定のオペレーティングシステム(OS)に依存せず、データを処理する方法に関する。
近年、コンピュータで取り扱われるマルチメディアデータとして、動画、及び音声等が様々な用途で利用されている。例えば、テレビ放送等の動画をリアルタイムに動画コーデックで変換してハードディスクに録画するハードディスクレコーダと呼ばれる機器や、DVD等の光ディスクにデジタルデータとして記録されている動画コンテンツデータをビデオディスプレイ装置に表示するプレイヤーなどが広く普及している。一般にこれらのコンテンツ処理では、コンテンツデータを指定されたビットレートで、一定時間内に処理を行わなければならない。また、様々な装置でこれらのマルチメディアコンテンツを利用できるようにするためには、これらの複雑なストリーム処理を実行するプログラムモジュールを容易に開発できることが重要となる。このため、高性能を実現しやすいOSのカーネルの中でコンテンツ処理を行うプログラムを実行する方式が存在する。ストリームとは、予め定められた順序で一方向に処理されることが必要なデータ列である。例えば、音声データのデータ列や動画データのデータ列などがある。ストリーム処理はこれらのストリームに含まれるデータを処理することを指す。
一般的なOSには、アプリケーションを実行するための空間であるユーザ空間と、OSの機能を実行するための空間であるカーネル空間の2つが存在する。カーネル空間で処理を行う場合は、高速な実行が可能となるが、カーネル空間で実行されるプログラムは、基本的にそのカーネルが実装されているOSの仕様に大きく依存する。これは例えば、機能を利用する際に利用するインタフェースがOS毎に異なることや、OSによって機能の利用手順が異なることによる。これはデバイスを利用するためのデバイスドライバがプラットホームに特有となり、流用できないということでも知られている。また、カーネル空間での処理を実行する方法として、フィルタと呼ばれるデータを処理するデバイスドライバを複数連結することでコンテンツ処理を行う方法がある(例えば、特許文献1)。
これは、ユーザ空間で実行されるアプリケーションプログラムからカーネル空間内にフィルタと呼ばれるソフトウェアモジュールを生成し、複数のフィルタの入出力を接続してコンテンツデータの流路を構築した後、アプリケーションプログラムから処理開始、停止などを要求することで、コンテンツの処理を実行する方法である。ここで、フィルタやデバイスドライバはデバイスやデータ形式に特化されたモジュールで、それぞれが入出力や制御のためのインタフェースを持っており、それぞれのフィルタが処理したデータを他のフィルタに渡すことでデータを処理するものである。この方式は、全てのフィルタがOSのカーネル部で動作するため高性能を実現できる。しかしながら、該方式では、複数のコンテンツ処理を行った場合の優先処理が考慮されていない。例えば、複数のコンテンツを処理において、録画と再生を同時に行う場合に、録画の優先度を高くしたいという要求が発生することが考えられるが、これに対応することは困難である。
特開平10−283195号公報
先に述べたように、従来の方法ではストリームを取り扱うための実装を、性能を保証しやすいドライバとしてOSのカーネル空間で実装するものがあった。これはOSやハードウェア構成(以下、本組み合わせをプラットホームと呼ぶ)への依存性が高く、プログラムは異なったプラットホームに対応することができず、各プラットホームは、それぞれ固有のコンテンツデータ処理方法を有することとなるため、コンテンツ処理をするプログラムの開発はプラットホーム毎に行う必要が生じ、開発工程の増大を招くという第1の問題があった。
また特許文献1では、コンテンツ処理において管理機能が存在しないので、例えば複数のコンテンツを同時に処理する場合、それぞれの処理の優先度を指定することが不可能であった。例えば、あるデバイスからデータを取得してストレージに記録する処理と、あるデバイスからデータを取得してディスプレイに表示する処理の2つの処理を同時に行う場合、例えば前者の処理を優先的に行いたい場合でも、これらの処理を統括して管理する機能が存在しないので、双方の処理の優先順位を適切に変更することが困難という第2の問題があった。
さらに、上記の場合、複数のコンテンツ処理が独自の実装に基づいて処理を進めた場合に、ハードウェア資源の適切な管理や割り振りがなされていないため、処理に必要なCPUリソースの不足が発生するという第3の問題点もあった。
本発明は、上記課題のうち少なくともひとつの課題を解決するものである。
上記第1の課題を解決すべく、本発明では、様々なプラットホームに対応可能なマルチメディアコンテンツ処理手段を提供する。
本発明ではマルチメディアコンテンツの処理を、プラットホーム毎の差異を吸収して汎用化したインタフェースを上位に提供するレイヤを備えることで、上位のソフトウェアモジュールをプラットホームに依存しない構成を実現する。
上記第2乃至第3の課題を解決すべく、本発明では、複数のストリーム処理を1つの実行コンテキスト、例えば、プロセスやスレッドを用いて実行し、コンテンツ処理それぞれの処理に対してどれだけのリソースを割り当てるかを一元的に管理することで、処理の優先処理やリソースの管理を実現する。
本発明によれば、コンテンツデータを利用するプログラムを、異なったプラットホームで利用することが可能となる。また、複数のコンテンツ処理の実行を管理することが可能となり、使用リソース量の低減を可能とする。
以下に本発明の実施の形態について説明する。
図1を用いて、本発明における処理フローの概要を説明する。これは、動画コンテンツとして、ディスク(101)から動画データを取得して、これをディスプレイ(171)及びスピーカ(181)で再生する処理を示したものである。これらの処理はデバイス(101)からデータを取得する処理ポイント(100)、音声データと映像データを分離する処理ポイント(120)、映像を映像デコーダ(170)に出力する処理ポイント(150)、及び音声を音声デコーダ(180)出力する処理ポイント(160)からなる。処理ポイントとは、処理フローを実現するプログラム中において所定の処理を実行するために必要な部分である。この処理ポイントにおいて処理を実行するソフトウェアモジュールを、ピアモジュールと呼ぶ。ピアモジュールの詳細な構成については図16を用いて後述する。さらに、リンクモジュールは、これらピアモジュールを相互に接続し、例えば、リンクモジュール(110)はピアモジュール(100)とピアモジュール(120)を接続する。リンクモジュールは接続されたピアモジュールの一方から、もう一方へデータを送出する機能を持つ。これにより、ピアモジュール(100)が取得したデータがリンクモジュール、や他のピアモジュールを通じて、映像デコーダ(170)と、音声デコーダ(180)に送られることで、映像がディスプレイ(171)に表示され、音声がスピーカ(180)から再生される。
図2は、本実施例におけるソフトウェア構成を示した図である。本構成(210)では、ピアモジュールを相互に連結させたストリーム処理の制御をするストリームマネジャ(230)、データの変換等を行うデータ処理モジュール(241)を管理するデータ処理モジュールマネジャ(230)を備える。ストリームマネジャは、ピアモジュールを管理、操作するピアモジュールマネジャ(231)と、実行スケジュールに従ってピアモジュールの処理を実行するために用いるピアモジュールスケジューラ(233)、および、ピアモジュールを相互に接続するためのリンクモジュールを記録管理するリンクモジュールマネージャ(232)から構成される。
さらに、OSが持つ機能を利用するためにOSが提供するシステムインタフェース(280)を介してメモリ管理、スレッド管理、及び時間操作などのリソース管理機能を利用するための汎用システムインタフェース(260)、デバイスへのアクセスを行いデータの取得やデバイスの制御を行うデータアクセスモジュール(271)を管理するデータアクセスモジュールマネジャ(270)を備えている。
アプリケーション(200)は、制御インタフェース(240)を用いてストリームマネジャおよびデータ処理モジュールマネジャを制御し、所望のストリーム処理を指示可能である。指示可能な制御については図5を用いて後述する。
上記汎用システムインタフェース(260)およびデータアクセスモジュールマネジャ(270)を含むレイヤによってインタフェースレイヤ(250)が形成される。このインタフェースレイヤはOSが提供するシステムインタフェース(280)で提供される機能を、汎用化されたインタフェースで上位のレイヤに提供する。この汎用化されたインタフェースは、プラットフォームの差異から生じるプロトコルや命令方式の差異を共通化して上位レイヤに提供するものであり、例えば、ネットワーク通信を行う際に利用するソケットインターフェイスが存在する。このインタフェースによって実行される機能はプラットフォームが異なっても同じであるが、これを利用するための手順がプラットホーム毎に異なる。例えば、Linuxを含む一般的なUnix(登録商標)ではTCPで通信するソケットを作成する際には、socket関数、bind関数、listen関数、そしてaccept関数を順番に実行すればよい。一方Windows(登録商標)では、別の仕様に準じた、Linuxとは違った手順が必要である。これらを、従来のようにアプリケーションプログラム側の処理で対応すると、使用するプラットホーム毎にプラットホームで手順の異なる処理を全て変更する必要が生じする。そこで、汎用インタフェースでは、例えばサーバソケットを指定したポートで作成するという処理を行うための汎用関数としてmakeServerTCPsockのような汎用化されたインタフェースを提供する。例えば、Linux用の汎用システムインタフェースでは、このmakeServerTCPsock関数では前述したLinuxでの手順で処理を実行するようにする。一方Windows版の汎用システムインタフェースでは、Windowsでの手順で処理を実行するようにする。次に、本願のソフトウェアモジュールをLinuxで利用する場合はLinux用の汎用システムインタフェースを使い、Windowsで利用する場合はWindows用の汎用システムインタフェースを使用する。次に、アプリケーションプログラムでは、ソケットを作成する場合には、makeServerTCPSockを呼び出せば、該汎用システムインタフェースが、そのプラットホームに応じた手続を実行するので、アプリケーションをプラットホーム毎に変更する必要が無くなる。このような方法により、プラットホームが提供する機能やデバイスへのアクセス方法を汎用化することが可能になる。このように、異なるプラットホームに図2のソフトウェアモジュールを移行した場合、レイヤ(250)に含まれるソフトウェアモジュールのうち、プラットホームによって異なる機能や、利用手順などを利用する部分は前述したように処理方法の変更が必要だが、これより上位のレイヤ、つまり制御インタフェース(220)、データ処理モジュールマネージャ(240)、ストリームマネージャ(230)及びアプリケーション(200)はプログラムの処理を変更すること無く他のOS上に移行することが可能となる。
図16、図17、および図18を用いて、図1で説明した処理を、図2の構成でどのようにして実現するかを説明する。
図18は、ストリーム処理の構成を記録するテーブル(2000)を示したもので、ストリームマネージャによって管理される。該テーブルの1つの行が1つのストリーム処理に該当する。ストリーム処理は、ストリーム処理ID(2001)、これを構成するピアモジュールのピアモジュールID(2002)、これを構成するリンクモジュールのリンクモジュールID(2003)、および、ストリーム処理の状態(2004)からなる。
図16は、ピアモジュールの構成を記録するテーブル(1800)を示したもので、ピアモジュールマネージャによって管理される。該テーブルの1つの行が1つのピアモジュールに該当する。一つのピアモジュールは、ピアモジュールID(1801)、ストリーム処理ID(1802)、データ処理モジュールID(1803)、データアクセスモジュールID(1804)、入力リンクモジュールID(1805)、出力リンクモジュールID(1806)、実行待ちデータオブジェクト行列(1807)、及び、後処理待ちデータオブジェクト行列(1808)からなる。実行待ちデータオブジェクト行列(1807)および、後処理待ちデータオブジェクト行列(1808)はデータを、入出力可能な行列であり、配列、キュー、ハッシュテーブルあるいはリスト等で実装される。図には行列がそのテーブル内に存在するか否かを示す例について記載したが、ピアモジュールマネージャ内に行列が存在する場合、その存在するアドレスを列(1807)、(1808)で記録してもよい。リンクモジュールIDの−1という値は、ピアモジュール(100)にリンクモジュールが接続されていないことを示す。
図17は、リンクモジュールの構成を記録するテーブル(1900)を示したもので、リンクモジュールマネージャによって管理される。該テーブルの1つの行が1つのリンクモジュールに該当する。1つのリンクモジュールは、リンクモジュールID(1901)、ストリーム処理ID(1902)、始点ピアモジュールID(1903)、終点ピアモジュールID(1904)及びバッファ行列(1905)からなる。バッファ行列(1905)はデータを、入出力可能な行列であり、配列、キュー、ハッシュテーブルあるいはリスト等で実装される。図には行列がそのテーブル内に存在するか否かを示す例について記載したが、リンクモジュールマネージャ内に行列が存在する場合、その存在するアドレスを列(1905)に記録してもよい。
図3には、本実施例を実施するために用いられるハードウェア構成が示されている。CPU(300)、RAM(310)あるいはROM(320)等のメモリ、クロック(330)、HDD等のディスク装置(350)、コンテンツデータの放送を受信するためのチューナ(360)、マルチメディアデータを符号化/復号化するためのマルチメディアコーデックプロセッサ(370)、およびスピーカ内蔵のテレビ受信機等のディスプレイ(380)がシステムバス(340)により接続されている。なお、図2におけるソフトウェアモジュールは、メモリにロードされCPUで実行される。また、本ハードウェア構成は、例えば、HDDレコーダ、DVDレコーダ、PC、あるいは監視カメラ等で用いられる。
図5に、本実施例のアプリケーションがストリームマネージャ(230)へ指示を出すために、制御インタフェースに発行する命令の例を示した。図5にはストリームマネージャ(230)への命令種別(501)とそのパラメタ(502)と戻り値(503)が定義されている。これらの制御インタフェースは、例えば本実施例がCやC++等のプログラミング言語で開発された場合は関数やモジュールとして実現されるものである。
なお、上記データアクセスモジュールID、データ処理モジュールID、図5で規定し命令を用いてデータ処理フローを生成し、処理を開始することが可能である。詳細については、図7を用いて後述する。
図5を用い、データの処理フローを作成、制御する命令について説明する。例えば、ストリーム処理生成命令(500)を実行するとストリーム処理が生成する。具体的には、一意なストリーム処理IDが割り当てられて、図18(2000)の使用されていない1つの行に、ストリーム処理IDが記録され、ストリーム処理が生成する。その値が戻り値として返される。ここでは1が、アプリケーションに返されたとする。
次に、アプリケーションは、このストリーム処理IDを用いて、ピアモジュール生成命令(520)を実行すると、ピアモジュールを生成する。具体的には、新たに一意なピアモジュールIDを生成し、図16(1800)の使用されていない1つの行に、ピアモジュールIDが記録され、パラメタとして渡されたストリーム処理IDを記録し、テーブル(2000)にパラメタとして指定されたストリーム処理IDに該当するストリーム処理のピアモジュールID(2002)の欄にピアモジュールIDを記録することでピアモジュールを生成する。割り当てられたピアモジュールIDは戻り値としてアプリケーションに返される。ここでは100が返されたとする。
次いで、同様にして(図16の1820で示される)別のピアモジュール(120)を生成する。該ピアモジュールのモジュールIDは120とする。次に、リンクモジュール生成命令(540)を用いることで、これらのピアモジュールをリンクモジュールで結合する。具体的には、新たに一意なリンクモジュールIDが割り当てられて、図17(1900)の使用していない1つの行にリンクモジュールIDを記録し、始点ピアモジュールID、および終点ピアモジュールIDとしては、パラメタとして渡された値がそれぞれ記録される。例ではそれぞれ、100と120である。次に、表(1800)のピアモジュールIDが100である行(1810)の出力リンクモジュールIDに110を、次にピアモジュールIDが120である行(1820)の入力リンクモジュールIDに110を記録する。次に、表(2000)のストリーム処理IDが1である行(2010)のリンクモジュールID(2003)にリンクモジュールIDを登録する。これらの処理により、ピアモジュール間を結合するためのリンクモジュールの生成と設定が終了する。
次に、ピアモジュールでどのような処理を行うかを、データ処理モジュール制御命令(560)と、データアクセス制御命令(570)を用いて設定する。データ処理モジュール制御命令(560)のパラメタ中のデータ処理モジュールIDの詳細については図14を用いて、データアクセスモジュール制御命令のパラメタ中のデータアクセスモジュールIDについては図13を用いて後述する。例えば、ピアモジュールIDが100のピアモジュールに対して、データアクセスモジュールIDが1の処理を割り当てる場合は、データアクセスモジュール制御命令(570)を用いる。これにより、表(1800)のピアモジュールIDが100の行のデータアクセスモジュールID(1804)にデータアクセスモジュールIDの1が記録される。データ処理モジュールに関しても同様に、データ処理モジュール制御命令(560)を利用して設定する。データ処理モジュールと、データアクセスモジュールの詳細については図4で後述する。
さらに、580のデータ処理制御コマンド命令を用いた場合、パラメタ中の「コマンド」を使用してデータ処理モジュールの制御や設定を行うことが可能である。例えば、ネットワークの処理を行うデータ処理モジュールの場合、「パケットサイズ設定コマンド」を使って、データ処理モジュールにおけるパケットサイズを変更処理の設定可能である。また、データアクセスモジュール制御命令(570)は、例えばファイルからデータを読み出す場合はそのファイル名を指定したり、ネットワークからデータを入出力する場合はポート番号を指定する際にも使用できる。
データ処理の実行は、開始コマンドや停止コマンドを発行するデータ処理コマンド命令(580)を用いて制御され、ストリーム処理に関係づけられた各ピアモジュールのスケジューリングを制御することができる。これは、ストリーム処理がテーブル(2000)にストリーム処理に関係する、リンクモジュールとピアモジュールが登録されているので、ストリーム処理IDを指定すれば、関係するリンクモジュールとピアモジュールの全ての設定や動作を変更することが可能である。
アプリケーションはイベント管理命令(590)を介してデータ処理モジュール(401)と通信することができ、エラーなどのイベントを渡したり、データ処理を終了させたりすることができる。データ処理は、ストリーム処理破棄命令(510)によって破棄、終了したり、ピアモジュール破棄命令もしくはリンクモジュール破棄命令(530、550)をそれぞれ使って選択的に破棄することもできる。この場合の破棄とは登録されているテーブルの内容を消去が該当する。
図13にデータアクセスモジュールIDとそのデータアクセスモジュールの対応を管理するテーブル(1300)を示した。該テーブルはデータアクセスモジュールマネージャ(270)内に存在する。該テーブル(1300)にはデータアクセスモジュールID(1301)と、これに対応する入出力実行処理部へのアドレス(1302)と、入出力完了処理部へのアドレス(1303)、及びその機能概要の記述(1304、1305)が記録されている。図に示した例では、データアクセスモジュールIDが1の場合は(1310)、0xF98000000番地に存在する「ハードディスクへのデータ読込要求発行」する機能を有する入出力実行処理部と、0xF9808000番地に存在する「ハードディスクからのデータの取得」する機能を有する入出力完了処理部が記録されている。
データアクセスモジュールIDとそのモジュールが実際に行う処理の対応については、例えば、マニュアル等に記載されており、使用者は必要な機能を実現するデータアクセスモジュールIDを得る。あるいは、機能の欄(1304、1305)に記述されている内容から必要なものを選択する。
図14にはデータ処理モジュールIDとそのデータ処理モジュールの対応を管理するテーブルを示した。該テーブルはデータ処理モジュールマネージャ(240)内に存在する。該テーブル(1500)にはデータ処理モジュールID(1501)と、これに対応する前処理部へのアドレス(1502)と、後処理部へのアドレス(1503)、及びそれら機能の記述が記録されている。図に示した例では、データ処理モジュールIDが100の場合は(1510)、0xFA8000000番地に存在する「指定されたファイルの読込を指示。次のスケジューリング時間を指定」する機能を有する前処理部と、0xFA808000番地に存在する「取得したデータを出力リンクに出力」する機能を有する後処理部が記録されている。データ処理モジュールIDとそのモジュールが実際に行う処理の対応については、例えばマニュアルに記載されており、使用者は必要な機能を実現するデータ処理モジュールIDを得る。あるいは、機能の欄(1504、1505)に記述されている内容から必要なものを選択する。
図15に、図1で示したデータ処理を行うために、アプリケーションが図5で示した命令を利用して、ピアモジュールとリンクモジュールを結合しデータ処理プログラムを構築する手順を示した。
最初に、アプリケーションはストリーム処理生成命令(500)を利用してデータ処理フローを生成し(ステップ1500)、ストリーム処理IDを得る。
次に、該ストリーム処理IDを使用して、ファイル読出しピアモジュールを、ピアモジュール生成命令(520)を利用して生成し、ピアモジュールIDを得る。次にファイル読み出しピアモジュールにデータ処理モジュールをデータ処理モジュール制御命令(560)にデータ処理モジュールIDを用いて割り当て(ステップ1511)、データアクセスモジュールをデータアクセスモジュール制御命令(570)にデータアクセスモジュールIDを用いて割り当てる(ステップ1512)。同様に、マルチプレクサピアモジュールを作成し(ステップ1520)、データ処理モジュールを割り当てる(ステップ1521)。以下、同様にして、映像ピアモジュールを作成し(ステップ1530)、データ処理モジュールと、データアクセスモジュールの割当を行い(ステップ1531,1532)、音声ピアモジュールを作成し(ステップ1540)、データ処理モジュールと、データアクセスモジュールを割り当てる(ステップ1541,1542)。次に、ファイル読み出しピアモジュールからマルチプレクサピアモジュールを接続するリンクモジュールをリンクモジュール生成命令(540)を使用して作成し(ステップ1550)リンクモジュールIDを得、同様にマルチプレクサピアモジュールから映像ピアモジュールを接続するリンクモジュール、音声ピアを接続するリンクモジュールを作成する(ステップ1560,1570)。このようにアプリケーションから処理することで、使用するピアモジュールが相互に関係づけられ、処理に使用するデータ処理モジュールとデータアクセスモジュールが割り当てられる。
このように、ピアモジュール、リンクモジュール等の生成、設定は、アプリケーションが制御命令を経由して行う。アプリケーションから実行される命令に基づき、必要なピアモジュールを生成し、リンクモジュールを用いてこれらのピアモジュールを接続してデータ処理フローを作成した上で、ビットレートなどの処理に必要な情報、処理に必要なデータアクセスモジュール及びデータ処理モジュールをピアモジュールに設定し、データ処理の開始を指示することで、所定の処理を実行することが可能となる。
このような機能が提供されることで、ストリーム処理を行うアプリケーションの記述は大幅に削減される。なぜなら、ストリーム処理は定められたビットレートでデータを処理することが重要なリアルタイム性が高い処理であるため、そのような処理を実現するプログラムの開発はプラットホームが提供する機能例えば時間管理等を使い、CPU時間を一部の処理が占有し処理の流れが滞らないようにする等の高度なスケジューリング技術が必要となるが、本実施例の手法を用いれば、スケジューリングはストリームマネージャが行うため、ストリームマネージャを利用するアプリケーションは、ピアモジュールの生成と、リンクモジュールを関係づけ、必要なデータアクセスモジュールとデータ処理モジュールを作成し、これをピアモジュールに関係づければよく、上記のスケジューリング機能については実装する必要が無いからである。
またこれらのモジュールはストリームマネージャが提供するプラットホームに非依存のインタフェースを利用するだけで良いのでアプリケーションは、どのようなプラットホームでも変更せずに利用することが可能となる。
図4は図16を用いて説明したピアモジュールの論理的な構成を示した図である。ピアモジュール(400)は、データフォーマットに依存したデータ処理を実行するデータ処理モジュール(401)と、OSのシステムインタフェース(280)を介し、特定のハードウェア装置を用いデータ処理を実行するデータアクセスモジュール(405)を備える。ピアモジュールは、ストリームマネージャ内でピアモジュール固有の識別子(ピアモジュールID)で識別される。
データ処理モジュール(401)は固有の識別子(データ処理モジュールID)で識別され、さらに前処理部(402)と後処理部(403)を備える。どのピアモジュールにどのデータ処理モジュールが関係づけられているかはテーブル(1800)の列(1803)に記録されている。データアクセスモジュール(405)も、固有の識別子(データアクセスモジュールID)で識別され、入出力実行処理部(406)と入出力完了処理部(407)を備える。どのピアモジュールにどのデータアクセスモジュールが関係づけられているかはテーブル(1800)の列(1804)に記録されている。
ピアモジュールは、リンクモジュール(410、420)で、他のピアモジュールと連結される。リンクモジュールは、バッファ行列(411)を備える。リンクモジュール(410)がデータ処理モジュールの入力側に接続される場合は、該リンクモジュール内のバッファに格納されるデータは、データ処理モジュールの前処理部へ出力可能である。データ処理モジュールの出力側に接続される出力リンクモジュール(420)の場合には、該リンクモジュール内のバッファに格納されるデータは、データ処理モジュールの後処理部から入力可能である。
例えば、他のピアモジュールで処理されたデータがバッファに書き込まれて入力リンクモジュール(410)に入力される。このデータは前処理部(402)が受け取り、該前処理部によって、データオブジェクト(408)に変換されて、実行待ちデータオブジェクト行列(412)に入れられる。これをデータアクセスモジュール(405)が取得し、処理する。データオブジェクト(408)の詳細については図12を用いて後述する。
データアクセスモジュールは、OS内のシステムインタフェース(280)を介してデバイスドライバ(430)にアクセスし、ハードウェアデバイス(440)とデータの入出力を行う。データアクセスモジュールの入出力実行処理部(406)は、データの入出力要求、あるいは前処理部から渡されたデータに対する処理を行う。処理としては、例えば、ハードウェアデバイス(440)に格納されたファイルの読込などの指示や、データオブジェクト中のデータ(408)の暗号処理用ハードウェアにおける暗号化処理の指示等のデータ変換処理等が考えられる。処理結果は、入出力完了処理部(407)が取得し、データオブジェクト(409)として、後処理待ち処理オブジェクト行列(413)に入力する。後処理部は後処理待ち処理オブジェクト行列(413)から取り出したデータオブジェクト中のデータを出力リンクモジュール(402)に出力して、ピアモジュールのデータ処理を終える。
これらの動作は、ピアモジュールスケジューラ(233)が、テーブル(1800)とテーブル(1900)を参照しながら実行する。実行のタイミングは図11のスケジューリングテーブル(1100)に記された情報に従って実行する。図11の詳細は後述する。
また、ピアモジュールは一つ以上の入力リンクモジュールならびに一つ以上の出力リンクモジュールに連結され、該リンクモジュールを介して2つ以上のピアモジュールが連結されることで一連のデータ処理フローを実現することができる。これにより、複数のピアモジュールからのデータを単一のピアモジュールに集めて複数のデータを多重化したり、単一のデータフローを複数の異なるピアモジュールへ送出することも可能である。これは、例えば、図1で示したような多重化されたデータの分離、あるいは複数のデータの多重化などに利用できる。
データアクセスモジュールの入出力処理実行部(406)、及び入出力完了処理部(407)はプラットホームに備えられたハードウェアデバイスが異なるとその実現方式が変わり得る。該データアクセスモジュールを修正することで、データアクセスモジュールよりも上位レイヤのモジュールは、システムインタフェースに依存せずに、処理を実行することが可能となる。
図12にデータオブジェクトの構成を示した。データオブジェクト(1200)は、データリスト(1210)、コマンドコード(1212)及びコマンド引数(1213)からなる。データリストはさらに、データへのアドレス(1221)とデータのサイズ(1222)がリストとして格納されている。データオブジェクトは、処理すべきデータをデータリスト(1210)で保持し、さらにそのデータに対するコマンド(1211)とパラメタ(1213)が記録されたものである。必ずしもコマンドとデータが対になって記録されている必要は無く、データは空で、コマンドだけが格納されていても良いし、逆にデータだけが格納されていても良い。
図11にピアモジュールスケジューラ内のスケジュールテーブルの構成を示した。スケジュールテーブル(1100)はピアモジュールスケジューラがどのピアモジュールをいつ実行するかを管理する。該テーブルには、スケジュール時刻(1101)とピアモジュールID(1102)を項目として有している。ここで、テーブル(1100)中のスケジュール時刻とは、あるピアモジュールに関連付けられたデータアクセスモジュールとデータ処理モジュールの処理を、次に実行する予約時刻のことである。また、スケジュールとは複数の処理を行わなければならない場合、どのような順番でどの処理をいつ行うかを決定し、記録することである。またスケジュール実行、あるいはスケジューリングとは、予め定められたスケジュールに従って処理を実行することを指す。
図11の例では、例えば時刻250ミリ秒においてピアモジュールIDが10および13のピアモジュールが実行されることが行1110、1120に示されている。つまり、同一の時刻に実行されるべきピアモジュールが複数存在しても良い。ただし、スケジュール時間は同一時間であっても、実際の処理は、一方の処理が完了した直後にもう一方の処理が行われてもよい。
本実施例では、該スケジュールテーブルに記録された内容に準じて処理を実行するのは、ピアモジュールスケジューラである。つまり、上述した処理は前述のタイミングで、ピアモジュールスケジューラがテーブル(1800)、テーブル(1900)、およびテーブル(2000)を参照しながら必要な処理を順次行う。つまり、各ピアモジュールのデータ処理モジュールとデータアクセスモジュールの処理はピアモジュールスケジューラが実行する。これは言い換えれば、スレッドのような一つの実行コンテキストで、ピアモジュールピアモジュールスケジューラの処理、前処理部、後処理部、入出力実行処理部、及び入出力完了処理部の処理を行うということである。
ピアモジュールスケジューラは、例えば、定期的に起動され、該テーブルを参照し、現在の時刻と比較してそれよりも以前のスケジュール時刻が設定されたピアモジュールがあれば、このピアモジュールの処理を行い、必要があればテーブル(1100)を更新し、次の起動を待つ。
ピアモジュールの実行手順について、図6を用いて説明する。
まず、ピアモジュールスケジューラは、既に処理が開始されているストリーム処理が存在するかどうかをストリームテーブル(2000)の列(2004)を参照して確認する(ステップ600)。開始されているストリーム処理が存在しない場合、新たにストリーム処理が実行されるまで待つ(ステップ601)。開始されたストリーム処理が存在する場合は、スケジュールテーブル(1110)を参照し、現在時刻を起点にして最も早く実行されるスケジュール時刻まで待つ(ステップ603)。時刻を待つ方式は、時計を周期的に見て判断しても良いし、指定時間だけ実行を停止する機能を使用しても良いし、時間割込の利用できるプラットホームであればこれを利用しても良い。ストリーム処理が開始された直後は、まだピアモジュールによって処理開始時刻がスケジュールマネージャに予約されていないので、そのストリーム処理を構成するピアモジュールのスケジュール時刻として現在の時刻を、ストリームマネージャが登録することで最初の実行が行われるようにする。待機動作が完了すると、スケジュールテーブル(1100)のピアモジュールID(1102)に記載されたピアモジュールのデータ処理モジュールの前処理部をピアモジュールスケジューラが実行する(ステップ604)。この実行処理において、前処理部は、入力リンクモジュールにデータが存在しているかを確認し、存在すればこれをデータオブジェクトに変換し、実行待ちデータオブジェクト行列(412)に入力する。あるいは図1のデータをハードディスクから読み出すピアモジュールのような、ストリーム処理の始点となるピアモジュールでは、データの読み出し要求をデータオブジェクトとして該行列に入力する。
次に、自モジュールが次にスケジュールされるべき時刻を算出し、ピアモジュールスケジューラに該時刻を登録する(ステップ605)。次のスケジュール時間を前処理部(402)が定める理由は、リンクモジュール(410)から得られたデータ(411)のサイズ等、処理に必要な時間を算出できるのが前処理部だからである。例えば図1のピアモジュール(100)のようなファイルを読み出すピアモジュールに、例えばビットレートが1秒当たり1024キロバイトで、一度に読み込むデータブロックのサイズが256キロバイトに設定されていたとする。この指定はデータ処理コマンド命令(580)を使用してアプリケーションから指定される。このような場合、ファイルの読込のピアはであったとすると、(一度に読み込むデータブロックサイズ)/(ビットレート)で定められる値で読込の時間間隔が決定できる。例えば、毎秒1024キロバイトでブロックサイズが256キロバイトであるなら、読込は0.25秒毎で行えば指定されたビットレートが実現できることが判る。つまり、256キロバイトのデータ要求を前処理部が入出力処理部に行った後は、次の処理は0.25秒後に行えば良いことになるので、次回のスケジューリング時間は250ミリ秒後と定まる。
それよりも下流にあるピアモジュール、図10におけるデマルチプレクサピアモジュールや映像ピアモジュールにおいては、これらのスケジューリング時間は、同様な方法で設定されたビットレートとリンクモジュール経由で得られたデータのサイズから決めても良いが、比較的短い時間をスケジューリング時間に設定しで、頻繁に実行された方が良い。なぜならば、データのビットレートは最上流のファイル読み出しピアが前述の方法で制御しているので、それより下位のピアモジュールでは、特にビットレートを制御せずに、データが入力リンクオブジェクトに入力されたら、これをすぐに取り出して処理を行い、出力リンクモジュールに出力すれば、定められたビットレートが実現できるからである。この場合、下流のピアオブジェクトでは、処理の遅延が起ってビットレートが低下しないようにするために、頻繁にリンクオブジェクトにデータが入力されたかを確認する方が良い。このためには、スケジューリング時間は小さな値を予約するべきである。
前処理部からデータアクセスモジュールにデータオブジェクトが出力された場合(ステップ606)、ピアモジュールスケジューラが、該データオブジェクトに指示された処理を開始するためにデータアクセスモジュールの入出力実行処理部を実行する(ステップ607)これは例えば、データの加工や取得をハードウェアデバイスに要求する作業が該当する。
実行待ちデータオブジェクト行列にデータアクセスモジュールが無く、かつデータアクセスモジュールからデータオブジェクトが新たに後処理待ちデータ処理行列に出力されていない場合、ピアモジュールスケジューラはステップ611に進む(ステップ608)。
以前に実行された入出力実行処理部の処理が終了して、処理結果としてのデータが存在する場合、これは、例えば、ハードウェアデバイスに要求していたデータ加工や取得処理が終了して、その結果としてのデータが存在する場合は、データアクセスモジュールの入出力完了処理部をピアモジュールスケジューラが実行し(ステップ609)、該データをデータオブジェクトとして後処理待ちデータオブジェクト行列(413)に入力する(ステップ610)。データオブジェクトが後処理待ちデータオブジェクト行列(413)に有る場合、ピアモジュールスケジューラが後処理部を実行し、出力リンクモジュールにデータオブジェクト中のデータリストのみを渡す。後処理部の処理が完了した場合、ピアモジュールスケジューラは次のピアモジュールのスケジュールのために開始状態に戻る。
本実行方式では、例えば複数のストリーム処理実行する場合も、各ストリーム処理に存在するピアモジュールの処理は、ピアモジュールスケジューラの一つの実行コンテキストで行うことが可能である。ここで、実行コンテキストとはプログラムを実行する場合に必要となる情報を持った実行単位のことで、スレッドなどがこれに相当する。なぜならば、前述した方法を用いることで、例え複数のストリーム処理であっても、各ピアモジュールの処理をスケジューリングする時刻がそれぞれのピアモジュールから指定されているので、その時間にピアモジュールスケジューラが実行すれば良いからである。このように1つの実行コンテキストで処理すると、複数の実行コンテキストで複数のストリーム処理を処理したときに生じる同期化処理を行う必要がない。このデバイスへのアクセスを排他的に行うための同期化処理は負荷が高いため、この処理を省くことでストリーム処理の性能低下を防止できる。
また、本方式では例えば、実行優先度を上げるのであれば、ピアモジュールの前処理部で決定するピアモジュールの予約時間をより短くすれば、そのピアモジュールの処理がより早くスケジューリングされることになり、より多くのCPU時間が該ピアモジュールの処理に使われることになる。また、複数処理を実行する場合、上記した予約時間を調整することで、それぞれの処理の優先度を指定することが可能となる。例えば、あるデバイスからデータを取得してストレージに記録する処理と、あるデバイスからデータを取得してディスプレイに表示する処理の2つの処理を同時に行う場合、前者の処理の予約時間を短く設定すれば、記録処理の優先順位を高く設定することが可能となる。
また、複数のデータ処理を1つの実行コンテキストで実行することで、複数の実行コンテキストに複数のバッファを割り当てる必要が無くなり、また複数コンテキストの並列実行時に用いられるセマフォのような、複数の実行コンテキストで一つのリソースを利用する際に、排他的なアクセスを保証する仕組みである同期機能を用いる必要が無くなり、使用リソースの低減が可能となる。
また、一つのコンテキストで処理を実行することにより、ピアモジュールスケジューラ(233)は効率のよいスケジューリングを設定することが可能となる。なぜなら、従来のスケジューリング方式、例えばラウンドロビン方式等では、一定時間毎に無条件に処理を切り変えるので、処理が必要無い場合でもスケジューリングされてしまうことがあったり、処理が必要な場合にスケジューリングされないことがあり、リアルタイム性が低下し、無駄なCPU時間を消費することになっていた。一方、本方式では、次処理に必要な時間を算出し、その必要な時間をスケジューリングテーブルに登録してスケジューリングを行うので余計なスケジューリングが行われず、従来のラウンドロビン方式等における冗長時間に割り当てられていたCPU処理を別の処理に振り当てることが可能になるため、全体としてプラットフォームのリソースの一つであるCPU時間の使用効率が向上し、さらに処理の必要な時刻には正しくスケジューリングされるので、リアルタイム性を向上することが可能となる。
図7に、本実施例による、ピアモジュール、リンクモジュール、及びピアモジュールスケジューラを使ったデータ処理の一例として、音声と映像が多重化されて記録されているファイルをハードディスクから読み込み、これを再び分離して、ディスプレイ、並びにスピーカから動画として再生する場合のデータフローについて説明する。音声と映像を多重化して記録する方式としては、MPEG(Motion Picture Expert Group)等がある。該処理においてファイル読み出しピアモジュール(700)はデマルチプレクサピアモジュール(730)とリンクモジュール(720)で結合され、デマルチプレクサピアモジュール(730)と映像ピアモジュール(760)はリンクモジュール(740)で接続され、さらに音声ピアモジュール(780)がリンクモジュール(750)で接続されている。
まず、ファイル読み出しピアモジュールはシステムインタフェース(709)とデバイスドライバ(710)を通してハードディスクにアクセスし、データを取得する。デマルチプレクサピアモジュール(730)は、取得したデータの多重化を解除する。この処理によって得られた映像データは映像ピアモジュール(760)に送られてデバイスドライバ(769)を通してハードウェア映像デコーダ(770)に送られ、音声データは音声ピアモジュール(780)に送られてデバイスドライバ(789)を通して、ハードウェア音声デコーダ(790)に送られて再生される。
図10には、図7で示した処理例における詳細な構成を示した。これを用いて、処理手順について説明する。
まず、ピアモジュールスケジューラが、ファイル読み出しピアモジュールのデータ処理モジュールの実行を開始する。データ処理モジュール(701)であるファイル読み出しモジュールの前処理部(702)はデータアクセスモジュール(704)であるファイルアクセスモジュールの入出力実行処理部(705)へのファイル読出し入出力処理であるデータオブジェクト(707)を入出力待ちデータオブジェクト行列に入力することで要求する。この読出し処理は入出力処理部(705)によってシステムインタフェース(709)と記憶装置用アダプタデバイスドライバ(710)を経由して処理される。さらに、当該処理の実行以前に実行された読み込み処理が完了したかどうかを、ピアモジュールスケジューラがチェックし、処理が完了していれば入出力完了処理部(706)が実行され、該データをデータオブジェクト(708)にして後処理待ちデータオブジェクト待ち行列に入れる。
次に、後処理部(703)が実行されると、後処理待ちデータオブジェクト行列に格納されたデータオブジェクト(708)を取得し、該データオブジェクト内のデータリストがリンクモジュール(720)のバッファ内の待ち行列に入力される。
なお、これらの処理において、各処理は以下のように検索される。ファイル読出しピアモジュールのピアIDは100であるので、ピアモジュールスケジューラはこの値から、テーブル(1800)を参照し、データ処理モジュールとして割り当てられているデータ処理モジュールIDを得る。図16の例では該番号は100である。次にテーブル(1500)を参照して、データ処理モジュールIDが100の行を検索する。これにより、実行すべき前処理部が0xFA800000番地に、実行すべき後処理部が0xFA808000番地に存在することがわかるので、これらを実行する。この場合、本アドレスに格納されている前処理部の処理の内容は、指定されたファイルの読込を指示した後、次のスケジューリング時間を指定する処理であり、後処理部の処理の内容は取得したデータを出力リンクに出力する処理である。同様にデータアクセスモジュールに関しては、テーブル(1800)を参照し、データアクセスモジュールとして割り当てられているデータアクセスモジュールIDを得る。図16の例では該番号は1である。次にテーブル(1300)を参照して、データアクセスモジュールIDが1の行を検索する。これにより、実行すべき入出力実行処理部のアドレスと、入出力完了処理部のアドレスを得て、これらを実行する。この場合、本アドレスに格納されている入出力実行処理部の処理の内容は、ハードディスクへのデータ読込要求発行であり、入出力完了処理部の処理の内容はハードディスクからのデータの取得処理である。
デマルチプレクサピアモジュール(730)のデマルチプレクサ処理モジュール(731)がピアモジュールスケジューラによって実行されると、前処理部(732)が実行され、リンクモジュール(720)の待ち行列(721)からデータリストを取り出す。待ち行列にデータが無い場合、前処理部は処理を終了して、後処理部の処理に移る。
なお、上記の前処理部における処理は、データ処理フローにおいて始点から2つ目以降に接続されたピアモジュールの処理において同様である。また、全てのピアモジュールの前処理部は、処理を終了する前に、次に自身が実行されるべき時間を予約する。この予約時間は、該ストリーム処理のビットレートや、要求されるリアルタイム性に依存する。例えば、高いビットレートのデータ処理、あるいは高いリアルタイム性が要求される処理の場合は、データを迅速に処理して次のピアモジュールに渡さなければならないので、入力リンクモジュールのバッファにデータが格納されているか否かの確認を頻繁に行う必要がある。逆にビットレートが低ければ、比較的間隔を開けてチェックすることができる。
該デマルチプレクサピアモジュールの処理はデータフォーマットの変換であり、プログラムで実行することで処理可能であり、HDD等のI/O系のハードウェアにアクセスする必要がないためデータアクセスモジュールが定義する必要はなく、前処理部で処理後のデータは後処理部(733)に渡される。この場合のデータフォーマットの変換処理は、与えられたデータを予めマルチプレクサピアモジュールの前処理部(732)が解析し、その結果を2つの音声バッファと映像バッファに書き込む処理となる。後処理部は、映像バッファから映像データを取り出し、リンクモジュール(740)の待ち行列(741)に入力し、同様に音声バッファから音声データを取り出しリンクモジュール(750)の待ち行列(751)に入力する。
次に、映像ピアモジュール(760)のデータ処理モジュールである映像書き込みモジュール(761)の前処理部(762)が実行されると、待ち行列(741)に待機しているデータリストが取り出される。アプリケーションがデータ処理モジュール制御命令(560)を用いて定めたビットレートに応じて、映像デコーダアクセスモジュール(764)にデータを送り、入出力実行処理部(765)によって、該データはハードウェア映像デコーダ(770)のデバイスドライバ(769)に出力され、ハードウェア映像デコーダ(770)に出力され、その結果として映像が出力される。出力が完了したデータはデータアクセスモジュールである映像デコーダアクセスモジュールの入出力完了処理部(766)によって検出され、データオブジェクト(768)として終了処理待ちデータオブジェクト行列に入れられる。映像ピアモジュールはデータ処理の末端であり、出力リンクモジュールが無いので、デバイスに書き込まれた映像データは後処理部(763)により破棄される。
音声ピアモジュール(780)における処理も先に説明した映像ピアにおける処理と同様である。音声ピアのデータ処理モジュールである音声書き込みモジュール(781)の前処理部(782)が実行され、待ち行列(751)内に待機している音声データリストが取り出される。取り出されたデータのビットレートに応じて、データアクセスモジュールである音声デコーダアクセスモジュール(784)に送られ、入出力実行処理部(785)によって処理が開始される。音声データは、デバイスドライバ(789)を通じてハードウェア音声デコーダ(790)に送られ、再生される。出力が完了したデータはデータアクセスモジュールの入出力完了処理部(786)によって検出され、完了したデータはデータオブジェクト(788)として後処理待ちデータオブジェクト行列に入れられ、その後、後処理部(783)によって破棄される。
図8は、図2の構成をユーザ空間で実装した例を示している。ユーザ空間で実装する場合、全てのモジュールがユーザ空間上で実装されるので、開発が容易という効果がある。なぜなら、アプリケーションプログラムを開発する際に利用される開発ツール、例えばデバッガ等が使用できる上に、OSの提供するメモリ管理機能を利用できるので他のアプリケーションからの干渉を防止でき、信頼性、可用性を高めることが可能だからである。
図9は、図2の構成の大部分をOSで構成した例を示している。例えば、カーネル空間で実装する構成の場合、OS内のモジュールがアプリケーションプログラムより優先的に実行が行わるOSでは、ユーザ空間で実装されるよりも、性能で有利になる。特に、リアルタイム性が必要となる高ビットレートでのコンテンツ処理を行う場合には特に有効と考えられる。
この2つの構成において、プラットホーム依存となるのは汎用システムインタフェース(920,931)、及びデータアクセスモジュールマネージャ(932)であり、これ以外の本実施例に属するプログラムモジュールはプラットホームに依存しない。なぜならば、ハードウェアやOSの相違により異なるOSの機能利用手順や、デバイスのアクセス方法の差異を該モジュールが吸収して、該モジュール提供する汎用化されたインタフェースを利用することでフラットホームが提供する機能を利用することが可能だからである。
なお、いずれの構成を採用するかは、用途、ハードウェア構成、及び開発工数などを考慮して決められるべきである。例えば、CPUの性能が低いプラットホームでの実装、あるいは高い性能が要求される場合は、デバッグなどは多少困難になるが、高性能を実現することが比較的容易な図9のカーネル空間での実装が考えられる。逆に、CPUが十分に早くメモリ等の実行リソースが十分に利用できる場合や、高性能が要求されない場合等は、実装が容易な図8のユーザ空間のような構成とすることが考えられる。
本技術は、例えば動画や音声処理等のストリーミング処理に利用可能である。例えば、放送機器、受信機、録画・録音機器、及び監視カメラなどに適用可能である。
処理ポイント間のデータフローとして構成されたデータ処理の処理フローを示した構成図 本実施例の要素の全体構成を示した構成図 ハードウェア構成を示した構成図 本実施例の処理ポイントの定義を示した構成図 本実施例の制御インタフェースを示した図 本実施例の処理ポイントのスケジューリング機能の処理ステップを示したフローチャート 記憶装置に記憶されハードウェアデコーダを用いて復号化された映像フィルタを提示するためのデータ処理のフローの例を示した構成概要図 オペレーティングシステムのアプリケーションレベルで実行させるための本実施例の実装形態例を示した構成図 オペレーティングシステムのカーネルレベルで実行させるための本実施例の実装形態例を示した構成図 記憶装置に記憶されハードウェアデコーダを用いて復号化された映像フィルタを提示するためのデータ処理のフローの例を示した構成図 スケジュール時間を管理するテーブルの構成を示した図 データオブジェクトの構成を示した図 データアクセスモジュールIDとデータアクセスモジュール管理情報のアドレスの対応を管理するテーブルの構成を示した図 データ処理モジュールIDとデータ処理モジュール管理情報のアドレスの対応を管理するテーブルの構成を示した図 ストリーム処理を構築する手順を示したフロー ピアモジュールの構成を示した図 リンクモジュールの構成を示した図 ストリーム処理の構成を示した図
符号の説明
100 カメラ、110 マイクロフォン、120 データを取り出すステップ、121 カメラを使って映像データにアクセスするポイント、122 マイクロフォンを使って音声データにアクセスするポイント、130 映像データと音声データを同期させ多重化するステップ、131 単一の処理ポイント、140 データを提示するステップ、141 単一の処理ポイント、150 データを記録するステップ、160 ハードウェアデータデコーダ、170 ディスプレイ、180 スピーカ、190 記憶装置

Claims (18)

  1. データの入力装置とデータの出力装置と各処理モジュールを格納した記憶部と命令を発行する命令発行部と前記処理モジュールを用いて処理を実行する演算処理部とを有するデータ処理装置におけるデータ処理方法であって、
    前記命令発行部から発行された第1の命令に基づき、前記データを処理するのに必要な少なくとも1以上の処理を特定し、
    前記特定された処理に必要な処理モジュールを前記記憶部に生成し、
    リンクモジュールを用い前記処理モジュールを接続して、前記処理を実行するための処理フローを前記記憶部に生成し、
    前記命令発行部から発行された第2の命令に基づき、前記入力装置から入力されたデータが前記処理フローの開始部に入力されて、前記演算処理部により前記処理フローが実行され、
    前記処理フローが実行された処理結果が前記出力装置から出力されることを特徴とするデータ処理方法。
  2. 請求項1記載のデータ処理方法であって、
    前記処理モジュールは、前記入力装置からデータを入力あるいは前記出力装置へデータを出力するデータアクセスモジュールと、前記データアクセスモジュールを介して入力されたデータに所定の処理を実行した後に該処理後のデータを他の処理モジュール出力するデータ処理モジュールとを有することを特徴とするデータ処理方法。
  3. 請求項2記載のデータ処理方法であって、
    前記データ処理モジュールは、前記リンクモジュールからデータを入力し、所定の処理を実行後に該実行後のデータを前記データアクセスモジュールに出力する第1の処理部と、前記データアクセスモジュールから入力されたデータを他の処理モジュール出力する第2の処理部とを有することを特徴とするデータ処理方法。
  4. 請求項3記載のデータ処理方法であって、
    前記データアクセスモジュールは、前記第1の処理部から送信されるデータの入出力要求を前記入力装置あるいは出力装置へ送信する入出力実行処理部と、前記入出力要求により取得したデータを前記第2の処理部へ出力する入出力完了処理部とを有することを特徴とするデータ処理方法。
  5. 請求項3記載のデータ処理方法であって、
    データ処理管理モジュールおよび処理の順序を規定したストリームテーブルをさらに有し、
    前記第1の処理部は、
    前記命令発行部から通知されたビットレートと当該第1の処理部における処理を行う単位であるブロックサイズに基づき、当該処理モジュールが次に起動される時刻を算出し、前記ストリームテーブルに登録することを特徴とするデータ処理方法。
  6. 請求項5記載のデータ処理方法であって、
    前記データ処理管理モジュールは、前記ストリームテーブルを参照し、
    前記ストリームテーブルに登録された処理を一つの実行コンテキストで実行することを特徴とするデータ処理方法。
  7. データ処理装置であって、
    データの入力装置と、
    データの出力装置と、
    処理モジュールと当該処理モジュールを接続するリンクモジュール、およびデータ処理管理モジュールを格納した記憶部と、
    命令を発行する命令発行部と、
    前記処理モジュールを用いて処理を実行する演算処理部とを有し、
    前記データ処理管理モジュールは、
    前記命令発行部から発行された第1の命令に基づき、前記データを処理するのに必要な少なくとも1以上の処理を特定して、該特定された処理に必要な処理モジュールを前記記憶部に生成し、
    前記リンクモジュールを用い前記処理モジュールを接続して、前記処理を実行するための処理フローを前記記憶部に生成し、
    前記命令発行部から発行された第2の命令に基づき、前記入力装置からデータを入力して前記演算処理部により前記処理フローを実行し、前記処理フローが実行された処理結果を前記出力装置へ出力することを特徴とするデータ処理装置。
  8. 請求項7記載のデータ処理装置であって、
    前記処理モジュールは、前記入力装置からデータを入力あるいは前記出力装置へデータを出力するデータアクセスモジュールと、前記データアクセスモジュールを介して入力されたデータに所定の処理を実行した後に該処理後のデータを他の処理モジュール出力するデータ処理モジュールとを有することを特徴とするデータ処理装置。
  9. 請求項8記載のデータ処理装置であって、
    前記データ処理モジュールは、前記リンクモジュールからデータを入力し、所定の処理を実行後に該実行後のデータを前記データアクセスモジュールに出力する第1の処理部と、前記データアクセスモジュールから入力されたデータを他の処理モジュール出力する第2の処理部とを有することを特徴とするデータ処理装置。
  10. 請求項9記載のデータ処理装置であって、
    前記データアクセスモジュールは、前記第1の処理部から送信されるデータの入出力要求を前記入力装置あるいは出力装置へ送信する入出力実行処理部と、前記入出力要求により取得したデータを前記第2の処理部へ出力する入出力完了処理部とを有することを特徴とするデータ処理装置。
  11. 請求項9記載のデータ処理装置であって、
    データ処理管理モジュールおよび処理の順序を規定したストリームテーブルをさらに有し、
    前記第1の処理部は、
    前記命令発行部から通知されたビットレートと当該第1の処理部における処理を行う単位であるブロックサイズに基づき、当該処理モジュールが次に起動される時刻を算出し、前記ストリームテーブルに登録することを特徴とするデータ処理装置。
  12. 請求項11記載のデータ処理装置であって、
    前記データ処理管理モジュールは、前記ストリームテーブルを参照し、
    前記ストリームテーブルに登録された処理を一つの実行コンテキストで実行することを特徴とするデータ処理装置。
  13. 命令を発行する命令発行部とデータの入力装置と出力装置とを有する計算機におけるデータ処理プログラムであって、計算機に、
    前記命令発行部から発行された第1の命令に基づき、前記データを処理するのに必要な少なくとも1以上の処理を特定する工程と、
    前記特定された処理に必要な処理モジュールを前記記憶部に生成する工程と、
    リンクモジュールを用い前記処理モジュールを接続して、前記処理を実行するための処理フローを前記記憶部に生成する工程と、
    前記命令発行部から発行された第2の命令に基づき、前記入力装置から入力されたデータが前記処理フローの開始部に入力されて、前記演算処理部により前記処理フローが実行される工程と、
    前記処理フローが実行された処理結果が前記出力装置から出力されること工程とを実行させるためのデータ処理プログラム。
  14. 請求項13記載のデータ処理プログラムであって、
    前記処理モジュールは、前記入力装置からデータを入力あるいは前記出力装置へデータを出力するデータアクセスモジュールと、前記データアクセスモジュールを介して入力されたデータに所定の処理を実行した後に該処理後のデータを他の処理モジュール出力するデータ処理モジュールとを有することを特徴とするデータ処理プログラム。
  15. 請求項14記載のデータ処理プログラムであって、
    前記データ処理モジュールは、前記リンクモジュールからデータを入力し、所定の処理を実行後に該実行後のデータを前記データアクセスモジュールに出力する第1の処理部と、前記データアクセスモジュールから入力されたデータを他の処理モジュール出力する第2の処理部とを有することを特徴とするデータ処理プログラム。
  16. 請求項15記載のデータ処理プログラムであって、
    前記データアクセスモジュールは、前記第1の処理部から送信されるデータの入出力要求を前記入力装置あるいは出力装置へ送信する入出力実行処理部と、前記入出力要求により取得したデータを前記第2の処理部へ出力する入出力完了処理部とを有することを特徴とするデータ処理プログラム。
  17. 請求項15記載のデータ処理プログラムであって、
    データ処理管理モジュールおよび処理の順序を規定したストリームテーブルをさらに有し、
    前記第1の処理部は、
    前記命令発行部から通知されたビットレートと当該第1の処理部における処理を行う単位であるブロックサイズに基づき、当該処理モジュールが次に起動される時刻を算出し、前記ストリームテーブルに登録することを特徴とするデータ処理プログラム。
  18. 請求項17記載のデータ処理プログラムであって、
    前記データ処理管理モジュールは、前記ストリームテーブルを参照し、
    前記ストリームテーブルに登録された処理を一つの実行コンテキストで実行することを特徴とするデータ処理プログラム。
JP2004109599A 2004-04-02 2004-04-02 データ処理装置およびその方法 Expired - Fee Related JP4285307B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2004109599A JP4285307B2 (ja) 2004-04-02 2004-04-02 データ処理装置およびその方法
EP04014109.5A EP1596299B1 (en) 2004-04-02 2004-06-16 Data processing apparatus and method thereof
US10/873,176 US7987299B2 (en) 2004-04-02 2004-06-23 Data processing apparatus and method thereof
KR1020040047543A KR100719416B1 (ko) 2004-04-02 2004-06-24 데이터 처리 장치 및 데이터 처리 방법
CN200410060083A CN100583044C (zh) 2004-04-02 2004-06-25 数据处理装置及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004109599A JP4285307B2 (ja) 2004-04-02 2004-04-02 データ処理装置およびその方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2008286048A Division JP2009116881A (ja) 2008-11-07 2008-11-07 データ処理装置およびその方法

Publications (2)

Publication Number Publication Date
JP2005293381A true JP2005293381A (ja) 2005-10-20
JP4285307B2 JP4285307B2 (ja) 2009-06-24

Family

ID=34925372

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004109599A Expired - Fee Related JP4285307B2 (ja) 2004-04-02 2004-04-02 データ処理装置およびその方法

Country Status (5)

Country Link
US (1) US7987299B2 (ja)
EP (1) EP1596299B1 (ja)
JP (1) JP4285307B2 (ja)
KR (1) KR100719416B1 (ja)
CN (1) CN100583044C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007164734A (ja) * 2005-12-16 2007-06-28 Matsushita Electric Ind Co Ltd ストリーム制御装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635597B2 (en) * 2005-07-01 2014-01-21 Siemens Aktiengesellschaft Method for determining the processing order of modules in a function plan and electronic data processing system for carrying out the method
CA2852597C (en) * 2013-05-23 2020-02-04 Ellison Information Manufacturing Inc. Method and system for input driven process flow management
CN111324523B (zh) * 2018-12-14 2023-05-12 深圳云天励飞技术有限公司 一种数据处理方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2521016B2 (ja) 1991-12-31 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチメディア・デ―タ処理システム
JP3197766B2 (ja) * 1994-02-17 2001-08-13 三洋電機株式会社 Mpegオーディオデコーダ、mpegビデオデコーダおよびmpegシステムデコーダ
EP1457896A3 (en) * 1995-10-26 2005-04-20 Matsushita Electric Industrial Co., Ltd. File system
US6205492B1 (en) 1997-04-04 2001-03-20 Microsoft Corporation Method and computer program product for interconnecting software drivers in kernel mode
CN1190211A (zh) * 1997-06-10 1998-08-12 Lsi罗吉克公司 面向对象的多媒体结构
JP2001266488A (ja) * 2000-03-23 2001-09-28 Toshiba Corp 圧縮オーディオデータ再生装置および圧縮オーディオデータ再生方法
WO2001080219A2 (en) * 2000-04-14 2001-10-25 Realnetworks, Inc. A system and method of providing music items to music renderers
JP2004506262A (ja) * 2000-08-04 2004-02-26 イントリンジック グラフィックス, インコーポレイテッド グラフィックハードウェアおよびソフトウェアの開発
US6959438B2 (en) 2000-12-06 2005-10-25 Microsoft Corporation Interface and related methods for dynamically generating a filter graph in a development system
JP2002335426A (ja) 2001-05-07 2002-11-22 Nippon Hoso Kyokai <Nhk> 映像・音声処理装置、及び映像・音声処理ソフトウェア構成方法
JP4086529B2 (ja) 2002-04-08 2008-05-14 松下電器産業株式会社 画像処理装置及び画像処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007164734A (ja) * 2005-12-16 2007-06-28 Matsushita Electric Ind Co Ltd ストリーム制御装置

Also Published As

Publication number Publication date
EP1596299B1 (en) 2017-11-29
JP4285307B2 (ja) 2009-06-24
KR20050097432A (ko) 2005-10-07
CN1677351A (zh) 2005-10-05
CN100583044C (zh) 2010-01-20
US7987299B2 (en) 2011-07-26
KR100719416B1 (ko) 2007-05-18
EP1596299A2 (en) 2005-11-16
US20050223381A1 (en) 2005-10-06
EP1596299A3 (en) 2007-10-17

Similar Documents

Publication Publication Date Title
KR0163234B1 (ko) 데이타 스트리밍 메카니즘, 스트리밍 장치 어댑터, 컴퓨터 시스템 및 데이타 처리 시스템
CN100517306C (zh) 媒体基础媒体处理器
JP3048897B2 (ja) ビデオ最適化ストリーム・サーバ・システム
JP4086529B2 (ja) 画像処理装置及び画像処理方法
EP2160685B1 (en) Digital data management using shared memory pool
JP2010532536A (ja) デジタルメディア処理用インターフェース
US20080033978A1 (en) Program, data processing method, and system of same
JP2007534279A (ja) リアル・タイム二次元および三次元、単一品位および高品位ビデオ・エフェクト用グラフィック・ハードウェアを使用するためのシステムおよび方法
KR20060008896A (ko) 자원 관리 방법 및 장치
CN102857531B (zh) 一种基于云计算的远程交互式系统
JP4285307B2 (ja) データ処理装置およびその方法
JP2006259898A (ja) I/oコントローラ、信号処理システム、およびデータ転送方法
CN102857534B (zh) 一种基于云计算的远程交互方法
US7882510B2 (en) Demultiplexer application programming interface
JP2009116881A (ja) データ処理装置およびその方法
KR101085393B1 (ko) 복수의 프로세스를 멀티태스킹하기 위한 명령 실행 방법 및장치
JP2005275643A (ja) コンテンツデータ処理装置及び方法
US9547612B2 (en) Method and architecture for data channel virtualization in an embedded system
KR20100029010A (ko) 멀티미디어 데이터를 처리하기 위한 다중 프로세서 시스템들 및 그것의 방법들
CN114339389A (zh) 音视频系统
RU2351002C2 (ru) Программный интерфейс приложения демультиплексора
KR101180784B1 (ko) 컴포넌트 기반 프로그램의 동작 시퀀스 다이어그램 자동 생성 장치
CN117615191A (zh) 一种多媒体资源播放方法及播放设备
JP2009289238A (ja) データ処理システム及びストレージ制御方法
CN119946369A (zh) 媒体数据的处理方法、装置、设备、存储介质及程序产品

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060424

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080901

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080909

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081107

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090303

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090316

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120403

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120403

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120403

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130403

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140403

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees