Tobias
(Tobias)
January 23, 2017, 12:02pm
1
I have a new GoPro HERO5 Black action camera. This GoPro is the first one, that is able to save photos in a raw format. Sadly GoPro did not use DNG as file format but invented a new one. From the FAQ:
The .GPR format is an extension Adobe’s .DNG format, adding enhanced compression (VC5 Standard)
Sadly none of the FOSS I tested supports this formats. Now I started to report issues to the different Projects.
The reason I write this here is because:
Track the progress.
Show other user where they can report issues to get support for new raw formats.
Get information/tips what else I can do.
Upload a sample file to https://raw.pixls.us/:
https://raw.pixls.us/getfile.php/936/raw/GOPR0020.GPR done
Lensfun
Lensfun / Bugs / #74 GoPro HERO5 black fixed
darktable (rawspeed):
opened 04:20PM - 19 Jan 17 UTC
closed 05:31PM - 20 Oct 18 UTC
Just so it does not get lost
Copied from https://redmine.darktable.org/issues/1… 1466
```
The .GPR format is an extension Adobe’s .DNG format, adding enhanced compression (VC5 Standard)
A sample file:
https://raw.pixls.us/getfile.php/936/raw/GOPR0020.GPR
FAQ from GoPro about the file format:
https://gopro.com/help/articles/Question_Answer/What-is-RAW-Format
An interesting blogpost about the "VC5 Standard"
https://medium.com/@kierank_/reverse-engineering-the-gopro-cineform-codec-7411312bfe1c#.9f7ztpjo8
```
RawTherapee:
opened 03:53PM - 31 Dec 16 UTC
scope: file format
Hello,
It would be great if Rawtherapee could open .GPR files, a native RAW for… mat provided by the latest GoPro (Hero5).
According to the user manual it is based on the .DNG file format.
I can provides files and help debugging.
dcraw:
Mail to the developer.
ufraw:
https://sourceforge.net/p/ufraw/bugs/412/
3 Likes
Tobias
(Tobias)
February 5, 2017, 8:04am
2
Update:
I’ve now installed “Adobe DNG Converter 9.8” with Wine (1.8.5) and it works fine to convert the GoPro GPR files to DNGs. Now I’m able to open this DNG file in darktable, but the files are upside down in darktable 2.2.1. I wrote a bugreport:
opened 07:55AM - 05 Feb 17 UTC
closed 10:15AM - 05 Feb 17 UTC
I converted a GoPro .gpr image with Adobe DNG Converter 9.8 to a .dng file. The … files are upside down in darktable 2.2.1.
https://filebin.net/7h8d4s8vmw6z7gtn/GOPR0020.dng
As github doesn't support uploading dng files I used filebin. The files will expire automatically 2 months from now. Please ping me if it is expired and you need it again.
Tobias
(Tobias)
February 5, 2017, 2:02pm
3
The DNG orientation problem is fixed in darktable.
That was really fast:
https://redmine.darktable.org/issues/11499
committed 10:36AM - 05 Feb 17 UTC
Tobias
(Tobias)
October 27, 2017, 7:54pm
4
Now it should be much easier to develop support for the GoPro file format.
GoPro Open Sources the CineForm Codec:
https://gopro.com/news/gopro-open-sources-the-cineform-codec
Tobias
(Tobias)
May 5, 2018, 11:49pm
5
The is now a FOSS commandl ine tool from GoPro to decode the images:
GitHub - gopro/gpr: General Purpose Raw image format
2 Likes
Tobias
(Tobias)
October 11, 2018, 7:33am
6
Short update. Stloeffler wrote a path for rawspeed, the library that darktable uses, and made a pull request. Now @LebedevRI is reviewing this patch:
https://github.com/darktable-org/rawspeed/pull/146
So we have a good change that we’ll see GoPro Raw support in one of the next darktable version.
Tobias
(Tobias)
October 11, 2018, 8:11am
8
@LebedevRI was reviewing wrong? Whatever you do, I trust on you, that the code will improve.
LebedevRI
(Roman Lebedev)
October 20, 2018, 5:34pm
9
And after much refactoring, and woodo-based threading:
https://github.com/darktable-org/rawspeed/commit/163aaee9c86e2fdef327bb7ae2d9bbf2642297d4
Some performance numbers:
Build *with* threading:
raw.pixls.us-unique/GoPro/HERO6 Black$ ~/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench --benchmark_repetitions=10 GOPR9172.GPR; ~/rawspeed/build-Clang-Release/googlebenchmark/googlebenchmark-src/tools/compare.py -a benchmarks ~/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench{-pr146,} --benchmark_display_aggregates_only=true --benchmark_counters_tabular=true --benchmark_repetitions=250 GOPR9172.GPR
RUNNING: /home/lebedevri/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench-pr146 --benchmark_display_aggregates_only=true --benchmark_counters_tabular=true --benchmark_repetitions=250 GOPR9172.GPR --benchmark_display_aggregates_only=true --benchmark_out=/tmp/tmpP3Dmoj
2018-10-20 19:14:55
Running /home/lebedevri/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench-pr146
Run on (8 X 4000 MHz CPU s)
CPU Caches:
L1 Data 16K (x8)
L1 Instruction 64K (x4)
L2 Unified 2048K (x4)
L3 Unified 8192K (x1)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations CPUTime,s CPUTime/WallTime Pixels Pixels/CPUTime Pixels/WallTime Raws/CPUTime Raws/WallTime WallTime,s
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GOPR9172.GPR/threads:8/real_time_mean 313 ms 313 ms 2 0.312776 0.999982 12M 38.3666M 38.3659M 3.19721 3.19715 0.312782
GOPR9172.GPR/threads:8/real_time_median 313 ms 313 ms 2 0.31262 0.999979 12M 38.3852M 38.3842M 3.19877 3.19868 0.312629
GOPR9172.GPR/threads:8/real_time_stddev 1 ms 1 ms 2 1.13419m 30.4949u 0 137.106k 137.175k 0.0114255 0.0114313 1.13478m
RUNNING: /home/lebedevri/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench --benchmark_display_aggregates_only=true --benchmark_counters_tabular=true --benchmark_repetitions=250 GOPR9172.GPR --benchmark_display_aggregates_only=true --benchmark_out=/tmp/tmpkUA4ai
2018-10-20 19:20:11
Running /home/lebedevri/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench
Run on (8 X 4000 MHz CPU s)
CPU Caches:
L1 Data 16K (x8)
L1 Instruction 64K (x4)
L2 Unified 2048K (x4)
L3 Unified 8192K (x1)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations CPUTime,s CPUTime/WallTime Pixels Pixels/CPUTime Pixels/WallTime Raws/CPUTime Raws/WallTime WallTime,s
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GOPR9172.GPR/threads:8/real_time_mean 95 ms 90 ms 8 0.705983 7.46309 12M 16.9998M 126.877M 1.41665 10.5731 0.0946051
GOPR9172.GPR/threads:8/real_time_median 94 ms 90 ms 8 0.704785 7.468 12M 17.0265M 127.139M 1.41887 10.5949 0.0943851
GOPR9172.GPR/threads:8/real_time_stddev 2 ms 1 ms 8 8.34788m 0.0454182 0 191.985k 1.9629M 0.0159987 0.163575 1.64002m
Comparing /home/lebedevri/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench-pr146 to /home/lebedevri/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------------------------
GOPR9172.GPR/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 250 vs 250
GOPR9172.GPR/threads:8/real_time_mean -0.6975 -0.7126 313 95 313 90
GOPR9172.GPR/threads:8/real_time_median -0.6981 -0.7126 313 94 313 90
GOPR9172.GPR/threads:8/real_time_stddev +0.4453 +0.2651 1 2 1 1
Build without threading:
raw.pixls.us-unique/GoPro/HERO6 Black$ ~/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench --benchmark_repetitions=10 GOPR9172.GPR; ~/rawspeed/build-Clang-Release/googlebenchmark/googlebenchmark-src/tools/compare.py -a benchmarks ~/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench{-pr146,} --benchmark_display_aggregates_only=true --benchmark_counters_tabular=true --benchmark_repetitions=250 GOPR9172.GPR
RUNNING: /home/lebedevri/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench-pr146 --benchmark_display_aggregates_only=true --benchmark_counters_tabular=true --benchmark_repetitions=250 GOPR9172.GPR --benchmark_display_aggregates_only=true --benchmark_out=/tmp/tmpXMaz7S
2018-10-20 20:21:35
Running /home/lebedevri/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench-pr146
Run on (8 X 4000 MHz CPU s)
CPU Caches:
L1 Data 16K (x8)
L1 Instruction 64K (x4)
L2 Unified 2048K (x4)
L3 Unified 8192K (x1)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations CPUTime,s CPUTime/WallTime Pixels Pixels/CPUTime Pixels/WallTime Raws/CPUTime Raws/WallTime WallTime,s
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GOPR9172.GPR/threads:8/real_time_mean 314 ms 314 ms 2 0.313799 1 12M 38.2417M 38.2417M 3.18681 3.18681 0.313799
GOPR9172.GPR/threads:8/real_time_median 313 ms 313 ms 2 0.313442 1 12M 38.2846M 38.2844M 3.19038 3.19037 0.313444
GOPR9172.GPR/threads:8/real_time_stddev 1 ms 1 ms 2 1.32557m 13.5938u 0 160.751k 160.749k 0.0133959 0.0133957 1.32555m
RUNNING: /home/lebedevri/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench --benchmark_display_aggregates_only=true --benchmark_counters_tabular=true --benchmark_repetitions=250 GOPR9172.GPR --benchmark_display_aggregates_only=true --benchmark_out=/tmp/tmpv1LFQb
2018-10-20 20:24:14
Running /home/lebedevri/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench
Run on (8 X 4000 MHz CPU s)
CPU Caches:
L1 Data 16K (x8)
L1 Instruction 64K (x4)
L2 Unified 2048K (x4)
L3 Unified 8192K (x1)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations CPUTime,s CPUTime/WallTime Pixels Pixels/CPUTime Pixels/WallTime Raws/CPUTime Raws/WallTime WallTime,s
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GOPR9172.GPR/threads:8/real_time_mean 296 ms 296 ms 2 0.296435 1 12M 40.4811M 40.4812M 3.37343 3.37343 0.296435
GOPR9172.GPR/threads:8/real_time_median 296 ms 296 ms 2 0.296413 1 12M 40.4841M 40.4839M 3.37367 3.37366 0.296414
GOPR9172.GPR/threads:8/real_time_stddev 0 ms 0 ms 2 474.862u 13.4156u 0 64.7096k 64.835k 5.39246m 5.40292m 475.784u
Comparing /home/lebedevri/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench-pr146 to /home/lebedevri/rawspeed/build-Clang-Release/src/utilities/rsbench/rsbench
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------------------------
GOPR9172.GPR/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 250 vs 250
GOPR9172.GPR/threads:8/real_time_mean -0.0553 -0.0553 314 296 314 296
GOPR9172.GPR/threads:8/real_time_median -0.0543 -0.0543 313 296 313 296
GOPR9172.GPR/threads:8/real_time_stddev -0.6411 -0.6418 1 0 1 0
3 Likes