JP2008065736A - データ処理装置、データ処理方法、プログラムおよび記録媒体 - Google Patents

データ処理装置、データ処理方法、プログラムおよび記録媒体 Download PDF

Info

Publication number
JP2008065736A
JP2008065736A JP2006245204A JP2006245204A JP2008065736A JP 2008065736 A JP2008065736 A JP 2008065736A JP 2006245204 A JP2006245204 A JP 2006245204A JP 2006245204 A JP2006245204 A JP 2006245204A JP 2008065736 A JP2008065736 A JP 2008065736A
Authority
JP
Japan
Prior art keywords
filter
data processing
processing apparatus
interface
dll
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.)
Pending
Application number
JP2006245204A
Other languages
English (en)
Inventor
Shinya Takeda
真也 竹田
Hideki Taniguchi
秀樹 谷口
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2006245204A priority Critical patent/JP2008065736A/ja
Publication of JP2008065736A publication Critical patent/JP2008065736A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】DirectShowフィルタの開発容易性と利便性を確保しつつ、他のアプリケーションから利用できないDirectShowフィルタの実現。
【解決手段】外部インターフェイスとしてDllGetObjectClassのみを有し、レジストリ登録機能を有しないことを最大の特徴とする第一のデータ処理装置と、COMサーバーを使用せずにDLLが持つDllGetObjectClassを直接コールすることによりDLLが有するIBaseFilterを取得してDirectShowフィルタとしてロードすることを最大の特徴とする第二のデータ処理装置を組み合わせて使用することでDirectShowのロードに必要な識別GUIDを隠蔽することを最大の特徴とするデータ処理システム、プログラムおよび記録媒体。
【選択図】図1

Description

