以下、添付図面に従って本発明にかかる実施形態を詳細に説明する。
図1は本発明を適用したデータ伝送システムの構成例である。
図1のシステムは、直径8cmのDVD−RAM等の光ディスクD1に対して撮影した画像データを記録再生するビデオカメラ101と、直径5インチのDVD−RAM等の大容量光ディスクD2に対してデータを記録再生するための記録再生ドライブ103を有するPC102から構成される。
ビデオカメラ101とPC102はそれぞれ、USBインターフェイスを備え、これらのUSBインターフェイスにUSBケーブル104を接続することでデータの伝送を実現している。本実施形態においては、USBの伝送プロトコルとしてマスストレージを用いる。また本実施形態においては、光ディスクD1に記録されたデータをPC102に転送し、大容量光ディスクD2に記録することが可能である。
図2はビデオカメラ101の要部構成を示すブロック図である。
撮像部201は被写体を撮影して動画像データを生成し、バス213に出力する。信号処理部202は、記録時においては撮像部201から出力された動画像データを周知の符号化方式で符号化し、記録再生制御部212に出力し、再生時においてはディスクD1から再生された動画像データを復号して表示制御部210に出力する。メイン制御部203はバス213を介して各構成要素と接続され、メイン制御部203上で動作するソフトウェアによって各構成要素の制御指示を行う。通信制御部204は、外部の機器、すなわち図1におけるPC102とUSBデバイスコネクタ205を介してUSBケーブル104で接続された場合に、マスストレージ規格に従って通信制御を行う。206は内部メモリで、メイン制御部203にて用いる各種のソフトウェアや、PC102から送信された各種の情報などを記憶する。
入力操作制御部207は、操作部208に対してユーザが入力を行った場合のキー情報を判別し、メイン制御部203上で動作するソフトウェアに対して通知する。また操作部208は、点灯可能なLEDが埋め込まれたボタン209が具備されている。このボタン209は、ビデオカメラ101がUSBケーブル104でPC102に接続した際に、ユーザがダビングの開始を指示するための機能を持つ。また、ボタン209は、LEDの点灯状態によってPC102によるダビングが可能な状態であるか否かをユーザに知らせる機能を持つ。
表示制御部210は表示部211に対して表示する映像を生成し表示を制御する。記録再生制御部212は、光ディスクD1に対して、撮影したデータの記録、再生、また読み出したデータを内部メモリ206に転送する制御を行う。読み出されたデータは、通信制御部204を介して外部に送信するか、表示制御部211を介して表示部へ転送される。
PC102の主要部のブロック構成図を図3に示す。
図示のように、PC102は、装置全体の制御を司るメイン制御部(CPUで構成される)301、オペレーティングシステム(OS)や各種アプリケーションをロードしたり、光ディスクD2に対してデータを書き込む際にバッファ領域として使用される内部メモリ302、OS、及び、本実施形態で用いる記録再生ドライブ103の制御用のアプリケーションを含む各種のアプリケーションプログラムを格納するハードディスクドライブ(HDD)303、マウス等のポインティングデバイスやキーボードで構成される入力装置305からの入力を受けてメイン制御部301に出力する入力操作制御部304、USBホストコネクタ307を介してデータを送受信する通信制御部306、CRTや液晶表示器等で構成される表示部309へのビデオ信号を出力したり、メイン制御部301からの要求に対して内部のビデオメモリへの描画する表示制御部308、各機能ブロックの間でデータを送受信するデータバス310を備える。
以上、実施形態におけるビデオカメラ101及びPC102の構成について説明した。次に、実施形態における処理について説明する。
<PC102におけるアプリケーションプログラムの説明>
本実施形態におけるHDD303に格納されているアプリケーションプログラムは、大別して以下の三つのプログラムモジュールA乃至Cで構成される。それぞれのプログラムは次のような機能を果たす。
モジュールA:ビデオカメラとの間でステータス通信を行うプログラム
モジュールB:ビデオカメラから送信された画像データの受信、及び、光ディスクD2への書き込み処理(ダビング処理)を行うプログラム
モジュールC:OSが起動した際に内部メモリ206に常駐し、サポートしているビデオカメラが接続されているかを検出するプログラム
本実施形態では、これら三つのモジュールによって、ビデオカメラ101とPC102とがUSBケーブル104で接続され、書き込み可能な光ディスクD2が記録再生ドライブ103に装着されていることを判別する機能と、自動的にビデオカメラ101に装着された光ディスクD1に記憶された全てのデータファイルをPC102に送信して光ディスクD2に書き込むダビング機能を実現する。
内部メモリ302は、本実施形態におけるアプリケーションプログラム以外にも、ユーザが利用する各種アプリケーションプログラム(例えば、文書編集やメール、WWWブラウザ等)が利用することになる。
従って、ビデオカメラ101をPC102に接続していない場合、内部メモリ302において本実施形態のアプリケーションが使用する領域が少ないほうが望ましい。そのため、内部メモリ302に常駐するプログラムは、アプリケーションプログラム全てではなく、そのアプリケーションを起動するか否かを決定するモジュールCのみとした。
なお、実施形態のアプリケーションにとってビデオカメラの機種名は既知である。USBインターフェイスは、元々、ホットプラグアンドプレイとして策定されたインターフェイスであり、USBホストコネクタ307にUSBケーブル104を介してビデオカメラ101を接続すると、マスストレージ通信を確立する。この通信確立の手順は公知である。
この際、OSは、その接続されたデバイスを認識することになり、そのデバイス名も取得する。本実施形態におけるモジュールCは、USBホストコネクタ307にデバイスが接続されたというイベント発生を監視し、USBデバイスの接続がなされた場合に実行する。以下、各モジュールA乃至Cの処理を説明する。
<モジュールC(常駐プログラム)の説明>
図4は、実施形態におけるモジュールCの処理手順を示すフローチャートである。この処理は、先に説明したように、USBホストコネクタ307に何らかのデバイスが接続された場合に実行する。
先ず、ステップS401では、接続されたUSBデバイスが既知のビデオカメラ101であるか否かを判定する。否の場合には、本処理を終了する。また、ビデオカメラ101が接続されたと判定した場合には、処理はステップS402に進む。そして、PC102がダビング可能状態である場合には、後述するコマンド“READY(0)”を、USBホストコネクタ307を介してビデオカメラ101に送信する。
また、ステップS402において、ダビング可能状態で無くBUSY状態の場合、後述するコマンド“BUSY(6)”を送信する。PC102に記録再生ドライブ103が接続されていない場合には後述するコマンド“NO DRIVE(7)”を送信する。PC102に十分な電力が供給されていない場合には後述するコマンド“LOW BATTERY(8)”を送信する。次いで、ステップS403にて、プログラムモジュールAを起動する(HDD303から内部メモリ302に読込み実行する)。
なお、USBホストコネクタ307に新たにUSBデバイスが接続された場合に図4の処理を実行するだけでなく、記録再生ドライブ103が接続された場合にも同様に図4の処理を実行する。
この場合にはステップS401でNとなるため、そのまま処理を終了することになるが、これ以外にも、例えば、PC102が記録再生ドライブ103を内蔵する場合には、光ディスクD2が記録再生ドライブ103に装着されたことに応じて図4の処理を実行しても良い。
<モジュールAの説明>
このモジュールAは、前述の通り、ビデオカメラ101とPC102が接続されている場合に実行されるモジュールである。
また、このモジュールAが起動した場合、それ以前に、既にビデオカメラ101に対して何らかのコマンドを送信していることになる。また、このモジュールAは一旦起動すると、後述のダビング動作中は内部メモリ302に常駐し、ビデオカメラ101からのレスポンスデータを受信した場合にも実行される。
モジュールAの処理で、ビデオカメラ101に送信するコマンドは図5に示すデータ構造を持つ。図5のコマンドは、ATAPIのコマンドブロックの構成に従った12バイトのデータで構成される。ATAPIの規格では、データオフセット0バイト目のフィールド501はこのコマンドブロックの制御情報を示している。しかし、本実施形態の機能はATAPIの規格で定められていないので、ベンダ固有のコマンドを示す0xFF(0xは16進数を示す)が指定する。
フィールド502は、ATAPIの規格に従い、上位3ビットにLogical Unit Numberを指定する構成としているが、本実施形態においては、0を指定する。フィールド503は、このコマンドの詳細機能を指定するデータが格納される。本実施形態においては、フィールド503に0x01を設定する。
フィールド504は本実施形態において最も重要な意味を持つフィールドで、PC102のステータス情報を示しており、図6に示す値が設定される。各値の意味は次の通りである。
“READY(0)”はPC102がデータを受信して記録保存が可能な状態であることを示す。“転送中(1)”はデータを受信中であることを示す。“終了処理中(2)”はデータを受信してディスクD2に記録を行い、終了処理が実行されていることを示す。“完了(3)”はデータを受信してディスクD2に記録が完了したことを示す。“中止(4)”はデータを受信して記録保存が完了するまえに処理が中断されたことを示す。“ERROR(5)”はデータを受信してディスクD2に対する記録が完了する前に処理がエラーとなったこと、例えば書き込みエラーが発生したことにより中断されたことを示す。“BUSY(6)”はPC102が他の処理中であり、ダビングを出来ない状態であることを示す。“NO DRIVE(7)”はPC102に記録再生ドライブ103が接続されていないことを示す。“LOW BATTERY(8)”はPC102が例えばポータブルなタイプでバッテリ駆動可能な場合に電力が足りない状態であることを示す。“FORMAT(9)”はPC102がフォーマット処理中である状態であることを示す。
フィールド505はPC102でビデオカメラ101から取得するデータのデータ長を表す。
フィールド506はPC102に接続されている記録再生ドライブ103に装着されている光ディスクの種類を示しており、図7に示す値が設定される。各値の意味は次のとおりである。
“NO MEDIA(0)”はPC102に接続されている記録再生ドライブ103に光ディスクD2が装着されていないことを示す。“NOT SUPPORT(1)”はPC102に接続されている記録再生ドライブ103に装着されている光ディスクD2がサポートしていないメディアであることを示す。“DVD−R(2)”はPC102に接続されている記録再生ドライブ103にDVD−Rの光ディスクD2が装着されていることを示す。“DVD−RW(3)”はPC102に接続されている記録再生ドライブ103にDVD−RWの光ディスクD2が装着されていることを示す。“DVD−RAM(4)”はPC102に接続されている記録再生ドライブ103にDVD−RAMの光ディスクD2が装着されていることを示す。“DVD+R(5)”はPC102に接続されている記録再生ドライブ103にDVD+Rの光ディスクD2が装着されていることを示す。“DVD+RW(6)”はPC102に接続されている記録再生ドライブ103にDVD+RWの光ディスクD2が装着されていることを示す。
フィールド507はPC102に接続されている記録再生ドライブ103に装着されている光ディスクの状態を示しており、図8に示す値が設定される。各値の意味は次の通りである。
“NO MEDIA(0)”は記録再生ドライブ103にメディアが装着されていないことを示す。“BALANK(1)”は記録再生ドライブ103に装着されているメディアがブランクディスク(何も記録されていないディスク)であることを示す。“FORAMT処理済み(2)”は記録再生ドライブ103に装着されているメディアがフォーマット済みのディスクであることを示す。“データ有り(3)”は記録再生ドライブ103に装着されているメディアに、既に何らかのデータが記録されていることを示す。“FINALIZE済み(4)”は記録再生ドライブ103に装着されているディスクがファイナライズ処理済みであることを示す。“ダメージディスク(5)”は記録再生ドライブ103に装着されているメディアがダメージディスク(傷などによりデータを正しく書き込み、読み出しできないディスク)であることを示す。
フィールド508は光ディスクD2に対し、後述の如くディスクD1のデータをダビング中である場合、ダビング(書き込み終了)までの残り時間を示すデータが格納される。
前述の様に、モジュールAが起動した際には、既に、PC102からビデオカメラ101に対して、既に“READY(0)”または、“BUSY(6)”、“NO DRIVE(7)”、“LOW BATTERY(8)”コマンドのいずれかを送信しているので、その応答(レスポンスデータ)がビデオカメラ101から返ってくる。
また、後述するように、ダビング中でもビデオカメラ101からレスポンスデータが返ってくるので、その場合にも、このレスポンスデータに応じた処理を実行することになる。かかる点を踏まえ、モジュールAの処理を、図9のフローチャートに従って説明する。
先ず、ステップS901では、受信したレスポンスデータのフィールドの値に従い、次にコマンドを送信する送信時間を設定する。送信時間を設定すると、その時間を待って、モジュールAを構成するコマンド送信処理(図10)が実行される。
図10に示すように、このコマンド送信処理は、ステップS1001でPC102のステータスを取得する。そして、ステップS1002にて取得したステータスを図5に示すデータ構造のコマンドとしてビデオカメラ101に送信する。この結果、ビデオカメラ101からは、そのレスポンスデータが返っているので、その都度、本処理が実行することになる。
図9の説明に戻る。ステップS901の処理、即ち、コマンド送信の起動タイミングの設定を行うと、ステップS902に進んでPC102の状態を確認する。BUSY状態でなければステップS903に進んで、ドライブが存在するかを調べる。ドライブが存在する場合はステップS904に進み、バッテリがLOW BATTERY状態でないか確認する。LOW BATTERY状態でなければステップS905に進み、記録再生ドライブ103に書き込み可能なドライブが挿入されているか確認し、ドライブ情報をメディアタイプフィールド(図5のフィールド506)に格納する。メディアタイプが書き込み可能なメディアである場合には処理はステップS906に進んで、レスポンスデータのフィールド(後述する図18のフィールド1805)を確認し、“READY(0)”であれば、ビデオカメラ101は、撮像した画像データの送信が可能状態であるものとし、ステップS907に遷移する。
ステップS907では、図18に示すレスポンスデータのフィールド1804のFormatビットを確認し、1が設定されているか否かを判断する。詳細は後述するが、ビデオカメラ101より記録先ディスクD2のフォーマット要求があった場合にこのフィールドが1にセットされる。Formatビットが1にセットされている場合、ステップS910に進み、記録再生ドライブ103に装着されているディスクD2の初期化処理を実行する。
また、ステップS904でFormatビットが1にセットされていなかった場合、ステップS908に進み、図18に示すレスポンスデータのフィールド1804のDTビットを確認し、1が設定されているか否かを判断する。詳細は後述するが、ビデオカメラ101におけるダビング開始を指示するボタンが操作された場合にこのフィールドが1にセットされる。DTビットが1にセットされている場合、ステップS909に遷移し、光ディスクD1に記録されているデータの読み出し、及び、大容量光ディスクD2への書き込み(ダビング)を行うモジュールBを起動し(HDD303から内部メモリ302へロードし、実行する)、処理を終了する。
一方、ステップS902でPC102がBUSY状態であるか、ステップS903で記録再生ドライブ103が存在しないか、ステップS904ステップでLOW BATTERY状態であるか、ステップS905で適切なメディアが挿入されていないか、ステップS906でレスポンスデータのフィールド1805のステータスが“READY(0)”以外である場合には、ステップS911に進む。そして、モジュールBが起動されているか否かを判断し、モジュールBが起動されている場合には、ステップS912でそのステータスをモジュールBに通知して本処理を終える。
ステップS911でモジュールBが起動されていない場合には、ステップS913に遷移しエラーメッセージを表示部309に表示し処理を表示して本処理を終える。
なお、説明が前後するが、PC102上で動作するOSは、マルチタスクのOSであり、モジュールAとBとは別タスクとして動作する。
<モジュールBの説明>
次に、モジュールBの処理を図11のフローチャートに従って説明する。
ステップS1101では、データの取得コマンドをビデオカメラ101に対して送信する。ここで、データの取得コマンドは、ATAPIの規格に従って生成され、USBマスストレージクラスに準拠した通信方式によって送信される。
ステップS1102では、ビデオカメラ101からのレスポンスを受信する。ステップS1103では、受信したデータがエラーかどうか判別する。受信データがエラーであればステップS1109に遷移しエラーメッセージを表示部309に表示し処理を終了する。エラーでなければステップS1104に遷移する。
ステップS1104では、ダビングすべきデータを受信し、受信したデータの書き込みを記録再生ドライブ103に指示し、ディスクD2への書き込みを行う。ステップS1105では、書き込みエラーの発生を検出し、書き込みエラーが発生した場合には、ステップS1109に遷移し、エラーメッセージを表示部309に表示し処理を終了する。エラーが無ければステップS1106に遷移する。
ステップS1106では、ユーザによる書き込みキャンセルの指示が入力装置305で入力されたのか否かを判断し、書き込みキャンセルの指示があった場合にはステップS1109に遷移しエラーメッセージを表示部309に表示し処理を終了する。
なお、実施形態におけるダビング処理は、見かけ上、PC102のバックグランドの処理として実行しているが、モジュールBが起動した場合には、OSが備えるタスクバーに、そのアイコンを表示させ、そのアイコンが指示された場合に、メニューを表示し、その中からダビングのキャンセルが指示できるようにした。
ステップS1106にて、キャンセル指示がないと判断した場合にはステップS1107に遷移し、ビデオカメラ101とPC102のUSB接続が接続されていることを通信制御部306において確認する。ここで接続されていないことを検出したら、ステップS1109に遷移しエラーメッセージを表示部309に表示し処理を終了する。接続されていれば、ステップS1108に遷移する。
ステップS1108では、ソフトウェアモジュールAから中止要求があるか否かの通知を確認し、中止要求がある場合には、ステップS1109に遷移しエラーメッセージを表示部309に表示し処理を終了する。
本実施形態では、内部メモリ302上に確保した状態フラグによってソフトウェアモジュールAからソフトウェアモジュールBへの通知を行う。この場合の状態フラグがとりうる値を図12に示す。図12は、後述の如く、ビデオカメラ101のステータスを示している。“LOW BATTERY”(3)、“MODE CHANGE”(4)、“NO DISC”(5)、“NO READABLE DISC”(6)が設定されている場合、中止要求があるものとする。同様に図6の値に従い、“BUSY”、“NO DRIVE”、“LOW BATTERY”が設定されている場合に中止要求があるものとする。中止要求がなければ、ステップS1110に遷移する。
ここで、“LOW BATTERY”(3)による中止要求が出された場合、ステップS1109において、ビデオカメラ101に対して家庭用電源(ACアダプタ)の接続を指示する旨のメッセージを表示することも可能である。
これにより、ユーザは、ダビング中においてビデオカメラ101のバッテリ残量が少なくなった場合でも、ACアダプタをビデオカメラ101に接続することができる。そのため、ダビング処理が中止されることを防ぐことができる。
ステップS1110では、光ディスクD1に記録された全てのデータの受信が完了したかどうかを判別する。マスストレージ通信において記録容量が判別できるので、ここではその情報を利用する。全てのデータを取得していなければ、再度ステップS1101に遷移し、処理を継続する。
また、ステップS1110において、全てのデータ取得が完了していると判断された場合には、ステップS1111に進み、モジュールB、モジュールAを終了する(OSに対して、モジュールA,Bの終了を通知し、内部メモリ302からそれらプログラムを開放させる)。
なお、ソフトウェアモジュールBは図11のフローを実行中に、ソフトウェアモジュールAに対して、モジュールBの状態に応じた通知を行っている。前述と同様に内部メモリ302上に配置された状態フラグによってソフトウェアモジュールBからソフトウェアモジュールAへの通知を行う。その際、とりうる値は図12の値に従う。従って、ダビング中にも図10に示す処理が実行される。
図13は、ソフトウェアモジュールAとソフトウェアモジュールBが内部メモリ302上に配置された状態フラグを介して通知を行う状態を示している。
ソフトウェアモジュールA1301からソフトウェアモジュールB1302への通知は内部メモリ302内に確保された状態フラグ1304を介して行われる。一方、ソフトウェアモジュールB1302からソフトウェアモジュールA1301への通知は、状態フラグ1303を介して行われることを示している。
ソフトウェアモジュールBからソフトウェアモジュールAに対して通知を行うタイミングは、図11のフローチャートを参照すると次の通りである。
ステップS1101:“転送中”(1)が通知される。
ステップS1109:ステップS1103、あるいはステップS1105から遷移してきた場合には“ERROR”(5)を通知し、ステップS1106から遷移してきた場合には、“中止”(5)が通知される。
従って、図10のステップS1001における処理は、状態フラグ1303からステータスを取得し、ビデオカメラ101に送信することになる。
以上が、本実施形態におけるPC102におけるアプリケーションプログラム(モジュールA、B,C)の処理の説明である。
<ビデオカメラ101の処理の説明>
次に、実施形態におけるビデオカメラ101における処理について説明する。
実施形態におけるビデオカメラ101は、PC102に接続された場合には、マスストレージクラスデバイスとして機能する。そして、PC102で動作するアプリケーションプログラムは、マスストレージクラスプロトコルを使ってビデオカメラ101を制御し、ビデオカメラ101に装着されたディスクD1に記録されている全てのデータを再生して取り込み、光ディスクD2に記録する。
この様にビデオカメラ101がUSBケーブル104でPC102と接続され、通信が確立している状態で、メイン制御部203が通信制御部204からの通知に応じて実行する処理について、図14に示すフローチャートを用いて説明する。
ステップS1401において、メイン制御部203は、通信制御部204を介してPC102からのコマンドを受信したと判断したか、或いは、USBケーブルが切断(コネクタからUSBケーブルが外れた場合等)したかを判定する。USBケーブル切断であると判断した場合には、ステップS1409に進んで、ボタン209のLEDを消灯する。さらにステップS1410に進みUSBケーブルが切断したことを、表示制御部210を介して表示部211に表示する。S1410における表示部211の表示例を図15に示す。その後のステップS1407およびS1408に関しては後述する。
ステップS1401によりコマンドを受信したと判断した場合には、メイン制御部203により、そのコマンドの判別が行われる。ここで、図5のコマンドと判別された場合には、ステップS1402に遷移するが、別のコマンドであった場合には、そのコマンドに応じた処理を実施するが、ここでは、説明簡単化のため図5記載以外のコマンド処理については省略する。
ステップS1402において、図5のStatusフィールド504の値が、PC102が受信データを記録可能な状態を示すREADY(0)であれば、ステップS1403に処理を進める。また、“転送中(1)”または“終了処理中”、“FORMAT”の場合にはステップS1404に進む。また、“完了“の場合にはステップS1405に進み、“BUSY”、“ERROR”、“NO DRIVE”、“LOW BATTERY”、“中止”の場合にはステップS1406に進む。各ステップにおける処理を詳細に説明する。
まず、図16を用いてREADY(0)コマンドを受信した場合、つまり、PC102はダビングが可能であることを通知してきた場合について説明する。
ステップS1601では図5のフィールド506のMedia Typeにより記録再生ドライブ103に装着されている光ディスクD2の種類を判別する。ディスクD2が図7中のDVD−R(2)以外である場合には、ステップS1602に遷移する。DVD−R(2)であった場合に関する説明は後述する。
なお、本実施形態では、光ディスクとしてDVDを用いる場合について説明するが、これ以外のディスク媒体を用いることももちろん可能である。その場合、S1601では、ディスクD2がDVD−RWの様に繰り返し書き換え可能なディスクか、DVD−Rの様にライトワンス(追記)型のディスクであるかを判別することになる。
ステップS1602では図5のフィールド507のMedia Statusに基づき、記録再生ドライブ103に装着されている光ディスクD2の状態を判別する。ディスクD2の状態が図8の“NO MEDIA”、“ダメージディスク”以外であれば書き込み可能なディスクであると判断できるので、次のステップS1603に遷移する。ここで、“NO MEDIA”または“ダメージディスク”である場合の処理に関しては後述する。
次に、ステップS1603において、記録先のディスクD2がブランクディスクか否かを判別する。
本実施形態では、ビデオカメラ101に装着されているディスクD1の複製(コピー)ディスクを作成するためには、記録先のディスクD2に既にデータが記録されていることは望ましくないと考え、記録先のディスクD2がブランクディスクでない場合、即ち、何らかのデータが記録されていた場合には、ディスクD2のフォーマット処理(全消去処理)を実行してブランクディスクとした上でダビングを実行するものとする。
そこで、ステップS1603において、ディスクD2がブランクディスクでなかった場合、ステップS1619に進み、フォーマット処理ルーチンを実行する。
図22はフォーマット処理ルーチンを示すフローチャートである。なお、図22のフォーマット処理が指示された場合、PC102においては、ディスクD2上に記録されている全てのデータを消去した後、画像データの記録フォーマットに合わせてディスクの論理構成を構築する。
まず、ステップS2201において、図24(a)に示す警告画面を表示部211に表示する。ユーザは操作部208を操作することにより、図24(b)に示した選択枠2401を移動し、フォーマットを実行するか否かを選択する。そして、ステップS2202においてユーザの選択結果を取得し、ステップS2203においてフォーマットを実行するか否かを判別する。フォーマット処理を実行する場合、ステップS2204において、図18に示す応答データ中のフィールド1805に“READY”(0)をセットするとともに、フィールド1804のFormatビットを1にセットする。この結果、後述のステップS1407、S1408の処理により、Formatビットに1がセットされたレスポンスデータがPC102送信され、PC102において初期化作業が開始されるため、フォーマット中になる。図18の応答データについては後述する。
また、ステップS2203において、NOが選択された場合、ステップS2205において、フィールド1805に“READY”(0)をセットするとともに、フィールド1804のFormatビットを0にセットし、ステップS2206において、図24(g)に示すディスク交換を促す画面を表示部211に表示する。
図16に戻り、ステップS1603により、記録再生ドライブ103に装着されているディスクがフォーマット不要であった場合、ステップS1604に進む。ステップS1604では、ビデオカメラ101に光ディスクD1が装着されているか否か、且つ、ディスクが装着されていた場合にはそのディスクに画像データが記録されているか否かを判別する。ディスクが装着されていなかった場合、あるいは装着されているが画像データが記録されていない場合にはステップS1613に遷移する。
また、画像データの記録済みディスクが装着されていた場合、ステップS1605で、ビデオカメラ101の電源が適切な状態であるか、適正なモードになっているか否かなどを判別し、ビデオカメラ101がダビング処理に適した状態であるか否かをチェックする。
例えば、USBインターフェイスの転送帯域は480Mbpsと十分に高速なので、光ディスクD1からディスクD2にダビングする際、通常の撮影時と比較してディスクD1を高速に回転させてデータを読出し、PC102に転送することで、高速にダビングを行うことができる。そのため、ビデオカメラ101のモードが、ディスクD1を高速で回転させることができない撮影モードになっている場合には、高速にPC102へのダビングはできない。S1605ではこの様に、ビデオカメラ101がダビングに適さないモードなっているか否かを判別している。
ビデオカメラ212に記録済み光ディスクD1が挿入されており、かつ低電圧(ローバッテリー)状態でなく、モードも適切であると判別された場合には、ステップS1606に処理を進め、操作者に、ダビング開始可能であることを知らせるため、ボタン209のLEDを点灯させる。そして、ステップS1607に進み、表示制御部210を介して表示部211に現在書き込み可能である旨を示す情報を表示する。さらにステップS1608に進み、表示部211にメディア情報を表示する。S1607、S1608における表示部211の表示例を図17(a)に示す。
一方、ステップS1601により、記録再生ドライブ103の光ディスクD2のメディアがDVD−Rであると判別された場合にはステップS1609に遷移する。ステップS1609においては、ステップS1602と同様にディスクD2の状態を検出する。ここで、ディスクD2の状態が“BLANK”、且つ、“Format済み”であればステップS1604に進む。また、メディアの状態が“BALNAK”、“Format済み”以外である場合には、ステップS1610に遷移する。
本実施形態では、ビデオカメラ101に装着されているディスクD1の複製(コピー)ディスクを作成するためには、記録先のディスクD2に既にデータが記録されていることは望ましくないと考え、記録先のディスクD2がブランクディスクで、且つ、記録フォーマットに従ってフォーマット処理されていた場合以外はコピー禁止にしている。
ステップS1610では、記録再生ドライブ103に装着されている光ディスクD2が書き込み可能な状態でないので、書き込みできない状態であることをユーザに通知するためにボタン209のLEDを消灯させる。さらにステップS1611に進み、表示制御部210を介して表示部211によって光ディスクD2が書き込みできないディスクであることを通知し、ステップS1612おいて、そのときのメディア情報を表示部211に表示する。S1611、S1612における表示部211の表示例を図17(b)に示す。
また、ステップS1602において、記録再生ドライブ103に挿入されている光ディスクD2の状態が図8の“NO MEDIA”、“ダメージディスク”であった場合には、書き込み不可のディスクであるためステップS1616に遷移する。
ステップS1616では記録再生ドライブ103に装着されている光ディスクD2がダメージディスクであるか、またはディスクが装着されていないので、書き込みできない状態であることをユーザに通知するためにボタン209のLEDを消灯させる。
さらにステップS1617に進み、表示制御部210を介して表示部211によって光ディスクD2がダメージディスクであるか、または光ディスクD2が装着されていないことを通知し、ステップS1618においてメディア情報を表示部211に表示する。S1617、S1618における表示例を図17(c)、(d)に示す。図17(c)は記録再生ドライブ103にディスクが装着されていない場合の表示例、図17(d)は装着されたディスクD2がダメージディスクのDVD−RWであった場合の表示例である。
また、ステップS1604、S1605において、ビデオカメラ212に記録済み光ディスクD1が装着されていないか、記録済み光ディスクが読込み可能なメディアでないか、かつ低電圧(ローバッテリー)状態であるか、モードも適切でないと判断された場合にはステップS1613に遷移する。
ステップS1613では光ディスクD1が挿入されていないか、または低電圧状態であるか、モードが適切である場合に、ディスクD1のデータをPCに送信できない状態であることをユーザに通知するためにボタン209のLEDを消灯させる。
さらにステップS1614に進み、表示部211によって、光ディスクD1が挿入されていないか、光ディスクD1が読込み可能なディスクでないか、低電圧状態であるか、モードが不適切であることを通知する。そして、ステップS1614において、そのときのメディア情報を表示部211に表示する。図17(e)にディスクが挿入されていない場合、図17(f)に読み込めないディスクが挿入されている場合、図17(g)に低電圧状態である場合の表示例を示す。
以上の様にREADY状態の処理が終了したら、図14のステップS1407に遷移する。ステップS1407において、PC102からのコマンド(図5)に対するレスポンスデータを生成する。ここで、生成するレスポンスデータは図18に示される8バイトの構成をとる。
以下に図18の応答データの構造について説明する。
最初の2バイトのフィールド1801は、応答データ長を示しており、本実施形態においては8バイトを設定する。フィールド1802は、PC102が次のコマンドを送信までの時間を100ms単位で指定する。つまり、フィールド1802の値を、例えば1としておくと、PC102が次にコマンドを送ってくるのは100ms後とすることができる。
そして、本実施形態では、後述の如く、ユーザによりダビング開始の指示があった場合、フィールド1802の値を、ダビング開始以前よりも小さく設定する。つまり、ダビング開始以降は、それ以前に比べて、頻繁にPC102からのコマンドがビデオカメラ101に送信されるようにする。こうすることで、PC102では、ダビング中におけるビデオカメラ101のステータスの変化を迅速に認識することができる。
また、ダビング中以外においては、ダビング中に比べてPC102からのコマンド送信間隔を長くするので、PC102の負担を軽くすることができる。
フィールド1803は、図5のコマンドでフィールド503に設定された値をそのまま設定する。本実施形態においては0x01を指定する。
フィールド1804のFormatビットは、ユーザにより記録再生デバイス103に装着されているディスクD2のフォーマット処理が指示されたか否かを示すフラグで、フォーマット処理が指示された場合1が設定される。
フィールド1804のDTは、ビデオカメラ101において、ユーザがダビング指示ボタン209を操作したか否かを示すフラグで、ボタン209が操作された場合1を設定する。ボタン209の操作の検出処理は後述する。フィールド1805は、ビデオカメラ101のステータスを示すもので、その値は、図12の表に示される値をとる。各値の意味は次の通りである。
“READY”(0)はビデオカメラ101がデータを送信可能な状態であることを示す。“転送中”(1)はデータを送信中であることを示す。“BUSY”(2)はビデオカメラ101が別の処理を実行しており、PC102からのコマンド要求に応答できないことを示す。“LOW BATTERY”(3)はデータ送信中にバッテリ電圧が低くなったことを示す。“MODE CHANGE”(4)はビデオカメラ101のモードが変更されたことを示す。“NO DISC”(5)はビデオカメラ101にディスクD1が挿入されていないことを示す。“NO READABLE DISC”(6)はビデオカメラD1に読み込み可能な光ディスクD1が挿入されていないことを示す。
図14のフローチャートに戻り、ステップS1407において生成されるレスポンスデータのフィールド1805には、図16における処理の結果に応じた値が設定される。例えば、ステップS1608から遷移した場合、ビデオカメラ101がデータを送信可能な状態を示す“READY”(0)が設定される。また、このとき、フィールド1804のDTに“1”がセットされていた場合(ユーザがダビングボタン209を押下した場合)には、それも合わせて生成することになる。また、ステップS1615から遷移した場合、“LOW BATTERY”(3)、或いは、“NO DISC”(5)が設定される。
ステップS1402において、PC102からのコマンドのStatusフィールド504が“転送中(1)”または“終了処理中(2)”、“FORAMT(9)”であった場合、S1404に遷移する。S1404の処理を図19のフローチャートを用いて説明する。
まず、ステップS1901において、光ディスクD1が正常に装着されているか否かを判別する。正常に装着されていない場合にはステップS1906に進む。また、正しく装着されていた場合、ビデオカメラ101が低電状態でなく、かつ、モードが正しいか否かを判別する。これらが正常であれば、ステップS1903に遷移し、ボタン209のLEDを点滅させ、操作者に転送中であることを報知する。
そして、ステップS1904において、書き込み処理中であればその旨を、表示制御部210を介して表示部211に表示する。また、終了処理中またはフォーマット処理中である場合にも同様に、処理中であることを表示部211に表示する。
なお、フィールド508のTime情報により取得した書き込み残り時間情報も同時に表示し、終了処理中である場合も同様にフィールド508のTime情報により取得した終了処理残り時間情報を表示するものとする。そして、ステップS1905において表示部211にメディアの情報を表示する。書き込み処理中の情報の表示例を図20(a)に、終了(ファイナライズ)処理中の情報の表示例を図20(b)に示す。
また、ステップS1906では、ユーザに書き込みできない状態であることを通知するため、ボタン209のLEDを消灯させる。さらにステップS1907に進み、表示制御部210を介して表示部211によって光ディスクD1が挿入されていないか、光ディスクD1が読込み可能なディスクでないか、低電圧状態であるか、モードが不適切であることを通知する。そして、ステップS1908において、そのときのメディア情報を表示部211に表示する。図17(e)にディスクが挿入されていない場合、図17(f)に読み込めないディスクが挿入されている場合、図17(g)に低電圧状態である場合の表示例を示す。
その後、ステップS1407において、レスポンスデータを生成するが、このときのStatusフィールド505には、同様に図12に示される“転送中(1)”が設定される。また、フィールド504は、データ転送中なので、DT=1が設定される。
またステップS1402において、受信コマンドのStatusフィールド504が、“完了(3)”である場合、ステップS1405に遷移する。ステップS1405の処理について、図21のフローチャートを用いて説明する。
記録再生ドライブ103に挿入されている光ディスクD2へのデータ書き込みが終了したので、ステップS2101ではユーザにディスクコピーが終了したことを通知するため、ボタン209のLEDを消灯させる。さらにステップS2102においてコピーが完了したことを表示部211に表示する。さらにステップS2103において、メディア情報を表示する。S2102、S2103における表示例を図20(c)に示す。
S1405の完了処理終了後、ステップS1407においては、書き込み終了であるのでフィールド1805には、“READY(0)”が設定される。また、データ転送中ではないので、フィールド1804のDTビットには0が設定される。
また、ステップS1402において、受信コマンドのStatusフィールド504が、“BUSY”、“ERROR”、“NO DRIVE”、“LOW BATTERY”、“中止”である場合、ステップS1406のエラー処理を実行する。エラー処理について、図23を用いて説明する。
ステップS2301において、PC102が前述の如く何らかのエラー状態でありコピーを実行することが出来ない場合、ユーザにディスクコピーが出来ない状態であることを通知するためにボタン209のLEDを消灯する。さらにステップS2302において表示制御部210を介して表示部211にエラー情報を表示し、ステップS2303においてメディア情報を表示する。BUSY状態である場合の表示例を図24(c)に、エラーである場合の表示例を図24(d)に、ドライブが無い場合の表示を図24(e)に、バッテリが無い場合の表示を図24(f)に、途中でキャンセルを実行した場合の表示を図24(g)に示す。
S1406のエラー処理終了後、ステップS1407においては、フィールド1805には、“READY(0)”が設定される。また、データ転送中ではないので、フィールド1804のDTビットには0が設定される。
以上の様に生成されたレスポンスデータは、ステップS1408において、通信制御部204を介してPC102に送信され処理が終了する。
なお、レスポンスデータを送信した場合、そのレスポンスデータは次回に送信するまで、内部メモリ206内に保持しておくものとする。つまり、レスポンスデータは、前回のレスポンスデータを更新することで生成する。
次に、ビデオカメラ101における、ユーザ入力の検出処理を図25のフローチャートに従って説明する。この処理は、図14の処理と非同期に実行される。この処理は、メイン制御部203が実行するソフトウェアによって行われるが、ユーザへのレスポンスを高速に行いたいのであれば、ハードウェア割り込みで実現されても良い。
操作部208のいずれかのボタンが操作されると、この処理が開始される。
先ず、ステップS2501では、操作されたボタンがダビングボタン209であるか否かを判断する。否であれば本処理を終える。
また、ダビングボタン209が操作された場合、ステップS2502に進み、内部メモリ206に保持されている最新のレスポンスデータのステータスを調べ、“転送中”となっているか否かを判断する。“転送中”である場合には、既に画像データの転送が行われていることを意味するので、この処理を終了する。
また、転送中ではないと判断した場合には、ステップS2503に進み、レスポンスデータのステータスはREADY状態であるか否かを判断する。READY状態である場合、ビデオカメラ101、及び、PC102が、ダビング条件は整っていて、ユーザのダビング指示を待っている状態であることを意味するので、処理はステップS2504に進んで、内部メモリ206のレスポンスデータのフィールド1804のDTに1をセットする。
そして、ステップS2505において、フィールド1802の値を、それ以前よりも短くする。具体的には、例えば、ダビング指示前において100msに設定していた場合、ダビング指示があった場合には、その半分の50ms程度とする。
この結果、図14の処理で、次回、PC102からコマンドを受信した場合に、図14のステップS1407でフィールド1804のDTに1をセットしたレスポンスデータが生成され、PC102に対してダビング指示がなされたことを通知することが可能になる。
なお、先に説明したように、実施形態においては、USB接続されたビデオカメラ101をマスストレージとして処理することになる。そのため、PC102によるビデオカメラ101からの画像データファイルの取得処理は、別タスクで行われる。マスストレージクラスの伝送は、PC102から見た場合に、ビデオカメラ101を外部記憶装置として読み出すものであり、USB接続の外部記憶装置と同様であるので、その説明は省略する。
以上説明したように、本実施形態では、ディスクD1に記録されているデータをビデオカメラにより再生してPCに送信し、ディスクD2にダビングする際、このダビング処理に関連したPCの状態を示す情報をビデオカメラに送信し、ビデオカメラの表示部にてPCの状態を表示している。そして、ユーザはビデオカメラに表示されたPCの状態を確認しながら、ビデオカメラを操作するだけでダビングを指示することが可能となる。また、ビデオカメラはPCのマスストレージとして機能しながらも、あたかも、ビデオカメラの制御によってPCに画像ファイルの転送を行う如く振る舞うことができる。
なお、本実施形態ではビデオカメラとPCとをUSBインターフェイスを介して接続する例を説明したが、ビデオカメラをマスストレージクラスデバイスとして認識し、マスストレージデバイスプロトコルを用いてファイルを読込むことが可能であれば、IEEE1394インターフェイス、或いは、ネットワークインターフェイスを介して接続する場合に適用しても良い。
また、実施形態では、ダビングボタン209がLEDを内蔵しているものとしたが、LEDとボタンは一体でなくても構わない。ただし、ダビング可能になった場合に、ユーザに対してどのボタンを押下すれば良いのかを知らせるためには、一体であることが望ましい。
なお、本実施形態では、図16のステップS1609において、ブランクディスクでなかった場合であっても、ファイナライズされていない場合、まだデータを記録可能である。
即ち、DVD−Rディスクに対し、DVDビデオフォーマットで画像データを記録した場合、ファイナライズ処理を施すことで、DVDビデオプレーヤにて記録した画像を再生することが可能となる。また、DVD−Rディスクに対してファイナライズ処理を施すと、そのディスクは再生専用ディスクとなり、データの追記が不可能となる。つまり、ファイナライズ処理を実行するまでは、空き容量がある限り、DVD−Rディスクに対してデータを追記することが可能である。
そのため、コピー先のディスクD2がブランクディスクでなく、且つ、ファイナライズ処理されていない場合には、コピー先ディスクの記録残容量のデータも図8のディスク情報コマンドに付加してPC102からビデオカメラ101に送信しておく。
ビデオカメラ101では、コピー元ディスクD1のデータ量とコピー先ディスクD2の記録残容量とを比較し、比較の結果、コピー先ディスクの残容量の法が少ない場合には、コピー不可と判断し、ステップS1610に進む様に構成する。また、コピー先ディスクの残容量の方が多い場合には、ステップS1604に進む様に構成する。
この様に構成しておくことで、コピー先ディスクD2がブランクディスク以外の場合であっても、複数のディスクD1のデータを一枚のディスクD2に集めることが可能となる。
次に、第2の実施形態について説明する。
図26は第2の実施形態におけるデータ伝送システムの構成を示す図である。図26のシステムは、図1と同様、光ディスクD1に対して撮影した画像データを記録再生するビデオカメラ101と、PC102から構成される。本実施形態では、PC102は大容量光ディスクD2aに対してデータを記録再生するための記録再生ドライブ103に加え、大容量光ディスクD2bに対してデータを記録再生するための記録再生ドライブ105を有する。
ビデオカメラ101とPC102はそれぞれ、USBインターフェイスを備え、これらのUSBインターフェイスにUSBケーブル104を接続することでデータの伝送を実現している。本実施形態においては、USBの伝送プロトコルとしてマスストレージを用いる場合を説明する。また本実施形態においては、光ディスクD1に記録されたデータをPC102に転送し、大容量光ディスクD2aまたはD2bに記録することが可能である。
本実施形態において、ビデオカメラ101の構成は図2に示した構成と同様であるが、PC102に対してディスクD1のデータを伝送する際の処理が若干異なっており、この点については後述する。
本実施形態におけるPC102の主要部のブロック構成図を図27に示す。本実施形態においても、PC102の構成はほとんど図3に示した構成と同様であるが、記録再生ドライブ105を備える点が異なっている。記録再生ドライブ105は記録再生ドライブ103と同様の構成、機能を持っており、装着された光ディスクD2bに対してデータの記録再生が可能である。
次に、実施形態における処理について説明する。
<PC102におけるアプリケーションプログラムの説明>
実施形態におけるHDD303に格納されているアプリケーションプログラムは、大別して以下の四つのプログラムモジュールA〜Dで構成される。それぞれのプログラムは次のような機能を果たす。
モジュールA:ビデオカメラとのステータス通信を行うプログラム
モジュールB:ビデオカメラからの撮像画像データの受信、及び、光ディスク1506への書き込み処理(ダビング処理)を行うプログラム
モジュールC:OSが起動した際に内部メモリ302に常駐し、サポートしているビデオカメラが接続されているかを検出するプログラム
モジュールD:PC102に接続されている複数の記録再生ドライブの情報を通知し、複数の記録再生ドライブの中からダビング先を選択するプログラム
本実施形態では、これら四つのモジュールによって、ビデオカメラ101とPC102とがUSBケーブル104で接続されていること、及び、書き込み可能な光ディスクD2aあるいはD2bが記録再生ドライブ103、105に装着されていることを判別する。そして、自動的にビデオカメラ101に装着された光ディスクD1に記憶された全てのデータファイルをPC102に送信して光ディスクD2aまたはD2bに書き込むダビング機能を実現する。
また、本実施形態においても、ビデオカメラ101をPC102に接続していない場合、本実施形態のアプリケーションの内部メモリ302に占める消費量が少ないほうが望ましいため、内部メモリ104に常駐するプログラムは、アプリケーションプログラム全てではなく、そのアプリケーションを起動するか否かを決定するモジュールCのみとした。
なお、実施形態のアプリケーションにとってビデオカメラの機種名は既知である。USBインターフェイスは、元々、ホットプラグアンドプレイとして策定されたインターフェイスであり、USBホストコネクタ307にUSBケーブル104を介してビデオカメラ101を接続すると、マスストレージ通信を確立する。この通信確立の手順は公知である。
この際、OSは、その接続されたデバイスを認識することになり、そのデバイス名も取得する。本実施形態におけるモジュールCは、USBホストコネクタ307にデバイスが接続されたというイベント発生を監視し、USBデバイスの接続がなされた場合に実行する。以下、各モジュールA〜Dの処理を説明する。
<モジュールC(常駐プログラム)の説明>
図28は、実施形態におけるモジュールCの処理手順を示すフローチャートである。この処理は、先に説明したように、USBホストのコネクタ307に何らかのデバイスが接続された場合に実行する。
先ず、ステップS2801では、接続されたUSBデバイスが、既知のビデオカメラであるか否かを判定する。既知でない場合には、本処理を終了する。また、既知のビデオカメラ101が接続されたと判定した場合、ステップS2802に進んで、ビデオカメラ101に対し、図29に示すデータ構造を持つコマンドAにおけるフィールド2904に“NOT READY(7)”をセットし、コネクタ307を介して送信する。このコマンドAは、ATAPIのコマンドブロックの構成に従った12バイトのデータで構成される。
ATAPIの規格ではデータオフセット0バイト目のフィールド2901はコマンドブロックの制御情報を示しているが、本実施形態の機能はATAPIの規格で定められていないので、ベンダ固有のコマンドを示す0xFFを指定する。
フィールド2902は、ATAPIの規格に従い、上位3ビットにLogical Unit Numberを指定する構成としているが、本実施形態においては、0を指定する。フィールド2903は、このコマンドの詳細機能を指定するものである。本実施形態においては0x01と0x02を指定することが可能とする。ビデオカメラ101に対してPC102のステータスを通知して、かつビデオカメラ101のステータス受信とダビングおよびフォーマット実行のトリガを受信する場合、0x01を設定する。
また、PC102に複数の記録再生ドライブが接続されている場合に、ビデオカメラ101により選択された記録再生ドライブの情報を取得する場合に、0x02を設定する。
0x01を指定した場合には、図30のヘッダと図31のデータを伴うレスポンスデータを受信することになり、0x02を指定した場合は図30のヘッダと図32に示すデータフィールドにより構成されるレスポンスデータを受信することになる。図30〜図32に関しては後述する。
フィールド2904は本実施形態において最も重要な意味を持つフィールドで、PC102のステータス情報を示しており、図33に示す値が設定される。各値の意味は次の通りである。
“READY(0)”はPC102がデータを受信して記録保存が可能な状態であることを示す。“転送中(1)”はデータを受信中であることを示す。“終了処理中(2)”はデータを受信してディスクD2aあるいはD2bに記録を行い、終了処理が実行されていることを示す。“完了(3)”はデータを受信してディスクD2aあるいはD2bに記録が完了したことを示す。“中止(4)”はデータを受信して記録保存が完了する前に処理が中断されたことを示す。“ERROR(5)”はデータを受信してディスクD2aあるいはD2bに対する記録が完了する前に処理がエラーとなったこと、例えば書き込みエラーが発生したことにより中断されたことを示す。“FORMAT(6)”はディスクD2aまたはD2bがフォーマット処理中であることを示す。“NOT READY(7)”はコピーする記録再生ドライブが選択されていないことを示す。
フィールド2905はPC102でビデオカメラ101から取得するデータのデータ長を表す。
フィールド2906はPC102に接続されている記録再生ドライブに装着されている光ディスクの種類を示しており、図7に示す値が設定される。各値の意味は次の通りである。なお、図26に示す様に、PC102に対して複数の記録再生ドライブが接続されている場合、フィールド2906は、これら複数の記録再生ドライブのうち、選択された記録再生ドライブに装着されているディスクの種類を示す。
“NO MEDIA(0)”はPC102に接続されている記録再生ドライブに光ディスクが装着されていないことを示す。“NOT SUPPORT(1)”はPC102に接続されている記録再生ドライブに装着されている光ディスクがサポートしていないディスクであることを示す。“DVD−R(2)”はPC102に接続されている記録再生ドライブにDVD−Rの光ディスクが装着されていることを示す。“DVD−RW(3)”はPC102に接続されている記録再生ドライブにDVD−RWの光ディスクが装着されていることを示す。“DVD−RAM(4)”はPC102に接続されている記録再生ドライブにDVD−RAMの光ディスクが装着されていることを示す。“DVD+R(5)”はPC102に接続されている記録再生ドライブにDVD+Rの光ディスクが装着されていることを示す。“DVD+RW(6)”はPC102に接続されている記録再生ドライブにDVD+RWの光ディスクが装着されていることを示す。
フィールド2907はPC102に接続されている記録再生ドライブに装着されている光ディスクの書き込み状態を示しており、図8に示す値が設定される。各値の意味は次の通りである。なお、図26に示す様に、PC102に対して複数の記録再生ドライブが接続されている場合、フィールド2907は、これら複数の記録再生ドライブのうち、選択された記録再生ドライブに装着されているディスクの状態を示す。
“NO MEDIA(0)”は記録再生ドライブにディスクが装着されていないことを示す。“BALANK(1)”は記録再生ドライブに装着されているディスクがブランクディスク(何も記録されていないディスク)であることを示す。“FORAMT処理済み(2)”は記録再生ドライブに挿入されているディスクがフォーマット済みのディスクであることを示す。“データ有り(3)”は記録再生ドライブに装着されているメディアに、既に何らかのデータが記録されていることを示す。“FINALIZE済み(4)”は記録再生ドライブに装着されているディスクが終了処理済みであることを示す。“ダメージディスク(5)”は記録再生ドライブ3に装着されているディスクがダメージディスク(傷などによりデータを正しく書き込み、読み出しできないディスク)であることを示す。
図28のフローに戻り、ステップS2803にて、PC102に接続されている記録再生ドライブが一つであるか否かを判別し、一つであった場合にはプログラムモジュールAを起動する(ステップS2804)。一方、図26に示すように複数の記録再生ドライブが接続されていれば、モジュールDを起動する(ステップS2805)。
なお、本実施形態では記録再生ドライブが一つの場合はモジュールDを介さずにモジュールAを起動しているが、モジュールDを起動してドライブの情報を送信してもよい。
<モジュールDの説明>
モジュールDは、PC102に複数の記録再生ドライブが接続されている場合に実行されるモジュールである。モジュールDの処理を図34のフローチャートに従って説明する。
まず、ステップS3401において、モジュールCが発行したコマンドAに対するレスポンスデータAを受信する。レスポンスデータの構成を図30、図31に示す。図30はレスポンスデータAのヘッダ部分を示し、図31は図29のフィールド2902のCodeで0x01を指定された場合の構成である。
図30において、最初の2バイトのフィールド3001は、応答データ長を示しており、本実施形態においては8バイトを設定する。フィールド3002は、PC102が次のコマンドを送信までの時間を100ms単位で指定する。つまり、フィールド3002の値を例えば1としておくと、PC102が次にコマンドを送ってくるのは100ms後とすることができる。フィールド3003は、コマンドAの場合0x01を設定し、後述のコマンドBの場合には0x02を設定する。
また、図31のフィールド3101はレスポンスAを示す0x01を設定する。フィールド3102のFormatビットは、ユーザにより記録再生デバイス103に装着されているディスクD2のフォーマット処理が指示されたか否かを示すフラグで、フォーマット処理が指示された場合1が設定される。
フィールド3102のDTは、ビデオカメラ101において、ユーザがダビング指示ボタン209を操作したか否かを示すフラグで、ボタン209が操作された場合1を設定する。ボタン209の操作の検出処理は後述する。フィールド3103は、ビデオカメラ101のステータスを示すもので、その値は、図12の表に示される値をとる。各値の意味は次の通りである。
“READY”(0)はビデオカメラ101がデータを送信可能な状態であることを示す。“転送中”(1)はデータを送信中であることを示す。“BUSY”(2)はビデオカメラ101が別の処理を実行しており、PC102からのコマンド要求に応答できないことを示す。“LOW BATTERY”(3)はデータ送信中にバッテリ電圧が低くなったことを示す。“MODE CHANGE”(4)はビデオカメラ101のモードが変更されたことを示す。“NO DISC”(5)はビデオカメラ101にディスクD1が挿入されていないことを示す。“NO READABLE DISC”(6)はビデオカメラD1に読み込み可能な光ディスクD1が挿入されていないことを示す。“NOT READY”(8)は記録先ディスクD2に対するフォーマット処理の要否の指示待ちであることを示す。
なお、モジュールDでは特にこのレスポンスを使用することは無く、モジュールAとの整合性をとるために受信するものである。
レスポンスAを受信したのち、複数の記録ドライブに関するデータを送信するためのコマンドBを通信制御部306によりビデオカメラ101に対して送信する。送信するコマンドブロックの構造を図35に示す。
コマンドBは、ATAPIのコマンドブロックの構成に従った12バイトのデータで構成される。ATAPIの規格では、データオフセット0バイト目のフィールド2701はこのコマンドブロックの制御情報を示しているが、本実施形態の機能はATAPIの規格で定められていないので、ベンダ固有のコマンドを示す0xFEが指定する。
フィールド3502はパラメータリストのデータ長を示し、本コマンドが送信された後、PC102から送信されるデータ長を示すものである。
ステップS3402によりコマンドBを送信した後、図36に示されるデータ構造に従い作成されたデータを、USBホストコネクタ307を介してビデオカメラ101に対して送信する。
図36の3601フィールドは全データのデータ長を表すフィールドである。
フィールド3602はPC102に接続されている記録再生ドライブの数を示す。図26の構成においては、記録再生ドライブ103と105の2台のドライブが接続されているため、Codeの値は0x02値が入る。なお、ドライブが複数ある場合はドライブごとに図36のフィールド3604〜3609で示されるデータが存在することになる。なお、ここではPC1504に接続されている全ての記録再生ドライブの情報を通知することとしたが、記録再生再生ドライブが記録可能な状態のもののみビデオカメラ101に通知してもよい。
フィールド3603は記録再生ドライブのシリアル番号を示す。例えば2台ドライブが存在すれば1台目のDeviceNumberは1、2台目のDeviceNumberは2となる。
フィールド3604のデバイスタイプは図33に示すように、どのようなドライブ特性を有しているかを示すフィールドである。
フィールド3605は図29のフィールド2906と同様とし、フィールド3606はフィールド2907と同様とする。
フィールド3607〜3609はATAPIのINQUIRYコマンドにより取得できる、Vendor Identification, Product Identification, Product Revision Levelのフィールドと同様の長さをとって有り、INQUIRYコマンドを接続されている各記録再生ドライブに対して発行して、取得可能なフィールドであるものとする。ATAPIのINQUIRYコマンドに関してはATAPI規格に記述されているのでここでは省略する。
フィールド3607はベンダ固有のIDを記述するフィールドであり、フィールド3608はプロダクトIDを記述するフィールド、フィールド3609は製品のリビジョン番号を示すものである。
ステップS3403においてこれらのデータを送信した後、ステップS3404において、コマンドAにおいてフィールド2902のCodeを0x02にしたコマンドAをビデオカメラ101に対して送信する。
コマンドAを送信した後、ステップS3405にてコマンドAに対するレスポンスAを受信する。フィールド2902のCodeを0x02にした場合のレスポンスデータは図32の構成をとる。
図32は、図30のヘッダとともに送信されるデータであり、フィールド3201にはレスポンスBであることを示すコード0x02が設定される。また、フィールド3202には、ユーザによって選択された記録再生ドライブの番号に応じた値が設定される。また、何れの記録再生ドライブも選択されていない場合には0が設定される。
レスポンスAを受信した後、ステップS3406に遷移し、フィールド3202のデバイス番号に1以上の値が入っているか否かを確認する。フィールド3202に1以上の値があれば、それがビデオカメラ101側で選択された記録再生ドライブ番号であるので、指定された記録再生ドライブを記録先のドライブに選択する。そして、ステップS3407に遷移して、PC102の状態が書き込み可能な状態ならばコマンドAの“READY(0)”コマンドを発行し、書き込み不可の状態ならばコマンドAの“NOT READY(7)”を発行した後、モジュールAを起動する。
なお、ステップS3406でフィールド3202に0の値が入っている場合は再びステップS3404に戻りデータを送信して、デジタルビデオカメラ101により、記録先の記録再生デバイスが選択されるまで繰り返す。
本実施形態では、これ以降、モジュールDで記録再生ドライブ105が記録先に選択されているものとして説明する。
<モジュールAの説明>
モジュールAは、ビデオカメラ101とPC102が接続され、記録先のドライブが選択されている場合に実行されるモジュールである。
また、このモジュールAが起動した場合、それ以前に、既にビデオカメラ101には、“READY(0)”または“NOT READY(7)”のコマンドAを送信していることになる。また、このモジュールAは一旦起動すると、ダビング動作中は内部メモリ302に常駐し、ビデオカメラ101からのレスポンスデータを受信した場合にも実行される。
モジュールAの処理で、ビデオカメラ101に送信するコマンドは図29に示す通りである。
前述の様に、モジュールAが起動した際には、既に、PC102からビデオカメラ101に対して、“READY(0)”または“NOT READY(7)”コマンドを送信しているので、その応答(レスポンスデータ)がビデオカメラ101から返ってくる。
また、後述の様に、ダビング中でもビデオカメラ101よりレスポンスデータが返ってくるので、その場合にも、このレスポンスデータに応じた処理を実行することになる。かかる点を踏まえ、モジュールAの処理を、図38のフローチャートに従って説明する。
先ず、ステップS3801では、受信したレスポンスデータのフィールド3102の値に従い、次にコマンドを送信する送信時間が設定される。この送信時間が設定されると、その時間を待って、モジュールAを構成するコマンド送信処理(図10)が実行される。
図10に示すように、このコマンド送信処理は、ステップS1001でステータスを取得し、ステップS1002にて取得したステータスを図29に示すデータ構造のコマンドとしてビデオカメラ101に送信する。この結果、ビデオカメラ101からは、そのレスポンスデータが返っているので、その都度、本処理が実行することになる。
図38の説明に戻る。コマンド送信の起動タイミングの設定を行うと、ステップS3802において、PC102の状態を確認する。PC102が“READY(0)”であれば、ビデオカメラ101は画像データの送信が可能な状態であるものとし、ステップS3803に遷移する。
ステップS3803では、レスポンスデータのフィールド(図31のフィールド3102)を確認し、DTビットが1に設定されているか否かを判断する。詳細は後述するが、ビデオカメラ101におけるダビング開始を指示するボタンが押下された場合にDTビットが1にセットされる。DTビットが1にセットされている場合、ステップS3804に遷移する。そして、ビデオカメラ101に装着されているディスクD1に記録されているデータの読み出し、及び、ディスクD2a、D2bへの書き込み(ダビング)を行うモジュールBを起動し、処理を終了する。
一方、ステップS3802により、PC102のステータスが“READY(0)”でない場合にはステップS3805に遷移し、DTビットと同様に、図31のレスポンスデータのフィールド3102におけるFormatビットを確認する。ここで、後述の如く、ビデオカメラ101により記録先に選択された記録再生ドライブ105に装着されているディスクD2bに対してフォーマット処理が指示された場合、Formatビットが1にセットされている。このビットが1である場合にはステップS3808に移行し、選択されたドライブ(記録再生ドライブ105)に対してフォーマット処理を実行する。
なお、フォーマット処理中は、図10のステップS1002におけるコマンドAの送信において、フィールド2903の値を“FORMAT(6)”に設定してビデオカメラ101に送信するものとする。初期化が終了したら、ステップS1002におけるコマンドAの送信において、フィールド2903の値を“READY(0)”にセットする。
ステップS3806において、Formatビットが0である場合、ステップS3606に移行し、モジュールBが起動されているか否かを判断する。モジュールBが起動されている場合には、ステップS3807でそのステータスをモジュールBに通知して本処理を終える。一方、ステップS3806でモジュールBが起動されていない場合には本処理を終える。
なお、説明が前後するが、PC102上で動作するOSは、マルチタスクのOSであり、モジュールAとBとは別タスクとして動作する。
<モジュールBの説明>
モジュールBの処理は、第1の実施形態における図11のフローチャートに示した処理と同様であるため、詳細な説明は割愛する。本実施形態では、ビデオカメラ101から受信したデータを、ドライブ103、105のうち、選択された方のドライブに装着されたディスクに記録する点のみが異なるが、記録先のドライブは既にモジュールDによって選択されているので、モジュールDによって選択されたドライブに装着されたディスクに対してデータを記録する。
<ビデオカメラ101の処理>
次に、実施形態におけるビデオカメラ101における処理について説明する。
ビデオカメラ101がUSBケーブル104でPC102と接続され、通信が確立している状態で、メイン制御部203が通信制御部204からの通知に応じて実行する処理について、図39に示すフローチャートを用いて説明する。
ステップS3901において、メイン制御部203は、通信制御部204を介してPC102からのコマンドを受信したと判断したか、或いは、USBケーブルが切断(コネクタからUSBケーブルがはずれた場合など)したかを判別する。USBケーブル切断であると判断した場合には、ステップS3909に進んで、ボタン209のLEDを消灯する。
また、ステップS3901において、受信したコマンドのOperation Codeが図29に示す様に0xFFであった場合には、ステップS3902に遷移する。また、図35に示す様にOperation Codeが0xFEである場合には、ステップS3919に遷移する。前述の通り、Operation Codeが0xFEの場合、受け取ったコマンドは、ドライブ情報を通知するためのコマンドBである。
ステップS3901において、コマンドBを受信した場合、ステップS3919において、メイン制御部203は、記録再生ドライブの属性情報を取得する。そして、ステップS3920において、取得したドライブの属性情報に基づき、図40に示すように、PC102に接続されている書き込み先のドライブ及び、各ドライブに装着されているディスクに関する情報4001を表示部211に表示する。なお、図40では、書き込み可能なディスクが装着されていないドライブについても表示しているが、書き込み可能なディスクが装着されているドライブに関する情報のみを表示することも可能である。
この様に、デバイス情報がPC102から送られてきた後、PC102からは図29に示すように、フィールド2901のOperation Codeが0xFFでフィールド2902の値が0x02のコマンドAが送られてくる。
そのため、ステップS3901からステップS3902に遷移し、その後ステップS3913に進む。
ステップS3913においては、記録再生デバイス一覧の情報に基づいて記録再生ドライブの一覧情報を表示する。図40は記録再生ドライブの一覧表示画面の例である。
このとき、本実施形態では、デバイス情報に基づいて、書き込み可能な光ディスクが装着されているドライブとそれ以外のドライブを判別する。具体的には、図41のフローチャートに示すように、まず、ステップS4101において、複数の記録再生ドライブ情報のうちの一つについて、装着されているディスクの種類を判別する。
装着されているディスクがDVD−R以外の場合、ステップS4102において、ダメージディスクであるか否かを判別する。ダメージディスクでなかった場合、ステップS4103において記録可能なドライブに設定する。また、ダメージディスクであった場合、ステップS4107において記録不可ドライブに設定する。そして、ステップS4104において残りのドライブ情報があるか否かを判別する。
また、ステップS4101においてディスクがDVD−Rであった場合、ステップS4106において、ディスクの状態が、何もデータが記録されていないブランクディスクで、且つ、フォーマット済みであるか否かを判別する。ブランクディスクで、且つ、フォーマット済みであった場合、ステップS4103において記録可能ドライブに設定する。また、ブランクディスクでないか、或いは、フォーマット済みでなかった場合、ステップS4107において記録不可ドライブに設定する。
ステップS4104において、残りのドライブ情報があった場合、ステップS4105において次のドライブ情報を選択し、ステップS4101に戻る。また、全てのドライブ情報について判別処理を完了すると、処理を終了する。
ユーザは、操作部208を操作することにより、図40に示した選択枠4002を移動し、書き込み先のドライブを選択することができる。そして、本実施形態では、図41の判別結果に従い、記録可能なディスクが装着されているドライブについてのみ選択できるよう、ドライブ一覧画面の表示形態を変更する。具体的には、記録可能なディスクが装着されているドライブに対してのみ選択枠4002を移動できるようにする。
例えば、図40の例では、二番目のドライブ4004に対してのみ書き込み可能な光ディスクが装着されているため、選択枠4002により二番目のドライブ4004のみ選択できるようにし、選択できない4003や4005の文字の色を薄くしたりすることで選択できないことをユーザに通知する。
この様に、ステップS3913では、ドライブの一覧情報を表示し、ユーザがドライブを選択することができる。その結果、記録先のドライブにファイナライズされていないがブランクディスクでない(ブランクディスクの場合はブランクディスクと表示するものとする)DVD−RWのような再度書込み可能な光ディスクが選択された場合、フォーマット処理を行う必要がある。
そこで、ステップS3914において、ドライブが選択されたか否かを判別する。まだドライブが選択されていない場合、或いは、ステップS3917において、選択されたドライブにフォーマット不要なディスクが装着されていた場合、ステップS3915に遷移し、レスポンスデータを生成する。ここでは、前述の様に、図30の4バイトのデータをヘッダ部として付加し、さらに図32に示す4バイトのデータを加えた合計8バイトのデータを送信する。
このとき、フィールド3201にはフィールド2902で示される値0x02を設定し、フィールド3202にはステップS3913でユーザによって選択されたデバイス番号の値を設定する。ここで、ユーザによってデバイス番号が選択されていない場合には0が設定される。例えば、図40における二番目のデバイス4004が選択された場合は2の値が設定される。
この様にレスポンスデータを生成し、ステップS3915において、PC102に対して送信する。
一方、ステップS3917において、フォーマットが必要なディスクが装着されていた場合、ステップS3918に移行して、フォーマット処理を実行する。
図42はフォーマット処理を示すフローチャートである。
なお、本実施形態では、常にフィールド2902を0x01としたコマンドAが一定間隔で送られている。図42においては、この様に一定間隔で送信されるコマンドAに対するレスポンスAとしてフォーマットの要否を示す情報をPC102に対して送信する。
まず、ステップS4201において、図43に示す警告画面を表示部211に表示する。ユーザは操作部208を操作することにより、図43に示した選択枠4301を移動し、フォーマットを実行するか否かを選択する。そして、ステップS4202においてユーザの選択結果を取得し、ステップS4203においてフォーマットを実行するか否かを判別する。フォーマットを実行する場合、ステップS4204において、フィールド3102のFormatビットを1にセットしてPC102に対して返信する。この結果、PC102においてフォーマット処理が開始されるため、フォーマット中になる。
また、ステップS4203において、NOが選択された場合、ステップS4205において、フィールド3102のFormatビットを0にセットし、ステップS4206において、図44に示すようなディスク交換を促す画面を表示部211に表示する。
ここで図39に戻り、フォーマット中における処理の流れを説明する。
PC102でフォーマット処理を実行中の場合、フィールド2902を0x01としたコマンドAがPC102から送信される。そのため、処理はステップS3901〜S3902を介してステップS3903に進む。そして、ステップS3903おいて、受信したコマンドAのフィールド2903のStatusをチェックする。この場合、フィールド2903は“FORMAT(6)”に設定されている。
従ってステップS3905に遷移し、フォーマット中であることを示す情報を表示部211に表示する。そして、ステップS3906において、入力ボタン209のLEDを消灯する。LEDの消灯が終了したら、ステップS3910に遷移してレスポンスデータを生成するわけであるが、ステップS3910に関しては後述する。
以上説明した一連の処理により、ドライブの選択およびフォーマット処理が終了し、ディスクのダビングを実行することが可能となった。
次に、ステップS3903において、フィールド2903が“READY(0)”である場合について説明する。この場合、フィールド2902を0x01としたコマンドAがPC102から送信される。そのため、処理はステップS3901〜S3902を介してステップS3903に進む。そして、ステップS3903おいて、受信したコマンドAのフィールド2903のStatusをチェックする。
ステップS3903において、フィールド2903が“READY(0)”となっているコマンドAを受信すると、ステップS3904に移行する。そして、ビデオカメラ101にダビング元となるディスクD1が正しく装着されているか否か、かつ、光ディスクD1に画像データが記録されているか否かを判断する。また、このとき、ビデオカメラ101の電源が適切な状態であるか、適正なモードになっているか否かも併せて判別する。
例えば、USBインターフェイスの転送帯域(USB.ver 2.0のHigh Speed モード)は480Mbpsと十分に高速なので、光ディスクD1を通常の撮影時に比較して高速に回転させてデータを読み出し、PC102に転送することが可能となる。
従って、ビデオカメラ101が撮影モードになっている場合には、PC102へのダビングはできない。ここで、適正なモードとは、光ディスクD1に対するアクセスがないようなモードである。
ステップS3904において、記録済みディスクD1が装着されており、かつ低電圧(ローバッテリー)状態でなく、モードも適切であると判別された場合には、ステップS3912に処理を進め、ダビング開始可能であることを知らせるため、ボタン209のLEDを点灯させる。
一方、ビデオカメラ101が、“READY(0)”状態で無い場合には、ステップS3909に遷移し、ボタン209のLEDを消灯する。
ステップS3912においてLEDを点灯させた後、ステップS3910において生成されるレスポンスデータのフィールド3103には、ビデオカメラ101がデータを送信可能な状態を示す“READY(0)”が設定される。
また、このとき、後述する図45の処理において、フィールド3102のDTビットに1がセットされていた場合(ユーザがダビングボタン209を押下した場合)には、それに合わせてレスポンスを生成することになる。
この様に生成されたレスポンスデータは、ステップS3911において、PC102に送信され処理が終了する。なお、レスポンスデータを送信した場合、そのレスポンスデータは次回に送信するまで、内部メモリ206に保持しておくものとする。つまり、レスポンスデータは、前回のレスポンスデータを更新することで生成する。
一方、ステップS3904において、“READY(0)”状態でない場合には、フィールド3102のDTビットに、入力ボタン209が押されているか否かに関わらず0をセットする。
ステップS3903において、PC102からのコマンドのStatusフィールド2904が“転送中(1)”または“終了処理中(2)”であった場合、ステップS3907に進んで、ボタン209のLEDを点滅させ、ユーザに転送中であることを報知する。
また、ステップS3903においてPC1504からのコマンドのStatusフィールド2904が“完了(3)”、“中止(4)”、“ERROR(5)”、“NOT READY(7)”であった場合、ステップS3908においてボタン209のLEDを消灯させる。
次に、ビデオカメラ101における、ユーザ入力処理を検出するための処理を図45のフローチャートに従って説明する。この処理は、図39の処理と非同期に実行される。この処理は、メイン制御部203が実行するソフトウェアによって行われるが、ユーザへのレスポンスを高速に行いたいのであれば、ハードウェア割り込みで実現されても良い。
操作部208のいずれかのボタンが操作されると、この処理が開始される。
先ず、ステップS4501では、操作されたボタンがダビングボタン209であるか否かを判断する。否であれば本処理を終え、ダビングボタン209が操作された場合、ステップS4502に進み、内部メモリ206に保持されている最新のレスポンスデータのステータスを調べ、“転送中”となっているか否かを判断する。“転送中”である場合には、既に画像データの転送が行われていることを意味するので、この処理を終了する。
また、転送中ではないと判断した場合には、ステップS4503に進み、レスポンスデータのステータスはREADY状態であるか否かを判断する。READY状態である場合、ビデオカメラ101、及び、PC102が、ダビング条件は整っていて、ユーザのダビング指示を待っている状態であることを意味するので、処理はステップS4504に進んで、内部メモリ206のレスポンスデータのフィールド3102のDTに1をセットする。
この結果、図39の処理で、次回、PC102からコマンドを受信した場合に、図39のステップS3910でフィールド3102のDTに1をセットしたレスポンスデータが生成され、PCにダビング指示がなされたことを通知することが可能になる。
また、本実施形態においても、第1の実施形態と同様、ダビングを開始した後はフィールド3002の値を、それ以前よりも短くする。具体的には、例えば、ダビング指示前において100msに設定していた場合、ダビング指示があった場合には、その半分の50ms程度とする。
以上説明したように、本実施形態においても、ディスクD1に記録されているデータをビデオカメラにより再生してPCに送信し、PCに接続されている複数の記録再生ドライブを用いて別のディスクにダビングする際、各記録再生ドライブの状態及び、装着されているディスクの状態を示す情報をビデオカメラに送信し、ビデオカメラの表示部にて各記録再生ドライブの状態を表示している。そして、ユーザはビデオカメラに表示された記録再生ドライブの状態を確認しながら、ビデオカメラを操作するだけで記録先の記録再生ドライブを選択するとともに、ダビングを指示することが可能となる。また、ビデオカメラはPCのマスストレージとして機能しながらも、あたかも、ビデオカメラの制御によってPCに画像ファイルの転送を行う如く振る舞うことができる。
なお、本実施形態では、PCに接続されている複数の記録再生ドライブのうち、ディスクが装着されていないドライブに関してもドライブ一覧画面に表示していた。しかし、ディスクが装着されていないドライブに関する情報の表示を禁止することも可能である。
また、PCに接続されている複数の記録再生ドライブのうち、書き込み可能なディスクが装着されていないドライブに関してもドライブ一覧画面に表示していた。しかし、書き込み可能なディスクが装着されているドライブに関する情報だけをドライブ一覧画面で表示することも可能である。
またPCにおける処理の特徴は、アプリケーションプログラムによるものであるので、本発明はコンピュータプログラムをその範疇とするのは明らかである。また、実施形態におけるPCのアプリケーションプログラムは、ビデオカメラに添付するCDROM等にバンドルされることになる。そして、このCDROM(コンピュータ可読記憶媒体)を、PCにセットして、システムにコピーもしくはインストールすることで、実施形態におけるアプリケーションプログラムが実行可能になるわけであるから、当然、そのようなコンピュータ可読記憶媒体も本発明の範疇にある。