JUMBF

Started by jfarkas, March 21, 2021, 09:41:06 AM

Previous topic - Next topic

jfarkas

Was wondering if there is a way to read/write box details of JPEG universal metadata box format (JUMBF) - ISO 19566-5 (https://www.iso.org/standard/73604.html?)

Please see the attached image for an example. The content of the box(es) can be inspected/displayed at https://verify.contentauthenticity.org/inspect

Best
Janos

Phil Harvey

Hi Janos,

Thanks for this suggestion.

I'm actually working on read support right now, but write support isn't something I foresee being able to add easily.

This is yet another format whose specification is held hostage by ISO, and I am unable (unwilling) to pay the ransom fee... which means that I will have to add support based on reverse engineering and less reliable information from other sources.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

jfarkas

Hi Phil,

Thank you for your prompt reply.
If I would provide the funds needed for the ISO fees would you consider creating the writing support? We (clink.media) would be glad to field test it. 
We are a member of CAI and C2PA(c2pa.org) and created an integration for your wonderful ExifTool with WordPress.

- Janos

Phil Harvey

Actually, it is the complex structure of JUMBF that is the biggest problem for implementing write support.  The JUMBF metadata is represented in nested structures, and the tag descriptions are stored separately from the values.  This makes it very difficult to provide a reasonable user interface since it doesn't fit into the simple -TAG=VALUE command-line interface that ExifTool uses.  I will have to think about how this could be done.  If you have any ideas (ie. concrete examples of command lines that you could use to write the information you want), let me know.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

leonardr

Phil - first a reminder that access to ISO standards *can be* free, you simply need to participate in their development.  I would be happy to introduce you to any committees where you would like to contribute.

Concerning JUMBF, since it is just "embeddable" ISO BMFF, what model you use today for writing other BMFF-based formats (eg. AVIF, MP4, etc.) would be the most reasonable to use here.

jfarkas

Hi Phil,

I will think about the write user interface/command line and will get back to you with suggestions in about a week timeframe.
Thank you again for considering it.

- Janos

Phil Harvey

Quote from: leonardr on March 22, 2021, 08:45:19 AM
Phil - first a reminder that access to ISO standards *can be* free, you simply need to participate in their development.  I would be happy to introduce you to any committees where you would like to contribute.

Interesting idea.  Email me and we'll discuss this further (philharvey66 at gmail.com).

QuoteConcerning JUMBF, since it is just "embeddable" ISO BMFF, what model you use today for writing other BMFF-based formats (eg. AVIF, MP4, etc.) would be the most reasonable to use here.

Yes, decoding ISO BMFF is the easy part.  But the structure of ISO BMFF can be arbitrarily complicated, and the difficult part is making this compatible with a simple, general, command-line interface.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

jfarkas

Hi Phil,

Just letting you know that we need somewhat more time before we can give meaningful inputs on the UI and CLI.  Will get back to you soon.

jfarkas

Hi Phil,

Would the CLI structure you have implemented with serialized structured data https://exiftool.org/struct.html#Serialize work for JUMBF?

Could be an option for user-defined JUMBF structure tags (via the ExifTool config file), similar to how you have done for XMP https://exiftool.org/config.html#xmp-xxx?

- Janos

Phil Harvey

Hi Janos,

This is currently how ExifTool extracts structured JUMBF metadata.  The real problem is the deep nesting of what ExifTool is organizing as sub-documents.   Creating a single tag requires creating all of the containers for it too.  This is do-able, but would be a lot of work, and I would need the specification for all the structures that need to be written.

> exiftool -G3:1 -struct HEALTHCORONAVIRUSUSAOREGON_SALEM_08-cai.jpg
[ExifTool]      ExifTool Version Number         : 12.25
[System]        File Name                       : HEALTHCORONAVIRUSUSAOREGON_SALEM_08-cai.jpg
[System]        Directory                       : .
[System]        File Size                       : 891 KiB
[System]        File Modification Date/Time     : 2021:03:18 09:13:30-04:00
[System]        File Access Date/Time           : 2021:04:09 00:00:00-04:00
[System]        File Inode Change Date/Time     : 2021:03:18 09:13:30-04:00
[System]        File Permissions                : -rwxrwxrwx
[File]          File Type                       : JPEG
[File]          File Type Extension             : jpg
[File]          MIME Type                       : image/jpeg
[File]          Image Width                     : 2500
[File]          Image Height                    : 1688
[File]          Encoding Process                : Baseline DCT, Huffman coding
[File]          Bits Per Sample                 : 8
[File]          Color Components                : 3
[File]          Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
[Doc1:JUMBF]    JUMD Type                       : cacb-0011-0010-800000aa00389b71
[Doc1:JUMBF]    JUMD Flags                      : Requestable, Label
[Doc1:JUMBF]    JUMD Label                      : cai
[Doc1-1:JUMBF]  JUMD Type                       : cast-0011-0010-800000aa00389b71
[Doc1-1:JUMBF]  JUMD Flags                      : Requestable, Label
[Doc1-1:JUMBF]  JUMD Label                      : cb.reuters_1
[Doc1-1-1:JUMBF] JUMD Type                      : caas-0011-0010-800000aa00389b71
[Doc1-1-1:JUMBF] JUMD Flags                     : Requestable, Label
[Doc1-1-1:JUMBF] JUMD Label                     : cai.assertions
[Doc1-1-1-1:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-1:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-1:JUMBF] JUMD Label                   : adobe.asset.info
[Doc1-1-1-1:JSON] Title                         : HEALTHCORONAVIRUSUSAOREGON_SALEM_08.jpg
[Doc1-1-1-2:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-2:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-2:JUMBF] JUMD Label                   : cai.location.broad
[Doc1-1-1-2:JSON] Location                      : Salem, Oregon
[Doc1-1-1-3:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-3:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-3:JUMBF] JUMD Label                   : cai.rights
[Doc1-1-1-3:JSON] Copyright                     : Alisha Jucevic
[Doc1-1-1-4:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-4:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-4:JUMBF] JUMD Label                   : starling.device
[Doc1-1-1-4:JSON] Android Android Id Hash       : 8b46aab82c3867c7bda32682b1534178d7fce95dce749aa20ccc7d83708ddb7a
[Doc1-1-1-4:JSON] Android Build Id              : PQ2A.190205.003 release-keys
[Doc1-1-1-4:JSON] Android Build Tags            : release-keys
[Doc1-1-1-4:JSON] Android Build Time            : 1583266055000
[Doc1-1-1-4:JSON] Android Build Timestamp       : 2020-04-12T04:33:00Z
[Doc1-1-1-4:JSON] Android Build Type            : user
[Doc1-1-1-4:JSON] Android Device Board          : sdm845
[Doc1-1-1-4:JSON] Android Device Brand          : htc
[Doc1-1-1-4:JSON] Android Device Name           : htc_exodugl
[Doc1-1-1-4:JSON] Android End Product Name      : EXODUS 1
[Doc1-1-1-4:JSON] Android Fingerprint           : htc/exodugl_00709/htc_exodugl:9/PQ2A.190205.003/1109191.2:user/release-keys
[Doc1-1-1-4:JSON] Android Hardware              : htc_exo
[Doc1-1-1-4:JSON] Android Manufacturer          : HTC
[Doc1-1-1-4:JSON] Android Overall Product Name  : exodugl_00709
[Doc1-1-1-5:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-5:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-5:JUMBF] JUMD Label                   : starling.integrity
[Doc1-1-1-5:JSON] Starling Capture Timestamp    : 2021-01-01T12:00:00Z
[Doc1-1-1-5:JSON] Starling Filecoin CID Explorer: https://filfox.info/en/message/bafy2bzacediy5bizpomod3g5wwkvx6nnb7vhbqpweu4sfrmyc555h3utdl3tg
[Doc1-1-1-5:JSON] Starling Filecon CID          : bafykbzacec66bk67flvmxpm6a3nahghrgtxll5bvym42j3c3ypqgfts6nb4k2
[Doc1-1-1-5:JSON] Starling GUN Network          : gun://mkdata12435/JSON78
[Doc1-1-1-5:JSON] Starling GUN Network Explorer : http://edide.xyz/starlingMeta.html
[Doc1-1-1-5:JSON] Starling Hedera Hx            : topic 0.0.57546
[Doc1-1-1-5:JSON] Starling Hedera Hx Explorer   : https://explorer.kabuto.sh/mainnet/id/0.0.57546
[Doc1-1-1-5:JSON] Starling IPFSCID              : QmZ7vxi2RoXX8cE6JkfZdKmfdNDJTYq5yPrtmuwzjexcGs
[Doc1-1-1-5:JSON] Starling IPFSCID Explorer     : https://ipfs.io/ipfs/QmZ7vxi2RoXX8cE6JkfZdKmfdNDJTYq5yPrtmuwzjexcGs
[Doc1-1-1-5:JSON] Starling Media Hash           : 9d777407d07809c9e16d81ebbe997d581080f05bb91c42f61e9872e3670e31f2
[Doc1-1-1-5:JSON] Starling Media Key            : 9d777407d0_20210101T163941Z
[Doc1-1-1-5:JSON] Starling Public Key           : -----BEGIN PGP PUBLIC KEY BLOCK-----Version: BCPG v@RELEASE_NAME@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YeTD-----END PGP PUBLIC KEY BLOCK-----
[Doc1-1-1-6:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-6:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-6:JUMBF] JUMD Label                   : starling.location.precise
[Doc1-1-1-6:JSON] Starling GPS Accuracy         : 11.792
[Doc1-1-1-6:JSON] Starling GPS Altitude         : -4.617279053
[Doc1-1-1-6:JSON] Starling GPS Baring           : 212.94905
[Doc1-1-1-6:JSON] Starling GPS Bearing Accuracy : 0.0
[Doc1-1-1-6:JSON] Starling GPS Latitude         :
[Doc1-1-1-6:JSON] Starling GPS Longitude        :
[Doc1-1-1-6:JSON] Starling GPS Speed            : 0.20248456
[Doc1-1-1-6:JSON] Starling GPS Speed Accuracy   : 0.20248456
[Doc1-1-1-6:JSON] Starling GPS Time             :
[Doc1-1-1-6:JSON] Starling GPS Time Stamp       :
[Doc1-1-1-6:JSON] Starling GPS Vertical Accuracy: 8.0
[Doc1-1-1-7:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-7:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-7:JUMBF] JUMD Label                   : starling.sensors
[Doc1-1-1-7:JSON] Starling Sensor Accelerometer : SensorData(accuracy=3.0, value=[-2.2584498, 5.544669, 7.7695217])
[Doc1-1-1-7:JSON] Starling Sensor Accelerometer Uncalibrated: SensorData(accuracy=3.0, value=[-1.820267, 5.5468745, 7.781287, 0.0, 0.0, 0.0])
[Doc1-1-1-7:JSON] Starling Sensor Game Rotation Vector: SensorData(accuracy=3.0, value=[0.28894028, 0.089926116, -0.077565834, 0.94995135])
[Doc1-1-1-7:JSON] Starling Sensor Geomagnetic Rotation Vector: SensorData(accuracy=3.0, value=[0.13018766, 0.28469607, 0.67535406, 0.66776913, 0.0])
[Doc1-1-1-7:JSON] Starling Sensor Gravity       : SensorData(accuracy=NO_UPDATE_RECEIVED_DURING_SNAP, value=[-2.1173487, 5.2436786, 8.011802])
[Doc1-1-1-7:JSON] Starling Sensor Gyroscope     : SensorData(accuracy=3.0, value=[0.0090546375, 0.0026631376, 0.011718297])
[Doc1-1-1-7:JSON] Starling Sensor Gyroscope Uncalibrated: SensorData(accuracy=3.0, value=[-0.007457021, 0.004261021, -0.0069242665, 0.0, 0.0, 0.0])
[Doc1-1-1-7:JSON] Starling Sensor Light         : SensorData(accuracy=3.0, value=[477.0, 0.0, 0.0])
[Doc1-1-1-7:JSON] Starling Sensor Linear Acceleration: SensorData(accuracy=NO_UPDATE_RECEIVED_DURING_SNAP, value=[0.19492735, 0.059680037, 0.20064202])
[Doc1-1-1-7:JSON] Starling Sensor Magnetic Field: SensorData(accuracy=NO_UPDATE_RECEIVED_DURING_SNAP, value=[106.72393, -18.183104, -12.878148])
[Doc1-1-1-7:JSON] Starling Sensor Magnetic Field Uncalibrated: SensorData(accuracy=3.0, value=[105.09807, 27.845383, -12.322319, 9.477424E-38, 46.511898, 0.20629947])
[Doc1-1-1-7:JSON] Starling Sensor Rotation Vector: SensorData(accuracy=3.0, value=[0.14844818, 0.26368022, 0.59541535, 0.7442592, 0.0])
[Doc1-1-1-8:JUMBF] JUMD Type                    : 6579d6fb-dba2-446b-b2ac1b82feeb89d1
[Doc1-1-1-8:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-8:JUMBF] JUMD Label                   : cai.acquisition.thumbnail.jpg
[Doc1-1-1-8:Jpeg2000] Cai Acquisition Thumbnail Jpg: (Binary data 12038 bytes, use -b option to extract)
[Doc1-1-1-9:JUMBF] JUMD Type                    : 6579d6fb-dba2-446b-b2ac1b82feeb89d1
[Doc1-1-1-9:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-9:JUMBF] JUMD Label                   : cai.claim.thumbnail.jpg
[Doc1-1-1-9:Jpeg2000] Cai Claim Thumbnail Jpg   : (Binary data 12038 bytes, use -b option to extract)
[Doc1-1-2:JUMBF] JUMD Type                      : cacl-0011-0010-800000aa00389b71
[Doc1-1-2:JUMBF] JUMD Flags                     : Requestable, Label
[Doc1-1-2:JUMBF] JUMD Label                     : cai.claim
[Doc1-1-2:JSON] Assertions                      : [self#jumbf=cai/cb.starling_1/cai.assertions/adobe.asset.info?hl=mEiB/Vg9jFErMFtpD5TaKwzwI2vm6/W7Q6k1N303V63xkIA,self#jumbf=cai/cb.starling_1/cai.assertions/cai.location.broad?hl=mEiBrG+Hb2Sm5H72k/LvmdyIshx6sTXjGGDIaAStnlettXw,self#jumbf=cai/cb.starling_1/cai.assertions/cai.rights?hl=mEiDK1AMGoY0+hkWkdkvKjI+9HF9LkaGXKgX4xmU7PWiOqQ,self#jumbf=cai/cb.starling_1/cai.assertions/starling.device?hl=mEiAg8F4wNvtWAkzZCh8WGIl4PFmGnjXqS9WoEpmlBnoiwA,self#jumbf=cai/cb.starling_1/cai.assertions/starling.integrity?hl=mEiCTqahzUikg+NTv1hqx14DpHJ//FEKBF0h0keK4jcQ5kw,self#jumbf=cai/cb.starling_1/cai.assertions/starling.location.precise?hl=mEiAZBmqjPK9F1NvWIgYOdSptgrRaz60qRZhm7KGShzxkcA,self#jumbf=cai/cb.starling_1/cai.assertions/starling.sensors?hl=mEiBoAlP8Qfw6wvGfHn4bP1vRTZ7aUONvpGyZ/HfBe0cJeA,self#jumbf=cai/cb.starling_1/cai.assertions/cai.acquisition.thumbnail.jpg?hl=mEiDDPhc9CixH8ThoytBN2SZC25DkC8DrI/hJYwogAIE/2A,self#jumbf=cai/cb.starling_1/cai.assertions/cai.claim.thumbnail.jpg?hl=mEiC9XDrrknZpwOG1p1cv/6o9lYVNwH178tqYUaefjeOKJg]
[Doc1-1-2:JSON] Asset hashes                    : [{length=0x0000000000009959,name=JFIF SOI-APP0,start=0x0000000000000000,url=,value=EiAuxjtmax46cC2N3Y9aFmBO9Jfay8LEwJWzBUtZ0sUM8gA=},{length=0x000000000000027d,name=JFIF APP1/XMP,start=0x0000000000009959,url=,value=EiDjZifCgG2iKxcYeChKTOcWlJ9I/UC9/c5XFiJREqJFpwA=},{length=0x00000000000215e6,name=JFIF DQT-EOI,start=0x000000000000a90c,url=,value=EiArx031oA0N5KOEG6n9R/bJJFYJvmGlDoLtuwbRipLTKAA=}]
[Doc1-1-2:JSON] Recorder                        : Starling Store using Numbers Protocol
[Doc1-1-2:JSON] Signature                       : self#jumbf=cai/cb.starling_1/cai.signature
[Doc1-1-3:JUMBF] JUMD Type                      : casg-0011-0010-800000aa00389b71
[Doc1-1-3:JUMBF] JUMD Flags                     : Requestable, Label
[Doc1-1-3:JUMBF] JUMD Label                     : cai.signature
[Doc1-1-3:Jpeg2000] Cai Signature               : signature placeholder:cb.starling_1
[JFIF]          JFIF Version                    : 1.01
[JFIF]          Resolution Unit                 : None
[JFIF]          X Resolution                    : 1
[JFIF]          Y Resolution                    : 1
[XMP-x]         XMP Toolkit                     : XMP Core 4.4.0-Exiv2
[XMP-dcterms]   Provenance                      : self#jumbf=cb.reuters_1
[Composite]     Image Size                      : 2500x1688
[Composite]     Megapixels                      : 4.2
[Composite]     File Extension                  : jpg
[Composite]     File Type Description           : Joint Photographic Experts Group
[Composite]     Physical Image Size             : 2500.0x1688.0 None


- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

Phil Harvey

Or there is an option to leave the JSON as a block when extracting.  This is probably the way to go when writing, instead of trying to write the individual JSON elements.  But there is still the problem of the nesting.

> exiftool -G3:1 -api blockextract=2 JUMBF/HEALTHCORONAVIRUSUSAOREGON_SALEM_08-cai.jpg
[ExifTool]      ExifTool Version Number         : 12.25
[System]        File Name                       : HEALTHCORONAVIRUSUSAOREGON_SALEM_08-cai.jpg
[System]        Directory                       : .
[System]        File Size                       : 891 KiB
[System]        File Modification Date/Time     : 2021:03:18 09:13:30-04:00
[System]        File Access Date/Time           : 2021:04:23 00:00:00-04:00
[System]        File Inode Change Date/Time     : 2021:03:18 09:13:30-04:00
[System]        File Permissions                : -rwxrwxrwx
[File]          File Type                       : JPEG
[File]          File Type Extension             : jpg
[File]          MIME Type                       : image/jpeg
[File]          Image Width                     : 2500
[File]          Image Height                    : 1688
[File]          Encoding Process                : Baseline DCT, Huffman coding
[File]          Bits Per Sample                 : 8
[File]          Color Components                : 3
[File]          Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
[Doc1:JUMBF]    JUMD Type                       : cacb-0011-0010-800000aa00389b71
[Doc1:JUMBF]    JUMD Flags                      : Requestable, Label
[Doc1:JUMBF]    JUMD Label                      : cai
[Doc1-1:JUMBF]  JUMD Type                       : cast-0011-0010-800000aa00389b71
[Doc1-1:JUMBF]  JUMD Flags                      : Requestable, Label
[Doc1-1:JUMBF]  JUMD Label                      : cb.reuters_1
[Doc1-1-1:JUMBF] JUMD Type                      : caas-0011-0010-800000aa00389b71
[Doc1-1-1:JUMBF] JUMD Flags                     : Requestable, Label
[Doc1-1-1:JUMBF] JUMD Label                     : cai.assertions
[Doc1-1-1-1:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-1:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-1:JUMBF] JUMD Label                   : adobe.asset.info
[Doc1-1-1-1:Jpeg2000] Adobe Asset Info          : (Binary data 52 bytes, use -b option to extract)
[Doc1-1-1-2:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-2:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-2:JUMBF] JUMD Label                   : cai.location.broad
[Doc1-1-1-2:Jpeg2000] Cai Location Broad        : (Binary data 29 bytes, use -b option to extract)
[Doc1-1-1-3:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-3:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-3:JUMBF] JUMD Label                   : cai.rights
[Doc1-1-1-3:Jpeg2000] Cai Rights                : (Binary data 31 bytes, use -b option to extract)
[Doc1-1-1-4:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-4:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-4:JUMBF] JUMD Label                   : starling.device
[Doc1-1-1-4:Jpeg2000] Starling Device           : (Binary data 645 bytes, use -b option to extract)
[Doc1-1-1-5:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-5:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-5:JUMBF] JUMD Label                   : starling.integrity
[Doc1-1-1-5:Jpeg2000] Starling Integrity        : (Binary data 3880 bytes, use -b option to extract)
[Doc1-1-1-6:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-6:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-6:JUMBF] JUMD Label                   : starling.location.precise
[Doc1-1-1-6:Jpeg2000] Starling Location Precise : (Binary data 362 bytes, use -b option to extract)
[Doc1-1-1-7:JUMBF] JUMD Type                    : json-0011-0010-800000aa00389b71
[Doc1-1-1-7:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-7:JUMBF] JUMD Label                   : starling.sensors
[Doc1-1-1-7:Jpeg2000] Starling Sensors          : (Binary data 1461 bytes, use -b option to extract)
[Doc1-1-1-8:JUMBF] JUMD Type                    : 6579d6fb-dba2-446b-b2ac1b82feeb89d1
[Doc1-1-1-8:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-8:JUMBF] JUMD Label                   : cai.acquisition.thumbnail.jpg
[Doc1-1-1-8:Jpeg2000] Cai Acquisition Thumbnail Jpg: (Binary data 12038 bytes, use -b option to extract)
[Doc1-1-1-9:JUMBF] JUMD Type                    : 6579d6fb-dba2-446b-b2ac1b82feeb89d1
[Doc1-1-1-9:JUMBF] JUMD Flags                   : Requestable, Label
[Doc1-1-1-9:JUMBF] JUMD Label                   : cai.claim.thumbnail.jpg
[Doc1-1-1-9:Jpeg2000] Cai Claim Thumbnail Jpg   : (Binary data 12038 bytes, use -b option to extract)
[Doc1-1-2:JUMBF] JUMD Type                      : cacl-0011-0010-800000aa00389b71
[Doc1-1-2:JUMBF] JUMD Flags                     : Requestable, Label
[Doc1-1-2:JUMBF] JUMD Label                     : cai.claim
[Doc1-1-2:Jpeg2000] Cai Claim                   : (Binary data 1648 bytes, use -b option to extract)
[Doc1-1-3:JUMBF] JUMD Type                      : casg-0011-0010-800000aa00389b71
[Doc1-1-3:JUMBF] JUMD Flags                     : Requestable, Label
[Doc1-1-3:JUMBF] JUMD Label                     : cai.signature
[Doc1-1-3:Jpeg2000] Cai Signature               : signature placeholder:cb.starling_1
[JFIF]          JFIF Version                    : 1.01
[JFIF]          Resolution Unit                 : None
[JFIF]          X Resolution                    : 1
[JFIF]          Y Resolution                    : 1
[XMP]           XMP                             : (Binary data 2398 bytes, use -b option to extract)
[Composite]     Image Size                      : 2500x1688
[Composite]     Megapixels                      : 4.2
[Composite]     File Extension                  : jpg
[Composite]     File Type Description           : Joint Photographic Experts Group
[Composite]     Physical Image Size             : 2500.0x1688.0 None


- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

jfarkas

Hi Phil,

Wow, thank you so much.  I would be more than happy to provide you the ISO/IEC 19566-5:2019 reference (properly obtained from https://www.iso.org/standard/73604.html) for your use. Would that be helpful?

Will install 12.25 (currently running on 12.16) and will start testing it.

- Janos

Phil Harvey

Hi Janos,

I think I understand the JUMBF structure, so at this point having the formal specification would only be useful if it describes a set of standard information that may be written.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

leonardr

>I think I understand the JUMBF structure, so at this point having the formal specification would only be useful if it describes a set of standard information that may be written.

...which it does not.

JUMBF is just a container format - embeddable BMFF, basically.

The details of what is in the JUMBF will be carried by some other standard, whether it is something like JPEG-XT or JPEG 360 or CAI/C2PA.

That said, I am working on a white paper (which will be public) from the JPEG working group to discuss exactly this issue and how we see tools like ExifTool working with JUMBF.   Would welcome your input.

jfarkas

Hi Phil,

We have done initial testings with 12.25 and we were able to process images known to have CAI (JUMBF) boxes :). We are looking forward to the outcome of your communication with Leonard.

- Janos