Condition Coverage

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


and 2 conditions

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

and 3 conditions

line !l l&&!r l&&r condition
932 0 0 0 $verbose and defined $str
952 0 0 0 defined $tagID and defined $format
984 0 0 0 defined $sampleTime and $value->{'CreateDate'}
987 0 0 0 $value->{'TimeScale'} and $value->{'Duration'}
1068 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
1126 0 0 0 $num and $num * 12 + 22 < length $$dataPt
1134 0 0 0 $tags{'GPSTimeStamp'} and not $tags{'GPSDateTime'}
0 0 0 $tags{'GPSTimeStamp'} and not $tags{'GPSDateTime'} and $et->{'LastDate'}
1175 0 0 0 $$dataPt =~ /^\0\0(..\xaa\xaa|\xf2\xe1\xf0\xee)/s and length $$dataPt >= 282
1243 0 0 0 $a[8] and $a[8] =~ s/M$//
1244 0 0 0 $a[7] and $a[7] =~ /^\d+\.\d+$/
1245 0 0 0 $a[11] and $a[11] =~ s/;\s*$//
1261 0 0 0 $n >= 0 and defined $decode[$n]
1274 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
1339 8 0 0 $start and $size
1342 0 0 8 $stco and $stsc
0 0 8 $stco and $stsc and @$stsc
1346 0 0 8 $stts and @$stts > 1
1354 0 0 8 $iChunk >= $nextChunk and @$stsc
1359 0 0 8 defined $chunkStart and length $chunkStart
1418 8 0 8 $i < @$start and $i < @$size
1459 0 0 0 $et->{'GotNAL06'} and $eeOpt < 3
1467 8 0 0 $type eq "sbtl" and $metaFormat eq "tx3g"
8 0 0 $type eq "sbtl" and $metaFormat eq "tx3g" and $buff =~ /^..PNDM/s
1480 0 0 0 $size >= 2 and unpack("n", $buff) == $size - 2
1486 0 0 0 $buff =~ /^\0/ and $buff =~ /\x0a$/
0 0 0 $buff =~ /^\0/ and $buff =~ /\x0a$/ and length $buff > 5
1522 0 0 4 $tagInfo and !$tagInfo->{'Unknown'} || $et->{'OPTIONS'}{'Unknown'} >= $tagInfo->{'Unknown'}
0 0 0 $metaFormat eq "camm" and $buff =~ /^X/
1533 0 0 0 defined $et->{'GPSLatitude'} and defined $et->{'GPSLongitude'}
0 0 0 defined $et->{'GPSLatitude'} and defined $et->{'GPSLongitude'} and not $et->{'GPSDateTime'}
1580 8 0 0 $et->{'FoundGPSLatitude'} and not $et->{'FoundGPSDateTime'}
1652 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
1708 0 0 0 not defined $yr and $buf2 =~ /^.{8}(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}).(.{15})/s
1778 0 0 0 $notEnc and $notStr
1802 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"
1886 0 0 0 $pos == 16 and $$dataPt =~ /^.{12}\xf0\x03\0\0.{16}\0{4}/s
2035 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
2153 0 0 0 $recentRecPos and $recPos < $recentRecPos
2323 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
2347 0 0 0 abs $lat2 - $lat < "0.001" and abs $lon2 - $lon < "0.001"
2373 0 0 0 defined $lon and not defined $spd
0 0 0 defined $lon and not defined $spd and /^\d+\.\d+$/
2455 0 0 0 defined $yr and $mon < 1 || $mon > 12
2460 0 0 0 defined $sec and not $sec =~ /^\d{2}/
2469 0 0 0 defined $lat and defined $lon
2472 0 0 0 $latRef && $latRef eq 'S'
2473 0 0 0 $lonRef && $lonRef eq 'W'
2495 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
2693 0 0 0 $dirLen > $recLen and not $et->Options("ExtractEmbedded")
2738 0 0 0 $dirLen > $recLen and not $et->Options("ExtractEmbedded")
2776 0 0 0 $dirLen > $recLen and not $et->Options("ExtractEmbedded")
2813 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"
2823 0 0 0 defined $fix->{'xAcc'} and defined $fix->{'yAcc'}
0 0 0 defined $fix->{'xAcc'} and defined $fix->{'yAcc'} and defined $fix->{'zAcc'}
2920 0 0 0 $tag =~ /^[\w ]{4}/ and $len < 33554432
3014 0 0 0 $raf->Read($buff, 14) and $buff eq "CCCCCCCCCCCCCC"
3020 0 0 0 $raf->Read($buff, 121) and $buff =~ /^GPSDATA--(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/
3032 0 0 0 $hemi and $hemi eq 'S' || $hemi eq 'W'
3058 0 0 0 $fix{'tim'} and !$tim || $fix{'tim'} != $tim
3059 0 0 0 $fix{'dat'} and defined $fix{'lat'}
0 0 0 $fix{'dat'} and defined $fix{'lat'} and defined $fix{'lon'}
3061 0 0 0 $fix{'tc'} and $et->{'StartTime'}
3078 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
3173 0 0 0 $resync and $type != 255
3266 0 0 0 $dirInfo and $dirInfo->{'DirEnd'}
3270 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"
3327 0 0 0 defined $dlen and not $dlen
3329 0 0 0 $len % 20 and not $len % 56
0 0 0 $len % 56 and not $len % 20
3348 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)
3356 0 0 0 $len % $dlen and $id != 1792
3364 0 0 0 $buff =~ /^\x01\0\0\0(.{4})\x01/s and unpack("V", $1) == $dlen
3401 0 0 0 $a[5] eq 'N' || $a[5] eq 'S' and $a[7] eq 'E' || $a[7] eq 'W' || $a[7] eq 'O'
3461 0 0 0 $id and $siz
0 0 0 $id and $siz and $off + $siz < $trailerLen
3584 0 0 0 $$dataPt =~ /^FMAS\0\0\0\0.{72}SAMM.{36}A/s and length $$dataPt >= 160
3699 0 0 4 $dataLen and $raf->Seek($dataPos)
3705 4 0 8 $n > length $buf2 and $raf->Read($buff, $n - length($buf2))

