(57)【特許請求の範囲】
【請求項１】
記憶媒体に記録されたコンテンツを再生処理し、かつ、該再生処理よりも高速で該コンテンツを早送り（又は早戻し）処理する再生手段と、
該再生手段によるコンテンツの再生位置を表示する表示手段と、
早送り（又は早戻し）を解除する指示が入力されたときに、その時の再生位置である解除位置を記憶する解除位置記憶手段と、
該解除位置記憶手段によって解除位置が記憶されているか否かを判断する判断手段と、
該解除位置記憶手段によって解除位置が記憶されていない場合に、現在の再生位置を新たに取得して該表示手段に表示させ、該解除位置記憶手段によって解除位置が記憶されている場合に、解除位置が記憶される直前に取得していた再生位置を該表示手段に表示させる表示制御手段と、
該再生手段が早送り（又は早戻し）処理から再生処理に移行した後に、該解除位置記憶手段によって記憶された解除位置を消去する解除位置消去手段とを備え、
早送り（又は早戻し）を解除する指示が入力されたときに、前記再生手段が、早送り（又は早戻し）状態から、再生準備状態を経て、再生状態へと移行するものであり、
前記表示手段が、前記再生手段が再生状態であることを示す再生状態情報、又は、該再生手段が早送り状態であることを示す早送り状態情報（又は該再生手段が早戻し状態であることを示す早戻し状態情報）をさらに表示し、
早送り（又は早戻し）を解除する指示が入力されると、該表示制御手段が、該再生手段が早送り状態（又は早戻し状態）、又は、再生準備状態であるにも関わらず、再生状態情報を該表示手段に表示させる、再生表示制御装置。
【請求項２】
前記再生手段が早送り（又は早戻し）処理から再生処理に移行する際に、前記解除位置記憶手段によって記憶されている解除位置から前記再生手段にコンテンツを再生開始させる再生制御手段をさらに備える、請求項１に記載の再生表示制御装置。
【請求項３】
前記再生手段が、複数のコンテンツを連続して再生し、
前記表示手段が、再生中のコンテンツを特定するためのコンテンツ情報をさらに表示し、
該再生手段によるコンテンツの再生位置がコンテンツの終端になると、前記判断手段が、前記解除位置記憶手段によって解除位置が記憶されているか否かを判断し、
該解除位置記憶手段によって解除位置が記憶されていない場合に、前記表示制御手段が、再生中のコンテンツの次のコンテンツのコンテンツ情報を該表示手段に表示させ、前記再生制御手段が該次のコンテンツを該再生手段に再生させ、
該解除位置記憶手段によって解除位置が記憶されている場合に、前記表示制御手段が、再生中のコンテンツの次のコンテンツのコンテンツ情報を該表示手段に表示させることなく、前記再生制御手段が、該次のコンテンツを該再生手段に再生させることなく、該解除位置記憶手段によって記憶されている解除位置から該再生手段にコンテンツを再生開始させ、その後、前記解除位置消去手段が解除位置を消去する、請求項２に記載の再生表示制御装置。
【請求項４】
記憶媒体に記録されたコンテンツを再生処理し、かつ、該再生処理よりも高速で該コンテンツを早送り（又は早戻し）処理する再生ステップと、
該再生ステップによるコンテンツの再生位置を表示する表示ステップと、
早送り（又は早戻し）を解除する指示が入力されたときに、その時の再生位置である解除位置を記憶する解除位置記憶ステップと、
該解除位置記憶ステップによって解除位置が記憶されているか否かを判断する判断ステップと、
該解除位置記憶ステップによって解除位置が記憶されていない場合に、現在の再生位置を新たに取得して該表示ステップに表示させ、該解除位置記憶ステップによって解除位置が記憶されている場合に、解除位置が記憶される直前に取得していた再生位置を該表示ステップに表示させる表示制御ステップと、
該再生ステップが早送り（又は早戻し）処理から再生処理に移行した後に、該解除位置記憶ステップによって記憶された解除位置を消去する解除位置消去ステップとをコンピュータに実行させ、
早送り（又は早戻し）を解除する指示が入力されたときに、前記再生ステップが、早送り（又は早戻し）状態から、再生準備状態を経て、再生状態へと移行するものであり、
前記表示ステップが、前記再生ステップが再生状態であることを示す再生状態情報、又は、該再生ステップが早送り状態であることを示す早送り状態情報（又は該再生ステップが早戻し状態であることを示す早戻し状態情報）をさらに表示し、
早送り（又は早戻し）を解除する指示が入力されると、該表示制御ステップが、該再生ステップが早送り状態（又は早戻し状態）、又は、再生準備状態であるにも関わらず、再生状態情報を該表示ステップに表示させる、再生表示制御プログラム。
【請求項５】
前記再生ステップが早送り（又は早戻し）処理から再生処理に移行する際に、前記解除位置記憶ステップによって記憶されている解除位置から前記再生ステップにコンテンツを再生開始させる再生制御ステップとをさらにコンピュータに実行させる、請求項４に記載の再生表示制御プログラム。
【請求項６】
前記再生ステップが、複数のコンテンツを連続して再生し、
前記表示ステップが、再生中のコンテンツを特定するためのコンテンツ情報をさらに表示し、
該再生ステップによるコンテンツの再生位置がコンテンツの終端になると、前記判断ステップが、前記解除位置記憶ステップによって解除位置が記憶されているか否かを判断し、
該解除位置記憶ステップによって解除位置が記憶されていない場合に、前記表示制御ステップが、再生中のコンテンツの次のコンテンツのコンテンツ情報を該表示ステップに表示させ、前記再生制御ステップが該次のコンテンツを該再生ステップに再生させ、
該解除位置記憶ステップによって解除位置が記憶されている場合に、前記表示制御ステップが、再生中のコンテンツの次のコンテンツのコンテンツ情報を該表示ステップに表示させることなく、前記再生制御ステップが、該次のコンテンツを該再生ステップに再生させることなく、該解除位置記憶ステップによって記憶されている解除位置から該再生ステップにコンテンツを再生開始させ、その後、前記解除位置消去ステップが解除位置を消去する、請求項５に記載の再生表示制御プログラム。

