イベントはPTPデバイスからイニシエータにデバイスの状態の変化などのイベントの通知等に用いられます。イベントはイニシエーターから送られることも、レスポンダーから送られることもあります。PTP仕様ではイベントの機能を必須で要求しています。
PTP上では、バッテリー残量、ホワイトバランスなど、カメラの状態や設定内容はデバイスプロパティを介して設定したり、現在の状態を取得することができます。
通常デバイスプロパティの取得にはGetDevicePropValueオペレーション、設定にはSetDevicePropValueオペレーション、工場出荷設定に戻すにはResetDevicePropValueオペレーションを使用します。これらのオペレーションではデバイスプロパティを特定するために、デバイスプロパティコード(DevicePropCode)を使用します。
PTP仕様では、以下のデバイスプロパティコードが定義されています。
CODE | プロパティ名 | 説明 |
---|---|---|
0x5001 | BatteryLevel | バッテリー残量 |
0x5002 | FunctionalMode | ファンクショナルモード値 |
0x5003 | ImageSize | 撮影される画像のサイズ |
0x5004 | CompressionSetting | 撮影される画像の圧縮レート |
0x5005 | WhiteBalance | ホワイトバランス |
0x5006 | RGB Gain | WhiteBalanceがManualのときに参照されるRGBゲイン |
0x5007 | F-Number | 絞り |
0x5008 | FocalLength | 35mm換算した焦点距離 |
0x5009 | FocusDistance | フォーカス距離 |
0x500A | FocusMode | フォーカスモード |
0x500B | ExposureMeteringMode | 測光モード |
0x500C | FlashMode | フラッシュモード |
0x500D | ExposureTime | シャッタースピード |
0x500E | ExposureProgramMode | 露出モード |
0x500F | ExposureIndex | ISO感度 |
0x5010 | ExposureBiasCompensation | 露出補正 |
0x5011 | DateTime | デバイス内の時計の設定 |
0x5012 | CaptureDelay | 実際にキャプチャが実行されるまでのディレイ |
0x5013 | StillCaptureMode | 静止画撮影の方法 |
0x5014 | Contrast | 撮影される画像のコントラスト |
0x5015 | Sharpness | 撮影される画像の鮮鋭度 |
0x5016 | DigitalZoom | 撮影される画像のデジタルズーム比 |
0x5017 | EffectMode | 特殊効果撮影モード |
0x5018 | BurstNumber | バースト撮影時に撮影される画像枚数 |
0x5019 | BurstInterval | バースト時の撮影間隔 |
0x501A | TimelapseNumber | 微速撮影時に撮影される画像枚数 |
0x501B | TimelapseInterval | 微速撮影時の撮影間隔 |
0x501C | FocusMeteringMode | AF値の評価方法 |
0x501D | UploadURL | 画像やオブジェクトのアップロード先URL |
0x501E | Artist | カメラの所有者や使用者 |
0x501F | CopyrightInfo | 著作権表示 |
0xD000~0xDFFFはベンダー拡張のための領域です。
DevicePropCode | 0x5001 |
Type | UINT8 |
DescForms | Enum, Range |
Get/Set | Get |
バッテリーの残り容量。取り得る値は実装依存となりますが、最小値はno powerを意味し、最大値はfull powerを意味します。DevicePropDescのstepフィールド(RangeForm)や列挙されたそれぞれの値(EnmerationForm)はDevicePropChangedイベントの生成に使われます。このデバイスプロパティの値はデバイスの電源が切り替わるときにゼロを示すかも知れません。
DevicePropCode | 0x5002 |
Type | UINT16 |
DescForms | Enum |
Get/Set | Get, Get/Set |
デバイスを制御するために用いられるファンクショナルモード値です。すべてのデバイスのデフォルトのファンクショナルモードは"standard mode"になります。それ以外のモードはデバイスに依存し、通常パワーセーブやアドバンスドモード等をサポートするために用いられます。FunctionalMode値が変更されケーパビリティに変化が生じたときDeviceInfoChangedイベントを発生する必要があります。このプロパティの変化はこのセッションの外にあるDeviceInfoにも影響しますのでセッションの多重化をサポートする場合DeviceInfoChangedイベントを使って外部のセッションにDeviceInfoの変化を通知する必要があります。
DevicePropCode | 0x5003 |
Type | String |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
撮影画像サイズ(幅と高さ)を画素数で指定するデバイスプロパティです。このプロパティはNullで終端されたString型(Unicode)でWidthxHeightの形式で表現されます。たとえば幅640、高さ480の場合、"640x480"となります。取り得る値がリニアに変化するなら、RangeFormを使って値の範囲を指定することもできます。この場合上記の書式を使ってMinimumValueフィールドに幅と高さの最小値を、MaximumValueフィールドに幅と高さの最大値を同時に指定します。StepSizeフィールドは幅と高さで共通となりますので、値の変化の刻みを幅と高さで変えることはできません。たとえば、幅の範囲が640から1600で、高さの範囲が480から1200の場合、MinimumValueフィールドは"640x480"、MaximumValueフィールドは"1600x1200"となります。このプロパティの変更にともない、StorageInfoのFreeSpaceInImagesフィールドなどが影響するかもしれません。その場合、StorageInfoChangedイベントを発生する必要があります。
DevicePropCode | 0x5004 |
Type | UINT8 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
撮影される画像の圧縮レート。このプロパティ値が最小のとき、最大の圧縮(低品質の画像が生成される)を意味し、プロパティ値が最大のとき、最小の圧縮(高品質の画像が生成される)を意味します。PTP仕様ではこのプロパティ値に関してこれ以上の詳しい定義を行わず、仕様の詳細はデバイスに依存します。
DevicePropCode | 0x5005 |
Type | UINT16 |
DescForms | Enum |
Get/Set | Get, Get/Set |
ホワイトバランスの方法。このプロパティの値は以下のように定義されています。
0x0001 | Manual | RGB Gainプロパティを使って直接ホワイトバランスを調整 |
0x0002 | Automatic | デバイス内部で自動でホワイトバランスを調整 |
0x0003 | One-push Automatic | 白い被写体を映して撮影ボタンを押すとデバイスはその被写体(白)をつかってホワイトバランスを調整する |
0x0004 | Daylight | 太陽光を想定したホワイトバランス設定 |
0x0005 | Florescent | 蛍光灯を想定したホワイトバランス設定 |
0x0006 | Tungsten | 白熱灯を想定したホワイトバランス設定 |
0x0007 | Flash | フラッシュ撮影を想定したホワイトバランス設定 |
0x8000~ 0x8FFF |
Vendor-Defined |
DevicePropCode | 0x5006 |
Type | String |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
WhiteBalanceプロパティが0x0001(Manual)の時にホワイトバランスはこのプロパティによって直接調整されます。このプロパティの型はNullで終端されたString型(Unicode)で、"Red:Green:Blue"の形式でRGBそれぞれのゲインを表現します。Stringで表現されたそれぞれのゲイン値はUINT16として解釈されます。これらのゲイン値は(絶対値ではなく)互いの相対関係を示す値となります。
値の範囲をRangeFormで示す場合、MinimumValueフィールドとMaximumValueフィールドにRGBそれぞれの最小値と最大値を"Red:Green:Blue"の形式で示します。最小値は通常"1:1:1"となります。ゲイン値がゼロの場合、その色の画素の情報は失われます。したがって、"0:0:0"の場合すべての色の画素の値がゼロになります。StepValueの値も"Red:Green:Blue"の形式で表現されます。
RGB Gainプロパティ値はRGBそれぞれの相対関係を示しますが、実際のカメラの設計ではGを基準(固定)としたい場合があります。このような場合、値の範囲の指定でGのゲインを固定化します。たとえばGのゲインを255に固定したい場合、RangeFormを使ってこれを表現するには(RとBの範囲を0~65535と仮定)、MinimumValueを"1:255:1"、MaximumValueを"65535:255:65535"のように設定し、StepVlueを"1:0:1"のように設定します(RとBのStepを1と仮定)。
DevicePropCode | 0x5007 |
Type | UINT16 |
DescForms | Enum |
Get/Set | Get, Get/Set |
レンズの絞り値を表現するプロパティでF値を100倍した値で表現します。カメラがAEモードのとき、このプロパティが変更されるとやExposure Index等他のプロパティも変更されますのでDevicePropChangedイベントを発生する必要があります。通常このプロパティの設定はカメラの露出モードがマニュアルまたは絞り優先のときに有効です。
DevicePropCode | 0x5008 |
Type | UINT32 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
35mm換算の焦点距離。このプロパティ値はmmで表現された焦点距離を100倍した値です。
DevicePropCode | 0x5009 |
Type | UINT16 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
フォーカス距離(mm単位)。このプロパティ値が0xFFFFのときフォーカス距離が655m以上であることを意味します。
DevicePropCode | 0x500A |
Type | UINT16 |
DescForms | Enum |
Get/Set | Get, Get/Set |
フォーカスモード。プロパティで値は次のように定義されます。
0x0001 | Manual |
0x0002 | Automatic |
0x0003 | Automatic Macro (close-up) |
0x8000~ 0xFFFF | Vendor-Defined |
DevicePropCode | 0x500B |
Type | UINT16 |
DescForms | Enum |
Get/Set | Get, Get/Set |
測光モード。プロパティで値は以下のように定義されます。
0x0001 | Average |
0x0002 | Center-weighted-average |
0x0003 | Multi-spot |
0x0004 | Center-spot |
0x8000~ 0xFFFF | Vendor-Defined |
DevicePropCode | 0x500C |
Type | UINT16 |
DescForms | Enum |
Get/Set | Get, Get/Set |
フラッシュモード。値は以下のように定義されます。
0x0001 | auto flash |
0x0002 | Flash off |
0x0003 | Fill flash |
0x0004 | Red eye auto |
0x0005 | Red eye fill |
0x0006 | External Sync |
0x8000~ 0xFFFF | Vendor-Defined |
DevicePropCode | 0x500D |
Type | UINT32 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
シャッタースピード。カメラがAEモードのとき、このプロパティが変更されると他のプロパティも変更されますのでDevicePropChangedイベントを発生する必要があります。このプロパティは通常ExposureProgramModeがManualまたはShutter Priorityの時に限りデバイスによって用いられます。
DevicePropCode | 0x500E |
Type | UINT16 |
DescForms | Enum |
Get/Set | Get, Get/Set |
カメラの露出モード。このプロパティの値は以下のように定義されています。
0x0001 | Manual |
0x0002 | Automatic |
0x0003 | Aperture Priority |
0x0004 | Shutter Priority |
0x0005 | Program Creative (greater depth of field) |
0x0006 | Program Action (faster shutter speed) |
0x0007 | Portrait |
0x8000~ 0xFFFF | Vendor-Defined |
DevicePropCode | 0x500F |
Type | UINT16 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
シャッタースピードを意味し、ISO感度(ASA/DIN)に対応します。通常のカメラは非連続なExposureIndex値を設定しますが、仕様では連続する値をサポートすることもできます。
DevicePropCode | 0x5010 |
Type | UINT16 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
カメラの露出の補正値。このプロパティの値はstop(*1)を1000倍した値になります。プロパティ値が0のとき、工場出荷設定の露出設定がそのまま適用されます。プロパティ値が2000のとき、2stopを意味し明るさは工場出荷設定の4倍になります。-1000のときは-1stopを意味し工場出荷設定の半分の明るさになります。
(*1) stopは露出の単位で相対的な明るさを示します。1stopでは明るさが2倍になり、2stopでは4倍、3stopでは8倍になります。-1stopでは明るさが半減します。
DevicePropCode | 0x5011 |
Type | String |
DescForms | None |
Get/Set | Get, Get/Set |
デバイス内の時計の内容。ISO 8601フォーマット(“YYYYMMDDThhmmss.s”)で示します。
DevicePropCode | 0x5012 |
Type | UINT32 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
キャプチャーがトリガーされてから実際にキャプチャされるまでのディレイ(ミリ秒)。このプロパティはバースト撮影などのフレーム間の時間を意味するものではありません。
DevicePropCode | 0x5013 |
Type | UINT16 |
DescForms | Enum |
Get/Set | Get, Get/Set |
静止画撮影の方法。以下の値が定義されています。
0x0000 | Normal |
0x0001 | Burst |
0x0002 | Timelapse |
0x8000~ 0xFFFF | Vendor-Defined |
DevicePropCode | 0x5014 |
Type | UINT8 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
撮影される画像に適用されるコントラスト。プロパティ値が少ない場合、低いコントラストを意味し、大きい場合高いコントラストを意味します。
DevicePropCode | 0x5015 |
Type | UINT8 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
撮影される画像の鮮鋭度。プロパティ値が少ない場合、低い鮮鋭度を意味し、大きい場合高い鮮鋭度を意味します。
DevicePropCode | 0x5016 |
Type | UINT8 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
カメラが取得した画像のデジタルズーム比を10を分母としたときの分子の値で示します。たとえばこのプロパティ値が20のとき、x2のズームを意味し、本来の画像の1/4シーンサイズが撮影されます。
DevicePropCode | 0x5017 |
Type | UINT16 |
DescForms | Enum |
Get/Set | Get, Get/Set |
特殊効果撮影モード。以下の値が定義されています。
0x0001 | Standard (color) |
0x0002 | Black & White |
0x0003 | Sepia |
0x8000~ 0xFFFF | Vendor-Defined |
DevicePropCode | 0x5018 |
Type | UINT16 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
バースト撮影時に撮影される画像枚数。
DevicePropCode | 0x5019 |
Type | UINT16 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
バースト撮影時のそれぞれの撮影の間隔(ミリ秒)。
DevicePropCode | 0x501A |
Type | UINT16 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
微速撮影(time-lapse)で撮影される画像枚数。
DevicePropCode | 0x501B |
Type | UINT32 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
微速撮影時の撮影間隔(ミリ秒)。
DevicePropCode | 0x501C |
Type | UINT16 |
DescForms | Enum, Range |
Get/Set | Get, Get/Set |
カメラのAF動作モード。プロパティの値は以下のように定義されています。
0x0001 | Center-spot |
0x0002 | Multi-spot |
0x8000~ 0xFFFF | Vendor-Defined |
DevicePropCode | 0x501D |
Type | String |
DescForms | None |
Get/Set | Get, Get/Set |
画像やオブジェクトのアップロード先として使うことのできるURL。
DevicePropCode | 0x501E |
Type | String |
DescForms | None |
Get/Set | Get, Get/Set |
このプロパティはカメラの所有者や使用者の名前。撮影される画像のExifタグのArtistフィールドに適用されることを意図しています。
DevicePropCode | 0x501F |
Type | String |
DescForms | None |
Get/Set | Get, Get/Set |
ExifタグのCopyrightフィールドに適用される著作権表示の文字列。