darktable-org / rawspeed

fast raw decoding library
GNU Lesser General Public License v2.1
347 stars 114 forks source link

Panasonic DC-GH6 raws are version 8 - new decompressor needed #367

Open LebedevRI opened 2 years ago

uvolfen commented 1 year ago

I uploaded a full set (all variants of crops) on raw.pixls.us with Creative Commons Zero (CC0) license at August, 22nd.

Uwe

Opendreas commented 1 year ago

Any progress on adding GH6 to Darktable?

Yaiol commented 1 year ago

Unfortunately last version of darktable 4.2.0 didn't add support to GH6, same with GH5M2 though files are available for both cameras on raw.pixls.us.

Only way to use darktable with those cameras is to convert RAW pictures to DNG

kmilos commented 1 year ago

Tracker for other models depending on v8 decoder:

https://github.com/darktable-org/darktable/issues/13511 https://github.com/darktable-org/darktable/issues/15446 https://github.com/darktable-org/darktable/issues/15679 DC-S9 DC-GH7

bringlein commented 9 months ago

Any update on this? Does it depend on libraw releasing the GH6 support as open source? (see here and here)? Thanks!

kmilos commented 9 months ago

Does it depend on libraw releasing the GH6 support as open source?

It depends on someone reverse engineering the new codec and releasing the spec or code as open source, it doesn't necessarily have to come from LibRaw.

kmilos commented 3 months ago

Just landed for porting: https://github.com/LibRaw/LibRaw/blob/master/src/decoders/pana8.cpp @jdneumeyer77 @mlouielu

jdneumeyer77 commented 3 months ago

That code is pretty ugly. Not sure when I'll get a chance to work on it, but hopefully over the next couple weeks I'll take crack at an initial port.

LebedevRI commented 3 months ago

That code is pretty ugly.

:)

Not sure when I'll get a chance to work on it, but hopefully over the next couple weeks I'll take crack at an initial port.

If you do want to take a look at this, i would strongly suggest the PR should be just the code being copied over, with no rewrites silencing compiler/clang-tidy diagnostics, or using rawspeed's native data structures. That'll give us a known-"good" baseline change.

LibRaw commented 3 months ago

That code is pretty ugly. Not sure when I'll get a chance to work on it, but hopefully over the next couple weeks I'll take crack at an initial port.

Unlike all other open source implementations of Panasonic RawFormat=8 decoders, this one works

mlouielu commented 3 months ago

That code is pretty ugly. Not sure when I'll get a chance to work on it, but hopefully over the next couple weeks I'll take crack at an initial port.

Unlike all other open source implementations of Panasonic RawFormat=8 decoders, this one works

Appreciate your team's work, and generously open sourced it in a swiftly manner.

Originally I thought it will be scheduled at the end of 2024.

jdneumeyer77 commented 3 months ago

Unlike all other open source implementations of Panasonic RawFormat=8 decoders, this one works

I never doubted it worked, since it's had time to incubate. I still appreciate the time and effort it took to reverse engineer and test it from your team. Thanks for releasing as open source.

cytrinox commented 3 months ago

I've finished my Rust port of the pana8 decoder: https://github.com/dnglab/dnglab/pull/437/commits/03c3d5dbeb654435bf461016c0a0297788b5cdee, based on libraw code.

kenjohanson2 commented 1 month ago

Upvoting. I'd love to see Darktable support this V8 codec, used by the GH6, but also I believe the G9M2 (which I have and can test). And I suspect the new GH7.. And I see G9M2 samples present at https://raw.pixls.us/data/Panasonic/DC-G9M2/. Thank you!

PS -is there some ETA/version of DT that will get this?

LibRaw commented 1 month ago

see Darktable support this V8 codec

Darktable already uses LibRaw to process Canon CR3 files. So, adding such a processing path for Panasonic/V8 should be easy. This will probably allow you to work with this file format much faster.

kjyager commented 1 month ago

EDIT: I've learned this is the wrong issue/tracker for this comment. I've truncated it so it isn't as much of an eyesore.

New Darktable user and Lumix G9II owner here. I've taken a pass at adding support via libraw, and things are looking pretty good so far. I'm not very familiar with the codebase, so I've mostly just been muddling through. I'd love feedback from experienced contributors on what else ought to be done before submitting a PR, and for some guidelines regarding the amount of testing and consistency expected for contributions.

All I've done so far is add 'rw2' to the extension whitelist for libraw: imageio_libraw:274: const gchar *always_by_libraw = "cr3,rw2";.

and update the G9M2 entry in cameras.xml.

I may adopt some of the changes from here as well.

Values for the black & white levels and color matrix are extracted from the EXIF on DNG's converted from my RW2 files, as documented by https://www.darktable.org/2012/10/whats-involved-with-adding-support-for-new-cameras/.

This alone seems to have gotten me 95%+ of the way there. With these changes the RW2 files can be opened and edited. Opening both the RW2s and DNGs converted from them show them apparently matching with a just few caveats.

EDIT: [Original comment continued with info regarding testing of RW2's via this libraw workaround]

kmilos commented 1 month ago

All I've done so far is add 'rw2' to the extension whitelist for libraw

Thanks, but that's not the real fix being looked for here.

P.S. The change to cameras.xml is irrelevant as everything is handled by LibRaw in that case. Furthermore, no code change (to darktable - we're in the RawSpeed repo and tracker here) is necessary, as you can simply add "rw2" to the (undocumented) libraw_extensions line in your darktablerc config file to get to the same (unsupported) workaround.

kjyager commented 1 month ago

All I've done so far is add 'rw2' to the extension whitelist for libraw

Thanks, but that's not the real fix being looked for here.

...

Oh, I see. Apologies for the confusion. I was scouring for info on RW2v8 support for DT, and ended up thinking this was the main issue tracking the topic. I see now this is the wrong repo.

I'm still interested in pitching in if someone is willing to point me in the right direction. Seems like a lot of people are eagerly awaiting support for RW2v8. Is the stance that libraw's decoder not considered suitable for a release, thus requiring a full port/rewrite to rawspeed instead? Or does it make sense to push the libraw workaround further within the Darktable repo?

kmilos commented 4 weeks ago

I'm still interested in pitching in if someone is willing to point me in the right direction. ... Is the stance that libraw's decoder not considered suitable for a release, thus requiring a full port/rewrite to rawspeed instead?

Great. See the comment above.

Or does it make sense to push the libraw workaround further within the Darktable repo?

IMHO it does not as it can readily be enabled from the user config file.

Edit: Sorry, I take it back - perhaps there is some tweaking to do the user config workaround (gives me a black image), but that's a separate topic for the other repo indeed.

Edit 2: Take that back again! :wink: It does simply work, only just up to G9M2, but not for the S9 that is also not yet supported by the public LibRaw 202403 snapshot...