以下、本発明の一実施形態について図面を参照して詳細に説明する。図1は、本発明の一実施形態によるプロジェクター1の概略ブロック図である。プロジェクター1は、複数のフレームから構成される動画像(MPEGストリーム)を表示する表示装置である。プロジェクター1は、図1に示すように、操作受付部2、入力部3、制御部4、音声出力部5、画像出力部6及び電源部9を備える。
操作受付部2は、ユーザーからの操作を受け付ける。例えば、操作受付部2は、電源のオンオフに関する操作、表示部(例えば、非図示のスクリーン)に表示させるMPEGストリームファイルを指定する操作、MPEGストリームを制御(例えば、再生、巻戻し、早送り、スキップ)する操作を受け付ける。操作受付部2は、ユーザーから受け付けた操作に応じた信号を制御部4に出力する。
入力部3は、制御部4の制御に従って、外部から情報を入力する。例えば、入力部3は、表示部に表示させるMPEGストリームを外部から入力する。入力部3は、外部から入力したMPEGストリームを制御部4に出力する。
制御部4は、プロジェクター1全体を制御する。例えば、制御部4は、操作受付部2からの信号に応じて、MPEGストリームを制御(例えば、再生、巻戻し、早送り、スキップ)し、制御したMPEGストリームの音声情報を音声出力部5に出力し、映像情報を動画出力部5に出力する。
音声出力部5は、制御部4の制御に従って、MPEGストリームの音声を出力する。具体的には、音声出力部5は、MPEGストリームを構成している音声ES(以下、「オーディオPESパケット」という)による音声を出力する。画像出力部6は、制御部4の制御に従って、MPEGストリームの映像を出力する。具体的には、画像出力部6は、MPEGストリームを構成している映像ES(以下、「ビデオPESパケット」という)による映像を出力する。電源部9は、プロジェクター1の各部に電力を供給する。
また、詳細は後述するが、制御部4は、MPEGストリームの通常の再生(以下、「通常再生」という)時(再生中)に、巻戻時(巻戻中)又は早送時(早送中)に表示部に表示させるキーフレーム(特定フレームとも称する)を検出する。より詳細には、制御部4は、MPEGストリームの通常再生時に、MPEGストリームの中から特定フレームのピクチャーヘッダーが存在するPESパケットを検出する。また、制御部4は、検出した特定フレームの先頭アドレスを格納したリストを作成する。また、制御部4は、MPEGストリームの巻戻時又は早送時に、巻戻される位置又は早送りされる位置に対応するリスト上の特定フレームの先頭アドレスを特定し、特定した先頭アドレスに位置する特定フレームを表示部に表示させるように制御する。
図2は、本発明の一実施形態によるプロジェクター1の詳細ブロック図である。プロジェクター1は、図2に示すように、メイン基板10、サブ基板20、スピーカー52、バラスト62、光源部64、ライトバルブ(L/W:光変調素子)66、投射レンズ68を備える。メイン基板10には、フロントエンド(F/E:画像信号入力部)12、CPU14、フレームメモリー16、ドライバーIC18、及び、ドライバーIC19が存在する。サブ基板20には、USBコントローラー22、イーサネットコントローラー24(イーサネットは登録商標である)、CPU26、及び、RAM28が存在する。なお、図2において破線で示した各部は、図1における操作受付部2、入力部3、制御部4、音声出力部5、画像出力部6及び電源部9に相当する。また、図2では音声に関する説明は省略する。
F/E12は、S−Video/PC1・PC2(アナログRGB)/HDMIなどの画像信号入力端子から画像信号を取得する。具体的には、F/E12は、CPU14からの指示(ソース選択)に基づいて画像入力端子(ソース)を選択し、選択された画像入力端子からの画像信号に対し、必要に応じて種々の処理(例えば、A/D変換、色空間変換(YCC→RGB))を施して、CPU14に画像データとして出力する。
CPU14は、F/E12から入力された画像データに対し、フレームメモリー16の領域を利用して、必要に応じて種々の処理(例えば、スケーリング(拡大/縮小)、台形補正))を施して、ドライバーIC19に出力する。
また、CPU14は、操作受付部2からの信号を取得し、必要に応じて、当該信号をサブ基板20のCPU26に出力する。例えば、CPU14は、F/E12経由のMPEGストリームを表示させる投射モードではなく、USB又はイーサネット経由のMPEGストリームを表示させる投射モードとする旨の信号を取得した場合、投射モードを切り替えるともに、当該信号(若しくは当該信号に対応する信号)をCPU26に出力する。また例えば、CPU14は、USB又はイーサネット経由の画像を表示させる投射モードにおいて、MPEGストリームの制御(例えば、再生、巻戻し、早送り、スキップ)に係る信号を取得した場合、当該信号(若しくは当該信号に対応する信号)をCPU26に出力する。
ドライバーIC19は、CPU14から入力される画像データに対し、必要に応じて種々の補正処理(例えば、ガンマ補正、色ムラ補正)を施して、D/A変換をして、L/V66に出力する。
バラスト62は、光源部64に照射光を照射させる。光源部64は、バラスト64の制御によって照射光を照射する。L/V66は、光源部64から照射される照明光を入射し、入射した照明光をドライバーIC19から入力される画像データに基づいて画像光に変調する。投射レンズ68は、L/V66からの画像光を表示部(スクリーン)に、表示画像として結像させる。
CPU26は、CPU14からの信号に応じて、USB又はイーサネット経由のMPEGストリームを表示させる投射モードに切り替える。CUP26は、上記投射モードにおいて、USBコントローラー22又はイーサネットコントローラー24に対し、画像情報(例えば、PESパケット化されたMPEGストリーム)の取得を要求する。CPU26は、USBコントローラー22又はイーサネットコントローラー24から取得した画像情報から画像データを再構成する。CPU26は、再構成した画像データ(JPEG)をデコードして、メイン基板10のCPU14に出力する。
また、CPU26は、CPU14からの信号に応じて、メイン基板10のCPU14に出力する画像データを制御(例えば、再生、巻戻し、早送り、スキップ)する。なお、詳細は後述する。
RAM28は、CPU26が取得した情報又は生成した種々の情報を記憶する。また、RAM28に記憶された情報は、CPU26によって参照される。
USBコントローラー22は、CPU26からの指示に基づいてUSB端子から画像情報を取得し、CPU22に出力する。イーサネットコントローラー24は、CPU26からの指示に基づいてLAN端子から画像情報を取得し、CPU22に出力する。
図3は、図2に示すサブ基板20のCPU26及びRAM28の詳細ブロック図である。図4は、リスト記憶部201に記憶されるリストの構成例である。図5は、リスト記憶部に記憶されるリストを説明するための説明図であって、図5(a)はMPEGストリームの全範囲をカバーするリストの概念図である。なお、図5(b)(c)はMPEGストリームの一部の範囲のみをカバーするリストの概念図であるが、これについては後述する。
CPU26は、図3に示すように、PESパケット先頭アドレス一時記憶部100、ビデオPESパケット先頭アドレス一時記憶部101、MPEGストリーム取得部102、PESパケット分解部104、音声映像分離部106、オーディオ処理部108、表示制御部110、検出部114、及び、リスト作成部116を備える。表示制御部110は、ビデオPESパケット処理部111、及び、ビデオ処理部112を備える。RAM28は、図3に示すように、MPEGストリーム記憶部200、及び、リスト記憶部201を備える。
RAM28のMPEGストリーム記憶部200は、USBコントローラー22又はイーサネットコントローラー24を介して外部から取得されるMPEGストリームファイル(バイナリーファイル)のバイナリーデータを記憶する領域である。
CPU26のPESパケット先頭アドレス一時記憶部100は、MPEGストリームから分解されたPESパケット(ビデオPESパケット及びオーディオPESパケット)の先頭アドレスを一時記憶する領域である。なお、PESパケットの先頭アドレスとは、プロジェクター1において、MPEGストリーム内から当該PESパケットを一意に特定するための識別情報である。
CPU26のビデオPESパケット先頭アドレス一時記憶部101は、ビデオPESパケットの先頭アドレスを一時記憶する領域である。
RAM28のリスト記憶部201は、特定フレーム(特定フレームのピクチャーヘッダーが存在するPESパケット)の先頭アドレスを格納したリストを記憶する領域である。なお、リスト記憶部201に記憶されるリストは、例えば、図4に示すように、インデックスと、インデックスによって識別されるMPEGストリームの再生時刻と、インデックスによって識別される特定フレームの先頭アドレス(即ち、再生時刻毎の特定フレームの先頭アドレス)を格納する。
各インデックスは、MPEGストリームの先頭から順に所定時間間隔毎に設定されたものである。例えば、図4に示すリストの場合、インデックス「1」〜インデックス「N」は、0.5秒毎に設定されている。
各インデックスによって識別される各再生時刻は、各所定時間間隔内の時刻を代表する代表時刻である。例えば、図4に示すリストの場合、上述の如く、所定時間間隔は0.5秒であるため、インデックス「K」によって識別される再生時刻「XK時間XK分XK秒」は、「XK時間XK分XK秒−0.5秒」〜「XK時間XK分XK秒」を代表する時刻である(例えば、インデックス「1」によって識別される再生時刻「0時間00分0.5秒」は、「0時間00分0.0秒」〜「0時間00分0.5秒」を代表する時刻である)。
即ち、所定時間間隔を0.5秒とするとき、再生時刻「XK時間XK分XK秒」は、下記式(1)によって求めることができる。
また、リスト記憶部201に記憶されるリストによって表現できる再生時間(即ち、図4の例では、インデックス「N」によって識別されるXN時間XN分XN秒)は、プロジェクター1において取り扱われる何れのMPEGストリームの長さ(再生時間)よりも長くなるように設定する。つまり、リスト記憶部201は、図5(a)に示すように、MPEGストリームの全範囲(3時間分)をカバーし、MPEGストリームの全体(00時00分00秒〜02時59分59秒)に存在する特定フレームの先頭アドレスを格納できるようなリストを記憶する。
また、リスト記憶部201に記憶されるリストは、夫々のインデックスに対応付けて最大1つの特定フレームの先頭アドレスを格納する。つまり、リスト記憶部201に記憶されるリストは、所定時間間隔毎に、最大1つの特定フレームの先頭アドレスを格納する。例えば、図4に示すリストの場合、上述の如く、所定時間間隔は0.5秒であるため、0.5秒毎に、最大1つの特定フレームの先頭アドレスを格納している。具体的には、図4に示すリストの場合、インデックス「1」〜インデックス「K」の各インデックスには1つの先頭アドレスが格納され、インデックス「K+1」〜インデックス「N」の各インデックスには先頭アドレスが格納されていない。所定時間間隔毎に、最大1つの特定フレームの先頭アドレスを格納するリストを用いることによって、巻戻時又は早送時に、巻戻される位置又は早送りされる位置に対応するリスト上の特定フレームの先頭アドレスを簡便に探し出せるため処理が簡便になる。
なお、図4に示す所定時間間隔「0.5秒」は、例示であって、0.5秒よりも小さくてもよいし大きくてもよい。また、所定時間間隔は、全再生時間に応じた可変値であってもよい。例えば、全再生時間が長い場合には所定時間間隔を広くし、全再生時間が短い場合には所定時間間隔を狭くすれば、リスト全体の容量を抑えることができる。つまり、RAM28の容量に制限があっても、巻戻時及び早送時にMPEGストリームを表示させる際の処理コストを削減することができる。
MPEGストリーム取得部102は、ビデオPESパケット処理部111の制御に従って、USBコントローラー22又はイーサネットコントローラー24を介して、画像情報(PESパケット化されたMPEGストリーム)を取得する。
具体的には、まず、MPEGストリーム取得部102は、ビデオPESパケット処理部111からファイル名を指定したファイルオープンの指示を取得した場合には、指定されたファイル名のMPEGストリームファイル(バイナリーファイル)をオープンする(既にオープンされているときは不要)。
続いて、MPEGストリーム取得部102は、ビデオPESパケット処理部111から通常再生の指示(以下、「通常再生指示」という)を取得した場合には、MPEGストリーム記憶部200に記憶されている通常再生される部分のバイナリーデータをデコードに必要な所定量(例えば、1KB)ずつ読み出す。同様に、MPEGストリーム取得部102は、トリック再生である巻戻しの指示(以下、「巻戻指示」という)を取得した場合には、MPEGストリーム記憶部200に記憶されている巻戻される部分のバイナリーデータをデコードに必要な所定量ずつ読み出し、トリック再生である早送りの指示(以下、「早送指示」という)を取得した場合には、MPEGストリーム記憶部200に記憶されている早送りされる部分のバイナリーデータをデコードに必要な所定量ずつ読み出す。MPEGストリーム取得部102は、読み出したバイナリーデータをPESパケット分解部104に出力する。
なお、MPEGストリーム取得部102は、MPEGストリーム記憶部200に所望のバイナリーデータ(通常再生される部分のバイナリーデータ、巻戻される部分のバイナリーデータ、早送りされる部分のバイナリーデータ)が記憶されていない場合には、USBコントローラー22又はイーサネットコントローラー24を介して所望のバイナリーデータを読み出す。また、MPEGストリーム取得部102は、USBコントローラー22又はイーサネットコントローラー24を介してバイナリーデータを読み出した場合には、読み出したバイナリーデータをMPEGストリーム記憶部200に記憶させる。
PESパケット分解部104は、MPEGストリーム取得部102から取得したバイナリーデータをPESパケット単位に分割する。PESパケット分解部104は、分解して得られたPESパケット(ビデオPESパケット及びオーディオPESパケット)を音声映像分離部106に出力するとともに、分解して得られたPESパケットの先頭アドレスをPESパケット先頭アドレス一時記憶部100に一時記憶させる。
なお、PESパケット分解部104は、巻戻時(巻戻中)及び早送時(早送中)には、分解して得られたPESパケットの先頭アドレスをPESパケット先頭アドレス一時記憶部100に一時記憶させなくてもよい。検出部114は、巻戻時及び早送時には、特定フレームを検出しないため、PESパケット先頭アドレス一時記憶部100に先頭アドレスを一時記憶(退避)させておく必要がないからである。同様に、また、PESパケット分解部104は、巻戻時及び早送時には、オーディオPESパケットを音声映像分離部106に出力しなくてもよい。
音声映像分離部106は、ビデオPESパケットとオーディオPESパケットとを分離する。具体的には、音声映像分離部106は、通常再生時、PESパケット分解部104から取得したPESパケットがビデオPESパケットであるか否かを判断し、ビデオPESパケットであると判断した場合にはビデオPESパケット処理部111に出力し、オーディオPESパケットであると判断した場合にはオーディオ処理部108に出力する。
また、音声映像分離部106は、巻戻時及び早送時、PESパケット分解部104から取得したPESパケットがビデオPESパケットであると判断した場合にはビデオPESパケット処理部111に出力する。なお、音声映像分離部106は、PESパケット分解部104からオーディオPESパケットを取得した場合には、当該オーディオPESパケットをオーディオ処理部108に出力しなくてもよい。
オーディオ処理部108は、音声映像分離部106から取得したオーディオPESパケットに対し、必要に応じて種々のオーディオ処理(例えば、デコード)を施して、メイン基板10のCPU14に音声データとして出力する。
ビデオPESパケット処理部111は、メイン基板4のCPU14を介して操作受付部2から種々の信号(例えば、MPEGストリームのファイル名が指定された信号、MPEGストリームの制御(通常再生、巻戻し、早送り)を指示する信号)を受信する。
ビデオPESパケット処理部111は、MPEGストリーム取得部102によるMPEGストリームの取得を制御する。具体的には、ビデオPESパケット処理部111は、ファイル名が指定された信号を受信した場合、当該ファイル名を指定したファイルオープンの指示をMPEGストリーム取得部102に出力し、MPEGストリーム取得部102によるMPEGストリームファイルのオープンを制御する。
また、ビデオPESパケット処理部111は、MPEGストリームの制御を指示する信号を受信した場合、通常再生指示、巻戻指示、又は、早送指示をMPEGストリーム取得部102に出力し、MPEGストリーム取得部102によるバイナリーデータの読み出しを制御する。
なお、ビデオPESパケット処理部111は、MPEGストリーム取得部102によるMPEGストリームの取得時(バイナリーデータの読出時)に、所望のバイナリーデータがMPEGストリーム記憶部200に常に記憶されているようにすべく、MPEGストリーム取得部102によるMPEGストリームの取得を制御してもよい。
また、ビデオPESパケット処理部111は、他の処理部(例えば、検出部114、PESパケット分解部104、音声映像分離部106)が、通常再生時と巻戻時と早送時とで異なる処理を実行できるように、通常再生を指示する信号を受信した場合には、現在は通常再生時(通常再生中)である旨を他の処理部に通知し、巻戻しを指示する信号を受信した場合には、現在は巻戻時(巻戻中)である旨を他の処理部に通知し、早送りを指示する信号を受信した場合には、現在は早送時(早送中)である旨を他の処理部に通知する。
また、ビデオPESパケット処理部111は、通常再生時、巻戻時、早送時に、音声映像分離部106からビデオPESパケットを取得する。ビデオPESパケットを取得したビデオPESパケット処理部111は、取得したビデオPESパケットをビデオ処理部112に出力する。
また、ビデオPESパケット処理部111は、通常再生時にビデオPESパケットを取得したときは、取得したビデオPESパケットの先頭アドレスをビデオPESパケット先頭アドレス一時記憶部101に記憶させる。具体的には、ビデオPESパケット処理部111は、PESパケット先頭アドレス一時記憶部100を参照し、PESパケット先頭アドレス一時記憶部100に最後に記憶されたビデオPESパケット(即ち、当該ビデオPESパケット)の先頭アドレスを読み出して、ビデオPESパケット先頭アドレス一時記憶部101に記憶させる。
また、ビデオPESパケット処理部111は、巻戻時又は早送時にビデオPESパケットを取得したときは、リスト記憶部201に記憶されたリストに、巻戻される位置又は早送りされる位置に対応する特定フレームの先頭アドレスが格納されているか否かを判断する。なお、巻戻される位置又は早送りされる位置に対応する特定フレームの先頭アドレスは、ファイルシークのターゲットとして用いられる。
なお、巻戻される位置とは、現在の位置と巻戻し速度とから算出されるMPEGストリームの再生時刻である。例えば、再生時刻「1時間20分00秒」の位置を再生中に(即ち、現在の位置「1時間20分00秒」)、再生時間における10秒分を1秒間で巻戻す巻戻し速度の巻戻しを開始した場合(即ち、巻戻し速度「10秒分/秒」)、巻戻しの開始から1秒経過時の巻き戻される位置は1時間19分50秒、巻戻しの開始から6秒経過時の巻き戻される位置は1時間19分00秒である。早送りされる位置についても同様である。なお、巻戻される位置又は早送りされる位置は、例えば、ビデオPESパケット処理部111において算出され、他の処理部(例えば、リスト作成部116)にも供給される。
また、巻戻される位置に対応する特定フレームの先頭アドレスとは、リスト記憶部201に記憶されたリストにおいて、巻戻される位置を含むインデックスに対応する特定フレームの先頭アドレスである。例えば、図4に示すリストがリスト記憶部201に記憶されている場合に、巻戻される位置が0時間00分1.2秒であったときは、巻戻される位置に対応する特定フレームの先頭アドレスは、巻戻される位置である0時間00分1.2秒を含むインデックス「3」に対応する特定フレームの先頭アドレス「A00XXX12」である。早送りされる位置に対応する特定フレームの先頭アドレスについても同様である。
つまり、ある位置(例えば1時間10分00秒)から開始して、ある時間(例えば、30秒間)、巻戻しをした場合には、巻戻し時間中(30秒間)における、巻戻される位置に対応する特定フレームの先頭アドレスは、通常、複数存在する。即ち、リスト記憶部201に記憶されたリストにおいて、各再生時間が、巻戻し時間中(30秒間)に巻戻された区間(1時間10分00から1時間09分30秒迄)内に存在する各インデックスに対応する各特定フレームの夫々の先頭アドレスが、巻戻し時間中(30秒間)における、巻戻される位置に対応する複数の特定フレームの先頭アドレスになる。
ビデオPESパケット処理部111は、リスト記憶部201に記憶されたリストに、巻戻される位置又は早送りされる位置に対応する特定フレームの先頭アドレスが格納されていると判断したときは、ファイルシークのターゲットとして、当該先頭アドレスをビデオ処理部112に出力する。例えば、図4に示すリストがリスト記憶部201に記憶されている場合に、ビデオPESパケット処理部111は、巻戻される位置又は早送りされる位置がインデックス「1」〜インデックス「K」のうちの何れかのインデックス「X1」に対応する再生時刻の範囲内であったときは、巻戻される位置又は早送りされる位置に対応する特定フレームの先頭アドレスが格納されているため、当該インデックス「X1」に対応する特定フレームの先頭アドレスをビデオ処理部112に出力する。
一方、ビデオPESパケット処理部111は、リスト記憶部201に記憶されたリストに、巻戻される位置又は早送りされる位置に対応する特定フレームの先頭アドレスが格納されていないと判断したときは、先頭アドレスが格納されていない旨の通知(以下、非格納通知という)を検出部114に出力する。例えば、図4に示すリストがリスト記憶部201に記憶されている場合に、ビデオPESパケット処理部111は、巻戻される位置又は早送りされる位置がインデックス「K+1」〜インデックス「N」のうちの何れかのインデックス「X2」に対応する再生時刻の範囲内であったときは、巻戻される位置又は早送りされる位置に対応する特定フレームの先頭アドレスが格納されていないため、非格納通知を検出部114に出力する。
検出部114は、通常再生時、ビデオPESパケット処理部111から出力されたビデオPESパケットを監視し、特定フレーム(即ち、特定フレームのピクチャーヘッダーが存在するPESパケット)を検出する。検出部114は、特定フレームを検出した場合、特定フレームを検出した旨の通知(以下、特定フレーム検出通知という)をリスト作成部116に出力する。
また、検出部114は、巻戻時、ビデオPESパケット処理部111から非格納通知を取得したときは、ビデオPESパケット処理部111から出力されたビデオPESパケットから、巻戻される位置に対応する特定フレーム(即ち、特定フレームのピクチャーヘッダーが存在するPESパケット)を、従来の処理の如くシークして捜索する。同様に、検出部114は、早送時、ビデオPESパケット処理部111から非格納通知を取得したときは、ビデオPESパケット処理部111から出力されたビデオPESパケットから、早送りされる位置に対応する特定フレーム、従来の処理の如くシークして捜索する。
検出部114は、巻戻時に、従来の処理の如くシークして特定フレームを捜索したときは、捜索した特定フレームの先頭アドレスをビデオ処理部112及びリスト作成部116に出力する。検出部114は、早送時に、従来の処理の如くシークして特定フレームを捜索したときは、捜索した特定フレームの先頭アドレスをビデオ処理部112に出力する。
リスト作成部116は、通常再生時、検出部114から特定フレーム検出通知を取得したときは、検出部114によって検出された特定フレームの先頭アドレスを格納したリストを作成する。具体的には、検出部114から特定フレーム検出通知を取得したリスト作成部116は、ビデオPESパケット先頭アドレス一時記憶部101に最後に記憶されたビデオPESパケットの先頭アドレス(当該ビデオPESパケットの先頭アドレス)を読み出して、通常再生される位置(時刻)に対応するインデックス(即ち、通常再生される位置を含む再生時刻)に対応付けて、リスト記憶部201内に記憶されたリストに格納する。例えば、検出部114から特定フレーム検出通知を取得したリスト作成部116は、ビデオPESパケット先頭アドレス一時記憶部101に最後に記憶されたビデオPESパケットの先頭アドレスが「AXXXXXX5」、通常再生される位置に対応するインデックスが「K+1」であったときは、リスト記憶部201内に記憶されたリストにインデックス「K+1」に対応付けて先頭アドレス「AXXXXXX5」を格納する。
なお、リスト作成部116は、検出部114から特定フレーム検出通知を取得した場合に、リスト記憶部201内に記憶されたリストに、通常再生される位置に対応するインデックスに対応付けて、既に先頭アドレスが格納されているときは、ビデオPESパケット先頭アドレス一時記憶部101に最後に記憶されたビデオPESパケットの先頭アドレスをリストに格納しなくてもよい。
また、リスト作成部116は、巻戻時に、検出部114から特定フレームの先頭アドレスを取得したときは、当該特定フレームの先頭アドレスをリストに格納する。具体的には、検出部114から特定フレームの先頭アドレスを取得したリスト作成部116は、リスト記憶部201内に記憶されたリストにおいて、巻戻される位置に対応するインデックス(即ち、巻戻される位置を含む再生時刻)に対応付けて、検出部114から取得した特定フレームの先頭アドレスを格納する。
ビデオ処理部112は、再生時、ビデオPESパケット処理部111から出力されたビデオPESパケット(通常再生をさせる部分のバイナリーデータから得られたビデオPESパケット)に対し、必要に応じて種々のビデオ処理(例えば、デコード)を施して、メイン基板10のCPU14に画像データとして出力する。
また、ビデオ処理部112は、巻戻時、ビデオPESパケット処理部111から出力されたビデオPESパケット(巻戻される部分のバイナリーデータから得られたビデオPESパケット)のうち、ビデオPESパケット処理部111から取得した先頭アドレス(リストに記憶された特定フレームの先頭アドレス)によって示されるビデオPESパケット、又は、検出部114から取得した特定フレームの先頭アドレス(捜索された特定フレームの先頭アドレス)によって示されるビデオPESパケットに対し、必要に応じて種々の処理を施して、メイン基板10のCPU14に画像データとして出力する。同様に、検出部114は、早送時、ビデオPESパケット処理部111から出力されたビデオPESパケット(早送りされる部分のバイナリーデータから得られたビデオPESパケット)のうち、ビデオPESパケット処理部111から取得した先頭アドレスによって示されるビデオPESパケット、又は、検出部114から取得した特定フレームの先頭アドレスによって示されるビデオPESパケットに対し、必要に応じて種々の処理を施して、メイン基板10のCPU14に画像データとして出力する。
図6は、プロジェクター1の動作の一例、具体的には、通常再生時及び巻戻時のサブ基板20の動作の一例を示すフローチャートである。なお、図6に示すフローチャートは、あるMPEGストリームファイルのオープン後に、ビデオPESパケット処理部111が、CPU14から通常再生を指示する信号を受信することにより開始する。また、図6に示すフローチャートの開始時において、リスト記憶部201内のリストには、特定フレームの先頭アドレスは何も記憶されていないものとする。
図6において、ビデオPESパケット処理部111は、処理終了であるか否かを判断する(ステップS10)。例えば、ビデオPESパケット処理部111は、MPEGストリームを最後まで再生し終えた場合、再生時、巻戻時又は早送時においてCPU14から処理を中断する旨の指示を受信した場合などに、処理終了であると判断する(ステップS10)。なお、上述の如く、本フローチャートは通常再生を指示する信号を受信し開始するため、少なくとも最初に実行するステップS10において、ビデオPESパケット処理部111は、処理終了でないと判断する(ステップS10:NO)。一方、2回目以降に実行するステップS10において、ビデオPESパケット処理部111は、処理終了であると判断した場合(ステップS10:YES)、本フローフローチャートは終了する。なお、ビデオPESパケット処理部111は、CPU14から処理を中断する旨の指示を受信した場合には、オープンしているMPEGストリームファイルをクローズさせるようにMPEGストリーム取得部102を制御してもよい。
ステップS10(NO)に続いて、ビデオPESパケット処理部111は、巻戻し処理であるか否かを判断する(ステップS12)。ビデオPESパケット処理部111は、CPU14から巻戻しを指示する信号を受信し、その後に他の信号(例えば、通常再生を指示する信号)を受信していない場合に、巻戻し処理であると判断する。なお、上述の如く、本フローチャートは通常再生を指示する信号を受信して開始するため、少なくとも最初に実行するステップS10においては、ビデオPESパケット処理部111は、巻戻し処理でないと判断する(ステップS12:NO)。
ステップS12(NO)に続いて、ビデオPESパケット処理部111は、通常再生指示をMPEGストリーム取得部102に出力する。ビデオPESパケット処理部111から通常再生指示を取得したMPEGストリーム取得部102は、MPEGストリームを取得する(ステップS14)。具体的には、MPEGストリーム取得部102は、USBコントローラー22又はイーサネットコントローラー24を介して、通常再生される部分のバイナリーデータをデコードに必要な所定量ずつ読み出す。MPEGストリーム取得部102は、読み出したバイナリーデータをPESパケット分解部104に出力するとともに、MPEGストリーム記憶部200に記憶させる。なお、2回目以降に実行するステップS14において、MPEGストリーム取得部102は、MPEGストリーム記憶部200に通常再生される部分のバイナリーデータが記憶されている場合には、MPEGストリーム記憶部200からデコードに必要な所定量ずつ読み出す。
ステップS14に続いて、MPEGストリーム取得部102からバイナリーデータを取得したPESパケット分解部104は、当該バイナリーデータをPESパケット単位に分割する(ステップS16)。PESパケット分解部104は、分解して得られたPESパケットを音声映像分離部106に出力するとともに、PESパケットの先頭アドレスをPESパケット先頭アドレス一時記憶部100に一時記憶させる(ステップS18)。
ステップS18に続いて、音声映像分離部106は、PESパケット分解部104から取得したPESパケットがビデオPESパケットであるか否かを判断する(ステップS20)。音声映像分離部106は、PESパケット分解部104から取得したPESパケットがビデオPESパケットであると判断した場合(ステップS20:YES)、当該PESパケット(ビデオPESパケット)をビデオPESパケット処理部111に出力する。一方、音声映像分離部106は、PESパケット分解部104から取得したPESパケットがビデオPESパケットでないと判断した場合(ステップS20:NO)、当該PESパケット(オーディオPESパケット)をオーディオ処理部108に出力する。
ステップS20(YES)に続いて、音声映像分離部106からビデオPESパケットを取得したビデオPESパケット処理部111は、当該ビデオPESパケットをビデオ処理部112に出力するとともに、当該ビデオPESパケットの先頭アドレスをビデオPESパケット先頭アドレス一時記憶部101に記憶させる(ステップS22)。
ステップS22に続いて、検出部114は、ビデオPESパケット処理部111から出力されたビデオPESパケットに特定フレームのピクチャーヘッダーが存在するか否かを判断する(ステップS24)。検出部114は、特定フレームのピクチャーヘッダーが存在すると判断した場合(ステップS24:YES)、特定フレーム検出通知をリスト作成部116に出力する。次いで、検出部114から特定フレーム検出通知を取得したリスト作成部116は、リスト記憶部201内に記憶されたリストにおいて、通常再生される位置に対応するインデックス(再生時刻)に対応付けて、既に先頭アドレスが格納されているか否かを判断する(ステップS26)。リスト作成部116は、未だ先頭アドレスが格納されていないと判断した場合(ステップS26:NO)、ビデオPESパケット先頭アドレス一時記憶部101に最後に記憶されたビデオPESパケットの先頭アドレス(当該ビデオPESパケットの先頭アドレス)を読み出して、通常再生される位置に対応するインデックス(即ち、通常再生される位置を含む再生時刻)に対応付けて、リスト記憶部201内に記憶されたリストに格納する(ステップS28)。
一方、特定フレームのピクチャーヘッダーが存在しないと判断された場合(ステップS24:NO)、ステップS26、S28を飛ばして、ステップS30に進む。また、再生される位置(再生時刻)に対応付けて、既に先頭アドレスが格納されていると判断された場合(ステップS26:YES)、ステップS28を飛ばして、ステップS30に進む。
ステップS24(NO)、ステップS26(YES)又はステップS28に続いて、ビデオ処理部112は、ビデオPESパケット処理部111から出力されたビデオPESパケット(通常再生をさせる部分のバイナリーデータから得られたビデオPESパケット)に対し、必要に応じて種々のビデオ処理(例えば、再構成(JPEG化)、デコード)を施して(ステップS30)、メイン基板10のCPU14に画像データとして出力する。そしてステップS10に戻る。
一方、ステップS20(NO)に続いて、オーディオ処理部108は、音声映像分離部106から取得したオーディオPESパケットに対し、必要に応じて種々のオーディオ処理(例えば、デコード)を施して(ステップS32)、メイン基板10のCPU14に音声データとして出力する。そしてステップS10に戻る。
一方、ビデオPESパケット処理部111は、巻戻し処理であると判断した場合(ステップS12:YES)。ビデオPESパケット処理部111は、巻戻指示をMPEGストリーム取得部102に出力する。ビデオPESパケット処理部111から巻戻指示を取得したMPEGストリーム取得部102は、MPEGストリームを取得する(ステップS44)。具体的には、MPEGストリーム取得部102は、MPEGストリーム記憶部200から巻戻される部分のバイナリーデータをデコードに必要な所定量ずつ読み出す。MPEGストリーム取得部102は、MPEGストリーム記憶部200に巻戻される部分のバイナリーデータが記憶されていない場合には、USBコントローラー22又はイーサネットコントローラー24を介して巻戻される部分のバイナリーデータをデコードに必要な所定量ずつ読み出す。MPEGストリーム取得部102は、読み出したバイナリーデータをPESパケット分解部104に出力する。
ステップS44に続いて、MPEGストリーム取得部102からバイナリーデータを取得したPESパケット分解部104は、当該バイナリーデータをPESパケット単位に分割する(ステップS46)。PESパケット分解部104は、分解して得られたPESパケットを音声映像分離部106に出力する。
ステップS46に続いて、音声映像分離部106は、PESパケット分解部104から取得したPESパケットがビデオPESパケットであるか否かを判断する(ステップS50)。音声映像分離部106は、PESパケット分解部104から取得したPESパケットがビデオPESパケットであると判断した場合(ステップS50:YES)、当該PESパケット(ビデオPESパケット)をビデオPESパケット処理部111に出力する。一方、音声映像分離部106は、PESパケット分解部104から取得したPESパケットがビデオPESパケットでないと判断した場合(ステップS40:NO)、ステップ10に戻る。
ステップS50(YES)に続いて、音声映像分離部106からビデオPESパケットを取得したビデオPESパケット処理部111は、当該ビデオPESパケットをビデオ処理部112に出力するとともに、リスト記憶部201に記憶されたリストに、巻戻される位置に対応する特定フレームの先頭アドレスが格納されているか否かを判断する(ステップS52)。
ビデオPESパケット処理部111は、リスト記憶部201に記憶されたリストに、巻戻される位置に対応する特定フレームの先頭アドレスが格納されていると判断したときは(ステップS52:YES)、ファイルシークさせるターゲットの位置として当該アドレスを取得し(ステップS54)、音声映像分離部106から取得したビデオPESパケット(巻戻させる部分のバイナリーデータから得られたビデオPESパケット)とともにビデオ処理部112に出力する。
ステップS54に続いて、ビデオ処理部112は、ビデオPESパケット処理部111から出力されたビデオPESパケットのうち、ビデオPESパケット処理部111から取得したアドレス(リストに記憶されている特定フレームの先頭アドレス)によって示されるビデオPESパケットに対し、必要に応じて種々の処理を施して(ステップS56)、メイン基板10のCPU14に画像データとして出力する。そしてステップS10に戻る。
つまり、ある巻戻し区間においては、リスト記憶部201において、当該区間内に再生時間が存在する各インデックスが順次特定され、各インデックスに対応する特定フレームの先頭アドレスが順次特定され、特定された各先頭アドレスに位置する特定フレームが順次表示される。
一方、ビデオPESパケット処理部111は、リスト記憶部201に記憶されたリストに、巻戻される位置に対応する特定フレームの先頭アドレスが格納されていないと判断したときは(ステップS52:NO)、非格納通知を検出部114に出力するとともに、音声映像分離部106から取得したビデオPESパケットをビデオ処理部112に出力する。
ステップS52(NO)に続いて、ビデオPESパケット処理部111から非格納通知を取得した検出部114は、ビデオPESパケット処理部111から出力されたビデオPESパケットから巻戻される位置に対応する特定フレームを従来の処理の如くシークして捜索し(ステップS58、S60)、捜索した特定フレームの先頭アドレスを、ビデオ処理部112、及び、リスト作成部116に出力する。
ステップS60に続いて、ビデオ処理部112は、ビデオPESパケット処理部111から出力されたビデオPESパケットのうち、検出部114から取得した特定フレームの先頭アドレス(捜索された特定フレームの先頭アドレス)によって示されるビデオPESパケットに対し、必要に応じて種々の処理を施して(ステップS62)、メイン基板10のCPU14に画像データとして出力する。
つまり、ある巻戻し区間においては、リスト記憶部201において、当該区間内に再生時間が存在する各インデックスが順次特定され、あるインデックスに対応する特定フレームの先頭アドレスが格納されていないときは、従来の処理によって特定フレームが捜索され、表示される。
ステップS62に続いて、検出部114から特定フレームの先頭アドレスを取得したリスト作成部116は、リスト記憶部201内に記憶されたリストにおいて、巻戻される位置に対応するインデックス(再生時刻)に対応付けて、既に先頭アドレスが格納されているか否かを判断する(ステップS64)。リスト作成部116は、未だ先頭アドレスが格納されていないと判断した場合(ステップS64:NO)、巻戻される位置に対応するインデックス(即ち、巻戻される位置を含む再生時刻)に対応付けて、検出部114から取得した特定フレームの先頭アドレスを格納する(ステップS66)。そしてステップS10に戻る。一方、リスト作成部116は、既に先頭アドレスが格納されていると判断した場合(ステップS64:YES)、ステップS66を飛ばして、ステップS10に戻る。
以上、本発明の一実施形態によるプロジェクター1によれば、再生時に特定フレームを検出して、検出した特定フレームの先頭アドレスを格納したリストを作成し、巻戻時又は早送時には、リスト内の特定フレームの先頭アドレスをファイルシークさせるターゲットとするため、特定フレームの先頭アドレスへ直接、ファイルシークすることができる。従って、特定フレームが存在するPESパケットを捜索する処理が不要となるため、巻戻時又は早送時の処理コストを削減し、高速な処理が可能になる。
図7は、本発明の一実施形態によるプロジェクター1の効果を説明するための説明図である。具体的には、図7(a)はプロジェクター1によるファイルシークの様子、図7(b)は比較のために図示した従来のファイルシークの様子を表している。プロジェクター1のファイルシークは、図7(a)に示すように、アドレスAを基点とするシーク1、アドレスCを基点とするシーク2のシーク先は、特定フレームのPESパケットの先頭アドレスB、先頭アドレスDとなるため、図7(b)に示すように従来のファイルシークでは必要であった捜索1’(シーク1’のシーク先であるアドレスB’から先頭アドレスBへの捜索)、捜索2’(シーク2’のシーク先であるアドレスD’から先頭アドレスDへの捜索)が不要になる。従って、巻戻時又は早送時の処理コストを削減し、高速な処理が可能になる。
また、プロジェクター1によれば、巻戻時及び早送時に、ファイルシーク先として用いる特定フレームのアドレスがリスト内に格納されていないときであっても、従来の処理(上述の手順1、2)によって特定フレームを捜索して表示するため、常に、特定フレームを表示させることができる。
また、プロジェクター1によれば、再生時に加え巻戻時にもリストを作成するため、再生時のみにリストを作成する場合に比べ早く、リスト内に格納すべき特定クレームをリスト内に格納することができる。従って、再生時のみにリストを作成する場合に比べ早く、次回以降の巻戻時又は早送時において処理コストを削減できる確率を100%に近づけることができる。
なお、上記実施形態では、巻戻時及び早送時において、巻戻される位置又は早送りされる位置に対応するリスト上の特定フレームの先頭アドレスが特定できない場合(即ち、巻戻される位置又は早送りされる位置に対応する特定フレームの先頭アドレスがリスト上の格納されていない場合)に捜索した特定フレームの先頭アドレスの先頭アドレスは、巻戻時においてのみリストに格納する態様としているが、早送時においてもリスト上に格納するようにしてもよい。
なお、上記実施形態では、リスト記憶部201は、図5(a)に示すように、MPEGストリームの全範囲(3時間分)をカバーし、MPEGストリームの全体(00時00分00秒〜02時59分59秒)に存在する特定フレームの先頭アドレスを格納できるようなリストを記憶する例と説明したが、リスト記憶部201は、図5(b)に示すように、MPEGストリームの一部の範囲(1時間分)のみをカバーし、MPEGストリームの一部の範囲(00時00分00秒〜00時59分59秒)に存在する特定フレームの先頭アドレスのみを格納できるようなリストを記憶してもよい。
リスト記憶部201に記憶するリストが、MPEGストリームの一部の範囲のみに存在する特定フレームの先頭アドレスを格納するものである場合、リスト作成部116は、検出部114によって検出された特定フレームの先頭アドレスが上記一部の範囲に存在しないときは、当該特定フレームの先頭アドレスを含むように上記一部の範囲を変更する。つまり、リスト作成部116は、検出部114によって検出された特定フレームの先頭アドレスに対応するインデックス(再生時刻の範囲)がリスト上に存在しないときは、インデックスを振り直し、当該先頭アドレスを格納する。
例えば、図5(b)に示すように、MPEGストリームの一部の範囲をカバーするインデックス(00時00分00秒〜00時59分59秒)が振られている場合に、検出部114によって検出された特定フレームの先頭アドレスに対応するインデックスが、リスト上(00時00分00秒〜00時59分59秒)に存在しないインデックス(02:20:00)であったときは、リスト作成部116は、図5(c)に示すように、当該インデックス(02:20:00)が中央となるようにカバーする一部の範囲を変更したインデックス(01時50分00秒〜02時49分59秒)を振り直し、当該インデックス(02:20:00)を格納する。
また、リスト記憶部201に記憶するリストが、MPEGストリームの一部の範囲のみに存在する特定フレームの先頭アドレスを格納するものである場合において、現在のリスト(既存リスト)に特定フレームの先頭アドレスに対応するインデックスが存在しないときは、上述の如く、一部の範囲を変更した新たなリスト(新規リスト)を作成するが、図8に示すように、既存リストの一部の範囲と、新規リストの一部の範囲とに重複した部分があるときは(図8(a)(b)の斜線部)、既存リストの重複部分(図8(a)の斜線部)の情報を新規リストの重複部分(図8(b)の斜線部)の情報として、既存リストから新規リストにコピーしてもよい。これにより、新規リスト作成のコスト(処理時間)を削減することができる。
なお、本発明の実施形態によるCPU26の各処理を実行するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、当該記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することにより、CPU26の各処理を行ってもよい。なお、ここでいう「コンピューターシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。また、「コンピューターシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリー等の書き込み可能な不揮発性メモリー、CD−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。
さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。