(57)【要約】【課題】  復号処理用ハードウエアやプロセスを持つことで復号処理が高速に行える反面、これらにデータを送信する必要があるため、データ送信に要する時間を短くしなければ、動画再生処理全体のスループットを上げることができないという問題があった。【解決手段】  アプリケーションとは別のＨＷまたはプロセスに、各フレームのＪＰＥＧデータを転送してデコード処理を行うような構成で、モーションＪＰＥＧ再生処理を実現する場合において、フレーム転送に先立って量子化テーブルのみを送っておく、あるいは、最初の１フレーム目のみＪＰＥＧヘッダ込みでフレーム転送して、残りのフレームからはヘッダを除くデータのみを転送するような制御方式とする。【選択図】  図１
2007049465.tif 000002
【特許請求の範囲】
【請求項１】
モーションＪＰＥＧ形式の動画圧縮ファイルから１フレーム分のＪＰＥＧデータを切り出す手段と、切り出されたＪＰＥＧフレームデータから量子化テーブルを取り出す手段と、切り出されたＪＰＥＧフレームからＪＰＥＧヘッダを除く圧縮データ部のみを取り出す手段を持つ第１の処理ブロックと、第１の処理ブロックから転送されたＪＰＥＧ圧縮データに対してＪＰＥＧ復号処理を行う第２の処理ブロックにおいて、第１の処理ブロックでは、モーションＪＰＥＧファイルの先頭フレームに格納されている量子化テーブルのみを第２の処理ブロックにあらかじめ転送し、以降は、ＪＰＥＧヘッダを除く圧縮データ部のみを先頭フレームから再帰的に転送するような制御と、第２の処理ブロックでは、第１の処理ブロックから最初に転送された量子化テーブルを使用して、以降受け取ったＪＰＥＧ圧縮データの復号処理を再帰的に実行するような制御により、モーションＪＰＥＧ動画データの復号処理を行うことを特徴とする制御方法。
【請求項２】
モーションＪＰＥＧ形式の動画圧縮ファイルから１フレーム分のＪＰＥＧデータを切り出す手段と、切り出されたＪＰＥＧフレームからＪＰＥＧヘッダを除く圧縮データ部のみを取り出す手段を持つ第１の処理ブロックと、第１の処理ブロックから転送されたＪＰＥＧフレームデータから量子化テーブルを取り出す手段と、第１の処理ブロックから転送されたＪＰＥＧ圧縮データに対してＪＰＥＧ復号処理を行う手段を持つ第２の処理ブロックにおいて、第１の処理ブロックでは、モーションＪＰＥＧファイルから切り出した先頭フレームのＪＰＥＧデータを第２の処理ブロックに転送し、以降のフレームは、ＪＰＥＧヘッダを除く圧縮データ部のみを再帰的に転送するような制御と、第２の処理ブロックでは、第１の処理ブロックから最初に転送された先頭フレームデータから取り出した量子化テーブルを使用して、先頭フレームデータおよび以降受け取ったＪＰＥＧ圧縮データの復号処理を再帰的に実行するような制御により、モーションＪＰＥＧ動画データの復号処理を行うことを特徴とする制御方法。
【請求項３】
第１の処理ブロックおよび第２の処理ブロックはそれぞれ独立したハードウエアブロックであることを特徴とする、請求項１、２記載の制御方法。
【請求項４】
第１の処理ブロックおよび第２の処理ブロックはそれぞれ、同一ＣＰＵ内で実行される独立した制御プロセスであることを特徴とする、請求項１、２記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像再生における制御方法に関するものである。
【背景技術】
【０００２】
従来、モーションＪＰＥＧ方式の動画データは、各フレームがＪＰＥＧフォーマットで符号化圧縮された静止画データの集合体としてファイル化されており、このモーションＪＰＥＧ動画ファイルを再生表示する場合は、ファイルからそれぞれのＪＰＥＧフレームデータを静止画データとして切り出し、ＪＰＥＧ復号化処理を連続的に行うことで実現されている。
【０００３】
一方、ＪＰＥＧ複合処理を高速に行うために復号用のハードウエアを専用に持ち、ＣＰＵにより静止画フレームとして分離されたＪＰＥＧデータを復号器に転送して復号再生を行うような構成も一般化されている。あるいは、ＣＰＵの高機能化にともないマルチプロセスＯＳによる処理の分離が実用化され、切り出したＪＰＥＧフレームデータをＪＰＥＧ復号処理プロセスへ送信するような処理シーケンスも実施されている。
【０００４】
又、従来例としては、例えば特許文献１をあげることが出来る。
【特許文献１】特開平０９−９８４３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、復号処理用ハードウエアやプロセスを持つことで復号処理が高速に行える反面、これらにデータを送信する必要があるため、データ送信に要する時間を短くしなければ、動画再生処理全体のスループットを上げることができないという問題があった。
【課題を解決するための手段】
【０００６】
本発明は、上記のような問題点を解決するためになされたもので、モーションＪＰＥＧデータのうち必要部分のみを復号処理ブロックへ送信するような制御を行うことにより、処理ブロック間のデータ転送量を低減するとともに高速な動画再生を行えるような、モーションＪＰＥＧ動画復号システムを提供するものである。
【０００７】
モーションＪＰＥＧ動画では、ひとつの動画ファイルにおいては、各フレームのＪＰＥＧデータの符号化条件をすべて同一にすることが可能である。この場合、それぞれのフレームのＪＰＥＧヘッダのうち、復号化に必要な情報はすべて共通のデータを使用することができるため、毎回ヘッダデータを送信する必要がない。従って、動画中のそれぞれのフレームからＪＰＥＧヘッダを分離して、符号化データ本体のみを送信する手段を設けることにより高速な動画再生が可能となる。
【発明の効果】
【０００８】
以上説明したように、本発明によれば、モーションＪＰＥＧデータのうち必要部分のみを復号処理ブロックへ送信するような制御を行うことにより、処理ブロック間のデータ転送量を低減するとともに高速な動画再生が行えるという効果を生む。
【発明を実施するための最良の形態】
【０００９】
（第１の実施例）
図１は、本発明第１の実施例による、モーションＪＰＥＧ動画再生装置の概略構成を示すブロック図である。
【００１０】
図において、１０１はＣＰＵ（中央演算処理装置）であり、モーションＪＰＥＧ動画データファイルの読み込みや、フレームデータへの切り出し、後述のＪＰＥＧデコーダーへのデータ転送処理などの制御、あるいはキーボード１０６からの入力に応じてアプリケーションの実行などを行う。このＣＰＵ１０１には、ＲＯＭ１０２、ＲＡＭ１０３、外部メモリコントローラ１０４、ＪＰＥＧデコーダー１０６、キーボード１０９が接続されている。
【００１１】
１０２はＲＯＭ（リードオンリメモリ）であり、アプリケーション処理など本装置の制御を行うためのプログラムコードが格納されている。
【００１２】
１０３はＲＡＭ（ランダムアクセスメモリ)であり、ファイルとして読み込まれたモーションＪＰＥＧデータを一時的に格納する領域、ファイルから切り出されたフレームデータやこのフレームデータから切り出された量子化テーブルなどを一時的に格納する領域、さらにプログラム実行に必要なワークエリア、一時退避領域などを含んでいる。
【００１３】
１０４は外部メモリコントローラであり、外部フラッシュメモリカードなどを装置に挿入して使用するための制御を行うものである。また、１０５は外部フラッシュメモリカードであり、このカード中に動画データをファイルとして格納することができる。外部フラッシュメモリカードとしてはコンパクトフラッシュ（登録商標）カード、ＳＤカードなどが現在実用化されている。
【００１４】
１０６はＪＰＥＧデコーダーであり、ＣＰＵ１０１から転送されたＪＰＥＧデータを復号してＹＵＶデジタルデータとして表示コントローラ１０７へデータ転送する機能を備えている。このＪＰＥＧデコーダー１０６は、ＪＰＥＧ復号処理を行うハードウエアと復号処理などをコントロールするためのマイクロプロセッサおよび制御ファームウエアで構成されている。
【００１５】
１０７は表示コントローラであり、表示器１０８の制御を行う。また、アプリケーション実行において表示されるグラフィックデータをＲＧＢデジタルデータとしてＣＰＵから受け取り、表示器１０８へ出力する機能、また、ＪＰＥＧデコーダー１０６において復号されたＹＵＶデジタルデータを受け取り、ＲＧＢフォーマットへ変換して表示器１０８へ出力する機能なども含んでいる。
【００１６】
１０８は表示器であり、本実施例ではＴＦＴ方式の液晶表示器となっている。
【００１７】
１０９はキーボードであり、オペレータからの操作に応じてアプリケーションの各種処理が実行される。このキーボードには動画再生の開始、停止などの指示ボタンなどが含まれる。
【００１８】
図２に、モーションＪＰＥＧ動画データおよびＪＰＥＧ静止画データのデータ構造を示す。
【００１９】
図において、２０１はモーションＪＰＥＧ動画データのデータ構造を表す図、２０４はＪＰＥＧ静止画データのデータ構造を表す図である。
【００２０】
２０１において、２０２はモーションＪＰＥＧ用のヘッダデータであり、画像サイズやフレーム数、時間などモーションＪＰＥＧを再生する際に参照される各種情報が格納されている。２０３は１フレーム分のＪＰＥＧ静止画データが格納されている領域であり、以降２０３と同様のフレームデータが動画のフレーム数だけ格納されている。
【００２１】
次に２０４において、２０５はＪＰＥＧデータの先頭を示すためのＳＯＩマーカーである。２０６はＪＰＥＧヘッダ情報であり、このヘッダ情報にはフレームヘッダ、スキャンヘッダ、量子化テーブル、ハフマンテーブルなどのデータが含まれている。２０７は量子化テーブルであり、通常輝度成分用と色差成分用の２種類のテーブルを持っている。また、圧縮率の違いによりそれぞれのテーブルを複数セット持っている場合もある。２０８は符号化されたＪＰＥＧ圧縮データ本体である。復号化する場合はこの圧縮データ本体に対して復号処理を行う。２０９はＪＰＥＧデータの末尾を示すためのＥＯＩマーカーである。
【００２２】
以上説明したように、モーションＪＰＥＧ動画データはＪＰＥＧ静止画データの集合体であり、またそれぞれのＪＰＥＧ静止画データにおける画像サイズや圧縮率などの特性のほとんどの項目は、システムで一意に決められたり、モーションＪＰＥＧヘッダに記述されていて情報を得ることができる。しかしながら圧縮率を決めるパラメータのひとつである量子化テーブルは、個々のフレームのＪＰＥＧヘッダに埋め込まれており、復号化する場合にはこのヘッダ中の量子化テーブルを参照して復号処理を行う必要がある。ただし、ひとつの動画データ内ではこれは共通である場合がほとんどである。
【００２３】
次に、図３に、量子化テーブルの例を示す。
【００２４】
図において、３０１は輝度成分における量子化テーブル、３０２は色差成分における量子化テーブルである。このテーブルは８×８画素のブロック単位で周波数分解された８×８マトリクスのデータに対して実行されるための２５６個のデータ群である。
【００２５】
以下、本発明第１の実施例に示すモーションＪＰＥＧ動画再生装置における再生処理の詳細を説明する。
【００２６】
図４は、動画再生動作におけるＣＰＵ１０１の処理の詳細を表わすフローチャートである。
【００２７】
図において、キーボード１０９中の再生ボタンなどにより再生動作が指示された場合には、まずステップＳ４０１において、外部フラッシュメモリカード１０５に格納されているモーションＪＰＥＧ動画ファイルの読み込みを実行する。読み込まれたファイルはいったんＲＡＭ１０３に一時的に保存される。次にステップＳ４０２において、読み込まれたモーションＪＰＥＧデータから先頭のフレームデータを切り出し、さらに切り出したフレームデータからＪＰＥＧヘッダ部を除いたＪＰＥＧ圧縮データのみを切り出す。さらにステップＳ４０３において、Ｓ４０２で分離されたＪＰＥＧヘッダデータより量子化テーブルを切り出す処理を実行する。
【００２８】
ステップＳ４０４では、Ｓ４０３で切り出された量子化テーブルをＪＰＥＧデコーダー１０６へ転送する処理を行い、ステップＳ４０５において、ＪＰＥＧデコーダー１０６からフレームデータの送信要求があるまでウエイトする。ここでデータ転送要求を確認すると、ステップＳ４０６において、フレームデータからＪＰＥＧ圧縮データのみに切り出されたデータをＪＰＥＧデコーダー１０６へ転送する処理を実行する。
【００２９】
ここで、ステップＳ４０７において、読み込んだモーションＪＰＥＧファイル中の最後のフレームかどうかをチェックし、最後のフレームの場合には、ステップＳ４０９においてＪＰＥＧデコーダー１０６に対してフレーム終了通知を行い、処理を終了する。また、ステップＳ４０７において最後のフレームでない場合には、ステップＳ４０８において、次のフレームデータに対してＳ４０２と同様な切り出し処理を行い、ステップＳ４０５へ戻る。以下、フレームが終了するまでＳ４０５以降の処理を繰り返す。
【００３０】
図５は、動画再生動作において、ＪＰＥＧデコーダー１０６中のファームウエアが実行する制御の詳細を表わすフローチャートである。
【００３１】
図において、モーションＪＰＥＧ再生処理が開始されると、まずステップＳ５０１において、ＣＰＵ１０１から量子化テーブルデータが送信されてくるまでウエイトする。ここで、量子化テーブルデータを受信した場合は、ステップＳ５０２において、受信した量子化テーブルデータをデコードパラメータとしてデコーダーハードウエアにセットする処理を行う。
【００３２】
それから、ステップＳ５０３において、ＣＰＵ１０１に対して、ＪＰＥＧフレームデータの要求信号を出し、ステップＳ５０４において、フレームデータの受信処理を実行する。ここで受信するフレームデータは、図４ステップＳ４０２またはＳ４０８で切り出されたデータであり、ＪＰＥＧヘッダを含まない圧縮データのみのデータである。そして、ステップＳ５０５において、受信した圧縮データに対して、ハードウエアデコーダーを使用したＪＰＥＧ復号化処理が実行される。この復号化処理ではＳ５０２でセットされた量子化テーブルが使用される。
【００３３】
復号化されたＪＰＥＧデータはいったんデコーダ１０６内のメモリに一時的に保存され、ステップＳ５０６において、フレーム再生時間になるまでウエイトする。フレーム再生時間は、ＪＰＥＧデコーダー１０６内の内部タイマーによって計時され、フレームレートに応じた時間間隔で通知される。例えば１５ｆｐｓでは約６７ｍｓ間隔、３０ｆｐｓでは約３３ｍｓ間隔となる。
【００３４】
ここで、フレーム再生が通知された場合は、ステップＳ５０７において、Ｓ５０５でメモリに保存されている復号化データを表示コントローラ１０７に出力する処理を実行する。この復号化データはＹＵＶ４：２：２形式のデータである。表示コントローラ１０７はＹＵＶデータをＲＧＢデータに変換して表示器１０８に出力することにより、ＪＰＥＧデータの表示が行われる。それからステップＳ５０８において、ＣＰＵ１０１からフレーム終了通知が行われたかどうかをチェックし、行われた場合には処理を終了する。終了通知が行われていない場合には、再びＳ５０３のフレーム要求信号の出力処理へ戻り、復号処理を繰り返す。
【００３５】
（第２の実施例）
第１の実施例では、ＣＰＵ１０１が先頭のＪＰＥＧフレームデータから量子化テーブルを切り出して、ＪＰＥＧデコーダー１０６に転送するような実施形態であったが、第２の実施例では、量子化テーブルの切り出し処理をＪＰＥＧデコーダー側で行うような実施形態について説明する。
【００３６】
図６は、第２の実施例における動画再生動作での、ＣＰＵ１０１の処理の詳細を表わすフローチャートである。
【００３７】
図において、キーボード１０９中の再生ボタンなどにより再生動作が指示された場合には、まずステップＳ６０１において、外部フラッシュメモリカード１０５に格納されているモーションＪＰＥＧ動画ファイルの読み込みを実行する。読み込まれたファイルはいったんＲＡＭ１０３に一時的に保存される。次にステップＳ６０２において、読み込まれたモーションＪＰＥＧデータから先頭のフレームデータを切り出す処理を行う。切り出されたフレームデータはＪＰＥＧヘッダおよび圧縮データ両方が含まれるフレームデータである。
【００３８】
次にステップＳ６０３において、ＪＰＥＧデコーダー１０６からフレームデータの送信要求があるまでウエイトする。ここでデータ転送要求を確認すると、ステップＳ６０４において、Ｓ６０２で切り出されたヘッダ付きの先頭フレームデータをＪＰＥＧデコーダー１０６へ転送する処理を実行する。ここで、ステップＳ６０５において、読み込んだモーションＪＰＥＧファイル中の最後のフレームかどうかをチェックし、最後のフレームの場合には、ステップＳ６０９においてＪＰＥＧデコーダー１０６に対してフレーム終了通知を行い、処理を終了する。
【００３９】
また、ステップＳ６０５において最後のフレームでない場合には、ステップＳ６０６において、次のフレームデータに対してＳ６０２と同様な切り出し処理を行い、さらに切り出したフレームデータからＪＰＥＧヘッダ部を除いたＪＰＥＧ圧縮データのみを切り出す。それから、ステップＳ６０７において、ＪＰＥＧデコーダー１０６からフレームデータの送信要求があるまでウエイトする。ここでデータ転送要求を確認すると、ステップＳ６０８において、フレームデータからＪＰＥＧ圧縮データのみに切り出されたデータをＪＰＥＧデコーダー１０６へ転送する処理を実行する。それから、Ｓ６０５のフレームデータ終了判断処理へ戻る。以下、フレームが終了するまでＳ６０５以降の処理を繰り返す。
【００４０】
図７は、第２の実施例における動画再生動作での、ＪＰＥＧデコーダー１０６中のファームウエアが実行する制御の詳細を表わすフローチャートである。
【００４１】
図において、モーションＪＰＥＧ再生処理が開始されると、まずステップＳ７０１において、ＣＰＵ１０１に対して、ＪＰＥＧフレームデータの要求信号を出し、次にステップＳ７０２において、先頭フレームデータの受信処理を実行する。ここで受信するフレームデータは、図６ステップＳ６０２で切り出された、ＪＰＥＧヘッダを含んだデータである。次に、ステップＳ７０３において、受信したＪＰＥＧデータから、ヘッダに含まれている量子化テーブルデータを切り出す処理を実行する。それから、ステップＳ７０４において、切り出した量子化テーブルデータをデコードパラメータとしてデコーダーハードウエアにセットする処理を行う。
【００４２】
次にステップＳ７０５において、受信したＪＰＥＧデータに対して、ハードウエアデコーダーを使用したＪＰＥＧ復号化処理が実行される。この復号化処理ではＳ７０４でセットされた量子化テーブルが使用される。
【００４３】
復号化されたＪＰＥＧデータはいったんデコーダ１０６内のメモリに一時的に保存され、ステップＳ７０６において、フレーム再生時間になるまでウエイトする。フレーム再生時間の検出は、図５ステップＳ５０６で説明したのと同様の処理によって行われる。
【００４４】
ここで、フレーム再生が通知された場合は、ステップＳ７０７において、Ｓ７０５でメモリに保存されている復号化データを表示コントローラ１０７に出力する処理を実行する。表示コントローラ１０７はＹＵＶデータをＲＧＢデータに変換して表示器１０８に出力することにより、ＪＰＥＧデータの表示が行われる。それからステップＳ７０８において、ＣＰＵ１０１からフレーム終了通知が行われたかどうかをチェックし、行われた場合には処理を終了する。
【００４５】
終了通知が行われていない場合には、ステップＳ７０９において、フレーム要求信号の出力処理を実行し、ステップＳ７１０において、ＣＰＵ１０１からのフレームデータの受信処理を実行する。ここで受信するフレームデータは、図６ステップＳ６０６で切り出された、ＪＰＥＧヘッダを含まないデータである。それからＳ７０５のＪＰＥＧ復号化処理へ戻り、以下、復号処理を繰り返す。
【００４６】
（第３の実施例）
第１、第２の実施例では、モーションＪＰＥＧファイルの読み込みやフレーム切り出し処理はＣＰＵ１０１によるソフトウエアで、ＪＰＥＧ復号化処理は別の専用ハードウエアで行うような実施形態であったが、本発明はこれに限定されるものではない。第３の実施例では、同一のＣＰＵ内の、異なるプロセスでこれらの処理を分担するような実施形態について説明する。
【００４７】
一般的に、異なるプロセスでは仮想メモリによる異なるメモリ空間で処理が実行されており、メモリ内のデータを共有することができない。従って、プロセス間でデータの受け渡しを行う場合には、決められたプロセス間通信の手段を利用することになる。例えばＵＮＩＸ（登録商標）オペレーティングシステムでは、通信インターフェースとしてソケットやパイプといった手段がある。当然ながら受け渡しのデータ量が大きい場合にはそれだけ処理の速度の低下を招くことになる。
【００４８】
図８は、第３の実施例におけるプロセス処理の概念図である。
【００４９】
図において、８０１は「フレーム切り出しプロセス」であり、主にモーションＪＰＥＧファイルのハンドリングを行うプロセスであり、８０２は「ＪＰＥＧ復号プロセス」であり、ＪＰＥＧ復号処理を主に行うプロセスである。また、８０３は２つのプロセス間でのデータの受け渡しを表わしている。
【００５０】
８０１では、モーションＪＰＥＧファイルの読み出し、および読み出したファイルから各フレームデータを切り出す処理、また、切り出された１フレーム目のデータから量子化テーブルデータを切り出す処理、量子化テーブルデータをプロセス８０２へ転送する処理、以下の各フレームデータからＪＰＥＧヘッダを除いたＪＰＥＧ圧縮データのみをプロセス８０２へ転送する処理などを行う。
【００５１】
また８０２では、プロセス８０１から転送された量子化テーブルをＪＰＥＧ復号パラメータとして設定する処理、同じく転送された各フレームのＪＰＥＧ圧縮データを復号する処理、復号されたフレームデータを表示する処理などが行われる。
【図面の簡単な説明】
【００５２】
【図１】本発明の第１の実施例による、動画再生装置の概略構成を示すブロック図。
【図２】本発明の第１の実施例による、モーションＪＰＥＧ動画データおよびＪＰＥＧ静止画データのデータ構造を表わす図。
【図３】本発明の第１の実施例による、量子化テーブルを表わす図。
【図４】本発明の第１の実施例による、ＣＰＵが実行する動画再生動作の詳細を表わすフローチャート。
【図５】本発明の第１の実施例による、ＪＰＥＧデコーダー中のファームウエアが実行する処理の詳細を表わすフローチャート。
【図６】本発明の第２の実施例による、ＣＰＵが実行する動画再生動作の詳細を表わすフローチャート。
【図７】本発明の第２の実施例による、ＪＰＥＧデコーダー中のファームウエアが実行する処理の詳細を表わすフローチャート。
【図８】本発明の第３の実施例による、プロセス処理の概念図。
【符号の説明】
【００５３】
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  外部メモリコントローラ
１０５  外部フラッシュメモリカード
１０６  ＪＰＥＧデコーダー
１０７  表示コントローラ
１０８  表示器
１０９  キーボード
【図１】
2007049465.tif 000003
【図２】
2007049465.tif 000004
【図３】
2007049465.tif 000005
【図４】
2007049465.tif 000006
【図５】
2007049465.tif 000007
【図６】
2007049465.tif 000008
【図７】
2007049465.tif 000009
【図８】
2007049465.tif 000010