This file is indexed.

/usr/share/rawtherapee/camconst.json is in rawtherapee-data 4.2-1+deb8u2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
/*

   DO NOT EDIT THIS FILE!

   All changes made here will be lost on software update.
   If you want to add custom values or changes existing ones,
   create a "camconst.json" file next to your personal "options" file.
   Its values will then override and/or complete the ones of this file.

   If you add values for your own camera and are okay to share them with
   RawTherapee's community, please drop a link on the user's forum

   IMPORTANT:
   ----------
   
   1. If you set the dcraw matrix in your user file for an already existing entry
      in RT's file (same camera, same model), your values will replace RT's ones.
   2. If you set the Black level(s) values in your user file for an already existing
      entry in RT's file, your values will replace RT's ones, even if RT's ones are
      more complete and/or detailed. You might want to copy/paste RT's levels first
      (if provided) to your user's file and complete/modify it.

      Same for the White level(s), independently from the Black level(s).


----------------------------------------------------------------------------------


This file is in JSON format and contains camera constants which RawTherapee uses
when parsing raw files.

Raw files themselves unfortunately do not contain all information needed for making
a raw conversion, typically color response information and black/white levels are
missing. That's why this file is needed.

It's read once during startup, so if the file is updated you need to restart
RawTherapee in order to take effect. The file is not intended for modification by
the casual user, but advanced users can add missing camera information to this file.
If you do so please report at http://code.google.com/p/rawtherapee/issues so we can
extend the distributed version of this file so your provided camera information
becomes available to all.

RawTherapee uses DCRAW as the raw format parser. DCRAW contains hard-coded camera
constants, but not for all cameras and not always accurate information. For example
DCRAW only support one white level, while some cameras have different white levels
per channel and per ISO. If a camera is not listed in this file the constants from
DCRAW will be used, if listed here this information will override any constants in
DCRAW (if any).

Some cameras may only have partial information here, for example if the raw file
itself contains a color matrix it's not entered here. A camera whose black level
is measured on special pixels in the raw file should only have white levels here
etc.

Examples:

    {
        // make and model separated with single space, must match make
        // and model as provided by dcraw (case-insensitive).
        "make_model": "ManufacturerA ModelB",
        // ColorMatrix with D65 Calibration Illuminant, in dcraw format
        "dcraw_matrix": [ 7530, -1942, -255, -4318, 11390, 3362, -926, 1694, 7649 ],
        // black level (or black offset if a base black is already calculated by Dcraw, see Panasonic) 
        // and white level same for all colors at all ISOs
        "ranges": { "black": 10, "white": 1000 },
	// crop away masked sensor borders, 10 pixels left, 20 pixels top, resulting image width/height 4000x3000
	// instead of width/height you can write a negative number which specifies how much of right/bottom border
	   that should be removed but keep in mind that sometimes after converting to DNG the borders are already 
         cropped so the "negative number" way is not totally safe.
	"raw_crop": [ 10, 20, 4000, 3000 ],
	// Almost same as MaskedAreas DNG tag, used for black level measuring here two areas defined
	"masked_areas": [ 51, 2, 3804, 156, 51, 5794, 3804, 5792 ],
       The difference here is the meaning of the numbers which here are expressing the absolute distance (in pixels) 
       of each side of each rectangular "masked area" from the top and left side of the sensor 
       - the first number is the distance of the top edge from the sensor's top
       - the second is the distance of the left side from the sensors left
       - the third is the distance of the bottomn side from the sensors top
       - the fourth is the distance of the right side from the sensor's left
    },

    {
        "make_model": "ManufacturerA ModelB",
        "dcraw_matrix": [ 7530,-1942,-255,-4318,11390,3362,-926,1694,7649 ],
        // black and white levels per ISO per channel
        // this example only two ISOs, normally the list should be more populated.
        // When RawTherapee asks for black/white levels for a specific ISO the closest
        // match is picked.
        "ranges": {
            "black": [
                { "iso": 100,  "levels": 10 }, // here only one level, same level for all channels
                { "iso": 3200, "levels": [ 50, 60, 50 ] } // 3 levels, G2 same as G1
            ],
            "white": [
                { "iso": 100,  "levels": [ 10000, 11000, 10000, 12000 ] }, // 4 levels, G1 and G2 different
                { "iso": 3200, "levels": [ 11000, 11000, 10000, 12000 ] }
            ]
        }
    }

How to measure white levels:
----------------------------

Dcraw which provides the default values to RawTherapee often provides too high
white levels, and only provides a single value regardless of color channel, ISO
or aperture. If you open an image with a large clipped area and that is
rendered in a pink/magenta color rather than white it usually means that the
white level constant is too high. You can fix this by adjusting the
"Raw White Point" in the raw tab inside RawTherapee, or permanently fix it by
measuring and providing a more exact white level in camconst.json so
RawTherapee gets to know from start where the camera actually clips.

Providing a complete and detailed white-level profile can be a quite large
and complicated effort. As an alternative you can provide a simpler profile.
We suggest one of the following alternatives in rising difficulty (and
generally diminishing return):

A) Provide a single white-level value measured on the native ISO (base ISO).
   For many cameras this will actually be complete information, those that
   don't vary on channel, ISO or aperture.
B) Check through all ISOs and if there are differences in white level provide
   an array with white level per ISO.
C) In addition to ISO, check for aperture scaling and add that.
D) In addition to ISO and aperture scaling check for color channel
   differences and add that.

Doing A) is often better than nothing, as dcraw's default is often too high.
B) can also be worthwhile for some cameras (or else you'll get pink highlights
for some ISOs), while C) and D) can generally be seen as fine-tuning.

Here follows a guide how to measure white levels (clipping levels):

Shoot with your camera into a bright light source, such as a lamp, and make
sure the shutter speed is long enough to get overexposure (we want
clipping!). Preferably overexpose lightly, say 1 or 2 stops if you can. The
reason for this is that some cameras with fuzzy white levels may look less
fuzzy than they actually are if over-exposure is heavy.

Use f/5.6 or smaller aperture (=larger f-number) to avoid any raw scaling
the camera might have for large apertures.

Open the file in a raw analyzer such as Rawdigger and check the pixel values
for the clipped areas (if you are using Rawdigger, make sure you have disabled
"subtract black" in preferences or else sample values can be wrong). In this
stage we always look at white level before black level subtraction! White
levels can be different on color channel (R, G1, B, G2, note the two greens,
most often both green channels have the same white level though) and vary
depending on ISO setting, so if you want to provide a complete profile make
one shoot for each ISO (even 1/3 steps, so yes it can be quite a lot of
pictures to shoot and check).

In addition, many cameras scale the raw values for large apertures. It's
generally not that important to cover this, but if you want to extract most
out of the camera you should cover this too. Then you need to shoot with a
wide aperture lens (ideally the widest available from the manufacturer) and
test each aperture (1/3 steps) from the widest (say f/1.2) until the camera
stops scaling the raw values (usually f/2.8 or f/4.0). If the camera also
have ISO scaling you need to shoot at these different ISOs to detect any
differences in scaling, there can be a bit of variation. If you don't have
access to the widest lens available for the system (say only an f/1.8 lens
instead of an f/1.2) it can still be valuable to have the values down to
what you can provide. Brands known to have models that have aperture scaling
of white levels include Canon and Nikon. Note that if white levels are not
scaled the camera may have raw scaling anyway (Sony for example), but as
such scaling will not affect raw decoding we don't need to care about that.

PROVIDE CONSERVATIVE VALUES. Most cameras have a little noise at the white
level, and some can have a lot. In your raw analyzer, move around and look at
the values in the clipped areas to get a sense of the variation, and/or look
at the histogram. While it's common to with very little variation, say only
+/-2 units, some can have +/-500 or more (some may have different variation
depending on ISO). There can also be camera-to-camera variation.

If the white level is set too high RawTherapee will not think the pixels are
clipped and you can get discoloured highlights (usually pink), this is what
we want to avoid. If white level is set too low RawTherapee will clip early, ie
you lose a little highlight detail, but the color is rendered correctly and
highlight reconstruction can work properly, so this is not as bad. This is why
we want conservative values.

By conservative values we mean that if you see a white level of most often
15760 and occassionally 15759 (ie very small variation of white level which
is a common case), you set the white level around 40-80 14bit units below or
10-20 12bit units. Say at 15700 in this example, or 4080 instead of 4095 for 
12bit raws. This way we get a little margin from noise and camera variation.
Since sensor raw values are linear you lose in this example log2(1-50/15760) =
-0.005 stop of detail, ie irrelevant. Thus it's better to provide RawTherapee
with knowledge where the image clips rather than keeping that last 0.005 stop
of highlight information and risking that clipping will not be detected
properly.

It is very usual for white level to be a bell distribution instead of a candle
when the camera applies long exposure noise reduction by subtracting a black frame
and/or when the system is destabilized due to temperature. Some models have
always a bell distribution at WL. 
If you have a fuzzy white level look at the linear histogram; you will probably
see a normal/gaussian distribution (bell shape) noise peak at clipping and
probably also a peak at a hard raw data clip level usually at or close to a
power of two - 1, such as 4095 or 16383. Then you pick a value just before the
bell shape rises, ie to the left of the bell meaning that you cut away the
whole fuzzy noise peak. If a little of the starting edge of the noise will be
included it's not harmful, but 99% of it should be above.
This would mean that it's better to measure white level on long exposure/ high temp
raws but since this if difficult and time consuming we choose to measure on normal
raws and cover the abnormalities whith the conservative WL values.

If you have used Adobe's DNG Converter and analyzed it's output you may have
noticed that it's very conservative regarding white levels, ie it cuts away
quite a lot from the top. While we also recommend to be conservative, you can
generally be a little bit less so than Adobe's DNG Converter. RawTherapee is
meant to max out what you can get from your camera, and the white levels should
mirror that, within reason.

The aperture scaling feature is meant to raise the white level to not miss out
on highlight detail when the camera has scaled the raw values (and thus
raised white levels). Many cameras do this, but not all, and can only do it
for lenses that report aperture to the camera (ie you see it in the EXIF
data). Providing proper aperture scaling values is a bit more advanced task,
so if you are unsure we recommend to skip that part.

Beware that the raw format may have a ceiling so that it clips scaled values,
for example the Canon 5D mark II maxes out at 16383 which happens at f/1.8
for ISOs with the white level at 15750, but for ISO160 when the white level
is 12800 it does not max out. If there is such a raw limit it must also be
provided ("ranges":"white_max"). Usually you will not need a margin on
white_max as it clips there as a result of an in-camera math operation.

Note that aperture scaling can be quite small, for the 5D mark II it's only
0.2 stop down to f/1.2 and then it can be discussed if it's worthwhile to care.
The "worst" cameras scale about 0.6 stops though, and then it's more
valuable to compensate. If you skip aperture scaling RawTherapee will clip the
files a little bit too early and you miss that last fraction of highlight
detail, but you get no processing problems. Setting unconservative scale
factors can on the other hand cause a too high whitelevel and break highlight
processing, so be careful.

Scaling can vary sligthly depending on ISO (if white levels vary) so make
sure to provide conservative scalings so regardless of ISO you don't get a
too high white level. We recommend to keep a small margin here also
white levels, ie 0.5% lower or so. For example if base (not conservative!)
white level is 15750 and the scaled is 16221 we have a scaling factor of
16221/15750=1.0299 ie +2.9% we set the factor to 1.025 to keep a margin.
The abnormal cases are already covered by setting conservative per ISO White levels.

The scale factor you provide here is applied on the white level before black
level subtraction (if any), ie directly on the white level value you provide in
the camconst.json file. Black level (if provided) is not scaled. Please report
to us if you come across a camera which scales black levels, then we can add
that as an option. Usually the camera applies an offset to shift back the
black level to the standard level after scaling.

If RawTherapee doesn't find an entry for the aperture used in the image, it
will pick the closest above. Ie if the apertures 1.0 and 2.0 is in the table
and the image has aperture 1.2, it will pick scaling for 2.0, even if 1.0 is
the closer aperture. The reason for always checking the closest above is that
we rather get a bit too low white level than too high, as discussed before.

Some cameras have different white levels on different color channels. When
this is the case the difference is often so small so you can just provide a
single value instead, ie a conservative value based on the lowest clipping.

What we know at the time of writing about different brands/models (not
complete info):

 - Canon CR2: typically same clipping per channel, but significant variations
   on ISO and aperture. Maxes out at 16383, black level measured on masked
   black pixels, ie don't provide that.
 - Nikon NEF: sometimes different clipping per color (most often negligible
   though). Will do aperture and ISO scaling, but often to a lesser extent
   than Canon files, ie not as much to gain.
 - Sony ARW2: no scaling. Generally black level around 512, and white level
   16350 and to be conservative say 16300.

Note that some raw formats may go through a certain amount of pre-processing
based on meta data, such as curve and levels adjustments and various
calibrations. The Phase One IIQ is one example, and this means that if you
look at the data in a raw analyzer such as RawDigger it may perform a
different type of preprocessing than RawTherapee's loader does, and you may
end up providing incompatible black/white levels.

You can use RawTherapee for analysis too, it's safer as you are using it's
own raw decoder but it's not as user-friendly: enable verbose mode in options
so you get output on the console. When you load a file you will see a message 
of current black and white levels and if they came from dcraw or camconst.json.
If you're adjusting an existing camconst.json value you can just read what it is in
the file and not need to enable verbose output.

Reset exposure sliders to neutral, and zoom in on a large clipped highlight.
Move around the mouse pointer within, it should show stable 100% on R G B. If
so, the white level is not too high, it could however be too low. To test that,
go to the raw tab and adjust the "whitepoint linear correction factor", reduce
it until one of the channels is no longer 100%, and then increase in steps of
0.01 until all are 100 again. Usually you play around in the range 0.90 to
0.99, ie a very small adjustment. When you've found this factor you should
apply it on the old white level to find a new larger one. As RT's "whitepoint
linear correction factor" work after blacklevel subtraction and camconst.json
want values without it we need to do some math:

BL = black level (typically something near 0, 256, 512, 1024 or 2048 find it in the
     verbose output or if available in camconst.json)
F =  whitepoint linear correction factor you just found out (typically in the
     range 0.90 to 0.99 if you need to increase white level, 1.01 to 1.10 if
     decrease)
oldWL = old white level, found in verbose output or in camconst.json if
        available.

new white level = BL + (oldWL - BL) / F

Note that if black level is 0 which it is for many cameras, the formula
simplifies to: new white level = oldWL / F.

Here's an example from a Canon 1000D: black level is 256, old white level is
3651, whitepoint correction factor becomes 0.90, then new white level is
256 + (3651 - 256) / 0.9 = 4028.

If your camera have different black levels per channel use the one which
yields the smallest white level (can be the largest or smallest, test!).

This new white level you then enter in your camconst.json file. The same
procedure can be used if the white level is too high, ie if you see pink
highlights, then increase the correction factor above 1.0 until you just start
seeing stable 100% on all channels, you use the same formula to calculate the
new smaller white level.

About black levels:
-------------------

Unlike for white levels it's much more common that black levels can be
derived from the format. Either it's simply 0 (typical for old Nikon cameras, 
newer Nikons (year2013-14) have a BL at around 150 12bit or 600/768 14bit ), 
or it can be derived from masked pixels (typical for Canon cameras) or otherwise
be extracted from some tag. 
Some formats have built-in subtraction information and are pre-processed by DCRaw 
to end up at a black level of zero(Phase One's IIQ).
For Panasonic raws beginning from Dcraw v9.21 Dcraw/RT reads base BL from exif data
(tags 0x001c BlackLevelRed, 0x001d BlackLevelGreen, 0x001e BlackLevelBlue)and we 
define in "ranges": { "black": the needed offset of around 15. The (total) BL RT displays is base+offset 
In all, you typically should not care about the black level in camconst.json,
any information that can be derived from the raw file itself should not be specified in camconst.json! 
Sony's ARW2 is one of the few exceptions (with single black level around 512, or 800 for RX10/100 models),
but DCraw generally has good constants for these already.

Currently we have chosen not to provide any guide how to measure black levels
as we don't think it will be a common task (it's also more difficult to do
than measure white levels). If you experience a black level issue it's more
likely due to a format parsing bug which should be fixed in DCRaw and/or
RawTherapee's raw format parser.

How does a black level issue look? If the image has a color cast and is
possibly duller than normal it's likely that black levels are off. The color
cast is typically stronger in darker colors but it can be hard to see, it's
more often experienced as a cast over the whole image.

*/
{"camera_constants": [

/*

When adding camera constants please set a quality level so we know the status for future updates

Quality A: complete information, no need to add more, to the best of our knowledge
Quality B: not complete, but very little to gain from adding more
Quality C: complementing with additional information would provide significant gain
Quality X: unknown, ie we knowing to little about the camera properties to know if
           we have enough info or not.

*/

    { // quality A 
        "make_model": "Canon EOS 5D Mark II",
        "dcraw_matrix": [ 4716,603,-830,-7798,15474,2480,-1496,1937,6651 ],
        "ranges": {
            // black levels are read from raw masked pixels
	    // white levels are same for all colors, but vary on ISO
            "white": [
                { "iso": 50,  "levels": 15600 }, // typical: 15760
                { "iso": 100, "levels": 15600 },
                { "iso": 125, "levels": 15600 },
                { "iso": 160, "levels": 12700 },
                { "iso": 200, "levels": 15600 },
                { "iso": 250, "levels": 15600 },
                { "iso": 320, "levels": 12700 }, // typical: 12810
                { "iso": 400, "levels": 15600 },
                { "iso": 500, "levels": 15600 },
                { "iso": 640, "levels": 12700 },
                { "iso": 800, "levels": 15600 },
                { "iso": 1000, "levels": 15600 },
                { "iso": 1250, "levels": 12700 },
                { "iso": 1600, "levels": 15600 },
                { "iso": 2000, "levels": 15600 },
                { "iso": 2500, "levels": 15600 },
                { "iso": 3200, "levels": 15600 },
                { "iso": 4000, "levels": 15600 },
                { "iso": 5000, "levels": 15600 },
                { "iso": 6400, "levels": 16200 }, // typical: 16383
                { "iso": 12800, "levels": 16200 },
                { "iso": 25600, "levels": 16200 }
            ],
	    "white_max": 16383,
            "aperture_scaling": [
		/* note: no scale factors known for and f/1.0 (had no lenses to test with), but the
		   typical 15700 white level maxes out at "white_max" for f/1.8 and below anyway. */
		{ "aperture": 1.2, "scale_factor": 1.100 }, // guessed by relative 5DIII data
		{ "aperture": 1.4, "scale_factor": 1.077 },
		{ "aperture": 1.6, "scale_factor": 1.054 },
		{ "aperture": 1.8, "scale_factor": 1.039 },
		{ "aperture": 2.0, "scale_factor": 1.031 },
		{ "aperture": 2.2, "scale_factor": 1.021 },
		{ "aperture": 2.5, "scale_factor": 1.016 },
		{ "aperture": 2.8, "scale_factor": 1.010 },
		{ "aperture": 3.2, "scale_factor": 1.004 },
		{ "aperture": 3.5, "scale_factor": 1.003 }
            ]
        }
    },
    { // quality A,
        "make_model": "Canon EOS 5D Mark III",
        "dcraw_matrix": [ 6722,-635,-963,-4287,12460,2028,-908,2162,5668 ],
        "ranges": {
            // black levels are read from raw masked pixels
	      // white levels are same for all colors, but vary on ISO
            "white": [
                { "iso": [ 50, 100, 125, 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 6400, 8000, 12800, 16000, 20000 ], "levels": 15180 }, // typical: 15282
                { "iso": [ 160, 320, 640, 1250, 2500, 5000, 10000 ], "levels": 13200 }, // typical: 13306
                { "iso": [ 25600, 32000, 40000, 51200, 102400 ], "levels": 16200 }
            ],
	    "white_max": 16383,
            "aperture_scaling": [
            { "aperture": 1.2, "scale_factor": 1.130 },
            { "aperture": 1.4, "scale_factor": 1.090 },
            { "aperture": 1.6, "scale_factor": 1.065 },
            { "aperture": 1.8, "scale_factor": 1.040 },
            { "aperture": 2.0, "scale_factor": 1.025 },
            { "aperture": 2.2, "scale_factor": 1.020 },
            { "aperture": 2.5, "scale_factor": 1.015 },
			{ "aperture": 2.8, "scale_factor": 1.010 },
			{ "aperture": 3.2, "scale_factor": 1.005 },
			{ "aperture": 3.5, "scale_factor": 1.002 }
			]
		}
    },
    { // Quality A, some missing scaling factors are safelly guessed - most samples by sfink16 at RT forums
        "make_model": "Canon EOS 6D",
        "dcraw_matrix": [ 7034,-804,-1014,-4420,12564,2058,-851,1994,5758 ],
        "ranges": { 
               "white": [ 
                { "iso": [ 50, 100, 125, 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 6400, 8000, 12800, 16000, 25600 ], "levels": 15180 }, // typical 15283
                { "iso": [ 160, 320, 640, 1250, 2500, 5000, 10000, 20000 ], "levels": 13100 }, // typical 13225
                { "iso": [ 51200, 102400  ], "levels": 16280 } // typical 16383 
                        ], 
               "white_max": 16383,
            "aperture_scaling": [
		/* note: no scale factors known for f/1.0 (had no lenses to test with), but the
		   ISO 160-320... 12650 white levels maxes out at "white_max" for f/1.2 and below anyway. */
		{ "aperture": 1.2, "scale_factor": 1.130 }, // from histogramm 1 gap in every 7 levels
		{ "aperture": 1.4, "scale_factor": 1.090 }, // histogram 3 gaps in every 32 levels
		{ "aperture": 1.6, "scale_factor": 1.060 }, // 16213/15283 
		{ "aperture": 1.8, "scale_factor": 1.040 }, // guessed
		{ "aperture": 2.0, "scale_factor": 1.030 }, // 15800/15283
		{ "aperture": 2.2, "scale_factor": 1.020 }, // guessed
		{ "aperture": 2.5, "scale_factor": 1.015 }, // 15541/15283
		{ "aperture": 2.8, "scale_factor": 1.010 }, // 15437/15283
		{ "aperture": 3.2, "scale_factor": 1.005 }, // 15361/15283
		{ "aperture": 3.5, "scale_factor": 1.000 } // no sample
            ]
        }
    },
    { // Quality A, ISO and aperture WL data by CharlyW at RawTherapee forums, missing samples safely guessed
        "make_model": "Canon EOS 7D",
        "dcraw_matrix": [ 5962,-171,-732,-4189,12307,2099,-911,1981,6304 ], // Colin Walker
       // "dcraw_matrix": [ 6844,-996,-856,-3876,11761,2396,-593,1772,6198 ], // dcraw
        "ranges": { 
               "white": [ 
                { "iso": [ 100, 125 ], "levels": 13480 }, // typical 13584
                { "iso": [ 160, 320, 640, 1250, 2500 ], "levels": 12550 }, // typical 12650
                { "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 5000, 6400, 12800 ], "levels": 15200 } // typical 15304 
                        ], 
               "white_max": 16383,
            "aperture_scaling": [
		/* note: no scale factors known for f/1.2 and f/1.0 (no lenses to test with), but the
		   typical 12650 white levels maxes out at "white_max" for f/1.4 and below anyway. */
		{ "aperture": 1.4, "scale_factor": 1.250 }, // guessed
		{ "aperture": 1.6, "scale_factor": 1.150 }, // guessed
		{ "aperture": 1.8, "scale_factor": 1.110 }, // 15196/13584
		{ "aperture": 2.0, "scale_factor": 1.080 }, // 14734/13584
		{ "aperture": 2.2, "scale_factor": 1.050 }, // 14386/13584
		{ "aperture": 2.5, "scale_factor": 1.040 }, // 14272/13584
		{ "aperture": 2.8, "scale_factor": 1.030 }, // 14042/13584
		{ "aperture": 3.2, "scale_factor": 1.015 }, // guessed 
		{ "aperture": 3.5, "scale_factor": 1.000 } // guessed negligible
                                ]
                  }
    },

    { // Quality A - ISO and aperture WL data by Ilias at Avclub gr forums
        "make_model": "Canon EOS 40D",
        "dcraw_matrix": [ 6071,-747,-856,-7653,15365,2441,-2025,2553,7315 ],
        "raw_crop": [ 30, 18, 3908, 2602 ], 
        "masked_areas": [ 20, 2, 2616, 20 ],
        "ranges": { 
               "white": [ 
                { "iso": 100, "levels": 13700 }, // typical 13825
                { "iso": [ 125, 250, 500, 1000, 3200 ], "levels": 16280 }, // typical 16383
                { "iso": [ 160, 320, 640 ], "levels": 12600 }, // typical 12744
                { "iso": [ 200, 400 ], "levels": 16100 }, // typical 16224
                { "iso": 800, "levels": 15900 }, // gaussian histogram 15900-16224
                { "iso": 1600, "levels": 14900 }, // gaussian histogram 14900-15750
                { "iso": 1250, "levels": 11900 } //  gaussian histogram 11900-12500
                        ], 
               "white_max": 16383,
            "aperture_scaling": [
		/* note: no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but the
		   typical 12700 white levels maxes out at "white_max" for f/1.4 and below anyway. */
		{ "aperture": 1.4, "scale_factor": 1.265 }, // 16142/12744
		{ "aperture": 1.6, "scale_factor": 1.145 }, // 15872/13825
		{ "aperture": 1.8, "scale_factor": 1.090 }, // 15103/13825
		{ "aperture": 2.0, "scale_factor": 1.035 }, // 14334/13825
		{ "aperture": 2.2, "scale_factor": 1.005 }, // 13950/13825
		{ "aperture": 2.5, "scale_factor": 1.000 } // 13825/13825
            ]
                  }
    }, 
    { // Quality A, ISO and aperture WL data by Ayshih at Magic Lantern forums
        "make_model": "Canon EOS 50D",
        "dcraw_matrix": [ 4920,616,-593,-6493,13964,2784,-1774,3178,7005 ],
        "ranges": { 
               "white": [ 
                { "iso": [ 100, 125 ], "levels": 13300 }, // typical 13432
                { "iso": [ 160, 320, 640, 1250 ], "levels": 12700 }, // typical 12790-12810
                { "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 2500, 3200 ], "levels": 15630 }, // typical 15763-15733
                { "iso": [ 6400, 12800 ], "levels": 16200 } // typical 16383
                        ], 
               "white_max": 16383,
            "aperture_scaling": [
		{ "aperture": 1.4, "scale_factor": 1.270 }, 
		{ "aperture": 1.6, "scale_factor": 1.150 }, 
		{ "aperture": 1.8, "scale_factor": 1.090 }, 
		{ "aperture": 2.0, "scale_factor": 1.040 }, 
		{ "aperture": 2.2, "scale_factor": 1.020 }, 
		{ "aperture": 2.5, "scale_factor": 1.010 },
		{ "aperture": 2.8, "scale_factor": 1.000 },
		{ "aperture": 3.2, "scale_factor": 1.000 }
            ] 
                  }
    },
    { // Quality A, ISO and aperture WL data copyed from Shalrath's 60D data at RawTherapee forums
        "make_model": "Canon EOS 60Da",
        "dcraw_matrix": [ 17492,-7240,-2023,-1791,10323,1701,-186,1329,5406 ], // 60Da dng d65
        "ranges": { 
               "white": [ 
                { "iso": [ 100, 125 ], "levels": 13480 }, // typical 13583
                { "iso": [ 160, 320, 640, 1250, 2500 ], "levels": 12550 }, // typical 12650
                { "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 5000, 6400, 12800 ], "levels": 15200 } // typical 15304 
                        ], 
               "white_max": 16383,
            "aperture_scaling": [
		/* note: no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but the
		   typical 12650 white levels maxes out at "white_max" for f/1.4 and below anyway. */
		{ "aperture": 1.4, "scale_factor": 1.300 }, // gaps 81of301
		{ "aperture": 1.6, "scale_factor": 1.200 },
		{ "aperture": 1.8, "scale_factor": 1.140 },
		{ "aperture": 2.0, "scale_factor": 1.080 }, // gaps 1of11
		{ "aperture": 2.2, "scale_factor": 1.060 },
		{ "aperture": 2.5, "scale_factor": 1.050 },
		{ "aperture": 2.8, "scale_factor": 1.030 },
		{ "aperture": 3.2, "scale_factor": 1.015 },
		{ "aperture": 3.5, "scale_factor": 1.000 } // no sample but it would be negligible
            ]
                  }
    },
    { // Quality A, ISO and aperture WL data by Shalrath at RawTherapee forums
        "make_model": "Canon EOS 60D",
        "dcraw_matrix": [ 6719,-994,-925,-4408,12426,2211,-887,2129,6051 ],
        "ranges": { 
               "white": [ 
                { "iso": [ 100, 125 ], "levels": 13480 }, // typical 13583
                { "iso": [ 160, 320, 640, 1250, 2500 ], "levels": 12550 }, // typical 12650
                { "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 5000, 6400, 12800 ], "levels": 15200 } // typical 15304 
                        ], 
               "white_max": 16383,
            "aperture_scaling": [
		/* note: no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but the
		   typical 12650 white levels maxes out at "white_max" for f/1.4 and below anyway. */
		{ "aperture": 1.4, "scale_factor": 1.300 }, // gaps 81of301
		{ "aperture": 1.6, "scale_factor": 1.200 },
		{ "aperture": 1.8, "scale_factor": 1.140 },
		{ "aperture": 2.0, "scale_factor": 1.080 }, // gaps 1of11
		{ "aperture": 2.2, "scale_factor": 1.060 },
		{ "aperture": 2.5, "scale_factor": 1.050 },
		{ "aperture": 2.8, "scale_factor": 1.030 },
		{ "aperture": 3.2, "scale_factor": 1.015 },
		{ "aperture": 3.5, "scale_factor": 1.000 } // no sample but it would be negligible
            ]
                  }
    },
    { // Quality B, more aperture scale factors needed
        "make_model": [ "Canon EOS 70D", "Canon EOS 7D Mark II" ], // guess for 7DII as the sensors look "same"
        "dcraw_matrix": [ 7034,-804,-1014,-4420,12564,2058,-851,1994,5758 ],
        "ranges": { 
               "white": [ 
                { "iso": [ 100, 125 ], "levels": 13480 }, // typical 13583
                { "iso": [ 160, 320, 640, 1250, 2500, 5000 ], "levels": 12450 }, // typical 12559
                { "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 6400, 8000, 10000 ], "levels": 15200 }, // typical 15303 - ISO 8000-10000 guessed   
                { "iso": [ 12800, 25600 ], "levels": 16200 } // typical 16383      
                        ], 
               "white_max": 16383,
            "aperture_scaling": [
		/* note: no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but even with the
		   12500 white levels nearly maxes out for f/1.4 and below anyway. */
		{ "aperture": 1.4, "scale_factor": 1.240 }, // guessed
		{ "aperture": 1.6, "scale_factor": 1.160 }, // guessed
		{ "aperture": 1.8, "scale_factor": 1.110 }, // 31of35
		{ "aperture": 2.0, "scale_factor": 1.060 }, // guessed 
		{ "aperture": 2.2, "scale_factor": 1.030 }, // guessed
		{ "aperture": 2.5, "scale_factor": 1.015 }, // guessed
		{ "aperture": 2.8, "scale_factor": 1.008 }, // 15432/15303
		{ "aperture": 3.2, "scale_factor": 1.000 },
		{ "aperture": 3.5, "scale_factor": 1.000 } 
            ]
                  }
    },

    { // Quality b, scaling factors missing but guessed safely
        "make_model": [ "Canon EOS 1200D", "Canon EOS Rebel T5", "Canon EOS 600D", "Canon EOS Rebel T3i" ],
        "dcraw_matrix": [ 6461,-907,-882,-4300,12184,2378,-819,1944,5931 ], // dcp D65 colormatrix2
        "ranges": { 
               "white": [ 
                { "iso": [ 100, 125 ], "levels": 13480 }, // typical 13583
                { "iso": [ 160, 320, 640, 1250, 2500, 5000, 10000 ], "levels": 12550 }, // typical 12650
                { "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 6400, 8000, 12800 ], "levels": 15200 } // typical 15303 
                        ], 
               "white_max": 16383,
            "aperture_scaling": [
		/* note: no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but the
		   typical 12650 white levels maxes out at "white_max" for f/1.4 and below anyway. */
		{ "aperture": 1.4, "scale_factor": 1.290 }, // guessed from 60D data
		{ "aperture": 1.6, "scale_factor": 1.190 }, // guessed
		{ "aperture": 1.8, "scale_factor": 1.140 }, // guessed
		{ "aperture": 2.0, "scale_factor": 1.090 }, // 12293/11222 = 1.095
		{ "aperture": 2.2, "scale_factor": 1.060 }, // 11971/11222 = 1.066
		{ "aperture": 2.5, "scale_factor": 1.050 }, // guessed
		{ "aperture": 2.8, "scale_factor": 1.030 }, // iso100: 14042/13584=1.0336 - iso200 15820/15303 = 1.0348
		{ "aperture": 3.2, "scale_factor": 1.000 }, // 
		{ "aperture": 3.5, "scale_factor": 1.000 } // 
            ]
                  }
    },

    { // Quality A, only one scaling factor missing and guessed safely
        "make_model": [ "Canon EOS 650D", "Canon EOS Rebel T4i" ],
        "dcraw_matrix": [ 6602,-841,-939,-4472,12458,2247,-975,2039,6148 ],
        "ranges": { 
               "white": [ 
                { "iso": [ 100, 125 ], "levels": 13480 }, // typical 13583
                { "iso": [ 160, 320, 640, 1250, 2500, 5000, 10000 ], "levels": 12550 }, // typical 12650
                { "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 6400, 8000 ], "levels": 15200 }, // typical 15303 
                { "iso": [ 12800, 25600 ], "levels": 16200 } // typical 16383
                        ], 
               "white_max": 16383,
            "aperture_scaling": [
		/* note: no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but the
		   typical 12650 white levels maxes out at "white_max" for f/1.4 and below anyway. */
		{ "aperture": 1.4, "scale_factor": 1.200 }, // 16332/13583
		{ "aperture": 1.6, "scale_factor": 1.080 }, // guessed
		{ "aperture": 1.8, "scale_factor": 1.055 }, // 14372/13583
		{ "aperture": 2.0, "scale_factor": 1.030 }, // 14034/13583
		{ "aperture": 2.2, "scale_factor": 1.025 }, // 13921/13583
		{ "aperture": 2.5, "scale_factor": 1.020 }, // 
		{ "aperture": 2.8, "scale_factor": 1.000 }, // 
		{ "aperture": 3.2, "scale_factor": 1.000 }, // 
		{ "aperture": 3.5, "scale_factor": 1.000 } // 
            ]
                  }
    },

    { // Quality B, missing scaling factors are guessed safely from 650D relative data
        "make_model": "Canon EOS-M",
        "dcraw_matrix": [ 6602,-841,-939,-4472,12458,2247,-975,2039,6148 ],
        "ranges": { 
               "white": [ 
                { "iso": [ 100, 125 ], "levels": 13480 }, // typical 13583
                { "iso": [ 160, 320, 640, 1250, 2500, 5000, 10000 ], "levels": 12550 }, // typical 12650
                { "iso": [ 200, 250, 400, 500, 800, 1000, 1600, 2000, 3200, 4000, 6400, 8000 ], "levels": 15200 }, // typical 15303 
                { "iso": [ 12800, 25600 ], "levels": 16200 } // typical 16383
                        ], 
               "white_max": 16383,
            "aperture_scaling": [
		/* note: no scale factors known for f/1.2 and f/1.0 (had no lenses to test with), but the
		   typical 12650 white levels maxes out at "white_max" for f/1.4 and below anyway. */
		{ "aperture": 1.4, "scale_factor": 1.200 }, // guessed
		{ "aperture": 1.6, "scale_factor": 1.080 }, // guessed
		{ "aperture": 1.8, "scale_factor": 1.055 }, // guessed
		{ "aperture": 2.0, "scale_factor": 1.030 }, // 15821/15303
		{ "aperture": 2.2, "scale_factor": 1.025 }, // 15691/15303
		{ "aperture": 2.5, "scale_factor": 1.020 }, // 12947/12650
		{ "aperture": 2.8, "scale_factor": 1.000 }, // 
		{ "aperture": 3.2, "scale_factor": 1.000 }, // 
		{ "aperture": 3.5, "scale_factor": 1.000 } // 
                                ]
                  }
    },

    { /*   Quality B, needs a way to auto apply 3/2 or 4/3 crops (read exif tags ..) to work better with auto distortion, 
           for the moment just comment-uncomment the desired raw crop */
        "make_model": "Canon PowerShot G1 X Mark II",
        "dcraw_matrix": [ 7378,-1255,-1043,-4088,12251,2048,-876,1946,5805 ], // D65 matrix from adobe dcp
 //       "raw_crop": [ 80, 50, 4400, 3316 ], // full frame 4480x3366 borders 80,50 - much shade in corners, no/wrong auto distortion   
 //        "raw_crop": [ 104, 144, 4360, 3128 ], // Mixed best average frame, width is 4352 from 3/2, height 3120 from 4/3 - auto distortion does not work correctly
 //        "raw_crop": [ 200, 144, 4168, 3128 ], // Optional official 4/3 frame 4160x3120, 4pix  borders, Left Border 204-4, Top Border 148-4
        "raw_crop": [ 104, 252, 4360, 2912 ], // Default official 3/2 frame 4352X2904, 4pix borders, Left Border 108-4, Top border 256-4
        "masked_areas": [ 148, 2, 3340, 78 ],
        "ranges": { "white": 16300 }
    },

    { //   Quality X, preliminary support, color data guessed from G16
        "make_model": "Canon PowerShot G7 X",
        "dcraw_matrix": [ 8020,-2687,-682,-3704,11879,2052,-965,1921,5556 ], // D65 matrix copy from Canon powershot G16
     //   "raw_crop": [ 116, 24, 5504, 3680 ], // Sensor size 5632x3710. Largest usefull frame 120-5616X28-3702 = 5504x3682, 4pix RTborders, Left Border 120-4, Top border 28-4
        "raw_crop": [ 128, 36, 5480, 3656 ], // Default official 3/2 frame 5472X3648, 4pix borders, Left Border 132-4, Top border 40-4
        "masked_areas": [ 40, 4, 3680, 76 ],
        "ranges": { "white": 4080 }
    },

    { // Quality A, changes for raw crop which is wrong (larger) in Dcraw
        "make_model": "Canon PowerShot S120",
        "dcraw_matrix": [ 6961,-1685,-695,-4625,12945,1836,-1114,2152,5518 ],
        "raw_crop": [ 120, 30, 4024, 3030 ],
        "masked_areas": [ 32, 2, 3028, 80 ],
        "ranges": { "white": 4050 }
    },

    { // Quality X, preliminary support, color data guessed
        "make_model": "Canon PowerShot SX60 HS",
        "dcraw_matrix": [ 12432,-4753,-1247,-2110,10691,1629,-412,1623,4926 ], // copy from SX50
        "raw_crop": [ 120, 34, 4616, 3464 ], // full raw 4768x3516, Usable 96,16,4672,3498 - Canon official 4608x3456 left 124 top 38, 
        "masked_areas": [ 20, 2, 3480, 80 ],
        "ranges": { "white": 4050 } // nominal 4080-4093
    },

    { // Quality A
        "make_model": "FUJIFILM S1",
        "dcraw_matrix": [ 12297,-4882,-1202,-2106,10691,1623,-88,1312,4790 ] // DNG_v8.5 D65
    },

     { // Quality B
        "make_model": [ "FUJIFILM X-T1", "FUJIFILM X-E2" ],
        "dcraw_matrix": [ 8458,-2451,-855,-4597,12447,2407,-1475,2482,6526 ], // DNG D65
//        "dcraw_matrix": [ 9289,-3279,-632,-3539,11137,2758,-1049,1950,6544 ], // X-RITE D55
        "ranges": { "white": 16100 }
    },

    { // Quality B
        "make_model": "FUJIFILM X30",
        "dcraw_matrix": [ 12328,-5256,-1144,-4469,12927,1675,-87,1291,4351 ], // DNG8.7rc1 D65
        "ranges": { "white": 4048 }
    },


    { // Quality A
        "make_model": [ "Nikon 1 V3", "Nikon 1 J4" ], // Same format
        "dcraw_matrix": [ 5958,-1559,-571,-4021,11453,2939,-634,1548,5087 ], // matrix from DNG_v8.5 d65 
    //    "dcraw_matrix": [ 5306,-1066,-469,-3865,11189,3076,-399,1341,5120 ], // matrix dXo D50,   
        "ranges": { "black": 200, "white": 4080 } // exif BL=800, lower WL to 4080 from 4095 due to some non linearity detected at raw highlights
    },
    { // Quality A,  
        "make_model": "Nikon 1 S2", //  
        "dcraw_matrix": [ 6612,-1342,-618,-3338,11055,2623,-174,1792,5075 ], // matrix from DNG_v8.5 d65 
        "ranges": { "black": 200, "white": 4080 } // exif BL=800
    },

    { // quality B, lacks aperture and ISO scaling, known to exist, but little to gain as the levels are so close to white_max
        "make_model": "Nikon D7000",
        "dcraw_matrix": [ 7530,-1942,-255,-4318,11390,3362,-926,1694,7649 ], // matrix provided by Tanveer(tsk1979)
        "ranges": {
	    // measured at ISO 100. ISO differences not measured, but known to exist
           "white": [ 16370, 15760, 16370 ], // typical R 16383, G 15778, B 16383

	    "white_max": 16383
	    // aperture scaling not measured, but known to exist, at f/1.8 the G channels hits white_max
	}
    },

    { // Quality B, does not work with 12bit files 
         "make_model": "Nikon D5300",
         "dcraw_matrix": [ 6988,-1384,-714,-5631,13410,2447,-1485,2204,7318 ], // adobe dcp d65
         "ranges": { "black": 600, "white": 16300 } // attention.. BL/WL values are for 14bit files, has to be BL150/WL4070 for 12bit files. WL typical 16383 set to 16300 for safety
    },

    { // Quality B, does not work with 12bit files 
         "make_model": "Nikon D750",
         "dcraw_matrix": [ 9020,-2890,-715,-4535,12436,2348,-934,1919,7086 ], // adobe dcp d65 DNGv8.7rc1
         "ranges": { "black": 600, "white": 16300 } // attention.. BL/WL values are for 14bit files, has to be BL150/WL4070 for 12bit files. WL typical 16383 set to 16300 for safety
    },

   { // quality B, lacks WL measures at intermediate ISOs (160-250-320 ..) and measures at long exposures with LongExposureNoiseReduction 
     //            aperture scaling known to exist, but little to gain as the levels are so close to white_max
        "make_model": "Nikon D610",
        "dcraw_matrix": [ 8178,-2245,-609,-4857,12394,2776,-1207,2086,7298 ], // dcp d65
        "raw_crop": [ 0, 0, 6034, 4028 ], // Dcraw has no raw crop for D610
        "ranges": {
            "white": [
               { "iso": [ 50, 100 ], "levels": [ 15800, 15700, 15800 ] }, // typical G1/G2 15778, R/B 15879 lowered to 15700, 15800 for possible WL distribution under LENR
               { "iso": [ 200, 400, 800 ], "levels": [ 16300, 15700, 16300 ] }, // 15878, 16383
               { "iso": 1600, "levels": [ 16300, 16100, 16300 ] }, // 16145-165, 16383
               { "iso": [ 3200, 6400, 12800, 25600 ], "levels": [ 16300, 16300, 16300 ] } // 16383
                     ],
        "white_max": 16383
                  }
   },
 
   { // quality B; Data from RussellCottrell at RT forums. Largest aperture scale factor is 1.013, about 1/50th of a stop
        "make_model": "Nikon D800E",
        "dcraw_matrix": [ 7866,-2108,-555,-4869,12483,2681,-1176,2069,7501 ], // D800/D800E from dcraw.c
        "ranges": {
            "white": [
               { "iso": [ 100, 125, 160, 200, 250, 320, 400, 500, 640, 800, 1000, 1250 ], "levels": [ 16300, 15700, 16300 ] }, // 15779-15781
               { "iso": [ 1600 ], "levels": 16000 }, // 16085-16113
               { "iso": [ 2000, 2500, 3200, 4000, 5000, 6400, 12800, 25600 ], "levels": 16300 } // 16383
                     ]
                  }
   },
   { // quality B; Data from RusselCottrell at RT forums. sensor is not uniform
        "make_model": "Nikon D700",
        "dcraw_matrix": [ 8139,-2171,-663,-8747,16541,2295,-1925,2008,8093 ],
        "ranges": { "white": 15800 } // Russell's lowest 15400.. nominal 15892 
   },  
   { // quality B, BL and colour matrix corrections for Dcraw's v9.22 r1467 preliminary support
     //            WL set at 16300 from nominal 16380 for possible non linearities with LENR
        "make_model": "Nikon D810",
     //   "dcraw_matrix": [ 6502,-2328,154,-4249,9943,4307,-1303,2538,8108 ], // dcraw 9.22 v1.467
        "dcraw_matrix": [ 9369,-3195,-791,-4488,12430,2301,-893,1796,6872 ], // dcp_v8.6 d65
        "raw_crop": [ 0, 0, 7380, 4928 ], // Official raw crop 7380x4928, 
        "ranges": { "black": 600, "white": 16300 }, // attention BL600 is for 14bit raws and has to be 150 for 12 bit raws. Typical WL at 16383
        "white_max": 16383
    },

    { // Quality A, new model, there is a conflict with E-M1 in Dcraw.cc, raw crop correction
        "make_model": "OLYMPUS E-M10",
        "dcraw_matrix": [ 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 ],
        "raw_crop": [ 0, 0, 4624, 3472 ], // largest valid - full frame is 4640x3472
//        "raw_crop": [ 4, 4, 4616, 3464 ], // olympus jpeg crop 8, 8, 4608, 3456
        "ranges": { "white": 4080 }
    },
    { // Quality A, white level correction
        "make_model": "OLYMPUS E-PM2",
        "dcraw_matrix": [ 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 ],
        "ranges": { "white": 4040 } // nominal 4056
    },

	/* since Dcraw_v9.21 Panasonic base BL is read from exif (tags 0x001c BlackLevelRed15 is BL offstet. 
      Dcraw/RT read the base offset from exif and calculates total BL = BLbase+BLoffset, 0x001d BlackLevelGreen, 0x001e BlackLevelBlue
      and we define here the needed offset of around 15. The total BL is base+offset */

	{ // Quality A , replicated from rawimage.cc
        "make_model": "Panasonic DMC-FZ150",
        "dcraw_matrix": [ 10435,-3208,-72,-2293,10506,2067,-486,1725,4682 ], // RT, copy from custom dcp d55
        "ranges": { "black": 15, "white": 4050 } // 15 is BL offstet. Dcraw/RT read the base offset from exif and calculates total BL = BLbase+BLoffset
    },

	{ // Quality B, New model, color data based on dng_v8.6
	  //            Intermediate ISO and Long exposure samples missing.         
        "make_model": "Panasonic DMC-FZ1000",
        "dcraw_matrix": [ 7830,-2696,-763,-3325,11667,1866,-641,1712,4824 ], // dcp_v8.6 d65
        "ranges": { 
		   "black": 15, // 15 is BL offstet. Dcraw/RT read the base offset from exif and calculates total BL = BLbase+BLoffset
		   "white": [
		      { "iso": 80, "levels": 3720 }, // exif:3277 distribution peak at 3742 up to +/- 10
		      { "iso": [ 125, 200, 400, 800, 1600, 3200, 6400, 12600, 25600 ], "levels": 4060 } // exif 4095 normal distribution 4080-4095
                    ]
                  } 
    },

	{ // Quality A
        "make_model": "Panasonic DMC-LF1",
        "dcraw_matrix": [ 9379,-3267,-816,-3227,11560,1881,-926,1928,5340 ],
        "ranges": { "black": 15, "white": 4050 } // 15 is BL offstet. Dcraw/RT read the base offset from exif and calculates total BL = BLbase+BLoffset
    },
    { // Quality A
        "make_model": [ "Panasonic DMC-TZ60", "Panasonic DMC-TZ61", "Panasonic DMC-ZS40", "Panasonic DMC-ZS41" ],
        "dcraw_matrix": [ 8607,-2822,-808,-3755,11930,2049,-820,2060,5224 ], // matrix from Adobe dcp v8.4
        "raw_crop": [ 8, 8, 4904, 3680 ], // crop according to exif 4896 X 3672 plus 4 pixels borders. RT's frame gets smaller than Dcraw but works better with auto distortion
        "ranges": { "black": 15, "white": 4050 } // 15 is BL offstet. Dcraw/RT read the base offset from exif and calculates total BL = BLbase+BLoffset
    },

	// Panasonic DMC-FZ150,G10,G1,G2,G3,G5,GF1,GF2,GF3 are included as overwrites of the same items of rawimage.cc to test the Dcraw9.21 patch
 
     { // Quality A, Replicated from rawimage.cc
        "make_model": [ "Panasonic DMC-G10", "Panasonic DMC-G2" ],
        "dcraw_matrix": [ 8310,-1811,-960,-4941,12990,2151,-1378,2468,6860 ], // Colin Walker
        "ranges": { 
           "black": 15, // 15 is black offset, Dcraw/RT read the base black from exif and calculates total BL = BLbase+BLoffset
           "white": [
		      { "iso": [ 100, 200, 400, 800 ], "levels": 3920 }, // exif:3967 distribution peak at 3967 +/- up to 50
			  { "iso": [ 1600, 3200, 6400 ], "levels": 4060 } // exif 3967, histogram peak 4095 and distribution down to 4070
                    ]
                  }
	},
	{ // Quality A, Replicated from rawimage.cc
        "make_model": "Panasonic DMC-G1",
        "dcraw_matrix": [ 7477,-1615,-651,-5016,12769,2506,-1380,2475,7240 ], // Colin Walker
        "ranges": { 
           "black": 15, // 15 is BL offstet. Dcraw/RT read the base black from exif and calculates total BL = BLbase+BLoffset
           "white": [
		      { "iso": [ 100, 200, 400, 800 ], "levels": 3920 }, // exif:4095 distribution peak at 3977 +/- up to 50
			  { "iso": [ 1600, 3200 ], "levels": 4060 } // exif 4095, histogram peak 4095 and distribution down to 4070
                    ]
			      } 
    },
    { // Quality A, Replicated from rawimage.cc
        "make_model": "Panasonic DMC-G3",
        "dcraw_matrix": [ 6051,-1406,-671,-4015,11505,2868,-1654,2667,6219 ], // Colin Walker
        "ranges": { 
           "black": 15, // 15 is BL offstet. Dcraw/RT read the base black from exif and calculates total BL = BLbase+BLoffset
           "white": 4060 } // exif:4095 normal distribution 4080-4095, 4070-4095 on long exposure NR 
    },
    { // Quality A, Replicated from rawimage.cc
        "make_model": "Panasonic DMC-G5",
        "dcraw_matrix": [ 7122,-2092,-419,-4643,11769,3283,-1363,2413,5944 ], // RT
        "ranges": { 
           "black": 15, // 15 is BL offstet. Dcraw/RT read the base black from exif and calculates total BL = BLbase+BLoffset
           "white": 4060 } // exif:4095 normal distribution 4080-4095, 4070-4095 on long exposure NR 
    },
    { // Quality A, Replicated from rawimage.cc
        "make_model": "Panasonic DMC-GF1",
        "dcraw_matrix": [ 7863,-2080,-668,-4623,12331,2578,-1020,2066,7266 ], // Colin Walker
        "ranges": { 
           "black": 15, // 15 is BL offstet. Dcraw/RT read the base black from exif and calculates total BL = BLbase+BLoffset
           "white": [
		      { "iso": [ 100, 200, 400, 800 ], "levels": 3920 }, // exif:4095 distribution peak at 3977 +/- up to 50
			  { "iso": [ 1600, 3200 ], "levels": 4060 } // exif 4095, histogram peak 4095 and distribution down to 4070
                    ]
			      } 
    },

    { // Quality A, Replicated from rawimage.cc
        "make_model": "Panasonic DMC-GF2",
        "dcraw_matrix": [ 7694,-1791,-745,-4917,12818,2332,-1221,2322,7197 ], // Colin Walker
        "ranges": { 
           "black": 15, // 15 is BL offstet. Dcraw/RT read the base black from exif and calculates total BL = BLbase+BLoffset
           "white": 4050 } // exif:4095 normal distribution 4080-4095, 4050-4095 on long exposure NR 
    },
    { // Quality A, Replicated from rawimage.cc
        "make_model": "Panasonic DMC-GF3",
        "dcraw_matrix": [ 8074,-1846,-861,-5026,12999,2239,-1320,2375,7422 ], // Colin Walker
        "ranges": { 
           "black": 15, // 15 is BL offstet. Dcraw/RT read the base black from exif and calculates total BL = BLbase+BLoffset
           "white": 4050 } // exif:4095 normal distribution 4080-4095, 4050-4095 on long exposure NR 
    },
    { // Quality A, Replicated from rawimage.cc
        "make_model": "Panasonic DMC-GH1",
        "dcraw_matrix": [ 6360,-1557,-375,-4201,11504,3086,-1378,2518,5843 ], // Colin Walker
        "ranges": { 
           "black": 15, // 15 is BL offstet. Dcraw/RT read the base black from exif and calculates total BL = BLbase+BLoffset
           "white": [
		      { "iso": [ 100, 200, 400, 800 ], "levels": 3930 }, // exif:4095 distribution peak at 3982 +/- up to 50
			  { "iso": [ 1600, 3200 ], "levels": 4060 } // exif 4095, histogram peak 4095 and distribution down to 4070
                    ]
			      } 
    },
    { // Quality A, Replicated from rawimage.cc
        "make_model": "Panasonic DMC-GH2",
      //  "dcraw_matrix": [ 6855,-1765,-456,-4223,11600,2996,-1450,2602,5761 ], // Colin Walker - disabled due to problems with underwater
        "dcraw_matrix": [ 7780,-2410,-806,-3913,11724,2484,-1018,2390,5298 ], // Dcraw d65
        "ranges": { 
           "black": 15, // 15 is BL offstet. Dcraw/RT read the base black from exif and calculates total BL = BLbase+BLoffset
           "white": [
		      { "iso": [ 100, 200, 400, 800 ], "levels": 3930 }, // exif:4095 distribution peak at 3982 +/- up to 50
			  { "iso": [ 1600, 3200, 6400, 12800 ], "levels": 4060 } // exif 4095, histogram peak 4095 and distribution down to 4070
                    ]
			      } 
    },

    { // Quality B, variable WL
        "make_model": "Panasonic DMC-GH3",
        "dcraw_matrix": [ 6559,-1752,-491,-3672,11407,2586,-962,1875,5130 ], // dcp d65
        "ranges": { 
           "black": 16, // 16 is BL offstet. Dcraw/RT read the base black from exif and calculates total BL = BLbase+BLoffset
           "white": [ 
              { "iso": 125, "levels": 3500 }, // gaussian 3600-4095
              { "iso": [ 160, 200, 250, 320, 400, 500, 640, 800, 1000, 1250, 1600, 2000, 2500, 3200, 4000, 5000, 6400, 12800, 25600 ], "levels": 4080 } // nominal 4095 
                    ] 
                  }
    },

    { // Quality B, some ISO WLevels are safely guessed
        "make_model": "Panasonic DMC-GH4",
        "dcraw_matrix": [ 7122,-2108,-512,-3155,11201,2231,-541,1423,5045 ], // dng_v8.5 d65 
        "ranges": { 
           "black": 16, // 16 is BL offstet. Dcraw/RT read the base black from exif and calculates total BL = BLbase+BLoffset
           "white": [ 
              { "iso": 100, "levels": 2700 }, // gaussian center at 2870-2920 range +/- 150, exif 2111
              { "iso": 125, "levels": 3100 }, // guessed 
              { "iso": [ 160, 200, 250, 320, 400, 500, 640, 800, 1000, 1250, 1600, 2000, 2500, 3200, 4000, 5000, 6400, 12800, 25600 ], "levels": 4080 } // nominal 4095 
                    ] 
                  }
    },

    { // Quality A, 
        "make_model": "Panasonic DMC-GM1",
        "dcraw_matrix": [ 6770,-1895,-744,-5232,13145,2303,-1664,2691,5703 ],
        "ranges": { 
           "black": 15, // 15 is BL offstet. Dcraw/RT read the base offset from exif and calculates total BL = BLbase+BLoffset
           "white": [
              { "iso": 125, "levels": 3100 }, // bell shape 3150-3650 - exif 2616
              { "iso": 160, "levels": 3600 }, // guessed from relative GX7 data
              { "iso": [ 200, 250, 320, 400, 500, 640, 800, 1000, 1250, 1600, 2000, 2500, 3200, 4000, 5000, 6400, 12800, 25600 ], "levels": 4080 } // nominal 4095
                    ]
                  } 
    },

    { // Quality X, preliminary support, color data copyed from GM1 
        "make_model": "Panasonic DMC-GM5",
        "dcraw_matrix": [ 6770,-1895,-744,-5232,13145,2303,-1664,2691,5703 ], // GM1
        "ranges": { 
           "black": 15, // 15 is BL offstet. Dcraw/RT read the base offset from exif and calculates total BL = BLbase+BLoffset
           "white": [
              { "iso": 100, "levels": 2900 }, // bell shape 2950-3250 - exif 2111
              { "iso": 160, "levels": 3600 }, // guessed from relative GX7 data
              { "iso": [ 200, 250, 320, 400, 500, 640, 800, 1000, 1250, 1600, 2000, 2500, 3200, 4000, 5000, 6400, 12800, 25600 ], "levels": 4080 } // nominal 4095
                    ]
                  } 
    },
    { // Quality A, 
        "make_model": "Panasonic DMC-GX7",
        "dcraw_matrix": [ 7610,-2780,-576,-4614,12195,2733,-1375,2393,6490 ],
        "ranges": { 
           "black": 15, // 15 is BL offstet. Dcraw/RT read the base offset from exif and calculates total BL = BLbase+BLoffset
           "white": [
              { "iso": 125, "levels": 3100 },
              { "iso": 160, "levels": 3600 },
              { "iso": [ 200, 250, 320, 400,500, 640, 800, 1000, 1250, 1600, 2000, 2500, 3200, 4000, 5000, 6400, 12800, 25600 ], "levels": 4080 } // nominal 4095
                    ]
                  } 
    },

    { // Quality C, preliminary support, color data from GX7
        "make_model": "Panasonic DMC-LX100",
        "dcraw_matrix": [ 7610,-2780,-576,-4614,12195,2733,-1375,2393,6490 ], // GX7 .. measures fine DE2000=2.4
      //  "dcraw_matrix": [ 6770,-1895,-744,-5232,13145,2303,-1664,2691,5703 ], // guessed ..FROM GM1
        "ranges": { 
           "black": 15, // 15 is BL offstet calculated from exif data.
           "white": [
              { "iso": 100, "levels": 2500 }, // gaussian 2500-2700 exif linear 2111
              { "iso": 125, "levels": 3100 }, // guessed from GX7
              { "iso": [ 160, 200, 250, 320, 400, 500, 640, 800, 1000, 1250, 1600, 2000, 2500, 3200, 4000, 5000, 6400, 12800, 25600 ], "levels": 4080 } // nominal 4095
                    ]
                  } 
    },

    { // Quality B, intermediate ISOs info missing  
        "make_model": [ "RICOH PENTAX K-3", "PENTAX K-3" ],
        "dcraw_matrix": [ 7415,-2052,-721,-5186,12788,2682,-1446,2157,6773 ], // adobe dcp d65
//        "dcraw_matrix": [ 8542,-2581,-1144,-3995,12301,1881,863,1514,5755 ], // pentax DNG
//        "dcraw_matrix": [ 6464,-1574,-422,-5324,12712,2934,-1129,1724,6900 ], // DxO
        "raw_crop": [ 10, 4, 6028, 4024 ],
        "ranges": { 
           "white": [
              { "iso": 100, "levels": 16310 }, // 16317 or 16350
              { "iso": 200, "levels": 16120 }, // 16254 or 16125
              { "iso": 400, "levels": 15860 }, // 16125 or 15868
              { "iso": 800, "levels": 15360 }, // 15868 or 15364-15370
              { "iso": [ 1600, 3200, 6400, 12800, 25600, 51200 ], "levels": 16300 } // 16383 - pentax dng tag is 15868-15350
                    ]
                  } 
    }, 

    {  // Quality B,  corrections for raw crop vs Dcraw9.21, matched to Samsung's default  
        "make_model": "Samsung NX mini", 
        "dcraw_matrix": [ 5222,-1196,-550,-6540,14649,2009,-1666,2819,5657 ], // dng 8.6 d65
        "raw_crop": [ 128, 36, 5480, 3656 ], // jpeg 5472x3648 - full raw: 5664 x 3710 - Samsung's official crop: 132, 40, 5604, 3688
        "ranges": { "white": 4030 } // double clipping point for each channel at a) 4095 and b) bell distribution with peak at 4038 .. used the conservative one
    },
    {  // Quality A, Conflict with "Samsung NX30" in Dcraw_v9.21_r1.414
        "make_model": "Samsung NX3000", 
        "dcraw_matrix": [ 8060,-2933,-761,-4504,12890,1762,-630,1489,5227 ] // D65 from Adobe's Dcp profile
	},

    { // Quality A, correction for color matrix from Colin Walker's d50 to dng d65
        "make_model": "Sony NEX-C3",
      //  "dcraw_matrix": [ 5130,-1055,-269,-4473,11797,3050,-701,1310,7121 ], // Colin walker's d50 kept for possible consistency issues
        "dcraw_matrix": [ 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 ],
        "ranges": { "black": 512, "white": 16300 }
    },

    { // Quality A, correction for frame width
        "make_model": "Sony NEX-5N",
        "dcraw_matrix": [ 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 ],
        "raw_crop": [ 0, 0, 4920, 3276 ], 
        "ranges": { "black": 512, "white": 16300 }
    },
     { // Quality A, 
        "make_model": "Sony ILCA-77M2",
        "dcraw_matrix": [ 5991,-1732,-443,-4100,11989,2381,-704,1467,5992 ], // adobe dcp d65
        "raw_crop": [ 0, 0, 6024, 4024 ],
        "ranges": { "black": 512, "white": 16300 }
    },
   { // Quality A, correction for frame width black level and color matrix 
        "make_model": "Sony ILCE-3000",
        "dcraw_matrix": [ 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 ], // adobe dcp d65
        "ranges": { "black": 512, "white": 16300 },
        "raw_crop": [ 0, 0, 5476, 3656 ] 
    },
    { // Quality A, correction for frame width
        "make_model": "Sony ILCE-5000",
        "dcraw_matrix": [ 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 ], // adobe dcp d65
        "ranges": { "black": 512, "white": 16300 },
        "raw_crop": [ 0, 0, 5476, 3656 ]
    },
    { // Quality B, not supported by Dcraw 9.22 - colour data from DNG v8.7rc1 d65 
        "make_model": "Sony ILCE-5100",
        "dcraw_matrix": [ 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 ], // adobe dcp d65
        "raw_crop": [ 0, 0, 6024, 4024 ],
        "ranges": { "black": 512, "white": 16300 }
    },
    { // Quality A
        "make_model": "Sony ILCE-6000",
        "dcraw_matrix": [ 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 ], // adobe dcp d65
        "raw_crop": [ 0, 0, 6024, 4024 ],
        "ranges": { "black": 512, "white": 16300 }
    },
    { // Quality A, correction for frame width
        "make_model": "Sony ILCE-7R",
        "dcraw_matrix": [ 4913,-541,-202,-6130,13513,2906,-1564,2151,7183 ],
        "raw_crop": [ 0, 0, 7372, 4920 ],
        "ranges": { "black": 512, "white": 16300 }
    },
    { // Quality B, correction for frame width
        "make_model": "Sony ILCE-7S",
        "dcraw_matrix": [ 5838,-1430,-246,-3497,11477,2297,-748,1885,5778 ], // DNG D65
        "raw_crop": [ 0, 0, 4254, 2848 ],
        "ranges": { "black": 512, "white": 16300 }
    },
    { // Quality A,
        "make_model": "Sony DSC-RX100M3",
        "dcraw_matrix": [ 6596,-2079,-562,-4782,13016,1933,-970,1581,5181 ], // DNG D65
        "ranges": { "black": 800, "white": 16300 }
    },

    /* Phase One: color matrices borrowed from Adobe DNG Converter, black/white levels tested on actual raw files.
       Note: the dcraw decoder makes black level subtraction and various corrections to the raw values based on
       metadata embedded in the IIQ format, so what we see here is the result after that, ie black level is 0,
       and white level is typically at or close to 65535. However sensors vary a bit and can be noisy around clip
       so we cut away 0.05 stop from top down to 63300 to be a bit conservative. */
    { // quality A
        "make_model": [ "Phase One P40+", "Phase One IQ140", "Leaf Credo 40", "Phase One P65+", "Phase One IQ160", "Leaf Credo 60", "Phase One IQ260" ],
        "dcraw_matrix": [ 8035,435,-962,-6001,13872,2320,-1159,3065,5434 ],
        "ranges": { "black": 0, "white": 63300 }
    },
    { // quality A
        "make_model": [ "Phase One IQ180", "Leaf Credo 80", "Phase One IQ280" ],
        "dcraw_matrix": [ 6294,686,-712,-5435,13417,2211,-1006,2435,5042 ],
        "ranges": { "black": 0, "white": 63300 }
    },
    { // quality A
        "make_model": [ "Phase One P20", "Phase One P20+", "Phase One P25", "Phase One P25+" ],
        "dcraw_matrix": [ 2905,732,-237,-8135,16626,1476,-3038,4253,7517 ],
        "ranges": { "black": 0, "white": 63300 }
    },
    { // quality A
        "make_model": [ "Phase One P21", "Phase One P21+" ],
        "dcraw_matrix": [ 6516,-2050,-507,-8217,16703,1479,-3492,4741,8489 ],
        "ranges": { "black": 0, "white": 63300 }
    },
    { // quality A
        "make_model": [ "Phase One P30", "Phase One P30+"],
        "dcraw_matrix": [ 4516,-244,-36,-7020,14976,2174,-3206,4670,7087 ],
        "ranges": { "black": 0, "white": 63300 }
    },
    { // quality A
        "make_model": [ "Phase One P45", "Phase One P45+" ],
        "dcraw_matrix": [ 5053,-24,-117,-5685,14077,1703,-2619,4491,5850 ],
        "ranges": { "black": 0, "white": 63300 }
    },
    { // quality X, matrix taken from H5D-50c which has the same sensor, probably with the same CFA. Color looks good to the eye with files tested.
        "make_model": [ "Phase One IQ250", "Leaf Credo 50" ],
	"dcraw_matrix": [ 4932, -835, 141, -4878, 11868, 3437, -1138, 1961, 7067 ],
        "ranges": { "black": 0, "white": 64400 } // CMOS sensor, we dare to set white level a bit higher than for the more varying Phase One CCDs
    },

    { // Quality A for tested CFV, the other models have the same sensor (16 megapixel square sensor)
        "make_model": [ "Hasselblad V96C", "Hasselblad CFV", "Hasselblad CFV-II" ],
        "dcraw_matrix": [ 8519, -3260, -280, -5081, 13459, 1738, -1449, 2960, 7809 ] // borrowed from Adobe's DNG converter
    },
    { // Quality A for tested CF-22, the other models have the same sensor
        "make_model": [ "Hasselblad CF-22", "Hasselblad CF-22MS", "Hasselblad CFH-22", "Hasselblad H3D-22", "Hasselblad H3DII-22" ],
        "dcraw_matrix": [ 8519, -3260, -280, -5081, 13459, 1738, -1449, 2960, 7809 ] // borrowed from Adobe's DNG converter
    },
    { // Quality A for tested H3D-31, the other models have the same sensor
        "make_model": [ "Hasselblad H3D-31", "Hasselblad H3DII-31", "Hasselblad H4D-31" ],
        "dcraw_matrix": [ 5458, -1448, 145, -4479, 12338, 2401, -1659, 3086, 6710 ] // borrowed from Adobe's DNG converter
    },
    { // Quality A for tested CFV-39, the other models have the same sensor. Small filter differences may exist so some might do better with a slightly different profile
        "make_model": [ "Hasselblad CF-39", "Hasselblad CF-39MS", "Hasselblad CFH-39", "Hasselblad CFV-39", "Hasselblad H3D-39", "Hasselblad H3DII-39", "Hasselblad H3DII-39MS" ],
        "dcraw_matrix": [ 3857, 452, -46, -6008, 14477, 1596, -2627, 4481, 5718 ] // borrowed from Adobe's DNG converter
    },
    { // Quality A for tested CFV-50, the other models have the same sensor
        "make_model": [ "Hasselblad CFV-50", "Hasselblad H3DII-50", "Hasselblad H3DII-50MS", "Hasselblad H4D-50", "Hasselblad H4D-50MS", "Hasselblad H4D-200MS", "Hasselblad H5D-50", "Hasselblad H5D-50MS", "Hasselblad H5D-200MS" ],
	"dcraw_matrix": [ 5656, -659, -346, -3923, 12306, 1791, -1602, 3509, 5442 ] // borrowed from Adobe's DNG converter
    },
    { // Quality A
        "make_model": [ "Hasselblad H4D-40", "Hasselblad H5D-40" ],
	"dcraw_matrix": [ 6159, -1402, -177, -5439, 12762, 3007, -955, 2200, 7104 ] // borrowed from Adobe's DNG converter
    },
    { // Quality A for tested H4D-60, the other models have the same sensor
        "make_model": [ "Hasselblad H4D-60", "Hasselblad H5D-60" ],
	"dcraw_matrix": [ 9662, -684, -279, -4903, 12293, 2950, -344, 1669, 6024 ] // borrowed from Adobe's DNG converter
    },
    { // Quality A
        "make_model": "Hasselblad H5D-50c",
	"dcraw_matrix": [ 4932, -835, 141, -4878, 11868, 3437, -1138, 1961, 7067 ],
        "raw_crop": [ 48, 96, 8280, 6208 ]
    },

    // dummy test entry to test the parser and show the format with all entries active
    {
        "make_model": "DummyMake DummyModel",
        "dcraw_matrix": [ 7530,-1942,-255,-4318,11390,3362,-926,1694,7649 ],
	"raw_crop": [ 10, 20, 4000, 3000 ],
	"masked_areas": [ 51, 2, 3804, 156, 51, 5794, 3804, 5792 ],
        "ranges": {
	    "aperture_scaling": [
	        { "aperture": 1.2, "scale_factor": 1.1 },
	        { "aperture": 1.4, "scale_factor": 1.08 }
	    ],
            "black": [
                { "iso": 100 , "levels": [ 10, 20, 10, 20 ] },
                { "iso": [100, 200] , "levels": [ 30, 40, 30 ] },
                { "iso": 3200, "levels": [ 50, 60, 50, 60 ] }
            ],
            "white": [
                { "iso": 100 , "levels": [ 10000, 11000, 10000, 11000 ] },
                { "iso": 3200, "levels": [ 11000, 11000, 10000, 11000 ] }
            ],
	    "white_max": 16383
        }
    }
]}