デバイスプロパティ
アセンブラの魔女 ⧫ PTP ⧫ デバイスプロパティ
アセンブラの魔女 ⧫ PTP ⧫ デバイスプロパティ

 イベントはPTPデバイスからイニシエータにデバイスの状態の変化などのイベントの通知等に用いられます。イベントはイニシエーターから送られることも、レスポンダーから送られることもあります。PTP仕様ではイベントの機能を必須で要求しています。

 PTP上では、バッテリー残量、ホワイトバランスなど、カメラの状態や設定内容はデバイスプロパティを介して設定したり、現在の状態を取得することができます。

 通常デバイスプロパティの取得にはGetDevicePropValueオペレーション、設定にはSetDevicePropValueオペレーション、工場出荷設定に戻すにはResetDevicePropValueオペレーションを使用します。これらのオペレーションではデバイスプロパティを特定するために、デバイスプロパティコード(DevicePropCode)を使用します。

 PTP仕様では、以下のデバイスプロパティコードが定義されています。

CODEプロパティ名説明
0x5001BatteryLevelバッテリー残量
0x5002FunctionalModeファンクショナルモード値
0x5003ImageSize撮影される画像のサイズ
0x5004CompressionSetting撮影される画像の圧縮レート
0x5005WhiteBalanceホワイトバランス
0x5006RGB GainWhiteBalanceがManualのときに参照されるRGBゲイン
0x5007F-Number絞り
0x5008FocalLength35mm換算した焦点距離
0x5009FocusDistanceフォーカス距離
0x500AFocusModeフォーカスモード
0x500BExposureMeteringMode測光モード
0x500CFlashModeフラッシュモード
0x500DExposureTimeシャッタースピード
0x500EExposureProgramMode露出モード
0x500FExposureIndexISO感度
0x5010ExposureBiasCompensation露出補正
0x5011DateTimeデバイス内の時計の設定
0x5012CaptureDelay実際にキャプチャが実行されるまでのディレイ
0x5013StillCaptureMode静止画撮影の方法
0x5014Contrast撮影される画像のコントラスト
0x5015Sharpness撮影される画像の鮮鋭度
0x5016DigitalZoom撮影される画像のデジタルズーム比
0x5017EffectMode特殊効果撮影モード
0x5018BurstNumberバースト撮影時に撮影される画像枚数
0x5019BurstIntervalバースト時の撮影間隔
0x501ATimelapseNumber微速撮影時に撮影される画像枚数
0x501BTimelapseInterval微速撮影時の撮影間隔
0x501CFocusMeteringModeAF値の評価方法
0x501DUploadURL画像やオブジェクトのアップロード先URL
0x501EArtistカメラの所有者や使用者
0x501FCopyrightInfo著作権表示

 0xD000~0xDFFFはベンダー拡張のための領域です。

DevicePropCode0x5001
TypeUINT8
DescFormsEnum, Range
Get/SetGet

 バッテリーの残り容量。取り得る値は実装依存となりますが、最小値はno powerを意味し、最大値はfull powerを意味します。DevicePropDescのstepフィールド(RangeForm)や列挙されたそれぞれの値(EnmerationForm)はDevicePropChangedイベントの生成に使われます。このデバイスプロパティの値はデバイスの電源が切り替わるときにゼロを示すかも知れません。

DevicePropCode0x5002
TypeUINT16
DescFormsEnum
Get/SetGet, Get/Set

 デバイスを制御するために用いられるファンクショナルモード値です。すべてのデバイスのデフォルトのファンクショナルモードは"standard mode"になります。それ以外のモードはデバイスに依存し、通常パワーセーブやアドバンスドモード等をサポートするために用いられます。FunctionalMode値が変更されケーパビリティに変化が生じたときDeviceInfoChangedイベントを発生する必要があります。このプロパティの変化はこのセッションの外にあるDeviceInfoにも影響しますのでセッションの多重化をサポートする場合DeviceInfoChangedイベントを使って外部のセッションにDeviceInfoの変化を通知する必要があります。

DevicePropCode0x5003
TypeString
DescFormsEnum, Range
Get/SetGet, Get/Set

 撮影画像サイズ(幅と高さ)を画素数で指定するデバイスプロパティです。このプロパティはNullで終端されたString型(Unicode)でWidthxHeightの形式で表現されます。たとえば幅640、高さ480の場合、"640x480"となります。取り得る値がリニアに変化するなら、RangeFormを使って値の範囲を指定することもできます。この場合上記の書式を使ってMinimumValueフィールドに幅と高さの最小値を、MaximumValueフィールドに幅と高さの最大値を同時に指定します。StepSizeフィールドは幅と高さで共通となりますので、値の変化の刻みを幅と高さで変えることはできません。たとえば、幅の範囲が640から1600で、高さの範囲が480から1200の場合、MinimumValueフィールドは"640x480"、MaximumValueフィールドは"1600x1200"となります。このプロパティの変更にともない、StorageInfoのFreeSpaceInImagesフィールドなどが影響するかもしれません。その場合、StorageInfoChangedイベントを発生する必要があります。

