forked from AcademySoftwareFoundation/OpenImageIO
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
3579 lines (3370 loc) · 189 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Changes:
Release 1.7 (in progress) -- compared to 1.6.x
----------------------------------------------
Major new features and improvements:
* New oiiotool commands:
* -otex and -oenv allow oiiotool to directly output proper texture
maps, and it can now do everything that maketx can do. #1351 (1.7.2)
* --line can draw polylines into an image. #1319 (1.7.1)
* --box can draw a filled or unfilled box into an image. #1319 (1.7.1)
* --laplacian computes the Laplacian. #1332 (1.7.1)
* --deep_merge does a full merge/composite of deep images. #1388 (1.7.2)
* -i inputs a file. Options autocc=, now=, info= control aspects
of reading that one file. #1389 (1.7.2)
* New ImageBufAlgo functions: render_point(), render_line(), render_box()
#1319 (1.7.1); laplacian() #1332 (1.7.2); copy() #1388 (1.7.2);
deep_merge() #1388,1393 (1.7.2)
Public API changes:
* DeepData internals and API overhaul: struct internals hidden, now you
must use the API; DeepData declaration is now in deepdata.h, not in
imageio.h; DD methods now allow insertion and erasure of individual
samples. #1289 (1.7.0) New DeepData methods: split, sort, merge_overlaps,
merge_deep_pixels, occlusion_cull. #1388,1393 (1.7.2)
* imageio.h: Removed items deprecated since 1.4: a version of convert_types()
that took alpha and z channel indices (but never used them). #1291
* fmath.h: Removed safe_sqrtf, safe_acosf, fast_expf, which have been
deprecated since 1.5. (1.7.0) #1291
* Removed ImageBufAlgo::flipflop(), which was deprecated since 1.5 and
is now called rotate180. #1291 (1.7.0)
* Several varieties of ImageCache and TextureSystem getattribute methods
were noticed to not be properly declared 'const'. This was fixed.
#1300 (1.7.0/1.6.9)
* For API calls that are deprecated but not yet removed, we now mark
them with deprecated attributes for compilers that support it,
meaning that you will get compile warnings and explanations when you
use deprecated OIIO API functions. #1313,#1318 (1.7.1)
* ImageBuf::contains_roi() reveals whether an ROI is completely contained
in the data region of the IB. #1310 (1.7.1)
* TypeDesc::is_signed() return true of the TypeDesc returns a type that
can represent negative values. #1320
* Python: improve: reading with request for type UNKNOWN returns native
data in an unsigned char array. Also, requesting HALF returns the half
bits in an unsigned short array (since there is no 'half' type in Python).
#1362 (1.7.2/1.6.11)
Fixes, minor enhancements, and performance improvements:
* oiiotool:
* oiiotool --subimage now takes as an argument either the subimage
numeric index, or a subimage name. #1287 (1.7.0)
* oiiotool's image cache was smaller than intended because of typo.
(1.7.0/1.6.9)
* Allow command-line expression metadata names to contain ':'. #1321
(1.7.1/1.6.10)
* --info more clearly prints info about subimage formats. #1320 (1.7.1)
* --ch: when the channels were only renamed, not reordered, the
renaming didn't happen properly. #1326 (1.7.1/1.6.10)
* Improved error message propagation from the underlying IBA functions
and from errors encounered during --stats. #1338 (1.7.2)
* --dumpdata:empty=0 now does something for non-deep files: skips
reporting of pixels where all channels are black. Also fixed errors
for dumpdata of deep, but non-float, files. #1355 (1.7.2/1.6.11)
* '--attrib:type=t name value' lets you explicitly name the top of
the attribute you're seting. This helps for ambiguous cases, and also
lets you create aggregate types (such as 'matrix' or 'int[2]' --
the value can be a comma-separated list in those cases). #1351 (1.7.2)
* --fixnan can now take option "error", meaning that upon finding a
NaN, the program considers it an error (rather than fixing).
#1351 (1.7.2)
* -o now takes optional arguments that control the output of just that
one file, including :datatype=, :bits=, :dither=, :autocc=,
:autocrop=, :autotrim=, :separate=, :contig=. #1351 (1.7.2)
* --resize and --fit sped up by approximately 2x. #1372 (1.7.2)
* --runstats not tracks and reports max memory usage. #1385 (1.7.2)
* New --cache and --autotile options let you set the ImageCache size and
autotile options. #1385 (1.7.2)
* --native results in slightly different behavior: does not force float,
but still uses the ImageCache as backing if the native data type
is one of the types directly supported by IC. #1385 (1.7.2)
* ImageBuf:
* ImageBuf::iterator performance is improved -- roughly cutting in half
the overhead of iterating over pixels. #1308 (1.7.1/1.6.10)
* ImageBuf reads from disk have been improved substantially (in some
cases cutting read time in half) in many cases. #1328 (1.7.1)
* ImageBuf::copy_pixels() has been sped up. #1358 (1.7.2)
* ImageBufAlgo:
* The varieties of add(), sub(), mul(), and div() that take an
image operand and a per-channel constant operand have all been
modified to work properly for "deep" images. #1297 (1.7.0/1.6.10)
* mad() is sped up significantly (10x) for the common case of float
images already stored in memory (not cached). #1310 (1.6.1)
* render_point(), render_line(), render_box() can be used to render
points, lines, and boxes into an image. #1319 (1.7.1)
* channels(): when the channels were only renamed, not reordered,
the renaming didn't happen properly. #1326 (1.7.1/1.6.10)
* computePixelStats: Improved numerical accuracy to avoid getting
NaN values from imprecision. #1333 (1.7.2/1.6.11)
* laplacian() computes the laplacian of an image. #1332 (1.7.2)
* fixNonFinite() takes a new option: NONFINITE_ERROR, which will
return an error if nonfinite values are encountered. #1351 (1.7.2)
* convolve() and unsharp_mask() have been sped up by about 35% for
common cases. #1357 (1.7.2)
* IBA::resize sped up by approximately 2x. #1372 (1.7.2)
* ImageCache / TextureSystem:
* Less unnecessary pausing after read errors when falure_retries == 0.
#1336 (1.7.2/1.6.11)
* Texture: slight improvement in texture sharpness. #1369 (1.7.2/1.6.11)
* maketx:
* maketx -u now remakes the file if command line arguments or OIIO
version changes, even if the files' dates appear to match.
#1281 (1.7.0)
* Remove long-obsolete and non-functional command line options: --new,
--old, --hash. #1351 (1.7.2)
* iinfo more clearly prints info about subimage formats. #1320 (1.7.1)
* TIFF:
* When outputting a TIFF file, a special attribute "tiff:half", if
set to nonzero, will enable writing of 16-bit float pixel data
(obviously, only if the spec.format is HALF). #1283 (1.7.0)
* TIFF input: erase redundant IPTC:Caption and IPTC:OriginatingProgram
if they are identical to existing ImageDescription and Software
metadata, respectively. (1.7.0/1.6.9)
* Output: "tiff:zipquality" attribute controls time-vs-quality for
ZIP compression (1-9, defualt 6, higher means more compression).
#1295 (1.7.1)
* Fix typo that made TIFF files incorrectly name color space metadata
"oiio::ColorSpace" instead of "oiio:ColorSpace". #1394 (1.7.2)
* OpenEXR:
* Fix broken multipart output when parts had different pixel data
types. #1306,#1316 (1.7.1/1.6.10)
* Improved error reporting for bad tile reads. #1338 (1.7.2/1.6.11)
* Fix errors reading tiles for mixed-format EXR files. #1352 (1.7.2/1.6.11)
* The global OIIO::attribute("exr_threads") has been modified so that 0
means to use full available hardware, -1 disables the OpenEXR
thread pool and execute in the caller thread. #1381 (1.7.2)
* RLA:
* Fixes for both reading and writing of RLA images that are cropped
(i.e., data window is a subset of display window). #1224 (1.7.0/1.6.10)
* GIF:
* GIF reader failed to set spec full_width, full_height. #1348
(1.7.2/1.6.11)
* Video formats:
* The ffmpeg-based reader had a variety of fixes. #1288 (1.7.0)
* PNM:
* Fixed byte swapping when reading 16 but PNM files. #1352 (1.7.2/1.6.11)
* JPEG:
* Fix bad memory access crash when reading specific JPEG files that were
written without their comment field including a null character to
end the string. #1365 (1.7.2/1.6.11)
* Improved accuracy of "lanczos3" filter; speed up blackman-harris filter.
#1379 (1.7.2)
* Speed up linear<->sRGB color conversions (as used by any of the IBA color
conversion functions as well as oiiotool --colorconvert and friends),
approximately doubling the speed when no OpenColorIO config is found.
#1383 (1.7.2)
Build/test system improvements:
* Default build is now C++11! #1344 (1.7.2) You can still (for now) build
for C++03 using 'make USE_CPP11=0' or 'cmake -DOIIO_BUID_CPP11=0', but
some time soon we will be C++11 minimum.
* Fix build break against Boost 1.60. #1299,#1300 (1.7.0/1.6.9/1.5.23)
* filesystem_test now much more comprehensively tests the contents of
Filesystem. #1302 (1.7.0)
* fmath_test adds benchmarks for various data conversions. #1305 (1.7.0)
* Travis: add DEBUG builds to the matrix to fix any warnings or failures
that only show up for DEBUG builds. #1309 (1.7.1/1.6.10)
* Fix build issues on some platforms for SHA1.h, by adding proper include
of <climits>. #1298,#1311,#1312 (1.7.1/1.6.10)
* Cleanup of include logic in simd.h that fixed build problems for gcc < 4.4.
#1314 (1.7.1/1.6.10)
* Fix build breaks for certain 32 bit platforms. #1315,#1322 (1.7.1/1.6.10)
* imagespeed_test can not specify the data conversion type for reads,
can optionally allow skipping the IB iteration tests, and can set the
IC tile cache size. #1323 (1.7.1)
* Fix build breaks for gcc 6. #1339 (1.7.2/1.6.11)
* Fix errors in finding the correct locaiton of pugixml.hpp when using
USE_EXTERNAL_PUGIXML=1. #1339 (1.7.2/1.6.11)
* Rewrite of FindOpenEXR.cmake. Solves many problems and is simpler.
No more FindIlmbase.cmake at all. #1346 (1.7.2/1.6.11)
* 'make CODECOV=1; make CODECOV=1 test' can build and test in a way that
provides a code coverage report. #1356 (1.7.2)
* Fix Filesystem::open() issues with UTF-8 filenames on MinGW.
#1353,#1357 (1.7.2/1.6.11)
* Allow build against a wider range of ffmpeg versions. #1359 (1.7.2)
* Build correctly against FFMPEG 3.0. #1374 (1.7.2)
* If found, libjpeg-turbo is used rather than libjpeg; this gives about
a 2x speed improvement for reading and writing JPEG files. #1390 (1.7.2)
* USE_CPP11=... and USE_CPP14=... are the build flags for both the Make
wrapper and the CMake scripts. (Before, it was confusing to have USE_CPP11
for make but OIIO_BUILD_CPP11 for CMake. Now they are one.) #1391 (1.7.2)
Developer goodies / internals:
* parallel_image has been improved in several ways: can choose split
direction; raised minimum chunk size to prevent thread fan-out for
images too small to benefit; uses the calling thread as part of the
pool. #1303 (1.7.0)
* timer.h: DoNotOptimize() and clobber_all_memory() help to disable certain
optimizations that would interfere with micro-benchmarks. #1305 (1.7.0)
* simd.h improvements: select(); round(); float4::store(half*),
int4::store(unsigned short*), int4::store(unsigned char*). #1305 (1.7.0)
Define insert, extract, and ^ (xor), and ~ (bit complement) for mask4,
and add ~ for int4. #1331 (1.7.2); madd, msub, nmadd, nmsub, rint,
andnot #1377 (1.7.2); exp, log #1384 (1.7.2).
* fmath.h: convert_types has new special cases that vastly speed up
float <-> uint16, uint8, and half buffer conversions #1305 (1.7.0);
ifloor (1.7.2); SIMD versions of fast_log2, fast_log, fast_exp2,
fast_exp, fast_pow_pos #1384 (1.7.2)
* compute_test: new unit test can be used to benchmark computation
times. #1310 (1.7.1)
* Strutil::extract_from_list_string is more flixible by allowing the vals
list to start empty, in which case it will add as many values as it finds
rather than only replacing existing values. #1319 (1.7.1)
* Fix pesky precision discrepancy in internal convert_type<> that used
slightly different math when converting one value at a time, versus
converting whole arrays. #1350 (1.7.2)
* platform.h: better distinguishing beteen Apple and Generic clang,
separately set OIIO_CLANG_VERSION and OIIO_APPLE_CLANG_VERSION. Also change
OIIO_GNUC_VERSION to 0 for clang, only nonzero for true gcc. #1380 (1.7.2)
Release 1.6.12 (released 1 Apr 2016 -- compared to 1.6.11)
------------------------------------------------
* Build correctly against FFMPEG 3.0. #1374
* The global OIIO::attribute("exr_threads") has been modified so that 0
means to use full available hardware, -1 disables the OpenEXR thread
pool and execute in the caller thread. #1381
* Thread-pool counts initialized to hardware_concurrency, not
physical_concurrency (i.e., they will include hyperthread cores by
default). #1378
* oiiotool --autocc bug fixed.
* Miscellaneous improvements to simd.h ported from master.
* Fix typo that made TIFF files incorrectly name color space metadata
"oiio::ColorSpace" instead of "oiio:ColorSpace". #1394
Release 1.6.11 (released 1 Mar 2016 -- compared to 1.6.10)
------------------------------------------------
* Fix potential of IBA::computePixelStats (including oiiotool --stats)
to end up with NaNs due to numerical imprecision. #1333
* Less unnecessary pausing after read errors when falure_retries == 0.
#1336
* Fix errors in finding the correct locaiton of pugixml.hpp when using
USE_EXTERNAL_PUGIXML=1. #1339
* Fix build breaks for gcc 6. #1339
* GIF reader failed to set spec full_width, full_height. #1348
* PNM: Fixed byte swapping when reading 16 but PNM files. #1352
* OpenEXR: Improved error reporting for bad tile reads. #1338
* OpenEXR: Fix errors reading tiles for mixed-format EXR files. #1352
* oiiotool --dumpdata:empty=0 now does something for non-deep files: skips
reporting of pixels where all channels are black. Also fixed errors
for dumpdata of deep, but non-float, files. #1355
* Fix Filesystem::open() issues with UTF-8 filenames on MinGW. #1353
* Rewrite of FindOpenEXR.cmake. Solves many problems and is simpler.
No more FindIlmbase.cmake at all. #1346
* Fix build break for older gcc < 4.4 that didn't have immintrin.h.
* Fix bad memory access crash when reading specific JPEG files that were
written without their comment field including a null character to
end the string. #1365
* The ffmpeg-based reader had a variety of fixes. #1288
* Python: improve: reading with request for type UNKNOWN returns native
data in an unsigned char array. Also, requesting HALF returns the half
bits in an unsigned short array (since there is no 'half' type in Python).
#1362
* Texture: slight improvement in texture sharpness. #1369
* Update webp testsuite references for new webp version.
Release 1.6.10 (released 1 Feb 2016 -- compared to 1.6.9)
------------------------------------------------
* ImageBufAlgo add, sub, mul, and div, for the varieties that combine
an image with a (per-channel) constant, now work for "deep" images.
#1257
* ImageBuf::iterator performance is improved -- roughly cutting in half
the overhead of iterating over pixels. #1308
* OpenEXR: Fix broken multipart output when parts had different pixel
data types. #1306,#1316
* Allow oiiotool command-line expression metadata names to contain ':'.
* Fix oiiotool --ch (or IBA::channels) when the channels were only renamed,
not reordered, the renaming didn't happen properly. #1326
* Fixes for both reading and writing of RLA images that are cropped
(i.e., data window is a subset of display window). #1224
* Fix build issues on some platforms for SHA1.h, by adding proper include
of <climits>. #1298,#1311,#1312
* Cleanup of include logic in simd.h that fixed build problems for gcc < 4.4.
#1314
* Fix build breaks for certain 32 bit platforms. #1315,#1322
Release 1.6.9 (released 5 Jan 2016 -- compared to 1.6.8)
------------------------------------------------
* Several varieties of ImageCache and TextureSystem getattribute methods
were noticed to not be properly declared 'const'. This was fixed.
#1300 (1.6.9)
* Fix build break against Boost 1.60. #1299,#1300 (1.6.9/1.5.23)
* The Python bindings for ImageCache was overhauled after several
of the methods were found to be horribly broken. #1300 (1.6.9)
* oiiotool --subimage now allows a subimage name as argument, as well
as the numeric index. #1271,#1287 (1.6.9)
* TIFF input: erase redundant IPTC:Caption and IPTC:OriginatingProgram
if they are identical to existing ImageDescription and Software metadata,
respectively. (1.6.9)
* Fix oiiotool image cache smaller than intended because of typo. (1.6.9)
Release 1.6 (1.6.8 released Dec 21, 2015 -- compared to 1.5.x)
----------------------------------------------
Major new features and improvements:
* New oiiotool functionality:
* Expression evaluation/substitution on the oiiotool command line.
Anything enclosed in braces { } in a command line argument will be
substituted by the evaluation of the enclosed expression. Expressions
may be numbers, simple arithmetic (like 'expr+expr'), or retrieving
image metadata from named images or images on the stack.
Please see the PDF documentation, Section 12.1 for details and
examples.
* --absdiff, --absdiffc compute the absolute difference (abs(A-B)) of
two images, or between an image and a constant color. #1029 (1.6.0)
* --abs computes the absolute value of an image. #1029 (1.6.0)
* --div, divc divide one image by another (pixel by pixel), or divides
the pixels of an image by a constant color. #1029 (1.6.0)
* --addc, --subc, --mulc, --powc are the new names for --cadd, --csub,
--cmul, and --cpow. The old ones will continue to work but are
considered depcrected. #1030 (1.6.0)
* --pattern supports new patterns: "fill" makes a solid, vertical or
horizontal gradient, or four-corner interpolated image (just like
the --fill commmand) (1.6.0); "noise" can generate uniform, gaussian,
or salt & pepper noise (1.6.2).
* --fill, in addition to taking optional parameter color=... to give a
solid color for the fill region, now also takes top=...:bottom=... to
make a vertical gradient, left=...:right=... to make a horizontal
gradient, and topleft=...:topright=...:bottomleft=...:bottomright=...
to make a 4-corner gradient. (1.6.0)
* --noise adds noise to the current image: additive uniform or gaussian
noise, or making "salt & pepper" noise. (1.6.2)
* --trim crops the image to the minimal rectangle containing all
the non-0 pixels. (1.6.3)
* --autocc : when turned on, automatic color conversion of input files
into a scene_linear space, and conversion to an appropriate space
and pixel type upon output. It infers the color spaces based on
metadata and filenames (looking for OCIO-recognized color space names
as substrings of the filenames). #1120 (1.6.3)
* --mad takes three image arguments, multiplies the first two and then
adds the third to it. #1125 (1.6.3)
* --invert computes the color inverse (1-value) for color channels.
#1125 (1.6.3)
* --colorconfig allows you to specify a custom OCIO configuration file
(rather than strictly relying on the $OCIO env variable). #1129 (1.6.3)
* --deepen converts flat images to "deep". #1130 (1.6.3)
* -n (no saved output) performs all calculations (including timing and
stats) but does not write any output files to disk. #1134 (1.6.3)
* --debug prints debugging information, this is now separate from
-v which just makes more verbose (non-debugging) output. #1134 (1.6.3)
* --pixelaspect rescales the image to have the given pixel aspect
ratio. #1146 (1.6.5)
* --ociofiletransform() implements OpenColorIO "file" transforms.
#1213 (1.6.5)
* New ImageBufAlgo functions:
* absdiff() computes the absolute difference (abs(A-B)) of two images,
or between an image and a constant color. #1029 (1.6.0)
* abs() computes the absolute value of an image. #1029 (1.6.0)
* div() divides one image by another (pixel by pixel), or divides all
the pixels of an image by a constant color. #1029 (1.6.0)
* fill() has been extended with new varieties that take 2 colors (making
a vertical gradient) and 4 colors (one for each ROI corner, for a
bilinearly interpolated gradient). (1.6.0)
* noise() injects noise into an image -- uniform, gaussian/normal,
or salt & pepper noise. (1.6.2)
* mad() multiplies the first two arguments and then adds the third to
it. #1125 (1.6.3)
* invert() computes 1-val. #1125 (1.6.3)
* deepen() turns a flat RGBA (and optional Z) image into a "deep"
image. #1130 (1.6.3)
* ociofiletransform() implements OpenColorIO "file" transforms.
#1213 (1.6.5)
* Some open source fonts are now distributed with OIIO (DroidSans,
DroidSans-Bold, DroidSerif, DroidSerif-Bold, DroidSerif-Italic,
DroidSerif-BoldItalic, and DroidSansMono), and so those are always
available to ImageBufAlgo::render_text() and oiiotool --text, on all
platforms and even if you don't have any other installed fonts on
your system. DroidSans is now the default font. #1132 (1.6.3)
* GIF output support (including writing animated GIF images, just write it
as a multi-subimage file). For example, this works:
oiiotool foo*.jpg -siappendall -attrib FramesPerSecond 10.0 -o anim.gif
#1193 (1.6.4)
Public API changes:
* TypeDesc:
* New helper methods: is_array(), is_unsized_array(), is_sized_array().
#1136 (1.6.3)
* New constructor and fromstring of a string_view, in addition to
the old versions that took char*. #1159 (1.6.4/1.5.16)
* New aggregate type: MATRIX33. #1265,#1267 (1.6.6)
* ImageSpec:
* ImageSpec::metadata_val() is now static, rather than simply const,
since it doesn't need access to *this at all. #1063 (1.6.1)
* Added a new variety of find_attribute that takes a temporary
ImageIOParameter as scratch space. The advantage of this call is
that it can retrieve items from the named ImageSpec fields, such
as "width", "full_x", etc. Also, the get_int_attribute,
get_float_attribute, and get_string_attribute can now retrieve
these fixed fields as well. #1063 (1.6.1)
* ImageInput & ImageOutput:
* New ImageOutput::supports() tags: supports("alpha") should be true
for image formats that support an alpha channel, supports("nchannels")
should be true for output formats that support an arbitrary number
of output channels. (1.6.2/1.5.13)
* ImageInput and ImageOutput supports() method has been changed to accept
a string_view (rather than a const std::string&), and return an int
(rather than a bool). (1.6.2)
* ImageInput and ImageOutput have added destroy() static
methods. They are just wrappers around 'delete', but can help you
to ensure that II and IO objects are deleted on the same side of a
DLL boundary as where they were created. (Helps with using OIIO
from DLL-based plugins on Windows.) (1.6.3)
* New ImageInput query: "procedural" -- returns 1 if the ImageInput may
not correspond to an actual file. #1154 (1.6.4/1.5.16)
* ImageInput and ImageOutput's error() method is changed from protected
to public, making it easier for an app to set an error on a reader
or writer. (1.6.4)
* ImageOutput::copy_to_image_buffer is a helper function that
generalizes the existing copy_tile_to_image_buffer, but for any
rectangle. #1193 (1.6.4)
* ImageInput::read_image() variant that takes a channel range to
read just a subset of the channels present. #1222 (1.6.5)
* ImageInput and ImageOutput now have new method threads(n) that sets
the thread "fan-out" for the ImageInput or ImageOutput individually,
overriding any global attribute("threads"). #1259 (1.6.6)
* ImageBuf:
* Add make_writeable(), which forces ImageCache-backed read-only
ImageBuf to read into locally allocated pixels so they can be
subsequently altered. #1087 (1.6.2)
* ImageBuf::Iterator has added set_deep_samples() and set_deep_value()
methods. (1.6.3)
* ImageBuf::set_pixels() now provides a way to set an arbitrary
rectancle of an ImageBuf from raw values. #1167 (1.6.4)
* ImageBuf::get_pixels() now has a variety that takes an ROI to
describe the rectangle of pixels being requested. #1167 (1.6.4)
* ImageBuf now has new method threads(n) that sets the thread
"fan-out" for the ImageInput or ImageOutput individually,
overriding any global attribute("threads"). #1259 (1.6.6)
* ImageCache/TextureSystem:
* Clarified in the docs that TextureSystem::get_texture_info and
ImageCache::get_image_info "exists" queries should return true, and
place in *data the value 1 or 0 depending on whether the image exists
and can be read. (1.6.0/1.5.10)
* Added handle-based versions of TextureSystem get_texture_info(),
get_imagespec(), imagespec(), and get_texels(), in addition to the
existing name-based versions of those methods. Note that
texture(), environment(), and texture3d() already had both
name-based and handle-based varieties. #1057 (1.6.1) #1083 (1.6.2)
* Add create_thread_info() and destroy_thread_info() methods that
allow an app to manage the per-thread records needed by the IC.
#1080 (1.6.2)
* Added ImageCache get_perthread_info() and get_image_handle() to
return opaque perthread and file handle pointers, much like
TextureSystem already had, and added handle-based versions of
get_image_info(), get_imagespec(), imagespec(), get_pixels(), and
get_tile(), in addition to the existing name-based versions of
those methods. #1057 (1.6.1)
* ImageCache get_tile and get_pixels have new varieties that let you
request channel begin/end range. This allows you to control which
channel ranges are in the cache, and thus be much more efficient
with cache storage when only a few channels are needed from a file
with many channels. #1226 (1.6.5)
* ImageBufAlgo:
* New ImageBufAlgo functions: abs, absdiff, div, fill, noise, mad,
invert, deepen, ociofiletransform.
* nchannels() now takes an 'nthreads' parameters, just like all the
other ImageBufAlgo functions. #1261 (1.6.6)
* Python bindings:
* Added previously-M.I.A. ImageSpec::erase_attribute(). #1063 (1.6.1)
* ImageSpec.set_channel_formats() now works when the channel
type lists are either TypeDesc, in addition to the existing support
for BASETYPE. #1113 (1.6.3/1.5.13)
* Added Python bindings for DeepData and deep reads (ImageInput) and
writes (ImageOutput), as well as additional DeepData and ImageBuf
methods to fully match the C++ API. #1113 #1122 (1.6.3/1.5.13)
* ImageBuf.set_pixels, and ImageBuf.get_pixels with ROI. #1167,1179 (1.6.4)
* Change Python ImageOutput bindings to simplify the write_* methods.
They no longer take both a TypeDesc and an array; it can figure out
the type from the array itself. Also get rid of the stride parameters,
which weren't useful in a Python context. #1184 (1.6.4)
* ImageBufAlgo colorconvert, ociolook, and ociodisplay now take an
optional string colorconfig argument. #1187 (1.6.4)
* Fix missing Python bindings for global OIIO::getattribute(). #1290
(1.6.8)
* The ColorConfig wrapper for OCIO functionality has been extended to
parse color names from filename strings, and to report the recommended
pixel data type for a color space. #1129 (1.6.3)
* C++11 definitions: oiioversion.h defines OIIO_BUILD_CPP11 as nonzero
if OIIO itself was built in C++11 (or later) mode, and platform.h
defines OIIO_USING_CPP11 as nonzero if at this moment C++11 (or
later) mode is detected. Note that these can differ if one set of
compiler flags was used to build OIIO, and a different set is used to
build a project that uses OIIO headers. #1148 (1.6.4)
* Renamed the "fps" standard metadata to "FramesPerSecond. #1193 (1.6.4)
* Removed deprecated header "string_ref.h" (use string_view.h). (1.6.1)
* oiioversion.h: Renamed the namespace macros OIIO_NAMESPACE_ENTER/EXIT to
OIIO_NAMESPACE_BEGIN/END, and roll the braces into it. #1196 (1.6.4)
* array_view.h: Refactor array_view to be more in line with what is slated
for C++17, in particular it is now templated on Rank and so can be a view
to a multi-dimensional array. Also change array_view_strided to have
strides measured in units of sizeof(T), not bytes (to keep with C++17).
This also adds coordinate.h to give definitions for the offset<>,
bounds<>, and bounds_iterator<> templates used by array_view. #1205
(1.6.4)
* Add top-level OIIO::get_int_attribute(), get_float_attribute(), and
get_string_attribute() helpers, similar to how they work in many
of the classes. #1283 (1.6.7)
Fixes, minor enhancements, and performance improvements:
* oiiotool
* Bug fix for frame sequences -- could crash in Windows. #1060 (1.6.1)
* Gracefully handle requests to save an image with more channels than
the output file format can handle. Instead of being a fatal error,
now it's just a warning, and extra channels are dropped. It tries to
to find R, G, B, and A channels, saving them. If those names are
not found, it just saves the first 3 (or 4) channels. #1058 (1.6.1)
* Improve error messages when files can't be read. It is now easier
to to distinguish files that don't exist from those that are an
unknown format from those that are corrupted or have read
errors. #1065 (1.6.1)
* Flag errors properly when -d specifies an unknown data format name.
#1077 (1.6.2/1.5.13)
* oiiotool numeric wildcard improvement: allow more digits to match.
#1082 (1.6.2/1.5.13)
* Bug fix: input file data format didn't always end up in the output.
(1.6.3)
* --channels bugs were fixed when dealing with "deep" images. (1.6.3)
* All the color space conversion operations run much faster now,
since the underlying IBA::colorconvert() has been parallelized. (1.6.3)
* --crop logic bug fixed in cases where the crop region was the same
size as the original pixel data window. #1128 (1.6.3)
* oiiotool now gives proper error messages when asked to perform
unsupported operations on deep images. (1.6.3)
* Bug fix: --frames incorrectly overrode explicit frame sequence
wildcards on the command line. #1133 (1.6.3)
* --crop, --trim, and --autotrim have been extended to work on
"deep" images. #1137 (1.6.3)
* For "procedural" ImageInputs, don't give "file doesn't exist"
errors. (1.6.4)
* Suppress output/copying of "textureformat" metadata inherited from
input if it's not plausibly still a valid texture (i.e., if it's
no longer tiled or MIPmapped). #1206 (1.6.4)
* oiiotool's full help message lists all supported formats. #1210 (1.6.5)
* oiiotool --help prints a briefer help screen. Use --help -v for
the full-detail help. #1214 (1.6.5)
* Bug fix in --fit when the image didn't need to be resized.
#1227 (1.6.5/1.5.21)
* Bug fix in --ch for "deep" files when the channel reordering is
the same as it already was. #1286 (1.6.7)
* ImageBufAlgo:
* compare() (and therefore oiiotool -diff and idiff) did not notice
image differences when the pixels that differed had NaN or NaN or
Inf values! Now it is right. #1109 (1.6.3/1.5.13)
* channels() bugs were fixed when dealing with "deep" images. (1.6.3)
* colorconvert() has been parallelized, and thus on most systems will
now run much faster. (1.6.3)
* render_text() handles UTF-8 input. #1121 (1.6.3)
* colorconvert(), ociodisplay(), and ociolook() have new varities that
accept an optional ColorConfig, rather than having no choice but to
construct a new one internally. (1.6.3)
* nonempty_region() and crop() have been extended to handle "deep"
images. #1137 (1.6.3)
* Fix bug in fft() -- was not always zeroing out the imaginary channel.
#1171 (1.6.4/1.5.17)
* Fixed uninitialized variable bugs with rangecompress() and
rangeexpand() when using luma. #1180 (1.6.4)
* The lanczos3, radial-lanczos, and catrom filters have been change
from fixed-width to fully scalable. This fixes artifacts that
occur when using them as upsizing filters. #1228,#1232 (1.6.5/1.5.21)
* maketx, TextureSystem, and ImageCache:
* TextureSystem/IC now directly stores uint16 and half pixel data in
the cache rather than converting internally to float for tile storage,
thus effectively doubling the cache capacity for files of those
formats. (1.6.3)
* Fix broken bicubic texture sampling with non-power-of-two sized
tiles. #1035 (1.6.0/1.5.10)
* maketx: when the source image was a crop (data window != display
window), and the sharpening filters were used, it would
incorrectly issue an "unknown filter name" error. #1059 (1.6.1/1.5.12)
* maketx: Flag errors properly when -d specifies an unknown data
format name. #1077 (1.5.13)
* maketx now writes to a temporary file, then moving it to the final
requested output filename only when the write completed without
error. This prevents situations where maketx crashes or is killed
and leaves behind a file that looks correct but is actually
corrupted or truncated. #1072 (1.6.2/1.5.13)
* TextureSystem bug fix that occasionally resulted in NaN in the
alpha channel result when looking up from 3-channel images. #1108
(1.6.3/1.5.13)
* maketx --runstats prints runtime staticstics (deprecating --stats).
#1152 (1.6.4)
* Fixed trilinear MIPmap texture lookups that gave invalid alpha fill.
#1163 (1.6.4/1.5.16)
* The lanczos3, radial-lanczos, and catrom filters have been change
from fixed-width to fully scalable. This fixes artifacts that
occur when using them as upsizing filters. #1228,#1232 (1.6.5)
* Texture cache memory efficiency is much better for the special case
of accessing just a few channels from a texture file with large
numbers of channels. #1226 (1.6.5)
* Eliminate spurious ImageCache invalidation just because the shared
cache is requested again. #1157 (1.6.4/1.5.16)
* Statistics output also shows all the option setting values. #1226 (1.6.5)
* Data copy error in ImageCache::get_pixels for partial-channel-set
copies. #1246 (1.6.5)
* maketx -u now remakes the file if command line arguments or OIIO
version changes, even if the files' dates appear to match.
#1281 (1.6.8)
* GIF:
* Write support! #1193 (1.6.4)
* On input, renamed "fps" metadata to "FramesPerSecond". #1193 (1.6.4)
* IFF:
* Fix botched output of 16 bit uncompressed data. #1234 (1.6.5/1.5.21)
* Make "rle" compression the default. #1234 (1.6.5/1.5.21)
* JPEG:
* Now properly read/write xdensity and ydensity (what OIIO and TIFF
call "XResolution" and "YResolution" and, therefore,
"PixelAspectRatio". #1042 #1066 (1.6.0, 1.6.1)
* Support JPEG files encoded as CMYK (by converting to RGB upon read)
#1044 (1.6.1)
* Fix misdeclared supports() which would make the JPEG plugin appear
to not support exif or iptc. #1192 (1.6.4)
* JPEG-2000:
* Fix handling of un-premultiplied alpha (which is dictated by the
JPEG-2000 spec). (1.6.3)
* Fix reading of YUV-encoded files. (1.6.3)
* Read and write the ICC profile, if present. (1.6.3)
* Handle all bit depth precisions properly (previously only 8, 10,
12, and 16 were right). (1.6.3)
* Set the full/display window correctly. (1.6.3)
* Deal with differing per-channel data windows and sampling rates. (1.6.3)
* OpenEXR:
* Improved handling of density and aspect ratio. #1042 (1.6.0)
* Fix read_deep_tiles() error when not starting at the image origin.
#1040 (1.6.0/1.5.10)
* Fix output of multi-part exr file when some parts are tiled and
others aren't. #1040 (1.6.0/1.5.10)
* write_tile() with AutoStride calculated the wrong default strides
for "edge" tiles when the image width or length was not an integer
multiple of the tile size. Also clarified the PDF and imageio.h
docs in how they explain strides for this case. #1055 (1.6.1/1.5.12)
* Fix bugs in reading deep OpenEXR images with mixed channel types.
#1113 (1.6.3/1.5.13)
* OpenEXR output supports("deepdata") now correctly returns 'true'.
#1238 (1.6.5/1.5.21)
* A separate global OIIO::attribute("exr_threads") sets the thread pool
size for OpenEXR's libIlmImf, independent of the OIIO thread fan-out
attribute OIIO::attribute("threads"). #1244 (1.6.5)
* Correctly read and write Matrix33 and double (scalar, 2d, 3d, m33, m44)
metadata. #1265,#1267 (1.6.6)
* Recognize AR/AG/AB channel names in addition to the old RA/RG/RB
#1277 (1.6.6)
* PNG:
* Writing PNG files now honors the PixelAspectRatio metadata.
#1142 (1.6.3)
* PFM:
* PFM (float extension of PNM) was incorrectly flipped top to bottom.
Now fixed. #1230 (1.6.5)
* PSD:
* Better error handling for files lacking "global layer mask info"
or "additional layer info". #1147 (1.6.4/1.5.18)
* Additional PSD signatures for global additional layer info.
#1147 (1.6.4/1.5.18)
* Better error handling when dealing with an empty layer mask.
#1147 (1.6.4/1.5.18)
* TIFF:
* Improved handling of density and aspect ratio. #1042 (1.6.0)
* Improved proper handling of the interplay between "XResolution",
"YResolution", and "PixelAspectRatio". #1042 (1.6.0)
* TIFF output: recognize special "tiff:write_exif" metadata, which when
present and set to 0, will skip writing the Exif directory into the
TIFF file. This can be helpful when you expect the resulting TIFF
file to be read with very old versions of libtiff. #1185 (1.6.4/1.5.18)
* Correct read and write of JPEG-compressed TIFF. #1207 (1.6.4)
* Correct support for reading LAB, LOG, YCbCr, subsampled chroma.
#1207 (1.6.4)
* Make robust to strange TIFF files that have unexpected MIP
level-to-MIP level changes in planarconfig, photometric, palette,
extrasamples, etc. #1220,1221 (1.6.5/1.5.20)
* Support output of 2, 4, 10, and 12 bit unsigned ints into TIFF files.
#1216 (1.6.5)
* Make TIFF reading more robust to certain subimage-to-subimage
changes that were thought to be invariant. #1221 (1.6.5)
* CMYK is properly read and written. Upon read, CMYK is auto-converted
to RGB (and the "tiff:ColorSpace" metadata is set to "CMYK"). For
output, if "tiff:ColorSpace" metadata is set and nonzero, the RGB
passed in will be auto-converted to CMYK upon writing.
#1233 #1245 (1.6.5)
* Recognize Exif tags in the main directory, not only the special
Exif directory. #1250 (1.6.5)
* Fix bug in read_scanlines when reading TIFF files with UNassociated
alpha and unusual ystride values. #1278 (1.6.6)
* ImageBuf iterator constructors with 0-size ranges or ROIs have been
fixed to look like they are immediately done(). #1141 (1.6.3)
* Fix bug in internal convert_image() that could corrupt certain image
copying of non-contiguous data layouts. #1144 (1.6.3)
* Also search for OIIO plugins in [DY]LD_LIBRARY_PATH. #1153 (1.6.4/1.5.16)
* Nuke plugin: don't crash with NULL Knob* in TxReaderFormat::setMipLabels.
#1212 (1.6.5/1.5.20)
* idiff -q results in quiet mode -- output nothing for success, only
minimal errors to stderr for failure. #1231 (1.6.5)
Build/test system improvements:
* Python plugin is now build as a cmake "module" rather than "library",
which fixes some things on OSX. #1043 (1.6.0/1.5.10)
* Various build fixes for Windows. #1052 #1054 (1.6.1)
* New CMake build-time option to specify the default plugin search path.
#1056 (1.6.1/1.5.12)
* Fix build breaks for very old versions of Ilmbase (1.6 and earlier)
that lack a definition of V4f used by our simd.h. #1048 (1.6.1/1.5.11)
* Fix signed/unsigned warning on 32 bit platforms in jpeginput.cpp.
#1049 (1.6.1/1.5.11)
* New CMake build-time option to specify the default plugin search path.
#1056 (1.6.1/1.5.12)
* Fix gcc 5.0 compiler warning in PtexHalf.cpp. (1.6.1/1.5.12)
* Remove dependency of OpenSSL by default. #1086 (1.6.2/1.5.13)
* Fix warnings when compiling with C++11. (1.6.3/1.5.13)
* Dont link Python framework on OSX. #1099 (1.6.3/1.5.13)
* Changed the way testtex warps the image to give faux perspective to
test texture mapping. (1.6.3)
* Build-time USE_SIMD=... has been changed from accepting a single tag to
a comma-separated list of feature options. So you can, for example, do
make USE_SIMD=avx,f16c ... (1.6.3)
* make USE_NINJA=1 causes CMake to build Ninja build files instead of
Makefiles (they execute much faster, espectially for incremental builds).
#1158 (1.6.4)
* PSD & JPEG plugins fixes for Win32 compilation. #1150 (1.6.4/1.5.16)
* Fix Nuke plugin build files to not do anything if USE_NUKE=0.
#1156 (1.6.4/1.5.16)
* Builds now produce much less console output by default (use VERBOSE=1
to get all the details, most of which is only useful when debugging
broken builds). #1162 (1.6.4)
* Fix support for older ffmpeg version on Ubuntu 14.04. #1168 (1.6.4/1.5.17)
* Build-time fixes for Nocona CPUs that have SSE3 without SSSE3.
#1175 (1.6.4/1.5.17)
* ustring internals fixes for gcc 5.x changs to std::string ABI. #1176 (1.6.4)
* Fixes for clean build with clang 3.6. #1182,1183 (1.6.4)
* Fix signed/unsigned comparison error. #1186 (1.6.4)
* Top-level Makefile option USE_OPENCV=0 to turn off even searching for
OpenCV components. #1194 (1.6.4/1.5.18)
* If a system-installed (external) PTex implementation is found, use
it. Only use the "bundled" version if no other is found. Also add a
top-level USE_PTEX=0 that will skip PTex support, even if the library
is found. #1195,1197 (1.6.4)
* Fix compiler warnings about int vs size_t mismatches. 1199 (1.6.4)
* Improve C++11 and C++14 readiness. #1200
* Fix build break with certain new versions of libraw. #1204 (1.6.4/1.5.19)
* Fix build warnings for new Apple tools release that upgrades the standard
clang release. #1218 (1.6.5/1.5.20)
* When compiling in C++11 mode, std::unordered_map, mutex,
recursive_mutex, lock_guard, bind, ref, cref, thread, shared_ptr will
be used rather than boost equivalents, and our own thread_group and
intrusive_ptr are now used rather than the boost equivalents. We
believe that this completely removes all Boost headers and types from
the OIIO public APIs when in C++11 mode. (Though internals still use
Boost in some cases.) #1262 #1266 (1.6.6)
* We are now set up to use Travis-CI (https://travis-ci.org) for continuous
integration / automatic builds of all merges and pull requests.
#1268, #1269, #1273 (1.6.6)
* Don't install fonts if USE_FREETYPE is disabled. #1275 (1.6.6)
* Use ccache for builds when detected and safe (unless USE_CCACHE=0).
#1274,#1285 (1.6.7)
* Failed tests now print their non-matching text output to the console
when doing 'make test'. This makes it much easier to spot most errors.
#1284 (1.6.7)
Developer goodies / internals:
* Strutil additions: parse_until, parse_nested (1.6.1), repeat
(#1272/1.6.6/1.5.21).
* Give Strutil::parse_string an option to not strip surrounding quotes.
(1.6.4)
* Made TypeDesc::equivalent accept comparisons of arrays of unspecified
length with ones of definite length. #1072 (1.6.2/1.5.13)
* Add Filesystem::rename() utility. #1070 (1.6.2/1.5.13)
* New SIMD methods: insert<>, xyz0, vreduce_add, dot, dot3, vdot, vdot3,
AxBxCxDx, blend0not (1.6.2)
* array_view enhancements that let you initialize an array_view<const float>
from a const std::vector<float>&. #1084 (1.6.2/1.5.14)
* hash.h contains several new hashes in namespaces 'OIIO::xxhash' and
'OIIO::farmhash'. Also, Strutil::strhash now uses farmhash rather than
the Jenkins one-at-a-time hash, bringing big speed improvements
(including ustring creation). Beware that the strhash value returned
will be different than they were before. #1090 (1.6.3)
* fmath: safe_fast_pow improves the precision of its results for
special cases of pow(x,1) and pow(x,2). #1094 (1.6.3/1.5.13)
* Added TypeDesc::TypeHalf(). #1113 (1.6.3/1.5.13)
* thread.h: our atomic types have had their API adjusted somewhat to
more closely conform to C++11's std::atomic. (1.6.3)
* ustring's internals and underlying hash table have been overhauled,
yielding much higher performance, especially when many threads are
simultaneously creating ustrings. (1.6.3)
* ROI improvement: make intersection & union robust to uninitialized ROIs
as arguments. (1.6.3)
* osdep.h is deprecated. Use platform.h instead. (1.6.3)
* The DISPATCH_TYPES utility macros used internally by IBA have been
improved, and in particular the DISPATCH_COMMON_TYPES now handle ALL
types ("uncommon" ones are silently converted to float). (1.6.3)
* platform.h moves the endian functions into the OIIO namespace. (1.6.3)
* platform.h adds functions for runtime query of CPU capabilities. (1.6.3)
* simd.h: float4 and int4 can now construct and load from unsigned short*,
short*, unsigned char*, char*, and 'half'. (1.6.3)
* Strutil::utf8_to_unicode (1.6.3)
* Filesystem::current_path(). #1124 (1.6.3/1.5.21)
* Filesystem enumerate_file_sequence and scan_for_matching_filenames
have been modified to clear their result vectors rather than simply
assume they are empty. #1124 (1.6.3)
* oiiotool internals have been refactored to be class-oriented and move
a lot of boilerplate repeated in each op to be part of the base
class. #1127 (1.6.3)
* timer.h: Timer and ScopedTimer have changed slightly. This isn't used
in any public OIIO APIs, but may affect 3rd party programs that like
to use OIIO's timer.h for convenience. #1201 (1.6.4/1.5.19)
* dassert.h: added OIIO_STATIC_ASSERT macros for static
assertion. Doesn't affect existing OIIO apps since they are new
additions, but feel free to use them! #1202 (1.6.4/1.5.19)
* New unit test for imagecache. #1246 (1.6.5)
* Sysutil::hardware_concurrency() and physical_concurrency(). #1263
(1.6.6/1.5.21)
Release 1.5.24 (1 Mar 2016) -- compared to 1.5.23)
---------------------------------------------------
* Fix oiiotool --dumpdata, didn't work properly for non-float files.
* Fix broken OpenEXR multi-part output when parts have different pixel types.
* Update webp testsuite references for new webp version.
Release 1.5.23 (28 Dec 2015) -- compared to 1.5.22)
---------------------------------------------------
* Fix build break against Boost 1.60. #1299,#1300
Release 1.5.22 (16 Dec 2015) -- compared to 1.5.21)
---------------------------------------------------
* Deep OpenEXR: recognize the newer AR/AG/AB channel name convention. #1277
* Fix ffmpeg plugin compilation in some configurations. #1288
* Bug fix: TIFF read_scanlines of files with unassociated alpha didn't
honor the 'ystride' parameter and could run off the end of the buffer
for nonstandard stride arranagements. #1278
* Fix missing Python bindings for global OIIO::getattribute(). #1290
Release 1.5.21 (1 Dec 2015) -- compared to 1.5.20)
---------------------------------------------------
* Bug fix in --fit when the image didn't need to be resized. #1227
* IFF: Fix botched output of 16 bit uncompressed data. #1234
* IFF: Make "rle" compression the default for output. #1234
* OpenEXR output supports("deepdata") now correctly returns 'true'. #1238
* The lanczos3, radial-lanczos, and catrom filters have been changed
from fixed-width to fully scalable. This fixes artifacts that
occur when using them as upsizing filters. #1228,#1232
* Filesystem::current_path(). #1124
* Sysutil::hardware_concurrency() and physical_concurrency(). #1263
* Strutil::repeat() #1272
Release 1.5.20 (28 Sep 2015) -- compared to 1.5.19)
---------------------------------------------------
* Nuke plugin: don't crash with NULL Knob* in TxReaderFormat::setMipLabels.
#1212
* Fix build warnings for new Apple tools release that upgrades the standard
clang release. #1218
* Make TIFF reader robust to strange TIFF files that have unexpected MIP
level-to-MIP level changes in planarconfig, photometric, palette,
extrasamples, etc. We previously assumed these things would never vary
between MIP levels of the same file, and Murphy called our bluff. #1220,1221
Release 1.5.19 (8 Sep 2015) -- compared to 1.5.18)
--------------------------------------------------
* Fix compile warnings on some platforms/compilers.
* Fix build break with certain new versions of libraw. #1204
* Internals: Timer and ScopedTimer have changed slightly. This isn't used
in any public OIIO APIs, but may affect 3rd party programs that like
to use OIIO's timer.h for convenience. #1201
* Internals: dassert.h has added OIIO_STATIC_ASSERT macros for static
assertion. Doesn't affect existing OIIO apps since they are new
additions, but feel free to use them! #1202
Release 1.5.18 (4 Aug 2015) -- compared to 1.5.17)
---------------------------------------------------
* PSD input improvements: better error handling for files lacking "global
layer mask info" or "additional layer info"; additional PSD signatures
for global additional layer info; better error handling when dealing
with an empty layer mask. #1147
* TIFF output: recognize special "tiff:write_exif" metadata, which when
present and set to 0, will skip writing the Exif directory into the TIFF
file. This can be helpful when you expect the resulting TIFF file to be
read with very old versions of libtiff. #1185
* Top-level Makefile option USE_OPENCV=0 to turn off even searching for
OpenCV components. #1194
Release 1.5.17 (13 Jul 2015) -- compared to 1.5.16)
---------------------------------------------------
* Fix support for older ffmpeg version on Ubuntu 14.04. #1168
* Fix bug in fft -- was not always zeroing out the imaginary channel. #1171
* Build-time fixes for Nocona CPUs that have SSE3 without SSSE3. #1175
* ustring fixes for new gcc (5.1+) and new std::string ABI. #1176
* Fixes for unit test timer_test for new OSX versions with timer
coalescing. #1181
* Fix bugs with rangecompress and rangeexpand when using luma. #1180
* Fixes for clean build when using clang 3.6. #1182
Release 1.5.16 (11 Jun 2015) -- compared to 1.5.15)
---------------------------------------------------
* PNG writes now honor PixelAspectRatio attribute. #1142
* Build fixes for Visual Studio 2010 #1140
* PSD & JPEG plugins fixes for Win32 compilation.
* Also search for OIIO plugins in [DY]LD_LIBRARY_PATH. #1153
* Give Strutil::parse_string an option to not strip surrounding quotes.
* Fix Nuke plugin build files to not do anything if USE_NUKE=0 #1156
* New ImageInput query: "procedural" -- returns 1 if the ImageInput may
not correspond to an actual file. #1154
* TypeDesc has a new constructor and fromstring of a string_view, in
addition to the old versions that took char*. #1159
* Eliminate spurious ImageCache invalidation just because the shared
cache is requested again. #1157
* Fixed trilinear MIPmap texture lookups that gave invalid alpha fill. #1163
* Filesystem: sequence matching should clear results arrays upon start.
Release 1.5.15 (11 May 2015) -- compared to 1.5.14)
---------------------------------------------------
* Bug fix with IBA::channels() with deep data with UINT channels.
* Fix TypeDesc compatibility with OSL.
* Misc WIN32 / VS2010 fixes.
* Fix incorrect logic in convert_image with certain channel types and
strides. #1144
Release 1.5.14 (10 April 2015) -- compared to 1.5.13)
----------------------------------------------
* fmath: save_fast_pow improves the precision of its results for
special cases of pow(x,1) and pow(x,2). #1094 (1.5.13)
* Fix warnings when compiling with C++11. (1.5.13)
* Dont link Python framework on OSX. #1099 (1.5.13)
* Improve IBA::compare() (and therefore oiiotool -diff and idiff) when
the images being compared have NaN or Inf values. #1109 (1.5.13)
* TextureSystem bug fix that occasionally resulted in NaN in the alpha
channel result when looking up from 3-channel images. #1108 (1.5.13)
* Added TypeDesc::TypeHalf(). #1113 (1.5.13)
* Fix IBA::channels() bugs when dealing with "deep" images. #1113 (1.5.13)
* Python ImageSpec.set_channel_formats() now works when the channel
type lists are either TypeDesc, in addition to the existing support
for BASETYPE. #1113 (1.5.13)
* Added Python bindings for DeepData and deep reads (ImageInput) and
writes (ImageOutput). #1113 (1.5.13)
* Fix bugs in reading deep OpenEXR images with mixed channel types.
#1113 (1.5.13)
* Fix bug in IBA::convolve() for the case when the kernel image passed
is not a float image. #1116 (1.5.13)
Release 1.5.13 (10 Mar 2015) -- compared to 1.5.12)
----------------------------------------------
* oiiotool: Bug fix for frame sequences -- could crash in Windows. #1060
* New ImageOutput::supports() tags: supports("alpha") should be true for
image formats that support an alpha channel, supports("nchannels") should
be true for output formats that support an arbitrary number of output
channels. #1058
* oiiotool: Gracefully handle requests to save an image with more channels
than the output file format can handle. Instead of being a fatal error,
now it's just a warning, and extra channels are dropped. It tries to
to find R, G, B, and A channels, saving them. If those names are
not found, it just saves the first 3 (or 4) channels. #1058
* Improved handling of "PixelAspectRatio" for JPEG, TIFF, and OpenEXR.
#1042 #1066
* oiiotool: Improve error messages when files can't be read. It is now
easier to to distinguish files that don't exist from those that
are an unknown format from those that are corrupted or have read
errors. #1065
* maketx now writes to a temporary file, then moving it to the final
requested output filename only when the write completed without error.
This prevents situations where maketx crashes or is killed and leaves
behind a file that looks correct but is actually corrupted or
truncated. #1072
* Python: added previously-M.I.A. ImageSpec.erase_attribute(). #1063
* Add Filesystem::rename() utility. #1070
* Made TypeDesc::equivalent accept comparisons of arrays of unspecified
length with ones of definite length. #1072
* oiiotool & maketx have improved error message when unknown data format
names are requested with "-d". #1077
* oiiotool numeric wildcard improvement: allow more digits to match. #1082
* Remove dependency of OpenSSL by default. #1086
Release 1.5.12 (11 Feb 2015) -- compared to 1.5.11)
----------------------------------------------
* Various build fixes for Windows. #1052 #1054
* New CMake build-time option to specify the default plugin search path.
#1056 (1.5.12)
* OpenEXR: fixed write_tile() with AutoStride calculated the wrong
default strides for "edge" tiles when the image width or length was
not an integer multiple of the tile size. Also clarified the PDF and
imageio.h docs in how they explain strides for this case. #1055 (1.5.12)
* maketx: when the source image was a crop (data window != display window),
and the sharpening filters were used, it would incorrectly issue an
"unknown filter name" error. #1059 (1.5.12)
* Fix gcc 5.0 compiler warning in PtexHalf.cpp. (1.5.12)
Release 1.5.11 (28 Jan 2015) -- compared to 1.5.10)
----------------------------------------------
* Fix build breaks for very old versions of Ilmbase (1.6 and earlier)
that lack a definition of V4f used by our simd.h. #1048
* Fix signed/unsigned warning on 32 bit platforms in jpeginput.cpp. #1049
Release 1.5 (26 Jan 2015) -- compared to 1.4.x
----------------------------------------------
Major new features and improvements: