JP4634477B2 - メディア・ファイルの中断のない再生方法 - Google Patents

メディア・ファイルの中断のない再生方法 Download PDF

Info

Publication number
JP4634477B2
JP4634477B2 JP2008057230A JP2008057230A JP4634477B2 JP 4634477 B2 JP4634477 B2 JP 4634477B2 JP 2008057230 A JP2008057230 A JP 2008057230A JP 2008057230 A JP2008057230 A JP 2008057230A JP 4634477 B2 JP4634477 B2 JP 4634477B2
Authority
JP
Japan
Prior art keywords
media
function
cache
data
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008057230A
Other languages
English (en)
Other versions
JP2009217859A (ja
Inventor
浩 伊藤
淳 熊木
ティンーラップ・ウォン
享 下遠野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Singapore Pte Ltd
Original Assignee
Lenovo Singapore Pte Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lenovo Singapore Pte Ltd filed Critical Lenovo Singapore Pte Ltd
Priority to JP2008057230A priority Critical patent/JP4634477B2/ja
Priority to US12/390,589 priority patent/US20090225463A1/en
Publication of JP2009217859A publication Critical patent/JP2009217859A/ja
Application granted granted Critical
Publication of JP4634477B2 publication Critical patent/JP4634477B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B19/00Driving, starting, stopping record carriers not specifically of filamentary or web form, or of supports therefor; Control thereof; Control of operating function ; Driving both disc and head
    • G11B19/02Control of operating function, e.g. switching from recording to reproducing
    • G11B19/04Arrangements for preventing, inhibiting, or warning against double recording on the same blank or against other recording or reproducing malfunctions
    • G11B19/041Detection or prevention of read or write errors
    • G11B19/042Detection or prevention of read or write errors due to external shock or vibration
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B19/00Driving, starting, stopping record carriers not specifically of filamentary or web form, or of supports therefor; Control thereof; Control of operating function ; Driving both disc and head
    • G11B19/02Control of operating function, e.g. switching from recording to reproducing
    • G11B19/04Arrangements for preventing, inhibiting, or warning against double recording on the same blank or against other recording or reproducing malfunctions
    • G11B19/041Detection or prevention of read or write errors
    • G11B19/044Detection or prevention of read or write errors by using a data buffer
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B5/00Recording by magnetisation or demagnetisation of a record carrier; Reproducing by magnetic means; Record carriers therefor
    • G11B5/02Recording, reproducing, or erasing methods; Read, write or erase circuits therefor
    • G11B5/09Digital recording

Description

本発明は、音楽または動画などのメディア・ファイルを、衝撃保護システムを備えた携帯式コンピュータに搭載されたディスク・ドライブから読み出して中断のない再生をする技術に関する。
ノートブック型パーソナル・コンピュータ(以下、ノートPCという。)には、音楽または動画ファイル(以下、メディア・ファイルという。)を再生するソフトウエア(以下、メディア・プレイヤーという。)が実装されることがある。メディア・ファイルはファイルのサイズが大きいため通常はノートPCに実装されたハード・ディスク・ドライブ(HDD)または光学ディスク・ドライブ(ODD)などのディスク・ドライブに格納されている。ノートPCでは、メモリやキャッシュなどのハードウエア資源をさまざまソフトウエアで共用しているため、メディア・プレイヤーがメディア・ファイルを再生するためにそれらを専有することはできない。
したがって、ノートPCに実装されるメディア・プレイヤーでは、メディア・ファイル全体を所定のサイズのデータ・ブロックに分割して、ディスク・ドライブからメイン・メモリに設けた比較的小さなバッファにそれらを順番に読み出しながら連続的に再生している。特許文献1は、キャッシュ・メモリをプログラム別にブロックに分割し、各ブロックを1つまたは複数のプログラムにより専用的にまたは共用して使用し、各ブロックとプログラムの対応付けをCPUからの指令で制御する技術を開示する。
特許文献2は、情報外部ソースが受信したデータだけを記憶するストリーミング・データ専用のキャッシュを設けて外部DRAM上または他のシステム・メモリ上での帯域幅の問題を解決する技術を開示する。特許文献3は、メイン・プロセッサとサブ・プロセッサで構成される情報処理装置において各プロセッサが好適に連係動作をするように画像データをキャッシュに先読みする技術を開示する。
特許文献4は、ストリーミング・データを小データ部分に分割して専用のキャッシュに送ることでキャッシュ内での効率的なストリーミング・データを管理する技術を開示する。特許文献5はストリーミング・データの先頭部分が先頭キャッシュ部で満杯になったときに、残りの部分をリング・バッファ部に書き込むことで小容量メモリでもデータの途切れをなくすことのできる技術を開示する。
特開昭62−144257号公報 特開2003−99324号公報 特開2006−31480号公報 特開2004−246898号公報 特開2003−123381号公報
ノートPCは、自動車や航空機の中やユーザの膝の上で使用されることがあるため使用中に振動や落下による衝撃が加えられることがある。HDDは回転するディスク上を極わずかな間隔を空けてヘッド/スライダが浮上しながらディスクに対するデータの書き込みまたは読み取りが行われる。ヘッド/スライダがディスク上を浮上している間にノートPCに大きな衝撃や振動が加わるとヘッドとディスクが接触して記録済みのデータが破壊されたりディスクが損傷したりするため、ノートPCにはHDDを保護するために衝撃保護システムを実装する場合がある。
衝撃保護システムは、ノートPCの落下を予測させる加速度や大きな振動を検知したときにヘッド/スライダをディスクの外周より外側に設けたランプ機構に退避させる。メディア・ファイルの再生中に衝撃保護システムが動作すると、一時的にディスク・ドライブからメイン・メモリへのメディア・ファイルの読み出しが中断する。その結果メイン・メモリにバッファリングされていたデータが枯渇してメディア・プレイヤーにデータが供給されなくなり音楽が途切れたり動画が一時的に停止したりするという問題が明らかになってきた。
一部のメディア・プレイヤーでは、メディア・ファイルをディスク・ドライブからすべてメイン・メモリに読み出すまでは再生しないようになっているが、利用できるメディア・ファイルのサイズが比較的小さい場合やバッファを専有できるような場合に限られるため、ノートPCにはこのような手法は採用されていない。また、ノートPCに実装されるオペレーティング・システム(OS)は、HDDから読み出すデータをメイン・メモリに設けたRAMディスクにプリフェッチ(先読み)するキャッシュ機能を備える。しかし、RAMディスクの容量には制限があり、またOSのキャッシュ機能はHDDから読み出すすべてのデータを対象にしているため、メディア・ファイルの再生中にメディア・ファイルがRAMディスクにフィルされている保証はないため衝撃保護システムが作動したときには再生動作の中断が生ずることがある。
そこで本発明の目的は、携帯式コンピュータにおいて衝撃保護システムを備えたディスク・ドライブからメディア・ファイルを読み出して中断のない再生をする方法を提供することにある。さらに本発明の目的はそのような方法を実現する携帯式コンピュータおよびコンピュータ・プログラムを提供することにある。
本発明は、ディスク・ドライブに対する衝撃保護システムを備える携帯式コンピュータにおいてメディア・プレイヤーが再生動作をする際に生ずる新たな課題を解決する。メディア・プレイヤーはメディア・ファイルを複数のデータ・ブロックに分割してディスク・ドライブからバッファに順番に読み出して、携帯式コンピュータの他の多くのアプリケーションとハードウエア資源を共有しながら連続再生をするように構成されている。
メディア・プレイヤーは、いずれかのデータ・ブロックをディスク・ドライブからバッファに読み出すために、オペレーティング・システムが提供する関数を呼び出す。本発明にかかるメディア・ドライバは関数の呼び出しに応答してデータ・ブロックよりサイズの大きいデータをメディア・キャッシュに書き込む。そしてメディア・キャッシュからバッファに転送されたデータ・ブロックに対してメディア・プレイヤーが再生動作をすることにより、衝撃保護システムが動作しても再生の中断を防ぐことができるようになる。
最初にメディア・プレイヤーに読み出された関数をフックしてデータ・ブロックよりサイズの大きいデータをメディア・キャッシュに書き込むように引数を修正することでメディア・キャッシュに書き込むことができる。ディスク・ドライブからはメディア・ファイル以外のファイルも呼び出されるため、オペレーティング・システムが提供する複数の関数の中からメディア・ファイルを読み出すために呼び出された関数を選択して引数を修正することでメディア・キャッシュをメディア・ファイルの専用として利用できる。さらに、携帯式コンピュータにおけるメディア・ファイル以外のファイルの処理を変更する必要がなくなる。
メディア・キャッシュに書き込む契機となるデータ・ブロックを先頭データ・ブロックにすれば、メディア・ファイルの最初から中断しないで再生することができるようになる。メディア・ドライバは、メディア・キャッシュにメディア・ファイルの全体を書き込んでもよい。この場合は、それ以後衝撃保護システムが動作してディスク・ドライブが停止しても当該メディア・ファイルの再生動作はまったく影響を受けない。
メディア・ドライバは、メディア・キャッシュにメディア・ファイルをデータ・ブロックのサイズよりも大きいデータ・クラスタとデータ・ブロックのサイズより小さい複数のデータ・フラグメントに分割して書き込んでもよい。データ・クラスタからバッファにデータ・ブロックが転送されたことに応答してメディア・プレイヤーが再生動作を開始するようにすれば、データ・クラスタのサイズを調整して、ユーザがメディア・プレイヤーに再生の指示をしてから実際に再生が開始するまでの遅延時間を調整することができる。なお、データ・クラスタのサイズはデータ・ブロックのサイズよりは大きくメディア・ファイル全体のサイズよりは小さい。
データ・クラスタのサイズをデータ・ブロックのサイズの整数倍とし、データ・フラグメントのサイズをデータ・ブロックのサイズの整数分の1倍にすれば、メディア・キャッシュからバッファにデータ・ブロックの単位でデータを容易に転送することができる。データ・フラグメントをそれぞれ独立したスレッドで読み出すようにすれば、衝撃保護システムの動作の影響を少なくしてディスク・ドライブから、メディア・キャッシュに書き込むことができる。なお、データ・クラスタのサイズはデータ・ブロックのサイズよりは大きくメディア・ファイル全体のサイズよりは小さい。
メディア・プレイヤーがリスト・ファイルを提供する場合には、ユーザは最初にディスク・ドライブからリスト・ファイルを読み出して所望のメディア・ファイルを選択する。リスト・ファイルの読み出しは続いてメディア・ファイルが読み出される可能性が高いことを意味している。最初に、メディア・プレイヤーはリスト・ファイルを読み出すために、オペレーティング・システムが提供する関数を呼び出す。メディア・ドライバはリスト・ファイルのリストがメディア・ファイルを含むか否かを判断する。メディア・ドライバはリストがメディア・ファイルを含むと判断したときに、リストに含まれるメディア・ファイルをメディア・キャッシュに書き込む。リストに含まれるメディア・ファイルの少なくとも一部がメディア・キャッシュに書き込まれた後に前記メディア・プレイヤーが再生動作をする。
本発明により、携帯式コンピュータにおいて衝撃保護システムを備えたディスク・ドライブからメディア・ファイルを読み出して中断のない再生をする方法を提供することができた。さらに本発明によりそのような方法を実現する携帯式コンピュータおよびコンピュータ・プログラムを提供することができた。
図1は、ノートPC10に実装されたハードウエアの構成を示す概略ブロック図である。CPU11は、ノートPC10の中枢機能を担う演算処理装置で、OS、BIOS、デバイス・ドライバ、あるいはアプリケーション・プログラムなどを実行する。メディア・プレイヤーの再生動作もCPU11で実行される。CPU11は、ノース・ブリッジ13およびノース・ブリッジ13にさまざまなバスを経由して接続された各デバイスを制御する。ノース・ブリッジ13は、メイン・メモリ15へのアクセス動作を制御するためのメモリ・コントローラ機能や、CPU11と他のデバイスとの間のデータ転送速度の差を吸収するためのデータ・バッファ機能などを含む。
メイン・メモリ15は、CPU31が実行するプログラムの読み込み領域、処理データを書き込む作業領域として利用される揮発性のRAMである。メイン・メモリ15には、図2に示すようにOSのキャッシュ機能を実現するOSキャッシュ領域55、本発明のキャッシュ機能を提供するメディア・キャッシュ領域53、およびメディア・プレイヤー103の再生データを記憶するバッファ領域51を備える。なお、メディア・キャッシュ領域53は、メイン・メモリ15の一部としてではなく専用のメモリで構成してもよい。ビデオ・コントローラ15はノース・ブリッジ13に接続され、グラフィック・アクセラレータおよびVRAMを備えており、CPU11からの命令を受けて描画すべき画像ファイルのイメージを生成してVRAMに書き込み、VRAMから読み出したイメージを画像データとしてLCD16に送る。メディア・プレイヤーが再生する動画はLCD16に表示される。
サウス・ブリッジ17は、ノース・ブリッジ13に接続され、さまざまな周辺入出力デバイスのインターフェースやPCIバス、PCI−Expressバスのポートを備えている。サウス・ブリッジ17には、オーディオ・コントローラ19およびHDD23が接続される。オーディオ・コントローラ19は、サウス・ブリッジ17を経由して受け取ったディジタル音声信号をアナログ音声信号に変換してスピーカ21に送る。メディア・プレイヤーが再生する音声はスピーカ21から出力される。HDD23には、OS、デバイス・ドライバ、アプリケーション、メディア・プレイヤー、メディア・ファイルなどの周知のプログラムの他に、本実施の形態にかかるソフトウエア・プログラムであるキャッシュ・コントローラ109およびメディア・ドライバ119(いずれも図2参照)を格納する。
さらにサウス・ブリッジ17は、PCIバスまたはLPCバス25を介して、従来からノートPC10に使用されているレガシー・デバイス、あるいは高速なデータ転送を要求しないデバイスに接続される。LPCバス25には、エンベデッド・コントローラ(EC)27、I/Oコントローラ43、およびBIOSを格納したフラッシュROM41などが接続されている。EC27は、8〜16ビットのCPU、ROM、RAMなどで構成されたマイクロ・コンピュータであり、さらに複数チャネルのA/D入力端子、D/A出力端子、タイマー、およびディジタル入出力端子を備えている。EC27には、それらの入出力端子を介して加速度センサ29および電源装置を制御するパワー・コントローラ31が接続されており、ノートPC10の内部の動作環境の管理にかかるプログラムをCPU11とは独立して実行させることができる。
加速度センサ29は、ノートPC10の筐体に発生する加速度を検出してアナログ信号としてEC27に出力する。EC27は、加速度センサ29から受け取った加速度情報をディジタル信号に変換して内部のRAMに記憶する。EC27とパワー・コントローラ31との間は、専用のバスであるSPI(Serial Peripheral Interface)によって接続される。
パワー・コントローラ31には、DC−DCコンバータ33が接続される。DC−DCコンバータ33は、AC/DCアダプタ39またはバッテリ35から供給される直流電力を、ノートPC10を動作させるために必要な複数の電圧に変換し、さらに電源モードに応じて定義された電力供給区分に基づいて各々のデバイスに電力を供給する。AC/DCアダプタ39は一次側が商用電源に接続されて交流電圧を直流電圧に変換し、二次側はノートPC10に対して着脱可能である。AC/DCアダプタ39はノートPC10に接続されると、DC−DCコンバータ33とバッテリィ35を充電する充電器37に電力を供給する。ノートPC10はモバイル環境で使用するときにはノートPC10に対するAC/DCアダプタ39の接続を外してバッテリィ35から電力を供給する。
I/Oコントローラ43には、キーボードやマウスなどの入力デバイス45が接続される。フラッシュROM41は不揮発性で記憶内容の電気的な書き替えが可能なメモリであり、システムの起動および管理に使われる基本プログラムであるシステムBIOS、電源および筐体内の温度などを管理するソフトウエアである各種ユーティリティ、ノートPC10の起動時にハードウエアの試験や初期化を行うソフトウエアであるPOST(Power-On Self Test)などを格納する。
図2は、本実施の形態にかかるメディア・ファイルの読み出し方法を説明するためのブロック図である。図2のブロック図は、OSとしてWindows(登録商標)を例示してメディア・ファイルの読み出しに関連する主要なソフトウエアとハードウエアだけを示している。ただし、本発明はOSがWindowsの場合だけに限定されるものではなく、本発明の思想の範囲内で他の周知のOSに適用することもできる。図2では、メディア・コントロール109、メディア・ドライバ119、およびメディア・キャッシュ領域53以外は周知の要素である。ライン102より上側に記載されたソフトウエアはプロセッサ11のユーザ・モードで動作し、下側に記載されたソフトウエアはカーネル・モードで動作する。
アプリケーション101およびメディア・プレイヤー103は、ユーザがLCD16および入力デバイス45を通じてアクセスすることでHDD23に格納されたさまざまなファイルを読み出すことができる。アプリケーション101は、メディア・ファイル以外のファイルを処理し、メディア・プレイヤー103はメディア・ファイルを読み取って再生スピーカ21およびLCD16から音声または動画を出力する。メディア・プレイヤー103は、メディア・ファイルを再生する際にメイン・メモリ15のバッファ領域51にFIFO方式またはリング・バッファ方式で同一サイズのデータ・ブロックを再生の順番に読み出して、再生データに中断が生じないように制御している。
ただし、本発明は異なるサイズのデータ・ブロックを再生の順番に読み出すメディア・プレイヤーに適用することもできる。メディア・ファイルは、そのファイル名の拡張子で特定することができる。たとえば、動画ファイルにはmpg / mpeg 、vob 、mp4、m4v 、m4a 、wmv 、asf / asx 、mov 、rm / ram 、3gp 、3g2 、flv 、mqv 、wvx などの拡張子が付される。また音楽ファイルには、wav (wave) 、mid (midi) 、mp3 、wma、aif 、mld 、kmf 、mmf 、oma、flac、m3u などの拡張子が付される。
Kernel32.dllは、WindowsのサブシステムDLL(Dynamic Link Library)の一部であり、公開されているWindowsAPI関数を非公開のカーネル・モード・システム・サービスへの呼び出しに変換する。たとえば、アプリケーション101またはメディア・プレイヤー103がHDD23からファイルをメイン・メモリ15に読み出すときにはReadFile APIというアプリケーションに公開されている関数を読み出すと、それに応じて非公開のNtoskrnl.exeに実装されているNtReadFileという内部関数が呼び出されてHDD23からデータが出力される。
Ntdll.dllは、サブシステムDLLを使用するための関数を提供するサポート・ライブラリである。Ntdll.dllは、ユーザ・モードから呼び出すことができるインターフェース機能(System Service Dispatch Stub)と、サブシステムDLLが使用するNtReadFile関数などの内部サポート関数で構成されている。割り込みディスパッチ・テーブル(IDT)111は、OSによりメイン・メモリ15に展開され、アプリケーション101またはメディア・プレイヤー103がソフトウエア割り込みを行って所定のシステム・サービスに移行するためのアドレスを各エントリーに格納する。
たとえば、CPU11のEAXレジスタにシステム・サービス番号を設定してエントリーのインデックスをINT 0x2e(16進数)と指定すれば、そのエントリーに格納されたアドレスのシステム・サービスであるシステム・サービス・ディスパッチャ(SSD)115を実行して、プロセッサ11の制御をユーザ・モードからカーネル・モードに移行させることができる。
SSD115は、Ntoskrnl.exeの一部であり、スレッドのユーザ・モード・スタックからカーネル・モード・スタックに呼び出し元コードの引数(パラメータともいう。)をコピーする。SSD115はシステム・サービス・ディスパッチ・テーブル(SSDT)113のエントリーを参照して呼び出されたシステム・サービスを実行する。SSDT113には、システム・サービスのIDと対応するシステム・サービスを記述するコードの先頭アドレスが格納されている。たとえば、あるエントリーにはIDとしてNtReadFile関数を示す情報が格納され、アドレスとしてNtReadFile関数117の実際のコードを記憶しているメイン・メモリ15上のアドレスが格納されている。NtReadFile関数117は、Ntoskrnl.exeの一部である。
メディア・ドライバ119の構成については図3を参照して後に説明する。メディア・コントロール109は、LCD16および入力デバイス45を通じてユーザがメディア・ドライバ119に対するパラメータ設定をするユーザ・インターフェースを提供する。ユーザは、メディア・コントロールが作成したウインドウを通じてメディア・キャッシュ領域53にフィルするメディア・ファイルの種類および読み出すデータのサイズなどを指定することができる。ファイル・システム123は、HDD23に記録されているデータを管理するためにOSが提供するソフトウエアである。ファイル・システム123は、FAT(File Allocation Table)およびディレクトリを作成してHDD23に関するファイルの記録、読み取り、削除、または移動などを管理する。
OSキャッシュ・マネージャ121はHDD23に対するアクセスのパフォーマンスを向上させるためにOSが提供するソフトウエアである。OSキャッシュ・マネージャ121は、HDD23に対して、ReadFile API関数やWriteFile API関数が呼び出されたときに毎回HDD23にアクセスしないでも処理できるように、OSキャッシュ領域55にデータをプリフェッチしてフィルする。OSキャッシュ・マネージャ121は、ノートPC10で実行されるすべてのソフトウエアからのHDD23に対するアクセスを対象にして、独自のアルゴリズムに基づいてOSキャッシュ領域55に対するファイルのフィルおよびフラッシュを管理する。なお、新たなデータをメディア・キャッシュ領域53やOSキャッシュ領域にフィルしたり、その際に古いデータをフラッシュしたりすることをキャッシングという。
APSドライバ125は、加速度センサ29が検出した加速度信号に特別なアルゴリズムを適用して、ノートPC10に深刻な衝撃が発生することを予測したときに停止信号を生成しHDD23に送る。ここにAPSとは、ハードディスク・アクティブ・プロテクション・システム(Active Protection System)といわれるHDD23に対する周知の衝撃保護システムであり、加速度センサ29とAPSドライバ125で構成される。停止信号を受け取ったHDD23は、直前にディスク・ドライバ127を通じてOSから送られたコマンドの処理が完了するとヘッド/スライダをランプ機構に退避させて衝撃に備えることでデータおよびディスクを衝撃から保護する。ヘッド/スライダがランプ機構に退避している間はHDD23にアクセスするCPU11からのコマンドは実行されない。
APSドライバ125は、メイン・メモリ15にキューを展開し、停止信号が生成された後にHDD23にアクセスするために送られてきたコマンドをキューイングし、停止信号が解除された後にキューイングされたコマンドをディスク・ドライバ127に送る。ディスク・ドライバ127は、HDD23の動作およびデータ転送を制御するためのソフトウエアである。
図3は、メディア・ドライバ119の主要な構成を示す機能ブロック図である。I/O制御部151は、外部と内部の各要素とのインターフェース機能を果たす。ファイル属性照会部153は、アプリケーション101またはメディア・プレイヤー103からReadFile API関数が呼び出されたときに、ファイル・システム123に対してNtReadFile関数に設定されたハンドル・ネームに対応するファイルがメディア・ファイルであるか否かをたとえばNtQuerySystemInformationという関数を発行して問い合わせる。
ファイル読み取り部155は、ReadFile API関数に対応するNtReadFile関数を実行する。ファイル読み取り部155は、メディア・ファイルに対してはメディア・プレイヤー103で指定された引数とは異なる引数を設定してNtReadFile関数を実行し、メディア・ファイル以外のファイルに対してはアプリケーション101で指定された引数を変更しないでNtReadFile関数を実行する。
ファイル読み取り部155は、ファイル属性照会部153が、ReadFile API関数で読み出されようとしているファイルがメディア・ファイルであると判断したときに、当該メディア・ファイルを分割してメディア・キャッシュ領域53にフィルするためのシステム・スレッドを生成する。そのシステム・スレッドはユーザ・モード・スレッドとは異なりカーネル・モードだけで動作する特殊なスレッドである。さらに、ファイル読み取り部155は、ファイル属性照会部153が、ReadFile API関数で読み取られようとしているリスト・ファイルのリストがメディア・ファイルを含むと判断したときに、当該メディア・ファイルをメディア・キャッシュ領域53にフィルするためのシステム・スレッドを生成する。
メディア・キャッシュ制御部157は、ファイル読み取り部155がHDD23から読みとったメディア・ファイルをFIFO方式またはリング・バッファ方式でメディア・キャッシュ領域53にキャッシングする。メディア・キャッシュ制御部157は、ファイル読み取り部155がメディア・ファイルをデータ・ブロックよりもサイズの小さい複数のデータ・フラグメントに分割してHDD23から読み出してメディア・キャッシュ領域53にフィルしたときには、各データ・フラグメントをデータ・ブロックのサイズに合成する。
SSDT書き換え部159は、メディア・ドライバ119がOSと一緒にメイン・メモリ15にロードされるときに、SSDT113におけるNtReadFile関数というIDに対応するアドレスをNtReadFile関数117のアドレスからメディア・ドライバ119のアドレスに書き換える。このようにSSDT113のアドレスをOSがあらかじめ設定した関数のアドレスから別のコードのアドレスに書き換えることを、関数をフックするという。データ・ブロック転送部161は、メディア・プレイヤー103がバッファ領域15に読み出すために呼び出したReadFile API関数で指定されたデータ・ブロックがメディア・キャッシュ領域53にフィルされているか否かを判断して、フィルされている場合は当該データ・ブロックをバッファ領域51に転送する。データ・ブロック転送部161はフィルされていないと判断したときは処理をファイル読み取り部155に渡し、ファイル読み取り部155は、NtReadFile関数を実行してHDD23から本実施の形態にかかる方法でメディア・ファイルを読み出す。なお、図3に示したメディア・ドライバ119の構成は一例であり、当業者にとって明らかな範囲で同等の機能を実現できる他のいかなる構成を採用することもできる。
ここで、図2および図3に基づいて従来の方法によるメディア・プレイヤー103によるメディア・ファイルの再生動作を説明する。SSDT113には、SSD115によりNtReadFile関数のIDが指定されると、点線で示すようにNtReadFile関数117が実行されるようにアドレスが設定されている。メディア・プレイヤー103は、メディア・ファイルを一定のサイズのデータ・ブロックに分割してバッファ領域51に順番に読み出しながら再生動作を行う。このとき各データ・ブロックについてReadFile API関数を呼び出すと、OSのカーネルにおいて対応するNtReadFile関数117が実行される。各ReadFile API関数に対しては、メディア・プレイヤー103により、読み出しにかかるデータ・ブロックのサイズ、メディア・ファイルの先頭位置からのオフセット値、および記憶するバッファ領域51のアドレスなどが引数として設定される。
NtReadFile関数117は、各データ・ブロックに対して呼び出されたReadFile API関数に対応して連続的に実行され、APSドライバ125が停止信号を生成していないときには、HDD23から順番にデータ・ブロックが読み出されてバッファ領域51に記憶される。OSキャッシュ・マネージャ121はメディア・プレイヤー103だけでなくアプリケーション全体に対してサービスを提供している。したがって、メディア・ファイルのデータ・ブロックはOSキャッシュ領域55にフィルされている場合もあれば、一旦フィルされた後にフラッシュされている場合もある。OSキャッシュ領域55にフィルされているデータ・ブロックは、そこからバッファ領域51に書き込まれる。したがって、OSキャッシュ領域55にデータ・ブロックがフィルされている限り、APSドライバ125が停止信号を生成してもバッファ領域51に供給されるデータが途切れることはない。
しかし、OSキャッシュ領域55はメディア・ファイルに対する専用のキャッシュではないため、HDD23にアクセスするアプリケーション101の数やデータ量により、OSキャッシュ領域55にフィルされるデータが競合すると、メディア・ファイルのデータ・ブロックはフラッシュされてしまう。そのときにAPSドライバ127が停止信号を生成すると、HDD23が停止してバッファ領域51にデータ・ブロックが供給されなくなり再生動作が中断する。
このような問題を解決するための本実施の形態にかかる方法を図2〜図5に基づいて説明する。図4は、本実施の形態にかかるメディア・ファイルの再生方法を説明する手順を示すフローチャートである。図5(A)は、メディア・プレイヤー103が要求するメディア・ファイル250のデータの単位(データ・ブロック)を示し、図5(B)と図5(C)は、メディア・ドライバ119がメディア・キャッシュ領域53にキャッシングするメディア・ファイル250の単位を示している。図5(A)に示すようにメディア・プレイヤー103は、メディア・ファイル250をデータ・ブロック#1〜#nまでのn個の同一サイズのデータ・ブロックに分割してバッファ領域51に読み出す。図5(B)は、メディア・ファイル250の全体をメディア・キャッシュ領域53にフィルする例で、図5(C)はメディア・ファイル250をデータ・クラスタ#1xとデータ・フラグメント#2x〜#mxに分割してメディア・キャッシュ領域53にフィルする例を示す。
再生動作を開始する前に、OSと一緒にメディア・コントロール109とメディア・ドライバ119がメイン・メモリ15にロードされ、SSDT書き換え部159によりSSDT113のNtReadFileというIDのメイン・メモリ15上でのアドレスが、NtReadFile関数117の先頭アドレスからメディア・ドライバ119の先頭アドレスに書き換えられてフックされている。
ブロック201ではアプリケーション101またはメディア・プレイヤー103が、ファイル・システム123に対して、相互に独立してCreateFile API関数およびReadFile API関数を呼び出してHDD23からのデータの読み出し要求を行っている。OSキャッシュ・マネージャ121は、メディア・ドライバ119によるメディア・キャッシュ領域53のキャッシングとは独立してOSキャッシュ領域55に対するキャッシングを管理している。メディア・プレイヤー103は、メディア・ファイル250を複数のデータ・ブロックに分割して読み出すが、ブロック201ではその中の先頭データ・ブロック#1の読み出し要求をしている。
SSDT113のアドレスは書き換えられているため、アプリケーション101またはメディア・プレイヤー103から呼び出されたReadFile API関数はすべてメディア・ドライバ119で実行される。メディア・プレイヤー103は、図5(A)に示すようにメディア・ファイル250を先頭データ・ブロック#1から最終データ・ブロック#nまでのn個のデータ・ブロックに分割しそれぞれのデータ・ブロックに対してReadFile API関数を呼び出してバッファ領域51に順番に書き込むようにOSに要求する。本実施の形態においては、このようなメディア・プレイヤーの標準的な動作を変更する必要はない。
ブロック203では、ファイル属性照会部153がCreateFile API関数で生成された先頭データ・ブロック#1または他のファイルのハンドル・ネームに基づいて当該NtReadFile関数がメディア・ファイルを読み出しているか否かをファイル・システム123に問い合わせる。ファイル属性照会部153が、NtReadFile関数がメディア・ファイル以外の読み出しまたはメディア・コントロール109で設定されていないメディア・ファイルの読み出しを行うものであると判断したときは、ブロック205に移行しメディア・キャッシュ領域53にプリフェッチしない通常の読み出しが行われる。
ブロック205では、ファイル読み取り部155が、アプリケーション101から呼び出されているReadFile API関数の引数には変更を加えないでNtReadFile関数を実行する。その結果APSドライバ125が停止信号を生成していない限り、ファイル・システム123を通じて所定のファイルがメイン・メモリ15の指定されたアドレスに書き込まれる。
ブロック203でファイル属性照会部153がメディア・ファイルであると判断したときはブロック207に移行する。ブロック207では、読み出しにかかるメディア・ファイル250の先頭データ・ブロック#1がメディア・キャッシュ領域53に存在するか否かをデータ・ブロック転送部161が判断する。先頭データ・ブロック#1が存在する場合は、ブロック213に移行してデータ・ブロック転送部161がメディア・キャッシュ領域53にフィルされている先頭データ・ブロック#1をバッファ領域51の指定されたアドレスに書き込むと、ブロック215でOSはメディア・プレイヤー103に書き込み完了を示すリターンを返送する。後にブロック209の手順で説明するように、先頭データ・ブロック#1がメディア・キャッシュ領域53に存在していることは、メディア・ファイル250全体または少なくともデータ・クラスタ#1xが存在していることを意味する。
リターンを受け取ったメディア・プレイヤー103はブロック217で再生動作を開始する。先頭データ・ブロック#1のリターンを受け取ったメディア・プレイヤー103はブロック219で、メディア・ドライバ119のキャッシング動作からは独立して、所定のタイミングで後続のデータ・ブロック#2ないし#nをバッファ領域51に読み出すためのReadFile API関数を呼び出す。ここで一旦ブロック207の説明に戻る。ブロック207でデータ・ブロック転送部161が、先頭データ・ブロック#1がメディア・キャッシュ領域53に存在しないと判断した場合は、ブロック209でメディア・ドライバ119は、データのメディア・キャッシュ領域53へのフィルを開始する。
メディア・キャッシュ領域53へのフィルは、図5(B)または図5(C)のいずれかのデータ構造に基づいて行われる。メディア・キャッシュ領域53のサイズが十分に大きい場合は、図5(B)のようにNtReadFile関数に対してそのような引数を設定してメディア・ファイル250の全体をメディア・キャッシュ領域53にフィルすることができる。こうすれば、メディア・ファイル250を再生している間にAPSドライバ125が停止信号を生成しても、バッファ領域51にはメディア・キャッシュ領域53からデータ・ブロックが供給されるので再生動作が中断することはない。
しかし、メディア・ファイルの全体をフィルする場合には、全体のフィルが終了した後に先頭データ・ブロック#1がバッファ領域51に書き込まれ、それに続いてリターンが返送されてからメディア・プレイヤー103が再生動作を開始するので、ユーザがメディア・プレイヤー103に対して再生のためのアクセスを開始してから再生を開始するまでの遅延時間が発生する。遅延時間を望まない場合またはメディア・キャッシュ領域53のサイズが小さいためにメディア・ファイル250の全体をメディア・キャッシュ領域53にフィルできない場合は、ファイル読み取り部155は、図5(C)に示すように、メディア・ファイル250をデータ・クラスタ#1xとそれに続くデータ・フラグメント#2x〜#mxに分割してメディア・キャッシュ領域53にフィルする。
ファイル読み取り部155は、データ・ブロック#1を読み出すためのNtReadFile関数に対して、図5(C)に示すように先頭のデータ・クラスタ#1xに対しては、データ・ブロックの整数倍のサイズを設定し、さらに、記憶する場所がメディア・キャッシュ領域53の範囲となるように引数を設定してブロック209で実行する。図5(C)の例では、データ・クラスタ#1xのサイズはデータ・ブロックの3倍に設定されている。再生を開始したあとにAPSドライバ125が停止信号を生成することによる再生の中断を防ぐにはデータ・クラスタ#1xのサイズはメディア・キャッシュ領域53のサイズの範囲内でできるだけ大きいことが望ましい。データ・クラスタ#1xのサイズがデータ・ブロックのサイズの整数倍であるため、データ・ブロック転送部161がメディア・キャッシュ領域53にメディア・プレイヤー103から要求されたデータ・ブロックが存在すると判断したときには、データ・クラスタ#1xからすべてのデータ・ブロックを抽出してバッファ領域51に転送することができる。
ブロック213において、メディア・キャッシュ領域53にフィルされたデータ・クラスタ#1xから先頭データ・ブロック#1がバッファ領域51に転送されると、ブロック215でリターンが返され、メディア・プレイヤー103は再生動作を開始する。図5(C)のデータ構造でキャッシングする場合は、ブロック211で、データ・クラスタ#1xに続くデータ・フラグメント#2x〜#mxのメディア・キャッシュ領域53へのフィルが行われる。ファイル読み取り部155は、各データ・フラグメント#2x〜#mxに対して新たなシステム・スレッドを生成してそれらを順番にメディア・キャッシュ領域53にブロック209の手順から独立してフィルする。
データ・フラグメント#2x〜#mxの各サイズはデータ・ブロックのサイズの、整数分の1倍になるように選定される。この例では、3分の1倍に設定している。各データ・フラグメントのサイズを、各データ・ブロックのサイズよりも小さくすると、APSドライバ125が頻繁に停止信号の生成と解除を繰り返す可能性のある環境下で後続データの読み取出しを行うときに、HDD23からのデータ・フラグメントの読み出し動作が中断する可能性が低くなるため有利である。ただし、データ・クラスタ#1xに続くデータをデータ・ブロックと同じサイズまたはそれより大きなサイズで読み出すことも可能である。
ファイル読み取り部155は、新たなシステム・スレッドにおいて引数にデータ・フラグメントのサイズを設定し、記憶場所にメディア・キャッシュ領域53を設定したNtReadFile関数を順番に実行してファイル・システム123を経由してHDD23から読みとった後続のデータ・フラグメント#2x〜#mxをメディア・キャッシュ領域53にフィルする。NtReadFile関数は、データ・フラグメントごとにオフセット・ポインタを変更して生成および実行され、最終のデータ・フラグメント#mxまでフィルされた時点でブロック211の手順が終了する。
ここで注意すべき点は、データ・フラグメント#2x〜#mxのサイズは、メディア・プレイヤー103が要求するデータ・ブロック#1〜#nのサイズとは異なる点と、メディア・キャッシュ領域53には、メディア・ファイル250以外の他のメディア・ファイルのデータ・フラグメントもフィルされる点である。さらに、データ・フラグメント#2x〜#mxはそれぞれ別スレッドで読み出されるため、メディア・キャッシュ領域53にフィルされる順番と、NtReadFile関数が実行される順番とが一致するとは限らない。メディア・キャッシュ制御部157は、メディア・プレイヤー103が要求するデータ・ブロックのサイズごとにデータ・ブロック転送部161がバッファ領域51にデータを転送するために、メディア・ファイルごとに各データ・フラグメントのエントリーのポインタをメディア・ファイル250の順番にリンクしてデータ・フラグメント#2x〜#mxをデータ・ブロックの単位に合成する。
ここでブロック221の説明に移る。ブロック221では、NtReadFile関数に設定された引数に基づいて、データ・ブロック転送部161が、データ・ブロック#1に続くデータ・ブロック#2をメディア・キャッシュ領域53からバッファ領域53に転送できるか否かを検査する。図5(B)に示した例では再生が開始される前にメディア・ファイル250の全体がメディア・キャッシュ領域53にフィルされているので、データ・ブロック転送部161はすべてのデータ・ブロック#1〜#nをメディア・キャッシュ領域53からバッファ領域51に転送することができる。図5(C)に示した例では、再生が開始される前にデータ・ブロック#1〜#3がデータ・クラスタ#1xとしてメディア・キャッシュ領域53にフィルされているので、データ・ブロック#2はメディア・キャッシュ領域53から供給できることになる。この場合、データ・ブロック転送部161は、ブロック223でバッファ領域51にメディア・プレイヤー103の要求に応じてデータ・ブロック#2を書き込む。
ここで、データ・ブロック#4は、データ・フラグメント#2x〜#4xで構成されている。メディア・プレイヤー103によりデータ・ブロック#4の読み出し要求が行われている場合には、データ・ブロック転送部161はメディア・キャッシュ領域53にフィルされたデータ・フラグメント#2x〜#4xのエントリーのポインタがリンクされてデータ・ブロック#4が形成されているか否かを判断する。
データ・フラグメント#2x〜#4xがすべてメディア・キャッシュ領域53に存在し、データ・ブロック#4を構成するためにリンクされている場合は、ブロック223に移行してデータ・ブロック転送部161によりバッファ領域51にデータ・ブロック#4が書き込まれる。メディア・キャッシュ領域53にデータ・フラグメント#2x〜#4xのいずれかが不足している場合はフィルされるまで待機する。この時点でデータ・ブロック#4を構成するデータ・フラグメントが不足している理由は、長時間APSドライバ125が停止信号を維持していることが考えられる。
しかし、データ・クラスタ#1xはサイズが大きいため、所定の時間だけデータ・ブロック転送部161はメディア・キャッシュ領域53にフィルされたデータ・クラスタ#1xからバッファ領域51に要求されたデータ・ブロック#1〜#3を順番に供給することができる。また、データ・フラグメント#2x〜#mxはデータ・ブロックよりサイズが小さいのでAPSドライバ125の動作の影響を受けにくくなっているため、メディア・キャッシュ領域53が枯渇することがなくなりメディア・プレイヤー103での連続再生は維持される。要求されたデータ・ブロックがバッファ領域51に書き込まれると、ブロック225でOSからリターンがメディア・プレイヤー103に送られて、メディア・プレイヤー103は後続のデータ・ブロックを再生することが可能になる。
本実施の形態では、最初のデータ・ブロック#1がメディア・プレイヤー103から読み出されたことを契機にして、メディア・ファイル250の全体またはデータ・クラスタ#1xをメディア・キャッシュ領域53にフィルしてから再生する例を説明したが、データ・ブロック#1に続くいずれかのデータ・ブロックを契機にしてもよい。その場合は、当該データ・ブロック以降の再生動作において衝撃保護システムによる中断を防ぐことができるようになる。
つぎにメディア・プレイヤー103によるメディア・ファイルの他の再生方法を説明する。メディア・プレイヤーが扱うファイルの中には、再生リストを記録したリスト・ファイルが含まれることがある。ユーザは最初にリスト・ファイルを読み出して、リストのすべてのメディア・ファイルまたは選択したメディア・ファイルを順番に連続して再生することができる。本実施の形態では、リスト・ファイルが読み取られた時点でメディア・ファイルの再生を予測して、メディア・キャッシュ領域53にプリフェッチしておくことにより、衝撃保護システムが作動しても再生動作が中断しない方法を提供する。
ブロック301ではメディア・プレイヤー103が、ファイル・システム123に対してCreateFile API関数およびReadFile API関数を呼び出してHDD23からのリスト・ファイルの読み出し要求を行う。NtReadFile関数は、メディア・ドライバ119のロード時にフックされている。ブロック303では、ファイル属性照会部153がCreateFile API関数で生成されたリスト・ファイルのハンドル・ネームに基づいて当該読み出しのために実行されるNtReadFile関数がメディア・ファイルのリストを含むリスト・ファイルの読み出しであるか否かをファイル・システム123に問い合わせる。ファイル属性照会部153がリスト・ファイルのリストにメディア・ファイルを含まないと判断したときは、ブロック305に移行し通常のリスト・ファイルの読み出し動作が行われる。
ブロック303でファイル属性照会部153が、リスト・ファイルのリストがメディア・ファイルを含むと判断したときはブロック307およびブロック311に移行する。ブロック311では、ファイル読み取り部155がReadFile API関数に設定された引数を設定してNtReadFile関数を実行し、リスト・ファイルをバッファ領域51に書き込みブロック313でOSがリターンをメディア・プレイヤー103に返送する。それ以後、ユーザはLCD16に表示されたすべてのまたは選択したメディア・ファイルの再生を開始することができる。
ブロック307では、リスト・ファイルのリストに示されたすべてのメディア・ファイルがメディア・キャッシュ領域53に存在するか否かをデータ・ブロック転送部161が判断する。すべてのメディア・ファイルが存在する場合は、ブロック315に移行する。ブロック307で、データ・ブロック転送部161がリスト・ファイルのリストに示されたすべてのメディア・ファイルまたはいくつかのメディア・ファイルがメディア・キャッシュ領域53に存在しないと判断したときは、ブロック309に移行し、ファイル読み取り部155は新たなシステム・スレッドを生成してNtReadFile関数を実行し、不足するメディア・ファイルを順番にメディア・キャッシュ領域53にフィルする。不足するメディア・ファイルがすべてフィルされるとブロック315に移行する。
ブロック307で、メディア・キャッシュ制御部157がリスト・ファイルのリストに示されたすべてのメディア・ファイルがメディア・キャッシュ領域53にフィルされていると判断したときはブロック315に移行する。ブロック315では、メディア・プレイヤー103は再生のために複数のメディア・ファイルの連続的な読み出し要求を開始する。メディア・プレイヤー103はリスト・ファイルのリストに対して設定した各メディア・ファイルについて図5(A)で示したようなデータ・ブロックごとにReadFile API関数を呼び出して順番に再生する動作を開始する。
ブロック317では、最初のメディア・ファイルの先頭データ・ブロック#1をメディア・キャッシュ領域53からバッファ領域53に転送できるか否かをデータ・ブロック転送部161が検査する。データ・ブロック転送部161が転送可能であると判断したときはブロック321に移行してデータ・ブロック転送部161によりバッファ領域51に先頭データ・ブロック#1が書き込まれる。先頭データ・ブロック#1の書き込みが終了するとOSはメディア・プレイヤー103にブロック323でリターンを返送し再生が開始される。以後、ブロック315に戻って、図4の手順にしたがってメディア・キャッシュ領域53へのフィルと、そこからのバッファ領域51へデータ・ロックの転送が繰り返される。すべてのデータ・ブロックの要求に対してメディア・キャッシュ領域53からバッファ領域51にデータが書き込まれるので、APSドライバ125が停止信号を生成してHDD23の動作が一時的に停止してもメディア・プレイヤー103の再生動作が中断することはない。
ブロック317で要求されたデータ・ブロックをメディア・キャッシュ領域53から転送することができないときはブロック319に移行し、当該データ・ブロックを含むメディア・ファイルをメディア・キャッシュ領域53にフィルするためのシステム・スレッドが生成されているか否かをファイル読み取り部155が判断する。すでにシステム・スレッドが生成されてNtReadFile関数が実行されている場合は、ブロック317に移行して待機する。まだシステム・スレッドが生成されていないときは、ブロック309に移行する。
本実施の形態によれば、図4の手順でも、また、図6の手順でもOSおよびメディア・プレイヤー103には変更を加えないで、メディア・ドライバ119を追加するだけで、衝撃保護システムを搭載するノートPCで中断のないメディア・ファイルの再生をすることができる。
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
ノートPC10に実装されたハードウエアの構成を示す概略ブロック図である。 本実施の形態にかかるメディア・ファイルの読み出し方法を説明するブロック図である。 メディア・ドライバの主要な構成を示す機能ブロック図である。 本実施の形態にかかるメディア・ファイルの再生方法を説明する手順を示すフローチャートである。 メディア・プレイヤーが要求するメディア・ファイルのデータの単位とメディア・ドライバがキャッシングするメディア・ファイルの単位を説明する図である。 本実施の形態にかかるメディア・ファイルの他の再生方法を説明する手順を示すフローチャートである
符号の説明
51…バッファ領域
53…メディア・キャッシュ領域53
55…OSキャッシュ領域

Claims (22)

  1. 落下を検知したときにディスク・ドライブに対するアクセスを停止する衝撃保護システムとオペレーティング・システムのキャッシュ機能を実現するOSキャッシュとを備える携帯式のコンピュータにおいてメディア・ファイルを構成する複数のデータ・ブロックを前記ディスク・ドライブからバッファに順番に読み出すことによりメディア・プレイヤーが再生する方法であって、
    前記コンピュータのメモリにメディア・キャッシュを提供するステップと、
    前記メディア・プレイヤーがいずれかのデータ・ブロックを前記ディスク・ドライブから前記バッファに読み出すために、前記オペレーティング・システムが提供する関数を呼び出す機能を前記コンピュータに実行させるステップと、
    前記関数の呼び出しに基づいて所定の前記メディア・ファイルのデータ・ブロックが呼び出されているか否かを前記コンピュータが判断するステップと、
    前記所定のメディア・ファイルのデータ・ブロックが呼び出されていることに応答して前記データ・ブロックよりサイズの大きいデータを前記コンピュータが前記メディア・キャッシュに書き込むステップと、
    前記メディア・キャッシュに書き込まれたデータを前記コンピュータが前記バッファに転送するステップと、
    前記バッファに転送されたデータ・ブロックに対して前記メディア・プレイヤーが再生動作をする機能を前記コンピュータに実行させるステップと
    を有する再生方法。
  2. 前記メディア・キャッシュに書き込むステップが前記関数をフックして前記関数が前記データ・ブロックよりサイズの大きいデータをメディア・キャッシュに書き込むように引数を修正するステップを含む請求項1に記載の再生方法。
  3. 前記判断するステップが、前記ディスク・ドライブからデータを読み出すためにオペレーティング・システムが提供する複数の関数の中から前記メディア・ファイルを読み出すために呼び出された関数を選択するステップを有し、前記引数を修正するステップが前記メディア・ファイルを読み出すために呼び出された関数だけを修正する請求項2に記載の再生方法。
  4. 前記いずれかのデータ・ブロックが前記複数のデータ・ブロックの先頭データ・ブロックである請求項1〜請求項3のいずれかに記載の再生方法。
  5. 前記メディア・キャッシュに書き込むステップが前記メディア・ファイルの全体を前記メディア・キャッシュに書き込むステップを含む請求項1〜請求項4のいずれかに記載の再生方法。
  6. 前記メディア・キャッシュに書き込むステップが前記データ・ブロックのサイズよりも大きいデータ・クラスタを書き込むステップを含む請求項1〜請求項4のいずれかに記載の再生方法。
  7. 前記データ・クラスタのサイズは前記データ・ブロックのサイズの整数倍である請求項6に記載の再生方法。
  8. 前記メディア・プレイヤーは前記メディア・キャッシュに書き込まれた前記データ・クラスタが前記バッファに転送されたことに応答して再生動作を開始する機能を前記コンピュータに実行させる請求項6または請求項7に記載の再生方法。
  9. 前記メディア・キャッシュに書き込むステップが前記データ・クラスタに続く前記データ・ブロックのサイズよりも小さい複数のデータ・フラグメントを書き込むステップを含む請求項6〜請求項8のいずれかに記載の再生方法。
  10. 前記データ・フラグメントのサイズは前記データ・ブロックのサイズの整数分の1倍で、前記バッファに転送するステップが前記データ・ブロックのサイズに合成された複数の前記データ・フラグメントを前記バッファに転送するステップを含む請求項9に記載の再生方法。
  11. 前記メディア・キャッシュに書き込むステップが前記データ・クラスタを読み出すスレッドとは異なるスレッドを各データ・フラグメントに対して生成して書き込むステップを含む請求項9または請求項10に記載の再生方法。
  12. 落下を検知したときにディスク・ドライブに対するアクセスを停止する衝撃保護システムとオペレーティング・システムのキャッシュ機能を実現するOSキャッシュとを備える携帯式のコンピュータにおいてメディア・ファイルを構成する複数のデータ・ブロックを前記ディスク・ドライブからバッファに順番に読み出すことによりメディア・プレイヤーが再生する方法であって、
    前記コンピュータのメモリにメディア・キャッシュを提供するステップと、
    前記メディア・プレイヤーが再生リストを記録したリスト・ファイルを読み出すために、前記オペレーティング・システムが提供する関数を呼び出す機能を前記コンピュータに実行させるステップと、
    前記関数の呼び出しに基づいて前記リスト・ファイルのリストが前記メディア・ファイルを含むか否かを前記コンピュータが判断するステップと、
    前記リストが前記メディア・ファイルを含むと判断したときに、前記リストに含まれる前記メディア・ファイルを前記コンピュータが前記メディア・キャッシュに書き込むステップと、
    前記メディア・キャッシュに書き込まれた前記メディア・ファイルを前記コンピュータが前記バッファに転送するステップと、
    前記リストに含まれる前記メディア・ファイルの少なくとも一部が前記メディア・キャッシュから前記バッファに転送された後に前記メディア・プレイヤーが再生動作をする機能を前記コンピュータに実行させるステップと
    を有する再生方法。
  13. 前記リスト・ファイルのリストが複数の前記メディア・ファイルを含み、前記メディア・キャッシュに書き込むステップが、各メディア・ファイルごとに独立したスレッドを生成して書き込むステップを含む請求項12に記載の再生方法。
  14. 前記メディア・プレイヤーがいずれかのデータ・ブロックを前記バッファに読み出すために、オペレーティング・システムが提供する関数を呼び出す機能を前記コンピュータに実行させるステップと、
    前記関数の呼び出しに基づいて先頭データ・ブロックが前記メディア・キャッシュにフィルされているか否かを前記コンピュータが判断するステップと、
    前記先頭データ・ブロックが前記メディア・キャッシュにフィルされていると判断したときに前記コンピュータが前記メディア・キャッシュから前記バッファに前記先頭データ・ブロックを転送するステップと
    を有する請求項12または請求項13に記載の再生方法。
  15. 携帯式コンピュータであって、
    プロセッサと、
    バッファが定義されたメイン・メモリと、
    オペレーティング・システムとメディア・ドライバとメディア・プレイヤーとを格納する不揮発性記憶装置と、
    前記メディア・プレイヤーが再生するメディア・ファイルを含む複数のファイルを格納するディスク・ドライブと、
    落下を検知したときにアクセスを停止して前記ディスク・ドライブを衝撃から保護する衝撃保護システムと、
    前記メディア・ファイルを記憶するメディア・キャッシュと、
    前記オペレーティング・システムのキャッシュ機能を実現するOSキャッシュと
    を有し、
    前記メディア・ドライバと前記オペレーティング・システムとが協働して前記携帯式コンピュータに、
    前記メディア・プレイヤーがいずれかのデータ・ブロックを前記バッファに読み出すための関数を呼び出す機能と、
    前記関数の呼び出しに基づいて所定の前記メディア・ファイルのデータ・ブロックが呼び出されているか否かを前記コンピュータが判断する機能と、
    前記所定のメディア・ファイルのデータ・ブロックが呼び出されていることに応答して前記データ・ブロックよりサイズの大きいデータを前記メディア・キャッシュに書き込む機能と、
    前記メディア・キャッシュに書き込まれたデータを前記バッファに転送する機能と、
    前記バッファに転送されたデータ・ブロックを前記メディア・プレイヤーが再生する機能とを実現させる
    携帯式コンピュータ。
  16. 前記メディア・キャッシュに書き込む機能が前記メディア・ファイルの全体を書き込む機能を含む請求項15に記載の携帯式コンピュータ。
  17. 前記メディア・キャッシュに書き込む機能が前記データ・ブロックのサイズよりも大きいデータ・クラスタを書き込む機能を含む請求項15に記載の携帯式コンピュータ。
  18. 前記メディア・キャッシュに書き込む機能が前記データ・ブロックのサイズよりも小さい複数のデータ・フラグメントを書き込む機能を含む請求項17に記載の携帯式コンピュータ。
  19. 前記再生する機能が前記データ・クラスタが前記メディア・キャッシュに書き込まれたことに応答して再生を開始する機能を含む請求項17または請求項18に記載の携帯式コンピュータ。
  20. 携帯式コンピュータであって、
    プロセッサと、
    バッファが定義されたメイン・メモリと、
    オペレーティング・システムとメディア・ドライバとメディア・プレイヤーとを格納する不揮発性記憶装置と、
    前記バッファにデータ・ブロックを読み出して前記メディア・プレイヤーが再生するメディア・ファイルを格納するディスク・ドライブと、
    落下を検知したときにアクセスを停止して前記ディスク・ドライブを衝撃から保護する衝撃保護システムと、
    前記メディア・ファイルを記憶するメディア・キャッシュと、
    前記オペレーティング・システムのキャッシュ機能を実現するOSキャッシュと
    を有し、
    前記メディア・ドライバと前記オペレーティング・システムが協働して前記携帯式コンピュータに、
    前記メディア・プレイヤーが再生リストを記録したリスト・ファイルを読み出すための関数を呼び出す機能と、
    前記関数の呼び出しに基づいて前記リスト・ファイルのリストが前記メディア・ファイルを含むか否かを判断する機能と、
    前記リストが前記メディア・ファイルを含むと判断したときに、前記リストに含まれる前記メディア・ファイルを前記メディア・キャッシュに書き込む機能と、
    前記メディア・キャッシュに書き込まれた前記メディア・ファイルを前記バッファに転送する機能と、
    前記リストに含まれる前記メディア・ファイルの少なくとも一部が前記メディア・キャッシュから前記バッファに転送された後に前記メディア・プレイヤーが再生をする機能とを実現させる
    携帯式コンピュータ。
  21. メディア・ファイルを構成する複数のデータ・ブロックをバッファに順番に読み出してメディア・プレイヤーが再生することができる携帯式コンピュータであって、
    落下を検知したときにディスク・ドライブに対するアクセスを停止する衝撃保護システムと、
    オペレーティング・システムのキャッシュ機能を実現するOSキャッシュと、
    前記メディア・ファイルを記憶するメディア・キャッシュと、
    前記メディア・プレイヤーがいずれかのデータ・ブロックを前記ディスク・ドライブから前記バッファに読み出すために、前記オペレーティング・システムが提供する関数を呼び出す手段と、
    前記関数の呼び出しに基づいて所定の前記メディア・ファイルのデータ・ブロックが呼び出されているか否かを判断する手段と、
    前記所定のメディア・ファイルのデータ・ブロックが呼び出されていることに応答して前記データ・ブロックよりサイズの大きいデータを前記メディア・キャッシュに書き込む手段と、
    前記メディア・キャッシュに書き込まれたデータを前記バッファに転送する手段と、
    前記バッファに転送されたデータ・ブロックに対して前記メディア・プレイヤーに再生動作をさせる手段と
    を有する携帯式コンピュータ。
  22. メディア・ファイルを構成する複数のデータ・ブロックをバッファに順番に読み出してメディア・プレイヤーが再生することができる携帯式コンピュータであって、
    落下を検知したときにディスク・ドライブに対するアクセスを停止する衝撃保護システムと、
    オペレーティング・システムのキャッシュ機能を実現するOSキャッシュと、
    前記メディア・ファイルを記憶するメディア・キャッシュと、
    前記メディア・プレイヤーが再生リストを記録したリスト・ファイルを読み出すために、前記オペレーティング・システムが提供する関数を呼び出す手段と、
    前記関数の呼び出しに基づいて前記リスト・ファイルのリストが前記メディア・ファイルを含むか否かを判断する手段と、
    前記リストが前記メディア・ファイルを含むと判断したときに、前記リストに含まれる前記メディア・ファイルを前記メディア・キャッシュに書き込む手段と、
    前記メディア・キャッシュに書き込まれた前記メディア・ファイルを前記バッファに転送する手段と、
    前記リストに含まれる前記メディア・ファイルの少なくとも一部が前記メディア・キャッシュから前記バッファに転送された後に前記メディア・プレイヤーに再生動作をさせる手段と
    を有する携帯式コンピュータ。
JP2008057230A 2008-03-07 2008-03-07 メディア・ファイルの中断のない再生方法 Active JP4634477B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008057230A JP4634477B2 (ja) 2008-03-07 2008-03-07 メディア・ファイルの中断のない再生方法
US12/390,589 US20090225463A1 (en) 2008-03-07 2009-02-23 Method for Playing Media File Without Interruption

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008057230A JP4634477B2 (ja) 2008-03-07 2008-03-07 メディア・ファイルの中断のない再生方法

Publications (2)

Publication Number Publication Date
JP2009217859A JP2009217859A (ja) 2009-09-24
JP4634477B2 true JP4634477B2 (ja) 2011-02-16

Family

ID=41053357

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008057230A Active JP4634477B2 (ja) 2008-03-07 2008-03-07 メディア・ファイルの中断のない再生方法

Country Status (2)

Country Link
US (1) US20090225463A1 (ja)
JP (1) JP4634477B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8751677B2 (en) * 2009-10-08 2014-06-10 Futurewei Technologies, Inc. System and method to support different ingest and delivery schemes for a content delivery network
CN101763437B (zh) * 2010-02-10 2013-03-27 华为数字技术(成都)有限公司 高速缓冲存储实现方法及装置
KR102023582B1 (ko) * 2012-10-11 2019-11-04 삼성전자주식회사 무선 통신 시스템에서 청크 기반 스케줄링 방법 및 장치
US9141613B2 (en) * 2012-10-30 2015-09-22 Appsense Limited Systems and methods for determining an address for a private function
JP6203063B2 (ja) * 2014-01-20 2017-09-27 株式会社ユニバーサルエンターテインメント 遊技機
CN105824570B (zh) * 2015-01-04 2018-11-23 致伸科技股份有限公司 可降低耗电的硬盘装置以及降低硬盘装置耗电的方法
CN109960461A (zh) * 2017-12-25 2019-07-02 上海盛霄云计算技术有限公司 一种镜像文件管理系统
WO2021030264A1 (en) * 2019-08-12 2021-02-18 Audio Visual Preservation Solutions, Inc. Source identifying forensics system, device, and method for multimedia files

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000285610A (ja) * 1999-01-27 2000-10-13 Matsushita Electric Ind Co Ltd Avデータの記録再生に適した記録方法と再生方法及び、その記録ドライブと再生ドライブ及び、情報記録システムと情報再生システム及び、情報記録媒体
JP2001265653A (ja) * 2000-03-17 2001-09-28 Mitsubishi Electric Corp データ処理装置
JP2002074856A (ja) * 1998-05-01 2002-03-15 Samsung Electronics Co Ltd リアルタイム記録及び/または再生方法
JP2004146036A (ja) * 2002-10-03 2004-05-20 Internatl Business Mach Corp <Ibm> 磁気ディスクの保護機構、これを備えたコンピュータシステム、磁気ディスクの保護方法及びプログラム
JP2005044435A (ja) * 2003-07-22 2005-02-17 Sony Corp 携帯型電子機器
JP2005190641A (ja) * 2003-12-26 2005-07-14 Internatl Business Mach Corp <Ibm> 磁気ディスク装置の保護機構、これを備えたコンピュータシステム、磁気ディスク装置制御方法及びプログラム
JP2005302221A (ja) * 2004-04-15 2005-10-27 Sony Corp 情報処理装置および情報処理方法、並びにプログラムおよびプログラム記録媒体
JP2006018869A (ja) * 2004-06-30 2006-01-19 Sony Corp 再生装置
JP2006510979A (ja) * 2002-12-20 2006-03-30 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 携帯ストリーミング機器のための電力節約方法
JP2006163641A (ja) * 2004-12-03 2006-06-22 Sony Computer Entertainment Inc バッファリング装置およびメモリ装置の利用方法
JP2007506223A (ja) * 2003-09-18 2007-03-15 バルカン ポータルズ インコーポレイテッド 電子デバイス用の低電力メディアプレーヤ

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7355807B2 (en) * 2006-04-28 2008-04-08 Hewlett-Packard Development Company, L.P. Hard disk drive protection system and method
JP3469383B2 (ja) * 1995-12-28 2003-11-25 株式会社日立製作所 データ先読み制御方法及び情報処理装置
US6961063B1 (en) * 2000-06-30 2005-11-01 Intel Corporation Method and apparatus for improved memory management of video images
US7809252B2 (en) * 2003-04-09 2010-10-05 Corel Inc. Systems and methods for caching multimedia data
US8069255B2 (en) * 2003-06-18 2011-11-29 AT&T Intellectual Property I, .L.P. Apparatus and method for aggregating disparate storage on consumer electronics devices

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002074856A (ja) * 1998-05-01 2002-03-15 Samsung Electronics Co Ltd リアルタイム記録及び/または再生方法
JP2000285610A (ja) * 1999-01-27 2000-10-13 Matsushita Electric Ind Co Ltd Avデータの記録再生に適した記録方法と再生方法及び、その記録ドライブと再生ドライブ及び、情報記録システムと情報再生システム及び、情報記録媒体
JP2001265653A (ja) * 2000-03-17 2001-09-28 Mitsubishi Electric Corp データ処理装置
JP2004146036A (ja) * 2002-10-03 2004-05-20 Internatl Business Mach Corp <Ibm> 磁気ディスクの保護機構、これを備えたコンピュータシステム、磁気ディスクの保護方法及びプログラム
JP2006510979A (ja) * 2002-12-20 2006-03-30 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 携帯ストリーミング機器のための電力節約方法
JP2005044435A (ja) * 2003-07-22 2005-02-17 Sony Corp 携帯型電子機器
JP2007506223A (ja) * 2003-09-18 2007-03-15 バルカン ポータルズ インコーポレイテッド 電子デバイス用の低電力メディアプレーヤ
JP2005190641A (ja) * 2003-12-26 2005-07-14 Internatl Business Mach Corp <Ibm> 磁気ディスク装置の保護機構、これを備えたコンピュータシステム、磁気ディスク装置制御方法及びプログラム
JP2005302221A (ja) * 2004-04-15 2005-10-27 Sony Corp 情報処理装置および情報処理方法、並びにプログラムおよびプログラム記録媒体
JP2006018869A (ja) * 2004-06-30 2006-01-19 Sony Corp 再生装置
JP2006163641A (ja) * 2004-12-03 2006-06-22 Sony Computer Entertainment Inc バッファリング装置およびメモリ装置の利用方法

Also Published As

Publication number Publication date
US20090225463A1 (en) 2009-09-10
JP2009217859A (ja) 2009-09-24

Similar Documents

Publication Publication Date Title
JP4634477B2 (ja) メディア・ファイルの中断のない再生方法
KR101238163B1 (ko) 파일 입출력 스케줄러
US8892520B2 (en) Storage device including a file system manager for managing multiple storage media
US6665772B1 (en) Data storage method and device for storing streaming and non-streaming data in common memory space
JP5385347B2 (ja) メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ
US20060136779A1 (en) Object-based storage device with low process load and control method thereof
JP2012505490A (ja) 即時的にデータをチャンクにすることを用いたファイル入出力スケジューリング
TW200416673A (en) Data storage apparatus and method for managing buffer memory
US20140222875A1 (en) System having an apparatus that uses a resource on an external device
KR100623125B1 (ko) 정보 기억 장치, 정보 기억 방법 및 정보 기억 처리프로그램 제품
US20060149899A1 (en) Method and apparatus for ongoing block storage device management
KR101125929B1 (ko) 정보 처리 장치, 정보 처리 방법 및 프로그램 기록 매체
EP1631911B1 (en) Method and device for transferring data between a main memory and a storage device
JP2006228138A (ja) 半導体記憶装置、記憶制御方法および情報機器
EP4020197B1 (en) Methods and apparatus for loading of a container image
JP6243884B2 (ja) 情報処理装置、プロセッサ、および情報処理方法
JP6100750B2 (ja) メモリおよびコントローラを備える装置およびデータ記憶装置を備える装置
KR100673093B1 (ko) 휴대형 멀티미디어 재생기에서 다중 파일 캐싱을 이용한리얼타임 멀티미디어 파일 재생 방법
JP4984677B2 (ja) 情報処理装置
CA3003543A1 (en) Method and device for the accelerated execution of applications
JP2018520398A (ja) マルチメディアストリームの送信の改善
JP4345559B2 (ja) 情報処理装置および情報処理方法、並びにプログラムおよびプログラム記録媒体
JP4232678B2 (ja) 情報処理装置および情報処理方法、並びにプログラムおよびプログラム記録媒体
WO2014091629A1 (ja) 記憶装置の管理プログラム、電子装置及び記憶装置の管理方法
US20110106861A1 (en) Interface Techniques Providing Contiguous Storage For Files

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100810

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101012

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101116

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101118

R150 Certificate of patent or registration of utility model

Ref document number: 4634477

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250