@@ -42,7 +42,7 @@ template<class T> using auto_ptr = unique_ptr<T>;
42
42
#include < libraw/libraw.h>
43
43
#include < libraw/libraw_version.h>
44
44
45
- #if LIBRAW_VERSION < LIBRAW_MAKE_VERSION(0, 15 , 0)
45
+ #if LIBRAW_VERSION < LIBRAW_MAKE_VERSION(0, 18 , 0)
46
46
# error "OpenImageIO does not support such an old LibRaw"
47
47
#endif
48
48
@@ -284,7 +284,6 @@ RawInput::open(const std::string& name, ImageSpec& newspec)
284
284
285
285
286
286
287
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 17, 0)
288
287
static void
289
288
exif_parser_cb (ImageSpec* spec, int tag, int tifftype, int len,
290
289
unsigned int byteorder, LibRaw_abstract_datastream* ifp)
@@ -359,7 +358,6 @@ exif_parser_cb(ImageSpec* spec, int tag, int tifftype, int len,
359
358
// Strutil::fprintf (std::cerr, "RAW metadata NOT HANDLED: tag=%s: tifftype=%d,len=%d (%s), byteorder=0x%x\n",
360
359
// taginfo->name, tifftype, len, type, byteorder);
361
360
}
362
- #endif
363
361
364
362
365
363
@@ -401,10 +399,8 @@ RawInput::open_raw(bool unpack, const std::string& name,
401
399
402
400
// Temp spec for exif parser callback to dump into
403
401
ImageSpec exifspec;
404
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 17, 0)
405
402
m_processor->set_exifparser_handler ((exif_parser_callback)exif_parser_cb,
406
403
&exifspec);
407
- #endif
408
404
409
405
// Force flip value if needed. If user_flip is -1, libraw ignores it
410
406
m_processor->imgdata .params .user_flip
@@ -587,26 +583,16 @@ RawInput::open_raw(bool unpack, const std::string& name,
587
583
m_processor->imgdata .params .gamm [0 ] = 1.0 ;
588
584
m_processor->imgdata .params .gamm [1 ] = 1.0 ;
589
585
} else if (Strutil::iequals (cs, " ACES" )) {
590
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 18, 0)
591
586
// ACES linear
592
587
m_processor->imgdata .params .output_color = 6 ;
593
588
m_processor->imgdata .params .gamm [0 ] = 1.0 ;
594
589
m_processor->imgdata .params .gamm [1 ] = 1.0 ;
595
- #else
596
- errorfmt (" raw:ColorSpace value of \" {}\" is not supported by libRaw {}" ,
597
- cs, LIBRAW_VERSION_STR);
598
- return false ;
599
- #endif
600
- } else if (Strutil::iequals (cs, " DCI-P3" )) {
601
590
#if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 21, 0)
602
- // ACES linear
591
+ } else if (Strutil::iequals (cs, " DCI-P3" )) {
592
+ // DCI-P3
603
593
m_processor->imgdata .params .output_color = 7 ;
604
594
m_processor->imgdata .params .gamm [0 ] = 1.0 ;
605
595
m_processor->imgdata .params .gamm [1 ] = 1.0 ;
606
- #else
607
- errorfmt (" raw:ColorSpace value of \" {}\" is not supported by libRaw {}" ,
608
- cs, LIBRAW_VERSION_STR);
609
- return false ;
610
596
#endif
611
597
} else if (Strutil::iequals (cs, " Rec2020" )) {
612
598
#if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 21, 0)
@@ -648,21 +634,8 @@ RawInput::open_raw(bool unpack, const std::string& name,
648
634
std::string demosaic = config.get_string_attribute (" raw:Demosaic" );
649
635
if (demosaic.size ()) {
650
636
static const char * demosaic_algs[]
651
- = { " linear" ,
652
- " VNG" ,
653
- " PPG" ,
654
- " AHD" ,
655
- " DCB" ,
656
- " AHD-Mod" ,
657
- " AFD" ,
658
- " VCD" ,
659
- " Mixed" ,
660
- " LMMSE" ,
661
- " AMaZE" ,
662
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 16, 0)
663
- " DHT" ,
664
- " AAHD" ,
665
- #endif
637
+ = { " linear" , " VNG" , " PPG" , " AHD" , " DCB" , " AHD-Mod" , " AFD" , " VCD" ,
638
+ " Mixed" , " LMMSE" , " AMaZE" , " DHT" , " AAHD" ,
666
639
// Future demosaicing algorithms should go here
667
640
NULL };
668
641
size_t d;
@@ -672,17 +645,6 @@ RawInput::open_raw(bool unpack, const std::string& name,
672
645
if (demosaic_algs[d])
673
646
m_processor->imgdata .params .user_qual = d;
674
647
else if (Strutil::iequals (demosaic, " none" )) {
675
- #ifdef LIBRAW_DECODER_FLATFIELD
676
- // See if we can access the Bayer patterned data for this raw file
677
- libraw_decoder_info_t decoder_info;
678
- m_processor->get_decoder_info (&decoder_info);
679
- if (!(decoder_info.decoder_flags & LIBRAW_DECODER_FLATFIELD)) {
680
- errorf (" Unable to extract unbayered data from file \" %s\" " ,
681
- name);
682
- return false ;
683
- }
684
-
685
- #endif
686
648
// User has selected no demosaicing, so no processing needs to be done
687
649
m_process = false ;
688
650
@@ -853,12 +815,9 @@ RawInput::open_raw(bool unpack, const std::string& name,
853
815
}
854
816
if (idata.model [0 ])
855
817
m_spec.attribute (" Model" , idata.model );
856
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 17, 0)
857
818
if (idata.software [0 ])
858
819
m_spec.attribute (" Software" , idata.software );
859
- else
860
- #endif
861
- if (color.model2 [0 ])
820
+ else if (color.model2 [0 ])
862
821
m_spec.attribute (" Software" , color.model2 );
863
822
864
823
// FIXME: idata. dng_version, is_foveon, colors, filters, cdesc
@@ -885,15 +844,14 @@ RawInput::open_raw(bool unpack, const std::string& name,
885
844
m_spec.attribute (" ImageDescription" , other.desc );
886
845
if (other.artist [0 ])
887
846
m_spec.attribute (" Artist" , other.artist );
888
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 17, 0)
889
847
if (other.parsed_gps .gpsparsed ) {
890
848
add (" GPS" , " Latitude" , other.parsed_gps .latitude , false , 0 .0f );
891
- # if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 20, 0)
849
+ #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 20, 0)
892
850
add (" GPS" , " Longitude" , other.parsed_gps .longitude , false , 0 .0f );
893
- # else
851
+ #else
894
852
add (" GPS" , " Longitude" , other.parsed_gps .longtitude , false ,
895
853
0 .0f ); // N.B. wrong spelling!
896
- # endif
854
+ #endif
897
855
add (" GPS" , " TimeStamp" , other.parsed_gps .gpstimestamp , false , 0 .0f );
898
856
add (" GPS" , " Altitude" , other.parsed_gps .altitude , false , 0 .0f );
899
857
add (" GPS" , " LatitudeRef" , string_view (&other.parsed_gps .latref , 1 ),
@@ -905,7 +863,6 @@ RawInput::open_raw(bool unpack, const std::string& name,
905
863
add (" GPS" , " Status" , string_view (&other.parsed_gps .gpsstatus , 1 ),
906
864
false );
907
865
}
908
- #endif
909
866
#if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 20, 0)
910
867
const libraw_makernotes_t & makernotes (m_processor->imgdata .makernotes );
911
868
const libraw_metadata_common_t & common (makernotes.common );
@@ -1006,7 +963,6 @@ RawInput::get_makernotes()
1006
963
void
1007
964
RawInput::get_makernotes_canon ()
1008
965
{
1009
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 18, 0)
1010
966
auto const & mn (m_processor->imgdata .makernotes .canon );
1011
967
// MAKER (CanonColorDataVer, 0);
1012
968
// MAKER (CanonColorDataSubVer, 0);
@@ -1020,7 +976,7 @@ RawInput::get_makernotes_canon()
1020
976
MAKERF (ExposureMode);
1021
977
MAKERF (AESetting);
1022
978
MAKERF (ImageStabilization);
1023
- # if LIBRAW_VERSION < LIBRAW_MAKE_VERSION(0, 21, 0)
979
+ #if LIBRAW_VERSION < LIBRAW_MAKE_VERSION(0, 21, 0)
1024
980
MAKERF (HighlightTonePriority);
1025
981
MAKERF (FocusMode);
1026
982
MAKER (AFPoint, 0 );
@@ -1042,7 +998,7 @@ RawInput::get_makernotes_canon()
1042
998
// short AFPointsSelected[4];
1043
999
// ushort PrimaryAFPoint;
1044
1000
}
1045
- # endif
1001
+ #endif
1046
1002
MAKERF (FlashMode);
1047
1003
MAKERF (FlashActivity);
1048
1004
MAKER (FlashBits, 0 );
@@ -1052,7 +1008,7 @@ RawInput::get_makernotes_canon()
1052
1008
MAKERF (ContinuousDrive);
1053
1009
MAKER (SensorWidth, 0 );
1054
1010
MAKER (SensorHeight, 0 );
1055
- # if LIBRAW_VERSION_AT_LEAST_SNAPSHOT_202110
1011
+ #if LIBRAW_VERSION_AT_LEAST_SNAPSHOT_202110
1056
1012
add (m_make, " SensorLeftBorder" , mn.DefaultCropAbsolute .l , false , 0 );
1057
1013
add (m_make, " SensorTopBorder" , mn.DefaultCropAbsolute .t , false , 0 );
1058
1014
add (m_make, " SensorRightBorder" , mn.DefaultCropAbsolute .r , false , 0 );
@@ -1061,7 +1017,7 @@ RawInput::get_makernotes_canon()
1061
1017
add (m_make, " BlackMaskTopBorder" , mn.LeftOpticalBlack .t , false , 0 );
1062
1018
add (m_make, " BlackMaskRightBorder" , mn.LeftOpticalBlack .r , false , 0 );
1063
1019
add (m_make, " BlackMaskBottomBorder" , mn.LeftOpticalBlack .b , false , 0 );
1064
- # else
1020
+ #else
1065
1021
MAKER (SensorLeftBorder, 0 );
1066
1022
MAKER (SensorTopBorder, 0 );
1067
1023
MAKER (SensorRightBorder, 0 );
@@ -1070,7 +1026,6 @@ RawInput::get_makernotes_canon()
1070
1026
MAKER (BlackMaskTopBorder, 0 );
1071
1027
MAKER (BlackMaskRightBorder, 0 );
1072
1028
MAKER (BlackMaskBottomBorder, 0 );
1073
- # endif
1074
1029
#endif
1075
1030
#if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 19, 0)
1076
1031
// Extra added with libraw 0.19:
@@ -1150,15 +1105,14 @@ RawInput::get_makernotes_nikon()
1150
1105
void
1151
1106
RawInput::get_makernotes_olympus ()
1152
1107
{
1153
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 18, 0)
1154
1108
auto const & mn (m_processor->imgdata .makernotes .olympus );
1155
- # if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 20, 0)
1109
+ #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 20, 0)
1156
1110
MAKERF (SensorCalibration);
1157
- # else
1111
+ #else
1158
1112
MAKERF (OlympusCropID);
1159
1113
MAKERF (OlympusFrame); /* upper left XY, lower right XY */
1160
1114
MAKERF (OlympusSensorCalibration);
1161
- # endif
1115
+ #endif
1162
1116
MAKERF (FocusMode);
1163
1117
MAKERF (AutoFocus);
1164
1118
MAKERF (AFPoint);
@@ -1167,7 +1121,6 @@ RawInput::get_makernotes_olympus()
1167
1121
MAKERF (AFResult);
1168
1122
// MAKERF(ImageStabilization); Removed after 0.19
1169
1123
MAKERF (ColorSpace);
1170
- #endif
1171
1124
#if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 19, 0)
1172
1125
MAKERF (AFFineTune);
1173
1126
if (mn.AFFineTune )
@@ -1231,24 +1184,23 @@ RawInput::get_makernotes_kodak()
1231
1184
void
1232
1185
RawInput::get_makernotes_fuji ()
1233
1186
{
1234
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 18, 0)
1235
1187
auto const & mn (m_processor->imgdata .makernotes .fuji );
1236
1188
1237
- # if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 20, 0)
1189
+ #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 20, 0)
1238
1190
add (m_make, " ExpoMidPointShift" , mn.ExpoMidPointShift );
1239
1191
add (m_make, " DynamicRange" , mn.DynamicRange );
1240
1192
add (m_make, " FilmMode" , mn.FilmMode );
1241
1193
add (m_make, " DynamicRangeSetting" , mn.DynamicRangeSetting );
1242
1194
add (m_make, " DevelopmentDynamicRange" , mn.DevelopmentDynamicRange );
1243
1195
add (m_make, " AutoDynamicRange" , mn.AutoDynamicRange );
1244
- # else
1196
+ #else
1245
1197
add (m_make, " ExpoMidPointShift" , mn.FujiExpoMidPointShift );
1246
1198
add (m_make, " DynamicRange" , mn.FujiDynamicRange );
1247
1199
add (m_make, " FilmMode" , mn.FujiFilmMode );
1248
1200
add (m_make, " DynamicRangeSetting" , mn.FujiDynamicRangeSetting );
1249
1201
add (m_make, " DevelopmentDynamicRange" , mn.FujiDevelopmentDynamicRange );
1250
1202
add (m_make, " AutoDynamicRange" , mn.FujiAutoDynamicRange );
1251
- # endif
1203
+ #endif
1252
1204
1253
1205
MAKERF (FocusMode);
1254
1206
MAKERF (AFMode);
@@ -1260,11 +1212,10 @@ RawInput::get_makernotes_fuji()
1260
1212
MAKERF (ExrMode);
1261
1213
MAKERF (Macro);
1262
1214
MAKERF (Rating);
1263
- # if LIBRAW_VERSION < LIBRAW_MAKE_VERSION(0, 21, 0)
1215
+ #if LIBRAW_VERSION < LIBRAW_MAKE_VERSION(0, 21, 0)
1264
1216
MAKERF (FrameRate);
1265
1217
MAKERF (FrameWidth);
1266
1218
MAKERF (FrameHeight);
1267
- # endif
1268
1219
#endif
1269
1220
}
1270
1221
@@ -1273,13 +1224,11 @@ RawInput::get_makernotes_fuji()
1273
1224
void
1274
1225
RawInput::get_makernotes_sony ()
1275
1226
{
1276
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 18, 0)
1277
1227
auto const & mn (m_processor->imgdata .makernotes .sony );
1278
- #endif
1279
1228
1280
1229
#if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 20, 0)
1281
1230
MAKERF (CameraType);
1282
- #elif LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 18, 0)
1231
+ #else
1283
1232
MAKERF (SonyCameraType);
1284
1233
#endif
1285
1234
@@ -1322,7 +1271,6 @@ RawInput::get_makernotes_sony()
1322
1271
void
1323
1272
RawInput::get_lensinfo ()
1324
1273
{
1325
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 18, 0)
1326
1274
{
1327
1275
auto const & mn (m_processor->imgdata .lens );
1328
1276
MAKER (MinFocal, 0 .0f );
@@ -1370,29 +1318,29 @@ RawInput::get_lensinfo()
1370
1318
MAKER (Adapter, 0 );
1371
1319
MAKER (AttachmentID, 0ULL );
1372
1320
MAKER (Attachment, 0 );
1373
- # if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 20, 0)
1321
+ #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 20, 0)
1374
1322
MAKER (FocalUnits, 0 );
1375
- # else
1323
+ #else
1376
1324
MAKER (CanonFocalUnits, 0 );
1377
- # endif
1325
+ #endif
1378
1326
MAKER (FocalLengthIn35mmFormat, 0 .0f );
1379
1327
}
1380
1328
1381
1329
if (Strutil::iequals (m_make, " Nikon" )) {
1382
1330
auto const & mn (m_processor->imgdata .lens .nikon );
1383
- # if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 20, 0)
1331
+ #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 20, 0)
1384
1332
add (m_make, " EffectiveMaxAp" , mn.EffectiveMaxAp );
1385
1333
add (m_make, " LensIDNumber" , mn.LensIDNumber );
1386
1334
add (m_make, " LensFStops" , mn.LensFStops );
1387
1335
add (m_make, " MCUVersion" , mn.MCUVersion );
1388
1336
add (m_make, " LensType" , mn.LensType );
1389
- # else
1337
+ #else
1390
1338
add (m_make, " EffectiveMaxAp" , mn.NikonEffectiveMaxAp );
1391
1339
add (m_make, " LensIDNumber" , mn.NikonLensIDNumber );
1392
1340
add (m_make, " LensFStops" , mn.NikonLensFStops );
1393
1341
add (m_make, " MCUVersion" , mn.NikonMCUVersion );
1394
1342
add (m_make, " LensType" , mn.NikonLensType );
1395
- # endif
1343
+ #endif
1396
1344
}
1397
1345
if (Strutil::iequals (m_make, " DNG" )) {
1398
1346
auto const & mn (m_processor->imgdata .lens .dng );
@@ -1401,15 +1349,13 @@ RawInput::get_lensinfo()
1401
1349
MAKER (MaxFocal, 0 .0f );
1402
1350
MAKER (MinFocal, 0 .0f );
1403
1351
}
1404
- #endif
1405
1352
}
1406
1353
1407
1354
1408
1355
1409
1356
void
1410
1357
RawInput::get_shootinginfo ()
1411
1358
{
1412
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 18, 0)
1413
1359
auto const & mn (m_processor->imgdata .shootinginfo );
1414
1360
MAKER (DriveMode, -1 );
1415
1361
MAKER (FocusMode, -1 );
@@ -1419,15 +1365,13 @@ RawInput::get_shootinginfo()
1419
1365
MAKERF (ImageStabilization);
1420
1366
MAKER (BodySerial, 0 );
1421
1367
MAKER (InternalBodySerial, 0 );
1422
- #endif
1423
1368
}
1424
1369
1425
1370
1426
1371
1427
1372
void
1428
1373
RawInput::get_colorinfo ()
1429
1374
{
1430
- #if LIBRAW_VERSION >= LIBRAW_MAKE_VERSION(0, 18, 0)
1431
1375
add (" raw" , " pre_mul" ,
1432
1376
cspan<float >(&(m_processor->imgdata .color .pre_mul [0 ]),
1433
1377
&(m_processor->imgdata .color .pre_mul [4 ])),
@@ -1444,7 +1388,6 @@ RawInput::get_colorinfo()
1444
1388
cspan<float >(&(m_processor->imgdata .color .cam_xyz [0 ][0 ]),
1445
1389
&(m_processor->imgdata .color .cam_xyz [3 ][3 ])),
1446
1390
false , 0 .f );
1447
- #endif
1448
1391
}
1449
1392
1450
1393
0 commit comments