(57)【要約】【課題】  ランダムアクセス可能なメモリ媒体を使用したカムコーダにファイルの部分出力、部分書き換え用コマンドを定義してＰＣ等のコントローラからヘッダデータのみの取得やサムネールデータの書き換えなどを行えるようにする。【解決手段】  ＣａｍｅｒａＳｔｏｒａｇｅサブユニットにファイルの部分出力用のＳＥＮＤＦＩＬＥＰＡＲＴＩＡＬコマンド及びファイルの部分書き換え用のＲＥＣＥＩＶＥＦＩＬＥＰＡＲＴＩＡＬコマンドを追加して、部分読み出し、部分書き換えを行えるようにする。【選択図】  図１
2007080199.tif 000002
【特許請求の範囲】
【請求項１】
シリアルデータを送受信するためのデジタルインターフェースを備え、前記デジタルインターフェースを経由して制御信号及びデジタルデータの送受信を行い、ランダムアクセス可能な記録媒体を使用して前記記録媒体上のデジタルデータを取り扱うデジタル機器であって、前記記録媒体上に記録されているデータを指定するためのファイルのパス名を示す情報と前記ファイルが記録されている領域を示す情報と前記記録されているファイルのデータを出力するための経路情報と前記ファイルデータの出力開始位置を指定するための情報を含む制御信号を受信して、前記指定されたデータをAsynchronousトランザクションを用いて出力することを特徴とするデジタル機器。
【請求項２】
前記指定されたファイルデータの出力開始位置に該当する位置が前記制御信号で指定されたファイルデータ中に存在しない場合、前記制御信号を拒否することを特徴とする、請求項１記載のデジタル機器。
【請求項３】
前記制御信号は、出力するデータ量を指定する情報を含む事を特徴とする、請求項１記載のデジタル機器。
【請求項４】
前記指定されたファイルの出力開始位置から指定されたファイルの末尾のデータまでのデータ量が前記指定された出力するデータ量よりも多い場合、前記指定された量のデータを出力することを特徴とする、請求項３記載のデジタル機器。
【請求項５】
前記指定されたファイルの出力開始位置から指定されたファイルの末尾のデータまでのデータ量が前記指定された出力するデータ量よりも少ない場合、前記指定されたファイルの出力開始位置から指定されたファイルの末尾のデータまでを出力することを特徴とする、請求項３記載のデジタル機器。
【請求項６】
前記制御信号を受信してデータを出力した後、実際に出力したデータ量を示す情報を含む応答信号を送信することを特徴とする、請求項３記載のデジタル機器。
【請求項７】
前記受信した制御信号に従ってデータを出力している最中に、データ出力の状態を問い合わせる制御信号を受信し、前記問い合わせの制御信号を受信した時点で既に出力を終えたデータ量を示す情報を含む応答信号を送信することを特徴とする、請求項１記載のデジタル機器。
【請求項８】
シリアルデータを送受信するためのデジタルインターフェースを備え、前記デジタルインターフェースを経由して制御信号及びデジタルデータの送受信を行い、ランダムアクセス可能な記録媒体を使用して前記記録媒体上のデジタルデータを取り扱うデジタル機器であって、データを入力するための経路情報と前記入力されたデータを記録する領域を指定するための情報と前記入力されたデータを記録するファイルを指定するためのパス名を示す情報と前記指定されたファイルの記録開始位置を指定するための情報を含む制御信号を受信して、前記指定された経路からAsynchronousトランザクションを用いて入力されたデータを記録することを特徴とするデジタル機器。
【請求項９】
前記指定されたファイルが前記指定された領域に存在する場合、指定されたファイルの記録開始位置以降に入力されたデータを上書き記録することを特徴とする、請求項８記載のデジタル機器。
【請求項１０】
前記指定されたファイルに入力されたデータの上書き記録を行い、前記ファイルの末尾のデータの上書きが終了した後は、入力されたデータを前記指定されたファイルの末尾から追加記録することを特徴とする、請求項９記載のデジタル機器。
【請求項１１】
前記指定されたファイルが前記指定された領域に存在し、指定されたファイルの記録開始位置が前記ファイルの末尾出会った場合、入力されたデータを前記指定されたファイルの末尾から追加記録することを特徴とする、請求項８記載のデジタル機器。
【請求項１２】
前記指定されたファイルが前記指定された領域に存在しない場合、指定されたファイルを作成して、前記作成したファイルにデータを記録することを特徴とする、請求項８記載のデジタル機器。
【請求項１３】
前記指定されたファイルの記録開始位置に該当する位置が前記制御信号で指定されたファイルデータ中に存在しない場合、前記制御信号を拒否することを特徴とする、請求項８記載のデジタル機器。
【請求項１４】
前記制御信号は、入力されるデータ量を指定する情報を含む事を特徴とする、請求項８記載のデジタル機器。
【請求項１５】
前記制御信号を受信してデータを記録した後、実際に記録したデータ量を示す情報を含む応答信号を送信することを特徴とする、請求項８記載のデジタル機器。
【請求項１６】
前記受信した制御信号に従ってデータを記録している最中に、データ記録の状態を問い合わせる制御信号を受信し、前記問い合わせの制御信号を受信した時点で既に記録を終えたデータ量を示す情報を含む応答信号を送信することを特徴とする、請求項８記載のデジタル機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御信号とデータを混在させて通信することが可能なデータ通信バスを用いて電子機器（以下、機器）間を接続して、機器間でデータ通信を行うシステムを所有する装置に関するものである。
【背景技術】
【０００２】
近年デジタルカメラが普及してきている。このデジタルカメラは着脱可能な記録媒体を使用してデジタル静止画データを記録、再生するシステムで、パソコンへのデータの移動は、直接記録媒体をパソコンに挿入する方法と、デジタルカメラが備えるデジタルインターフェースとパソコンが備えるデジタルインターフェースを接続して画像転送を行う方法の二通りの方法がある。
【０００３】
デジタルインターフェースを接続してデータ転送を行う場合、パソコンはデジタルカメラに対して記録媒体上に存在するデータのリストを要求し、受け取ったリストを元に各データに対して個別のアクセスを行う。前述のようなデジタルインターフェースを介して機器間でデータのやりとりを行うための規格として、IEEE1394インターフェース規格の標準化団体である1394Trade AssociationでCamera Storageサブユニットが規定されている(TA Document 1999036, AV/C Camera Storage Subunit 1.0)。このサブユニットとパソコン等のコントローラはIEEE1394を介して、トランザクションを行いコントローラがサブユニットを制御したり、サブユニットの保持する情報を取得したりすることができる。
【０００４】
このトランザクションはIEC-61883-1, Consumer audio/video equipment - Digital interface - Part 1: Generalの中でFCP(Function Control Protocol)として規定されており、コントローラがターゲットデバイスの特定アドレスに対してwriteトランザクションを用いてコマンドデータを書き込み、前記writeトランザクションのデータを受信したターゲットがコントローラの特定アドレスに対してwriteトランザクションでレスポンスデータを書き込むことで実現される。AV/Cプロトコルでは各AV/Cサブユニットに対してCTS(Command Transaction Set)が規定されており、図１０にCTSで用いるコマンドフレームのフォーマットを示す。ctypeフィールドはコマンドの種類を示す物であり、図３０に示すコマンドタイプを指定する。subunit_type,subunit IDフィールドは、指定したノード内のどのユニットに対してのコマンドなのかを示すフィールドである。opcode,operandフィールドは実際のコマンドを内容を指定するフィールドである。図１１にＣＴＳで用いるレスポンスフレームのフォーマットを示す。responseフィールドはレスポンスの種類を示す物であり、図３１に示すレスポンスタイプを指定する。subunit_type,subunit IDフィールドは、ノード内のどのユニットからのレスポンスなのかを示すフィールドである。opcode,operandフィールドはレスポンスデータを指定するフィールドである。
【０００５】
図１２に、コントローラと前記Camera Storageサブユニットとの間でIEEE1394を介して行われる基本的なトランザクションの手順を示す。コントローラは、IEEE1394バス上にCamera Storageサブユニットを検出し、前記検出したCamera Storage Subunitに対してVERSION statusコマンドを送信する。このコマンドは、Camera Storageサブユニットが実装している規格のバージョン情報を問い合わせるためのコマンドである。このコマンドを受信すると、Camera Storageサブユニットは、実装している規格のバージョンをセットしてレスポンスをコントローラに送信する。前記VERSION statusコマンドとレスポンスのフォーマットを図１３に示す。AV/C Camera Storage Subunit 1.0準拠の機能を実装している場合、図１３のレスポンスフレーム中のsubunit_version_informationフィールドには、0x10がセットされる。Camera Storageサブユニットは実装している機能によってカテゴリー分けがされており、Asynchronousトランザクションを用いて記録媒体上のファイルデータを送信する機能を持つ"asynchronous sender"、 Asynchronousトランザクションを用いてファイルデータを受信する機能を持つ"asynchronous receiver"、 Isochronousトランザクションを用いて記録媒体上のファイルデータを送信する機能を持つ"isochronous sender"、 Isochronousトランザクションを用いてファイルデータを受信する機能を持つ"isochronous receiver"の４つのプロファイルが定義されている。図３２に前記プロファイルと各プロファイルに割り当てられている値を示す。Camera Storageサブユニットは、VERSION statusコマンドを受信すると、レスポンスフレームのsubunit_version_information_dependent_fieldには実装しているプロファイルの値がセットされる。
【０００６】
VERSION starusレスポンスフレームを受信したコントローラは、レスポンスフレームの各フィールド値によって、Camera Storageサブユニットの機能を判別する。
次に、コントローラはCamera Storageサブユニットの持つ記録媒体の情報を取得するためにMEDIA INFOコマンド及びVOLUME INFOコマンドを送信する。
【０００７】
図１４に、MEDIA INFO Controlコマンド及びレスポンスのフォーマットを示す。Camera Storageサブユニットでは物理ボリューム及び論理ボリュームが定義されており、物理ボリュームは物理的な記録媒体そのものを示し、論理ボリュームは物理ボリューム中に存在する論理的に区切られた領域を示す。コントロールコマンド中のsubfunctionフィールドは、サブユニットに対してどのような操作を要求しているかを示すフィールドである。図３３にsubfunctionの意味と値を示す。コントローラはコマンドフレームのsubfunctionフィールドにコマンドを実行するための"execute"をセットしてCamera Storageサブユニットにコマンドを送信する。MEDIA INFOコントロールコマンドを受信すると、Camera Storageサブユニットはデバイスが持つ物理ボリュームの数(例えば記録メディアをセットすることができるスロットの数)をnumber_of_physical_volumeフィールドにセットし、各物理ボリューム上に存在する論理ボリュームの数(例えば各記録メディア上に存在するパーティションの数)をnumber_of_logical_volumeフィールドにセットする。
【０００８】
図１５にVOLUME INFO controlコマンド及びレスポンスのフォーマットを示す。このコマンドは、Camera Storageサブユニットの持つ各論理ボリュームの情報を取得するためのコマンドである。コントローラは、subfunctionフィールドに"execute"を、physical_volume_number, logical_volume_numberフィールドに情報を取得するボリューム番号をセットして、コマンドフレームをCamera Storage Subunitに送信する。VOLUME INFO Controlコマンドを受信すると、Camera Storageサブユニットは指定されたボリュームの情報をレスポンスフレームの各フィールドにセットしてコントローラに送信する。レスポンスフレーム中のｍedia_generation_countは記録媒体が挿入されたときにカウントアップするカウンタの値で、着脱可能な記録媒体が機器に挿入された場合に更新される。このカウント値は、例えば電源投入時には"０"に初期化され、更新される場合には１づつカウントアップされる。attributeフィールドは記録媒体の属性を示す。図１６にattributeフィールドのフォーマットを示す。Camera Storageサブユニットは指定されたボリュームの属性を調べて該当する属性ビットに"1"をセットする。maximum_capacityフィールドに指定されたボリュームのバイトサイズがセットされ、free_spaceフィールドには残りの記録可能なバイトサイズがセットされる。
【０００９】
ボリュームの情報を取得した後、コントローラはFILE LIST Controlコマンドを送信してCamera Storageサブユニットの記録媒体上に記録されているファイルのリストを取得する。図１７にFILE LIST Controlコマンド及びレスポンスのフォーマットを示す。コントローラはコントロールコマンドフレームのsubfunctionフィールドに"execute"を、physical_volume_number, logical_volume_numberに目的のボリューム番号をセットする。mediga_generation_countフィールドには前記VOLUME INFO controlレスポンスで取得した値をセットする。file_typeフィールド及びattributeフィールドは、取得するファイルリストに含まれるエントリーの種類を指定するフィールドである。図３４にfile_typeフィールドの値を図１８にattributeフィールドのフォーマットを示す。start_numberフィールドは、該当するファイルリストのどのエントリーからリストを取得するかを指示し、コマンドフレームのnumber_of_entriesフィールドは取得する最大のエントリーの数を指定する。request_path_lengthフィールドは、それに続くrequest_pathのバイトサイズを指示し、request_pathフィールドは指定したボリューム中のどのパスに対するファイルリストを取得するのかを指示する。FILE LIST Controlコマンドを受信すると、Camera Storageサブユニットはレスポンスフレームに指定されたrequest_pathに対するファイルリストをセットしてコントローラに送信する。ファイルリストはファイル及びディレクトリのディレクトリエントリから構成される。図１９、図２０に前記ディレクトリエントリのフォーマットを示す。各ディレクトリエントリは２０バイトのデータで構成され、ファイル名またはディレクトリ名、アトリビュート、作成日時、ファイルサイズの情報を持つ。レスポンスフレームのeolフィールドは、そのレスポンスフレームで送信するリストの最後のディレクトリエントリが、コマンドフレームで指定されたリストの最後のディレクトリエントリであるか否かがセットされる。このフィールドが"0"の場合、レスポンスフレームで送信するリストの最後のディレクトリエントリが、コマンドフレームで指定されたリストの最後のディレクトリエントリではないことを示す。すなわち、リストには続きがあるため、リストの全体を取得するためにはコントローラは再度FILE LIST Controlコマンドを送信して続きのリストを取得する必要がある。レスポンスフレームのnumber_of_entriesフィールドには、file_listフィールドにセットされたディレクトリエントリの数がセットされる。file_listフィールドには、コマンドフレームで指定されたrequest_pathに対するfile_listがセットされる。
【００１０】
図２１、図２２、図２３を用いてFILE LIST Controlコマンドによってファイルリストを取得する手順を示す。
【００１１】
図２１はCamera Storageサブユニットの記録媒体上に存在するデータの例を示している。これらのデータは、physical_volume_number = 0, logical_volume_number = 0のボリューム上に存在しているものとする。図２１ではルートディレクトリの下に"DCIM"ディレクトリが、その下に"100ABCDE","101ABCDE","102ABCD"サブディレクトリが存在し、各サブディレクトリにJPEGファイルが存在している。図２２、図２３は図１７に示すFILE LIST Controlコマンドにセットするフィールドの値及び、レスポンスのfile_listにセットされるディレクトリエントリの一部を示す。
【００１２】
まず図２２ (A)に、"DCIM"ディレクトリに存在するサブディレクトリのリストを取得するためのデータを示す。start_numberには0x00をセットし、リストの先頭からデータを取得することを指定する。file_typeには0x00を、attributeには0x01をセットし、全てのディレクトリのレコードを取得することを指定する。request_pathフィールドには"\DCIM"をASCIIコードでセットし(最後に終端記号として0x00を付加)、その長さをrequest_path_lengthにセットする。
【００１３】
図２２(B)は図２２(A)で示したリスト要求のControlコマンドに従って作成されるファイルリストに含まれるディレクトリエントリの一部を抜粋した内容を示すものである。"\DCIM"ディレクトリ上には"100ABCDE","101ABCDE","102ABCDE"の３つのサブディレクトリが存在するため、リストは３つのディレクトリエントリで構成される。Camera Storageサブユニットはレスポンスフレームのfile_listフィールドにディレクトリエントリをセットする。レスポンスフレームのの最大サイズは512バイトであり、レコードは20バイトであるのでfile_listフィールドには最大24個のディレクトリエントリをセットすることが出来る。この例ではディレクトリエントリが3つしかないので、全てのディレクトリエントリをレスポンスフレームにセットすることができ、リストの最後のディレクトリエントリが含まれるのでeolフィールドに"1"をセットする。
【００１４】
図２２に示すデータをコマンドフレームにセットしてコマンドを送信し、そのレスポンスを受信することによってコントローラは、"\DCIM"ディレクトリの情報を取得し、次に、"\DCIM"ディレクトリ上の"100ABCDE"ディレクトリに存在する静止画ファイルのリスト取得するためのControlコマンドをCamera Storageサブユニットに送信する。図２３(A)に"\DCIM\100ABCDE"ディレクトリのファイルリストを取得するためのデータ例を示す。start_numberには0x00をセットし、リストの先頭からデータを取得することを指定する。file_typeには0x01を、attributeには0x10をセットし、静止画ファイルのレコードを取得することを指定する。request_pathフィールドには"\DCIM\100ABCDE"をASCIIコードでセットし(最後に終端記号として0x00を付加)、その長さをrequest_path_lengthにセットする。
【００１５】
図２３(B)は図２３ (A)で示したリスト要求のControlコマンドに従って作成されるファイルリストに含まれるディレクトリエントリの一部を抜粋した内容を示すものである。"\DCIM\100ABCDE"ディレクトリ上には"ABCD0001.JPG", "ABCD0002.JPG", "WXYZ0003.JPG"の３つ静止画ファイルと"Readme.txt"の１つのテキストファイルが存在するが、静止画のリスト要求のため、３つの静止画ファイルのディレクトリエントリからファイルリストは構成される。この３つのディレクトリエントリをレスポンスフレームのfile_listフィールドにセットし、eolフィールドに1をセットして、Camera Storageサブユニットはコントローラにレスポンスフレームを送信する。
【００１６】
前記FILE LIST Controlコマンドを使用してコントローラは、Camera Storageサブユニットの記録媒体上に存在するファイルのパスを取得し、図１２に示すSNED FILE ContorolコマンドやRECEIVE FILE Controコマンドに各ファイルのパスをセットすることによって目的のファイルに対してアクセスを行うことができる。
【００１７】
前記SEND FILE Controlコマンドは、Camera Storageサブユニットからファイルを出力するためのコマンドでありRECEIVE FILE ControlコマンドはCamera Storageサブユニットに対してファイルデータの入力を行って記録媒体上に記録をおこなうためのコマンドである。これらのファイル入出力の動作をCamera Storageサブユニットに対して要求する場合、コントローラは入出力を行うためにCamera Storageサブユニットと外部のデバイスとのファイル転送用のコネクション設定を行う必要がある。Camera Storageサブユニットでは、このコネクションはAV/C Asynchronous Serial Bus Connections(TA Document 1998011, AV/C Commands for management of Asynchronous Serial Bus Connections, Ver.1.0及びTA Document 1998016, AV/C Compatible Asynchronous Serial Bus Connections 1.0)で定められた手順を用いる。
【００１８】
図２４にコネクション設定及びSEND FILE Controlコマンドを使用したファイル転送の手順を示す。まずコントローラは、AV/C Asynchronous Serial Bus Connectionsで定められた手順に従って、ALLOCATE_ATTACHコマンドをCamera Storageサブユニットが実装されているAV/Cユニットに対して送信して、コントローラと前記AV/Cユニット間のコネクションを設定する。次に目的のファイルのパスをセットしたSEND FILE ControlコマンドをCamera Storageサブユニットに対して送信する。前記SEND FILE Controlコマンドを受信したCamera Storageサブユニットは、SEND FILEコマンドに対してINTERIMレスポンスを送信した後、前記コマンドで指定されたファイルを検索する。前記ファイルが見つかった場合、そのファイルのデータをAV/C Asynchronous Serial Bus Connectionsの手順に従って、consumerであるコントローラデバイスに対してwriteトランザクションを使用して書き込む。ファイルの全てのデータを書き込み終えると、Camera Storageサブユニットはコントローラに対してSEND FILEの最終レスポンスを送信する。前記最終レスポンスを受信した後、コントローラはDETACH_RELEASEコマンドをCamera Storageサブユニットが実装されているAV/Cユニットに対して送信して、コントローラと前記AV/Cユニット間のコネクションを解除する。
【００１９】
図２５にSEND FILE Controlコマンド及びレスポンスのフォーマットを示す。コントローラはsubfunctionフィールドには"execute"をセットし、physical_volume_number、logical_volume_number、media_generation_countの各フィールドに目的ファイルが記録されているボリュームの番号及びそのボリュームのgeneration count値をセットする。file_pathフィールドには目的のファイルのパス名をセットし、file_path_lengthフィールドにはその長さをセットする。source_plugフィールドには、Camera Storageサブユニットが持つどのsource plugから目的のファイルを出力するかを指定する。図２６にSEND FILE Controlコマンドでファイル転送を行う場合のコントローラとCamera Storageサブユニット間の論理的な接続経路の例を示す。コントローラは、データ入力用のAsynchronous Input Plugと出力用のAsynchronous Output Plugを一つづつ持つ。またCamera Storageサブユニットはデータ入力用のAsynchronous Input Plugと出力用のAsynchronous Output Plugを一つづつ持つAV/Cユニットの内部に実装されており、データ出力用のSubunit Source Plugと入力用のSubunit Destination Plugを一つづつ持つ。AV/CユニットのAsynchronous Output Plug[0]とCamera StorageサブユニットのSubunit Source Plug[0]及びAV/CユニットのAsynchronous Input Plug[0]とCamera StorageサブユニットのSubunit Destination Plug[0]はユニット内で内部的に接続されている。コントローラは、ALLOCATE_ATTACHコマンドで、コントローラのAsynchronous Input Plug[0]とAV/CユニットのAsynchronous Output Plug[0]を接続することによって、コントローラのAsynchronous Input Plug[0]とCamera StorageサブユニットのSubunit Source Plug[0]との接続を確立する。図２６に示す接続の場合、前記図２５のコマンドフレーム中のsource_plugフィールドには、0x00(Subunit Source Plug[0]を示す)をセットしてコントローラはSEND FILE ControlコマンドをCamera Storageサブユニットに送信する。前記Controlコマンドを受信したCamera Storageサブユニットは、コントローラに対してINTERIMレスポンスを送信した後、指定されたファイルを指定されたSubunit Source Plugから出力し、AV/CユニットはAsynchronous Serial Bus Connectionsの手順に従って、コントローラのAsynchronous Input Plug[0]にデータを送信し、すべてのファイルデータを送信するとCamera Storageサブユニットはコントローラに最終レスポンスを送信してSEND FILE Controlコマンドの動作を終了する。
【００２０】
図２７にコネクション設定及びRECEIVE FILE Controlコマンドを使用したファイル転送の手順を示す。まずコントローラは、AV/C Asynchronous Serial Bus Connectionsで定められた手順に従って、ALLOCATE及びATTACHコマンドをCamera Storageサブユニットが実装されているAV/Cユニットに対して送信して、コントローラと前記AV/Cユニット間のコネクションを設定する。次にデータを記録するファイルのパスをセットしたRECEIVE FILE ControlコマンドをCamera Storageサブユニットに対して送信する。前記RECIEVE FILE Controlコマンドを受信したCamera Storageサブユニットは、RECEIVE FILEコマンドに対してINTERIMレスポンスを送信した後、AV/C Asynchronous Serial Bus Connectionsの手順に従って、producerであるコントローラデバイスにから受信し、指定されたファイルに記録する。ファイルの全てのデータ記録を終えると、Camera Storageサブユニットはコントローラに対してRECEIVE FILEの最終レスポンスを送信する。前記最終レスポンスを受信した後、コントローラはDETACH及びRELEASEコマンドをCamera Storageサブユニットが実装されているAV/Cユニットに対して送信して、コントローラと前記AV/Cユニット間のコネクションを解除する。
【００２１】
図２８にRECEIVE FILE Controlコマンド及びレスポンスのフォーマットを示す。コントローラはsubfunctionフィールドには"execute"をセットし、physical_volume_number、logical_volume_number、media_generation_countの各フィールドにデータを記録するボリュームの番号及びそのボリュームのgeneration count値をセットする。file_pathフィールドには記録するファイルのパス名をセットし、file_path_lengthフィールドにはその長さをセットする。receive_modeフィールドは、指定したファイルが既に指定したボリューム上に存在する場合の動作を指定する。図３５にreceive_modeの意味と値を示す。file_typeフィールドは、Camera Storageサブユニットに入力されるデータの種類を指示する。図３６にfile_typeの意味と値を示す。destination_plugフィールドには、Camera Storageサブユニットが持つどのdestination plugから記録するデータを入力するかを指定する。
【００２２】
図２９にRECEIVE FILE Controlコマンドでファイル転送を行う場合のコントローラとCamera Storageサブユニット間の論理的な接続経路の例を示す。コントローラは、ALLOCATE及びATTACHコマンドで、コントローラのAsynchronous Output Plug[0]とAV/CユニットのAsynchronous Input Plug[0]を接続することによって、コントローラのAsynchronous Output Plug[0]とCamera StorageサブユニットのSubunit Destination Plug[0]との接続を確立する。図２９に示す接続の場合、前記図２８のコマンドフレーム中のdestination_plugフィールドには、0x00(Subunit Destination Plug[0]を示す)をセットしてコントローラはRECEIVE FILE ControlコマンドをCamera Storageサブユニットに送信する。前記Controlコマンドを受信したCamera Storageサブユニットは、コントローラに対してINTERIMレスポンスを送信した後、AV/CユニットはAsynchronous Serial Bus Connectionsの手順に従って、コントローラのAsynchronous Output Plug[0]からデータを受信し、そのデータを指定されたSubunit Destination Plugに入力する。Cmaera Storageサブユニットは指定されたSubunit Destination Plugから入六されるデータを指定されたファイルに記録し、全てのデータを記録するとCamera Storageサブユニットはコントローラに最終レスポンスを送信してRECEIVE FILE Controlコマンドの動作を終了する。
【００２３】
又、従来例としては、例えば特許文献１と特許文献２をあげることが出来る。
【特許文献１】特開２００１−２０３９７３号公報
【特許文献２】特開２００５−０４５６４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
前述のAV/C Camera Storage Subunit 1.0では、SEND FILE, RECEIVE FILEコマンドを用いてファイルデータの送受信を行うことができるが、SEND FILE, RECEIVE FILE共に目的ファイルの先頭からしかデータの送受信が行えないため、ファイルデータの一部を取得する、ファイルデータを部分的に書き換えるというような操作を行うことができなかった。
【課題を解決するための手段】
【００２５】
前記課題を解決するために、本発明では記録媒体上に記録されているデータを指定するためのファイルのパス名を示す情報と前記ファイルが記録されている領域を示す情報と前記記録されているファイルのデータを出力するための経路情報と前記ファイルデータの出力開始位置を指定するための情報を含む制御信号を受信して、前記指定されたデータをAsynchronousトランザクションを用いて出力する。
【００２６】
また、データを入力するための経路情報と前記入力されたデータを記録する領域を指定するための情報と前記入力されたデータを記録するファイルを指定するためパス名を示す情報と前記指定されたファイルの記録開始位置を指定するための情報を含む制御信号を受信して、前記指定された経路からAsynchronousトランザクションを用いて入力されたデータを記録する。
【発明の効果】
【００２７】
以上説明したように、SEND FILE PARTIALコマンド、RECEIVE FILE PARTIALコマンドを搭載することによって、コントローラはCamera Storageサブユニットに対して記録媒体上に記録されているファイルの部分出力及び部分書き換えを行うことができる。
【発明を実施するための最良の形態】
【００２８】
（実施例１）
以下に、本発明でのファイルデータの部分出力について説明する。本発明ではファイルの出力を行う機器としてAV/C Camera Storageサブユニットに部分出力の機能を追加した機器を使用するものとする。
【００２９】
図１は本発明のファイルデータを部分出力するためSEND FILE PARTIAL Controlコマンド及びレスポンスのフォーマットである。
【００３０】
コマンドフレーム中のstart_offsetとsend_sizeフィールドを除く各フィールドは、前述のSEND FILE Controlコマンドフレーム中の同名のフィールドと同じ意味及び用途を持つ。
【００３１】
start_offsetフィールドは、指定したファイルのどの位置からデータを出力するかを指定するフィールドで、前記ファイルの先頭からのオフセットをバイト数で指定する。このフィールドにセットされた値がファイル上に存在しない位置を示している場合、Camera Storageサブユニットは前記コマンドに対してREJECTEDレスポンスを送信してコマンドを拒否する。例えば指定されたファイルのサイズが1024バイトであり、start_offsetに2048がセットされている場合はREJECTEDレスポンスを送信する。
【００３２】
send_sizeフィールドは、指定したオフセット位置から何バイトのデータを出力するかを指定する。Camera Storageサブユニットは指定されたバイト数のデータ出力を終了すると実際に出力したデータのバイト数をレスポンスフレームのsent_sizeフィールドにセットしてACCEPTEDレスポンスをコントローラに対して送信する。前記指定されたファイルの指定されたオフセット位置からファイルの末尾のデータまでのサイズがsend_sizeフォールドにセットされた値よりも小さい場合、Camera Storageサブユニットはファイルの末尾のデータを出力した後、実際に出力したデータのバイト数をレスポンスフレームのsent_sizeフィールドにセットしてACCEPTEDレスポンスをコントローラに対して送信する。
【００３３】
図２に示す画像ファイルのヘッダ領域をコントローラが取得する手順を以下に示す。このファイルは、physical_volume_number = 0, logical_volume_number = 0のボリュームのルートディレクトリ"image.jpg"というファイル名で記録されているものとする。
【００３４】
コントローラは、Camera Storageサブユニットを含むAV/Cユニットに対して図２４に示す手順と同様にALLOCATE_ATTACHコマンドを用いてコントローラのAsynchronous Input Plug[0]とCamera Storageサブユニットを含むAV/CユニットのAsynchronous Output Plug[0]を接続する。Camera StorageサブユニットのSubunit Source Plug[0]と前記AV/CユニットのAsynchronous Output Plug[0]はユニット内で内部的に接続されており、コントローラとCamera Storageサブユニットの論理的な接続は図２６に示す接続となる。前記コネクションを設定した後、コントローラはCamera Storageサブユニットに対して図３に示すSEND FILE PARTIAL Controlコマンドを送信する。前記コマンドを受信したCamera Storageサブユニットはコントローラに対してINTERIMレスポンスを送信した後、AV/C Asynchronous Serial Bus Connectionsの手順に従って、consumerであるコントローラに対して指定されたオフセットから指定されたバイト数のデータを書き込んで、SEND FILE PARTIALのACCEPTEDレスポンスを送信する。前記レスポンスを受信したコントローラはDETACH_RELEASEコマンドを用いてコントローラとAV/Cユニットとの接続を解除する。
【００３５】
次に図４に、SEND FILE PARTIAL Statusコマンド及びレスポンスのフォーマットを示す。このコマンドはSEND FILE PARTIAL Controlコマンドの実行状況を問い合わせるためのコマンドである。
【００３６】
コマンドフレームのsource_plugフィールドは、Camera StorageサブユニットのSubunit source plug番号を指定する。
【００３７】
前記Statusコマンドを受信したCamera Storageサブユニットは、前記指定されたsource plugを使用したSEND FILE PARTIAL Controlコマンドを実行していない場合は、レスポンスフレームのsubfunction、physical_volume_number, logical_volume_number, media_generation_countフィールドに0xFFを、resultフィールドに0x00(not executing)をセットしてコントローラに送信する。この場合レスポンスフレームにはoperand[5]以降は含まれない。
【００３８】
前記指定されたsource plugを使用したSEND FILE PARTIAL Controlコマンドを実行中の場合は、レスポンスフレームのsubfunctionフィールドに実行しているコントロールコマンドのsubfunctionを、resultフィールドには実行状態に応じて0x01(executing)、0x02(suspended)、0x03(aborting)のいずれかのコード値を、physical_volume_number, logical_volume_numberフィールドに出力しているファイルが記録されているボリュームの番号を、media_generation_countフィールドに前記ボリュームのgeneration count値を、start_offset, file_path_length, file_pathフィールドにはコントロールコマンドで指定されたオフセット値とファイルのパス名をセットし、sent_sizeフィールドには既に出力を終えたデータのバイト数をセットしてコントローラに送信する。
【００３９】
以上説明したように、SEND FILE PARTIAL Controlコマンド及びStatusコマンドを使用することによって、コントローラはCamera Storageに対してファイルデータの一部を出力させることができ、また出力途中の状況を知ることができる。
【００４０】
（実施例２）
以下に、本発明でのファイルデータの部分記録について説明する。本発明ではファイルの記録を行う機器としてAV/C Camera Storageサブユニットに部分記録の機能を追加した機器を使用するものとする。
【００４１】
図５は本発明のファイルデータを部分記録するためRECEIVE FILE PARTIAL Controlコマンド及びレスポンスのフォーマットである。
【００４２】
コマンドフレーム中のstart_offsetとreceive_sizeフィールドを除く各フィールドは、前述のRECEIVE FILE Controlコマンドフレーム中の同名のフィールドと同じ意味及び用途を持つ。
【００４３】
start_offsetフィールドは、指定したファイルのどの位置からデータを記録するかを指定するフィールドで、前記ファイルの先頭からのオフセットをバイト数で指定する。このフィールドにセットされた値がファイル上に存在しない位置を示している場合、Camera Storageサブユニットは前記コマンドに対してREJECTEDレスポンスを送信してコマンドを拒否する。例えば指定されたファイルのサイズが1024バイトであり、start_offsetに2048がセットされている場合はREJECTEDレスポンスを送信する。start_offsetフィールドにゼロがセットされており、指定されたファイルが存在しない場合、Camera Storageサブユニットは指定されたファイルを指定されたボリューム上に作成して、入力されるデータを記録しても良い。
【００４４】
receive_sizeフィールドは、指定したオフセット位置から何バイトのデータを記録するかを指定する。Camera Storageサブユニットは指定されたバイト数のデータ記録を終了すると実際に記録したデータのバイト数をレスポンスフレームのreceived_sizeフィールドにセットしてACCEPTEDレスポンスをコントローラに対して送信する。また、subfunctionフィールドに"abort"がセットされたコントロールコマンドによって記録が中断されたり、伝送路のエラー等によってデータ転送が中断された場合は、Camera Storageサブユニットは実際に記録できたデータ量をセットしてREJECTEDレスポンスをコントローラに送信する。
【００４５】
図２に示す画像ファイルのサムネイル領域をコントローラが書き換える手順を以下に示す。このファイルは、physical_volume_number = 0, logical_volume_number = 0のボリュームのルートディレクトリ"image.jpg"というファイル名で記録されているものとする。
【００４６】
コントローラは、Camera Storageサブユニットを含むAV/Cユニットに対して図２７に示す手順と同様にALLOCATE及びATTACHコマンドを用いてコントローラのAsynchronous Output Plug[0]とCamera Storageサブユニットを含むAV/CユニットのAsynchronous Input Plug[0]を接続する。Camera StorageサブユニットのSubunit Destination Plug[0]と前記AV/CユニットのAsynchronous Input Plug[0]はユニット内で内部的に接続されており、コントローラとCamera Storageサブユニットの論理的な接続は図２９に示す接続となる。前記コネクションを設定した後、コントローラはCamera Storageサブユニットに対して図６に示すRECIEVE FILE PARTIAL Controlコマンドを送信する。前記コマンドを受信したCamera Storageサブユニットはコントローラに対してINTERIMレスポンスを送信した後、AV/C Asynchronous Serial Bus Connectionsの手順に従って、producerであるコントローラからデータを受信し、指定されたオフセットから指定されたバイト数のデータを記録して、RECEIVE FILE PARTIALのACCEPTEDレスポンスを送信する。前記レスポンスを受信したコントローラはDETACH及びRELEASEコマンドを用いてコントローラとAV/Cユニットとの接続を解除する。
【００４７】
図２に示す画像ファイルのフッター領域をコントローラが書き換える例を以下に示す。前述のようにALLOCATE及びATTACHコマンドを用いて図２９に示す接続を設定した後、コントローラは図７に示すRECIEVE FILE PARTIAL Controlコマンドを送信する。前記コマンドを受信したCamera Storageサブユニットはコントローラに対してINTERIMレスポンスを送信した後、AV/C Asynchronous Serial Bus Connectionsの手順に従って、producerであるコントローラからデータを受信し、指定されたオフセットから指定されたバイト数のデータを記録する。この例の場合、start_offsetにreceive_sizeを加えた値は、指定したファイルのサイズよりも大きくなる。Camera Storageサブユニットは、指定されたファイルの末尾のデータを書き換えた後、ファイルの末尾に追加して入力されたデータを記録する。最終的に前記ファイルは図８に示すサイズのファイルとなる。
【００４８】
次に図９に、RECEIVE FILE PARTIAL Statusコマンド及びレスポンスのフォーマットを示す。このコマンドはRECEIVE FILE PARTIAL Controlコマンドの実行状況を問い合わせるためのコマンドである。
【００４９】
コマンドフレームのdestination_plugフィールドは、Camera StorageサブユニットのSubunit destination plug番号を指定する。
【００５０】
前記Statusコマンドを受信したCamera Storageサブユニットは、前記指定されたdestination plugを使用したRECEIVE FILE PARTIAL Controlコマンドを実行していない場合は、レスポンスフレームのsubfunction、physical_volume_number, logical_volume_number, media_generation_countフィールドに0xFFを、resultフィールドに0x00(not executing)をセットしてコントローラに送信する。この場合レスポンスフレームにはoperand[5]以降は含まれない。
【００５１】
前記指定されたdestination plugを使用したRECEIVE FILE PARTIAL Controlコマンドを実行中の場合は、レスポンスフレームのsubfunctionフィールドに実行しているコントロールコマンドのsubfunctionを、resultフィールドには実行状態に応じて0x01(executing)、0x02(suspended)、0x03(aborting)のいずれかのコード値を、physical_volume_number, logical_volume_numberフィールドに記録中のファイルが存在するボリュームの番号を、media_generation_countフィールドに前記ボリュームのgeneration count値を、start_offset, file_path_length, file_pathフィールドにはコントロールコマンドで指定されたオフセット値とファイルのパス名をセットし、received_sizeフィールドには既に記録を終えたデータのバイト数をセットしてコントローラに送信する。
【００５２】
以上説明したように、RECEIVE FILE PARTIAL Controlコマンド及びStatusコマンドを使用することによって、コントローラはCamera Storageの記録媒体上に記録されているファイルデータの一部を書き換えること及びデータを追加することができ、また記録途中の状況を知ることができる。
【図面の簡単な説明】
【００５３】
【図１】SEND FILE PARTIAL Controlコマンド及びレスポンスのフォーマットを示す図。
【図２】画像ファイルの構成例を示す図。
【図３】画像ファイルのヘッダ領域を取得するためのSEND FILE PARTIAL Controlコマンド及びレスポンスのデータ例を示す図。
【図４】SEND FILE PARTIAL Statusコマンド及びレスポンスのフォーマットを示す図。
【図５】RECEIVE FILE PARTIAL Controlコマンド及びレスポンスのフォーマットを示す図。
【図６】画像ファイルのサムネイル領域を書き換えるためのRECEIVE FILE PARTIAL Controlコマンド及びレスポンスのデータ例を示す図。
【図７】画像ファイルのフッター領域を書き換えるためのRECEIVE FILE PARTIAL Controlコマンド及びレスポンスのデータ例を示す図。
【図８】フッター領域を書き換えた後の画像ファイルの構成例を示す図。
【図９】RECEIVE FILE PARTIAL Statusコマンド及びレスポンスのフォーマットを示す図。
【図１０】CTSで用いるコマンドフレームフォーマットを示す図。
【図１１】CTSで用いるレスポンスフレームフォーマットを示す図。
【図１２】コントローラと従来のCamera Storageサブユニット間での基本的なトランザクション手順を示す図。
【図１３】VERSION Statusコマンド及びレスポンスのフォーマットを示す図。
【図１４】MEDIA INFO Controlコマンド及びレスポンスのフォーマットを示す図。
【図１５】VOLUME INFO Controlコマンド及びレスポンスのフォーマットを示す図。
【図１６】VOLUME INFO Controlレスポンスのattributeフィールドのフォーマットを示す図。
【図１７】FILE LIST Controlコマンド及びレスポンスのフォーマットを示す図。
【図１８】FILE LIST Controlレスポンスのattributeフィールドのフォーマットを示す図。
【図１９】ファイルリストを構成するディレクトリエントリのフォーマットを示す図。
【図２０】ディレクトリエントリのattribute_byteのフォーマットを示す図。
【図２１】Camera Storageサブユニットの記録媒体上に記録されたファイルデータの構成例を示す図。
【図２２】FILE LIST Controlコマンドフレームにセットするデータ例及び、ファイルリストに含まれるディレクトリエントリの一部を示す図。
【図２３】FILE LIST Controlコマンドフレームにセットするデータ例及び、ファイルリストに含まれるディレクトリエントリの一部を示す図。
【図２４】Camera Storageサブユニットからファイルデータを取得する場合のトランザクション手順を示す図。
【図２５】SEND FILE Controlコマンド及びレスポンスのフォーマットを示す図。
【図２６】Camera Storageサブユニットからファイルデータを取得する場合のコントローラとCamera Storageサブユニット間の論理的な接続例を示す図。
【図２７】Camera Storageサブユニットへファイルデータを送信する場合のトランザクション手順を示す図。
【図２８】RECEIVE FILE Controlコマンド及びレスポンスのフォーマットを示す図。
【図２９】Camera Storageサブユニットへファイルデータを送信する場合のコントローラとCamera Storageサブユニット間の論理的な接続例を示す図。
【図３０】CTSのコマンドフレームに設定するctypeフィールドの値を示す表。
【図３１】CTSのレスポンスフレームに設定するresponseフィールドの値を示す表。
【図３２】Camera Storageサブユニットのプロファイルの値を示す表。
【図３３】Camera StorageサブユニットのControlコマンド中のsubfunctionフィールドの値を示す表。
【図３４】FILE LIST Controlコマンドのfile_typeフィールド値を示す図。
【図３５】RECEIVE FILE Controlコマンドのreceive_modeの値を示す図。
【図３６】RECEIVE FILE Controlコマンドのfile_typeの値を示す図。
【図１】
2007080199.tif 000003
【図２】
2007080199.tif 000004
【図３】
2007080199.tif 000005
【図４】
2007080199.tif 000006
【図５】
2007080199.tif 000007
【図６】
2007080199.tif 000008
【図７】
2007080199.tif 000009
【図８】
2007080199.tif 000010
【図９】
2007080199.tif 000011
【図１０】
2007080199.tif 000012
【図１１】
2007080199.tif 000013
【図１２】
2007080199.tif 000014
【図１３】
2007080199.tif 000015
【図１４】
2007080199.tif 000016
【図１５】
2007080199.tif 000017
【図１６】
2007080199.tif 000018
【図１７】
2007080199.tif 000019
【図１８】
2007080199.tif 000020
【図１９】
2007080199.tif 000021
【図２０】
2007080199.tif 000022
【図２１】
2007080199.tif 000023
【図２２】
2007080199.tif 000024
【図２３】
2007080199.tif 000025
【図２４】
2007080199.tif 000026
【図２５】
2007080199.tif 000027
【図２６】
2007080199.tif 000028
【図２７】
2007080199.tif 000029
【図２８】
2007080199.tif 000030
【図２９】
2007080199.tif 000031
【図３０】
2007080199.tif 000032
【図３１】
2007080199.tif 000033
【図３２】
2007080199.tif 000034
【図３３】
2007080199.tif 000035
【図３４】
2007080199.tif 000036
【図３５】
2007080199.tif 000037
【図３６】
2007080199.tif 000038