本発明は、PC上で動作するソフトウェアに関するものである。
近年、動画、音声に関する技術が進歩し、様々なコーデックが新たに開発されている。同時にPC上での動画、音声の再生も盛んに行われており、PC向けの動画、音声の再生環境の開発が期待されている。Windows(登録商標) PC上で動画や音声を再生するための開発ツールとして、DirectShowという開発ツールがMicrosoftから提供されており、MPEGのような圧縮された動画をデコードし、再生するためのツールとして一般的に利用されている。
DirectShowが一般的に利用される主な理由として、以下のことが挙げられる。
−再生時の時間管理が標準で提供されているため開発が容易。
−最終の非圧縮Video/Audio出力デバイスとの結合が標準で提供されている。
−定められた規約で開発することにより、容易に再生環境を構築できる。
即ち、開発者はDirectShowFilterを開発することで、容易に動画や音声を再生する環境をWindows(登録商標) PC上に構築することができる。
上記の他にDirectShowFilterの特徴として、以下のことが挙げられる。
−COM(Component Object Model)形式でのインプリメント。
−レジストリ登録が必要。
−全てのアプリケーションから利用が可能。
DirectShowFilterは、128bitのCLSID(クラスID)をレジストリに登録する。アプリケーションから特定のDirectShowFilterを使用する際にはこのCLSIDを用いてCOMサーバーに問い合わせ、COMサーバーがレジストリに登録されているCLSIDを基にDLLのパス名を特定し、実際のDLLをロード、インターフェイスを取得する。アプリケーションは取得したインターフェイスを用いて、グラフを構築し、再生環境を構築する。
以上のように、DirectShowFilterが動画や音声の再生環境構築の開発を行う上で、便利な機能が提供されている一方で、ライセンス契約上の制約を遵守する開発や新技術の開発を行う上での問題点も含んでいる。
ライセンス契約上の制約の例を挙げると、「他のアプリケーションから容易に使用できないようにすること」などがこれに相当する。先に述べたように、DirectShowFilterは全てのアプリケーションから利用できることが特徴の一つであり、他のアプリケーションから使用できなくするには、別途実装時の工夫が必要になる。
また、新技術の開発に関しては、新技術を盛り込んだDirectShowフィルタに容易にアクセスされると、他社などに容易に新技術の評価をされてしまう。
他のアプリケーションから利用できなくする技術に関しては、特許文献1に示す、プログラムの暗号化を用いた手法などがあるが、暗号化したプログラムを動作させるためには、
暗号化されていないプログラムを動作させるのと比較して、膨大な処理能力が必要とされる。また、暗号化導入に伴う開発ステップの増大と、検証項目が増加し、開発期間が増大する。
特開2004−54798号公報
発明が解決しようとする課題は、以下の2点を同時に実現することである。
・DirectShowの開発容易性と利便性を確保。
・他のアプリケーションから利用できないようにする。
DirectShowの開発容易性と利便性を確保することで、従来の開発手法を踏襲しつつ、再生環境を容易に構築する。また、他のアプリケーションから利用できないようにすることで、新技術の隠蔽や、ライセンス契約上の「他のアプリケーションから使用できないようにすること」などの制約事項を満足させることを実現する。
レジストリ登録機能を有しないことを最大の特徴とする第一のデータ処理装置とCOMサーバーを使用せずにDirectShowフィルタのロードすることを最大の特徴とする第二のデータ処理装置を組み合わせて使用することを最大の特徴とする。
暗号化を用いずに、容易な開発プロセスにより、他のアプリケーションから利用できないDirectShowフィルタを実現することができる。
(実施の形態1)
DirectShowフィルタを用いたMPEG等の圧縮動画の再生を例に挙げ、DirectShowフィルタについての説明をする。DirectShowはDirectXコンポーネント内のモジュール群であり、動画の再生に必要なフレームワークが定義されている。動画再生時に必要な構成要素としては、グラフとフィルタがある。
グラフはフィルタを操作するためのフレームワークであり、以下の機能を有している。
・フィルタをグラフに追加
・フィルタ同士のピンの接続
・ フィルタへの再生/一時停止/停止/再生位置移動の命令発行
フィルタはフィルタ同士を接続するピンと動画ストリームを処理するための処理部とグラフからの操作を行うためのフレームワークを有している。図1に示すようにフィルタはピンの構成から大きく3種類に大別することができる。
・出力ピンのみを持つフィルタ(フィルタ101)
・入力ピンと出力ピンを持つフィルタ(フィルタ201)
・入力ピンのみを持つフィルタ(フィルタ301)
ピン102、ピン202、ピン203、ピン302はフィルタ間のデータの受け渡しを行うインターフェイスであり、定められたフレームワークに基づいて実装されており、様々なフィルタ間でのデータの送信が可能となる。
フィルタは、定められたフレームワークに基づき実装されており、グラフはその定められたフレームワークを使用することで、様々なフィルタ間でデータの流れをコントロールすることができる。
アプリケーションは、グラフを作成し、グラフ内にフィルタを配置し、グラフを用いてフィルタ同士を接続し、グラフを用いて動画データを流すことで目的のデータ変換を行ない、動画として出力することができる。
また、ビデオデバイスを介して映像を画面上に描画するために必要な処理を含んだフィルタや、サウンドデバイスを介して音声をスピーカー等から出力するために必要な処理を含んだフィルタがDirectXコンポーネントに標準で提供されており、アプリケーションはこれらのフィルタを使用することで、容易に動画の再生を実現することができる。
図2は、圧縮された動画を再生する際のグラフとフィルタの構成の1例である。グラフ100に、フィルタ111、フィルタ211、フィルタ221、フィルタ231、フィルタ311、フィルタ321を追加する。フィルタ111は圧縮データをファイルから読みみ込みピン112を介して、フィルタ211に渡すためのフィルタである。フィルタ211は、ピン212から入力されたデータを圧縮されたビデオデータと、オーディオデータに分離し、ピン213を介して、ビデオデータをフィルタ221に渡し、ピン214を介して、オーディオデータをフィルタ231に渡すためのフィルタである。フィルタ221はピン222から入力された圧縮ビデオデータをデコードし、非圧縮ビデオデータに変換してピン223を介して、フィルタ311に渡すためのフィルタである。フィルタ231はピン232から入力された圧縮オーディオデータをデコードし、非圧縮オーディオデータに変換してピン233を介して、フィルタ321に渡すためのフィルタである。フィルタ311はピン312から入力された非圧縮ビデオデータを画面上に描画するためのフィルタである。フィルタ321はピン322から入力された非圧縮オーディオデータをサウンドデバイスから出力するためのフィルタである。
例えば、既存の転送システムを用いて、かつビデオ圧縮方式のみ既存と異なる圧縮データを再生する場合には、これらのフィルタの内、フィルタ101、フィルタ211、フィルタ231、フィルタ311、フィルタ321はDirectShowで標準に提供されるフィルタを使用することが可能であり、フィルタ221のみを新規に開発するだけで、再生環境を構築することが可能となる。
グラフおよびフィルタは128bitのクラスIDおよびインターフェイスIDで管理されており、アプリケーションはフィルタが持つクラスID、および標準で規定されているインターフェイスIDのみを知ることで、アプリケーションからDirectShowフィルタを容易にグラフに追加することができる。そのため、アプリケーションは実際に実行されるフィルタがどのDLLに存在するかを知る必要がない。フィルタがどのDLL内に存在するかは、DirectXコンポーネントが持つCOM(Component Object Model)サーバーで管理されている。アプリケーションがグラフやフィルタを使用する際には、このCOMサーバーに対して、クラスIDやインターフェイスIDを指定し、目的のインターフェイスを取得する。
COMサーバーで
・フィルタの実行DLL特定
・アプリケーションで指定されたインターフェイスをDLLから取得
を実現するために、通常のDirectShowフィルタを含むDLLを作成する場合は、DLLのモジュール定義ファイルに
・GetObjectClass
・DllRegisterServer
・DllUnregisterServer
を記述し、DLLにインプリメントしなければならない。
GetObjectClassは、COMサーバーからDLLに対してIClassFactoryインターフェイスを取得するためのモジュールである。DllRegisterServerは、DLLのフルパスをレジストリに登録するためのモジュールである。DllUnregisterServerは、レジストリからフィルタの情報を抹消するためのモジュールである。アプリケーションからフィルタをロードする場合、アプリケーションからCOMサーバーに対しCoCreateInstanceメソッドをコールする。
具体的に、Visual C++ では、以下のように実装することでDirectShowフィルタを
アプリケーション上にロードすることができる。
IBaseFilter* pFilter = NULL;
::CoCreateInstance( フィルタのクラスID,
NULL,
CLSTX_INPROC_SERVER,
IID_IBaseFilter,
&pFilter );
図3に示すように、アプリケーション13から上記のCoCreateInstanceがコールされるとCOMサーバー14は、レジストリ15に登録されているクラスIDの中から指定されたフィルタ101のクラスIDのレジストリキーを検索する。クラスIDが検索された場合は、レジストリ15に登録されている内容からフィルタ17が含まれているDLLのパスを取得し、DLLに対してGetObjectClassを実行することでIClassFactoryインターフェイスを取得する。COMサーバーは取得したIClassFactoryインターフェイスを用いてIClassFactory::CreateInstanceメソッドをコールし、DLLからIBaseFilterインターフェイスを取得する。取得したIBaseFilterインターフェイスをアプリケーション13に返すことで、アプリケーション13は目的のフィルタ17のIBaseFilterインターフェイスを取得することができる。
このとき、フィルタ17の情報がレジストリ15に登録されている必要がある。フィルタ17のレジストリへの登録は、アプリケーションのインストーラ11などで行う。インストーラ11は、DirectShowフィルタ17をインストールする際に、DirectShowフィルタ17が有するDllRegisterServerをコールし、DirectShowフィルタ17がクラスIDなどの情報を定められたレジストリ15に登録する。また、アプリケーションとともにインストールしたDirectShowフィルタ17をアンインストールする場合には、アンインストーラ12は、DirectShowフィルタ17が有するDllUnregisterServerをコールすることで、DirectShowフィルタ17がレジストリ15からDirectShowフィルタ17が書き込んだ内容を消去する。
以上のようにDirectShowフィルタはCOMサーバーを介して、アプリケーションにロードされる。COMサーバーを介することで、アプリケーションは、クラスIDを知るだけで目的のDirectShowフィルタをロードすることができる。また、レジストリの登録を閲覧することで、容易に目的のDirectShowフィルタのクラスIDを知ることができる。
本発明の特徴は、
(1)本発明のアプリケーション上においては、本発明のフィルタと標準で提供されるフィルタおよび既存のフィルタとの間には通常のDirectShowフィルタと同等の互換性がある。
(2)本発明のアプリケーション以外のアプリケーション上では、容易に本発明のフィルタを利用することができない。
である。
本発明のフィルタを含むDLLは、レジストリ登録に必要な
・DllRegisterServer
・DllUnregisterServer
の2つのAPIを外部に公開せず、DLLはレジストリ登録機能を有さない。レジストリ登録以外の点においては、通常のフィルタと同等のインターフェイスを有する。レジストリ登録機能がないためフィルタのクラスIDをレジストリに書くことがなく、COMサーバーからフィルタにアクセスすることができない。COMサーバーからアクセスできないフィルタは他のアプリケーションからCoCreateInstance関数でロードすることはできなくなる。
本発明のアプリケーションは、
・本発明のフィルタのクラスIDを事前に保有
・本発明のフィルタのDLLパス名を事前に保有
しており、COMサーバーではなく、本発明のDLLに対し、直接インターフェイスを取得することで、グラフに追加するために必要なIBaseFilterインターフェイスを取得する。
図4に示すように、本発明のフィルタ19をインストールする際に、本発明のアプリケーション18と本発明のフィルタ19とのフォルダ位置関係が本発明のアプリケーションと本発明のフィルタ間で定めた位置関係(例えば同一フォルダ)となるようにインストーラ17でインストールする。この時、通常のフィルタに対してはレジストリ登録が行われるが、本発明のフィルタに対しては一切のレジストリ登録は行わない。
次に、本発明のアプリケーション18がグラフを作成し、図5示すように、
(1)本発明のフィルタ19が格納されているDLLをロードする
(2)DllGetObjectClassをコールし、IClassFactroyインターフェイスを取得する
(3)IClassFactroy::CreateInstanceをコールし、IBaseFilterインターフェイスを取得する
(4)取得したIBaseFilterをもって、グラフに追加する
とすることで、本発明のフィルタ19をグラフに追加する。具体的に、Visual C++ では、以下のように実装することで本発明のフィルタをグラフに追加することができる。
typedef HRESULT (WINAPI* PFUNC_GETCLASSOBJECT)(REFCLSID, REFIID, LPVOID* );
GETCLASSOBJECT pFunc = NULL;
HMODULE hModule = NULL;
IClassFactory* pIClsFac = NULL;
IBaseFilter* pFilter = NULL;