DevicePropCode0x5004
TypeUINT8
DescFormsEnum, Range
Get/SetGet, Get/Set

 撮影される画像の圧縮レート。このプロパティ値が最小のとき、最大の圧縮(低品質の画像が生成される)を意味し、プロパティ値が最大のとき、最小の圧縮(高品質の画像が生成される)を意味します。PTP仕様ではこのプロパティ値に関してこれ以上の詳しい定義を行わず、仕様の詳細はデバイスに依存します。

DevicePropCode0x5005
TypeUINT16
DescFormsEnum
Get/SetGet, Get/Set

 ホワイトバランスの方法。このプロパティの値は以下のように定義されています。

0x0001 Manual RGB Gainプロパティを使って直接ホワイトバランスを調整
0x0002 Automatic デバイス内部で自動でホワイトバランスを調整
0x0003 One-push Automatic 白い被写体を映して撮影ボタンを押すとデバイスはその被写体(白)をつかってホワイトバランスを調整する
0x0004 Daylight 太陽光を想定したホワイトバランス設定
0x0005 Florescent 蛍光灯を想定したホワイトバランス設定
0x0006 Tungsten 白熱灯を想定したホワイトバランス設定
0x0007 Flash フラッシュ撮影を想定したホワイトバランス設定
0x8000~
0x8FFF
Vendor-Defined

DevicePropCode0x5006
TypeString
DescFormsEnum, Range
Get/SetGet, 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と仮定)。

DevicePropCode0x5007
TypeUINT16
DescFormsEnum
Get/SetGet, Get/Set

 レンズの絞り値を表現するプロパティでF値を100倍した値で表現します。カメラがAEモードのとき、このプロパティが変更されるとやExposure Index等他のプロパティも変更されますのでDevicePropChangedイベントを発生する必要があります。通常このプロパティの設定はカメラの露出モードがマニュアルまたは絞り優先のときに有効です。

DevicePropCode0x5008
TypeUINT32
DescFormsEnum, Range
Get/SetGet, Get/Set

 35mm換算の焦点距離。このプロパティ値はmmで表現された焦点距離を100倍した値です。

DevicePropCode0x5009
TypeUINT16
DescFormsEnum, Range
Get/SetGet, Get/Set

 フォーカス距離(mm単位)。このプロパティ値が0xFFFFのときフォーカス距離が655m以上であることを意味します。

DevicePropCode0x500A
TypeUINT16
DescFormsEnum
Get/SetGet, Get/Set

 フォーカスモード。プロパティで値は次のように定義されます。

0x0001Manual
0x0002Automatic
0x0003Automatic Macro (close-up)
0x8000~
0xFFFF
Vendor-Defined

DevicePropCode0x500B
TypeUINT16
DescFormsEnum
Get/SetGet, Get/Set

 測光モード。プロパティで値は以下のように定義されます。

0x0001Average
0x0002Center-weighted-average
0x0003Multi-spot
0x0004Center-spot
0x8000~
0xFFFF
Vendor-Defined

DevicePropCode0x500C
TypeUINT16
DescFormsEnum
Get/SetGet, Get/Set

 フラッシュモード。値は以下のように定義されます。

0x0001auto flash
0x0002Flash off
0x0003Fill flash
0x0004Red eye auto
0x0005Red eye fill
0x0006External Sync
0x8000~
0xFFFF
Vendor-Defined

DevicePropCode0x500D
TypeUINT32
DescFormsEnum, Range
Get/SetGet, Get/Set

 シャッタースピード。カメラがAEモードのとき、このプロパティが変更されると他のプロパティも変更されますのでDevicePropChangedイベントを発生する必要があります。このプロパティは通常ExposureProgramModeがManualまたはShutter Priorityの時に限りデバイスによって用いられます。

DevicePropCode0x500E
TypeUINT16
DescFormsEnum
Get/SetGet, Get/Set

 カメラの露出モード。このプロパティの値は以下のように定義されています。

0x0001Manual
0x0002Automatic
0x0003Aperture Priority
0x0004Shutter Priority
0x0005Program Creative (greater depth of field)
0x0006Program Action (faster shutter speed)
0x0007Portrait
0x8000~
0xFFFF
Vendor-Defined

DevicePropCode0x500F
TypeUINT16
DescFormsEnum, Range
Get/SetGet, Get/Set

 シャッタースピードを意味し、ISO感度(ASA/DIN)に対応します。通常のカメラは非連続なExposureIndex値を設定しますが、仕様では連続する値をサポートすることもできます。

