exiftool_vendored 11.44.0 → 11.47.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8821d7513aaf314f339b7a91ac998b1899cfa3a3
4
- data.tar.gz: c460b841e3635d239c4f729c80d35189735f10d2
3
+ metadata.gz: 04eb85989f4a38928c79a180c772d512edf2b8c9
4
+ data.tar.gz: 9835759f399b1a7beecad1c210026b90126ed996
5
5
  SHA512:
6
- metadata.gz: 7977e9ee35fd78efaf300f0c62c3ed916bb9be1e2fb5b79d453675677c1f04f5a9d80b4bc0469be95fda9bc8d30b6c2592613341b72aba976539f2471717bcc4
7
- data.tar.gz: 13b09672b1bb4ee71951b5e9fb64170589f4fea3b5ad3fee065d92973ab25f002917eaddafd8c223ba45a31c9f822b7d52dce211b986cc314045b4c3293e2c99
6
+ metadata.gz: 79945cb02e7f1a35e654fce3540c6f0039f191e447d9437ac1e783639adb0fb89488ab3d23e1a72e077b1b1b30af68e9c3113c09e5fbf4dc75cd0762c4576814
7
+ data.tar.gz: c1dca4b4c42f8d18c98d7069488a616f8e4a14cb7375317ae2880ba7dbbe2de9108c2de02d25ae7809a09f356dba5615d501de1938e4441cc4c88040861c54f0
@@ -7,6 +7,43 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
7
7
  Note: The most recent production release is Version 11.30. (Other versions are
8
8
  considered development releases, and are not uploaded to CPAN.)
9
9
 
10
+ May 31, 2019 - Version 11.47
11
+
12
+ - Fixed problem which resulted in a warning for one of the CanonVRD tests on
13
+ some platforms
14
+
15
+ May 31, 2019 - Version 11.46 - "CR3 update"
16
+
17
+ - Added ability to write CanonVRD tags in CR3 images
18
+ - Decode a couple more tags from Canon CR3 images
19
+ - Enhanced Validate option to check for duplicate QuickTime atoms
20
+ - Relaxed contraints when writing IPTC date tags to allow use of separators
21
+ other than a colon
22
+ - Fixed CR3 writing to update CTBO table with any changed offsets or sizes
23
+ (although this table doesn't seem to be used by any RAW viewer, it may be
24
+ used in-camera to improve response time when browsing images)
25
+
26
+ May 29, 2019 - Version 11.45
27
+
28
+ - CORRUPTION WARNING: Patched problem where Canon DPP would destroy a CR3
29
+ image if the file had previously been edited by DPP then Exiftool
30
+ (If you have edited any CR3 images with ExifTool that had been previously
31
+ edited by DPP, then re-edit with ExifTool 11.45 or later to restructure the
32
+ file so DPP doesn't destroy it if used to edit the file later)
33
+ - Added ability to create and delete QuickTime Keys tags
34
+ - Added sample config file (mini0806.config) to generate GPS tags from
35
+ subtitle Text in Mini 0806 dashcam videos
36
+ - Added new Canon and Nikon lenses (thanks LibRaw)
37
+ - Added a new Olympus CameraType (thanks LibRaw)
38
+ - Decode CanonVRD tags from CR3 images
39
+ - Improved handling of QuickTime language tags when writing
40
+ - Fixed bug introduced in 11.38 which could cause "Use of uninitialized value"
41
+ runtime warning when reading XMP GPS tags
42
+ - Fixed bug where QuickTime tags could be written when another group was
43
+ specified
44
+ - API Changes:
45
+ - Added QuickTimeHandler option
46
+
10
47
  May 21, 2019 - Version 11.44
11
48
 
12
49
  - Added ability to extract XMP as a block from XMP files
@@ -22,6 +22,7 @@ config_files/dji.config
22
22
  config_files/example.config
23
23
  config_files/fotoware.config
24
24
  config_files/gps2utm.config
25
+ config_files/mini0806.config
25
26
  config_files/nksc.config
26
27
  config_files/photoshop_paths.config
27
28
  config_files/picasa_faces.config
@@ -444,6 +445,8 @@ t/CanonVRD_19.out
444
445
  t/CanonVRD_2.out
445
446
  t/CanonVRD_20.out
446
447
  t/CanonVRD_21.out
448
+ t/CanonVRD_22.out
449
+ t/CanonVRD_24.out
447
450
  t/CanonVRD_3.out
448
451
  t/CanonVRD_4.out
449
452
  t/CanonVRD_5.out
@@ -736,6 +739,7 @@ t/QuickTime.t
736
739
  t/QuickTime_10.out
737
740
  t/QuickTime_11.out
738
741
  t/QuickTime_12.out
742
+ t/QuickTime_13.out
739
743
  t/QuickTime_2.out
740
744
  t/QuickTime_3.out
741
745
  t/QuickTime_4.out
@@ -47,5 +47,5 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "11.44"
50
+ "version" : "11.47"
51
51
  }