hModule = ::LoadLibrary( [フィルタのDLL名] );
pFunc = (PFUNC_GETCLASSOBJECT)::GetProcAddress( hModule, “DllGetClassObject” );
pFunc( フィルタのクラスID, IID_IClassFactory, (LPVOID*)&pIClsFac );
pIClsFac−>CreateInstance( NULL, IID_IBaseFilter, (LPVOID*)&pFilter );
pIClsFac−>Release();
また、標準で提供されるフィルタや既存のフィルタを本発明のアプリケーションが作成したグラフに追加する場合は、公開されているフィルタのクラスIDを用いてCoCreateInstanceをコールすることで、IBaseFilterを取得し、グラフに追加する。
IBaseFilter* pFilter = NULL;
::CoCreateInstance( フィルタのクラスID,
NULL,
CLSTX_INPROC_SERVER,
IID_IBaseFilter,
&pFilter );
以上のように、
(1)レジストリ登録機能がないDirectShowフィルタ
(2)レジストリ登録機能がないDirectShowフィルタをロードするアプリケーションを用いることで、他のアプリケーションから容易に使用できないDirectShowフィルタであると同時に通常のDirectShowと同等のデータ処理機能を持つフィルタを実現することができる。
PC上で動作するデータ処理装置として使用することが出来る。
本発明の実施の形態1における、DirectShowフィルタの概要を示した説明図 本発明の実施の形態1における、DirectShowフィルタを用いた動画再生の例を示した説明図 本発明の実施の形態1における、通常のDirectShowフィルタのロードを示した説明図 本発明の実施の形態1における、本発明のDirectShowフィルタのロードを示した説明図 本発明の実施の形態1における、本発明のDirectShowフィルタのロードからグラフに追加するまでの処理を示した説明図
符号の説明
11 インストーラ
12 アンインストーラ
13 アプリケーション
14 COMサーバー
15 レジストリ
16 通常のDirectShowフィルタ
17 本発明のインストーラ
18 本発明のアプリケーション
19 本発明のフィルタ
100 グラフ
101 出力ピンのみを持つDirectShowフィルタ
102 フィルタ101の出力ピン
111 ファイルからデータを読み出すフィルタ
112 フィルタ111の出力ピン
201 入力ピンと出力ピンを持つDirectShowフィルタ
202 フィルタ201の入力ピン
203 フィルタ201の出力ピン
211 データを分離するフィルタ
212 フィルタ211の入力ピン
213 フィルタ211の出力ピン
214 フィルタ211の出力ピン
221 圧縮ビデオデータをデコードするフィルタ
222 フィルタ221の入力ピン
223 フィルタ221の出力ピン
231 圧縮オーディオデータをデコードするフィルタ
232 フィルタ231の入力ピン
233 フィルタ231の出力ピン
301 入力ピンのみを持つDirectShowフィルタ
302 フィルタ301の入力ピン
311 非圧縮ビデオデータを画面上に描画するフィルタ
312 フィルタ311の入力ピン
321 非圧縮オーディオデータをサウンドデバイスに出力するフィルタ
322 フィルタ321の入力ピン

