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.
 
 
 

70 lines
2.9 KiB

#------------------------------------------------------------------------------
# File: cuepointlist.config
#
# Description: ExifTool config file to generate list of cue points and labels
# in WAV audio files
#
# Usage: exiftool -config cuepointlist.config -cuepointlist -b FILE
#
# Requires: ExifTool version 12.25 or later
#
# Revisions: 2021-04-20 - P. Harvey Created
#------------------------------------------------------------------------------
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
CuePointList => {
Require => {
0 => 'CuePoints',
1 => 'SampleRate',
},
Desire => {
2 => 'CuePointLabel',
3 => 'CuePointNotes',
4 => 'LabeledText',
},
ValueConv => q{
SetByteOrder('II');
my (%lbl, %rgn, %rtyp, %rlbl, %note, $pos, $i);
# get labels if available
for ($i=1; defined $val[2]; ++$i) {
$lbl{$1} = $2 if $val[2] =~ /^(\d+) (.*)/ and length $2;
$val[2] = $self->GetValue("CuePointLabel ($i)");
}
# get notes if available
for ($i=1; defined $val[3]; ++$i) {
$note{$1} = $2 if $val[3] =~ /^(\d+) (.*)/ and length $2;
$val[3] = $self->GetValue("CuePointNotes ($i)");
}
# get regions if available
for ($i=1; defined $val[4]; ++$i) {
if ($val[4] =~ /^(\d+) (\d+) '(.*)' \d+ \d+ \d+ \d+ (.*)/) {
$rgn{$1} = $2;
$rtyp{$1} = $3;
$rlbl{$1} = $4;
}
$val[4] = $self->GetValue("LabeledText ($i)");
}
my $buff = "Cue\tStart\tEnd\tLabel\tPurpose\tText\tNotes\n";
for ($pos=4; $pos+24<=length(${$val[0]}); $pos+=24) {
my $n = Get32u($val[0], $pos);
my $start = Get32u($val[0], $pos + 4);
my (@lbl, $lbl);
push @lbl, $lbl{$n} if defined $lbl{$n};
push @lbl, $rlbl{$n} if defined $rlbl{$n};
push @lbl, '-', $note{$n} if defined $note{$n};
my $lbl = join ' ', @lbl;
$buff .= sprintf("%d\t%.3f\t%.3f\t%s\t%s\t%s\t%s\n",
$n, $start/$val[1], ($start+($rgn{$n}||0))/$val[1],
defined($lbl{$n}) ? $lbl{$n} : '',
defined($rtyp{$n}) ? $rtyp{$n} : '',
defined($rlbl{$n}) ? $rlbl{$n} : '',
defined($note{$n}) ? $note{$n} : '');
}
return $buff;
},
},
},
);
1; # end