@@ -28,4 +28,4 @@ recommends:
28
28
  Time::HiRes: 0
29
29
  requires:
30
30
  perl: 5.004
31
- version: 11.44
31
+ version: 11.47
data/bin/README CHANGED
@@ -104,8 +104,8 @@ your home directory, then you would type the following commands in a
104
104
  terminal window to extract and run ExifTool:
105
105
 
106
106
  cd ~/Desktop
107
- gzip -dc Image-ExifTool-11.44.tar.gz | tar -xf -
108
- cd Image-ExifTool-11.44
107
+ gzip -dc Image-ExifTool-11.47.tar.gz | tar -xf -
108
+ cd Image-ExifTool-11.47
109
109
  ./exiftool t/images/ExifTool.jpg
110
110
 
111
111
  Note: These commands extract meta information from one of the test images.
@@ -195,6 +195,7 @@ distribution package:
195
195
  example.config - General example showing config features
196
196
  fotoware.config - Definitions for writing Fotoware XMP tags
197
197
  gps2utm.config - Generate UTM coordinate tags from GPS info
198
+ mini0806.config - Composite tags for GPS in Mini 0806 videos
198
199
  nksc.config - Decode tags in Nikon ViewNX NKSC files
199
200
  photoshop_paths.config - For extracting or copying Photoshop paths
200
201
  picasa_faces.config - Convert from Picasa to MWG/MP face regions
@@ -344,6 +344,11 @@ use Image::ExifTool::MIE;
344
344
  TTT => 'JPEG',
345
345
  );
346
346
 
347
+ # Change default location for writing QuickTime tags so Keys is preferred
348
+ # (by default, the PREFERRED levels are: ItemList=2, UserData=1, Keys=0)
349
+ use Image::ExifTool::QuickTime;
350
+ $Image::ExifTool::QuickTime::Keys{PREFERRED} = 3;
351
+
347
352
  # Specify default ExifTool option values
348
353
  # (see the Options function documentation for available options)
