You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
2.0 KiB

#------------------------------------------------------------------------------
# File: frameCount.config
#
# Description: ExifTool config file to extract MP4 video FrameCount
#
# Usage: exiftool -config frameCount.config -frameCount FILE
#
# Requires: ExifTool version 7.99 or later
#
# Revisions: 2022-09-22 - P. Harvey Created
#
# Notes: Enables Unknown option to extract the required SampleSizes atom
#------------------------------------------------------------------------------
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
'FrameCount' => {
Require => {
0 => 'HandlerType',
},
Desire => {
1 => 'SampleSizes',
2 => 'CompactSampleSizes',
},
Groups => { 2 => 'Video' },
ValueConv => q{
my ($i, $tag, $ptr);
my $key = 'HandlerType';
# find video track number
for ($i=1; defined $val[0]; ++$i) {
last if $val[0] eq 'Video Track';
$key = "HandlerType ($i)";
$val[0] = $self->GetValue($key);
}
my $trk = $self->GetGroup($key, 1);
# search for SampleSizes or CompactSampleSizes for this track
foreach $tag ('SampleSizes', 'CompactSampleSizes') {
$key = $tag;
for ($i=1; ; ++$i) {
$ptr = $self->GetValue($key);
last unless $ptr;
last if $self->GetGroup($key, 1) eq $trk;
$key = "$tag ($i)";
}
last if $ptr;
}
return undef unless $ptr;
return unpack('x8N', $$ptr);
},
},
},
);
%Image::ExifTool::UserDefined::Options = (
Unknown => 1, # (otherwise SampleSizes won't be extracted)
);