Claims (8)

  1. PC上で動作するデータ処理装置であって、外部インターフェイスとしてDllGetObjectClassのみを有することを特徴とするデータ処理装置。
  2. DirectShowフィルタで規定されるIClassFactoryインターフェイス、IBaseFilterインターフェイスおよび識別IDを有することを特徴とする、請求項1に記載のデータ処理装置。
  3. PC上で動作するデータ処理装置であって、DllGetObjectClassを介してデータ処理装置が有するIClassFactoryインターフェイスを取得し、識別IDと同一の識別IDをもってデータ処理装置のIBaseFilterインターフェイスを取得し、DirectShowフィルタとして使用することを特徴とするデータ処理装置。
  4. 請求項2に記載の第1のデータ処理装置と、請求項3に記載の第2のデータ処理装置を有し、前記第2のデータ処理装置によって、前記第1のデータ処理装置をDirectShowフィルタとして使用することを特徴とするデータ処理装置。
  5. 使用する識別IDを外部に公開しないことを特徴とする、請求項4に記載のデータ処理装置。
  6. PC上で動作するデータ処理方法であって、DLLをロードしてDllGetObjectClassの関数アドレスを取得する関数取得ステップと、DllGetObjectClassを呼び出してIClassFactoryインターフェイスを取得するインターフェイス取得ステップと、IClassFactoryから識別GUIDを用いてIBaseFilterインターフェイスを取得するフィルタ取得ステップとを有することを特徴とするデータ処理方法。
  7. 請求項6に記載のデータ処理方法を含むプログラム。
  8. 請求項7に記載のプログラムを記録した媒体。