349
354
  %Image::ExifTool::UserDefined::Options = (
@@ -0,0 +1,99 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: mini0806.config
3
+ #
4
+ # Description: This config file defines Composite tags to convert embedded
5
+ # metadata in Mini 0806 dashcam videos
6
+ #
7
+ # Usage: exiftool -config mini0806.config -ee FILE
8
+ #
9
+ # Example command to create .gpx log file from Mini 0806 video
10
+ # (requires gpx.fmt available in the full Exiftool distribution):
11
+ #
12
+ # exiftool -config mini0806.config -p gpx.fmt -ee FILE
13
+ #
14
+ # Requires: ExifTool version 10.75 or later
15
+ #
16
+ # Revisions: 2019/05/28 - P. Harvey Created
17
+ #------------------------------------------------------------------------------
18
+
19
+ %Image::ExifTool::UserDefined = (
20
+ 'Image::ExifTool::Composite' => {
21
+ GROUPS => { 2 => 'Location' },
22
+ #
23
+ # Example embedded "Text" from a Mini 0806 MOV video:
24
+ #
25
+ # "A,270519,201555.000,3356.8925,N,08420.2071,W,000.0,331.0M,+01.84,-09.80,-00.61;\n"
26
+ #
27
+ # Note: SubDoc flag is set for all these tags so they will be generated for
28
+ # all embedded documents
29
+ #
30
+ GPSDateTime => {
31
+ Description => 'GPS Date/Time',
32
+ Groups => { 2 => 'Time' },
33
+ SubDoc => 1,
34
+ Require => 'Text',
35
+ RawConv => q{
36
+ if ($val[0] =~ /^A,(\d{2})(\d{2})(\d{2}),(\d{2})(\d{2})(\d{2}(\.\d+)?)/) {
37
+ return "20$3:$2:$1 $4:$5:$6Z";
38
+ } else {
39
+ return undef;
40
+ }
41
+ },
42
+ PrintConv => '$self->ConvertDateTime($val)',
43
+ },
44
+ GPSLatitude => {
45
+ SubDoc => 1,
46
+ Require => 'Text',
47
+ RawConv => q{
48
+ if ($val[0] =~ /^A,.*?,.*?,(\d{2})(\d+\.\d+),([NS])/) {
49
+ return ($1 + $2/60) * ($3 eq 'S' ? -1 : 1);
50
+ } else {
51
+ return undef;
52
+ }
53
+ },
54
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
55
+ },
56
+ GPSLongitude => {
57
+ SubDoc => 1,
58
+ Require => 'Text',
59
+ RawConv => q{
60
+ if ($val[0] =~ /^A,.*?,.*?,.*?,.*?,(\d{3})(\d+\.\d+),([EW])/) {
61
+ return ($1 + $2/60) * ($3 eq 'W' ? -1 : 1);
62
+ } else {
63
+ return undef;
64
+ }
65
+ },
66
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
67
+ },
68
+ GPSAltitude => {
69
+ SubDoc => 1,
70
+ Require => 'Text',
71
+ RawConv => q{
72
+ my @a = split ',', $val[0];
73
+ return undef unless $a[0] eq 'A' and $a[8] =~ s/M$//;
74
+ return $a[8];
75
+ },
76
+ PrintConv => '"$val m"',
77
+ },
78
+ GPSSpeed => {
79
+ SubDoc => 1,
80
+ Require => 'Text',
81
+ RawConv => q{
82
+ my @a = split ',', $val[0];
83
+ return undef unless $a[0] eq 'A' and $a[7] =~ /^\d+\.\d+$/;
84
+ return $a[7]; # (NC)
85
+ },
86
+ },
87
+ Accelerometer => {
88
+ SubDoc => 1,
89
+ Require => 'Text',
90
+ RawConv => q{
91
+ my @a = split ',', $val[0];
92
+ return undef unless $a[11] =~ s/;\s*$//;
93
+ return "$a[9] $a[10] $a[11]";
94
+ },
95
+ },
96
+ },
97
+ );
98
+
99
+ 1; #end
@@ -12,7 +12,7 @@
12
12
  use strict;
13
13
  require 5.004;
14
14
 
15
- my $version = '11.44';
15
+ my $version = '11.47';
16
16
 
17
17
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
18
18
  my $exeDir;
@@ -5119,7 +5119,7 @@ with this command:
5119
5119
 
5120
5120
  produces output like this:
5121
5121
 
5122
- -- Generated by ExifTool 11.44 --
5122
+ -- Generated by ExifTool 11.47 --
5123
5123
  File: a.jpg - 2003:10:31 15:44:19
5124
5124
  (f/5.6, 1/60s, ISO 100)
5125
5125
  File: b.jpg - 2006:05:23 11:57:38
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
27
27
  %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
28
28
  %jpegMarker %specialTags %fileTypeLookup);
29
29
 
30
- $VERSION = '11.44';
30
+ $VERSION = '11.47';
31
31
  $RELEASE = '';
32
32
  @ISA = qw(Exporter);
33
33
  %EXPORT_TAGS = (
@@ -942,10 +942,12 @@ my %processType = map { $_ => 1 } qw(JPEG TIFF XMP AIFF EXE Font PS Real VCard);
942
942
  maccroatian => 'MacCroatian', cp10082 => 'MacCroatian',
943
943
  );
