While running a test on PL8.2.1 I encountered a problem I have seen before some time ago, namely ‘Distortion’ get “stuck” on 0 and is essentially unresponsive until forced to make a change, to e.g. 1, manually when the “auto” feature becomes active again!?
A short video to demonstrate the problem
I was reviewing some exports from PL8.2.1 from VCs of a single image in a directory I haven’t used for a while (but it is a PL8 directory) when I realised the exports had not been adjusted for distortion?
Instead of being able to get distortion working again by simply clicking the “auto wand” I needed to make a manual adjustment first and then ‘Distortion’ returned to normal and I could use the “auto wand” successfully!
The DOP contains two VCs that still have the problem so I need to preserve the image and DOP for submission to @DxO_Support-Team via a Support request.
@Wlodek Good to know it is not always present but the video shows that it is real and I have seen it before and felt at that time it was related to a global preset which left Distortion “stuck”.
It is easy to resolve but I started a test without inspecting every setting and didn’t get what I was expecting. It is possible I might have an untouched copy on another machine to see what release the DOP came from.
I would guess the problem is with his default preset – default Distortion Intesity set to 0. No DOP and no delault preset was supplied, which is strange for someone with IT background.
The DOP on my other system is an PL8.1 DOP (which is the one I have attached above) and copying that (and the image) to a new directory and opening it with PL8.2.1 reproduced the problem.
Copying it to a PC still running PL8.1 also caused the same problem!?
Attempting to compare a DxPL(Win) DOP between releases seems to be next to impossible, at least using Beyond Compare, its almost as if the DOP is deliberately being jumbled up?
However, I created a new directory with a copy of the image and no DOP, discovered it with PL8.2.1. The current default automatically set the ‘Distortion’ to
Applying the preset identified above reset that to 0 but the ability to select ‘Auto’ remained so it was easy to then continue.
My biggest concern was that an image I expected to be automatically “fixed” was not and I initially thought the images from other packages were at fault not DxPL.
@Wolfgang the history of the image and VCs that ran into problems is essentially unknown to me, i.e. I have done a lot of CA tests since those were first set up and I frequently try to do tests on PL7 to get a wider range for any user who tries to use the DOPs, i.e. not just restricted to the latest release.
I included the automatic presets in the post above and they are different between the two releases because of the history of the testing I have done, I was hoping that would decline away to nothing but no such luck, yet!
The issue I had was that I picked on an old directory and explored with the latest PL8 release and started comparing with images from the camera, ACDSee GEM and Zoner all of whom leave DxPL lower down the food chain when it comes handling to purple fringing.
However I was surprised to find that not only had the images not been adjusted for ‘Distortion’, my error because it looks like the Preset I had applied doesn’t do that (which is very strange because I typically always include ‘Distortion’) but DxPL gets into a state where it won’t let me change to the automatic setting, I consider that is a DxPL error and one that I have seen before.
With my partial preset I can fix the situation simply by selecting all images and applying the partial preset but I never expected to encounter the problem in the first place and initially thought that the other software was at fault.
The provided DOP file was produced by PL8.1, not PL8.2.1:
Software = "DxO PhotoLab 8.1",
The provided DOP file was probably edited by hand and it looks corrupt. I would have to go through all the lines to prove it, but my JS formatter has problem displaying it correctly. Also the DistortionTypeAuto, DistortionType, and DistortionIntensity settings look incompatible, like they were edited by hand. I got the following exception in PL log, which supports the corruption claim too:
Exception: System.ArgumentNullException The parameter 'item' must not be null.
Parameter name: item at DxONET.UI.Projection.ProjectionConverter.GetImageSize(IDopItem item)
at DxONET.UI.UI.Viewing.ViewerItem.OnFeedbackValuesUpdated(IDictionary`2 feedbackValues, UpdateSource updateSource)
@Wlodek I didn’t set out to make mischief nor do I modify DOPs. I have a program that helps me analyse them and it might or might not provide the foundation for external DOP swapping one day.
By that I mean swapping the [M]aster part of the DOP for the VC[1} part.
Neither should it, that is a Partial preset from my own collection, as identified by the “(P)_”, that I used to see if there was an easy way to fix the problem across many images without individual scrutiny and editing.
It worked, so if anyone else happens to stumble on the problem there is a sort of workaround, providing the default values I use in that preset are acceptable.
I stated that was what my test would have started with so that is what I included, i.e. the backup copy on System 2 is PL8.1 so the chances are that I started the tests on System 1 using PL8.2.1 with a PL8.1 DOP.
My systems are used as mirror copies of each other but my synchronisation timing is not as rigorous as it could (should) be so some systems are slightly behind the other(s) (3 systems in total)!
As I stated above I don’t edit DOPs (yet) and I only edit the database (‘Folders’) and Partial Presets.
I have tried the “changing the DOP version trick” but that was in a separate directory.
So regardless of what your analysis seems to show the only entity that has changed the DOP is DxPL, which version I cannot be sure, except that the System 2 backup was marked as PL8.1 as I stated above and System 2 has never had PL8 of any variety anywhere near it, i.e. the copy there is a backup from System 1.
System 1 was used for testing prior to the release of PL8 and is currently the only System with a licensed copy of PL8 installed. System 2 will never have PL8 installed and System 3 currently has a trial copy of PL8.1 and will remain so for the next 19 days.
If the DOP is corrupt that is entirely the work of one version and/or another of DxPL!?
To get from the DOP that doesn’t work to one that does all that is required is the line I indicated in my post
DistortionIntensity = 1
actually I believe that any value will work but the omission of that line seems to send DxPL into a “tail spin”.
If you believe that your knowledge and the tools that you use would be advantageous to other testers then I would suggest a tutorial or two in the forum might be useful to others.
I can reproduce your problem using PL8.2.1, as far as I understand it. Just open a fresh RAW (not in the database, no DOP file, ‘6 - No Corrections’ applied as default preset), enable Distortion correction, set its Intensity to zero, and restart PL. Now the magic wand for Intensity does not work. Is this is your problem?
In this case, you can double-click on the Correction drop-down list instead, or just move the Intensity slider. It’s weird that the magic wand doesn’t work in this case, but applying zero Intensity and leaving the correction active is also a bit strange. Maybe this setting was in the original default preset?
The JS parser I used has some bug. When I used some simple script, it verified that the structure of your DOP file is syntacticaly correct. The PL NPE may have other reason. But the combination of Distortion settings looked strange. However, I don’t want to drill down this topic, as there would be too much speculations. I use the knowledge of DOP file format just to search for photos which have certain settings, like Moire reduction or specific NR config. I’ve never tried to edit them manually.
BTW, I’ve noticed a minor change in PL8 DOP files compared to PL7: in PL7 it’s
Items = {{
but in PL8 the two brackets are on separate lines:
Items = {
{
Maybe DxO uses another, simplified DOP parser now?
I have no idea, why on earth they touched this basic code.
@Wlodek Yes it is, thank you for persisting with your analysis.
I was going to respond to @Wolfgang that when I first saw this problem was some time ago and in a post, which I will try to find, I concluded that returning to an image that had ‘05 - No correction’ assigned as the default seemed to cause this problem.
It is not an earth shattering problem but it caught me out!
I apologise if my response was somewhat resolute but I knew I had not hacked the DOP. I find the DOPs to be “chaos” compared to the database except that they can be handled as a package for each copy with a “header” and a “trailer” section.
This is a modified version of my analysis program looking for “Distortion”
08:30:08] (30) FileName = F:\___Beta DXO PL5 - Tests Additional\Test 36 - CA Testing\CA Tests 00 - JPG & RW2 originals\PL8-CA From Sys 2\P1112299.RW2.dop
[08:30:08] @ line 1 Sidecar = {
[08:30:08] @ line 2 Date = "2024-12-15T18:43:40.4905689Z",
[08:30:08] @ line 3 Software = "DxO PhotoLab 8.2.1",
[08:30:08] @ line 4 Source = {
[08:30:08] @ line 5 CafId = "C61004c",
[08:30:08] @ line 6 Items = {
[08:30:08] @ line 7 {
[08:30:08] --------------------------------------------------------------------------[Master]
[08:30:08] @ line 8 ---->Albums = "",
[08:30:08] @ line 18 Name = "P1112299.RW2",
[08:30:08] @ line 20 OutputItems = {
[08:30:08] @ line 24 Rating = 0,
[08:30:08] @ line 42 DistortionAnamorphosisKeepEntireImage = false,
[08:30:08] @ line 79 DistortionKeepRatio = true,
[08:30:08] @ line 315 DistortionIntensity = 0,
[08:30:08] @ line 318 DistortionFocus = 128,
[08:30:08] @ line 361 DistortionActive = true,
[08:30:08] @ line 406 DistortionTypeAuto = false,
[08:30:08] @ line 427 DistortionType = "Auto",
[08:30:08] @ line 554 DistortionIntensity = 1,
[08:30:08] @ line 557 Version = "19.0",
[08:30:08] @ line 562 Uuid = "5199366B-EDBB-4D5D-A28F-AE72C6F0867C", <----
[08:30:08]
[08:30:08] Album_count = 1 Uuid_count = 1
[08:30:08] --------------------------------------------------------------------------VC[1]
[08:30:08] @ line 566 ---->Albums = "",
[08:30:08] @ line 576 Name = "P1112299.RW2",
[08:30:08] @ line 578 OutputItems = {
[08:30:08] @ line 582 Rating = 0,
[08:30:08] @ line 600 DistortionAnamorphosisKeepEntireImage = false,
[08:30:08] @ line 637 DistortionKeepRatio = true,
[08:30:08] @ line 873 DistortionIntensity = 0,
[08:30:08] @ line 876 DistortionFocus = 128,
[08:30:08] @ line 919 DistortionActive = true,
[08:30:08] @ line 964 DistortionTypeAuto = false,
[08:30:08] @ line 985 DistortionType = "Auto",
[08:30:08] @ line 1114 Version = "19.0",
[08:30:08] @ line 1119 Uuid = "B6BD75D0-F723-4579-9746-3324B617E699", <----
[08:30:08]
[08:30:08] Album_count = 2 Uuid_count = 2
[08:30:08] --------------------------------------------------------------------------VC[2]
[08:30:08] @ line 1123 ---->Albums = "",
[08:30:08] @ line 1133 Name = "P1112299.RW2",
[08:30:08] @ line 1135 OutputItems = {
[08:30:08] @ line 1139 Rating = 0,
[08:30:08] @ line 1157 DistortionAnamorphosisKeepEntireImage = false,
[08:30:08] @ line 1194 DistortionKeepRatio = true,
[08:30:08] @ line 1430 DistortionIntensity = 0,
[08:30:08] @ line 1433 DistortionFocus = 128,
[08:30:08] @ line 1476 DistortionActive = true,
[08:30:08] @ line 1521 DistortionTypeAuto = false,
[08:30:08] @ line 1542 DistortionType = "Auto",
[08:30:08] @ line 1670 Version = "19.0",
[08:30:08] @ line 1675 Uuid = "D9BC7D98-BA3F-4164-ACAA-08269F5F9967", <----
[08:30:08]
[08:30:08] Album_count = 3 Uuid_count = 3
[08:30:08] --------------------------------------------------------------------------VC[3]
[08:30:08] @ line 1679 ---->Albums = "",
[08:30:08] @ line 1689 Name = "P1112299.RW2",
[08:30:08] @ line 1691 OutputItems = {
[08:30:08] @ line 1695 Rating = 0,
[08:30:08] @ line 1713 DistortionAnamorphosisKeepEntireImage = false,
[08:30:08] @ line 1750 DistortionKeepRatio = true,
[08:30:08] @ line 1986 DistortionIntensity = 0,
[08:30:08] @ line 1989 DistortionFocus = 128,
[08:30:08] @ line 2032 DistortionActive = true,
[08:30:08] @ line 2077 DistortionTypeAuto = false,
[08:30:08] @ line 2098 DistortionType = "Auto",
[08:30:08] @ line 2204 Version = "19.0",
[08:30:08] @ line 2209 Uuid = "DB82B998-F164-440D-BE7A-7A553BA52282", <----
[08:30:08]
[08:30:08] Album_count = 4 Uuid_count = 4
[08:30:08] @ line 2214 Uuid = "E24B6F1A-2A69-4A6E-8C41-9624894C9771", <----
[08:30:08]
[08:30:08] Album_count = 4 Uuid_count = 5
[08:30:08] @ line 2217 Version = "19.0",
[08:30:08]
[08:30:08]
[08:30:08] ================================================================================
The database is orderly and fits with my background as a database specialist for Burroughs/Unisys for 36 years. DMS II was not an SQL or even a relational database product, it was a network database product but in later life DMS II was the “engine” behind/underneath the LINC program generator that used it as a more relational database engine and it also acquired an SQL version of its Inquirer package.
So hacking the database, that is different!
I have seen other discussions about the syntax of the DOP but “JS Parser” and “PL NPE”. please excuse my ignorance but to what do they refer?
With respect to the {{ changing is not the new syntax actually more inline with the overall coding of the DOP?
Once again thanks for your response.
Not really off-topic and the answer to your question would be my misguided belief that it was a better setting. However, does having the few more pixels settings mean that the aspect ratio is going to be other than the 4 by 3 I expect.
The good news is that the other partial already exists should I be convinced to use it, so convince me, now there’s a challenge.
Activate the Crop tool … so you can see what’s going on - and note the pixel count on bottom RHS.
Toggle the “Constrain to image” setting (on the Distortion panel) … and watch how the pixel count changes.
In the example I’m using, the number of pixels reported (when “Constrain to image” is ON) is greater than with it set OFF … which is the opposite to what I’ve assumed was the purpose of this setting
And, curiously, it doesn’t seem to make any difference whether the “Keep aspect ratio” sub-setting is ON or OFF … I’m seeing the same pixel count
Ahh, OK - I get it now; when the Crop tool is constrained to “Original” (or a specific ratio) then the “Keep aspect ratio” setting has no influence … But, with the Crop tool set to Unconstrained the “Keep aspect ratio” setting can override that and maintain the original aspect ratio.
Conclusion;
One can actually maximise pixels whilst allowing the Crop tool to determine the resulting aspect ratio with the following settings;
I will need to adjust my customised preset accordingly …
[14:12:22] (30) FileName = F:\___Beta DXO PL5 - Tests Additional\Test 36 - CA Testing\CA Tests 00 - JPG & RW2 originals\CA Tests -1-02\P1112299.RW2.dop
[14:12:22] @ line 1 Sidecar = {
[14:12:22] @ line 2 Date = "2024-12-16T11:58:46.1842276Z",
[14:12:22] @ line 3 Software = "DxO PhotoLab 8.2.1",
[14:12:22] @ line 4 Source = {
[14:12:22] @ line 5 CafId = "C61004c",
[14:12:22] @ line 6 Items = {
[14:12:22] @ line 7 {
[14:12:22] --------------------------------------------------------------------------[Master]
[14:12:22] @ line 8 ----> Albums = "",
[14:12:22] @ line 11 contentDescription = "[M]",
[14:12:22] @ line 12 contentHeadline = "CA OFF",
[14:12:22] @ line 19 Name = "P1112299.RW2",
[14:12:22] @ line 21 OutputItems = {
[14:12:22] @ line 24 Name = "P1112299_PL821R NR(-) CA(-).jpg",
[14:12:22] @ line 28 Uuid = "07539432-7E71-4E28-BE80-FAD619A2CC88",
[14:12:22] @ line 34 Rating = 0,
[14:12:22] @ line 52 DistortionAnamorphosisKeepEntireImage = false,
[14:12:22] @ line 298 DistortionFocus = 128,
[14:12:22] @ line 311 DistortionKeepRatio = true,
[14:12:22] @ line 353 DistortionActive = true,
[14:12:22] @ line 396 DistortionTypeAuto = false,
[14:12:22] @ line 419 DistortionType = "Auto",
[14:12:22] @ line 443 DistortionIntensity = 0,
[14:12:22] @ line 526 ----> Overrides = {
[14:12:22] @ line 528 DistortionIntensity = 1,
[14:12:22] @ line 567 Version = "19.0",
[14:12:22] @ line 572 Uuid = "1B6E52DA-F06E-465B-9F85-1C8AA8BA7ED8", <----
[14:12:22]
[14:12:22] Album_count = 1 Uuid_count = 1
[14:12:22] --------------------------------------------------------------------------VC[1]
[14:12:22] @ line 576 ----> Albums = "",
[14:12:22] @ line 579 contentDescription = "[1]",
[14:12:22] @ line 580 contentHeadline = "CA default NO Purple fringing",
[14:12:22] @ line 587 Name = "P1112299.RW2",
[14:12:22] @ line 589 OutputItems = {
[14:12:22] @ line 592 Name = "P1112299_PL821R NR(-) CA(+) PF(+)_1.jpg",
[14:12:22] @ line 596 Uuid = "602DD853-64F4-43EB-BD45-9508FF2FA2B0",
[14:12:22] @ line 602 Rating = 0,
[14:12:22] @ line 620 DistortionAnamorphosisKeepEntireImage = false,
[14:12:22] @ line 844 DistortionIntensity = 0,
[14:12:22] @ line 846 DistortionFocus = 128,
[14:12:22] @ line 909 DistortionKeepRatio = true,
[14:12:22] @ line 945 DistortionActive = true,
[14:12:22] @ line 986 DistortionTypeAuto = false,
[14:12:22] @ line 1007 DistortionType = "Auto",
[14:12:22] @ line 1094 ----> Overrides = {
[14:12:22] @ line 1096 DistortionIntensity = 1,
[14:12:22] @ line 1136 Version = "19.0",
[14:12:22] @ line 1141 Uuid = "1B431F8E-5060-4312-95AB-02E911BD381D", <----
[14:12:22]
[14:12:22] Album_count = 2 Uuid_count = 2
[14:12:22] --------------------------------------------------------------------------VC[2]
[14:12:22] @ line 1145 ----> Albums = "",
[14:12:22] @ line 1148 contentDescription = "[2]",
[14:12:22] @ line 1149 contentHeadline = "CA OFF",
[14:12:22] @ line 1156 Name = "P1112299.RW2",
[14:12:22] @ line 1158 OutputItems = {
[14:12:22] @ line 1161 Name = "P1112299_PL821R NR(+) CA(-)_2.jpg",
[14:12:22] @ line 1165 Uuid = "DF93095C-DF7D-488F-B95E-8988337B9907",
[14:12:22] @ line 1171 Rating = 0,
[14:12:22] @ line 1189 DistortionAnamorphosisKeepEntireImage = false,
[14:12:22] @ line 1413 DistortionIntensity = 0,
[14:12:22] @ line 1415 DistortionFocus = 128,
[14:12:22] @ line 1478 DistortionKeepRatio = true,
[14:12:22] @ line 1514 DistortionActive = true,
[14:12:22] @ line 1555 DistortionTypeAuto = false,
[14:12:22] @ line 1576 DistortionType = "Auto",
[14:12:22] @ line 1663 ----> Overrides = {
[14:12:22] @ line 1665 DistortionIntensity = 1,
[14:12:22] @ line 1701 DistortionKeepRatio = false,
[14:12:22] @ line 1705 Version = "19.0",
[14:12:22] @ line 1710 Uuid = "C6F09890-99F1-4011-8F8F-15BCEFFBB455", <----
[14:12:22]
[14:12:22] Album_count = 3 Uuid_count = 3
[14:12:22] --------------------------------------------------------------------------VC[3]
[14:12:22] @ line 1714 ----> Albums = "",
[14:12:22] @ line 1717 contentDescription = "[3]",
[14:12:22] @ line 1718 contentHeadline = "CA OFF",
[14:12:22] @ line 1725 Name = "P1112299.RW2",
[14:12:22] @ line 1727 OutputItems = {
[14:12:22] @ line 1730 Name = "P1112299_PL821R NR(+) CA(+) PF(+)_3.jpg",
[14:12:22] @ line 1734 Uuid = "3F7BD365-9B20-40E4-AD54-D3A075B58008",
[14:12:22] @ line 1740 Rating = 0,
[14:12:22] @ line 1758 DistortionAnamorphosisKeepEntireImage = false,
[14:12:22] @ line 1982 DistortionIntensity = 0,
[14:12:22] @ line 1984 DistortionFocus = 128,
[14:12:22] @ line 2047 DistortionKeepRatio = true,
[14:12:22] @ line 2083 DistortionActive = true,
[14:12:22] @ line 2124 DistortionTypeAuto = false,
[14:12:22] @ line 2145 DistortionType = "Auto",
[14:12:22] @ line 2232 ----> Overrides = {
[14:12:22] @ line 2234 DistortionIntensity = 1,
[14:12:22] @ line 2269 DistortionAnamorphosisKeepEntireImage = true,
[14:12:22] @ line 2270 DistortionKeepRatio = false,
[14:12:22] @ line 2273 Version = "19.0",
[14:12:22] @ line 2278 Uuid = "A7523DFE-4E6E-4378-963C-966BF98AADA5", <----
[14:12:22]
[14:12:22] Album_count = 4 Uuid_count = 4
[14:12:22] --------------------------------------------------------------------------VC[4]
[14:12:22] @ line 2282 ----> Albums = "",
[14:12:22] @ line 2285 contentDescription = "[4]",
[14:12:22] @ line 2286 contentHeadline = "CA OFF",
[14:12:22] @ line 2293 Name = "P1112299.RW2",
[14:12:22] @ line 2295 OutputItems = {
[14:12:22] @ line 2299 Rating = 0,
[14:12:22] @ line 2317 DistortionAnamorphosisKeepEntireImage = false,
[14:12:22] @ line 2541 DistortionIntensity = 0,
[14:12:22] @ line 2543 DistortionFocus = 128,
[14:12:22] @ line 2606 DistortionKeepRatio = true,
[14:12:22] @ line 2642 DistortionActive = true,
[14:12:22] @ line 2683 DistortionTypeAuto = false,
[14:12:22] @ line 2704 DistortionType = "Auto",
[14:12:22] @ line 2791 ----> Overrides = {
[14:12:22] @ line 2793 DistortionIntensity = 1,
[14:12:22] @ line 2828 DistortionAnamorphosisKeepEntireImage = true,
[14:12:22] @ line 2829 DistortionKeepRatio = false,
[14:12:22] @ line 2833 Version = "19.0",
[14:12:22] @ line 2838 Uuid = "A0C49883-9A28-4051-BA17-FC974507F967", <----
[14:12:22]
[14:12:22] Album_count = 5 Uuid_count = 5
[14:12:22] @ line 2843 Uuid = "97E89CA0-C062-4176-BD22-C733F6FC873E", <----
[14:12:22]
[14:12:22] Album_count = 5 Uuid_count = 6
[14:12:22] @ line 2846 Version = "19.0",
[14:12:22]
[14:12:22]
[14:12:22] ==================================================================================
I am not sure whether this conforms to your analysis, my brain hurts at the moment, and I had my program looking at the wrong DOP (now corrected, I hope)!
@John-M I am obviously not seeing the wood for the trees but where is the pixel count?
By JS Parser I meant a “JS Format” plugin for Notepad++.
NPE = NullPointerException, called that way by Java or C#. An exception generated by OS when NULL pointer value is accessed. It is a special case of ‘Access Violation’ (or whatever other name used), which is generated when program tries to access memory, which is not in its virtual address space.
If the exception is not handled by application, OS stops the application and generates its core dump, also called crash dump. ‘Crash dump’ in some circles is reserved to OS crash (like BSOD on Win), which may lead to confusion sometimes.