Condition Coverage

blib/lib/Image/ExifTool/QuickTimeStream.pl
Criterion Covered Total %
condition 36 470 7.6


and 2 conditions

line l !l condition
2924 0 0 $et->Warn("Bad gps0 record") and last

and 3 conditions

line !l l&&!r l&&r condition
920 0 0 0 $verbose and defined $str
934 0 0 0 defined $tagID and defined $format
966 0 0 0 defined $sampleTime and $value->{'CreateDate'}
969 0 0 0 $value->{'TimeScale'} and $value->{'Duration'}
1050 0 0 0 $tag =~ /^[A-Z]{2}GGA$/ and $dat =~ /^,(\d{2})(\d{2})(\d+(?:\.\d*)?),(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),[1-6]?,(\d+)?,(\.\d+|\d+\.?\d*)?,(-?\d+\.?\d*)?,M?/s
0 0 0 $tag eq "G" and $dat =~ /:(\d{4})-(\d{2})-(\d{2}) (\d{2}:\d{2}:\d{2})-([NS])(\d+\.\d+)-([EW])(\d+\.\d+)-S(\d+)/
0 0 0 $tag eq "GS" and $dat =~ /:([-+]?\d+),([-+]?\d+),([-+]?\d+)/
0 0 0 $tag eq "BEGINGSENSOR" and $dat =~ /^:([-+]\d+\.\d+):([-+]\d+\.\d+):([-+]\d+\.\d+)/
0 0 0 $tag eq "TIME" and $dat =~ /^:(\d+)/
0 0 0 $tag ne "END" and not $handled
1108 0 0 0 $num and $num * 12 + 22 < length $$dataPt
1116 0 0 0 $tags{'GPSTimeStamp'} and not $tags{'GPSDateTime'}
0 0 0 $tags{'GPSTimeStamp'} and not $tags{'GPSDateTime'} and $et->{'LastDate'}
1157 0 0 0 $$dataPt =~ /^\0\0(..\xaa\xaa|\xf2\xe1\xf0\xee)/s and length $$dataPt >= 282
1225 0 0 0 $a[8] and $a[8] =~ s/M$//
1226 0 0 0 $a[7] and $a[7] =~ /^\d+\.\d+$/
1227 0 0 0 $a[11] and $a[11] =~ s/;\s*$//
1243 0 0 0 $n >= 0 and defined $decode[$n]
1256 0 0 0 $$dataPt =~ /[A-Z]{2}RMC,(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/ and $13 <= 31
0 0 0 $$dataPt =~ /[A-Z]{2}RMC,(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/ and $13 <= 31 and $14 <= 12
0 0 0 $$dataPt =~ /[A-Z]{2}RMC,(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/ and $13 <= 31 and $14 <= 12 and $15 <= 99
1321 8 0 0 $start and $size
1324 0 0 8 $stco and $stsc
0 0 8 $stco and $stsc and @$stsc
1328 0 0 8 $stts and @$stts > 1
1336 0 0 8 $iChunk >= $nextChunk and @$stsc
1341 0 0 8 defined $chunkStart and length $chunkStart
1400 8 0 8 $i < @$start and $i < @$size
1441 0 0 0 $et->{'GotNAL06'} and $eeOpt < 3
1449 8 0 0 $type eq "sbtl" and $metaFormat eq "tx3g"
8 0 0 $type eq "sbtl" and $metaFormat eq "tx3g" and $buff =~ /^..PNDM/s
1462 0 0 0 $size >= 2 and unpack("n", $buff) == $size - 2
1468 0 0 0 $buff =~ /^\0/ and $buff =~ /\x0a$/
0 0 0 $buff =~ /^\0/ and $buff =~ /\x0a$/ and length $buff > 5
1504 0 0 4 $tagInfo and !$tagInfo->{'Unknown'} || $et->{'OPTIONS'}{'Unknown'} >= $tagInfo->{'Unknown'}
0 0 0 $metaFormat eq "camm" and $buff =~ /^X/
1515 0 0 0 defined $et->{'GPSLatitude'} and defined $et->{'GPSLongitude'}
0 0 0 defined $et->{'GPSLatitude'} and defined $et->{'GPSLongitude'} and not $et->{'GPSDateTime'}
1562 8 0 0 $et->{'FoundGPSLatitude'} and not $et->{'FoundGPSDateTime'}
1634 0 0 0 $$dataPt =~ /^(.{16}|.{48}|.{80})LIGOGPSINFO\0/s and length $$dataPt >= length($1) + 132
0 0 0 $$dataPt =~ /^.{60}4W`b]S= 140
0 0 0 $$dataPt =~ /^.{60}A\0.{10}([NS])\0.{14}([EW])\0/s and $dirLen >= 136
1690 0 0 0 not defined $yr and $buf2 =~ /^.{8}(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}).(.{15})/s
1748 0 0 0 $notEnc and $notStr
1772 0 0 0 $tmp ne "\0\0\0\0\0\0\0\0\0\0\0\0" and $tmp ne "\1\0\2\0\3\0\4\0\5\0\6\0"
1856 0 0 0 $pos == 16 and $$dataPt =~ /^.{12}\xf0\x03\0\0.{16}\0{4}/s
2005 0 0 0 $mon >= 1 and $mon <= 12
0 0 0 $mon >= 1 and $mon <= 12 and $day >= 1
0 0 0 $mon >= 1 and $mon <= 12 and $day >= 1 and $day <= 31
2123 0 0 0 $recentRecPos and $recPos < $recentRecPos
2293 0 0 0 $et->{'KodakVersion'} and $et->{'KodakVersion'} eq "3.01.054"
0 0 0 &Get32u($dataPt, 0) == 4194304 and abs $lat <= 90
0 0 0 &Get32u($dataPt, 0) == 4194304 and abs $lat <= 90 and abs $lon <= 180
2317 0 0 0 abs $lat2 - $lat < "0.001" and abs $lon2 - $lon < "0.001"
2343 0 0 0 defined $lon and not defined $spd
0 0 0 defined $lon and not defined $spd and /^\d+\.\d+$/
2425 0 0 0 defined $yr and $mon < 1 || $mon > 12
2430 0 0 0 defined $sec and not $sec =~ /^\d{2}/
2439 0 0 0 defined $lat and defined $lon
2442 0 0 0 $latRef && $latRef eq 'S'
2443 0 0 0 $lonRef && $lonRef eq 'W'
2465 52 0 0 $tag eq "stz2" and $dataLen > 12
36 0 16 $tag eq "co64" and $dataLen > 8
20 0 16 $tag eq "stsc" and $dataLen > 8
4 0 16 $tag eq "stts" and $dataLen > 8
0 0 0 $tag eq "gps " and $dataLen > 8
2663 0 0 0 $dirLen > $recLen and not $et->Options("ExtractEmbedded")
2708 0 0 0 $dirLen > $recLen and not $et->Options("ExtractEmbedded")
2746 0 0 0 $dirLen > $recLen and not $et->Options("ExtractEmbedded")
2783 0 0 0 ref $fix eq "HASH" and $fix->{'gpsStatus'}
0 0 0 ref $fix eq "HASH" and $fix->{'gpsStatus'} and $fix->{'gpsStatus'} eq "A"
2793 0 0 0 defined $fix->{'xAcc'} and defined $fix->{'yAcc'}
0 0 0 defined $fix->{'xAcc'} and defined $fix->{'yAcc'} and defined $fix->{'zAcc'}
2890 0 0 0 $tag =~ /^[\w ]{4}/ and $len < 33554432
2984 0 0 0 $raf->Read($buff, 14) and $buff eq "CCCCCCCCCCCCCC"
2990 0 0 0 $raf->Read($buff, 121) and $buff =~ /^GPSDATA--(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/
3002 0 0 0 $hemi and $hemi eq 'S' || $hemi eq 'W'
3028 0 0 0 $fix{'tim'} and !$tim || $fix{'tim'} != $tim
3029 0 0 0 $fix{'dat'} and defined $fix{'lat'}
0 0 0 $fix{'dat'} and defined $fix{'lat'} and defined $fix{'lon'}
3031 0 0 0 $fix{'tc'} and $et->{'StartTime'}
3048 0 0 0 $type eq "RMC" and $$dataPt =~ /\G(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/g
0 0 0 $type eq "GGA" and $$dataPt =~ /\G(\d{2})(\d{2})(\d+(\.\d*)?),(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),[1-6]?,(\d+)?,(\.\d+|\d+\.?\d*)?,(-?\d+\.?\d*)?,M?/g
3143 0 0 0 $resync and $type != 255
3236 0 0 0 $dirInfo and $dirInfo->{'DirEnd'}
3240 0 0 0 $raf->Seek(-78 - $offset, 2) and $raf->Read($buff, 78) == 78
0 0 0 $raf->Seek(-78 - $offset, 2) and $raf->Read($buff, 78) == 78 and substr($buff, -32) eq "8db42d694ccc418790edff439fe026bf"
3297 0 0 0 defined $dlen and not $dlen
3299 0 0 0 $len % 20 and not $len % 56
0 0 0 $len % 56 and not $len % 20
3318 0 0 0 $dlen and $insvLimit{$id}
0 0 0 $dlen and $insvLimit{$id} and $len > $insvLimit{$id}[1] * $dlen
0 0 0 $dlen and $insvLimit{$id} and $len > $insvLimit{$id}[1] * $dlen and $et->Warn("Insta360 $insvLimit{$id}[0] data is huge. Processing only the first $insvLimit{$id}[1] records", 2)
3326 0 0 0 $len % $dlen and $id != 1792
3334 0 0 0 $buff =~ /^\x01\0\0\0(.{4})\x01/s and unpack("V", $1) == $dlen
3371 0 0 0 $a[5] eq 'N' || $a[5] eq 'S' and $a[7] eq 'E' || $a[7] eq 'W' || $a[7] eq 'O'
3431 0 0 0 $id and $siz
0 0 0 $id and $siz and $off + $siz < $trailerLen
3554 0 0 0 $$dataPt =~ /^FMAS\0\0\0\0.{72}SAMM.{36}A/s and length $$dataPt >= 160
3669 0 0 4 $dataLen and $raf->Seek($dataPos)
3675 4 0 8 $n > length $buf2 and $raf->Read($buff, $n - length($buf2))

or 2 conditions

line l !l condition
913 0 0 $qtFmt{$str} || 'undef'
1062 0 0 $4 || 0
1063 0 0 $7 || 0
1070 0 0 $4 || 0
1071 0 0 $7 || 0
1088 0 0 $et->{'MediaTS'} || 1
1208 0 0 $2 || 1
1262 0 0 $5 || 0
1263 0 0 $8 || 0
1273 0 0 $et->{'UnknownTextCount'} || 0
1296 16 0 $et->Options('ExtractEmbedded') || 0
1297 16 0 $et->{'HandlerType'} || ''
1333 8 0 $et->{'MediaTS'} || 1
1380 4 4 $et->{'MetaFormat'} || ''
3054 0 0 $5 || 0
3055 0 0 $8 || 0
3061 0 0 $5 || 0
3062 0 0 $8 || 0
3233 0 0 $dirInfo->{'Offset'} || 0
3458 0 0 $dirInfo->{'DirStart'} || 0
3636 0 0 $scl || 1

or 3 conditions

line l !l&&r !l&&!r condition
896 0 0 0 $len < 8 or $pos + $len > $end
1370 0 0 8 $type eq "soun" or $type eq "vide"
1449 0 0 8 $type eq "text" or $type eq "sbtl" and $metaFormat eq "tx3g" and $buff =~ /^..PNDM/s
1492 0 0 0 defined $val or $buff =~ /\0[^\0]/
1504 4 0 0 !$tagInfo->{'Unknown'} || $et->{'OPTIONS'}{'Unknown'} >= $tagInfo->{'Unknown'}
1745 0 0 0 $lt = substr($$dataPt, 44, 20), $ln = substr($$dataPt, 64, 20), m[^[A-Za-z0-9+/]{8,20}={0,2}\0*$] or $notEnc = 1, last
1746 0 0 0 /^\d{1,5}\.\d+\0*$/ or $notStr = 1, last
2346 0 0 0 $1 eq "N" or $1 eq "S"
2347 0 0 0 $1 eq "E" or $1 eq "W"
2348 0 0 0 $1 eq "x" or $1 eq "y"
0 0 0 $1 eq "x" or $1 eq "y" or $1 eq "z"
2403 0 0 0 $yr < 2000 or $yr > 2200
0 0 0 $yr < 2000 or $yr > 2200 or $mon < 1
0 0 0 $yr < 2000 or $yr > 2200 or $mon < 1 or $mon > 12
0 0 0 $yr < 2000 or $yr > 2200 or $mon < 1 or $mon > 12 or $day < 1
0 0 0 $yr < 2000 or $yr > 2200 or $mon < 1 or $mon > 12 or $day < 1 or $day > 31
0 0 0 $yr < 2000 or $yr > 2200 or $mon < 1 or $mon > 12 or $day < 1 or $day > 31 or $hr > 59
0 0 0 $yr < 2000 or $yr > 2200 or $mon < 1 or $mon > 12 or $day < 1 or $day > 31 or $hr > 59 or $min > 59
0 0 0 $yr < 2000 or $yr > 2200 or $mon < 1 or $mon > 12 or $day < 1 or $day > 31 or $hr > 59 or $min > 59 or $sec > 600
2425 0 0 0 $mon < 1 || $mon > 12
2465 16 0 52 $tag eq "stsz" or $tag eq "stz2" and $dataLen > 12
0 0 52 $tag eq "stco" or $tag eq "co64" and $dataLen > 8
2477 0 0 0 $sz == 8 or $sz == 16
2626 0 0 0 $len < 8 or $pos + $len > length $$dataPt
2717 0 0 0 abs $lat > 9000 or abs $lon > 18000
2924 0 0 0 abs $lat > 9000 or abs $lon > 18000
3002 0 0 0 $hemi eq 'S' || $hemi eq 'W'
3028 0 0 0 !$tim || $fix{'tim'} != $tim
3159 0 0 0 $tm < $sampleTime or $tm > $sampleTime + 250
3175 0 0 0 $type == 0 or $type == 3
3213 0 0 0 $eeOpt or ($found & 41) != 41
3252 0 0 0 $trailerLen > $trailEnd or not $raf->Seek($dirInfo->{'DataPos'}, 0)
0 0 0 $trailerLen > $trailEnd or not $raf->Seek($dirInfo->{'DataPos'}, 0) or $raf->Read(${$$dirInfo{"OutFile"};}, $trailerLen) != $trailerLen
3264 0 0 0 $verbose or $et->{'HTML_DUMP'}
3371 0 0 0 $a[5] eq 'N' || $a[5] eq 'S'
0 0 0 $a[7] eq 'E' || $a[7] eq 'W' || $a[7] eq 'O'
3459 0 0 0 $dirInfo->{'DirLen'} || length($$dataPt) - $pos
3502 0 0 0 $lat != '-2147483648' or $lon != '-2147483648'
3659 0 0 4 $et->{'FoundEmbedded'} or not $dataPos
3685 0 8 0 $found or $pos < 20000000
8 0 0 $found or $pos < 20000000 or $ee > 1