944
944
 
945
- # default group priority for writing
945
+ # default family 0 group priority for writing
946
946
  # (NOTE: tags in groups not specified here will not be written unless
947
947
  # overridden by the module or specified when writing)
948
- my @defaultWriteGroups = qw(EXIF IPTC XMP MakerNotes Photoshop ICC_Profile CanonVRD Adobe);
948
+ my @defaultWriteGroups = qw(
949
+ EXIF IPTC XMP MakerNotes QuickTime Photoshop ICC_Profile CanonVRD Adobe
950
+ );
949
951
 
950
952
  # group hash for ExifTool-generated tags
951
953
  my %allGroupsExifTool = ( 0 => 'ExifTool', 1 => 'ExifTool', 2 => 'ExifTool' );
@@ -2144,6 +2146,7 @@ sub ClearOptions($)
2144
2146
  Password => undef, # password for password-protected PDF documents
2145
2147
  PNGEarlyXMP => undef, # write XMP in PNG images before IDAT chunk
2146
2148
  PrintConv => 1, # flag to enable print conversion
2149
+ QuickTimeHandler => undef, # flag to add mdir Handler to newly created Meta box
2147
2150
  QuickTimeUTC=> undef, # assume that QuickTime date/time tags are stored as UTC
2148
2151
  RequestAll => undef, # extract all tags that must be specifically requested
2149
2152
  RequestTags => undef, # extra tags to request (on top of those in the tag list)
@@ -2961,6 +2964,7 @@ sub GetValue($$;$)
2961
2964
  my $oldFilter = $$self{OPTIONS}{Filter};
2962
2965
  delete $$self{OPTIONS}{Filter};
