Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/develop' into stable
Browse files Browse the repository at this point in the history
* Migration to Array2DRef<>
* SamsungV2Decompressor refactoring (-10% improvement)
* BitStream, cleanup it finally gets SROA'd
* SamsungV1Decompressor refactor (-12%)
* Slight Cr2Decompressor tuning - avoid branch in innermost loop
* HuffmanTableLUT refactoring (up to -20% improvement)
* Fix CMake OpenMP stuff on macOS

Camera support:
* Sony DSC-RX100M7
* Fujifilm X-A10
* Olympus E-M5 Mark III
* Sony ILCE-6600

* upstream/develop: (108 commits)
  Sony ILCE-6600 camera support
  cmake: drop obsolete code creating OpenMP target, unneeded with now required cmake-3.10
  cmake: add missing OpenMP-related commands
  SamsungV1Decompressor::decompress(): don't report which pixel is bad
  SamsungV1Decompressor: don't actually store expected bps of raw
  HuffmanTableLUT::decode(): streamline symbol reading diamond
  HuffmanTableLUT: make use of finishReadingPartialSymbol()
  HuffmanTable*: share processSymbol() between all implementations
  HuffmanTableLookup: factor readSymbol() out of decode()
  HuffmanTableLookup: refactor finishReadingPartialSymbol() out of decode().
  HuffmanTableVector: return CodeSymbol+codeValue from readSymbol()
  HuffmanTableTree: return CodeSymbol+codeValue from readSymbol()
  HuffmanTableLookup::setup(): cleanup (early-return, rename variables)
  HuffmanTableLUT: share baseline setup() with HuffmanTableLookup
  HuffmanTableLUT::setup(): also, we expect that 16-bit diff won't ever fit
  HuffmanTableLUT: note that in full-decode mode, in 'payload is len of following diff' case, said len is non-zero
  AbstractHuffmanTable::extend(): assert that len must not be 0.
  Cr2Decompressor::decodeN_X_Y(): actually validate that slice is a multiple of cpp
  HuffmanTableLUT: mark decode*() as always-inline, ~-20% on average
  Cr2Decompressor::decodeN_X_Y(): rewrite debranching to be actually correct
  ...
  • Loading branch information
