Branch Coverage

blib/lib/Image/ExifTool/QuickTimeStream.pl
Criterion Covered Total %
branch 72 1050 6.8


line true false branch
856 0 0 $_ < 2147483648 ? :
871 0 0 unless $dirLen > 8
876 0 0 unless $ee
878 0 0 if $verbose
885 0 0 if $end > $dirLen
888 0 0 if ($verbose)
896 0 0 if $len < 8 or $pos + $len > $end
902 0 0 if ($tag eq 'keyd') { }
0 0 elsif ($tag eq 'dtyp') { }
904 0 0 unless $tagID
905 0 0 if $verbose
907 0 0 if length $val < 4
908 0 0 if (length $val >= 4)
910 0 0 if ($ns == 0) { }
0 0 elsif ($ns == 1) { }
911 0 0 unless length $val >= 8
920 0 0 if $verbose and defined $str
923 0 0 if ($verbose > 1)
924 0 0 if (defined $str) { }
934 0 0 if (defined $tagID and defined $format)
935 0 0 if ($verbose)
953 8 0 if defined $time
954 8 0 if defined $dur
966 0 0 if (defined $sampleTime and $value->{'CreateDate'})
968 0 0 if ($et->{'CreateDateAtEnd'}) { }
969 0 0 unless $value->{'TimeScale'} and $value->{'Duration'}
976 0 0 unless defined $utc
977 0 0 unless ($utc)
979 0 0 unless (defined $tzOff)
1001 0 0 if $tags->{'GPSDateTime'}
1015 0 0 if ($et->{'LastTime'})
1016 0 0 if ($et->{'LastTime'} eq $time) { }
0 0 elsif (%$tags) { }
1024 0 0 if $et->{'DOC_COUNT'} < ++$et->{'DOC_NUM'}
1040 0 0 if $et->{'NoMoreTextDecoding'}
1042 0 0 if (ref $dataPt eq "HASH")
1050 0 0 if ($tag =~ /^[A-Z]{2}RMC$/) { }
0 0 elsif ($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 elsif ($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 elsif ($tag eq 'GS' and $dat =~ /:([-+]?\d+),([-+]?\d+),([-+]?\d+)/) { }
0 0 elsif ($tag eq 'BEGINGSENSOR' and $dat =~ /^:([-+]\d+\.\d+):([-+]\d+\.\d+):([-+]\d+\.\d+)/) { }
0 0 elsif ($tag eq 'TIME' and $dat =~ /^:(\d+)/) { }
0 0 elsif ($tag eq 'BEGIN') { }
0 0 elsif ($tag ne 'END' and not $handled) { }
1051 0 0 unless ($dat =~ /^,(\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+)/)
1052 0 0 defined $tags{'Text'} ? :
0 0 unless $handled
1053 0 0 if $dat =~ /^,\d+\.?\d*,V,/
1058 0 0 $14 >= 70 ? :
1062 0 0 $6 eq 'N' ? :
1063 0 0 $9 eq 'E' ? :
1064 0 0 if length $10
1065 0 0 if length $11
1070 0 0 $6 eq 'N' ? :
1071 0 0 $9 eq 'E' ? :
1072 0 0 if defined $10
1073 0 0 if defined $11
1074 0 0 if defined $12
1078 0 0 $5 eq 'S' ? :
1079 0 0 $7 eq 'W' ? :
1090 0 0 if length $dat
1093 0 0 defined $tags{'Text'} ? :
1096 0 0 if (%tags)
1097 0 0 unless ($tags{'Accelerometer'})
1105 0 0 if ($$dataPt =~ /^\0{4}(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\0\0.{2}/s)
1108 0 0 if ($num and $num * 12 + 22 < length $$dataPt)
1111 0 0 if $_ >= 32768
1116 0 0 if ($tags{'GPSTimeStamp'} and not $tags{'GPSDateTime'} and $et->{'LastDate'})
1157 0 0 if ($$dataPt =~ /^\0\0(..\xaa\xaa|\xf2\xe1\xf0\xee)/s and length $$dataPt >= 282)
1159 0 0 if ($val =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/)
1162 0 0 if ($val =~ /^([NS])(\d{2})(\d+$)$/)
1163 0 0 $1 eq 'S' ? :
1166 0 0 if ($val =~ /^([EW])(\d{3})(\d+$)$/)
1167 0 0 $1 eq 'W' ? :
1170 0 0 if $val =~ /^[-+]\d+$/
1172 0 0 if $val =~ /^\d+$/
1173 0 0 if ($$dataPt =~ /^\0\0..\xaa\xaa/s) { }
1176 0 0 if ($val =~ /^([-+]\d{3})([-+]\d{3})([-+]\d{3})$/)
1189 0 0 if @acc
1192 0 0 if %tags
1198 0 0 if ($$dataPt =~ /GPS \(([-+]?\d*\.\d+),\s*([-+]?\d*\.\d+)/)
1202 0 0 if $$dataPt =~ /,\s*H\s+([-+]?\d+\.?\d*)m/
1203 0 0 if $$dataPt =~ /,\s*H.S\s+([-+]?\d+\.?\d*)/
1204 0 0 if $$dataPt =~ /,\s*D\s+(\d+\.?\d*)m/
1205 0 0 if $$dataPt =~ /,\s*V.S\s+([-+]?\d+\.?\d*)/
1206 0 0 if $$dataPt =~ m[\bF/(\d+\.?\d*)]
1207 0 0 if $$dataPt =~ /\bSS\s+(\d+\.?\d*)/
1208 0 0 if $$dataPt =~ m[\bEV\s+([-+]?\d+\.?\d*)(/\d+)?]
1209 0 0 if $$dataPt =~ /\bISO\s+(\d+\.?\d*)/
1216 0 0 if ($$dataPt =~ /^A,(\d{2})(\d{2})(\d{2}),(\d{2})(\d{2})(\d{2}(\.\d+)?)/)
1218 0 0 if ($$dataPt =~ /^A,.*?,.*?,(\d{2})(\d+\.\d+),([NS])/)
1219 0 0 $3 eq 'S' ? :
1221 0 0 if ($$dataPt =~ /^A,.*?,.*?,.*?,.*?,(\d{3})(\d+\.\d+),([EW])/)
1222 0 0 $3 eq 'W' ? :
1225 0 0 if $a[8] and $a[8] =~ s/M$//
1226 0 0 if $a[7] and $a[7] =~ /^\d+\.\d+$/
1227 0 0 if $a[11] and $a[11] =~ s/;\s*$//
1237 0 0 if ($$dataPt =~ /\*[0-9A-F]{2}~$/)
1243 0 0 if $n >= 0 and defined $decode[$n]
1246 0 0 if ($buff =~ /X(.*?)Y(.*?)Z(.*?)G(.*?)\$/)
1256 0 0 if ($$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)
1260 0 0 $15 >= 70 ? :
1262 0 0 $7 eq 'N' ? :
1263 0 0 $10 eq 'E' ? :
1264 0 0 if length $11
1265 0 0 if length $12
1267 0 0 if $$dataPt =~ /\bgsensori,(.*?)(;|$)/
1268 0 0 if $$dataPt =~ /\bCAR,(.*?)(;|$)/
1270 0 0 if (%tags) { }
1275 0 0 if $et->{'UnknownTextCount'} > 100
1293 0 16 unless $ee
1298 12 4 if ($type eq 'vide') { }
0 4 elsif ($type eq 'soun') { }
1303 12 0 if ($eeOpt)
1304 0 12 if ($ee->{'avcC'}) { }
4 8 elsif ($ee->{'JPEG'}) { }
1306 8 0 unless $hash
1310 0 0 unless $hash
1312 0 4 unless $eeOpt
1321 8 0 unless ($start and $size)
1322 0 8 unless $size
1324 0 8 unless $stco and $stsc and @$stsc
1328 8 0 if ($stts and @$stts > 1)
1336 8 0 if ($iChunk >= $nextChunk and @$stsc)
1338 0 8 if @$stsc
1340 0 8 if @$size < @$start + $samplesPerChunk
1341 0 8 unless defined $chunkStart and length $chunkStart
1346 8 0 if (defined $time)
1348 0 0 if (@$stts < 2)
1362 8 0 if ++$i >= $samplesPerChunk
1368 0 8 unless @$start == @$size
1370 0 8 if ($type eq "soun" or $type eq "vide")
1383 0 8 if ($verbose)
1388 0 8 if ($hash)
1390 0 0 if defined $mdatSize
1393 0 8 if ($type eq "avcC")
1395 0 0 $hdrLen == 2 ? :
0 0 $hdrLen == 4 ? :
1408 0 8 if (defined $mdatOffset)
1409 0 0 if ($start->[$i] < $mdatOffset) { }
0 0 elsif ($start->[$i] + $size > $mdatOffset + $mdatSize) { }
1414 0 0 if $size < 0
1418 0 8 unless $raf->Seek($start->[$i], 0)
1421 0 8 unless ($n == $size)
1423 0 0 unless $n
1426 0 8 if ($hash)
1430 0 8 if ($type eq "avcC")
1431 0 0 if length $buff <= $hdrLen
1435 0 0 if $pos + $hdrLen + $len > length $buff
1439 0 0 if $pos + $hdrLen >= length $buff
1441 0 0 if $et->{'GotNAL06'} and $eeOpt < 3
1444 0 8 if ($verbose > 1)
1445 0 0 $et->{'SET_GROUP1'} ? :
1449 0 8 if ($type eq 'text' or $type eq 'sbtl' and $metaFormat eq 'tx3g' and $buff =~ /^..PNDM/s) { }
4 4 elsif ($processByMetaFormat{$type}) { }
0 4 elsif ($type eq 'gps ') { }
4 0 elsif ($tagTbl->{$type}) { }
1456 0 0 unless ($buff =~ /^\$BEGIN/)
1458 0 0 if $buff =~ s/\0\0\0\x0cencd\0\0\x01\0$//
1462 0 0 if ($size >= 2 and unpack("n", $buff) == $size - 2)
1463 0 0 if $size == 2
1468 0 0 if ($buff =~ /^\0/ and $buff =~ /\x0a$/ and length $buff > 5) { }
0 0 elsif ($buff =~ /^(\0.{3})?PNDM/s) { }
1473 0 0 if ($verbose > 2)
1477 0 0 if ($tmp =~ /^(.*?)(\$[A-Z]{2}RMC.*)/s)
1480 0 0 if length $val
1484 0 0 $1 ? :
1485 0 0 if length $buff < 20 + $n
1492 0 0 unless (defined $val or $buff =~ /\0[^\0]/)
1502 4 0 if ($tagTbl->{$metaFormat}) { }
0 0 elsif ($verbose) { }
1504 4 0 if ($tagInfo and !$tagInfo->{'Unknown'} || $et->{'OPTIONS'}{'Unknown'} >= $tagInfo->{'Unknown'}) { }
0 0 elsif ($metaFormat eq 'camm' and $buff =~ /^X/) { }
1514 0 4 if ($metaFormat eq "djmd")
1515 0 0 if (defined $et->{'GPSLatitude'} and defined $et->{'GPSLongitude'} and not $et->{'GPSDateTime'})
1526 0 0 if $buff =~ /X(.*?)Y(.*?)Z(.*?)G(.*?)\$/
1535 0 0 if ($buff =~ /^....freeGPS /s)
1539 0 0 if $et->{'FoundGPSByScan'}
1552 4 0 if ($tagInfo)
1562 0 8 if $et->{'FoundGPSLatitude'} and not $et->{'FoundGPSDateTime'}
1564 0 8 if ($verbose)
1565 0 0 $type eq 'soun' ? :
1566 0 0 if $hashSize
1627 0 0 if $dirLen < 82
1634 0 0 if (substr($$dataPt, 18, 8) eq "\252\252\362\341\360\356TT") { }
0 0 elsif ($$dataPt =~ /^.{52}(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/s) { }
0 0 elsif ($$dataPt =~ /^.{37}\0\0\0A([NS])([EW])\0/s) { }
0 0 elsif ($$dataPt =~ /^(.{16}|.{48}|.{80})LIGOGPSINFO\0/s and length $$dataPt >= length($1) + 132) { }
0 0 elsif ($$dataPt =~ /^.{60}A\0{3}.{4}([NS])\0{3}.{4}([EW])\0{3}/s) { }
0 0 elsif ($$dataPt =~ /^.{60}4W`b]S= 140) { }
0 0 elsif ($$dataPt =~ /^.{64}[\x01-\x0c]\0{3}[\x01-\x1f]\0{3}A[NS][EW]\0{5}/s) { }
0 0 elsif ($$dataPt =~ /^.{12}\xac\0\0\0.{44}(.{72})/s) { }
0 0 elsif ($$dataPt =~ /^.{64}A([NS])([EW])\0/s) { }
0 0 elsif (substr($$dataPt, 69, 3) eq 'ATC') { }
0 0 elsif ($$dataPt =~ /^.{60}A\0.{10}([NS])\0.{14}([EW])\0/s and $dirLen >= 136) { }
0 0 elsif ($$dataPt =~ /^.{16}A([NS])([EW])\0/s) { }
0 0 elsif ($$dataPt =~ /^.{20}[\0-\x18][\0-\x3b]{2}[\0-\x09]A([NS])([EW])/s) { }
0 0 elsif ($$dataPt =~ /^.{28}A.{11}([NS]).{15}([EW])/s) { }
0 0 elsif ($$dataPt =~ /^.{72}A[NS][EW]\0/s) { }
0 0 elsif ($$dataPt =~ m[^.{23}(\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):(\d{2}) [N|S]]s) { }
0 0 elsif ($$dataPt =~ /^.{30}A.{20}VV/) { }
1636 0 0 if $debug
1665 0 0 if $n > 257
1667 0 0 if ($et->Options("Verbose") > 1)
1672 0 0 if ($buf2 =~ /^.{8}(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}).(.{15})([NS])(\d{8})([EW])(\d{9})(\d{8})?/s)
1674 0 0 if (defined $spd) { }
0 0 elsif ($buf2 =~ /^.{57}([-+]\d{4})(\d{3})/s) { }
1682 0 0 if ($buf2 =~ /^.{65}(([-+]\d{3})([-+]\d{3})([-+]\d{3})([-+]\d{3})*)/s) { }
0 0 elsif ($buf2 =~ /^.{173}([-+]\d{3})([-+]\d{3})([-+]\d{3})/s) { }
1690 0 0 if (not defined $yr and $buf2 =~ /^.{8}(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}).(.{15})/s)
1694 0 0 if (defined $lbl)
1696 0 0 if length $lbl
1701 0 0 if $debug
1715 0 0 if ($$dataPt =~ /\$[A-Z]{2}RMC,(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d+\.\d+),([NS]),(\d+\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/s)
1717 0 0 $13 >= 70 ? :
1719 0 0 if length $9
1720 0 0 if length $10
1722 0 0 if ($$dataPt =~ /\$[A-Z]{2}GGA,(\d{2})(\d{2})(\d+(\.\d*)?),(\d+\.\d+),([NS]),(\d+\.\d+),([EW]),[1-6]?,(\d+)?,(\.\d+|\d+\.?\d*)?,(-?\d+\.?\d*)?,M?/s)
1723 0 0 unless defined $yr
1728 0 0 if (defined $lat)
1740 0 0 if (length $$dataPt < 120) { }
1748 0 0 if ($notEnc and $notStr) { }
1750 0 0 if $debug
1756 0 0 if ($yr >= 2000)
1772 0 0 if ($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")
1778 0 0 if $debug
1794 0 0 if ($notEnc) { }
1804 0 0 if $i
1805 0 0 unless ($lat = &DecryptLucky($lt, $key)) =~ /^\d{1,4}\.\d+$/
1806 0 0 unless ($lon = &DecryptLucky($ln, $key)) =~ /^\d{1,5}\.\d+$/
1809 0 0 unless $lon
1815 0 0 if $debug
1856 0 0 if $pos == 16 and $$dataPt =~ /^.{12}\xf0\x03\0\0.{16}\0{4}/s
1878 0 0 if $debug
1902 0 0 if (substr($$dataPt, 16, 4) eq 'x.xx') { }
1904 0 0 if $trk >= 360
1912 0 0 if $debug
1921 0 0 if $_ >= 16
1922 0 0 if (/[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+)/) { }
1924 0 0 $yr >= 70 ? :
1925 0 0 if length $9
1926 0 0 if length $10
1933 0 0 if $debug
1970 0 0 if $debug
1993 0 0 if $debug
2005 0 0 if ($mon >= 1 and $mon <= 12 and $day >= 1 and $day <= 31) { }
2019 0 0 if $debug
2033 0 0 unless $then
2059 0 0 if $now[$i] <= $dateMax[$i]
2065 0 0 if ($now[$i] < $then->[$i])
2066 0 0 if $foundNew
2069 0 0 if $now[$i] == $then->[$i]
2071 0 0 if ($verbose)
2106 0 0 if $trk < 0
2123 0 0 if $recentRecPos and $recPos < $recentRecPos
2131 0 0 if $debug
2162 0 0 if $debug
2178 0 0 substr($dat, 1, 1) eq 'S' ? :
2179 0 0 substr($dat, 2, 1) eq 'W' ? :
2188 0 0 if $debug
2204 0 0 $latRef eq 'S' ? :
2205 0 0 $lonRef eq 'W' ? :
2212 0 0 if $debug
2268 0 0 if (substr($$dataPt, 16, 3) eq 'IQS') { }
2269 0 0 if $debug
2293 0 0 if ($et->{'KodakVersion'} and $et->{'KodakVersion'} eq '3.01.054') { }
0 0 elsif (&Get32u($dataPt, 0) == 4194304 and abs $lat <= 90 and abs $lon <= 180) { }
2294 0 0 if $debug
2299 0 0 if $debug
2310 0 0 if $debug
2313 0 0 if ($dirLen >= 176)
2317 0 0 if (abs $lat2 - $lat < "0.001" and abs $lon2 - $lon < "0.001")
2326 0 0 if $debug
2341 0 0 unless (/^([A-Z]):([-+]?\d+(\.\d+)?)$/i)
2343 0 0 if defined $lon and not defined $spd and /^\d+\.\d+$/
2346 0 0 if $1 eq "N" or $1 eq "S"
2347 0 0 if $1 eq "E" or $1 eq "W"
2348 0 0 if $1 eq "x" or $1 eq "y" or $1 eq "z"
2349 0 0 if $1 eq "A"
2352 0 0 unless $tagTbl->{$1}
2358 0 0 if $debug
2375 0 0 if $debug
2403 0 0 if $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
2409 0 0 if $trk >= 32768
2411 0 0 if $trk < 0
2419 0 0 if $pos += 32 > length($$dataPt) - 30
2424 0 0 $et->{'DOC_NUM'} ? :
0 0 if $done
2425 0 0 if defined $yr and $mon < 1 || $mon > 12
2430 0 0 if defined $sec and not $sec =~ /^\d{2}/
2431 0 0 if (defined $yr) { }
0 0 elsif (defined $hr) { }
2432 0 0 if $yr < 2000
2439 0 0 if (defined $lat and defined $lon)
2441 0 0 unless $ddd
2442 0 0 $latRef && $latRef eq 'S' ? :
2443 0 0 $lonRef && $lonRef eq 'W' ? :
2445 0 0 if defined $alt
2446 0 0 if defined $spd
2447 0 0 if defined $trk
2452 0 0 if @acc
2465 16 52 if ($tag eq 'stsz' or $tag eq 'stz2' and $dataLen > 12) { }
16 36 elsif ($tag eq 'stco' or $tag eq 'co64' and $dataLen > 8) { }
16 20 elsif ($tag eq 'stsc' and $dataLen > 8) { }
16 4 elsif ($tag eq 'stts' and $dataLen > 8) { }
0 4 elsif ($tag eq 'avcC') { }
4 0 elsif ($tag eq 'JPEG') { }
0 0 elsif ($tag eq 'gps ' and $dataLen > 8) { }
0 0 elsif ($tag eq 'GPS ') { }
2469 16 0 if ($tag eq 'stsz') { }
2470 0 16 if ($sz == 0) { }
2477 0 0 if ($sz == 4) { }
0 0 elsif ($sz == 8 or $sz == 16) { }
2491 0 16 $tag eq 'stco' ? :
2495 16 0 if ($dataLen >= 8 + $num * 12)
2506 16 0 if ($dataLen >= 8 + $num * 8)
2511 0 0 if $dataLen >= 7
2517 0 0 if $num * 8 + 8 > $dataLen
2533 0 0 if $dat eq "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
2541 0 0 if $a[4] eq "S"
2542 0 0 if $a[6] eq "W"
2561 0 0 if length $$dataPt < 2
2565 0 0 if ($text =~ /^HOME\(/) { }
0 0 elsif ($text =~ /^\w{3} (\d{4})-(\d{2})-(\d{2}) (\d{2}:\d{2}:\d{2}) ?([-+])(\d{2}):?(\d{2})$/s) { }
2573 0 0 if ($line =~ /^HOME\(([EW]):\s*(\d+\.\d+),\s*([NS]):\s*(\d+\.\d+)\)\s*(.*)/) { }
0 0 elsif ($line =~ /^GPS\(([EW]):\s*(\d+\.\d+),\s*([NS]):\s*(\d+\.\d+),\s*(.*)m/) { }
0 0 elsif ($line =~ /^F\.PRY\s*\((-?[\d.]+)\xc2\xb0,\s*(-?[\d.]+)\xc2\xb0,\s*(-?[\d.]+)\xc2\xb0/) { }
2575 0 0 if $1 eq "W"
2576 0 0 if $3 eq "S"
2583 0 0 if $1 eq "W"
2584 0 0 if $3 eq "S"
2592 0 0 if ($line =~ /G\.PRY\s*\((-?[\d.]+)\xc2\xb0,\s*(-?[\d.]+)\xc2\xb0,\s*(-?[\d.]+)\xc2\xb0/)
2617 0 0 unless my $ee = $et->{'ee'}
2618 0 0 unless $ee->{'keys'}
2626 0 0 if $len < 8 or $pos + $len > length $$dataPt
2629 0 0 if ($info) { }
2631 0 0 unless ($tagTbl->{$tag})
2632 0 0 unless $tag =~ /^[-\w.]+$/
2663 0 0 if ($dirLen > $recLen and not $et->Options("ExtractEmbedded"))
2671 0 0 if $tc == 4294967295
2694 0 0 if ($$dataPt =~ /^.{2}\xf2\xe1\xf0\xeeTT\x98/s)
2698 0 0 unless $dat =~ /^.{2}\xf2\xe1\xf0\xeeTT\x98/s
2708 0 0 if ($dirLen > $recLen and not $et->Options("ExtractEmbedded"))
2717 0 0 if abs $lat > 9000 or abs $lon > 18000
2746 0 0 if ($dirLen > $recLen and not $et->Options("ExtractEmbedded"))
2768 0 0 unless ($et->{'OPTIONS'}{'ExtractEmbedded'})
2778 0 0 unless my $info = $dbase{'*'}
2779 0 0 if $info->{'cameraModel'}
2780 0 0 unless my $gps = $info->{'gpsData'}
2781 0 0 unless ref $gps eq "ARRAY"
2783 0 0 unless ref $fix eq "HASH" and $fix->{'gpsStatus'} and $fix->{'gpsStatus'} eq "A"
2785 0 0 if ($fix->{'datetime'})
2789 0 0 if defined $fix->{'lat'}
2790 0 0 if defined $fix->{'lon'}
2791 0 0 if defined $fix->{'speed'}
2792 0 0 if defined $fix->{'bearing'}
2793 0 0 if (defined $fix->{'xAcc'} and defined $fix->{'yAcc'} and defined $fix->{'zAcc'})
2809 0 0 if ($et->{'OPTIONS'}{'ExtractEmbedded'}) { }
2844 0 0 unless $dat =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})./gs
2847 0 0 unless $dat =~ /\G(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})./gs
2848 0 0 unless $dat =~ /\G([NS])(\d+)([EW])(\d+)/g
2853 0 0 $1 eq 'S' ? :
2854 0 0 $3 eq 'W' ? :
2855 0 0 unless $dat =~ /\G([-+]\d{4})(\d+)/g
2862 0 0 if @acc
2863 0 0 unless ($et->Options("ExtractEmbedded"))
2887 0 0 unless $raf->Read($buff, 8) == 8
2889 0 0 if $tag eq "\0\0\0\0"
2890 0 0 unless ($tag =~ /^[\w ]{4}/ and $len < 33554432)
2894 0 0 unless $raf->Read($buff, $len) == $len
2895 0 0 if ($verbose)
2897 0 0 if $verbose > 2
2899 0 0 if $tag =~ /^(gps0|gsen)$/
2901 0 0 if ($tag eq 'gps0') { }
0 0 elsif ($tag eq 'gsen') { }
2919 0 0 unless substr($buff, $pos, 4) eq "AITG"
2924 0 0 if abs $lat > 9000 or abs $lon > 18000
2926 0 0 if &Get8u(\$buff, $pos + 33) == 2
2927 0 0 if &Get8u(\$buff, $pos + 34) == 2
2946 0 0 unless substr($buff, $pos, 4) eq "AITS"
2957 0 0 if $verbose
2984 0 0 unless $raf->Read($buff, 14) and $buff eq "CCCCCCCCCCCCCC"
2986 0 0 unless ($et->{'OPTIONS'}{'ExtractEmbedded'})
2997 0 0 if $tag eq "unk"
2999 0 0 if $val =~ s/^([NSEW])//
3000 0 0 unless $val =~ /^[-+]?\d+\.\d+$/
3001 0 0 if $tag eq "acc"
3002 0 0 if $hemi and $hemi eq 'S' || $hemi eq 'W'
3005 0 0 if @acc == 3
3023 0 0 if ($$dataPt =~ /(?:\[(\d+)\])?\$[A-Z]{2}(RMC|GGA),(\d{2}\d{2}\d+(\.\d*)?),/g)
3028 0 0 if ($fix{'tim'} and !$tim || $fix{'tim'} != $tim)
3029 0 0 if ($fix{'dat'} and defined $fix{'lat'} and defined $fix{'lon'})
3031 0 0 if $fix{'tc'} and $et->{'StartTime'}
3036 0 0 if defined $fix{'spd'}
3037 0 0 if defined $fix{'trk'}
3038 0 0 if defined $fix{'alt'}
3039 0 0 if defined $fix{'nsats'}
3040 0 0 if defined $fix{'hdop'}
3044 0 0 unless $fix{'tim'} = $tim
3048 0 0 if ($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 elsif ($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) { }
3051 0 0 $15 >= 70 ? :
3054 0 0 $7 eq 'N' ? :
3055 0 0 $10 eq 'E' ? :
3056 0 0 if length $11
3057 0 0 if length $12
3061 0 0 $7 eq 'N' ? :
3062 0 0 $10 eq 'E' ? :
3083 0 0 if &ProcessNMEA($et, $dirInfo, $tagTbl)
3093 0 0 $7 eq 'S' ? :
3094 0 0 $9 eq 'W' ? :
3095 0 0 if length $11
3096 0 0 if length $12
3097 0 0 if length $13
3098 0 0 if length $14
3099 0 0 if length $15
3126 0 0 if $dirLen < $pos
3143 0 0 if ($resync and $type != 255)
3144 0 0 if ++$skipped > 256
3147 0 0 unless ($ttLen{$type})
3149 0 0 unless $warned
3154 0 0 if $pos + $ttLen{$type} > $dirLen
3155 0 0 if ($type == 255)
3158 0 0 if ($resync)
3159 0 0 if ($tm < $sampleTime or $tm > $sampleTime + 250)
3170 0 0 unless ($eeOpt)
3172 0 0 if $found & 1 << $type
3175 0 0 if ($type == 0 or $type == 3) { }
0 0 elsif ($type == 5) { }
0 0 elsif ($type < 3) { }
3179 0 0 $type ? :
3195 0 0 if ($unknown)
3203 0 0 if ($unknown)
3205 0 0 $type == 1 ? :
3213 0 0 unless $eeOpt or ($found & 41) != 41
3233 0 0 $dirInfo ? :
3236 0 0 if ($dirInfo and $dirInfo->{'DirEnd'})
3240 0 0 unless $raf->Seek(-78 - $offset, 2) and $raf->Read($buff, 78) == 78 and substr($buff, -32) eq "8db42d694ccc418790edff439fe026bf"
3247 0 0 if $trailerLen > $trailEnd
3248 0 0 if ($dirInfo)
3251 0 0 if ($dirInfo->{'OutFile'})
3252 0 0 if ($et->{'DEL_GROUP'}{'Insta360'}) { }
0 0 elsif ($trailerLen > $trailEnd or not $raf->Seek($dirInfo->{'DataPos'}, 0) or $raf->Read(${$$dirInfo{'OutFile'};}, $trailerLen) != $trailerLen) { }
3264 0 0 if $verbose or $et->{'HTML_DUMP'}
3266 0 0 unless ($et->Options("ExtractEmbedded"))
3282 0 0 if ($epos -= $len) + $trailerLen < 0
3283 0 0 unless $raf->Seek($epos - $offset, 2)
3284 0 0 if ($verbose)
3297 0 0 if (defined $dlen and not $dlen)
3298 0 0 if ($id == 768) { }
0 0 elsif ($id == 512) { }
3299 0 0 if ($len % 20 and not $len % 56) { }
0 0 elsif ($len % 56 and not $len % 20) { }
3304 0 0 if ($raf->Read($buff, 20) == 20)
3305 0 0 if (substr($buff, 16, 3) eq "\000\000\000") { }
3311 0 0 unless $raf->Seek($epos - $offset, 2)
3318 0 0 if ($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))
3323 0 0 unless $raf->Read($buff, $len) == $len
3324 0 0 if $verbose > 2
3325 0 0 if ($dlen) { }
0 0 elsif ($id == 257) { }
0 0 elsif ($id == 0) { }
3326 0 0 if ($len % $dlen and $id != 1792) { }
0 0 elsif ($id == 512) { }
0 0 elsif ($id == 768) { }
0 0 elsif ($id == 1024) { }
0 0 elsif ($id == 1536) { }
0 0 elsif ($id == 1792) { }
3334 0 0 if ($buff =~ /^\xff\xd8\xff/) { }
0 0 elsif ($buff =~ /^\x01\0\0\0(.{4})\x01/s and unpack('V', $1) == $dlen) { }
3346 0 0 if ($dlen == 56) { }
3371 0 0 unless ($a[5] eq 'N' || $a[5] eq 'S' and $a[7] eq 'E' || $a[7] eq 'W' || $a[7] eq 'O')
3377 0 0 if $a[3] eq "V"
3381 0 0 unless $a[3] eq "A"
3384 0 0 if $a[5] eq "S"
3385 0 0 if $a[7] ne "E"
3387 0 0 if $a[2]
3394 0 0 if $unknown
3400 0 0 if $p + 2 > $len
3402 0 0 if $p + 2 + $n > $len
3408 0 0 unless $len
3419 0 0 unless ($dirTable)
3425 0 0 if ($dirTable) { }
3428 0 0 if $dirTablePos + 10 > length $dirTable
3431 0 0 if ($id and $siz and $off + $siz < $trailerLen)
3436 0 0 unless defined $epos
3438 0 0 if ($epos -= 6) + $trailerLen < 0
3440 0 0 unless $raf->Seek($epos - $offset, 2)
3441 0 0 unless $raf->Read($buff, 6) == 6
3465 0 0 unless my $size = $size{$type}
3466 0 0 if $pos + $size > $end
3470 0 0 if $et->ProcessBinaryData($dirInfo, $tagTbl)
3502 0 0 if ($lat != '-2147483648' or $lon != '-2147483648')
3531 0 0 if ($tagTbl->{$type})
3532 0 0 if ($time != $lastTime)
3539 0 0 if $type == 5
3554 0 0 unless $$dataPt =~ /^FMAS\0\0\0\0.{72}SAMM.{36}A/s and length $$dataPt >= 160
3572 0 0 $a[9] eq 'S' ? :
3573 0 0 $a[8] eq 'W' ? :
3589 0 0 if length $$dataPt < 248
3654 0 4 unless my $raf = $et->{'RAF'}
3659 0 4 if $et->{'FoundEmbedded'} or not $dataPos
3663 0 4 if ($ee > 2) { }
3669 0 4 unless $dataLen and $raf->Seek($dataPos)
3674 8 4 if $n + $pos > $dataLen
3675 4 8 unless $n > length $buf2 and $raf->Read($buff, $n - length($buf2))
3676 4 4 if length $buf2
3680 8 0 if (not $buff =~ /(\0..\0freeGPS |GP\x06\0\0)/gs) { }
0 0 elsif ($1 eq "GP\cF\000\000") { }
3685 8 0 if $found or $pos < 20000000 or $ee > 1
3692 0 0 unless $raf->Seek($start)
3693 0 0 unless (defined $found)
3702 0 0 if ($size) { }
3703 0 0 unless ($found)
3706 0 0 if $raf->Seek(0, 2)
3709 0 0 unless $raf->Seek($start + $size)
3714 0 0 unless $raf->Seek($filePos)
3720 0 0 if length $buff < $gpsBlockSize
3721 0 0 unless ($tagTbl)
3729 0 0 if (pos $buff > 12)
3735 0 0 if ($len < 12) { }
3739 0 0 if ($more > 0)
3740 0 0 unless $raf->Read($buf2, $more) == $more
3743 0 0 if ($verbose)
3754 0 4 if ($found)