2963
2966
  foreach (keys %$val) {
2967
+ next unless defined $$val{$_};
2964
2968
  $raw[$_] = $$rawValue{$$val{$_}};
2965
2969
  ($val[$_], $prt[$_]) = $self->GetValue($$val{$_}, 'Both');
2966
2970
  next if defined $val[$_] or not $$tagInfo{Require}{$_};
@@ -3289,13 +3293,14 @@ sub SetNewGroups($;@)
3289
3293
  local $_;
3290
3294
  my ($self, @groups) = @_;
3291
3295
  @groups or @groups = @defaultWriteGroups;
3292
- my $count = @groups;
3296
+ my $count = @groups * 10;
3293
3297
  my %priority;
3294
3298
  foreach (@groups) {
3295
- $priority{lc($_)} = $count--;
3299
+ $priority{lc($_)} = $count;
3300
+ $count -= 10;
3296
3301
  }
3297
- $priority{file} = 10; # 'File' group is always written (Comment)
3298
- $priority{composite} = 10; # 'Composite' group is always written
3302
+ $priority{file} = 500; # 'File' group is always written (Comment)
3303
+ $priority{composite} = 500; # 'Composite' group is always written
3299
3304
  # set write priority (higher # is higher priority)
3300
3305
  $$self{WRITE_PRIORITY} = \%priority;
3301
3306
  $$self{WRITE_GROUPS} = \@groups;
@@ -814,6 +814,13 @@ a warning to be issued if standard XMP is found after the IDAT chunk.
814
814
  Flag to enable automatic print conversion. Also enables inverse
815
815
  print conversion for writing. Default is 1.
816
816
 
817
+ =item QuickTimeHandler
818
+
819
+ Flag set to add an 'mdir' Handler to a newly created Meta box when adding
820
+ QuickTime ItemList tags. Adobe Bridge does not add this Handler, but it is
821
+ commonly found in samples from other software, so it is possible that this
822
+ could affect the interoperability of ItemList tags. Default is undef.
823
+
817
824
  =item QuickTimeUTC
818
825
 
819
826
  Flag set to assume that QuickTime date/time values are stored as UTC,
@@ -1860,8 +1867,9 @@ Set the order of the preferred groups when adding new information. In
1860
1867
  subsequent calls to L</SetNewValue>, new information will be created in the
1861
1868
  first valid group of this list. This has an impact only if the group is not
1862
1869
  specified when calling L</SetNewValue> and if the tag name exists in more
1863
- than one group. The default order is EXIF, IPTC then XMP. Any family 0
1864
- group name may be used. Case is not significant.
1870
+ than one group. The default order is EXIF, IPTC, XMP, MakerNotes,
1871
+ QuickTime, Photoshop, ICC_Profile, CanonVRD, Adobe. Any family 0 group name
1872
+ may be used. Case is not significant.
1865
1873
 
1866
1874
  $exifTool->SetNewGroups('XMP','EXIF','IPTC');
1867
1875
 
@@ -67,6 +67,7 @@
67
67
  # 51) http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4110.0.html
68
68
  # 52) Kai Harrekilde-Petersen private communication
69
69
  # 53) Anton Reiser private communication
70
+ # 54) https://github.com/lclevy/canon_cr3
70
71
  # IB) Iliah Borg private communication (LibRaw)
71
72
  # JD) Jens Duttke private communication
72
73
  # JR) Jos Roost private communication
@@ -87,7 +88,7 @@ sub ProcessCTMD($$$);
87
88
  sub ProcessExifInfo($$$);
88
89
  sub SwapWords($);
89
90
 
90
- $VERSION = '4.12';
91
+ $VERSION = '4.14';
91
92
 
92
93
  # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
93
94
  # (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -427,7 +428,8 @@ $VERSION = '4.12';
427
428
  250 => 'Canon EF 24mm f/1.4L II USM or Sigma Lens', #41
428
429
  250.1 => 'Sigma 20mm f/1.4 DG HSM | A', #IB
429
430
  250.2 => 'Sigma 20mm f/1.5 FF High-Speed Prime | 017', #IB
430
- 251 => 'Canon EF 70-200mm f/2.8L IS II USM',
431
+ 250.3 => 'Tokina Opera 16-28mm f/2.8 FF', #IB
432
+ 251 => 'Canon EF 70-200mm f/2.8L IS II USM', # (also version III, ref IB. May be distinguised by EXIF:LensModel "EF70-200mm f/2.8L IS III USM" -- add extra logic to LensID?)
431
433
  252 => 'Canon EF 70-200mm f/2.8L IS II USM + 1.4x', #50 (1.4x Mk II)
432
434
  253 => 'Canon EF 70-200mm f/2.8L IS II USM + 2x', #PH (NC)
433
435
  # 253.1 => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025) + 2x', #forum9367
@@ -8396,7 +8398,7 @@ my %filterConv = (
8396
8398
  },
8397
8399
  },
8398
8400
  # CTBO - (CR3 files) int32u entry count N, N x (int32u index, int64u offset, int64u size)
