GoPro HERO5 Black

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:

  1. Track the progress.
  2. Show other user where they can report issues to get support for new raw formats.
  3. 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):

RawTherapee:

dcraw:
Mail to the developer.

ufraw:
https://sourceforge.net/p/ufraw/bugs/412/

3 Likes

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:

The DNG orientation problem is fixed in darktable. :slight_smile:
That was really fast:
https://redmine.darktable.org/issues/11499

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

The is now a FOSS commandl ine tool from GoPro to decode the images:

GitHub - gopro/gpr: General Purpose Raw image format

2 Likes

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. :+1:

:slight_smile:

@LebedevRI was reviewing wrong? Whatever you do, I trust on you, that the code will improve.

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