以下、実施の形態について、図面を参照しながら具体的に説明する。
以下で説明する実施の形態は、いずれも本発明の好ましい一具体例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、本発明の最上位概念を示す独立請求項に記載されていない構成要素については、より好ましい形態を構成する任意の構成要素として説明される。
なお、同一の構成要素には同一の符号を付し、説明を省略する場合がある。
(実施の形態1)
本実施の形態において、ネットワークを介して受信したコンテンツを再生する場合に、再生されるコンテンツ中のフレームの欠落又は重複の発生を抑制することができる再生制御装置等について説明する。なお、以下において、本実施の形態における再生制御装置の動作と、従来の関連技術における再生制御装置の動作を対比しながら説明する。
図1は、本実施の形態に係る再生制御システム1の構成を示すブロック図である。
図1に示されるように、再生制御システム1は、再生制御装置10と、再生装置20と、送信装置30とを備える。また、再生制御装置10と再生装置20とは、信号線40により接続されている。また、送信装置30と再生制御装置10とはネットワーク50により通信可能に接続されている。
送信装置30は、再生装置20により再生するためのコンテンツをネットワーク50を通じて再生制御装置10に送信する送信装置である。コンテンツは、複数のフレームを含んで構成される。送信装置30は、コンテンツを構成するフレームのそれぞれに、当該フレームを再生すべきタイミングを示すカウンタ値を付加し、当該カウンタ値を付加したフレームを再生制御装置10に送信する。
具体的には、送信装置30は、一定の時間ごとにカウンタ値を加算するタイマを備えている。送信装置30は、コンテンツを構成する複数のフレームを生成し、生成したフレームのそれぞれに、生成したタイミングを示すカウンタ値を付加する。このカウンタ値は、再生装置20において再生すべきタイミングに相当する。
なお、一定の時間とは、例えば(1/90000)秒(周波数として表現すれば90kHz)である。なお、ハードウェア的な個体差により、上記時間に厳密には一致しない場合もある。また、コンテンツのフレームレートは、例えば、30fpsである。よって、連続したフレームのそれぞれには、約3000おきのカウンタ値が付加される。以下の説明では、これらの数値を用いる場合を説明するが、これらの数値に限定されず、他の数値であっても同様の説明が成り立つ。
再生制御装置10は、コンテンツの再生を制御する再生制御装置である。再生制御装置10は、送信装置30からネットワーク50を通じてコンテンツを受信することでコンテンツを取得する。また、再生制御装置10は、取得したコンテンツを構成する各フレームに付加されたカウンタ値に基づいて、再生装置20によりコンテンツを再生するための信号を信号線40を通じて再生装置20に出力する。信号線40は、例えば、HDMI(登録商標)(High−Definition Multimedia Interface)規格に従う通信線である。
再生装置20は、コンテンツを表示画面上に表示することで再生する再生装置である。再生装置20は、再生制御装置10からコンテンツを再生するための信号を信号線40を通じて受信し、受信した信号にしたがってコンテンツを再生する。
なお、再生制御装置10が、さらに、再生装置20の機能を備えるものであってもよい。反対に、再生装置20が、さらに、再生制御装置10の機能を備えるものであってもよい。
図2は、本実施の形態に係る再生制御装置10のハードウェア構成を示すブロック図である。
図2に示されるように、再生制御装置10は、CPU101(Central Processing Unit)と、メインメモリ102と、ストレージ103と、NIF104(Network Interface)と、再生処理部105とを備える。
CPU101は、ストレージ等に記憶された制御プログラムを実行するプロセッサである。
メインメモリ102は、CPU101が制御プログラムを実行するときに使用するワークエリアとして用いられる揮発性の記憶領域である。
ストレージ103は、制御プログラム、及び、コンテンツなどを保持する不揮発性の記憶領域である。
NIF104は、ネットワークを介して他の装置にデータを送信する、又は、他の装置からデータを受信するネットワークインタフェースである。
再生処理部105は、NIF104を通じてコンテンツを受信し、受信したコンテンツを再生するための信号を再生装置20に送信する処理部である。再生処理部105の動作について、後で詳細に説明する。
図3は、本実施の形態に係る再生処理部105の詳細な構成を示すブロック図である。
図3に示されるように、再生処理部105は、制御部301と、同期信号生成部302と、信号出力部303と、タイマ304と、バッファ305と、出力用メモリ306とを有する。
同期信号生成部302は、再生装置20に出力するための垂直同期信号を生成する。同期信号生成部302は、所定の周期(例えば、60Hz)のクロック信号をもとに垂直同期信号を生成する。クロック信号の周期は、その源となる数MHz程度の元クロック信号を分周することで刻まれる。分周比は、制御部301により制御可能であり、分周比の増減により、垂直同期信号の周期が増減される。垂直同期信号の周期の増減の幅は、再生装置20が垂直同期信号として許容する範囲に含まれる必要がある。増減の幅は、例えば、設定値に対して±0.5%とすることができる。
信号出力部303は、垂直同期信号、及び、画像を示す信号(以下、画像信号ともいう)を再生装置20に出力する処理部である。信号出力部303は、同期信号生成部302が生成した、垂直同期信号を再生装置20に出力する。また、信号出力部303は、出力用メモリ306に格納されているフレームを読み取り、当該フレームを示す画像信号を生成し、生成した画像信号を当該垂直同期信号に同期させて再生装置20に出力する。なお、フレームを示す画像信号を出力することを、単に「フレームを出力する」とも表現する。
タイマ304は、再生処理部105内の各機能の処理タイミングを示すカウンタ値を管理する処理部である。タイマ304は、所定の時間ごとにカウンタ値を1加算(インクリメント)することで更新する。所定の時間とは、例えば(1/90000)秒(周波数として表現すれば90kHz)である。上記所定の時間は、その源となる数MHz程度の元クロック信号を分周することで刻まれる。分周比は、制御部301により制御可能であり、分周比の増減により、カウンタ値が加算される時間間隔が増減される。その結果、更新の周期が、例えば、89.5kHz又は90.5kHzのように変動する。
また、タイマ304のカウンタ値は、制御部301により設定される(上書きされる)ことも可能である。
なお、ハードウェア的な個体差により、上記時間はハードウェアごとに異なる時間となる場合もある。なお、タイマ304が管理するカウント値のことを現在カウント値ということもある。また、カウント値が加算されることを、「カウント値が進む」と表現し、カウント値が加算される周期を「加算周期」と表現することもある。
バッファ305は、NIF104を通じてコンテンツを構成するフレームを受信し、受信したフレームを一時的に格納する記憶装置である。バッファ305は、複数のフレームを格納することができる容量を有する。例えば、バッファ305は、4つのフレームを格納することができる。バッファ305に格納されたフレームは、適切なタイミングで制御部301により出力用メモリ306に格納される。バッファ305は、リングバッファ又はキューなどのデータ構造により実現される。
出力用メモリ306は、コンテンツに含まれる複数のフレームのうちの出力用のフレームを、順次、一時的に格納する記憶装置である。出力用メモリ306は、1つのフレームを格納することができる容量を有する。出力用メモリ306には、制御部301によりフレームが格納される。出力用メモリ306に格納されたフレームは、適切なタイミングで信号出力部303により読み取られる。
制御部301は、再生処理部105内の各機能を制御する処理部である。具体的には、制御部301は、現在カウンタ値に基づいて、バッファ305内に格納された各フレームを適切なタイミングで出力用メモリ306に格納する。
また、制御部301は、送信装置30が保有するカウンタ値と現在カウンタ値との差分を算出し、算出した差分に基づいてタイマ304の分周比を増減させることで、送信装置30のカウンタ値より適切な量の遅れを維持しながら現在カウンタ値が進むように制御する。また、制御部301は、上記制御の際に上記差分が比較的大きい場合には、タイマ304のカウンタ値に適切な値を設定することも可能である。
また、制御部301は、信号出力部303が出力した画像信号に対応するフレームの再生カウンタ値と、信号出力部303が画像信号を出力した時の現在カウンタ値との差分値を算出し、算出した差分値に基づいて、複数のフレームのうち当該フレームより後の後続フレームについて算出される差分値が所定の適正範囲に入るように、垂直同期信号の周期を増減させる制御を行う。これにより、制御部301は、1フレーム分の再生カウンタ値の変化幅に相当する時間に垂直同期信号の周期を近付けるように、垂直同期信号の周期を増減させる制御を同期信号生成部302に対して行う。詳細は後で説明する。
以降においてフローチャートを用いて、各機能ブロックの動作をさらに詳しく説明する。
図4は、本実施の形態に係る再生処理部105のフレーム取得時の処理を示すフロー図である。
ステップS101において、NIF104がネットワークを介して送信装置30から、コンテンツを構成するフレームを受信することで取得する。取得したフレームには、このフレームを再生すべきタイミングを示すカウンタ値である再生カウンタ値が付加されている。
ステップS102において、ステップS101で受信されたフレームがバッファ305に格納される。なお、ステップS101で送信されたフレームが符号化(エンコード)されていた場合には、当該フレームは、復号(デコード)された上でバッファ305に格納される。
ステップS103において、制御部301は、タイマ304から現在カウンタ値を取得する。
ステップS104において、制御部301は、ステップS103で取得した現在カウンタ値が、ステップS101で受信したフレーム内の再生カウンタ値から定まる適正遅延範囲内であるか、当該範囲の下限より小さいか、又は、当該範囲の上限より大きいかを判定する。ここで、適正遅延範囲とは、再生カウンタ値から、再生カウンタ値から所定値だけ減少させたカウンタ値までの範囲のことである。適正遅延範囲は、現在カウンタ値を、送信装置30のカウンタ値から適切な遅れを維持しながら進むようにするためのものである。具体的には、例えば、適正遅延範囲は、再生カウンタ値から2000を減じたカウンタ値から、再生カウンタ値から500を減じたカウンタ値までの範囲とする。
ステップS104にて、現在カウンタ値が適正遅延範囲内であると判定された場合には、図4に示される一連の処理を終了する。現在カウンタ値が適正遅延範囲の下限より小さい場合にはステップS111に進む。現在カウンタ値が適正遅延範囲の上限より大きい場合にはステップS121に進む。
ステップS111において、制御部301は、タイマ304のカウンタ値の加算周期を短くする、つまり、カウンタ値が速く進むようにする。具体的には、制御部301は、タイマ304の分周比を小さくすることでカウンタ値の加算周期を短くする。なお、現在カウンタ値が適正遅延範囲の下限より小さく、それらの差が比較的大きい場合には、現在カウンタ値に適正遅延範囲内の値を設定することで、現在カウンタ値を適正遅延範囲内に収めるようにしてもよい。
ステップS121において、制御部301は、タイマ304のカウンタ値の加算周期を長くする、つまり、カウンタ値がゆっくり進むようにする。具体的には、制御部301は、タイマ304の分周比を大きくすることでカウンタ値の加算周期を長くする。なお、現在カウンタ値が適正遅延範囲の上限より大きく、それらの差が比較的大きい場合には、現在カウンタ値に適正遅延範囲内の値を設定することで、現在カウンタ値を適正遅延範囲内に収めるようにしてもよい。
図4の示される一連の処理により、コンテンツを構成するフレームがバッファ305に格納され、また、再生処理部105が管理する現在カウンタ値を、送信装置30におけるカウンタ値から差分カウンタ値の分だけ遅れて進むものとすることができる。なお、図4に示される処理のうちステップS103以降の処理は、パケットを受信したすべてのときに行われなくてもよく、複数のパケットを受信するごとに行ってもよいし、所定時間おきのパケット受信時に行ってもよい。
図5は、本実施の形態に係る出力用メモリへのフレーム格納処理を示すフロー図である。
図5に示される処理は、バッファ305が保有しているフレームのそれぞれについて行われ、また、繰り返し行われる。なお、以下の説明において、バッファ305が保有しているフレームのうち、処理の対象となるフレームのことを対象フレームという。
ステップS201において、制御部301は、タイマ304から現在カウンタ値を取得する。
ステップS202において、制御部301は、対象フレームの再生カウンタ値を取得する。
ステップS203において、制御部301は、ステップS203で取得した現在カウンタ値が、対象フレームの再生カウンタ値から定まるメモリ格納許可範囲内であるか、当該範囲の下限より小さいか、又は、当該範囲の上限より大きいかを判定する。ここで、メモリ格納許可範囲とは、再生カウンタ値を上限とする所定のカウンタ値の幅のことである。例えば、所定のカウンタ値の幅は、2000である。この場合、フレームの再生カウンタ値が3000であれば、1000から3000までのカウンタ値の範囲がメモリ格納許可範囲である。
ステップS203にて、現在カウンタ値がメモリ格納許可範囲内であると判定された場合には、ステップS204に進む。現在カウンタ値がメモリ格納許可範囲の下限より小さい場合には、図5に示される一連の処理を終了し、フレームを出力するタイミングを待つ。現在カウンタ値がメモリ格納許可範囲の上限より大きい場合にはステップS221に進む。
ステップS204において、制御部301は、対象フレームを出力用メモリ306に格納する。出力用メモリ306に格納された対象フレームは、その後の処理により再生装置20に出力される。
ステップS205において、制御部301は、1フレームに相当するカウンタ値の増加幅の分だけカウンタ値が進む時間に垂直同期信号の周期を近付けるように、垂直同期信号の周期を増減させる制御を同期信号生成部302に対して行う。詳細は後で説明する。
ステップS221において、制御部301は、対象フレームを破棄する。現在カウンタ値がメモリ格納許可範囲の上限より大きい場合には、対象フレームを再生すべきタイミングがすでに過ぎており、当該対象フレームは、今後再生されることがないからである。
図5に示される一連の処理により、バッファ305に格納されたフレームが適切なタイミングで出力用メモリ306に格納され、また、同期信号生成部302が生成する垂直同期信号の周期を適切なものとすることができる。
図6は、本実施の形態に係る再生装置への信号の出力処理を示すフロー図である。
なお、ステップS301からステップS303の処理は、繰り返し実行される。
ステップS301において、信号出力部303は、同期信号生成部302が生成する垂直同期信号を検出すべく、同期信号生成部302が生成する信号を監視する。
ステップS301で信号出力部303が垂直同期信号を検出した場合(ステップS301でYes)、ステップS302へ進む。一方、垂直同期信号を検出しない場合(ステップS301でNo)、再びステップS301を実行する。つまり、信号出力部303は、垂直同期信号を検出するまでステップS301で待機する。
ステップS302において、信号出力部303は、同期信号生成部302が生成した垂直同期信号を再生装置20へ出力する。
ステップS303において、信号出力部303は、出力用メモリ306に保持されているフレームを示す画像信号を生成し、生成した画像信号を再生装置20へ出力する。このとき、信号出力部303は、ステップS302で出力した垂直同期信号に同期させて、画像信号を出力する。
図6に示される一連の処理により、垂直同期信号とともに、出力用メモリ306に保持されているフレームを当該垂直同期信号に同期させて再生装置20へ出力することができる。出力用メモリ306には、図5に示される処理により順次フレームが格納されるので、図6に示される処理により、順次、格納されたフレームが再生装置20へ出力され、その結果、再生装置20により動画が再生される。
図7は、本実施の形態に係る垂直同期信号の周期を増減させる処理を示すフロー図である。図7に示される処理は、図5におけるステップS205の処理を詳細に示すものである。
ステップS401において、制御部301は、対象フレーム内の再生カウンタ値と、信号出力部303が対象フレームを示す画像信号を出力した時の現在カウンタ値との差である差分カウンタ値を算出する。具体的には、差分カウンタ値は、(式1)により算出される。
差分カウンタ値=再生カウンタ値−画像信号出力時の現在カウンタ値 (式1)
また、制御部301は、上記の差分カウンタ値の算出を、複数の対象フレームについて行うことで、複数の差分カウンタ値を算出する。制御部301は、例えば、対象フレーム、及び、対象フレームの前の3つのフレームを含む4つのフレーム(過去4フレームともいう)分の差分カウンタ値を算出する。
ステップS402において、制御部301は、ステップS401で算出した過去4フレーム分の差分カウンタ値の平均値を算出する。なお、平均値を算出する代わりに、適当な統計処理、例えば、中央値又は最頻値をとる処理を行ってもよい。なお、ステップS402は必須ではなく、過去4フレームのうちの任意の1つのフレームの差分カウンタ値を用いて以下の処理を行うことも可能である。なお、以下の処理において、差分カウンタ値、又は、差分カウンタ値の平均値のことを「差分値」ともいう。
ステップS403において、制御部301は、ステップS402で算出した平均値が所定の適正範囲内にあるか、当該範囲の下限より小さいか、又は、当該範囲の上限より大きいかを判定する。ここで、適正範囲とは、対象フレームが出力用メモリ306に格納されるタイミングと、当該対象フレームが信号出力部303により出力されるタイミングとの差を適正するための範囲であり、例えば、0から800までの範囲とする。
ステップS403にて、平均値が適正範囲内であると判定された場合には、図7に示される一連の処理を終了する。平均値が適正範囲の下限より小さい場合にはステップS411に進む。平均値が適正範囲の上限より大きい場合にはステップS421に進む。
ステップS411において、制御部301は、同期信号生成部302の分周比を制御することで、垂直同期信号の周期を減少させる。なお、ステップS411は、平均値が負である場合に相当する。
ステップS421において、制御部301は、同期信号生成部302の分周比を制御することで、垂直同期信号の周期を増加させる。なお、ステップS421は、平均値が正である場合に相当する。
図7に示される一連の処理により、制御部301は、1フレーム分の再生カウンタ値の変化幅に相当する時間に垂直同期信号の周期を近付けるように、垂直同期信号の周期を増減させる。その結果、対象フレームより後の後続フレームについて算出される差分値が適正範囲に入るように制御される。
以降では、制御部301による垂直同期信号の周期の制御の効果について説明する。
図8は、本実施の形態に係る垂直同期信号の周期を増加させた場合の出力フレームの出力タイミングを示すタイミング図である。
図8では、横軸に時刻をとり、タイマ304のカウンタ値、出力用メモリ306に格納されているフレーム、同期信号生成部302が生成する垂直同期信号、及び、信号出力部303が出力するフレームのそれぞれが、時刻に対して示されている。また、コンテンツを構成するフレームとしてフレームA、B、K及びLを示している。フレームA、B、K及びLのそれぞれの再生カウンタ値は、3000、6000、33000及び36000である。図8の(a)及び(b)は、それぞれ、垂直同期信号の周期を増加させる前及び後のカウンタ値などを示している。メモリ格納許可範囲の幅は、2000とする。適正範囲は、0から800までの範囲とする。
図8の(a)において、垂直同期信号の周期は、T1である。制御部301は、現在カウンタ値が1000の時点でフレームAを出力用メモリ306に格納する(ステップS102)。信号出力部303は、現在カウンタ値が2000の時点で垂直同期信号を検出し、フレームAを出力する(ステップS301及びS302)。この場合、フレームAについての差分カウンタ値Δt(A)は、(式1)により、Δt(A)=3000−2000=1000と算出される(ステップS401)。
フレームBについての差分カウンタ値Δt(B)は、上記と同様に、Δt(B)=6000−5000=1000と算出される。このような差分カウンタ値が他のフレームについても同様に算出され、フレームA及びBを含む複数のフレームから算出された差分カウンタ値の平均値が1000であるとする(ステップS402)。
制御部301は、上記平均値が、適正範囲の上限より大きいと判断し(ステップS403)、垂直同期信号の周期を、図8の(b)に示されるT2に増加させる(ステップS421)。フレームの出力タイミングが設定より早いので、垂直同期信号を遅らせることで、フレームの出力タイミングを設定に近付ける訳である。
フレームA及びBの後の後続フレームであるフレームK及びLについての処理を、図8の(b)を参照しながら説明する。
図8の(b)において、フレームKについての差分カウンタ値Δt(K)は、(式1)により、Δt(K)=33000−32100=900となっている。
フレームLについての差分カウンタ値Δt(L)は、上記と同様に、Δt(L)=36000−35200=800となっている。フレームA及びBの場合と比べて差分カウンタ値が減少しており、また、適正範囲に入っている。
このようにして、制御部301は、垂直同期信号の周期を増大させることによって、後続フレームを出力するタイミングを、そのフレームを再生すべきタイミングに近付けるように制御することができる。
図9は、本実施の形態に係る垂直同期信号の周期を減少させた場合の出力フレームの出力タイミングを示すタイミング図である。図9に示される項目、各フレームの再生カウンタ値、メモリ格納許可範囲の幅、適正範囲などは、図8に示されるものと同様である。
図9の(a)において、垂直同期信号の周期は、T3である。制御部301は、現在カウンタ値が2000の時点でフレームAを出力用メモリ306に格納する(ステップS102)。信号出力部303は、現在カウンタ値が3200の時点で垂直同期信号を検出し、フレームAを出力する(ステップS301及びS302)。この場合、フレームAについての差分カウンタ値Δt(A)は、(式1)により、Δt(A)=3000−3200=−200と算出される(ステップS401)。
フレームBについての差分カウンタ値Δt(B)は、上記と同様に、Δt(B)=6000−6200=−200と算出される。このような差分カウンタ値が他のフレームについても同様に算出され、フレームA及びBを含む複数のフレームから算出された差分カウンタ値の平均値が−200であるとする(ステップS402)。
制御部301は、上記平均値が、適正範囲の下限より小さいと判断し(ステップS403)、垂直同期信号の周期を、図9の(b)に示されるT4に減少させる(ステップS411)。フレームの出力タイミングが設定より遅れているので、垂直同期信号を早めることで、フレームの出力タイミングを設定に近付ける訳である。
フレームA及びBの後の後続フレームであるフレームK及びLについての処理を、図9の(b)を参照しながら説明する。
図9の(b)において、フレームKについての差分カウンタ値Δt(K)は、(式1)により、Δt(K)=33000−33100=−100となっている。
フレームLについての差分カウンタ値Δt(L)は、上記と同様に、Δt(L)=36000−36000=0となっている。フレームA及びBの場合と比べて差分カウンタ値が増加しており、また、適正範囲に入っている。
このようにして、制御部301は、垂直同期信号の周期を減少させることによって、後続フレームを出力するタイミングを、そのフレームを再生すべきタイミングに近付けるように制御することができる。
以降において、送信装置30がコンテンツを構成する複数のフレームを送信し、その複数のフレームを再生制御装置10が適切なタイミングで再生装置20に出力する一連の処理を、関連技術と対比しながら説明する。ここで、関連技術とは、垂直同期信号の増減を行う処理(図5のステップS205及び図7)が行われない技術である。
図10は、本実施の形態に係る複数のフレームの再生カウンタ値を示す説明図である。
図10に示されるように、フレームA、B、C、D及びEのそれぞれの再生カウンタ値は、それぞれ、3000、6000、9000、12000及び15000である。言い換えれば、これらの再生カウンタ値が、フレームA等のそれぞれに付加されている。これらのフレームを用いて以降の説明を行う。
図11は、本実施の形態に関連した、出力されるフレームに欠落又は重複が生じない場合のフレーム出力タイミングを示すタイミング図である。
図11では、横軸に時刻をとり、送信装置30のカウンタ値、NIF104が受信するフレームとそのタイミング、タイマ304のカウンタ値、出力用メモリ306に格納されているフレーム、同期信号生成部302が生成する垂直同期信号、及び、信号出力部303が出力するフレームのそれぞれが、時刻に対して示されている。また、コンテンツを構成するフレームとしてフレームA、B、C及びDを示している。メモリ格納許可範囲の幅は、2000とする。
図11に示される例では、送信装置30のカウンタ値が3000の時に、送信装置30がフレームAを送信する。再生制御装置10のNIF104は、フレームAを受信し、フレームAがバッファ305に格納される(ステップS101及びS102)。このとき、タイマ304のカウンタ値(現在カウンタ値)は2000である。
制御部301は、現在カウンタ値である2000が、フレームAのメモリ格納許可範囲である1000から3000までの範囲内であるので(ステップS203)、フレームAを出力用メモリ306に格納する(ステップS204)。そして、フレームAが出力用メモリ306に格納されている期間内に垂直同期信号が検出されたときに、垂直同期信号に同期してフレームAが出力される。以降、同様に、フレームB、C及びDが出力される。
図11に示される例では、1フレームに相当するカウンタ値の増加幅である3000に相当する時間と、1フレームに相当する垂直同期信号の1周期とが等しいので、フレームは、順次、取得され、出力用メモリ306に格納され、そして、出力される。この場合、出力されるフレームに欠落又は重複が生ずることがない。つまり、図11に示されるタイミングで現在カウンタ値が加算され、また、垂直同期信号が生成されれば、コンテンツを構成する複数のフレームの全てが重複なく再生されるので、理想的な状態である。
ところが、現実的には、1フレームに相当するカウンタ値の増加幅の分だけカウンタ値が進む時間と、1フレームに相当する垂直同期信号の1周期との間には差(ずれ)が生じたり、送信装置30とタイマ304とのカウンタ値の加算の周期の差が生じたり、この差をなくす目的で行われるカウンタ値の加算の周期の増減が行われたり、また、ネットワーク50上の通信遅延が生じたりする。これらの要因により、出力されるフレームに欠落又は重複が発生する。出力されるフレームに欠落又は重複が発生する例を以下で説明する。
図12は、本実施の形態に係るフレーム出力タイミングを示す第一のタイミング図である。また、図12は、関連技術に係るフレーム出力タイミングも併せて示している。図12に示される項目などは、図11に示されるものと同様である。関連技術とは、垂直同期信号の増減を行う処理(図5のステップS205及び図7)が行われない技術である。
図12に示される例では、送信装置30のカウンタ値が3000の時に、送信装置30がフレームAを送信する。再生制御装置10のNIF104は、フレームAを受信し、フレームAがバッファ305に格納される(ステップS101及びS102)。このとき、タイマ304のカウンタ値(現在カウンタ値)は2500である。
制御部301は、現在カウンタ値である2500が、フレームAのメモリ格納許可範囲内であるので(ステップS203)、フレームAを出力用メモリ306に格納する(ステップS204)。
次に、送信装置30のカウンタ値が6000の時に、送信装置30がフレームBを送信し、フレームBがバッファ305に格納される(ステップS101及びS102)。このとき、タイマ304のカウンタ値(現在カウンタ値)は5600である。
ここで、Xの時点において、現在カウンタ値5600が、フレームBの適正遅延範囲である4000から5500までの範囲の上限(5500)より大きいと判定され(ステップS104)、タイマ304のカウンタ値の加算周期を長くする(ステップS121)。その結果、出力用メモリ306にフレームCが格納されるタイミングは、フレームBが格納されてから比較的長い時間が経過した後になる。
この状況において、関連技術における垂直同期信号のタイミングと出力フレームについて図12の(a)を参照しながら説明する。
関連技術では、垂直同期信号は、一律、60Hzで生成され、この周期が変動することがない。そのため、現在カウンタ値の加算周期が変動しても、垂直同期信号の周期は変わらない。
まず、出力用メモリ306にフレームAが格納されている状態において、垂直同期信号に同期してフレームAが出力される。フレームBも同様に出力される。次に、現在カウンタ値の加算周期が長くなったことから、既に一度出力されたフレームBが出力用メモリ306に格納された状態で垂直同期信号を検出し、再びフレームBを出力する(つまり、フレームBを重複して出力する)。さらに、現在カウンタ値の加算周期によっては、その次のフレームCの出力が欠落することもある。
次に、本実施の形態における再生制御装置10における垂直同期信号のタイミングと出力フレームについて図12の(b)を参照しながら説明する。
本実施の形態における再生制御装置10によれば、垂直同期信号の周期を、現在カウンタ値に基づいて増減させる処理(図5のステップS205及び図7)が行われる。具体的には、現在カウンタ値の加算周期が長くなった場合、垂直同期信号の周期を長くするように制御が行われる。その結果、フレームBの出力の重複、及び、フレームCの出力の欠落が生じず、すべてのフレームが1回ずつ出力されるようになる。
図13は、本実施の形態に係るフレーム出力タイミングを示す第二のタイミング図である。また、図13は、関連技術に係るフレーム出力タイミングも併せて示している。図13に示される項目などは、図11に示されるものと同様である。
図13に示される例では、送信装置30のカウンタ値が3000の時に、送信装置30がフレームAを送信する。再生制御装置10のNIF104は、フレームAを受信し、フレームAがバッファ305に格納される(ステップS101及びS102)。このとき、タイマ304のカウンタ値(現在カウンタ値)は500である。
制御部301は、現在カウンタ値である500が、フレームAのメモリ格納許可範囲の下限より小さいので(ステップS203)、このときには何も処理を行わない。つまり、制御部301は、フレームAを出力するタイミングまで待つ。そして、時間が経過して現在カウンタ値が1000になったら、現在カウンタ値がフレームAのメモリ格納許可範囲内となるので(ステップS203)、制御部301は、フレームAを出力用メモリ306に格納する(ステップS204)。
次に、送信装置30のカウンタ値が6000の時に、送信装置30がフレームBを送信し、フレームBがバッファ305に格納される(ステップS101及びS102)。このとき、タイマ304のカウンタ値(現在カウンタ値)は3400である。
ここで、Xの時点において、現在カウンタ値3400が、フレームBの適正遅延範囲である4000から5500までの範囲の下限(4000)より小さいと判定され(ステップS104)、タイマ304のカウンタ値の加算周期を短くする(ステップS111)。その結果、出力用メモリ306にフレームCが格納されるタイミングは、フレームBが格納されてから比較的短い時間が経過した後になる。
この状況において、関連技術における垂直同期信号のタイミングと出力フレームについて図13の(a)を参照しながら説明する。
関連技術では、まず、出力用メモリ306にフレームAが格納されている状態において、垂直同期信号に同期してフレームAが出力される。次に、現在カウンタ値の加算周期が短い場合、出力用メモリ306にフレームBが格納された状態において垂直同期信号が検出されず、出力用メモリ306にフレームCが格納される。そして、出力用メモリ306にフレームCが格納された状態において垂直同期信号が検出され、フレームCが出力される。同様にフレームDが出力される。このように、フレームBが出力されることなく、その後続のフレームC及びフレームDが出力される(フレームBが欠落する)。
次に、本実施の形態における再生制御装置10における垂直同期信号のタイミングと出力フレームについて図13の(b)を参照しながら説明する。
本実施の形態における再生制御装置10によれば、現在カウンタ値の加算周期が短くなった場合、垂直同期信号の周期を短くするように制御が行われる。その結果、フレームBの出力の欠落が生じず、すべてのフレームが1回ずつ出力されるようになる。
以上のように、本実施の形態に係る再生制御装置10は、再生カウンタ値の更新周期に基づいて垂直同期信号の周期を増減することで調整する。フレームに付加されている再生カウンタ値は、当該フレームを生成した装置により管理されている。上記装置及び再生制御装置のそれぞれにおいて同じように刻むことを意図しても、ハードウェアの個体差により両者に微小な時間差が生じ、時間の経過とともに上記時間差が累積する。この時間差が、再生装置において再生されるフレームの欠落又は重複の原因となる。そこで、再生カウンタ値の更新周期に基づいて垂直同期信号の周期を調整し、調整後の垂直同期信号によるタイミングで再生装置へフレームを出力することで、再生するフレームの欠落又は重複を回避することができる。よって、再生制御装置は、再生されるコンテンツ中のフレームの欠落又は重複の発生を抑制することができる。
また、再生制御装置10は、具体的に差分値を算出し、差分値の正負に基づいて垂直同期信号の周期を増加又は減少させる。よって、再生制御装置は、より適切に、再生されるコンテンツ中のフレームの欠落又は重複の発生を抑制することができる。
また、再生制御装置10は、複数のフレームを再生した後に、再生した複数のフレームに基づいて算出される差分値を用いて、垂直同期信号を調整する。複数のフレームを用いて調整することで、再生制御装置は、突発的に生ずるカウンタ値の遅れ又はパケットロス等の影響を抑制し、比較的長期にわたる再生カウンタ値の更新周期の傾向を考慮して垂直同期信号を調整することができる。
また、再生制御装置10は、再生カウンタ値が加算される周期と垂直同期信号との差が比較的大きい場合にだけ、垂直同期信号の周期の調整を行う。垂直同期信号の周期の調整を必要最小限にとどめることで表示装置に安定した垂直同期信号及び画像信号を出力し、また、処理負荷を低減することができる。
また、再生制御装置10は、ネットワーク経由で送信され順次出力用メモリに格納されるフレームに付加された再生カウンタ値と自装置の現在カウンタ値の差分に基づいて自装置の垂直同期信号の周期の調整を行う。これにより、送信装置から送信される複数のフレームを欠落又は重複の発生を抑制しながら再生することができる。
また、再生制御装置10は、送信装置において更新される再生カウンタ値に対して、再生制御装置において更新する現在カウンタ値が適切な量の遅れを維持しながら更新されるように制御する。これにより、送信装置から送信される複数のフレームを、適切な時間差を維持しながら、かつ、欠落又は重複の発生を抑制しながら再生することができる。
また、再生制御装置10は、フレームの欠落又は重複があった場合に、その欠落又は重複が視聴者に認識されやすいテロップを含むコンテンツを再生する際に、フレームの欠落又は重複の発生を抑制することができる。これにより、視聴者の視聴効果を向上させることができる。
また、再生制御装置10は、出力用メモリに格納するためのフレームを一時的に保持しておくことができる。バッファから順次フレームを出力用メモリに格納することで、安定してフレームを出力することができる。
(実施の形態2)
本実施の形態において、ネットワークを経由せず記憶装置に保存されたコンテンツを再生する場合に、再生されるコンテンツ中のフレームの欠落又は重複の発生を抑制することができる再生制御装置等について説明する。なお、以下において、本実施の形態における再生制御装置の動作と、従来の関連技術における再生制御装置の動作を対比しながら説明する。
なお、実施の形態1におけるものと同一の構成要素には同一の符号を付し、詳細な説明を省略する。
図14は、本実施の形態に係る再生制御システム2の構成を示すブロック図である。
図14に示されるように、再生制御システム2は、再生制御装置12と、再生装置20とを備える。また、再生制御装置12と再生装置20とは、信号線40により接続されている。
再生装置20は、実施の形態1における再生装置20と同じものである。
再生制御装置12は、実施の形態1における再生制御装置10と同じハードウェア構成(図2)を有する。
再生制御装置12は、コンテンツの再生を制御する再生制御装置である。再生制御装置12は、ストレージ103に保存されているコンテンツを構成する各フレームに付加されたカウンタ値に基づいて、再生装置20によりコンテンツを再生するための信号を信号線40を通じて再生装置20に出力する。
再生制御装置12によるフレーム取得時の処理について説明する。再生制御装置12によるフレーム取得時の処理は、実施の形態1におけるもの(図4)と、フレームの取得方法が異なるだけである。つまり、再生制御装置12では、ステップS101において、再生処理部105がストレージ103に保存されているコンテンツを読み込むことで取得する。受信したフレームには、実施の形態1同様、このフレームを再生すべきタイミングを示すカウンタ値である再生カウンタ値が付加されている。
再生制御装置12による、出力用メモリへのフレーム格納処理、再生装置への信号の出力処理、及び、垂直同期信号の周期を増減させる処理は、それぞれ、実施の形態1におけるもの(図5、図6、及び、図7)と同様である。
図15は、本実施の形態に関連した、出力されるフレームに欠落又は重複が生じない場合のフレーム出力タイミングを示すタイミング図である。
図15では、横軸に時刻をとり、タイマ304のカウンタ値、出力用メモリ306に格納されているフレーム、同期信号生成部302が生成する垂直同期信号、及び、信号出力部303が出力するフレームのそれぞれが、時刻に対して示されている。また、コンテンツを構成するフレームとしてフレームA、B、C及びDを示している。メモリ格納許可範囲の幅は、2000とする。
再生処理部105は、フレームAのメモリ格納許可範囲より前に、フレームAをストレージ103から読み込み、バッファ305に格納する(ステップS102及びS103)。制御部301は、現在カウンタ値が1000となることで、フレームAのメモリ格納許可範囲に入った時点でフレームAを出力用メモリ306に格納する(ステップS204)。
そして、フレームAが出力用メモリ306に格納されている期間内に垂直同期信号が検出されたときに、垂直同期信号に同期してフレームAが出力される。以降、同様に、フレームB、C及びDが出力される。
図15に示される例では、1フレームに相当するカウンタ値の増加幅である3000に相当する時間と、1フレームに相当する垂直同期信号の1周期とが等しいので、実施の形態1(図11)における場合と同様、出力されるフレームに欠落又は重複が生ずることがない。つまり、図15に示されるタイミングで現在カウンタ値が加算され、また、垂直同期信号が生成されれば、コンテンツを構成する複数のフレームの全てが重複なく再生されるので、理想的な状態である。
ところが、現実的には、1フレームに相当するカウンタ値の増加幅の分だけカウンタ値が進む時間と、1フレームに相当する垂直同期信号との間には差(ずれ)が生じ得る。このような場合に、出力されるフレームに欠落又は重複が発生する。出力されるフレームに欠落又は重複が発生する例を以下で説明する。
図16は、本実施の形態に係るフレーム出力タイミングを示す第一のタイミング図である。また、図16は、関連技術に係るフレーム出力タイミングも併せて示している。図16に示される項目などは、図15に示されるものと同様である。
図16に示される例では、1フレームに相当するカウンタ値の増加幅の分だけカウンタ値が進む時間より、1フレームに相当する垂直同期信号の周期の方が短い場合を説明する。
再生処理部105は、フレームAのメモリ格納許可範囲より前に、フレームAをストレージ103から読み込み、バッファ305に格納する(ステップS102及びS103)。制御部301は、現在カウンタ値が1000となることで、フレームAのメモリ格納許可範囲に入った時点でフレームAを出力用メモリ306に格納する(ステップS204)。
同様に、フレームB、C及びDのそれぞれは、現在カウンタ値がそれぞれ4000、7000及び10000となった時点で、順次、出力用メモリ306に格納される(ステップS204)。
この状況において、関連技術における垂直同期信号のタイミングと出力フレームについて図16の(a)を参照しながら説明する。関連技術は、垂直同期信号の増減を行う処理(図5のステップS205及び図7)が行われない技術である。
関連技術では、垂直同期信号は、一律、60Hzで生成され、この周期が変動することがない。そのため、現在カウンタ値の加算周期が変動しても、垂直同期信号の周期は変わらない。
まず、出力用メモリ306にフレームAが格納されている状態において、垂直同期信号に同期してフレームAが出力される。フレームBも同様に出力される。次に、垂直同期信号の周期が、1フレームに相当するカウンタ値の幅より短いことから、既に一度出力されたフレームBが出力用メモリ306に格納された状態で垂直同期信号を検出し、再びフレームBを出力する(つまり、重複して出力する)。
次に、本実施の形態における再生制御装置12における垂直同期信号のタイミングと出力フレームについて図15の(b)を参照しながら説明する。
本実施の形態における再生制御装置12によれば、垂直同期信号の周期を、現在カウンタ値に基づいて増減させる処理(図5のステップS205及び図7)が行われる。具体的には、現在カウンタ値の加算周期の方が長い場合、垂直同期信号の周期を長くするように制御が行われる。その結果、フレームBの出力の重複が生じず、すべてのフレームが1回ずつ出力されるようになる。
図17は、本実施の形態に係るフレーム出力タイミングを示す第二のタイミング図である。
また、図17は、関連技術に係るフレーム出力タイミングも併せて示している。図17に示される項目などは、図15に示されるものと同様である。
図17に示される例では、1フレームに相当するカウンタ値の幅より、1フレームに相当する垂直同期信号の幅の方が長い場合を説明する。
再生処理部105は、フレームA、B、C、D及びEを、図16における場合と同様に、順次、出力用メモリ306に格納する。
この状況において、関連技術における垂直同期信号のタイミングと出力フレームについて図17の(a)を参照しながら説明する。
まず、出力用メモリ306にフレームAが格納されている状態において、垂直同期信号に同期してフレームAが出力される。フレームB及びCも同様に出力される。次に、垂直同期信号の周期(固定値)が、1フレームに相当するカウンタ値の幅より長いことから、本来、次のフレームDが出力用メモリ306に格納されるところ、フレームEが格納された状態で垂直同期信号を検出し、フレームEを出力する(つまり、フレームDが欠落する)。
次に、本実施の形態における再生制御装置12における垂直同期信号のタイミングと出力フレームについて図17の(b)を参照しながら説明する。
本実施の形態における再生制御装置12によれば、垂直同期信号の周期を、現在カウンタ値に基づいて増減させる処理(図5のステップS205及び図7)が行われる。具体的には、現在カウンタ値の加算周期の方が長い場合、垂直同期信号の周期を短くするように制御が行われる。その結果、フレームDが欠落することなく出力され、すべてのフレームが1回ずつ出力されるようになる。
図18は、各実施の形態におけるコンテンツの具体例(コンテンツ1800)の説明図である。
図18には、コンテンツ1800を構成する複数フレームのうちの3つのフレーム1801、1802及び1803が示されている。コンテンツは、時間経過とともに、図18における左のフレームから右のフレームへと順に進む。
各フレームは、文字などを含むテロップ部分1811と、テロップでない部分1812とを含む。
テロップ部分1811には、文字が表示され、表示された文字が時間経過とともに等速で所定方向へ移動する。具体的には、文字は、「おはようございます。今日も元気に過ごしましょう。」というようなものであり、この文字が等速で左に進む(スクロールする)。なお、「文字」は、図形又は記号なども含んでよい。
テロップ部分1811は、コンピュータによる画像処理等によって、1フレームごとに所定の画素数だけ所定方向に進むように生成される。よって、コンテンツ1800の再生の際にフレームの欠落又は重複があると、視認者にとっては、テロップ部分1811内の文字が一時的に速く進んだ、又は、一時的に止まったように視認される。
このように、テロップ部分1811は、視認者にとって等速に進むように視認される前提で生成される。そして、多くのフレームが欠落又は重複なく再生される中で、少数のフレームの欠落又は重複があると、少数のフレームの欠落又は重複が視認者に認識されやすい。
一方、テロップでない部分1812は、撮影などにより取得された動画像であり、テロップ部分1811とは独立に進行する動画像で構成される。撮影などにより取得された動画像では、動画像上の被写体の動きが等速であることが少なく、たとえフレームの欠落又は重複があったとしても、視認者に認識されにくい。
上記各実施の形態における再生制御装置によれば、再生されるコンテンツ中のフレームの欠落又は重複の発生を抑制することができる。その結果、特に、テロップ部分1811の文字が等速に進むようになることで、視認者にとって視聴効果が向上する。
なお、バッファ305から出力用メモリ306へフレームを格納する際に、フレームの一部だけを格納するとしてもよい。このようにすれば、例えば、テロップ部分1811についてはフレームの欠落又は重複の発生を抑制するように制御し、テロップでない部分1812については、上記制御を行わないようにすることも可能である。
コンテンツに音声が含まれている場合、音声は、テロップでない部分1812と同期しているのが通例である。そのため、仮にテロップでない部分1812のフレームの欠落又は重複の発生を抑制するように制御すると、音声とのずれ(いわゆる音ズレ)が生じる可能性がある。そこで、上記のように各部分についての制御をする又はしないことによって、音ズレの防止と、フレームの欠落又は重複の発生の抑制とを両立することができる。
以上のように、本実施の形態に係る再生制御装置12は、ストレージが保有している複数のフレームを再生する際に、当該複数のフレームを生成して記録した装置が用いていたカウンタ値の更新周期に基づいて、自装置の垂直同期信号の周期の調整を行う。これにより、ストレージが保有している複数のフレームを欠落又は重複の発生を抑制しながら再生することができる。
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されてもよいし、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。
以上、本発明の再生制御装置について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。