Image-ExifTool
view release on metacpan or search on metacpan
lib/Image/ExifTool/QuickTime.pm view on Meta::CPAN
ValueConv => '$val=~tr/\0//d; $val', # (remove version/flags? and terminator?)
},
proj => {
Name => 'Projection',
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::proj' },
},
);
# 'proj' atom information (ref https://github.com/google/spatial-media/blob/master/docs/spherical-video-v2-rfc.md)
%Image::ExifTool::QuickTime::proj = (
PROCESS_PROC => \&ProcessMOV,
GROUPS => { 2 => 'Video' },
prhd => {
Name => 'ProjectionHeader',
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::prhd' },
},
cbmp => {
Name => 'CubemapProj',
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::cbmp' },
},
equi => {
Name => 'EquirectangularProj',
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::equi' },
},
# mshp - MeshProjection (P.I.T.A. to decode, for not much reward, see ref)
);
# 'prhd' atom information (ref https://github.com/google/spatial-media/blob/master/docs/spherical-video-v2-rfc.md)
%Image::ExifTool::QuickTime::prhd = (
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
GROUPS => { 2 => 'Video' },
FORMAT => 'fixed32s',
# 0 - version (high 8 bits) / flags (low 24 bits)
1 => 'PoseYawDegrees',
2 => 'PosePitchDegrees',
3 => 'PoseRollDegrees',
);
# 'cbmp' atom information (ref https://github.com/google/spatial-media/blob/master/docs/spherical-video-v2-rfc.md)
%Image::ExifTool::QuickTime::cbmp = (
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
GROUPS => { 2 => 'Video' },
FORMAT => 'int32u',
# 0 - version (high 8 bits) / flags (low 24 bits)
1 => 'Layout',
2 => 'Padding',
);
# 'equi' atom information (ref https://github.com/google/spatial-media/blob/master/docs/spherical-video-v2-rfc.md)
%Image::ExifTool::QuickTime::equi = (
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
GROUPS => { 2 => 'Video' },
FORMAT => 'int32u', # (actually 0.32 fixed point)
# 0 - version (high 8 bits) / flags (low 24 bits)
1 => { Name => 'ProjectionBoundsTop', ValueConv => '$val / 4294967296' },
2 => { Name => 'ProjectionBoundsBottom',ValueConv => '$val / 4294967296' },
3 => { Name => 'ProjectionBoundsLeft', ValueConv => '$val / 4294967296' },
4 => { Name => 'ProjectionBoundsRight', ValueConv => '$val / 4294967296' },
);
# 'btrt' atom information (ref http://lists.freedesktop.org/archives/gstreamer-commits/2011-October/054459.html)
%Image::ExifTool::QuickTime::Bitrate = (
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
GROUPS => { 2 => 'Video' },
FORMAT => 'int32u',
PRIORITY => 0, # often filled with zeros
0 => 'BufferSize',
1 => 'MaxBitrate',
2 => 'AverageBitrate',
);
# 'clap' atom information (ref https://developer.apple.com/library/mac/technotes/tn2162/_index.html#//apple_ref/doc/uid/DTS40013070-CH1-TNTAG9)
%Image::ExifTool::QuickTime::CleanAperture = (
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
GROUPS => { 2 => 'Video' },
FORMAT => 'rational64s',
0 => 'CleanApertureWidth',
1 => 'CleanApertureHeight',
2 => 'CleanApertureOffsetX',
3 => 'CleanApertureOffsetY',
);
# preview data block
%Image::ExifTool::QuickTime::Preview = (
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
GROUPS => { 2 => 'Image' },
FORMAT => 'int16u',
0 => {
Name => 'PreviewDate',
Format => 'int32u',
Groups => { 2 => 'Time' },
%timeInfo,
},
2 => 'PreviewVersion',
3 => {
Name => 'PreviewAtomType',
Format => 'string[4]',
},
5 => 'PreviewAtomIndex',
);
# movie atoms
%Image::ExifTool::QuickTime::Movie = (
PROCESS_PROC => \&ProcessMOV,
WRITE_PROC => \&WriteQuickTime,
GROUPS => { 2 => 'Video' },
mvhd => {
Name => 'MovieHeader',
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::MovieHeader' },
},
trak => {
Name => 'Track',
CanCreate => 0, # don't create this atom
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Track' },
},
udta => {
Name => 'UserData',
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::UserData' },
},
( run in 0.525 second using v1.01-cache-2.11-cpan-d8267643d1d )