8399
- # index 1=XMP, 2=PRVW, 3=mdat
8401
+ # index: 1=XMP, 2=PRVW, 3=mdat, 4=?, 5=?
8400
8402
  CMT1 => { # (CR3 files)
8401
8403
  Name => 'IFD0',
8402
8404
  SubDirectory => {
@@ -8442,6 +8444,18 @@ my %filterConv = (
8442
8444
  },
8443
8445
  );
8444
8446
 
8447
+ # Canon top-level uuid atoms (ref PH, written by DPP4)
8448
+ %Image::ExifTool::Canon::uuid2 = (
8449
+ WRITE_PROC => 'Image::ExifTool::QuickTime::WriteQuickTime',
8450
+ CNOP => {
8451
+ Name => 'CanonVRD',
8452
+ SubDirectory => {
8453
+ TagTable => 'Image::ExifTool::CanonVRD::Main',
8454
+ WriteProc => 'Image::ExifTool::CanonVRD::WriteCanonDR4',
8455
+ },
8456
+ },
8457
+ );
8458
+
8445
8459
  %Image::ExifTool::Canon::UnknownIFD = (
8446
8460
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
8447
8461
  );
@@ -8452,10 +8466,30 @@ my %filterConv = (
8452
8466
  # CCDT - int32u[3]: 0. 0, 1. decoder type?, 2. 0, 3. index
8453
8467
  );
8454
8468
 
8469
+ # 'CMP1' atom information (ref 54, CR3 files)
8470
+ %Image::ExifTool::Canon::CMP1 = (
8471
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
8472
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Canon', 2 => 'Image' },
8473
+ FORMAT => 'int16u',
8474
+ FIRST_ENTRY => 0,
8475
+ PRIORITY => 0,
8476
+ 8 => { Name => 'ImageWidth', Format => 'int32u' },
8477
+ 10 => { Name => 'ImageHeight', Format => 'int32u' },
8478
+ # (the rest of the documented tags don't seem to produced good values with my samples - PH)
8479
+ );
8480
+
8455
8481
  # 'CDI1' atom information (ref PH, CR3 files)
8456
8482
  %Image::ExifTool::Canon::CDI1 = (
8457
- GROUPS => { 0 => 'QuickTime', 1 => 'Canon', 2 => 'Image' },
8458
- # IAD1 - 32/48 bytes
8483
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Canon', 2 => 'Image' },
8484
+ IAD1 => { Name => 'IAD1', SubDirectory => { TagTable => 'Image::ExifTool::Canon::IAD1' } },
8485
+ );
8486
+
8487
+ # 'IAD1' atom information (ref 54, CR3 files)
8488
+ %Image::ExifTool::Canon::IAD1 = (
8489
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
8490
+ GROUPS => { 0 => 'MakerNotes', 1 => 'Canon', 2 => 'Image' },
8491
+ FORMAT => 'int16u',
8492
+ FIRST_ENTRY => 0,
8459
8493
  );
8460
8494
 
8461
8495
  # Canon Timed MetaData (ref PH, CR3 files)
@@ -23,7 +23,7 @@ use vars qw($VERSION);
23
23
  use Image::ExifTool qw(:DataAccess :Utils);
24
24
  use Image::ExifTool::Canon;
25
25
 
26
- $VERSION = '1.32';
26
+ $VERSION = '1.33';
27
27
 
28
28
  sub ProcessCanonVRD($$;$);
29
29
  sub WriteCanonVRD($$;$);
@@ -1954,6 +1954,28 @@ sub WriteCanonVRD($$;$)
1954
1954
  return $val;
1955
1955
  }
1956
1956
 
1957
+ #------------------------------------------------------------------------------
1958
+ # Write DR4-type CanonVRD edit record
1959
+ # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
1960
+ # Returns: VRD data block (may be empty if deleted, of undef on error)
1961
+ sub WriteCanonDR4($$;$)
1962
+ {
1963
+ my ($et, $dirInfo, $tagTablePtr) = @_;
1964
+ $et or return 1; # allow dummy access
1965
+ my $nvHash = $et->GetNewValueHash($Image::ExifTool::Extra{CanonDR4});
1966
+ my $val = $et->GetNewValue($nvHash);
1967
+ if (defined $val) {
1968
+ return undef unless $et->IsOverwriting($nvHash, $val);
1969
+ $et->VPrint(0, " Writing CanonDR4 as a block\n");
1970
+ ++$$et{CHANGED};
1971
+ return WrapDR4($val);
1972
+ }
1973
+ my $buff = '';
1974
+ $$dirInfo{OutFile} = \$buff;
1975
+ return $buff if ProcessCanonVRD($et, $dirInfo, $tagTablePtr) > 0;
1976
+ return undef;
1977
+ }
1978
+
1957
1979
  #------------------------------------------------------------------------------
1958
1980
  # Read/write CanonVRD information (from VRD file or VRD trailer)
1959
1981
  # Inputs: 0) ExifTool object reference, 1) dirInfo reference
@@ -2015,7 +2037,7 @@ sub ProcessCanonVRD($$;$)
2015
2037
  # (so we must disable all Write() calls for this case)
2016
2038
  $dataPt = $outfile;
2017
2039
  }
2018
- if ($fromFile) {
2040
+ if ($fromFile or $$dirInfo{DirStart}) {
2019
2041
  $dataPt = \$buff unless $dataPt;
2020
2042
  # read VRD data into memory if necessary
2021
2043
  unless ($raf->Read($$dataPt, $dirLen) == $dirLen) {