JP2006245204A 2006-09-11 2006-09-11 データ処理装置、データ処理方法、プログラムおよび記録媒体 Pending JP2008065736A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006245204A JP2008065736A (ja) 2006-09-11 2006-09-11 データ処理装置、データ処理方法、プログラムおよび記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006245204A JP2008065736A (ja) 2006-09-11 2006-09-11 データ処理装置、データ処理方法、プログラムおよび記録媒体

Publications (1)

Publication Number Publication Date
JP2008065736A true JP2008065736A (ja) 2008-03-21

Family

ID=39288382

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006245204A Pending JP2008065736A (ja) 2006-09-11 2006-09-11 データ処理装置、データ処理方法、プログラムおよび記録媒体

Country Status (1)

Country Link
JP (1) JP2008065736A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014531079A (ja) * 2011-10-11 2014-11-20 クアルコム,インコーポレイテッド モバイルデバイスのための動的コンテンツインストーラ
CN111131785A (zh) * 2019-12-30 2020-05-08 元力(天津)科技有限公司 基于DirectShow的MPEG-4视频传输系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014531079A (ja) * 2011-10-11 2014-11-20 クアルコム,インコーポレイテッド モバイルデバイスのための動的コンテンツインストーラ
US10154300B2 (en) 2011-10-11 2018-12-11 Qualcomm Incorporated Dynamic content installer for mobile devices
CN111131785A (zh) * 2019-12-30 2020-05-08 元力(天津)科技有限公司 基于DirectShow的MPEG-4视频传输系统

Similar Documents

Publication Publication Date Title
US7904580B2 (en) Digital media player exposing operational state data
WO2018099277A1 (zh) 视频直播方法及直播装置、存储介质
US8601470B2 (en) Symbiotic smart peripherals
JP5781497B2 (ja) 拡張可能なメディア形式を持つホスト型アプリケーションプラットフォーム
US8965890B2 (en) Context sensitive media and information
US20140053001A1 (en) Security central processing unit management of a transcoder pipeline
CN101627364A (zh) 用于标识随遵循设备分发的硬件和软件许可证的数据结构
KR20080032100A (ko) 통합 저장 보안 모델
KR20080021072A (ko) 디바이스에 저장된 컨텐트의 재생을 원격으로 제어하는시스템, 방법 및 컴퓨터 판독가능 매체
US7669082B2 (en) Fault tolerant and hang resistant media processing applications
KR101201188B1 (ko) 이미지를 위한 확장 가능한 코덱 아키텍처의 제공
JP2008065736A (ja) データ処理装置、データ処理方法、プログラムおよび記録媒体
US7725920B2 (en) Media foundation media sink
US12072850B2 (en) Virtual file system for dynamically providing media content
US20120054719A1 (en) Apparatus, method and program
JP5149795B2 (ja) ファイルフォーマット変換
US20060271650A1 (en) Framework for establishing application system
AU2003236379A1 (en) Demultiplexer application programming interface
KR20050094729A (ko) 콘텐츠 데이터 처리 장치 및 방법
JP2007179260A (ja) 資産管理装置及び資産管理方法
Rome et al. Multimedia on symbian OS: Inside the convergence device
US11003743B2 (en) Active content playback apparatus and active content creation apparatus
Pawate Developing embedded software using DaVinci & OMAP technology
JP2016075978A (ja) データ記録装置、撮像装置、セキュリティリスク軽減方法、コンピュータプログラム
Newmarch et al. Jack