DevicePropCode0x5010
TypeUINT16
DescFormsEnum, Range
Get/SetGet, Get/Set

 カメラの露出の補正値。このプロパティの値はstop(*1)を1000倍した値になります。プロパティ値が0のとき、工場出荷設定の露出設定がそのまま適用されます。プロパティ値が2000のとき、2stopを意味し明るさは工場出荷設定の4倍になります。-1000のときは-1stopを意味し工場出荷設定の半分の明るさになります。

 (*1) stopは露出の単位で相対的な明るさを示します。1stopでは明るさが2倍になり、2stopでは4倍、3stopでは8倍になります。-1stopでは明るさが半減します。

DevicePropCode0x5011
TypeString
DescFormsNone
Get/SetGet, Get/Set

 デバイス内の時計の内容。ISO 8601フォーマット(“YYYYMMDDThhmmss.s”)で示します。

DevicePropCode0x5012
TypeUINT32
DescFormsEnum, Range
Get/SetGet, Get/Set

 キャプチャーがトリガーされてから実際にキャプチャされるまでのディレイ(ミリ秒)。このプロパティはバースト撮影などのフレーム間の時間を意味するものではありません。

DevicePropCode0x5013
TypeUINT16
DescFormsEnum
Get/SetGet, Get/Set

 静止画撮影の方法。以下の値が定義されています。

0x0000Normal
0x0001Burst
0x0002Timelapse
0x8000~
0xFFFF
Vendor-Defined

DevicePropCode0x5014
TypeUINT8
DescFormsEnum, Range
Get/SetGet, Get/Set

 撮影される画像に適用されるコントラスト。プロパティ値が少ない場合、低いコントラストを意味し、大きい場合高いコントラストを意味します。

DevicePropCode0x5015
TypeUINT8
DescFormsEnum, Range
Get/SetGet, Get/Set

 撮影される画像の鮮鋭度。プロパティ値が少ない場合、低い鮮鋭度を意味し、大きい場合高い鮮鋭度を意味します。

DevicePropCode0x5016
TypeUINT8
DescFormsEnum, Range
Get/SetGet, Get/Set

 カメラが取得した画像のデジタルズーム比を10を分母としたときの分子の値で示します。たとえばこのプロパティ値が20のとき、x2のズームを意味し、本来の画像の1/4シーンサイズが撮影されます。

DevicePropCode0x5017
TypeUINT16
DescFormsEnum
Get/SetGet, Get/Set

 特殊効果撮影モード。以下の値が定義されています。

0x0001Standard (color)
0x0002Black & White
0x0003Sepia
0x8000~
0xFFFF
Vendor-Defined

DevicePropCode0x5018
TypeUINT16
DescFormsEnum, Range
Get/SetGet, Get/Set

 バースト撮影時に撮影される画像枚数。

DevicePropCode0x5019
TypeUINT16
DescFormsEnum, Range
Get/SetGet, Get/Set

 バースト撮影時のそれぞれの撮影の間隔(ミリ秒)。

DevicePropCode0x501A
TypeUINT16
DescFormsEnum, Range
Get/SetGet, Get/Set

 微速撮影(time-lapse)で撮影される画像枚数。

DevicePropCode0x501B
TypeUINT32
DescFormsEnum, Range
Get/SetGet, Get/Set

 微速撮影時の撮影間隔(ミリ秒)。

DevicePropCode0x501C
TypeUINT16
DescFormsEnum, Range
Get/SetGet, Get/Set

 カメラのAF動作モード。プロパティの値は以下のように定義されています。

0x0001Center-spot
0x0002Multi-spot
0x8000~
0xFFFF
Vendor-Defined

DevicePropCode0x501D
TypeString
DescFormsNone
Get/SetGet, Get/Set

 画像やオブジェクトのアップロード先として使うことのできるURL。

DevicePropCode0x501E
TypeString
DescFormsNone
Get/SetGet, Get/Set

 このプロパティはカメラの所有者や使用者の名前。撮影される画像のExifタグのArtistフィールドに適用されることを意図しています。

DevicePropCode0x501F
TypeString
DescFormsNone
Get/SetGet, Get/Set

 ExifタグのCopyrightフィールドに適用される著作権表示の文字列。

▼ Property
記事情報
datePublished2011-01-01
dateModified2018-07-26
authorアセンブラの魔女
headlinePTPのデバイスプロパティについての説明記事です
keywordsPTP
keywordsデバイスプロパティ
publisher name= wiredFish, logo.name= wiredFish, logo.url= https://books-nekoya.jp/Programming/chigu-hagu-title-01.png size= 208 pixel x 50 pixel
image.url url= https://books-nekoya.jp/Programming/chigu-hagu-title-01.png , size= 208 pixel x 50 pixel