【文献】
大久保 榮,改訂三版H.264/AVC教科書 第1版 H.264/AVC TEXTBOOK,株式会社インプレスR&D 井芹 昌信,2009年 1月 1日,第1版,p223
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0022】
<本発明と関連する再生装置100'の構成例>
まず、
図2を参照しながら、本発明と関連する再生装置100'の構成例について説明する。
【0023】
本発明と関連する再生装置100'は、メモリ101'と、プッシュソース102'と、Demux103'と、Decode104'と、Video Render105'と、Audio Render106'と、ディスプレイ107'と、スピーカ108'と、を含んで構成している。
【0024】
メモリ101'は、各種情報を記憶するものであり、例えば、Iピクチャテーブル1011'や、MPEGファイル1012'等の情報を格納する。
【0025】
Iピクチャテーブル1011'は、Iピクチャの表示時刻と、Iピクチャのファイル位置と、を対応付けて管理するテーブルである。Iピクチャは、Intra-coded picture(フレーム内符号化画像)のことを示す。
【0026】
MPEGファイル1012'は、MPEG規格の多重化符号を格納したファイルである。
【0027】
プッシュソース102'は、動画ファイルを読み込む機能を行うソースフィルタである。プッシュソース102'は、MPEGファイル1012'から多重化符号を読み取り、その読み取った多重化符号をDemux103'に送信する。
【0028】
Demux103'は、動画ファイルをVideo符号、Audio符号に区分けする機能を行うスプリッタフィルタである。Demux103'は、バッファを含んで構成し、プッシュソース102'から受け付けた多重化符号をバッファに保存する。また、バッファに保存した多重化符号を解析し、1ピクチャ分の33ビットPTSを取得する。また、多重化符号をVideo符号とAudio符号とに分離する。Demux103'は、Video符号とAudio符号、及び33ビットPTSをDecode104'に出力する。
【0029】
Decode104'は、動画ファイルを出力データに変換する機能を行う変換フィルタである。Decode104'は、バッファを含んで構成し、Demux103'から受け付けたVideo符号とAudio符号、及び33ビットPTSをバッファに保存する。また、バッファに保存したVideo符号と、Audio符号と、を復号し、その復号したデータをRender105',106'に出力する。Decode104'は、Video符号を復号した画像データをVideo Render105'に出力し、Audio符号を復号した音声データをAudio Render106'に出力する。また、Decode104'は、Video符号を復号した画像データ(サムネイル画像)と、33ビットPTSと、を対応付けてテーブル1041'で管理する。
【0030】
Video Render105'は、画像データをディスプレイ107'に出力する機能を行うレンダリングフィルタである。Video Render105'は、画像データをディスプレイ107'に出力し、ディスプレイ107'上に画像データを表示する。
【0031】
Audio Render106'は、音声データをスピーカ108'に出力する機能を行うレンダリングフィルタである。Audio Render106'は、音声データをスピーカ108'に出力し、スピーカ108'から音声データを出力する。
【0032】
<本発明と関連する再生装置100'の処理動作>
次に、
図3〜
図5を参照しながら、
図2に示す本発明と関連する再生装置100'の処理動作について説明する。
図3は、プッシュソース102'での処理動作を示し、
図4は、Demux103'での処理動作を示し、
図5は、Decode104'での処理動作を示す。
【0033】
<
図3;プッシュソース102'での処理動作>
まず、
図3を参照しながら、プッシュソース102'での処理動作について説明する。
【0034】
プッシュソース102'は、再生開始時刻の指示を受け付けたか否かを判定し(ステップS'1)、再生開始時刻の指示を受け付けた場合は(ステップS'1/Yes)、Iピクチャテーブル1011'を参照し、再生開始時刻に相当するIピクチャの表示時刻を特定し、該特定したIピクチャの表示時刻に対応するIピクチャのファイル位置を取得する(ステップS'2)。
【0035】
プッシュソース102'は、MPEGファイル1012'を参照し、ステップS'2で取得したIピクチャのファイル位置にシークする(ステップS'3)。
【0036】
プッシュソース102'は、ステップS'3でシークしたファイル位置から多重化符号の読み取りを開始し(ステップS'4)、MPEGファイル1012'から読み取った多重化符号をDemux103'に送信する(ステップS'5)。
【0037】
プッシュソース102'は、停止指示を受け付けたか否かを判定し(ステップS'6)、停止指示を受け付けた場合は(ステップS'6/Yes)、処理を終了する。
【0038】
また、停止指示を受け付けない場合は(ステップS'6/No)、停止指示を受け付けるまで、多重化符号の読み取りを継続する(ステップS'7)。そして、プッシュソース102'は、MPEGファイル1012'から読み取った多重化符号をDemux103'に送信する(ステップS'5)。
【0039】
<
図4;Demux103'での処理動作>
次に、
図4を参照しながら、Demux103'での処理動作について説明する。
【0040】
Demux103'は、プッシュソース102'から多重化符号を受け付けたか否かを判定し(ステップA'1)、多重化符号を受け付けた場合は(ステップA'1/Yes)、多重化符号を解析し、1ピクチャ分の33ビットPTSを取得する(ステップA'2)。
【0041】
多重化符号を受け付けたか否かの判定は、多重化符号がバッファに格納されているか否かを判定するように構築することも可能である。例えば、多重化符号がバッファに格納されている場合は、多重化符号を受け付けたと判定し、バッファに格納されていない場合は、多重化符号を受け付けていないと判定する。
【0042】
次に、Demux103'は、多重化符号から1ピクチャ分のVideo符号を分離し(ステップA'3)、その1ピクチャ分のVideo符号と、33ビットPTSと、をDecode104'に送信する(ステップA'4)。
【0043】
Demux103'は、停止指示を受け付けたか否かを判定し(ステップA'5)、停止指示を受け付けた場合は(ステップA'5/Yes)、処理を終了する。
【0044】
また、Demux103'は、停止指示を受け付けていない場合は(ステップA'5/No)、プッシュソース102'から受け付けた多重化符号を全てDecode104'に送信したか否かを判定する(ステップA'6)。
【0045】
Demux103'は、多重化符号がバッファに格納されており、多重化符号を全て送信していない場合は(ステップA'6/No)、ステップA'2〜ステップA'5の一連の処理を行う。また、多重化符号がバッファに格納されておらず、多重化符号を全て送信した場合は(ステップA'6/Yes)、ステップA'1の処理に戻り、プッシュソース102'から多重化符号を受け付けたか否かの判定を行う(ステップA'1)。
【0046】
<
図5;Decode104'での処理動作>
次に、
図5を参照しながら、Decode104'での処理動作について説明する。
【0047】
Decode104'は、Demux103'からVideo符号と33ビットPTSとを受け付けたか否かを判定し(ステップB'1)、Video符号と33ビットPTSとを受け付けた場合は(ステップB'1/Yes)、Video符号をデコードし、サムネイル画像を生成する(ステップB'2)。
【0048】
次に、Decode104'は、サムネイル画像と、33ビットPTSと、を対応付けてテーブル1041'に記憶する(ステップB'3)。
【0049】
Decode104'は、停止指示を受け付けたか否かを判定し(ステップB'4)、停止指示を受け付けた場合は(ステップB'4/Yes)、処理を終了する。
【0050】
また、Decode104'は、停止指示を受け付けていない場合は(ステップB'4/No)、Demux103'から受け付けたVideo符号を全てサムネイル画像に変換したか否かを判定する(ステップB'5)。
【0051】
Decode104'は、Video符号がバッファに格納されており、Video符号を全てサムネイル画像に変換していない場合は(ステップB'5/No)、ステップB'2〜ステップB'4の一連の処理を行う。また、Video符号がバッファに格納されておらず、Video符号を全てサムネイル画像に変換した場合は(ステップB'5/Yes)、ステップB'1の処理に戻り、Demux103'からVideo符号と33ビットPTSとを受け付けたか否かの判定を行う(ステップB'1)。
【0052】
このように、
図2に示す再生装置100'では、再生開始時刻の指示を受け付けた場合に、プッシュソース102'は、Iピクチャテーブル1011'を参照し、再生開始時刻に相当するIピクチャの表示時刻を特定し、その特定したIピクチャ表示時刻に対応するIピクチャのファイル位置のみを取得する。そして、Iピクチャのファイル位置を基に、MPEGファイル1012'から多重化符号を読み出し、その読み出した多重化符号をDemux103'に送信する。Demux103'は、プッシュソース102'から受け付けた多重化符号を解析し、33ビットPTSを取得する。また、多重化符号をVideo符号、Audio符号に分離する。そして、Demux103'は、Video符号とAudio符号、及び33ビットPTSをDecode104'に送信する。Decode104'は、Demux103'から受け付けたVideo符号を復号し、復号した画像データ(サムネイル画像)と、33ビットPTSと、を対応付けてテーブル1041'に記憶する。また、Decode104'は、復号した画像データ、音声データをRender105',106'に出力し、Render105',106'は、画像データ、音声データをディスプレイ107'、スピーカ108'から出力することにしている。
【0053】
なお、上述した
図2に示す再生装置100'は、MPEGファイル1012'から読み出した多重化符号を解析すると、タイムスタンプ(33ビットPTS)を取得することができる。再生装置100'は、このタイムスタンプ(33ビットPTS)と、サムネイル画像と、を対応付けてテーブル1041'に記憶し、MPEGファイル1012'から読み出した多重化符号の編集操作を行っている。
【0054】
MPEG規格では、
図1(a)に示すように、MPEGファイル1012'から読み出した多重化符号が約26.5時間以下ならば、MPEGファイル1012'の多重化符号を解析して得られるタイムスタンプ(33ビットPTS)から正しい時刻情報を取得することができる。しかし、
図1(b)に示すように、約26.5時間を越えると、タイムスタンプ(33ビットPTS)が桁あふれするため、タイムスタンプ(33ビットPTS)の値が約26.5時間を越えたタイミングでタイムスタンプ(33ビットPTS)の値を0にリセットしている。
【0055】
このため、
図1(c)に示すように、MPEGファイル1012'から読み出した多重化符号が約26.5時間を越えてしまうと、その多重化符号を解析して得られるタイムスタンプ(33ビットPTS)の値からは正しい時刻情報を得ることができない。その結果、MPEGファイル1012'から読み出した多重化符号が約26.5時間を越えてしまうと、タイムスタンプ(33ビットPTS)を用いて多重化符号の編集操作を行うことができないことになる。
【0056】
このようなことから、MPEGファイル1012'から読み出した多重化符号が約26.5時間を越えてしまっても、その多重化符号の正しい時刻情報が得られるような仕組みを構築し、MPEG規格のタイムスタンプ(33ビットPTS)の上限(約26.5時間)を越えた多重化符号の編集操作を行うことができるようにしたいのが現状である。
【0057】
このため、本発明者は、
図6に示すように、プッシュソース102は、Iピクチャテーブル1011で管理しているIピクチャの表示時刻を64ビットに拡張したタイムスタンプ(64ビットPTS)をDecode104まで送信し、MPEGファイル1012から読み出した多重化符号が約26.5時間を越えてしまっても、その多重化符号の正しい時刻情報を、64ビットに拡張したタイムスタンプ(64ビットPTS)から取得することが可能な仕組みを構築した。これにより、MPEGファイル1012から読み出した多重化符号がMPEG規格の上限(約26.5時間)を越えてしまっても、64ビットに拡張したタイムスタンプ(64ビットPTS)を用いて、その多重化符号の編集操作を行うことが可能となる。以下、
図6〜
図9を参照しながら、本実施形態の再生装置100について詳細に説明する。
【0058】
(第1の実施形態)
<本実施形態の再生装置100の構成例>
まず、
図6を参照しながら、本実施形態の再生装置100の構成例について説明する。
【0059】
本実施形態の再生装置100は、メモリ101と、プッシュソース102と、Demux103と、Decode104と、Video Render105と、Audio Render106と、ディスプレイ107と、スピーカ108と、を含んで構成している。
【0060】
メモリ101は、各種情報を記憶するものであり、例えば、Iピクチャテーブル1011や、MPEGファイル1012等の情報を格納する。
【0061】
Iピクチャテーブル1011は、Iピクチャの表示時刻と、Iピクチャのファイル位置と、を対応付けて管理するテーブルである。Iピクチャは、Intra-coded picture(フレーム内符号化画像)のことを示す。
【0062】
MPEGファイル1012は、MPEG規格の多重化符号を格納したファイルである。
【0063】
プッシュソース102は、動画ファイルを読み込む機能を行うソースフィルタである。プッシュソース102は、MPEGファイル1012から多重化符号を読み取り、その読み取った多重化符号と、Iピクチャの64ビットPTSと、をDemux103に送信する。
【0064】
Demux103は、動画ファイルをVideo符号、Audio符号に区分けする機能を行うスプリッタフィルタである。Demux103は、バッファを含んで構成し、プッシュソース102から受け付けた多重化符号と、Iピクチャの64ビットPTSと、をバッファに保存する。また、バッファに保存した多重化符号を解析し、1ピクチャ分の33ビットPTSを取得し、その取得した1ピクチャ分の33ビットPTSと、Iピクチャの64ビットPTSと、を基に1ピクチャ分の64ビットPTSを取得する。また、Demux103は、多重化符号をVideo符号とAudio符号とに分離する。そして、Demux103は、Video符号とAudio符号、及び64ビットPTSをDecode104に出力する。
【0065】
Decode104は、動画ファイルを出力データに変換する機能を行う変換フィルタである。Decode104は、バッファを含んで構成し、Demux103から受け付けたVideo符号とAudio符号、及び64ビットPTSをバッファに保存する。また、バッファに保存したVideo符号と、Audio符号と、を復号し、その復号したデータをRender105,106に出力する。Decode104は、Video符号を復号した画像データをVideo Render105に出力し、Audio符号を復号した音声データをAudio Render106に出力する。また、Decode104は、Video符号を復号した画像データ(サムネイル画像)と、64ビットPTSと、を対応付けてテーブル1041で管理する。
【0066】
Video Render105は、画像データをディスプレイ107に出力する機能を行うレンダリングフィルタである。Video Render105は、画像データをディスプレイ107に出力し、ディスプレイ107上に画像データを表示する。
【0067】
Audio Render106は、音声データをスピーカ108に出力する機能を行うレンダリングフィルタである。Audio Render106は、音声データをスピーカ108に出力し、スピーカ108から音声データを出力する。
【0068】
<本実施形態の再生装置100の処理動作>
次に、
図7〜
図9を参照しながら、
図6に示す再生装置100の処理動作について説明する。
図7は、プッシュソース102での処理動作を示し、
図8は、Demux103での処理動作を示し、
図9は、Decode104での処理動作を示す。
【0069】
<
図7;プッシュソース102での処理動作>
まず、
図7を参照しながら、プッシュソース102での処理動作について説明する。
【0070】
プッシュソース102は、再生開始時刻の指示を受け付けたか否かを判定し(ステップS1)、再生開始時刻の指示を受け付けた場合は(ステップS1/Yes)、Iピクチャテーブル1011を参照し、再生開始時刻に相当するIピクチャの表示時刻を特定する。そして、その特定したIピクチャの表示時刻を取得すると共に、該取得したIピクチャの表示時刻に対応するIピクチャのファイル位置を取得する(ステップS2)。再生開始時刻に相当するIピクチャの表示時刻を特定する方法としては、例えば、再生開始時刻に最も近いIピクチャの表示時刻を特定する方法が挙げられる。
【0071】
次に、プッシュソース102は、ステップS2で取得したIピクチャの表示時刻(IPic Tbl Msec)を基に、Iピクチャの64ビットPTS(IPic Tbl Pts)を算出する(ステップS3)。
【0072】
Iピクチャの64ビットPTS(IPic Tbl Pts)は、以下の式(1)、式(2)を用いて算出することが可能である。まず、ステップS2で取得したIピクチャの表示時刻(IPic Tbl Msec)を、式(1)に代入し、ステップS2で取得したIピクチャのファイル先頭からの時刻(IPic Tbl Time)を求め、その式(1)で求めた値(IPic Tbl Time)を式(2)に代入し、Iピクチャの64ビットPTS(IPic Tbl Pts)を求める。
【0073】
IPic Tbl Time=IPic Tbl Msec-IPic Tbl Start・・・式(1)
IPic Tbl Pts=IPic Tbl Time*(90000/1000)・・・式(2)
【0074】
但し、IPic Tbl Start;Iピクチャテーブルの先頭Iピクチャの時刻(ミリ秒)
IPic Tbl Msec;Iピクチャテーブルから取得したIピクチャの時刻(ミリ秒)
IPic Tbl Time;取得したIピクチャのファイル先頭からの時刻(ミリ秒)
IPic Tbl Pts;取得したIピクチャのファイル先頭からのPTS(64ビットに拡張した値)
【0075】
なお、式(2)の90000は、タイムスタンプの周期(Hz)であり、1秒当たりの値が90000となる。式(2)では、ミリ秒からタイムスタンプの値に換算するため(90000/1000)をIPic Tbl Timeに乗算している。
【0076】
次に、プッシュソース102は、MPEGファイル1012を参照し、ステップS2で取得したIピクチャのファイル位置にシークする(ステップS4)。
【0077】
プッシュソース102は、ステップS4でシークしたファイル位置から多重化符号の読み取りを開始し(ステップS5)、MPEGファイル1012から読み取った多重化符号と、Iピクチャの64ビットPTSと、をDemux103に送信する(ステップS6)。
【0078】
プッシュソース102は、停止指示を受け付けたか否かを判定し(ステップS7)、停止指示を受け付けた場合は(ステップS7/Yes)、処理を終了する。また、停止指示を受け付けていない場合は(ステップS7/No)、1GOP(Group of Picture)分の多重化符号をDemux103に送信したか否かを判定する(ステップS8)。
【0079】
プッシュソース102は、1GOP分の多重化符号をDemux103に送信していない場合は(ステップS8/No)、多重化符号の読み取りを継続する(ステップS11)。そして、MPEGファイル1012から読み取った多重化符号と、Iピクチャの64ビットPTSと、をDemux103に送信する(ステップS6)。
【0080】
プッシュソース102は、1GOP分の多重化符号をDemux103に送信した場合は(ステップS8/Yes)、Iピクチャテーブル1011を参照し、次のIピクチャの表示時刻を取得し(ステップS9)、該取得したIピクチャの表示時刻を基に、Iピクチャの64ビットPTSを算出する(ステップS10)。そして、MPEGファイル1012から読み取った多重化符号と、ステップS10で算出したIピクチャの64ビットPTSと、をDemux103に送信する(ステップS6)。
【0081】
<
図8;Demux103での処理動作>
次に、
図8を参照しながら、Demux103での処理動作について説明する。
【0082】
Demux103は、多重化符号と、Iピクチャの64ビットPTSと、をプッシュソース102から受け付けたか否かを判定し(ステップA1)、多重化符号と、Iピクチャの64ビットPTSと、を受け付けた場合は(ステップA1/Yes)、多重化符号を解析し、1ピクチャ分の33ビットPTSを取得する(ステップA2)。例えば、Demux103は、1回目は、Iピクチャの33ビットPTSを取得し、2回目は、Pピクチャの33ビットPTSを取得し、3回目は、Bピクチャの33ビットPTSを取得する。
【0083】
Pピクチャは、Predictive-coded picture(順方向予測符号化画像)のことを示す。また、Bピクチャは、Bi-directionally predictive-coded picture(双方向予測符号化画像)のことを示す。
【0084】
多重化符号とIピクチャの64ビットPTSとを受け付けたか否かの判定は、多重化符号とIピクチャの64ビットPTSとがバッファに格納されているか否かを判定するように構築することも可能である。例えば、多重化符号とIピクチャの64ビットPTSとがバッファに格納されている場合は、多重化符号とIピクチャの64ビットPTSとを受け付けたと判定し、バッファに格納されていない場合は、多重化符号とIピクチャの64ビットPTSとを受け付けていないと判定する。
【0085】
次に、Demux103は、多重化符号から1ピクチャ分のVideo符号を分離する(ステップA3)。
【0086】
次に、Demux103は、Iピクチャの33ビットPTS(IPic Pts)と、Decode104に送信するピクチャの33ビットPTS(Pic Pts)と、の差分(Diff Pts)を算出する(ステップA4)。GOPの途中から33ビットPTSがリセットしている場合は、差分(Diff Pts)を補正する必要があるため、差分(Diff Pts)は、以下の式(3−1)、式(3−2)を用いて算出する。
【0087】
IPic Ptsが33ビットPTSの最大値の3/4以上であり、且つ、Pic Ptsが33ビットPTSの最大値の1/4以下である条件の場合は、以下の式(3−1)を用いて、差分(Diff Pts)を算出する。但し、3/4は固定値ではなく、十分に大きな値であれば、任意に設定変更可能である。また、1/4も固定値ではなく、十分に小さな値であれば、任意に設定変更可能である。
【0088】
Diff Pts=(Pic Pts+33ビットPTSの最大値)-IPic Pts・・・式(3−1)
【0089】
また、上記条件以外の場合は、以下の式(3−2)を用いて、差分(Diff Pts)を算出する。
【0090】
Diff Pts=Pic Pts-IPic Pts・・・式(3−2)
【0091】
但し、IPic Pts;解析したIピクチャの33ビットPTS
Pic Pts;解析した各ピクチャの33ビットPTS
Diff Pts;差分
【0092】
なお、Decode104に送信する最初のピクチャは、Iピクチャとなるため、差分(Diff Pts)は、0になる。
【0093】
次に、Demux103は、ステップA4で算出した差分(Diff Pts)を、ステップA1で取得したIピクチャの64ビットPTS(IPic Pts64)に加算し、Decode104に送信する1ピクチャ分の64ビットPTS(Pic Pts64)を算出する(ステップA5)。Decode104に送信する1ピクチャ分の64ビットPTS(Pic Pts64)は、以下の式(4)を用いて算出することが可能である。
【0094】
Pic Pts64=IPic Pts64+Diff Pts・・・式(4)
【0095】
但し、IPic Pts64;取得したIピクチャの64ビットPTS
Pic Pts64;解析した各ピクチャの33ビットPTSを64ビットPTSに拡張した値(ファイル先頭からの64ビットPTS)
Diff Pts;差分
【0096】
Demux103は、ステップA3で分離した1ピクチャ分のVideo符号と、ステップA5で算出した64ビットPTSと、をDecode104に送信する(ステップA6)。
【0097】
Demux103は、停止指示を受け付けたか否かを判定し(ステップA7)、停止指示を受け付けた場合は(ステップA7/Yes)、処理を終了する。
【0098】
また、Demux103は、停止指示を受け付けていない場合は(ステップA7/No)、1GOP分の多重化符号をDecode104に送信したか否かを判定する(ステップA8)。
【0099】
Demux103は、1GOP分の多重化符号をDecode104に送信していない場合は(ステップA8/No)、ステップA2〜ステップA7の一連の処理を行う。また、1GOP分の多重化符号をDecode104に送信した場合は(ステップA8/Yes)、ステップA1の処理に戻り、多重化符号と、Iピクチャの64ビットPTSと、をプッシュソース102から受け付けたか否かの判定を行う(ステップA1)。
【0100】
<
図9;Decode104での処理動作>
次に、
図9を参照しながら、Decode104での処理動作について説明する。
【0101】
Decode104は、Video符号と64ビットPTSとをDemux103から受け付けたか否かを判定し(ステップB1)、Video符号と64ビットPTSとを受け付けた場合は(ステップB1/Yes)、Video符号をデコードし、サムネイル画像を生成する(ステップB2)。
【0102】
次に、Decode104は、サムネイル画像と、64ビットPTSと、を対応付けてテーブル1041に記憶する(ステップB3)。
【0103】
Decode104は、停止指示を受け付けたか否かを判定し(ステップB4)、停止指示を受け付けた場合は(ステップB4/Yes)、処理を終了する。
【0104】
また、Decode104は、停止指示を受け付けていない場合は(ステップB4/No)、Demux103から受け付けたVideo符号を全てサムネイル画像に変換したか否かを判定する(ステップB5)。
【0105】
Decode104は、Video符号がバッファに格納されており、Video符号を全てサムネイル画像に変換していない場合は(ステップB5/No)、ステップB2〜ステップB4の一連の処理を行う。また、Video符号がバッファに格納されておらず、Video符号を全てサムネイル画像に変換した場合は(ステップB5/Yes)、ステップB1の処理に戻り、Demux103からVideo符号と64ビットPTSとを受け付けたか否かの判定を行う(ステップB1)。
【0106】
<本実施形態の再生装置100の作用・効果>
このように、本実施形態の再生装置100は、再生開始時刻の指示を受け付けた場合に、プッシュソース102は、Iピクチャテーブル1011を参照し、再生開始時刻に相当するIピクチャの表示時刻を取得すると共に、その取得したIピクチャ表示時刻に対応するIピクチャのファイル位置を取得する。プッシュソース102は、Iピクチャテーブル1011から取得したIピクチャの表示時刻を基に、Iピクチャの64ビットPTSを算出する。次に、プッシュソース102は、Iピクチャのファイル位置を基に、MPEGファイル1012から多重化符号を読み出し、その読み出した多重化符号と、Iピクチャの64ビットPTSと、をDemux103に送信する。Demux103は、プッシュソース102から受け付けた多重化符号を解析し、各ピクチャの33ビットPTSを取得する。また、多重化符号をVideo符号、Audio符号に分離する。そして、Iピクチャの33ビットPTSと、各ピクチャの33ビットPTSと、の差分を算出し、その差分をIピクチャの64ビットPTSに加算し、各ピクチャの64ビットPTSを算出する。そして、Video符号とAudio符号、及びそれぞれの64ビットPTSをDecode104に送信する。Decode104は、Demux103から受け付けたVideo符号を復号し、復号したサムネイル画像と、64ビットPTSと、を対応付けてテーブル1041に記憶する。また、Decode104は、復号した画像データ、音声データをRender105,106に出力し、Render105,106は、画像データ、音声データをディスプレイ107、スピーカ108から出力する。
【0107】
本実施形態の再生装置100では、Decode104は、各ピクチャの符号の時刻情報を、MPEG規格の時刻情報の上限(約26.5時間)を拡張した値(64ビットPTS)でテーブル1041にて管理することになる。このため、MPEGファイル1012から読み出した多重化符号がMPEG規格の時刻情報の上限(約26.5時間)を越えてしまっても、64ビットに拡張したタイムスタンプ(64ビットPTS)を用いることで、その多重化符号の正しい時刻情報を得ることができる。その結果、MPEGファイル1012から読み出した多重化符号がMPEG規格の上限(約26.5時間)を越えてしまっても、64ビットに拡張したタイムスタンプ(64ビットPTS)を用いて、その多重化符号の編集操作を行うことが可能となる。編集操作は、タイムスタンプ(33ビットPTS)を用いて多重化符号の編集操作を行うものであれば、あらゆる編集操作が適用可能であり、例えば、カット編集や、カット編集のプレビュー等が挙げられる。
【0108】
(第2の実施形態)
次に、第2の実施形態について説明する。
【0109】
第1の実施形態では、プッシュソース102は、
図7に示すように、再生開始時刻の指示を受け付けた場合に(ステップS1/Yes)、Iピクチャテーブル1011を参照し、Iピクチャの表示時刻を取得すると共に、該取得したIピクチャの表示時刻に対応するIピクチャのファイル位置を取得する(ステップS2)。そして、ステップS2で取得したIピクチャの表示時刻(IPic Tbl Msec)を基に、Iピクチャの64ビットPTSを算出した(ステップS3)。
【0110】
第2の実施形態では、
図10に示すように、Iピクチャテーブル1013で管理するIピクチャの表示時刻を64ビットPTSに拡張した値(Iピクチャの64ビットPTS)で管理する。そして、プッシュソース102は、
図11に示すように、再生開始時刻の指示を受け付けた場合に(ステップS11/Yes)、Iピクチャテーブル1013を参照し、Iピクチャの表示時刻(Iピクチャの64ビットPTS)を取得すると共に、該取得したIピクチャの表示時刻(Iピクチャの64ビットPTS)に対応するIピクチャのファイル位置を取得する(ステップS12)。これにより、第1の実施形態のように、Iピクチャの64ビットPTSを算出する処理を行うことなく、Iピクチャの64ビットPTSを取得することが可能となる。以下、
図10〜
図11を参照しながら、第2の実施形態の再生装置100について説明する。
【0111】
<再生装置100の構成例>
まず、
図10を参照しながら、本実施形態の再生装置100の構成例について説明する。
【0112】
本実施形態の再生装置100は、Iピクチャテーブル1013のテーブル構成例が第1の実施形態と異なり、他の構成は、第1の実施形態と同様に構成する。
【0113】
本実施形態のIピクチャテーブル1013は、Iピクチャの64ビットPTSと、Iピクチャのファイル位置と、を対応付けて管理している。
【0114】
Iピクチャの64ビットPTSは、Iピクチャの表示時刻を64ビットに拡張した値である。
【0115】
<本実施形態の再生装置100の処理動作>
次に、
図11を参照しながら、
図10に示す再生装置100の処理動作について説明する。
図11は、プッシュソース102での処理動作を示す。なお、Demux103での処理動作と、Decode104での処理動作は、第1の実施形態と同様な処理を行うため、具体的な処理は割愛する。
【0116】
<
図11;プッシュソース102での処理動作>
まず、
図11を参照しながら、プッシュソース102での処理動作について説明する。
【0117】
プッシュソース102は、再生開始時刻の指示を受け付けたか否かを判定し(ステップS11)、再生開始時刻の指示を受け付けた場合は(ステップS11/Yes)、Iピクチャテーブル1013を参照し、再生開始時刻に相当するIピクチャの64ビットPTSを特定する。そして、その特定したIピクチャの64ビットPTSを取得すると共に、該取得したIピクチャの64ビットPTSに対応するIピクチャのファイル位置を取得する(ステップS12)。
【0118】
次に、プッシュソース102は、MPEGファイル1012を参照し、ステップS12で取得したIピクチャのファイル位置にシークする(ステップS13)。
【0119】
プッシュソース102は、ステップS13でシークしたファイル位置から多重化符号の読み取りを開始し(ステップS14)、MPEGファイル1012から読み取った多重化符号と、Iピクチャの64ビットPTSと、をDemux103に送信する(ステップS15)。
【0120】
プッシュソース102は、停止指示を受け付けたか否かを判定し(ステップS16)、停止指示を受け付けた場合は(ステップS16/Yes)、処理を終了する。また、停止指示を受け付けていない場合は(ステップS16/No)、1GOP(Group of Picture)分の多重化符号をDemux103に送信したか否かを判定する(ステップS17)。
【0121】
プッシュソース102は、1GOP分の多重化符号をDemux103に送信していない場合は(ステップS17/No)、多重化符号の読み取りを継続する(ステップS19)。そして、MPEGファイル1012から読み取った多重化符号と、Iピクチャの64ビットPTSと、をDemux103に送信する(ステップS15)。
【0122】
プッシュソース102は、1GOP分の多重化符号をDemux103に送信した場合は(ステップS17/Yes)、Iピクチャテーブル1013を参照し、次のIピクチャの64ビットPTSを取得する(ステップS18)、そして、MPEGファイル1012から読み取った多重化符号と、ステップS18で取得したIピクチャの64ビットPTSと、をDemux103に送信する(ステップS15)。
【0123】
<本実施形態の再生装置100の作用・効果>
このように、本実施形態の再生装置100は、
図10に示すように、Iピクチャテーブル1013で管理するIピクチャの表示時刻を64ビットPTSに拡張した値(Iピクチャ64ビットPTS)で管理する。そして、プッシュソース102は、
図11に示すように、再生開始時刻の指示を受け付けた場合に(ステップS11/Yes)、Iピクチャテーブル1013を参照し、Iピクチャの表示時刻(Iピクチャ64ビットPTS)を取得すると共に、該取得したIピクチャの表示時刻(Iピクチャ64ビットPTS)に対応するIピクチャのファイル位置を取得する(ステップS12)。これにより、第1の実施形態のように、Iピクチャの64ビットPTSを算出する処理を行うことなく、Iピクチャの64ビットPTSを取得することが可能となる。
【0124】
(第3の実施形態)
次に、第3の実施形態について説明する。
【0125】
第1、第2の実施形態では、
図6、
図10に示すように、Iピクチャの情報をIピクチャテーブル1011,1013で管理することにした。
【0126】
第3の実施形態では、
図12に示すように、各ピクチャの情報(Iピクチャの表示時刻、Iピクチャのファイル位置)をピクチャテーブル1014で管理する。これにより、各ピクチャの時刻情報を算出しなくとも、各ピクチャの時刻情報を把握することが可能となる。以下、
図12〜14を参照しながら、第3の実施形態の再生装置100について説明する。
【0127】
<再生装置100の構成例>
まず、
図12を参照しながら、本実施形態の再生装置100の構成例について説明する。
【0128】
本実施形態の再生装置100は、ピクチャテーブル1014のテーブル構成例が第1の実施形態と異なり、他の構成は、第1の実施形態と同様に構成する。
【0129】
本実施形態のピクチャテーブル1014は、各ピクチャの表示時刻と、各ピクチャのファイル位置と、を対応付けて管理している。ピクチャテーブル1014で管理するピクチャとしては、I、P、Bピクチャが挙げられる。
【0130】
<本実施形態の再生装置100の処理動作>
次に、
図13〜
図14を参照しながら、
図12に示す再生装置100の処理動作について説明する。
図13は、プッシュソース102での処理動作を示し、
図14は、Demux103での処理動作を示す。なお、Decode104での処理動作は、第1の実施形態と同様な処理を行うため、具体的な処理は割愛する。
【0131】
<
図13;プッシュソース102での処理動作>
まず、
図13を参照しながら、プッシュソース102での処理動作について説明する。
【0132】
プッシュソース102は、再生開始時刻の指示を受け付けたか否かを判定し(ステップS21)、再生開始時刻の指示を受け付けた場合は(ステップS21/Yes)、ピクチャテーブル1014を参照し、再生開始時刻に相当するピクチャの表示時刻を特定する。そして、その特定したピクチャの表示時刻を取得すると共に、該取得したピクチャの表示時刻に対応するピクチャのファイル位置を取得する(ステップS22)。
【0133】
次に、プッシュソース102は、ステップS22で取得したピクチャの表示時刻(Pic Tbl Msec)を基に、ピクチャの64ビットPTS(Pic Tbl Pts)を算出する(ステップS23)。
【0134】
ピクチャの64ビットPTS(Pic Tbl Pts)は、以下の式(5)、式(6)を用いて算出することが可能である。まず、ステップS22で取得したピクチャの表示時刻(Pic Tbl Msec)を、式(5)に代入し、ステップS22で取得したピクチャのファイル先頭からの時刻(Pic Tbl Time)を求め、その式(5)で求めた値(Pic Tbl Time)を式(6)に代入し、ピクチャの64ビットPTS(Pic Tbl Pts)を求める。
【0135】
Pic Tbl Time=Pic Tbl Msec-Pic Tbl Start・・・式(5)
Pic Tbl Pts=Pic Tbl Time*(90000/1000)・・・式(6)
【0136】
但し、Pic Tbl Start;ピクチャテーブルの先頭ピクチャの時刻(ミリ秒)
Pic Tbl Msec;ピクチャテーブルから取得したピクチャの時刻(ミリ秒)
Pic Tbl Time;取得したピクチャのファイル先頭からの時刻(ミリ秒)
Pic Tbl Pts;取得したピクチャのファイル先頭からのPTS(64ビットに拡張した値)
【0137】
なお、式(6)の90000は、タイムスタンプの周期(Hz)であり、1秒当たりの値が90000となる。式(6)では、ミリ秒からタイムスタンプの値に換算するため(90000/1000)をIPic Tbl Timeに乗算している。
【0138】
次に、プッシュソース102は、MPEGファイル1012を参照し、ステップS22で取得したピクチャのファイル位置にシークする(ステップS24)。
【0139】
プッシュソース102は、ステップS24でシークしたファイル位置から多重化符号の読み取りを開始し(ステップS25)、MPEGファイル1012から読み取った多重化符号と、ピクチャの64ビットPTSと、をDemux103に送信する(ステップS26)。
【0140】
プッシュソース102は、停止指示を受け付けたか否かを判定し(ステップS27)、停止指示を受け付けた場合は(ステップS27/Yes)、処理を終了する。
【0141】
また、停止指示を受け付けていない場合は(ステップS27/No)、ピクチャテーブル1014を参照し、次のピクチャの表示時刻を取得し(ステップS28)、該取得した次のピクチャの表示時刻を基に、次のピクチャの64ビットPTSを算出する(ステップS29)。また、プッシュソース102は、MPEGファイル1012から多重化符号を読み取り(ステップS30)、その読み取った多重化符号と、ステップS29で算出した次のピクチャの64ビットPTSと、をDemux103に送信する(ステップS26)。
【0142】
<
図14;Demux103での処理動作>
次に、
図14を参照しながら、Demux103での処理動作について説明する。
【0143】
Demux103は、多重化符号と、ピクチャの64ビットPTSと、をプッシュソース102から受け付けたか否かを判定し(ステップA11)、多重化符号と、ピクチャの64ビットPTSと、を受け付けた場合は(ステップA11/Yes)、多重化符号からVideo符号を分離する(ステップA12)。
【0144】
次に、Demux103は、ステップA12で分離した1ピクチャ分のVideo符号と、プッシュソース102から受け付けた64ビットPTSと、をDecode104に送信する(ステップA13)。
【0145】
Demux103は、停止指示を受け付けたか否かを判定し(ステップA14)、停止指示を受け付けた場合は(ステップA14/Yes)、処理を終了する。
【0146】
また、Demux103は、停止指示を受け付けていない場合は(ステップA14/No)、ステップA11〜ステップA13の一連の処理を行う。
【0147】
<本実施形態の再生装置100の処理動作>
このように、本実施形態の再生装置100は、再生開始時刻の指示を受け付けた場合に、プッシュソース102は、ピクチャテーブル1014を参照し、再生開始時刻に相当するピクチャの表示時刻を取得すると共に、その取得したピクチャ表示時刻に対応するピクチャのファイル位置を取得する。プッシュソース102は、ピクチャテーブル1014から取得したピクチャの表示時刻を基に、ピクチャの64ビットPTSを算出する。次に、プッシュソース102は、ピクチャのファイル位置を基に、MPEGファイル1012から多重化符号を読み出し、その読み出した多重化符号と、ピクチャの64ビットPTSと、をDemux103に送信する。Demux103は、プッシュソース102から受け付けた多重化符号をVideo符号、Audio符号に分離する。そして、Demux103は、Video符号とAudio符号、及びそれぞれの64ビットPTSをDecode104に送信する。Decode104は、Demux103から受け付けたVideo符号を復号し、復号した画像データ(サムネイル画像)と、64ビットPTSと、を対応付けてテーブル1041に記憶する。これにより、各ピクチャの時刻情報を算出しなくとも、各ピクチャの時刻情報を把握することが可能となる。
【0148】
(第4の実施形態)
次に、第4の実施形態について説明する。
【0149】
第3の実施形態では、プッシュソース102は、
図13に示すように、再生開始時刻の指示を受け付けた場合に(ステップS21/Yes)、ピクチャテーブル1014を参照し、ピクチャの表示時刻を取得すると共に、該取得したピクチャの表示時刻に対応するピクチャのファイル位置を取得する(ステップS22)。そして、ステップS22で取得したピクチャの表示時刻を基に、ピクチャの64ビットPTSを算出した(ステップS23)。
【0150】
第4の実施形態では、
図15に示すように、ピクチャテーブル1015で管理する各ピクチャの表示時刻を64ビットPTSに拡張した値(各ピクチャの64ビットPTS)で管理する。そして、プッシュソース102は、
図16に示すように、再生開始時刻の指示を受け付けた場合に(ステップS31/Yes)、ピクチャテーブル1015を参照し、ピクチャの表示時刻(64ビットPTS)を取得すると共に、該取得したピクチャの表示時刻(64ビットPTS)に対応するピクチャのファイル位置を取得する(ステップS32)。これにより、第3の実施形態のように、各ピクチャの64ビットPTSを算出する処理を行うことなく、各ピクチャの64ビットPTSを取得することが可能となる。以下、
図15〜
図16を参照しながら、第4の実施形態の再生装置100について説明する。
【0151】
<再生装置100の構成例>
まず、
図15を参照しながら、本実施形態の再生装置100の構成例について説明する。
【0152】
本実施形態の再生装置100は、ピクチャテーブル1015のテーブル構成例が第3の実施形態と異なり、他の構成は、第3の実施形態と同様に構成する。
【0153】
本実施形態のピクチャテーブル1015は、各ピクチャの64ビットPTSと、各ピクチャのファイル位置と、を対応付けて管理している。
【0154】
各ピクチャの64ビットPTSは、各ピクチャの表示時刻を64ビットに拡張した値である。ピクチャとしては、I,P,Bピクチャが挙げられる。
【0155】
<本実施形態の再生装置100の処理動作>
次に、
図16を参照しながら、
図15に示す再生装置100の処理動作について説明する。
図16は、プッシュソース102での処理動作を示す。なお、Demux103での処理動作と、Decode104での処理動作は、第3の実施形態と同様な処理を行うため、具体的な処理は割愛する。
【0156】
<
図16;プッシュソース102での処理動作>
まず、
図16を参照しながら、プッシュソース102での処理動作について説明する。
【0157】
プッシュソース102は、再生開始時刻の指示を受け付けたか否かを判定し(ステップS31)、再生開始時刻の指示を受け付けた場合は(ステップS31/Yes)、ピクチャテーブル1015を参照し、再生開始時刻に相当するピクチャの64ビットPTSを特定する。そして、その特定したピクチャの64ビットPTSを取得すると共に、該取得したピクチャの64ビットPTSに対応するピクチャのファイル位置を取得する(ステップS32)。
【0158】
次に、プッシュソース102は、MPEGファイル1012を参照し、ステップS32で取得したピクチャのファイル位置にシークする(ステップS33)。
【0159】
プッシュソース102は、ステップS33でシークしたファイル位置から多重化符号の読み取りを開始し(ステップS34)、MPEGファイル1012から読み出した多重化符号と、ピクチャの64ビットPTSと、をDemux103に送信する(ステップS35)。
【0160】
プッシュソース102は、停止指示を受け付けたか否かを判定し(ステップS36)、停止指示を受け付けた場合は(ステップS36/Yes)、処理を終了する。
【0161】
また、停止指示を受け付けていない場合は(ステップS36/No)、ピクチャテーブル1015を参照し、次のピクチャの64ビットPTSを取得する(ステップS37)、そして、MPEGファイル1012から多重化符号を読み取り(ステップS38)、該読み取った多重化符号と、ステップS37で取得した次のピクチャの64ビットPTSと、をDemux103に送信する(ステップS35)。
【0162】
<本実施形態の再生装置100の作用・効果>
このように、本実施形態の再生装置100は、
図15に示すように、ピクチャテーブル1015で管理する各ピクチャの表示時刻を64ビットPTSに拡張した値(各ピクチャの64ビットPTS)で管理する。そして、プッシュソース102は、
図16に示すように、再生開始時刻の指示を受け付けた場合に(ステップS31/Yes)、ピクチャテーブル1015を参照し、ピクチャの表示時刻(ピクチャの64ビットPTS)を取得すると共に、該取得したピクチャの表示時刻(ピクチャの64ビットPTS)に対応するピクチャのファイル位置を取得する(ステップS32)。これにより、第3の実施形態のように、各ピクチャの64ビットPTSを算出する処理を行うことなく、各ピクチャの64ビットPTSを取得することが可能となる。
【0163】
(第5の実施形態)
次に、第5の実施形態について説明する。
【0164】
上述した第1〜第4の実施形態は、再生開始時刻の指示(再生要求)を受け付けた場合について説明した。しかし、上述した実施形態の技術内容は、編集操作を行う指定ピクチャを受け付けた場合も同様に行うことができる。編集操作としては、カット編集や、カット編集のプレビュー等が挙げられる。以下、編集操作時の実施形態について説明する。
【0165】
<編集操作時の構成>
まず、
図17を参照しながら、編集操作時の構成について説明する。
【0166】
本実施形態の再生装置100は、
図17に示す編集部200を有して構成する。編集部200は、編集操作を行うものであり、Audio符号検索部201と、Audio符号抜取部202と、Video符号検索部203と、Video符号抜取部204と、Video符号再圧縮部205と、再多重化部206と、を含んで構成する。
【0167】
Audio符号検索部201は、編集対象の指定ピクチャを受け付けた場合に、Iピクチャテーブル1011及びMPEGファイル1012を参照し、指定ピクチャのAudio符号のファイル位置を検索する。
【0168】
Audio符号抜取部202は、Audio符号検索部201の検索結果(ファイル位置)を基に、多重化符号からAudio符号を抜き取る。
【0169】
Video符号検索部203は、編集対象の指定ピクチャを受け付けた場合に、Iピクチャテーブル1011及びMPEGファイル1012を参照し、指定ピクチャのVideo符号のファイル位置を検索する。
【0170】
Video符号抜取部204は、Video符号検索部203の検索結果(ファイル位置)を基に、多重化符号からVideo符号を抜き取る。
【0171】
Video符号再圧縮部205は、Video符号抜取部204で抜き取ったVideo符号を再圧縮する。
【0172】
再多重化部206は、Audio符号とVideo符号とを再多重化する。
【0173】
<編集部200の処理動作例>
次に、
図17を参照しながら、編集部200の処理動作例について説明する。
【0174】
Audio符号検索部201は、編集対象の指定ピクチャを受け付けた場合に、Iピクチャテーブル1011及びMPEGファイル1012を参照し、指定ピクチャのAudio符号のファイル位置を検索する。そして、その検索結果(ファイル位置)をAudio符号抜取部202に通知する(ステップS10)。
【0175】
Audio符号抜取部202は、Audio符号検索部201から受け付けた検索結果(ファイル位置)を基に、多重化符号に含まれるAudio符号を抜き取り、その抜き取ったAudio符号を再多重化部206に渡す(ステップS11)。
【0176】
Video符号検索部203は、編集対象の指定ピクチャを受け付けた場合に、Iピクチャテーブル1011及びMPEGファイル1012を参照し、指定ピクチャのVideo符号のファイル位置を検索する。そして、その検索結果(ファイル位置)をVideo符号抜取部204に通知する(ステップS12)
【0177】
Video符号抜取部204は、Video符号検索部203から受け付けた検索結果(ファイル位置)を基に、多重化符号に含まれるVideo符号を抜き取る(ステップS13)。
【0178】
Video符号再圧縮部205は、Video符号抜取部204で抜き取ったVideo符号を再圧縮し、その再圧縮を行ったVideo符号を再多重化部206に渡す(ステップS14)。
【0179】
再多重化部206は、Audio符号抜取部202から渡されたAudio符号と、Video符号再圧縮部205から渡されたVideo符号と、を再多重化する(ステップS15)。これにより、編集部200は、編集対象の指定ピクチャを受け付けた場合に、その指定ピクチャの編集操作を行うことができる。
【0180】
<Video符号検索部203での処理動作>
次に、
図18を参照しながら、Video符号検索部203での処理動作について説明する。
【0181】
Video符号検索部203は、編集対象の指定ピクチャを受け付けた場合に(ステップC1/Yes)、Iピクチャテーブル1011を参照し、編集対象の指定ピクチャの64ビットPTSに近いIピクチャのファイル位置をIピクチャテーブル1011から取得する(ステップC2)。
【0182】
具体的には、Video符号検索部203は、Iピクチャテーブル1011のIピクチャの表示時刻(IPic Tbl Msec)を基に、Iピクチャの64ビットPTS(IPic Tbl Pts)を算出する。
【0183】
Iピクチャの64ビットPTS(IPic Tbl Pts)は、以下の式(A)、式(B)を用いて算出することができる。まず、Iピクチャの表示時刻(IPic Tbl Msec)を、式(A)に代入し、Iピクチャのファイル先頭からの時刻(IPic Tbl Time)を求め、その式(A)で求めた値(IPic Tbl Time)を式(B)に代入し、Iピクチャの64ビットPTS(IPic Tbl Pts)を求める。
【0184】
IPic Tbl Time=IPic Tbl Msec-IPic Tbl Start・・・式(A)
IPic Tbl Pts=IPic Tbl Time*(90000/1000)・・・式(B)
【0185】
但し、IPic Tbl Start;Iピクチャテーブルの先頭Iピクチャの表示時刻(ミリ秒)
IPic Tbl Msec;IピクチャテーブルのIピクチャの表示時刻(ミリ秒)
IPic Tbl Time;Iピクチャのファイル先頭からの時刻(ミリ秒)
IPic Tbl Pts;Iピクチャのファイル先頭からのPTS(64ビットに拡張した値)
【0186】
なお、式(B)の90000は、タイムスタンプの周期(Hz)であり、1秒当たりの値が90000となる。式(B)では、ミリ秒からタイムスタンプの値に換算するため(90000/1000)をIPic Tbl Timeに乗算している。
【0187】
次に、Video符号検索部203は、上記算出したIピクチャの64ビットPTSを基に、指定ピクチャの64ビットPTSに近いIピクチャの64ビットPTSを特定し、その特定したIピクチャの64ビットPTSに対応するIピクチャのファイル位置を特定する。
【0188】
これにより、Video符号検索部203は、編集対象の指定ピクチャを受け付けた場合に(ステップC1/Yes)、Iピクチャテーブル1011を参照し、編集対象の指定ピクチャの64ビットPTSに近いIピクチャのファイル位置をIピクチャテーブル1011から取得することができる(ステップC2)。
【0189】
次に、Video符号検索部203は、MPEGファイル1012を参照し、ステップC1で取得したIピクチャのファイル位置から多重化符号の読み取りを開始する(ステップC3)。
【0190】
Video符号検索部203は、MPEGファイル1012から読み取った多重化符号を順次解析し、各ピクチャの33ビットPTSを取得する(ステップC4)。例えば、Video符号検索部203は、1回目は、多重化符号からIピクチャの33ビットPTSを取得し、2回目は、Pピクチャの33ビットPTSを取得し、3回目は、Bピクチャの33ビットPTSを取得する。
【0191】
次に、Video符号検索部203は、Iピクチャの33ビットPTS(IPic Pts)と、各ピクチャの33ビットPTS(Pic Pts)と、の差分(Diff Pts)を算出する(ステップC5)。GOPの途中から33ビットPTSがリセットしている場合は、差分(Diff Pts)を補正する必要があるため、差分(Diff Pts)は、以下の式(C−1)、式(C−2)を用いて算出する。
【0192】
IPic Ptsが33ビットPTSの最大値の3/4以上であり、且つ、Pic Ptsが33ビットPTSの最大値の1/4以下である条件の場合は、以下の式(C−1)を用いて、差分(Diff Pts)を算出する。但し、3/4は固定値ではなく、十分に大きな値であれば、任意に設定変更可能である。また、1/4も固定値ではなく、十分に小さな値であれば、任意に設定変更可能である。
【0193】
Diff Pts=(Pic Pts+33ビットPTSの最大値)-IPic Pts・・・式(C−1)
【0194】
また、上記条件以外の場合は、以下の式(C−2)を用いて、差分(Diff Pts)を算出する。
【0195】
Diff Pts=Pic Pts-IPic Pts・・・式(C−2)
【0196】
但し、IPic Pts;解析したIピクチャの33ビットPTS
Pic Pts;解析した各ピクチャの33ビットPTS
Diff Pts;差分
【0197】
なお、最初のピクチャは、Iピクチャとなるため、差分(Diff Pts)は、0になる。
【0198】
次に、Video符号検索部203は、ステップC5で算出した差分(Diff Pts)を、ステップC2の処理で特定したIピクチャの64ビットPTS(IPic Pts64)に加算し、各ピクチャの64ビットPTS(Pic Pts64)を算出する(ステップC6)。各ピクチャの64ビットPTS(Pic Pts64)は、以下の式(D)を用いて算出することが可能である。
【0199】
Pic Pts64=IPic Pts64+Diff Pts・・・式(D)
【0200】
但し、IPic Pts64;Iピクチャの64ビットPTS
Pic Pts64;解析した各ピクチャの33ビットPTSを64ビットPTSに拡張した値(ファイル先頭からの64ビットPTS)
Diff Pts;差分
【0201】
これにより、Video符号検索部203は、各ピクチャの33ビットPTSを64ビットPTSに拡張することができる。
【0202】
次に、Video符号検索部203は、各ピクチャの64ビットPTSを基に、編集対象の指定ピクチャの64ビットPTSに近いピクチャを特定し、その特定したピクチャのファイル位置を取得する(ステップC7)。Video符号検索部203は、その取得したファイル位置を検索結果としてVideo符号抜取部204に通知する(ステップC8)。
【0203】
これにより、Video符号抜取部204は、Video符号検索部203から受け付けた検索結果(ファイル位置)を基に、多重化符号に含まれるVideo符号を抜き取り、編集対象の指定ピクチャのファイル位置から編集操作(カット編集等)を行うことができる。
【0204】
なお、上記処理では、Video符号検索部203は、
図17に示すように、Iピクチャテーブル1011のIピクチャの表示時刻(IPic Tbl Msec)を基に、Iピクチャの64ビットPTS(IPic Tbl Pts)を算出し、指定ピクチャの64ビットPTSに近いIピクチャのファイル位置をIピクチャテーブル1011から取得することにした。
【0205】
しかし、Iピクチャテーブル1011で管理するIピクチャの表示時刻を64ビットPTSに拡張した値(Iピクチャの64ビットPTS)で管理することも可能である。これにより、Video符号検索部203は、Iピクチャの64ビットPTS(IPic Tbl Pts)を算出する処理を行うことなく、指定ピクチャの64ビットPTSに近いIピクチャのファイル位置をIピクチャテーブル1011から取得することができる。
【0206】
<Audio符号検索部201での処理動作>
次に、
図19、
図20を参照しながら、Audio符号検索部201での処理動作について説明する。
【0207】
Audio符号検索部201は、編集対象の指定ピクチャを受け付けた場合に(ステップD1/Yes)、Video符号検索部203でのファイル位置の検索が終了したか否かを判定する(ステップD2)。
【0208】
Audio符号検索部201は、Video符号検索部203でのファイル位置の検索が終了した場合に(ステップD2/Yes)、MPEGファイル1012を参照し、Video符号検索部203で検索したファイル位置に近いAudio符号の33ビットPTS(Audio 33Pts)を取得する(ステップD3)。
【0209】
Audio符号検索部201は、Iピクチャテーブル1011を参照し、33ビットPTS(Audio 33Pts)を取得した際に使用したファイル位置に近いIピクチャのファイル位置を特定し、該特定したIピクチャのファイル位置に対応するIピクチャの表示時刻(IPic Tbl Msec)をIピクチャテーブル1011から取得する(ステップD4)。
【0210】
Audio符号検索部201は、Iピクチャの表示時刻(IPic Tbl Msec)を基に、Iピクチャの64ビットPTS(IPic 64Pts)を算出する(ステップD5)。
【0211】
Iピクチャの64ビットPTS(IPic 64Pts)は、以下の式(E)、式(F)を用いて算出することができる。まず、Iピクチャの表示時刻(IPic Tbl Msec)を、式(E)に代入し、Iピクチャのファイル先頭からの時刻(IPic Tbl Time)を求め、その式(E)で求めた値(IPic Tbl Time)を式(F)に代入し、Iピクチャの64ビットPTS(IPic 64Pts)を求める。
【0212】
IPic Tbl Time=IPic Tbl Msec-IPic Tbl Start・・・式(E)
IPic 64Pts=IPic Tbl Time*(90000/1000)+Seq Start Pts・・・式(F)
【0213】
但し、IPic Tbl Start;Iピクチャテーブルの先頭Iピクチャの表示時刻(ミリ秒)
IPic Tbl Msec;IピクチャテーブルのIピクチャの表示時刻(ミリ秒)
IPic Tbl Time;Iピクチャのファイル先頭からの時刻(ミリ秒)
Seq Start Pts;先頭IピクチャのPTS
IPic 64Pts;Iピクチャのファイル先頭からのPTS(64ビットに拡張した値)
【0214】
なお、式(F)の90000は、タイムスタンプの周期(Hz)であり、1秒当たりの値が90000となる。式(F)では、ミリ秒からタイムスタンプの値に換算するため(90000/1000)をIPic Tbl Timeに乗算している。
【0215】
次に、Audio符号検索部201は、上記算出したIピクチャの64ビットPTS(IPic 64Pts)を34ビット目以上と33ビット目以下に分けるため、以下の値を計算する(ステップD6)。
【0216】
Base 33Pts=(IPic 64Pts & 0x1ffffffff);
Add 64Pts=(IPic 64Pts & 0xfffffffe00000000);
【0217】
次に、Audio符号検索部201は、Base 33Pts+α<Audio 33Ptsの条件を満たすか否かを判定する(ステップD7)。なお、αは、以下の式で算出する。
【0218】
α=MAX_STAMP_33BIT - MAX_DIFF
【0219】
但し、MAX_STAMP_33BIT=0x200000000・・・33ビットの上限値+1
MAX_DIFF=(90000 * 60 * 60 * 1)・・・Video符号とAudio符号とのPTS差の許容最大値(1以上の値)
【0220】
Audio符号検索部201は、Base 33Pts+α<Audio 33Ptsの条件を満たす場合は(ステップD7/Yes)、33ビットのリセット前と見なして、以下の式を用いて、桁溢れ分を減らす(ステップD10)。
【0221】
Audio 64Pts=Audio 33Pts + (Add 64Pts - MAX_STAMP_33BIT)
【0222】
33ビットのリセット前と見なして、桁溢れ分を減らす場合の例を
図21に示す。33ビットのリセット前と見なした場合は、
図21に示すように、Audio符号の33ビットPTS(Audio 33Pts)にIピクチャテーブルによる拡張後の64ビットPTS(Add 64Pts)を加算する。そして、その値から33ビットのリセットによる桁溢れ分(MAX_STAMP_33BIT)を減算する。これにより、補正後の64ビットPTS(Audio 64Pts)を得ることができる。
【0223】
次に、Audio符号検索部201は、上記取得した64ビット化したAudioのPTS(Audio 64Pts)と、編集対象の指定ピクチャのVideoの64ビットPTS(Video 64Pts)と、の差分を算出する(ステップD12)。
【0224】
次に、Audio符号検索部201は、上記算出した差分の絶対値が1AAU(Audio Access Unit)のタイムスタンプ未満か否かを判定する(ステップD13)。AAUは、1つ1つ独立でオーディオデータに復号できる最小単位であり、常に一定のサンプル数Snのデータで構成されている。なお、1AAUのタイムスタンプは、公知の算出式で得られるため、具体的な算出式は割愛する。
【0225】
Audio符号検索部201は、上記算出した差分の絶対値が1AAUのタイムスタンプ未満である場合は(ステップD13/Yes)、64ビット化したAudio(Audio 64Pts)のファイル位置を検索結果としてAudio符号抜取部202に通知する(ステップD14)。
【0226】
これにより、Audio符号抜取部202は、Audio符号検索部201から受け付けた検索結果(ファイル位置)を基に、多重化符号に含まれるAudio符号を抜き取り、編集対象の指定ピクチャのファイル位置から編集操作(カット編集等)を行うことができる。
【0227】
なお、ステップD13の判定において、差分の絶対値が1AAUのタイムスタンプ未満でない場合は(ステップD13/No)、Audio符号検索部201は、64ビット化したAudioのPTS(Audio 64Pts)の方が編集対象の指定ピクチャのVideoの64ビットPTS(Video 64Pts)よりも大きいか否かを判定する(ステップD15)。
【0228】
Audio符号検索部201は、64ビット化したAudioのPTS(Audio 64Pts)の方が編集対象の指定ピクチャのVideoの64ビットPTS(Video 64Pts)よりも大きい場合は(ステップD15/Yes)、MPEGファイル1012を参照し、64ビット化したAudio(Audio 64Pts)のファイル位置より前方のファイル位置から多重化符号を読み取り、Audio符号の33ビットPTS(Audio 33Pts)を取得し(ステップD16)、ステップD7の判定に移行し、その取得したAudio符号の33ビットPTS(Audio 33Pts)がBase 33Pts+α<Audio 33Ptsの条件を満たすか否かを判定する(ステップD7)。
【0229】
また、ステップD15の判定において、64ビット化したAudioのPTS(Audio 64Pts)の方が編集対象の指定ピクチャのVideoの64ビットPTS(Video 64Pts)よりも大きくない場合は(ステップD15/No)、MPEGファイル1012を参照し、64ビット化したAudio(Audio 64Pts)のファイル位置より後方のファイル位置から多重化符号を読み取り、Audio符号の33ビットPTS(Audio 33Pts)を取得し(ステップD17)、ステップD7の判定に移行し、その取得したAudio符号の33ビットPTS(Audio 33Pts)がBase 33Pts+α<Audio 33Ptsの条件を満たすか否かを判定する(ステップD7)。
【0230】
Audio符号検索部201は、ステップD7の判定において、Base 33Pts+α<Audio 33Ptsの条件を満たさない場合は(ステップD7/No)、Base 33Pts>Audio 33Pts + αの条件を満たすか否かを判定する(ステップD8)。
【0231】
Audio符号検索部201は、Base 33Pts>Audio 33Pts + αの条件を満たす場合は(ステップD8/Yes)、33ビットのリセット後と見なして、以下の式を用いて、桁溢れ分を増やす(ステップD11)。
【0232】
Audio 64Pts = Audio 33Pts + (Add 64Pts + MAX_STAMP_33BIT)
【0233】
33ビットのリセット後と見なして、桁溢れ分を増やす場合の例を
図22に示す。33ビットのリセット後と見なした場合は、
図22に示すように、Audio符号の33ビットPTS(Audio 33Pts)にIピクチャテーブルによる拡張後の64ビットPTS(Add 64Pts)を加算する。そして、その値から33ビットのリセットによる桁溢れ分(MAX_STAMP_33BIT)を加算する。これにより、補正後の64ビットPTS(Audio 64Pts)を得ることができる。
【0234】
そして、Audio符号検索部201は、上記取得した64ビット化したAudioのPTS(Audio 64Pts)と、編集対象の指定ピクチャのVideoの64ビットPTS(Video 64Pts)と、の差分を算出し(ステップD12)、ステップD13の判定に移行する。
【0235】
また、ステップD8の判定において、Base 33Pts>Audio 33Pts + αの条件を満たさない場合は(ステップD8/No)、以下の式を用いて、34ビット目以上の値を加算する(ステップD9)。
【0236】
Audio 64Pts = Audio 33Pts + Add 64Pts
【0237】
34ビット目以上の値を加算する場合(補正無しの場合)の例を
図23に示す。33ビットのリセット前、リセット後の何れにも該当しない場合は、
図23に示すように、Audio符号の33ビットPTS(Audio 33Pts)にIピクチャテーブルによる拡張後の64ビットPTS(Add 64Pts)を加算する。そして、その値に補正を行わない。これにより、64ビットPTS(Audio 64Pts)を得ることができる。
【0238】
そして、Audio符号検索部201は、上記取得した64ビット化したAudioのPTS(Audio 64Pts)と、編集対象の指定ピクチャのVideoの64ビットPTS(Video 64Pts)と、の差分を算出し(ステップD12)、ステップD13の判定に移行する。
【0239】
なお、上記処理では、Audio符号検索部201は、
図17に示すIピクチャテーブル1011を参照し、Audio 33Ptsを取得した際に使用したファイル位置に近いIピクチャの表示時刻(IPic Tbl Msec)をIピクチャテーブル1011から取得し、その取得したIピクチャの表示時刻(IPic Tbl Msec)を基に、Iピクチャの64ビットPTS(IPic 64Pts)を算出することにした。
【0240】
しかし、Iピクチャテーブル1011で管理するIピクチャの表示時刻を64ビットPTSに拡張した値(IPic 64Pts)で管理することも可能である。これにより、Video符号検索部203は、Iピクチャの64ビットPTS(IPic 64Pts)を算出する処理を行うことなく、Iピクチャの64ビットPTS(IPic 64Pts)をIピクチャテーブル1011から取得することができる。
【0241】
<本実施形態の再生装置100の作用・効果>
このように、本実施形態の再生装置100の編集部200は、MPEG規格の時刻情報の上限(約26.5時間)を越えるピクチャの編集操作を受け付けた場合に(ステップC1/Yes)、Video符号検索部203は、Iピクチャテーブル1011を参照し、編集操作時に受け付けたピクチャの時刻情報に近いIピクチャの符号の時刻情報を特定し、該特定したIピクチャの符号の時刻情報に対応する位置情報を特定する(ステップC2)。そして、Video符号検索部203は、MPEGファイル1012を参照し、上記特定した位置情報の符号を読み出し、該読み出した符号を解析し、各ピクチャの時刻情報を取得する(ステップC3,C4)。そして、Video符号検索部203は、その取得した各ピクチャの時刻情報を基に、編集操作時に受け付けたピクチャの時刻情報に近いピクチャの位置情報を特定する(ステップC5〜C7)。そして、Video符号抜取部204は、Video符号検索部203で特定したピクチャの位置情報を基に、MPEGファイル1012に格納された符号の編集操作を行う。これにより、編集部200は、Video符号の編集操作を行うことができる。
【0242】
また、本実施形態の編集部200は、MPEG規格の時刻情報の上限(約26.5時間)を越えるピクチャの編集操作を受け付けた場合に(ステップD1/Yes)、Audio符号検索部201は、MPEGファイル1012を参照し、Video符号検索部203で特定したピクチャの位置情報に近いAudio符号の時刻情報を取得する(ステップD3)。そして、その取得したAudio符号の時刻情報を、MPEG規格の時刻情報の上限を拡張した値に変換する(ステップD9orD10orD11)。次に、Audio符号検索部201は、上記変換したAudio符号の時刻情報に相当するAudio符号の位置情報をAudio符号抜取部202に通知する(ステップD14)。そして、Audio符号抜取部202は、Audio符号検索部201から通知されたAudio符号の位置情報を基に、MPEGファイル1012に格納されたAudio符号の編集操作を行う。これにより、編集部200は、Video符号だけでなく、Audio符号の編集操作も行うことができる。また、編集部200は、GOP単位の編集操作だけではなく、フレーム単位の編集操作も行うことができる。
【0243】
なお、上述する実施形態は、本発明の好適な実施形態であり、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【0244】
例えば、上述した本実施形態の再生装置100は、
図6に示すように、プッシュソース102と、Demux103と、を有し、MPEGファイル1012から多重化符号を読み出す機能(プッシュソース102での機能)と、その多重化符号を分離する機能(Demux103)と、を区分して構成した。しかし、プッシュソース102の機能と、Demux103の機能と、を1つの機能として統合するように構築することも可能である。
【0245】
また、上述した本実施形態における再生装置100を構成する各装置における制御動作は、ハードウェア、または、ソフトウェア、あるいは、両者の複合構成を用いて実行することも可能である。
【0246】
なお、ソフトウェアを用いて処理を実行する場合には、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれているコンピュータ内のメモリにインストールして実行させることが可能である。あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【0247】
例えば、プログラムは、記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことが可能である。あるいは、プログラムは、リムーバブル記録媒体に、一時的、あるいは、永続的に格納(記録)しておくことが可能である。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することが可能である。なお、リムーバブル記録媒体としては、フロッピー(登録商標)ディスク、CD-ROM(Compact Disc Read Only Memory)、MO(Magneto optical)ディスク、DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどが挙げられる。
【0248】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールすることになる。また、ダウンロードサイトから、コンピュータに無線転送することになる。また、ネットワークを介して、コンピュータに有線で転送することになる。
【0249】
また、本実施形態における再生装置100は、上記実施形態で説明した処理動作に従って時系列的に実行されるのみならず、処理を実行する装置の処理能力、あるいは、必要に応じて並列的にあるいは個別に実行するように構築することも可能である。