From 00becff6d353315132d4ba7b5cc423cf679c5e88 Mon Sep 17 00:00:00 2001 From: Rhet Turnbull Date: Sat, 24 Apr 2021 12:24:48 -0700 Subject: [PATCH] Updated Photos version 5 database (markdown) --- Photos-version-5-database.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/Photos-version-5-database.md b/Photos-version-5-database.md index cfd53e1..2a90350 100644 --- a/Photos-version-5-database.md +++ b/Photos-version-5-database.md @@ -118,7 +118,7 @@ Photos modifies `ZMODIFICATIONDATE` even for photos that have not been edited. On export, Photos does not set the EXIF modify date. -### import method +### Import method In Photos 5, referenced photos appear to be identified by `ZGENERICASSET.ZSAVEDASSETTYPE`: - 3: imported by copying to Photos library @@ -127,6 +127,34 @@ In Photos 5, referenced photos appear to be identified by `ZGENERICASSET.ZSAVEDA - 10: referenced file (not copied to Photos library) +### Burst Photos +Burst photos are identified by a burstUUID and a burstPickType. (In Photos 5+ these are called "avalanche" instead of burst. +The "pick type" seems to be a bit flag indicating status of images in the burst set: + + In Photos <=4, these values are in `RKVersion.burstUuid` and `RKVersion.burstPickType` + In Photos >= 5, these values are in `ZGENERICASSET.ZAVALANCHEUUID` and `ZGENERICASSET.ZAVALANCHEPICKTYPE` (ZASSET table in Photos 6) + +The values appear to be: + +BURST_NOT_SELECTED = 0b10 # 2: burst image is not selected +BURST_SELECTED = 0b1000 # 8: burst image is selected +BURST_KEY = 0b10000 # 16: burst image is the key photo (top of burst stack) +BURST_DEFAULT_PICK = 0b100 # 4: burst image is the one Photos picked to be key image before any selections made +BURST_UNKNOWN = 0b100000 # 32: this is almost always set with BURST_DEFAULT_PICK and never if BURST_DEFAULT_PICK is not set. I think this has something to do with what algorithm Photos used to pick the default image + +Thus, an unselected burst image has a value of 2. +A selected image could be + + 8: BURST_SELECTED + 12: BURST_SELECTED & BURST_DEFAULT_PICK + 44: BURST_SELECTED & BURST_DEFAULT_PICK & BURST_UNKNOWN + +A key image could be: + + 16: BURST_KEY + 20: BURST_KEY & BURST_DEFAULT_PICK + 52: BURST_KEY & BURST_DEFAULT_PICK & BURST_UNKNOWN + **TODO** Document the following * [ ] Joining assets