LebedevRI committed Dec 3, 2019
2 parents 427c5d4 + 93da7cc commit 589db31
Show file tree
Hide file tree
Showing 80 changed files with 1,432 additions and 1,228 deletions.
2 changes: 1 addition & 1 deletion .ci/sonar-project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ sonar.lang.patterns.cpp=**/*.cpp,**/*.cc,**/*.cxx,**/*.c++,**/*.h,**/*.hpp,**/*.
sonar.working.directory=build/sonar-workdir
sonar.cfamily.build-wrapper-output=build/bw-output

# it expects cppunit xml format. googletest format is uncompatible.
# it expects cppunit xml format. googletest format is incompatible.
# sonar.cfamily.cppunit.reportsPath=build/unittest-reports

sonar.cfamily.gcov.reportsPath=build
Expand Down
4 changes: 2 additions & 2 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ CheckOptions:
- key: readability-function-size.ParameterThreshold
value: '6'
- key: readability-function-size.NestingThreshold
value: '6'
value: '7'
- key: readability-function-size.VariableThreshold
value: '30'
- key: readability-simplify-boolean-expr.ChainedConditionalAssignment
Expand All @@ -48,5 +48,5 @@ CheckOptions:
- key: modernize-use-default-member-init.UseAssignment
value: 1
- key: cppcoreguidelines-macro-usage.AllowedRegexp
value: 'DEBUG|_GLIBCXX_SANITIZE_VECTOR|RAWSPEED_SOURCE_DIR|STR|XSTR|BUFFER_PADDING|BSWAP16|BSWAP32|BSWAP64|ThrowExceptionHelper|ThrowIOE|ThrowRSE|ThrowCME|ThrowRDE|ThrowRPE|ThrowTPE|ThrowFIE|ThrowCPE|ThrowFPE|DECODER|fuji_quant_gradient|JPEG_MEMSRC|RLVTABLE|PRECISION_MIN|PRECISION_MAX|MARKER_BAND_END|SQR|RS_CAMERAS_XML_PATH|FULLDECODE|IMPL|IMPL0|IMPL1|PUMP|DECODE|PARSER|GEN_E|GEN_PFS|GEN_PSS|BENCHMARK_CAPTURE_NAME|OMPFIRSTPRIVATECLAUSE|OMPSHAREDCLAUSE'
value: 'DEBUG|_GLIBCXX_SANITIZE_VECTOR|RAWSPEED_SOURCE_DIR|STR|XSTR|BSWAP16|BSWAP32|BSWAP64|ThrowExceptionHelper|ThrowIOE|ThrowRSE|ThrowCME|ThrowRDE|ThrowRPE|ThrowTPE|ThrowFIE|ThrowCPE|ThrowFPE|DECODER|fuji_quant_gradient|JPEG_MEMSRC|RLVTABLE|PRECISION_MIN|PRECISION_MAX|MARKER_BAND_END|SQR|RS_CAMERAS_XML_PATH|FULLDECODE|IMPL|IMPL0|IMPL1|PUMP|DECODE|PARSER|GEN_E|GEN_PFS|GEN_PSS|BENCHMARK_CAPTURE_NAME|OMPFIRSTPRIVATECLAUSE|OMPSHAREDCLAUSE|RAWSPEED_UNLIKELY_FUNCTION|RAWSPEED_NOINLINE'
...
33 changes: 20 additions & 13 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,14 @@ install:
echo "oracle-java9-installer hold" | sudo dpkg --set-selections;
travis_retry sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y;
travis_retry sudo apt-get update -q;
travis_retry sudo apt-get install -y -q -f --fix-missing clang-3.5 clang-3.9 cmake g++-5 git libiomp-dev libjpeg-dev libpugixml-dev libxml2-utils make ninja-build zlib1g-dev;
travis_retry sudo apt-get install -y -q -f --fix-missing clang-3.9 cmake g++-5 git libiomp-dev libjpeg-dev libpugixml-dev libxml2-utils make ninja-build zlib1g-dev;
fi;
- if [[ "$TRAVIS_OS_NAME" == "linux" && "$EXTRA" == "NODOCKER" && "$TRAVIS_DIST" == "xenial" ]]; then
echo "oracle-java8-installer hold" | sudo dpkg --set-selections;
echo "oracle-java9-installer hold" | sudo dpkg --set-selections;
travis_retry sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y;
travis_retry sudo apt-get update -q;
travis_retry sudo apt-get install -y -q -f --fix-missing clang-3.5;
fi;
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
travis_retry brew update > /dev/null && brew tap Homebrew/bundle && cd .ci && brew bundle --verbose;
Expand Down Expand Up @@ -62,26 +69,26 @@ jobs:
include:
- stage: test
os: linux
dist: trusty
dist: bionic
sudo: required
services:
- docker
env: CC=gcc-9 CXX=g++-9
- stage: test
os: linux
dist: trusty
dist: bionic
sudo: required
services:
- docker
env: CC=gcc-9 CXX=g++-9 ECO="-DWITH_OPENMP=OFF"
- os: linux
dist: trusty
dist: bionic
sudo: required
services:
- docker
env: CC=clang-9 CXX=clang++-9
- os: linux
dist: trusty
dist: bionic
sudo: required
services:
- docker
Expand All @@ -95,40 +102,40 @@ jobs:
#- os: osx
# env: CC=cc CXX=c++ FLAVOR=Coverage
- os: linux
dist: trusty
dist: bionic
sudo: required
services:
- docker
# Don't forget to ensure that FindLLVMClangTidy.cmake is also bumped
env: CC=clang-9 CXX=clang++-9 TARGET=STATICANALYSIS ECO="-DUSE_CLANG_TIDY=ON"
- os: linux
dist: trusty
dist: bionic
sudo: required
services:
- docker
env: CC=clang-9 CXX=clang++-9 ECO="-DWITH_OPENMP=OFF"
- os: linux
dist: trusty
dist: bionic
sudo: required
env: CC=gcc-5 CXX=g++-5 EXTRA=NODOCKER
- os: linux
dist: trusty
dist: xenial
sudo: required
env: CC=clang-3.5 CXX=clang++-3.5 EXTRA=NODOCKER ECO="-DWITH_OPENMP=OFF"
env: CC=clang-3.5 CXX=clang++-3.5 EXTRA=NODOCKER ECO="-DWITH_OPENMP=OFF -DWITH_ZLIB=OFF"
- os: linux
dist: trusty
dist: bionic
sudo: required
env: CC=clang-3.9 CXX=clang++-3.9 EXTRA=NODOCKER
#- stage: deploy
# os: linux
# sudo: required
# dist: xenial
# dist: bionic
# edge: true
# services:
# - docker
- stage: deploy
os: linux
dist: trusty
dist: bionic
sudo: required
services:
- docker
Expand Down
1 change: 1 addition & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ rawspeed |travis-ci| |appveyor-ci| OBS_ |codecov| |oss-fuzz|
================================================================================
RawSpeed Developer Information
================================================================================

What is RawSpeed?
--------------------------------------------------------------------------------

Expand Down
2 changes: 2 additions & 0 deletions bench/librawspeed/bench/Common.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

#pragma once

#include "common/Point.h" // for iPoint2D
#include <cstddef> // for size_t

Expand Down
3 changes: 2 additions & 1 deletion bench/librawspeed/io/BitStreamBenchmark.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ static inline void BM_BitStream(benchmark::State& state, Endianness endianness,
assert((Step == 1) || rawspeed::isAligned(Step, 2));
assert((fillSize == 1) || rawspeed::isAligned(fillSize, 2));

const rawspeed::Buffer b(state.range(0));
auto storage = rawspeed::Buffer::Create(state.range(0));
const rawspeed::Buffer b(storage.get(), state.range(0));
assert(b.getSize() > 0);
assert(b.getSize() == (size_t)state.range(0));

Expand Down
14 changes: 2 additions & 12 deletions cmake/src-dependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -43,21 +43,11 @@ if(WITH_OPENMP)
message(STATUS "Looking for OpenMP - found (system)")
endif()

# FIXME: OpenMP::OpenMP_CXX target, and ${OpenMP_CXX_LIBRARIES} were both
# added in cmake-3.9. Until then, this is correct:
if(NOT TARGET OpenMP::OpenMP_CXX)
add_library(OpenMP::OpenMP_CXX INTERFACE IMPORTED)
if(OpenMP_CXX_FLAGS)
set_property(TARGET OpenMP::OpenMP_CXX PROPERTY INTERFACE_COMPILE_OPTIONS ${OpenMP_CXX_FLAGS})
set_property(TARGET OpenMP::OpenMP_CXX PROPERTY INTERFACE_LINK_LIBRARIES ${OpenMP_CXX_FLAGS})
# Yes, both of them to the same value.
endif()
endif()

# The wrapper library that *actually* should be linked to.
add_library(RawSpeed::OpenMP_CXX INTERFACE IMPORTED)
set_property(TARGET RawSpeed::OpenMP_CXX PROPERTY INTERFACE_COMPILE_OPTIONS $<TARGET_PROPERTY:OpenMP::OpenMP_CXX,INTERFACE_COMPILE_OPTIONS>)
set_property(TARGET RawSpeed::OpenMP_CXX APPEND PROPERTY INTERFACE_COMPILE_OPTIONS ${OPENMP_VERSION_SPECIFIER})
set_property(TARGET RawSpeed::OpenMP_CXX PROPERTY INTERFACE_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:OpenMP::OpenMP_CXX,INTERFACE_INCLUDE_DIRECTORIES>)
if(NOT USE_BUNDLED_LLVMOPENMP)
set_property(TARGET RawSpeed::OpenMP_CXX PROPERTY INTERFACE_LINK_LIBRARIES $<TARGET_PROPERTY:OpenMP::OpenMP_CXX,INTERFACE_LINK_LIBRARIES>)
else()
Expand Down Expand Up @@ -145,7 +135,7 @@ add_feature_info("XML reading" HAVE_PUGIXML "used for loading of data/cameras.xm
unset(HAVE_JPEG)
if(WITH_JPEG)
message(STATUS "Looking for JPEG")
find_package(JPEG 1.5.0) # libjpeg-turbo
find_package(JPEG)
if(NOT JPEG_FOUND)
message(SEND_ERROR "Did not find JPEG! Either make it find JPEG, or pass -DWITH_JPEG=OFF to disable JPEG.")
else()
Expand Down
47 changes: 47 additions & 0 deletions data/cameras.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4275,6 +4275,17 @@
<Sensor black="220" white="4000" iso_min="12800" iso_max="25599"/>
<Sensor black="187" white="4000" iso_min="25600" iso_max="25600"/>
</Camera>
<Camera make="OLYMPUS CORPORATION" model="E-M5MarkIII">
<ID make="Olympus" model="E-M5 Mark III">Olympus E-M5 Mark III</ID>
<CFA width="2" height="2">
<Color x="0" y="0">RED</Color>
<Color x="1" y="0">GREEN</Color>
<Color x="0" y="1">GREEN</Color>
<Color x="1" y="1">BLUE</Color>
</CFA>
<Crop x="0" y="0" width="0" height="0"/>
<Sensor black="257" white="4000"/>
</Camera>
<Camera make="OLYMPUS IMAGING CORP." model="E-P1">
<ID make="Olympus" model="E-P1">Olympus E-P1</ID>
<Crop x="0" y="0" width="4094" height="3082"/>
Expand Down Expand Up @@ -8371,6 +8382,17 @@
<Crop x="0" y="0" width="-12" height="0"/>
<Sensor black="800" white="16300"/>
</Camera>
<Camera make="SONY" model="DSC-RX100M7">
<ID make="Sony" model="DSC-RX100M7">Sony DSC-RX100M7</ID>
<CFA width="2" height="2">
<Color x="0" y="0">RED</Color>
<Color x="1" y="0">GREEN</Color>
<Color x="0" y="1">GREEN</Color>
<Color x="1" y="1">BLUE</Color>
</CFA>
<Crop x="0" y="0" width="-12" height="0"/>
<Sensor black="800" white="16300"/>
</Camera>
<Camera make="SONY" model="DSC-RX1R">
<ID make="Sony" model="DSC-RX1R">Sony DSC-RX1R</ID>
<CFA width="2" height="2">
Expand Down Expand Up @@ -8783,6 +8805,17 @@
<Crop x="0" y="0" width="-28" height="0"/>
<Sensor black="512" white="16300"/>
</Camera>
<Camera make="SONY" model="ILCE-6600">
<ID make="Sony" model="ILCE-6600">Sony ILCE-6600</ID>
<CFA width="2" height="2">
<Color x="0" y="0">RED</Color>
<Color x="1" y="0">GREEN</Color>
<Color x="0" y="1">GREEN</Color>
<Color x="1" y="1">BLUE</Color>
</CFA>
<Crop x="0" y="0" width="-28" height="0"/>
<Sensor black="512" white="16383"/>
</Camera>
<Camera make="SONY" model="ILCE-7">
<ID make="Sony" model="ILCE-7">Sony ILCE-7</ID>
<CFA width="2" height="2">
Expand Down Expand Up @@ -9701,6 +9734,20 @@
<Hint name="jpeg32_bitorder" value=""/>
</Hints>
</Camera>
<Camera make="FUJIFILM" model="X-A10">
<ID make="Fujifilm" model="X-A10">Fujifilm X-A10</ID>
<CFA width="2" height="2">
<Color x="0" y="0">RED</Color>
<Color x="1" y="0">GREEN</Color>
<Color x="0" y="1">GREEN</Color>
<Color x="1" y="1">BLUE</Color>
</CFA>
<Crop x="0" y="0" width="0" height="0"/>
<Sensor black="256" white="4094"/>
<Hints>
<Hint name="jpeg32_bitorder" value=""/>
</Hints>
</Camera>
<Camera make="FUJIFILM" model="XQ1">
<ID make="Fujifilm" model="XQ1">Fujifilm XQ1</ID>
<CFA2 width="6" height="6">
Expand Down
Loading

0 comments on commit 589db31

Please sign in to comment.