Closed axxel closed 1 month ago
@msmeissn Thanks for merging this. Do you have an opinion on the idea of replacing imageformat
with imageformat2
as is, meaning a user facing change of the enumerated strings Large Fine JPEG
-> L
or RAW + Small Normal JPEG
-> RAW + cS
?
Thanks to @karlkopf we have a confirmation that the code works for the R5m2.
@msmeissn Thanks for merging this. Do you have an opinion on the idea of replacing
imageformat
withimageformat2
as is, meaning a user facing change of the enumerated stringsLarge Fine JPEG
->L
orRAW + Small Normal JPEG
->RAW + cS
?
I think we can do that. I am currently not aware of tooling parsing these directly.
I wouldn't like having abbreviated settings since it makes it difficult to understand what is what.
I wouldn't like having abbreviated settings since it makes it difficult to understand what is what.
I understand your sentiment but my point is that those new labels are in fact not abbreviations of existing settings but rather, the old ones are "invented" terms that did not faithfully mirror the actual settings on the devices. I did a little digging in my memory and the commit history and found that I originally named them like this: "L/Fine" when I implemented the imageformat
setting of the EOS cameras (so close to what I proposed here), then later tried to improve the situation by renaming that to "Large Fine JPEG" with the idea to make the used terminology consistent with settings of other manufacturers. Such that you could potentially have the same client code working across multiple vendors. While that might work for the trivial case "Large Fine JPEG", it falls apart with more vendor specific options like "S2". The latter made me invent the term "Smaller JPEG" which is just arbitrary and comes at the price that the name has no connection to the names used by Canon anymore. Someone else didn't like that either.
Bottom line: today I think my intention to have those verbose names consistent with other settings failed and might have been doomed to do so, e.g. other settings added later are similar but then still inconsistent (see +RAW
in this case). So I now believe it is better to stick to what the vendors actually use and definitively keep the terminology consistent within one vendor setting, and "Tiny JPEG" definitively failed there.
We could argue over whether L
should maybe rather read L JPEG
but then cRAW
would arguably have to be called cRAW RAW
which looks silly to me. I definitively dislike the term "Normal" now, which has no meaning whatsoever. And the very latest models like the R5m2 don't distinguish between "Normal" and "Fine" anymore, there is only one "L" option and you can customize the JPEG compression level in a different setting.
Thanks for going down the memory lane with me, much appreciated.
Looking at it from the client-side perspective, making these options/values vendor-specific, forces each developer to create the same spaghetti code for a generic way of accessing them programatically.
Why not unify them across the drivers and document the chosen format?
Why not unify them across the drivers and document the chosen format?
As I elaborated above, that was exactly my intention 10 years ago but now came to the conclusion that this effort failed and never had a chance. Thy are already vendor specific in two aspects:
RAW
/ L
/ S
route.I could imagine a kind of "meta" widget that contains a generic subset of sizes and basically contains the "spagetti" code that maps those generic terms to vendor specific ones. Do you have a suggestion how this basic and generic set of formats/sizes could look like?
TLDR: new
imageformat2
widget to later replace current one with consistent and complete support for all formats on all EOS cameras. Details, see commit messages. Example from my 5Ds:Instead of :
@ben5516 and @karlkopf, could you test if
gphoto2 --get-config imageformat2
produces something meaningful with your 1DXm2 / 1DXm3 / R5m2 cameras?