【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツ再生装置が再生するコンテンツの再生位置表示を制御する再生表示制御装置に関する。
【背景技術】
【０００２】
ＨＤＤ（Hard Disk Drive）に記録されている複数のコンテンツ（例えば、曲ファイル等でありトラックともいう）の中から選択された曲ファイルを再生するオーディオ機器が提供されている。このようなオーディオ機器において、早送り（FF）状態又は早戻し(FR）状態から、再生(PLAY)状態へ移行する場合、ユーザ操作による早送り解除指示に応答して、瞬時に早送り状態から再生状態へ移行できない場合がある。そのとき、ユーザが再生させたい再生位置よりも進んだ位置から再生開始されるという問題が生じる。また、再生対象トラックが複数のトラックをまたぐ場合、表示処理においても不都合が生じる。特に、ＧＵＩ描画処理の負荷が大きい場合、表示処理の応答速度が遅くなる。以下、詳細に説明する。
【０００３】
図８は、あるトラックの再生位置（又は再生時間）（横軸）に対応付けて、ユーザ操作による各指示の入力と、オーディオ機器の状態の遷移とを模式的に示す図である。トラック１を再生状態から、位置Ａにおいて早送り指示が入力されて、早送り状態へと移行される。そして、位置Ｂにおいて早送り解除指示が入力され、再生準備（Play Ready）状態になり、位置Ｃにおいて再生状態（PLAY）に移行する。
【０００４】
図９は、内部プログラムであるステートスレッドの状態遷移を示す図である。状態として、再生状態（PLAY）、早送り準備状態（FFREADY）、早送り状態（FF）、再生準備状態（PLAYREADY）の4つの状態が存在する。再生状態において早送り指示が入力されると、まず早送り準備状態へ移行する。そして、早送り状態へ移行する。早送り準備状態から早送り状態への移行は、ユーザが早送りキーを押下していれば自動遷移する。早送り準備状態とは、早送り状態に移行するための内部状態であり、ＵＩスレッドには先にＧＵＩ表示を変更させる通知を行い、その後、内部で早送り状態への移行処理を行う。また、早送り準備状態の間に早送りキーを解除すれば、即座に再生状態に戻る。早送り状態はユーザによって早送りキーが押下され続けている間、継続する。早送り状態において、早送りキーを解除する（すなわち、早送り解除指示が入力される）と、まず再生準備状態に移行する。再生準備状態とは、再生状態に移行するための内部状態であり、再生状態に移行するための下層部の処理と、ＵＩスレッドへのＧＵＩ表示変更を実行させるためのものである。そして自動的に再生状態へ移行する。なお、図８及び以下の説明では早送り準備状態について省略する。ここで、各準備状態を経由することで、表示系は次の表示準備を行い、ステートスレッド等の内部では、状態移行の処理を実行することができる。また、各準備状態で他の状態への移行指示を受け付けることが可能となり、ユーザの突発的な操作にも反応できるメリットがある。
【０００５】
図１０は、図８の遷移を実行するときの内部処理を説明する図であり、ＧＵＩ（グラフィカルユーザインターフェース）で表示すべき再生位置をステートスレッドから定期的に取得するＵＩスレッドと、状態を管理するステートスレッドと、コンテンツを再生、停止、早送り等するコマンドスレッドとの間のシーケンスを示す。また、図１１は、ＧＵＩの表示内容の移り変わりを示す図である。ＵＩスレッドは上位層、ステートスレッド、及び、コマンドスレッドは下位層である（破線がその境界である）。ユーザ操作によるキーイベントはＵＩスレッドから下位層へ、状態変更通知等は、下位層からＵＩスレッドに送信される。ステートスレッドは、状態遷移があったときにコマンドスレッドを起動し、動作させる。
【０００６】
まず、ステートスレッドの状態は再生状態であり、図８においては位置Ａよりも前の位置である（図１１（ａ）参照）。ＵＩスレッドは、曲ファイルの再生位置を表示するために、ステートスレッドから曲ファイルの再生位置を定期的に取得しており（Ｓ４０１）、その情報に基づいて、再生位置の表示を実行する。続いて、図８の位置Ａにおいてユーザが早送りキーを押下し始めると、ＵＩスレッドは、ステートスレッドにユーザから早送りが指示されたことを通知する。これにより、ステートスレッドは、UpdateTgtState(FF)をＵＩスレッドに返信する（Ｓ４０２）。UpdateTgtState(xx)とは、ターゲットとしている（遷移予定である）次の状態をＵＩスレッドに通知するものであり、ここでは早送り状態へ移行する準備をすることを通知するものである。下位層が早送り状態になれないと判断すれば、UpdateTgtState(FF)は送信されない(エラー等が送信される)。なお、この時点では、早送り状態には移行しておらず、再生状態のままである。これにより、ＵＩスレッドは瞬時に早送り用のＧＵＩに切り替える（例えば、図１１（ｂ）参照、再生アイコンから早送りアイコンに変更する等）ことができ、ユーザに対する表示上の応答を迅速化させている。ＵＩスレッドが早送り状態への表示変更を勝手に実行しないのは、下位層が早送り状態へ移行できるか否かを判断できないからである。
【０００７】
Ｓ４０２〜Ｓ４０３において、下位層は、早送り状態に移行するための処理を内部的に実行し（詳細は省略）、Ｓ４０３でUpdateCurState(FF)をＵＩスレッドに通知する。UpdateCurState(xx)は、現在の状態が完全に括弧内の状態に移行した(完了した)ことを示す。ＵＩスレッドは、これに応答して特に表示更新を実行しない(UpdateTgtState(FF)に応答して、更新済みだからである)。このように、瞬時にUpdateTgtState(xxx)を送信しておき、表示を優先して更新させ、ユーザのキー操作に対して応答性が良いようにユーザに見せている。なお、ＵＩスレッドは、早送り中もＳ４０１の再生位置取得および表示変更を継続実行している。Ｓ４０２〜Ｓ４０３においては、ステートスレッドの状態として、早送り準備状態（FF Ready）を経由しているが、簡単のため省略する。
【０００８】
続いて、図８おける位置Ｂにおいて、ユーザが早送り指示の入力を解除すると、ＵＩモジュールは早送り解除指示をステートスレッドに送信し、ステートスレッドは、これに応答して、UpdateTgtState(PLAY)をＵＩスレッドに通知する(Ｓ４０４)。ＵＩスレッドは、再生アイコンに表示を変更する等、ＧＵＩの表示を更新する（Ｓ４０５、図１１（ｃ））。 Ｓ４０６において、この時点ではまだ早送り状態であり、早送り状態インスタンスは、さらに下位の層（図示しないDeviceのラップ層）に対し、現在早送りしているトラック番号を要求して取得する。
【０００９】
ステートスレッドは、ＵＩスレッドにUpdateTgtCnt(Number)を通知する（Ｓ４０７）。UpdateTgtCnt(Number)とは、状態遷移先で再生対象となるトラック番号のことである。この引数に、Ｓ４０６で取得したトラック番号を入れてＵＩスレッドに通知する。この場合、次の状態における再生対象トラックは、1番であることを示す。この通知は、トラックが変化しなくても、状態が変化するだけで実行される。ＵＩスレッドは、トラック番号1を使用して、表示すべきコンテンツ情報（属性情報であり、トラック名、アーティスト名等）をステートスレッドに要求および取得して、表示する。例えば、早送り状態のまま次のトラックへ移ると、状態は早送りのままで、1ではない数値がUpdateTgtCntにより通知され、ＧＵＩが更新される。なお、ここでも実際はまだトラック番号=1の正常処理状態へ移行したわけではないので、「tgt」となっている。これも表示のみを優先して行い、ユーザへの応答性を向上するためである。
【００１０】
早送り状態インスタンスは、再生位置とトラック番号とを内部的に記憶し（Ｓ４０９）、再生状態（PlayReady）へ移行する（Ｓ４１０）。早送り状態インスタンスの役割はここで終了し、次は、再生準備インスタンスが引き継ぐ。ただし、実際には、早送り状態は、再生状態に完全に移行するＳ４１６まで、内部的に継続している。また、早送り状態から再生状態に移行する間、内部的にミュートを掛け、音声を出力しない。
【００１１】
続いて、再生準備インスタンスは、再生コマンドインスタンスに対し、再生のための情報をセットし、発行する（Ｓ４１１）。ここでの「情報」とは、再生開始位置、スキップレート、トラック番号など、再生開始に必要な情報である。これは、Ｓ４０９で記憶した値が使用される。再生準備インスタンスは、再生コマンドインスタンスに対して再生コマンドの実行を指示する（Ｓ４１２）。再生コマンドインスタンスは、再生開始するＨＤＤ内のトラック番号を再度取り直し、自身にセットする（Ｓ４１３）。さらに、再生コマンドインスタンスは、再生開始する曲ファイルの再生開始位置を更新し、再セットする（Ｓ４１４）。ここで、Ｓ４１３、Ｓ４１４における再セットは、再生コマンドインスタンス自身が、最新情報で再生開始するための処理である。これにより、図８における位置Ｂから、早送り状態によって、再生位置が位置Ｃまで進んでしまったとしても、自然に位置Ｃから再生開始する。
【００１２】
Ｓ４１５において、実際の再生コマンドがデバイスに対して発行される。この時点で図１１（ｄ）の状態となる。Ｓ４１６で、デバイスレイヤーからの再生ＯＫ通知が発生し(図略)、内部状態が再生状態に移行する。ステートスレッドは、UpdateCurState(PLAY)と、UpdateCurCnt(1)をＵＩスレッドに通知する（Ｓ４１７、Ｓ４１８）。
【００１３】
ここで、Ｓ４０４でＧＵＩに再生アイコンが表示されてから（図１１（ｃ））、実際にＳ４１６で早送り状態から再生状態に移行するまでの間、実際の内部状態は早送り状態のまま進んでしまう。つまり、図１１（ｃ）〜（ｄ）のように、ＧＵＩには再生アイコンが表示されているにも関わらず、ＧＵＩ表示されている再生位置は約１０秒も早送りで進んでしまう。１０秒は、早送り指示が２回程度発生した場合に進む量であり、２回程度のキーリピートは早送り状態から再生状態へ移行する処理中に十分発生する時間量である。ＣＰＵ処理能力が高い、又は、ＵＩスレッドとのやり取りが高速であれば早送り指示を受ける前に再生状態に完全に移行し問題は発生しないが、実際はそうは行かず、問題となる。
【００１４】
【特許文献１】特開平１０−３４１３９７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明の目的は、早送り解除指示が入力された後に、表示されているコンテンツ再生位置が早送りで進むという問題を解決できる再生表示制御装置を提供することである。
【課題を解決するための手段】
【００１６】
本発明の好ましい実施形態による再生表示制御装置は、記憶媒体に記録されたコンテンツを再生処理し、かつ、該再生処理よりも高速で該コンテンツを早送り（又は早戻し）処理する再生手段と、該再生手段によるコンテンツの再生位置を表示する表示手段と、早送り（又は早戻し）を解除する指示が入力されたときに、その時の再生位置である解除位置を記憶する解除位置記憶手段と、該解除位置記憶手段によって解除位置が記憶されているか否かを判断する判断手段と、該解除位置記憶手段によって解除位置が記憶されていない場合に、現在の再生位置を新たに取得して該表示手段に表示させ、該解除位置記憶手段によって解除位置が記憶されている場合に、解除位置が記憶される直前に取得していた再生位置を該表示手段に表示させる表示制御手段と、該再生手段が早送り（又は早戻し）処理から再生処理に移行した後に、該解除位置記憶手段によって記憶された解除位置を消去する解除位置消去手段とを備える。早送り（又は早戻し）を解除する指示が入力されたときに、前記再生手段が、早送り（又は早戻し）状態から、再生準備状態を経て、再生状態へと移行するものであり、前記表示手段が、前記再生手段が再生状態であることを示す再生状態情報、又は、該再生手段が早送り状態であることを示す早送り状態情報（又は該再生手段が早戻し状態であることを示す早戻し状態情報）をさらに表示し、早送り（又は早戻し）を解除する指示が入力されると、該表示制御手段が、該再生手段が早送り状態（又は早戻し状態）、又は、再生準備状態であるにも関わらず、再生状態情報を該表示手段に表示させる。
【００１７】
早送り（以下において、早戻しについても同様である）解除指示が入力されると、解除位置記憶手段が解除位置を記憶する。また、再生手段が再生処理に移行すると、解除位置消去手段が解除位置を消去する。そして、表示部に再生位置を表示する際には、まず、判断手段が、解除位置が記憶されているか否かを判断する。解除位置が記憶されていない場合、つまり、早送り解除時の再生位置表示でない場合、現在の再生位置を表示手段に表示する。一方、解除位置が記憶されている場合、つまり、早送り解除時の再生位置表示の場合、解除位置が記憶される直前に取得していた再生位置を表示手段に表示させる。その結果、早送り解除指示が入力されると、再生処理に移行するまでの間、表示手段に表示される再生位置は早送り解除指示入力直前の位置に停滞し、早送りによって先に進むことはない。従って、早送り指示入力後、再生処理に移行するまでの間に、再生位置が早送りで進んでしまうという問題を解決できる。早送り解除指示が入力されると、状態が再生状態になる前に、表示手段に表示される状態情報を先に再生状態に更新させることにより、ユーザに対する表示手段の応答性を高くできる。このような場合においては、表示手段の状態表示が早送り状態から再生状態に変更されているにも関わらず、表示されている再生位置が早送りで進んでしまうという問題を解決することができるので、得られる効果は特に顕著となる。
【００１８】
好ましい実施形態においては、前記再生表示制御装置は、前記再生手段が早送り又は早戻し処理から再生処理に移行する際に、前記解除位置記憶手段によって記憶されている解除位置から前記再生手段にコンテンツを再生開始させる再生制御手段をさらに備える。
【００１９】
この場合、早送り解除指示が入力された後、再生処理に移行するまでの間に実際の再生位置が早送りで進んでしまうという問題を解決することができる。すなわち、再生状態に移行後に、表示手段に表示される再生位置と、実際に再生される再生位置とを共に、解除位置から開始することができる。
【００２０】
好ましい実施形態においては、前記再生手段が、複数のコンテンツを連続して再生し、前記表示手段が、再生中のコンテンツを特定するためのコンテンツ情報をさらに表示し、該再生手段によるコンテンツの再生位置がコンテンツの終端になると、前記判断手段が、前記解除位置記憶手段によって解除位置が記憶されているか否かを判断し、該解除位置記憶手段によって解除位置が記憶されていない場合に、前記表示制御手段が、再生中のコンテンツの次のコンテンツのコンテンツ情報を該表示手段に表示させ、前記再生制御手段が該次のコンテンツを該再生手段に再生させ、該解除位置記憶手段によって解除位置が記憶されている場合に、前記表示制御手段が、再生中のコンテンツの次のコンテンツのコンテンツ情報を該表示手段に表示させることなく、前記再生制御手段が、該次のコンテンツを該再生手段に再生させることなく、前記解除位置記憶手段によって記憶されている解除位置から該再生手段にコンテンツを再生開始させ、その後、前記解除位置消去手段が解除位置を消去する。
【００２１】
この場合、コンテンツの終端で早送り解除指示が入力された場合において、一旦次のコンテンツのコンテンツ情報を表示手段に表示した後に、上記のように前のコンテンツの早送りの解除位置から、再生位置の表示、及び、再生開始するという問題を解決することができる。
【発明の効果】
【００２４】
本発明によると、早送り指示入力後、再生処理に移行するまでの間に、再生位置が早送りで進んでしまうという問題を解決できる。
【発明を実施するための最良の形態】
【００２５】
図１は、本発明の好ましい実施形態によるコンテンツ再生装置１を示す概略ブロック図である。コンテンツ再生装置１は、マイコン等の制御部１１と、メモリ１２と、ハードディスクドライブ（ＨＤＤ）等の記憶媒体１３と、通信部１４と、光ディスクドライブ１５と、Ｄ／Ａコンバータ１６と、表示部１８と、操作部１９とを備え、これらはバスで相互に接続される。必要に応じて、コンテンツ再生装置１は、Ｄ／Ａコンバータ１６に接続されたスピーカ１７をさらに備える。コンテンツとは、映像、曲（音楽）、静止画データの総称であり、本例においては曲データ（以下、曲ファイル、トラックともいう）である。なお、以下において、早送りの場合を例に説明するが、早戻しについてもデータの進行方向が異なるだけで同様に実現できる。
【００２６】
光ディスクドライブ１５は、ＣＤやＤＶＤ等の光ディスクが挿入されたとき、挿入された光ディスク内の複数の曲ファイルを読み出す。ＨＤＤ１３は、光ディスクドライブ１５により読み出された複数の曲ファイルを記憶する。また、通信部１４と接続された図示しない他のコンピュータ装置から送信された複数の曲ファイルを記憶する。ＨＤＤ１３はさらに、図２に示す曲テーブル２０を記憶する。
【００２７】
曲テーブル２０には、ＨＤＤ１３に記憶された曲ファイルに関する情報が登録される。例えば、曲テーブル２０は、曲ファイルを特定するためのトラック番号を登録するためのフィールドと、曲ファイルのコンテンツ情報（属性情報）を登録するためのフィールドと、曲ファイルの曲名（タイトル）を登録するためのフィールドと、曲ファイルの再生時間を登録するためのフィールドとを備える。図２では、属性情報として、アーティスト名が記録されている。
【００２８】
図１に戻って、メモリ１２は、リードオンリーメモリ（ＲＯＭ）とランダムアクセスメモリ（ＲＡＭ）とを含む。メモリ１２内のＲＯＭには、ＵＩスレッド１２１と、ステートスレッド１２２と、コマンドスレッド１２３とで構成されるコンテンツ再生プログラムが予めインストールされている。コンテンツ再生プログラムをマイコン１１で実行することにより、以降で説明する動作処理を実行できる。
【００２９】
ここでスレッドとは、基本ソフトがひとつのアプリケーションソフトウエアの処理（プロセス）を複数に分割して処理できる場合の最小の処理単位であり、並列処理によって処理効率を向上させるものである。ＵＩスレッド１２１は、ＧＵＩ（グラフィカルユーザインターフェース）表示すべき情報（再生中の曲ファイルの属性情報、再生位置、動作状態）を下位層であるステートスレッド１２２から定期的に取得して、表示部１８に表示させるスレッドである。ステートスレッド１２２は、状態（再生状態、早送り状態、再生準備状態など）を管理するスレッドである。ステートスレッド１２２は、各状態に対応して、再生状態インスタンス、早送り状態インスタンス、再生準備インスタンスを生成する。インスタンスとは、オブジェクト指向プログラミングにおいて、あるクラス C から一つのオブジェクト O が生成された場合に、クラス C から見てオブジェクト O を指し示す概念であり、オブジェクト O はクラス C のインスタンスであるという。コマンドスレッド１２３は、コンテンツを再生、停止、早送り等するコマンドを実際にデバイスレイヤーに発行するスレッドである。コマンドスレッド１２３は、再生コマンドインスタンスを生成する。
【００３０】
マイコン１１は、コンテンツ再生装置１全体を制御する。マイコン１１はまた、メモリ１２に格納されたコンテンツ再生プログラム（スレッド１２１〜１２３）を実行することにより、以降で説明する動作処理を実行する。
【００３１】
Ｄ／Ａコンバータ１６は、再生される曲ファイルをデジタル信号からアナログ信号に変換する。スピーカ１７は、Ｄ／Ａコンバータ１６から出力されたアナログ信号を受け、音声として外部に出力する。
【００３２】
表示部１８は、再生中の曲ファイルの属性情報、再生位置、動作状態などを含むＧＵＩを表示するものであり、ＬＣＤ（液晶ディスプレイ）やＦＬ管等である。または、表示部１８は、外部に接続されるディスプレイ装置にＧＵＩをＯＳＤ表示させるＯＳＤ処理部であってもよい。操作部１９は、ユーザからの指示を受け付けるものであり、例えばリモコン送受信機や操作ボタンである。
【００３３】
以下、本発明の動作を説明する。
［実施形態１］
まず、図８を参照して、動作概要を説明する。位置Ａで早送り指示がユーザ操作によって入力されて早送り実行後、位置Ｂで早送り解除指示がユーザ操作によって入力される。このとき、ステートスレッド１２２は、早送り解除指示が入力された時点の再生位置である解除位置を記憶する。ＵＩスレッド１２１は、定期的にステートスレッド１２２から再生位置を要求および取得して、表示部１８に再生位置を表示させている。ステートスレッド１２２は、ＵＩスレッド１２１からの要求に応じて再生位置を返信する場合、通常は現在の再生位置を取得してＵＩスレッド１２１に返信するのであるが、早送り解除指示入力後で再生状態に移行するまでの間（再生準備状態のとき）は、早送り解除指示入力直前に返信した再生位置を継続して返信する。つまり、表示部１８にＧＵＩ表示される再生位置は、早送り解除指示入力後、再生状態になるまで、早送りで進むことはなく停滞することになる。再生位置の表示を停滞させるか否かは、ステートスレッド１２２が解除位置を記憶しているか否かによって判断することができる。そして、再生状態に移行したときに、コマンドスレッド１２３は、ステートスレッド１２２によって記憶されている解除位置から曲ファイルを再生開始させ、ステートスレッド１２２は、ＵＩスレッド１２１からの要求に応じて、現在の再生位置をＵＩスレッド１２１に返信する。これにより、表示部１８に表示されている動作状態のアイコンが再生状態であるにもかかわらず、表示部１８に表示される再生位置と、実際に内部で再生開始される再生位置が早送りされてしまうという問題を解決できる。以下、詳細に説明する。
【００３４】
図３は、コンテンツ再生装置１の各スレッドの処理を示すシーケンス図である。まず、ステートスレッド１２２の状態は再生状態（図ではPLAYで示し、再生状態インスタンスが生成されている）であり、図８においては位置Ａよりも前の位置である。ＵＩスレッド１２１は、曲ファイルの再生位置をＧＵＩ表示させるために、ステートスレッド１２２から再生位置を定期的に取得しており（Ｓ６０１）、取得した情報に基づいて、表示部１８に再生位置を表示させる。一方、ステートスレッド１２２は、ＵＩスレッド１２１からの再生位置の要求に応じて、図４に示す再生位置の取得処理（詳細後述）を実行する（Ｓ６０２）。
【００３５】
位置Ａにおいて早送り状態に移行する処理は、従来と同様であるのでここでは割愛する。続いて、図８における位置Ｂにおいて、ユーザが早送り解除指示を入力すると、ＵＩモジュール１２１は早送り解除指示（すなわち、再生指示）をステートスレッド１２２に送信し、ステートスレッド１２２の早送り状態インスタンス（図ではFＦと記載）は、解除位置releasePosiを内部的に記憶する（Ｓ６０４）。releasePosiは、早送り解除指示が入力された時の曲ファイル中のデータ位置（時間位置でもよい）を保持する変数であり、デバイスレイヤーから取得される。早送り状態インスタンスに対するＵＩスレッド１２１からの早送り解除指示は他の処理よりも先に送信されるので（ＧＵＩ表示に迅速に早送り解除＝再生アイコンを反映するため）、releasePosiとユーザ操作による早送り解除位置との誤差は無視できる程度である。従って、releasePosiは位置Ｂそのものであると考えることができる。
【００３６】
ここで、図４の再生位置取得処理を説明する。図４は、ステートスレッド１２２の内部ルーチンであるポジションゲッターが再生位置を返信するメソッドの内部を示している(従来では、常に、再生位置をデバイスから取得し、返信するだけである)。ポジションゲッターは、ＵＩスレッド１２１からの再生位置要求に応じて、記憶されているreleasePosiが正の値か否か（つまり、releasePosiが記憶されているか否か）を判断する（Ｓ７０１）。releasePosiは、早送り解除指示が入力されてreleasePosiが記憶される前は、初期値として０または負の値になっている。
【００３７】
releasePosiが正の値でない場合、つまり、早送り解除通知後の再生位置取得処理でない場合（Ｓ７０１でＮＯ）、ポジションゲッターは、デバイスレイヤーから現在の再生位置を従来通りの方法で取得し、static(関数内static)変数に記憶する。従って、早送り解除が関与しない場合、この変数は随時更新されていく。その後、ポジションゲッターは、再生位置をＵＩスレッド１２１に返信する（Ｓ７０３）。ＵＩスレッド１２１は、この再生位置を表示部１８に表示させる。
【００３８】
一方、releasePosiが正の値の場合、つまり、早送り解除通知後の再生位置取得処理の場合（Ｓ７０１でＹＥＳ）、ポジションゲッターは、Ｓ７０２で記憶された変数をＵＩスレッド１２１への返信値として設定する（Ｓ７０４）。これにより、ポジションゲッターは、返信値を更新せず、１回前と同じ値をＵＩスレッド１２１に返信し、ＵＩスレッド１２１に１回前と同じ再生位置を表示させる。つまり、ステートスレッド１２２やコマンドスレッド１２３の内部的には早送りが進んでいるが、表示部１８のＧＵＩ表示上は、同じ再生位置に留まっているように表示される。
【００３９】
次に、ポジションゲッターは、ステートスレッド１２２の状態が再生準備状態であるか否か、つまり、早送り状態インスタンスから再生準備インスタンス（図のPlayReady）に切り替わっているか否かを判断する（Ｓ７０５）。再生準備状態でない場合（Ｓ７０５でＮＯ）、Ｓ７０４で設定した値をＵＩスレッド１２１に返信する（Ｓ７０７）。一方、再生準備状態である場合（Ｓ７０５でＹＥＳ）、ポジションゲッターは、コマンドスレッド１２３の再生コマンドインスタンス（図のPlay）が所有する再生開始位置（シーク位置とも呼ばれる）を保持する変数に、releasePosiをセットする（Ｓ７０６）。すなわち、再生状態において再生開始する位置を早送り解除位置であるreleasePosiにすることで、再生準備状態のときに早送りされた再生位置から再生開始しないようにする。その後、Ｓ７０４で設定した値をＵＩスレッド１２１に返信する（Ｓ７０７）。
【００４０】
なお、Ｓ７０５で再生準備状態か否かを判断しているのは、releasePosiが正の値、かつ、再生準備状態でなければ、コマンドスレッド１２３が再生コマンドインスタンスを生成しておらず（ステートスレッド１２２とコマンドスレッド１２３の各インスタンスは、生成と消去が繰り返されている）、再生開始位置を未だセットできないからである。また、Ｓ７０６で再生コマンドインスタンスの再生開始位置を保持する変数にreleasePosiをセットするのは、図４のメソッドが呼び出される毎に、同じ値がセットされるので、初回の1回のみセットするようにしてもよい。ただし、再生準備状態の期間は短く、セットの回数はあまり多くならないので、図４のように毎回セットしても負荷は増加しない。（なお、早送り状態インスタンスから直接再生コマンドインスタンスに再生開始位置をセットしないのは、早送り状態インスタンスの段階では、再生コマンドインスタンスにセットできないからである。しかし、早送り状態インスタンスが、再生準備インスタンスにreleasePosiを渡し、再生コマンドインスタンスにセットするようにしてもよい）。
【００４１】
以上のように、releasePosiがＳ６０４で正の値に変更されてから、後で初期化されるまでの間は、ＵＩスレッド１２１には同じ再生位置が繰り返し返信されることになる(内部では早送り状態が進んでいる)。
【００４２】
図３に戻って、早送り状態インスタンスは、UpdateTgtState(PLAY)をＵＩスレッドに通知する(Ｓ６０５)。ＵＩスレッド１２１は、これに応じて、動作状態のアイコンを早送りアイコンから再生アイコンに表示を変更する等、ＧＵＩの表示を更新する（Ｓ６０６）。Ｓ６０７において、この時点ではステートスレッド１２２はまだ早送り状態であり、早送り状態インスタンスは、さらに下位の層（図示しないDeviceのラップ層）に対し、現在早送りしているトラック番号を要求して取得する。
【００４３】
次に、ステートスレッド１２２は、ＵＩスレッド１２１にUpdateTgtCnt(Number)を通知する（Ｓ６０７）。UpdateTgtCnt(Number)とは、状態移行後（この場合再生状態に移行した後）に再生対象となるコンテンツナンバー（トラック番号）のことである。この引数に、Ｓ６０７で取得したトラック番号を入れてＵＩスレッド１２１に通知する。ＵＩスレッド１２１は、トラック番号1を使用して、表示すべき曲ファイルの属性情報（トラック名、アーティスト名等）をステートスレッド１２２に要求および取得し、表示部１８に表示させる。なお、ここでも実際はまだトラック番号=1の正常処理状態へ移行したわけではないので、「tgt」となっている。Ｓ６０６〜Ｓ６０８の処理は、内部的に再生状態になる前に、早送り解除（再生状態に移行）した旨のＧＵＩ表示のみを優先して実行することにより、ユーザへの応答性を向上するものである。
【００４４】
続いて、ステートスレッド１２２において、早送り状態インスタンスは、再生位置とトラック番号とを内部的に記憶し（Ｓ６０９）、再生準備状態へ移行する。早送り状態（FF）インスタンスの役割はここで終了し、次は、再生準備インスタンス（PlayReady）が引き継ぐ。続いて、再生準備インスタンスは、再生コマンドインスタンスに対し、再生のための各種情報をセットし、発行する（Ｓ６１１）。ここでの「情報」とは、スキップレート、トラック番号等、再生開始に必要な情報である。なお、先述の通り、再生開始位置は、図４のＳ７０６において、releasePosiがセットされる。再生準備インスタンスは、再生コマンドインスタンスに対して再生実行指示を送信する（Ｓ６１２）。
【００４５】
続いて、再生コマンドインスタンスは、セットされている再生開始位置（つまり、releasePosi）が正の値（すなわち、有効）か否かをチェックする（Ｓ６１３）。図４のＳ７０６において、再生コマンドインスタンスには、再生開始位置として正の値がセットされているので、再生コマンドインスタンスは、その値をセットしなおす（Ｓ６１４）。なお、図示しないが、Ｓ６１３で再生開始位置が正でなかった場合、Ｓ４１３、Ｓ４１４等の従来の処理を行う。
【００４６】
続いて、再生コマンドインスタンスは、再生開始位置を指定し、再生コマンドをデバイスに対して発行する（Ｓ６１５）。再生コマンドインスタンスは、再生開始位置を負（または０）の値に初期化する（Ｓ６１６）。以後、再び早送り状態から再生状態へ移行する際にＳ７０６、Ｓ６１４で再生開始位置がセットされない限り、再生開始位置は再生コマンドインスタンス内で変更されない。
【００４７】
続いて、デバイスレイヤーからの再生ＯＫ通知が発生し(図略)、内部状態が再生準備状態から再生状態に移行する（Ｓ６１７）。つまり、再生準備インスタンスが終了し、再生インスタンス（図のPLAY）が発生する。再生インスタンスは、UpdateCurState(play)と、UpdateCurCnt(1)をＵＩスレッド１２１に通知する（Ｓ６１８、Ｓ６１９）。
【００４８】
続いて、再生状態インスタンスは、releasePosiを負（または０）の値に初期化する（Ｓ６２０）。この初期化は、完全に再生状態になったときの他に、再生状態になる前に他の状態に強制移行指示が通知されたとき、または、エラーの場合などで実行される。これにより、図４のポジションゲッターの処理において、Ｓ７０１でＮＯに進むようになり、その結果、ＵＩスレッド１２１に返信される再生位置が実際の再生位置に進むようになり、表示部１８に表示される再生位置が進むようになる。
【００４９】
以上のように、再生準備状態の間に、内部的には早送り状態のまま進む一方で、表示部１８の再生位置の表示は、早送り解除指示が指示された段階から進行させず、さらに、再生状態に移るときには再生開始位置を、早送り解除指示が入力された時の再生位置である解除位置（releasePosi）に設定する。従って、表示部１８のＧＵＩ表示を先に早送りアイコンから再生アイコンに変更した後に、ＧＵＩ表示の再生位置と、再生開始位置とが１０秒程度早送りされてしまうことを防止でき、ＧＵＩ表示の再生位置と、再生開始位置とを、早送り解除位置から開始することができる。
【００５０】
［実施形態２］
本例は、実施形態１で生じる問題点をさらに解決する付加的な実施形態である。まずは、実施形態１で生じる問題点を説明する。図５は、ユーザ操作による早送り解除指示が、トラックの終端で実行された場合のＧＵＩ表示を説明する図である。再生するトラックをデバイスレイヤーへセットする際、できるだけスムーズな曲間連続性(表示を含め)を実現するため、現在のトラックを再生開始する前に、次のトラックを再生準備することとする。つまり、トラック１、トラック２、トラック３の順に再生する場合、トラック１の終端では、トラック２のＧＵＩ表示を先行して実行すると同時に再生準備を行い、トラック３の再生前準備(曲ファイルのチェック等)を実行する。
【００５１】
その結果、次のような問題が発生する。図５（ａ）のようにトラック１の終端付近で早送り解除指示が入力される。解除位置はトラック１の終端に近いので、この時点でトラック２の再生準備と、トラック３の再生前準備が実行され、ＧＵＩ表示の準備も実行される。つまり、ステートスレッド１２２が、updateTgtState(PLAY)、updateTgtContent(2)をＵＩスレッドに通知する。ＵＩスレッド１２１は、これらの通知を受信し、図５（ｂ）に示すように、トラック２の表示が再生アイコンの表示とともに実行される。
【００５２】
そして、図３のＳ６１４において、再生開始位置がＳ６０４でセットされた値で再セットされる。つまり、ステートスレッド１２２は、早送り解除の正確な位置（releasePosi）を記憶しているので、その位置から再生開始しようとするが、図５（ｂ）のようにＧＵＩにトラック２が表示された後に、図５（ｃ）のようにトラック１の終端から再生開始されてしまう。つまり、トラック２の表示開始直後にトラック１の早送り解除位置から再生開始が実行されるようになり、ユーザを困惑させる。
【００５３】
そして、図５（ｃ）のように、トラック１の終端を再生し、再びトラック１の終了処理が実行され、図５（ｄ）のようにトラック２の再生に移行する。
【００５４】
図６は、このような問題が生じる内部処理を示す。早送り状態インスタンスは、早送り解除通知を受信して（Ｓ９０１、図５（ａ））、早送り解除位置の情報を保持する（トラック番号、releasePosi等）（Ｓ９０２）。Ｓ９０３で、再生準備状態になっているが、トラック１終端で早送り解除指示が入力されたので、すぐにトラック終端処理ルーチンが呼び出される。トラック終端処理ルーチンでは、次コンテンツの選択を実行し、ＵＩスレッド１２１にトラック番号が変更になること、つまりupdateTgtCnt(2)を通知する(併せて、updateTgtStateも通知)。引数の2は、図５のトラック番号２を示す。ＵＩスレッド１２１は、これを受信して、図５（ｂ）のようにＧＵＩ表示を変更する。
【００５５】
Ｓ９０５において、Ｓ９０２で保持したreleasePosiから再生開始されるコマンドを再生コマンドインスタンスに発行させる。これは、トラック終端処理と、早送り解除時の処理とが並行して実行されているからである。つまり、トラック１のトラック終端付近の位置からの再生コマンドが発行される。このとき、updateTgtCnt(1)がＵＩスレッド１２１に通知され、ＵＩスレッド１２１は、再度、トラック番号１をＧＵＩ表示する。そのとき表示される再生開始位置は、releasePosiとなる（図５（ｃ））。
【００５６】
このように、一旦次のトラック番号２が一瞬表示され、すぐに前のトラック１の早送り解除位置へ戻る動作をしてしまう。そして、トラック１の残り数秒分が再生される（Ｓ９０７）。トラック１の再生終了時に、再びトラック終端処理ルーチン（Ｓ９０３）が呼び出され、トラック２の再生準備を始める（Ｓ９０８）。再生コマンドがＳ９０６と同じように実行される（Ｓ９０９）。このときに再生コマンドインスタンスにセットされているのは、トラック２の情報であり、トラック１の早送り解除情報は図３で説明したように既にリセットされている。
【００５７】
図７は、以上のような問題点を解決するための本例の処理（ステートスレッド１２２と、コマンドスレッド１２３との処理）を示すシーケンス図である。まず、早送り状態インスタンスは、早送り解除指示を受信して(Ｓ１００１)、早送り解除情報を保持する（Ｓ１００２）。再生準備インスタンスにおいて、トラック終端処理ルーチンが呼び出される（Ｓ１００３）。図６では、このトラック終端処理ルーチンで、次のトラックを選択し、実行していた。しかし、本例では、再生準備インスタンスは、releasePosiが正の値か（releasePosiが記憶されているか）否かをチェックする（Ｓ１００４）。
【００５８】
releasePosiが正の値でない場合、つまり、早送り解除時のトラック終端処理でない場合（Ｓ１００４でＮＯ）、図６と同様に、再生準備インスタンスは、次トラックを選択し（Ｓ１００５）、ＵＩスレッド１２１にupdateTgtCnt(2)を通知する（Ｓ１００６）。そして、再生準備インスタンスは、再生コマンド発行前に、既に再生コマンドインスタンスにセットされているＳ６１１でセットされた各再生開始情報をリセットする（Ｓ１００７）。再生準備インスタンスは、再生コマンドインスタンスに対して再生コマンドの実行を指示する（Ｓ１００８）。トラック２を再生開始するための情報は再生コマンドインスタンスにセットされている。その結果、トラック２が再生開始される（Ｓ１０１３）。
【００５９】
一方、releasePosiが正の値である場合、つまり、早送り解除時のトラック終端処理である場合（Ｓ１００４でＹＥＳ）、トラック終端処理ルーチン内であっても、次トラックを取得する処理を実行せず、次トラックをＵＩスレッド１２１に通知しない（Ｓ１００９）。つまり、トラック１の終端に来ていても、ＧＵＩ表示をトラック２に変更することはしない。再生準備インスタンスは、再生コマンドを再生コマンドインスタンスに実行させる（Ｓ１０１０）。なお、先述の通り、再生コマンドインスタンスには、再生開始する情報は既にセットされている。
【００６０】
再生コマンドインスタンスは、再生コマンドを発行後、早送り解除情報(releasePosiやトラック番号)をリセットし、次に備える（Ｓ１０１１）。再生準備インスタンスは、トラック１の残りの部分を通常再生させた（Ｓ１０１２）後に、すぐにＳ１００３に戻って、トラック１のトラック終端処理ルーチンに移る（Ｓ１００３）。この時点では、releasePosiがＳ１０１１でリセットされているので、Ｓ１００４でＮＯに分岐し、次のトラック２の表示および再生へと進む。
【００６１】
このように、トラック終端で早送り解除指示が入力された場合、すぐにトラック終端処理が呼び出されても、releasePosiが正の値であれば、次トラックを選択してＵＩスレッド１２２に通知する処理を実行しない。その結果、図５、図６で説明した問題を防止することができ、早送り解除時のトラックを早送り解除位置から表示、再生開始させることができる。
【００６２】
以上、本発明の好ましい実施形態を説明したが、本発明はこれらの実施形態には限定されない。早送り解除時の処理について説明したが、早戻し解除の処理についても同様である。早戻し解除時において、トラックの終端とはトラックの先頭のことをいい、次トラックとは１つ前のトラックのことをいう。ユーザによる早送り解除指示とは、早送りキーの押下が解除される場合に限定されず、早送り状態において再生キーが押下される場合も含む。すなわち、ユーザによりキー操作の態様には限定されない。また、本発明の再生表示制御装置自体がＨＤＤ等の記憶媒体を備えていなくてもよく、サーバに記録されたコンテンツを取得して再生するものであってもよい。本発明は、上記のコンテンツ再生装置を動作させるためのコンピュータプログラムまたはそのコンピュータプラグラムを記録した記録媒体という形態で提供されてもよい。
【産業上の利用可能性】
【００６３】
本発明はＨＤＤレコーダ等に好適に適用され得る。
【図面の簡単な説明】
【００６４】
【図１】本発明の好ましい実施形態によるコンテンツ再生装置１の構成を示すブロック図である。
【図２】曲テーブルを示す図である。
【図３】コンテンツ再生装置の動作を示すシーケンス図である。
【図４】ポジションゲッターの処理を示すフローチャートである。
【図５】表示部におけるＧＵＩ表示の移り変わりを示す図である。
【図６】トラック終端で早送りが解除された場合の問題点を説明するフローチャートである。
【図７】図６に示す問題を解決する処理を示すフローチャートである。
【図８】あるトラックにおけるユーザ操作のタイミングと、コンテンツ再生装置の状態との関係を示す図である。
【図９】コンテンツ再生装置の状態の遷移を説明する図である。
【図１０】従来のコンテンツ再生装置の動作を示すシーケンス図である。
【図１１】従来のコンテンツ再生装置の表示部のＧＵＩ表示の移り変わりを示す図である。
【符号の説明】
【００６５】
１          コンテンツ再生装置
１１        マイコン
１２        メモリ
１２１      ＵＩスレッド
１２２      ステートスレッド
１２３      コマンドスレッド
１８        表示部
１９        操作部
【図１】
0004344889.tif 000002
【図２】
0004344889.tif 000003
【図３】
0004344889.tif 000004
【図４】
0004344889.tif 000005
【図５】
0004344889.tif 000006
【図６】
0004344889.tif 000007
【図７】
0004344889.tif 000008
【図８】
0004344889.tif 000009
【図９】
0004344889.tif 000010
【図１０】
0004344889.tif 000011
【図１１】
0004344889.tif 000012