or 2 conditions

line l !l condition
925 0 0 $qtFmt{$str} || 'undef'
1080 0 0 $4 || 0
1081 0 0 $7 || 0
1088 0 0 $4 || 0
1089 0 0 $7 || 0
1106 0 0 $et->{'MediaTS'} || 1
1226 0 0 $2 || 1
1280 0 0 $5 || 0
1281 0 0 $8 || 0
1291 0 0 $et->{'UnknownTextCount'} || 0
1314 16 0 $et->Options('ExtractEmbedded') || 0
1315 16 0 $et->{'HandlerType'} || ''
1351 8 0 $et->{'MediaTS'} || 1
1398 4 4 $et->{'MetaFormat'} || ''
3084 0 0 $5 || 0
3085 0 0 $8 || 0
3091 0 0 $5 || 0
3092 0 0 $8 || 0
3263 0 0 $dirInfo->{'Offset'} || 0
3488 0 0 $dirInfo->{'DirStart'} || 0
3666 0 0 $scl || 1

or 3 conditions

line l !l&&r !l&&!r condition
907 0 0 0 $len < 8 or $pos + $len > $end
1388 0 0 8 $type eq "soun" or $type eq "vide"
1467 0 0 8 $type eq "text" or $type eq "sbtl" and $metaFormat eq "tx3g" and $buff =~ /^..PNDM/s
1510 0 0 0 defined $val or $buff =~ /\0[^\0]/
1522 4 0 0 !$tagInfo->{'Unknown'} || $et->{'OPTIONS'}{'Unknown'} >= $tagInfo->{'Unknown'}
1775 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
1776 0 0 0 /^\d{1,5}\.\d+\0*$/ or $notStr = 1, last
2376 0 0 0 $1 eq "N" or $1 eq "S"
2377 0 0 0 $1 eq "E" or $1 eq "W"
2378 0 0 0 $1 eq "x" or $1 eq "y"
0 0 0 $1 eq "x" or $1 eq "y" or $1 eq "z"
2433 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
2455 0 0 0 $mon < 1 || $mon > 12
2495 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
2507 0 0 0 $sz == 8 or $sz == 16
2656 0 0 0 $len < 8 or $pos + $len > length $$dataPt
2747 0 0 0 abs $lat > 9000 or abs $lon > 18000
2954 0 0 0 abs $lat > 9000 or abs $lon > 18000
3032 0 0 0 $hemi eq 'S' || $hemi eq 'W'
3058 0 0 0 !$tim || $fix{'tim'} != $tim
3189 0 0 0 $tm < $sampleTime or $tm > $sampleTime + 250
3205 0 0 0 $type == 0 or $type == 3
3243 0 0 0 $eeOpt or ($found & 41) != 41
3282 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
3294 0 0 0 $verbose or $et->{'HTML_DUMP'}
3401 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'
3489 0 0 0 $dirInfo->{'DirLen'} || length($$dataPt) - $pos
3532 0 0 0 $lat != '-2147483648' or $lon != '-2147483648'
3689 0 0 4 $et->{'FoundEmbedded'} or not $dataPos
3715 0 8 0 $found or $pos < 20000000
8 0 0 $found or $pos < 20000000 or $ee > 1