# The %Image::ExifTool::UserDefined hash defines new tags to be added to existing tables. %Image::ExifTool::UserDefined = ( 'Image::ExifTool::FLIR::CameraInfo' => { 0x390 => { Name => 'FocusDistanceRAW', Format => 'int16u', Groups => { 2 => 'Image' } }, 0x45c => { Name => 'FocusDistance', Format => 'float', PrintConv => 'sprintf("%.1f m",$val)' }, }, 'Image::ExifTool::FLIR::FFF' => { 0x0E => { Name => 'EmbeddedImage', SubDirectory => { TagTable => 'Image::ExifTool::FLIR::EmbeddedImage' }, }, 0x2A => { Name => 'PIP', SubDirectory => { TagTable => 'Image::ExifTool::FLIR::PIP' }, }, }, ); # define new table %Image::ExifTool::FLIR::EmbeddedImage = ( GROUPS => { 0 => 'APP1', 2 => 'Image' }, PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData, FIRST_ENTRY => 0, NOTES => q{ visible image in PNG format (YCbCr) }, 0x00 => { # use this tag only to determine the byte order # (the value should be 0x0003 if the byte order is correct) Name => 'CameraInfoByteOrder', Format => 'int16u', Hidden => 1, RawConv => 'ToggleByteOrder() if $val >= 0x0100; undef', }, 0x02 => { Name => 'EmbeddedImageWidth', Format => 'int16u', }, 0x04 => { Name => 'EmbeddedImageHeight', Format => 'int16u', }, 0x20 => { Name => 'EmbeddedImage', Format => 'undef[$size-0x20]', Notes => 'PNG in Y Cb Cr', Binary => 1, }, 0x21 => { Name => 'EmbeddedImageFormat', Format => 'undef[0x03]', RawConv => sub { my ($val, $self) = @_; if ( $val =~ /^PNG/ ) { $type = 'PNG in YCbCr'; } else { $type = 'unknown'; } return $type; } }, ); %Image::ExifTool::FLIR::PIP = ( GROUPS => { 0 => 'APP1', 2 => 'Image' }, PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData, FIRST_ENTRY => 0, NOTES => q{ Picture in Picture }, 0x00 => { # determine the byte order RawConv => 'ToggleByteOrder()', Name => 'Real2IR', Format => 'float', #PrintConv => 'sprintf("%.2f",$val)' }, 0x04 => { Name => 'OffsetX', Format => 'int16s', # %+d positiv/negativ symbol for direct using with IM convert PrintConv => 'sprintf("%+d",$val)' }, 0x06 => { Name => 'OffsetY', Format => 'int16s', PrintConv => 'sprintf("%+d",$val)' }, 0x08 => { Name => 'pipX1', Format => 'int16u', }, 0x0A => { Name => 'pipX2', Format => 'int16u', }, 0x0C => { Name => 'pipY1', Format => 'int16u', }, 0x0E => { Name => 'pipY2', Format => 'int16u', }, );