summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/apps/cam/camera_session.cpp14
-rw-r--r--src/apps/cam/file_sink.cpp4
-rw-r--r--src/apps/cam/file_sink.h1
-rw-r--r--src/apps/cam/main.cpp3
-rw-r--r--src/apps/common/event_loop.cpp64
-rw-r--r--src/apps/common/event_loop.h23
-rw-r--r--src/apps/common/options.cpp2
-rw-r--r--src/apps/common/ppm_writer.cpp7
-rw-r--r--src/apps/lc-compliance/environment.h2
-rw-r--r--src/apps/lc-compliance/helpers/capture.cpp162
-rw-r--r--src/apps/lc-compliance/helpers/capture.h51
-rw-r--r--src/apps/lc-compliance/main.cpp42
-rw-r--r--src/apps/lc-compliance/tests/capture_test.cpp21
-rw-r--r--src/apps/qcam/format_converter.cpp2
-rw-r--r--src/apps/qcam/main_window.cpp5
-rw-r--r--src/gstreamer/gstlibcamera-controls.cpp.in2
-rw-r--r--src/gstreamer/gstlibcamera-utils.cpp1
-rw-r--r--src/gstreamer/gstlibcameraallocator.cpp14
-rw-r--r--src/ipa/ipu3/algorithms/awb.h2
-rw-r--r--src/ipa/libipa/agc_mean_luminance.cpp12
-rw-r--r--src/ipa/libipa/awb.cpp265
-rw-r--r--src/ipa/libipa/awb.h66
-rw-r--r--src/ipa/libipa/awb_bayes.cpp505
-rw-r--r--src/ipa/libipa/awb_bayes.h59
-rw-r--r--src/ipa/libipa/awb_grey.cpp114
-rw-r--r--src/ipa/libipa/awb_grey.h36
-rw-r--r--src/ipa/libipa/colours.h2
-rw-r--r--src/ipa/libipa/exposure_mode_helper.cpp4
-rw-r--r--src/ipa/libipa/interpolator.cpp10
-rw-r--r--src/ipa/libipa/interpolator.h5
-rw-r--r--src/ipa/libipa/lux.cpp16
-rw-r--r--src/ipa/libipa/lux.h3
-rw-r--r--src/ipa/libipa/meson.build8
-rw-r--r--src/ipa/libipa/pwl.cpp5
-rw-r--r--src/ipa/libipa/pwl.h3
-rw-r--r--src/ipa/libipa/vector.h370
-rw-r--r--src/ipa/rkisp1/algorithms/agc.cpp233
-rw-r--r--src/ipa/rkisp1/algorithms/agc.h4
-rw-r--r--src/ipa/rkisp1/algorithms/awb.cpp176
-rw-r--r--src/ipa/rkisp1/algorithms/awb.h10
-rw-r--r--src/ipa/rkisp1/algorithms/ccm.cpp7
-rw-r--r--src/ipa/rkisp1/algorithms/lux.cpp4
-rw-r--r--src/ipa/rkisp1/ipa_context.cpp40
-rw-r--r--src/ipa/rkisp1/ipa_context.h14
-rw-r--r--src/ipa/rkisp1/rkisp1.cpp15
-rw-r--r--src/ipa/rpi/common/ipa_base.cpp122
-rw-r--r--src/ipa/rpi/controller/agc_algorithm.h8
-rw-r--r--src/ipa/rpi/controller/rpi/agc.cpp52
-rw-r--r--src/ipa/rpi/controller/rpi/agc.h8
-rw-r--r--src/ipa/rpi/controller/rpi/agc_channel.cpp31
-rw-r--r--src/ipa/rpi/controller/rpi/agc_channel.h8
-rw-r--r--src/ipa/rpi/pisp/data/imx219.json1187
-rw-r--r--src/ipa/rpi/pisp/data/imx219_noir.json1112
-rw-r--r--src/ipa/rpi/pisp/data/imx290.json341
-rw-r--r--src/ipa/rpi/pisp/data/imx296.json1194
-rw-r--r--src/ipa/rpi/pisp/data/imx296_16mm.json1247
-rw-r--r--src/ipa/rpi/pisp/data/imx296_6mm.json1247
-rw-r--r--src/ipa/rpi/pisp/data/imx296_mono.json960
-rw-r--r--src/ipa/rpi/pisp/data/imx378.json634
-rwxr-xr-xsrc/ipa/rpi/pisp/data/imx415.json1159
-rw-r--r--src/ipa/rpi/pisp/data/imx462.json342
-rw-r--r--src/ipa/rpi/pisp/data/imx477.json1186
-rw-r--r--src/ipa/rpi/pisp/data/imx477_16mm.json1240
-rw-r--r--src/ipa/rpi/pisp/data/imx477_6mm.json1240
-rw-r--r--src/ipa/rpi/pisp/data/imx477_noir.json1148
-rw-r--r--src/ipa/rpi/pisp/data/imx477_scientific.json546
-rw-r--r--src/ipa/rpi/pisp/data/imx519.json634
-rw-r--r--src/ipa/rpi/pisp/data/imx708.json1270
-rw-r--r--src/ipa/rpi/pisp/data/imx708_noir.json1233
-rw-r--r--src/ipa/rpi/pisp/data/imx708_wide.json1293
-rw-r--r--src/ipa/rpi/pisp/data/imx708_wide_noir.json1148
-rw-r--r--src/ipa/rpi/pisp/data/meson.build29
-rw-r--r--src/ipa/rpi/pisp/data/ov5647.json1186
-rw-r--r--src/ipa/rpi/pisp/data/ov5647_noir.json1121
-rwxr-xr-xsrc/ipa/rpi/pisp/data/ov64a40.json1133
-rw-r--r--src/ipa/rpi/pisp/data/ov9281_mono.json215
-rw-r--r--src/ipa/rpi/pisp/data/se327m12.json639
-rw-r--r--src/ipa/rpi/pisp/data/uncalibrated.json135
-rw-r--r--src/ipa/rpi/pisp/meson.build49
-rw-r--r--src/ipa/rpi/pisp/pisp.cpp1068
-rw-r--r--src/ipa/simple/algorithms/agc.cpp11
-rw-r--r--src/ipa/simple/algorithms/awb.cpp50
-rw-r--r--src/ipa/simple/algorithms/awb.h6
-rw-r--r--src/ipa/simple/algorithms/blc.cpp11
-rw-r--r--src/ipa/simple/algorithms/ccm.cpp76
-rw-r--r--src/ipa/simple/algorithms/ccm.h43
-rw-r--r--src/ipa/simple/algorithms/lut.cpp82
-rw-r--r--src/ipa/simple/algorithms/lut.h6
-rw-r--r--src/ipa/simple/algorithms/meson.build1
-rw-r--r--src/ipa/simple/data/uncalibrated.yaml9
-rw-r--r--src/ipa/simple/ipa_context.h32
-rw-r--r--src/ipa/simple/soft_simple.cpp32
-rw-r--r--src/libcamera/base/log.cpp155
-rw-r--r--src/libcamera/base/object.cpp2
-rw-r--r--src/libcamera/base/signal.cpp2
-rw-r--r--src/libcamera/base/thread.cpp27
-rw-r--r--src/libcamera/camera.cpp24
-rw-r--r--src/libcamera/camera_manager.cpp44
-rw-r--r--src/libcamera/control_ids_core.yaml279
-rw-r--r--src/libcamera/control_ids_draft.yaml30
-rw-r--r--src/libcamera/control_ids_rpi.yaml13
-rw-r--r--src/libcamera/converter/converter_v4l2_m2m.cpp2
-rw-r--r--src/libcamera/dma_buf_allocator.cpp7
-rw-r--r--src/libcamera/ipa_manager.cpp18
-rw-r--r--src/libcamera/ipa_proxy.cpp27
-rw-r--r--src/libcamera/matrix.cpp11
-rw-r--r--src/libcamera/media_device.cpp3
-rw-r--r--src/libcamera/meson.build1
-rw-r--r--src/libcamera/pipeline/mali-c55/mali-c55.cpp2
-rw-r--r--src/libcamera/pipeline/rkisp1/rkisp1.cpp16
-rw-r--r--src/libcamera/pipeline/rpi/common/pipeline_base.cpp19
-rw-r--r--src/libcamera/pipeline/rpi/common/rpi_stream.h10
-rw-r--r--src/libcamera/pipeline/rpi/pisp/data/example.yaml45
-rw-r--r--src/libcamera/pipeline/rpi/pisp/data/meson.build8
-rw-r--r--src/libcamera/pipeline/rpi/pisp/meson.build12
-rw-r--r--src/libcamera/pipeline/rpi/pisp/pisp.cpp2372
-rw-r--r--src/libcamera/pipeline/simple/simple.cpp112
-rw-r--r--src/libcamera/pipeline/uvcvideo/uvcvideo.cpp53
-rw-r--r--src/libcamera/pipeline/virtual/config_parser.cpp2
-rw-r--r--src/libcamera/pipeline/virtual/data/meson.build4
-rw-r--r--src/libcamera/pipeline/virtual/meson.build2
-rw-r--r--src/libcamera/pipeline/virtual/virtual.cpp38
-rw-r--r--src/libcamera/pipeline/virtual/virtual.h1
-rw-r--r--src/libcamera/pipeline_handler.cpp12
-rw-r--r--src/libcamera/process.cpp2
-rw-r--r--src/libcamera/request.cpp18
-rw-r--r--src/libcamera/software_isp/debayer.cpp60
-rw-r--r--src/libcamera/software_isp/debayer.h3
-rw-r--r--src/libcamera/software_isp/debayer_cpu.cpp158
-rw-r--r--src/libcamera/software_isp/debayer_cpu.h39
-rw-r--r--src/libcamera/software_isp/software_isp.cpp72
-rw-r--r--src/libcamera/v4l2_subdevice.cpp8
-rw-r--r--src/libcamera/v4l2_videodevice.cpp4
-rw-r--r--src/libcamera/vector.cpp (renamed from src/ipa/libipa/vector.cpp)6
-rw-r--r--src/meson.build14
-rw-r--r--src/v4l2/meson.build7
136 files changed, 31398 insertions, 1278 deletions
diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp
index 9e934827..97c1ae44 100644
--- a/src/apps/cam/camera_session.cpp
+++ b/src/apps/cam/camera_session.cpp
@@ -5,9 +5,12 @@
* Camera capture session
*/
+#include "camera_session.h"
+
#include <iomanip>
#include <iostream>
#include <limits.h>
+#include <optional>
#include <sstream>
#include <libcamera/control_ids.h>
@@ -16,7 +19,6 @@
#include "../common/event_loop.h"
#include "../common/stream_options.h"
-#include "camera_session.h"
#include "capture_script.h"
#include "file_sink.h"
#ifdef HAVE_KMS
@@ -173,6 +175,11 @@ void CameraSession::listControls() const
std::cout << "Control: " << io.str()
<< id->vendor() << "::" << id->name() << ":"
<< std::endl;
+
+ std::optional<int32_t> def;
+ if (!info.def().isNone())
+ def = info.def().get<int32_t>();
+
for (const auto &value : info.values()) {
int32_t val = value.get<int32_t>();
const auto &it = id->enumerators().find(val);
@@ -182,7 +189,10 @@ void CameraSession::listControls() const
std::cout << "UNKNOWN";
else
std::cout << it->second;
- std::cout << " (" << val << ")" << std::endl;
+
+ std::cout << " (" << val << ")"
+ << (val == def ? " [default]" : "")
+ << std::endl;
}
}
diff --git a/src/apps/cam/file_sink.cpp b/src/apps/cam/file_sink.cpp
index 76e21db9..65794a2f 100644
--- a/src/apps/cam/file_sink.cpp
+++ b/src/apps/cam/file_sink.cpp
@@ -5,6 +5,8 @@
* File Sink
*/
+#include "file_sink.h"
+
#include <array>
#include <assert.h>
#include <fcntl.h>
@@ -21,8 +23,6 @@
#include "../common/image.h"
#include "../common/ppm_writer.h"
-#include "file_sink.h"
-
using namespace libcamera;
FileSink::FileSink([[maybe_unused]] const libcamera::Camera *camera,
diff --git a/src/apps/cam/file_sink.h b/src/apps/cam/file_sink.h
index 71b7fe0f..26cd61b3 100644
--- a/src/apps/cam/file_sink.h
+++ b/src/apps/cam/file_sink.h
@@ -11,6 +11,7 @@
#include <memory>
#include <string>
+#include <libcamera/controls.h>
#include <libcamera/stream.h>
#include "frame_sink.h"
diff --git a/src/apps/cam/main.cpp b/src/apps/cam/main.cpp
index 460dbc81..fa266eca 100644
--- a/src/apps/cam/main.cpp
+++ b/src/apps/cam/main.cpp
@@ -5,6 +5,8 @@
* cam - The libcamera swiss army knife
*/
+#include "main.h"
+
#include <atomic>
#include <iomanip>
#include <iostream>
@@ -19,7 +21,6 @@
#include "../common/stream_options.h"
#include "camera_session.h"
-#include "main.h"
using namespace libcamera;
diff --git a/src/apps/common/event_loop.cpp b/src/apps/common/event_loop.cpp
index f7f9afa0..b6230f4b 100644
--- a/src/apps/common/event_loop.cpp
+++ b/src/apps/common/event_loop.cpp
@@ -21,12 +21,35 @@ EventLoop::EventLoop()
evthread_use_pthreads();
base_ = event_base_new();
instance_ = this;
+
+ callsTrigger_ = event_new(base_, -1, EV_PERSIST, [](evutil_socket_t, short, void *closure) {
+ auto *self = static_cast<EventLoop *>(closure);
+
+ for (;;) {
+ std::function<void()> call;
+
+ {
+ std::lock_guard locker(self->lock_);
+ if (self->calls_.empty())
+ break;
+
+ call = std::move(self->calls_.front());
+ self->calls_.pop_front();
+ }
+
+ call();
+ }
+ }, this);
+ assert(callsTrigger_);
+ event_add(callsTrigger_, nullptr);
}
EventLoop::~EventLoop()
{
instance_ = nullptr;
+ event_free(callsTrigger_);
+
events_.clear();
event_base_free(base_);
libevent_global_shutdown();
@@ -50,20 +73,20 @@ void EventLoop::exit(int code)
event_base_loopbreak(base_);
}
-void EventLoop::callLater(const std::function<void()> &func)
+void EventLoop::callLater(std::function<void()> &&func)
{
{
std::unique_lock<std::mutex> locker(lock_);
- calls_.push_back(func);
+ calls_.push_back(std::move(func));
}
- event_base_once(base_, -1, EV_TIMEOUT, dispatchCallback, this, nullptr);
+ event_active(callsTrigger_, 0, 0);
}
void EventLoop::addFdEvent(int fd, EventType type,
- const std::function<void()> &callback)
+ std::function<void()> &&callback)
{
- std::unique_ptr<Event> event = std::make_unique<Event>(callback);
+ std::unique_ptr<Event> event = std::make_unique<Event>(std::move(callback));
short events = (type & Read ? EV_READ : 0)
| (type & Write ? EV_WRITE : 0)
| EV_PERSIST;
@@ -85,9 +108,9 @@ void EventLoop::addFdEvent(int fd, EventType type,
}
void EventLoop::addTimerEvent(const std::chrono::microseconds period,
- const std::function<void()> &callback)
+ std::function<void()> &&callback)
{
- std::unique_ptr<Event> event = std::make_unique<Event>(callback);
+ std::unique_ptr<Event> event = std::make_unique<Event>(std::move(callback));
event->event_ = event_new(base_, -1, EV_PERSIST, &EventLoop::Event::dispatch,
event.get());
if (!event->event_) {
@@ -108,31 +131,8 @@ void EventLoop::addTimerEvent(const std::chrono::microseconds period,
events_.push_back(std::move(event));
}
-void EventLoop::dispatchCallback([[maybe_unused]] evutil_socket_t fd,
- [[maybe_unused]] short flags, void *param)
-{
- EventLoop *loop = static_cast<EventLoop *>(param);
- loop->dispatchCall();
-}
-
-void EventLoop::dispatchCall()
-{
- std::function<void()> call;
-
- {
- std::unique_lock<std::mutex> locker(lock_);
- if (calls_.empty())
- return;
-
- call = calls_.front();
- calls_.pop_front();
- }
-
- call();
-}
-
-EventLoop::Event::Event(const std::function<void()> &callback)
- : callback_(callback), event_(nullptr)
+EventLoop::Event::Event(std::function<void()> &&callback)
+ : callback_(std::move(callback)), event_(nullptr)
{
}
diff --git a/src/apps/common/event_loop.h b/src/apps/common/event_loop.h
index ef129b9a..d8b6df2f 100644
--- a/src/apps/common/event_loop.h
+++ b/src/apps/common/event_loop.h
@@ -8,11 +8,14 @@
#pragma once
#include <chrono>
+#include <deque>
#include <functional>
#include <list>
#include <memory>
#include <mutex>
+#include <libcamera/base/class.h>
+
#include <event2/util.h>
struct event_base;
@@ -33,18 +36,20 @@ public:
int exec();
void exit(int code = 0);
- void callLater(const std::function<void()> &func);
+ void callLater(std::function<void()> &&func);
void addFdEvent(int fd, EventType type,
- const std::function<void()> &handler);
+ std::function<void()> &&handler);
- using duration = std::chrono::steady_clock::duration;
void addTimerEvent(const std::chrono::microseconds period,
- const std::function<void()> &handler);
+ std::function<void()> &&handler);
private:
+ LIBCAMERA_DISABLE_COPY_AND_MOVE(EventLoop)
+
struct Event {
- Event(const std::function<void()> &callback);
+ Event(std::function<void()> &&callback);
+ LIBCAMERA_DISABLE_COPY_AND_MOVE(Event)
~Event();
static void dispatch(int fd, short events, void *arg);
@@ -58,11 +63,9 @@ private:
struct event_base *base_;
int exitCode_;
- std::list<std::function<void()>> calls_;
+ std::deque<std::function<void()>> calls_;
+ struct event *callsTrigger_ = nullptr;
+
std::list<std::unique_ptr<Event>> events_;
std::mutex lock_;
-
- static void dispatchCallback(evutil_socket_t fd, short flags,
- void *param);
- void dispatchCall();
};
diff --git a/src/apps/common/options.cpp b/src/apps/common/options.cpp
index ece268d0..cae193cc 100644
--- a/src/apps/common/options.cpp
+++ b/src/apps/common/options.cpp
@@ -1040,7 +1040,7 @@ void OptionsParser::usageOptions(const std::list<Option> &options,
std::cerr << std::setw(indent) << argument;
- for (const char *help = option.help, *end = help; end; ) {
+ for (const char *help = option.help, *end = help; end;) {
end = strchr(help, '\n');
if (end) {
std::cerr << std::string(help, end - help + 1);
diff --git a/src/apps/common/ppm_writer.cpp b/src/apps/common/ppm_writer.cpp
index d6c8641d..368de8bf 100644
--- a/src/apps/common/ppm_writer.cpp
+++ b/src/apps/common/ppm_writer.cpp
@@ -7,6 +7,7 @@
#include "ppm_writer.h"
+#include <errno.h>
#include <fstream>
#include <iostream>
@@ -28,7 +29,7 @@ int PPMWriter::write(const char *filename,
std::ofstream output(filename, std::ios::binary);
if (!output) {
std::cerr << "Failed to open ppm file: " << filename << std::endl;
- return -EINVAL;
+ return -EIO;
}
output << "P6" << std::endl
@@ -36,7 +37,7 @@ int PPMWriter::write(const char *filename,
<< "255" << std::endl;
if (!output) {
std::cerr << "Failed to write the file header" << std::endl;
- return -EINVAL;
+ return -EIO;
}
const unsigned int rowLength = config.size.width * 3;
@@ -45,7 +46,7 @@ int PPMWriter::write(const char *filename,
output.write(row, rowLength);
if (!output) {
std::cerr << "Failed to write image data at row " << y << std::endl;
- return -EINVAL;
+ return -EIO;
}
}
diff --git a/src/apps/lc-compliance/environment.h b/src/apps/lc-compliance/environment.h
index 543e5372..834c722e 100644
--- a/src/apps/lc-compliance/environment.h
+++ b/src/apps/lc-compliance/environment.h
@@ -23,5 +23,5 @@ private:
Environment() = default;
std::string cameraId_;
- libcamera::CameraManager *cm_;
+ libcamera::CameraManager *cm_ = nullptr;
};
diff --git a/src/apps/lc-compliance/helpers/capture.cpp b/src/apps/lc-compliance/helpers/capture.cpp
index 90c1530b..f2c6d58c 100644
--- a/src/apps/lc-compliance/helpers/capture.cpp
+++ b/src/apps/lc-compliance/helpers/capture.cpp
@@ -7,13 +7,14 @@
#include "capture.h"
+#include <assert.h>
+
#include <gtest/gtest.h>
using namespace libcamera;
Capture::Capture(std::shared_ptr<Camera> camera)
- : loop_(nullptr), camera_(camera),
- allocator_(std::make_unique<FrameBufferAllocator>(camera))
+ : camera_(std::move(camera)), allocator_(camera_)
{
}
@@ -26,10 +27,8 @@ void Capture::configure(StreamRole role)
{
config_ = camera_->generateConfiguration({ role });
- if (!config_) {
- std::cout << "Role not supported by camera" << std::endl;
- GTEST_SKIP();
- }
+ if (!config_)
+ GTEST_SKIP() << "Role not supported by camera";
if (config_->validate() != CameraConfiguration::Valid) {
config_.reset();
@@ -42,155 +41,106 @@ void Capture::configure(StreamRole role)
}
}
-void Capture::start()
+void Capture::run(unsigned int captureLimit, std::optional<unsigned int> queueLimit)
{
- Stream *stream = config_->at(0).stream();
- int count = allocator_->allocate(stream);
-
- ASSERT_GE(count, 0) << "Failed to allocate buffers";
- EXPECT_EQ(count, config_->at(0).bufferCount) << "Allocated less buffers than expected";
-
- camera_->requestCompleted.connect(this, &Capture::requestComplete);
-
- ASSERT_EQ(camera_->start(), 0) << "Failed to start camera";
-}
+ assert(!queueLimit || captureLimit <= *queueLimit);
-void Capture::stop()
-{
- if (!config_ || !allocator_->allocated())
- return;
+ captureLimit_ = captureLimit;
+ queueLimit_ = queueLimit;
- camera_->stop();
+ captureCount_ = queueCount_ = 0;
- camera_->requestCompleted.disconnect(this);
+ EventLoop loop;
+ loop_ = &loop;
- Stream *stream = config_->at(0).stream();
- requests_.clear();
- allocator_->free(stream);
-}
-
-/* CaptureBalanced */
-
-CaptureBalanced::CaptureBalanced(std::shared_ptr<Camera> camera)
- : Capture(camera)
-{
-}
-
-void CaptureBalanced::capture(unsigned int numRequests)
-{
start();
- Stream *stream = config_->at(0).stream();
- const std::vector<std::unique_ptr<FrameBuffer>> &buffers = allocator_->buffers(stream);
-
- /* No point in testing less requests then the camera depth. */
- if (buffers.size() > numRequests) {
- std::cout << "Camera needs " + std::to_string(buffers.size())
- + " requests, can't test only "
- + std::to_string(numRequests) << std::endl;
- GTEST_SKIP();
- }
+ for (const auto &request : requests_)
+ queueRequest(request.get());
- queueCount_ = 0;
- captureCount_ = 0;
- captureLimit_ = numRequests;
+ EXPECT_EQ(loop_->exec(), 0);
- /* Queue the recommended number of requests. */
- for (const std::unique_ptr<FrameBuffer> &buffer : buffers) {
- std::unique_ptr<Request> request = camera_->createRequest();
- ASSERT_TRUE(request) << "Can't create request";
-
- ASSERT_EQ(request->addBuffer(stream, buffer.get()), 0) << "Can't set buffer for request";
-
- ASSERT_EQ(queueRequest(request.get()), 0) << "Failed to queue request";
-
- requests_.push_back(std::move(request));
- }
-
- /* Run capture session. */
- loop_ = new EventLoop();
- loop_->exec();
stop();
- delete loop_;
- ASSERT_EQ(captureCount_, captureLimit_);
+ EXPECT_LE(captureLimit_, captureCount_);
+ EXPECT_LE(captureCount_, queueCount_);
+ EXPECT_TRUE(!queueLimit_ || queueCount_ <= *queueLimit_);
}
-int CaptureBalanced::queueRequest(Request *request)
+int Capture::queueRequest(libcamera::Request *request)
{
- queueCount_++;
- if (queueCount_ > captureLimit_)
+ if (queueLimit_ && queueCount_ >= *queueLimit_)
return 0;
- return camera_->queueRequest(request);
+ int ret = camera_->queueRequest(request);
+ if (ret < 0)
+ return ret;
+
+ queueCount_ += 1;
+ return 0;
}
-void CaptureBalanced::requestComplete(Request *request)
+void Capture::requestComplete(Request *request)
{
- EXPECT_EQ(request->status(), Request::Status::RequestComplete)
- << "Request didn't complete successfully";
-
captureCount_++;
if (captureCount_ >= captureLimit_) {
loop_->exit(0);
return;
}
+ EXPECT_EQ(request->status(), Request::Status::RequestComplete)
+ << "Request didn't complete successfully";
+
request->reuse(Request::ReuseBuffers);
if (queueRequest(request))
loop_->exit(-EINVAL);
}
-/* CaptureUnbalanced */
-
-CaptureUnbalanced::CaptureUnbalanced(std::shared_ptr<Camera> camera)
- : Capture(camera)
-{
-}
-
-void CaptureUnbalanced::capture(unsigned int numRequests)
+void Capture::start()
{
- start();
+ assert(config_);
+ assert(!config_->empty());
+ assert(!allocator_.allocated());
+ assert(requests_.empty());
Stream *stream = config_->at(0).stream();
- const std::vector<std::unique_ptr<FrameBuffer>> &buffers = allocator_->buffers(stream);
+ int count = allocator_.allocate(stream);
- captureCount_ = 0;
- captureLimit_ = numRequests;
+ ASSERT_GE(count, 0) << "Failed to allocate buffers";
+ EXPECT_EQ(count, config_->at(0).bufferCount) << "Allocated less buffers than expected";
+
+ const std::vector<std::unique_ptr<FrameBuffer>> &buffers = allocator_.buffers(stream);
+
+ /* No point in testing less requests then the camera depth. */
+ if (queueLimit_ && *queueLimit_ < buffers.size()) {
+ GTEST_SKIP() << "Camera needs " << buffers.size()
+ << " requests, can't test only " << *queueLimit_;
+ }
- /* Queue the recommended number of requests. */
for (const std::unique_ptr<FrameBuffer> &buffer : buffers) {
std::unique_ptr<Request> request = camera_->createRequest();
ASSERT_TRUE(request) << "Can't create request";
ASSERT_EQ(request->addBuffer(stream, buffer.get()), 0) << "Can't set buffer for request";
- ASSERT_EQ(camera_->queueRequest(request.get()), 0) << "Failed to queue request";
-
requests_.push_back(std::move(request));
}
- /* Run capture session. */
- loop_ = new EventLoop();
- int status = loop_->exec();
- stop();
- delete loop_;
+ camera_->requestCompleted.connect(this, &Capture::requestComplete);
- ASSERT_EQ(status, 0);
+ ASSERT_EQ(camera_->start(), 0) << "Failed to start camera";
}
-void CaptureUnbalanced::requestComplete(Request *request)
+void Capture::stop()
{
- captureCount_++;
- if (captureCount_ >= captureLimit_) {
- loop_->exit(0);
+ if (!config_ || !allocator_.allocated())
return;
- }
- EXPECT_EQ(request->status(), Request::Status::RequestComplete)
- << "Request didn't complete successfully";
+ camera_->stop();
- request->reuse(Request::ReuseBuffers);
- if (camera_->queueRequest(request))
- loop_->exit(-EINVAL);
+ camera_->requestCompleted.disconnect(this);
+
+ Stream *stream = config_->at(0).stream();
+ requests_.clear();
+ allocator_.free(stream);
}
diff --git a/src/apps/lc-compliance/helpers/capture.h b/src/apps/lc-compliance/helpers/capture.h
index 19b6927c..0e7b848f 100644
--- a/src/apps/lc-compliance/helpers/capture.h
+++ b/src/apps/lc-compliance/helpers/capture.h
@@ -8,6 +8,7 @@
#pragma once
#include <memory>
+#include <optional>
#include <libcamera/libcamera.h>
@@ -16,51 +17,29 @@
class Capture
{
public:
+ Capture(std::shared_ptr<libcamera::Camera> camera);
+ ~Capture();
+
void configure(libcamera::StreamRole role);
+ void run(unsigned int captureLimit, std::optional<unsigned int> queueLimit = {});
-protected:
- Capture(std::shared_ptr<libcamera::Camera> camera);
- virtual ~Capture();
+private:
+ LIBCAMERA_DISABLE_COPY_AND_MOVE(Capture)
void start();
void stop();
- virtual void requestComplete(libcamera::Request *request) = 0;
-
- EventLoop *loop_;
+ int queueRequest(libcamera::Request *request);
+ void requestComplete(libcamera::Request *request);
std::shared_ptr<libcamera::Camera> camera_;
- std::unique_ptr<libcamera::FrameBufferAllocator> allocator_;
+ libcamera::FrameBufferAllocator allocator_;
std::unique_ptr<libcamera::CameraConfiguration> config_;
std::vector<std::unique_ptr<libcamera::Request>> requests_;
-};
-
-class CaptureBalanced : public Capture
-{
-public:
- CaptureBalanced(std::shared_ptr<libcamera::Camera> camera);
-
- void capture(unsigned int numRequests);
-
-private:
- int queueRequest(libcamera::Request *request);
- void requestComplete(libcamera::Request *request) override;
-
- unsigned int queueCount_;
- unsigned int captureCount_;
- unsigned int captureLimit_;
-};
-
-class CaptureUnbalanced : public Capture
-{
-public:
- CaptureUnbalanced(std::shared_ptr<libcamera::Camera> camera);
-
- void capture(unsigned int numRequests);
-
-private:
- void requestComplete(libcamera::Request *request) override;
- unsigned int captureCount_;
- unsigned int captureLimit_;
+ EventLoop *loop_ = nullptr;
+ unsigned int captureLimit_ = 0;
+ std::optional<unsigned int> queueLimit_;
+ unsigned int captureCount_ = 0;
+ unsigned int queueCount_ = 0;
};
diff --git a/src/apps/lc-compliance/main.cpp b/src/apps/lc-compliance/main.cpp
index 3f1d2a61..e9f0ffbb 100644
--- a/src/apps/lc-compliance/main.cpp
+++ b/src/apps/lc-compliance/main.cpp
@@ -45,13 +45,11 @@ class ThrowListener : public testing::EmptyTestEventListener
static void listCameras(CameraManager *cm)
{
for (const std::shared_ptr<Camera> &cam : cm->cameras())
- std::cout << "- " << cam.get()->id() << std::endl;
+ std::cout << "- " << cam->id() << std::endl;
}
static int initCamera(CameraManager *cm, OptionsParser::Options options)
{
- std::shared_ptr<Camera> camera;
-
int ret = cm->start();
if (ret) {
std::cout << "Failed to start camera manager: "
@@ -66,7 +64,7 @@ static int initCamera(CameraManager *cm, OptionsParser::Options options)
}
const std::string &cameraId = options[OptCamera];
- camera = cm->get(cameraId);
+ std::shared_ptr<Camera> camera = cm->get(cameraId);
if (!camera) {
std::cout << "Camera " << cameraId << " not found, available cameras:" << std::endl;
listCameras(cm);
@@ -82,45 +80,27 @@ static int initCamera(CameraManager *cm, OptionsParser::Options options)
static int initGtestParameters(char *arg0, OptionsParser::Options options)
{
- const std::map<std::string, std::string> gtestFlags = { { "list", "--gtest_list_tests" },
- { "filter", "--gtest_filter" } };
-
- int argc = 0;
+ std::vector<const char *> argv;
std::string filterParam;
- /*
- * +2 to have space for both the 0th argument that is needed but not
- * used and the null at the end.
- */
- char **argv = new char *[(gtestFlags.size() + 2)];
- if (!argv)
- return -ENOMEM;
-
- argv[0] = arg0;
- argc++;
+ argv.push_back(arg0);
- if (options.isSet(OptList)) {
- argv[argc] = const_cast<char *>(gtestFlags.at("list").c_str());
- argc++;
- }
+ if (options.isSet(OptList))
+ argv.push_back("--gtest_list_tests");
if (options.isSet(OptFilter)) {
/*
* The filter flag needs to be passed as a single parameter, in
* the format --gtest_filter=filterStr
*/
- filterParam = gtestFlags.at("filter") + "=" +
- static_cast<const std::string &>(options[OptFilter]);
-
- argv[argc] = const_cast<char *>(filterParam.c_str());
- argc++;
+ filterParam = "--gtest_filter=" + options[OptFilter].toString();
+ argv.push_back(filterParam.c_str());
}
- argv[argc] = nullptr;
-
- ::testing::InitGoogleTest(&argc, argv);
+ argv.push_back(nullptr);
- delete[] argv;
+ int argc = argv.size();
+ ::testing::InitGoogleTest(&argc, const_cast<char **>(argv.data()));
return 0;
}
diff --git a/src/apps/lc-compliance/tests/capture_test.cpp b/src/apps/lc-compliance/tests/capture_test.cpp
index ad3a1da2..93bed48f 100644
--- a/src/apps/lc-compliance/tests/capture_test.cpp
+++ b/src/apps/lc-compliance/tests/capture_test.cpp
@@ -14,10 +14,13 @@
#include "environment.h"
+namespace {
+
using namespace libcamera;
-const std::vector<int> NUMREQUESTS = { 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 };
-const std::vector<StreamRole> ROLES = {
+const int NUMREQUESTS[] = { 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 };
+
+const StreamRole ROLES[] = {
StreamRole::Raw,
StreamRole::StillCapture,
StreamRole::VideoRecording,
@@ -84,11 +87,11 @@ TEST_P(SingleStream, Capture)
{
auto [role, numRequests] = GetParam();
- CaptureBalanced capture(camera_);
+ Capture capture(camera_);
capture.configure(role);
- capture.capture(numRequests);
+ capture.run(numRequests, numRequests);
}
/*
@@ -103,12 +106,12 @@ TEST_P(SingleStream, CaptureStartStop)
auto [role, numRequests] = GetParam();
unsigned int numRepeats = 3;
- CaptureBalanced capture(camera_);
+ Capture capture(camera_);
capture.configure(role);
for (unsigned int starts = 0; starts < numRepeats; starts++)
- capture.capture(numRequests);
+ capture.run(numRequests, numRequests);
}
/*
@@ -122,11 +125,11 @@ TEST_P(SingleStream, UnbalancedStop)
{
auto [role, numRequests] = GetParam();
- CaptureUnbalanced capture(camera_);
+ Capture capture(camera_);
capture.configure(role);
- capture.capture(numRequests);
+ capture.run(numRequests);
}
INSTANTIATE_TEST_SUITE_P(CaptureTests,
@@ -134,3 +137,5 @@ INSTANTIATE_TEST_SUITE_P(CaptureTests,
testing::Combine(testing::ValuesIn(ROLES),
testing::ValuesIn(NUMREQUESTS)),
SingleStream::nameParameters);
+
+} /* namespace */
diff --git a/src/apps/qcam/format_converter.cpp b/src/apps/qcam/format_converter.cpp
index 32123493..b025a3c7 100644
--- a/src/apps/qcam/format_converter.cpp
+++ b/src/apps/qcam/format_converter.cpp
@@ -249,7 +249,7 @@ void FormatConverter::convertYUVPacked(const Image *srcImage, unsigned char *dst
dst_stride = width_ * 4;
for (src_y = 0, dst_y = 0; dst_y < height_; src_y++, dst_y++) {
- for (src_x = 0, dst_x = 0; dst_x < width_; ) {
+ for (src_x = 0, dst_x = 0; dst_x < width_;) {
cb = src[src_y * src_stride + src_x * 4 + cb_pos_];
cr = src[src_y * src_stride + src_x * 4 + cr_pos];
diff --git a/src/apps/qcam/main_window.cpp b/src/apps/qcam/main_window.cpp
index 3880a846..d2ccbd23 100644
--- a/src/apps/qcam/main_window.cpp
+++ b/src/apps/qcam/main_window.cpp
@@ -386,10 +386,7 @@ int MainWindow::startCapture()
/* Use a format supported by the viewfinder if available. */
std::vector<PixelFormat> formats = vfConfig.formats().pixelformats();
for (const PixelFormat &format : viewfinder_->nativeFormats()) {
- auto match = std::find_if(formats.begin(), formats.end(),
- [&](const PixelFormat &f) {
- return f == format;
- });
+ auto match = std::find(formats.begin(), formats.end(), format);
if (match != formats.end()) {
vfConfig.pixelFormat = format;
break;
diff --git a/src/gstreamer/gstlibcamera-controls.cpp.in b/src/gstreamer/gstlibcamera-controls.cpp.in
index ace36b71..d937b19e 100644
--- a/src/gstreamer/gstlibcamera-controls.cpp.in
+++ b/src/gstreamer/gstlibcamera-controls.cpp.in
@@ -39,7 +39,7 @@ static void value_set_rectangle(GValue *value, const Rectangle &rect)
GValue height = G_VALUE_INIT;
g_value_init(&height, G_TYPE_INT);
- g_value_set_int(&x, size.height);
+ g_value_set_int(&height, size.height);
gst_value_array_append_and_take_value(value, &height);
}
diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp
index a466b305..41eea7d8 100644
--- a/src/gstreamer/gstlibcamera-utils.cpp
+++ b/src/gstreamer/gstlibcamera-utils.cpp
@@ -74,6 +74,7 @@ static struct {
{ GST_VIDEO_FORMAT_I420, formats::YUV420 },
{ GST_VIDEO_FORMAT_YV12, formats::YVU420 },
{ GST_VIDEO_FORMAT_Y42B, formats::YUV422 },
+ { GST_VIDEO_FORMAT_Y444, formats::YUV444 },
/* YUV Packed */
{ GST_VIDEO_FORMAT_UYVY, formats::UYVY },
diff --git a/src/gstreamer/gstlibcameraallocator.cpp b/src/gstreamer/gstlibcameraallocator.cpp
index 7e4c904d..d4492d99 100644
--- a/src/gstreamer/gstlibcameraallocator.cpp
+++ b/src/gstreamer/gstlibcameraallocator.cpp
@@ -8,6 +8,8 @@
#include "gstlibcameraallocator.h"
+#include <utility>
+
#include <libcamera/camera.h>
#include <libcamera/framebuffer_allocator.h>
#include <libcamera/stream.h>
@@ -199,22 +201,20 @@ GstLibcameraAllocator *
gst_libcamera_allocator_new(std::shared_ptr<Camera> camera,
CameraConfiguration *config_)
{
- auto *self = GST_LIBCAMERA_ALLOCATOR(g_object_new(GST_TYPE_LIBCAMERA_ALLOCATOR,
- nullptr));
+ g_autoptr(GstLibcameraAllocator) self = GST_LIBCAMERA_ALLOCATOR(g_object_new(GST_TYPE_LIBCAMERA_ALLOCATOR,
+ nullptr));
gint ret;
self->cm_ptr = new std::shared_ptr<CameraManager>(gst_libcamera_get_camera_manager(ret));
- if (ret) {
- g_object_unref(self);
+ if (ret)
return nullptr;
- }
self->fb_allocator = new FrameBufferAllocator(camera);
for (StreamConfiguration &streamCfg : *config_) {
Stream *stream = streamCfg.stream();
ret = self->fb_allocator->allocate(stream);
- if (ret == 0)
+ if (ret <= 0)
return nullptr;
GQueue *pool = g_queue_new();
@@ -228,7 +228,7 @@ gst_libcamera_allocator_new(std::shared_ptr<Camera> camera,
g_hash_table_insert(self->pools, stream, pool);
}
- return self;
+ return std::exchange(self, nullptr);
}
bool
diff --git a/src/ipa/ipu3/algorithms/awb.h b/src/ipa/ipu3/algorithms/awb.h
index 1916990a..dbf69c90 100644
--- a/src/ipa/ipu3/algorithms/awb.h
+++ b/src/ipa/ipu3/algorithms/awb.h
@@ -13,7 +13,7 @@
#include <libcamera/geometry.h>
-#include "libipa/vector.h"
+#include "libcamera/internal/vector.h"
#include "algorithm.h"
diff --git a/src/ipa/libipa/agc_mean_luminance.cpp b/src/ipa/libipa/agc_mean_luminance.cpp
index 02555a44..f617fde8 100644
--- a/src/ipa/libipa/agc_mean_luminance.cpp
+++ b/src/ipa/libipa/agc_mean_luminance.cpp
@@ -541,6 +541,18 @@ AgcMeanLuminance::calculateNewEv(uint32_t constraintModeIndex,
std::shared_ptr<ExposureModeHelper> exposureModeHelper =
exposureModeHelpers_.at(exposureModeIndex);
+ if (effectiveExposureValue == 0s) {
+ LOG(AgcMeanLuminance, Error)
+ << "Effective exposure value is 0. This is a bug in AGC "
+ "and must be fixed for proper operation.";
+ /*
+ * Return an arbitrary exposure time > 0 to ensure regulation
+ * doesn't get stuck with 0 in case the sensor driver allows a
+ * min exposure of 0.
+ */
+ return exposureModeHelper->splitExposure(10ms);
+ }
+
double gain = estimateInitialGain();
gain = constraintClampGain(constraintModeIndex, yHist, gain);
diff --git a/src/ipa/libipa/awb.cpp b/src/ipa/libipa/awb.cpp
new file mode 100644
index 00000000..925fac23
--- /dev/null
+++ b/src/ipa/libipa/awb.cpp
@@ -0,0 +1,265 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2024 Ideas on Board Oy
+ *
+ * Generic AWB algorithms
+ */
+
+#include "awb.h"
+
+#include <libcamera/base/log.h>
+
+#include <libcamera/control_ids.h>
+
+/**
+ * \file awb.h
+ * \brief Base classes for AWB algorithms
+ */
+
+namespace libcamera {
+
+LOG_DEFINE_CATEGORY(Awb)
+
+namespace ipa {
+
+/**
+ * \class AwbResult
+ * \brief The result of an AWB calculation
+ *
+ * This class holds the result of an auto white balance calculation.
+ */
+
+/**
+ * \var AwbResult::gains
+ * \brief The calculated white balance gains
+ */
+
+/**
+ * \var AwbResult::colourTemperature
+ * \brief The calculated colour temperature in Kelvin
+ */
+
+/**
+ * \class AwbStats
+ * \brief An abstraction class wrapping hardware-specific AWB statistics
+ *
+ * IPA modules using an AWB algorithm based on the AwbAlgorithm class need to
+ * implement this class to give the algorithm access to the hardware-specific
+ * statistics data.
+ */
+
+/**
+ * \fn AwbStats::computeColourError()
+ * \brief Compute an error value for when the given gains would be applied
+ * \param[in] gains The gains to apply
+ *
+ * Compute an error value (non-greyness) assuming the given \a gains would be
+ * applied. To keep the actual implementations computationally inexpensive,
+ * the squared colour error shall be returned.
+ *
+ * If the AWB statistics provide multiple zones, the average of the individual
+ * squared errors shall be returned. Averaging/normalizing is necessary so that
+ * the numeric dimensions are the same on all hardware platforms.
+ *
+ * \return The computed error value
+ */
+
+/**
+ * \fn AwbStats::rgbMeans()
+ * \brief Get RGB means of the statistics
+ *
+ * Fetch the RGB means from the statistics. The values of each channel are
+ * dimensionless and only the ratios are used for further calculations. This is
+ * used by the simple grey world model to calculate the gains to apply.
+ *
+ * \return The RGB means
+ */
+
+/**
+ * \class AwbAlgorithm
+ * \brief A base class for auto white balance algorithms
+ *
+ * This class is a base class for auto white balance algorithms. It defines an
+ * interface for the algorithms to implement, and is used by the IPAs to
+ * interact with the concrete implementation.
+ */
+
+/**
+ * \fn AwbAlgorithm::init()
+ * \brief Initialize the algorithm with the given tuning data
+ * \param[in] tuningData The tuning data to use for the algorithm
+ *
+ * \return 0 on success, a negative error code otherwise
+ */
+
+/**
+ * \fn AwbAlgorithm::calculateAwb()
+ * \brief Calculate AWB data from the given statistics
+ * \param[in] stats The statistics to use for the calculation
+ * \param[in] lux The lux value of the scene
+ *
+ * Calculate an AwbResult object from the given statistics and lux value. A \a
+ * lux value of 0 means it is unknown or invalid and the algorithm shall ignore
+ * it.
+ *
+ * \return The AWB result
+ */
+
+/**
+ * \fn AwbAlgorithm::gainsFromColourTemperature()
+ * \brief Compute white balance gains from a colour temperature
+ * \param[in] colourTemperature The colour temperature in Kelvin
+ *
+ * Compute the white balance gains from a \a colourTemperature. This function
+ * does not take any statistics into account. It is used to compute the colour
+ * gains when the user manually specifies a colour temperature.
+ *
+ * \return The colour gains
+ */
+
+/**
+ * \fn AwbAlgorithm::controls()
+ * \brief Get the controls info map for this algorithm
+ *
+ * \return The controls info map
+ */
+
+/**
+ * \fn AwbAlgorithm::handleControls()
+ * \param[in] controls The controls to handle
+ * \brief Handle the controls supplied in a request
+ */
+
+/**
+ * \brief Parse the mode configurations from the tuning data
+ * \param[in] tuningData the YamlObject representing the tuning data
+ * \param[in] def The default value for the AwbMode control
+ *
+ * Utility function to parse the tuning data for an AwbMode entry and read all
+ * provided modes. It adds controls::AwbMode to AwbAlgorithm::controls_ and
+ * populates AwbAlgorithm::modes_. For a list of possible modes see \ref
+ * controls::AwbModeEnum.
+ *
+ * Each mode entry must contain a "lo" and "hi" key to specify the lower and
+ * upper colour temperature of that mode. For example:
+ *
+ * \code{.unparsed}
+ * algorithms:
+ * - Awb:
+ * AwbMode:
+ * AwbAuto:
+ * lo: 2500
+ * hi: 8000
+ * AwbIncandescent:
+ * lo: 2500
+ * hi: 3000
+ * ...
+ * \endcode
+ *
+ * If \a def is supplied but not contained in the the \a tuningData, -EINVAL is
+ * returned.
+ *
+ * \sa controls::AwbModeEnum
+ * \return Zero on success, negative error code otherwise
+ */
+int AwbAlgorithm::parseModeConfigs(const YamlObject &tuningData,
+ const ControlValue &def)
+{
+ std::vector<ControlValue> availableModes;
+
+ const YamlObject &yamlModes = tuningData[controls::AwbMode.name()];
+ if (!yamlModes.isDictionary()) {
+ LOG(Awb, Error)
+ << "AwbModes must be a dictionary.";
+ return -EINVAL;
+ }
+
+ for (const auto &[modeName, modeDict] : yamlModes.asDict()) {
+ if (controls::AwbModeNameValueMap.find(modeName) ==
+ controls::AwbModeNameValueMap.end()) {
+ LOG(Awb, Warning)
+ << "Skipping unknown AWB mode '"
+ << modeName << "'";
+ continue;
+ }
+
+ if (!modeDict.isDictionary()) {
+ LOG(Awb, Error)
+ << "Invalid AWB mode '" << modeName << "'";
+ return -EINVAL;
+ }
+
+ const auto &modeValue = static_cast<controls::AwbModeEnum>(
+ controls::AwbModeNameValueMap.at(modeName));
+
+ ModeConfig &config = modes_[modeValue];
+
+ auto hi = modeDict["hi"].get<double>();
+ if (!hi) {
+ LOG(Awb, Error) << "Failed to read hi param of mode "
+ << modeName;
+ return -EINVAL;
+ }
+ config.ctHi = *hi;
+
+ auto lo = modeDict["lo"].get<double>();
+ if (!lo) {
+ LOG(Awb, Error) << "Failed to read low param of mode "
+ << modeName;
+ return -EINVAL;
+ }
+ config.ctLo = *lo;
+
+ availableModes.push_back(modeValue);
+ }
+
+ if (modes_.empty()) {
+ LOG(Awb, Error) << "No AWB modes configured";
+ return -EINVAL;
+ }
+
+ if (!def.isNone() &&
+ modes_.find(def.get<controls::AwbModeEnum>()) == modes_.end()) {
+ const auto &names = controls::AwbMode.enumerators();
+ LOG(Awb, Error) << names.at(def.get<controls::AwbModeEnum>())
+ << " mode is missing in the configuration.";
+ return -EINVAL;
+ }
+
+ controls_[&controls::AwbMode] = ControlInfo(availableModes, def);
+
+ return 0;
+}
+
+/**
+ * \class AwbAlgorithm::ModeConfig
+ * \brief Holds the configuration of a single AWB mode
+ *
+ * AWB modes limit the regulation of the AWB algorithm to a specific range of
+ * colour temperatures.
+ */
+
+/**
+ * \var AwbAlgorithm::ModeConfig::ctLo
+ * \brief The lowest valid colour temperature of that mode
+ */
+
+/**
+ * \var AwbAlgorithm::ModeConfig::ctHi
+ * \brief The highest valid colour temperature of that mode
+ */
+
+/**
+ * \var AwbAlgorithm::controls_
+ * \brief Controls info map for the controls provided by the algorithm
+ */
+
+/**
+ * \var AwbAlgorithm::modes_
+ * \brief Map of all configured modes
+ * \sa AwbAlgorithm::parseModeConfigs
+ */
+
+} /* namespace ipa */
+
+} /* namespace libcamera */
diff --git a/src/ipa/libipa/awb.h b/src/ipa/libipa/awb.h
new file mode 100644
index 00000000..4bab7a45
--- /dev/null
+++ b/src/ipa/libipa/awb.h
@@ -0,0 +1,66 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2024 Ideas on Board Oy
+ *
+ * Generic AWB algorithms
+ */
+
+#pragma once
+
+#include <map>
+
+#include <libcamera/control_ids.h>
+#include <libcamera/controls.h>
+
+#include "libcamera/internal/vector.h"
+#include "libcamera/internal/yaml_parser.h"
+
+namespace libcamera {
+
+namespace ipa {
+
+struct AwbResult {
+ RGB<double> gains;
+ double colourTemperature;
+};
+
+struct AwbStats {
+ virtual double computeColourError(const RGB<double> &gains) const = 0;
+ virtual RGB<double> rgbMeans() const = 0;
+
+protected:
+ ~AwbStats() = default;
+};
+
+class AwbAlgorithm
+{
+public:
+ virtual ~AwbAlgorithm() = default;
+
+ virtual int init(const YamlObject &tuningData) = 0;
+ virtual AwbResult calculateAwb(const AwbStats &stats, unsigned int lux) = 0;
+ virtual RGB<double> gainsFromColourTemperature(double colourTemperature) = 0;
+
+ const ControlInfoMap::Map &controls() const
+ {
+ return controls_;
+ }
+
+ virtual void handleControls([[maybe_unused]] const ControlList &controls) {}
+
+protected:
+ int parseModeConfigs(const YamlObject &tuningData,
+ const ControlValue &def = {});
+
+ struct ModeConfig {
+ double ctHi;
+ double ctLo;
+ };
+
+ ControlInfoMap::Map controls_;
+ std::map<controls::AwbModeEnum, AwbAlgorithm::ModeConfig> modes_;
+};
+
+} /* namespace ipa */
+
+} /* namespace libcamera */
diff --git a/src/ipa/libipa/awb_bayes.cpp b/src/ipa/libipa/awb_bayes.cpp
new file mode 100644
index 00000000..d1d0eaf0
--- /dev/null
+++ b/src/ipa/libipa/awb_bayes.cpp
@@ -0,0 +1,505 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2019, Raspberry Pi Ltd
+ * Copyright (C) 2024 Ideas on Board Oy
+ *
+ * Implementation of a bayesian AWB algorithm
+ */
+
+#include "awb_bayes.h"
+
+#include <algorithm>
+#include <cmath>
+#include <limits>
+#include <map>
+#include <ostream>
+#include <vector>
+
+#include <libcamera/base/log.h>
+#include <libcamera/control_ids.h>
+
+#include "colours.h"
+
+/**
+ * \file awb_bayes.h
+ * \brief Implementation of bayesian auto white balance algorithm
+ *
+ * This implementation is based on the initial implementation done by
+ * RaspberryPi.
+ *
+ * \todo Documentation
+ *
+ * \todo Not all the features implemented by RaspberryPi were ported over to
+ * this algorithm because they either rely on hardware features not generally
+ * available or were considered not important enough at the moment.
+ *
+ * The following parts are not implemented:
+ *
+ * - min_pixels: minimum proportion of pixels counted within AWB region for it
+ * to be "useful"
+ * - min_g: minimum G value of those pixels, to be regarded a "useful"
+ * - min_regions: number of AWB regions that must be "useful" in order to do the
+ * AWB calculation
+ * - deltaLimit: clamp on colour error term (so as not to penalize non-grey
+ * excessively)
+ * - bias_proportion: The biasProportion parameter adds a small proportion of
+ * the counted pixels to a region biased to the biasCT colour temperature.
+ * A typical value for biasProportion would be between 0.05 to 0.1.
+ * - bias_ct: CT target for the search bias
+ * - sensitivityR: red sensitivity ratio (set to canonical sensor's R/G divided
+ * by this sensor's R/G)
+ * - sensitivityB: blue sensitivity ratio (set to canonical sensor's B/G divided
+ * by this sensor's B/G)
+ */
+
+namespace libcamera {
+
+LOG_DECLARE_CATEGORY(Awb)
+
+namespace {
+
+template<typename T>
+class LimitsRecorder
+{
+public:
+ LimitsRecorder()
+ : min_(std::numeric_limits<T>::max()),
+ max_(std::numeric_limits<T>::min())
+ {
+ }
+
+ void record(const T &value)
+ {
+ min_ = std::min(min_, value);
+ max_ = std::max(max_, value);
+ }
+
+ const T &min() const { return min_; }
+ const T &max() const { return max_; }
+
+private:
+ T min_;
+ T max_;
+};
+
+#ifndef __DOXYGEN__
+template<typename T>
+std::ostream &operator<<(std::ostream &out, const LimitsRecorder<T> &v)
+{
+ out << "[ " << v.min() << ", " << v.max() << " ]";
+ return out;
+}
+#endif
+
+} /* namespace */
+
+namespace ipa {
+
+/**
+ * \brief Step size control for CT search
+ */
+constexpr double kSearchStep = 0.2;
+
+/**
+ * \copydoc libcamera::ipa::Interpolator::interpolate()
+ */
+template<>
+void Interpolator<Pwl>::interpolate(const Pwl &a, const Pwl &b, Pwl &dest, double lambda)
+{
+ dest = Pwl::combine(a, b,
+ [=](double /*x*/, double y0, double y1) -> double {
+ return y0 * (1.0 - lambda) + y1 * lambda;
+ });
+}
+
+/**
+ * \class AwbBayes
+ * \brief Implementation of a bayesian auto white balance algorithm
+ *
+ * In a bayesian AWB algorithm the auto white balance estimation is improved by
+ * taking the likelihood of a given lightsource based on the estimated lux level
+ * into account. E.g. If it is very bright we can assume that we are outside and
+ * that colour temperatures around 6500 are preferred.
+ *
+ * The second part of this algorithm is the search for the most likely colour
+ * temperature. It is implemented in AwbBayes::coarseSearch() and in
+ * AwbBayes::fineSearch(). The search works very well without prior likelihoods
+ * and therefore the algorithm itself provides very good results even without
+ * prior likelihoods.
+ */
+
+/**
+ * \var AwbBayes::transversePos_
+ * \brief How far to wander off CT curve towards "more purple"
+ */
+
+/**
+ * \var AwbBayes::transverseNeg_
+ * \brief How far to wander off CT curve towards "more green"
+ */
+
+/**
+ * \var AwbBayes::currentMode_
+ * \brief The currently selected mode
+ */
+
+int AwbBayes::init(const YamlObject &tuningData)
+{
+ int ret = colourGainCurve_.readYaml(tuningData["colourGains"], "ct", "gains");
+ if (ret) {
+ LOG(Awb, Error)
+ << "Failed to parse 'colourGains' "
+ << "parameter from tuning file";
+ return ret;
+ }
+
+ ctR_.clear();
+ ctB_.clear();
+ for (const auto &[ct, g] : colourGainCurve_.data()) {
+ ctR_.append(ct, 1.0 / g[0]);
+ ctB_.append(ct, 1.0 / g[1]);
+ }
+
+ /* We will want the inverse functions of these too. */
+ ctRInverse_ = ctR_.inverse().first;
+ ctBInverse_ = ctB_.inverse().first;
+
+ ret = readPriors(tuningData);
+ if (ret) {
+ LOG(Awb, Error) << "Failed to read priors";
+ return ret;
+ }
+
+ ret = parseModeConfigs(tuningData, controls::AwbAuto);
+ if (ret) {
+ LOG(Awb, Error)
+ << "Failed to parse mode parameter from tuning file";
+ return ret;
+ }
+ currentMode_ = &modes_[controls::AwbAuto];
+
+ transversePos_ = tuningData["transversePos"].get<double>(0.01);
+ transverseNeg_ = tuningData["transverseNeg"].get<double>(0.01);
+ if (transversePos_ <= 0 || transverseNeg_ <= 0) {
+ LOG(Awb, Error) << "AwbConfig: transversePos/Neg must be > 0";
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+int AwbBayes::readPriors(const YamlObject &tuningData)
+{
+ const auto &priorsList = tuningData["priors"];
+ std::map<uint32_t, Pwl> priors;
+
+ if (!priorsList) {
+ LOG(Awb, Error) << "No priors specified";
+ return -EINVAL;
+ }
+
+ for (const auto &p : priorsList.asList()) {
+ if (!p.contains("lux")) {
+ LOG(Awb, Error) << "Missing lux value";
+ return -EINVAL;
+ }
+
+ uint32_t lux = p["lux"].get<uint32_t>(0);
+ if (priors.count(lux)) {
+ LOG(Awb, Error) << "Duplicate prior for lux value " << lux;
+ return -EINVAL;
+ }
+
+ std::vector<uint32_t> temperatures =
+ p["ct"].getList<uint32_t>().value_or(std::vector<uint32_t>{});
+ std::vector<double> probabilities =
+ p["probability"].getList<double>().value_or(std::vector<double>{});
+
+ if (temperatures.size() != probabilities.size()) {
+ LOG(Awb, Error)
+ << "Ct and probability array sizes are unequal";
+ return -EINVAL;
+ }
+
+ if (temperatures.empty()) {
+ LOG(Awb, Error)
+ << "Ct and probability arrays are empty";
+ return -EINVAL;
+ }
+
+ std::map<int, double> ctToProbability;
+ for (unsigned int i = 0; i < temperatures.size(); i++) {
+ int t = temperatures[i];
+ if (ctToProbability.count(t)) {
+ LOG(Awb, Error) << "Duplicate ct value";
+ return -EINVAL;
+ }
+
+ ctToProbability[t] = probabilities[i];
+ }
+
+ auto &pwl = priors[lux];
+ for (const auto &[ct, prob] : ctToProbability) {
+ if (prob < 1e-6) {
+ LOG(Awb, Error) << "Prior probability must be larger than 1e-6";
+ return -EINVAL;
+ }
+ pwl.append(ct, prob);
+ }
+ }
+
+ if (priors.empty()) {
+ LOG(Awb, Error) << "No priors specified";
+ return -EINVAL;
+ }
+
+ priors_.setData(std::move(priors));
+
+ return 0;
+}
+
+void AwbBayes::handleControls(const ControlList &controls)
+{
+ auto mode = controls.get(controls::AwbMode);
+ if (mode) {
+ auto it = modes_.find(static_cast<controls::AwbModeEnum>(*mode));
+ if (it != modes_.end())
+ currentMode_ = &it->second;
+ else
+ LOG(Awb, Error) << "Unsupported AWB mode " << *mode;
+ }
+}
+
+RGB<double> AwbBayes::gainsFromColourTemperature(double colourTemperature)
+{
+ /*
+ * \todo In the RaspberryPi code, the ct curve was interpolated in
+ * the white point space (1/x) not in gains space. This feels counter
+ * intuitive, as the gains are in linear space. But I can't prove it.
+ */
+ const auto &gains = colourGainCurve_.getInterpolated(colourTemperature);
+ return { { gains[0], 1.0, gains[1] } };
+}
+
+AwbResult AwbBayes::calculateAwb(const AwbStats &stats, unsigned int lux)
+{
+ ipa::Pwl prior;
+ if (lux > 0) {
+ prior = priors_.getInterpolated(lux);
+ prior.map([](double x, double y) {
+ LOG(Awb, Debug) << "(" << x << "," << y << ")";
+ });
+ } else {
+ prior.append(0, 1.0);
+ }
+
+ double t = coarseSearch(prior, stats);
+ double r = ctR_.eval(t);
+ double b = ctB_.eval(t);
+ LOG(Awb, Debug)
+ << "After coarse search: r " << r << " b " << b << " (gains r "
+ << 1 / r << " b " << 1 / b << ")";
+
+ /*
+ * Original comment from RaspberryPi:
+ * Not entirely sure how to handle the fine search yet. Mostly the
+ * estimated CT is already good enough, but the fine search allows us to
+ * wander transversely off the CT curve. Under some illuminants, where
+ * there may be more or less green light, this may prove beneficial,
+ * though I probably need more real datasets before deciding exactly how
+ * this should be controlled and tuned.
+ */
+ fineSearch(t, r, b, prior, stats);
+ LOG(Awb, Debug)
+ << "After fine search: r " << r << " b " << b << " (gains r "
+ << 1 / r << " b " << 1 / b << ")";
+
+ return { { { 1.0 / r, 1.0, 1.0 / b } }, t };
+}
+
+double AwbBayes::coarseSearch(const ipa::Pwl &prior, const AwbStats &stats) const
+{
+ std::vector<Pwl::Point> points;
+ size_t bestPoint = 0;
+ double t = currentMode_->ctLo;
+ int spanR = -1;
+ int spanB = -1;
+ LimitsRecorder<double> errorLimits;
+ LimitsRecorder<double> priorLogLikelihoodLimits;
+
+ /* Step down the CT curve evaluating log likelihood. */
+ while (true) {
+ double r = ctR_.eval(t, &spanR);
+ double b = ctB_.eval(t, &spanB);
+ RGB<double> gains({ 1 / r, 1.0, 1 / b });
+ double delta2Sum = stats.computeColourError(gains);
+ double priorLogLikelihood = log(prior.eval(prior.domain().clamp(t)));
+ double finalLogLikelihood = delta2Sum - priorLogLikelihood;
+
+ errorLimits.record(delta2Sum);
+ priorLogLikelihoodLimits.record(priorLogLikelihood);
+
+ points.push_back({ { t, finalLogLikelihood } });
+ if (points.back().y() < points[bestPoint].y())
+ bestPoint = points.size() - 1;
+
+ if (t == currentMode_->ctHi)
+ break;
+
+ /*
+ * Ensure even steps along the r/b curve by scaling them by the
+ * current t.
+ */
+ t = std::min(t + t / 10 * kSearchStep, currentMode_->ctHi);
+ }
+
+ t = points[bestPoint].x();
+ LOG(Awb, Debug) << "Coarse search found CT " << t
+ << " error limits:" << errorLimits
+ << " prior log likelihood limits:" << priorLogLikelihoodLimits;
+
+ /*
+ * We have the best point of the search, but refine it with a quadratic
+ * interpolation around its neighbors.
+ */
+ if (points.size() > 2) {
+ bestPoint = std::clamp(bestPoint, std::size_t{ 1 }, points.size() - 2);
+ t = interpolateQuadratic(points[bestPoint - 1],
+ points[bestPoint],
+ points[bestPoint + 1]);
+ LOG(Awb, Debug)
+ << "After quadratic refinement, coarse search has CT "
+ << t;
+ }
+
+ return t;
+}
+
+void AwbBayes::fineSearch(double &t, double &r, double &b, ipa::Pwl const &prior, const AwbStats &stats) const
+{
+ int spanR = -1;
+ int spanB = -1;
+ double step = t / 10 * kSearchStep * 0.1;
+ int nsteps = 5;
+ ctR_.eval(t, &spanR);
+ ctB_.eval(t, &spanB);
+ double rDiff = ctR_.eval(t + nsteps * step, &spanR) -
+ ctR_.eval(t - nsteps * step, &spanR);
+ double bDiff = ctB_.eval(t + nsteps * step, &spanB) -
+ ctB_.eval(t - nsteps * step, &spanB);
+ Pwl::Point transverse({ bDiff, -rDiff });
+ if (transverse.length2() < 1e-6)
+ return;
+ /*
+ * transverse is a unit vector orthogonal to the b vs. r function
+ * (pointing outwards with r and b increasing)
+ */
+ transverse = transverse / transverse.length();
+ double bestLogLikelihood = 0;
+ double bestT = 0;
+ Pwl::Point bestRB(0);
+ double transverseRange = transverseNeg_ + transversePos_;
+ const int maxNumDeltas = 12;
+ LimitsRecorder<double> errorLimits;
+ LimitsRecorder<double> priorLogLikelihoodLimits;
+
+
+ /* a transverse step approximately every 0.01 r/b units */
+ int numDeltas = floor(transverseRange * 100 + 0.5) + 1;
+ numDeltas = std::clamp(numDeltas, 3, maxNumDeltas);
+
+ /*
+ * Step down CT curve. March a bit further if the transverse range is
+ * large.
+ */
+ nsteps += numDeltas;
+ for (int i = -nsteps; i <= nsteps; i++) {
+ double tTest = t + i * step;
+ double priorLogLikelihood =
+ log(prior.eval(prior.domain().clamp(tTest)));
+ priorLogLikelihoodLimits.record(priorLogLikelihood);
+ Pwl::Point rbStart{ { ctR_.eval(tTest, &spanR),
+ ctB_.eval(tTest, &spanB) } };
+ Pwl::Point samples[maxNumDeltas];
+ int bestPoint = 0;
+
+ /*
+ * Sample numDeltas points transversely *off* the CT curve
+ * in the range [-transverseNeg, transversePos].
+ * The x values of a sample contains the distance and the y
+ * value contains the corresponding log likelihood.
+ */
+ double transverseStep = transverseRange / (numDeltas - 1);
+ for (int j = 0; j < numDeltas; j++) {
+ auto &p = samples[j];
+ p.x() = -transverseNeg_ + transverseStep * j;
+ Pwl::Point rbTest = rbStart + transverse * p.x();
+ RGB<double> gains({ 1 / rbTest[0], 1.0, 1 / rbTest[1] });
+ double delta2Sum = stats.computeColourError(gains);
+ errorLimits.record(delta2Sum);
+ p.y() = delta2Sum - priorLogLikelihood;
+
+ if (p.y() < samples[bestPoint].y())
+ bestPoint = j;
+ }
+
+ /*
+ * We have all samples transversely across the CT curve,
+ * now let's do a quadratic interpolation for the best result.
+ */
+ bestPoint = std::clamp(bestPoint, 1, numDeltas - 2);
+ double bestOffset = interpolateQuadratic(samples[bestPoint - 1],
+ samples[bestPoint],
+ samples[bestPoint + 1]);
+ Pwl::Point rbTest = rbStart + transverse * bestOffset;
+ RGB<double> gains({ 1 / rbTest[0], 1.0, 1 / rbTest[1] });
+ double delta2Sum = stats.computeColourError(gains);
+ errorLimits.record(delta2Sum);
+ double finalLogLikelihood = delta2Sum - priorLogLikelihood;
+
+ if (bestT == 0 || finalLogLikelihood < bestLogLikelihood) {
+ bestLogLikelihood = finalLogLikelihood;
+ bestT = tTest;
+ bestRB = rbTest;
+ }
+ }
+
+ t = bestT;
+ r = bestRB[0];
+ b = bestRB[1];
+ LOG(Awb, Debug)
+ << "Fine search found t " << t << " r " << r << " b " << b
+ << " error limits: " << errorLimits
+ << " prior log likelihood limits: " << priorLogLikelihoodLimits;
+}
+
+/**
+ * \brief Find extremum of function
+ * \param[in] a First point
+ * \param[in] b Second point
+ * \param[in] c Third point
+ *
+ * Given 3 points on a curve, find the extremum of the function in that interval
+ * by fitting a quadratic.
+ *
+ * \return The x value of the extremum clamped to the interval [a.x(), c.x()]
+ */
+double AwbBayes::interpolateQuadratic(Pwl::Point const &a, Pwl::Point const &b,
+ Pwl::Point const &c) const
+{
+ const double eps = 1e-3;
+ Pwl::Point ca = c - a;
+ Pwl::Point ba = b - a;
+ double denominator = 2 * (ba.y() * ca.x() - ca.y() * ba.x());
+ if (std::abs(denominator) > eps) {
+ double numerator = ba.y() * ca.x() * ca.x() - ca.y() * ba.x() * ba.x();
+ double result = numerator / denominator + a.x();
+ return std::max(a.x(), std::min(c.x(), result));
+ }
+ /* has degenerated to straight line segment */
+ return a.y() < c.y() - eps ? a.x() : (c.y() < a.y() - eps ? c.x() : b.x());
+}
+
+} /* namespace ipa */
+
+} /* namespace libcamera */
diff --git a/src/ipa/libipa/awb_bayes.h b/src/ipa/libipa/awb_bayes.h
new file mode 100644
index 00000000..bb933038
--- /dev/null
+++ b/src/ipa/libipa/awb_bayes.h
@@ -0,0 +1,59 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2024 Ideas on Board Oy
+ *
+ * Base class for bayes AWB algorithms
+ */
+
+#pragma once
+
+#include <libcamera/controls.h>
+
+#include "libcamera/internal/vector.h"
+#include "libcamera/internal/yaml_parser.h"
+
+#include "awb.h"
+#include "interpolator.h"
+#include "pwl.h"
+
+namespace libcamera {
+
+namespace ipa {
+
+class AwbBayes : public AwbAlgorithm
+{
+public:
+ AwbBayes() = default;
+
+ int init(const YamlObject &tuningData) override;
+ AwbResult calculateAwb(const AwbStats &stats, unsigned int lux) override;
+ RGB<double> gainsFromColourTemperature(double temperatureK) override;
+ void handleControls(const ControlList &controls) override;
+
+private:
+ int readPriors(const YamlObject &tuningData);
+
+ void fineSearch(double &t, double &r, double &b, ipa::Pwl const &prior,
+ const AwbStats &stats) const;
+ double coarseSearch(const ipa::Pwl &prior, const AwbStats &stats) const;
+ double interpolateQuadratic(ipa::Pwl::Point const &a,
+ ipa::Pwl::Point const &b,
+ ipa::Pwl::Point const &c) const;
+
+ Interpolator<Pwl> priors_;
+ Interpolator<Vector<double, 2>> colourGainCurve_;
+
+ ipa::Pwl ctR_;
+ ipa::Pwl ctB_;
+ ipa::Pwl ctRInverse_;
+ ipa::Pwl ctBInverse_;
+
+ double transversePos_;
+ double transverseNeg_;
+
+ ModeConfig *currentMode_ = nullptr;
+};
+
+} /* namespace ipa */
+
+} /* namespace libcamera */
diff --git a/src/ipa/libipa/awb_grey.cpp b/src/ipa/libipa/awb_grey.cpp
new file mode 100644
index 00000000..d3d2132b
--- /dev/null
+++ b/src/ipa/libipa/awb_grey.cpp
@@ -0,0 +1,114 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2024 Ideas on Board Oy
+ *
+ * Implementation of grey world AWB algorithm
+ */
+
+#include "awb_grey.h"
+
+#include <algorithm>
+
+#include <libcamera/base/log.h>
+#include <libcamera/control_ids.h>
+
+#include "colours.h"
+
+using namespace libcamera::controls;
+
+/**
+ * \file awb_grey.h
+ * \brief Implementation of a grey world AWB algorithm
+ */
+
+namespace libcamera {
+
+LOG_DECLARE_CATEGORY(Awb)
+namespace ipa {
+
+/**
+ * \class AwbGrey
+ * \brief A Grey world auto white balance algorithm
+ */
+
+/**
+ * \brief Initialize the algorithm with the given tuning data
+ * \param[in] tuningData The tuning data for the algorithm
+ *
+ * Load the colour temperature curve from the tuning data. If there is no tuning
+ * data available, continue with a warning. Manual colour temperature will not
+ * work in that case.
+ *
+ * \return 0 on success, a negative error code otherwise
+ */
+int AwbGrey::init(const YamlObject &tuningData)
+{
+ Interpolator<Vector<double, 2>> gains;
+ int ret = gains.readYaml(tuningData["colourGains"], "ct", "gains");
+ if (ret < 0)
+ LOG(Awb, Warning)
+ << "Failed to parse 'colourGains' "
+ << "parameter from tuning file; "
+ << "manual colour temperature will not work properly";
+ else
+ colourGainCurve_ = gains;
+
+ return 0;
+}
+
+/**
+ * \brief Calculate AWB data from the given statistics
+ * \param[in] stats The statistics to use for the calculation
+ * \param[in] lux The lux value of the scene
+ *
+ * The colour temperature is estimated based on the colours::estimateCCT()
+ * function. The gains are calculated purely based on the RGB means provided by
+ * the \a stats. The colour temperature is not taken into account when
+ * calculating the gains.
+ *
+ * The \a lux parameter is not used in this algorithm.
+ *
+ * \return The AWB result
+ */
+AwbResult AwbGrey::calculateAwb(const AwbStats &stats, [[maybe_unused]] unsigned int lux)
+{
+ AwbResult result;
+ auto means = stats.rgbMeans();
+ result.colourTemperature = estimateCCT(means);
+
+ /*
+ * Estimate the red and blue gains to apply in a grey world. The green
+ * gain is hardcoded to 1.0. Avoid divisions by zero by clamping the
+ * divisor to a minimum value of 1.0.
+ */
+ result.gains.r() = means.g() / std::max(means.r(), 1.0);
+ result.gains.g() = 1.0;
+ result.gains.b() = means.g() / std::max(means.b(), 1.0);
+ return result;
+}
+
+/**
+ * \brief Compute white balance gains from a colour temperature
+ * \param[in] colourTemperature The colour temperature in Kelvin
+ *
+ * Compute the white balance gains from a \a colourTemperature. This function
+ * does not take any statistics into account. It simply interpolates the colour
+ * gains configured in the colour temperature curve.
+ *
+ * \return The colour gains if a colour temperature curve is available,
+ * [1, 1, 1] otherwise.
+ */
+RGB<double> AwbGrey::gainsFromColourTemperature(double colourTemperature)
+{
+ if (!colourGainCurve_) {
+ LOG(Awb, Error) << "No gains defined";
+ return RGB<double>({ 1.0, 1.0, 1.0 });
+ }
+
+ auto gains = colourGainCurve_->getInterpolated(colourTemperature);
+ return { { gains[0], 1.0, gains[1] } };
+}
+
+} /* namespace ipa */
+
+} /* namespace libcamera */
diff --git a/src/ipa/libipa/awb_grey.h b/src/ipa/libipa/awb_grey.h
new file mode 100644
index 00000000..7ec7bfa5
--- /dev/null
+++ b/src/ipa/libipa/awb_grey.h
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2024 Ideas on Board Oy
+ *
+ * AWB grey world algorithm
+ */
+
+#pragma once
+
+#include <optional>
+
+#include "libcamera/internal/vector.h"
+
+#include "awb.h"
+#include "interpolator.h"
+
+namespace libcamera {
+
+namespace ipa {
+
+class AwbGrey : public AwbAlgorithm
+{
+public:
+ AwbGrey() = default;
+
+ int init(const YamlObject &tuningData) override;
+ AwbResult calculateAwb(const AwbStats &stats, unsigned int lux) override;
+ RGB<double> gainsFromColourTemperature(double colourTemperature) override;
+
+private:
+ std::optional<Interpolator<Vector<double, 2>>> colourGainCurve_;
+};
+
+} /* namespace ipa */
+
+} /* namespace libcamera */
diff --git a/src/ipa/libipa/colours.h b/src/ipa/libipa/colours.h
index fa6a8b57..d39b2ca8 100644
--- a/src/ipa/libipa/colours.h
+++ b/src/ipa/libipa/colours.h
@@ -9,7 +9,7 @@
#include <stdint.h>
-#include "vector.h"
+#include "libcamera/internal/vector.h"
namespace libcamera {
diff --git a/src/ipa/libipa/exposure_mode_helper.cpp b/src/ipa/libipa/exposure_mode_helper.cpp
index f235316d..0c1e99e3 100644
--- a/src/ipa/libipa/exposure_mode_helper.cpp
+++ b/src/ipa/libipa/exposure_mode_helper.cpp
@@ -182,6 +182,7 @@ ExposureModeHelper::splitExposure(utils::Duration exposure) const
* the stage limits are initialised.
*/
+ /* Clamp the gain to lastStageGain and regulate exposureTime. */
if (stageExposureTime * lastStageGain >= exposure) {
exposureTime = clampExposureTime(exposure / clampGain(lastStageGain));
gain = clampGain(exposure / exposureTime);
@@ -189,8 +190,9 @@ ExposureModeHelper::splitExposure(utils::Duration exposure) const
return { exposureTime, gain, exposure / (exposureTime * gain) };
}
+ /* Clamp the exposureTime to stageExposureTime and regulate gain. */
if (stageExposureTime * stageGain >= exposure) {
- exposureTime = clampExposureTime(exposure / clampGain(stageGain));
+ exposureTime = clampExposureTime(stageExposureTime);
gain = clampGain(exposure / exposureTime);
return { exposureTime, gain, exposure / (exposureTime * gain) };
diff --git a/src/ipa/libipa/interpolator.cpp b/src/ipa/libipa/interpolator.cpp
index 73e8d3b7..f901a86e 100644
--- a/src/ipa/libipa/interpolator.cpp
+++ b/src/ipa/libipa/interpolator.cpp
@@ -126,6 +126,13 @@ namespace ipa {
*/
/**
+ * \fn std::map<unsigned int, T> &Interpolator<T>::data() const
+ * \brief Access the internal map
+ *
+ * \return The internal map
+ */
+
+/**
* \fn const T& Interpolator<T>::getInterpolated()
* \brief Retrieve an interpolated value for the given key
* \param[in] key The unsigned integer key of the object to retrieve
@@ -136,8 +143,7 @@ namespace ipa {
*/
/**
- * \fn void Interpolator<T>::interpolate(const T &a, const T &b, T &dest, double
- * lambda)
+ * \fn void Interpolator<T>::interpolate(const T &a, const T &b, T &dest, double lambda)
* \brief Interpolate between two instances of T
* \param a The first value to interpolate
* \param b The second value to interpolate
diff --git a/src/ipa/libipa/interpolator.h b/src/ipa/libipa/interpolator.h
index fffce214..7880db69 100644
--- a/src/ipa/libipa/interpolator.h
+++ b/src/ipa/libipa/interpolator.h
@@ -81,6 +81,11 @@ public:
lastInterpolatedKey_.reset();
}
+ const std::map<unsigned int, T> &data() const
+ {
+ return data_;
+ }
+
const T &getInterpolated(unsigned int key, unsigned int *quantizedKey = nullptr)
{
ASSERT(data_.size() > 0);
diff --git a/src/ipa/libipa/lux.cpp b/src/ipa/libipa/lux.cpp
index bae8198f..899e8824 100644
--- a/src/ipa/libipa/lux.cpp
+++ b/src/ipa/libipa/lux.cpp
@@ -44,11 +44,6 @@ namespace ipa {
*/
/**
- * \var Lux::binSize_
- * \brief The maximum count of each bin
- */
-
-/**
* \var Lux::referenceExposureTime_
* \brief The exposure time of the reference image, in microseconds
*/
@@ -65,9 +60,8 @@ namespace ipa {
/**
* \var Lux::referenceY_
- * \brief The measured luminance of the reference image, out of the bin size
+ * \brief The measured luminance of the reference image, normalized to 1
*
- * \sa binSize_
*/
/**
@@ -77,10 +71,8 @@ namespace ipa {
/**
* \brief Construct the Lux helper module
- * \param[in] binSize The maximum count of each bin
*/
-Lux::Lux(unsigned int binSize)
- : binSize_(binSize)
+Lux::Lux()
{
}
@@ -97,7 +89,7 @@ Lux::Lux(unsigned int binSize)
* referenceExposureTime: 10000
* referenceAnalogueGain: 4.0
* referenceDigitalGain: 1.0
- * referenceY: 12000
+ * referenceY: 0.1831
* referenceLux: 1000
* \endcode
*
@@ -167,7 +159,7 @@ double Lux::estimateLux(utils::Duration exposureTime,
double exposureTimeRatio = referenceExposureTime_ / exposureTime;
double aGainRatio = referenceAnalogueGain_ / aGain;
double dGainRatio = referenceDigitalGain_ / dGain;
- double yRatio = currentY * (binSize_ / yHist.bins()) / referenceY_;
+ double yRatio = (currentY / yHist.bins()) / referenceY_;
double estimatedLux = exposureTimeRatio * aGainRatio * dGainRatio *
yRatio * referenceLux_;
diff --git a/src/ipa/libipa/lux.h b/src/ipa/libipa/lux.h
index 93ca6479..d95bcdaf 100644
--- a/src/ipa/libipa/lux.h
+++ b/src/ipa/libipa/lux.h
@@ -21,7 +21,7 @@ class Histogram;
class Lux
{
public:
- Lux(unsigned int binSize);
+ Lux();
int parseTuningData(const YamlObject &tuningData);
double estimateLux(utils::Duration exposureTime,
@@ -29,7 +29,6 @@ public:
const Histogram &yHist) const;
private:
- unsigned int binSize_;
utils::Duration referenceExposureTime_;
double referenceAnalogueGain_;
double referenceDigitalGain_;
diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build
index f2b2f4be..660be940 100644
--- a/src/ipa/libipa/meson.build
+++ b/src/ipa/libipa/meson.build
@@ -3,6 +3,9 @@
libipa_headers = files([
'agc_mean_luminance.h',
'algorithm.h',
+ 'awb_bayes.h',
+ 'awb_grey.h',
+ 'awb.h',
'camera_sensor_helper.h',
'colours.h',
'exposure_mode_helper.h',
@@ -14,12 +17,14 @@ libipa_headers = files([
'lux.h',
'module.h',
'pwl.h',
- 'vector.h',
])
libipa_sources = files([
'agc_mean_luminance.cpp',
'algorithm.cpp',
+ 'awb_bayes.cpp',
+ 'awb_grey.cpp',
+ 'awb.cpp',
'camera_sensor_helper.cpp',
'colours.cpp',
'exposure_mode_helper.cpp',
@@ -31,7 +36,6 @@ libipa_sources = files([
'lux.cpp',
'module.cpp',
'pwl.cpp',
- 'vector.cpp',
])
libipa_includes = include_directories('..')
diff --git a/src/ipa/libipa/pwl.cpp b/src/ipa/libipa/pwl.cpp
index 88fe2022..3fa005ba 100644
--- a/src/ipa/libipa/pwl.cpp
+++ b/src/ipa/libipa/pwl.cpp
@@ -160,6 +160,11 @@ void Pwl::prepend(double x, double y, const double eps)
*/
/**
+ * \fn Pwl::clear()
+ * \brief Clear the piecewise linear function
+ */
+
+/**
* \fn Pwl::size() const
* \brief Retrieve the number of points in the piecewise linear function
* \return The number of points in the piecewise linear function
diff --git a/src/ipa/libipa/pwl.h b/src/ipa/libipa/pwl.h
index d4ec9f4f..c1496c30 100644
--- a/src/ipa/libipa/pwl.h
+++ b/src/ipa/libipa/pwl.h
@@ -12,7 +12,7 @@
#include <utility>
#include <vector>
-#include "vector.h"
+#include "libcamera/internal/vector.h"
namespace libcamera {
@@ -49,6 +49,7 @@ public:
void append(double x, double y, double eps = 1e-6);
bool empty() const { return points_.empty(); }
+ void clear() { points_.clear(); }
size_t size() const { return points_.size(); }
Interval domain() const;
diff --git a/src/ipa/libipa/vector.h b/src/ipa/libipa/vector.h
deleted file mode 100644
index fe33c9d6..00000000
--- a/src/ipa/libipa/vector.h
+++ /dev/null
@@ -1,370 +0,0 @@
-/* SPDX-License-Identifier: LGPL-2.1-or-later */
-/*
- * Copyright (C) 2024, Paul Elder <paul.elder@ideasonboard.com>
- *
- * Vector and related operations
- */
-#pragma once
-
-#include <algorithm>
-#include <array>
-#include <cmath>
-#include <functional>
-#include <numeric>
-#include <optional>
-#include <ostream>
-
-#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
-
-#include "libcamera/internal/matrix.h"
-#include "libcamera/internal/yaml_parser.h"
-
-namespace libcamera {
-
-LOG_DECLARE_CATEGORY(Vector)
-
-namespace ipa {
-
-#ifndef __DOXYGEN__
-template<typename T, unsigned int Rows,
- std::enable_if_t<std::is_arithmetic_v<T>> * = nullptr>
-#else
-template<typename T, unsigned int Rows>
-#endif /* __DOXYGEN__ */
-class Vector
-{
-public:
- constexpr Vector() = default;
-
- constexpr explicit Vector(T scalar)
- {
- data_.fill(scalar);
- }
-
- constexpr Vector(const std::array<T, Rows> &data)
- {
- for (unsigned int i = 0; i < Rows; i++)
- data_[i] = data[i];
- }
-
- const T &operator[](size_t i) const
- {
- ASSERT(i < data_.size());
- return data_[i];
- }
-
- T &operator[](size_t i)
- {
- ASSERT(i < data_.size());
- return data_[i];
- }
-
- constexpr Vector<T, Rows> operator-() const
- {
- Vector<T, Rows> ret;
- for (unsigned int i = 0; i < Rows; i++)
- ret[i] = -data_[i];
- return ret;
- }
-
- constexpr Vector operator+(const Vector &other) const
- {
- return apply(*this, other, std::plus<>{});
- }
-
- constexpr Vector operator+(T scalar) const
- {
- return apply(*this, scalar, std::plus<>{});
- }
-
- constexpr Vector operator-(const Vector &other) const
- {
- return apply(*this, other, std::minus<>{});
- }
-
- constexpr Vector operator-(T scalar) const
- {
- return apply(*this, scalar, std::minus<>{});
- }
-
- constexpr Vector operator*(const Vector &other) const
- {
- return apply(*this, other, std::multiplies<>{});
- }
-
- constexpr Vector operator*(T scalar) const
- {
- return apply(*this, scalar, std::multiplies<>{});
- }
-
- constexpr Vector operator/(const Vector &other) const
- {
- return apply(*this, other, std::divides<>{});
- }
-
- constexpr Vector operator/(T scalar) const
- {
- return apply(*this, scalar, std::divides<>{});
- }
-
- Vector &operator+=(const Vector &other)
- {
- return apply(other, [](T a, T b) { return a + b; });
- }
-
- Vector &operator+=(T scalar)
- {
- return apply(scalar, [](T a, T b) { return a + b; });
- }
-
- Vector &operator-=(const Vector &other)
- {
- return apply(other, [](T a, T b) { return a - b; });
- }
-
- Vector &operator-=(T scalar)
- {
- return apply(scalar, [](T a, T b) { return a - b; });
- }
-
- Vector &operator*=(const Vector &other)
- {
- return apply(other, [](T a, T b) { return a * b; });
- }
-
- Vector &operator*=(T scalar)
- {
- return apply(scalar, [](T a, T b) { return a * b; });
- }
-
- Vector &operator/=(const Vector &other)
- {
- return apply(other, [](T a, T b) { return a / b; });
- }
-
- Vector &operator/=(T scalar)
- {
- return apply(scalar, [](T a, T b) { return a / b; });
- }
-
- constexpr Vector min(const Vector &other) const
- {
- return apply(*this, other, [](T a, T b) { return std::min(a, b); });
- }
-
- constexpr Vector min(T scalar) const
- {
- return apply(*this, scalar, [](T a, T b) { return std::min(a, b); });
- }
-
- constexpr Vector max(const Vector &other) const
- {
- return apply(*this, other, [](T a, T b) { return std::max(a, b); });
- }
-
- constexpr Vector max(T scalar) const
- {
- return apply(*this, scalar, [](T a, T b) -> T { return std::max(a, b); });
- }
-
- constexpr T dot(const Vector<T, Rows> &other) const
- {
- T ret = 0;
- for (unsigned int i = 0; i < Rows; i++)
- ret += data_[i] * other[i];
- return ret;
- }
-
-#ifndef __DOXYGEN__
- template<bool Dependent = false, typename = std::enable_if_t<Dependent || Rows >= 1>>
-#endif /* __DOXYGEN__ */
- constexpr const T &x() const { return data_[0]; }
-#ifndef __DOXYGEN__
- template<bool Dependent = false, typename = std::enable_if_t<Dependent || Rows >= 2>>
-#endif /* __DOXYGEN__ */
- constexpr const T &y() const { return data_[1]; }
-#ifndef __DOXYGEN__
- template<bool Dependent = false, typename = std::enable_if_t<Dependent || Rows >= 3>>
-#endif /* __DOXYGEN__ */
- constexpr const T &z() const { return data_[2]; }
-#ifndef __DOXYGEN__
- template<bool Dependent = false, typename = std::enable_if_t<Dependent || Rows >= 1>>
-#endif /* __DOXYGEN__ */
- constexpr T &x() { return data_[0]; }
-#ifndef __DOXYGEN__
- template<bool Dependent = false, typename = std::enable_if_t<Dependent || Rows >= 2>>
-#endif /* __DOXYGEN__ */
- constexpr T &y() { return data_[1]; }
-#ifndef __DOXYGEN__
- template<bool Dependent = false, typename = std::enable_if_t<Dependent || Rows >= 3>>
-#endif /* __DOXYGEN__ */
- constexpr T &z() { return data_[2]; }
-
-#ifndef __DOXYGEN__
- template<bool Dependent = false, typename = std::enable_if_t<Dependent || Rows >= 1>>
-#endif /* __DOXYGEN__ */
- constexpr const T &r() const { return data_[0]; }
-#ifndef __DOXYGEN__
- template<bool Dependent = false, typename = std::enable_if_t<Dependent || Rows >= 2>>
-#endif /* __DOXYGEN__ */
- constexpr const T &g() const { return data_[1]; }
-#ifndef __DOXYGEN__
- template<bool Dependent = false, typename = std::enable_if_t<Dependent || Rows >= 3>>
-#endif /* __DOXYGEN__ */
- constexpr const T &b() const { return data_[2]; }
-#ifndef __DOXYGEN__
- template<bool Dependent = false, typename = std::enable_if_t<Dependent || Rows >= 1>>
-#endif /* __DOXYGEN__ */
- constexpr T &r() { return data_[0]; }
-#ifndef __DOXYGEN__
- template<bool Dependent = false, typename = std::enable_if_t<Dependent || Rows >= 2>>
-#endif /* __DOXYGEN__ */
- constexpr T &g() { return data_[1]; }
-#ifndef __DOXYGEN__
- template<bool Dependent = false, typename = std::enable_if_t<Dependent || Rows >= 3>>
-#endif /* __DOXYGEN__ */
- constexpr T &b() { return data_[2]; }
-
- constexpr double length2() const
- {
- double ret = 0;
- for (unsigned int i = 0; i < Rows; i++)
- ret += data_[i] * data_[i];
- return ret;
- }
-
- constexpr double length() const
- {
- return std::sqrt(length2());
- }
-
- template<typename R = T>
- constexpr R sum() const
- {
- return std::accumulate(data_.begin(), data_.end(), R{});
- }
-
-private:
- template<class BinaryOp>
- static constexpr Vector apply(const Vector &lhs, const Vector &rhs, BinaryOp op)
- {
- Vector result;
- std::transform(lhs.data_.begin(), lhs.data_.end(),
- rhs.data_.begin(), result.data_.begin(),
- op);
-
- return result;
- }
-
- template<class BinaryOp>
- static constexpr Vector apply(const Vector &lhs, T rhs, BinaryOp op)
- {
- Vector result;
- std::transform(lhs.data_.begin(), lhs.data_.end(),
- result.data_.begin(),
- [&op, rhs](T v) { return op(v, rhs); });
-
- return result;
- }
-
- template<class BinaryOp>
- Vector &apply(const Vector &other, BinaryOp op)
- {
- auto itOther = other.data_.begin();
- std::for_each(data_.begin(), data_.end(),
- [&op, &itOther](T &v) { v = op(v, *itOther++); });
-
- return *this;
- }
-
- template<class BinaryOp>
- Vector &apply(T scalar, BinaryOp op)
- {
- std::for_each(data_.begin(), data_.end(),
- [&op, scalar](T &v) { v = op(v, scalar); });
-
- return *this;
- }
-
- std::array<T, Rows> data_;
-};
-
-template<typename T>
-using RGB = Vector<T, 3>;
-
-template<typename T, unsigned int Rows, unsigned int Cols>
-Vector<T, Rows> operator*(const Matrix<T, Rows, Cols> &m, const Vector<T, Cols> &v)
-{
- Vector<T, Rows> result;
-
- for (unsigned int i = 0; i < Rows; i++) {
- T sum = 0;
- for (unsigned int j = 0; j < Cols; j++)
- sum += m[i][j] * v[j];
- result[i] = sum;
- }
-
- return result;
-}
-
-template<typename T, unsigned int Rows>
-bool operator==(const Vector<T, Rows> &lhs, const Vector<T, Rows> &rhs)
-{
- for (unsigned int i = 0; i < Rows; i++) {
- if (lhs[i] != rhs[i])
- return false;
- }
-
- return true;
-}
-
-template<typename T, unsigned int Rows>
-bool operator!=(const Vector<T, Rows> &lhs, const Vector<T, Rows> &rhs)
-{
- return !(lhs == rhs);
-}
-
-#ifndef __DOXYGEN__
-bool vectorValidateYaml(const YamlObject &obj, unsigned int size);
-#endif /* __DOXYGEN__ */
-
-} /* namespace ipa */
-
-#ifndef __DOXYGEN__
-template<typename T, unsigned int Rows>
-std::ostream &operator<<(std::ostream &out, const ipa::Vector<T, Rows> &v)
-{
- out << "Vector { ";
- for (unsigned int i = 0; i < Rows; i++) {
- out << v[i];
- out << ((i + 1 < Rows) ? ", " : " ");
- }
- out << " }";
-
- return out;
-}
-
-template<typename T, unsigned int Rows>
-struct YamlObject::Getter<ipa::Vector<T, Rows>> {
- std::optional<ipa::Vector<T, Rows>> get(const YamlObject &obj) const
- {
- if (!ipa::vectorValidateYaml(obj, Rows))
- return std::nullopt;
-
- ipa::Vector<T, Rows> vector;
-
- unsigned int i = 0;
- for (const YamlObject &entry : obj.asList()) {
- const auto value = entry.get<T>();
- if (!value)
- return std::nullopt;
- vector[i++] = *value;
- }
-
- return vector;
- }
-};
-#endif /* __DOXYGEN__ */
-
-} /* namespace libcamera */
diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
index 40e5a8f4..b3ac9400 100644
--- a/src/ipa/rkisp1/algorithms/agc.cpp
+++ b/src/ipa/rkisp1/algorithms/agc.cpp
@@ -148,7 +148,16 @@ int Agc::init(IPAContext &context, const YamlObject &tuningData)
if (ret)
return ret;
- context.ctrlMap[&controls::AeEnable] = ControlInfo(false, true);
+ context.ctrlMap[&controls::ExposureTimeMode] =
+ ControlInfo({ { ControlValue(controls::ExposureTimeModeAuto),
+ ControlValue(controls::ExposureTimeModeManual) } },
+ ControlValue(controls::ExposureTimeModeAuto));
+ context.ctrlMap[&controls::AnalogueGainMode] =
+ ControlInfo({ { ControlValue(controls::AnalogueGainModeAuto),
+ ControlValue(controls::AnalogueGainModeManual) } },
+ ControlValue(controls::AnalogueGainModeAuto));
+ /* \todo Move this to the Camera class */
+ context.ctrlMap[&controls::AeEnable] = ControlInfo(false, true, true);
context.ctrlMap.merge(controls());
return 0;
@@ -169,7 +178,8 @@ int Agc::configure(IPAContext &context, const IPACameraSensorInfo &configInfo)
10ms / context.configuration.sensor.lineDuration;
context.activeState.agc.manual.gain = context.activeState.agc.automatic.gain;
context.activeState.agc.manual.exposure = context.activeState.agc.automatic.exposure;
- context.activeState.agc.autoEnabled = !context.configuration.raw;
+ context.activeState.agc.autoExposureEnabled = !context.configuration.raw;
+ context.activeState.agc.autoGainEnabled = !context.configuration.raw;
context.activeState.agc.constraintMode =
static_cast<controls::AeConstraintModeEnum>(constraintModes().begin()->first);
@@ -178,21 +188,15 @@ int Agc::configure(IPAContext &context, const IPACameraSensorInfo &configInfo)
context.activeState.agc.meteringMode =
static_cast<controls::AeMeteringModeEnum>(meteringModes_.begin()->first);
- /*
- * \todo This should probably come from FrameDurationLimits instead,
- * except it's computed in the IPA and not here so we'd have to
- * recompute it.
- */
- context.activeState.agc.maxFrameDuration = context.configuration.sensor.maxExposureTime;
+ /* Limit the frame duration to match current initialisation */
+ ControlInfo &frameDurationLimits = context.ctrlMap[&controls::FrameDurationLimits];
+ context.activeState.agc.minFrameDuration = std::chrono::microseconds(frameDurationLimits.min().get<int64_t>());
+ context.activeState.agc.maxFrameDuration = std::chrono::microseconds(frameDurationLimits.max().get<int64_t>());
- /*
- * Define the measurement window for AGC as a centered rectangle
- * covering 3/4 of the image width and height.
- */
- context.configuration.agc.measureWindow.h_offs = configInfo.outputSize.width / 8;
- context.configuration.agc.measureWindow.v_offs = configInfo.outputSize.height / 8;
- context.configuration.agc.measureWindow.h_size = 3 * configInfo.outputSize.width / 4;
- context.configuration.agc.measureWindow.v_size = 3 * configInfo.outputSize.height / 4;
+ context.configuration.agc.measureWindow.h_offs = 0;
+ context.configuration.agc.measureWindow.v_offs = 0;
+ context.configuration.agc.measureWindow.h_size = configInfo.outputSize.width;
+ context.configuration.agc.measureWindow.v_size = configInfo.outputSize.height;
setLimits(context.configuration.sensor.minExposureTime,
context.configuration.sensor.maxExposureTime,
@@ -215,18 +219,47 @@ void Agc::queueRequest(IPAContext &context,
auto &agc = context.activeState.agc;
if (!context.configuration.raw) {
- const auto &agcEnable = controls.get(controls::AeEnable);
- if (agcEnable && *agcEnable != agc.autoEnabled) {
- agc.autoEnabled = *agcEnable;
+ const auto &aeEnable = controls.get(controls::ExposureTimeMode);
+ if (aeEnable &&
+ (*aeEnable == controls::ExposureTimeModeAuto) != agc.autoExposureEnabled) {
+ agc.autoExposureEnabled = (*aeEnable == controls::ExposureTimeModeAuto);
LOG(RkISP1Agc, Debug)
- << (agc.autoEnabled ? "Enabling" : "Disabling")
- << " AGC";
+ << (agc.autoExposureEnabled ? "Enabling" : "Disabling")
+ << " AGC (exposure)";
+
+ /*
+ * If we go from auto -> manual with no manual control
+ * set, use the last computed value, which we don't
+ * know until prepare() so save this information.
+ *
+ * \todo Check the previous frame at prepare() time
+ * instead of saving a flag here
+ */
+ if (!agc.autoExposureEnabled && !controls.get(controls::ExposureTime))
+ frameContext.agc.autoExposureModeChange = true;
+ }
+
+ const auto &agEnable = controls.get(controls::AnalogueGainMode);
+ if (agEnable &&
+ (*agEnable == controls::AnalogueGainModeAuto) != agc.autoGainEnabled) {
+ agc.autoGainEnabled = (*agEnable == controls::AnalogueGainModeAuto);
+
+ LOG(RkISP1Agc, Debug)
+ << (agc.autoGainEnabled ? "Enabling" : "Disabling")
+ << " AGC (gain)";
+ /*
+ * If we go from auto -> manual with no manual control
+ * set, use the last computed value, which we don't
+ * know until prepare() so save this information.
+ */
+ if (!agc.autoGainEnabled && !controls.get(controls::AnalogueGain))
+ frameContext.agc.autoGainModeChange = true;
}
}
const auto &exposure = controls.get(controls::ExposureTime);
- if (exposure && !agc.autoEnabled) {
+ if (exposure && !agc.autoExposureEnabled) {
agc.manual.exposure = *exposure * 1.0us
/ context.configuration.sensor.lineDuration;
@@ -235,18 +268,19 @@ void Agc::queueRequest(IPAContext &context,
}
const auto &gain = controls.get(controls::AnalogueGain);
- if (gain && !agc.autoEnabled) {
+ if (gain && !agc.autoGainEnabled) {
agc.manual.gain = *gain;
LOG(RkISP1Agc, Debug) << "Set gain to " << agc.manual.gain;
}
- frameContext.agc.autoEnabled = agc.autoEnabled;
+ frameContext.agc.autoExposureEnabled = agc.autoExposureEnabled;
+ frameContext.agc.autoGainEnabled = agc.autoGainEnabled;
- if (!frameContext.agc.autoEnabled) {
+ if (!frameContext.agc.autoExposureEnabled)
frameContext.agc.exposure = agc.manual.exposure;
+ if (!frameContext.agc.autoGainEnabled)
frameContext.agc.gain = agc.manual.gain;
- }
const auto &meteringMode = controls.get(controls::AeMeteringMode);
if (meteringMode) {
@@ -270,10 +304,21 @@ void Agc::queueRequest(IPAContext &context,
const auto &frameDurationLimits = controls.get(controls::FrameDurationLimits);
if (frameDurationLimits) {
- utils::Duration maxFrameDuration =
- std::chrono::milliseconds((*frameDurationLimits).back());
- agc.maxFrameDuration = maxFrameDuration;
+ /* Limit the control value to the limits in ControlInfo */
+ ControlInfo &limits = context.ctrlMap[&controls::FrameDurationLimits];
+ int64_t minFrameDuration =
+ std::clamp((*frameDurationLimits).front(),
+ limits.min().get<int64_t>(),
+ limits.max().get<int64_t>());
+ int64_t maxFrameDuration =
+ std::clamp((*frameDurationLimits).back(),
+ limits.min().get<int64_t>(),
+ limits.max().get<int64_t>());
+
+ agc.minFrameDuration = std::chrono::microseconds(minFrameDuration);
+ agc.maxFrameDuration = std::chrono::microseconds(maxFrameDuration);
}
+ frameContext.agc.minFrameDuration = agc.minFrameDuration;
frameContext.agc.maxFrameDuration = agc.maxFrameDuration;
}
@@ -283,9 +328,26 @@ void Agc::queueRequest(IPAContext &context,
void Agc::prepare(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext, RkISP1Params *params)
{
- if (frameContext.agc.autoEnabled) {
- frameContext.agc.exposure = context.activeState.agc.automatic.exposure;
- frameContext.agc.gain = context.activeState.agc.automatic.gain;
+ uint32_t activeAutoExposure = context.activeState.agc.automatic.exposure;
+ double activeAutoGain = context.activeState.agc.automatic.gain;
+
+ /* Populate exposure and gain in auto mode */
+ if (frameContext.agc.autoExposureEnabled)
+ frameContext.agc.exposure = activeAutoExposure;
+ if (frameContext.agc.autoGainEnabled)
+ frameContext.agc.gain = activeAutoGain;
+
+ /*
+ * Populate manual exposure and gain from the active auto values when
+ * transitioning from auto to manual
+ */
+ if (!frameContext.agc.autoExposureEnabled && frameContext.agc.autoExposureModeChange) {
+ context.activeState.agc.manual.exposure = activeAutoExposure;
+ frameContext.agc.exposure = activeAutoExposure;
+ }
+ if (!frameContext.agc.autoGainEnabled && frameContext.agc.autoGainModeChange) {
+ context.activeState.agc.manual.gain = activeAutoGain;
+ frameContext.agc.gain = activeAutoGain;
}
if (frame > 0 && !frameContext.agc.updateMetering)
@@ -333,14 +395,15 @@ void Agc::fillMetadata(IPAContext &context, IPAFrameContext &frameContext,
* frameContext.sensor.exposure;
metadata.set(controls::AnalogueGain, frameContext.sensor.gain);
metadata.set(controls::ExposureTime, exposureTime.get<std::micro>());
- metadata.set(controls::AeEnable, frameContext.agc.autoEnabled);
-
- /* \todo Use VBlank value calculated from each frame exposure. */
- uint32_t vTotal = context.configuration.sensor.size.height
- + context.configuration.sensor.defVBlank;
- utils::Duration frameDuration = context.configuration.sensor.lineDuration
- * vTotal;
- metadata.set(controls::FrameDuration, frameDuration.get<std::micro>());
+ metadata.set(controls::FrameDuration, frameContext.agc.frameDuration.get<std::micro>());
+ metadata.set(controls::ExposureTimeMode,
+ frameContext.agc.autoExposureEnabled
+ ? controls::ExposureTimeModeAuto
+ : controls::ExposureTimeModeManual);
+ metadata.set(controls::AnalogueGainMode,
+ frameContext.agc.autoGainEnabled
+ ? controls::AnalogueGainModeAuto
+ : controls::AnalogueGainModeManual);
metadata.set(controls::AeMeteringMode, frameContext.agc.meteringMode);
metadata.set(controls::AeExposureMode, frameContext.agc.exposureMode);
@@ -372,15 +435,41 @@ void Agc::fillMetadata(IPAContext &context, IPAFrameContext &frameContext,
*/
double Agc::estimateLuminance(double gain) const
{
+ ASSERT(expMeans_.size() == weights_.size());
double ySum = 0.0;
+ double wSum = 0.0;
/* Sum the averages, saturated to 255. */
- for (uint8_t expMean : expMeans_)
- ySum += std::min(expMean * gain, 255.0);
+ for (unsigned i = 0; i < expMeans_.size(); i++) {
+ double w = weights_[i];
+ ySum += std::min(expMeans_[i] * gain, 255.0) * w;
+ wSum += w;
+ }
/* \todo Weight with the AWB gains */
- return ySum / expMeans_.size() / 255;
+ return ySum / wSum / 255;
+}
+
+/**
+ * \brief Process frame duration and compute vblank
+ * \param[in] context The shared IPA context
+ * \param[in] frameContext The current frame context
+ * \param[in] frameDuration The target frame duration
+ *
+ * Compute and populate vblank from the target frame duration.
+ */
+void Agc::processFrameDuration(IPAContext &context,
+ IPAFrameContext &frameContext,
+ utils::Duration frameDuration)
+{
+ IPACameraSensorInfo &sensorInfo = context.sensorInfo;
+ utils::Duration lineDuration = context.configuration.sensor.lineDuration;
+
+ frameContext.agc.vblank = (frameDuration / lineDuration) - sensorInfo.outputSize.height;
+
+ /* Update frame duration accounting for line length quantization. */
+ frameContext.agc.frameDuration = (sensorInfo.outputSize.height + frameContext.agc.vblank) * lineDuration;
}
/**
@@ -399,16 +488,20 @@ void Agc::process(IPAContext &context, [[maybe_unused]] const uint32_t frame,
ControlList &metadata)
{
if (!stats) {
+ processFrameDuration(context, frameContext,
+ frameContext.agc.minFrameDuration);
fillMetadata(context, frameContext, metadata);
return;
}
-
+
if (!(stats->meas_type & RKISP1_CIF_ISP_STAT_AUTOEXP)) {
fillMetadata(context, frameContext, metadata);
LOG(RkISP1Agc, Error) << "AUTOEXP data is missing in statistics";
return;
}
+ const utils::Duration &lineDuration = context.configuration.sensor.lineDuration;
+
/*
* \todo Verify that the exposure and gain applied by the sensor for
* this frame match what has been requested. This isn't a hard
@@ -423,22 +516,44 @@ void Agc::process(IPAContext &context, [[maybe_unused]] const uint32_t frame,
Histogram hist({ params->hist.hist_bins, context.hw->numHistogramBins },
[](uint32_t x) { return x >> 4; });
expMeans_ = { params->ae.exp_mean, context.hw->numAeCells };
+ std::vector<uint8_t> &modeWeights = meteringModes_.at(frameContext.agc.meteringMode);
+ weights_ = { modeWeights.data(), modeWeights.size() };
- utils::Duration maxExposureTime =
- std::clamp(frameContext.agc.maxFrameDuration,
- context.configuration.sensor.minExposureTime,
- context.configuration.sensor.maxExposureTime);
- setLimits(context.configuration.sensor.minExposureTime,
- maxExposureTime,
- context.configuration.sensor.minAnalogueGain,
- context.configuration.sensor.maxAnalogueGain);
+ /*
+ * Set the AGC limits using the fixed exposure time and/or gain in
+ * manual mode, or the sensor limits in auto mode.
+ */
+ utils::Duration minExposureTime;
+ utils::Duration maxExposureTime;
+ double minAnalogueGain;
+ double maxAnalogueGain;
+
+ if (frameContext.agc.autoExposureEnabled) {
+ minExposureTime = context.configuration.sensor.minExposureTime;
+ maxExposureTime = std::clamp(frameContext.agc.maxFrameDuration,
+ context.configuration.sensor.minExposureTime,
+ context.configuration.sensor.maxExposureTime);
+ } else {
+ minExposureTime = context.configuration.sensor.lineDuration
+ * frameContext.agc.exposure;
+ maxExposureTime = minExposureTime;
+ }
+
+ if (frameContext.agc.autoGainEnabled) {
+ minAnalogueGain = context.configuration.sensor.minAnalogueGain;
+ maxAnalogueGain = context.configuration.sensor.maxAnalogueGain;
+ } else {
+ minAnalogueGain = frameContext.agc.gain;
+ maxAnalogueGain = frameContext.agc.gain;
+ }
+
+ setLimits(minExposureTime, maxExposureTime, minAnalogueGain, maxAnalogueGain);
/*
* The Agc algorithm needs to know the effective exposure value that was
* applied to the sensor when the statistics were collected.
*/
- utils::Duration exposureTime = context.configuration.sensor.lineDuration
- * frameContext.sensor.exposure;
+ utils::Duration exposureTime = lineDuration * frameContext.sensor.exposure;
double analogueGain = frameContext.sensor.gain;
utils::Duration effectiveExposureValue = exposureTime * analogueGain;
@@ -455,10 +570,16 @@ void Agc::process(IPAContext &context, [[maybe_unused]] const uint32_t frame,
IPAActiveState &activeState = context.activeState;
/* Update the estimated exposure and gain. */
- activeState.agc.automatic.exposure = newExposureTime
- / context.configuration.sensor.lineDuration;
+ activeState.agc.automatic.exposure = newExposureTime / lineDuration;
activeState.agc.automatic.gain = aGain;
+ /*
+ * Expand the target frame duration so that we do not run faster than
+ * the minimum frame duration when we have short exposures.
+ */
+ processFrameDuration(context, frameContext,
+ std::max(frameContext.agc.minFrameDuration, newExposureTime));
+
fillMetadata(context, frameContext, metadata);
expMeans_ = {};
}
diff --git a/src/ipa/rkisp1/algorithms/agc.h b/src/ipa/rkisp1/algorithms/agc.h
index aa86f2c5..7867eed9 100644
--- a/src/ipa/rkisp1/algorithms/agc.h
+++ b/src/ipa/rkisp1/algorithms/agc.h
@@ -50,8 +50,12 @@ private:
void fillMetadata(IPAContext &context, IPAFrameContext &frameContext,
ControlList &metadata);
double estimateLuminance(double gain) const override;
+ void processFrameDuration(IPAContext &context,
+ IPAFrameContext &frameContext,
+ utils::Duration frameDuration);
Span<const uint8_t> expMeans_;
+ Span<const uint8_t> weights_;
std::map<int32_t, std::vector<uint8_t>> meteringModes_;
};
diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp
index cffaa06a..eafe9308 100644
--- a/src/ipa/rkisp1/algorithms/awb.cpp
+++ b/src/ipa/rkisp1/algorithms/awb.cpp
@@ -16,6 +16,8 @@
#include <libcamera/ipa/core_ipa_interface.h>
+#include "libipa/awb_bayes.h"
+#include "libipa/awb_grey.h"
#include "libipa/colours.h"
/**
@@ -40,6 +42,40 @@ constexpr int32_t kDefaultColourTemperature = 5000;
/* Minimum mean value below which AWB can't operate. */
constexpr double kMeanMinThreshold = 2.0;
+class RkISP1AwbStats final : public AwbStats
+{
+public:
+ RkISP1AwbStats(const RGB<double> &rgbMeans)
+ : rgbMeans_(rgbMeans)
+ {
+ rg_ = rgbMeans_.r() / rgbMeans_.g();
+ bg_ = rgbMeans_.b() / rgbMeans_.g();
+ }
+
+ double computeColourError(const RGB<double> &gains) const override
+ {
+ /*
+ * Compute the sum of the squared colour error (non-greyness) as
+ * it appears in the log likelihood equation.
+ */
+ double deltaR = gains.r() * rg_ - 1.0;
+ double deltaB = gains.b() * bg_ - 1.0;
+ double delta2 = deltaR * deltaR + deltaB * deltaB;
+
+ return delta2;
+ }
+
+ RGB<double> rgbMeans() const override
+ {
+ return rgbMeans_;
+ }
+
+private:
+ RGB<double> rgbMeans_;
+ double rg_;
+ double bg_;
+};
+
Awb::Awb()
: rgbMode_(false)
{
@@ -55,15 +91,29 @@ int Awb::init(IPAContext &context, const YamlObject &tuningData)
kMaxColourTemperature,
kDefaultColourTemperature);
- Interpolator<Vector<double, 2>> gainCurve;
- int ret = gainCurve.readYaml(tuningData["colourGains"], "ct", "gains");
- if (ret < 0)
- LOG(RkISP1Awb, Warning)
- << "Failed to parse 'colourGains' "
- << "parameter from tuning file; "
- << "manual colour temperature will not work properly";
- else
- colourGainCurve_ = gainCurve;
+ if (!tuningData.contains("algorithm"))
+ LOG(RkISP1Awb, Info) << "No AWB algorithm specified."
+ << " Default to grey world";
+
+ auto mode = tuningData["algorithm"].get<std::string>("grey");
+ if (mode == "grey") {
+ awbAlgo_ = std::make_unique<AwbGrey>();
+ } else if (mode == "bayes") {
+ awbAlgo_ = std::make_unique<AwbBayes>();
+ } else {
+ LOG(RkISP1Awb, Error) << "Unknown AWB algorithm: " << mode;
+ return -EINVAL;
+ }
+ LOG(RkISP1Awb, Debug) << "Using AWB algorithm: " << mode;
+
+ int ret = awbAlgo_->init(tuningData);
+ if (ret) {
+ LOG(RkISP1Awb, Error) << "Failed to init AWB algorithm";
+ return ret;
+ }
+
+ const auto &src = awbAlgo_->controls();
+ cmap.insert(src.begin(), src.end());
return 0;
}
@@ -75,7 +125,8 @@ int Awb::configure(IPAContext &context,
const IPACameraSensorInfo &configInfo)
{
context.activeState.awb.gains.manual = RGB<double>{ 1.0 };
- context.activeState.awb.gains.automatic = RGB<double>{ 1.0 };
+ context.activeState.awb.gains.automatic =
+ awbAlgo_->gainsFromColourTemperature(kDefaultColourTemperature);
context.activeState.awb.autoEnabled = true;
context.activeState.awb.temperatureK = kDefaultColourTemperature;
@@ -111,6 +162,8 @@ void Awb::queueRequest(IPAContext &context,
<< (*awbEnable ? "Enabling" : "Disabling") << " AWB";
}
+ awbAlgo_->handleControls(controls);
+
frameContext.awb.autoEnabled = awb.autoEnabled;
if (awb.autoEnabled)
@@ -123,15 +176,15 @@ void Awb::queueRequest(IPAContext &context,
awb.gains.manual.r() = (*colourGains)[0];
awb.gains.manual.b() = (*colourGains)[1];
/*
- * \todo: Colour temperature reported in metadata is now
+ * \todo Colour temperature reported in metadata is now
* incorrect, as we can't deduce the temperature from the gains.
* This will be fixed with the bayes AWB algorithm.
*/
update = true;
- } else if (colourTemperature && colourGainCurve_) {
- const auto &gains = colourGainCurve_->getInterpolated(*colourTemperature);
- awb.gains.manual.r() = gains[0];
- awb.gains.manual.b() = gains[1];
+ } else if (colourTemperature) {
+ const auto &gains = awbAlgo_->gainsFromColourTemperature(*colourTemperature);
+ awb.gains.manual.r() = gains.r();
+ awb.gains.manual.b() = gains.b();
awb.temperatureK = *colourTemperature;
update = true;
}
@@ -226,10 +279,7 @@ void Awb::process(IPAContext &context,
const rkisp1_stat_buffer *stats,
ControlList &metadata)
{
- const rkisp1_cif_isp_stat *params = &stats->params;
- const rkisp1_cif_isp_awb_stat *awb = &params->awb;
IPAActiveState &activeState = context.activeState;
- RGB<double> rgbMeans;
metadata.set(controls::AwbEnable, frameContext.awb.autoEnabled);
metadata.set(controls::ColourGains, {
@@ -243,10 +293,57 @@ void Awb::process(IPAContext &context,
return;
}
+ const rkisp1_cif_isp_stat *params = &stats->params;
+ const rkisp1_cif_isp_awb_stat *awb = &params->awb;
+
+ RGB<double> rgbMeans = calculateRgbMeans(frameContext, awb);
+
+ /*
+ * If the means are too small we don't have enough information to
+ * meaningfully calculate gains. Freeze the algorithm in that case.
+ */
+ if (rgbMeans.r() < kMeanMinThreshold && rgbMeans.g() < kMeanMinThreshold &&
+ rgbMeans.b() < kMeanMinThreshold)
+ return;
+
+ RkISP1AwbStats awbStats{ rgbMeans };
+ AwbResult awbResult = awbAlgo_->calculateAwb(awbStats, frameContext.lux.lux);
+
+ activeState.awb.temperatureK = awbResult.colourTemperature;
+
+ /* Metadata shall contain the up to date measurement */
+ metadata.set(controls::ColourTemperature, activeState.awb.temperatureK);
+
+ /*
+ * Clamp the gain values to the hardware, which expresses gains as Q2.8
+ * unsigned integer values. Set the minimum just above zero to avoid
+ * divisions by zero when computing the raw means in subsequent
+ * iterations.
+ */
+ awbResult.gains = awbResult.gains.max(1.0 / 256).min(1023.0 / 256);
+
+ /* Filter the values to avoid oscillations. */
+ double speed = 0.2;
+ awbResult.gains = awbResult.gains * speed +
+ activeState.awb.gains.automatic * (1 - speed);
+
+ activeState.awb.gains.automatic = awbResult.gains;
+
+ LOG(RkISP1Awb, Debug)
+ << std::showpoint
+ << "Means " << rgbMeans << ", gains "
+ << activeState.awb.gains.automatic << ", temp "
+ << activeState.awb.temperatureK << "K";
+}
+
+RGB<double> Awb::calculateRgbMeans(const IPAFrameContext &frameContext, const rkisp1_cif_isp_awb_stat *awb) const
+{
+ Vector<double, 3> rgbMeans;
+
if (rgbMode_) {
rgbMeans = {{
- static_cast<double>(awb->awb_mean[0].mean_y_or_g),
static_cast<double>(awb->awb_mean[0].mean_cr_or_r),
+ static_cast<double>(awb->awb_mean[0].mean_y_or_g),
static_cast<double>(awb->awb_mean[0].mean_cb_or_b)
}};
} else {
@@ -301,46 +398,7 @@ void Awb::process(IPAContext &context,
*/
rgbMeans /= frameContext.awb.gains;
- /*
- * If the means are too small we don't have enough information to
- * meaningfully calculate gains. Freeze the algorithm in that case.
- */
- if (rgbMeans.r() < kMeanMinThreshold && rgbMeans.g() < kMeanMinThreshold &&
- rgbMeans.b() < kMeanMinThreshold)
- return;
-
- activeState.awb.temperatureK = estimateCCT(rgbMeans);
-
- /*
- * Estimate the red and blue gains to apply in a grey world. The green
- * gain is hardcoded to 1.0. Avoid divisions by zero by clamping the
- * divisor to a minimum value of 1.0.
- */
- RGB<double> gains({
- rgbMeans.g() / std::max(rgbMeans.r(), 1.0),
- 1.0,
- rgbMeans.g() / std::max(rgbMeans.b(), 1.0)
- });
-
- /*
- * Clamp the gain values to the hardware, which expresses gains as Q2.8
- * unsigned integer values. Set the minimum just above zero to avoid
- * divisions by zero when computing the raw means in subsequent
- * iterations.
- */
- gains = gains.max(1.0 / 256).min(1023.0 / 256);
-
- /* Filter the values to avoid oscillations. */
- double speed = 0.2;
- gains = gains * speed + activeState.awb.gains.automatic * (1 - speed);
-
- activeState.awb.gains.automatic = gains;
-
- LOG(RkISP1Awb, Debug)
- << std::showpoint
- << "Means " << rgbMeans << ", gains "
- << activeState.awb.gains.automatic << ", temp "
- << activeState.awb.temperatureK << "K";
+ return rgbMeans;
}
REGISTER_IPA_ALGORITHM(Awb, "Awb")
diff --git a/src/ipa/rkisp1/algorithms/awb.h b/src/ipa/rkisp1/algorithms/awb.h
index e4248048..7e6c3862 100644
--- a/src/ipa/rkisp1/algorithms/awb.h
+++ b/src/ipa/rkisp1/algorithms/awb.h
@@ -9,8 +9,10 @@
#include <optional>
+#include "libcamera/internal/vector.h"
+
+#include "libipa/awb.h"
#include "libipa/interpolator.h"
-#include "libipa/vector.h"
#include "algorithm.h"
@@ -38,7 +40,11 @@ public:
ControlList &metadata) override;
private:
- std::optional<Interpolator<Vector<double, 2>>> colourGainCurve_;
+ RGB<double> calculateRgbMeans(const IPAFrameContext &frameContext,
+ const rkisp1_cif_isp_awb_stat *awb) const;
+
+ std::unique_ptr<AwbAlgorithm> awbAlgo_;
+
bool rgbMode_;
};
diff --git a/src/ipa/rkisp1/algorithms/ccm.cpp b/src/ipa/rkisp1/algorithms/ccm.cpp
index e2b5cf4d..eb8ca39e 100644
--- a/src/ipa/rkisp1/algorithms/ccm.cpp
+++ b/src/ipa/rkisp1/algorithms/ccm.cpp
@@ -120,12 +120,7 @@ void Ccm::process([[maybe_unused]] IPAContext &context,
[[maybe_unused]] const rkisp1_stat_buffer *stats,
ControlList &metadata)
{
- float m[9];
- for (unsigned int i = 0; i < 3; i++) {
- for (unsigned int j = 0; j < 3; j++)
- m[i * 3 + j] = frameContext.ccm.ccm[i][j];
- }
- metadata.set(controls::ColourCorrectionMatrix, m);
+ metadata.set(controls::ColourCorrectionMatrix, frameContext.ccm.ccm.data());
}
REGISTER_IPA_ALGORITHM(Ccm, "Ccm")
diff --git a/src/ipa/rkisp1/algorithms/lux.cpp b/src/ipa/rkisp1/algorithms/lux.cpp
index b0f74963..a467767e 100644
--- a/src/ipa/rkisp1/algorithms/lux.cpp
+++ b/src/ipa/rkisp1/algorithms/lux.cpp
@@ -33,12 +33,8 @@ namespace ipa::rkisp1::algorithms {
/**
* \brief Construct an rkisp1 Lux algo module
- *
- * The Lux helper is initialized to 65535 as that is the max bin count on the
- * rkisp1.
*/
Lux::Lux()
- : lux_(65535)
{
}
diff --git a/src/ipa/rkisp1/ipa_context.cpp b/src/ipa/rkisp1/ipa_context.cpp
index 80b99df8..99611bd5 100644
--- a/src/ipa/rkisp1/ipa_context.cpp
+++ b/src/ipa/rkisp1/ipa_context.cpp
@@ -165,8 +165,11 @@ namespace libcamera::ipa::rkisp1 {
* \var IPAActiveState::agc.automatic.gain
* \brief Automatic analogue gain multiplier
*
- * \var IPAActiveState::agc.autoEnabled
- * \brief Manual/automatic AGC state as set by the AeEnable control
+ * \var IPAActiveState::agc.autoExposureEnabled
+ * \brief Manual/automatic AGC state (exposure) as set by the ExposureTimeMode control
+ *
+ * \var IPAActiveState::agc.autoGainEnabled
+ * \brief Manual/automatic AGC state (gain) as set by the AnalogueGainMode control
*
* \var IPAActiveState::agc.constraintMode
* \brief Constraint mode as set by the AeConstraintMode control
@@ -177,6 +180,9 @@ namespace libcamera::ipa::rkisp1 {
* \var IPAActiveState::agc.meteringMode
* \brief Metering mode as set by the AeMeteringMode control
*
+ * \var IPAActiveState::agc.minFrameDuration
+ * \brief Minimum frame duration as set by the FrameDurationLimits control
+ *
* \var IPAActiveState::agc.maxFrameDuration
* \brief Maximum frame duration as set by the FrameDurationLimits control
*/
@@ -279,7 +285,9 @@ namespace libcamera::ipa::rkisp1 {
* \brief Automatic Gain Control parameters for this frame
*
* The exposure and gain are provided by the AGC algorithm, and are to be
- * applied to the sensor in order to take effect for this frame.
+ * applied to the sensor in order to take effect for this frame. Additionally
+ * the vertical blanking period is determined to maintain a consistent frame
+ * rate matched to the FrameDurationLimits as set by the user.
*
* \var IPAFrameContext::agc.exposure
* \brief Exposure time expressed as a number of lines computed by the algorithm
@@ -289,8 +297,14 @@ namespace libcamera::ipa::rkisp1 {
*
* The gain should be adapted to the sensor specific gain code before applying.
*
- * \var IPAFrameContext::agc.autoEnabled
- * \brief Manual/automatic AGC state as set by the AeEnable control
+ * \var IPAFrameContext::agc.vblank
+ * \brief Vertical blanking parameter computed by the algorithm
+ *
+ * \var IPAFrameContext::agc.autoExposureEnabled
+ * \brief Manual/automatic AGC state (exposure) as set by the ExposureTimeMode control
+ *
+ * \var IPAFrameContext::agc.autoGainEnabled
+ * \brief Manual/automatic AGC state (gain) as set by the AnalogueGainMode control
*
* \var IPAFrameContext::agc.constraintMode
* \brief Constraint mode as set by the AeConstraintMode control
@@ -301,11 +315,27 @@ namespace libcamera::ipa::rkisp1 {
* \var IPAFrameContext::agc.meteringMode
* \brief Metering mode as set by the AeMeteringMode control
*
+ * \var IPAFrameContext::agc.minFrameDuration
+ * \brief Minimum frame duration as set by the FrameDurationLimits control
+ *
* \var IPAFrameContext::agc.maxFrameDuration
* \brief Maximum frame duration as set by the FrameDurationLimits control
*
+ * \var IPAFrameContext::agc.frameDuration
+ * \brief The actual FrameDuration used by the algorithm for the frame
+ *
* \var IPAFrameContext::agc.updateMetering
* \brief Indicate if new ISP AGC metering parameters need to be applied
+ *
+ * \var IPAFrameContext::agc.autoExposureModeChange
+ * \brief Indicate if autoExposureEnabled has changed from true in the previous
+ * frame to false in the current frame, and no manual exposure value has been
+ * supplied in the current frame.
+ *
+ * \var IPAFrameContext::agc.autoGainModeChange
+ * \brief Indicate if autoGainEnabled has changed from true in the previous
+ * frame to false in the current frame, and no manual gain value has been
+ * supplied in the current frame.
*/
/**
diff --git a/src/ipa/rkisp1/ipa_context.h b/src/ipa/rkisp1/ipa_context.h
index b83c1822..474f7036 100644
--- a/src/ipa/rkisp1/ipa_context.h
+++ b/src/ipa/rkisp1/ipa_context.h
@@ -22,10 +22,10 @@
#include "libcamera/internal/debug_controls.h"
#include "libcamera/internal/matrix.h"
+#include "libcamera/internal/vector.h"
#include <libipa/camera_sensor_helper.h>
#include <libipa/fc_queue.h>
-#include <libipa/vector.h>
namespace libcamera {
@@ -79,10 +79,12 @@ struct IPAActiveState {
double gain;
} automatic;
- bool autoEnabled;
+ bool autoExposureEnabled;
+ bool autoGainEnabled;
controls::AeConstraintModeEnum constraintMode;
controls::AeExposureModeEnum exposureMode;
controls::AeMeteringModeEnum meteringMode;
+ utils::Duration minFrameDuration;
utils::Duration maxFrameDuration;
} agc;
@@ -124,12 +126,18 @@ struct IPAFrameContext : public FrameContext {
struct {
uint32_t exposure;
double gain;
- bool autoEnabled;
+ uint32_t vblank;
+ bool autoExposureEnabled;
+ bool autoGainEnabled;
controls::AeConstraintModeEnum constraintMode;
controls::AeExposureModeEnum exposureMode;
controls::AeMeteringModeEnum meteringMode;
+ utils::Duration minFrameDuration;
utils::Duration maxFrameDuration;
+ utils::Duration frameDuration;
bool updateMetering;
+ bool autoExposureModeChange;
+ bool autoGainModeChange;
} agc;
struct {
diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
index 2ffdd99b..70ce0cba 100644
--- a/src/ipa/rkisp1/rkisp1.cpp
+++ b/src/ipa/rkisp1/rkisp1.cpp
@@ -211,8 +211,7 @@ int IPARkISP1::init(const IPASettings &settings, unsigned int hwRevision,
int IPARkISP1::start()
{
- setControls(0);
-
+ /* \todo Properly handle startup controls. */
return 0;
}
@@ -435,9 +434,9 @@ void IPARkISP1::updateControls(const IPACameraSensorInfo &sensorInfo,
frameDurations[i] = frameSize / (sensorInfo.pixelRate / 1000000U);
}
- ctrlMap[&controls::FrameDurationLimits] = ControlInfo(frameDurations[0],
- frameDurations[1],
- frameDurations[2]);
+ /* \todo Move this (and other agc-related controls) to agc */
+ context_.ctrlMap[&controls::FrameDurationLimits] =
+ ControlInfo(frameDurations[0], frameDurations[1], frameDurations[2]);
ctrlMap.insert(context_.ctrlMap.begin(), context_.ctrlMap.end());
*ipaControls = ControlInfoMap(std::move(ctrlMap), controls::controls);
@@ -453,10 +452,16 @@ void IPARkISP1::setControls(unsigned int frame)
IPAFrameContext &frameContext = context_.frameContexts.get(frame);
uint32_t exposure = frameContext.agc.exposure;
uint32_t gain = context_.camHelper->gainCode(frameContext.agc.gain);
+ uint32_t vblank = frameContext.agc.vblank;
+
+ LOG(IPARkISP1, Debug)
+ << "Set controls for frame " << frame << ": exposure " << exposure
+ << ", gain " << frameContext.agc.gain << ", vblank " << vblank;
ControlList ctrls(sensorControls_);
ctrls.set(V4L2_CID_EXPOSURE, static_cast<int32_t>(exposure));
ctrls.set(V4L2_CID_ANALOGUE_GAIN, static_cast<int32_t>(gain));
+ ctrls.set(V4L2_CID_VBLANK, static_cast<int32_t>(vblank));
setSensorControls.emit(frame, ctrls);
}
diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp
index 6ff1e22b..6734c32e 100644
--- a/src/ipa/rpi/common/ipa_base.cpp
+++ b/src/ipa/rpi/common/ipa_base.cpp
@@ -55,9 +55,19 @@ constexpr Duration controllerMinFrameDuration = 1.0s / 30.0;
/* List of controls handled by the Raspberry Pi IPA */
const ControlInfoMap::Map ipaControls{
- { &controls::AeEnable, ControlInfo(false, true) },
- { &controls::ExposureTime, ControlInfo(0, 66666) },
- { &controls::AnalogueGain, ControlInfo(1.0f, 16.0f) },
+ /* \todo Move this to the Camera class */
+ { &controls::AeEnable, ControlInfo(false, true, true) },
+ { &controls::ExposureTimeMode,
+ ControlInfo(static_cast<int32_t>(controls::ExposureTimeModeAuto),
+ static_cast<int32_t>(controls::ExposureTimeModeManual),
+ static_cast<int32_t>(controls::ExposureTimeModeAuto)) },
+ { &controls::ExposureTime,
+ ControlInfo(1, 66666, static_cast<int32_t>(defaultExposureTime.get<std::micro>())) },
+ { &controls::AnalogueGainMode,
+ ControlInfo(static_cast<int32_t>(controls::AnalogueGainModeAuto),
+ static_cast<int32_t>(controls::AnalogueGainModeManual),
+ static_cast<int32_t>(controls::AnalogueGainModeAuto)) },
+ { &controls::AnalogueGain, ControlInfo(1.0f, 16.0f, 1.0f) },
{ &controls::AeMeteringMode, ControlInfo(controls::AeMeteringModeValues) },
{ &controls::AeConstraintMode, ControlInfo(controls::AeConstraintModeValues) },
{ &controls::AeExposureMode, ControlInfo(controls::AeExposureModeValues) },
@@ -71,7 +81,9 @@ const ControlInfoMap::Map ipaControls{
{ &controls::HdrMode, ControlInfo(controls::HdrModeValues) },
{ &controls::Sharpness, ControlInfo(0.0f, 16.0f, 1.0f) },
{ &controls::ScalerCrop, ControlInfo(Rectangle{}, Rectangle(65535, 65535, 65535, 65535), Rectangle{}) },
- { &controls::FrameDurationLimits, ControlInfo(INT64_C(33333), INT64_C(120000)) },
+ { &controls::FrameDurationLimits,
+ ControlInfo(INT64_C(33333), INT64_C(120000),
+ static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>())) },
{ &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) },
{ &controls::rpi::StatsOutputEnable, ControlInfo(false, true, false) },
};
@@ -250,15 +262,18 @@ int32_t IpaBase::configure(const IPACameraSensorInfo &sensorInfo, const ConfigPa
ControlInfoMap::Map ctrlMap = ipaControls;
ctrlMap[&controls::FrameDurationLimits] =
ControlInfo(static_cast<int64_t>(mode_.minFrameDuration.get<std::micro>()),
- static_cast<int64_t>(mode_.maxFrameDuration.get<std::micro>()));
+ static_cast<int64_t>(mode_.maxFrameDuration.get<std::micro>()),
+ static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()));
ctrlMap[&controls::AnalogueGain] =
ControlInfo(static_cast<float>(mode_.minAnalogueGain),
- static_cast<float>(mode_.maxAnalogueGain));
+ static_cast<float>(mode_.maxAnalogueGain),
+ static_cast<float>(defaultAnalogueGain));
ctrlMap[&controls::ExposureTime] =
ControlInfo(static_cast<int32_t>(mode_.minExposureTime.get<std::micro>()),
- static_cast<int32_t>(mode_.maxExposureTime.get<std::micro>()));
+ static_cast<int32_t>(mode_.maxExposureTime.get<std::micro>()),
+ static_cast<int32_t>(defaultExposureTime.get<std::micro>()));
/* Declare colour processing related controls for non-mono sensors. */
if (!monoSensor_)
@@ -749,6 +764,42 @@ void IpaBase::applyControls(const ControlList &controls)
af->setMode(mode->second);
}
+ /*
+ * Because some AE controls are mode-specific, handle the AE-related
+ * mode changes first.
+ */
+ const auto analogueGainMode = controls.get(controls::AnalogueGainMode);
+ const auto exposureTimeMode = controls.get(controls::ExposureTimeMode);
+
+ if (analogueGainMode || exposureTimeMode) {
+ RPiController::AgcAlgorithm *agc = dynamic_cast<RPiController::AgcAlgorithm *>(
+ controller_.getAlgorithm("agc"));
+ if (agc) {
+ if (analogueGainMode) {
+ if (*analogueGainMode == controls::AnalogueGainModeManual)
+ agc->disableAutoGain();
+ else
+ agc->enableAutoGain();
+
+ libcameraMetadata_.set(controls::AnalogueGainMode,
+ *analogueGainMode);
+ }
+
+ if (exposureTimeMode) {
+ if (*exposureTimeMode == controls::ExposureTimeModeManual)
+ agc->disableAutoExposure();
+ else
+ agc->enableAutoExposure();
+
+ libcameraMetadata_.set(controls::ExposureTimeMode,
+ *exposureTimeMode);
+ }
+ } else {
+ LOG(IPARPI, Warning)
+ << "Could not set AnalogueGainMode or ExposureTimeMode - no AGC algorithm";
+ }
+ }
+
/* Iterate over controls */
for (auto const &ctrl : controls) {
LOG(IPARPI, Debug) << "Request ctrl: "
@@ -756,23 +807,8 @@ void IpaBase::applyControls(const ControlList &controls)
<< " = " << ctrl.second.toString();
switch (ctrl.first) {
- case controls::AE_ENABLE: {
- RPiController::AgcAlgorithm *agc = dynamic_cast<RPiController::AgcAlgorithm *>(
- controller_.getAlgorithm("agc"));
- if (!agc) {
- LOG(IPARPI, Warning)
- << "Could not set AE_ENABLE - no AGC algorithm";
- break;
- }
-
- if (ctrl.second.get<bool>() == false)
- agc->disableAuto();
- else
- agc->enableAuto();
-
- libcameraMetadata_.set(controls::AeEnable, ctrl.second.get<bool>());
- break;
- }
+ case controls::EXPOSURE_TIME_MODE:
+ break; /* We already handled this one above */
case controls::EXPOSURE_TIME: {
RPiController::AgcAlgorithm *agc = dynamic_cast<RPiController::AgcAlgorithm *>(
@@ -783,6 +819,13 @@ void IpaBase::applyControls(const ControlList &controls)
break;
}
+ /*
+ * Ignore manual exposure time when the auto exposure
+ * algorithm is running.
+ */
+ if (agc->autoExposureEnabled())
+ break;
+
/* The control provides units of microseconds. */
agc->setFixedExposureTime(0, ctrl.second.get<int32_t>() * 1.0us);
@@ -790,6 +833,9 @@ void IpaBase::applyControls(const ControlList &controls)
break;
}
+ case controls::ANALOGUE_GAIN_MODE:
+ break; /* We already handled this one above */
+
case controls::ANALOGUE_GAIN: {
RPiController::AgcAlgorithm *agc = dynamic_cast<RPiController::AgcAlgorithm *>(
controller_.getAlgorithm("agc"));
@@ -799,6 +845,13 @@ void IpaBase::applyControls(const ControlList &controls)
break;
}
+ /*
+ * Ignore manual analogue gain value when the auto gain
+ * algorithm is running.
+ */
+ if (agc->autoGainEnabled())
+ break;
+
agc->setFixedAnalogueGain(0, ctrl.second.get<float>());
libcameraMetadata_.set(controls::AnalogueGain,
@@ -855,6 +908,13 @@ void IpaBase::applyControls(const ControlList &controls)
break;
}
+ /*
+ * Ignore AE_EXPOSURE_MODE if the shutter or the gain
+ * are in auto mode.
+ */
+ if (agc->autoExposureEnabled() || agc->autoGainEnabled())
+ break;
+
int32_t idx = ctrl.second.get<int32_t>();
if (ExposureModeTable.count(idx)) {
agc->setExposureMode(ExposureModeTable.at(idx));
@@ -1334,9 +1394,19 @@ void IpaBase::reportMetadata(unsigned int ipaContext)
}
AgcPrepareStatus *agcPrepareStatus = rpiMetadata.getLocked<AgcPrepareStatus>("agc.prepare_status");
- if (agcPrepareStatus) {
- libcameraMetadata_.set(controls::AeLocked, agcPrepareStatus->locked);
+ if (agcPrepareStatus)
libcameraMetadata_.set(controls::DigitalGain, agcPrepareStatus->digitalGain);
+
+ RPiController::AgcAlgorithm *agc = dynamic_cast<RPiController::AgcAlgorithm *>(
+ controller_.getAlgorithm("agc"));
+ if (agc) {
+ if (!agc->autoExposureEnabled() && !agc->autoGainEnabled())
+ libcameraMetadata_.set(controls::AeState, controls::AeStateIdle);
+ else if (agcPrepareStatus)
+ libcameraMetadata_.set(controls::AeState,
+ agcPrepareStatus->locked
+ ? controls::AeStateConverged
+ : controls::AeStateSearching);
}
LuxStatus *luxStatus = rpiMetadata.getLocked<LuxStatus>("lux.status");
diff --git a/src/ipa/rpi/controller/agc_algorithm.h b/src/ipa/rpi/controller/agc_algorithm.h
index c9782857..fdaa10e6 100644
--- a/src/ipa/rpi/controller/agc_algorithm.h
+++ b/src/ipa/rpi/controller/agc_algorithm.h
@@ -30,8 +30,12 @@ public:
virtual void setMeteringMode(std::string const &meteringModeName) = 0;
virtual void setExposureMode(std::string const &exposureModeName) = 0;
virtual void setConstraintMode(std::string const &contraintModeName) = 0;
- virtual void enableAuto() = 0;
- virtual void disableAuto() = 0;
+ virtual void enableAutoExposure() = 0;
+ virtual void disableAutoExposure() = 0;
+ virtual bool autoExposureEnabled() const = 0;
+ virtual void enableAutoGain() = 0;
+ virtual void disableAutoGain() = 0;
+ virtual bool autoGainEnabled() const = 0;
virtual void setActiveChannels(const std::vector<unsigned int> &activeChannels) = 0;
};
diff --git a/src/ipa/rpi/controller/rpi/agc.cpp b/src/ipa/rpi/controller/rpi/agc.cpp
index c48fdf15..02bfdb4a 100644
--- a/src/ipa/rpi/controller/rpi/agc.cpp
+++ b/src/ipa/rpi/controller/rpi/agc.cpp
@@ -74,22 +74,62 @@ int Agc::checkChannel(unsigned int channelIndex) const
return 0;
}
-void Agc::disableAuto()
+void Agc::disableAutoExposure()
{
- LOG(RPiAgc, Debug) << "disableAuto";
+ LOG(RPiAgc, Debug) << "disableAutoExposure";
/* All channels are enabled/disabled together. */
for (auto &data : channelData_)
- data.channel.disableAuto();
+ data.channel.disableAutoExposure();
}
-void Agc::enableAuto()
+void Agc::enableAutoExposure()
{
- LOG(RPiAgc, Debug) << "enableAuto";
+ LOG(RPiAgc, Debug) << "enableAutoExposure";
/* All channels are enabled/disabled together. */
for (auto &data : channelData_)
- data.channel.enableAuto();
+ data.channel.enableAutoExposure();
+}
+
+bool Agc::autoExposureEnabled() const
+{
+ LOG(RPiAgc, Debug) << "autoExposureEnabled";
+
+ /*
+ * We always have at least one channel, and since all channels are
+ * enabled and disabled together we can simply check the first one.
+ */
+ return channelData_[0].channel.autoExposureEnabled();
+}
+
+void Agc::disableAutoGain()
+{
+ LOG(RPiAgc, Debug) << "disableAutoGain";
+
+ /* All channels are enabled/disabled together. */
+ for (auto &data : channelData_)
+ data.channel.disableAutoGain();
+}
+
+void Agc::enableAutoGain()
+{
+ LOG(RPiAgc, Debug) << "enableAutoGain";
+
+ /* All channels are enabled/disabled together. */
+ for (auto &data : channelData_)
+ data.channel.enableAutoGain();
+}
+
+bool Agc::autoGainEnabled() const
+{
+ LOG(RPiAgc, Debug) << "autoGainEnabled";
+
+ /*
+ * We always have at least one channel, and since all channels are
+ * enabled and disabled together we can simply check the first one.
+ */
+ return channelData_[0].channel.autoGainEnabled();
}
unsigned int Agc::getConvergenceFrames() const
diff --git a/src/ipa/rpi/controller/rpi/agc.h b/src/ipa/rpi/controller/rpi/agc.h
index 3aca000b..c3a940bf 100644
--- a/src/ipa/rpi/controller/rpi/agc.h
+++ b/src/ipa/rpi/controller/rpi/agc.h
@@ -40,8 +40,12 @@ public:
void setMeteringMode(std::string const &meteringModeName) override;
void setExposureMode(std::string const &exposureModeName) override;
void setConstraintMode(std::string const &contraintModeName) override;
- void enableAuto() override;
- void disableAuto() override;
+ void enableAutoExposure() override;
+ void disableAutoExposure() override;
+ bool autoExposureEnabled() const override;
+ void enableAutoGain() override;
+ void disableAutoGain() override;
+ bool autoGainEnabled() const override;
void switchMode(CameraMode const &cameraMode, Metadata *metadata) override;
void prepare(Metadata *imageMetadata) override;
void process(StatisticsPtr &stats, Metadata *imageMetadata) override;
diff --git a/src/ipa/rpi/controller/rpi/agc_channel.cpp b/src/ipa/rpi/controller/rpi/agc_channel.cpp
index 79c45973..a5562760 100644
--- a/src/ipa/rpi/controller/rpi/agc_channel.cpp
+++ b/src/ipa/rpi/controller/rpi/agc_channel.cpp
@@ -12,8 +12,9 @@
#include <libcamera/base/log.h>
+#include "libcamera/internal/vector.h"
+
#include "libipa/colours.h"
-#include "libipa/vector.h"
#include "../awb_status.h"
#include "../device_status.h"
@@ -319,18 +320,36 @@ int AgcChannel::read(const libcamera::YamlObject &params,
return 0;
}
-void AgcChannel::disableAuto()
+void AgcChannel::disableAutoExposure()
{
fixedExposureTime_ = status_.exposureTime;
- fixedAnalogueGain_ = status_.analogueGain;
}
-void AgcChannel::enableAuto()
+void AgcChannel::enableAutoExposure()
{
fixedExposureTime_ = 0s;
+}
+
+bool AgcChannel::autoExposureEnabled() const
+{
+ return fixedExposureTime_ == 0s;
+}
+
+void AgcChannel::disableAutoGain()
+{
+ fixedAnalogueGain_ = status_.analogueGain;
+}
+
+void AgcChannel::enableAutoGain()
+{
fixedAnalogueGain_ = 0;
}
+bool AgcChannel::autoGainEnabled() const
+{
+ return fixedAnalogueGain_ == 0;
+}
+
unsigned int AgcChannel::getConvergenceFrames() const
{
/*
@@ -682,7 +701,7 @@ static double computeInitialY(StatisticsPtr &stats, AwbStatus const &awb,
* Note that the weights are applied by the IPA to the statistics directly,
* before they are given to us here.
*/
- ipa::RGB<double> sum{ 0.0 };
+ RGB<double> sum{ 0.0 };
double pixelSum = 0;
for (unsigned int i = 0; i < stats->agcRegions.numRegions(); i++) {
auto &region = stats->agcRegions.get(i);
@@ -698,7 +717,7 @@ static double computeInitialY(StatisticsPtr &stats, AwbStatus const &awb,
/* Factor in the AWB correction if needed. */
if (stats->agcStatsPos == Statistics::AgcStatsPos::PreWb)
- sum *= ipa::RGB<double>{{ awb.gainR, awb.gainR, awb.gainB }};
+ sum *= RGB<double>{ { awb.gainR, awb.gainR, awb.gainB } };
double ySum = ipa::rec601LuminanceFromRGB(sum);
diff --git a/src/ipa/rpi/controller/rpi/agc_channel.h b/src/ipa/rpi/controller/rpi/agc_channel.h
index 734e5efd..fa697e6f 100644
--- a/src/ipa/rpi/controller/rpi/agc_channel.h
+++ b/src/ipa/rpi/controller/rpi/agc_channel.h
@@ -96,8 +96,12 @@ public:
void setMeteringMode(std::string const &meteringModeName);
void setExposureMode(std::string const &exposureModeName);
void setConstraintMode(std::string const &contraintModeName);
- void enableAuto();
- void disableAuto();
+ void enableAutoExposure();
+ void disableAutoExposure();
+ bool autoExposureEnabled() const;
+ void enableAutoGain();
+ void disableAutoGain();
+ bool autoGainEnabled() const;
void switchMode(CameraMode const &cameraMode, Metadata *metadata);
void prepare(Metadata *imageMetadata);
void process(StatisticsPtr &stats, DeviceStatus const &deviceStatus, Metadata *imageMetadata,
diff --git a/src/ipa/rpi/pisp/data/imx219.json b/src/ipa/rpi/pisp/data/imx219.json
new file mode 100644
index 00000000..5254e60d
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx219.json
@@ -0,0 +1,1187 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 21965,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 800,
+ "reference_Y": 11460
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 3.661
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 239,
+ "slope": 0.00766
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2860.0, 0.9514, 0.4156,
+ 2960.0, 0.9289, 0.4372,
+ 3603.0, 0.8305, 0.5251,
+ 4650.0, 0.6756, 0.6433,
+ 5858.0, 0.6193, 0.6807,
+ 7580.0, 0.5019, 0.7495
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.03392,
+ "transverse_neg": 0.034
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 10.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 10.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 1.418, 1.428, 1.446, 1.454, 1.454, 1.451, 1.441, 1.428, 1.411, 1.391, 1.371, 1.349, 1.334, 1.327, 1.325, 1.325, 1.325, 1.325, 1.331, 1.344, 1.363, 1.383, 1.402, 1.418, 1.433, 1.446, 1.452, 1.453, 1.446, 1.435, 1.415, 1.404,
+ 1.428, 1.442, 1.453, 1.455, 1.454, 1.447, 1.431, 1.413, 1.392, 1.371, 1.349, 1.331, 1.318, 1.307, 1.299, 1.299, 1.299, 1.303, 1.313, 1.328, 1.344, 1.363, 1.383, 1.404, 1.424, 1.439, 1.451, 1.453, 1.453, 1.445, 1.431, 1.415,
+ 1.436, 1.448, 1.453, 1.455, 1.449, 1.435, 1.415, 1.393, 1.369, 1.345, 1.322, 1.303, 1.287, 1.276, 1.269, 1.268, 1.268, 1.272, 1.283, 1.298, 1.316, 1.337, 1.362, 1.384, 1.406, 1.427, 1.444, 1.454, 1.454, 1.452, 1.438, 1.426,
+ 1.441, 1.451, 1.454, 1.451, 1.439, 1.422, 1.396, 1.372, 1.345, 1.319, 1.295, 1.274, 1.257, 1.245, 1.239, 1.238, 1.238, 1.245, 1.255, 1.269, 1.289, 1.311, 1.336, 1.362, 1.388, 1.412, 1.433, 1.448, 1.454, 1.453, 1.445, 1.433,
+ 1.445, 1.452, 1.452, 1.445, 1.428, 1.405, 1.379, 1.349, 1.319, 1.295, 1.269, 1.247, 1.229, 1.219, 1.212, 1.211, 1.211, 1.217, 1.228, 1.242, 1.261, 1.286, 1.311, 1.339, 1.367, 1.395, 1.419, 1.439, 1.452, 1.452, 1.451, 1.436,
+ 1.448, 1.451, 1.451, 1.435, 1.414, 1.387, 1.358, 1.327, 1.296, 1.269, 1.245, 1.222, 1.205, 1.193, 1.187, 1.185, 1.186, 1.191, 1.202, 1.217, 1.237, 1.261, 1.286, 1.316, 1.346, 1.378, 1.404, 1.429, 1.445, 1.451, 1.451, 1.442,
+ 1.448, 1.448, 1.445, 1.427, 1.401, 1.371, 1.338, 1.306, 1.274, 1.245, 1.222, 1.199, 1.183, 1.171, 1.164, 1.162, 1.162, 1.168, 1.181, 1.194, 1.215, 1.237, 1.264, 1.294, 1.325, 1.359, 1.389, 1.418, 1.441, 1.449, 1.449, 1.443,
+ 1.449, 1.448, 1.438, 1.415, 1.387, 1.352, 1.318, 1.284, 1.252, 1.223, 1.199, 1.179, 1.161, 1.149, 1.142, 1.142, 1.142, 1.149, 1.159, 1.174, 1.194, 1.215, 1.242, 1.272, 1.307, 1.341, 1.376, 1.405, 1.431, 1.447, 1.447, 1.444,
+ 1.448, 1.447, 1.431, 1.405, 1.373, 1.336, 1.301, 1.264, 1.234, 1.204, 1.179, 1.161, 1.143, 1.131, 1.124, 1.123, 1.123, 1.131, 1.141, 1.156, 1.174, 1.197, 1.224, 1.254, 1.288, 1.324, 1.361, 1.394, 1.423, 1.442, 1.444, 1.444,
+ 1.447, 1.442, 1.424, 1.393, 1.359, 1.322, 1.284, 1.248, 1.216, 1.187, 1.162, 1.143, 1.128, 1.115, 1.109, 1.108, 1.108, 1.113, 1.124, 1.139, 1.156, 1.179, 1.206, 1.236, 1.272, 1.309, 1.347, 1.382, 1.411, 1.435, 1.443, 1.444,
+ 1.444, 1.439, 1.417, 1.383, 1.347, 1.308, 1.271, 1.233, 1.201, 1.173, 1.147, 1.128, 1.115, 1.101, 1.095, 1.093, 1.093, 1.099, 1.111, 1.124, 1.142, 1.165, 1.191, 1.222, 1.258, 1.296, 1.333, 1.372, 1.404, 1.429, 1.441, 1.442,
+ 1.443, 1.434, 1.409, 1.375, 1.336, 1.297, 1.257, 1.221, 1.189, 1.159, 1.136, 1.116, 1.101, 1.092, 1.083, 1.082, 1.082, 1.089, 1.099, 1.111, 1.131, 1.153, 1.181, 1.211, 1.246, 1.284, 1.324, 1.361, 1.398, 1.425, 1.441, 1.441,
+ 1.443, 1.431, 1.405, 1.369, 1.328, 1.287, 1.247, 1.211, 1.178, 1.149, 1.126, 1.107, 1.092, 1.083, 1.075, 1.073, 1.073, 1.082, 1.089, 1.101, 1.121, 1.143, 1.171, 1.201, 1.237, 1.274, 1.314, 1.353, 1.389, 1.421, 1.439, 1.441,
+ 1.442, 1.429, 1.401, 1.364, 1.323, 1.279, 1.241, 1.205, 1.172, 1.144, 1.119, 1.101, 1.085, 1.075, 1.071, 1.067, 1.067, 1.073, 1.082, 1.096, 1.114, 1.136, 1.163, 1.194, 1.229, 1.268, 1.308, 1.348, 1.387, 1.417, 1.439, 1.439,
+ 1.443, 1.429, 1.399, 1.362, 1.319, 1.276, 1.237, 1.199, 1.169, 1.141, 1.115, 1.096, 1.081, 1.071, 1.066, 1.063, 1.066, 1.068, 1.078, 1.092, 1.109, 1.132, 1.159, 1.191, 1.226, 1.263, 1.304, 1.346, 1.384, 1.416, 1.438, 1.439,
+ 1.443, 1.428, 1.399, 1.361, 1.319, 1.276, 1.236, 1.199, 1.167, 1.139, 1.115, 1.096, 1.081, 1.071, 1.064, 1.062, 1.062, 1.067, 1.077, 1.091, 1.109, 1.131, 1.158, 1.189, 1.224, 1.262, 1.303, 1.345, 1.383, 1.416, 1.438, 1.439,
+ 1.444, 1.429, 1.399, 1.361, 1.319, 1.276, 1.236, 1.199, 1.167, 1.139, 1.116, 1.096, 1.081, 1.071, 1.064, 1.063, 1.063, 1.067, 1.077, 1.091, 1.109, 1.131, 1.159, 1.189, 1.224, 1.262, 1.303, 1.345, 1.384, 1.416, 1.438, 1.441,
+ 1.444, 1.431, 1.402, 1.364, 1.322, 1.281, 1.239, 1.202, 1.171, 1.142, 1.118, 1.099, 1.084, 1.073, 1.069, 1.065, 1.067, 1.071, 1.079, 1.094, 1.112, 1.135, 1.163, 1.191, 1.227, 1.265, 1.307, 1.348, 1.386, 1.418, 1.438, 1.441,
+ 1.447, 1.433, 1.406, 1.369, 1.328, 1.286, 1.244, 1.209, 1.177, 1.148, 1.124, 1.105, 1.089, 1.081, 1.073, 1.071, 1.071, 1.079, 1.085, 1.099, 1.118, 1.141, 1.168, 1.198, 1.233, 1.271, 1.312, 1.352, 1.391, 1.422, 1.441, 1.444,
+ 1.448, 1.438, 1.412, 1.376, 1.335, 1.295, 1.255, 1.218, 1.186, 1.157, 1.134, 1.113, 1.098, 1.089, 1.081, 1.079, 1.079, 1.085, 1.094, 1.107, 1.125, 1.149, 1.175, 1.207, 1.242, 1.281, 1.319, 1.359, 1.396, 1.425, 1.445, 1.447,
+ 1.449, 1.443, 1.417, 1.384, 1.345, 1.305, 1.266, 1.229, 1.197, 1.169, 1.145, 1.124, 1.111, 1.098, 1.091, 1.089, 1.089, 1.094, 1.107, 1.118, 1.137, 1.159, 1.187, 1.218, 1.253, 1.291, 1.329, 1.369, 1.405, 1.433, 1.447, 1.449,
+ 1.453, 1.449, 1.425, 1.395, 1.358, 1.318, 1.281, 1.244, 1.211, 1.183, 1.158, 1.138, 1.124, 1.111, 1.104, 1.103, 1.103, 1.107, 1.118, 1.133, 1.151, 1.174, 1.201, 1.232, 1.267, 1.304, 1.344, 1.379, 1.413, 1.437, 1.449, 1.449,
+ 1.457, 1.453, 1.434, 1.405, 1.371, 1.335, 1.297, 1.261, 1.229, 1.199, 1.174, 1.155, 1.138, 1.126, 1.119, 1.117, 1.117, 1.124, 1.133, 1.149, 1.167, 1.189, 1.217, 1.248, 1.284, 1.319, 1.357, 1.393, 1.423, 1.444, 1.452, 1.452,
+ 1.459, 1.457, 1.443, 1.418, 1.385, 1.352, 1.314, 1.279, 1.246, 1.218, 1.193, 1.174, 1.155, 1.144, 1.137, 1.136, 1.136, 1.141, 1.151, 1.167, 1.187, 1.208, 1.236, 1.267, 1.301, 1.337, 1.373, 1.405, 1.434, 1.453, 1.455, 1.455,
+ 1.461, 1.461, 1.454, 1.429, 1.401, 1.369, 1.333, 1.301, 1.269, 1.239, 1.216, 1.193, 1.177, 1.165, 1.158, 1.156, 1.156, 1.161, 1.171, 1.187, 1.208, 1.229, 1.258, 1.288, 1.321, 1.356, 1.389, 1.419, 1.445, 1.459, 1.459, 1.455,
+ 1.462, 1.462, 1.459, 1.442, 1.418, 1.386, 1.354, 1.322, 1.292, 1.262, 1.239, 1.216, 1.199, 1.187, 1.179, 1.178, 1.178, 1.184, 1.194, 1.208, 1.229, 1.253, 1.279, 1.309, 1.342, 1.375, 1.406, 1.433, 1.452, 1.464, 1.464, 1.454,
+ 1.461, 1.465, 1.465, 1.454, 1.431, 1.405, 1.376, 1.346, 1.316, 1.288, 1.262, 1.242, 1.223, 1.212, 1.205, 1.203, 1.203, 1.208, 1.218, 1.234, 1.253, 1.279, 1.305, 1.334, 1.363, 1.393, 1.421, 1.445, 1.461, 1.465, 1.464, 1.452,
+ 1.459, 1.465, 1.466, 1.461, 1.443, 1.421, 1.395, 1.368, 1.341, 1.316, 1.288, 1.268, 1.251, 1.238, 1.232, 1.229, 1.229, 1.235, 1.246, 1.261, 1.279, 1.305, 1.331, 1.356, 1.385, 1.411, 1.435, 1.454, 1.466, 1.466, 1.464, 1.451,
+ 1.454, 1.465, 1.467, 1.466, 1.456, 1.436, 1.414, 1.389, 1.367, 1.341, 1.318, 1.297, 1.279, 1.269, 1.261, 1.259, 1.259, 1.265, 1.274, 1.288, 1.308, 1.331, 1.355, 1.381, 1.404, 1.428, 1.447, 1.462, 1.468, 1.467, 1.457, 1.445,
+ 1.447, 1.459, 1.466, 1.467, 1.463, 1.451, 1.434, 1.411, 1.389, 1.367, 1.344, 1.325, 1.311, 1.297, 1.292, 1.289, 1.289, 1.295, 1.303, 1.317, 1.336, 1.356, 1.381, 1.402, 1.423, 1.441, 1.457, 1.467, 1.468, 1.463, 1.451, 1.439,
+ 1.438, 1.449, 1.462, 1.464, 1.464, 1.459, 1.446, 1.429, 1.408, 1.388, 1.369, 1.353, 1.339, 1.329, 1.321, 1.321, 1.321, 1.325, 1.333, 1.348, 1.362, 1.379, 1.401, 1.421, 1.439, 1.454, 1.463, 1.465, 1.465, 1.456, 1.442, 1.427,
+ 1.429, 1.439, 1.454, 1.464, 1.464, 1.459, 1.449, 1.435, 1.421, 1.402, 1.385, 1.369, 1.353, 1.341, 1.338, 1.337, 1.337, 1.338, 1.348, 1.362, 1.378, 1.395, 1.411, 1.429, 1.445, 1.455, 1.463, 1.464, 1.457, 1.447, 1.427, 1.419
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 2.163, 2.177, 2.194, 2.196, 2.197, 2.192, 2.181, 2.161, 2.139, 2.113, 2.088, 2.063, 2.047, 2.041, 2.036, 2.036, 2.036, 2.037, 2.046, 2.059, 2.083, 2.113, 2.135, 2.158, 2.181, 2.193, 2.205, 2.205, 2.202, 2.189, 2.171, 2.158,
+ 2.169, 2.184, 2.195, 2.196, 2.194, 2.182, 2.163, 2.141, 2.116, 2.088, 2.063, 2.042, 2.025, 2.013, 2.004, 2.004, 2.006, 2.011, 2.022, 2.038, 2.059, 2.083, 2.113, 2.137, 2.162, 2.182, 2.197, 2.204, 2.203, 2.199, 2.183, 2.171,
+ 2.177, 2.187, 2.193, 2.193, 2.184, 2.166, 2.142, 2.116, 2.087, 2.057, 2.033, 2.008, 1.991, 1.977, 1.969, 1.969, 1.969, 1.975, 1.988, 2.006, 2.028, 2.055, 2.083, 2.114, 2.139, 2.166, 2.187, 2.199, 2.202, 2.201, 2.189, 2.179,
+ 2.183, 2.189, 2.192, 2.186, 2.172, 2.146, 2.119, 2.089, 2.058, 2.026, 2.001, 1.975, 1.956, 1.942, 1.934, 1.932, 1.933, 1.941, 1.955, 1.971, 1.995, 2.023, 2.055, 2.084, 2.119, 2.146, 2.171, 2.191, 2.201, 2.201, 2.194, 2.183,
+ 2.186, 2.189, 2.189, 2.177, 2.158, 2.127, 2.096, 2.059, 2.026, 1.998, 1.969, 1.944, 1.925, 1.911, 1.901, 1.901, 1.903, 1.912, 1.924, 1.941, 1.964, 1.995, 2.023, 2.058, 2.091, 2.126, 2.155, 2.181, 2.195, 2.199, 2.198, 2.188,
+ 2.189, 2.189, 2.184, 2.166, 2.138, 2.108, 2.071, 2.036, 1.999, 1.969, 1.941, 1.914, 1.894, 1.879, 1.871, 1.871, 1.872, 1.879, 1.893, 1.913, 1.937, 1.964, 1.997, 2.029, 2.065, 2.104, 2.137, 2.169, 2.187, 2.199, 2.199, 2.189,
+ 2.187, 2.186, 2.176, 2.154, 2.123, 2.087, 2.044, 2.011, 1.974, 1.941, 1.913, 1.887, 1.868, 1.852, 1.844, 1.843, 1.844, 1.852, 1.866, 1.885, 1.912, 1.937, 1.972, 2.004, 2.042, 2.081, 2.119, 2.154, 2.179, 2.195, 2.196, 2.193,
+ 2.187, 2.181, 2.167, 2.141, 2.103, 2.062, 2.023, 1.984, 1.947, 1.916, 1.887, 1.864, 1.841, 1.828, 1.821, 1.819, 1.819, 1.828, 1.842, 1.862, 1.885, 1.913, 1.945, 1.982, 2.021, 2.058, 2.102, 2.137, 2.168, 2.192, 2.193, 2.193,
+ 2.182, 2.181, 2.161, 2.127, 2.083, 2.044, 2.002, 1.961, 1.924, 1.891, 1.864, 1.841, 1.819, 1.806, 1.797, 1.797, 1.797, 1.805, 1.819, 1.841, 1.862, 1.892, 1.924, 1.959, 1.999, 2.041, 2.082, 2.123, 2.161, 2.185, 2.191, 2.192,
+ 2.182, 2.172, 2.149, 2.112, 2.069, 2.026, 1.982, 1.941, 1.904, 1.871, 1.841, 1.819, 1.799, 1.785, 1.776, 1.776, 1.778, 1.784, 1.798, 1.819, 1.841, 1.869, 1.903, 1.939, 1.977, 2.021, 2.067, 2.108, 2.145, 2.174, 2.189, 2.191,
+ 2.181, 2.167, 2.139, 2.098, 2.056, 2.006, 1.965, 1.921, 1.883, 1.851, 1.823, 1.799, 1.783, 1.767, 1.759, 1.758, 1.758, 1.767, 1.783, 1.798, 1.825, 1.851, 1.883, 1.919, 1.959, 2.004, 2.049, 2.094, 2.136, 2.167, 2.187, 2.189,
+ 2.179, 2.163, 2.131, 2.087, 2.041, 1.994, 1.948, 1.907, 1.871, 1.835, 1.806, 1.784, 1.767, 1.754, 1.744, 1.742, 1.742, 1.752, 1.767, 1.783, 1.808, 1.838, 1.869, 1.905, 1.945, 1.989, 2.036, 2.083, 2.128, 2.159, 2.183, 2.187,
+ 2.178, 2.161, 2.126, 2.082, 2.032, 1.982, 1.936, 1.896, 1.857, 1.823, 1.795, 1.772, 1.754, 1.744, 1.732, 1.731, 1.732, 1.742, 1.752, 1.771, 1.796, 1.824, 1.857, 1.895, 1.934, 1.977, 2.024, 2.071, 2.116, 2.154, 2.181, 2.185,
+ 2.177, 2.157, 2.121, 2.074, 2.025, 1.973, 1.927, 1.886, 1.849, 1.815, 1.787, 1.765, 1.746, 1.732, 1.725, 1.722, 1.724, 1.732, 1.743, 1.762, 1.786, 1.813, 1.848, 1.886, 1.924, 1.969, 2.017, 2.066, 2.111, 2.153, 2.179, 2.183,
+ 2.177, 2.155, 2.119, 2.072, 2.022, 1.969, 1.925, 1.881, 1.844, 1.811, 1.782, 1.758, 1.739, 1.725, 1.721, 1.717, 1.721, 1.724, 1.739, 1.757, 1.781, 1.809, 1.842, 1.879, 1.921, 1.965, 2.012, 2.062, 2.108, 2.151, 2.179, 2.182,
+ 2.177, 2.156, 2.121, 2.071, 2.021, 1.968, 1.922, 1.879, 1.842, 1.811, 1.781, 1.757, 1.739, 1.725, 1.717, 1.715, 1.715, 1.723, 1.737, 1.757, 1.779, 1.808, 1.841, 1.877, 1.918, 1.963, 2.011, 2.061, 2.107, 2.148, 2.179, 2.183,
+ 2.178, 2.157, 2.121, 2.072, 2.021, 1.969, 1.922, 1.881, 1.842, 1.811, 1.781, 1.758, 1.739, 1.726, 1.718, 1.717, 1.718, 1.723, 1.737, 1.757, 1.781, 1.809, 1.841, 1.877, 1.918, 1.964, 2.012, 2.061, 2.108, 2.149, 2.179, 2.183,
+ 2.178, 2.159, 2.124, 2.074, 2.024, 1.974, 1.926, 1.885, 1.847, 1.813, 1.784, 1.762, 1.743, 1.731, 1.725, 1.719, 1.723, 1.728, 1.742, 1.762, 1.785, 1.814, 1.847, 1.881, 1.922, 1.966, 2.017, 2.065, 2.109, 2.151, 2.181, 2.184,
+ 2.181, 2.163, 2.129, 2.082, 2.032, 1.982, 1.934, 1.891, 1.854, 1.822, 1.794, 1.769, 1.751, 1.739, 1.731, 1.727, 1.728, 1.739, 1.747, 1.768, 1.791, 1.821, 1.852, 1.889, 1.929, 1.972, 2.022, 2.071, 2.117, 2.155, 2.182, 2.189,
+ 2.184, 2.169, 2.135, 2.091, 2.041, 1.994, 1.947, 1.902, 1.865, 1.833, 1.805, 1.779, 1.762, 1.751, 1.739, 1.739, 1.739, 1.747, 1.761, 1.779, 1.803, 1.831, 1.864, 1.898, 1.941, 1.984, 2.033, 2.079, 2.123, 2.163, 2.188, 2.193,
+ 2.185, 2.174, 2.142, 2.099, 2.054, 2.004, 1.959, 1.917, 1.879, 1.846, 1.819, 1.794, 1.779, 1.762, 1.754, 1.753, 1.753, 1.761, 1.777, 1.793, 1.816, 1.843, 1.877, 1.913, 1.953, 1.995, 2.043, 2.091, 2.135, 2.169, 2.191, 2.196,
+ 2.191, 2.179, 2.154, 2.118, 2.069, 2.023, 1.977, 1.935, 1.898, 1.865, 1.834, 1.813, 1.794, 1.779, 1.769, 1.769, 1.769, 1.777, 1.793, 1.809, 1.834, 1.863, 1.895, 1.929, 1.972, 2.015, 2.061, 2.105, 2.145, 2.178, 2.195, 2.199,
+ 2.197, 2.188, 2.166, 2.129, 2.087, 2.041, 1.997, 1.956, 1.918, 1.884, 1.855, 1.834, 1.813, 1.798, 1.788, 1.788, 1.788, 1.796, 1.809, 1.832, 1.853, 1.881, 1.912, 1.949, 1.991, 2.033, 2.076, 2.119, 2.159, 2.187, 2.202, 2.205,
+ 2.202, 2.197, 2.176, 2.148, 2.106, 2.065, 2.021, 1.979, 1.943, 1.909, 1.879, 1.855, 1.835, 1.819, 1.811, 1.811, 1.811, 1.818, 1.832, 1.853, 1.875, 1.904, 1.937, 1.972, 2.013, 2.055, 2.097, 2.138, 2.175, 2.197, 2.206, 2.207,
+ 2.205, 2.202, 2.189, 2.162, 2.126, 2.084, 2.044, 2.004, 1.967, 1.935, 1.907, 1.879, 1.861, 1.845, 1.838, 1.835, 1.835, 1.844, 1.855, 1.875, 1.902, 1.928, 1.961, 1.998, 2.033, 2.076, 2.118, 2.155, 2.186, 2.205, 2.208, 2.208,
+ 2.207, 2.205, 2.195, 2.175, 2.145, 2.108, 2.069, 2.029, 1.996, 1.963, 1.934, 1.908, 1.885, 1.872, 1.864, 1.863, 1.863, 1.869, 1.884, 1.902, 1.928, 1.956, 1.989, 2.023, 2.059, 2.099, 2.137, 2.172, 2.199, 2.212, 2.213, 2.209,
+ 2.207, 2.207, 2.203, 2.188, 2.162, 2.128, 2.094, 2.058, 2.023, 1.993, 1.963, 1.936, 1.916, 1.899, 1.893, 1.892, 1.893, 1.899, 1.912, 1.929, 1.956, 1.986, 2.016, 2.049, 2.084, 2.121, 2.156, 2.187, 2.208, 2.215, 2.215, 2.208,
+ 2.205, 2.208, 2.209, 2.199, 2.178, 2.149, 2.117, 2.083, 2.052, 2.023, 1.993, 1.967, 1.947, 1.933, 1.925, 1.922, 1.922, 1.929, 1.943, 1.961, 1.986, 2.015, 2.045, 2.076, 2.109, 2.143, 2.173, 2.198, 2.214, 2.218, 2.216, 2.205,
+ 2.201, 2.207, 2.211, 2.211, 2.193, 2.168, 2.141, 2.112, 2.082, 2.052, 2.025, 2.001, 1.981, 1.967, 1.959, 1.958, 1.958, 1.967, 1.975, 1.992, 2.018, 2.046, 2.076, 2.105, 2.136, 2.163, 2.189, 2.208, 2.217, 2.217, 2.212, 2.203,
+ 2.194, 2.204, 2.212, 2.213, 2.203, 2.187, 2.165, 2.139, 2.112, 2.083, 2.055, 2.034, 2.016, 2.001, 1.993, 1.993, 1.994, 1.999, 2.011, 2.027, 2.051, 2.077, 2.105, 2.133, 2.158, 2.181, 2.202, 2.217, 2.218, 2.218, 2.206, 2.193,
+ 2.185, 2.198, 2.213, 2.214, 2.212, 2.201, 2.184, 2.163, 2.135, 2.111, 2.089, 2.071, 2.052, 2.039, 2.032, 2.031, 2.031, 2.036, 2.048, 2.065, 2.085, 2.106, 2.131, 2.155, 2.178, 2.198, 2.212, 2.219, 2.219, 2.215, 2.201, 2.185,
+ 2.176, 2.191, 2.208, 2.217, 2.216, 2.205, 2.195, 2.177, 2.156, 2.133, 2.109, 2.089, 2.071, 2.055, 2.053, 2.053, 2.053, 2.057, 2.065, 2.085, 2.105, 2.123, 2.149, 2.171, 2.192, 2.205, 2.217, 2.219, 2.219, 2.202, 2.185, 2.181
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.518, 2.513, 2.503, 2.496, 2.488, 2.484, 2.485, 2.485, 2.486, 2.487, 2.487, 2.489, 2.494, 2.496, 2.496, 2.497, 2.499, 2.499, 2.496, 2.495, 2.492, 2.491, 2.491, 2.491, 2.492, 2.493, 2.495, 2.501, 2.508, 2.516, 2.528, 2.533,
+ 2.515, 2.508, 2.495, 2.487, 2.483, 2.481, 2.482, 2.483, 2.485, 2.487, 2.489, 2.491, 2.495, 2.497, 2.498, 2.501, 2.502, 2.502, 2.499, 2.496, 2.494, 2.491, 2.491, 2.489, 2.489, 2.491, 2.493, 2.496, 2.502, 2.511, 2.521, 2.531,
+ 2.507, 2.495, 2.486, 2.482, 2.478, 2.477, 2.481, 2.482, 2.484, 2.488, 2.491, 2.495, 2.499, 2.502, 2.506, 2.508, 2.509, 2.508, 2.505, 2.501, 2.497, 2.493, 2.491, 2.489, 2.488, 2.489, 2.489, 2.492, 2.496, 2.501, 2.511, 2.524,
+ 2.501, 2.487, 2.482, 2.481, 2.478, 2.477, 2.481, 2.483, 2.487, 2.491, 2.501, 2.503, 2.509, 2.511, 2.518, 2.519, 2.519, 2.519, 2.516, 2.509, 2.504, 2.498, 2.495, 2.493, 2.489, 2.489, 2.488, 2.489, 2.492, 2.498, 2.505, 2.523,
+ 2.499, 2.484, 2.481, 2.476, 2.476, 2.476, 2.481, 2.485, 2.492, 2.501, 2.509, 2.514, 2.519, 2.524, 2.528, 2.531, 2.533, 2.533, 2.525, 2.519, 2.514, 2.507, 2.501, 2.497, 2.493, 2.489, 2.489, 2.488, 2.491, 2.494, 2.501, 2.514,
+ 2.497, 2.483, 2.478, 2.476, 2.476, 2.478, 2.482, 2.491, 2.499, 2.509, 2.515, 2.522, 2.528, 2.535, 2.539, 2.541, 2.543, 2.542, 2.539, 2.529, 2.522, 2.516, 2.507, 2.502, 2.497, 2.491, 2.489, 2.488, 2.489, 2.492, 2.498, 2.514,
+ 2.492, 2.479, 2.476, 2.475, 2.476, 2.481, 2.488, 2.496, 2.505, 2.516, 2.524, 2.532, 2.541, 2.545, 2.552, 2.554, 2.554, 2.554, 2.548, 2.541, 2.532, 2.522, 2.516, 2.507, 2.502, 2.494, 2.491, 2.489, 2.489, 2.492, 2.494, 2.511,
+ 2.491, 2.479, 2.476, 2.477, 2.478, 2.482, 2.491, 2.502, 2.514, 2.524, 2.533, 2.543, 2.548, 2.555, 2.562, 2.566, 2.567, 2.562, 2.557, 2.551, 2.541, 2.531, 2.523, 2.512, 2.506, 2.498, 2.493, 2.491, 2.491, 2.491, 2.493, 2.507,
+ 2.489, 2.478, 2.476, 2.477, 2.481, 2.485, 2.494, 2.507, 2.517, 2.529, 2.542, 2.548, 2.557, 2.563, 2.567, 2.571, 2.572, 2.571, 2.565, 2.558, 2.549, 2.538, 2.528, 2.521, 2.509, 2.501, 2.494, 2.492, 2.491, 2.491, 2.491, 2.505,
+ 2.488, 2.478, 2.477, 2.478, 2.482, 2.489, 2.499, 2.509, 2.523, 2.538, 2.548, 2.556, 2.563, 2.568, 2.573, 2.577, 2.578, 2.577, 2.573, 2.564, 2.555, 2.543, 2.535, 2.524, 2.515, 2.504, 2.495, 2.492, 2.489, 2.488, 2.489, 2.501,
+ 2.486, 2.476, 2.475, 2.477, 2.483, 2.491, 2.503, 2.515, 2.529, 2.542, 2.553, 2.562, 2.568, 2.574, 2.581, 2.583, 2.584, 2.581, 2.578, 2.571, 2.562, 2.551, 2.539, 2.531, 2.517, 2.508, 2.497, 2.492, 2.488, 2.487, 2.489, 2.498,
+ 2.486, 2.476, 2.475, 2.479, 2.484, 2.492, 2.504, 2.519, 2.533, 2.544, 2.557, 2.566, 2.573, 2.581, 2.584, 2.588, 2.588, 2.586, 2.581, 2.575, 2.567, 2.555, 2.546, 2.534, 2.517, 2.509, 2.499, 2.492, 2.489, 2.485, 2.488, 2.497,
+ 2.487, 2.476, 2.476, 2.479, 2.486, 2.494, 2.506, 2.521, 2.535, 2.549, 2.559, 2.571, 2.578, 2.583, 2.589, 2.591, 2.591, 2.591, 2.587, 2.579, 2.571, 2.559, 2.551, 2.538, 2.523, 2.513, 2.503, 2.493, 2.489, 2.486, 2.487, 2.499,
+ 2.486, 2.475, 2.475, 2.479, 2.486, 2.495, 2.509, 2.525, 2.541, 2.555, 2.563, 2.573, 2.582, 2.588, 2.591, 2.594, 2.595, 2.592, 2.591, 2.585, 2.574, 2.564, 2.552, 2.541, 2.525, 2.514, 2.503, 2.493, 2.489, 2.486, 2.486, 2.501,
+ 2.486, 2.475, 2.475, 2.479, 2.488, 2.497, 2.509, 2.526, 2.542, 2.556, 2.564, 2.575, 2.584, 2.591, 2.595, 2.596, 2.597, 2.595, 2.592, 2.587, 2.577, 2.568, 2.554, 2.542, 2.527, 2.515, 2.504, 2.494, 2.491, 2.487, 2.487, 2.505,
+ 2.484, 2.476, 2.475, 2.478, 2.488, 2.498, 2.509, 2.526, 2.542, 2.555, 2.565, 2.576, 2.584, 2.589, 2.595, 2.598, 2.598, 2.597, 2.593, 2.587, 2.578, 2.569, 2.556, 2.543, 2.528, 2.515, 2.504, 2.494, 2.489, 2.485, 2.485, 2.501,
+ 2.484, 2.475, 2.475, 2.478, 2.489, 2.498, 2.509, 2.524, 2.539, 2.553, 2.565, 2.576, 2.584, 2.589, 2.594, 2.597, 2.597, 2.596, 2.593, 2.587, 2.577, 2.569, 2.555, 2.543, 2.529, 2.515, 2.503, 2.496, 2.491, 2.485, 2.486, 2.497,
+ 2.484, 2.474, 2.474, 2.479, 2.487, 2.497, 2.509, 2.523, 2.539, 2.551, 2.563, 2.574, 2.581, 2.587, 2.592, 2.595, 2.596, 2.595, 2.591, 2.584, 2.574, 2.567, 2.554, 2.541, 2.526, 2.514, 2.503, 2.495, 2.489, 2.485, 2.486, 2.497,
+ 2.484, 2.475, 2.475, 2.478, 2.485, 2.494, 2.507, 2.522, 2.535, 2.546, 2.559, 2.568, 2.579, 2.584, 2.589, 2.592, 2.593, 2.592, 2.588, 2.579, 2.571, 2.562, 2.551, 2.537, 2.524, 2.514, 2.501, 2.493, 2.489, 2.486, 2.487, 2.498,
+ 2.485, 2.476, 2.475, 2.477, 2.485, 2.491, 2.506, 2.519, 2.531, 2.544, 2.555, 2.563, 2.571, 2.581, 2.584, 2.589, 2.589, 2.588, 2.583, 2.576, 2.566, 2.555, 2.546, 2.534, 2.522, 2.511, 2.499, 2.491, 2.488, 2.486, 2.487, 2.502,
+ 2.487, 2.477, 2.475, 2.477, 2.483, 2.489, 2.503, 2.515, 2.525, 2.541, 2.551, 2.559, 2.567, 2.573, 2.579, 2.582, 2.583, 2.582, 2.576, 2.569, 2.562, 2.549, 2.542, 2.527, 2.518, 2.505, 2.497, 2.491, 2.489, 2.487, 2.487, 2.502,
+ 2.487, 2.478, 2.475, 2.477, 2.482, 2.489, 2.497, 2.512, 2.522, 2.536, 2.544, 2.551, 2.562, 2.566, 2.573, 2.578, 2.578, 2.575, 2.571, 2.564, 2.556, 2.548, 2.536, 2.523, 2.513, 2.503, 2.493, 2.489, 2.487, 2.486, 2.487, 2.502,
+ 2.488, 2.479, 2.477, 2.478, 2.482, 2.488, 2.496, 2.505, 2.516, 2.528, 2.538, 2.547, 2.553, 2.561, 2.565, 2.569, 2.569, 2.568, 2.564, 2.558, 2.549, 2.541, 2.531, 2.517, 2.509, 2.499, 2.492, 2.488, 2.486, 2.484, 2.486, 2.503,
+ 2.492, 2.482, 2.479, 2.479, 2.482, 2.487, 2.491, 2.501, 2.512, 2.523, 2.531, 2.541, 2.549, 2.552, 2.558, 2.561, 2.562, 2.559, 2.558, 2.552, 2.542, 2.535, 2.525, 2.514, 2.505, 2.497, 2.491, 2.486, 2.485, 2.484, 2.487, 2.503,
+ 2.495, 2.483, 2.479, 2.479, 2.482, 2.487, 2.491, 2.498, 2.508, 2.515, 2.526, 2.533, 2.541, 2.547, 2.551, 2.554, 2.555, 2.554, 2.552, 2.541, 2.537, 2.527, 2.519, 2.507, 2.502, 2.495, 2.488, 2.485, 2.484, 2.485, 2.488, 2.503,
+ 2.499, 2.485, 2.483, 2.481, 2.482, 2.486, 2.489, 2.494, 2.504, 2.511, 2.519, 2.527, 2.531, 2.539, 2.542, 2.546, 2.546, 2.545, 2.539, 2.535, 2.527, 2.522, 2.509, 2.505, 2.497, 2.491, 2.486, 2.485, 2.485, 2.487, 2.491, 2.506,
+ 2.499, 2.489, 2.483, 2.481, 2.481, 2.483, 2.488, 2.491, 2.499, 2.506, 2.512, 2.519, 2.524, 2.529, 2.535, 2.537, 2.536, 2.534, 2.532, 2.525, 2.522, 2.514, 2.506, 2.499, 2.492, 2.489, 2.485, 2.484, 2.485, 2.488, 2.492, 2.506,
+ 2.507, 2.494, 2.486, 2.483, 2.482, 2.482, 2.486, 2.488, 2.495, 2.501, 2.507, 2.511, 2.517, 2.519, 2.523, 2.525, 2.525, 2.523, 2.523, 2.521, 2.514, 2.506, 2.502, 2.496, 2.491, 2.488, 2.485, 2.485, 2.487, 2.489, 2.496, 2.516,
+ 2.511, 2.503, 2.489, 2.486, 2.485, 2.485, 2.485, 2.487, 2.489, 2.495, 2.501, 2.505, 2.509, 2.514, 2.517, 2.519, 2.518, 2.517, 2.515, 2.511, 2.505, 2.501, 2.495, 2.492, 2.488, 2.486, 2.485, 2.486, 2.488, 2.492, 2.499, 2.519,
+ 2.517, 2.505, 2.494, 2.489, 2.487, 2.486, 2.486, 2.486, 2.489, 2.491, 2.496, 2.499, 2.503, 2.506, 2.508, 2.509, 2.511, 2.509, 2.507, 2.503, 2.501, 2.496, 2.493, 2.489, 2.485, 2.485, 2.486, 2.487, 2.491, 2.495, 2.505, 2.526,
+ 2.526, 2.516, 2.504, 2.494, 2.493, 2.489, 2.489, 2.489, 2.489, 2.491, 2.496, 2.498, 2.501, 2.504, 2.506, 2.506, 2.506, 2.505, 2.503, 2.501, 2.499, 2.496, 2.494, 2.491, 2.487, 2.486, 2.489, 2.492, 2.497, 2.505, 2.517, 2.528,
+ 2.529, 2.526, 2.508, 2.502, 2.501, 2.498, 2.495, 2.495, 2.495, 2.495, 2.497, 2.499, 2.501, 2.503, 2.504, 2.506, 2.505, 2.505, 2.503, 2.501, 2.499, 2.496, 2.495, 2.494, 2.492, 2.494, 2.494, 2.498, 2.504, 2.513, 2.525, 2.536
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.427, 1.425, 1.423, 1.422, 1.421, 1.421, 1.421, 1.421, 1.421, 1.421, 1.422, 1.423, 1.424, 1.425, 1.426, 1.426, 1.426, 1.425, 1.425, 1.424, 1.422, 1.421, 1.421, 1.421, 1.421, 1.422, 1.422, 1.422, 1.424, 1.424, 1.426, 1.428,
+ 1.426, 1.424, 1.422, 1.421, 1.419, 1.419, 1.419, 1.421, 1.421, 1.422, 1.423, 1.424, 1.425, 1.426, 1.427, 1.427, 1.427, 1.426, 1.425, 1.424, 1.422, 1.421, 1.421, 1.421, 1.421, 1.421, 1.421, 1.421, 1.421, 1.422, 1.424, 1.427,
+ 1.423, 1.421, 1.421, 1.419, 1.419, 1.418, 1.419, 1.419, 1.421, 1.423, 1.425, 1.426, 1.428, 1.429, 1.431, 1.431, 1.431, 1.431, 1.429, 1.426, 1.424, 1.422, 1.421, 1.421, 1.421, 1.419, 1.419, 1.419, 1.421, 1.421, 1.422, 1.425,
+ 1.422, 1.419, 1.419, 1.419, 1.418, 1.418, 1.419, 1.421, 1.422, 1.426, 1.428, 1.429, 1.433, 1.434, 1.436, 1.436, 1.436, 1.434, 1.432, 1.429, 1.426, 1.424, 1.423, 1.422, 1.421, 1.419, 1.419, 1.419, 1.419, 1.419, 1.421, 1.425,
+ 1.422, 1.419, 1.419, 1.418, 1.418, 1.419, 1.419, 1.422, 1.425, 1.429, 1.432, 1.435, 1.436, 1.438, 1.439, 1.439, 1.441, 1.439, 1.435, 1.433, 1.429, 1.427, 1.425, 1.423, 1.422, 1.419, 1.419, 1.418, 1.418, 1.418, 1.419, 1.425,
+ 1.422, 1.419, 1.418, 1.418, 1.418, 1.419, 1.421, 1.424, 1.428, 1.432, 1.436, 1.437, 1.439, 1.442, 1.443, 1.445, 1.444, 1.443, 1.441, 1.436, 1.434, 1.431, 1.427, 1.425, 1.422, 1.421, 1.419, 1.418, 1.418, 1.418, 1.419, 1.424,
+ 1.422, 1.418, 1.417, 1.418, 1.419, 1.421, 1.423, 1.427, 1.431, 1.436, 1.438, 1.442, 1.444, 1.446, 1.448, 1.449, 1.448, 1.446, 1.445, 1.441, 1.436, 1.434, 1.429, 1.427, 1.423, 1.421, 1.419, 1.418, 1.418, 1.418, 1.418, 1.423,
+ 1.421, 1.418, 1.418, 1.418, 1.419, 1.421, 1.424, 1.429, 1.434, 1.438, 1.442, 1.445, 1.447, 1.449, 1.451, 1.452, 1.452, 1.449, 1.447, 1.445, 1.441, 1.436, 1.433, 1.429, 1.425, 1.422, 1.419, 1.419, 1.418, 1.417, 1.418, 1.423,
+ 1.421, 1.418, 1.418, 1.419, 1.419, 1.423, 1.426, 1.432, 1.436, 1.441, 1.445, 1.448, 1.449, 1.452, 1.453, 1.454, 1.454, 1.453, 1.451, 1.447, 1.444, 1.439, 1.433, 1.431, 1.427, 1.422, 1.421, 1.419, 1.418, 1.417, 1.418, 1.423,
+ 1.421, 1.418, 1.418, 1.419, 1.421, 1.423, 1.428, 1.433, 1.439, 1.443, 1.448, 1.449, 1.453, 1.454, 1.455, 1.456, 1.456, 1.454, 1.453, 1.449, 1.446, 1.441, 1.437, 1.433, 1.429, 1.423, 1.421, 1.419, 1.418, 1.416, 1.417, 1.423,
+ 1.421, 1.417, 1.417, 1.419, 1.422, 1.424, 1.429, 1.435, 1.441, 1.444, 1.449, 1.453, 1.454, 1.456, 1.458, 1.459, 1.458, 1.456, 1.454, 1.451, 1.448, 1.442, 1.439, 1.435, 1.429, 1.426, 1.421, 1.419, 1.418, 1.416, 1.417, 1.422,
+ 1.419, 1.418, 1.417, 1.419, 1.422, 1.425, 1.429, 1.436, 1.442, 1.446, 1.451, 1.454, 1.456, 1.458, 1.461, 1.461, 1.461, 1.459, 1.456, 1.453, 1.451, 1.446, 1.441, 1.436, 1.431, 1.427, 1.422, 1.419, 1.418, 1.416, 1.417, 1.422,
+ 1.419, 1.418, 1.418, 1.421, 1.423, 1.426, 1.431, 1.437, 1.444, 1.449, 1.452, 1.456, 1.458, 1.461, 1.462, 1.463, 1.463, 1.461, 1.458, 1.454, 1.452, 1.447, 1.443, 1.438, 1.432, 1.428, 1.423, 1.421, 1.419, 1.417, 1.417, 1.421,
+ 1.419, 1.418, 1.417, 1.421, 1.423, 1.428, 1.432, 1.439, 1.445, 1.451, 1.453, 1.457, 1.459, 1.462, 1.464, 1.465, 1.465, 1.463, 1.461, 1.457, 1.453, 1.449, 1.444, 1.441, 1.432, 1.429, 1.425, 1.421, 1.419, 1.417, 1.418, 1.422,
+ 1.418, 1.417, 1.417, 1.419, 1.423, 1.428, 1.433, 1.439, 1.446, 1.451, 1.453, 1.457, 1.461, 1.464, 1.465, 1.466, 1.466, 1.464, 1.462, 1.459, 1.454, 1.451, 1.445, 1.441, 1.436, 1.429, 1.425, 1.422, 1.421, 1.417, 1.417, 1.423,
+ 1.417, 1.416, 1.416, 1.419, 1.423, 1.428, 1.433, 1.441, 1.446, 1.451, 1.454, 1.458, 1.461, 1.463, 1.465, 1.466, 1.466, 1.465, 1.463, 1.459, 1.454, 1.451, 1.446, 1.441, 1.437, 1.431, 1.426, 1.422, 1.421, 1.418, 1.418, 1.423,
+ 1.417, 1.416, 1.417, 1.418, 1.423, 1.428, 1.433, 1.439, 1.445, 1.451, 1.453, 1.457, 1.461, 1.463, 1.465, 1.466, 1.466, 1.464, 1.462, 1.459, 1.454, 1.451, 1.446, 1.441, 1.437, 1.431, 1.426, 1.422, 1.419, 1.417, 1.417, 1.422,
+ 1.417, 1.416, 1.416, 1.418, 1.422, 1.428, 1.433, 1.438, 1.444, 1.449, 1.453, 1.456, 1.459, 1.462, 1.464, 1.465, 1.465, 1.463, 1.461, 1.458, 1.453, 1.449, 1.445, 1.441, 1.435, 1.429, 1.426, 1.421, 1.419, 1.417, 1.417, 1.422,
+ 1.418, 1.416, 1.416, 1.418, 1.421, 1.426, 1.432, 1.438, 1.443, 1.447, 1.451, 1.454, 1.458, 1.459, 1.462, 1.463, 1.463, 1.462, 1.459, 1.455, 1.451, 1.447, 1.443, 1.439, 1.434, 1.429, 1.425, 1.421, 1.419, 1.417, 1.417, 1.422,
+ 1.418, 1.416, 1.416, 1.418, 1.421, 1.425, 1.431, 1.435, 1.442, 1.445, 1.449, 1.452, 1.455, 1.458, 1.458, 1.461, 1.461, 1.459, 1.456, 1.453, 1.449, 1.445, 1.442, 1.436, 1.433, 1.427, 1.425, 1.421, 1.419, 1.418, 1.418, 1.422,
+ 1.419, 1.416, 1.415, 1.417, 1.419, 1.424, 1.429, 1.434, 1.439, 1.443, 1.446, 1.449, 1.452, 1.454, 1.456, 1.457, 1.457, 1.456, 1.453, 1.451, 1.447, 1.443, 1.441, 1.435, 1.431, 1.426, 1.424, 1.421, 1.419, 1.418, 1.418, 1.422,
+ 1.419, 1.416, 1.415, 1.416, 1.419, 1.422, 1.426, 1.433, 1.437, 1.441, 1.444, 1.447, 1.449, 1.452, 1.453, 1.455, 1.455, 1.453, 1.451, 1.447, 1.444, 1.441, 1.438, 1.432, 1.428, 1.424, 1.421, 1.419, 1.418, 1.417, 1.417, 1.421,
+ 1.419, 1.416, 1.415, 1.416, 1.418, 1.421, 1.425, 1.431, 1.435, 1.438, 1.442, 1.445, 1.446, 1.449, 1.451, 1.451, 1.451, 1.451, 1.447, 1.445, 1.443, 1.439, 1.434, 1.431, 1.427, 1.422, 1.421, 1.418, 1.417, 1.417, 1.417, 1.421,
+ 1.418, 1.416, 1.415, 1.416, 1.417, 1.421, 1.423, 1.428, 1.433, 1.437, 1.439, 1.442, 1.444, 1.446, 1.448, 1.449, 1.449, 1.447, 1.445, 1.443, 1.439, 1.437, 1.432, 1.429, 1.425, 1.422, 1.419, 1.417, 1.417, 1.416, 1.416, 1.419,
+ 1.418, 1.416, 1.416, 1.416, 1.417, 1.421, 1.422, 1.426, 1.429, 1.433, 1.436, 1.438, 1.441, 1.443, 1.445, 1.446, 1.445, 1.445, 1.443, 1.439, 1.437, 1.434, 1.431, 1.427, 1.424, 1.421, 1.419, 1.417, 1.417, 1.416, 1.416, 1.421,
+ 1.419, 1.417, 1.416, 1.416, 1.417, 1.421, 1.422, 1.424, 1.427, 1.429, 1.432, 1.436, 1.437, 1.439, 1.442, 1.443, 1.443, 1.441, 1.439, 1.437, 1.434, 1.431, 1.429, 1.425, 1.422, 1.421, 1.419, 1.417, 1.416, 1.416, 1.417, 1.419,
+ 1.421, 1.418, 1.416, 1.417, 1.418, 1.421, 1.421, 1.423, 1.424, 1.427, 1.429, 1.432, 1.434, 1.436, 1.438, 1.439, 1.439, 1.438, 1.436, 1.434, 1.431, 1.429, 1.426, 1.423, 1.422, 1.421, 1.418, 1.417, 1.417, 1.417, 1.417, 1.421,
+ 1.423, 1.419, 1.418, 1.418, 1.419, 1.419, 1.421, 1.422, 1.423, 1.424, 1.427, 1.429, 1.432, 1.432, 1.434, 1.435, 1.435, 1.434, 1.433, 1.431, 1.429, 1.426, 1.424, 1.422, 1.421, 1.419, 1.418, 1.417, 1.417, 1.417, 1.418, 1.421,
+ 1.425, 1.421, 1.419, 1.419, 1.419, 1.421, 1.421, 1.421, 1.421, 1.423, 1.424, 1.426, 1.428, 1.431, 1.431, 1.432, 1.432, 1.431, 1.431, 1.428, 1.425, 1.425, 1.422, 1.421, 1.419, 1.419, 1.418, 1.418, 1.418, 1.418, 1.419, 1.425,
+ 1.426, 1.422, 1.419, 1.419, 1.419, 1.419, 1.419, 1.419, 1.419, 1.421, 1.422, 1.424, 1.426, 1.427, 1.428, 1.429, 1.429, 1.429, 1.427, 1.424, 1.423, 1.422, 1.421, 1.419, 1.418, 1.418, 1.418, 1.418, 1.418, 1.418, 1.419, 1.426,
+ 1.428, 1.425, 1.421, 1.421, 1.421, 1.421, 1.421, 1.419, 1.419, 1.421, 1.422, 1.423, 1.424, 1.426, 1.426, 1.426, 1.426, 1.425, 1.424, 1.424, 1.422, 1.422, 1.421, 1.419, 1.419, 1.419, 1.419, 1.419, 1.419, 1.419, 1.423, 1.426,
+ 1.429, 1.427, 1.424, 1.422, 1.422, 1.422, 1.421, 1.421, 1.421, 1.422, 1.422, 1.422, 1.424, 1.425, 1.426, 1.426, 1.425, 1.425, 1.424, 1.423, 1.422, 1.422, 1.421, 1.421, 1.421, 1.421, 1.419, 1.419, 1.421, 1.422, 1.424, 1.426
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 2.964, 2.872, 2.691, 2.544, 2.416, 2.302, 2.196, 2.093, 2.006, 1.928, 1.852, 1.801, 1.769, 1.752, 1.743, 1.743, 1.743, 1.746, 1.759, 1.784, 1.824, 1.888, 1.968, 2.052, 2.149, 2.253, 2.359, 2.483, 2.626, 2.785, 2.988, 3.051,
+ 2.872, 2.748, 2.583, 2.442, 2.313, 2.201, 2.104, 2.012, 1.928, 1.852, 1.791, 1.742, 1.701, 1.671, 1.651, 1.643, 1.643, 1.659, 1.685, 1.721, 1.768, 1.824, 1.888, 1.971, 2.068, 2.152, 2.259, 2.381, 2.514, 2.669, 2.853, 2.988,
+ 2.761, 2.655, 2.497, 2.356, 2.226, 2.114, 2.012, 1.928, 1.845, 1.769, 1.707, 1.653, 1.612, 1.583, 1.562, 1.556, 1.556, 1.572, 1.599, 1.635, 1.681, 1.742, 1.806, 1.888, 1.971, 2.068, 2.175, 2.292, 2.431, 2.576, 2.747, 2.853,
+ 2.679, 2.571, 2.415, 2.275, 2.151, 2.035, 1.936, 1.845, 1.769, 1.689, 1.623, 1.572, 1.532, 1.501, 1.481, 1.473, 1.473, 1.492, 1.517, 1.556, 1.599, 1.659, 1.731, 1.806, 1.895, 1.992, 2.101, 2.218, 2.349, 2.493, 2.664, 2.753,
+ 2.609, 2.492, 2.339, 2.204, 2.079, 1.971, 1.865, 1.772, 1.689, 1.619, 1.551, 1.499, 1.457, 1.423, 1.405, 1.397, 1.397, 1.411, 1.438, 1.477, 1.525, 1.585, 1.659, 1.731, 1.823, 1.922, 2.027, 2.148, 2.275, 2.422, 2.586, 2.683,
+ 2.545, 2.426, 2.279, 2.139, 2.014, 1.903, 1.799, 1.702, 1.619, 1.551, 1.482, 1.427, 1.385, 1.353, 1.331, 1.325, 1.325, 1.338, 1.364, 1.403, 1.455, 1.522, 1.585, 1.665, 1.757, 1.858, 1.963, 2.081, 2.207, 2.356, 2.518, 2.615,
+ 2.489, 2.367, 2.218, 2.079, 1.956, 1.844, 1.739, 1.642, 1.559, 1.482, 1.426, 1.363, 1.321, 1.287, 1.266, 1.259, 1.259, 1.274, 1.301, 1.339, 1.395, 1.455, 1.523, 1.606, 1.697, 1.797, 1.905, 2.024, 2.154, 2.296, 2.455, 2.563,
+ 2.439, 2.316, 2.164, 2.028, 1.906, 1.793, 1.686, 1.589, 1.505, 1.427, 1.363, 1.308, 1.261, 1.229, 1.207, 1.202, 1.202, 1.215, 1.242, 1.283, 1.339, 1.395, 1.467, 1.551, 1.639, 1.742, 1.851, 1.972, 2.104, 2.243, 2.402, 2.515,
+ 2.398, 2.262, 2.116, 1.982, 1.861, 1.745, 1.639, 1.541, 1.456, 1.377, 1.308, 1.261, 1.208, 1.177, 1.157, 1.153, 1.153, 1.167, 1.191, 1.233, 1.283, 1.343, 1.418, 1.499, 1.591, 1.696, 1.804, 1.928, 2.057, 2.194, 2.352, 2.471,
+ 2.363, 2.222, 2.078, 1.942, 1.818, 1.706, 1.597, 1.501, 1.412, 1.334, 1.266, 1.208, 1.171, 1.134, 1.113, 1.109, 1.109, 1.123, 1.149, 1.191, 1.233, 1.296, 1.371, 1.457, 1.546, 1.654, 1.768, 1.886, 2.014, 2.155, 2.312, 2.436,
+ 2.334, 2.188, 2.042, 1.909, 1.783, 1.668, 1.561, 1.464, 1.374, 1.295, 1.228, 1.171, 1.134, 1.098, 1.076, 1.072, 1.072, 1.087, 1.119, 1.149, 1.196, 1.259, 1.332, 1.419, 1.514, 1.616, 1.728, 1.849, 1.981, 2.123, 2.276, 2.406,
+ 2.306, 2.159, 2.015, 1.881, 1.753, 1.639, 1.533, 1.434, 1.341, 1.263, 1.195, 1.139, 1.098, 1.074, 1.046, 1.044, 1.045, 1.059, 1.087, 1.119, 1.165, 1.227, 1.302, 1.387, 1.482, 1.586, 1.698, 1.819, 1.953, 2.093, 2.248, 2.383,
+ 2.291, 2.141, 1.991, 1.856, 1.732, 1.615, 1.508, 1.409, 1.318, 1.238, 1.171, 1.114, 1.074, 1.046, 1.027, 1.023, 1.025, 1.043, 1.059, 1.095, 1.142, 1.203, 1.278, 1.362, 1.456, 1.559, 1.673, 1.796, 1.928, 2.071, 2.225, 2.359,
+ 2.279, 2.118, 1.972, 1.839, 1.715, 1.599, 1.488, 1.389, 1.298, 1.219, 1.153, 1.097, 1.057, 1.027, 1.018, 1.009, 1.013, 1.025, 1.044, 1.078, 1.125, 1.186, 1.258, 1.342, 1.438, 1.541, 1.655, 1.779, 1.909, 2.053, 2.211, 2.351,
+ 2.274, 2.108, 1.963, 1.831, 1.706, 1.588, 1.477, 1.376, 1.288, 1.207, 1.139, 1.086, 1.049, 1.021, 1.005, 1.002, 1.004, 1.013, 1.035, 1.069, 1.116, 1.176, 1.246, 1.331, 1.427, 1.531, 1.645, 1.767, 1.899, 2.045, 2.197, 2.351,
+ 2.274, 2.106, 1.961, 1.827, 1.701, 1.585, 1.474, 1.374, 1.285, 1.206, 1.139, 1.085, 1.047, 1.019, 1.003, 1.001, 1.001, 1.012, 1.033, 1.067, 1.113, 1.173, 1.245, 1.329, 1.423, 1.529, 1.642, 1.765, 1.897, 2.042, 2.196, 2.349,
+ 2.274, 2.108, 1.961, 1.827, 1.701, 1.585, 1.474, 1.374, 1.285, 1.206, 1.139, 1.085, 1.047, 1.021, 1.005, 1.001, 1.004, 1.012, 1.033, 1.068, 1.113, 1.173, 1.246, 1.329, 1.423, 1.529, 1.642, 1.766, 1.897, 2.042, 2.198, 2.349,
+ 2.278, 2.116, 1.968, 1.833, 1.707, 1.591, 1.482, 1.382, 1.291, 1.214, 1.147, 1.091, 1.055, 1.028, 1.016, 1.006, 1.012, 1.018, 1.039, 1.074, 1.121, 1.182, 1.255, 1.339, 1.433, 1.538, 1.651, 1.777, 1.911, 2.051, 2.207, 2.351,
+ 2.283, 2.127, 1.979, 1.846, 1.723, 1.605, 1.496, 1.397, 1.309, 1.229, 1.162, 1.108, 1.067, 1.041, 1.027, 1.018, 1.018, 1.036, 1.051, 1.087, 1.136, 1.197, 1.269, 1.354, 1.448, 1.554, 1.664, 1.789, 1.922, 2.065, 2.222, 2.365,
+ 2.298, 2.145, 1.999, 1.865, 1.744, 1.627, 1.518, 1.421, 1.331, 1.251, 1.183, 1.129, 1.087, 1.065, 1.041, 1.036, 1.036, 1.051, 1.074, 1.107, 1.158, 1.219, 1.292, 1.378, 1.471, 1.575, 1.687, 1.809, 1.942, 2.085, 2.239, 2.378,
+ 2.315, 2.174, 2.024, 1.893, 1.768, 1.652, 1.543, 1.445, 1.355, 1.278, 1.211, 1.155, 1.116, 1.087, 1.066, 1.061, 1.061, 1.074, 1.105, 1.137, 1.186, 1.248, 1.322, 1.405, 1.498, 1.602, 1.713, 1.835, 1.965, 2.109, 2.267, 2.399,
+ 2.341, 2.206, 2.057, 1.923, 1.799, 1.685, 1.576, 1.479, 1.392, 1.312, 1.244, 1.187, 1.154, 1.116, 1.096, 1.092, 1.092, 1.106, 1.137, 1.173, 1.221, 1.282, 1.356, 1.439, 1.532, 1.635, 1.747, 1.869, 1.997, 2.141, 2.298, 2.425,
+ 2.375, 2.244, 2.098, 1.965, 1.839, 1.722, 1.614, 1.519, 1.434, 1.355, 1.288, 1.234, 1.187, 1.155, 1.136, 1.132, 1.132, 1.147, 1.173, 1.219, 1.263, 1.324, 1.398, 1.479, 1.571, 1.674, 1.784, 1.904, 2.035, 2.177, 2.336, 2.455,
+ 2.414, 2.286, 2.144, 2.011, 1.883, 1.767, 1.661, 1.566, 1.479, 1.401, 1.335, 1.286, 1.234, 1.202, 1.183, 1.178, 1.178, 1.195, 1.222, 1.263, 1.313, 1.372, 1.444, 1.526, 1.618, 1.718, 1.827, 1.951, 2.081, 2.221, 2.379, 2.498,
+ 2.463, 2.339, 2.191, 2.056, 1.931, 1.819, 1.712, 1.616, 1.529, 1.452, 1.392, 1.335, 1.286, 1.254, 1.235, 1.232, 1.232, 1.248, 1.275, 1.313, 1.371, 1.425, 1.495, 1.576, 1.671, 1.768, 1.877, 1.999, 2.128, 2.269, 2.428, 2.541,
+ 2.514, 2.396, 2.247, 2.112, 1.988, 1.873, 1.766, 1.671, 1.588, 1.513, 1.452, 1.392, 1.348, 1.316, 1.298, 1.292, 1.292, 1.307, 1.336, 1.373, 1.425, 1.486, 1.552, 1.636, 1.728, 1.826, 1.933, 2.051, 2.183, 2.327, 2.488, 2.587,
+ 2.573, 2.459, 2.307, 2.171, 2.049, 1.931, 1.828, 1.731, 1.649, 1.582, 1.513, 1.459, 1.415, 1.381, 1.363, 1.358, 1.358, 1.373, 1.399, 1.439, 1.486, 1.552, 1.617, 1.696, 1.787, 1.888, 1.995, 2.112, 2.244, 2.391, 2.552, 2.652,
+ 2.635, 2.525, 2.377, 2.239, 2.111, 1.996, 1.895, 1.799, 1.719, 1.649, 1.582, 1.531, 1.486, 1.454, 1.434, 1.429, 1.429, 1.444, 1.469, 1.507, 1.555, 1.617, 1.692, 1.766, 1.854, 1.954, 2.065, 2.181, 2.313, 2.459, 2.623, 2.722,
+ 2.714, 2.604, 2.452, 2.313, 2.188, 2.071, 1.966, 1.876, 1.799, 1.719, 1.656, 1.604, 1.562, 1.529, 1.511, 1.504, 1.504, 1.519, 1.544, 1.583, 1.632, 1.692, 1.766, 1.839, 1.929, 2.029, 2.138, 2.259, 2.391, 2.539, 2.712, 2.811,
+ 2.809, 2.698, 2.537, 2.396, 2.277, 2.163, 2.053, 1.965, 1.876, 1.799, 1.741, 1.688, 1.643, 1.613, 1.592, 1.586, 1.586, 1.601, 1.628, 1.666, 1.715, 1.773, 1.839, 1.927, 2.012, 2.111, 2.222, 2.342, 2.477, 2.625, 2.811, 2.926,
+ 2.921, 2.809, 2.637, 2.493, 2.376, 2.256, 2.149, 2.053, 1.966, 1.893, 1.832, 1.778, 1.736, 1.708, 1.687, 1.681, 1.681, 1.696, 1.721, 1.757, 1.806, 1.864, 1.929, 2.012, 2.106, 2.199, 2.313, 2.437, 2.577, 2.731, 2.926, 3.051,
+ 3.029, 2.921, 2.745, 2.591, 2.474, 2.355, 2.246, 2.146, 2.049, 1.966, 1.893, 1.832, 1.799, 1.776, 1.768, 1.768, 1.768, 1.771, 1.783, 1.809, 1.864, 1.929, 2.012, 2.097, 2.195, 2.297, 2.412, 2.539, 2.682, 2.846, 3.051, 3.123
+ ],
+ "sigma": 0.00463,
+ "sigma_Cb": 0.00149
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "lo_max": 1000,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2860,
+ "ccm":
+ [
+ 2.12089, -0.52461, -0.59629,
+ -0.85342, 2.80445, -0.95103,
+ -0.26897, -1.14788, 2.41685
+ ]
+ },
+ {
+ "ct": 2960,
+ "ccm":
+ [
+ 2.26962, -0.54174, -0.72789,
+ -0.77008, 2.60271, -0.83262,
+ -0.26036, -1.51254, 2.77289
+ ]
+ },
+ {
+ "ct": 3603,
+ "ccm":
+ [
+ 2.18644, -0.66148, -0.52496,
+ -0.77828, 2.69474, -0.91645,
+ -0.25239, -0.83059, 2.08298
+ ]
+ },
+ {
+ "ct": 4650,
+ "ccm":
+ [
+ 2.18174, -0.70887, -0.47287,
+ -0.70196, 2.76426, -1.06231,
+ -0.25157, -0.71978, 1.97135
+ ]
+ },
+ {
+ "ct": 5858,
+ "ccm":
+ [
+ 2.32392, -0.88421, -0.43971,
+ -0.63821, 2.58348, -0.94527,
+ -0.28541, -0.54112, 1.82653
+ ]
+ },
+ {
+ "ct": 7580,
+ "ccm":
+ [
+ 2.21175, -0.53242, -0.67933,
+ -0.57875, 3.07922, -1.50047,
+ -0.27709, -0.73338, 2.01048
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx219_noir.json b/src/ipa/rpi/pisp/data/imx219_noir.json
new file mode 100644
index 00000000..8a8ad330
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx219_noir.json
@@ -0,0 +1,1112 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 21965,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 800,
+ "reference_Y": 11460
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 3.661
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 239,
+ "slope": 0.00766
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "bayes": 0
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 10.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 10.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 1.418, 1.428, 1.446, 1.454, 1.454, 1.451, 1.441, 1.428, 1.411, 1.391, 1.371, 1.349, 1.334, 1.327, 1.325, 1.325, 1.325, 1.325, 1.331, 1.344, 1.363, 1.383, 1.402, 1.418, 1.433, 1.446, 1.452, 1.453, 1.446, 1.435, 1.415, 1.404,
+ 1.428, 1.442, 1.453, 1.455, 1.454, 1.447, 1.431, 1.413, 1.392, 1.371, 1.349, 1.331, 1.318, 1.307, 1.299, 1.299, 1.299, 1.303, 1.313, 1.328, 1.344, 1.363, 1.383, 1.404, 1.424, 1.439, 1.451, 1.453, 1.453, 1.445, 1.431, 1.415,
+ 1.436, 1.448, 1.453, 1.455, 1.449, 1.435, 1.415, 1.393, 1.369, 1.345, 1.322, 1.303, 1.287, 1.276, 1.269, 1.268, 1.268, 1.272, 1.283, 1.298, 1.316, 1.337, 1.362, 1.384, 1.406, 1.427, 1.444, 1.454, 1.454, 1.452, 1.438, 1.426,
+ 1.441, 1.451, 1.454, 1.451, 1.439, 1.422, 1.396, 1.372, 1.345, 1.319, 1.295, 1.274, 1.257, 1.245, 1.239, 1.238, 1.238, 1.245, 1.255, 1.269, 1.289, 1.311, 1.336, 1.362, 1.388, 1.412, 1.433, 1.448, 1.454, 1.453, 1.445, 1.433,
+ 1.445, 1.452, 1.452, 1.445, 1.428, 1.405, 1.379, 1.349, 1.319, 1.295, 1.269, 1.247, 1.229, 1.219, 1.212, 1.211, 1.211, 1.217, 1.228, 1.242, 1.261, 1.286, 1.311, 1.339, 1.367, 1.395, 1.419, 1.439, 1.452, 1.452, 1.451, 1.436,
+ 1.448, 1.451, 1.451, 1.435, 1.414, 1.387, 1.358, 1.327, 1.296, 1.269, 1.245, 1.222, 1.205, 1.193, 1.187, 1.185, 1.186, 1.191, 1.202, 1.217, 1.237, 1.261, 1.286, 1.316, 1.346, 1.378, 1.404, 1.429, 1.445, 1.451, 1.451, 1.442,
+ 1.448, 1.448, 1.445, 1.427, 1.401, 1.371, 1.338, 1.306, 1.274, 1.245, 1.222, 1.199, 1.183, 1.171, 1.164, 1.162, 1.162, 1.168, 1.181, 1.194, 1.215, 1.237, 1.264, 1.294, 1.325, 1.359, 1.389, 1.418, 1.441, 1.449, 1.449, 1.443,
+ 1.449, 1.448, 1.438, 1.415, 1.387, 1.352, 1.318, 1.284, 1.252, 1.223, 1.199, 1.179, 1.161, 1.149, 1.142, 1.142, 1.142, 1.149, 1.159, 1.174, 1.194, 1.215, 1.242, 1.272, 1.307, 1.341, 1.376, 1.405, 1.431, 1.447, 1.447, 1.444,
+ 1.448, 1.447, 1.431, 1.405, 1.373, 1.336, 1.301, 1.264, 1.234, 1.204, 1.179, 1.161, 1.143, 1.131, 1.124, 1.123, 1.123, 1.131, 1.141, 1.156, 1.174, 1.197, 1.224, 1.254, 1.288, 1.324, 1.361, 1.394, 1.423, 1.442, 1.444, 1.444,
+ 1.447, 1.442, 1.424, 1.393, 1.359, 1.322, 1.284, 1.248, 1.216, 1.187, 1.162, 1.143, 1.128, 1.115, 1.109, 1.108, 1.108, 1.113, 1.124, 1.139, 1.156, 1.179, 1.206, 1.236, 1.272, 1.309, 1.347, 1.382, 1.411, 1.435, 1.443, 1.444,
+ 1.444, 1.439, 1.417, 1.383, 1.347, 1.308, 1.271, 1.233, 1.201, 1.173, 1.147, 1.128, 1.115, 1.101, 1.095, 1.093, 1.093, 1.099, 1.111, 1.124, 1.142, 1.165, 1.191, 1.222, 1.258, 1.296, 1.333, 1.372, 1.404, 1.429, 1.441, 1.442,
+ 1.443, 1.434, 1.409, 1.375, 1.336, 1.297, 1.257, 1.221, 1.189, 1.159, 1.136, 1.116, 1.101, 1.092, 1.083, 1.082, 1.082, 1.089, 1.099, 1.111, 1.131, 1.153, 1.181, 1.211, 1.246, 1.284, 1.324, 1.361, 1.398, 1.425, 1.441, 1.441,
+ 1.443, 1.431, 1.405, 1.369, 1.328, 1.287, 1.247, 1.211, 1.178, 1.149, 1.126, 1.107, 1.092, 1.083, 1.075, 1.073, 1.073, 1.082, 1.089, 1.101, 1.121, 1.143, 1.171, 1.201, 1.237, 1.274, 1.314, 1.353, 1.389, 1.421, 1.439, 1.441,
+ 1.442, 1.429, 1.401, 1.364, 1.323, 1.279, 1.241, 1.205, 1.172, 1.144, 1.119, 1.101, 1.085, 1.075, 1.071, 1.067, 1.067, 1.073, 1.082, 1.096, 1.114, 1.136, 1.163, 1.194, 1.229, 1.268, 1.308, 1.348, 1.387, 1.417, 1.439, 1.439,
+ 1.443, 1.429, 1.399, 1.362, 1.319, 1.276, 1.237, 1.199, 1.169, 1.141, 1.115, 1.096, 1.081, 1.071, 1.066, 1.063, 1.066, 1.068, 1.078, 1.092, 1.109, 1.132, 1.159, 1.191, 1.226, 1.263, 1.304, 1.346, 1.384, 1.416, 1.438, 1.439,
+ 1.443, 1.428, 1.399, 1.361, 1.319, 1.276, 1.236, 1.199, 1.167, 1.139, 1.115, 1.096, 1.081, 1.071, 1.064, 1.062, 1.062, 1.067, 1.077, 1.091, 1.109, 1.131, 1.158, 1.189, 1.224, 1.262, 1.303, 1.345, 1.383, 1.416, 1.438, 1.439,
+ 1.444, 1.429, 1.399, 1.361, 1.319, 1.276, 1.236, 1.199, 1.167, 1.139, 1.116, 1.096, 1.081, 1.071, 1.064, 1.063, 1.063, 1.067, 1.077, 1.091, 1.109, 1.131, 1.159, 1.189, 1.224, 1.262, 1.303, 1.345, 1.384, 1.416, 1.438, 1.441,
+ 1.444, 1.431, 1.402, 1.364, 1.322, 1.281, 1.239, 1.202, 1.171, 1.142, 1.118, 1.099, 1.084, 1.073, 1.069, 1.065, 1.067, 1.071, 1.079, 1.094, 1.112, 1.135, 1.163, 1.191, 1.227, 1.265, 1.307, 1.348, 1.386, 1.418, 1.438, 1.441,
+ 1.447, 1.433, 1.406, 1.369, 1.328, 1.286, 1.244, 1.209, 1.177, 1.148, 1.124, 1.105, 1.089, 1.081, 1.073, 1.071, 1.071, 1.079, 1.085, 1.099, 1.118, 1.141, 1.168, 1.198, 1.233, 1.271, 1.312, 1.352, 1.391, 1.422, 1.441, 1.444,
+ 1.448, 1.438, 1.412, 1.376, 1.335, 1.295, 1.255, 1.218, 1.186, 1.157, 1.134, 1.113, 1.098, 1.089, 1.081, 1.079, 1.079, 1.085, 1.094, 1.107, 1.125, 1.149, 1.175, 1.207, 1.242, 1.281, 1.319, 1.359, 1.396, 1.425, 1.445, 1.447,
+ 1.449, 1.443, 1.417, 1.384, 1.345, 1.305, 1.266, 1.229, 1.197, 1.169, 1.145, 1.124, 1.111, 1.098, 1.091, 1.089, 1.089, 1.094, 1.107, 1.118, 1.137, 1.159, 1.187, 1.218, 1.253, 1.291, 1.329, 1.369, 1.405, 1.433, 1.447, 1.449,
+ 1.453, 1.449, 1.425, 1.395, 1.358, 1.318, 1.281, 1.244, 1.211, 1.183, 1.158, 1.138, 1.124, 1.111, 1.104, 1.103, 1.103, 1.107, 1.118, 1.133, 1.151, 1.174, 1.201, 1.232, 1.267, 1.304, 1.344, 1.379, 1.413, 1.437, 1.449, 1.449,
+ 1.457, 1.453, 1.434, 1.405, 1.371, 1.335, 1.297, 1.261, 1.229, 1.199, 1.174, 1.155, 1.138, 1.126, 1.119, 1.117, 1.117, 1.124, 1.133, 1.149, 1.167, 1.189, 1.217, 1.248, 1.284, 1.319, 1.357, 1.393, 1.423, 1.444, 1.452, 1.452,
+ 1.459, 1.457, 1.443, 1.418, 1.385, 1.352, 1.314, 1.279, 1.246, 1.218, 1.193, 1.174, 1.155, 1.144, 1.137, 1.136, 1.136, 1.141, 1.151, 1.167, 1.187, 1.208, 1.236, 1.267, 1.301, 1.337, 1.373, 1.405, 1.434, 1.453, 1.455, 1.455,
+ 1.461, 1.461, 1.454, 1.429, 1.401, 1.369, 1.333, 1.301, 1.269, 1.239, 1.216, 1.193, 1.177, 1.165, 1.158, 1.156, 1.156, 1.161, 1.171, 1.187, 1.208, 1.229, 1.258, 1.288, 1.321, 1.356, 1.389, 1.419, 1.445, 1.459, 1.459, 1.455,
+ 1.462, 1.462, 1.459, 1.442, 1.418, 1.386, 1.354, 1.322, 1.292, 1.262, 1.239, 1.216, 1.199, 1.187, 1.179, 1.178, 1.178, 1.184, 1.194, 1.208, 1.229, 1.253, 1.279, 1.309, 1.342, 1.375, 1.406, 1.433, 1.452, 1.464, 1.464, 1.454,
+ 1.461, 1.465, 1.465, 1.454, 1.431, 1.405, 1.376, 1.346, 1.316, 1.288, 1.262, 1.242, 1.223, 1.212, 1.205, 1.203, 1.203, 1.208, 1.218, 1.234, 1.253, 1.279, 1.305, 1.334, 1.363, 1.393, 1.421, 1.445, 1.461, 1.465, 1.464, 1.452,
+ 1.459, 1.465, 1.466, 1.461, 1.443, 1.421, 1.395, 1.368, 1.341, 1.316, 1.288, 1.268, 1.251, 1.238, 1.232, 1.229, 1.229, 1.235, 1.246, 1.261, 1.279, 1.305, 1.331, 1.356, 1.385, 1.411, 1.435, 1.454, 1.466, 1.466, 1.464, 1.451,
+ 1.454, 1.465, 1.467, 1.466, 1.456, 1.436, 1.414, 1.389, 1.367, 1.341, 1.318, 1.297, 1.279, 1.269, 1.261, 1.259, 1.259, 1.265, 1.274, 1.288, 1.308, 1.331, 1.355, 1.381, 1.404, 1.428, 1.447, 1.462, 1.468, 1.467, 1.457, 1.445,
+ 1.447, 1.459, 1.466, 1.467, 1.463, 1.451, 1.434, 1.411, 1.389, 1.367, 1.344, 1.325, 1.311, 1.297, 1.292, 1.289, 1.289, 1.295, 1.303, 1.317, 1.336, 1.356, 1.381, 1.402, 1.423, 1.441, 1.457, 1.467, 1.468, 1.463, 1.451, 1.439,
+ 1.438, 1.449, 1.462, 1.464, 1.464, 1.459, 1.446, 1.429, 1.408, 1.388, 1.369, 1.353, 1.339, 1.329, 1.321, 1.321, 1.321, 1.325, 1.333, 1.348, 1.362, 1.379, 1.401, 1.421, 1.439, 1.454, 1.463, 1.465, 1.465, 1.456, 1.442, 1.427,
+ 1.429, 1.439, 1.454, 1.464, 1.464, 1.459, 1.449, 1.435, 1.421, 1.402, 1.385, 1.369, 1.353, 1.341, 1.338, 1.337, 1.337, 1.338, 1.348, 1.362, 1.378, 1.395, 1.411, 1.429, 1.445, 1.455, 1.463, 1.464, 1.457, 1.447, 1.427, 1.419
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 2.163, 2.177, 2.194, 2.196, 2.197, 2.192, 2.181, 2.161, 2.139, 2.113, 2.088, 2.063, 2.047, 2.041, 2.036, 2.036, 2.036, 2.037, 2.046, 2.059, 2.083, 2.113, 2.135, 2.158, 2.181, 2.193, 2.205, 2.205, 2.202, 2.189, 2.171, 2.158,
+ 2.169, 2.184, 2.195, 2.196, 2.194, 2.182, 2.163, 2.141, 2.116, 2.088, 2.063, 2.042, 2.025, 2.013, 2.004, 2.004, 2.006, 2.011, 2.022, 2.038, 2.059, 2.083, 2.113, 2.137, 2.162, 2.182, 2.197, 2.204, 2.203, 2.199, 2.183, 2.171,
+ 2.177, 2.187, 2.193, 2.193, 2.184, 2.166, 2.142, 2.116, 2.087, 2.057, 2.033, 2.008, 1.991, 1.977, 1.969, 1.969, 1.969, 1.975, 1.988, 2.006, 2.028, 2.055, 2.083, 2.114, 2.139, 2.166, 2.187, 2.199, 2.202, 2.201, 2.189, 2.179,
+ 2.183, 2.189, 2.192, 2.186, 2.172, 2.146, 2.119, 2.089, 2.058, 2.026, 2.001, 1.975, 1.956, 1.942, 1.934, 1.932, 1.933, 1.941, 1.955, 1.971, 1.995, 2.023, 2.055, 2.084, 2.119, 2.146, 2.171, 2.191, 2.201, 2.201, 2.194, 2.183,
+ 2.186, 2.189, 2.189, 2.177, 2.158, 2.127, 2.096, 2.059, 2.026, 1.998, 1.969, 1.944, 1.925, 1.911, 1.901, 1.901, 1.903, 1.912, 1.924, 1.941, 1.964, 1.995, 2.023, 2.058, 2.091, 2.126, 2.155, 2.181, 2.195, 2.199, 2.198, 2.188,
+ 2.189, 2.189, 2.184, 2.166, 2.138, 2.108, 2.071, 2.036, 1.999, 1.969, 1.941, 1.914, 1.894, 1.879, 1.871, 1.871, 1.872, 1.879, 1.893, 1.913, 1.937, 1.964, 1.997, 2.029, 2.065, 2.104, 2.137, 2.169, 2.187, 2.199, 2.199, 2.189,
+ 2.187, 2.186, 2.176, 2.154, 2.123, 2.087, 2.044, 2.011, 1.974, 1.941, 1.913, 1.887, 1.868, 1.852, 1.844, 1.843, 1.844, 1.852, 1.866, 1.885, 1.912, 1.937, 1.972, 2.004, 2.042, 2.081, 2.119, 2.154, 2.179, 2.195, 2.196, 2.193,
+ 2.187, 2.181, 2.167, 2.141, 2.103, 2.062, 2.023, 1.984, 1.947, 1.916, 1.887, 1.864, 1.841, 1.828, 1.821, 1.819, 1.819, 1.828, 1.842, 1.862, 1.885, 1.913, 1.945, 1.982, 2.021, 2.058, 2.102, 2.137, 2.168, 2.192, 2.193, 2.193,
+ 2.182, 2.181, 2.161, 2.127, 2.083, 2.044, 2.002, 1.961, 1.924, 1.891, 1.864, 1.841, 1.819, 1.806, 1.797, 1.797, 1.797, 1.805, 1.819, 1.841, 1.862, 1.892, 1.924, 1.959, 1.999, 2.041, 2.082, 2.123, 2.161, 2.185, 2.191, 2.192,
+ 2.182, 2.172, 2.149, 2.112, 2.069, 2.026, 1.982, 1.941, 1.904, 1.871, 1.841, 1.819, 1.799, 1.785, 1.776, 1.776, 1.778, 1.784, 1.798, 1.819, 1.841, 1.869, 1.903, 1.939, 1.977, 2.021, 2.067, 2.108, 2.145, 2.174, 2.189, 2.191,
+ 2.181, 2.167, 2.139, 2.098, 2.056, 2.006, 1.965, 1.921, 1.883, 1.851, 1.823, 1.799, 1.783, 1.767, 1.759, 1.758, 1.758, 1.767, 1.783, 1.798, 1.825, 1.851, 1.883, 1.919, 1.959, 2.004, 2.049, 2.094, 2.136, 2.167, 2.187, 2.189,
+ 2.179, 2.163, 2.131, 2.087, 2.041, 1.994, 1.948, 1.907, 1.871, 1.835, 1.806, 1.784, 1.767, 1.754, 1.744, 1.742, 1.742, 1.752, 1.767, 1.783, 1.808, 1.838, 1.869, 1.905, 1.945, 1.989, 2.036, 2.083, 2.128, 2.159, 2.183, 2.187,
+ 2.178, 2.161, 2.126, 2.082, 2.032, 1.982, 1.936, 1.896, 1.857, 1.823, 1.795, 1.772, 1.754, 1.744, 1.732, 1.731, 1.732, 1.742, 1.752, 1.771, 1.796, 1.824, 1.857, 1.895, 1.934, 1.977, 2.024, 2.071, 2.116, 2.154, 2.181, 2.185,
+ 2.177, 2.157, 2.121, 2.074, 2.025, 1.973, 1.927, 1.886, 1.849, 1.815, 1.787, 1.765, 1.746, 1.732, 1.725, 1.722, 1.724, 1.732, 1.743, 1.762, 1.786, 1.813, 1.848, 1.886, 1.924, 1.969, 2.017, 2.066, 2.111, 2.153, 2.179, 2.183,
+ 2.177, 2.155, 2.119, 2.072, 2.022, 1.969, 1.925, 1.881, 1.844, 1.811, 1.782, 1.758, 1.739, 1.725, 1.721, 1.717, 1.721, 1.724, 1.739, 1.757, 1.781, 1.809, 1.842, 1.879, 1.921, 1.965, 2.012, 2.062, 2.108, 2.151, 2.179, 2.182,
+ 2.177, 2.156, 2.121, 2.071, 2.021, 1.968, 1.922, 1.879, 1.842, 1.811, 1.781, 1.757, 1.739, 1.725, 1.717, 1.715, 1.715, 1.723, 1.737, 1.757, 1.779, 1.808, 1.841, 1.877, 1.918, 1.963, 2.011, 2.061, 2.107, 2.148, 2.179, 2.183,
+ 2.178, 2.157, 2.121, 2.072, 2.021, 1.969, 1.922, 1.881, 1.842, 1.811, 1.781, 1.758, 1.739, 1.726, 1.718, 1.717, 1.718, 1.723, 1.737, 1.757, 1.781, 1.809, 1.841, 1.877, 1.918, 1.964, 2.012, 2.061, 2.108, 2.149, 2.179, 2.183,
+ 2.178, 2.159, 2.124, 2.074, 2.024, 1.974, 1.926, 1.885, 1.847, 1.813, 1.784, 1.762, 1.743, 1.731, 1.725, 1.719, 1.723, 1.728, 1.742, 1.762, 1.785, 1.814, 1.847, 1.881, 1.922, 1.966, 2.017, 2.065, 2.109, 2.151, 2.181, 2.184,
+ 2.181, 2.163, 2.129, 2.082, 2.032, 1.982, 1.934, 1.891, 1.854, 1.822, 1.794, 1.769, 1.751, 1.739, 1.731, 1.727, 1.728, 1.739, 1.747, 1.768, 1.791, 1.821, 1.852, 1.889, 1.929, 1.972, 2.022, 2.071, 2.117, 2.155, 2.182, 2.189,
+ 2.184, 2.169, 2.135, 2.091, 2.041, 1.994, 1.947, 1.902, 1.865, 1.833, 1.805, 1.779, 1.762, 1.751, 1.739, 1.739, 1.739, 1.747, 1.761, 1.779, 1.803, 1.831, 1.864, 1.898, 1.941, 1.984, 2.033, 2.079, 2.123, 2.163, 2.188, 2.193,
+ 2.185, 2.174, 2.142, 2.099, 2.054, 2.004, 1.959, 1.917, 1.879, 1.846, 1.819, 1.794, 1.779, 1.762, 1.754, 1.753, 1.753, 1.761, 1.777, 1.793, 1.816, 1.843, 1.877, 1.913, 1.953, 1.995, 2.043, 2.091, 2.135, 2.169, 2.191, 2.196,
+ 2.191, 2.179, 2.154, 2.118, 2.069, 2.023, 1.977, 1.935, 1.898, 1.865, 1.834, 1.813, 1.794, 1.779, 1.769, 1.769, 1.769, 1.777, 1.793, 1.809, 1.834, 1.863, 1.895, 1.929, 1.972, 2.015, 2.061, 2.105, 2.145, 2.178, 2.195, 2.199,
+ 2.197, 2.188, 2.166, 2.129, 2.087, 2.041, 1.997, 1.956, 1.918, 1.884, 1.855, 1.834, 1.813, 1.798, 1.788, 1.788, 1.788, 1.796, 1.809, 1.832, 1.853, 1.881, 1.912, 1.949, 1.991, 2.033, 2.076, 2.119, 2.159, 2.187, 2.202, 2.205,
+ 2.202, 2.197, 2.176, 2.148, 2.106, 2.065, 2.021, 1.979, 1.943, 1.909, 1.879, 1.855, 1.835, 1.819, 1.811, 1.811, 1.811, 1.818, 1.832, 1.853, 1.875, 1.904, 1.937, 1.972, 2.013, 2.055, 2.097, 2.138, 2.175, 2.197, 2.206, 2.207,
+ 2.205, 2.202, 2.189, 2.162, 2.126, 2.084, 2.044, 2.004, 1.967, 1.935, 1.907, 1.879, 1.861, 1.845, 1.838, 1.835, 1.835, 1.844, 1.855, 1.875, 1.902, 1.928, 1.961, 1.998, 2.033, 2.076, 2.118, 2.155, 2.186, 2.205, 2.208, 2.208,
+ 2.207, 2.205, 2.195, 2.175, 2.145, 2.108, 2.069, 2.029, 1.996, 1.963, 1.934, 1.908, 1.885, 1.872, 1.864, 1.863, 1.863, 1.869, 1.884, 1.902, 1.928, 1.956, 1.989, 2.023, 2.059, 2.099, 2.137, 2.172, 2.199, 2.212, 2.213, 2.209,
+ 2.207, 2.207, 2.203, 2.188, 2.162, 2.128, 2.094, 2.058, 2.023, 1.993, 1.963, 1.936, 1.916, 1.899, 1.893, 1.892, 1.893, 1.899, 1.912, 1.929, 1.956, 1.986, 2.016, 2.049, 2.084, 2.121, 2.156, 2.187, 2.208, 2.215, 2.215, 2.208,
+ 2.205, 2.208, 2.209, 2.199, 2.178, 2.149, 2.117, 2.083, 2.052, 2.023, 1.993, 1.967, 1.947, 1.933, 1.925, 1.922, 1.922, 1.929, 1.943, 1.961, 1.986, 2.015, 2.045, 2.076, 2.109, 2.143, 2.173, 2.198, 2.214, 2.218, 2.216, 2.205,
+ 2.201, 2.207, 2.211, 2.211, 2.193, 2.168, 2.141, 2.112, 2.082, 2.052, 2.025, 2.001, 1.981, 1.967, 1.959, 1.958, 1.958, 1.967, 1.975, 1.992, 2.018, 2.046, 2.076, 2.105, 2.136, 2.163, 2.189, 2.208, 2.217, 2.217, 2.212, 2.203,
+ 2.194, 2.204, 2.212, 2.213, 2.203, 2.187, 2.165, 2.139, 2.112, 2.083, 2.055, 2.034, 2.016, 2.001, 1.993, 1.993, 1.994, 1.999, 2.011, 2.027, 2.051, 2.077, 2.105, 2.133, 2.158, 2.181, 2.202, 2.217, 2.218, 2.218, 2.206, 2.193,
+ 2.185, 2.198, 2.213, 2.214, 2.212, 2.201, 2.184, 2.163, 2.135, 2.111, 2.089, 2.071, 2.052, 2.039, 2.032, 2.031, 2.031, 2.036, 2.048, 2.065, 2.085, 2.106, 2.131, 2.155, 2.178, 2.198, 2.212, 2.219, 2.219, 2.215, 2.201, 2.185,
+ 2.176, 2.191, 2.208, 2.217, 2.216, 2.205, 2.195, 2.177, 2.156, 2.133, 2.109, 2.089, 2.071, 2.055, 2.053, 2.053, 2.053, 2.057, 2.065, 2.085, 2.105, 2.123, 2.149, 2.171, 2.192, 2.205, 2.217, 2.219, 2.219, 2.202, 2.185, 2.181
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.518, 2.513, 2.503, 2.496, 2.488, 2.484, 2.485, 2.485, 2.486, 2.487, 2.487, 2.489, 2.494, 2.496, 2.496, 2.497, 2.499, 2.499, 2.496, 2.495, 2.492, 2.491, 2.491, 2.491, 2.492, 2.493, 2.495, 2.501, 2.508, 2.516, 2.528, 2.533,
+ 2.515, 2.508, 2.495, 2.487, 2.483, 2.481, 2.482, 2.483, 2.485, 2.487, 2.489, 2.491, 2.495, 2.497, 2.498, 2.501, 2.502, 2.502, 2.499, 2.496, 2.494, 2.491, 2.491, 2.489, 2.489, 2.491, 2.493, 2.496, 2.502, 2.511, 2.521, 2.531,
+ 2.507, 2.495, 2.486, 2.482, 2.478, 2.477, 2.481, 2.482, 2.484, 2.488, 2.491, 2.495, 2.499, 2.502, 2.506, 2.508, 2.509, 2.508, 2.505, 2.501, 2.497, 2.493, 2.491, 2.489, 2.488, 2.489, 2.489, 2.492, 2.496, 2.501, 2.511, 2.524,
+ 2.501, 2.487, 2.482, 2.481, 2.478, 2.477, 2.481, 2.483, 2.487, 2.491, 2.501, 2.503, 2.509, 2.511, 2.518, 2.519, 2.519, 2.519, 2.516, 2.509, 2.504, 2.498, 2.495, 2.493, 2.489, 2.489, 2.488, 2.489, 2.492, 2.498, 2.505, 2.523,
+ 2.499, 2.484, 2.481, 2.476, 2.476, 2.476, 2.481, 2.485, 2.492, 2.501, 2.509, 2.514, 2.519, 2.524, 2.528, 2.531, 2.533, 2.533, 2.525, 2.519, 2.514, 2.507, 2.501, 2.497, 2.493, 2.489, 2.489, 2.488, 2.491, 2.494, 2.501, 2.514,
+ 2.497, 2.483, 2.478, 2.476, 2.476, 2.478, 2.482, 2.491, 2.499, 2.509, 2.515, 2.522, 2.528, 2.535, 2.539, 2.541, 2.543, 2.542, 2.539, 2.529, 2.522, 2.516, 2.507, 2.502, 2.497, 2.491, 2.489, 2.488, 2.489, 2.492, 2.498, 2.514,
+ 2.492, 2.479, 2.476, 2.475, 2.476, 2.481, 2.488, 2.496, 2.505, 2.516, 2.524, 2.532, 2.541, 2.545, 2.552, 2.554, 2.554, 2.554, 2.548, 2.541, 2.532, 2.522, 2.516, 2.507, 2.502, 2.494, 2.491, 2.489, 2.489, 2.492, 2.494, 2.511,
+ 2.491, 2.479, 2.476, 2.477, 2.478, 2.482, 2.491, 2.502, 2.514, 2.524, 2.533, 2.543, 2.548, 2.555, 2.562, 2.566, 2.567, 2.562, 2.557, 2.551, 2.541, 2.531, 2.523, 2.512, 2.506, 2.498, 2.493, 2.491, 2.491, 2.491, 2.493, 2.507,
+ 2.489, 2.478, 2.476, 2.477, 2.481, 2.485, 2.494, 2.507, 2.517, 2.529, 2.542, 2.548, 2.557, 2.563, 2.567, 2.571, 2.572, 2.571, 2.565, 2.558, 2.549, 2.538, 2.528, 2.521, 2.509, 2.501, 2.494, 2.492, 2.491, 2.491, 2.491, 2.505,
+ 2.488, 2.478, 2.477, 2.478, 2.482, 2.489, 2.499, 2.509, 2.523, 2.538, 2.548, 2.556, 2.563, 2.568, 2.573, 2.577, 2.578, 2.577, 2.573, 2.564, 2.555, 2.543, 2.535, 2.524, 2.515, 2.504, 2.495, 2.492, 2.489, 2.488, 2.489, 2.501,
+ 2.486, 2.476, 2.475, 2.477, 2.483, 2.491, 2.503, 2.515, 2.529, 2.542, 2.553, 2.562, 2.568, 2.574, 2.581, 2.583, 2.584, 2.581, 2.578, 2.571, 2.562, 2.551, 2.539, 2.531, 2.517, 2.508, 2.497, 2.492, 2.488, 2.487, 2.489, 2.498,
+ 2.486, 2.476, 2.475, 2.479, 2.484, 2.492, 2.504, 2.519, 2.533, 2.544, 2.557, 2.566, 2.573, 2.581, 2.584, 2.588, 2.588, 2.586, 2.581, 2.575, 2.567, 2.555, 2.546, 2.534, 2.517, 2.509, 2.499, 2.492, 2.489, 2.485, 2.488, 2.497,
+ 2.487, 2.476, 2.476, 2.479, 2.486, 2.494, 2.506, 2.521, 2.535, 2.549, 2.559, 2.571, 2.578, 2.583, 2.589, 2.591, 2.591, 2.591, 2.587, 2.579, 2.571, 2.559, 2.551, 2.538, 2.523, 2.513, 2.503, 2.493, 2.489, 2.486, 2.487, 2.499,
+ 2.486, 2.475, 2.475, 2.479, 2.486, 2.495, 2.509, 2.525, 2.541, 2.555, 2.563, 2.573, 2.582, 2.588, 2.591, 2.594, 2.595, 2.592, 2.591, 2.585, 2.574, 2.564, 2.552, 2.541, 2.525, 2.514, 2.503, 2.493, 2.489, 2.486, 2.486, 2.501,
+ 2.486, 2.475, 2.475, 2.479, 2.488, 2.497, 2.509, 2.526, 2.542, 2.556, 2.564, 2.575, 2.584, 2.591, 2.595, 2.596, 2.597, 2.595, 2.592, 2.587, 2.577, 2.568, 2.554, 2.542, 2.527, 2.515, 2.504, 2.494, 2.491, 2.487, 2.487, 2.505,
+ 2.484, 2.476, 2.475, 2.478, 2.488, 2.498, 2.509, 2.526, 2.542, 2.555, 2.565, 2.576, 2.584, 2.589, 2.595, 2.598, 2.598, 2.597, 2.593, 2.587, 2.578, 2.569, 2.556, 2.543, 2.528, 2.515, 2.504, 2.494, 2.489, 2.485, 2.485, 2.501,
+ 2.484, 2.475, 2.475, 2.478, 2.489, 2.498, 2.509, 2.524, 2.539, 2.553, 2.565, 2.576, 2.584, 2.589, 2.594, 2.597, 2.597, 2.596, 2.593, 2.587, 2.577, 2.569, 2.555, 2.543, 2.529, 2.515, 2.503, 2.496, 2.491, 2.485, 2.486, 2.497,
+ 2.484, 2.474, 2.474, 2.479, 2.487, 2.497, 2.509, 2.523, 2.539, 2.551, 2.563, 2.574, 2.581, 2.587, 2.592, 2.595, 2.596, 2.595, 2.591, 2.584, 2.574, 2.567, 2.554, 2.541, 2.526, 2.514, 2.503, 2.495, 2.489, 2.485, 2.486, 2.497,
+ 2.484, 2.475, 2.475, 2.478, 2.485, 2.494, 2.507, 2.522, 2.535, 2.546, 2.559, 2.568, 2.579, 2.584, 2.589, 2.592, 2.593, 2.592, 2.588, 2.579, 2.571, 2.562, 2.551, 2.537, 2.524, 2.514, 2.501, 2.493, 2.489, 2.486, 2.487, 2.498,
+ 2.485, 2.476, 2.475, 2.477, 2.485, 2.491, 2.506, 2.519, 2.531, 2.544, 2.555, 2.563, 2.571, 2.581, 2.584, 2.589, 2.589, 2.588, 2.583, 2.576, 2.566, 2.555, 2.546, 2.534, 2.522, 2.511, 2.499, 2.491, 2.488, 2.486, 2.487, 2.502,
+ 2.487, 2.477, 2.475, 2.477, 2.483, 2.489, 2.503, 2.515, 2.525, 2.541, 2.551, 2.559, 2.567, 2.573, 2.579, 2.582, 2.583, 2.582, 2.576, 2.569, 2.562, 2.549, 2.542, 2.527, 2.518, 2.505, 2.497, 2.491, 2.489, 2.487, 2.487, 2.502,
+ 2.487, 2.478, 2.475, 2.477, 2.482, 2.489, 2.497, 2.512, 2.522, 2.536, 2.544, 2.551, 2.562, 2.566, 2.573, 2.578, 2.578, 2.575, 2.571, 2.564, 2.556, 2.548, 2.536, 2.523, 2.513, 2.503, 2.493, 2.489, 2.487, 2.486, 2.487, 2.502,
+ 2.488, 2.479, 2.477, 2.478, 2.482, 2.488, 2.496, 2.505, 2.516, 2.528, 2.538, 2.547, 2.553, 2.561, 2.565, 2.569, 2.569, 2.568, 2.564, 2.558, 2.549, 2.541, 2.531, 2.517, 2.509, 2.499, 2.492, 2.488, 2.486, 2.484, 2.486, 2.503,
+ 2.492, 2.482, 2.479, 2.479, 2.482, 2.487, 2.491, 2.501, 2.512, 2.523, 2.531, 2.541, 2.549, 2.552, 2.558, 2.561, 2.562, 2.559, 2.558, 2.552, 2.542, 2.535, 2.525, 2.514, 2.505, 2.497, 2.491, 2.486, 2.485, 2.484, 2.487, 2.503,
+ 2.495, 2.483, 2.479, 2.479, 2.482, 2.487, 2.491, 2.498, 2.508, 2.515, 2.526, 2.533, 2.541, 2.547, 2.551, 2.554, 2.555, 2.554, 2.552, 2.541, 2.537, 2.527, 2.519, 2.507, 2.502, 2.495, 2.488, 2.485, 2.484, 2.485, 2.488, 2.503,
+ 2.499, 2.485, 2.483, 2.481, 2.482, 2.486, 2.489, 2.494, 2.504, 2.511, 2.519, 2.527, 2.531, 2.539, 2.542, 2.546, 2.546, 2.545, 2.539, 2.535, 2.527, 2.522, 2.509, 2.505, 2.497, 2.491, 2.486, 2.485, 2.485, 2.487, 2.491, 2.506,
+ 2.499, 2.489, 2.483, 2.481, 2.481, 2.483, 2.488, 2.491, 2.499, 2.506, 2.512, 2.519, 2.524, 2.529, 2.535, 2.537, 2.536, 2.534, 2.532, 2.525, 2.522, 2.514, 2.506, 2.499, 2.492, 2.489, 2.485, 2.484, 2.485, 2.488, 2.492, 2.506,
+ 2.507, 2.494, 2.486, 2.483, 2.482, 2.482, 2.486, 2.488, 2.495, 2.501, 2.507, 2.511, 2.517, 2.519, 2.523, 2.525, 2.525, 2.523, 2.523, 2.521, 2.514, 2.506, 2.502, 2.496, 2.491, 2.488, 2.485, 2.485, 2.487, 2.489, 2.496, 2.516,
+ 2.511, 2.503, 2.489, 2.486, 2.485, 2.485, 2.485, 2.487, 2.489, 2.495, 2.501, 2.505, 2.509, 2.514, 2.517, 2.519, 2.518, 2.517, 2.515, 2.511, 2.505, 2.501, 2.495, 2.492, 2.488, 2.486, 2.485, 2.486, 2.488, 2.492, 2.499, 2.519,
+ 2.517, 2.505, 2.494, 2.489, 2.487, 2.486, 2.486, 2.486, 2.489, 2.491, 2.496, 2.499, 2.503, 2.506, 2.508, 2.509, 2.511, 2.509, 2.507, 2.503, 2.501, 2.496, 2.493, 2.489, 2.485, 2.485, 2.486, 2.487, 2.491, 2.495, 2.505, 2.526,
+ 2.526, 2.516, 2.504, 2.494, 2.493, 2.489, 2.489, 2.489, 2.489, 2.491, 2.496, 2.498, 2.501, 2.504, 2.506, 2.506, 2.506, 2.505, 2.503, 2.501, 2.499, 2.496, 2.494, 2.491, 2.487, 2.486, 2.489, 2.492, 2.497, 2.505, 2.517, 2.528,
+ 2.529, 2.526, 2.508, 2.502, 2.501, 2.498, 2.495, 2.495, 2.495, 2.495, 2.497, 2.499, 2.501, 2.503, 2.504, 2.506, 2.505, 2.505, 2.503, 2.501, 2.499, 2.496, 2.495, 2.494, 2.492, 2.494, 2.494, 2.498, 2.504, 2.513, 2.525, 2.536
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.427, 1.425, 1.423, 1.422, 1.421, 1.421, 1.421, 1.421, 1.421, 1.421, 1.422, 1.423, 1.424, 1.425, 1.426, 1.426, 1.426, 1.425, 1.425, 1.424, 1.422, 1.421, 1.421, 1.421, 1.421, 1.422, 1.422, 1.422, 1.424, 1.424, 1.426, 1.428,
+ 1.426, 1.424, 1.422, 1.421, 1.419, 1.419, 1.419, 1.421, 1.421, 1.422, 1.423, 1.424, 1.425, 1.426, 1.427, 1.427, 1.427, 1.426, 1.425, 1.424, 1.422, 1.421, 1.421, 1.421, 1.421, 1.421, 1.421, 1.421, 1.421, 1.422, 1.424, 1.427,
+ 1.423, 1.421, 1.421, 1.419, 1.419, 1.418, 1.419, 1.419, 1.421, 1.423, 1.425, 1.426, 1.428, 1.429, 1.431, 1.431, 1.431, 1.431, 1.429, 1.426, 1.424, 1.422, 1.421, 1.421, 1.421, 1.419, 1.419, 1.419, 1.421, 1.421, 1.422, 1.425,
+ 1.422, 1.419, 1.419, 1.419, 1.418, 1.418, 1.419, 1.421, 1.422, 1.426, 1.428, 1.429, 1.433, 1.434, 1.436, 1.436, 1.436, 1.434, 1.432, 1.429, 1.426, 1.424, 1.423, 1.422, 1.421, 1.419, 1.419, 1.419, 1.419, 1.419, 1.421, 1.425,
+ 1.422, 1.419, 1.419, 1.418, 1.418, 1.419, 1.419, 1.422, 1.425, 1.429, 1.432, 1.435, 1.436, 1.438, 1.439, 1.439, 1.441, 1.439, 1.435, 1.433, 1.429, 1.427, 1.425, 1.423, 1.422, 1.419, 1.419, 1.418, 1.418, 1.418, 1.419, 1.425,
+ 1.422, 1.419, 1.418, 1.418, 1.418, 1.419, 1.421, 1.424, 1.428, 1.432, 1.436, 1.437, 1.439, 1.442, 1.443, 1.445, 1.444, 1.443, 1.441, 1.436, 1.434, 1.431, 1.427, 1.425, 1.422, 1.421, 1.419, 1.418, 1.418, 1.418, 1.419, 1.424,
+ 1.422, 1.418, 1.417, 1.418, 1.419, 1.421, 1.423, 1.427, 1.431, 1.436, 1.438, 1.442, 1.444, 1.446, 1.448, 1.449, 1.448, 1.446, 1.445, 1.441, 1.436, 1.434, 1.429, 1.427, 1.423, 1.421, 1.419, 1.418, 1.418, 1.418, 1.418, 1.423,
+ 1.421, 1.418, 1.418, 1.418, 1.419, 1.421, 1.424, 1.429, 1.434, 1.438, 1.442, 1.445, 1.447, 1.449, 1.451, 1.452, 1.452, 1.449, 1.447, 1.445, 1.441, 1.436, 1.433, 1.429, 1.425, 1.422, 1.419, 1.419, 1.418, 1.417, 1.418, 1.423,
+ 1.421, 1.418, 1.418, 1.419, 1.419, 1.423, 1.426, 1.432, 1.436, 1.441, 1.445, 1.448, 1.449, 1.452, 1.453, 1.454, 1.454, 1.453, 1.451, 1.447, 1.444, 1.439, 1.433, 1.431, 1.427, 1.422, 1.421, 1.419, 1.418, 1.417, 1.418, 1.423,
+ 1.421, 1.418, 1.418, 1.419, 1.421, 1.423, 1.428, 1.433, 1.439, 1.443, 1.448, 1.449, 1.453, 1.454, 1.455, 1.456, 1.456, 1.454, 1.453, 1.449, 1.446, 1.441, 1.437, 1.433, 1.429, 1.423, 1.421, 1.419, 1.418, 1.416, 1.417, 1.423,
+ 1.421, 1.417, 1.417, 1.419, 1.422, 1.424, 1.429, 1.435, 1.441, 1.444, 1.449, 1.453, 1.454, 1.456, 1.458, 1.459, 1.458, 1.456, 1.454, 1.451, 1.448, 1.442, 1.439, 1.435, 1.429, 1.426, 1.421, 1.419, 1.418, 1.416, 1.417, 1.422,
+ 1.419, 1.418, 1.417, 1.419, 1.422, 1.425, 1.429, 1.436, 1.442, 1.446, 1.451, 1.454, 1.456, 1.458, 1.461, 1.461, 1.461, 1.459, 1.456, 1.453, 1.451, 1.446, 1.441, 1.436, 1.431, 1.427, 1.422, 1.419, 1.418, 1.416, 1.417, 1.422,
+ 1.419, 1.418, 1.418, 1.421, 1.423, 1.426, 1.431, 1.437, 1.444, 1.449, 1.452, 1.456, 1.458, 1.461, 1.462, 1.463, 1.463, 1.461, 1.458, 1.454, 1.452, 1.447, 1.443, 1.438, 1.432, 1.428, 1.423, 1.421, 1.419, 1.417, 1.417, 1.421,
+ 1.419, 1.418, 1.417, 1.421, 1.423, 1.428, 1.432, 1.439, 1.445, 1.451, 1.453, 1.457, 1.459, 1.462, 1.464, 1.465, 1.465, 1.463, 1.461, 1.457, 1.453, 1.449, 1.444, 1.441, 1.432, 1.429, 1.425, 1.421, 1.419, 1.417, 1.418, 1.422,
+ 1.418, 1.417, 1.417, 1.419, 1.423, 1.428, 1.433, 1.439, 1.446, 1.451, 1.453, 1.457, 1.461, 1.464, 1.465, 1.466, 1.466, 1.464, 1.462, 1.459, 1.454, 1.451, 1.445, 1.441, 1.436, 1.429, 1.425, 1.422, 1.421, 1.417, 1.417, 1.423,
+ 1.417, 1.416, 1.416, 1.419, 1.423, 1.428, 1.433, 1.441, 1.446, 1.451, 1.454, 1.458, 1.461, 1.463, 1.465, 1.466, 1.466, 1.465, 1.463, 1.459, 1.454, 1.451, 1.446, 1.441, 1.437, 1.431, 1.426, 1.422, 1.421, 1.418, 1.418, 1.423,
+ 1.417, 1.416, 1.417, 1.418, 1.423, 1.428, 1.433, 1.439, 1.445, 1.451, 1.453, 1.457, 1.461, 1.463, 1.465, 1.466, 1.466, 1.464, 1.462, 1.459, 1.454, 1.451, 1.446, 1.441, 1.437, 1.431, 1.426, 1.422, 1.419, 1.417, 1.417, 1.422,
+ 1.417, 1.416, 1.416, 1.418, 1.422, 1.428, 1.433, 1.438, 1.444, 1.449, 1.453, 1.456, 1.459, 1.462, 1.464, 1.465, 1.465, 1.463, 1.461, 1.458, 1.453, 1.449, 1.445, 1.441, 1.435, 1.429, 1.426, 1.421, 1.419, 1.417, 1.417, 1.422,
+ 1.418, 1.416, 1.416, 1.418, 1.421, 1.426, 1.432, 1.438, 1.443, 1.447, 1.451, 1.454, 1.458, 1.459, 1.462, 1.463, 1.463, 1.462, 1.459, 1.455, 1.451, 1.447, 1.443, 1.439, 1.434, 1.429, 1.425, 1.421, 1.419, 1.417, 1.417, 1.422,
+ 1.418, 1.416, 1.416, 1.418, 1.421, 1.425, 1.431, 1.435, 1.442, 1.445, 1.449, 1.452, 1.455, 1.458, 1.458, 1.461, 1.461, 1.459, 1.456, 1.453, 1.449, 1.445, 1.442, 1.436, 1.433, 1.427, 1.425, 1.421, 1.419, 1.418, 1.418, 1.422,
+ 1.419, 1.416, 1.415, 1.417, 1.419, 1.424, 1.429, 1.434, 1.439, 1.443, 1.446, 1.449, 1.452, 1.454, 1.456, 1.457, 1.457, 1.456, 1.453, 1.451, 1.447, 1.443, 1.441, 1.435, 1.431, 1.426, 1.424, 1.421, 1.419, 1.418, 1.418, 1.422,
+ 1.419, 1.416, 1.415, 1.416, 1.419, 1.422, 1.426, 1.433, 1.437, 1.441, 1.444, 1.447, 1.449, 1.452, 1.453, 1.455, 1.455, 1.453, 1.451, 1.447, 1.444, 1.441, 1.438, 1.432, 1.428, 1.424, 1.421, 1.419, 1.418, 1.417, 1.417, 1.421,
+ 1.419, 1.416, 1.415, 1.416, 1.418, 1.421, 1.425, 1.431, 1.435, 1.438, 1.442, 1.445, 1.446, 1.449, 1.451, 1.451, 1.451, 1.451, 1.447, 1.445, 1.443, 1.439, 1.434, 1.431, 1.427, 1.422, 1.421, 1.418, 1.417, 1.417, 1.417, 1.421,
+ 1.418, 1.416, 1.415, 1.416, 1.417, 1.421, 1.423, 1.428, 1.433, 1.437, 1.439, 1.442, 1.444, 1.446, 1.448, 1.449, 1.449, 1.447, 1.445, 1.443, 1.439, 1.437, 1.432, 1.429, 1.425, 1.422, 1.419, 1.417, 1.417, 1.416, 1.416, 1.419,
+ 1.418, 1.416, 1.416, 1.416, 1.417, 1.421, 1.422, 1.426, 1.429, 1.433, 1.436, 1.438, 1.441, 1.443, 1.445, 1.446, 1.445, 1.445, 1.443, 1.439, 1.437, 1.434, 1.431, 1.427, 1.424, 1.421, 1.419, 1.417, 1.417, 1.416, 1.416, 1.421,
+ 1.419, 1.417, 1.416, 1.416, 1.417, 1.421, 1.422, 1.424, 1.427, 1.429, 1.432, 1.436, 1.437, 1.439, 1.442, 1.443, 1.443, 1.441, 1.439, 1.437, 1.434, 1.431, 1.429, 1.425, 1.422, 1.421, 1.419, 1.417, 1.416, 1.416, 1.417, 1.419,
+ 1.421, 1.418, 1.416, 1.417, 1.418, 1.421, 1.421, 1.423, 1.424, 1.427, 1.429, 1.432, 1.434, 1.436, 1.438, 1.439, 1.439, 1.438, 1.436, 1.434, 1.431, 1.429, 1.426, 1.423, 1.422, 1.421, 1.418, 1.417, 1.417, 1.417, 1.417, 1.421,
+ 1.423, 1.419, 1.418, 1.418, 1.419, 1.419, 1.421, 1.422, 1.423, 1.424, 1.427, 1.429, 1.432, 1.432, 1.434, 1.435, 1.435, 1.434, 1.433, 1.431, 1.429, 1.426, 1.424, 1.422, 1.421, 1.419, 1.418, 1.417, 1.417, 1.417, 1.418, 1.421,
+ 1.425, 1.421, 1.419, 1.419, 1.419, 1.421, 1.421, 1.421, 1.421, 1.423, 1.424, 1.426, 1.428, 1.431, 1.431, 1.432, 1.432, 1.431, 1.431, 1.428, 1.425, 1.425, 1.422, 1.421, 1.419, 1.419, 1.418, 1.418, 1.418, 1.418, 1.419, 1.425,
+ 1.426, 1.422, 1.419, 1.419, 1.419, 1.419, 1.419, 1.419, 1.419, 1.421, 1.422, 1.424, 1.426, 1.427, 1.428, 1.429, 1.429, 1.429, 1.427, 1.424, 1.423, 1.422, 1.421, 1.419, 1.418, 1.418, 1.418, 1.418, 1.418, 1.418, 1.419, 1.426,
+ 1.428, 1.425, 1.421, 1.421, 1.421, 1.421, 1.421, 1.419, 1.419, 1.421, 1.422, 1.423, 1.424, 1.426, 1.426, 1.426, 1.426, 1.425, 1.424, 1.424, 1.422, 1.422, 1.421, 1.419, 1.419, 1.419, 1.419, 1.419, 1.419, 1.419, 1.423, 1.426,
+ 1.429, 1.427, 1.424, 1.422, 1.422, 1.422, 1.421, 1.421, 1.421, 1.422, 1.422, 1.422, 1.424, 1.425, 1.426, 1.426, 1.425, 1.425, 1.424, 1.423, 1.422, 1.422, 1.421, 1.421, 1.421, 1.421, 1.419, 1.419, 1.421, 1.422, 1.424, 1.426
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 2.964, 2.872, 2.691, 2.544, 2.416, 2.302, 2.196, 2.093, 2.006, 1.928, 1.852, 1.801, 1.769, 1.752, 1.743, 1.743, 1.743, 1.746, 1.759, 1.784, 1.824, 1.888, 1.968, 2.052, 2.149, 2.253, 2.359, 2.483, 2.626, 2.785, 2.988, 3.051,
+ 2.872, 2.748, 2.583, 2.442, 2.313, 2.201, 2.104, 2.012, 1.928, 1.852, 1.791, 1.742, 1.701, 1.671, 1.651, 1.643, 1.643, 1.659, 1.685, 1.721, 1.768, 1.824, 1.888, 1.971, 2.068, 2.152, 2.259, 2.381, 2.514, 2.669, 2.853, 2.988,
+ 2.761, 2.655, 2.497, 2.356, 2.226, 2.114, 2.012, 1.928, 1.845, 1.769, 1.707, 1.653, 1.612, 1.583, 1.562, 1.556, 1.556, 1.572, 1.599, 1.635, 1.681, 1.742, 1.806, 1.888, 1.971, 2.068, 2.175, 2.292, 2.431, 2.576, 2.747, 2.853,
+ 2.679, 2.571, 2.415, 2.275, 2.151, 2.035, 1.936, 1.845, 1.769, 1.689, 1.623, 1.572, 1.532, 1.501, 1.481, 1.473, 1.473, 1.492, 1.517, 1.556, 1.599, 1.659, 1.731, 1.806, 1.895, 1.992, 2.101, 2.218, 2.349, 2.493, 2.664, 2.753,
+ 2.609, 2.492, 2.339, 2.204, 2.079, 1.971, 1.865, 1.772, 1.689, 1.619, 1.551, 1.499, 1.457, 1.423, 1.405, 1.397, 1.397, 1.411, 1.438, 1.477, 1.525, 1.585, 1.659, 1.731, 1.823, 1.922, 2.027, 2.148, 2.275, 2.422, 2.586, 2.683,
+ 2.545, 2.426, 2.279, 2.139, 2.014, 1.903, 1.799, 1.702, 1.619, 1.551, 1.482, 1.427, 1.385, 1.353, 1.331, 1.325, 1.325, 1.338, 1.364, 1.403, 1.455, 1.522, 1.585, 1.665, 1.757, 1.858, 1.963, 2.081, 2.207, 2.356, 2.518, 2.615,
+ 2.489, 2.367, 2.218, 2.079, 1.956, 1.844, 1.739, 1.642, 1.559, 1.482, 1.426, 1.363, 1.321, 1.287, 1.266, 1.259, 1.259, 1.274, 1.301, 1.339, 1.395, 1.455, 1.523, 1.606, 1.697, 1.797, 1.905, 2.024, 2.154, 2.296, 2.455, 2.563,
+ 2.439, 2.316, 2.164, 2.028, 1.906, 1.793, 1.686, 1.589, 1.505, 1.427, 1.363, 1.308, 1.261, 1.229, 1.207, 1.202, 1.202, 1.215, 1.242, 1.283, 1.339, 1.395, 1.467, 1.551, 1.639, 1.742, 1.851, 1.972, 2.104, 2.243, 2.402, 2.515,
+ 2.398, 2.262, 2.116, 1.982, 1.861, 1.745, 1.639, 1.541, 1.456, 1.377, 1.308, 1.261, 1.208, 1.177, 1.157, 1.153, 1.153, 1.167, 1.191, 1.233, 1.283, 1.343, 1.418, 1.499, 1.591, 1.696, 1.804, 1.928, 2.057, 2.194, 2.352, 2.471,
+ 2.363, 2.222, 2.078, 1.942, 1.818, 1.706, 1.597, 1.501, 1.412, 1.334, 1.266, 1.208, 1.171, 1.134, 1.113, 1.109, 1.109, 1.123, 1.149, 1.191, 1.233, 1.296, 1.371, 1.457, 1.546, 1.654, 1.768, 1.886, 2.014, 2.155, 2.312, 2.436,
+ 2.334, 2.188, 2.042, 1.909, 1.783, 1.668, 1.561, 1.464, 1.374, 1.295, 1.228, 1.171, 1.134, 1.098, 1.076, 1.072, 1.072, 1.087, 1.119, 1.149, 1.196, 1.259, 1.332, 1.419, 1.514, 1.616, 1.728, 1.849, 1.981, 2.123, 2.276, 2.406,
+ 2.306, 2.159, 2.015, 1.881, 1.753, 1.639, 1.533, 1.434, 1.341, 1.263, 1.195, 1.139, 1.098, 1.074, 1.046, 1.044, 1.045, 1.059, 1.087, 1.119, 1.165, 1.227, 1.302, 1.387, 1.482, 1.586, 1.698, 1.819, 1.953, 2.093, 2.248, 2.383,
+ 2.291, 2.141, 1.991, 1.856, 1.732, 1.615, 1.508, 1.409, 1.318, 1.238, 1.171, 1.114, 1.074, 1.046, 1.027, 1.023, 1.025, 1.043, 1.059, 1.095, 1.142, 1.203, 1.278, 1.362, 1.456, 1.559, 1.673, 1.796, 1.928, 2.071, 2.225, 2.359,
+ 2.279, 2.118, 1.972, 1.839, 1.715, 1.599, 1.488, 1.389, 1.298, 1.219, 1.153, 1.097, 1.057, 1.027, 1.018, 1.009, 1.013, 1.025, 1.044, 1.078, 1.125, 1.186, 1.258, 1.342, 1.438, 1.541, 1.655, 1.779, 1.909, 2.053, 2.211, 2.351,
+ 2.274, 2.108, 1.963, 1.831, 1.706, 1.588, 1.477, 1.376, 1.288, 1.207, 1.139, 1.086, 1.049, 1.021, 1.005, 1.002, 1.004, 1.013, 1.035, 1.069, 1.116, 1.176, 1.246, 1.331, 1.427, 1.531, 1.645, 1.767, 1.899, 2.045, 2.197, 2.351,
+ 2.274, 2.106, 1.961, 1.827, 1.701, 1.585, 1.474, 1.374, 1.285, 1.206, 1.139, 1.085, 1.047, 1.019, 1.003, 1.001, 1.001, 1.012, 1.033, 1.067, 1.113, 1.173, 1.245, 1.329, 1.423, 1.529, 1.642, 1.765, 1.897, 2.042, 2.196, 2.349,
+ 2.274, 2.108, 1.961, 1.827, 1.701, 1.585, 1.474, 1.374, 1.285, 1.206, 1.139, 1.085, 1.047, 1.021, 1.005, 1.001, 1.004, 1.012, 1.033, 1.068, 1.113, 1.173, 1.246, 1.329, 1.423, 1.529, 1.642, 1.766, 1.897, 2.042, 2.198, 2.349,
+ 2.278, 2.116, 1.968, 1.833, 1.707, 1.591, 1.482, 1.382, 1.291, 1.214, 1.147, 1.091, 1.055, 1.028, 1.016, 1.006, 1.012, 1.018, 1.039, 1.074, 1.121, 1.182, 1.255, 1.339, 1.433, 1.538, 1.651, 1.777, 1.911, 2.051, 2.207, 2.351,
+ 2.283, 2.127, 1.979, 1.846, 1.723, 1.605, 1.496, 1.397, 1.309, 1.229, 1.162, 1.108, 1.067, 1.041, 1.027, 1.018, 1.018, 1.036, 1.051, 1.087, 1.136, 1.197, 1.269, 1.354, 1.448, 1.554, 1.664, 1.789, 1.922, 2.065, 2.222, 2.365,
+ 2.298, 2.145, 1.999, 1.865, 1.744, 1.627, 1.518, 1.421, 1.331, 1.251, 1.183, 1.129, 1.087, 1.065, 1.041, 1.036, 1.036, 1.051, 1.074, 1.107, 1.158, 1.219, 1.292, 1.378, 1.471, 1.575, 1.687, 1.809, 1.942, 2.085, 2.239, 2.378,
+ 2.315, 2.174, 2.024, 1.893, 1.768, 1.652, 1.543, 1.445, 1.355, 1.278, 1.211, 1.155, 1.116, 1.087, 1.066, 1.061, 1.061, 1.074, 1.105, 1.137, 1.186, 1.248, 1.322, 1.405, 1.498, 1.602, 1.713, 1.835, 1.965, 2.109, 2.267, 2.399,
+ 2.341, 2.206, 2.057, 1.923, 1.799, 1.685, 1.576, 1.479, 1.392, 1.312, 1.244, 1.187, 1.154, 1.116, 1.096, 1.092, 1.092, 1.106, 1.137, 1.173, 1.221, 1.282, 1.356, 1.439, 1.532, 1.635, 1.747, 1.869, 1.997, 2.141, 2.298, 2.425,
+ 2.375, 2.244, 2.098, 1.965, 1.839, 1.722, 1.614, 1.519, 1.434, 1.355, 1.288, 1.234, 1.187, 1.155, 1.136, 1.132, 1.132, 1.147, 1.173, 1.219, 1.263, 1.324, 1.398, 1.479, 1.571, 1.674, 1.784, 1.904, 2.035, 2.177, 2.336, 2.455,
+ 2.414, 2.286, 2.144, 2.011, 1.883, 1.767, 1.661, 1.566, 1.479, 1.401, 1.335, 1.286, 1.234, 1.202, 1.183, 1.178, 1.178, 1.195, 1.222, 1.263, 1.313, 1.372, 1.444, 1.526, 1.618, 1.718, 1.827, 1.951, 2.081, 2.221, 2.379, 2.498,
+ 2.463, 2.339, 2.191, 2.056, 1.931, 1.819, 1.712, 1.616, 1.529, 1.452, 1.392, 1.335, 1.286, 1.254, 1.235, 1.232, 1.232, 1.248, 1.275, 1.313, 1.371, 1.425, 1.495, 1.576, 1.671, 1.768, 1.877, 1.999, 2.128, 2.269, 2.428, 2.541,
+ 2.514, 2.396, 2.247, 2.112, 1.988, 1.873, 1.766, 1.671, 1.588, 1.513, 1.452, 1.392, 1.348, 1.316, 1.298, 1.292, 1.292, 1.307, 1.336, 1.373, 1.425, 1.486, 1.552, 1.636, 1.728, 1.826, 1.933, 2.051, 2.183, 2.327, 2.488, 2.587,
+ 2.573, 2.459, 2.307, 2.171, 2.049, 1.931, 1.828, 1.731, 1.649, 1.582, 1.513, 1.459, 1.415, 1.381, 1.363, 1.358, 1.358, 1.373, 1.399, 1.439, 1.486, 1.552, 1.617, 1.696, 1.787, 1.888, 1.995, 2.112, 2.244, 2.391, 2.552, 2.652,
+ 2.635, 2.525, 2.377, 2.239, 2.111, 1.996, 1.895, 1.799, 1.719, 1.649, 1.582, 1.531, 1.486, 1.454, 1.434, 1.429, 1.429, 1.444, 1.469, 1.507, 1.555, 1.617, 1.692, 1.766, 1.854, 1.954, 2.065, 2.181, 2.313, 2.459, 2.623, 2.722,
+ 2.714, 2.604, 2.452, 2.313, 2.188, 2.071, 1.966, 1.876, 1.799, 1.719, 1.656, 1.604, 1.562, 1.529, 1.511, 1.504, 1.504, 1.519, 1.544, 1.583, 1.632, 1.692, 1.766, 1.839, 1.929, 2.029, 2.138, 2.259, 2.391, 2.539, 2.712, 2.811,
+ 2.809, 2.698, 2.537, 2.396, 2.277, 2.163, 2.053, 1.965, 1.876, 1.799, 1.741, 1.688, 1.643, 1.613, 1.592, 1.586, 1.586, 1.601, 1.628, 1.666, 1.715, 1.773, 1.839, 1.927, 2.012, 2.111, 2.222, 2.342, 2.477, 2.625, 2.811, 2.926,
+ 2.921, 2.809, 2.637, 2.493, 2.376, 2.256, 2.149, 2.053, 1.966, 1.893, 1.832, 1.778, 1.736, 1.708, 1.687, 1.681, 1.681, 1.696, 1.721, 1.757, 1.806, 1.864, 1.929, 2.012, 2.106, 2.199, 2.313, 2.437, 2.577, 2.731, 2.926, 3.051,
+ 3.029, 2.921, 2.745, 2.591, 2.474, 2.355, 2.246, 2.146, 2.049, 1.966, 1.893, 1.832, 1.799, 1.776, 1.768, 1.768, 1.768, 1.771, 1.783, 1.809, 1.864, 1.929, 2.012, 2.097, 2.195, 2.297, 2.412, 2.539, 2.682, 2.846, 3.051, 3.123
+ ],
+ "sigma": 0.00463,
+ "sigma_Cb": 0.00149
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "lo_max": 1000,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2498,
+ "ccm":
+ [
+ 1.58731, -0.18011, -0.40721,
+ -0.60639, 2.03422, -0.42782,
+ -0.19612, -1.69203, 2.88815
+ ]
+ },
+ {
+ "ct": 2811,
+ "ccm":
+ [
+ 1.61593, -0.33164, -0.28429,
+ -0.55048, 1.97779, -0.42731,
+ -0.12042, -1.42847, 2.54889
+ ]
+ },
+ {
+ "ct": 2911,
+ "ccm":
+ [
+ 1.62771, -0.41282, -0.21489,
+ -0.57991, 2.04176, -0.46186,
+ -0.07613, -1.13359, 2.20972
+ ]
+ },
+ {
+ "ct": 2919,
+ "ccm":
+ [
+ 1.62661, -0.37736, -0.24925,
+ -0.52519, 1.95233, -0.42714,
+ -0.10842, -1.34929, 2.45771
+ ]
+ },
+ {
+ "ct": 3627,
+ "ccm":
+ [
+ 1.70385, -0.57231, -0.13154,
+ -0.47763, 1.85998, -0.38235,
+ -0.07467, -0.82678, 1.90145
+ ]
+ },
+ {
+ "ct": 4600,
+ "ccm":
+ [
+ 1.68486, -0.61085, -0.07402,
+ -0.41927, 2.04016, -0.62089,
+ -0.08633, -0.67672, 1.76305
+ ]
+ },
+ {
+ "ct": 5716,
+ "ccm":
+ [
+ 1.80439, -0.73699, -0.06739,
+ -0.36073, 1.83327, -0.47255,
+ -0.08378, -0.56403, 1.64781
+ ]
+ },
+ {
+ "ct": 8575,
+ "ccm":
+ [
+ 1.89357, -0.76427, -0.12931,
+ -0.27399, 2.15605, -0.88206,
+ -0.12035, -0.68256, 1.80292
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx290.json b/src/ipa/rpi/pisp/data/imx290.json
new file mode 100644
index 00000000..37421e85
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx290.json
@@ -0,0 +1,341 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 3840
+ }
+ },
+ {
+ "rpi.dpc": { }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 6813,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 890,
+ "reference_Y": 12900
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.67
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 187,
+ "slope": 0.00842
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "bayes": 0
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "speed": 0.2,
+ "metering_modes":
+ {
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ },
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 10, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 10, 5000, 10000, 20000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 1000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.16,
+ 10000, 0.16
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.7,
+ "luminance_lut":
+ [
+ 2.844, 2.604, 2.365, 2.2, 2.039, 1.916, 1.799, 1.707, 1.622, 1.552, 1.487, 1.435, 1.389, 1.356, 1.332, 1.317, 1.31, 1.308, 1.313, 1.324, 1.344, 1.37, 1.41, 1.454, 1.508, 1.567, 1.641, 1.719, 1.82, 1.925, 2.073, 2.221,
+ 2.749, 2.521, 2.294, 2.134, 1.979, 1.861, 1.749, 1.661, 1.578, 1.511, 1.448, 1.398, 1.354, 1.322, 1.3, 1.285, 1.278, 1.277, 1.281, 1.292, 1.311, 1.336, 1.374, 1.416, 1.469, 1.526, 1.596, 1.671, 1.77, 1.872, 2.019, 2.166,
+ 2.654, 2.438, 2.223, 2.069, 1.919, 1.807, 1.7, 1.614, 1.534, 1.469, 1.409, 1.361, 1.318, 1.288, 1.267, 1.254, 1.247, 1.245, 1.25, 1.259, 1.277, 1.302, 1.338, 1.379, 1.43, 1.485, 1.552, 1.623, 1.719, 1.819, 1.965, 2.112,
+ 2.563, 2.359, 2.155, 2.007, 1.863, 1.755, 1.653, 1.571, 1.493, 1.43, 1.372, 1.325, 1.284, 1.256, 1.236, 1.223, 1.217, 1.216, 1.219, 1.229, 1.246, 1.269, 1.305, 1.344, 1.393, 1.446, 1.51, 1.578, 1.672, 1.77, 1.914, 2.059,
+ 2.494, 2.299, 2.103, 1.961, 1.822, 1.718, 1.619, 1.538, 1.461, 1.399, 1.343, 1.298, 1.259, 1.232, 1.213, 1.2, 1.194, 1.193, 1.196, 1.205, 1.222, 1.245, 1.279, 1.318, 1.365, 1.416, 1.481, 1.549, 1.641, 1.735, 1.875, 2.015,
+ 2.425, 2.238, 2.05, 1.914, 1.782, 1.681, 1.585, 1.505, 1.429, 1.369, 1.314, 1.271, 1.234, 1.208, 1.189, 1.177, 1.171, 1.169, 1.173, 1.182, 1.198, 1.221, 1.254, 1.292, 1.338, 1.387, 1.452, 1.519, 1.609, 1.701, 1.836, 1.971,
+ 2.363, 2.183, 2.003, 1.873, 1.746, 1.648, 1.555, 1.477, 1.401, 1.342, 1.289, 1.247, 1.212, 1.187, 1.168, 1.156, 1.149, 1.148, 1.152, 1.16, 1.177, 1.198, 1.231, 1.267, 1.312, 1.36, 1.425, 1.492, 1.58, 1.671, 1.802, 1.932,
+ 2.314, 2.14, 1.965, 1.839, 1.716, 1.622, 1.532, 1.454, 1.38, 1.322, 1.27, 1.229, 1.195, 1.169, 1.149, 1.137, 1.129, 1.128, 1.132, 1.142, 1.158, 1.18, 1.21, 1.245, 1.289, 1.336, 1.401, 1.469, 1.557, 1.649, 1.776, 1.903,
+ 2.264, 2.096, 1.927, 1.805, 1.687, 1.596, 1.509, 1.432, 1.358, 1.301, 1.251, 1.211, 1.177, 1.151, 1.131, 1.117, 1.109, 1.108, 1.113, 1.123, 1.14, 1.161, 1.19, 1.222, 1.265, 1.313, 1.378, 1.445, 1.534, 1.626, 1.75, 1.874,
+ 2.225, 2.061, 1.897, 1.778, 1.663, 1.574, 1.489, 1.414, 1.341, 1.285, 1.235, 1.196, 1.163, 1.136, 1.115, 1.1, 1.091, 1.089, 1.095, 1.106, 1.124, 1.145, 1.174, 1.205, 1.248, 1.294, 1.359, 1.427, 1.516, 1.606, 1.728, 1.849,
+ 2.193, 2.033, 1.872, 1.756, 1.642, 1.556, 1.473, 1.399, 1.327, 1.272, 1.224, 1.185, 1.15, 1.123, 1.1, 1.084, 1.074, 1.072, 1.078, 1.09, 1.11, 1.133, 1.161, 1.193, 1.234, 1.28, 1.345, 1.413, 1.501, 1.59, 1.709, 1.828,
+ 2.161, 2.004, 1.848, 1.734, 1.622, 1.537, 1.457, 1.384, 1.313, 1.26, 1.212, 1.173, 1.138, 1.11, 1.085, 1.068, 1.057, 1.055, 1.062, 1.075, 1.096, 1.12, 1.148, 1.18, 1.221, 1.266, 1.331, 1.399, 1.486, 1.574, 1.69, 1.807,
+ 2.14, 1.986, 1.832, 1.719, 1.609, 1.525, 1.445, 1.373, 1.304, 1.251, 1.204, 1.165, 1.129, 1.1, 1.074, 1.055, 1.043, 1.041, 1.049, 1.063, 1.086, 1.11, 1.14, 1.172, 1.212, 1.258, 1.323, 1.39, 1.477, 1.566, 1.679, 1.792,
+ 2.123, 1.971, 1.819, 1.707, 1.598, 1.514, 1.434, 1.364, 1.296, 1.243, 1.197, 1.158, 1.122, 1.091, 1.064, 1.044, 1.031, 1.027, 1.036, 1.052, 1.076, 1.102, 1.132, 1.165, 1.206, 1.251, 1.316, 1.383, 1.471, 1.56, 1.67, 1.78,
+ 2.106, 1.956, 1.806, 1.695, 1.587, 1.504, 1.424, 1.354, 1.288, 1.236, 1.19, 1.15, 1.114, 1.083, 1.055, 1.033, 1.018, 1.014, 1.024, 1.04, 1.066, 1.094, 1.124, 1.158, 1.199, 1.245, 1.309, 1.376, 1.465, 1.555, 1.661, 1.767,
+ 2.104, 1.955, 1.805, 1.694, 1.586, 1.502, 1.422, 1.352, 1.285, 1.234, 1.188, 1.149, 1.113, 1.081, 1.053, 1.031, 1.014, 1.011, 1.021, 1.038, 1.064, 1.091, 1.122, 1.156, 1.198, 1.244, 1.308, 1.376, 1.465, 1.555, 1.66, 1.766,
+ 2.104, 1.955, 1.806, 1.695, 1.586, 1.502, 1.421, 1.351, 1.284, 1.232, 1.187, 1.148, 1.112, 1.08, 1.051, 1.029, 1.012, 1.008, 1.02, 1.036, 1.062, 1.089, 1.12, 1.155, 1.197, 1.244, 1.308, 1.375, 1.465, 1.555, 1.661, 1.766,
+ 2.105, 1.956, 1.807, 1.696, 1.587, 1.502, 1.42, 1.35, 1.282, 1.231, 1.186, 1.148, 1.112, 1.08, 1.051, 1.028, 1.011, 1.007, 1.019, 1.036, 1.061, 1.088, 1.119, 1.154, 1.197, 1.244, 1.308, 1.376, 1.466, 1.557, 1.662, 1.767,
+ 2.121, 1.97, 1.818, 1.705, 1.595, 1.508, 1.424, 1.353, 1.286, 1.236, 1.191, 1.153, 1.118, 1.087, 1.059, 1.038, 1.022, 1.018, 1.028, 1.044, 1.067, 1.093, 1.124, 1.158, 1.201, 1.248, 1.314, 1.383, 1.474, 1.567, 1.672, 1.777,
+ 2.137, 1.983, 1.829, 1.715, 1.603, 1.514, 1.428, 1.357, 1.291, 1.24, 1.196, 1.158, 1.123, 1.094, 1.068, 1.047, 1.033, 1.029, 1.038, 1.052, 1.074, 1.098, 1.128, 1.162, 1.205, 1.253, 1.32, 1.39, 1.483, 1.577, 1.682, 1.788,
+ 2.154, 1.998, 1.843, 1.726, 1.613, 1.522, 1.435, 1.364, 1.297, 1.246, 1.202, 1.164, 1.131, 1.102, 1.078, 1.059, 1.045, 1.041, 1.048, 1.061, 1.082, 1.105, 1.134, 1.167, 1.211, 1.259, 1.327, 1.399, 1.494, 1.588, 1.694, 1.8,
+ 2.176, 2.019, 1.862, 1.744, 1.628, 1.537, 1.449, 1.377, 1.309, 1.258, 1.213, 1.176, 1.143, 1.116, 1.092, 1.074, 1.061, 1.057, 1.063, 1.075, 1.094, 1.117, 1.146, 1.178, 1.222, 1.27, 1.34, 1.414, 1.509, 1.604, 1.711, 1.818,
+ 2.199, 2.04, 1.881, 1.761, 1.644, 1.552, 1.464, 1.391, 1.321, 1.269, 1.223, 1.187, 1.155, 1.129, 1.106, 1.09, 1.078, 1.074, 1.078, 1.088, 1.107, 1.128, 1.157, 1.189, 1.233, 1.281, 1.353, 1.428, 1.524, 1.62, 1.728, 1.836,
+ 2.228, 2.066, 1.904, 1.782, 1.662, 1.57, 1.482, 1.408, 1.337, 1.284, 1.237, 1.201, 1.17, 1.145, 1.123, 1.107, 1.096, 1.092, 1.095, 1.104, 1.121, 1.142, 1.17, 1.203, 1.247, 1.297, 1.37, 1.446, 1.542, 1.639, 1.75, 1.86,
+ 2.267, 2.099, 1.932, 1.807, 1.684, 1.592, 1.504, 1.428, 1.356, 1.302, 1.255, 1.219, 1.189, 1.164, 1.141, 1.125, 1.115, 1.111, 1.114, 1.123, 1.138, 1.158, 1.186, 1.22, 1.266, 1.318, 1.391, 1.467, 1.563, 1.661, 1.776, 1.891,
+ 2.305, 2.132, 1.96, 1.832, 1.707, 1.614, 1.526, 1.449, 1.375, 1.32, 1.272, 1.237, 1.208, 1.182, 1.16, 1.144, 1.135, 1.131, 1.134, 1.141, 1.155, 1.174, 1.203, 1.236, 1.285, 1.338, 1.412, 1.489, 1.585, 1.682, 1.802, 1.922,
+ 2.351, 2.173, 1.996, 1.864, 1.736, 1.641, 1.552, 1.474, 1.4, 1.344, 1.294, 1.258, 1.228, 1.203, 1.181, 1.165, 1.156, 1.152, 1.155, 1.162, 1.176, 1.195, 1.224, 1.259, 1.309, 1.365, 1.439, 1.516, 1.613, 1.711, 1.835, 1.96,
+ 2.4, 2.218, 2.036, 1.901, 1.768, 1.671, 1.58, 1.502, 1.428, 1.37, 1.319, 1.281, 1.249, 1.224, 1.203, 1.188, 1.178, 1.174, 1.177, 1.184, 1.197, 1.217, 1.248, 1.285, 1.337, 1.394, 1.469, 1.547, 1.644, 1.743, 1.873, 2.002,
+ 2.45, 2.264, 2.077, 1.938, 1.801, 1.702, 1.608, 1.53, 1.456, 1.397, 1.344, 1.304, 1.271, 1.245, 1.224, 1.21, 1.2, 1.196, 1.199, 1.206, 1.219, 1.239, 1.272, 1.311, 1.365, 1.424, 1.5, 1.578, 1.676, 1.776, 1.91, 2.044,
+ 2.513, 2.318, 2.124, 1.984, 1.848, 1.747, 1.652, 1.572, 1.496, 1.436, 1.383, 1.341, 1.303, 1.274, 1.253, 1.238, 1.228, 1.225, 1.228, 1.235, 1.248, 1.269, 1.303, 1.343, 1.4, 1.46, 1.537, 1.617, 1.718, 1.82, 1.962, 2.103,
+ 2.579, 2.376, 2.172, 2.032, 1.897, 1.796, 1.7, 1.617, 1.538, 1.479, 1.426, 1.38, 1.337, 1.306, 1.283, 1.267, 1.258, 1.254, 1.257, 1.265, 1.279, 1.3, 1.336, 1.377, 1.435, 1.497, 1.576, 1.658, 1.761, 1.867, 2.016, 2.165,
+ 2.645, 2.433, 2.22, 2.08, 1.946, 1.844, 1.747, 1.663, 1.581, 1.521, 1.468, 1.419, 1.371, 1.337, 1.313, 1.296, 1.287, 1.284, 1.287, 1.295, 1.309, 1.331, 1.368, 1.411, 1.471, 1.535, 1.615, 1.699, 1.805, 1.914, 2.071, 2.227
+ ],
+ "sigma": 0.005,
+ "sigma_Cb": 0.005
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.sharpen": { }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 3900,
+ "ccm":
+ [
+ 1.54659, -0.17707, -0.36953,
+ -0.51471, 1.72733, -0.21262,
+ 0.06667, -0.92279, 1.85612
+ ]
+ }
+ ]
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx296.json b/src/ipa/rpi/pisp/data/imx296.json
new file mode 100644
index 00000000..d9dde898
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx296.json
@@ -0,0 +1,1194 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 3840
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 4724,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 860,
+ "reference_Y": 14551
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.751
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 226,
+ "slope": 0.01032
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2875.0, 0.4699, 0.3209,
+ 3610.0, 0.4089, 0.4265,
+ 4640.0, 0.3281, 0.5417,
+ 5912.0, 0.2992, 0.5771,
+ 7630.0, 0.2285, 0.6524
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.01783,
+ "transverse_neg": 0.02154
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.16,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.084, 2.084, 2.085, 2.085, 2.085, 2.087, 2.088, 2.087, 2.086, 2.082, 2.082, 2.084, 2.086, 2.088, 2.088, 2.088, 2.087, 2.088, 2.088, 2.091, 2.092, 2.093, 2.093, 2.093, 2.091, 2.091, 2.091, 2.091, 2.092, 2.092, 2.091, 2.088,
+ 2.086, 2.086, 2.087, 2.088, 2.089, 2.089, 2.091, 2.089, 2.087, 2.086, 2.087, 2.088, 2.091, 2.089, 2.091, 2.089, 2.091, 2.091, 2.091, 2.092, 2.093, 2.093, 2.094, 2.095, 2.094, 2.094, 2.095, 2.096, 2.096, 2.096, 2.096, 2.093,
+ 2.087, 2.087, 2.088, 2.091, 2.091, 2.091, 2.091, 2.089, 2.088, 2.088, 2.089, 2.091, 2.092, 2.092, 2.091, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.094, 2.095, 2.096, 2.096, 2.096, 2.096, 2.097, 2.097, 2.097, 2.097, 2.096,
+ 2.089, 2.088, 2.089, 2.091, 2.091, 2.092, 2.091, 2.089, 2.088, 2.088, 2.089, 2.091, 2.092, 2.092, 2.092, 2.091, 2.092, 2.092, 2.092, 2.092, 2.093, 2.094, 2.095, 2.096, 2.096, 2.096, 2.096, 2.097, 2.098, 2.097, 2.097, 2.097,
+ 2.091, 2.091, 2.091, 2.092, 2.092, 2.092, 2.091, 2.091, 2.089, 2.088, 2.088, 2.089, 2.091, 2.091, 2.091, 2.091, 2.092, 2.092, 2.092, 2.092, 2.093, 2.094, 2.095, 2.095, 2.096, 2.096, 2.097, 2.099, 2.098, 2.097, 2.097, 2.097,
+ 2.091, 2.091, 2.092, 2.093, 2.093, 2.093, 2.092, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.091, 2.091, 2.091, 2.091, 2.092, 2.092, 2.093, 2.095, 2.096, 2.096, 2.097, 2.097, 2.099, 2.099, 2.099, 2.098, 2.097,
+ 2.092, 2.092, 2.092, 2.093, 2.093, 2.092, 2.091, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.091, 2.091, 2.091, 2.092, 2.092, 2.093, 2.095, 2.096, 2.096, 2.097, 2.097, 2.099, 2.099, 2.101, 2.099, 2.098,
+ 2.092, 2.092, 2.093, 2.093, 2.093, 2.092, 2.091, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.089, 2.091, 2.091, 2.091, 2.092, 2.092, 2.094, 2.095, 2.096, 2.097, 2.098, 2.098, 2.098, 2.101, 2.101, 2.099, 2.098,
+ 2.092, 2.092, 2.093, 2.093, 2.094, 2.092, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.089, 2.089, 2.091, 2.092, 2.092, 2.092, 2.092, 2.094, 2.096, 2.096, 2.097, 2.098, 2.099, 2.099, 2.099, 2.099, 2.099, 2.097,
+ 2.093, 2.094, 2.094, 2.094, 2.095, 2.093, 2.092, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.094, 2.096, 2.096, 2.097, 2.098, 2.098, 2.101, 2.101, 2.099, 2.099, 2.099,
+ 2.094, 2.094, 2.094, 2.095, 2.095, 2.095, 2.091, 2.089, 2.091, 2.089, 2.089, 2.089, 2.091, 2.091, 2.089, 2.091, 2.091, 2.091, 2.092, 2.092, 2.093, 2.093, 2.095, 2.096, 2.097, 2.098, 2.098, 2.099, 2.101, 2.101, 2.099, 2.099,
+ 2.095, 2.094, 2.094, 2.095, 2.096, 2.095, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.091, 2.091, 2.093, 2.093, 2.093, 2.093, 2.094, 2.096, 2.097, 2.098, 2.099, 2.101, 2.101, 2.102, 2.101, 2.099,
+ 2.095, 2.095, 2.095, 2.095, 2.095, 2.095, 2.092, 2.089, 2.089, 2.088, 2.089, 2.089, 2.091, 2.091, 2.092, 2.092, 2.092, 2.092, 2.093, 2.093, 2.093, 2.093, 2.093, 2.095, 2.096, 2.099, 2.099, 2.101, 2.102, 2.103, 2.102, 2.101,
+ 2.095, 2.095, 2.095, 2.095, 2.095, 2.094, 2.092, 2.091, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.091, 2.093, 2.093, 2.093, 2.092, 2.092, 2.094, 2.094, 2.094, 2.096, 2.096, 2.098, 2.099, 2.102, 2.103, 2.103, 2.102, 2.102,
+ 2.095, 2.095, 2.095, 2.096, 2.096, 2.094, 2.093, 2.091, 2.091, 2.089, 2.089, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.093, 2.092, 2.093, 2.094, 2.094, 2.095, 2.096, 2.097, 2.098, 2.099, 2.103, 2.103, 2.103, 2.101, 2.101,
+ 2.095, 2.096, 2.096, 2.097, 2.096, 2.095, 2.093, 2.092, 2.091, 2.091, 2.091, 2.092, 2.092, 2.092, 2.092, 2.092, 2.092, 2.094, 2.093, 2.093, 2.094, 2.095, 2.096, 2.096, 2.097, 2.099, 2.101, 2.103, 2.103, 2.103, 2.101, 2.099,
+ 2.096, 2.096, 2.097, 2.096, 2.097, 2.096, 2.094, 2.092, 2.092, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.093, 2.093, 2.094, 2.093, 2.093, 2.093, 2.095, 2.096, 2.097, 2.099, 2.099, 2.101, 2.103, 2.103, 2.102, 2.101, 2.101,
+ 2.096, 2.096, 2.097, 2.097, 2.097, 2.096, 2.094, 2.093, 2.092, 2.092, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.093, 2.094, 2.093, 2.093, 2.094, 2.095, 2.096, 2.097, 2.099, 2.101, 2.101, 2.102, 2.102, 2.102, 2.101, 2.101,
+ 2.097, 2.096, 2.097, 2.097, 2.097, 2.097, 2.095, 2.093, 2.093, 2.093, 2.093, 2.092, 2.091, 2.091, 2.092, 2.092, 2.093, 2.094, 2.093, 2.093, 2.093, 2.095, 2.096, 2.097, 2.099, 2.101, 2.102, 2.102, 2.102, 2.101, 2.101, 2.101,
+ 2.098, 2.097, 2.096, 2.097, 2.097, 2.097, 2.095, 2.094, 2.094, 2.094, 2.092, 2.092, 2.092, 2.092, 2.092, 2.092, 2.094, 2.095, 2.095, 2.094, 2.093, 2.095, 2.096, 2.099, 2.101, 2.101, 2.102, 2.102, 2.102, 2.101, 2.101, 2.102,
+ 2.098, 2.097, 2.096, 2.096, 2.097, 2.097, 2.095, 2.094, 2.095, 2.093, 2.093, 2.092, 2.092, 2.092, 2.094, 2.094, 2.096, 2.095, 2.095, 2.095, 2.095, 2.096, 2.098, 2.099, 2.099, 2.101, 2.102, 2.103, 2.102, 2.102, 2.101, 2.102,
+ 2.098, 2.097, 2.097, 2.098, 2.097, 2.096, 2.095, 2.095, 2.095, 2.094, 2.093, 2.093, 2.094, 2.094, 2.094, 2.095, 2.096, 2.096, 2.096, 2.095, 2.097, 2.097, 2.098, 2.099, 2.099, 2.101, 2.101, 2.103, 2.104, 2.103, 2.102, 2.101,
+ 2.099, 2.098, 2.098, 2.098, 2.097, 2.096, 2.096, 2.095, 2.095, 2.095, 2.095, 2.095, 2.094, 2.094, 2.094, 2.094, 2.096, 2.097, 2.097, 2.097, 2.097, 2.098, 2.099, 2.101, 2.101, 2.101, 2.101, 2.104, 2.105, 2.105, 2.103, 2.102,
+ 2.101, 2.099, 2.099, 2.099, 2.099, 2.098, 2.097, 2.097, 2.097, 2.096, 2.096, 2.095, 2.095, 2.095, 2.095, 2.095, 2.096, 2.098, 2.098, 2.097, 2.097, 2.098, 2.099, 2.101, 2.101, 2.102, 2.103, 2.104, 2.105, 2.105, 2.104, 2.103,
+ 2.102, 2.102, 2.099, 2.098, 2.099, 2.099, 2.099, 2.098, 2.097, 2.097, 2.097, 2.097, 2.097, 2.096, 2.096, 2.097, 2.098, 2.098, 2.099, 2.099, 2.099, 2.101, 2.101, 2.102, 2.104, 2.105, 2.106, 2.106, 2.106, 2.104, 2.104, 2.104,
+ 2.102, 2.101, 2.099, 2.099, 2.099, 2.101, 2.101, 2.101, 2.099, 2.098, 2.098, 2.098, 2.098, 2.098, 2.098, 2.098, 2.099, 2.099, 2.099, 2.099, 2.101, 2.101, 2.102, 2.103, 2.105, 2.106, 2.106, 2.106, 2.106, 2.105, 2.104, 2.104,
+ 2.099, 2.099, 2.099, 2.098, 2.098, 2.099, 2.101, 2.101, 2.099, 2.098, 2.097, 2.098, 2.098, 2.099, 2.098, 2.098, 2.099, 2.099, 2.101, 2.101, 2.101, 2.101, 2.102, 2.104, 2.105, 2.105, 2.105, 2.106, 2.106, 2.104, 2.104, 2.103,
+ 2.096, 2.097, 2.097, 2.097, 2.097, 2.099, 2.099, 2.099, 2.099, 2.097, 2.097, 2.098, 2.098, 2.099, 2.098, 2.097, 2.097, 2.099, 2.101, 2.101, 2.101, 2.101, 2.101, 2.103, 2.105, 2.105, 2.105, 2.104, 2.104, 2.103, 2.101, 2.101,
+ 2.096, 2.096, 2.096, 2.097, 2.097, 2.098, 2.098, 2.099, 2.097, 2.096, 2.096, 2.097, 2.098, 2.098, 2.097, 2.097, 2.096, 2.098, 2.098, 2.099, 2.101, 2.101, 2.101, 2.102, 2.104, 2.105, 2.104, 2.104, 2.103, 2.101, 2.099, 2.098,
+ 2.096, 2.096, 2.096, 2.096, 2.097, 2.097, 2.097, 2.097, 2.097, 2.097, 2.096, 2.097, 2.098, 2.097, 2.097, 2.096, 2.096, 2.098, 2.098, 2.098, 2.099, 2.099, 2.101, 2.101, 2.103, 2.103, 2.104, 2.104, 2.102, 2.101, 2.099, 2.098,
+ 2.097, 2.096, 2.095, 2.096, 2.098, 2.098, 2.098, 2.098, 2.097, 2.098, 2.097, 2.097, 2.097, 2.097, 2.096, 2.096, 2.096, 2.097, 2.097, 2.098, 2.099, 2.099, 2.099, 2.101, 2.102, 2.103, 2.104, 2.104, 2.104, 2.101, 2.099, 2.098,
+ 2.097, 2.096, 2.095, 2.097, 2.099, 2.099, 2.099, 2.099, 2.099, 2.099, 2.098, 2.098, 2.097, 2.096, 2.096, 2.097, 2.097, 2.098, 2.097, 2.099, 2.101, 2.099, 2.099, 2.099, 2.102, 2.102, 2.104, 2.105, 2.105, 2.102, 2.099, 2.098
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 3.431, 3.437, 3.439, 3.439, 3.436, 3.438, 3.441, 3.441, 3.441, 3.441, 3.442, 3.443, 3.443, 3.444, 3.446, 3.448, 3.451, 3.451, 3.452, 3.451, 3.449, 3.449, 3.452, 3.453, 3.454, 3.454, 3.453, 3.456, 3.456, 3.456, 3.451, 3.448,
+ 3.445, 3.446, 3.445, 3.449, 3.453, 3.451, 3.451, 3.446, 3.447, 3.446, 3.447, 3.451, 3.453, 3.455, 3.454, 3.453, 3.453, 3.454, 3.455, 3.456, 3.457, 3.459, 3.461, 3.462, 3.463, 3.463, 3.465, 3.466, 3.467, 3.465, 3.459, 3.457,
+ 3.449, 3.449, 3.449, 3.454, 3.455, 3.454, 3.453, 3.451, 3.451, 3.448, 3.451, 3.451, 3.455, 3.456, 3.457, 3.456, 3.456, 3.458, 3.457, 3.459, 3.459, 3.461, 3.464, 3.467, 3.467, 3.466, 3.468, 3.469, 3.471, 3.468, 3.465, 3.462,
+ 3.451, 3.448, 3.451, 3.453, 3.457, 3.455, 3.454, 3.449, 3.449, 3.448, 3.449, 3.449, 3.455, 3.455, 3.456, 3.455, 3.454, 3.455, 3.455, 3.457, 3.458, 3.458, 3.461, 3.464, 3.466, 3.468, 3.469, 3.469, 3.469, 3.468, 3.465, 3.463,
+ 3.449, 3.449, 3.451, 3.453, 3.456, 3.455, 3.452, 3.449, 3.448, 3.447, 3.446, 3.448, 3.451, 3.452, 3.454, 3.455, 3.455, 3.454, 3.457, 3.458, 3.458, 3.459, 3.461, 3.464, 3.464, 3.466, 3.467, 3.469, 3.469, 3.467, 3.463, 3.459,
+ 3.449, 3.451, 3.452, 3.454, 3.455, 3.454, 3.452, 3.449, 3.447, 3.447, 3.446, 3.449, 3.449, 3.451, 3.452, 3.452, 3.452, 3.452, 3.454, 3.455, 3.457, 3.459, 3.461, 3.464, 3.464, 3.466, 3.465, 3.468, 3.468, 3.469, 3.465, 3.462,
+ 3.451, 3.451, 3.452, 3.453, 3.453, 3.453, 3.451, 3.449, 3.449, 3.447, 3.446, 3.447, 3.448, 3.451, 3.451, 3.451, 3.453, 3.452, 3.452, 3.452, 3.457, 3.458, 3.461, 3.463, 3.464, 3.465, 3.464, 3.466, 3.468, 3.469, 3.466, 3.463,
+ 3.451, 3.451, 3.451, 3.454, 3.453, 3.453, 3.451, 3.448, 3.448, 3.444, 3.444, 3.444, 3.448, 3.449, 3.449, 3.448, 3.449, 3.449, 3.451, 3.452, 3.454, 3.457, 3.461, 3.462, 3.464, 3.466, 3.466, 3.467, 3.468, 3.469, 3.466, 3.465,
+ 3.451, 3.451, 3.452, 3.455, 3.454, 3.453, 3.449, 3.448, 3.447, 3.447, 3.444, 3.446, 3.446, 3.446, 3.446, 3.447, 3.449, 3.449, 3.451, 3.452, 3.455, 3.457, 3.461, 3.462, 3.464, 3.466, 3.466, 3.468, 3.469, 3.468, 3.465, 3.462,
+ 3.453, 3.452, 3.454, 3.456, 3.455, 3.453, 3.449, 3.447, 3.446, 3.446, 3.445, 3.448, 3.447, 3.446, 3.445, 3.446, 3.448, 3.448, 3.449, 3.453, 3.455, 3.457, 3.459, 3.461, 3.464, 3.466, 3.467, 3.468, 3.468, 3.467, 3.465, 3.463,
+ 3.453, 3.453, 3.454, 3.456, 3.456, 3.451, 3.448, 3.447, 3.447, 3.446, 3.445, 3.446, 3.446, 3.446, 3.446, 3.446, 3.448, 3.448, 3.449, 3.452, 3.454, 3.456, 3.459, 3.459, 3.461, 3.465, 3.466, 3.468, 3.468, 3.468, 3.467, 3.465,
+ 3.451, 3.451, 3.452, 3.455, 3.456, 3.452, 3.448, 3.446, 3.446, 3.444, 3.446, 3.445, 3.446, 3.446, 3.447, 3.448, 3.449, 3.449, 3.449, 3.452, 3.453, 3.454, 3.458, 3.458, 3.461, 3.461, 3.464, 3.469, 3.469, 3.468, 3.466, 3.466,
+ 3.452, 3.452, 3.453, 3.454, 3.454, 3.453, 3.447, 3.446, 3.444, 3.444, 3.444, 3.444, 3.445, 3.446, 3.448, 3.451, 3.452, 3.453, 3.451, 3.453, 3.453, 3.455, 3.458, 3.459, 3.461, 3.462, 3.463, 3.468, 3.471, 3.469, 3.467, 3.467,
+ 3.454, 3.455, 3.457, 3.458, 3.458, 3.455, 3.449, 3.446, 3.445, 3.445, 3.445, 3.445, 3.447, 3.447, 3.448, 3.451, 3.452, 3.453, 3.452, 3.452, 3.452, 3.454, 3.457, 3.459, 3.459, 3.462, 3.464, 3.468, 3.469, 3.467, 3.465, 3.465,
+ 3.457, 3.455, 3.455, 3.459, 3.458, 3.454, 3.451, 3.448, 3.445, 3.445, 3.445, 3.446, 3.448, 3.449, 3.451, 3.452, 3.451, 3.453, 3.452, 3.452, 3.453, 3.457, 3.457, 3.461, 3.461, 3.463, 3.465, 3.468, 3.471, 3.468, 3.465, 3.463,
+ 3.458, 3.456, 3.456, 3.459, 3.457, 3.454, 3.452, 3.449, 3.447, 3.445, 3.446, 3.447, 3.447, 3.448, 3.449, 3.448, 3.449, 3.451, 3.451, 3.451, 3.451, 3.455, 3.456, 3.458, 3.462, 3.463, 3.464, 3.465, 3.467, 3.466, 3.464, 3.462,
+ 3.457, 3.456, 3.455, 3.457, 3.457, 3.454, 3.449, 3.447, 3.445, 3.445, 3.446, 3.446, 3.448, 3.446, 3.448, 3.449, 3.449, 3.451, 3.451, 3.451, 3.453, 3.455, 3.457, 3.459, 3.462, 3.464, 3.464, 3.465, 3.467, 3.464, 3.464, 3.463,
+ 3.458, 3.457, 3.455, 3.456, 3.456, 3.456, 3.453, 3.449, 3.447, 3.448, 3.447, 3.447, 3.447, 3.447, 3.447, 3.448, 3.449, 3.451, 3.451, 3.452, 3.453, 3.455, 3.458, 3.459, 3.459, 3.463, 3.464, 3.463, 3.464, 3.463, 3.464, 3.464,
+ 3.457, 3.456, 3.456, 3.456, 3.456, 3.456, 3.455, 3.449, 3.447, 3.448, 3.451, 3.449, 3.449, 3.449, 3.448, 3.449, 3.449, 3.451, 3.451, 3.452, 3.453, 3.456, 3.458, 3.459, 3.461, 3.462, 3.464, 3.464, 3.465, 3.464, 3.464, 3.463,
+ 3.457, 3.456, 3.455, 3.455, 3.455, 3.455, 3.453, 3.451, 3.449, 3.448, 3.448, 3.449, 3.449, 3.449, 3.448, 3.449, 3.451, 3.452, 3.452, 3.453, 3.454, 3.457, 3.458, 3.459, 3.462, 3.464, 3.465, 3.464, 3.465, 3.464, 3.463, 3.463,
+ 3.456, 3.456, 3.454, 3.453, 3.454, 3.453, 3.452, 3.451, 3.449, 3.448, 3.448, 3.449, 3.451, 3.451, 3.448, 3.449, 3.451, 3.454, 3.454, 3.454, 3.455, 3.457, 3.458, 3.461, 3.461, 3.462, 3.464, 3.464, 3.466, 3.465, 3.464, 3.464,
+ 3.459, 3.457, 3.456, 3.455, 3.454, 3.453, 3.453, 3.452, 3.452, 3.451, 3.449, 3.449, 3.449, 3.448, 3.447, 3.449, 3.451, 3.454, 3.455, 3.455, 3.456, 3.458, 3.459, 3.461, 3.461, 3.462, 3.463, 3.466, 3.469, 3.465, 3.465, 3.464,
+ 3.463, 3.461, 3.458, 3.458, 3.457, 3.456, 3.456, 3.454, 3.454, 3.452, 3.452, 3.451, 3.451, 3.449, 3.448, 3.448, 3.452, 3.454, 3.456, 3.455, 3.457, 3.458, 3.461, 3.464, 3.462, 3.461, 3.463, 3.466, 3.469, 3.469, 3.467, 3.467,
+ 3.466, 3.462, 3.461, 3.461, 3.459, 3.457, 3.457, 3.457, 3.456, 3.454, 3.455, 3.455, 3.455, 3.451, 3.452, 3.453, 3.454, 3.455, 3.456, 3.456, 3.459, 3.462, 3.463, 3.466, 3.466, 3.467, 3.466, 3.469, 3.471, 3.469, 3.468, 3.466,
+ 3.467, 3.463, 3.463, 3.459, 3.461, 3.459, 3.461, 3.459, 3.458, 3.456, 3.457, 3.456, 3.457, 3.455, 3.456, 3.455, 3.456, 3.457, 3.459, 3.461, 3.461, 3.464, 3.465, 3.468, 3.469, 3.469, 3.469, 3.469, 3.471, 3.468, 3.467, 3.468,
+ 3.467, 3.464, 3.459, 3.459, 3.462, 3.462, 3.462, 3.461, 3.461, 3.462, 3.461, 3.459, 3.461, 3.459, 3.458, 3.457, 3.459, 3.461, 3.462, 3.463, 3.464, 3.466, 3.468, 3.469, 3.471, 3.469, 3.471, 3.472, 3.471, 3.467, 3.466, 3.464,
+ 3.464, 3.462, 3.458, 3.457, 3.458, 3.461, 3.461, 3.461, 3.461, 3.462, 3.462, 3.461, 3.461, 3.459, 3.459, 3.459, 3.461, 3.461, 3.464, 3.465, 3.465, 3.468, 3.468, 3.469, 3.471, 3.469, 3.469, 3.469, 3.469, 3.464, 3.462, 3.459,
+ 3.457, 3.458, 3.455, 3.456, 3.456, 3.457, 3.459, 3.459, 3.459, 3.459, 3.458, 3.456, 3.458, 3.457, 3.458, 3.458, 3.458, 3.459, 3.461, 3.463, 3.465, 3.466, 3.468, 3.469, 3.471, 3.468, 3.466, 3.466, 3.465, 3.461, 3.459, 3.457,
+ 3.456, 3.455, 3.454, 3.454, 3.455, 3.456, 3.458, 3.459, 3.459, 3.456, 3.456, 3.456, 3.455, 3.456, 3.455, 3.455, 3.455, 3.454, 3.457, 3.461, 3.462, 3.464, 3.465, 3.467, 3.467, 3.466, 3.464, 3.464, 3.463, 3.461, 3.457, 3.456,
+ 3.456, 3.454, 3.453, 3.454, 3.454, 3.455, 3.458, 3.459, 3.459, 3.456, 3.455, 3.455, 3.455, 3.451, 3.453, 3.454, 3.454, 3.455, 3.455, 3.458, 3.461, 3.462, 3.461, 3.463, 3.465, 3.464, 3.463, 3.463, 3.462, 3.459, 3.456, 3.451,
+ 3.455, 3.452, 3.452, 3.452, 3.455, 3.457, 3.459, 3.459, 3.459, 3.458, 3.456, 3.456, 3.455, 3.453, 3.453, 3.455, 3.457, 3.457, 3.457, 3.461, 3.461, 3.461, 3.459, 3.462, 3.464, 3.464, 3.464, 3.463, 3.463, 3.459, 3.454, 3.451,
+ 3.452, 3.452, 3.452, 3.453, 3.457, 3.458, 3.458, 3.459, 3.459, 3.458, 3.457, 3.457, 3.455, 3.455, 3.458, 3.459, 3.458, 3.459, 3.459, 3.461, 3.461, 3.461, 3.459, 3.461, 3.463, 3.464, 3.466, 3.463, 3.461, 3.458, 3.453, 3.449
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 3.403, 3.399, 3.395, 3.391, 3.392, 3.394, 3.401, 3.403, 3.404, 3.404, 3.403, 3.399, 3.398, 3.396, 3.395, 3.396, 3.399, 3.403, 3.404, 3.401, 3.399, 3.398, 3.397, 3.401, 3.401, 3.401, 3.396, 3.394, 3.397, 3.396, 3.388, 3.364,
+ 3.403, 3.399, 3.393, 3.389, 3.391, 3.395, 3.401, 3.404, 3.406, 3.404, 3.403, 3.399, 3.399, 3.397, 3.397, 3.397, 3.401, 3.404, 3.404, 3.402, 3.398, 3.396, 3.397, 3.401, 3.401, 3.401, 3.395, 3.394, 3.396, 3.393, 3.387, 3.364,
+ 3.399, 3.398, 3.391, 3.385, 3.386, 3.395, 3.402, 3.405, 3.405, 3.404, 3.402, 3.399, 3.399, 3.398, 3.398, 3.398, 3.401, 3.404, 3.405, 3.403, 3.399, 3.396, 3.396, 3.398, 3.401, 3.401, 3.398, 3.394, 3.392, 3.389, 3.386, 3.364,
+ 3.398, 3.393, 3.386, 3.382, 3.385, 3.392, 3.399, 3.403, 3.405, 3.404, 3.402, 3.398, 3.398, 3.397, 3.397, 3.398, 3.401, 3.404, 3.405, 3.403, 3.398, 3.394, 3.394, 3.398, 3.401, 3.401, 3.396, 3.392, 3.391, 3.388, 3.383, 3.362,
+ 3.396, 3.391, 3.384, 3.381, 3.384, 3.389, 3.398, 3.402, 3.402, 3.401, 3.399, 3.395, 3.395, 3.395, 3.397, 3.397, 3.401, 3.402, 3.404, 3.403, 3.399, 3.394, 3.393, 3.395, 3.399, 3.399, 3.397, 3.391, 3.388, 3.384, 3.381, 3.363,
+ 3.391, 3.386, 3.382, 3.381, 3.385, 3.389, 3.396, 3.398, 3.399, 3.399, 3.398, 3.395, 3.394, 3.394, 3.395, 3.397, 3.399, 3.401, 3.403, 3.401, 3.398, 3.394, 3.393, 3.393, 3.394, 3.396, 3.395, 3.392, 3.387, 3.382, 3.378, 3.361,
+ 3.389, 3.386, 3.379, 3.379, 3.383, 3.388, 3.394, 3.397, 3.397, 3.397, 3.395, 3.393, 3.393, 3.393, 3.395, 3.395, 3.397, 3.398, 3.401, 3.399, 3.397, 3.395, 3.394, 3.391, 3.393, 3.393, 3.393, 3.389, 3.387, 3.381, 3.374, 3.357,
+ 3.386, 3.383, 3.376, 3.375, 3.381, 3.386, 3.394, 3.396, 3.396, 3.394, 3.392, 3.392, 3.394, 3.394, 3.395, 3.394, 3.396, 3.398, 3.399, 3.397, 3.397, 3.394, 3.393, 3.391, 3.389, 3.391, 3.392, 3.388, 3.386, 3.379, 3.372, 3.355,
+ 3.386, 3.379, 3.373, 3.373, 3.378, 3.384, 3.391, 3.396, 3.395, 3.393, 3.389, 3.391, 3.391, 3.393, 3.394, 3.393, 3.394, 3.396, 3.397, 3.396, 3.393, 3.394, 3.393, 3.392, 3.389, 3.389, 3.389, 3.389, 3.386, 3.378, 3.371, 3.351,
+ 3.379, 3.375, 3.371, 3.371, 3.376, 3.381, 3.388, 3.393, 3.394, 3.391, 3.386, 3.386, 3.388, 3.393, 3.392, 3.392, 3.393, 3.395, 3.394, 3.392, 3.389, 3.391, 3.391, 3.392, 3.389, 3.388, 3.389, 3.389, 3.383, 3.377, 3.369, 3.351,
+ 3.373, 3.371, 3.367, 3.368, 3.373, 3.381, 3.387, 3.389, 3.391, 3.389, 3.385, 3.386, 3.383, 3.389, 3.389, 3.392, 3.392, 3.394, 3.393, 3.389, 3.387, 3.387, 3.388, 3.389, 3.389, 3.388, 3.386, 3.386, 3.382, 3.374, 3.367, 3.345,
+ 3.371, 3.369, 3.365, 3.366, 3.373, 3.379, 3.386, 3.389, 3.391, 3.389, 3.385, 3.384, 3.382, 3.386, 3.387, 3.389, 3.391, 3.392, 3.391, 3.387, 3.385, 3.385, 3.386, 3.388, 3.388, 3.388, 3.386, 3.385, 3.381, 3.373, 3.367, 3.345,
+ 3.367, 3.365, 3.365, 3.366, 3.374, 3.379, 3.384, 3.388, 3.389, 3.387, 3.384, 3.383, 3.383, 3.385, 3.385, 3.386, 3.388, 3.389, 3.388, 3.386, 3.383, 3.382, 3.384, 3.386, 3.387, 3.386, 3.381, 3.381, 3.379, 3.372, 3.364, 3.344,
+ 3.365, 3.363, 3.362, 3.367, 3.375, 3.379, 3.383, 3.384, 3.386, 3.384, 3.381, 3.379, 3.379, 3.383, 3.383, 3.384, 3.385, 3.387, 3.387, 3.385, 3.381, 3.381, 3.382, 3.384, 3.384, 3.385, 3.382, 3.379, 3.374, 3.369, 3.359, 3.343,
+ 3.359, 3.358, 3.361, 3.364, 3.373, 3.381, 3.384, 3.384, 3.385, 3.384, 3.381, 3.377, 3.379, 3.379, 3.382, 3.383, 3.384, 3.386, 3.386, 3.385, 3.381, 3.379, 3.381, 3.382, 3.382, 3.383, 3.379, 3.377, 3.371, 3.364, 3.357, 3.339,
+ 3.357, 3.356, 3.356, 3.362, 3.372, 3.379, 3.384, 3.384, 3.383, 3.381, 3.378, 3.376, 3.377, 3.379, 3.381, 3.382, 3.383, 3.385, 3.385, 3.383, 3.379, 3.379, 3.379, 3.381, 3.381, 3.382, 3.379, 3.372, 3.367, 3.362, 3.354, 3.334,
+ 3.357, 3.354, 3.357, 3.361, 3.372, 3.381, 3.385, 3.385, 3.384, 3.379, 3.376, 3.376, 3.376, 3.379, 3.381, 3.383, 3.383, 3.384, 3.383, 3.379, 3.378, 3.381, 3.379, 3.379, 3.379, 3.379, 3.378, 3.371, 3.363, 3.358, 3.354, 3.332,
+ 3.354, 3.351, 3.354, 3.359, 3.371, 3.379, 3.382, 3.384, 3.381, 3.378, 3.375, 3.374, 3.376, 3.378, 3.381, 3.383, 3.384, 3.382, 3.377, 3.377, 3.376, 3.377, 3.378, 3.378, 3.379, 3.379, 3.376, 3.367, 3.361, 3.357, 3.352, 3.333,
+ 3.352, 3.349, 3.351, 3.357, 3.372, 3.381, 3.383, 3.383, 3.381, 3.376, 3.372, 3.373, 3.375, 3.377, 3.382, 3.384, 3.384, 3.379, 3.376, 3.374, 3.374, 3.375, 3.375, 3.376, 3.377, 3.376, 3.373, 3.366, 3.361, 3.356, 3.347, 3.332,
+ 3.347, 3.346, 3.346, 3.355, 3.371, 3.377, 3.382, 3.381, 3.379, 3.372, 3.371, 3.371, 3.372, 3.375, 3.379, 3.383, 3.384, 3.379, 3.374, 3.373, 3.371, 3.373, 3.374, 3.375, 3.374, 3.374, 3.371, 3.365, 3.359, 3.352, 3.343, 3.331,
+ 3.345, 3.344, 3.345, 3.353, 3.367, 3.374, 3.382, 3.382, 3.376, 3.371, 3.369, 3.368, 3.369, 3.373, 3.377, 3.381, 3.379, 3.376, 3.373, 3.369, 3.368, 3.371, 3.372, 3.373, 3.371, 3.371, 3.369, 3.363, 3.357, 3.349, 3.341, 3.326,
+ 3.343, 3.341, 3.344, 3.351, 3.362, 3.371, 3.376, 3.376, 3.372, 3.369, 3.367, 3.366, 3.367, 3.369, 3.376, 3.378, 3.378, 3.375, 3.371, 3.367, 3.367, 3.368, 3.369, 3.369, 3.369, 3.368, 3.365, 3.361, 3.354, 3.347, 3.338, 3.321,
+ 3.341, 3.339, 3.342, 3.349, 3.359, 3.367, 3.371, 3.372, 3.371, 3.368, 3.366, 3.363, 3.365, 3.368, 3.371, 3.374, 3.376, 3.374, 3.368, 3.365, 3.365, 3.366, 3.368, 3.367, 3.367, 3.363, 3.361, 3.356, 3.352, 3.346, 3.336, 3.317,
+ 3.338, 3.336, 3.338, 3.346, 3.359, 3.364, 3.368, 3.369, 3.367, 3.366, 3.363, 3.362, 3.364, 3.364, 3.367, 3.371, 3.372, 3.369, 3.365, 3.362, 3.362, 3.365, 3.367, 3.367, 3.366, 3.362, 3.357, 3.353, 3.349, 3.342, 3.335, 3.317,
+ 3.334, 3.334, 3.336, 3.346, 3.354, 3.361, 3.365, 3.365, 3.365, 3.362, 3.361, 3.361, 3.362, 3.362, 3.364, 3.366, 3.368, 3.366, 3.361, 3.357, 3.357, 3.359, 3.363, 3.365, 3.363, 3.361, 3.355, 3.351, 3.346, 3.339, 3.336, 3.317,
+ 3.332, 3.332, 3.334, 3.344, 3.354, 3.359, 3.363, 3.365, 3.363, 3.361, 3.359, 3.359, 3.363, 3.363, 3.365, 3.365, 3.367, 3.366, 3.358, 3.356, 3.356, 3.358, 3.362, 3.364, 3.363, 3.359, 3.353, 3.348, 3.345, 3.339, 3.336, 3.315,
+ 3.332, 3.328, 3.331, 3.343, 3.351, 3.357, 3.358, 3.362, 3.361, 3.359, 3.357, 3.357, 3.361, 3.362, 3.364, 3.363, 3.363, 3.359, 3.356, 3.354, 3.354, 3.355, 3.358, 3.359, 3.361, 3.359, 3.351, 3.346, 3.344, 3.339, 3.336, 3.313,
+ 3.324, 3.324, 3.327, 3.334, 3.345, 3.351, 3.354, 3.356, 3.356, 3.354, 3.353, 3.354, 3.357, 3.358, 3.361, 3.358, 3.359, 3.355, 3.352, 3.348, 3.347, 3.351, 3.354, 3.358, 3.359, 3.355, 3.346, 3.343, 3.341, 3.336, 3.331, 3.312,
+ 3.318, 3.319, 3.321, 3.328, 3.337, 3.339, 3.345, 3.348, 3.346, 3.345, 3.347, 3.348, 3.351, 3.354, 3.356, 3.353, 3.354, 3.344, 3.343, 3.343, 3.343, 3.344, 3.347, 3.349, 3.353, 3.346, 3.341, 3.339, 3.331, 3.329, 3.325, 3.311,
+ 3.309, 3.313, 3.317, 3.325, 3.329, 3.332, 3.338, 3.339, 3.341, 3.339, 3.339, 3.342, 3.346, 3.346, 3.351, 3.351, 3.343, 3.338, 3.338, 3.339, 3.339, 3.339, 3.341, 3.341, 3.346, 3.343, 3.339, 3.332, 3.327, 3.326, 3.322, 3.309,
+ 3.305, 3.309, 3.317, 3.325, 3.328, 3.331, 3.334, 3.336, 3.337, 3.336, 3.339, 3.341, 3.344, 3.346, 3.348, 3.347, 3.341, 3.336, 3.335, 3.337, 3.339, 3.341, 3.339, 3.339, 3.342, 3.341, 3.337, 3.329, 3.326, 3.325, 3.321, 3.314,
+ 3.302, 3.306, 3.319, 3.325, 3.329, 3.331, 3.334, 3.335, 3.337, 3.337, 3.339, 3.341, 3.344, 3.346, 3.348, 3.347, 3.342, 3.336, 3.336, 3.338, 3.339, 3.341, 3.341, 3.341, 3.339, 3.338, 3.336, 3.331, 3.327, 3.324, 3.321, 3.314
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.726, 1.725, 1.723, 1.721, 1.723, 1.724, 1.724, 1.726, 1.727, 1.728, 1.729, 1.728, 1.725, 1.724, 1.726, 1.726, 1.727, 1.729, 1.727, 1.727, 1.724, 1.725, 1.724, 1.726, 1.725, 1.725, 1.724, 1.724, 1.722, 1.721, 1.719, 1.714,
+ 1.726, 1.724, 1.722, 1.721, 1.722, 1.723, 1.725, 1.726, 1.727, 1.727, 1.727, 1.726, 1.725, 1.725, 1.725, 1.726, 1.727, 1.728, 1.728, 1.727, 1.725, 1.724, 1.724, 1.725, 1.726, 1.725, 1.724, 1.723, 1.722, 1.721, 1.719, 1.714,
+ 1.724, 1.722, 1.719, 1.719, 1.721, 1.723, 1.726, 1.726, 1.727, 1.727, 1.727, 1.725, 1.726, 1.725, 1.725, 1.725, 1.726, 1.727, 1.728, 1.728, 1.725, 1.724, 1.724, 1.724, 1.726, 1.725, 1.724, 1.722, 1.722, 1.721, 1.719, 1.712,
+ 1.723, 1.721, 1.719, 1.719, 1.719, 1.723, 1.725, 1.726, 1.727, 1.727, 1.727, 1.726, 1.725, 1.725, 1.725, 1.726, 1.726, 1.728, 1.729, 1.728, 1.725, 1.723, 1.723, 1.725, 1.726, 1.725, 1.724, 1.722, 1.721, 1.719, 1.718, 1.711,
+ 1.722, 1.719, 1.719, 1.718, 1.719, 1.722, 1.725, 1.726, 1.726, 1.727, 1.727, 1.726, 1.725, 1.726, 1.726, 1.726, 1.727, 1.727, 1.728, 1.727, 1.726, 1.725, 1.724, 1.725, 1.726, 1.725, 1.724, 1.722, 1.721, 1.719, 1.715, 1.711,
+ 1.721, 1.717, 1.717, 1.716, 1.719, 1.722, 1.724, 1.726, 1.726, 1.727, 1.726, 1.726, 1.726, 1.726, 1.726, 1.727, 1.727, 1.727, 1.727, 1.727, 1.726, 1.725, 1.725, 1.725, 1.725, 1.725, 1.724, 1.722, 1.721, 1.718, 1.715, 1.707,
+ 1.718, 1.717, 1.716, 1.716, 1.718, 1.721, 1.725, 1.726, 1.726, 1.726, 1.725, 1.725, 1.725, 1.725, 1.726, 1.727, 1.727, 1.727, 1.727, 1.726, 1.726, 1.726, 1.725, 1.724, 1.724, 1.724, 1.723, 1.722, 1.721, 1.718, 1.715, 1.709,
+ 1.718, 1.716, 1.716, 1.715, 1.717, 1.721, 1.724, 1.725, 1.726, 1.725, 1.725, 1.724, 1.724, 1.725, 1.726, 1.726, 1.727, 1.727, 1.727, 1.726, 1.726, 1.726, 1.725, 1.723, 1.723, 1.723, 1.722, 1.722, 1.719, 1.718, 1.714, 1.709,
+ 1.718, 1.716, 1.715, 1.715, 1.717, 1.721, 1.723, 1.725, 1.726, 1.725, 1.724, 1.723, 1.724, 1.725, 1.725, 1.726, 1.726, 1.726, 1.726, 1.726, 1.726, 1.726, 1.725, 1.724, 1.724, 1.723, 1.722, 1.722, 1.721, 1.717, 1.714, 1.707,
+ 1.717, 1.716, 1.714, 1.714, 1.716, 1.721, 1.723, 1.725, 1.725, 1.725, 1.723, 1.723, 1.724, 1.726, 1.726, 1.726, 1.726, 1.725, 1.726, 1.725, 1.725, 1.725, 1.725, 1.725, 1.724, 1.723, 1.722, 1.721, 1.718, 1.716, 1.714, 1.706,
+ 1.715, 1.714, 1.714, 1.714, 1.716, 1.719, 1.722, 1.724, 1.725, 1.725, 1.723, 1.723, 1.724, 1.725, 1.725, 1.725, 1.726, 1.725, 1.725, 1.725, 1.724, 1.724, 1.724, 1.725, 1.724, 1.723, 1.722, 1.721, 1.718, 1.716, 1.713, 1.705,
+ 1.714, 1.714, 1.713, 1.714, 1.717, 1.719, 1.722, 1.724, 1.724, 1.724, 1.723, 1.722, 1.723, 1.724, 1.724, 1.724, 1.726, 1.725, 1.726, 1.725, 1.723, 1.723, 1.724, 1.724, 1.724, 1.723, 1.721, 1.719, 1.717, 1.715, 1.713, 1.706,
+ 1.712, 1.712, 1.712, 1.713, 1.718, 1.719, 1.721, 1.723, 1.724, 1.724, 1.722, 1.722, 1.723, 1.724, 1.724, 1.724, 1.725, 1.725, 1.725, 1.725, 1.723, 1.722, 1.724, 1.723, 1.723, 1.722, 1.721, 1.719, 1.717, 1.714, 1.711, 1.706,
+ 1.712, 1.711, 1.711, 1.713, 1.717, 1.719, 1.722, 1.724, 1.724, 1.723, 1.722, 1.722, 1.723, 1.724, 1.724, 1.724, 1.724, 1.725, 1.725, 1.724, 1.723, 1.722, 1.722, 1.722, 1.723, 1.722, 1.721, 1.718, 1.716, 1.714, 1.711, 1.706,
+ 1.711, 1.709, 1.711, 1.713, 1.716, 1.719, 1.722, 1.724, 1.724, 1.723, 1.722, 1.721, 1.722, 1.724, 1.724, 1.724, 1.723, 1.724, 1.724, 1.724, 1.722, 1.722, 1.722, 1.722, 1.722, 1.721, 1.719, 1.718, 1.714, 1.712, 1.709, 1.702,
+ 1.709, 1.709, 1.709, 1.712, 1.717, 1.719, 1.721, 1.723, 1.723, 1.723, 1.721, 1.721, 1.722, 1.723, 1.724, 1.723, 1.724, 1.724, 1.724, 1.724, 1.723, 1.722, 1.721, 1.721, 1.721, 1.721, 1.719, 1.716, 1.713, 1.711, 1.709, 1.701,
+ 1.708, 1.707, 1.709, 1.712, 1.716, 1.719, 1.722, 1.723, 1.723, 1.723, 1.721, 1.721, 1.721, 1.722, 1.723, 1.723, 1.723, 1.723, 1.724, 1.723, 1.722, 1.722, 1.721, 1.721, 1.721, 1.721, 1.719, 1.714, 1.712, 1.709, 1.708, 1.702,
+ 1.707, 1.707, 1.708, 1.711, 1.716, 1.721, 1.722, 1.722, 1.722, 1.721, 1.721, 1.721, 1.722, 1.722, 1.723, 1.723, 1.723, 1.722, 1.722, 1.722, 1.722, 1.721, 1.721, 1.721, 1.721, 1.721, 1.717, 1.714, 1.711, 1.709, 1.707, 1.702,
+ 1.706, 1.706, 1.707, 1.711, 1.714, 1.719, 1.722, 1.722, 1.722, 1.721, 1.719, 1.721, 1.721, 1.722, 1.723, 1.724, 1.723, 1.722, 1.722, 1.721, 1.719, 1.719, 1.721, 1.721, 1.719, 1.719, 1.716, 1.713, 1.711, 1.709, 1.706, 1.701,
+ 1.705, 1.704, 1.706, 1.709, 1.713, 1.718, 1.721, 1.722, 1.721, 1.719, 1.718, 1.719, 1.721, 1.722, 1.723, 1.724, 1.724, 1.721, 1.721, 1.721, 1.719, 1.719, 1.719, 1.719, 1.719, 1.717, 1.715, 1.713, 1.711, 1.707, 1.704, 1.699,
+ 1.703, 1.703, 1.704, 1.709, 1.712, 1.717, 1.719, 1.721, 1.719, 1.718, 1.717, 1.718, 1.719, 1.721, 1.722, 1.723, 1.723, 1.722, 1.719, 1.719, 1.718, 1.719, 1.719, 1.718, 1.717, 1.716, 1.714, 1.712, 1.709, 1.706, 1.703, 1.697,
+ 1.702, 1.703, 1.704, 1.708, 1.712, 1.715, 1.718, 1.719, 1.719, 1.717, 1.717, 1.717, 1.717, 1.718, 1.721, 1.722, 1.722, 1.721, 1.719, 1.718, 1.717, 1.718, 1.718, 1.717, 1.716, 1.714, 1.714, 1.711, 1.709, 1.706, 1.703, 1.697,
+ 1.702, 1.702, 1.703, 1.706, 1.709, 1.715, 1.717, 1.718, 1.717, 1.717, 1.716, 1.716, 1.717, 1.717, 1.719, 1.721, 1.721, 1.721, 1.719, 1.717, 1.716, 1.717, 1.717, 1.716, 1.714, 1.713, 1.712, 1.711, 1.708, 1.706, 1.702, 1.696,
+ 1.701, 1.701, 1.702, 1.706, 1.709, 1.714, 1.716, 1.717, 1.716, 1.716, 1.716, 1.715, 1.716, 1.716, 1.717, 1.718, 1.719, 1.719, 1.716, 1.715, 1.715, 1.715, 1.715, 1.715, 1.714, 1.713, 1.711, 1.709, 1.708, 1.704, 1.701, 1.695,
+ 1.699, 1.699, 1.702, 1.706, 1.708, 1.712, 1.714, 1.715, 1.715, 1.715, 1.714, 1.715, 1.714, 1.715, 1.716, 1.716, 1.716, 1.716, 1.714, 1.713, 1.713, 1.714, 1.715, 1.714, 1.714, 1.712, 1.709, 1.707, 1.706, 1.703, 1.701, 1.695,
+ 1.698, 1.699, 1.701, 1.705, 1.708, 1.711, 1.714, 1.714, 1.714, 1.714, 1.714, 1.714, 1.714, 1.715, 1.715, 1.716, 1.716, 1.715, 1.713, 1.713, 1.713, 1.714, 1.714, 1.714, 1.713, 1.712, 1.709, 1.707, 1.706, 1.703, 1.701, 1.696,
+ 1.698, 1.699, 1.701, 1.705, 1.707, 1.711, 1.712, 1.713, 1.713, 1.713, 1.713, 1.714, 1.714, 1.715, 1.715, 1.716, 1.715, 1.714, 1.713, 1.712, 1.712, 1.712, 1.713, 1.713, 1.713, 1.711, 1.709, 1.707, 1.705, 1.703, 1.701, 1.696,
+ 1.698, 1.697, 1.699, 1.702, 1.705, 1.707, 1.711, 1.711, 1.711, 1.711, 1.711, 1.712, 1.712, 1.713, 1.714, 1.714, 1.713, 1.711, 1.711, 1.711, 1.711, 1.711, 1.711, 1.711, 1.711, 1.711, 1.708, 1.706, 1.704, 1.703, 1.699, 1.696,
+ 1.694, 1.695, 1.697, 1.699, 1.702, 1.705, 1.706, 1.707, 1.707, 1.708, 1.708, 1.708, 1.709, 1.711, 1.711, 1.711, 1.708, 1.708, 1.708, 1.707, 1.707, 1.707, 1.708, 1.708, 1.709, 1.708, 1.706, 1.703, 1.702, 1.701, 1.698, 1.696,
+ 1.692, 1.692, 1.695, 1.698, 1.699, 1.701, 1.704, 1.704, 1.704, 1.704, 1.705, 1.706, 1.707, 1.709, 1.709, 1.707, 1.706, 1.704, 1.704, 1.705, 1.705, 1.706, 1.706, 1.706, 1.706, 1.706, 1.703, 1.702, 1.701, 1.699, 1.696, 1.694,
+ 1.691, 1.692, 1.695, 1.697, 1.699, 1.699, 1.702, 1.703, 1.703, 1.702, 1.703, 1.704, 1.706, 1.707, 1.708, 1.706, 1.705, 1.703, 1.703, 1.703, 1.704, 1.705, 1.705, 1.705, 1.705, 1.704, 1.703, 1.701, 1.699, 1.698, 1.696, 1.695,
+ 1.689, 1.691, 1.696, 1.698, 1.699, 1.699, 1.701, 1.702, 1.702, 1.702, 1.703, 1.703, 1.706, 1.707, 1.708, 1.706, 1.705, 1.703, 1.703, 1.703, 1.703, 1.704, 1.704, 1.705, 1.704, 1.704, 1.702, 1.701, 1.698, 1.698, 1.696, 1.696
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 1.425, 1.393, 1.341, 1.295, 1.258, 1.226, 1.201, 1.181, 1.162, 1.146, 1.133, 1.123, 1.115, 1.111, 1.107, 1.106, 1.106, 1.107, 1.108, 1.111, 1.114, 1.122, 1.133, 1.148, 1.164, 1.184, 1.208, 1.236, 1.271, 1.309, 1.359, 1.381,
+ 1.397, 1.367, 1.317, 1.274, 1.237, 1.207, 1.183, 1.163, 1.146, 1.133, 1.123, 1.114, 1.107, 1.101, 1.098, 1.096, 1.096, 1.096, 1.097, 1.102, 1.106, 1.112, 1.122, 1.133, 1.148, 1.166, 1.187, 1.215, 1.249, 1.288, 1.335, 1.359,
+ 1.374, 1.341, 1.292, 1.251, 1.215, 1.186, 1.166, 1.146, 1.131, 1.117, 1.108, 1.099, 1.091, 1.088, 1.084, 1.082, 1.081, 1.082, 1.084, 1.088, 1.093, 1.098, 1.107, 1.118, 1.133, 1.149, 1.169, 1.195, 1.228, 1.267, 1.313, 1.335,
+ 1.352, 1.318, 1.271, 1.231, 1.196, 1.169, 1.149, 1.131, 1.115, 1.103, 1.093, 1.086, 1.079, 1.074, 1.071, 1.069, 1.069, 1.069, 1.071, 1.076, 1.079, 1.085, 1.094, 1.102, 1.117, 1.133, 1.152, 1.176, 1.208, 1.246, 1.289, 1.313,
+ 1.333, 1.298, 1.253, 1.212, 1.179, 1.153, 1.134, 1.116, 1.102, 1.089, 1.079, 1.072, 1.066, 1.062, 1.059, 1.058, 1.057, 1.057, 1.059, 1.064, 1.068, 1.072, 1.081, 1.091, 1.102, 1.119, 1.137, 1.161, 1.191, 1.227, 1.271, 1.293,
+ 1.317, 1.281, 1.235, 1.196, 1.165, 1.139, 1.119, 1.104, 1.089, 1.078, 1.068, 1.062, 1.055, 1.051, 1.048, 1.047, 1.047, 1.047, 1.048, 1.053, 1.056, 1.061, 1.069, 1.079, 1.091, 1.105, 1.126, 1.147, 1.177, 1.212, 1.253, 1.278,
+ 1.301, 1.265, 1.221, 1.181, 1.151, 1.127, 1.108, 1.091, 1.078, 1.068, 1.059, 1.051, 1.045, 1.041, 1.038, 1.037, 1.036, 1.037, 1.038, 1.042, 1.046, 1.051, 1.059, 1.069, 1.081, 1.096, 1.113, 1.135, 1.164, 1.198, 1.238, 1.264,
+ 1.286, 1.251, 1.207, 1.169, 1.141, 1.116, 1.098, 1.081, 1.068, 1.058, 1.049, 1.042, 1.037, 1.033, 1.031, 1.029, 1.028, 1.028, 1.029, 1.033, 1.037, 1.043, 1.051, 1.059, 1.071, 1.086, 1.104, 1.124, 1.152, 1.185, 1.225, 1.252,
+ 1.275, 1.239, 1.196, 1.161, 1.132, 1.107, 1.089, 1.073, 1.059, 1.049, 1.041, 1.035, 1.028, 1.024, 1.023, 1.021, 1.021, 1.021, 1.022, 1.024, 1.029, 1.036, 1.043, 1.051, 1.063, 1.078, 1.095, 1.115, 1.143, 1.175, 1.214, 1.243,
+ 1.267, 1.227, 1.187, 1.152, 1.122, 1.101, 1.081, 1.067, 1.054, 1.042, 1.035, 1.028, 1.023, 1.018, 1.015, 1.014, 1.014, 1.014, 1.016, 1.019, 1.024, 1.029, 1.036, 1.045, 1.056, 1.071, 1.088, 1.107, 1.134, 1.167, 1.204, 1.234,
+ 1.261, 1.219, 1.179, 1.145, 1.116, 1.095, 1.076, 1.061, 1.047, 1.037, 1.031, 1.023, 1.018, 1.014, 1.011, 1.009, 1.009, 1.009, 1.011, 1.013, 1.018, 1.024, 1.031, 1.039, 1.049, 1.065, 1.083, 1.102, 1.128, 1.161, 1.196, 1.228,
+ 1.256, 1.213, 1.173, 1.139, 1.111, 1.091, 1.071, 1.056, 1.043, 1.033, 1.026, 1.019, 1.014, 1.009, 1.006, 1.005, 1.004, 1.004, 1.006, 1.009, 1.013, 1.018, 1.026, 1.035, 1.046, 1.061, 1.078, 1.097, 1.123, 1.154, 1.191, 1.222,
+ 1.251, 1.208, 1.169, 1.137, 1.108, 1.088, 1.069, 1.053, 1.039, 1.029, 1.023, 1.015, 1.011, 1.006, 1.004, 1.003, 1.001, 1.002, 1.003, 1.006, 1.009, 1.015, 1.022, 1.032, 1.044, 1.057, 1.076, 1.094, 1.119, 1.149, 1.186, 1.218,
+ 1.249, 1.205, 1.167, 1.133, 1.107, 1.085, 1.067, 1.052, 1.038, 1.029, 1.021, 1.013, 1.008, 1.004, 1.003, 1.001, 1.001, 1.001, 1.002, 1.004, 1.007, 1.013, 1.021, 1.031, 1.042, 1.055, 1.073, 1.093, 1.116, 1.147, 1.182, 1.218,
+ 1.249, 1.204, 1.165, 1.132, 1.106, 1.085, 1.067, 1.051, 1.038, 1.029, 1.019, 1.013, 1.007, 1.003, 1.002, 1.001, 1.001, 1.001, 1.001, 1.004, 1.007, 1.013, 1.021, 1.029, 1.042, 1.055, 1.072, 1.091, 1.115, 1.145, 1.181, 1.217,
+ 1.249, 1.204, 1.165, 1.132, 1.107, 1.086, 1.067, 1.051, 1.038, 1.029, 1.019, 1.013, 1.008, 1.004, 1.002, 1.001, 1.001, 1.001, 1.002, 1.004, 1.007, 1.014, 1.021, 1.029, 1.042, 1.056, 1.072, 1.091, 1.115, 1.145, 1.181, 1.217,
+ 1.251, 1.205, 1.166, 1.133, 1.108, 1.087, 1.068, 1.052, 1.039, 1.031, 1.021, 1.014, 1.009, 1.006, 1.003, 1.002, 1.001, 1.001, 1.003, 1.006, 1.009, 1.014, 1.022, 1.031, 1.043, 1.056, 1.073, 1.093, 1.116, 1.145, 1.182, 1.218,
+ 1.252, 1.208, 1.168, 1.137, 1.111, 1.089, 1.071, 1.055, 1.043, 1.033, 1.023, 1.016, 1.012, 1.009, 1.006, 1.005, 1.004, 1.004, 1.006, 1.008, 1.012, 1.017, 1.024, 1.034, 1.045, 1.059, 1.075, 1.095, 1.119, 1.149, 1.185, 1.218,
+ 1.256, 1.213, 1.173, 1.142, 1.115, 1.093, 1.075, 1.059, 1.047, 1.036, 1.027, 1.021, 1.016, 1.012, 1.011, 1.009, 1.008, 1.008, 1.009, 1.012, 1.016, 1.021, 1.028, 1.038, 1.049, 1.064, 1.081, 1.099, 1.126, 1.155, 1.192, 1.223,
+ 1.261, 1.221, 1.179, 1.148, 1.121, 1.099, 1.081, 1.065, 1.052, 1.042, 1.032, 1.026, 1.021, 1.017, 1.015, 1.014, 1.014, 1.013, 1.013, 1.016, 1.021, 1.026, 1.033, 1.043, 1.054, 1.068, 1.085, 1.106, 1.132, 1.161, 1.199, 1.228,
+ 1.267, 1.228, 1.188, 1.155, 1.128, 1.105, 1.086, 1.071, 1.059, 1.047, 1.038, 1.031, 1.027, 1.022, 1.021, 1.019, 1.019, 1.019, 1.019, 1.022, 1.026, 1.032, 1.038, 1.049, 1.061, 1.075, 1.092, 1.112, 1.138, 1.169, 1.207, 1.236,
+ 1.278, 1.241, 1.199, 1.164, 1.137, 1.114, 1.094, 1.078, 1.066, 1.055, 1.046, 1.038, 1.032, 1.029, 1.027, 1.027, 1.027, 1.027, 1.027, 1.029, 1.032, 1.038, 1.047, 1.056, 1.067, 1.083, 1.099, 1.121, 1.146, 1.178, 1.217, 1.244,
+ 1.291, 1.252, 1.211, 1.175, 1.147, 1.124, 1.103, 1.088, 1.075, 1.063, 1.054, 1.046, 1.041, 1.036, 1.035, 1.035, 1.035, 1.035, 1.036, 1.038, 1.041, 1.047, 1.055, 1.065, 1.075, 1.092, 1.111, 1.132, 1.157, 1.189, 1.231, 1.255,
+ 1.303, 1.265, 1.222, 1.187, 1.158, 1.133, 1.112, 1.097, 1.083, 1.072, 1.063, 1.054, 1.048, 1.043, 1.043, 1.043, 1.043, 1.043, 1.043, 1.046, 1.049, 1.055, 1.065, 1.074, 1.086, 1.102, 1.119, 1.144, 1.171, 1.203, 1.243, 1.268,
+ 1.317, 1.282, 1.236, 1.201, 1.171, 1.146, 1.125, 1.109, 1.095, 1.083, 1.072, 1.064, 1.058, 1.054, 1.052, 1.051, 1.051, 1.053, 1.054, 1.057, 1.061, 1.065, 1.074, 1.086, 1.099, 1.113, 1.133, 1.156, 1.183, 1.217, 1.259, 1.282,
+ 1.335, 1.301, 1.254, 1.218, 1.186, 1.159, 1.138, 1.121, 1.108, 1.095, 1.085, 1.076, 1.069, 1.066, 1.065, 1.063, 1.062, 1.063, 1.065, 1.068, 1.073, 1.078, 1.087, 1.098, 1.113, 1.126, 1.146, 1.171, 1.199, 1.235, 1.277, 1.299,
+ 1.356, 1.321, 1.274, 1.235, 1.202, 1.175, 1.153, 1.137, 1.121, 1.108, 1.097, 1.089, 1.084, 1.081, 1.077, 1.075, 1.075, 1.075, 1.077, 1.081, 1.086, 1.091, 1.099, 1.113, 1.126, 1.144, 1.162, 1.187, 1.218, 1.255, 1.297, 1.321,
+ 1.376, 1.344, 1.296, 1.257, 1.223, 1.194, 1.171, 1.153, 1.137, 1.124, 1.112, 1.104, 1.099, 1.095, 1.093, 1.091, 1.089, 1.091, 1.092, 1.095, 1.101, 1.108, 1.116, 1.128, 1.144, 1.161, 1.181, 1.206, 1.237, 1.275, 1.321, 1.347,
+ 1.403, 1.369, 1.319, 1.279, 1.244, 1.214, 1.191, 1.171, 1.154, 1.139, 1.129, 1.121, 1.115, 1.111, 1.109, 1.106, 1.105, 1.105, 1.108, 1.112, 1.117, 1.124, 1.135, 1.147, 1.162, 1.181, 1.203, 1.228, 1.262, 1.301, 1.347, 1.377,
+ 1.429, 1.398, 1.348, 1.306, 1.269, 1.237, 1.214, 1.191, 1.173, 1.158, 1.146, 1.138, 1.132, 1.128, 1.125, 1.123, 1.122, 1.123, 1.125, 1.129, 1.136, 1.142, 1.154, 1.166, 1.182, 1.203, 1.226, 1.253, 1.288, 1.329, 1.377, 1.406,
+ 1.465, 1.429, 1.377, 1.335, 1.295, 1.262, 1.236, 1.214, 1.194, 1.179, 1.167, 1.157, 1.151, 1.146, 1.144, 1.142, 1.142, 1.142, 1.144, 1.149, 1.154, 1.163, 1.174, 1.187, 1.205, 1.226, 1.251, 1.279, 1.315, 1.357, 1.406, 1.437,
+ 1.493, 1.465, 1.409, 1.364, 1.323, 1.289, 1.261, 1.235, 1.214, 1.194, 1.179, 1.171, 1.166, 1.163, 1.161, 1.161, 1.161, 1.161, 1.162, 1.164, 1.168, 1.175, 1.187, 1.205, 1.225, 1.251, 1.276, 1.306, 1.344, 1.387, 1.437, 1.455
+ ],
+ "sigma": 0.0007,
+ "sigma_Cb": 0.00098
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2500,
+ "ccm":
+ [
+ 1.95054, -0.57435, -0.37619,
+ -0.46945, 1.86661, -0.39716,
+ 0.07977, -1.14072, 2.06095
+ ]
+ },
+ {
+ "ct": 2800,
+ "ccm":
+ [
+ 1.94104, -0.60261, -0.33844,
+ -0.43162, 1.85422, -0.42261,
+ 0.03799, -0.95022, 1.91222
+ ]
+ },
+ {
+ "ct": 2900,
+ "ccm":
+ [
+ 1.91828, -0.59569, -0.32258,
+ -0.51902, 2.09091, -0.57189,
+ -0.03324, -0.73462, 1.76785
+ ]
+ },
+ {
+ "ct": 3620,
+ "ccm":
+ [
+ 1.97199, -0.66403, -0.30797,
+ -0.46411, 2.02612, -0.56201,
+ -0.07764, -0.61178, 1.68942
+ ]
+ },
+ {
+ "ct": 4560,
+ "ccm":
+ [
+ 2.15256, -0.84787, -0.30469,
+ -0.48422, 2.28962, -0.80541,
+ -0.15113, -0.53014, 1.68127
+ ]
+ },
+ {
+ "ct": 5600,
+ "ccm":
+ [
+ 2.04576, -0.74771, -0.29805,
+ -0.36332, 1.98993, -0.62662,
+ -0.09328, -0.46543, 1.55871
+ ]
+ },
+ {
+ "ct": 7400,
+ "ccm":
+ [
+ 2.37532, -0.83069, -0.54462,
+ -0.48279, 2.84309, -1.36031,
+ -0.21178, -0.66532, 1.87709
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.06,
+ "strength": 0.5,
+ "limit": 0.5
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx296_16mm.json b/src/ipa/rpi/pisp/data/imx296_16mm.json
new file mode 100644
index 00000000..87443745
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx296_16mm.json
@@ -0,0 +1,1247 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 3840
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 4724,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 860,
+ "reference_Y": 14551
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.751
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 226,
+ "slope": 0.01032
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2875.0, 0.4699, 0.3209,
+ 3610.0, 0.4089, 0.4265,
+ 4640.0, 0.3281, 0.5417,
+ 5912.0, 0.2992, 0.5771,
+ 7630.0, 0.2285, 0.6524
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.01783,
+ "transverse_neg": 0.02154
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.16,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.084, 2.084, 2.085, 2.085, 2.085, 2.087, 2.088, 2.087, 2.086, 2.082, 2.082, 2.084, 2.086, 2.088, 2.088, 2.088, 2.087, 2.088, 2.088, 2.091, 2.092, 2.093, 2.093, 2.093, 2.091, 2.091, 2.091, 2.091, 2.092, 2.092, 2.091, 2.088,
+ 2.086, 2.086, 2.087, 2.088, 2.089, 2.089, 2.091, 2.089, 2.087, 2.086, 2.087, 2.088, 2.091, 2.089, 2.091, 2.089, 2.091, 2.091, 2.091, 2.092, 2.093, 2.093, 2.094, 2.095, 2.094, 2.094, 2.095, 2.096, 2.096, 2.096, 2.096, 2.093,
+ 2.087, 2.087, 2.088, 2.091, 2.091, 2.091, 2.091, 2.089, 2.088, 2.088, 2.089, 2.091, 2.092, 2.092, 2.091, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.094, 2.095, 2.096, 2.096, 2.096, 2.096, 2.097, 2.097, 2.097, 2.097, 2.096,
+ 2.089, 2.088, 2.089, 2.091, 2.091, 2.092, 2.091, 2.089, 2.088, 2.088, 2.089, 2.091, 2.092, 2.092, 2.092, 2.091, 2.092, 2.092, 2.092, 2.092, 2.093, 2.094, 2.095, 2.096, 2.096, 2.096, 2.096, 2.097, 2.098, 2.097, 2.097, 2.097,
+ 2.091, 2.091, 2.091, 2.092, 2.092, 2.092, 2.091, 2.091, 2.089, 2.088, 2.088, 2.089, 2.091, 2.091, 2.091, 2.091, 2.092, 2.092, 2.092, 2.092, 2.093, 2.094, 2.095, 2.095, 2.096, 2.096, 2.097, 2.099, 2.098, 2.097, 2.097, 2.097,
+ 2.091, 2.091, 2.092, 2.093, 2.093, 2.093, 2.092, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.091, 2.091, 2.091, 2.091, 2.092, 2.092, 2.093, 2.095, 2.096, 2.096, 2.097, 2.097, 2.099, 2.099, 2.099, 2.098, 2.097,
+ 2.092, 2.092, 2.092, 2.093, 2.093, 2.092, 2.091, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.091, 2.091, 2.091, 2.092, 2.092, 2.093, 2.095, 2.096, 2.096, 2.097, 2.097, 2.099, 2.099, 2.101, 2.099, 2.098,
+ 2.092, 2.092, 2.093, 2.093, 2.093, 2.092, 2.091, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.089, 2.091, 2.091, 2.091, 2.092, 2.092, 2.094, 2.095, 2.096, 2.097, 2.098, 2.098, 2.098, 2.101, 2.101, 2.099, 2.098,
+ 2.092, 2.092, 2.093, 2.093, 2.094, 2.092, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.089, 2.089, 2.091, 2.092, 2.092, 2.092, 2.092, 2.094, 2.096, 2.096, 2.097, 2.098, 2.099, 2.099, 2.099, 2.099, 2.099, 2.097,
+ 2.093, 2.094, 2.094, 2.094, 2.095, 2.093, 2.092, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.094, 2.096, 2.096, 2.097, 2.098, 2.098, 2.101, 2.101, 2.099, 2.099, 2.099,
+ 2.094, 2.094, 2.094, 2.095, 2.095, 2.095, 2.091, 2.089, 2.091, 2.089, 2.089, 2.089, 2.091, 2.091, 2.089, 2.091, 2.091, 2.091, 2.092, 2.092, 2.093, 2.093, 2.095, 2.096, 2.097, 2.098, 2.098, 2.099, 2.101, 2.101, 2.099, 2.099,
+ 2.095, 2.094, 2.094, 2.095, 2.096, 2.095, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.091, 2.091, 2.093, 2.093, 2.093, 2.093, 2.094, 2.096, 2.097, 2.098, 2.099, 2.101, 2.101, 2.102, 2.101, 2.099,
+ 2.095, 2.095, 2.095, 2.095, 2.095, 2.095, 2.092, 2.089, 2.089, 2.088, 2.089, 2.089, 2.091, 2.091, 2.092, 2.092, 2.092, 2.092, 2.093, 2.093, 2.093, 2.093, 2.093, 2.095, 2.096, 2.099, 2.099, 2.101, 2.102, 2.103, 2.102, 2.101,
+ 2.095, 2.095, 2.095, 2.095, 2.095, 2.094, 2.092, 2.091, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.091, 2.093, 2.093, 2.093, 2.092, 2.092, 2.094, 2.094, 2.094, 2.096, 2.096, 2.098, 2.099, 2.102, 2.103, 2.103, 2.102, 2.102,
+ 2.095, 2.095, 2.095, 2.096, 2.096, 2.094, 2.093, 2.091, 2.091, 2.089, 2.089, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.093, 2.092, 2.093, 2.094, 2.094, 2.095, 2.096, 2.097, 2.098, 2.099, 2.103, 2.103, 2.103, 2.101, 2.101,
+ 2.095, 2.096, 2.096, 2.097, 2.096, 2.095, 2.093, 2.092, 2.091, 2.091, 2.091, 2.092, 2.092, 2.092, 2.092, 2.092, 2.092, 2.094, 2.093, 2.093, 2.094, 2.095, 2.096, 2.096, 2.097, 2.099, 2.101, 2.103, 2.103, 2.103, 2.101, 2.099,
+ 2.096, 2.096, 2.097, 2.096, 2.097, 2.096, 2.094, 2.092, 2.092, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.093, 2.093, 2.094, 2.093, 2.093, 2.093, 2.095, 2.096, 2.097, 2.099, 2.099, 2.101, 2.103, 2.103, 2.102, 2.101, 2.101,
+ 2.096, 2.096, 2.097, 2.097, 2.097, 2.096, 2.094, 2.093, 2.092, 2.092, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.093, 2.094, 2.093, 2.093, 2.094, 2.095, 2.096, 2.097, 2.099, 2.101, 2.101, 2.102, 2.102, 2.102, 2.101, 2.101,
+ 2.097, 2.096, 2.097, 2.097, 2.097, 2.097, 2.095, 2.093, 2.093, 2.093, 2.093, 2.092, 2.091, 2.091, 2.092, 2.092, 2.093, 2.094, 2.093, 2.093, 2.093, 2.095, 2.096, 2.097, 2.099, 2.101, 2.102, 2.102, 2.102, 2.101, 2.101, 2.101,
+ 2.098, 2.097, 2.096, 2.097, 2.097, 2.097, 2.095, 2.094, 2.094, 2.094, 2.092, 2.092, 2.092, 2.092, 2.092, 2.092, 2.094, 2.095, 2.095, 2.094, 2.093, 2.095, 2.096, 2.099, 2.101, 2.101, 2.102, 2.102, 2.102, 2.101, 2.101, 2.102,
+ 2.098, 2.097, 2.096, 2.096, 2.097, 2.097, 2.095, 2.094, 2.095, 2.093, 2.093, 2.092, 2.092, 2.092, 2.094, 2.094, 2.096, 2.095, 2.095, 2.095, 2.095, 2.096, 2.098, 2.099, 2.099, 2.101, 2.102, 2.103, 2.102, 2.102, 2.101, 2.102,
+ 2.098, 2.097, 2.097, 2.098, 2.097, 2.096, 2.095, 2.095, 2.095, 2.094, 2.093, 2.093, 2.094, 2.094, 2.094, 2.095, 2.096, 2.096, 2.096, 2.095, 2.097, 2.097, 2.098, 2.099, 2.099, 2.101, 2.101, 2.103, 2.104, 2.103, 2.102, 2.101,
+ 2.099, 2.098, 2.098, 2.098, 2.097, 2.096, 2.096, 2.095, 2.095, 2.095, 2.095, 2.095, 2.094, 2.094, 2.094, 2.094, 2.096, 2.097, 2.097, 2.097, 2.097, 2.098, 2.099, 2.101, 2.101, 2.101, 2.101, 2.104, 2.105, 2.105, 2.103, 2.102,
+ 2.101, 2.099, 2.099, 2.099, 2.099, 2.098, 2.097, 2.097, 2.097, 2.096, 2.096, 2.095, 2.095, 2.095, 2.095, 2.095, 2.096, 2.098, 2.098, 2.097, 2.097, 2.098, 2.099, 2.101, 2.101, 2.102, 2.103, 2.104, 2.105, 2.105, 2.104, 2.103,
+ 2.102, 2.102, 2.099, 2.098, 2.099, 2.099, 2.099, 2.098, 2.097, 2.097, 2.097, 2.097, 2.097, 2.096, 2.096, 2.097, 2.098, 2.098, 2.099, 2.099, 2.099, 2.101, 2.101, 2.102, 2.104, 2.105, 2.106, 2.106, 2.106, 2.104, 2.104, 2.104,
+ 2.102, 2.101, 2.099, 2.099, 2.099, 2.101, 2.101, 2.101, 2.099, 2.098, 2.098, 2.098, 2.098, 2.098, 2.098, 2.098, 2.099, 2.099, 2.099, 2.099, 2.101, 2.101, 2.102, 2.103, 2.105, 2.106, 2.106, 2.106, 2.106, 2.105, 2.104, 2.104,
+ 2.099, 2.099, 2.099, 2.098, 2.098, 2.099, 2.101, 2.101, 2.099, 2.098, 2.097, 2.098, 2.098, 2.099, 2.098, 2.098, 2.099, 2.099, 2.101, 2.101, 2.101, 2.101, 2.102, 2.104, 2.105, 2.105, 2.105, 2.106, 2.106, 2.104, 2.104, 2.103,
+ 2.096, 2.097, 2.097, 2.097, 2.097, 2.099, 2.099, 2.099, 2.099, 2.097, 2.097, 2.098, 2.098, 2.099, 2.098, 2.097, 2.097, 2.099, 2.101, 2.101, 2.101, 2.101, 2.101, 2.103, 2.105, 2.105, 2.105, 2.104, 2.104, 2.103, 2.101, 2.101,
+ 2.096, 2.096, 2.096, 2.097, 2.097, 2.098, 2.098, 2.099, 2.097, 2.096, 2.096, 2.097, 2.098, 2.098, 2.097, 2.097, 2.096, 2.098, 2.098, 2.099, 2.101, 2.101, 2.101, 2.102, 2.104, 2.105, 2.104, 2.104, 2.103, 2.101, 2.099, 2.098,
+ 2.096, 2.096, 2.096, 2.096, 2.097, 2.097, 2.097, 2.097, 2.097, 2.097, 2.096, 2.097, 2.098, 2.097, 2.097, 2.096, 2.096, 2.098, 2.098, 2.098, 2.099, 2.099, 2.101, 2.101, 2.103, 2.103, 2.104, 2.104, 2.102, 2.101, 2.099, 2.098,
+ 2.097, 2.096, 2.095, 2.096, 2.098, 2.098, 2.098, 2.098, 2.097, 2.098, 2.097, 2.097, 2.097, 2.097, 2.096, 2.096, 2.096, 2.097, 2.097, 2.098, 2.099, 2.099, 2.099, 2.101, 2.102, 2.103, 2.104, 2.104, 2.104, 2.101, 2.099, 2.098,
+ 2.097, 2.096, 2.095, 2.097, 2.099, 2.099, 2.099, 2.099, 2.099, 2.099, 2.098, 2.098, 2.097, 2.096, 2.096, 2.097, 2.097, 2.098, 2.097, 2.099, 2.101, 2.099, 2.099, 2.099, 2.102, 2.102, 2.104, 2.105, 2.105, 2.102, 2.099, 2.098
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 3.431, 3.437, 3.439, 3.439, 3.436, 3.438, 3.441, 3.441, 3.441, 3.441, 3.442, 3.443, 3.443, 3.444, 3.446, 3.448, 3.451, 3.451, 3.452, 3.451, 3.449, 3.449, 3.452, 3.453, 3.454, 3.454, 3.453, 3.456, 3.456, 3.456, 3.451, 3.448,
+ 3.445, 3.446, 3.445, 3.449, 3.453, 3.451, 3.451, 3.446, 3.447, 3.446, 3.447, 3.451, 3.453, 3.455, 3.454, 3.453, 3.453, 3.454, 3.455, 3.456, 3.457, 3.459, 3.461, 3.462, 3.463, 3.463, 3.465, 3.466, 3.467, 3.465, 3.459, 3.457,
+ 3.449, 3.449, 3.449, 3.454, 3.455, 3.454, 3.453, 3.451, 3.451, 3.448, 3.451, 3.451, 3.455, 3.456, 3.457, 3.456, 3.456, 3.458, 3.457, 3.459, 3.459, 3.461, 3.464, 3.467, 3.467, 3.466, 3.468, 3.469, 3.471, 3.468, 3.465, 3.462,
+ 3.451, 3.448, 3.451, 3.453, 3.457, 3.455, 3.454, 3.449, 3.449, 3.448, 3.449, 3.449, 3.455, 3.455, 3.456, 3.455, 3.454, 3.455, 3.455, 3.457, 3.458, 3.458, 3.461, 3.464, 3.466, 3.468, 3.469, 3.469, 3.469, 3.468, 3.465, 3.463,
+ 3.449, 3.449, 3.451, 3.453, 3.456, 3.455, 3.452, 3.449, 3.448, 3.447, 3.446, 3.448, 3.451, 3.452, 3.454, 3.455, 3.455, 3.454, 3.457, 3.458, 3.458, 3.459, 3.461, 3.464, 3.464, 3.466, 3.467, 3.469, 3.469, 3.467, 3.463, 3.459,
+ 3.449, 3.451, 3.452, 3.454, 3.455, 3.454, 3.452, 3.449, 3.447, 3.447, 3.446, 3.449, 3.449, 3.451, 3.452, 3.452, 3.452, 3.452, 3.454, 3.455, 3.457, 3.459, 3.461, 3.464, 3.464, 3.466, 3.465, 3.468, 3.468, 3.469, 3.465, 3.462,
+ 3.451, 3.451, 3.452, 3.453, 3.453, 3.453, 3.451, 3.449, 3.449, 3.447, 3.446, 3.447, 3.448, 3.451, 3.451, 3.451, 3.453, 3.452, 3.452, 3.452, 3.457, 3.458, 3.461, 3.463, 3.464, 3.465, 3.464, 3.466, 3.468, 3.469, 3.466, 3.463,
+ 3.451, 3.451, 3.451, 3.454, 3.453, 3.453, 3.451, 3.448, 3.448, 3.444, 3.444, 3.444, 3.448, 3.449, 3.449, 3.448, 3.449, 3.449, 3.451, 3.452, 3.454, 3.457, 3.461, 3.462, 3.464, 3.466, 3.466, 3.467, 3.468, 3.469, 3.466, 3.465,
+ 3.451, 3.451, 3.452, 3.455, 3.454, 3.453, 3.449, 3.448, 3.447, 3.447, 3.444, 3.446, 3.446, 3.446, 3.446, 3.447, 3.449, 3.449, 3.451, 3.452, 3.455, 3.457, 3.461, 3.462, 3.464, 3.466, 3.466, 3.468, 3.469, 3.468, 3.465, 3.462,
+ 3.453, 3.452, 3.454, 3.456, 3.455, 3.453, 3.449, 3.447, 3.446, 3.446, 3.445, 3.448, 3.447, 3.446, 3.445, 3.446, 3.448, 3.448, 3.449, 3.453, 3.455, 3.457, 3.459, 3.461, 3.464, 3.466, 3.467, 3.468, 3.468, 3.467, 3.465, 3.463,
+ 3.453, 3.453, 3.454, 3.456, 3.456, 3.451, 3.448, 3.447, 3.447, 3.446, 3.445, 3.446, 3.446, 3.446, 3.446, 3.446, 3.448, 3.448, 3.449, 3.452, 3.454, 3.456, 3.459, 3.459, 3.461, 3.465, 3.466, 3.468, 3.468, 3.468, 3.467, 3.465,
+ 3.451, 3.451, 3.452, 3.455, 3.456, 3.452, 3.448, 3.446, 3.446, 3.444, 3.446, 3.445, 3.446, 3.446, 3.447, 3.448, 3.449, 3.449, 3.449, 3.452, 3.453, 3.454, 3.458, 3.458, 3.461, 3.461, 3.464, 3.469, 3.469, 3.468, 3.466, 3.466,
+ 3.452, 3.452, 3.453, 3.454, 3.454, 3.453, 3.447, 3.446, 3.444, 3.444, 3.444, 3.444, 3.445, 3.446, 3.448, 3.451, 3.452, 3.453, 3.451, 3.453, 3.453, 3.455, 3.458, 3.459, 3.461, 3.462, 3.463, 3.468, 3.471, 3.469, 3.467, 3.467,
+ 3.454, 3.455, 3.457, 3.458, 3.458, 3.455, 3.449, 3.446, 3.445, 3.445, 3.445, 3.445, 3.447, 3.447, 3.448, 3.451, 3.452, 3.453, 3.452, 3.452, 3.452, 3.454, 3.457, 3.459, 3.459, 3.462, 3.464, 3.468, 3.469, 3.467, 3.465, 3.465,
+ 3.457, 3.455, 3.455, 3.459, 3.458, 3.454, 3.451, 3.448, 3.445, 3.445, 3.445, 3.446, 3.448, 3.449, 3.451, 3.452, 3.451, 3.453, 3.452, 3.452, 3.453, 3.457, 3.457, 3.461, 3.461, 3.463, 3.465, 3.468, 3.471, 3.468, 3.465, 3.463,
+ 3.458, 3.456, 3.456, 3.459, 3.457, 3.454, 3.452, 3.449, 3.447, 3.445, 3.446, 3.447, 3.447, 3.448, 3.449, 3.448, 3.449, 3.451, 3.451, 3.451, 3.451, 3.455, 3.456, 3.458, 3.462, 3.463, 3.464, 3.465, 3.467, 3.466, 3.464, 3.462,
+ 3.457, 3.456, 3.455, 3.457, 3.457, 3.454, 3.449, 3.447, 3.445, 3.445, 3.446, 3.446, 3.448, 3.446, 3.448, 3.449, 3.449, 3.451, 3.451, 3.451, 3.453, 3.455, 3.457, 3.459, 3.462, 3.464, 3.464, 3.465, 3.467, 3.464, 3.464, 3.463,
+ 3.458, 3.457, 3.455, 3.456, 3.456, 3.456, 3.453, 3.449, 3.447, 3.448, 3.447, 3.447, 3.447, 3.447, 3.447, 3.448, 3.449, 3.451, 3.451, 3.452, 3.453, 3.455, 3.458, 3.459, 3.459, 3.463, 3.464, 3.463, 3.464, 3.463, 3.464, 3.464,
+ 3.457, 3.456, 3.456, 3.456, 3.456, 3.456, 3.455, 3.449, 3.447, 3.448, 3.451, 3.449, 3.449, 3.449, 3.448, 3.449, 3.449, 3.451, 3.451, 3.452, 3.453, 3.456, 3.458, 3.459, 3.461, 3.462, 3.464, 3.464, 3.465, 3.464, 3.464, 3.463,
+ 3.457, 3.456, 3.455, 3.455, 3.455, 3.455, 3.453, 3.451, 3.449, 3.448, 3.448, 3.449, 3.449, 3.449, 3.448, 3.449, 3.451, 3.452, 3.452, 3.453, 3.454, 3.457, 3.458, 3.459, 3.462, 3.464, 3.465, 3.464, 3.465, 3.464, 3.463, 3.463,
+ 3.456, 3.456, 3.454, 3.453, 3.454, 3.453, 3.452, 3.451, 3.449, 3.448, 3.448, 3.449, 3.451, 3.451, 3.448, 3.449, 3.451, 3.454, 3.454, 3.454, 3.455, 3.457, 3.458, 3.461, 3.461, 3.462, 3.464, 3.464, 3.466, 3.465, 3.464, 3.464,
+ 3.459, 3.457, 3.456, 3.455, 3.454, 3.453, 3.453, 3.452, 3.452, 3.451, 3.449, 3.449, 3.449, 3.448, 3.447, 3.449, 3.451, 3.454, 3.455, 3.455, 3.456, 3.458, 3.459, 3.461, 3.461, 3.462, 3.463, 3.466, 3.469, 3.465, 3.465, 3.464,
+ 3.463, 3.461, 3.458, 3.458, 3.457, 3.456, 3.456, 3.454, 3.454, 3.452, 3.452, 3.451, 3.451, 3.449, 3.448, 3.448, 3.452, 3.454, 3.456, 3.455, 3.457, 3.458, 3.461, 3.464, 3.462, 3.461, 3.463, 3.466, 3.469, 3.469, 3.467, 3.467,
+ 3.466, 3.462, 3.461, 3.461, 3.459, 3.457, 3.457, 3.457, 3.456, 3.454, 3.455, 3.455, 3.455, 3.451, 3.452, 3.453, 3.454, 3.455, 3.456, 3.456, 3.459, 3.462, 3.463, 3.466, 3.466, 3.467, 3.466, 3.469, 3.471, 3.469, 3.468, 3.466,
+ 3.467, 3.463, 3.463, 3.459, 3.461, 3.459, 3.461, 3.459, 3.458, 3.456, 3.457, 3.456, 3.457, 3.455, 3.456, 3.455, 3.456, 3.457, 3.459, 3.461, 3.461, 3.464, 3.465, 3.468, 3.469, 3.469, 3.469, 3.469, 3.471, 3.468, 3.467, 3.468,
+ 3.467, 3.464, 3.459, 3.459, 3.462, 3.462, 3.462, 3.461, 3.461, 3.462, 3.461, 3.459, 3.461, 3.459, 3.458, 3.457, 3.459, 3.461, 3.462, 3.463, 3.464, 3.466, 3.468, 3.469, 3.471, 3.469, 3.471, 3.472, 3.471, 3.467, 3.466, 3.464,
+ 3.464, 3.462, 3.458, 3.457, 3.458, 3.461, 3.461, 3.461, 3.461, 3.462, 3.462, 3.461, 3.461, 3.459, 3.459, 3.459, 3.461, 3.461, 3.464, 3.465, 3.465, 3.468, 3.468, 3.469, 3.471, 3.469, 3.469, 3.469, 3.469, 3.464, 3.462, 3.459,
+ 3.457, 3.458, 3.455, 3.456, 3.456, 3.457, 3.459, 3.459, 3.459, 3.459, 3.458, 3.456, 3.458, 3.457, 3.458, 3.458, 3.458, 3.459, 3.461, 3.463, 3.465, 3.466, 3.468, 3.469, 3.471, 3.468, 3.466, 3.466, 3.465, 3.461, 3.459, 3.457,
+ 3.456, 3.455, 3.454, 3.454, 3.455, 3.456, 3.458, 3.459, 3.459, 3.456, 3.456, 3.456, 3.455, 3.456, 3.455, 3.455, 3.455, 3.454, 3.457, 3.461, 3.462, 3.464, 3.465, 3.467, 3.467, 3.466, 3.464, 3.464, 3.463, 3.461, 3.457, 3.456,
+ 3.456, 3.454, 3.453, 3.454, 3.454, 3.455, 3.458, 3.459, 3.459, 3.456, 3.455, 3.455, 3.455, 3.451, 3.453, 3.454, 3.454, 3.455, 3.455, 3.458, 3.461, 3.462, 3.461, 3.463, 3.465, 3.464, 3.463, 3.463, 3.462, 3.459, 3.456, 3.451,
+ 3.455, 3.452, 3.452, 3.452, 3.455, 3.457, 3.459, 3.459, 3.459, 3.458, 3.456, 3.456, 3.455, 3.453, 3.453, 3.455, 3.457, 3.457, 3.457, 3.461, 3.461, 3.461, 3.459, 3.462, 3.464, 3.464, 3.464, 3.463, 3.463, 3.459, 3.454, 3.451,
+ 3.452, 3.452, 3.452, 3.453, 3.457, 3.458, 3.458, 3.459, 3.459, 3.458, 3.457, 3.457, 3.455, 3.455, 3.458, 3.459, 3.458, 3.459, 3.459, 3.461, 3.461, 3.461, 3.459, 3.461, 3.463, 3.464, 3.466, 3.463, 3.461, 3.458, 3.453, 3.449
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 3.403, 3.399, 3.395, 3.391, 3.392, 3.394, 3.401, 3.403, 3.404, 3.404, 3.403, 3.399, 3.398, 3.396, 3.395, 3.396, 3.399, 3.403, 3.404, 3.401, 3.399, 3.398, 3.397, 3.401, 3.401, 3.401, 3.396, 3.394, 3.397, 3.396, 3.388, 3.364,
+ 3.403, 3.399, 3.393, 3.389, 3.391, 3.395, 3.401, 3.404, 3.406, 3.404, 3.403, 3.399, 3.399, 3.397, 3.397, 3.397, 3.401, 3.404, 3.404, 3.402, 3.398, 3.396, 3.397, 3.401, 3.401, 3.401, 3.395, 3.394, 3.396, 3.393, 3.387, 3.364,
+ 3.399, 3.398, 3.391, 3.385, 3.386, 3.395, 3.402, 3.405, 3.405, 3.404, 3.402, 3.399, 3.399, 3.398, 3.398, 3.398, 3.401, 3.404, 3.405, 3.403, 3.399, 3.396, 3.396, 3.398, 3.401, 3.401, 3.398, 3.394, 3.392, 3.389, 3.386, 3.364,
+ 3.398, 3.393, 3.386, 3.382, 3.385, 3.392, 3.399, 3.403, 3.405, 3.404, 3.402, 3.398, 3.398, 3.397, 3.397, 3.398, 3.401, 3.404, 3.405, 3.403, 3.398, 3.394, 3.394, 3.398, 3.401, 3.401, 3.396, 3.392, 3.391, 3.388, 3.383, 3.362,
+ 3.396, 3.391, 3.384, 3.381, 3.384, 3.389, 3.398, 3.402, 3.402, 3.401, 3.399, 3.395, 3.395, 3.395, 3.397, 3.397, 3.401, 3.402, 3.404, 3.403, 3.399, 3.394, 3.393, 3.395, 3.399, 3.399, 3.397, 3.391, 3.388, 3.384, 3.381, 3.363,
+ 3.391, 3.386, 3.382, 3.381, 3.385, 3.389, 3.396, 3.398, 3.399, 3.399, 3.398, 3.395, 3.394, 3.394, 3.395, 3.397, 3.399, 3.401, 3.403, 3.401, 3.398, 3.394, 3.393, 3.393, 3.394, 3.396, 3.395, 3.392, 3.387, 3.382, 3.378, 3.361,
+ 3.389, 3.386, 3.379, 3.379, 3.383, 3.388, 3.394, 3.397, 3.397, 3.397, 3.395, 3.393, 3.393, 3.393, 3.395, 3.395, 3.397, 3.398, 3.401, 3.399, 3.397, 3.395, 3.394, 3.391, 3.393, 3.393, 3.393, 3.389, 3.387, 3.381, 3.374, 3.357,
+ 3.386, 3.383, 3.376, 3.375, 3.381, 3.386, 3.394, 3.396, 3.396, 3.394, 3.392, 3.392, 3.394, 3.394, 3.395, 3.394, 3.396, 3.398, 3.399, 3.397, 3.397, 3.394, 3.393, 3.391, 3.389, 3.391, 3.392, 3.388, 3.386, 3.379, 3.372, 3.355,
+ 3.386, 3.379, 3.373, 3.373, 3.378, 3.384, 3.391, 3.396, 3.395, 3.393, 3.389, 3.391, 3.391, 3.393, 3.394, 3.393, 3.394, 3.396, 3.397, 3.396, 3.393, 3.394, 3.393, 3.392, 3.389, 3.389, 3.389, 3.389, 3.386, 3.378, 3.371, 3.351,
+ 3.379, 3.375, 3.371, 3.371, 3.376, 3.381, 3.388, 3.393, 3.394, 3.391, 3.386, 3.386, 3.388, 3.393, 3.392, 3.392, 3.393, 3.395, 3.394, 3.392, 3.389, 3.391, 3.391, 3.392, 3.389, 3.388, 3.389, 3.389, 3.383, 3.377, 3.369, 3.351,
+ 3.373, 3.371, 3.367, 3.368, 3.373, 3.381, 3.387, 3.389, 3.391, 3.389, 3.385, 3.386, 3.383, 3.389, 3.389, 3.392, 3.392, 3.394, 3.393, 3.389, 3.387, 3.387, 3.388, 3.389, 3.389, 3.388, 3.386, 3.386, 3.382, 3.374, 3.367, 3.345,
+ 3.371, 3.369, 3.365, 3.366, 3.373, 3.379, 3.386, 3.389, 3.391, 3.389, 3.385, 3.384, 3.382, 3.386, 3.387, 3.389, 3.391, 3.392, 3.391, 3.387, 3.385, 3.385, 3.386, 3.388, 3.388, 3.388, 3.386, 3.385, 3.381, 3.373, 3.367, 3.345,
+ 3.367, 3.365, 3.365, 3.366, 3.374, 3.379, 3.384, 3.388, 3.389, 3.387, 3.384, 3.383, 3.383, 3.385, 3.385, 3.386, 3.388, 3.389, 3.388, 3.386, 3.383, 3.382, 3.384, 3.386, 3.387, 3.386, 3.381, 3.381, 3.379, 3.372, 3.364, 3.344,
+ 3.365, 3.363, 3.362, 3.367, 3.375, 3.379, 3.383, 3.384, 3.386, 3.384, 3.381, 3.379, 3.379, 3.383, 3.383, 3.384, 3.385, 3.387, 3.387, 3.385, 3.381, 3.381, 3.382, 3.384, 3.384, 3.385, 3.382, 3.379, 3.374, 3.369, 3.359, 3.343,
+ 3.359, 3.358, 3.361, 3.364, 3.373, 3.381, 3.384, 3.384, 3.385, 3.384, 3.381, 3.377, 3.379, 3.379, 3.382, 3.383, 3.384, 3.386, 3.386, 3.385, 3.381, 3.379, 3.381, 3.382, 3.382, 3.383, 3.379, 3.377, 3.371, 3.364, 3.357, 3.339,
+ 3.357, 3.356, 3.356, 3.362, 3.372, 3.379, 3.384, 3.384, 3.383, 3.381, 3.378, 3.376, 3.377, 3.379, 3.381, 3.382, 3.383, 3.385, 3.385, 3.383, 3.379, 3.379, 3.379, 3.381, 3.381, 3.382, 3.379, 3.372, 3.367, 3.362, 3.354, 3.334,
+ 3.357, 3.354, 3.357, 3.361, 3.372, 3.381, 3.385, 3.385, 3.384, 3.379, 3.376, 3.376, 3.376, 3.379, 3.381, 3.383, 3.383, 3.384, 3.383, 3.379, 3.378, 3.381, 3.379, 3.379, 3.379, 3.379, 3.378, 3.371, 3.363, 3.358, 3.354, 3.332,
+ 3.354, 3.351, 3.354, 3.359, 3.371, 3.379, 3.382, 3.384, 3.381, 3.378, 3.375, 3.374, 3.376, 3.378, 3.381, 3.383, 3.384, 3.382, 3.377, 3.377, 3.376, 3.377, 3.378, 3.378, 3.379, 3.379, 3.376, 3.367, 3.361, 3.357, 3.352, 3.333,
+ 3.352, 3.349, 3.351, 3.357, 3.372, 3.381, 3.383, 3.383, 3.381, 3.376, 3.372, 3.373, 3.375, 3.377, 3.382, 3.384, 3.384, 3.379, 3.376, 3.374, 3.374, 3.375, 3.375, 3.376, 3.377, 3.376, 3.373, 3.366, 3.361, 3.356, 3.347, 3.332,
+ 3.347, 3.346, 3.346, 3.355, 3.371, 3.377, 3.382, 3.381, 3.379, 3.372, 3.371, 3.371, 3.372, 3.375, 3.379, 3.383, 3.384, 3.379, 3.374, 3.373, 3.371, 3.373, 3.374, 3.375, 3.374, 3.374, 3.371, 3.365, 3.359, 3.352, 3.343, 3.331,
+ 3.345, 3.344, 3.345, 3.353, 3.367, 3.374, 3.382, 3.382, 3.376, 3.371, 3.369, 3.368, 3.369, 3.373, 3.377, 3.381, 3.379, 3.376, 3.373, 3.369, 3.368, 3.371, 3.372, 3.373, 3.371, 3.371, 3.369, 3.363, 3.357, 3.349, 3.341, 3.326,
+ 3.343, 3.341, 3.344, 3.351, 3.362, 3.371, 3.376, 3.376, 3.372, 3.369, 3.367, 3.366, 3.367, 3.369, 3.376, 3.378, 3.378, 3.375, 3.371, 3.367, 3.367, 3.368, 3.369, 3.369, 3.369, 3.368, 3.365, 3.361, 3.354, 3.347, 3.338, 3.321,
+ 3.341, 3.339, 3.342, 3.349, 3.359, 3.367, 3.371, 3.372, 3.371, 3.368, 3.366, 3.363, 3.365, 3.368, 3.371, 3.374, 3.376, 3.374, 3.368, 3.365, 3.365, 3.366, 3.368, 3.367, 3.367, 3.363, 3.361, 3.356, 3.352, 3.346, 3.336, 3.317,
+ 3.338, 3.336, 3.338, 3.346, 3.359, 3.364, 3.368, 3.369, 3.367, 3.366, 3.363, 3.362, 3.364, 3.364, 3.367, 3.371, 3.372, 3.369, 3.365, 3.362, 3.362, 3.365, 3.367, 3.367, 3.366, 3.362, 3.357, 3.353, 3.349, 3.342, 3.335, 3.317,
+ 3.334, 3.334, 3.336, 3.346, 3.354, 3.361, 3.365, 3.365, 3.365, 3.362, 3.361, 3.361, 3.362, 3.362, 3.364, 3.366, 3.368, 3.366, 3.361, 3.357, 3.357, 3.359, 3.363, 3.365, 3.363, 3.361, 3.355, 3.351, 3.346, 3.339, 3.336, 3.317,
+ 3.332, 3.332, 3.334, 3.344, 3.354, 3.359, 3.363, 3.365, 3.363, 3.361, 3.359, 3.359, 3.363, 3.363, 3.365, 3.365, 3.367, 3.366, 3.358, 3.356, 3.356, 3.358, 3.362, 3.364, 3.363, 3.359, 3.353, 3.348, 3.345, 3.339, 3.336, 3.315,
+ 3.332, 3.328, 3.331, 3.343, 3.351, 3.357, 3.358, 3.362, 3.361, 3.359, 3.357, 3.357, 3.361, 3.362, 3.364, 3.363, 3.363, 3.359, 3.356, 3.354, 3.354, 3.355, 3.358, 3.359, 3.361, 3.359, 3.351, 3.346, 3.344, 3.339, 3.336, 3.313,
+ 3.324, 3.324, 3.327, 3.334, 3.345, 3.351, 3.354, 3.356, 3.356, 3.354, 3.353, 3.354, 3.357, 3.358, 3.361, 3.358, 3.359, 3.355, 3.352, 3.348, 3.347, 3.351, 3.354, 3.358, 3.359, 3.355, 3.346, 3.343, 3.341, 3.336, 3.331, 3.312,
+ 3.318, 3.319, 3.321, 3.328, 3.337, 3.339, 3.345, 3.348, 3.346, 3.345, 3.347, 3.348, 3.351, 3.354, 3.356, 3.353, 3.354, 3.344, 3.343, 3.343, 3.343, 3.344, 3.347, 3.349, 3.353, 3.346, 3.341, 3.339, 3.331, 3.329, 3.325, 3.311,
+ 3.309, 3.313, 3.317, 3.325, 3.329, 3.332, 3.338, 3.339, 3.341, 3.339, 3.339, 3.342, 3.346, 3.346, 3.351, 3.351, 3.343, 3.338, 3.338, 3.339, 3.339, 3.339, 3.341, 3.341, 3.346, 3.343, 3.339, 3.332, 3.327, 3.326, 3.322, 3.309,
+ 3.305, 3.309, 3.317, 3.325, 3.328, 3.331, 3.334, 3.336, 3.337, 3.336, 3.339, 3.341, 3.344, 3.346, 3.348, 3.347, 3.341, 3.336, 3.335, 3.337, 3.339, 3.341, 3.339, 3.339, 3.342, 3.341, 3.337, 3.329, 3.326, 3.325, 3.321, 3.314,
+ 3.302, 3.306, 3.319, 3.325, 3.329, 3.331, 3.334, 3.335, 3.337, 3.337, 3.339, 3.341, 3.344, 3.346, 3.348, 3.347, 3.342, 3.336, 3.336, 3.338, 3.339, 3.341, 3.341, 3.341, 3.339, 3.338, 3.336, 3.331, 3.327, 3.324, 3.321, 3.314
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.726, 1.725, 1.723, 1.721, 1.723, 1.724, 1.724, 1.726, 1.727, 1.728, 1.729, 1.728, 1.725, 1.724, 1.726, 1.726, 1.727, 1.729, 1.727, 1.727, 1.724, 1.725, 1.724, 1.726, 1.725, 1.725, 1.724, 1.724, 1.722, 1.721, 1.719, 1.714,
+ 1.726, 1.724, 1.722, 1.721, 1.722, 1.723, 1.725, 1.726, 1.727, 1.727, 1.727, 1.726, 1.725, 1.725, 1.725, 1.726, 1.727, 1.728, 1.728, 1.727, 1.725, 1.724, 1.724, 1.725, 1.726, 1.725, 1.724, 1.723, 1.722, 1.721, 1.719, 1.714,
+ 1.724, 1.722, 1.719, 1.719, 1.721, 1.723, 1.726, 1.726, 1.727, 1.727, 1.727, 1.725, 1.726, 1.725, 1.725, 1.725, 1.726, 1.727, 1.728, 1.728, 1.725, 1.724, 1.724, 1.724, 1.726, 1.725, 1.724, 1.722, 1.722, 1.721, 1.719, 1.712,
+ 1.723, 1.721, 1.719, 1.719, 1.719, 1.723, 1.725, 1.726, 1.727, 1.727, 1.727, 1.726, 1.725, 1.725, 1.725, 1.726, 1.726, 1.728, 1.729, 1.728, 1.725, 1.723, 1.723, 1.725, 1.726, 1.725, 1.724, 1.722, 1.721, 1.719, 1.718, 1.711,
+ 1.722, 1.719, 1.719, 1.718, 1.719, 1.722, 1.725, 1.726, 1.726, 1.727, 1.727, 1.726, 1.725, 1.726, 1.726, 1.726, 1.727, 1.727, 1.728, 1.727, 1.726, 1.725, 1.724, 1.725, 1.726, 1.725, 1.724, 1.722, 1.721, 1.719, 1.715, 1.711,
+ 1.721, 1.717, 1.717, 1.716, 1.719, 1.722, 1.724, 1.726, 1.726, 1.727, 1.726, 1.726, 1.726, 1.726, 1.726, 1.727, 1.727, 1.727, 1.727, 1.727, 1.726, 1.725, 1.725, 1.725, 1.725, 1.725, 1.724, 1.722, 1.721, 1.718, 1.715, 1.707,
+ 1.718, 1.717, 1.716, 1.716, 1.718, 1.721, 1.725, 1.726, 1.726, 1.726, 1.725, 1.725, 1.725, 1.725, 1.726, 1.727, 1.727, 1.727, 1.727, 1.726, 1.726, 1.726, 1.725, 1.724, 1.724, 1.724, 1.723, 1.722, 1.721, 1.718, 1.715, 1.709,
+ 1.718, 1.716, 1.716, 1.715, 1.717, 1.721, 1.724, 1.725, 1.726, 1.725, 1.725, 1.724, 1.724, 1.725, 1.726, 1.726, 1.727, 1.727, 1.727, 1.726, 1.726, 1.726, 1.725, 1.723, 1.723, 1.723, 1.722, 1.722, 1.719, 1.718, 1.714, 1.709,
+ 1.718, 1.716, 1.715, 1.715, 1.717, 1.721, 1.723, 1.725, 1.726, 1.725, 1.724, 1.723, 1.724, 1.725, 1.725, 1.726, 1.726, 1.726, 1.726, 1.726, 1.726, 1.726, 1.725, 1.724, 1.724, 1.723, 1.722, 1.722, 1.721, 1.717, 1.714, 1.707,
+ 1.717, 1.716, 1.714, 1.714, 1.716, 1.721, 1.723, 1.725, 1.725, 1.725, 1.723, 1.723, 1.724, 1.726, 1.726, 1.726, 1.726, 1.725, 1.726, 1.725, 1.725, 1.725, 1.725, 1.725, 1.724, 1.723, 1.722, 1.721, 1.718, 1.716, 1.714, 1.706,
+ 1.715, 1.714, 1.714, 1.714, 1.716, 1.719, 1.722, 1.724, 1.725, 1.725, 1.723, 1.723, 1.724, 1.725, 1.725, 1.725, 1.726, 1.725, 1.725, 1.725, 1.724, 1.724, 1.724, 1.725, 1.724, 1.723, 1.722, 1.721, 1.718, 1.716, 1.713, 1.705,
+ 1.714, 1.714, 1.713, 1.714, 1.717, 1.719, 1.722, 1.724, 1.724, 1.724, 1.723, 1.722, 1.723, 1.724, 1.724, 1.724, 1.726, 1.725, 1.726, 1.725, 1.723, 1.723, 1.724, 1.724, 1.724, 1.723, 1.721, 1.719, 1.717, 1.715, 1.713, 1.706,
+ 1.712, 1.712, 1.712, 1.713, 1.718, 1.719, 1.721, 1.723, 1.724, 1.724, 1.722, 1.722, 1.723, 1.724, 1.724, 1.724, 1.725, 1.725, 1.725, 1.725, 1.723, 1.722, 1.724, 1.723, 1.723, 1.722, 1.721, 1.719, 1.717, 1.714, 1.711, 1.706,
+ 1.712, 1.711, 1.711, 1.713, 1.717, 1.719, 1.722, 1.724, 1.724, 1.723, 1.722, 1.722, 1.723, 1.724, 1.724, 1.724, 1.724, 1.725, 1.725, 1.724, 1.723, 1.722, 1.722, 1.722, 1.723, 1.722, 1.721, 1.718, 1.716, 1.714, 1.711, 1.706,
+ 1.711, 1.709, 1.711, 1.713, 1.716, 1.719, 1.722, 1.724, 1.724, 1.723, 1.722, 1.721, 1.722, 1.724, 1.724, 1.724, 1.723, 1.724, 1.724, 1.724, 1.722, 1.722, 1.722, 1.722, 1.722, 1.721, 1.719, 1.718, 1.714, 1.712, 1.709, 1.702,
+ 1.709, 1.709, 1.709, 1.712, 1.717, 1.719, 1.721, 1.723, 1.723, 1.723, 1.721, 1.721, 1.722, 1.723, 1.724, 1.723, 1.724, 1.724, 1.724, 1.724, 1.723, 1.722, 1.721, 1.721, 1.721, 1.721, 1.719, 1.716, 1.713, 1.711, 1.709, 1.701,
+ 1.708, 1.707, 1.709, 1.712, 1.716, 1.719, 1.722, 1.723, 1.723, 1.723, 1.721, 1.721, 1.721, 1.722, 1.723, 1.723, 1.723, 1.723, 1.724, 1.723, 1.722, 1.722, 1.721, 1.721, 1.721, 1.721, 1.719, 1.714, 1.712, 1.709, 1.708, 1.702,
+ 1.707, 1.707, 1.708, 1.711, 1.716, 1.721, 1.722, 1.722, 1.722, 1.721, 1.721, 1.721, 1.722, 1.722, 1.723, 1.723, 1.723, 1.722, 1.722, 1.722, 1.722, 1.721, 1.721, 1.721, 1.721, 1.721, 1.717, 1.714, 1.711, 1.709, 1.707, 1.702,
+ 1.706, 1.706, 1.707, 1.711, 1.714, 1.719, 1.722, 1.722, 1.722, 1.721, 1.719, 1.721, 1.721, 1.722, 1.723, 1.724, 1.723, 1.722, 1.722, 1.721, 1.719, 1.719, 1.721, 1.721, 1.719, 1.719, 1.716, 1.713, 1.711, 1.709, 1.706, 1.701,
+ 1.705, 1.704, 1.706, 1.709, 1.713, 1.718, 1.721, 1.722, 1.721, 1.719, 1.718, 1.719, 1.721, 1.722, 1.723, 1.724, 1.724, 1.721, 1.721, 1.721, 1.719, 1.719, 1.719, 1.719, 1.719, 1.717, 1.715, 1.713, 1.711, 1.707, 1.704, 1.699,
+ 1.703, 1.703, 1.704, 1.709, 1.712, 1.717, 1.719, 1.721, 1.719, 1.718, 1.717, 1.718, 1.719, 1.721, 1.722, 1.723, 1.723, 1.722, 1.719, 1.719, 1.718, 1.719, 1.719, 1.718, 1.717, 1.716, 1.714, 1.712, 1.709, 1.706, 1.703, 1.697,
+ 1.702, 1.703, 1.704, 1.708, 1.712, 1.715, 1.718, 1.719, 1.719, 1.717, 1.717, 1.717, 1.717, 1.718, 1.721, 1.722, 1.722, 1.721, 1.719, 1.718, 1.717, 1.718, 1.718, 1.717, 1.716, 1.714, 1.714, 1.711, 1.709, 1.706, 1.703, 1.697,
+ 1.702, 1.702, 1.703, 1.706, 1.709, 1.715, 1.717, 1.718, 1.717, 1.717, 1.716, 1.716, 1.717, 1.717, 1.719, 1.721, 1.721, 1.721, 1.719, 1.717, 1.716, 1.717, 1.717, 1.716, 1.714, 1.713, 1.712, 1.711, 1.708, 1.706, 1.702, 1.696,
+ 1.701, 1.701, 1.702, 1.706, 1.709, 1.714, 1.716, 1.717, 1.716, 1.716, 1.716, 1.715, 1.716, 1.716, 1.717, 1.718, 1.719, 1.719, 1.716, 1.715, 1.715, 1.715, 1.715, 1.715, 1.714, 1.713, 1.711, 1.709, 1.708, 1.704, 1.701, 1.695,
+ 1.699, 1.699, 1.702, 1.706, 1.708, 1.712, 1.714, 1.715, 1.715, 1.715, 1.714, 1.715, 1.714, 1.715, 1.716, 1.716, 1.716, 1.716, 1.714, 1.713, 1.713, 1.714, 1.715, 1.714, 1.714, 1.712, 1.709, 1.707, 1.706, 1.703, 1.701, 1.695,
+ 1.698, 1.699, 1.701, 1.705, 1.708, 1.711, 1.714, 1.714, 1.714, 1.714, 1.714, 1.714, 1.714, 1.715, 1.715, 1.716, 1.716, 1.715, 1.713, 1.713, 1.713, 1.714, 1.714, 1.714, 1.713, 1.712, 1.709, 1.707, 1.706, 1.703, 1.701, 1.696,
+ 1.698, 1.699, 1.701, 1.705, 1.707, 1.711, 1.712, 1.713, 1.713, 1.713, 1.713, 1.714, 1.714, 1.715, 1.715, 1.716, 1.715, 1.714, 1.713, 1.712, 1.712, 1.712, 1.713, 1.713, 1.713, 1.711, 1.709, 1.707, 1.705, 1.703, 1.701, 1.696,
+ 1.698, 1.697, 1.699, 1.702, 1.705, 1.707, 1.711, 1.711, 1.711, 1.711, 1.711, 1.712, 1.712, 1.713, 1.714, 1.714, 1.713, 1.711, 1.711, 1.711, 1.711, 1.711, 1.711, 1.711, 1.711, 1.711, 1.708, 1.706, 1.704, 1.703, 1.699, 1.696,
+ 1.694, 1.695, 1.697, 1.699, 1.702, 1.705, 1.706, 1.707, 1.707, 1.708, 1.708, 1.708, 1.709, 1.711, 1.711, 1.711, 1.708, 1.708, 1.708, 1.707, 1.707, 1.707, 1.708, 1.708, 1.709, 1.708, 1.706, 1.703, 1.702, 1.701, 1.698, 1.696,
+ 1.692, 1.692, 1.695, 1.698, 1.699, 1.701, 1.704, 1.704, 1.704, 1.704, 1.705, 1.706, 1.707, 1.709, 1.709, 1.707, 1.706, 1.704, 1.704, 1.705, 1.705, 1.706, 1.706, 1.706, 1.706, 1.706, 1.703, 1.702, 1.701, 1.699, 1.696, 1.694,
+ 1.691, 1.692, 1.695, 1.697, 1.699, 1.699, 1.702, 1.703, 1.703, 1.702, 1.703, 1.704, 1.706, 1.707, 1.708, 1.706, 1.705, 1.703, 1.703, 1.703, 1.704, 1.705, 1.705, 1.705, 1.705, 1.704, 1.703, 1.701, 1.699, 1.698, 1.696, 1.695,
+ 1.689, 1.691, 1.696, 1.698, 1.699, 1.699, 1.701, 1.702, 1.702, 1.702, 1.703, 1.703, 1.706, 1.707, 1.708, 1.706, 1.705, 1.703, 1.703, 1.703, 1.703, 1.704, 1.704, 1.705, 1.704, 1.704, 1.702, 1.701, 1.698, 1.698, 1.696, 1.696
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 1.425, 1.393, 1.341, 1.295, 1.258, 1.226, 1.201, 1.181, 1.162, 1.146, 1.133, 1.123, 1.115, 1.111, 1.107, 1.106, 1.106, 1.107, 1.108, 1.111, 1.114, 1.122, 1.133, 1.148, 1.164, 1.184, 1.208, 1.236, 1.271, 1.309, 1.359, 1.381,
+ 1.397, 1.367, 1.317, 1.274, 1.237, 1.207, 1.183, 1.163, 1.146, 1.133, 1.123, 1.114, 1.107, 1.101, 1.098, 1.096, 1.096, 1.096, 1.097, 1.102, 1.106, 1.112, 1.122, 1.133, 1.148, 1.166, 1.187, 1.215, 1.249, 1.288, 1.335, 1.359,
+ 1.374, 1.341, 1.292, 1.251, 1.215, 1.186, 1.166, 1.146, 1.131, 1.117, 1.108, 1.099, 1.091, 1.088, 1.084, 1.082, 1.081, 1.082, 1.084, 1.088, 1.093, 1.098, 1.107, 1.118, 1.133, 1.149, 1.169, 1.195, 1.228, 1.267, 1.313, 1.335,
+ 1.352, 1.318, 1.271, 1.231, 1.196, 1.169, 1.149, 1.131, 1.115, 1.103, 1.093, 1.086, 1.079, 1.074, 1.071, 1.069, 1.069, 1.069, 1.071, 1.076, 1.079, 1.085, 1.094, 1.102, 1.117, 1.133, 1.152, 1.176, 1.208, 1.246, 1.289, 1.313,
+ 1.333, 1.298, 1.253, 1.212, 1.179, 1.153, 1.134, 1.116, 1.102, 1.089, 1.079, 1.072, 1.066, 1.062, 1.059, 1.058, 1.057, 1.057, 1.059, 1.064, 1.068, 1.072, 1.081, 1.091, 1.102, 1.119, 1.137, 1.161, 1.191, 1.227, 1.271, 1.293,
+ 1.317, 1.281, 1.235, 1.196, 1.165, 1.139, 1.119, 1.104, 1.089, 1.078, 1.068, 1.062, 1.055, 1.051, 1.048, 1.047, 1.047, 1.047, 1.048, 1.053, 1.056, 1.061, 1.069, 1.079, 1.091, 1.105, 1.126, 1.147, 1.177, 1.212, 1.253, 1.278,
+ 1.301, 1.265, 1.221, 1.181, 1.151, 1.127, 1.108, 1.091, 1.078, 1.068, 1.059, 1.051, 1.045, 1.041, 1.038, 1.037, 1.036, 1.037, 1.038, 1.042, 1.046, 1.051, 1.059, 1.069, 1.081, 1.096, 1.113, 1.135, 1.164, 1.198, 1.238, 1.264,
+ 1.286, 1.251, 1.207, 1.169, 1.141, 1.116, 1.098, 1.081, 1.068, 1.058, 1.049, 1.042, 1.037, 1.033, 1.031, 1.029, 1.028, 1.028, 1.029, 1.033, 1.037, 1.043, 1.051, 1.059, 1.071, 1.086, 1.104, 1.124, 1.152, 1.185, 1.225, 1.252,
+ 1.275, 1.239, 1.196, 1.161, 1.132, 1.107, 1.089, 1.073, 1.059, 1.049, 1.041, 1.035, 1.028, 1.024, 1.023, 1.021, 1.021, 1.021, 1.022, 1.024, 1.029, 1.036, 1.043, 1.051, 1.063, 1.078, 1.095, 1.115, 1.143, 1.175, 1.214, 1.243,
+ 1.267, 1.227, 1.187, 1.152, 1.122, 1.101, 1.081, 1.067, 1.054, 1.042, 1.035, 1.028, 1.023, 1.018, 1.015, 1.014, 1.014, 1.014, 1.016, 1.019, 1.024, 1.029, 1.036, 1.045, 1.056, 1.071, 1.088, 1.107, 1.134, 1.167, 1.204, 1.234,
+ 1.261, 1.219, 1.179, 1.145, 1.116, 1.095, 1.076, 1.061, 1.047, 1.037, 1.031, 1.023, 1.018, 1.014, 1.011, 1.009, 1.009, 1.009, 1.011, 1.013, 1.018, 1.024, 1.031, 1.039, 1.049, 1.065, 1.083, 1.102, 1.128, 1.161, 1.196, 1.228,
+ 1.256, 1.213, 1.173, 1.139, 1.111, 1.091, 1.071, 1.056, 1.043, 1.033, 1.026, 1.019, 1.014, 1.009, 1.006, 1.005, 1.004, 1.004, 1.006, 1.009, 1.013, 1.018, 1.026, 1.035, 1.046, 1.061, 1.078, 1.097, 1.123, 1.154, 1.191, 1.222,
+ 1.251, 1.208, 1.169, 1.137, 1.108, 1.088, 1.069, 1.053, 1.039, 1.029, 1.023, 1.015, 1.011, 1.006, 1.004, 1.003, 1.001, 1.002, 1.003, 1.006, 1.009, 1.015, 1.022, 1.032, 1.044, 1.057, 1.076, 1.094, 1.119, 1.149, 1.186, 1.218,
+ 1.249, 1.205, 1.167, 1.133, 1.107, 1.085, 1.067, 1.052, 1.038, 1.029, 1.021, 1.013, 1.008, 1.004, 1.003, 1.001, 1.001, 1.001, 1.002, 1.004, 1.007, 1.013, 1.021, 1.031, 1.042, 1.055, 1.073, 1.093, 1.116, 1.147, 1.182, 1.218,
+ 1.249, 1.204, 1.165, 1.132, 1.106, 1.085, 1.067, 1.051, 1.038, 1.029, 1.019, 1.013, 1.007, 1.003, 1.002, 1.001, 1.001, 1.001, 1.001, 1.004, 1.007, 1.013, 1.021, 1.029, 1.042, 1.055, 1.072, 1.091, 1.115, 1.145, 1.181, 1.217,
+ 1.249, 1.204, 1.165, 1.132, 1.107, 1.086, 1.067, 1.051, 1.038, 1.029, 1.019, 1.013, 1.008, 1.004, 1.002, 1.001, 1.001, 1.001, 1.002, 1.004, 1.007, 1.014, 1.021, 1.029, 1.042, 1.056, 1.072, 1.091, 1.115, 1.145, 1.181, 1.217,
+ 1.251, 1.205, 1.166, 1.133, 1.108, 1.087, 1.068, 1.052, 1.039, 1.031, 1.021, 1.014, 1.009, 1.006, 1.003, 1.002, 1.001, 1.001, 1.003, 1.006, 1.009, 1.014, 1.022, 1.031, 1.043, 1.056, 1.073, 1.093, 1.116, 1.145, 1.182, 1.218,
+ 1.252, 1.208, 1.168, 1.137, 1.111, 1.089, 1.071, 1.055, 1.043, 1.033, 1.023, 1.016, 1.012, 1.009, 1.006, 1.005, 1.004, 1.004, 1.006, 1.008, 1.012, 1.017, 1.024, 1.034, 1.045, 1.059, 1.075, 1.095, 1.119, 1.149, 1.185, 1.218,
+ 1.256, 1.213, 1.173, 1.142, 1.115, 1.093, 1.075, 1.059, 1.047, 1.036, 1.027, 1.021, 1.016, 1.012, 1.011, 1.009, 1.008, 1.008, 1.009, 1.012, 1.016, 1.021, 1.028, 1.038, 1.049, 1.064, 1.081, 1.099, 1.126, 1.155, 1.192, 1.223,
+ 1.261, 1.221, 1.179, 1.148, 1.121, 1.099, 1.081, 1.065, 1.052, 1.042, 1.032, 1.026, 1.021, 1.017, 1.015, 1.014, 1.014, 1.013, 1.013, 1.016, 1.021, 1.026, 1.033, 1.043, 1.054, 1.068, 1.085, 1.106, 1.132, 1.161, 1.199, 1.228,
+ 1.267, 1.228, 1.188, 1.155, 1.128, 1.105, 1.086, 1.071, 1.059, 1.047, 1.038, 1.031, 1.027, 1.022, 1.021, 1.019, 1.019, 1.019, 1.019, 1.022, 1.026, 1.032, 1.038, 1.049, 1.061, 1.075, 1.092, 1.112, 1.138, 1.169, 1.207, 1.236,
+ 1.278, 1.241, 1.199, 1.164, 1.137, 1.114, 1.094, 1.078, 1.066, 1.055, 1.046, 1.038, 1.032, 1.029, 1.027, 1.027, 1.027, 1.027, 1.027, 1.029, 1.032, 1.038, 1.047, 1.056, 1.067, 1.083, 1.099, 1.121, 1.146, 1.178, 1.217, 1.244,
+ 1.291, 1.252, 1.211, 1.175, 1.147, 1.124, 1.103, 1.088, 1.075, 1.063, 1.054, 1.046, 1.041, 1.036, 1.035, 1.035, 1.035, 1.035, 1.036, 1.038, 1.041, 1.047, 1.055, 1.065, 1.075, 1.092, 1.111, 1.132, 1.157, 1.189, 1.231, 1.255,
+ 1.303, 1.265, 1.222, 1.187, 1.158, 1.133, 1.112, 1.097, 1.083, 1.072, 1.063, 1.054, 1.048, 1.043, 1.043, 1.043, 1.043, 1.043, 1.043, 1.046, 1.049, 1.055, 1.065, 1.074, 1.086, 1.102, 1.119, 1.144, 1.171, 1.203, 1.243, 1.268,
+ 1.317, 1.282, 1.236, 1.201, 1.171, 1.146, 1.125, 1.109, 1.095, 1.083, 1.072, 1.064, 1.058, 1.054, 1.052, 1.051, 1.051, 1.053, 1.054, 1.057, 1.061, 1.065, 1.074, 1.086, 1.099, 1.113, 1.133, 1.156, 1.183, 1.217, 1.259, 1.282,
+ 1.335, 1.301, 1.254, 1.218, 1.186, 1.159, 1.138, 1.121, 1.108, 1.095, 1.085, 1.076, 1.069, 1.066, 1.065, 1.063, 1.062, 1.063, 1.065, 1.068, 1.073, 1.078, 1.087, 1.098, 1.113, 1.126, 1.146, 1.171, 1.199, 1.235, 1.277, 1.299,
+ 1.356, 1.321, 1.274, 1.235, 1.202, 1.175, 1.153, 1.137, 1.121, 1.108, 1.097, 1.089, 1.084, 1.081, 1.077, 1.075, 1.075, 1.075, 1.077, 1.081, 1.086, 1.091, 1.099, 1.113, 1.126, 1.144, 1.162, 1.187, 1.218, 1.255, 1.297, 1.321,
+ 1.376, 1.344, 1.296, 1.257, 1.223, 1.194, 1.171, 1.153, 1.137, 1.124, 1.112, 1.104, 1.099, 1.095, 1.093, 1.091, 1.089, 1.091, 1.092, 1.095, 1.101, 1.108, 1.116, 1.128, 1.144, 1.161, 1.181, 1.206, 1.237, 1.275, 1.321, 1.347,
+ 1.403, 1.369, 1.319, 1.279, 1.244, 1.214, 1.191, 1.171, 1.154, 1.139, 1.129, 1.121, 1.115, 1.111, 1.109, 1.106, 1.105, 1.105, 1.108, 1.112, 1.117, 1.124, 1.135, 1.147, 1.162, 1.181, 1.203, 1.228, 1.262, 1.301, 1.347, 1.377,
+ 1.429, 1.398, 1.348, 1.306, 1.269, 1.237, 1.214, 1.191, 1.173, 1.158, 1.146, 1.138, 1.132, 1.128, 1.125, 1.123, 1.122, 1.123, 1.125, 1.129, 1.136, 1.142, 1.154, 1.166, 1.182, 1.203, 1.226, 1.253, 1.288, 1.329, 1.377, 1.406,
+ 1.465, 1.429, 1.377, 1.335, 1.295, 1.262, 1.236, 1.214, 1.194, 1.179, 1.167, 1.157, 1.151, 1.146, 1.144, 1.142, 1.142, 1.142, 1.144, 1.149, 1.154, 1.163, 1.174, 1.187, 1.205, 1.226, 1.251, 1.279, 1.315, 1.357, 1.406, 1.437,
+ 1.493, 1.465, 1.409, 1.364, 1.323, 1.289, 1.261, 1.235, 1.214, 1.194, 1.179, 1.171, 1.166, 1.163, 1.161, 1.161, 1.161, 1.161, 1.162, 1.164, 1.168, 1.175, 1.187, 1.205, 1.225, 1.251, 1.276, 1.306, 1.344, 1.387, 1.437, 1.455
+ ],
+ "sigma": 0.0007,
+ "sigma_Cb": 0.00098
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2500,
+ "ccm":
+ [
+ 1.95054, -0.57435, -0.37619,
+ -0.46945, 1.86661, -0.39716,
+ 0.07977, -1.14072, 2.06095
+ ]
+ },
+ {
+ "ct": 2800,
+ "ccm":
+ [
+ 1.94104, -0.60261, -0.33844,
+ -0.43162, 1.85422, -0.42261,
+ 0.03799, -0.95022, 1.91222
+ ]
+ },
+ {
+ "ct": 2900,
+ "ccm":
+ [
+ 1.91828, -0.59569, -0.32258,
+ -0.51902, 2.09091, -0.57189,
+ -0.03324, -0.73462, 1.76785
+ ]
+ },
+ {
+ "ct": 3620,
+ "ccm":
+ [
+ 1.97199, -0.66403, -0.30797,
+ -0.46411, 2.02612, -0.56201,
+ -0.07764, -0.61178, 1.68942
+ ]
+ },
+ {
+ "ct": 4560,
+ "ccm":
+ [
+ 2.15256, -0.84787, -0.30469,
+ -0.48422, 2.28962, -0.80541,
+ -0.15113, -0.53014, 1.68127
+ ]
+ },
+ {
+ "ct": 5600,
+ "ccm":
+ [
+ 2.04576, -0.74771, -0.29805,
+ -0.36332, 1.98993, -0.62662,
+ -0.09328, -0.46543, 1.55871
+ ]
+ },
+ {
+ "ct": 7400,
+ "ccm":
+ [
+ 2.37532, -0.83069, -0.54462,
+ -0.48279, 2.84309, -1.36031,
+ -0.21178, -0.66532, 1.87709
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.06,
+ "strength": 0.5,
+ "limit": 0.5
+ }
+ },
+ {
+ "rpi.cac":
+ {
+ "lut_rx":
+ [
+ -0.15, -0.12, -0.08, -0.03, 0.02, 0.06, 0.11, 0.14, 0.22,
+ -0.15, -0.12, -0.08, -0.04, 0.01, 0.05, 0.1, 0.14, 0.21,
+ -0.15, -0.12, -0.08, -0.04, 0.01, 0.06, 0.1, 0.14, 0.21,
+ -0.14, -0.11, -0.08, -0.04, 0.01, 0.05, 0.1, 0.13, 0.2,
+ -0.13, -0.11, -0.08, -0.03, 0.01, 0.05, 0.09, 0.13, 0.2,
+ -0.14, -0.11, -0.07, -0.03, 0.01, 0.06, 0.09, 0.14, 0.21,
+ -0.14, -0.11, -0.07, -0.03, 0.01, 0.05, 0.09, 0.13, 0.21,
+ -0.14, -0.11, -0.07, -0.03, 0.01, 0.05, 0.09, 0.13, 0.2,
+ -0.14, -0.1, -0.07, -0.03, 0.01, 0.06, 0.09, 0.13, 0.2
+ ],
+ "lut_ry":
+ [
+ -0.13, -0.13, -0.12, -0.13, -0.13, -0.14, -0.14, -0.13, -0.13,
+ -0.1, -0.1, -0.1, -0.1, -0.11, -0.11, -0.11, -0.11, -0.1,
+ -0.08, -0.08, -0.09, -0.09, -0.1, -0.09, -0.09, -0.1, -0.09,
+ -0.07, -0.06, -0.06, -0.07, -0.07, -0.07, -0.07, -0.07, -0.09,
+ -0.04, -0.03, -0.04, -0.04, -0.04, -0.04, -0.05, -0.04, -0.06,
+ -0.02, -0.01, -0.01, -0.02, -0.02, -0.02, -0.02, -0.02, -0.03,
+ -0.0, 0.01, 0.0, -0.0, -0.01, -0.01, -0.0, 0.0, -0.0,
+ 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02,
+ 0.04, 0.05, 0.04, 0.03, 0.03, 0.03, 0.03, 0.04, 0.04
+ ],
+ "lut_bx":
+ [
+ -0.35, -0.28, -0.22, -0.13, -0.05, 0.02, 0.1, 0.16, 0.28,
+ -0.32, -0.25, -0.19, -0.12, -0.05, 0.02, 0.09, 0.16, 0.28,
+ -0.32, -0.26, -0.19, -0.12, -0.05, 0.02, 0.09, 0.15, 0.28,
+ -0.32, -0.25, -0.19, -0.11, -0.05, 0.02, 0.09, 0.16, 0.28,
+ -0.3, -0.25, -0.19, -0.11, -0.04, 0.02, 0.09, 0.16, 0.28,
+ -0.3, -0.25, -0.18, -0.11, -0.05, 0.02, 0.09, 0.15, 0.28,
+ -0.3, -0.25, -0.19, -0.11, -0.05, 0.02, 0.09, 0.15, 0.27,
+ -0.3, -0.24, -0.17, -0.11, -0.04, 0.02, 0.09, 0.15, 0.27,
+ -0.27, -0.21, -0.15, -0.09, -0.03, 0.03, 0.09, 0.15, 0.27
+ ],
+ "lut_by":
+ [
+ -0.23, -0.22, -0.22, -0.21, -0.21, -0.21, -0.21, -0.21, -0.23,
+ -0.19, -0.17, -0.17, -0.17, -0.17, -0.17, -0.17, -0.17, -0.19,
+ -0.16, -0.13, -0.13, -0.13, -0.12, -0.13, -0.12, -0.13, -0.15,
+ -0.11, -0.08, -0.08, -0.08, -0.07, -0.08, -0.08, -0.08, -0.1,
+ -0.07, -0.04, -0.04, -0.04, -0.03, -0.03, -0.04, -0.04, -0.07,
+ -0.02, 0.01, 0.01, 0.01, 0.02, 0.02, 0.01, 0.01, -0.02,
+ 0.03, 0.07, 0.07, 0.07, 0.07, 0.07, 0.06, 0.06, 0.05,
+ 0.09, 0.1, 0.1, 0.1, 0.12, 0.12, 0.11, 0.11, 0.09,
+ 0.13, 0.13, 0.13, 0.14, 0.18, 0.2, 0.19, 0.18, 0.16
+ ]
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx296_6mm.json b/src/ipa/rpi/pisp/data/imx296_6mm.json
new file mode 100644
index 00000000..abbcaa83
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx296_6mm.json
@@ -0,0 +1,1247 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 3840
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 4724,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 860,
+ "reference_Y": 14551
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.751
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 226,
+ "slope": 0.01032
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2875.0, 0.4699, 0.3209,
+ 3610.0, 0.4089, 0.4265,
+ 4640.0, 0.3281, 0.5417,
+ 5912.0, 0.2992, 0.5771,
+ 7630.0, 0.2285, 0.6524
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.01783,
+ "transverse_neg": 0.02154
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.16,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.084, 2.084, 2.085, 2.085, 2.085, 2.087, 2.088, 2.087, 2.086, 2.082, 2.082, 2.084, 2.086, 2.088, 2.088, 2.088, 2.087, 2.088, 2.088, 2.091, 2.092, 2.093, 2.093, 2.093, 2.091, 2.091, 2.091, 2.091, 2.092, 2.092, 2.091, 2.088,
+ 2.086, 2.086, 2.087, 2.088, 2.089, 2.089, 2.091, 2.089, 2.087, 2.086, 2.087, 2.088, 2.091, 2.089, 2.091, 2.089, 2.091, 2.091, 2.091, 2.092, 2.093, 2.093, 2.094, 2.095, 2.094, 2.094, 2.095, 2.096, 2.096, 2.096, 2.096, 2.093,
+ 2.087, 2.087, 2.088, 2.091, 2.091, 2.091, 2.091, 2.089, 2.088, 2.088, 2.089, 2.091, 2.092, 2.092, 2.091, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.094, 2.095, 2.096, 2.096, 2.096, 2.096, 2.097, 2.097, 2.097, 2.097, 2.096,
+ 2.089, 2.088, 2.089, 2.091, 2.091, 2.092, 2.091, 2.089, 2.088, 2.088, 2.089, 2.091, 2.092, 2.092, 2.092, 2.091, 2.092, 2.092, 2.092, 2.092, 2.093, 2.094, 2.095, 2.096, 2.096, 2.096, 2.096, 2.097, 2.098, 2.097, 2.097, 2.097,
+ 2.091, 2.091, 2.091, 2.092, 2.092, 2.092, 2.091, 2.091, 2.089, 2.088, 2.088, 2.089, 2.091, 2.091, 2.091, 2.091, 2.092, 2.092, 2.092, 2.092, 2.093, 2.094, 2.095, 2.095, 2.096, 2.096, 2.097, 2.099, 2.098, 2.097, 2.097, 2.097,
+ 2.091, 2.091, 2.092, 2.093, 2.093, 2.093, 2.092, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.091, 2.091, 2.091, 2.091, 2.092, 2.092, 2.093, 2.095, 2.096, 2.096, 2.097, 2.097, 2.099, 2.099, 2.099, 2.098, 2.097,
+ 2.092, 2.092, 2.092, 2.093, 2.093, 2.092, 2.091, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.091, 2.091, 2.091, 2.092, 2.092, 2.093, 2.095, 2.096, 2.096, 2.097, 2.097, 2.099, 2.099, 2.101, 2.099, 2.098,
+ 2.092, 2.092, 2.093, 2.093, 2.093, 2.092, 2.091, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.089, 2.091, 2.091, 2.091, 2.092, 2.092, 2.094, 2.095, 2.096, 2.097, 2.098, 2.098, 2.098, 2.101, 2.101, 2.099, 2.098,
+ 2.092, 2.092, 2.093, 2.093, 2.094, 2.092, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.089, 2.089, 2.091, 2.092, 2.092, 2.092, 2.092, 2.094, 2.096, 2.096, 2.097, 2.098, 2.099, 2.099, 2.099, 2.099, 2.099, 2.097,
+ 2.093, 2.094, 2.094, 2.094, 2.095, 2.093, 2.092, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.094, 2.096, 2.096, 2.097, 2.098, 2.098, 2.101, 2.101, 2.099, 2.099, 2.099,
+ 2.094, 2.094, 2.094, 2.095, 2.095, 2.095, 2.091, 2.089, 2.091, 2.089, 2.089, 2.089, 2.091, 2.091, 2.089, 2.091, 2.091, 2.091, 2.092, 2.092, 2.093, 2.093, 2.095, 2.096, 2.097, 2.098, 2.098, 2.099, 2.101, 2.101, 2.099, 2.099,
+ 2.095, 2.094, 2.094, 2.095, 2.096, 2.095, 2.091, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.091, 2.091, 2.093, 2.093, 2.093, 2.093, 2.094, 2.096, 2.097, 2.098, 2.099, 2.101, 2.101, 2.102, 2.101, 2.099,
+ 2.095, 2.095, 2.095, 2.095, 2.095, 2.095, 2.092, 2.089, 2.089, 2.088, 2.089, 2.089, 2.091, 2.091, 2.092, 2.092, 2.092, 2.092, 2.093, 2.093, 2.093, 2.093, 2.093, 2.095, 2.096, 2.099, 2.099, 2.101, 2.102, 2.103, 2.102, 2.101,
+ 2.095, 2.095, 2.095, 2.095, 2.095, 2.094, 2.092, 2.091, 2.089, 2.089, 2.089, 2.089, 2.091, 2.091, 2.091, 2.093, 2.093, 2.093, 2.092, 2.092, 2.094, 2.094, 2.094, 2.096, 2.096, 2.098, 2.099, 2.102, 2.103, 2.103, 2.102, 2.102,
+ 2.095, 2.095, 2.095, 2.096, 2.096, 2.094, 2.093, 2.091, 2.091, 2.089, 2.089, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.093, 2.092, 2.093, 2.094, 2.094, 2.095, 2.096, 2.097, 2.098, 2.099, 2.103, 2.103, 2.103, 2.101, 2.101,
+ 2.095, 2.096, 2.096, 2.097, 2.096, 2.095, 2.093, 2.092, 2.091, 2.091, 2.091, 2.092, 2.092, 2.092, 2.092, 2.092, 2.092, 2.094, 2.093, 2.093, 2.094, 2.095, 2.096, 2.096, 2.097, 2.099, 2.101, 2.103, 2.103, 2.103, 2.101, 2.099,
+ 2.096, 2.096, 2.097, 2.096, 2.097, 2.096, 2.094, 2.092, 2.092, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.093, 2.093, 2.094, 2.093, 2.093, 2.093, 2.095, 2.096, 2.097, 2.099, 2.099, 2.101, 2.103, 2.103, 2.102, 2.101, 2.101,
+ 2.096, 2.096, 2.097, 2.097, 2.097, 2.096, 2.094, 2.093, 2.092, 2.092, 2.091, 2.091, 2.092, 2.092, 2.092, 2.093, 2.093, 2.094, 2.093, 2.093, 2.094, 2.095, 2.096, 2.097, 2.099, 2.101, 2.101, 2.102, 2.102, 2.102, 2.101, 2.101,
+ 2.097, 2.096, 2.097, 2.097, 2.097, 2.097, 2.095, 2.093, 2.093, 2.093, 2.093, 2.092, 2.091, 2.091, 2.092, 2.092, 2.093, 2.094, 2.093, 2.093, 2.093, 2.095, 2.096, 2.097, 2.099, 2.101, 2.102, 2.102, 2.102, 2.101, 2.101, 2.101,
+ 2.098, 2.097, 2.096, 2.097, 2.097, 2.097, 2.095, 2.094, 2.094, 2.094, 2.092, 2.092, 2.092, 2.092, 2.092, 2.092, 2.094, 2.095, 2.095, 2.094, 2.093, 2.095, 2.096, 2.099, 2.101, 2.101, 2.102, 2.102, 2.102, 2.101, 2.101, 2.102,
+ 2.098, 2.097, 2.096, 2.096, 2.097, 2.097, 2.095, 2.094, 2.095, 2.093, 2.093, 2.092, 2.092, 2.092, 2.094, 2.094, 2.096, 2.095, 2.095, 2.095, 2.095, 2.096, 2.098, 2.099, 2.099, 2.101, 2.102, 2.103, 2.102, 2.102, 2.101, 2.102,
+ 2.098, 2.097, 2.097, 2.098, 2.097, 2.096, 2.095, 2.095, 2.095, 2.094, 2.093, 2.093, 2.094, 2.094, 2.094, 2.095, 2.096, 2.096, 2.096, 2.095, 2.097, 2.097, 2.098, 2.099, 2.099, 2.101, 2.101, 2.103, 2.104, 2.103, 2.102, 2.101,
+ 2.099, 2.098, 2.098, 2.098, 2.097, 2.096, 2.096, 2.095, 2.095, 2.095, 2.095, 2.095, 2.094, 2.094, 2.094, 2.094, 2.096, 2.097, 2.097, 2.097, 2.097, 2.098, 2.099, 2.101, 2.101, 2.101, 2.101, 2.104, 2.105, 2.105, 2.103, 2.102,
+ 2.101, 2.099, 2.099, 2.099, 2.099, 2.098, 2.097, 2.097, 2.097, 2.096, 2.096, 2.095, 2.095, 2.095, 2.095, 2.095, 2.096, 2.098, 2.098, 2.097, 2.097, 2.098, 2.099, 2.101, 2.101, 2.102, 2.103, 2.104, 2.105, 2.105, 2.104, 2.103,
+ 2.102, 2.102, 2.099, 2.098, 2.099, 2.099, 2.099, 2.098, 2.097, 2.097, 2.097, 2.097, 2.097, 2.096, 2.096, 2.097, 2.098, 2.098, 2.099, 2.099, 2.099, 2.101, 2.101, 2.102, 2.104, 2.105, 2.106, 2.106, 2.106, 2.104, 2.104, 2.104,
+ 2.102, 2.101, 2.099, 2.099, 2.099, 2.101, 2.101, 2.101, 2.099, 2.098, 2.098, 2.098, 2.098, 2.098, 2.098, 2.098, 2.099, 2.099, 2.099, 2.099, 2.101, 2.101, 2.102, 2.103, 2.105, 2.106, 2.106, 2.106, 2.106, 2.105, 2.104, 2.104,
+ 2.099, 2.099, 2.099, 2.098, 2.098, 2.099, 2.101, 2.101, 2.099, 2.098, 2.097, 2.098, 2.098, 2.099, 2.098, 2.098, 2.099, 2.099, 2.101, 2.101, 2.101, 2.101, 2.102, 2.104, 2.105, 2.105, 2.105, 2.106, 2.106, 2.104, 2.104, 2.103,
+ 2.096, 2.097, 2.097, 2.097, 2.097, 2.099, 2.099, 2.099, 2.099, 2.097, 2.097, 2.098, 2.098, 2.099, 2.098, 2.097, 2.097, 2.099, 2.101, 2.101, 2.101, 2.101, 2.101, 2.103, 2.105, 2.105, 2.105, 2.104, 2.104, 2.103, 2.101, 2.101,
+ 2.096, 2.096, 2.096, 2.097, 2.097, 2.098, 2.098, 2.099, 2.097, 2.096, 2.096, 2.097, 2.098, 2.098, 2.097, 2.097, 2.096, 2.098, 2.098, 2.099, 2.101, 2.101, 2.101, 2.102, 2.104, 2.105, 2.104, 2.104, 2.103, 2.101, 2.099, 2.098,
+ 2.096, 2.096, 2.096, 2.096, 2.097, 2.097, 2.097, 2.097, 2.097, 2.097, 2.096, 2.097, 2.098, 2.097, 2.097, 2.096, 2.096, 2.098, 2.098, 2.098, 2.099, 2.099, 2.101, 2.101, 2.103, 2.103, 2.104, 2.104, 2.102, 2.101, 2.099, 2.098,
+ 2.097, 2.096, 2.095, 2.096, 2.098, 2.098, 2.098, 2.098, 2.097, 2.098, 2.097, 2.097, 2.097, 2.097, 2.096, 2.096, 2.096, 2.097, 2.097, 2.098, 2.099, 2.099, 2.099, 2.101, 2.102, 2.103, 2.104, 2.104, 2.104, 2.101, 2.099, 2.098,
+ 2.097, 2.096, 2.095, 2.097, 2.099, 2.099, 2.099, 2.099, 2.099, 2.099, 2.098, 2.098, 2.097, 2.096, 2.096, 2.097, 2.097, 2.098, 2.097, 2.099, 2.101, 2.099, 2.099, 2.099, 2.102, 2.102, 2.104, 2.105, 2.105, 2.102, 2.099, 2.098
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 3.431, 3.437, 3.439, 3.439, 3.436, 3.438, 3.441, 3.441, 3.441, 3.441, 3.442, 3.443, 3.443, 3.444, 3.446, 3.448, 3.451, 3.451, 3.452, 3.451, 3.449, 3.449, 3.452, 3.453, 3.454, 3.454, 3.453, 3.456, 3.456, 3.456, 3.451, 3.448,
+ 3.445, 3.446, 3.445, 3.449, 3.453, 3.451, 3.451, 3.446, 3.447, 3.446, 3.447, 3.451, 3.453, 3.455, 3.454, 3.453, 3.453, 3.454, 3.455, 3.456, 3.457, 3.459, 3.461, 3.462, 3.463, 3.463, 3.465, 3.466, 3.467, 3.465, 3.459, 3.457,
+ 3.449, 3.449, 3.449, 3.454, 3.455, 3.454, 3.453, 3.451, 3.451, 3.448, 3.451, 3.451, 3.455, 3.456, 3.457, 3.456, 3.456, 3.458, 3.457, 3.459, 3.459, 3.461, 3.464, 3.467, 3.467, 3.466, 3.468, 3.469, 3.471, 3.468, 3.465, 3.462,
+ 3.451, 3.448, 3.451, 3.453, 3.457, 3.455, 3.454, 3.449, 3.449, 3.448, 3.449, 3.449, 3.455, 3.455, 3.456, 3.455, 3.454, 3.455, 3.455, 3.457, 3.458, 3.458, 3.461, 3.464, 3.466, 3.468, 3.469, 3.469, 3.469, 3.468, 3.465, 3.463,
+ 3.449, 3.449, 3.451, 3.453, 3.456, 3.455, 3.452, 3.449, 3.448, 3.447, 3.446, 3.448, 3.451, 3.452, 3.454, 3.455, 3.455, 3.454, 3.457, 3.458, 3.458, 3.459, 3.461, 3.464, 3.464, 3.466, 3.467, 3.469, 3.469, 3.467, 3.463, 3.459,
+ 3.449, 3.451, 3.452, 3.454, 3.455, 3.454, 3.452, 3.449, 3.447, 3.447, 3.446, 3.449, 3.449, 3.451, 3.452, 3.452, 3.452, 3.452, 3.454, 3.455, 3.457, 3.459, 3.461, 3.464, 3.464, 3.466, 3.465, 3.468, 3.468, 3.469, 3.465, 3.462,
+ 3.451, 3.451, 3.452, 3.453, 3.453, 3.453, 3.451, 3.449, 3.449, 3.447, 3.446, 3.447, 3.448, 3.451, 3.451, 3.451, 3.453, 3.452, 3.452, 3.452, 3.457, 3.458, 3.461, 3.463, 3.464, 3.465, 3.464, 3.466, 3.468, 3.469, 3.466, 3.463,
+ 3.451, 3.451, 3.451, 3.454, 3.453, 3.453, 3.451, 3.448, 3.448, 3.444, 3.444, 3.444, 3.448, 3.449, 3.449, 3.448, 3.449, 3.449, 3.451, 3.452, 3.454, 3.457, 3.461, 3.462, 3.464, 3.466, 3.466, 3.467, 3.468, 3.469, 3.466, 3.465,
+ 3.451, 3.451, 3.452, 3.455, 3.454, 3.453, 3.449, 3.448, 3.447, 3.447, 3.444, 3.446, 3.446, 3.446, 3.446, 3.447, 3.449, 3.449, 3.451, 3.452, 3.455, 3.457, 3.461, 3.462, 3.464, 3.466, 3.466, 3.468, 3.469, 3.468, 3.465, 3.462,
+ 3.453, 3.452, 3.454, 3.456, 3.455, 3.453, 3.449, 3.447, 3.446, 3.446, 3.445, 3.448, 3.447, 3.446, 3.445, 3.446, 3.448, 3.448, 3.449, 3.453, 3.455, 3.457, 3.459, 3.461, 3.464, 3.466, 3.467, 3.468, 3.468, 3.467, 3.465, 3.463,
+ 3.453, 3.453, 3.454, 3.456, 3.456, 3.451, 3.448, 3.447, 3.447, 3.446, 3.445, 3.446, 3.446, 3.446, 3.446, 3.446, 3.448, 3.448, 3.449, 3.452, 3.454, 3.456, 3.459, 3.459, 3.461, 3.465, 3.466, 3.468, 3.468, 3.468, 3.467, 3.465,
+ 3.451, 3.451, 3.452, 3.455, 3.456, 3.452, 3.448, 3.446, 3.446, 3.444, 3.446, 3.445, 3.446, 3.446, 3.447, 3.448, 3.449, 3.449, 3.449, 3.452, 3.453, 3.454, 3.458, 3.458, 3.461, 3.461, 3.464, 3.469, 3.469, 3.468, 3.466, 3.466,
+ 3.452, 3.452, 3.453, 3.454, 3.454, 3.453, 3.447, 3.446, 3.444, 3.444, 3.444, 3.444, 3.445, 3.446, 3.448, 3.451, 3.452, 3.453, 3.451, 3.453, 3.453, 3.455, 3.458, 3.459, 3.461, 3.462, 3.463, 3.468, 3.471, 3.469, 3.467, 3.467,
+ 3.454, 3.455, 3.457, 3.458, 3.458, 3.455, 3.449, 3.446, 3.445, 3.445, 3.445, 3.445, 3.447, 3.447, 3.448, 3.451, 3.452, 3.453, 3.452, 3.452, 3.452, 3.454, 3.457, 3.459, 3.459, 3.462, 3.464, 3.468, 3.469, 3.467, 3.465, 3.465,
+ 3.457, 3.455, 3.455, 3.459, 3.458, 3.454, 3.451, 3.448, 3.445, 3.445, 3.445, 3.446, 3.448, 3.449, 3.451, 3.452, 3.451, 3.453, 3.452, 3.452, 3.453, 3.457, 3.457, 3.461, 3.461, 3.463, 3.465, 3.468, 3.471, 3.468, 3.465, 3.463,
+ 3.458, 3.456, 3.456, 3.459, 3.457, 3.454, 3.452, 3.449, 3.447, 3.445, 3.446, 3.447, 3.447, 3.448, 3.449, 3.448, 3.449, 3.451, 3.451, 3.451, 3.451, 3.455, 3.456, 3.458, 3.462, 3.463, 3.464, 3.465, 3.467, 3.466, 3.464, 3.462,
+ 3.457, 3.456, 3.455, 3.457, 3.457, 3.454, 3.449, 3.447, 3.445, 3.445, 3.446, 3.446, 3.448, 3.446, 3.448, 3.449, 3.449, 3.451, 3.451, 3.451, 3.453, 3.455, 3.457, 3.459, 3.462, 3.464, 3.464, 3.465, 3.467, 3.464, 3.464, 3.463,
+ 3.458, 3.457, 3.455, 3.456, 3.456, 3.456, 3.453, 3.449, 3.447, 3.448, 3.447, 3.447, 3.447, 3.447, 3.447, 3.448, 3.449, 3.451, 3.451, 3.452, 3.453, 3.455, 3.458, 3.459, 3.459, 3.463, 3.464, 3.463, 3.464, 3.463, 3.464, 3.464,
+ 3.457, 3.456, 3.456, 3.456, 3.456, 3.456, 3.455, 3.449, 3.447, 3.448, 3.451, 3.449, 3.449, 3.449, 3.448, 3.449, 3.449, 3.451, 3.451, 3.452, 3.453, 3.456, 3.458, 3.459, 3.461, 3.462, 3.464, 3.464, 3.465, 3.464, 3.464, 3.463,
+ 3.457, 3.456, 3.455, 3.455, 3.455, 3.455, 3.453, 3.451, 3.449, 3.448, 3.448, 3.449, 3.449, 3.449, 3.448, 3.449, 3.451, 3.452, 3.452, 3.453, 3.454, 3.457, 3.458, 3.459, 3.462, 3.464, 3.465, 3.464, 3.465, 3.464, 3.463, 3.463,
+ 3.456, 3.456, 3.454, 3.453, 3.454, 3.453, 3.452, 3.451, 3.449, 3.448, 3.448, 3.449, 3.451, 3.451, 3.448, 3.449, 3.451, 3.454, 3.454, 3.454, 3.455, 3.457, 3.458, 3.461, 3.461, 3.462, 3.464, 3.464, 3.466, 3.465, 3.464, 3.464,
+ 3.459, 3.457, 3.456, 3.455, 3.454, 3.453, 3.453, 3.452, 3.452, 3.451, 3.449, 3.449, 3.449, 3.448, 3.447, 3.449, 3.451, 3.454, 3.455, 3.455, 3.456, 3.458, 3.459, 3.461, 3.461, 3.462, 3.463, 3.466, 3.469, 3.465, 3.465, 3.464,
+ 3.463, 3.461, 3.458, 3.458, 3.457, 3.456, 3.456, 3.454, 3.454, 3.452, 3.452, 3.451, 3.451, 3.449, 3.448, 3.448, 3.452, 3.454, 3.456, 3.455, 3.457, 3.458, 3.461, 3.464, 3.462, 3.461, 3.463, 3.466, 3.469, 3.469, 3.467, 3.467,
+ 3.466, 3.462, 3.461, 3.461, 3.459, 3.457, 3.457, 3.457, 3.456, 3.454, 3.455, 3.455, 3.455, 3.451, 3.452, 3.453, 3.454, 3.455, 3.456, 3.456, 3.459, 3.462, 3.463, 3.466, 3.466, 3.467, 3.466, 3.469, 3.471, 3.469, 3.468, 3.466,
+ 3.467, 3.463, 3.463, 3.459, 3.461, 3.459, 3.461, 3.459, 3.458, 3.456, 3.457, 3.456, 3.457, 3.455, 3.456, 3.455, 3.456, 3.457, 3.459, 3.461, 3.461, 3.464, 3.465, 3.468, 3.469, 3.469, 3.469, 3.469, 3.471, 3.468, 3.467, 3.468,
+ 3.467, 3.464, 3.459, 3.459, 3.462, 3.462, 3.462, 3.461, 3.461, 3.462, 3.461, 3.459, 3.461, 3.459, 3.458, 3.457, 3.459, 3.461, 3.462, 3.463, 3.464, 3.466, 3.468, 3.469, 3.471, 3.469, 3.471, 3.472, 3.471, 3.467, 3.466, 3.464,
+ 3.464, 3.462, 3.458, 3.457, 3.458, 3.461, 3.461, 3.461, 3.461, 3.462, 3.462, 3.461, 3.461, 3.459, 3.459, 3.459, 3.461, 3.461, 3.464, 3.465, 3.465, 3.468, 3.468, 3.469, 3.471, 3.469, 3.469, 3.469, 3.469, 3.464, 3.462, 3.459,
+ 3.457, 3.458, 3.455, 3.456, 3.456, 3.457, 3.459, 3.459, 3.459, 3.459, 3.458, 3.456, 3.458, 3.457, 3.458, 3.458, 3.458, 3.459, 3.461, 3.463, 3.465, 3.466, 3.468, 3.469, 3.471, 3.468, 3.466, 3.466, 3.465, 3.461, 3.459, 3.457,
+ 3.456, 3.455, 3.454, 3.454, 3.455, 3.456, 3.458, 3.459, 3.459, 3.456, 3.456, 3.456, 3.455, 3.456, 3.455, 3.455, 3.455, 3.454, 3.457, 3.461, 3.462, 3.464, 3.465, 3.467, 3.467, 3.466, 3.464, 3.464, 3.463, 3.461, 3.457, 3.456,
+ 3.456, 3.454, 3.453, 3.454, 3.454, 3.455, 3.458, 3.459, 3.459, 3.456, 3.455, 3.455, 3.455, 3.451, 3.453, 3.454, 3.454, 3.455, 3.455, 3.458, 3.461, 3.462, 3.461, 3.463, 3.465, 3.464, 3.463, 3.463, 3.462, 3.459, 3.456, 3.451,
+ 3.455, 3.452, 3.452, 3.452, 3.455, 3.457, 3.459, 3.459, 3.459, 3.458, 3.456, 3.456, 3.455, 3.453, 3.453, 3.455, 3.457, 3.457, 3.457, 3.461, 3.461, 3.461, 3.459, 3.462, 3.464, 3.464, 3.464, 3.463, 3.463, 3.459, 3.454, 3.451,
+ 3.452, 3.452, 3.452, 3.453, 3.457, 3.458, 3.458, 3.459, 3.459, 3.458, 3.457, 3.457, 3.455, 3.455, 3.458, 3.459, 3.458, 3.459, 3.459, 3.461, 3.461, 3.461, 3.459, 3.461, 3.463, 3.464, 3.466, 3.463, 3.461, 3.458, 3.453, 3.449
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 3.403, 3.399, 3.395, 3.391, 3.392, 3.394, 3.401, 3.403, 3.404, 3.404, 3.403, 3.399, 3.398, 3.396, 3.395, 3.396, 3.399, 3.403, 3.404, 3.401, 3.399, 3.398, 3.397, 3.401, 3.401, 3.401, 3.396, 3.394, 3.397, 3.396, 3.388, 3.364,
+ 3.403, 3.399, 3.393, 3.389, 3.391, 3.395, 3.401, 3.404, 3.406, 3.404, 3.403, 3.399, 3.399, 3.397, 3.397, 3.397, 3.401, 3.404, 3.404, 3.402, 3.398, 3.396, 3.397, 3.401, 3.401, 3.401, 3.395, 3.394, 3.396, 3.393, 3.387, 3.364,
+ 3.399, 3.398, 3.391, 3.385, 3.386, 3.395, 3.402, 3.405, 3.405, 3.404, 3.402, 3.399, 3.399, 3.398, 3.398, 3.398, 3.401, 3.404, 3.405, 3.403, 3.399, 3.396, 3.396, 3.398, 3.401, 3.401, 3.398, 3.394, 3.392, 3.389, 3.386, 3.364,
+ 3.398, 3.393, 3.386, 3.382, 3.385, 3.392, 3.399, 3.403, 3.405, 3.404, 3.402, 3.398, 3.398, 3.397, 3.397, 3.398, 3.401, 3.404, 3.405, 3.403, 3.398, 3.394, 3.394, 3.398, 3.401, 3.401, 3.396, 3.392, 3.391, 3.388, 3.383, 3.362,
+ 3.396, 3.391, 3.384, 3.381, 3.384, 3.389, 3.398, 3.402, 3.402, 3.401, 3.399, 3.395, 3.395, 3.395, 3.397, 3.397, 3.401, 3.402, 3.404, 3.403, 3.399, 3.394, 3.393, 3.395, 3.399, 3.399, 3.397, 3.391, 3.388, 3.384, 3.381, 3.363,
+ 3.391, 3.386, 3.382, 3.381, 3.385, 3.389, 3.396, 3.398, 3.399, 3.399, 3.398, 3.395, 3.394, 3.394, 3.395, 3.397, 3.399, 3.401, 3.403, 3.401, 3.398, 3.394, 3.393, 3.393, 3.394, 3.396, 3.395, 3.392, 3.387, 3.382, 3.378, 3.361,
+ 3.389, 3.386, 3.379, 3.379, 3.383, 3.388, 3.394, 3.397, 3.397, 3.397, 3.395, 3.393, 3.393, 3.393, 3.395, 3.395, 3.397, 3.398, 3.401, 3.399, 3.397, 3.395, 3.394, 3.391, 3.393, 3.393, 3.393, 3.389, 3.387, 3.381, 3.374, 3.357,
+ 3.386, 3.383, 3.376, 3.375, 3.381, 3.386, 3.394, 3.396, 3.396, 3.394, 3.392, 3.392, 3.394, 3.394, 3.395, 3.394, 3.396, 3.398, 3.399, 3.397, 3.397, 3.394, 3.393, 3.391, 3.389, 3.391, 3.392, 3.388, 3.386, 3.379, 3.372, 3.355,
+ 3.386, 3.379, 3.373, 3.373, 3.378, 3.384, 3.391, 3.396, 3.395, 3.393, 3.389, 3.391, 3.391, 3.393, 3.394, 3.393, 3.394, 3.396, 3.397, 3.396, 3.393, 3.394, 3.393, 3.392, 3.389, 3.389, 3.389, 3.389, 3.386, 3.378, 3.371, 3.351,
+ 3.379, 3.375, 3.371, 3.371, 3.376, 3.381, 3.388, 3.393, 3.394, 3.391, 3.386, 3.386, 3.388, 3.393, 3.392, 3.392, 3.393, 3.395, 3.394, 3.392, 3.389, 3.391, 3.391, 3.392, 3.389, 3.388, 3.389, 3.389, 3.383, 3.377, 3.369, 3.351,
+ 3.373, 3.371, 3.367, 3.368, 3.373, 3.381, 3.387, 3.389, 3.391, 3.389, 3.385, 3.386, 3.383, 3.389, 3.389, 3.392, 3.392, 3.394, 3.393, 3.389, 3.387, 3.387, 3.388, 3.389, 3.389, 3.388, 3.386, 3.386, 3.382, 3.374, 3.367, 3.345,
+ 3.371, 3.369, 3.365, 3.366, 3.373, 3.379, 3.386, 3.389, 3.391, 3.389, 3.385, 3.384, 3.382, 3.386, 3.387, 3.389, 3.391, 3.392, 3.391, 3.387, 3.385, 3.385, 3.386, 3.388, 3.388, 3.388, 3.386, 3.385, 3.381, 3.373, 3.367, 3.345,
+ 3.367, 3.365, 3.365, 3.366, 3.374, 3.379, 3.384, 3.388, 3.389, 3.387, 3.384, 3.383, 3.383, 3.385, 3.385, 3.386, 3.388, 3.389, 3.388, 3.386, 3.383, 3.382, 3.384, 3.386, 3.387, 3.386, 3.381, 3.381, 3.379, 3.372, 3.364, 3.344,
+ 3.365, 3.363, 3.362, 3.367, 3.375, 3.379, 3.383, 3.384, 3.386, 3.384, 3.381, 3.379, 3.379, 3.383, 3.383, 3.384, 3.385, 3.387, 3.387, 3.385, 3.381, 3.381, 3.382, 3.384, 3.384, 3.385, 3.382, 3.379, 3.374, 3.369, 3.359, 3.343,
+ 3.359, 3.358, 3.361, 3.364, 3.373, 3.381, 3.384, 3.384, 3.385, 3.384, 3.381, 3.377, 3.379, 3.379, 3.382, 3.383, 3.384, 3.386, 3.386, 3.385, 3.381, 3.379, 3.381, 3.382, 3.382, 3.383, 3.379, 3.377, 3.371, 3.364, 3.357, 3.339,
+ 3.357, 3.356, 3.356, 3.362, 3.372, 3.379, 3.384, 3.384, 3.383, 3.381, 3.378, 3.376, 3.377, 3.379, 3.381, 3.382, 3.383, 3.385, 3.385, 3.383, 3.379, 3.379, 3.379, 3.381, 3.381, 3.382, 3.379, 3.372, 3.367, 3.362, 3.354, 3.334,
+ 3.357, 3.354, 3.357, 3.361, 3.372, 3.381, 3.385, 3.385, 3.384, 3.379, 3.376, 3.376, 3.376, 3.379, 3.381, 3.383, 3.383, 3.384, 3.383, 3.379, 3.378, 3.381, 3.379, 3.379, 3.379, 3.379, 3.378, 3.371, 3.363, 3.358, 3.354, 3.332,
+ 3.354, 3.351, 3.354, 3.359, 3.371, 3.379, 3.382, 3.384, 3.381, 3.378, 3.375, 3.374, 3.376, 3.378, 3.381, 3.383, 3.384, 3.382, 3.377, 3.377, 3.376, 3.377, 3.378, 3.378, 3.379, 3.379, 3.376, 3.367, 3.361, 3.357, 3.352, 3.333,
+ 3.352, 3.349, 3.351, 3.357, 3.372, 3.381, 3.383, 3.383, 3.381, 3.376, 3.372, 3.373, 3.375, 3.377, 3.382, 3.384, 3.384, 3.379, 3.376, 3.374, 3.374, 3.375, 3.375, 3.376, 3.377, 3.376, 3.373, 3.366, 3.361, 3.356, 3.347, 3.332,
+ 3.347, 3.346, 3.346, 3.355, 3.371, 3.377, 3.382, 3.381, 3.379, 3.372, 3.371, 3.371, 3.372, 3.375, 3.379, 3.383, 3.384, 3.379, 3.374, 3.373, 3.371, 3.373, 3.374, 3.375, 3.374, 3.374, 3.371, 3.365, 3.359, 3.352, 3.343, 3.331,
+ 3.345, 3.344, 3.345, 3.353, 3.367, 3.374, 3.382, 3.382, 3.376, 3.371, 3.369, 3.368, 3.369, 3.373, 3.377, 3.381, 3.379, 3.376, 3.373, 3.369, 3.368, 3.371, 3.372, 3.373, 3.371, 3.371, 3.369, 3.363, 3.357, 3.349, 3.341, 3.326,
+ 3.343, 3.341, 3.344, 3.351, 3.362, 3.371, 3.376, 3.376, 3.372, 3.369, 3.367, 3.366, 3.367, 3.369, 3.376, 3.378, 3.378, 3.375, 3.371, 3.367, 3.367, 3.368, 3.369, 3.369, 3.369, 3.368, 3.365, 3.361, 3.354, 3.347, 3.338, 3.321,
+ 3.341, 3.339, 3.342, 3.349, 3.359, 3.367, 3.371, 3.372, 3.371, 3.368, 3.366, 3.363, 3.365, 3.368, 3.371, 3.374, 3.376, 3.374, 3.368, 3.365, 3.365, 3.366, 3.368, 3.367, 3.367, 3.363, 3.361, 3.356, 3.352, 3.346, 3.336, 3.317,
+ 3.338, 3.336, 3.338, 3.346, 3.359, 3.364, 3.368, 3.369, 3.367, 3.366, 3.363, 3.362, 3.364, 3.364, 3.367, 3.371, 3.372, 3.369, 3.365, 3.362, 3.362, 3.365, 3.367, 3.367, 3.366, 3.362, 3.357, 3.353, 3.349, 3.342, 3.335, 3.317,
+ 3.334, 3.334, 3.336, 3.346, 3.354, 3.361, 3.365, 3.365, 3.365, 3.362, 3.361, 3.361, 3.362, 3.362, 3.364, 3.366, 3.368, 3.366, 3.361, 3.357, 3.357, 3.359, 3.363, 3.365, 3.363, 3.361, 3.355, 3.351, 3.346, 3.339, 3.336, 3.317,
+ 3.332, 3.332, 3.334, 3.344, 3.354, 3.359, 3.363, 3.365, 3.363, 3.361, 3.359, 3.359, 3.363, 3.363, 3.365, 3.365, 3.367, 3.366, 3.358, 3.356, 3.356, 3.358, 3.362, 3.364, 3.363, 3.359, 3.353, 3.348, 3.345, 3.339, 3.336, 3.315,
+ 3.332, 3.328, 3.331, 3.343, 3.351, 3.357, 3.358, 3.362, 3.361, 3.359, 3.357, 3.357, 3.361, 3.362, 3.364, 3.363, 3.363, 3.359, 3.356, 3.354, 3.354, 3.355, 3.358, 3.359, 3.361, 3.359, 3.351, 3.346, 3.344, 3.339, 3.336, 3.313,
+ 3.324, 3.324, 3.327, 3.334, 3.345, 3.351, 3.354, 3.356, 3.356, 3.354, 3.353, 3.354, 3.357, 3.358, 3.361, 3.358, 3.359, 3.355, 3.352, 3.348, 3.347, 3.351, 3.354, 3.358, 3.359, 3.355, 3.346, 3.343, 3.341, 3.336, 3.331, 3.312,
+ 3.318, 3.319, 3.321, 3.328, 3.337, 3.339, 3.345, 3.348, 3.346, 3.345, 3.347, 3.348, 3.351, 3.354, 3.356, 3.353, 3.354, 3.344, 3.343, 3.343, 3.343, 3.344, 3.347, 3.349, 3.353, 3.346, 3.341, 3.339, 3.331, 3.329, 3.325, 3.311,
+ 3.309, 3.313, 3.317, 3.325, 3.329, 3.332, 3.338, 3.339, 3.341, 3.339, 3.339, 3.342, 3.346, 3.346, 3.351, 3.351, 3.343, 3.338, 3.338, 3.339, 3.339, 3.339, 3.341, 3.341, 3.346, 3.343, 3.339, 3.332, 3.327, 3.326, 3.322, 3.309,
+ 3.305, 3.309, 3.317, 3.325, 3.328, 3.331, 3.334, 3.336, 3.337, 3.336, 3.339, 3.341, 3.344, 3.346, 3.348, 3.347, 3.341, 3.336, 3.335, 3.337, 3.339, 3.341, 3.339, 3.339, 3.342, 3.341, 3.337, 3.329, 3.326, 3.325, 3.321, 3.314,
+ 3.302, 3.306, 3.319, 3.325, 3.329, 3.331, 3.334, 3.335, 3.337, 3.337, 3.339, 3.341, 3.344, 3.346, 3.348, 3.347, 3.342, 3.336, 3.336, 3.338, 3.339, 3.341, 3.341, 3.341, 3.339, 3.338, 3.336, 3.331, 3.327, 3.324, 3.321, 3.314
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.726, 1.725, 1.723, 1.721, 1.723, 1.724, 1.724, 1.726, 1.727, 1.728, 1.729, 1.728, 1.725, 1.724, 1.726, 1.726, 1.727, 1.729, 1.727, 1.727, 1.724, 1.725, 1.724, 1.726, 1.725, 1.725, 1.724, 1.724, 1.722, 1.721, 1.719, 1.714,
+ 1.726, 1.724, 1.722, 1.721, 1.722, 1.723, 1.725, 1.726, 1.727, 1.727, 1.727, 1.726, 1.725, 1.725, 1.725, 1.726, 1.727, 1.728, 1.728, 1.727, 1.725, 1.724, 1.724, 1.725, 1.726, 1.725, 1.724, 1.723, 1.722, 1.721, 1.719, 1.714,
+ 1.724, 1.722, 1.719, 1.719, 1.721, 1.723, 1.726, 1.726, 1.727, 1.727, 1.727, 1.725, 1.726, 1.725, 1.725, 1.725, 1.726, 1.727, 1.728, 1.728, 1.725, 1.724, 1.724, 1.724, 1.726, 1.725, 1.724, 1.722, 1.722, 1.721, 1.719, 1.712,
+ 1.723, 1.721, 1.719, 1.719, 1.719, 1.723, 1.725, 1.726, 1.727, 1.727, 1.727, 1.726, 1.725, 1.725, 1.725, 1.726, 1.726, 1.728, 1.729, 1.728, 1.725, 1.723, 1.723, 1.725, 1.726, 1.725, 1.724, 1.722, 1.721, 1.719, 1.718, 1.711,
+ 1.722, 1.719, 1.719, 1.718, 1.719, 1.722, 1.725, 1.726, 1.726, 1.727, 1.727, 1.726, 1.725, 1.726, 1.726, 1.726, 1.727, 1.727, 1.728, 1.727, 1.726, 1.725, 1.724, 1.725, 1.726, 1.725, 1.724, 1.722, 1.721, 1.719, 1.715, 1.711,
+ 1.721, 1.717, 1.717, 1.716, 1.719, 1.722, 1.724, 1.726, 1.726, 1.727, 1.726, 1.726, 1.726, 1.726, 1.726, 1.727, 1.727, 1.727, 1.727, 1.727, 1.726, 1.725, 1.725, 1.725, 1.725, 1.725, 1.724, 1.722, 1.721, 1.718, 1.715, 1.707,
+ 1.718, 1.717, 1.716, 1.716, 1.718, 1.721, 1.725, 1.726, 1.726, 1.726, 1.725, 1.725, 1.725, 1.725, 1.726, 1.727, 1.727, 1.727, 1.727, 1.726, 1.726, 1.726, 1.725, 1.724, 1.724, 1.724, 1.723, 1.722, 1.721, 1.718, 1.715, 1.709,
+ 1.718, 1.716, 1.716, 1.715, 1.717, 1.721, 1.724, 1.725, 1.726, 1.725, 1.725, 1.724, 1.724, 1.725, 1.726, 1.726, 1.727, 1.727, 1.727, 1.726, 1.726, 1.726, 1.725, 1.723, 1.723, 1.723, 1.722, 1.722, 1.719, 1.718, 1.714, 1.709,
+ 1.718, 1.716, 1.715, 1.715, 1.717, 1.721, 1.723, 1.725, 1.726, 1.725, 1.724, 1.723, 1.724, 1.725, 1.725, 1.726, 1.726, 1.726, 1.726, 1.726, 1.726, 1.726, 1.725, 1.724, 1.724, 1.723, 1.722, 1.722, 1.721, 1.717, 1.714, 1.707,
+ 1.717, 1.716, 1.714, 1.714, 1.716, 1.721, 1.723, 1.725, 1.725, 1.725, 1.723, 1.723, 1.724, 1.726, 1.726, 1.726, 1.726, 1.725, 1.726, 1.725, 1.725, 1.725, 1.725, 1.725, 1.724, 1.723, 1.722, 1.721, 1.718, 1.716, 1.714, 1.706,
+ 1.715, 1.714, 1.714, 1.714, 1.716, 1.719, 1.722, 1.724, 1.725, 1.725, 1.723, 1.723, 1.724, 1.725, 1.725, 1.725, 1.726, 1.725, 1.725, 1.725, 1.724, 1.724, 1.724, 1.725, 1.724, 1.723, 1.722, 1.721, 1.718, 1.716, 1.713, 1.705,
+ 1.714, 1.714, 1.713, 1.714, 1.717, 1.719, 1.722, 1.724, 1.724, 1.724, 1.723, 1.722, 1.723, 1.724, 1.724, 1.724, 1.726, 1.725, 1.726, 1.725, 1.723, 1.723, 1.724, 1.724, 1.724, 1.723, 1.721, 1.719, 1.717, 1.715, 1.713, 1.706,
+ 1.712, 1.712, 1.712, 1.713, 1.718, 1.719, 1.721, 1.723, 1.724, 1.724, 1.722, 1.722, 1.723, 1.724, 1.724, 1.724, 1.725, 1.725, 1.725, 1.725, 1.723, 1.722, 1.724, 1.723, 1.723, 1.722, 1.721, 1.719, 1.717, 1.714, 1.711, 1.706,
+ 1.712, 1.711, 1.711, 1.713, 1.717, 1.719, 1.722, 1.724, 1.724, 1.723, 1.722, 1.722, 1.723, 1.724, 1.724, 1.724, 1.724, 1.725, 1.725, 1.724, 1.723, 1.722, 1.722, 1.722, 1.723, 1.722, 1.721, 1.718, 1.716, 1.714, 1.711, 1.706,
+ 1.711, 1.709, 1.711, 1.713, 1.716, 1.719, 1.722, 1.724, 1.724, 1.723, 1.722, 1.721, 1.722, 1.724, 1.724, 1.724, 1.723, 1.724, 1.724, 1.724, 1.722, 1.722, 1.722, 1.722, 1.722, 1.721, 1.719, 1.718, 1.714, 1.712, 1.709, 1.702,
+ 1.709, 1.709, 1.709, 1.712, 1.717, 1.719, 1.721, 1.723, 1.723, 1.723, 1.721, 1.721, 1.722, 1.723, 1.724, 1.723, 1.724, 1.724, 1.724, 1.724, 1.723, 1.722, 1.721, 1.721, 1.721, 1.721, 1.719, 1.716, 1.713, 1.711, 1.709, 1.701,
+ 1.708, 1.707, 1.709, 1.712, 1.716, 1.719, 1.722, 1.723, 1.723, 1.723, 1.721, 1.721, 1.721, 1.722, 1.723, 1.723, 1.723, 1.723, 1.724, 1.723, 1.722, 1.722, 1.721, 1.721, 1.721, 1.721, 1.719, 1.714, 1.712, 1.709, 1.708, 1.702,
+ 1.707, 1.707, 1.708, 1.711, 1.716, 1.721, 1.722, 1.722, 1.722, 1.721, 1.721, 1.721, 1.722, 1.722, 1.723, 1.723, 1.723, 1.722, 1.722, 1.722, 1.722, 1.721, 1.721, 1.721, 1.721, 1.721, 1.717, 1.714, 1.711, 1.709, 1.707, 1.702,
+ 1.706, 1.706, 1.707, 1.711, 1.714, 1.719, 1.722, 1.722, 1.722, 1.721, 1.719, 1.721, 1.721, 1.722, 1.723, 1.724, 1.723, 1.722, 1.722, 1.721, 1.719, 1.719, 1.721, 1.721, 1.719, 1.719, 1.716, 1.713, 1.711, 1.709, 1.706, 1.701,
+ 1.705, 1.704, 1.706, 1.709, 1.713, 1.718, 1.721, 1.722, 1.721, 1.719, 1.718, 1.719, 1.721, 1.722, 1.723, 1.724, 1.724, 1.721, 1.721, 1.721, 1.719, 1.719, 1.719, 1.719, 1.719, 1.717, 1.715, 1.713, 1.711, 1.707, 1.704, 1.699,
+ 1.703, 1.703, 1.704, 1.709, 1.712, 1.717, 1.719, 1.721, 1.719, 1.718, 1.717, 1.718, 1.719, 1.721, 1.722, 1.723, 1.723, 1.722, 1.719, 1.719, 1.718, 1.719, 1.719, 1.718, 1.717, 1.716, 1.714, 1.712, 1.709, 1.706, 1.703, 1.697,
+ 1.702, 1.703, 1.704, 1.708, 1.712, 1.715, 1.718, 1.719, 1.719, 1.717, 1.717, 1.717, 1.717, 1.718, 1.721, 1.722, 1.722, 1.721, 1.719, 1.718, 1.717, 1.718, 1.718, 1.717, 1.716, 1.714, 1.714, 1.711, 1.709, 1.706, 1.703, 1.697,
+ 1.702, 1.702, 1.703, 1.706, 1.709, 1.715, 1.717, 1.718, 1.717, 1.717, 1.716, 1.716, 1.717, 1.717, 1.719, 1.721, 1.721, 1.721, 1.719, 1.717, 1.716, 1.717, 1.717, 1.716, 1.714, 1.713, 1.712, 1.711, 1.708, 1.706, 1.702, 1.696,
+ 1.701, 1.701, 1.702, 1.706, 1.709, 1.714, 1.716, 1.717, 1.716, 1.716, 1.716, 1.715, 1.716, 1.716, 1.717, 1.718, 1.719, 1.719, 1.716, 1.715, 1.715, 1.715, 1.715, 1.715, 1.714, 1.713, 1.711, 1.709, 1.708, 1.704, 1.701, 1.695,
+ 1.699, 1.699, 1.702, 1.706, 1.708, 1.712, 1.714, 1.715, 1.715, 1.715, 1.714, 1.715, 1.714, 1.715, 1.716, 1.716, 1.716, 1.716, 1.714, 1.713, 1.713, 1.714, 1.715, 1.714, 1.714, 1.712, 1.709, 1.707, 1.706, 1.703, 1.701, 1.695,
+ 1.698, 1.699, 1.701, 1.705, 1.708, 1.711, 1.714, 1.714, 1.714, 1.714, 1.714, 1.714, 1.714, 1.715, 1.715, 1.716, 1.716, 1.715, 1.713, 1.713, 1.713, 1.714, 1.714, 1.714, 1.713, 1.712, 1.709, 1.707, 1.706, 1.703, 1.701, 1.696,
+ 1.698, 1.699, 1.701, 1.705, 1.707, 1.711, 1.712, 1.713, 1.713, 1.713, 1.713, 1.714, 1.714, 1.715, 1.715, 1.716, 1.715, 1.714, 1.713, 1.712, 1.712, 1.712, 1.713, 1.713, 1.713, 1.711, 1.709, 1.707, 1.705, 1.703, 1.701, 1.696,
+ 1.698, 1.697, 1.699, 1.702, 1.705, 1.707, 1.711, 1.711, 1.711, 1.711, 1.711, 1.712, 1.712, 1.713, 1.714, 1.714, 1.713, 1.711, 1.711, 1.711, 1.711, 1.711, 1.711, 1.711, 1.711, 1.711, 1.708, 1.706, 1.704, 1.703, 1.699, 1.696,
+ 1.694, 1.695, 1.697, 1.699, 1.702, 1.705, 1.706, 1.707, 1.707, 1.708, 1.708, 1.708, 1.709, 1.711, 1.711, 1.711, 1.708, 1.708, 1.708, 1.707, 1.707, 1.707, 1.708, 1.708, 1.709, 1.708, 1.706, 1.703, 1.702, 1.701, 1.698, 1.696,
+ 1.692, 1.692, 1.695, 1.698, 1.699, 1.701, 1.704, 1.704, 1.704, 1.704, 1.705, 1.706, 1.707, 1.709, 1.709, 1.707, 1.706, 1.704, 1.704, 1.705, 1.705, 1.706, 1.706, 1.706, 1.706, 1.706, 1.703, 1.702, 1.701, 1.699, 1.696, 1.694,
+ 1.691, 1.692, 1.695, 1.697, 1.699, 1.699, 1.702, 1.703, 1.703, 1.702, 1.703, 1.704, 1.706, 1.707, 1.708, 1.706, 1.705, 1.703, 1.703, 1.703, 1.704, 1.705, 1.705, 1.705, 1.705, 1.704, 1.703, 1.701, 1.699, 1.698, 1.696, 1.695,
+ 1.689, 1.691, 1.696, 1.698, 1.699, 1.699, 1.701, 1.702, 1.702, 1.702, 1.703, 1.703, 1.706, 1.707, 1.708, 1.706, 1.705, 1.703, 1.703, 1.703, 1.703, 1.704, 1.704, 1.705, 1.704, 1.704, 1.702, 1.701, 1.698, 1.698, 1.696, 1.696
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 1.425, 1.393, 1.341, 1.295, 1.258, 1.226, 1.201, 1.181, 1.162, 1.146, 1.133, 1.123, 1.115, 1.111, 1.107, 1.106, 1.106, 1.107, 1.108, 1.111, 1.114, 1.122, 1.133, 1.148, 1.164, 1.184, 1.208, 1.236, 1.271, 1.309, 1.359, 1.381,
+ 1.397, 1.367, 1.317, 1.274, 1.237, 1.207, 1.183, 1.163, 1.146, 1.133, 1.123, 1.114, 1.107, 1.101, 1.098, 1.096, 1.096, 1.096, 1.097, 1.102, 1.106, 1.112, 1.122, 1.133, 1.148, 1.166, 1.187, 1.215, 1.249, 1.288, 1.335, 1.359,
+ 1.374, 1.341, 1.292, 1.251, 1.215, 1.186, 1.166, 1.146, 1.131, 1.117, 1.108, 1.099, 1.091, 1.088, 1.084, 1.082, 1.081, 1.082, 1.084, 1.088, 1.093, 1.098, 1.107, 1.118, 1.133, 1.149, 1.169, 1.195, 1.228, 1.267, 1.313, 1.335,
+ 1.352, 1.318, 1.271, 1.231, 1.196, 1.169, 1.149, 1.131, 1.115, 1.103, 1.093, 1.086, 1.079, 1.074, 1.071, 1.069, 1.069, 1.069, 1.071, 1.076, 1.079, 1.085, 1.094, 1.102, 1.117, 1.133, 1.152, 1.176, 1.208, 1.246, 1.289, 1.313,
+ 1.333, 1.298, 1.253, 1.212, 1.179, 1.153, 1.134, 1.116, 1.102, 1.089, 1.079, 1.072, 1.066, 1.062, 1.059, 1.058, 1.057, 1.057, 1.059, 1.064, 1.068, 1.072, 1.081, 1.091, 1.102, 1.119, 1.137, 1.161, 1.191, 1.227, 1.271, 1.293,
+ 1.317, 1.281, 1.235, 1.196, 1.165, 1.139, 1.119, 1.104, 1.089, 1.078, 1.068, 1.062, 1.055, 1.051, 1.048, 1.047, 1.047, 1.047, 1.048, 1.053, 1.056, 1.061, 1.069, 1.079, 1.091, 1.105, 1.126, 1.147, 1.177, 1.212, 1.253, 1.278,
+ 1.301, 1.265, 1.221, 1.181, 1.151, 1.127, 1.108, 1.091, 1.078, 1.068, 1.059, 1.051, 1.045, 1.041, 1.038, 1.037, 1.036, 1.037, 1.038, 1.042, 1.046, 1.051, 1.059, 1.069, 1.081, 1.096, 1.113, 1.135, 1.164, 1.198, 1.238, 1.264,
+ 1.286, 1.251, 1.207, 1.169, 1.141, 1.116, 1.098, 1.081, 1.068, 1.058, 1.049, 1.042, 1.037, 1.033, 1.031, 1.029, 1.028, 1.028, 1.029, 1.033, 1.037, 1.043, 1.051, 1.059, 1.071, 1.086, 1.104, 1.124, 1.152, 1.185, 1.225, 1.252,
+ 1.275, 1.239, 1.196, 1.161, 1.132, 1.107, 1.089, 1.073, 1.059, 1.049, 1.041, 1.035, 1.028, 1.024, 1.023, 1.021, 1.021, 1.021, 1.022, 1.024, 1.029, 1.036, 1.043, 1.051, 1.063, 1.078, 1.095, 1.115, 1.143, 1.175, 1.214, 1.243,
+ 1.267, 1.227, 1.187, 1.152, 1.122, 1.101, 1.081, 1.067, 1.054, 1.042, 1.035, 1.028, 1.023, 1.018, 1.015, 1.014, 1.014, 1.014, 1.016, 1.019, 1.024, 1.029, 1.036, 1.045, 1.056, 1.071, 1.088, 1.107, 1.134, 1.167, 1.204, 1.234,
+ 1.261, 1.219, 1.179, 1.145, 1.116, 1.095, 1.076, 1.061, 1.047, 1.037, 1.031, 1.023, 1.018, 1.014, 1.011, 1.009, 1.009, 1.009, 1.011, 1.013, 1.018, 1.024, 1.031, 1.039, 1.049, 1.065, 1.083, 1.102, 1.128, 1.161, 1.196, 1.228,
+ 1.256, 1.213, 1.173, 1.139, 1.111, 1.091, 1.071, 1.056, 1.043, 1.033, 1.026, 1.019, 1.014, 1.009, 1.006, 1.005, 1.004, 1.004, 1.006, 1.009, 1.013, 1.018, 1.026, 1.035, 1.046, 1.061, 1.078, 1.097, 1.123, 1.154, 1.191, 1.222,
+ 1.251, 1.208, 1.169, 1.137, 1.108, 1.088, 1.069, 1.053, 1.039, 1.029, 1.023, 1.015, 1.011, 1.006, 1.004, 1.003, 1.001, 1.002, 1.003, 1.006, 1.009, 1.015, 1.022, 1.032, 1.044, 1.057, 1.076, 1.094, 1.119, 1.149, 1.186, 1.218,
+ 1.249, 1.205, 1.167, 1.133, 1.107, 1.085, 1.067, 1.052, 1.038, 1.029, 1.021, 1.013, 1.008, 1.004, 1.003, 1.001, 1.001, 1.001, 1.002, 1.004, 1.007, 1.013, 1.021, 1.031, 1.042, 1.055, 1.073, 1.093, 1.116, 1.147, 1.182, 1.218,
+ 1.249, 1.204, 1.165, 1.132, 1.106, 1.085, 1.067, 1.051, 1.038, 1.029, 1.019, 1.013, 1.007, 1.003, 1.002, 1.001, 1.001, 1.001, 1.001, 1.004, 1.007, 1.013, 1.021, 1.029, 1.042, 1.055, 1.072, 1.091, 1.115, 1.145, 1.181, 1.217,
+ 1.249, 1.204, 1.165, 1.132, 1.107, 1.086, 1.067, 1.051, 1.038, 1.029, 1.019, 1.013, 1.008, 1.004, 1.002, 1.001, 1.001, 1.001, 1.002, 1.004, 1.007, 1.014, 1.021, 1.029, 1.042, 1.056, 1.072, 1.091, 1.115, 1.145, 1.181, 1.217,
+ 1.251, 1.205, 1.166, 1.133, 1.108, 1.087, 1.068, 1.052, 1.039, 1.031, 1.021, 1.014, 1.009, 1.006, 1.003, 1.002, 1.001, 1.001, 1.003, 1.006, 1.009, 1.014, 1.022, 1.031, 1.043, 1.056, 1.073, 1.093, 1.116, 1.145, 1.182, 1.218,
+ 1.252, 1.208, 1.168, 1.137, 1.111, 1.089, 1.071, 1.055, 1.043, 1.033, 1.023, 1.016, 1.012, 1.009, 1.006, 1.005, 1.004, 1.004, 1.006, 1.008, 1.012, 1.017, 1.024, 1.034, 1.045, 1.059, 1.075, 1.095, 1.119, 1.149, 1.185, 1.218,
+ 1.256, 1.213, 1.173, 1.142, 1.115, 1.093, 1.075, 1.059, 1.047, 1.036, 1.027, 1.021, 1.016, 1.012, 1.011, 1.009, 1.008, 1.008, 1.009, 1.012, 1.016, 1.021, 1.028, 1.038, 1.049, 1.064, 1.081, 1.099, 1.126, 1.155, 1.192, 1.223,
+ 1.261, 1.221, 1.179, 1.148, 1.121, 1.099, 1.081, 1.065, 1.052, 1.042, 1.032, 1.026, 1.021, 1.017, 1.015, 1.014, 1.014, 1.013, 1.013, 1.016, 1.021, 1.026, 1.033, 1.043, 1.054, 1.068, 1.085, 1.106, 1.132, 1.161, 1.199, 1.228,
+ 1.267, 1.228, 1.188, 1.155, 1.128, 1.105, 1.086, 1.071, 1.059, 1.047, 1.038, 1.031, 1.027, 1.022, 1.021, 1.019, 1.019, 1.019, 1.019, 1.022, 1.026, 1.032, 1.038, 1.049, 1.061, 1.075, 1.092, 1.112, 1.138, 1.169, 1.207, 1.236,
+ 1.278, 1.241, 1.199, 1.164, 1.137, 1.114, 1.094, 1.078, 1.066, 1.055, 1.046, 1.038, 1.032, 1.029, 1.027, 1.027, 1.027, 1.027, 1.027, 1.029, 1.032, 1.038, 1.047, 1.056, 1.067, 1.083, 1.099, 1.121, 1.146, 1.178, 1.217, 1.244,
+ 1.291, 1.252, 1.211, 1.175, 1.147, 1.124, 1.103, 1.088, 1.075, 1.063, 1.054, 1.046, 1.041, 1.036, 1.035, 1.035, 1.035, 1.035, 1.036, 1.038, 1.041, 1.047, 1.055, 1.065, 1.075, 1.092, 1.111, 1.132, 1.157, 1.189, 1.231, 1.255,
+ 1.303, 1.265, 1.222, 1.187, 1.158, 1.133, 1.112, 1.097, 1.083, 1.072, 1.063, 1.054, 1.048, 1.043, 1.043, 1.043, 1.043, 1.043, 1.043, 1.046, 1.049, 1.055, 1.065, 1.074, 1.086, 1.102, 1.119, 1.144, 1.171, 1.203, 1.243, 1.268,
+ 1.317, 1.282, 1.236, 1.201, 1.171, 1.146, 1.125, 1.109, 1.095, 1.083, 1.072, 1.064, 1.058, 1.054, 1.052, 1.051, 1.051, 1.053, 1.054, 1.057, 1.061, 1.065, 1.074, 1.086, 1.099, 1.113, 1.133, 1.156, 1.183, 1.217, 1.259, 1.282,
+ 1.335, 1.301, 1.254, 1.218, 1.186, 1.159, 1.138, 1.121, 1.108, 1.095, 1.085, 1.076, 1.069, 1.066, 1.065, 1.063, 1.062, 1.063, 1.065, 1.068, 1.073, 1.078, 1.087, 1.098, 1.113, 1.126, 1.146, 1.171, 1.199, 1.235, 1.277, 1.299,
+ 1.356, 1.321, 1.274, 1.235, 1.202, 1.175, 1.153, 1.137, 1.121, 1.108, 1.097, 1.089, 1.084, 1.081, 1.077, 1.075, 1.075, 1.075, 1.077, 1.081, 1.086, 1.091, 1.099, 1.113, 1.126, 1.144, 1.162, 1.187, 1.218, 1.255, 1.297, 1.321,
+ 1.376, 1.344, 1.296, 1.257, 1.223, 1.194, 1.171, 1.153, 1.137, 1.124, 1.112, 1.104, 1.099, 1.095, 1.093, 1.091, 1.089, 1.091, 1.092, 1.095, 1.101, 1.108, 1.116, 1.128, 1.144, 1.161, 1.181, 1.206, 1.237, 1.275, 1.321, 1.347,
+ 1.403, 1.369, 1.319, 1.279, 1.244, 1.214, 1.191, 1.171, 1.154, 1.139, 1.129, 1.121, 1.115, 1.111, 1.109, 1.106, 1.105, 1.105, 1.108, 1.112, 1.117, 1.124, 1.135, 1.147, 1.162, 1.181, 1.203, 1.228, 1.262, 1.301, 1.347, 1.377,
+ 1.429, 1.398, 1.348, 1.306, 1.269, 1.237, 1.214, 1.191, 1.173, 1.158, 1.146, 1.138, 1.132, 1.128, 1.125, 1.123, 1.122, 1.123, 1.125, 1.129, 1.136, 1.142, 1.154, 1.166, 1.182, 1.203, 1.226, 1.253, 1.288, 1.329, 1.377, 1.406,
+ 1.465, 1.429, 1.377, 1.335, 1.295, 1.262, 1.236, 1.214, 1.194, 1.179, 1.167, 1.157, 1.151, 1.146, 1.144, 1.142, 1.142, 1.142, 1.144, 1.149, 1.154, 1.163, 1.174, 1.187, 1.205, 1.226, 1.251, 1.279, 1.315, 1.357, 1.406, 1.437,
+ 1.493, 1.465, 1.409, 1.364, 1.323, 1.289, 1.261, 1.235, 1.214, 1.194, 1.179, 1.171, 1.166, 1.163, 1.161, 1.161, 1.161, 1.161, 1.162, 1.164, 1.168, 1.175, 1.187, 1.205, 1.225, 1.251, 1.276, 1.306, 1.344, 1.387, 1.437, 1.455
+ ],
+ "sigma": 0.0007,
+ "sigma_Cb": 0.00098
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2500,
+ "ccm":
+ [
+ 1.95054, -0.57435, -0.37619,
+ -0.46945, 1.86661, -0.39716,
+ 0.07977, -1.14072, 2.06095
+ ]
+ },
+ {
+ "ct": 2800,
+ "ccm":
+ [
+ 1.94104, -0.60261, -0.33844,
+ -0.43162, 1.85422, -0.42261,
+ 0.03799, -0.95022, 1.91222
+ ]
+ },
+ {
+ "ct": 2900,
+ "ccm":
+ [
+ 1.91828, -0.59569, -0.32258,
+ -0.51902, 2.09091, -0.57189,
+ -0.03324, -0.73462, 1.76785
+ ]
+ },
+ {
+ "ct": 3620,
+ "ccm":
+ [
+ 1.97199, -0.66403, -0.30797,
+ -0.46411, 2.02612, -0.56201,
+ -0.07764, -0.61178, 1.68942
+ ]
+ },
+ {
+ "ct": 4560,
+ "ccm":
+ [
+ 2.15256, -0.84787, -0.30469,
+ -0.48422, 2.28962, -0.80541,
+ -0.15113, -0.53014, 1.68127
+ ]
+ },
+ {
+ "ct": 5600,
+ "ccm":
+ [
+ 2.04576, -0.74771, -0.29805,
+ -0.36332, 1.98993, -0.62662,
+ -0.09328, -0.46543, 1.55871
+ ]
+ },
+ {
+ "ct": 7400,
+ "ccm":
+ [
+ 2.37532, -0.83069, -0.54462,
+ -0.48279, 2.84309, -1.36031,
+ -0.21178, -0.66532, 1.87709
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.06,
+ "strength": 0.5,
+ "limit": 0.5
+ }
+ },
+ {
+ "rpi.cac":
+ {
+ "lut_rx":
+ [
+ -0.28, -0.22, -0.16, -0.09, -0.02, 0.04, 0.11, 0.17, 0.29,
+ -0.28, -0.22, -0.16, -0.09, -0.02, 0.04, 0.11, 0.18, 0.3,
+ -0.28, -0.22, -0.16, -0.09, -0.02, 0.05, 0.11, 0.18, 0.31,
+ -0.28, -0.22, -0.16, -0.09, -0.02, 0.05, 0.12, 0.18, 0.31,
+ -0.27, -0.22, -0.16, -0.09, -0.02, 0.05, 0.12, 0.19, 0.31,
+ -0.27, -0.21, -0.15, -0.08, -0.02, 0.05, 0.12, 0.18, 0.31,
+ -0.27, -0.21, -0.15, -0.08, -0.02, 0.05, 0.11, 0.18, 0.3,
+ -0.25, -0.2, -0.15, -0.09, -0.02, 0.05, 0.11, 0.17, 0.29,
+ -0.24, -0.19, -0.14, -0.08, -0.02, 0.04, 0.11, 0.17, 0.29
+ ],
+ "lut_ry":
+ [
+ -0.19, -0.18, -0.19, -0.19, -0.19, -0.18, -0.19, -0.19, -0.2,
+ -0.14, -0.14, -0.15, -0.16, -0.16, -0.16, -0.16, -0.16, -0.17,
+ -0.11, -0.1, -0.11, -0.12, -0.12, -0.12, -0.12, -0.12, -0.14,
+ -0.06, -0.05, -0.05, -0.06, -0.07, -0.07, -0.06, -0.06, -0.08,
+ -0.01, 0.0, -0.01, -0.01, -0.01, -0.01, -0.01, -0.01, -0.02,
+ 0.04, 0.05, 0.04, 0.03, 0.03, 0.03, 0.03, 0.04, 0.03,
+ 0.07, 0.08, 0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.07,
+ 0.1, 0.11, 0.1, 0.1, 0.1, 0.1, 0.1, 0.11, 0.1,
+ 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.15, 0.15, 0.14
+ ],
+ "lut_bx":
+ [
+ -0.21, -0.17, -0.13, -0.06, 0.01, 0.07, 0.13, 0.18, 0.27,
+ -0.21, -0.17, -0.13, -0.06, 0.01, 0.08, 0.14, 0.2, 0.28,
+ -0.22, -0.18, -0.13, -0.06, 0.01, 0.08, 0.15, 0.21, 0.3,
+ -0.22, -0.18, -0.13, -0.06, 0.01, 0.08, 0.15, 0.21, 0.31,
+ -0.21, -0.17, -0.13, -0.07, 0.01, 0.08, 0.15, 0.2, 0.31,
+ -0.2, -0.16, -0.12, -0.06, 0.0, 0.07, 0.14, 0.18, 0.28,
+ -0.19, -0.15, -0.11, -0.06, 0.01, 0.07, 0.13, 0.18, 0.26,
+ -0.17, -0.14, -0.1, -0.05, 0.01, 0.07, 0.12, 0.16, 0.25,
+ -0.15, -0.12, -0.08, -0.04, 0.01, 0.07, 0.1, 0.13, 0.22
+ ],
+ "lut_by":
+ [
+ -0.15, -0.15, -0.17, -0.18, -0.18, -0.18, -0.17, -0.16, -0.14,
+ -0.12, -0.12, -0.13, -0.14, -0.14, -0.14, -0.13, -0.12, -0.11,
+ -0.09, -0.08, -0.09, -0.1, -0.1, -0.09, -0.09, -0.08, -0.09,
+ -0.06, -0.04, -0.04, -0.05, -0.04, -0.04, -0.04, -0.04, -0.06,
+ -0.02, 0.01, 0.01, 0.02, 0.02, 0.02, 0.02, 0.01, -0.02,
+ 0.02, 0.05, 0.07, 0.08, 0.09, 0.09, 0.08, 0.06, 0.02,
+ 0.05, 0.08, 0.1, 0.12, 0.13, 0.13, 0.12, 0.1, 0.06,
+ 0.07, 0.09, 0.11, 0.14, 0.16, 0.16, 0.14, 0.12, 0.07,
+ 0.09, 0.11, 0.14, 0.17, 0.19, 0.19, 0.18, 0.15, 0.1
+ ]
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx296_mono.json b/src/ipa/rpi/pisp/data/imx296_mono.json
new file mode 100644
index 00000000..153f86a0
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx296_mono.json
@@ -0,0 +1,960 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 3840
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 4724,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 860,
+ "reference_Y": 14551
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.751
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 226,
+ "slope": 0.01032
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.16,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 4000,
+ "table":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 4000,
+ "table":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 1.425, 1.393, 1.341, 1.295, 1.258, 1.226, 1.201, 1.181, 1.162, 1.146, 1.133, 1.123, 1.115, 1.111, 1.107, 1.106, 1.106, 1.107, 1.108, 1.111, 1.114, 1.122, 1.133, 1.148, 1.164, 1.184, 1.208, 1.236, 1.271, 1.309, 1.359, 1.381,
+ 1.397, 1.367, 1.317, 1.274, 1.237, 1.207, 1.183, 1.163, 1.146, 1.133, 1.123, 1.114, 1.107, 1.101, 1.098, 1.096, 1.096, 1.096, 1.097, 1.102, 1.106, 1.112, 1.122, 1.133, 1.148, 1.166, 1.187, 1.215, 1.249, 1.288, 1.335, 1.359,
+ 1.374, 1.341, 1.292, 1.251, 1.215, 1.186, 1.166, 1.146, 1.131, 1.117, 1.108, 1.099, 1.091, 1.088, 1.084, 1.082, 1.081, 1.082, 1.084, 1.088, 1.093, 1.098, 1.107, 1.118, 1.133, 1.149, 1.169, 1.195, 1.228, 1.267, 1.313, 1.335,
+ 1.352, 1.318, 1.271, 1.231, 1.196, 1.169, 1.149, 1.131, 1.115, 1.103, 1.093, 1.086, 1.079, 1.074, 1.071, 1.069, 1.069, 1.069, 1.071, 1.076, 1.079, 1.085, 1.094, 1.102, 1.117, 1.133, 1.152, 1.176, 1.208, 1.246, 1.289, 1.313,
+ 1.333, 1.298, 1.253, 1.212, 1.179, 1.153, 1.134, 1.116, 1.102, 1.089, 1.079, 1.072, 1.066, 1.062, 1.059, 1.058, 1.057, 1.057, 1.059, 1.064, 1.068, 1.072, 1.081, 1.091, 1.102, 1.119, 1.137, 1.161, 1.191, 1.227, 1.271, 1.293,
+ 1.317, 1.281, 1.235, 1.196, 1.165, 1.139, 1.119, 1.104, 1.089, 1.078, 1.068, 1.062, 1.055, 1.051, 1.048, 1.047, 1.047, 1.047, 1.048, 1.053, 1.056, 1.061, 1.069, 1.079, 1.091, 1.105, 1.126, 1.147, 1.177, 1.212, 1.253, 1.278,
+ 1.301, 1.265, 1.221, 1.181, 1.151, 1.127, 1.108, 1.091, 1.078, 1.068, 1.059, 1.051, 1.045, 1.041, 1.038, 1.037, 1.036, 1.037, 1.038, 1.042, 1.046, 1.051, 1.059, 1.069, 1.081, 1.096, 1.113, 1.135, 1.164, 1.198, 1.238, 1.264,
+ 1.286, 1.251, 1.207, 1.169, 1.141, 1.116, 1.098, 1.081, 1.068, 1.058, 1.049, 1.042, 1.037, 1.033, 1.031, 1.029, 1.028, 1.028, 1.029, 1.033, 1.037, 1.043, 1.051, 1.059, 1.071, 1.086, 1.104, 1.124, 1.152, 1.185, 1.225, 1.252,
+ 1.275, 1.239, 1.196, 1.161, 1.132, 1.107, 1.089, 1.073, 1.059, 1.049, 1.041, 1.035, 1.028, 1.024, 1.023, 1.021, 1.021, 1.021, 1.022, 1.024, 1.029, 1.036, 1.043, 1.051, 1.063, 1.078, 1.095, 1.115, 1.143, 1.175, 1.214, 1.243,
+ 1.267, 1.227, 1.187, 1.152, 1.122, 1.101, 1.081, 1.067, 1.054, 1.042, 1.035, 1.028, 1.023, 1.018, 1.015, 1.014, 1.014, 1.014, 1.016, 1.019, 1.024, 1.029, 1.036, 1.045, 1.056, 1.071, 1.088, 1.107, 1.134, 1.167, 1.204, 1.234,
+ 1.261, 1.219, 1.179, 1.145, 1.116, 1.095, 1.076, 1.061, 1.047, 1.037, 1.031, 1.023, 1.018, 1.014, 1.011, 1.009, 1.009, 1.009, 1.011, 1.013, 1.018, 1.024, 1.031, 1.039, 1.049, 1.065, 1.083, 1.102, 1.128, 1.161, 1.196, 1.228,
+ 1.256, 1.213, 1.173, 1.139, 1.111, 1.091, 1.071, 1.056, 1.043, 1.033, 1.026, 1.019, 1.014, 1.009, 1.006, 1.005, 1.004, 1.004, 1.006, 1.009, 1.013, 1.018, 1.026, 1.035, 1.046, 1.061, 1.078, 1.097, 1.123, 1.154, 1.191, 1.222,
+ 1.251, 1.208, 1.169, 1.137, 1.108, 1.088, 1.069, 1.053, 1.039, 1.029, 1.023, 1.015, 1.011, 1.006, 1.004, 1.003, 1.001, 1.002, 1.003, 1.006, 1.009, 1.015, 1.022, 1.032, 1.044, 1.057, 1.076, 1.094, 1.119, 1.149, 1.186, 1.218,
+ 1.249, 1.205, 1.167, 1.133, 1.107, 1.085, 1.067, 1.052, 1.038, 1.029, 1.021, 1.013, 1.008, 1.004, 1.003, 1.001, 1.001, 1.001, 1.002, 1.004, 1.007, 1.013, 1.021, 1.031, 1.042, 1.055, 1.073, 1.093, 1.116, 1.147, 1.182, 1.218,
+ 1.249, 1.204, 1.165, 1.132, 1.106, 1.085, 1.067, 1.051, 1.038, 1.029, 1.019, 1.013, 1.007, 1.003, 1.002, 1.001, 1.001, 1.001, 1.001, 1.004, 1.007, 1.013, 1.021, 1.029, 1.042, 1.055, 1.072, 1.091, 1.115, 1.145, 1.181, 1.217,
+ 1.249, 1.204, 1.165, 1.132, 1.107, 1.086, 1.067, 1.051, 1.038, 1.029, 1.019, 1.013, 1.008, 1.004, 1.002, 1.001, 1.001, 1.001, 1.002, 1.004, 1.007, 1.014, 1.021, 1.029, 1.042, 1.056, 1.072, 1.091, 1.115, 1.145, 1.181, 1.217,
+ 1.251, 1.205, 1.166, 1.133, 1.108, 1.087, 1.068, 1.052, 1.039, 1.031, 1.021, 1.014, 1.009, 1.006, 1.003, 1.002, 1.001, 1.001, 1.003, 1.006, 1.009, 1.014, 1.022, 1.031, 1.043, 1.056, 1.073, 1.093, 1.116, 1.145, 1.182, 1.218,
+ 1.252, 1.208, 1.168, 1.137, 1.111, 1.089, 1.071, 1.055, 1.043, 1.033, 1.023, 1.016, 1.012, 1.009, 1.006, 1.005, 1.004, 1.004, 1.006, 1.008, 1.012, 1.017, 1.024, 1.034, 1.045, 1.059, 1.075, 1.095, 1.119, 1.149, 1.185, 1.218,
+ 1.256, 1.213, 1.173, 1.142, 1.115, 1.093, 1.075, 1.059, 1.047, 1.036, 1.027, 1.021, 1.016, 1.012, 1.011, 1.009, 1.008, 1.008, 1.009, 1.012, 1.016, 1.021, 1.028, 1.038, 1.049, 1.064, 1.081, 1.099, 1.126, 1.155, 1.192, 1.223,
+ 1.261, 1.221, 1.179, 1.148, 1.121, 1.099, 1.081, 1.065, 1.052, 1.042, 1.032, 1.026, 1.021, 1.017, 1.015, 1.014, 1.014, 1.013, 1.013, 1.016, 1.021, 1.026, 1.033, 1.043, 1.054, 1.068, 1.085, 1.106, 1.132, 1.161, 1.199, 1.228,
+ 1.267, 1.228, 1.188, 1.155, 1.128, 1.105, 1.086, 1.071, 1.059, 1.047, 1.038, 1.031, 1.027, 1.022, 1.021, 1.019, 1.019, 1.019, 1.019, 1.022, 1.026, 1.032, 1.038, 1.049, 1.061, 1.075, 1.092, 1.112, 1.138, 1.169, 1.207, 1.236,
+ 1.278, 1.241, 1.199, 1.164, 1.137, 1.114, 1.094, 1.078, 1.066, 1.055, 1.046, 1.038, 1.032, 1.029, 1.027, 1.027, 1.027, 1.027, 1.027, 1.029, 1.032, 1.038, 1.047, 1.056, 1.067, 1.083, 1.099, 1.121, 1.146, 1.178, 1.217, 1.244,
+ 1.291, 1.252, 1.211, 1.175, 1.147, 1.124, 1.103, 1.088, 1.075, 1.063, 1.054, 1.046, 1.041, 1.036, 1.035, 1.035, 1.035, 1.035, 1.036, 1.038, 1.041, 1.047, 1.055, 1.065, 1.075, 1.092, 1.111, 1.132, 1.157, 1.189, 1.231, 1.255,
+ 1.303, 1.265, 1.222, 1.187, 1.158, 1.133, 1.112, 1.097, 1.083, 1.072, 1.063, 1.054, 1.048, 1.043, 1.043, 1.043, 1.043, 1.043, 1.043, 1.046, 1.049, 1.055, 1.065, 1.074, 1.086, 1.102, 1.119, 1.144, 1.171, 1.203, 1.243, 1.268,
+ 1.317, 1.282, 1.236, 1.201, 1.171, 1.146, 1.125, 1.109, 1.095, 1.083, 1.072, 1.064, 1.058, 1.054, 1.052, 1.051, 1.051, 1.053, 1.054, 1.057, 1.061, 1.065, 1.074, 1.086, 1.099, 1.113, 1.133, 1.156, 1.183, 1.217, 1.259, 1.282,
+ 1.335, 1.301, 1.254, 1.218, 1.186, 1.159, 1.138, 1.121, 1.108, 1.095, 1.085, 1.076, 1.069, 1.066, 1.065, 1.063, 1.062, 1.063, 1.065, 1.068, 1.073, 1.078, 1.087, 1.098, 1.113, 1.126, 1.146, 1.171, 1.199, 1.235, 1.277, 1.299,
+ 1.356, 1.321, 1.274, 1.235, 1.202, 1.175, 1.153, 1.137, 1.121, 1.108, 1.097, 1.089, 1.084, 1.081, 1.077, 1.075, 1.075, 1.075, 1.077, 1.081, 1.086, 1.091, 1.099, 1.113, 1.126, 1.144, 1.162, 1.187, 1.218, 1.255, 1.297, 1.321,
+ 1.376, 1.344, 1.296, 1.257, 1.223, 1.194, 1.171, 1.153, 1.137, 1.124, 1.112, 1.104, 1.099, 1.095, 1.093, 1.091, 1.089, 1.091, 1.092, 1.095, 1.101, 1.108, 1.116, 1.128, 1.144, 1.161, 1.181, 1.206, 1.237, 1.275, 1.321, 1.347,
+ 1.403, 1.369, 1.319, 1.279, 1.244, 1.214, 1.191, 1.171, 1.154, 1.139, 1.129, 1.121, 1.115, 1.111, 1.109, 1.106, 1.105, 1.105, 1.108, 1.112, 1.117, 1.124, 1.135, 1.147, 1.162, 1.181, 1.203, 1.228, 1.262, 1.301, 1.347, 1.377,
+ 1.429, 1.398, 1.348, 1.306, 1.269, 1.237, 1.214, 1.191, 1.173, 1.158, 1.146, 1.138, 1.132, 1.128, 1.125, 1.123, 1.122, 1.123, 1.125, 1.129, 1.136, 1.142, 1.154, 1.166, 1.182, 1.203, 1.226, 1.253, 1.288, 1.329, 1.377, 1.406,
+ 1.465, 1.429, 1.377, 1.335, 1.295, 1.262, 1.236, 1.214, 1.194, 1.179, 1.167, 1.157, 1.151, 1.146, 1.144, 1.142, 1.142, 1.142, 1.144, 1.149, 1.154, 1.163, 1.174, 1.187, 1.205, 1.226, 1.251, 1.279, 1.315, 1.357, 1.406, 1.437,
+ 1.493, 1.465, 1.409, 1.364, 1.323, 1.289, 1.261, 1.235, 1.214, 1.194, 1.179, 1.171, 1.166, 1.163, 1.161, 1.161, 1.161, 1.161, 1.162, 1.164, 1.168, 1.175, 1.187, 1.205, 1.225, 1.251, 1.276, 1.306, 1.344, 1.387, 1.437, 1.455
+ ],
+ "sigma": 0.0007,
+ "sigma_Cb": 0.00098
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.06,
+ "strength": 0.5,
+ "limit": 0.5
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": [ 0.0, 2.5, 0.01, 2.5, 0.06, 1.0, 1.0, 1.0 ],
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": [ 0.0, 2.5, 0.01, 2.5, 0.06, 1.0, 1.0, 1.0 ],
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx378.json b/src/ipa/rpi/pisp/data/imx378.json
new file mode 100644
index 00000000..ac760f79
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx378.json
@@ -0,0 +1,634 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.dpc": { }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 9999,
+ "reference_gain": 1.95,
+ "reference_aperture": 1.0,
+ "reference_lux": 1000,
+ "reference_Y": 12996
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.641
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 235,
+ "slope": 0.00902
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 8000
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8100
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2850.0, 0.6361, 0.3911,
+ 3550.0, 0.5386, 0.5077,
+ 4500.0, 0.4472, 0.6171,
+ 5600.0, 0.3906, 0.6848,
+ 8000.0, 0.3412, 0.7441
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.01667,
+ "transverse_neg": 0.01195
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 1000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.5,
+ "calibrations_Cr": [
+ {
+ "ct": 2800,
+ "table":
+ [
+ 1.604, 1.603, 1.601, 1.597, 1.594, 1.588, 1.582, 1.576, 1.57, 1.566, 1.562, 1.561, 1.561, 1.561, 1.561, 1.561, 1.561, 1.562, 1.565, 1.57, 1.577, 1.584, 1.591, 1.598, 1.604, 1.61, 1.617, 1.623, 1.627, 1.632, 1.634, 1.636,
+ 1.603, 1.601, 1.599, 1.595, 1.591, 1.585, 1.579, 1.572, 1.565, 1.561, 1.557, 1.555, 1.555, 1.555, 1.555, 1.555, 1.556, 1.558, 1.561, 1.566, 1.573, 1.581, 1.587, 1.594, 1.6, 1.607, 1.613, 1.62, 1.625, 1.63, 1.632, 1.635,
+ 1.602, 1.599, 1.596, 1.592, 1.589, 1.582, 1.575, 1.568, 1.561, 1.556, 1.552, 1.55, 1.549, 1.548, 1.548, 1.549, 1.55, 1.553, 1.556, 1.562, 1.57, 1.577, 1.583, 1.589, 1.596, 1.603, 1.61, 1.617, 1.622, 1.627, 1.63, 1.633,
+ 1.601, 1.597, 1.594, 1.59, 1.586, 1.579, 1.571, 1.564, 1.556, 1.551, 1.546, 1.544, 1.542, 1.541, 1.541, 1.542, 1.544, 1.547, 1.551, 1.557, 1.565, 1.573, 1.579, 1.585, 1.592, 1.6, 1.607, 1.614, 1.62, 1.625, 1.628, 1.632,
+ 1.6, 1.596, 1.591, 1.586, 1.58, 1.573, 1.566, 1.559, 1.551, 1.546, 1.54, 1.537, 1.534, 1.533, 1.533, 1.534, 1.536, 1.539, 1.544, 1.551, 1.559, 1.567, 1.574, 1.581, 1.589, 1.596, 1.604, 1.612, 1.618, 1.624, 1.627, 1.631,
+ 1.599, 1.594, 1.588, 1.582, 1.575, 1.568, 1.56, 1.553, 1.547, 1.54, 1.534, 1.529, 1.525, 1.524, 1.524, 1.525, 1.527, 1.531, 1.537, 1.545, 1.553, 1.561, 1.569, 1.577, 1.585, 1.593, 1.601, 1.609, 1.616, 1.623, 1.626, 1.63,
+ 1.599, 1.592, 1.586, 1.578, 1.571, 1.563, 1.555, 1.548, 1.542, 1.535, 1.528, 1.522, 1.517, 1.515, 1.515, 1.516, 1.519, 1.523, 1.531, 1.539, 1.547, 1.556, 1.564, 1.573, 1.581, 1.59, 1.599, 1.607, 1.615, 1.622, 1.625, 1.629,
+ 1.598, 1.591, 1.583, 1.575, 1.567, 1.559, 1.55, 1.543, 1.537, 1.53, 1.523, 1.516, 1.509, 1.506, 1.506, 1.507, 1.51, 1.516, 1.525, 1.533, 1.541, 1.55, 1.56, 1.57, 1.579, 1.587, 1.596, 1.605, 1.613, 1.621, 1.625, 1.629,
+ 1.597, 1.589, 1.581, 1.572, 1.564, 1.555, 1.546, 1.539, 1.532, 1.525, 1.517, 1.509, 1.5, 1.497, 1.497, 1.499, 1.501, 1.508, 1.519, 1.528, 1.535, 1.544, 1.556, 1.567, 1.576, 1.585, 1.594, 1.603, 1.612, 1.62, 1.624, 1.629,
+ 1.597, 1.588, 1.579, 1.57, 1.561, 1.552, 1.543, 1.535, 1.527, 1.519, 1.511, 1.503, 1.494, 1.491, 1.49, 1.492, 1.496, 1.502, 1.512, 1.521, 1.529, 1.539, 1.552, 1.564, 1.574, 1.583, 1.592, 1.602, 1.611, 1.619, 1.624, 1.629,
+ 1.597, 1.588, 1.579, 1.569, 1.56, 1.55, 1.54, 1.531, 1.522, 1.513, 1.504, 1.497, 1.489, 1.486, 1.486, 1.488, 1.493, 1.498, 1.506, 1.514, 1.523, 1.535, 1.548, 1.561, 1.572, 1.582, 1.591, 1.601, 1.61, 1.619, 1.624, 1.629,
+ 1.597, 1.587, 1.578, 1.568, 1.559, 1.548, 1.538, 1.527, 1.516, 1.507, 1.498, 1.491, 1.485, 1.482, 1.481, 1.484, 1.489, 1.495, 1.499, 1.506, 1.518, 1.53, 1.545, 1.559, 1.57, 1.58, 1.59, 1.6, 1.61, 1.619, 1.624, 1.629,
+ 1.597, 1.587, 1.578, 1.568, 1.558, 1.548, 1.537, 1.526, 1.514, 1.504, 1.494, 1.487, 1.482, 1.479, 1.479, 1.481, 1.486, 1.491, 1.496, 1.503, 1.515, 1.529, 1.544, 1.558, 1.569, 1.58, 1.59, 1.6, 1.61, 1.619, 1.624, 1.629,
+ 1.597, 1.587, 1.578, 1.568, 1.558, 1.548, 1.537, 1.525, 1.513, 1.502, 1.491, 1.484, 1.48, 1.478, 1.477, 1.479, 1.483, 1.488, 1.494, 1.502, 1.515, 1.528, 1.543, 1.557, 1.569, 1.58, 1.59, 1.6, 1.61, 1.619, 1.624, 1.629,
+ 1.597, 1.587, 1.578, 1.568, 1.558, 1.547, 1.536, 1.524, 1.511, 1.499, 1.487, 1.481, 1.478, 1.476, 1.476, 1.477, 1.48, 1.485, 1.492, 1.501, 1.514, 1.527, 1.543, 1.557, 1.569, 1.58, 1.59, 1.6, 1.61, 1.619, 1.624, 1.629,
+ 1.597, 1.587, 1.578, 1.568, 1.558, 1.547, 1.536, 1.524, 1.511, 1.499, 1.487, 1.481, 1.479, 1.477, 1.477, 1.478, 1.48, 1.484, 1.492, 1.501, 1.514, 1.527, 1.543, 1.557, 1.569, 1.58, 1.591, 1.601, 1.61, 1.619, 1.624, 1.63,
+ 1.597, 1.588, 1.578, 1.568, 1.558, 1.547, 1.536, 1.524, 1.511, 1.499, 1.487, 1.482, 1.48, 1.479, 1.478, 1.479, 1.48, 1.484, 1.492, 1.501, 1.514, 1.527, 1.543, 1.557, 1.569, 1.581, 1.591, 1.602, 1.611, 1.619, 1.625, 1.63,
+ 1.597, 1.588, 1.579, 1.569, 1.559, 1.548, 1.536, 1.524, 1.512, 1.5, 1.488, 1.483, 1.482, 1.48, 1.48, 1.48, 1.481, 1.485, 1.492, 1.501, 1.514, 1.527, 1.543, 1.557, 1.57, 1.581, 1.592, 1.602, 1.611, 1.62, 1.625, 1.631,
+ 1.597, 1.588, 1.58, 1.57, 1.56, 1.549, 1.538, 1.526, 1.515, 1.504, 1.494, 1.488, 1.484, 1.481, 1.48, 1.482, 1.485, 1.49, 1.497, 1.506, 1.518, 1.531, 1.546, 1.56, 1.572, 1.583, 1.594, 1.604, 1.613, 1.621, 1.626, 1.631,
+ 1.597, 1.589, 1.581, 1.571, 1.562, 1.551, 1.54, 1.529, 1.518, 1.509, 1.501, 1.493, 1.486, 1.482, 1.481, 1.483, 1.489, 1.496, 1.503, 1.511, 1.522, 1.534, 1.548, 1.562, 1.574, 1.586, 1.596, 1.607, 1.615, 1.622, 1.627, 1.632,
+ 1.597, 1.59, 1.582, 1.573, 1.564, 1.553, 1.543, 1.532, 1.522, 1.514, 1.507, 1.499, 1.489, 1.485, 1.484, 1.487, 1.494, 1.501, 1.508, 1.517, 1.527, 1.538, 1.552, 1.565, 1.577, 1.588, 1.599, 1.609, 1.616, 1.624, 1.628, 1.632,
+ 1.599, 1.592, 1.585, 1.576, 1.566, 1.557, 1.548, 1.538, 1.529, 1.521, 1.513, 1.504, 1.496, 1.492, 1.492, 1.494, 1.5, 1.507, 1.515, 1.524, 1.534, 1.545, 1.557, 1.569, 1.581, 1.592, 1.602, 1.611, 1.619, 1.626, 1.63, 1.634,
+ 1.6, 1.594, 1.588, 1.579, 1.569, 1.561, 1.553, 1.545, 1.537, 1.528, 1.518, 1.51, 1.503, 1.5, 1.5, 1.502, 1.506, 1.512, 1.522, 1.531, 1.542, 1.552, 1.563, 1.574, 1.585, 1.596, 1.605, 1.614, 1.621, 1.628, 1.632, 1.635,
+ 1.602, 1.597, 1.591, 1.582, 1.573, 1.565, 1.558, 1.551, 1.543, 1.534, 1.524, 1.517, 1.511, 1.509, 1.509, 1.511, 1.514, 1.52, 1.529, 1.539, 1.549, 1.559, 1.569, 1.579, 1.589, 1.6, 1.608, 1.617, 1.624, 1.631, 1.634, 1.637,
+ 1.605, 1.6, 1.596, 1.587, 1.579, 1.571, 1.563, 1.556, 1.549, 1.541, 1.533, 1.527, 1.522, 1.52, 1.52, 1.522, 1.525, 1.53, 1.538, 1.546, 1.557, 1.566, 1.576, 1.585, 1.595, 1.604, 1.612, 1.621, 1.627, 1.633, 1.637, 1.641,
+ 1.608, 1.604, 1.6, 1.592, 1.585, 1.577, 1.569, 1.561, 1.554, 1.547, 1.541, 1.536, 1.533, 1.531, 1.531, 1.533, 1.536, 1.54, 1.546, 1.554, 1.564, 1.574, 1.583, 1.592, 1.6, 1.608, 1.616, 1.624, 1.63, 1.636, 1.64, 1.644,
+ 1.611, 1.607, 1.604, 1.597, 1.59, 1.582, 1.574, 1.567, 1.56, 1.554, 1.549, 1.545, 1.543, 1.542, 1.542, 1.543, 1.546, 1.55, 1.556, 1.562, 1.571, 1.58, 1.589, 1.598, 1.605, 1.613, 1.621, 1.628, 1.634, 1.639, 1.643, 1.647,
+ 1.614, 1.61, 1.607, 1.601, 1.595, 1.588, 1.58, 1.574, 1.567, 1.562, 1.557, 1.554, 1.553, 1.552, 1.552, 1.554, 1.557, 1.561, 1.565, 1.571, 1.579, 1.587, 1.595, 1.603, 1.61, 1.618, 1.625, 1.633, 1.638, 1.642, 1.646, 1.65,
+ 1.616, 1.614, 1.611, 1.606, 1.601, 1.594, 1.586, 1.58, 1.574, 1.569, 1.565, 1.563, 1.562, 1.562, 1.562, 1.564, 1.567, 1.571, 1.575, 1.58, 1.586, 1.593, 1.601, 1.609, 1.616, 1.623, 1.63, 1.637, 1.641, 1.646, 1.65, 1.653,
+ 1.618, 1.615, 1.613, 1.609, 1.604, 1.598, 1.592, 1.586, 1.58, 1.575, 1.572, 1.571, 1.57, 1.57, 1.57, 1.572, 1.574, 1.577, 1.581, 1.585, 1.592, 1.599, 1.606, 1.614, 1.621, 1.628, 1.634, 1.64, 1.644, 1.649, 1.651, 1.654,
+ 1.618, 1.617, 1.615, 1.612, 1.608, 1.603, 1.597, 1.591, 1.585, 1.581, 1.579, 1.578, 1.578, 1.578, 1.578, 1.579, 1.581, 1.583, 1.586, 1.59, 1.597, 1.604, 1.612, 1.619, 1.626, 1.633, 1.638, 1.643, 1.647, 1.651, 1.653, 1.655,
+ 1.619, 1.618, 1.617, 1.614, 1.611, 1.607, 1.602, 1.596, 1.59, 1.587, 1.585, 1.585, 1.585, 1.585, 1.585, 1.586, 1.587, 1.589, 1.591, 1.595, 1.602, 1.609, 1.617, 1.624, 1.631, 1.638, 1.642, 1.646, 1.65, 1.654, 1.655, 1.655
+ ]
+ },
+ {
+ "ct": 5500,
+ "table":
+ [
+ 2.664, 2.661, 2.658, 2.652, 2.646, 2.638, 2.631, 2.619, 2.605, 2.602, 2.602, 2.602, 2.602, 2.603, 2.605, 2.609, 2.614, 2.619, 2.625, 2.632, 2.642, 2.654, 2.667, 2.68, 2.69, 2.701, 2.712, 2.723, 2.73, 2.736, 2.742, 2.747,
+ 2.662, 2.659, 2.656, 2.649, 2.64, 2.631, 2.622, 2.61, 2.596, 2.593, 2.592, 2.593, 2.593, 2.595, 2.599, 2.604, 2.61, 2.616, 2.621, 2.628, 2.636, 2.646, 2.659, 2.671, 2.682, 2.694, 2.706, 2.718, 2.726, 2.733, 2.739, 2.745,
+ 2.66, 2.657, 2.655, 2.645, 2.635, 2.625, 2.614, 2.601, 2.587, 2.583, 2.583, 2.583, 2.584, 2.588, 2.593, 2.599, 2.606, 2.612, 2.618, 2.624, 2.63, 2.639, 2.65, 2.662, 2.674, 2.687, 2.7, 2.713, 2.721, 2.73, 2.736, 2.743,
+ 2.657, 2.655, 2.652, 2.641, 2.629, 2.617, 2.605, 2.592, 2.579, 2.575, 2.574, 2.574, 2.575, 2.58, 2.587, 2.593, 2.6, 2.607, 2.613, 2.619, 2.625, 2.632, 2.643, 2.654, 2.667, 2.68, 2.694, 2.708, 2.717, 2.727, 2.734, 2.741,
+ 2.654, 2.649, 2.644, 2.633, 2.621, 2.608, 2.595, 2.584, 2.573, 2.569, 2.566, 2.566, 2.566, 2.57, 2.575, 2.582, 2.59, 2.598, 2.607, 2.615, 2.621, 2.628, 2.639, 2.65, 2.664, 2.677, 2.691, 2.705, 2.715, 2.725, 2.733, 2.741,
+ 2.651, 2.644, 2.636, 2.624, 2.612, 2.599, 2.585, 2.576, 2.568, 2.563, 2.559, 2.557, 2.558, 2.56, 2.563, 2.57, 2.579, 2.589, 2.6, 2.61, 2.617, 2.625, 2.635, 2.647, 2.66, 2.674, 2.688, 2.701, 2.712, 2.723, 2.732, 2.741,
+ 2.648, 2.639, 2.629, 2.617, 2.604, 2.59, 2.577, 2.569, 2.563, 2.557, 2.551, 2.549, 2.549, 2.55, 2.552, 2.558, 2.568, 2.58, 2.593, 2.604, 2.612, 2.621, 2.632, 2.644, 2.658, 2.671, 2.685, 2.699, 2.71, 2.722, 2.731, 2.741,
+ 2.646, 2.635, 2.623, 2.61, 2.596, 2.584, 2.572, 2.565, 2.559, 2.552, 2.544, 2.541, 2.54, 2.541, 2.542, 2.548, 2.559, 2.57, 2.583, 2.595, 2.605, 2.616, 2.63, 2.643, 2.656, 2.67, 2.684, 2.698, 2.71, 2.722, 2.731, 2.741,
+ 2.644, 2.63, 2.617, 2.603, 2.588, 2.578, 2.567, 2.561, 2.555, 2.547, 2.538, 2.533, 2.532, 2.531, 2.532, 2.538, 2.549, 2.561, 2.574, 2.586, 2.598, 2.612, 2.627, 2.642, 2.655, 2.668, 2.682, 2.696, 2.709, 2.722, 2.731, 2.741,
+ 2.643, 2.628, 2.613, 2.598, 2.583, 2.573, 2.564, 2.557, 2.55, 2.541, 2.531, 2.526, 2.524, 2.523, 2.524, 2.53, 2.541, 2.552, 2.565, 2.578, 2.593, 2.608, 2.625, 2.641, 2.654, 2.668, 2.682, 2.696, 2.709, 2.722, 2.731, 2.741,
+ 2.643, 2.627, 2.61, 2.595, 2.581, 2.571, 2.562, 2.553, 2.543, 2.534, 2.526, 2.52, 2.516, 2.516, 2.519, 2.525, 2.533, 2.543, 2.556, 2.57, 2.588, 2.606, 2.623, 2.64, 2.654, 2.668, 2.682, 2.696, 2.709, 2.722, 2.731, 2.741,
+ 2.643, 2.625, 2.608, 2.593, 2.578, 2.569, 2.56, 2.549, 2.536, 2.528, 2.52, 2.514, 2.508, 2.509, 2.515, 2.52, 2.526, 2.535, 2.546, 2.562, 2.583, 2.603, 2.622, 2.639, 2.653, 2.668, 2.682, 2.696, 2.709, 2.722, 2.731, 2.741,
+ 2.643, 2.625, 2.607, 2.592, 2.577, 2.568, 2.56, 2.548, 2.534, 2.524, 2.516, 2.51, 2.505, 2.506, 2.51, 2.516, 2.522, 2.531, 2.544, 2.56, 2.581, 2.601, 2.621, 2.639, 2.654, 2.669, 2.683, 2.696, 2.71, 2.723, 2.732, 2.742,
+ 2.643, 2.625, 2.607, 2.592, 2.577, 2.568, 2.56, 2.548, 2.534, 2.523, 2.512, 2.506, 2.503, 2.504, 2.506, 2.512, 2.52, 2.53, 2.543, 2.559, 2.58, 2.6, 2.62, 2.639, 2.655, 2.67, 2.684, 2.697, 2.711, 2.725, 2.734, 2.743,
+ 2.643, 2.625, 2.607, 2.592, 2.577, 2.568, 2.56, 2.548, 2.534, 2.521, 2.508, 2.503, 2.502, 2.501, 2.502, 2.508, 2.517, 2.529, 2.543, 2.559, 2.579, 2.599, 2.62, 2.639, 2.656, 2.671, 2.685, 2.698, 2.713, 2.727, 2.736, 2.744,
+ 2.645, 2.627, 2.609, 2.593, 2.578, 2.569, 2.56, 2.548, 2.535, 2.522, 2.51, 2.504, 2.502, 2.502, 2.504, 2.509, 2.518, 2.529, 2.543, 2.559, 2.579, 2.599, 2.621, 2.642, 2.658, 2.673, 2.686, 2.7, 2.715, 2.729, 2.738, 2.747,
+ 2.646, 2.628, 2.611, 2.595, 2.58, 2.569, 2.56, 2.548, 2.535, 2.523, 2.512, 2.506, 2.503, 2.504, 2.507, 2.512, 2.518, 2.529, 2.543, 2.559, 2.579, 2.6, 2.623, 2.644, 2.659, 2.674, 2.688, 2.702, 2.716, 2.73, 2.74, 2.749,
+ 2.648, 2.63, 2.612, 2.597, 2.581, 2.571, 2.56, 2.548, 2.536, 2.525, 2.515, 2.509, 2.504, 2.505, 2.509, 2.514, 2.52, 2.53, 2.544, 2.56, 2.58, 2.6, 2.625, 2.646, 2.661, 2.676, 2.69, 2.704, 2.718, 2.732, 2.742, 2.752,
+ 2.648, 2.632, 2.615, 2.6, 2.585, 2.575, 2.565, 2.555, 2.544, 2.533, 2.523, 2.516, 2.511, 2.511, 2.514, 2.52, 2.529, 2.539, 2.551, 2.566, 2.585, 2.605, 2.628, 2.649, 2.664, 2.68, 2.694, 2.709, 2.723, 2.736, 2.745, 2.754,
+ 2.648, 2.633, 2.618, 2.603, 2.588, 2.579, 2.569, 2.561, 2.552, 2.542, 2.53, 2.523, 2.517, 2.516, 2.518, 2.526, 2.538, 2.549, 2.558, 2.571, 2.589, 2.609, 2.631, 2.651, 2.667, 2.683, 2.699, 2.713, 2.727, 2.74, 2.748, 2.756,
+ 2.649, 2.635, 2.622, 2.607, 2.593, 2.584, 2.575, 2.567, 2.559, 2.549, 2.538, 2.531, 2.525, 2.523, 2.525, 2.533, 2.546, 2.558, 2.566, 2.579, 2.597, 2.615, 2.635, 2.655, 2.671, 2.688, 2.703, 2.718, 2.732, 2.745, 2.752, 2.76,
+ 2.653, 2.64, 2.628, 2.615, 2.602, 2.591, 2.581, 2.573, 2.565, 2.556, 2.546, 2.54, 2.537, 2.536, 2.537, 2.543, 2.553, 2.565, 2.577, 2.592, 2.609, 2.627, 2.645, 2.662, 2.678, 2.693, 2.708, 2.723, 2.737, 2.75, 2.758, 2.766,
+ 2.657, 2.646, 2.634, 2.622, 2.61, 2.599, 2.588, 2.579, 2.57, 2.562, 2.554, 2.55, 2.549, 2.548, 2.548, 2.553, 2.561, 2.572, 2.588, 2.605, 2.622, 2.639, 2.655, 2.67, 2.685, 2.699, 2.714, 2.728, 2.742, 2.756, 2.764, 2.773,
+ 2.662, 2.652, 2.642, 2.63, 2.618, 2.607, 2.595, 2.586, 2.578, 2.571, 2.565, 2.563, 2.562, 2.562, 2.563, 2.567, 2.573, 2.584, 2.601, 2.618, 2.635, 2.651, 2.665, 2.679, 2.692, 2.706, 2.72, 2.735, 2.748, 2.761, 2.77, 2.778,
+ 2.669, 2.661, 2.652, 2.64, 2.627, 2.615, 2.604, 2.596, 2.589, 2.584, 2.58, 2.578, 2.578, 2.579, 2.581, 2.585, 2.591, 2.601, 2.615, 2.63, 2.646, 2.661, 2.675, 2.688, 2.701, 2.714, 2.729, 2.744, 2.756, 2.768, 2.775, 2.782,
+ 2.676, 2.669, 2.662, 2.649, 2.636, 2.624, 2.612, 2.605, 2.6, 2.596, 2.594, 2.593, 2.593, 2.595, 2.598, 2.603, 2.609, 2.618, 2.629, 2.642, 2.657, 2.672, 2.685, 2.698, 2.71, 2.723, 2.738, 2.752, 2.763, 2.774, 2.78, 2.786,
+ 2.683, 2.676, 2.67, 2.658, 2.646, 2.635, 2.623, 2.616, 2.611, 2.609, 2.608, 2.608, 2.608, 2.611, 2.614, 2.619, 2.625, 2.633, 2.644, 2.655, 2.668, 2.681, 2.694, 2.707, 2.719, 2.732, 2.747, 2.76, 2.77, 2.779, 2.785, 2.791,
+ 2.688, 2.682, 2.676, 2.667, 2.658, 2.646, 2.635, 2.628, 2.623, 2.621, 2.621, 2.621, 2.623, 2.625, 2.629, 2.634, 2.64, 2.648, 2.658, 2.669, 2.679, 2.691, 2.703, 2.716, 2.729, 2.742, 2.755, 2.768, 2.776, 2.783, 2.79, 2.796,
+ 2.694, 2.689, 2.683, 2.676, 2.67, 2.658, 2.646, 2.64, 2.635, 2.634, 2.634, 2.635, 2.637, 2.64, 2.644, 2.649, 2.655, 2.663, 2.673, 2.682, 2.691, 2.7, 2.712, 2.725, 2.738, 2.752, 2.764, 2.775, 2.782, 2.788, 2.795, 2.802,
+ 2.697, 2.693, 2.689, 2.682, 2.676, 2.666, 2.655, 2.65, 2.645, 2.644, 2.644, 2.645, 2.647, 2.649, 2.652, 2.657, 2.663, 2.671, 2.68, 2.69, 2.699, 2.709, 2.722, 2.735, 2.747, 2.76, 2.77, 2.78, 2.787, 2.793, 2.798, 2.804,
+ 2.7, 2.697, 2.694, 2.687, 2.68, 2.672, 2.664, 2.659, 2.655, 2.654, 2.654, 2.655, 2.655, 2.657, 2.66, 2.664, 2.671, 2.678, 2.687, 2.696, 2.707, 2.718, 2.732, 2.744, 2.756, 2.767, 2.776, 2.785, 2.791, 2.798, 2.801, 2.804,
+ 2.702, 2.701, 2.699, 2.692, 2.685, 2.679, 2.672, 2.668, 2.665, 2.664, 2.664, 2.664, 2.664, 2.665, 2.667, 2.671, 2.678, 2.685, 2.693, 2.703, 2.715, 2.728, 2.741, 2.754, 2.764, 2.774, 2.782, 2.789, 2.796, 2.803, 2.804, 2.805
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 2800,
+ "table":
+ [
+ 2.876, 2.872, 2.868, 2.866, 2.863, 2.858, 2.852, 2.849, 2.847, 2.846, 2.846, 2.846, 2.847, 2.848, 2.85, 2.851, 2.851, 2.852, 2.855, 2.859, 2.864, 2.868, 2.872, 2.877, 2.884, 2.89, 2.895, 2.9, 2.907, 2.913, 2.92, 2.926,
+ 2.871, 2.869, 2.866, 2.863, 2.861, 2.856, 2.85, 2.848, 2.846, 2.846, 2.846, 2.847, 2.847, 2.848, 2.85, 2.852, 2.853, 2.854, 2.856, 2.86, 2.866, 2.871, 2.875, 2.879, 2.884, 2.889, 2.894, 2.899, 2.905, 2.912, 2.917, 2.923,
+ 2.867, 2.865, 2.863, 2.861, 2.858, 2.854, 2.848, 2.847, 2.846, 2.846, 2.847, 2.847, 2.848, 2.849, 2.85, 2.852, 2.854, 2.856, 2.858, 2.861, 2.868, 2.874, 2.877, 2.881, 2.884, 2.888, 2.893, 2.898, 2.904, 2.91, 2.915, 2.92,
+ 2.863, 2.862, 2.861, 2.858, 2.856, 2.851, 2.847, 2.846, 2.846, 2.846, 2.847, 2.848, 2.849, 2.85, 2.852, 2.854, 2.857, 2.859, 2.86, 2.864, 2.871, 2.877, 2.88, 2.883, 2.884, 2.887, 2.892, 2.896, 2.903, 2.909, 2.913, 2.917,
+ 2.862, 2.861, 2.859, 2.856, 2.852, 2.848, 2.845, 2.844, 2.844, 2.846, 2.849, 2.852, 2.855, 2.857, 2.86, 2.863, 2.868, 2.87, 2.871, 2.873, 2.877, 2.88, 2.881, 2.883, 2.885, 2.887, 2.89, 2.894, 2.9, 2.906, 2.911, 2.915,
+ 2.861, 2.859, 2.857, 2.853, 2.849, 2.846, 2.843, 2.842, 2.842, 2.846, 2.851, 2.856, 2.861, 2.865, 2.868, 2.873, 2.878, 2.881, 2.881, 2.882, 2.882, 2.883, 2.883, 2.883, 2.885, 2.886, 2.889, 2.891, 2.897, 2.903, 2.909, 2.914,
+ 2.861, 2.858, 2.856, 2.851, 2.847, 2.844, 2.842, 2.842, 2.843, 2.848, 2.854, 2.861, 2.867, 2.872, 2.876, 2.881, 2.887, 2.89, 2.89, 2.889, 2.888, 2.887, 2.885, 2.884, 2.886, 2.887, 2.888, 2.89, 2.896, 2.901, 2.907, 2.912,
+ 2.86, 2.857, 2.854, 2.85, 2.846, 2.845, 2.844, 2.845, 2.847, 2.852, 2.859, 2.865, 2.872, 2.878, 2.883, 2.887, 2.892, 2.895, 2.895, 2.894, 2.893, 2.892, 2.889, 2.887, 2.888, 2.889, 2.89, 2.892, 2.897, 2.901, 2.906, 2.911,
+ 2.858, 2.855, 2.852, 2.849, 2.846, 2.846, 2.845, 2.848, 2.852, 2.857, 2.863, 2.87, 2.878, 2.884, 2.889, 2.894, 2.898, 2.9, 2.9, 2.899, 2.899, 2.897, 2.893, 2.89, 2.89, 2.89, 2.892, 2.894, 2.897, 2.901, 2.905, 2.91,
+ 2.858, 2.855, 2.851, 2.849, 2.846, 2.846, 2.846, 2.85, 2.856, 2.862, 2.868, 2.875, 2.883, 2.889, 2.894, 2.898, 2.902, 2.904, 2.904, 2.904, 2.903, 2.901, 2.896, 2.893, 2.892, 2.892, 2.894, 2.895, 2.899, 2.902, 2.905, 2.909,
+ 2.858, 2.855, 2.851, 2.849, 2.846, 2.846, 2.846, 2.852, 2.86, 2.867, 2.874, 2.881, 2.887, 2.893, 2.897, 2.901, 2.904, 2.907, 2.908, 2.909, 2.907, 2.905, 2.9, 2.896, 2.894, 2.893, 2.895, 2.897, 2.9, 2.903, 2.906, 2.909,
+ 2.858, 2.855, 2.851, 2.849, 2.846, 2.846, 2.846, 2.854, 2.863, 2.872, 2.88, 2.886, 2.892, 2.896, 2.9, 2.903, 2.907, 2.91, 2.912, 2.913, 2.911, 2.908, 2.904, 2.899, 2.897, 2.895, 2.896, 2.898, 2.901, 2.904, 2.906, 2.909,
+ 2.858, 2.855, 2.851, 2.849, 2.847, 2.847, 2.848, 2.856, 2.866, 2.875, 2.882, 2.889, 2.894, 2.899, 2.902, 2.906, 2.909, 2.912, 2.915, 2.916, 2.914, 2.911, 2.907, 2.903, 2.899, 2.897, 2.898, 2.899, 2.902, 2.904, 2.907, 2.909,
+ 2.858, 2.855, 2.851, 2.85, 2.848, 2.849, 2.85, 2.858, 2.869, 2.877, 2.884, 2.89, 2.896, 2.901, 2.905, 2.908, 2.912, 2.915, 2.918, 2.918, 2.916, 2.913, 2.91, 2.906, 2.902, 2.899, 2.899, 2.899, 2.902, 2.905, 2.907, 2.908,
+ 2.858, 2.855, 2.851, 2.85, 2.849, 2.851, 2.852, 2.861, 2.871, 2.879, 2.886, 2.892, 2.898, 2.903, 2.907, 2.911, 2.915, 2.918, 2.92, 2.921, 2.918, 2.916, 2.913, 2.909, 2.905, 2.901, 2.9, 2.899, 2.902, 2.905, 2.907, 2.908,
+ 2.859, 2.856, 2.853, 2.851, 2.85, 2.852, 2.853, 2.862, 2.871, 2.879, 2.886, 2.892, 2.898, 2.904, 2.908, 2.912, 2.916, 2.918, 2.921, 2.921, 2.919, 2.917, 2.914, 2.91, 2.905, 2.901, 2.9, 2.9, 2.903, 2.906, 2.907, 2.908,
+ 2.86, 2.857, 2.854, 2.853, 2.852, 2.853, 2.854, 2.862, 2.871, 2.879, 2.886, 2.892, 2.898, 2.904, 2.909, 2.913, 2.916, 2.919, 2.921, 2.922, 2.92, 2.918, 2.914, 2.91, 2.905, 2.901, 2.901, 2.901, 2.904, 2.906, 2.907, 2.908,
+ 2.861, 2.858, 2.855, 2.854, 2.853, 2.854, 2.855, 2.862, 2.871, 2.879, 2.886, 2.892, 2.898, 2.904, 2.91, 2.914, 2.917, 2.919, 2.921, 2.922, 2.921, 2.919, 2.914, 2.91, 2.905, 2.901, 2.901, 2.902, 2.904, 2.907, 2.908, 2.908,
+ 2.861, 2.859, 2.857, 2.855, 2.854, 2.854, 2.855, 2.862, 2.871, 2.878, 2.885, 2.891, 2.898, 2.903, 2.908, 2.912, 2.915, 2.918, 2.919, 2.919, 2.918, 2.916, 2.912, 2.909, 2.906, 2.903, 2.903, 2.904, 2.906, 2.907, 2.908, 2.908,
+ 2.862, 2.86, 2.858, 2.856, 2.855, 2.855, 2.856, 2.862, 2.87, 2.877, 2.884, 2.89, 2.897, 2.902, 2.906, 2.91, 2.914, 2.916, 2.918, 2.917, 2.915, 2.913, 2.91, 2.908, 2.906, 2.905, 2.905, 2.906, 2.907, 2.908, 2.908, 2.909,
+ 2.862, 2.861, 2.859, 2.858, 2.856, 2.856, 2.857, 2.863, 2.87, 2.876, 2.883, 2.889, 2.895, 2.9, 2.904, 2.908, 2.912, 2.914, 2.915, 2.915, 2.912, 2.91, 2.908, 2.907, 2.907, 2.907, 2.907, 2.907, 2.908, 2.909, 2.909, 2.909,
+ 2.862, 2.862, 2.861, 2.859, 2.857, 2.858, 2.859, 2.864, 2.87, 2.876, 2.881, 2.886, 2.891, 2.896, 2.901, 2.905, 2.909, 2.911, 2.911, 2.911, 2.909, 2.907, 2.906, 2.906, 2.906, 2.907, 2.908, 2.908, 2.909, 2.91, 2.911, 2.911,
+ 2.863, 2.863, 2.862, 2.86, 2.858, 2.86, 2.862, 2.866, 2.87, 2.875, 2.88, 2.884, 2.887, 2.891, 2.897, 2.902, 2.905, 2.907, 2.907, 2.907, 2.906, 2.905, 2.905, 2.905, 2.906, 2.907, 2.908, 2.909, 2.91, 2.912, 2.912, 2.912,
+ 2.863, 2.863, 2.863, 2.862, 2.86, 2.862, 2.864, 2.867, 2.87, 2.874, 2.878, 2.881, 2.883, 2.888, 2.894, 2.898, 2.901, 2.903, 2.903, 2.903, 2.903, 2.903, 2.903, 2.904, 2.906, 2.907, 2.908, 2.91, 2.912, 2.913, 2.913, 2.914,
+ 2.865, 2.864, 2.864, 2.863, 2.862, 2.864, 2.865, 2.867, 2.869, 2.872, 2.875, 2.878, 2.882, 2.886, 2.89, 2.893, 2.895, 2.897, 2.899, 2.899, 2.899, 2.9, 2.902, 2.903, 2.905, 2.907, 2.909, 2.911, 2.912, 2.914, 2.914, 2.915,
+ 2.866, 2.865, 2.865, 2.865, 2.864, 2.865, 2.866, 2.867, 2.868, 2.87, 2.872, 2.876, 2.88, 2.883, 2.886, 2.888, 2.89, 2.892, 2.894, 2.896, 2.896, 2.897, 2.9, 2.903, 2.905, 2.907, 2.91, 2.913, 2.913, 2.914, 2.915, 2.916,
+ 2.868, 2.868, 2.867, 2.867, 2.866, 2.867, 2.868, 2.868, 2.869, 2.87, 2.871, 2.874, 2.877, 2.879, 2.881, 2.883, 2.885, 2.888, 2.891, 2.893, 2.894, 2.896, 2.898, 2.901, 2.904, 2.907, 2.91, 2.913, 2.914, 2.915, 2.916, 2.918,
+ 2.871, 2.871, 2.871, 2.87, 2.869, 2.869, 2.869, 2.869, 2.87, 2.87, 2.871, 2.872, 2.874, 2.875, 2.875, 2.877, 2.881, 2.885, 2.889, 2.892, 2.893, 2.895, 2.897, 2.899, 2.903, 2.907, 2.91, 2.914, 2.915, 2.916, 2.918, 2.919,
+ 2.874, 2.874, 2.874, 2.873, 2.871, 2.871, 2.871, 2.871, 2.871, 2.871, 2.871, 2.871, 2.87, 2.87, 2.87, 2.872, 2.876, 2.881, 2.886, 2.89, 2.893, 2.894, 2.895, 2.897, 2.902, 2.907, 2.911, 2.914, 2.916, 2.917, 2.919, 2.921,
+ 2.877, 2.877, 2.876, 2.874, 2.873, 2.872, 2.872, 2.872, 2.871, 2.871, 2.871, 2.87, 2.869, 2.869, 2.869, 2.871, 2.874, 2.878, 2.883, 2.887, 2.891, 2.893, 2.894, 2.896, 2.901, 2.907, 2.911, 2.914, 2.916, 2.918, 2.919, 2.921,
+ 2.88, 2.879, 2.878, 2.876, 2.874, 2.874, 2.873, 2.872, 2.871, 2.871, 2.871, 2.87, 2.869, 2.869, 2.869, 2.87, 2.871, 2.874, 2.879, 2.884, 2.889, 2.892, 2.894, 2.896, 2.901, 2.906, 2.91, 2.914, 2.916, 2.918, 2.92, 2.921,
+ 2.882, 2.881, 2.879, 2.878, 2.876, 2.875, 2.874, 2.873, 2.871, 2.871, 2.871, 2.87, 2.869, 2.869, 2.869, 2.869, 2.869, 2.871, 2.875, 2.881, 2.887, 2.891, 2.893, 2.895, 2.901, 2.906, 2.91, 2.914, 2.917, 2.919, 2.92, 2.921
+ ]
+ },
+ {
+ "ct": 5500,
+ "table":
+ [
+ 1.488, 1.488, 1.488, 1.488, 1.488, 1.488, 1.488, 1.489, 1.491, 1.491, 1.492, 1.492, 1.492, 1.492, 1.491, 1.491, 1.491, 1.491, 1.491, 1.491, 1.492, 1.492, 1.494, 1.495, 1.496, 1.497, 1.498, 1.499, 1.499, 1.499, 1.501, 1.503,
+ 1.486, 1.486, 1.487, 1.487, 1.487, 1.487, 1.488, 1.489, 1.49, 1.491, 1.492, 1.492, 1.492, 1.492, 1.492, 1.491, 1.491, 1.491, 1.491, 1.492, 1.492, 1.493, 1.494, 1.495, 1.495, 1.495, 1.496, 1.496, 1.497, 1.497, 1.498, 1.5,
+ 1.484, 1.485, 1.486, 1.486, 1.486, 1.486, 1.487, 1.488, 1.489, 1.49, 1.492, 1.492, 1.492, 1.492, 1.492, 1.492, 1.492, 1.492, 1.492, 1.492, 1.493, 1.494, 1.494, 1.494, 1.494, 1.493, 1.493, 1.493, 1.494, 1.495, 1.496, 1.497,
+ 1.482, 1.483, 1.485, 1.485, 1.485, 1.486, 1.487, 1.488, 1.489, 1.49, 1.491, 1.492, 1.492, 1.492, 1.492, 1.492, 1.492, 1.492, 1.492, 1.493, 1.493, 1.494, 1.494, 1.494, 1.493, 1.492, 1.491, 1.491, 1.492, 1.493, 1.493, 1.494,
+ 1.482, 1.483, 1.484, 1.484, 1.485, 1.485, 1.486, 1.487, 1.488, 1.49, 1.491, 1.493, 1.493, 1.494, 1.494, 1.495, 1.495, 1.495, 1.495, 1.494, 1.494, 1.494, 1.493, 1.493, 1.492, 1.492, 1.491, 1.491, 1.492, 1.492, 1.492, 1.493,
+ 1.482, 1.482, 1.483, 1.483, 1.484, 1.485, 1.485, 1.486, 1.487, 1.489, 1.491, 1.493, 1.494, 1.496, 1.496, 1.497, 1.497, 1.497, 1.497, 1.496, 1.495, 1.494, 1.493, 1.492, 1.492, 1.491, 1.491, 1.491, 1.491, 1.491, 1.492, 1.492,
+ 1.482, 1.482, 1.482, 1.483, 1.484, 1.484, 1.485, 1.486, 1.487, 1.489, 1.492, 1.494, 1.496, 1.497, 1.498, 1.498, 1.499, 1.499, 1.498, 1.497, 1.496, 1.494, 1.493, 1.492, 1.491, 1.491, 1.491, 1.491, 1.491, 1.491, 1.491, 1.491,
+ 1.482, 1.482, 1.482, 1.482, 1.483, 1.484, 1.485, 1.487, 1.488, 1.491, 1.493, 1.495, 1.496, 1.497, 1.498, 1.499, 1.5, 1.5, 1.499, 1.498, 1.497, 1.495, 1.494, 1.492, 1.492, 1.491, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
+ 1.481, 1.481, 1.481, 1.482, 1.482, 1.483, 1.485, 1.487, 1.49, 1.492, 1.495, 1.496, 1.497, 1.498, 1.499, 1.499, 1.5, 1.5, 1.499, 1.499, 1.498, 1.497, 1.494, 1.493, 1.492, 1.491, 1.49, 1.488, 1.488, 1.488, 1.488, 1.488,
+ 1.481, 1.481, 1.481, 1.481, 1.482, 1.483, 1.484, 1.487, 1.49, 1.493, 1.495, 1.497, 1.498, 1.498, 1.499, 1.5, 1.5, 1.501, 1.5, 1.499, 1.498, 1.497, 1.495, 1.492, 1.491, 1.49, 1.489, 1.487, 1.487, 1.487, 1.487, 1.487,
+ 1.481, 1.481, 1.481, 1.481, 1.481, 1.482, 1.484, 1.487, 1.49, 1.493, 1.496, 1.497, 1.498, 1.498, 1.499, 1.5, 1.5, 1.501, 1.5, 1.499, 1.498, 1.497, 1.494, 1.492, 1.491, 1.489, 1.488, 1.486, 1.486, 1.485, 1.485, 1.485,
+ 1.481, 1.481, 1.481, 1.481, 1.481, 1.482, 1.483, 1.486, 1.49, 1.493, 1.496, 1.497, 1.498, 1.498, 1.499, 1.5, 1.5, 1.501, 1.5, 1.499, 1.498, 1.497, 1.494, 1.492, 1.49, 1.488, 1.487, 1.485, 1.484, 1.483, 1.483, 1.483,
+ 1.48, 1.48, 1.48, 1.481, 1.481, 1.482, 1.483, 1.486, 1.489, 1.493, 1.496, 1.497, 1.497, 1.498, 1.499, 1.499, 1.5, 1.5, 1.499, 1.499, 1.498, 1.496, 1.494, 1.491, 1.489, 1.487, 1.485, 1.484, 1.483, 1.483, 1.483, 1.482,
+ 1.48, 1.48, 1.48, 1.48, 1.481, 1.482, 1.482, 1.485, 1.489, 1.492, 1.495, 1.496, 1.497, 1.498, 1.498, 1.499, 1.499, 1.5, 1.499, 1.498, 1.497, 1.495, 1.493, 1.491, 1.488, 1.486, 1.484, 1.483, 1.483, 1.482, 1.482, 1.482,
+ 1.479, 1.479, 1.479, 1.48, 1.481, 1.481, 1.482, 1.485, 1.488, 1.491, 1.494, 1.496, 1.497, 1.497, 1.498, 1.498, 1.499, 1.499, 1.499, 1.498, 1.496, 1.495, 1.493, 1.491, 1.488, 1.485, 1.483, 1.482, 1.482, 1.482, 1.482, 1.481,
+ 1.479, 1.479, 1.479, 1.48, 1.48, 1.481, 1.482, 1.485, 1.488, 1.491, 1.494, 1.495, 1.496, 1.497, 1.497, 1.498, 1.498, 1.498, 1.498, 1.497, 1.496, 1.494, 1.492, 1.49, 1.487, 1.484, 1.483, 1.482, 1.481, 1.481, 1.48, 1.48,
+ 1.479, 1.479, 1.479, 1.479, 1.48, 1.48, 1.481, 1.484, 1.488, 1.491, 1.493, 1.495, 1.496, 1.497, 1.497, 1.497, 1.498, 1.497, 1.497, 1.497, 1.496, 1.494, 1.492, 1.489, 1.486, 1.483, 1.482, 1.481, 1.481, 1.48, 1.479, 1.478,
+ 1.479, 1.479, 1.479, 1.479, 1.479, 1.48, 1.481, 1.484, 1.488, 1.491, 1.493, 1.495, 1.496, 1.496, 1.497, 1.497, 1.497, 1.497, 1.496, 1.496, 1.495, 1.494, 1.491, 1.488, 1.485, 1.482, 1.481, 1.481, 1.48, 1.479, 1.478, 1.477,
+ 1.479, 1.479, 1.479, 1.479, 1.479, 1.48, 1.481, 1.484, 1.487, 1.49, 1.492, 1.494, 1.495, 1.496, 1.496, 1.497, 1.497, 1.496, 1.496, 1.495, 1.494, 1.493, 1.49, 1.487, 1.484, 1.482, 1.481, 1.48, 1.479, 1.479, 1.478, 1.477,
+ 1.478, 1.478, 1.478, 1.479, 1.479, 1.48, 1.481, 1.484, 1.487, 1.489, 1.491, 1.493, 1.494, 1.495, 1.496, 1.496, 1.496, 1.496, 1.496, 1.495, 1.494, 1.492, 1.489, 1.487, 1.484, 1.482, 1.481, 1.479, 1.479, 1.478, 1.477, 1.476,
+ 1.478, 1.478, 1.478, 1.478, 1.479, 1.48, 1.481, 1.483, 1.486, 1.488, 1.49, 1.492, 1.493, 1.494, 1.495, 1.496, 1.496, 1.495, 1.495, 1.494, 1.493, 1.491, 1.488, 1.486, 1.484, 1.482, 1.48, 1.479, 1.478, 1.478, 1.477, 1.476,
+ 1.478, 1.478, 1.478, 1.478, 1.479, 1.48, 1.481, 1.483, 1.486, 1.488, 1.489, 1.491, 1.492, 1.493, 1.494, 1.495, 1.495, 1.494, 1.494, 1.493, 1.491, 1.489, 1.487, 1.485, 1.483, 1.481, 1.48, 1.479, 1.478, 1.477, 1.477, 1.476,
+ 1.478, 1.478, 1.478, 1.478, 1.479, 1.48, 1.482, 1.484, 1.486, 1.487, 1.488, 1.49, 1.491, 1.492, 1.493, 1.494, 1.494, 1.493, 1.493, 1.492, 1.489, 1.487, 1.486, 1.484, 1.483, 1.481, 1.48, 1.479, 1.478, 1.476, 1.476, 1.476,
+ 1.478, 1.478, 1.478, 1.479, 1.479, 1.481, 1.482, 1.484, 1.485, 1.486, 1.487, 1.489, 1.49, 1.491, 1.492, 1.492, 1.492, 1.492, 1.491, 1.49, 1.488, 1.486, 1.485, 1.483, 1.482, 1.481, 1.48, 1.479, 1.477, 1.476, 1.476, 1.476,
+ 1.477, 1.478, 1.478, 1.479, 1.48, 1.481, 1.482, 1.484, 1.485, 1.486, 1.487, 1.488, 1.489, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.489, 1.487, 1.485, 1.484, 1.483, 1.482, 1.481, 1.48, 1.479, 1.477, 1.476, 1.476, 1.476,
+ 1.477, 1.478, 1.479, 1.48, 1.481, 1.482, 1.483, 1.484, 1.485, 1.486, 1.486, 1.487, 1.488, 1.488, 1.489, 1.488, 1.488, 1.488, 1.488, 1.487, 1.485, 1.484, 1.484, 1.483, 1.482, 1.481, 1.48, 1.479, 1.477, 1.476, 1.476, 1.476,
+ 1.477, 1.478, 1.479, 1.48, 1.481, 1.482, 1.483, 1.484, 1.485, 1.485, 1.486, 1.486, 1.487, 1.487, 1.487, 1.486, 1.486, 1.486, 1.486, 1.486, 1.485, 1.484, 1.483, 1.483, 1.482, 1.481, 1.48, 1.479, 1.477, 1.476, 1.476, 1.476,
+ 1.477, 1.478, 1.479, 1.48, 1.481, 1.482, 1.483, 1.484, 1.484, 1.485, 1.485, 1.486, 1.486, 1.485, 1.485, 1.484, 1.484, 1.484, 1.485, 1.485, 1.484, 1.483, 1.483, 1.482, 1.482, 1.481, 1.48, 1.479, 1.478, 1.477, 1.476, 1.476,
+ 1.477, 1.478, 1.479, 1.48, 1.482, 1.482, 1.483, 1.483, 1.484, 1.484, 1.485, 1.485, 1.484, 1.484, 1.483, 1.482, 1.482, 1.483, 1.484, 1.484, 1.483, 1.483, 1.482, 1.482, 1.481, 1.481, 1.48, 1.479, 1.478, 1.477, 1.476, 1.476,
+ 1.477, 1.478, 1.479, 1.48, 1.482, 1.482, 1.483, 1.483, 1.484, 1.484, 1.485, 1.484, 1.484, 1.483, 1.482, 1.482, 1.482, 1.482, 1.483, 1.483, 1.483, 1.483, 1.482, 1.482, 1.481, 1.48, 1.48, 1.479, 1.478, 1.478, 1.477, 1.477,
+ 1.477, 1.478, 1.479, 1.48, 1.482, 1.482, 1.483, 1.483, 1.484, 1.484, 1.484, 1.484, 1.483, 1.483, 1.482, 1.482, 1.482, 1.482, 1.483, 1.483, 1.482, 1.482, 1.482, 1.481, 1.48, 1.48, 1.479, 1.479, 1.479, 1.478, 1.478, 1.478,
+ 1.477, 1.478, 1.479, 1.48, 1.482, 1.482, 1.483, 1.483, 1.484, 1.484, 1.484, 1.483, 1.482, 1.482, 1.482, 1.482, 1.482, 1.482, 1.482, 1.482, 1.482, 1.482, 1.481, 1.481, 1.48, 1.479, 1.479, 1.479, 1.479, 1.479, 1.479, 1.479
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 2.764, 2.711, 2.658, 2.504, 2.342, 2.204, 2.07, 1.937, 1.803, 1.706, 1.622, 1.582, 1.565, 1.558, 1.558, 1.558, 1.558, 1.56, 1.565, 1.586, 1.631, 1.7, 1.818, 1.941, 2.081, 2.222, 2.37, 2.522, 2.711, 2.893, 2.968, 3.043,
+ 2.725, 2.642, 2.56, 2.405, 2.246, 2.115, 1.989, 1.86, 1.732, 1.642, 1.567, 1.527, 1.504, 1.493, 1.488, 1.486, 1.486, 1.492, 1.503, 1.528, 1.574, 1.64, 1.746, 1.86, 1.995, 2.131, 2.274, 2.423, 2.608, 2.788, 2.888, 2.988,
+ 2.686, 2.574, 2.462, 2.307, 2.149, 2.026, 1.908, 1.784, 1.66, 1.578, 1.511, 1.471, 1.443, 1.427, 1.419, 1.415, 1.415, 1.423, 1.44, 1.47, 1.516, 1.579, 1.674, 1.779, 1.909, 2.04, 2.179, 2.323, 2.504, 2.682, 2.808, 2.933,
+ 2.636, 2.502, 2.368, 2.212, 2.055, 1.937, 1.825, 1.709, 1.592, 1.517, 1.457, 1.416, 1.385, 1.365, 1.353, 1.347, 1.347, 1.358, 1.38, 1.413, 1.46, 1.52, 1.605, 1.7, 1.824, 1.949, 2.085, 2.227, 2.405, 2.581, 2.725, 2.87,
+ 2.537, 2.413, 2.289, 2.133, 1.974, 1.853, 1.737, 1.637, 1.54, 1.468, 1.406, 1.366, 1.336, 1.317, 1.306, 1.301, 1.301, 1.311, 1.332, 1.362, 1.407, 1.464, 1.545, 1.633, 1.743, 1.858, 1.999, 2.144, 2.323, 2.5, 2.635, 2.771,
+ 2.439, 2.325, 2.211, 2.053, 1.892, 1.768, 1.649, 1.564, 1.488, 1.42, 1.355, 1.315, 1.288, 1.27, 1.259, 1.254, 1.254, 1.263, 1.283, 1.312, 1.355, 1.409, 1.485, 1.567, 1.662, 1.767, 1.912, 2.062, 2.242, 2.419, 2.545, 2.672,
+ 2.362, 2.251, 2.14, 1.982, 1.82, 1.695, 1.576, 1.501, 1.437, 1.375, 1.313, 1.273, 1.243, 1.225, 1.214, 1.209, 1.209, 1.218, 1.238, 1.267, 1.31, 1.361, 1.43, 1.504, 1.591, 1.689, 1.835, 1.986, 2.167, 2.345, 2.469, 2.594,
+ 2.323, 2.202, 2.081, 1.924, 1.764, 1.643, 1.529, 1.454, 1.389, 1.335, 1.286, 1.244, 1.206, 1.184, 1.172, 1.166, 1.166, 1.177, 1.201, 1.233, 1.278, 1.327, 1.385, 1.45, 1.537, 1.634, 1.776, 1.924, 2.105, 2.283, 2.418, 2.552,
+ 2.285, 2.154, 2.023, 1.866, 1.708, 1.592, 1.481, 1.406, 1.341, 1.296, 1.258, 1.215, 1.169, 1.143, 1.13, 1.124, 1.124, 1.137, 1.164, 1.199, 1.246, 1.292, 1.339, 1.397, 1.483, 1.58, 1.717, 1.861, 2.043, 2.222, 2.366, 2.51,
+ 2.258, 2.116, 1.975, 1.82, 1.665, 1.552, 1.446, 1.372, 1.306, 1.262, 1.227, 1.185, 1.141, 1.113, 1.097, 1.089, 1.089, 1.103, 1.134, 1.17, 1.214, 1.259, 1.303, 1.358, 1.443, 1.537, 1.671, 1.81, 1.992, 2.171, 2.325, 2.479,
+ 2.24, 2.088, 1.936, 1.784, 1.631, 1.522, 1.42, 1.347, 1.282, 1.234, 1.192, 1.156, 1.121, 1.093, 1.07, 1.06, 1.06, 1.076, 1.11, 1.146, 1.184, 1.225, 1.274, 1.332, 1.414, 1.505, 1.634, 1.77, 1.951, 2.13, 2.294, 2.457,
+ 2.223, 2.06, 1.898, 1.747, 1.597, 1.492, 1.394, 1.323, 1.258, 1.206, 1.158, 1.126, 1.101, 1.074, 1.044, 1.03, 1.031, 1.049, 1.087, 1.122, 1.153, 1.192, 1.245, 1.306, 1.385, 1.473, 1.598, 1.73, 1.91, 2.089, 2.262, 2.435,
+ 2.218, 2.047, 1.876, 1.727, 1.579, 1.476, 1.38, 1.309, 1.245, 1.19, 1.138, 1.104, 1.078, 1.053, 1.028, 1.018, 1.019, 1.035, 1.065, 1.097, 1.131, 1.172, 1.228, 1.29, 1.367, 1.453, 1.575, 1.705, 1.884, 2.062, 2.245, 2.428,
+ 2.218, 2.039, 1.861, 1.712, 1.566, 1.465, 1.37, 1.299, 1.234, 1.178, 1.124, 1.085, 1.054, 1.032, 1.017, 1.012, 1.015, 1.026, 1.045, 1.072, 1.112, 1.158, 1.216, 1.279, 1.354, 1.438, 1.559, 1.686, 1.863, 2.041, 2.234, 2.427,
+ 2.218, 2.032, 1.846, 1.698, 1.553, 1.453, 1.36, 1.29, 1.224, 1.166, 1.109, 1.066, 1.03, 1.012, 1.006, 1.005, 1.011, 1.017, 1.024, 1.047, 1.093, 1.143, 1.203, 1.267, 1.341, 1.424, 1.542, 1.667, 1.842, 2.02, 2.223, 2.426,
+ 2.218, 2.031, 1.844, 1.697, 1.552, 1.452, 1.36, 1.289, 1.223, 1.164, 1.108, 1.064, 1.027, 1.009, 1.004, 1.004, 1.009, 1.015, 1.022, 1.045, 1.091, 1.142, 1.202, 1.266, 1.34, 1.423, 1.54, 1.665, 1.841, 2.018, 2.222, 2.426,
+ 2.218, 2.031, 1.844, 1.697, 1.552, 1.452, 1.36, 1.289, 1.223, 1.164, 1.108, 1.064, 1.027, 1.009, 1.004, 1.004, 1.008, 1.014, 1.021, 1.045, 1.091, 1.142, 1.202, 1.266, 1.34, 1.423, 1.54, 1.665, 1.841, 2.018, 2.222, 2.426,
+ 2.218, 2.032, 1.846, 1.699, 1.554, 1.454, 1.361, 1.29, 1.225, 1.166, 1.11, 1.066, 1.028, 1.01, 1.004, 1.004, 1.007, 1.014, 1.023, 1.047, 1.093, 1.143, 1.203, 1.267, 1.341, 1.424, 1.542, 1.667, 1.842, 2.02, 2.223, 2.426,
+ 2.22, 2.044, 1.869, 1.719, 1.572, 1.471, 1.376, 1.305, 1.24, 1.183, 1.129, 1.089, 1.054, 1.031, 1.014, 1.009, 1.013, 1.026, 1.048, 1.077, 1.115, 1.159, 1.218, 1.28, 1.356, 1.44, 1.56, 1.687, 1.863, 2.041, 2.234, 2.427,
+ 2.222, 2.056, 1.891, 1.74, 1.591, 1.487, 1.391, 1.319, 1.254, 1.2, 1.149, 1.111, 1.08, 1.052, 1.025, 1.015, 1.019, 1.038, 1.073, 1.106, 1.136, 1.175, 1.232, 1.294, 1.371, 1.457, 1.578, 1.706, 1.884, 2.062, 2.245, 2.427,
+ 2.231, 2.074, 1.918, 1.766, 1.614, 1.508, 1.41, 1.338, 1.273, 1.22, 1.173, 1.136, 1.106, 1.074, 1.041, 1.028, 1.033, 1.055, 1.097, 1.134, 1.16, 1.196, 1.251, 1.311, 1.39, 1.477, 1.601, 1.732, 1.911, 2.089, 2.262, 2.434,
+ 2.255, 2.108, 1.961, 1.807, 1.652, 1.542, 1.439, 1.365, 1.299, 1.25, 1.207, 1.167, 1.13, 1.099, 1.074, 1.063, 1.066, 1.084, 1.119, 1.155, 1.192, 1.233, 1.281, 1.338, 1.419, 1.509, 1.637, 1.772, 1.953, 2.132, 2.294, 2.456,
+ 2.279, 2.142, 2.004, 1.848, 1.69, 1.576, 1.468, 1.393, 1.326, 1.279, 1.241, 1.198, 1.153, 1.125, 1.107, 1.099, 1.1, 1.113, 1.141, 1.177, 1.223, 1.269, 1.312, 1.366, 1.449, 1.541, 1.673, 1.812, 1.995, 2.175, 2.327, 2.479,
+ 2.317, 2.187, 2.057, 1.898, 1.737, 1.619, 1.508, 1.431, 1.363, 1.314, 1.273, 1.229, 1.183, 1.157, 1.143, 1.137, 1.137, 1.148, 1.171, 1.205, 1.255, 1.304, 1.35, 1.406, 1.49, 1.584, 1.72, 1.863, 2.047, 2.228, 2.37, 2.512,
+ 2.37, 2.247, 2.123, 1.961, 1.797, 1.675, 1.559, 1.481, 1.413, 1.356, 1.303, 1.259, 1.22, 1.196, 1.184, 1.178, 1.178, 1.188, 1.21, 1.242, 1.287, 1.337, 1.396, 1.462, 1.545, 1.64, 1.781, 1.928, 2.112, 2.292, 2.425, 2.559,
+ 2.424, 2.306, 2.188, 2.024, 1.857, 1.731, 1.611, 1.532, 1.462, 1.397, 1.334, 1.29, 1.256, 1.236, 1.224, 1.219, 1.219, 1.229, 1.249, 1.278, 1.32, 1.371, 1.443, 1.518, 1.6, 1.695, 1.842, 1.994, 2.177, 2.356, 2.48, 2.605,
+ 2.513, 2.39, 2.266, 2.102, 1.935, 1.808, 1.687, 1.597, 1.516, 1.446, 1.379, 1.335, 1.302, 1.282, 1.271, 1.266, 1.266, 1.276, 1.296, 1.325, 1.366, 1.42, 1.497, 1.58, 1.674, 1.779, 1.923, 2.073, 2.255, 2.434, 2.563, 2.693,
+ 2.621, 2.486, 2.352, 2.189, 2.024, 1.897, 1.775, 1.672, 1.572, 1.498, 1.433, 1.388, 1.353, 1.333, 1.322, 1.316, 1.316, 1.326, 1.348, 1.378, 1.421, 1.476, 1.556, 1.645, 1.759, 1.877, 2.016, 2.159, 2.341, 2.52, 2.662, 2.804,
+ 2.728, 2.583, 2.438, 2.276, 2.113, 1.986, 1.864, 1.746, 1.628, 1.55, 1.487, 1.441, 1.405, 1.383, 1.372, 1.367, 1.367, 1.377, 1.399, 1.431, 1.476, 1.533, 1.615, 1.71, 1.843, 1.976, 2.108, 2.246, 2.427, 2.606, 2.76, 2.915,
+ 2.781, 2.661, 2.54, 2.378, 2.213, 2.08, 1.952, 1.826, 1.699, 1.613, 1.542, 1.497, 1.465, 1.447, 1.439, 1.436, 1.436, 1.444, 1.461, 1.489, 1.533, 1.594, 1.686, 1.791, 1.93, 2.069, 2.206, 2.349, 2.533, 2.714, 2.845, 2.977,
+ 2.822, 2.734, 2.646, 2.483, 2.316, 2.176, 2.04, 1.907, 1.774, 1.678, 1.597, 1.553, 1.527, 1.515, 1.511, 1.509, 1.509, 1.514, 1.525, 1.549, 1.591, 1.655, 1.76, 1.875, 2.018, 2.161, 2.305, 2.454, 2.643, 2.827, 2.927, 3.027,
+ 2.862, 2.807, 2.752, 2.589, 2.418, 2.271, 2.128, 1.988, 1.848, 1.744, 1.652, 1.608, 1.59, 1.582, 1.582, 1.582, 1.582, 1.584, 1.589, 1.608, 1.65, 1.716, 1.833, 1.958, 2.105, 2.253, 2.404, 2.56, 2.754, 2.94, 3.009, 3.078
+ ],
+ "sigma": 0.00428,
+ "sigma_Cb": 0.00363
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2850,
+ "ccm":
+ [
+ 1.42601, -0.20537, -0.22063,
+ -0.47682, 1.81987, -0.34305,
+ 0.01854, -0.86036, 1.84181
+ ]
+ },
+ {
+ "ct": 2900,
+ "ccm":
+ [
+ 1.29755, 0.04602, -0.34356,
+ -0.41491, 1.73477, -0.31987,
+ -0.01345, -0.97115, 1.98459
+ ]
+ },
+ {
+ "ct": 3550,
+ "ccm":
+ [
+ 1.49811, -0.33412, -0.16398,
+ -0.40869, 1.72995, -0.32127,
+ -0.01924, -0.62181, 1.64105
+ ]
+ },
+ {
+ "ct": 4500,
+ "ccm":
+ [
+ 1.47015, -0.29229, -0.17786,
+ -0.36561, 1.88919, -0.52358,
+ -0.03552, -0.56717, 1.60269
+ ]
+ },
+ {
+ "ct": 5600,
+ "ccm":
+ [
+ 1.60962, -0.47434, -0.13528,
+ -0.32701, 1.73797, -0.41096,
+ -0.07626, -0.40171, 1.47796
+ ]
+ },
+ {
+ "ct": 8000,
+ "ccm":
+ [
+ 1.54642, -0.20396, -0.34246,
+ -0.31748, 2.22559, -0.90811,
+ -0.10035, -0.65877, 1.75912
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen": { }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx415.json b/src/ipa/rpi/pisp/data/imx415.json
new file mode 100755
index 00000000..824a5371
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx415.json
@@ -0,0 +1,1159 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 3840
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 19230,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 1198,
+ "reference_Y": 14876
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 17,
+ "reference_slope": 3.439
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 193,
+ "slope": 0.00902
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2698.0, 0.7746, 0.2063,
+ 2930.0, 0.7579, 0.2155,
+ 3643.0, 0.6412, 0.2905,
+ 4605.0, 0.5038, 0.4099,
+ 5658.0, 0.4541, 0.4634
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.01128,
+ "transverse_neg": 0.01437
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.16,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 1.027, 1.027, 1.022, 1.018, 1.014, 1.012, 1.009, 1.009, 1.007, 1.006, 1.004, 1.002, 1.002, 1.001, 1.001, 1.001, 1.001, 1.002, 1.003, 1.004, 1.006, 1.008, 1.009, 1.011, 1.014, 1.018, 1.019, 1.026, 1.029, 1.033, 1.039, 1.039,
+ 1.039, 1.034, 1.031, 1.028, 1.027, 1.025, 1.023, 1.021, 1.019, 1.019, 1.017, 1.016, 1.016, 1.016, 1.016, 1.016, 1.016, 1.016, 1.017, 1.018, 1.019, 1.021, 1.024, 1.025, 1.027, 1.029, 1.032, 1.035, 1.037, 1.042, 1.046, 1.049,
+ 1.041, 1.038, 1.033, 1.029, 1.027, 1.026, 1.024, 1.023, 1.021, 1.019, 1.018, 1.017, 1.016, 1.016, 1.016, 1.017, 1.017, 1.017, 1.018, 1.019, 1.021, 1.022, 1.024, 1.026, 1.029, 1.031, 1.034, 1.037, 1.042, 1.044, 1.049, 1.052,
+ 1.041, 1.037, 1.032, 1.028, 1.027, 1.025, 1.023, 1.022, 1.021, 1.019, 1.018, 1.017, 1.016, 1.016, 1.016, 1.016, 1.016, 1.017, 1.018, 1.019, 1.021, 1.022, 1.024, 1.026, 1.028, 1.031, 1.033, 1.037, 1.039, 1.044, 1.047, 1.051,
+ 1.039, 1.036, 1.031, 1.027, 1.026, 1.024, 1.022, 1.021, 1.019, 1.018, 1.017, 1.016, 1.015, 1.015, 1.015, 1.015, 1.015, 1.016, 1.017, 1.018, 1.019, 1.021, 1.023, 1.025, 1.028, 1.031, 1.033, 1.036, 1.039, 1.043, 1.046, 1.049,
+ 1.037, 1.034, 1.029, 1.026, 1.024, 1.023, 1.021, 1.019, 1.018, 1.017, 1.016, 1.015, 1.015, 1.013, 1.014, 1.014, 1.014, 1.014, 1.016, 1.017, 1.019, 1.019, 1.022, 1.025, 1.027, 1.029, 1.033, 1.036, 1.039, 1.042, 1.045, 1.049,
+ 1.036, 1.031, 1.029, 1.025, 1.023, 1.021, 1.019, 1.018, 1.017, 1.016, 1.015, 1.014, 1.013, 1.013, 1.012, 1.013, 1.013, 1.014, 1.015, 1.016, 1.018, 1.019, 1.021, 1.023, 1.026, 1.029, 1.032, 1.035, 1.039, 1.041, 1.044, 1.048,
+ 1.034, 1.031, 1.028, 1.024, 1.022, 1.021, 1.018, 1.017, 1.016, 1.015, 1.014, 1.013, 1.012, 1.011, 1.011, 1.012, 1.012, 1.013, 1.014, 1.015, 1.017, 1.018, 1.021, 1.022, 1.025, 1.028, 1.032, 1.035, 1.038, 1.041, 1.044, 1.048,
+ 1.032, 1.031, 1.027, 1.023, 1.021, 1.019, 1.017, 1.016, 1.015, 1.014, 1.013, 1.012, 1.011, 1.011, 1.011, 1.011, 1.012, 1.012, 1.013, 1.014, 1.016, 1.018, 1.019, 1.021, 1.024, 1.027, 1.031, 1.033, 1.037, 1.041, 1.043, 1.048,
+ 1.031, 1.029, 1.025, 1.023, 1.021, 1.019, 1.017, 1.015, 1.014, 1.013, 1.012, 1.011, 1.011, 1.009, 1.009, 1.009, 1.011, 1.012, 1.012, 1.013, 1.015, 1.017, 1.019, 1.021, 1.023, 1.027, 1.031, 1.033, 1.036, 1.041, 1.043, 1.048,
+ 1.031, 1.029, 1.025, 1.023, 1.021, 1.018, 1.016, 1.015, 1.014, 1.012, 1.011, 1.011, 1.009, 1.009, 1.009, 1.009, 1.011, 1.011, 1.012, 1.014, 1.015, 1.017, 1.019, 1.021, 1.023, 1.027, 1.031, 1.032, 1.036, 1.041, 1.043, 1.047,
+ 1.029, 1.027, 1.025, 1.022, 1.021, 1.018, 1.015, 1.014, 1.013, 1.012, 1.012, 1.011, 1.009, 1.009, 1.009, 1.009, 1.009, 1.011, 1.012, 1.014, 1.015, 1.017, 1.019, 1.021, 1.024, 1.028, 1.031, 1.033, 1.036, 1.041, 1.045, 1.048,
+ 1.029, 1.027, 1.024, 1.022, 1.021, 1.018, 1.016, 1.014, 1.013, 1.012, 1.011, 1.011, 1.009, 1.009, 1.009, 1.009, 1.009, 1.011, 1.013, 1.014, 1.015, 1.016, 1.018, 1.021, 1.024, 1.027, 1.031, 1.033, 1.037, 1.041, 1.045, 1.047,
+ 1.029, 1.027, 1.024, 1.022, 1.021, 1.018, 1.016, 1.014, 1.013, 1.012, 1.011, 1.011, 1.009, 1.009, 1.009, 1.009, 1.009, 1.011, 1.013, 1.013, 1.015, 1.016, 1.018, 1.021, 1.024, 1.027, 1.031, 1.034, 1.037, 1.041, 1.045, 1.048,
+ 1.029, 1.027, 1.024, 1.021, 1.021, 1.018, 1.016, 1.014, 1.013, 1.012, 1.011, 1.009, 1.009, 1.009, 1.009, 1.009, 1.009, 1.011, 1.012, 1.013, 1.015, 1.016, 1.018, 1.019, 1.023, 1.027, 1.031, 1.033, 1.037, 1.039, 1.044, 1.049,
+ 1.029, 1.027, 1.023, 1.022, 1.021, 1.019, 1.016, 1.014, 1.013, 1.012, 1.011, 1.009, 1.009, 1.009, 1.009, 1.009, 1.009, 1.011, 1.012, 1.013, 1.015, 1.016, 1.018, 1.021, 1.023, 1.028, 1.031, 1.034, 1.037, 1.039, 1.044, 1.049,
+ 1.029, 1.027, 1.024, 1.022, 1.021, 1.019, 1.017, 1.015, 1.013, 1.012, 1.011, 1.011, 1.009, 1.009, 1.009, 1.009, 1.009, 1.011, 1.012, 1.014, 1.015, 1.017, 1.018, 1.021, 1.024, 1.028, 1.031, 1.034, 1.038, 1.041, 1.045, 1.049,
+ 1.031, 1.027, 1.025, 1.023, 1.022, 1.019, 1.018, 1.015, 1.014, 1.013, 1.011, 1.011, 1.009, 1.009, 1.009, 1.009, 1.011, 1.011, 1.013, 1.014, 1.016, 1.017, 1.019, 1.021, 1.023, 1.028, 1.031, 1.034, 1.038, 1.041, 1.046, 1.051,
+ 1.031, 1.027, 1.025, 1.023, 1.022, 1.021, 1.018, 1.016, 1.014, 1.013, 1.012, 1.011, 1.011, 1.009, 1.011, 1.011, 1.011, 1.012, 1.013, 1.015, 1.016, 1.018, 1.019, 1.021, 1.024, 1.028, 1.032, 1.035, 1.039, 1.041, 1.046, 1.051,
+ 1.031, 1.028, 1.025, 1.023, 1.023, 1.019, 1.018, 1.016, 1.014, 1.014, 1.013, 1.012, 1.011, 1.011, 1.011, 1.011, 1.011, 1.012, 1.013, 1.015, 1.017, 1.018, 1.021, 1.022, 1.025, 1.028, 1.032, 1.035, 1.039, 1.043, 1.047, 1.051,
+ 1.031, 1.028, 1.025, 1.024, 1.023, 1.021, 1.018, 1.017, 1.015, 1.014, 1.013, 1.012, 1.011, 1.011, 1.011, 1.012, 1.012, 1.012, 1.014, 1.015, 1.018, 1.019, 1.021, 1.023, 1.026, 1.029, 1.033, 1.037, 1.041, 1.044, 1.048, 1.052,
+ 1.031, 1.028, 1.025, 1.024, 1.023, 1.022, 1.019, 1.017, 1.015, 1.015, 1.013, 1.012, 1.012, 1.012, 1.012, 1.013, 1.013, 1.014, 1.014, 1.017, 1.019, 1.019, 1.022, 1.024, 1.027, 1.031, 1.034, 1.038, 1.041, 1.046, 1.051, 1.055,
+ 1.031, 1.029, 1.026, 1.025, 1.023, 1.022, 1.019, 1.017, 1.016, 1.015, 1.014, 1.013, 1.012, 1.012, 1.013, 1.013, 1.014, 1.015, 1.016, 1.018, 1.019, 1.021, 1.023, 1.025, 1.028, 1.032, 1.035, 1.038, 1.042, 1.047, 1.052, 1.056,
+ 1.033, 1.031, 1.027, 1.025, 1.024, 1.023, 1.021, 1.019, 1.017, 1.016, 1.015, 1.014, 1.014, 1.013, 1.014, 1.014, 1.015, 1.016, 1.017, 1.019, 1.021, 1.022, 1.025, 1.027, 1.029, 1.033, 1.036, 1.039, 1.044, 1.048, 1.053, 1.056,
+ 1.036, 1.032, 1.029, 1.027, 1.026, 1.025, 1.022, 1.021, 1.019, 1.018, 1.017, 1.016, 1.015, 1.014, 1.015, 1.016, 1.017, 1.017, 1.018, 1.021, 1.022, 1.024, 1.027, 1.029, 1.031, 1.035, 1.038, 1.041, 1.046, 1.049, 1.054, 1.058,
+ 1.038, 1.035, 1.031, 1.029, 1.028, 1.026, 1.025, 1.022, 1.021, 1.019, 1.019, 1.018, 1.017, 1.016, 1.016, 1.017, 1.018, 1.019, 1.021, 1.022, 1.024, 1.025, 1.028, 1.031, 1.034, 1.036, 1.041, 1.043, 1.049, 1.052, 1.057, 1.059,
+ 1.041, 1.037, 1.034, 1.031, 1.029, 1.028, 1.027, 1.024, 1.022, 1.021, 1.021, 1.019, 1.019, 1.018, 1.018, 1.019, 1.019, 1.021, 1.022, 1.024, 1.025, 1.028, 1.031, 1.033, 1.035, 1.038, 1.041, 1.045, 1.051, 1.055, 1.059, 1.063,
+ 1.043, 1.039, 1.036, 1.033, 1.031, 1.029, 1.028, 1.027, 1.024, 1.023, 1.022, 1.021, 1.021, 1.021, 1.021, 1.021, 1.021, 1.022, 1.024, 1.026, 1.028, 1.029, 1.032, 1.035, 1.037, 1.039, 1.044, 1.049, 1.054, 1.058, 1.063, 1.066,
+ 1.045, 1.043, 1.038, 1.034, 1.032, 1.031, 1.029, 1.029, 1.027, 1.026, 1.024, 1.023, 1.022, 1.021, 1.021, 1.022, 1.022, 1.024, 1.026, 1.028, 1.029, 1.032, 1.034, 1.036, 1.039, 1.042, 1.047, 1.049, 1.056, 1.061, 1.064, 1.067,
+ 1.048, 1.043, 1.039, 1.035, 1.033, 1.031, 1.031, 1.029, 1.028, 1.027, 1.026, 1.026, 1.024, 1.023, 1.023, 1.023, 1.024, 1.025, 1.027, 1.029, 1.031, 1.033, 1.035, 1.038, 1.039, 1.044, 1.047, 1.053, 1.058, 1.063, 1.066, 1.071,
+ 1.049, 1.045, 1.041, 1.038, 1.034, 1.032, 1.031, 1.031, 1.029, 1.028, 1.027, 1.027, 1.026, 1.024, 1.024, 1.024, 1.025, 1.027, 1.028, 1.029, 1.032, 1.034, 1.036, 1.039, 1.042, 1.046, 1.051, 1.055, 1.061, 1.064, 1.069, 1.072,
+ 1.051, 1.049, 1.044, 1.041, 1.036, 1.033, 1.032, 1.031, 1.031, 1.029, 1.028, 1.028, 1.027, 1.027, 1.025, 1.025, 1.026, 1.028, 1.029, 1.031, 1.033, 1.034, 1.038, 1.039, 1.043, 1.048, 1.053, 1.058, 1.062, 1.064, 1.071, 1.074
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.028, 1.028, 1.022, 1.014, 1.008, 1.006, 1.006, 1.005, 1.004, 1.003, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.002, 1.003, 1.004, 1.006, 1.008, 1.009, 1.011, 1.015, 1.018, 1.021, 1.028, 1.034, 1.039, 1.044, 1.044,
+ 1.038, 1.031, 1.025, 1.023, 1.022, 1.021, 1.021, 1.021, 1.019, 1.019, 1.017, 1.016, 1.015, 1.015, 1.015, 1.016, 1.017, 1.018, 1.019, 1.019, 1.021, 1.023, 1.024, 1.027, 1.028, 1.031, 1.034, 1.038, 1.042, 1.047, 1.054, 1.058,
+ 1.043, 1.038, 1.031, 1.024, 1.023, 1.022, 1.021, 1.021, 1.021, 1.019, 1.018, 1.017, 1.016, 1.016, 1.017, 1.017, 1.018, 1.018, 1.019, 1.021, 1.022, 1.024, 1.026, 1.028, 1.031, 1.033, 1.037, 1.041, 1.047, 1.053, 1.058, 1.062,
+ 1.043, 1.037, 1.029, 1.024, 1.022, 1.021, 1.021, 1.019, 1.019, 1.019, 1.017, 1.016, 1.016, 1.016, 1.016, 1.017, 1.018, 1.018, 1.019, 1.021, 1.022, 1.024, 1.026, 1.029, 1.031, 1.034, 1.038, 1.042, 1.046, 1.052, 1.058, 1.062,
+ 1.041, 1.036, 1.029, 1.024, 1.022, 1.021, 1.019, 1.019, 1.018, 1.017, 1.016, 1.015, 1.015, 1.015, 1.016, 1.016, 1.016, 1.017, 1.018, 1.021, 1.022, 1.024, 1.026, 1.028, 1.031, 1.033, 1.037, 1.042, 1.047, 1.051, 1.058, 1.062,
+ 1.039, 1.034, 1.028, 1.023, 1.021, 1.019, 1.018, 1.018, 1.017, 1.016, 1.015, 1.015, 1.014, 1.014, 1.014, 1.015, 1.016, 1.016, 1.017, 1.019, 1.022, 1.024, 1.025, 1.028, 1.031, 1.033, 1.037, 1.041, 1.047, 1.051, 1.058, 1.062,
+ 1.039, 1.033, 1.027, 1.022, 1.019, 1.018, 1.017, 1.017, 1.016, 1.015, 1.014, 1.014, 1.013, 1.013, 1.013, 1.013, 1.015, 1.015, 1.016, 1.019, 1.021, 1.023, 1.025, 1.027, 1.031, 1.033, 1.037, 1.041, 1.048, 1.051, 1.057, 1.062,
+ 1.038, 1.032, 1.026, 1.021, 1.018, 1.017, 1.016, 1.015, 1.014, 1.014, 1.013, 1.012, 1.012, 1.012, 1.012, 1.012, 1.013, 1.014, 1.016, 1.017, 1.019, 1.022, 1.023, 1.026, 1.029, 1.033, 1.037, 1.041, 1.048, 1.052, 1.058, 1.063,
+ 1.037, 1.031, 1.026, 1.021, 1.018, 1.016, 1.015, 1.014, 1.013, 1.012, 1.012, 1.011, 1.011, 1.011, 1.011, 1.011, 1.012, 1.014, 1.015, 1.016, 1.018, 1.021, 1.023, 1.026, 1.028, 1.032, 1.037, 1.042, 1.048, 1.053, 1.059, 1.066,
+ 1.037, 1.029, 1.025, 1.021, 1.018, 1.016, 1.014, 1.013, 1.012, 1.012, 1.011, 1.011, 1.011, 1.009, 1.011, 1.011, 1.012, 1.013, 1.014, 1.016, 1.018, 1.021, 1.023, 1.026, 1.028, 1.033, 1.037, 1.042, 1.049, 1.053, 1.061, 1.066,
+ 1.035, 1.029, 1.024, 1.019, 1.017, 1.015, 1.013, 1.012, 1.012, 1.011, 1.011, 1.011, 1.009, 1.009, 1.009, 1.011, 1.012, 1.013, 1.014, 1.016, 1.018, 1.021, 1.023, 1.026, 1.028, 1.034, 1.037, 1.042, 1.049, 1.054, 1.061, 1.067,
+ 1.034, 1.029, 1.023, 1.019, 1.017, 1.014, 1.013, 1.012, 1.012, 1.011, 1.011, 1.011, 1.009, 1.009, 1.009, 1.011, 1.011, 1.012, 1.014, 1.016, 1.019, 1.021, 1.024, 1.027, 1.029, 1.034, 1.039, 1.042, 1.049, 1.054, 1.062, 1.067,
+ 1.034, 1.029, 1.023, 1.019, 1.017, 1.014, 1.013, 1.012, 1.012, 1.011, 1.011, 1.011, 1.009, 1.009, 1.009, 1.009, 1.011, 1.012, 1.015, 1.016, 1.018, 1.021, 1.024, 1.027, 1.029, 1.034, 1.038, 1.043, 1.049, 1.055, 1.062, 1.067,
+ 1.035, 1.029, 1.023, 1.019, 1.018, 1.015, 1.013, 1.013, 1.012, 1.012, 1.011, 1.011, 1.011, 1.009, 1.009, 1.011, 1.012, 1.013, 1.015, 1.017, 1.019, 1.021, 1.024, 1.028, 1.031, 1.034, 1.039, 1.043, 1.051, 1.056, 1.064, 1.069,
+ 1.035, 1.031, 1.023, 1.019, 1.018, 1.017, 1.014, 1.013, 1.012, 1.012, 1.012, 1.011, 1.009, 1.009, 1.009, 1.011, 1.012, 1.013, 1.015, 1.017, 1.019, 1.021, 1.024, 1.027, 1.031, 1.035, 1.041, 1.044, 1.051, 1.057, 1.064, 1.071,
+ 1.036, 1.032, 1.023, 1.021, 1.019, 1.017, 1.015, 1.014, 1.013, 1.013, 1.012, 1.011, 1.011, 1.011, 1.011, 1.011, 1.012, 1.013, 1.016, 1.017, 1.019, 1.021, 1.023, 1.027, 1.031, 1.036, 1.041, 1.045, 1.051, 1.057, 1.066, 1.072,
+ 1.037, 1.032, 1.025, 1.021, 1.019, 1.018, 1.017, 1.014, 1.013, 1.013, 1.013, 1.012, 1.011, 1.011, 1.011, 1.012, 1.013, 1.014, 1.016, 1.017, 1.019, 1.022, 1.024, 1.027, 1.031, 1.036, 1.041, 1.045, 1.051, 1.057, 1.066, 1.073,
+ 1.038, 1.032, 1.025, 1.023, 1.021, 1.019, 1.017, 1.015, 1.014, 1.014, 1.013, 1.013, 1.012, 1.011, 1.012, 1.012, 1.014, 1.014, 1.016, 1.019, 1.021, 1.022, 1.025, 1.027, 1.031, 1.036, 1.041, 1.047, 1.052, 1.058, 1.066, 1.074,
+ 1.039, 1.033, 1.026, 1.024, 1.022, 1.021, 1.018, 1.016, 1.015, 1.015, 1.014, 1.014, 1.013, 1.013, 1.013, 1.014, 1.014, 1.015, 1.017, 1.021, 1.022, 1.023, 1.026, 1.028, 1.032, 1.036, 1.041, 1.047, 1.053, 1.059, 1.067, 1.076,
+ 1.041, 1.034, 1.026, 1.025, 1.023, 1.021, 1.019, 1.017, 1.016, 1.015, 1.015, 1.014, 1.014, 1.014, 1.014, 1.014, 1.015, 1.016, 1.018, 1.021, 1.023, 1.026, 1.027, 1.029, 1.033, 1.038, 1.041, 1.048, 1.054, 1.061, 1.069, 1.077,
+ 1.041, 1.034, 1.027, 1.025, 1.024, 1.022, 1.021, 1.018, 1.016, 1.016, 1.015, 1.015, 1.014, 1.015, 1.015, 1.016, 1.017, 1.017, 1.021, 1.021, 1.024, 1.027, 1.029, 1.032, 1.034, 1.039, 1.043, 1.049, 1.056, 1.062, 1.071, 1.077,
+ 1.041, 1.034, 1.028, 1.025, 1.024, 1.022, 1.021, 1.019, 1.018, 1.017, 1.017, 1.016, 1.016, 1.016, 1.016, 1.017, 1.018, 1.019, 1.021, 1.023, 1.026, 1.029, 1.031, 1.034, 1.036, 1.041, 1.046, 1.051, 1.058, 1.063, 1.071, 1.078,
+ 1.042, 1.034, 1.029, 1.026, 1.025, 1.024, 1.021, 1.019, 1.019, 1.018, 1.018, 1.017, 1.017, 1.017, 1.018, 1.019, 1.019, 1.021, 1.022, 1.024, 1.027, 1.029, 1.033, 1.035, 1.038, 1.042, 1.047, 1.054, 1.061, 1.067, 1.074, 1.079,
+ 1.043, 1.036, 1.031, 1.027, 1.026, 1.025, 1.023, 1.022, 1.021, 1.021, 1.019, 1.019, 1.019, 1.018, 1.019, 1.021, 1.021, 1.022, 1.024, 1.026, 1.029, 1.033, 1.035, 1.037, 1.041, 1.044, 1.049, 1.056, 1.062, 1.067, 1.077, 1.081,
+ 1.045, 1.038, 1.034, 1.029, 1.028, 1.026, 1.025, 1.023, 1.023, 1.022, 1.021, 1.021, 1.019, 1.019, 1.021, 1.022, 1.023, 1.024, 1.026, 1.028, 1.032, 1.035, 1.037, 1.039, 1.042, 1.047, 1.052, 1.057, 1.064, 1.069, 1.078, 1.083,
+ 1.047, 1.041, 1.036, 1.032, 1.029, 1.028, 1.028, 1.026, 1.026, 1.025, 1.024, 1.023, 1.022, 1.022, 1.023, 1.023, 1.026, 1.027, 1.028, 1.031, 1.035, 1.037, 1.039, 1.043, 1.046, 1.051, 1.055, 1.062, 1.067, 1.074, 1.082, 1.085,
+ 1.049, 1.043, 1.038, 1.035, 1.032, 1.031, 1.029, 1.028, 1.027, 1.027, 1.027, 1.026, 1.026, 1.026, 1.026, 1.027, 1.028, 1.029, 1.032, 1.034, 1.037, 1.039, 1.042, 1.046, 1.048, 1.053, 1.059, 1.064, 1.071, 1.078, 1.085, 1.088,
+ 1.052, 1.048, 1.041, 1.037, 1.035, 1.033, 1.033, 1.032, 1.031, 1.031, 1.029, 1.028, 1.028, 1.028, 1.029, 1.029, 1.031, 1.032, 1.035, 1.036, 1.039, 1.042, 1.046, 1.048, 1.052, 1.055, 1.061, 1.067, 1.075, 1.082, 1.088, 1.091,
+ 1.056, 1.051, 1.043, 1.038, 1.037, 1.035, 1.034, 1.034, 1.034, 1.033, 1.032, 1.031, 1.029, 1.031, 1.031, 1.031, 1.033, 1.035, 1.036, 1.039, 1.042, 1.045, 1.048, 1.051, 1.054, 1.059, 1.065, 1.069, 1.081, 1.085, 1.092, 1.097,
+ 1.059, 1.053, 1.047, 1.041, 1.038, 1.036, 1.035, 1.035, 1.035, 1.035, 1.034, 1.033, 1.032, 1.032, 1.032, 1.033, 1.035, 1.037, 1.039, 1.042, 1.043, 1.047, 1.049, 1.053, 1.056, 1.061, 1.067, 1.072, 1.083, 1.088, 1.095, 1.101,
+ 1.062, 1.056, 1.048, 1.043, 1.039, 1.037, 1.037, 1.037, 1.037, 1.037, 1.036, 1.035, 1.034, 1.034, 1.035, 1.036, 1.038, 1.039, 1.041, 1.043, 1.046, 1.049, 1.051, 1.054, 1.059, 1.065, 1.071, 1.076, 1.085, 1.091, 1.097, 1.105,
+ 1.064, 1.062, 1.053, 1.046, 1.041, 1.039, 1.038, 1.038, 1.039, 1.039, 1.038, 1.037, 1.038, 1.036, 1.036, 1.038, 1.039, 1.041, 1.042, 1.044, 1.048, 1.049, 1.053, 1.057, 1.061, 1.065, 1.073, 1.081, 1.087, 1.093, 1.101, 1.106
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 1.006, 1.006, 1.001, 1.001, 1.007, 1.014, 1.021, 1.026, 1.029, 1.031, 1.035, 1.038, 1.042, 1.043, 1.043, 1.045, 1.045, 1.046, 1.046, 1.048, 1.048, 1.048, 1.047, 1.046, 1.045, 1.044, 1.043, 1.042, 1.044, 1.053, 1.065, 1.071,
+ 1.026, 1.019, 1.018, 1.018, 1.021, 1.025, 1.033, 1.039, 1.046, 1.051, 1.053, 1.056, 1.059, 1.061, 1.063, 1.065, 1.067, 1.068, 1.069, 1.069, 1.069, 1.069, 1.068, 1.067, 1.066, 1.065, 1.062, 1.062, 1.063, 1.065, 1.072, 1.079,
+ 1.029, 1.026, 1.023, 1.023, 1.026, 1.033, 1.039, 1.046, 1.051, 1.054, 1.056, 1.059, 1.061, 1.064, 1.066, 1.068, 1.071, 1.071, 1.072, 1.073, 1.074, 1.074, 1.072, 1.071, 1.069, 1.068, 1.067, 1.065, 1.066, 1.069, 1.078, 1.089,
+ 1.032, 1.029, 1.026, 1.026, 1.029, 1.037, 1.042, 1.049, 1.053, 1.055, 1.059, 1.061, 1.062, 1.065, 1.067, 1.069, 1.072, 1.074, 1.075, 1.076, 1.077, 1.078, 1.078, 1.076, 1.074, 1.072, 1.069, 1.068, 1.068, 1.071, 1.079, 1.089,
+ 1.035, 1.032, 1.029, 1.029, 1.033, 1.039, 1.046, 1.052, 1.055, 1.057, 1.061, 1.062, 1.064, 1.066, 1.068, 1.071, 1.075, 1.075, 1.077, 1.079, 1.081, 1.082, 1.082, 1.081, 1.077, 1.075, 1.073, 1.071, 1.069, 1.072, 1.081, 1.092,
+ 1.035, 1.033, 1.029, 1.029, 1.035, 1.039, 1.047, 1.053, 1.056, 1.059, 1.062, 1.064, 1.065, 1.067, 1.069, 1.072, 1.075, 1.077, 1.079, 1.081, 1.082, 1.084, 1.084, 1.083, 1.081, 1.077, 1.075, 1.074, 1.073, 1.075, 1.081, 1.093,
+ 1.033, 1.032, 1.031, 1.032, 1.036, 1.041, 1.049, 1.053, 1.058, 1.059, 1.062, 1.064, 1.066, 1.068, 1.071, 1.072, 1.074, 1.077, 1.079, 1.082, 1.084, 1.085, 1.086, 1.085, 1.084, 1.081, 1.077, 1.076, 1.075, 1.077, 1.082, 1.093,
+ 1.034, 1.033, 1.032, 1.034, 1.038, 1.043, 1.048, 1.054, 1.058, 1.061, 1.063, 1.065, 1.067, 1.069, 1.071, 1.073, 1.074, 1.077, 1.079, 1.082, 1.084, 1.087, 1.087, 1.087, 1.086, 1.083, 1.081, 1.079, 1.078, 1.079, 1.084, 1.095,
+ 1.034, 1.033, 1.033, 1.034, 1.039, 1.044, 1.049, 1.053, 1.058, 1.061, 1.063, 1.065, 1.067, 1.069, 1.071, 1.073, 1.074, 1.076, 1.079, 1.083, 1.086, 1.088, 1.089, 1.089, 1.087, 1.085, 1.083, 1.081, 1.081, 1.082, 1.088, 1.096,
+ 1.035, 1.035, 1.034, 1.035, 1.039, 1.045, 1.049, 1.053, 1.058, 1.061, 1.062, 1.065, 1.067, 1.069, 1.071, 1.072, 1.074, 1.076, 1.079, 1.083, 1.087, 1.089, 1.091, 1.089, 1.089, 1.086, 1.084, 1.083, 1.082, 1.084, 1.089, 1.098,
+ 1.036, 1.034, 1.034, 1.036, 1.039, 1.046, 1.051, 1.054, 1.058, 1.061, 1.063, 1.065, 1.067, 1.069, 1.071, 1.073, 1.075, 1.077, 1.079, 1.085, 1.089, 1.092, 1.092, 1.091, 1.091, 1.087, 1.085, 1.083, 1.083, 1.085, 1.089, 1.099,
+ 1.039, 1.035, 1.034, 1.036, 1.041, 1.047, 1.049, 1.054, 1.059, 1.062, 1.063, 1.065, 1.067, 1.069, 1.072, 1.074, 1.076, 1.079, 1.081, 1.086, 1.091, 1.093, 1.093, 1.092, 1.091, 1.089, 1.087, 1.085, 1.085, 1.086, 1.091, 1.101,
+ 1.039, 1.037, 1.035, 1.035, 1.042, 1.047, 1.049, 1.055, 1.059, 1.063, 1.065, 1.066, 1.067, 1.069, 1.074, 1.076, 1.078, 1.079, 1.083, 1.086, 1.091, 1.094, 1.095, 1.095, 1.092, 1.091, 1.089, 1.087, 1.086, 1.087, 1.091, 1.103,
+ 1.041, 1.038, 1.036, 1.036, 1.044, 1.049, 1.052, 1.055, 1.059, 1.064, 1.066, 1.067, 1.069, 1.072, 1.074, 1.077, 1.079, 1.081, 1.083, 1.087, 1.091, 1.095, 1.097, 1.097, 1.095, 1.092, 1.091, 1.088, 1.087, 1.089, 1.094, 1.104,
+ 1.044, 1.039, 1.039, 1.039, 1.046, 1.049, 1.053, 1.056, 1.061, 1.065, 1.067, 1.068, 1.071, 1.074, 1.076, 1.078, 1.079, 1.081, 1.083, 1.087, 1.092, 1.096, 1.098, 1.099, 1.097, 1.095, 1.093, 1.091, 1.088, 1.089, 1.097, 1.106,
+ 1.046, 1.043, 1.039, 1.041, 1.046, 1.052, 1.053, 1.056, 1.061, 1.065, 1.068, 1.069, 1.072, 1.075, 1.077, 1.079, 1.079, 1.081, 1.083, 1.088, 1.092, 1.097, 1.099, 1.099, 1.098, 1.096, 1.094, 1.092, 1.089, 1.091, 1.099, 1.107,
+ 1.048, 1.045, 1.042, 1.042, 1.046, 1.052, 1.055, 1.058, 1.061, 1.065, 1.069, 1.071, 1.073, 1.076, 1.078, 1.079, 1.082, 1.083, 1.085, 1.089, 1.093, 1.098, 1.099, 1.099, 1.098, 1.097, 1.095, 1.092, 1.091, 1.092, 1.101, 1.109,
+ 1.049, 1.046, 1.043, 1.044, 1.047, 1.053, 1.055, 1.059, 1.063, 1.065, 1.069, 1.071, 1.073, 1.077, 1.079, 1.082, 1.083, 1.085, 1.086, 1.091, 1.094, 1.098, 1.101, 1.101, 1.098, 1.097, 1.095, 1.093, 1.093, 1.095, 1.102, 1.111,
+ 1.054, 1.048, 1.046, 1.046, 1.047, 1.054, 1.058, 1.062, 1.064, 1.066, 1.071, 1.073, 1.075, 1.078, 1.082, 1.084, 1.085, 1.086, 1.089, 1.092, 1.096, 1.099, 1.101, 1.102, 1.101, 1.099, 1.096, 1.094, 1.094, 1.097, 1.104, 1.115,
+ 1.053, 1.049, 1.047, 1.046, 1.049, 1.056, 1.061, 1.065, 1.066, 1.069, 1.072, 1.075, 1.077, 1.081, 1.083, 1.084, 1.086, 1.088, 1.091, 1.094, 1.098, 1.101, 1.103, 1.103, 1.103, 1.101, 1.099, 1.096, 1.096, 1.099, 1.106, 1.117,
+ 1.053, 1.051, 1.047, 1.047, 1.051, 1.058, 1.065, 1.066, 1.069, 1.071, 1.074, 1.076, 1.078, 1.082, 1.084, 1.085, 1.088, 1.091, 1.094, 1.097, 1.101, 1.102, 1.104, 1.104, 1.103, 1.102, 1.101, 1.098, 1.098, 1.099, 1.108, 1.118,
+ 1.053, 1.051, 1.048, 1.048, 1.051, 1.058, 1.065, 1.068, 1.071, 1.073, 1.075, 1.076, 1.079, 1.083, 1.084, 1.087, 1.089, 1.092, 1.096, 1.099, 1.102, 1.104, 1.105, 1.106, 1.105, 1.104, 1.101, 1.099, 1.099, 1.103, 1.109, 1.118,
+ 1.055, 1.051, 1.049, 1.048, 1.051, 1.057, 1.065, 1.069, 1.071, 1.074, 1.076, 1.078, 1.081, 1.084, 1.087, 1.088, 1.092, 1.095, 1.098, 1.101, 1.104, 1.106, 1.107, 1.108, 1.107, 1.106, 1.104, 1.103, 1.103, 1.106, 1.113, 1.121,
+ 1.058, 1.051, 1.049, 1.049, 1.051, 1.057, 1.064, 1.069, 1.073, 1.076, 1.078, 1.081, 1.084, 1.086, 1.088, 1.092, 1.095, 1.098, 1.099, 1.103, 1.106, 1.108, 1.111, 1.111, 1.111, 1.109, 1.107, 1.106, 1.106, 1.111, 1.115, 1.125,
+ 1.061, 1.053, 1.051, 1.051, 1.053, 1.059, 1.065, 1.071, 1.074, 1.078, 1.081, 1.084, 1.086, 1.088, 1.092, 1.096, 1.098, 1.099, 1.102, 1.105, 1.107, 1.109, 1.111, 1.112, 1.113, 1.112, 1.109, 1.109, 1.109, 1.112, 1.121, 1.134,
+ 1.064, 1.055, 1.052, 1.052, 1.054, 1.061, 1.065, 1.072, 1.077, 1.081, 1.084, 1.086, 1.088, 1.091, 1.096, 1.097, 1.099, 1.102, 1.104, 1.107, 1.109, 1.111, 1.112, 1.113, 1.114, 1.114, 1.114, 1.113, 1.112, 1.116, 1.125, 1.137,
+ 1.064, 1.059, 1.054, 1.054, 1.057, 1.062, 1.067, 1.073, 1.079, 1.081, 1.085, 1.087, 1.089, 1.093, 1.097, 1.099, 1.103, 1.104, 1.106, 1.109, 1.111, 1.113, 1.113, 1.114, 1.114, 1.116, 1.116, 1.116, 1.117, 1.122, 1.133, 1.143,
+ 1.069, 1.062, 1.057, 1.057, 1.059, 1.063, 1.068, 1.074, 1.079, 1.082, 1.086, 1.089, 1.091, 1.095, 1.098, 1.102, 1.104, 1.106, 1.109, 1.111, 1.113, 1.114, 1.114, 1.115, 1.116, 1.118, 1.119, 1.121, 1.123, 1.129, 1.142, 1.151,
+ 1.071, 1.065, 1.059, 1.058, 1.061, 1.065, 1.069, 1.074, 1.079, 1.083, 1.087, 1.091, 1.092, 1.095, 1.099, 1.103, 1.105, 1.108, 1.109, 1.111, 1.113, 1.114, 1.115, 1.116, 1.118, 1.119, 1.122, 1.124, 1.129, 1.134, 1.148, 1.161,
+ 1.075, 1.066, 1.059, 1.059, 1.061, 1.065, 1.069, 1.073, 1.081, 1.085, 1.089, 1.092, 1.094, 1.097, 1.101, 1.104, 1.106, 1.109, 1.111, 1.112, 1.113, 1.115, 1.117, 1.118, 1.119, 1.121, 1.124, 1.127, 1.132, 1.138, 1.156, 1.171,
+ 1.076, 1.069, 1.061, 1.059, 1.061, 1.066, 1.069, 1.073, 1.081, 1.085, 1.089, 1.094, 1.095, 1.098, 1.102, 1.105, 1.108, 1.109, 1.111, 1.112, 1.115, 1.116, 1.118, 1.119, 1.121, 1.123, 1.126, 1.129, 1.135, 1.144, 1.161, 1.173,
+ 1.082, 1.075, 1.064, 1.059, 1.061, 1.066, 1.069, 1.074, 1.079, 1.087, 1.092, 1.094, 1.096, 1.099, 1.103, 1.105, 1.108, 1.109, 1.112, 1.114, 1.115, 1.117, 1.119, 1.119, 1.121, 1.124, 1.129, 1.131, 1.137, 1.148, 1.165, 1.182
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.002, 1.002, 1.001, 1.002, 1.004, 1.007, 1.009, 1.013, 1.014, 1.015, 1.017, 1.019, 1.021, 1.021, 1.022, 1.022, 1.022, 1.022, 1.022, 1.022, 1.022, 1.022, 1.022, 1.021, 1.019, 1.018, 1.017, 1.014, 1.015, 1.015, 1.015, 1.014,
+ 1.021, 1.018, 1.018, 1.017, 1.019, 1.021, 1.024, 1.026, 1.029, 1.031, 1.033, 1.035, 1.037, 1.038, 1.039, 1.039, 1.041, 1.041, 1.041, 1.041, 1.041, 1.041, 1.039, 1.038, 1.037, 1.036, 1.034, 1.033, 1.032, 1.033, 1.033, 1.034,
+ 1.022, 1.021, 1.019, 1.019, 1.021, 1.024, 1.026, 1.028, 1.032, 1.033, 1.035, 1.037, 1.038, 1.039, 1.041, 1.041, 1.042, 1.042, 1.042, 1.043, 1.042, 1.042, 1.042, 1.041, 1.039, 1.038, 1.037, 1.035, 1.034, 1.034, 1.035, 1.037,
+ 1.023, 1.022, 1.021, 1.021, 1.023, 1.026, 1.028, 1.031, 1.033, 1.035, 1.037, 1.038, 1.039, 1.041, 1.042, 1.043, 1.044, 1.044, 1.045, 1.044, 1.044, 1.044, 1.044, 1.043, 1.041, 1.039, 1.039, 1.036, 1.035, 1.035, 1.035, 1.038,
+ 1.024, 1.023, 1.023, 1.023, 1.025, 1.027, 1.029, 1.033, 1.034, 1.037, 1.039, 1.039, 1.041, 1.042, 1.044, 1.045, 1.045, 1.045, 1.046, 1.047, 1.047, 1.047, 1.046, 1.045, 1.043, 1.041, 1.039, 1.037, 1.035, 1.035, 1.037, 1.039,
+ 1.025, 1.024, 1.024, 1.025, 1.027, 1.028, 1.031, 1.033, 1.036, 1.038, 1.039, 1.041, 1.043, 1.044, 1.046, 1.046, 1.046, 1.047, 1.048, 1.049, 1.049, 1.049, 1.048, 1.047, 1.046, 1.043, 1.041, 1.038, 1.036, 1.036, 1.037, 1.041,
+ 1.024, 1.025, 1.025, 1.026, 1.027, 1.029, 1.031, 1.033, 1.036, 1.039, 1.041, 1.043, 1.044, 1.045, 1.047, 1.048, 1.048, 1.049, 1.049, 1.051, 1.051, 1.049, 1.049, 1.049, 1.047, 1.045, 1.042, 1.039, 1.038, 1.037, 1.038, 1.039,
+ 1.025, 1.025, 1.026, 1.027, 1.028, 1.029, 1.031, 1.033, 1.037, 1.039, 1.042, 1.043, 1.045, 1.046, 1.048, 1.048, 1.049, 1.049, 1.051, 1.051, 1.051, 1.051, 1.051, 1.049, 1.048, 1.046, 1.043, 1.041, 1.038, 1.037, 1.038, 1.041,
+ 1.024, 1.025, 1.027, 1.027, 1.028, 1.029, 1.032, 1.034, 1.036, 1.039, 1.042, 1.044, 1.045, 1.047, 1.048, 1.049, 1.049, 1.051, 1.051, 1.051, 1.052, 1.052, 1.052, 1.049, 1.048, 1.046, 1.044, 1.042, 1.041, 1.038, 1.038, 1.041,
+ 1.024, 1.025, 1.027, 1.028, 1.029, 1.031, 1.032, 1.034, 1.038, 1.041, 1.043, 1.045, 1.046, 1.047, 1.049, 1.049, 1.049, 1.051, 1.051, 1.052, 1.054, 1.053, 1.053, 1.051, 1.049, 1.047, 1.044, 1.042, 1.041, 1.039, 1.039, 1.042,
+ 1.025, 1.025, 1.027, 1.028, 1.029, 1.031, 1.032, 1.035, 1.039, 1.041, 1.044, 1.045, 1.046, 1.048, 1.049, 1.051, 1.051, 1.051, 1.052, 1.054, 1.054, 1.055, 1.053, 1.052, 1.049, 1.047, 1.044, 1.042, 1.041, 1.039, 1.041, 1.042,
+ 1.026, 1.026, 1.026, 1.028, 1.029, 1.031, 1.033, 1.036, 1.039, 1.042, 1.044, 1.045, 1.047, 1.048, 1.051, 1.051, 1.052, 1.052, 1.053, 1.054, 1.055, 1.055, 1.054, 1.052, 1.051, 1.049, 1.045, 1.042, 1.039, 1.039, 1.041, 1.042,
+ 1.027, 1.026, 1.026, 1.028, 1.029, 1.032, 1.033, 1.036, 1.039, 1.042, 1.045, 1.046, 1.047, 1.049, 1.052, 1.053, 1.053, 1.054, 1.054, 1.054, 1.055, 1.055, 1.055, 1.053, 1.051, 1.049, 1.046, 1.043, 1.039, 1.039, 1.041, 1.043,
+ 1.027, 1.027, 1.027, 1.028, 1.029, 1.032, 1.034, 1.036, 1.039, 1.043, 1.045, 1.047, 1.048, 1.051, 1.052, 1.053, 1.054, 1.054, 1.054, 1.055, 1.055, 1.056, 1.056, 1.055, 1.052, 1.051, 1.047, 1.044, 1.041, 1.039, 1.041, 1.043,
+ 1.028, 1.028, 1.028, 1.028, 1.029, 1.032, 1.033, 1.036, 1.038, 1.044, 1.046, 1.048, 1.049, 1.052, 1.053, 1.053, 1.054, 1.054, 1.055, 1.055, 1.056, 1.056, 1.057, 1.056, 1.053, 1.051, 1.048, 1.044, 1.042, 1.041, 1.042, 1.043,
+ 1.028, 1.028, 1.028, 1.028, 1.031, 1.032, 1.033, 1.035, 1.038, 1.043, 1.046, 1.048, 1.051, 1.053, 1.053, 1.054, 1.055, 1.055, 1.055, 1.055, 1.056, 1.057, 1.058, 1.056, 1.054, 1.052, 1.049, 1.045, 1.043, 1.042, 1.042, 1.044,
+ 1.029, 1.028, 1.027, 1.028, 1.031, 1.032, 1.033, 1.036, 1.038, 1.043, 1.046, 1.049, 1.051, 1.053, 1.054, 1.055, 1.055, 1.055, 1.055, 1.055, 1.056, 1.057, 1.057, 1.056, 1.053, 1.052, 1.049, 1.045, 1.042, 1.042, 1.043, 1.045,
+ 1.029, 1.028, 1.028, 1.029, 1.031, 1.033, 1.034, 1.036, 1.039, 1.042, 1.047, 1.048, 1.051, 1.053, 1.055, 1.056, 1.056, 1.055, 1.055, 1.055, 1.057, 1.057, 1.057, 1.057, 1.055, 1.052, 1.049, 1.046, 1.043, 1.043, 1.044, 1.045,
+ 1.031, 1.029, 1.028, 1.029, 1.031, 1.033, 1.035, 1.037, 1.039, 1.042, 1.046, 1.048, 1.051, 1.052, 1.055, 1.056, 1.056, 1.056, 1.056, 1.056, 1.057, 1.057, 1.057, 1.057, 1.055, 1.053, 1.049, 1.046, 1.044, 1.043, 1.044, 1.047,
+ 1.031, 1.029, 1.029, 1.029, 1.031, 1.033, 1.036, 1.037, 1.039, 1.042, 1.046, 1.048, 1.051, 1.052, 1.054, 1.055, 1.056, 1.056, 1.056, 1.057, 1.058, 1.058, 1.058, 1.057, 1.056, 1.054, 1.051, 1.047, 1.045, 1.044, 1.045, 1.047,
+ 1.031, 1.029, 1.029, 1.029, 1.031, 1.033, 1.036, 1.037, 1.039, 1.042, 1.045, 1.047, 1.051, 1.052, 1.054, 1.055, 1.056, 1.056, 1.057, 1.057, 1.058, 1.057, 1.058, 1.056, 1.055, 1.053, 1.051, 1.047, 1.045, 1.044, 1.044, 1.047,
+ 1.031, 1.029, 1.029, 1.031, 1.031, 1.032, 1.035, 1.038, 1.039, 1.042, 1.045, 1.048, 1.051, 1.052, 1.053, 1.055, 1.056, 1.056, 1.057, 1.057, 1.058, 1.058, 1.057, 1.056, 1.055, 1.053, 1.051, 1.048, 1.045, 1.044, 1.045, 1.048,
+ 1.031, 1.029, 1.029, 1.029, 1.031, 1.032, 1.034, 1.039, 1.041, 1.042, 1.045, 1.047, 1.049, 1.052, 1.053, 1.055, 1.055, 1.056, 1.057, 1.057, 1.058, 1.058, 1.057, 1.056, 1.055, 1.054, 1.051, 1.048, 1.047, 1.045, 1.046, 1.048,
+ 1.031, 1.029, 1.028, 1.029, 1.031, 1.032, 1.034, 1.037, 1.041, 1.043, 1.045, 1.047, 1.049, 1.052, 1.054, 1.055, 1.056, 1.056, 1.057, 1.057, 1.058, 1.058, 1.058, 1.057, 1.056, 1.054, 1.051, 1.049, 1.047, 1.046, 1.047, 1.048,
+ 1.029, 1.029, 1.028, 1.029, 1.031, 1.032, 1.035, 1.037, 1.039, 1.042, 1.045, 1.048, 1.049, 1.052, 1.054, 1.055, 1.055, 1.056, 1.056, 1.057, 1.058, 1.058, 1.058, 1.057, 1.056, 1.055, 1.052, 1.049, 1.047, 1.047, 1.047, 1.048,
+ 1.031, 1.029, 1.028, 1.029, 1.031, 1.032, 1.035, 1.037, 1.039, 1.042, 1.045, 1.047, 1.049, 1.052, 1.054, 1.055, 1.056, 1.056, 1.056, 1.057, 1.058, 1.058, 1.058, 1.058, 1.057, 1.055, 1.054, 1.051, 1.049, 1.048, 1.049, 1.051,
+ 1.031, 1.029, 1.029, 1.029, 1.031, 1.032, 1.035, 1.037, 1.041, 1.042, 1.045, 1.047, 1.049, 1.051, 1.053, 1.055, 1.056, 1.056, 1.056, 1.057, 1.057, 1.058, 1.058, 1.057, 1.056, 1.055, 1.054, 1.052, 1.051, 1.049, 1.051, 1.051,
+ 1.032, 1.031, 1.029, 1.029, 1.031, 1.032, 1.035, 1.037, 1.041, 1.042, 1.044, 1.046, 1.048, 1.051, 1.053, 1.054, 1.055, 1.056, 1.056, 1.056, 1.056, 1.056, 1.057, 1.056, 1.056, 1.055, 1.054, 1.052, 1.052, 1.051, 1.052, 1.054,
+ 1.034, 1.031, 1.031, 1.029, 1.031, 1.032, 1.034, 1.036, 1.041, 1.042, 1.043, 1.045, 1.047, 1.049, 1.052, 1.053, 1.055, 1.055, 1.056, 1.056, 1.056, 1.056, 1.056, 1.056, 1.056, 1.055, 1.054, 1.053, 1.053, 1.053, 1.053, 1.054,
+ 1.034, 1.033, 1.029, 1.029, 1.031, 1.032, 1.034, 1.036, 1.039, 1.042, 1.044, 1.045, 1.047, 1.049, 1.051, 1.052, 1.054, 1.055, 1.055, 1.055, 1.056, 1.056, 1.056, 1.056, 1.055, 1.055, 1.055, 1.055, 1.054, 1.054, 1.055, 1.056,
+ 1.034, 1.033, 1.029, 1.029, 1.031, 1.032, 1.033, 1.036, 1.039, 1.042, 1.044, 1.046, 1.047, 1.049, 1.051, 1.053, 1.054, 1.055, 1.055, 1.056, 1.056, 1.056, 1.056, 1.056, 1.055, 1.055, 1.054, 1.055, 1.055, 1.054, 1.055, 1.057,
+ 1.034, 1.032, 1.031, 1.029, 1.029, 1.032, 1.034, 1.037, 1.039, 1.042, 1.045, 1.046, 1.047, 1.049, 1.052, 1.054, 1.054, 1.055, 1.056, 1.056, 1.056, 1.056, 1.056, 1.055, 1.054, 1.054, 1.054, 1.055, 1.054, 1.055, 1.056, 1.057
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 2.367, 2.251, 2.061, 1.909, 1.781, 1.674, 1.582, 1.506, 1.441, 1.382, 1.329, 1.287, 1.266, 1.256, 1.255, 1.255, 1.255, 1.259, 1.273, 1.309, 1.355, 1.411, 1.469, 1.541, 1.625, 1.723, 1.838, 1.975, 2.139, 2.338, 2.589, 2.717,
+ 2.305, 2.152, 1.974, 1.831, 1.706, 1.604, 1.518, 1.443, 1.387, 1.343, 1.296, 1.255, 1.231, 1.213, 1.203, 1.203, 1.206, 1.221, 1.244, 1.279, 1.325, 1.364, 1.411, 1.481, 1.559, 1.653, 1.763, 1.895, 2.051, 2.238, 2.473, 2.641,
+ 2.249, 2.099, 1.925, 1.784, 1.665, 1.564, 1.479, 1.407, 1.347, 1.296, 1.255, 1.225, 1.199, 1.182, 1.172, 1.172, 1.178, 1.191, 1.215, 1.244, 1.279, 1.325, 1.378, 1.445, 1.522, 1.614, 1.719, 1.847, 1.998, 2.181, 2.406, 2.573,
+ 2.201, 2.048, 1.881, 1.743, 1.628, 1.529, 1.446, 1.376, 1.316, 1.266, 1.225, 1.198, 1.171, 1.152, 1.143, 1.143, 1.153, 1.165, 1.191, 1.215, 1.252, 1.297, 1.351, 1.413, 1.489, 1.577, 1.682, 1.804, 1.951, 2.129, 2.347, 2.513,
+ 2.156, 2.004, 1.842, 1.706, 1.594, 1.497, 1.416, 1.346, 1.287, 1.238, 1.199, 1.171, 1.143, 1.125, 1.117, 1.117, 1.127, 1.139, 1.165, 1.191, 1.227, 1.272, 1.324, 1.387, 1.459, 1.545, 1.646, 1.766, 1.909, 2.081, 2.294, 2.461,
+ 2.116, 1.963, 1.807, 1.674, 1.562, 1.467, 1.388, 1.321, 1.262, 1.214, 1.174, 1.143, 1.119, 1.099, 1.092, 1.092, 1.103, 1.116, 1.139, 1.167, 1.205, 1.249, 1.301, 1.362, 1.432, 1.515, 1.614, 1.731, 1.869, 2.039, 2.246, 2.413,
+ 2.082, 1.929, 1.774, 1.644, 1.535, 1.442, 1.364, 1.298, 1.241, 1.192, 1.152, 1.119, 1.099, 1.078, 1.069, 1.069, 1.078, 1.098, 1.116, 1.146, 1.184, 1.229, 1.281, 1.341, 1.409, 1.489, 1.585, 1.699, 1.834, 2.001, 2.205, 2.374,
+ 2.054, 1.898, 1.745, 1.619, 1.513, 1.422, 1.344, 1.277, 1.221, 1.172, 1.132, 1.099, 1.078, 1.059, 1.051, 1.051, 1.058, 1.078, 1.098, 1.128, 1.167, 1.212, 1.264, 1.323, 1.389, 1.467, 1.562, 1.674, 1.805, 1.969, 2.171, 2.339,
+ 2.031, 1.872, 1.722, 1.598, 1.493, 1.403, 1.327, 1.261, 1.203, 1.156, 1.114, 1.082, 1.059, 1.044, 1.034, 1.034, 1.044, 1.058, 1.081, 1.113, 1.151, 1.198, 1.249, 1.308, 1.373, 1.449, 1.543, 1.655, 1.799, 1.942, 2.141, 2.312,
+ 2.011, 1.849, 1.704, 1.581, 1.476, 1.387, 1.311, 1.245, 1.189, 1.141, 1.101, 1.068, 1.044, 1.031, 1.019, 1.019, 1.032, 1.044, 1.068, 1.099, 1.138, 1.184, 1.238, 1.295, 1.359, 1.435, 1.526, 1.639, 1.782, 1.924, 2.115, 2.287,
+ 1.996, 1.833, 1.687, 1.565, 1.462, 1.374, 1.299, 1.233, 1.177, 1.128, 1.087, 1.055, 1.031, 1.019, 1.008, 1.009, 1.019, 1.033, 1.057, 1.089, 1.128, 1.174, 1.227, 1.283, 1.347, 1.422, 1.512, 1.621, 1.764, 1.905, 2.091, 2.269,
+ 1.985, 1.819, 1.675, 1.553, 1.451, 1.363, 1.289, 1.223, 1.167, 1.119, 1.078, 1.046, 1.022, 1.007, 1.003, 1.007, 1.009, 1.024, 1.049, 1.081, 1.119, 1.166, 1.218, 1.275, 1.339, 1.413, 1.502, 1.606, 1.742, 1.885, 2.075, 2.258,
+ 1.979, 1.809, 1.666, 1.546, 1.442, 1.356, 1.281, 1.215, 1.159, 1.112, 1.071, 1.039, 1.015, 1.001, 1.001, 1.003, 1.009, 1.019, 1.043, 1.075, 1.114, 1.159, 1.212, 1.268, 1.332, 1.407, 1.496, 1.599, 1.722, 1.875, 2.064, 2.249,
+ 1.976, 1.803, 1.661, 1.541, 1.437, 1.351, 1.276, 1.211, 1.156, 1.107, 1.067, 1.035, 1.011, 1.001, 1.001, 1.003, 1.009, 1.018, 1.039, 1.071, 1.111, 1.156, 1.207, 1.265, 1.329, 1.404, 1.492, 1.594, 1.717, 1.869, 2.059, 2.247,
+ 1.976, 1.801, 1.659, 1.538, 1.436, 1.348, 1.274, 1.209, 1.153, 1.106, 1.066, 1.034, 1.011, 1.001, 1.001, 1.004, 1.011, 1.018, 1.039, 1.071, 1.109, 1.155, 1.207, 1.264, 1.329, 1.404, 1.492, 1.593, 1.716, 1.868, 2.059, 2.247,
+ 1.976, 1.801, 1.659, 1.538, 1.436, 1.348, 1.274, 1.209, 1.153, 1.106, 1.066, 1.034, 1.011, 1.003, 1.003, 1.005, 1.011, 1.019, 1.041, 1.071, 1.109, 1.155, 1.207, 1.264, 1.329, 1.404, 1.493, 1.594, 1.716, 1.869, 2.059, 2.247,
+ 1.989, 1.809, 1.663, 1.542, 1.439, 1.351, 1.277, 1.212, 1.156, 1.108, 1.069, 1.038, 1.014, 1.006, 1.005, 1.008, 1.014, 1.023, 1.044, 1.075, 1.113, 1.158, 1.209, 1.267, 1.333, 1.408, 1.497, 1.599, 1.722, 1.875, 2.066, 2.251,
+ 1.997, 1.818, 1.669, 1.547, 1.444, 1.356, 1.282, 1.215, 1.161, 1.113, 1.075, 1.043, 1.019, 1.009, 1.008, 1.011, 1.016, 1.027, 1.049, 1.079, 1.117, 1.163, 1.215, 1.273, 1.338, 1.414, 1.503, 1.607, 1.731, 1.884, 2.073, 2.258,
+ 2.003, 1.827, 1.681, 1.558, 1.453, 1.365, 1.289, 1.225, 1.169, 1.122, 1.083, 1.051, 1.028, 1.018, 1.013, 1.016, 1.021, 1.035, 1.057, 1.087, 1.126, 1.171, 1.224, 1.281, 1.347, 1.424, 1.514, 1.617, 1.743, 1.896, 2.087, 2.268,
+ 2.011, 1.843, 1.696, 1.571, 1.465, 1.377, 1.302, 1.236, 1.179, 1.132, 1.093, 1.062, 1.039, 1.028, 1.021, 1.021, 1.032, 1.044, 1.067, 1.098, 1.136, 1.181, 1.233, 1.291, 1.359, 1.436, 1.526, 1.632, 1.758, 1.913, 2.104, 2.283,
+ 2.021, 1.863, 1.715, 1.588, 1.481, 1.392, 1.316, 1.249, 1.193, 1.145, 1.106, 1.075, 1.053, 1.039, 1.032, 1.032, 1.044, 1.057, 1.081, 1.111, 1.149, 1.194, 1.245, 1.304, 1.372, 1.452, 1.541, 1.649, 1.777, 1.932, 2.126, 2.299,
+ 2.042, 1.887, 1.736, 1.608, 1.501, 1.409, 1.333, 1.266, 1.209, 1.162, 1.123, 1.091, 1.071, 1.053, 1.049, 1.049, 1.057, 1.075, 1.095, 1.125, 1.163, 1.209, 1.259, 1.319, 1.389, 1.469, 1.561, 1.671, 1.799, 1.957, 2.156, 2.324,
+ 2.072, 1.916, 1.762, 1.631, 1.522, 1.429, 1.352, 1.285, 1.228, 1.179, 1.141, 1.109, 1.091, 1.071, 1.067, 1.067, 1.075, 1.095, 1.112, 1.143, 1.181, 1.227, 1.276, 1.338, 1.408, 1.489, 1.583, 1.694, 1.827, 1.987, 2.187, 2.354,
+ 2.104, 1.949, 1.791, 1.659, 1.548, 1.453, 1.375, 1.308, 1.248, 1.201, 1.162, 1.132, 1.109, 1.092, 1.088, 1.088, 1.096, 1.112, 1.134, 1.164, 1.202, 1.247, 1.297, 1.359, 1.432, 1.515, 1.611, 1.724, 1.858, 2.022, 2.225, 2.391,
+ 2.138, 1.985, 1.824, 1.689, 1.577, 1.482, 1.401, 1.332, 1.274, 1.225, 1.185, 1.158, 1.132, 1.116, 1.112, 1.112, 1.119, 1.134, 1.161, 1.186, 1.225, 1.271, 1.319, 1.384, 1.458, 1.542, 1.641, 1.757, 1.896, 2.064, 2.271, 2.436,
+ 2.179, 2.028, 1.862, 1.724, 1.611, 1.512, 1.429, 1.361, 1.301, 1.251, 1.212, 1.185, 1.158, 1.143, 1.138, 1.138, 1.145, 1.161, 1.186, 1.212, 1.251, 1.295, 1.346, 1.411, 1.487, 1.574, 1.675, 1.793, 1.936, 2.109, 2.321, 2.488,
+ 2.229, 2.075, 1.904, 1.764, 1.646, 1.547, 1.462, 1.391, 1.331, 1.281, 1.241, 1.212, 1.186, 1.172, 1.167, 1.167, 1.174, 1.189, 1.212, 1.242, 1.278, 1.323, 1.375, 1.443, 1.521, 1.609, 1.713, 1.836, 1.982, 2.159, 2.379, 2.546,
+ 2.283, 2.131, 1.954, 1.808, 1.687, 1.584, 1.499, 1.425, 1.364, 1.313, 1.276, 1.241, 1.218, 1.202, 1.197, 1.197, 1.205, 1.221, 1.242, 1.276, 1.308, 1.354, 1.408, 1.478, 1.558, 1.649, 1.756, 1.884, 2.034, 2.216, 2.446, 2.612,
+ 2.346, 2.191, 2.011, 1.859, 1.733, 1.628, 1.539, 1.465, 1.401, 1.349, 1.313, 1.276, 1.253, 1.237, 1.232, 1.232, 1.239, 1.254, 1.276, 1.308, 1.344, 1.389, 1.447, 1.517, 1.598, 1.695, 1.805, 1.937, 2.094, 2.282, 2.521, 2.688,
+ 2.417, 2.263, 2.071, 1.915, 1.785, 1.676, 1.584, 1.508, 1.443, 1.391, 1.349, 1.314, 1.291, 1.275, 1.269, 1.269, 1.276, 1.291, 1.313, 1.344, 1.384, 1.429, 1.489, 1.562, 1.646, 1.743, 1.859, 1.996, 2.157, 2.355, 2.607, 2.772,
+ 2.497, 2.338, 2.139, 1.976, 1.842, 1.729, 1.635, 1.555, 1.488, 1.433, 1.389, 1.355, 1.331, 1.316, 1.309, 1.309, 1.316, 1.331, 1.353, 1.383, 1.424, 1.473, 1.535, 1.609, 1.696, 1.798, 1.918, 2.061, 2.228, 2.436, 2.699, 2.868,
+ 2.585, 2.391, 2.186, 2.019, 1.881, 1.765, 1.669, 1.588, 1.519, 1.464, 1.421, 1.385, 1.355, 1.336, 1.335, 1.335, 1.336, 1.353, 1.382, 1.413, 1.454, 1.504, 1.567, 1.644, 1.733, 1.836, 1.958, 2.106, 2.278, 2.496, 2.765, 2.979
+ ],
+ "sigma": 0.00094,
+ "sigma_Cb": 0.00164
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2698,
+ "ccm":
+ [
+ 1.57242, -0.32752, -0.24489,
+ -0.61284, 1.70498, -0.09215,
+ -0.43411, 0.48072, 0.95338
+ ]
+ },
+ {
+ "ct": 2930,
+ "ccm":
+ [
+ 1.69569, -0.52958, -0.16612,
+ -0.67108, 1.78452, -0.11343,
+ -0.41759, 0.54607, 0.87152
+ ]
+ },
+ {
+ "ct": 3643,
+ "ccm":
+ [
+ 1.72576, -0.72422, -0.00153,
+ -0.45949, 1.40534, 0.05415,
+ -0.14492, -0.79825, 1.94317
+ ]
+ },
+ {
+ "ct": 4605,
+ "ccm":
+ [
+ 1.49944, -0.41939, -0.08005,
+ -0.39248, 1.69456, -0.30208,
+ 0.01559, -0.88541, 1.86981
+ ]
+ },
+ {
+ "ct": 5658,
+ "ccm":
+ [
+ 1.38807, -0.23217, -0.15589,
+ -0.37464, 1.70299, -0.32835,
+ -0.01316, -0.72039, 1.73355
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.cac": { }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "night": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/src/ipa/rpi/pisp/data/imx462.json b/src/ipa/rpi/pisp/data/imx462.json
new file mode 100644
index 00000000..20ca1a66
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx462.json
@@ -0,0 +1,342 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "description": "This is an interim tuning only. Please consider doing a more formal tuning for your application.",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 3840
+ }
+ },
+ {
+ "rpi.dpc": { }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 6813,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 890,
+ "reference_Y": 12900
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.67
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 187,
+ "slope": 0.00842
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "bayes": 0
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "speed": 0.2,
+ "metering_modes":
+ {
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ },
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 10, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 10, 5000, 10000, 20000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 1000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.16,
+ 10000, 0.16
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.7,
+ "luminance_lut":
+ [
+ 2.844, 2.604, 2.365, 2.2, 2.039, 1.916, 1.799, 1.707, 1.622, 1.552, 1.487, 1.435, 1.389, 1.356, 1.332, 1.317, 1.31, 1.308, 1.313, 1.324, 1.344, 1.37, 1.41, 1.454, 1.508, 1.567, 1.641, 1.719, 1.82, 1.925, 2.073, 2.221,
+ 2.749, 2.521, 2.294, 2.134, 1.979, 1.861, 1.749, 1.661, 1.578, 1.511, 1.448, 1.398, 1.354, 1.322, 1.3, 1.285, 1.278, 1.277, 1.281, 1.292, 1.311, 1.336, 1.374, 1.416, 1.469, 1.526, 1.596, 1.671, 1.77, 1.872, 2.019, 2.166,
+ 2.654, 2.438, 2.223, 2.069, 1.919, 1.807, 1.7, 1.614, 1.534, 1.469, 1.409, 1.361, 1.318, 1.288, 1.267, 1.254, 1.247, 1.245, 1.25, 1.259, 1.277, 1.302, 1.338, 1.379, 1.43, 1.485, 1.552, 1.623, 1.719, 1.819, 1.965, 2.112,
+ 2.563, 2.359, 2.155, 2.007, 1.863, 1.755, 1.653, 1.571, 1.493, 1.43, 1.372, 1.325, 1.284, 1.256, 1.236, 1.223, 1.217, 1.216, 1.219, 1.229, 1.246, 1.269, 1.305, 1.344, 1.393, 1.446, 1.51, 1.578, 1.672, 1.77, 1.914, 2.059,
+ 2.494, 2.299, 2.103, 1.961, 1.822, 1.718, 1.619, 1.538, 1.461, 1.399, 1.343, 1.298, 1.259, 1.232, 1.213, 1.2, 1.194, 1.193, 1.196, 1.205, 1.222, 1.245, 1.279, 1.318, 1.365, 1.416, 1.481, 1.549, 1.641, 1.735, 1.875, 2.015,
+ 2.425, 2.238, 2.05, 1.914, 1.782, 1.681, 1.585, 1.505, 1.429, 1.369, 1.314, 1.271, 1.234, 1.208, 1.189, 1.177, 1.171, 1.169, 1.173, 1.182, 1.198, 1.221, 1.254, 1.292, 1.338, 1.387, 1.452, 1.519, 1.609, 1.701, 1.836, 1.971,
+ 2.363, 2.183, 2.003, 1.873, 1.746, 1.648, 1.555, 1.477, 1.401, 1.342, 1.289, 1.247, 1.212, 1.187, 1.168, 1.156, 1.149, 1.148, 1.152, 1.16, 1.177, 1.198, 1.231, 1.267, 1.312, 1.36, 1.425, 1.492, 1.58, 1.671, 1.802, 1.932,
+ 2.314, 2.14, 1.965, 1.839, 1.716, 1.622, 1.532, 1.454, 1.38, 1.322, 1.27, 1.229, 1.195, 1.169, 1.149, 1.137, 1.129, 1.128, 1.132, 1.142, 1.158, 1.18, 1.21, 1.245, 1.289, 1.336, 1.401, 1.469, 1.557, 1.649, 1.776, 1.903,
+ 2.264, 2.096, 1.927, 1.805, 1.687, 1.596, 1.509, 1.432, 1.358, 1.301, 1.251, 1.211, 1.177, 1.151, 1.131, 1.117, 1.109, 1.108, 1.113, 1.123, 1.14, 1.161, 1.19, 1.222, 1.265, 1.313, 1.378, 1.445, 1.534, 1.626, 1.75, 1.874,
+ 2.225, 2.061, 1.897, 1.778, 1.663, 1.574, 1.489, 1.414, 1.341, 1.285, 1.235, 1.196, 1.163, 1.136, 1.115, 1.1, 1.091, 1.089, 1.095, 1.106, 1.124, 1.145, 1.174, 1.205, 1.248, 1.294, 1.359, 1.427, 1.516, 1.606, 1.728, 1.849,
+ 2.193, 2.033, 1.872, 1.756, 1.642, 1.556, 1.473, 1.399, 1.327, 1.272, 1.224, 1.185, 1.15, 1.123, 1.1, 1.084, 1.074, 1.072, 1.078, 1.09, 1.11, 1.133, 1.161, 1.193, 1.234, 1.28, 1.345, 1.413, 1.501, 1.59, 1.709, 1.828,
+ 2.161, 2.004, 1.848, 1.734, 1.622, 1.537, 1.457, 1.384, 1.313, 1.26, 1.212, 1.173, 1.138, 1.11, 1.085, 1.068, 1.057, 1.055, 1.062, 1.075, 1.096, 1.12, 1.148, 1.18, 1.221, 1.266, 1.331, 1.399, 1.486, 1.574, 1.69, 1.807,
+ 2.14, 1.986, 1.832, 1.719, 1.609, 1.525, 1.445, 1.373, 1.304, 1.251, 1.204, 1.165, 1.129, 1.1, 1.074, 1.055, 1.043, 1.041, 1.049, 1.063, 1.086, 1.11, 1.14, 1.172, 1.212, 1.258, 1.323, 1.39, 1.477, 1.566, 1.679, 1.792,
+ 2.123, 1.971, 1.819, 1.707, 1.598, 1.514, 1.434, 1.364, 1.296, 1.243, 1.197, 1.158, 1.122, 1.091, 1.064, 1.044, 1.031, 1.027, 1.036, 1.052, 1.076, 1.102, 1.132, 1.165, 1.206, 1.251, 1.316, 1.383, 1.471, 1.56, 1.67, 1.78,
+ 2.106, 1.956, 1.806, 1.695, 1.587, 1.504, 1.424, 1.354, 1.288, 1.236, 1.19, 1.15, 1.114, 1.083, 1.055, 1.033, 1.018, 1.014, 1.024, 1.04, 1.066, 1.094, 1.124, 1.158, 1.199, 1.245, 1.309, 1.376, 1.465, 1.555, 1.661, 1.767,
+ 2.104, 1.955, 1.805, 1.694, 1.586, 1.502, 1.422, 1.352, 1.285, 1.234, 1.188, 1.149, 1.113, 1.081, 1.053, 1.031, 1.014, 1.011, 1.021, 1.038, 1.064, 1.091, 1.122, 1.156, 1.198, 1.244, 1.308, 1.376, 1.465, 1.555, 1.66, 1.766,
+ 2.104, 1.955, 1.806, 1.695, 1.586, 1.502, 1.421, 1.351, 1.284, 1.232, 1.187, 1.148, 1.112, 1.08, 1.051, 1.029, 1.012, 1.008, 1.02, 1.036, 1.062, 1.089, 1.12, 1.155, 1.197, 1.244, 1.308, 1.375, 1.465, 1.555, 1.661, 1.766,
+ 2.105, 1.956, 1.807, 1.696, 1.587, 1.502, 1.42, 1.35, 1.282, 1.231, 1.186, 1.148, 1.112, 1.08, 1.051, 1.028, 1.011, 1.007, 1.019, 1.036, 1.061, 1.088, 1.119, 1.154, 1.197, 1.244, 1.308, 1.376, 1.466, 1.557, 1.662, 1.767,
+ 2.121, 1.97, 1.818, 1.705, 1.595, 1.508, 1.424, 1.353, 1.286, 1.236, 1.191, 1.153, 1.118, 1.087, 1.059, 1.038, 1.022, 1.018, 1.028, 1.044, 1.067, 1.093, 1.124, 1.158, 1.201, 1.248, 1.314, 1.383, 1.474, 1.567, 1.672, 1.777,
+ 2.137, 1.983, 1.829, 1.715, 1.603, 1.514, 1.428, 1.357, 1.291, 1.24, 1.196, 1.158, 1.123, 1.094, 1.068, 1.047, 1.033, 1.029, 1.038, 1.052, 1.074, 1.098, 1.128, 1.162, 1.205, 1.253, 1.32, 1.39, 1.483, 1.577, 1.682, 1.788,
+ 2.154, 1.998, 1.843, 1.726, 1.613, 1.522, 1.435, 1.364, 1.297, 1.246, 1.202, 1.164, 1.131, 1.102, 1.078, 1.059, 1.045, 1.041, 1.048, 1.061, 1.082, 1.105, 1.134, 1.167, 1.211, 1.259, 1.327, 1.399, 1.494, 1.588, 1.694, 1.8,
+ 2.176, 2.019, 1.862, 1.744, 1.628, 1.537, 1.449, 1.377, 1.309, 1.258, 1.213, 1.176, 1.143, 1.116, 1.092, 1.074, 1.061, 1.057, 1.063, 1.075, 1.094, 1.117, 1.146, 1.178, 1.222, 1.27, 1.34, 1.414, 1.509, 1.604, 1.711, 1.818,
+ 2.199, 2.04, 1.881, 1.761, 1.644, 1.552, 1.464, 1.391, 1.321, 1.269, 1.223, 1.187, 1.155, 1.129, 1.106, 1.09, 1.078, 1.074, 1.078, 1.088, 1.107, 1.128, 1.157, 1.189, 1.233, 1.281, 1.353, 1.428, 1.524, 1.62, 1.728, 1.836,
+ 2.228, 2.066, 1.904, 1.782, 1.662, 1.57, 1.482, 1.408, 1.337, 1.284, 1.237, 1.201, 1.17, 1.145, 1.123, 1.107, 1.096, 1.092, 1.095, 1.104, 1.121, 1.142, 1.17, 1.203, 1.247, 1.297, 1.37, 1.446, 1.542, 1.639, 1.75, 1.86,
+ 2.267, 2.099, 1.932, 1.807, 1.684, 1.592, 1.504, 1.428, 1.356, 1.302, 1.255, 1.219, 1.189, 1.164, 1.141, 1.125, 1.115, 1.111, 1.114, 1.123, 1.138, 1.158, 1.186, 1.22, 1.266, 1.318, 1.391, 1.467, 1.563, 1.661, 1.776, 1.891,
+ 2.305, 2.132, 1.96, 1.832, 1.707, 1.614, 1.526, 1.449, 1.375, 1.32, 1.272, 1.237, 1.208, 1.182, 1.16, 1.144, 1.135, 1.131, 1.134, 1.141, 1.155, 1.174, 1.203, 1.236, 1.285, 1.338, 1.412, 1.489, 1.585, 1.682, 1.802, 1.922,
+ 2.351, 2.173, 1.996, 1.864, 1.736, 1.641, 1.552, 1.474, 1.4, 1.344, 1.294, 1.258, 1.228, 1.203, 1.181, 1.165, 1.156, 1.152, 1.155, 1.162, 1.176, 1.195, 1.224, 1.259, 1.309, 1.365, 1.439, 1.516, 1.613, 1.711, 1.835, 1.96,
+ 2.4, 2.218, 2.036, 1.901, 1.768, 1.671, 1.58, 1.502, 1.428, 1.37, 1.319, 1.281, 1.249, 1.224, 1.203, 1.188, 1.178, 1.174, 1.177, 1.184, 1.197, 1.217, 1.248, 1.285, 1.337, 1.394, 1.469, 1.547, 1.644, 1.743, 1.873, 2.002,
+ 2.45, 2.264, 2.077, 1.938, 1.801, 1.702, 1.608, 1.53, 1.456, 1.397, 1.344, 1.304, 1.271, 1.245, 1.224, 1.21, 1.2, 1.196, 1.199, 1.206, 1.219, 1.239, 1.272, 1.311, 1.365, 1.424, 1.5, 1.578, 1.676, 1.776, 1.91, 2.044,
+ 2.513, 2.318, 2.124, 1.984, 1.848, 1.747, 1.652, 1.572, 1.496, 1.436, 1.383, 1.341, 1.303, 1.274, 1.253, 1.238, 1.228, 1.225, 1.228, 1.235, 1.248, 1.269, 1.303, 1.343, 1.4, 1.46, 1.537, 1.617, 1.718, 1.82, 1.962, 2.103,
+ 2.579, 2.376, 2.172, 2.032, 1.897, 1.796, 1.7, 1.617, 1.538, 1.479, 1.426, 1.38, 1.337, 1.306, 1.283, 1.267, 1.258, 1.254, 1.257, 1.265, 1.279, 1.3, 1.336, 1.377, 1.435, 1.497, 1.576, 1.658, 1.761, 1.867, 2.016, 2.165,
+ 2.645, 2.433, 2.22, 2.08, 1.946, 1.844, 1.747, 1.663, 1.581, 1.521, 1.468, 1.419, 1.371, 1.337, 1.313, 1.296, 1.287, 1.284, 1.287, 1.295, 1.309, 1.331, 1.368, 1.411, 1.471, 1.535, 1.615, 1.699, 1.805, 1.914, 2.071, 2.227
+ ],
+ "sigma": 0.005,
+ "sigma_Cb": 0.005
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.sharpen": { }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 3900,
+ "ccm":
+ [
+ 1.54659, -0.17707, -0.36953,
+ -0.51471, 1.72733, -0.21262,
+ 0.06667, -0.92279, 1.85612
+ ]
+ }
+ ]
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx477.json b/src/ipa/rpi/pisp/data/imx477.json
new file mode 100644
index 00000000..2fe04c21
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx477.json
@@ -0,0 +1,1186 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 12000,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 740,
+ "reference_Y": 15051
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.809
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 204,
+ "slope": 0.0061
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2850.0, 0.4307, 0.3957,
+ 2960.0, 0.4159, 0.4313,
+ 3580.0, 0.3771, 0.5176,
+ 4559.0, 0.3031, 0.6573,
+ 5881.0, 0.2809, 0.6942,
+ 7600.0, 0.2263, 0.7762
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.02634,
+ "transverse_neg": 0.02255
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.16,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.359, 2.354, 2.351, 2.351, 2.343, 2.337, 2.331, 2.325, 2.323, 2.321, 2.317, 2.315, 2.313, 2.313, 2.311, 2.312, 2.312, 2.313, 2.315, 2.315, 2.316, 2.317, 2.319, 2.323, 2.326, 2.329, 2.332, 2.332, 2.335, 2.337, 2.352, 2.363,
+ 2.352, 2.351, 2.349, 2.346, 2.342, 2.334, 2.328, 2.324, 2.321, 2.317, 2.315, 2.314, 2.312, 2.311, 2.311, 2.311, 2.311, 2.311, 2.312, 2.314, 2.315, 2.316, 2.317, 2.319, 2.324, 2.326, 2.328, 2.329, 2.331, 2.337, 2.348, 2.355,
+ 2.346, 2.346, 2.345, 2.344, 2.338, 2.329, 2.325, 2.319, 2.316, 2.314, 2.311, 2.309, 2.308, 2.306, 2.304, 2.304, 2.305, 2.307, 2.308, 2.309, 2.311, 2.311, 2.313, 2.316, 2.319, 2.322, 2.325, 2.326, 2.328, 2.335, 2.343, 2.349,
+ 2.342, 2.342, 2.341, 2.338, 2.332, 2.326, 2.319, 2.316, 2.312, 2.309, 2.308, 2.305, 2.303, 2.302, 2.301, 2.301, 2.302, 2.303, 2.304, 2.305, 2.305, 2.307, 2.311, 2.313, 2.315, 2.319, 2.321, 2.325, 2.328, 2.333, 2.338, 2.348,
+ 2.337, 2.337, 2.337, 2.336, 2.331, 2.322, 2.317, 2.312, 2.309, 2.307, 2.304, 2.302, 2.299, 2.299, 2.298, 2.298, 2.299, 2.299, 2.301, 2.302, 2.302, 2.304, 2.305, 2.309, 2.314, 2.316, 2.321, 2.324, 2.326, 2.329, 2.335, 2.343,
+ 2.335, 2.334, 2.333, 2.333, 2.326, 2.318, 2.313, 2.309, 2.306, 2.302, 2.299, 2.297, 2.297, 2.296, 2.295, 2.295, 2.294, 2.295, 2.296, 2.298, 2.298, 2.301, 2.303, 2.305, 2.311, 2.315, 2.319, 2.323, 2.325, 2.329, 2.333, 2.339,
+ 2.329, 2.331, 2.329, 2.329, 2.325, 2.315, 2.309, 2.306, 2.302, 2.299, 2.297, 2.295, 2.293, 2.292, 2.291, 2.291, 2.291, 2.291, 2.293, 2.294, 2.296, 2.298, 2.301, 2.304, 2.307, 2.313, 2.317, 2.319, 2.323, 2.327, 2.331, 2.339,
+ 2.329, 2.328, 2.328, 2.328, 2.321, 2.313, 2.307, 2.303, 2.299, 2.295, 2.294, 2.292, 2.289, 2.289, 2.288, 2.288, 2.288, 2.289, 2.289, 2.292, 2.294, 2.295, 2.297, 2.301, 2.306, 2.311, 2.315, 2.318, 2.319, 2.323, 2.329, 2.335,
+ 2.326, 2.327, 2.325, 2.325, 2.319, 2.311, 2.305, 2.299, 2.296, 2.293, 2.291, 2.289, 2.288, 2.287, 2.285, 2.285, 2.286, 2.288, 2.288, 2.289, 2.291, 2.294, 2.295, 2.298, 2.304, 2.308, 2.313, 2.315, 2.317, 2.319, 2.327, 2.335,
+ 2.325, 2.325, 2.323, 2.323, 2.317, 2.309, 2.303, 2.298, 2.294, 2.292, 2.289, 2.287, 2.286, 2.285, 2.284, 2.284, 2.284, 2.285, 2.287, 2.289, 2.291, 2.291, 2.294, 2.297, 2.302, 2.305, 2.309, 2.313, 2.315, 2.317, 2.325, 2.334,
+ 2.322, 2.324, 2.322, 2.322, 2.316, 2.306, 2.301, 2.296, 2.292, 2.289, 2.287, 2.286, 2.285, 2.284, 2.283, 2.283, 2.283, 2.284, 2.286, 2.288, 2.289, 2.291, 2.293, 2.296, 2.301, 2.304, 2.308, 2.311, 2.312, 2.315, 2.323, 2.333,
+ 2.321, 2.323, 2.322, 2.322, 2.314, 2.306, 2.299, 2.294, 2.291, 2.288, 2.286, 2.285, 2.284, 2.282, 2.281, 2.282, 2.282, 2.283, 2.284, 2.286, 2.289, 2.291, 2.291, 2.294, 2.297, 2.302, 2.306, 2.308, 2.311, 2.312, 2.322, 2.332,
+ 2.319, 2.321, 2.321, 2.321, 2.314, 2.305, 2.297, 2.293, 2.289, 2.287, 2.285, 2.284, 2.283, 2.281, 2.281, 2.281, 2.282, 2.283, 2.283, 2.285, 2.287, 2.289, 2.291, 2.292, 2.297, 2.301, 2.305, 2.307, 2.309, 2.312, 2.321, 2.333,
+ 2.319, 2.321, 2.319, 2.319, 2.314, 2.303, 2.296, 2.293, 2.289, 2.286, 2.285, 2.283, 2.282, 2.281, 2.281, 2.281, 2.282, 2.282, 2.283, 2.284, 2.286, 2.288, 2.289, 2.291, 2.296, 2.301, 2.305, 2.307, 2.308, 2.312, 2.321, 2.332,
+ 2.319, 2.321, 2.319, 2.319, 2.313, 2.303, 2.296, 2.291, 2.289, 2.286, 2.284, 2.282, 2.281, 2.281, 2.281, 2.281, 2.282, 2.282, 2.283, 2.284, 2.286, 2.287, 2.288, 2.291, 2.295, 2.299, 2.304, 2.306, 2.307, 2.311, 2.321, 2.332,
+ 2.319, 2.321, 2.319, 2.319, 2.313, 2.303, 2.297, 2.292, 2.289, 2.287, 2.285, 2.282, 2.281, 2.281, 2.282, 2.282, 2.282, 2.282, 2.283, 2.284, 2.285, 2.286, 2.288, 2.291, 2.295, 2.299, 2.303, 2.306, 2.307, 2.312, 2.321, 2.331,
+ 2.318, 2.319, 2.319, 2.319, 2.313, 2.303, 2.297, 2.292, 2.289, 2.286, 2.285, 2.282, 2.281, 2.281, 2.281, 2.282, 2.282, 2.282, 2.282, 2.283, 2.285, 2.286, 2.287, 2.291, 2.294, 2.298, 2.303, 2.306, 2.307, 2.311, 2.321, 2.331,
+ 2.319, 2.319, 2.319, 2.319, 2.313, 2.302, 2.297, 2.292, 2.289, 2.287, 2.285, 2.283, 2.282, 2.281, 2.281, 2.282, 2.283, 2.283, 2.283, 2.283, 2.285, 2.286, 2.287, 2.289, 2.294, 2.297, 2.303, 2.305, 2.308, 2.313, 2.321, 2.331,
+ 2.319, 2.319, 2.319, 2.319, 2.313, 2.303, 2.299, 2.293, 2.291, 2.287, 2.285, 2.283, 2.282, 2.281, 2.281, 2.282, 2.283, 2.283, 2.283, 2.283, 2.285, 2.286, 2.288, 2.291, 2.294, 2.298, 2.304, 2.306, 2.308, 2.312, 2.322, 2.331,
+ 2.319, 2.321, 2.321, 2.321, 2.315, 2.305, 2.301, 2.295, 2.292, 2.289, 2.286, 2.285, 2.283, 2.282, 2.282, 2.282, 2.284, 2.283, 2.284, 2.284, 2.285, 2.287, 2.288, 2.291, 2.294, 2.299, 2.304, 2.306, 2.309, 2.313, 2.322, 2.334,
+ 2.321, 2.322, 2.322, 2.322, 2.317, 2.307, 2.301, 2.296, 2.292, 2.291, 2.288, 2.286, 2.285, 2.284, 2.283, 2.284, 2.285, 2.284, 2.285, 2.285, 2.287, 2.288, 2.289, 2.293, 2.297, 2.301, 2.305, 2.308, 2.311, 2.314, 2.323, 2.335,
+ 2.322, 2.324, 2.324, 2.324, 2.319, 2.309, 2.303, 2.297, 2.295, 2.292, 2.291, 2.288, 2.286, 2.286, 2.285, 2.286, 2.286, 2.286, 2.287, 2.288, 2.289, 2.289, 2.291, 2.294, 2.299, 2.302, 2.307, 2.311, 2.312, 2.316, 2.325, 2.335,
+ 2.324, 2.326, 2.325, 2.326, 2.321, 2.311, 2.305, 2.301, 2.297, 2.295, 2.293, 2.291, 2.289, 2.289, 2.288, 2.288, 2.287, 2.288, 2.289, 2.291, 2.292, 2.292, 2.295, 2.299, 2.301, 2.304, 2.309, 2.312, 2.315, 2.319, 2.327, 2.337,
+ 2.329, 2.329, 2.328, 2.328, 2.323, 2.315, 2.308, 2.304, 2.301, 2.298, 2.296, 2.294, 2.291, 2.291, 2.289, 2.291, 2.291, 2.291, 2.292, 2.293, 2.294, 2.295, 2.297, 2.299, 2.303, 2.308, 2.312, 2.315, 2.318, 2.321, 2.329, 2.339,
+ 2.329, 2.331, 2.332, 2.332, 2.326, 2.318, 2.311, 2.306, 2.304, 2.301, 2.299, 2.297, 2.295, 2.293, 2.292, 2.292, 2.292, 2.293, 2.294, 2.294, 2.296, 2.297, 2.299, 2.302, 2.306, 2.311, 2.315, 2.318, 2.319, 2.324, 2.332, 2.342,
+ 2.331, 2.333, 2.334, 2.334, 2.328, 2.321, 2.313, 2.308, 2.305, 2.303, 2.301, 2.299, 2.297, 2.295, 2.295, 2.295, 2.294, 2.296, 2.296, 2.297, 2.298, 2.299, 2.302, 2.305, 2.308, 2.314, 2.317, 2.321, 2.323, 2.327, 2.334, 2.346,
+ 2.331, 2.332, 2.334, 2.334, 2.329, 2.321, 2.314, 2.309, 2.306, 2.304, 2.303, 2.301, 2.299, 2.297, 2.295, 2.295, 2.296, 2.297, 2.298, 2.298, 2.299, 2.301, 2.303, 2.306, 2.309, 2.315, 2.319, 2.321, 2.324, 2.328, 2.337, 2.346,
+ 2.331, 2.332, 2.334, 2.334, 2.329, 2.321, 2.314, 2.311, 2.306, 2.304, 2.303, 2.302, 2.299, 2.297, 2.295, 2.295, 2.296, 2.297, 2.298, 2.298, 2.299, 2.301, 2.303, 2.306, 2.311, 2.314, 2.319, 2.323, 2.325, 2.329, 2.339, 2.348,
+ 2.329, 2.329, 2.329, 2.331, 2.326, 2.319, 2.312, 2.309, 2.304, 2.303, 2.302, 2.301, 2.298, 2.295, 2.294, 2.294, 2.295, 2.295, 2.296, 2.297, 2.299, 2.301, 2.302, 2.304, 2.308, 2.313, 2.319, 2.322, 2.325, 2.329, 2.339, 2.351,
+ 2.329, 2.329, 2.329, 2.329, 2.326, 2.317, 2.311, 2.308, 2.303, 2.302, 2.301, 2.298, 2.296, 2.295, 2.294, 2.294, 2.294, 2.294, 2.296, 2.297, 2.298, 2.299, 2.301, 2.304, 2.307, 2.312, 2.318, 2.322, 2.326, 2.331, 2.341, 2.355,
+ 2.339, 2.332, 2.331, 2.331, 2.327, 2.323, 2.316, 2.309, 2.306, 2.302, 2.301, 2.299, 2.297, 2.296, 2.295, 2.294, 2.294, 2.296, 2.297, 2.297, 2.299, 2.301, 2.303, 2.306, 2.308, 2.317, 2.322, 2.325, 2.329, 2.341, 2.353, 2.361,
+ 2.347, 2.347, 2.345, 2.343, 2.338, 2.332, 2.326, 2.322, 2.321, 2.318, 2.316, 2.315, 2.313, 2.312, 2.311, 2.311, 2.311, 2.311, 2.312, 2.315, 2.317, 2.318, 2.319, 2.323, 2.324, 2.329, 2.334, 2.337, 2.344, 2.347, 2.361, 2.364
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 3.869, 3.852, 3.844, 3.842, 3.836, 3.821, 3.807, 3.796, 3.789, 3.784, 3.778, 3.775, 3.769, 3.768, 3.765, 3.765, 3.767, 3.769, 3.772, 3.774, 3.773, 3.775, 3.779, 3.787, 3.793, 3.801, 3.806, 3.804, 3.813, 3.819, 3.855, 3.879,
+ 3.854, 3.844, 3.837, 3.836, 3.824, 3.811, 3.797, 3.789, 3.784, 3.777, 3.774, 3.769, 3.764, 3.758, 3.757, 3.758, 3.758, 3.761, 3.763, 3.764, 3.765, 3.766, 3.772, 3.778, 3.787, 3.792, 3.794, 3.798, 3.802, 3.815, 3.839, 3.873,
+ 3.838, 3.831, 3.826, 3.823, 3.813, 3.799, 3.787, 3.781, 3.773, 3.768, 3.763, 3.759, 3.753, 3.749, 3.745, 3.745, 3.745, 3.752, 3.754, 3.757, 3.757, 3.759, 3.763, 3.769, 3.773, 3.781, 3.786, 3.792, 3.798, 3.811, 3.831, 3.861,
+ 3.833, 3.822, 3.817, 3.816, 3.804, 3.788, 3.779, 3.772, 3.766, 3.759, 3.755, 3.749, 3.744, 3.741, 3.738, 3.739, 3.739, 3.741, 3.743, 3.747, 3.749, 3.751, 3.756, 3.764, 3.769, 3.776, 3.783, 3.789, 3.798, 3.809, 3.821, 3.855,
+ 3.824, 3.818, 3.808, 3.808, 3.797, 3.781, 3.772, 3.764, 3.757, 3.752, 3.747, 3.743, 3.737, 3.735, 3.733, 3.733, 3.733, 3.735, 3.737, 3.738, 3.741, 3.746, 3.749, 3.755, 3.766, 3.771, 3.781, 3.789, 3.794, 3.806, 3.818, 3.849,
+ 3.815, 3.808, 3.799, 3.801, 3.787, 3.775, 3.767, 3.757, 3.751, 3.745, 3.738, 3.734, 3.732, 3.727, 3.725, 3.723, 3.722, 3.722, 3.726, 3.729, 3.734, 3.738, 3.744, 3.749, 3.759, 3.769, 3.781, 3.788, 3.792, 3.799, 3.811, 3.841,
+ 3.804, 3.799, 3.793, 3.793, 3.783, 3.771, 3.759, 3.751, 3.744, 3.735, 3.732, 3.727, 3.723, 3.721, 3.719, 3.716, 3.716, 3.716, 3.718, 3.722, 3.727, 3.731, 3.737, 3.746, 3.756, 3.767, 3.776, 3.782, 3.788, 3.795, 3.808, 3.831,
+ 3.802, 3.797, 3.787, 3.787, 3.779, 3.762, 3.753, 3.744, 3.734, 3.727, 3.725, 3.721, 3.716, 3.714, 3.709, 3.709, 3.711, 3.711, 3.712, 3.717, 3.722, 3.725, 3.731, 3.739, 3.752, 3.762, 3.772, 3.778, 3.779, 3.789, 3.798, 3.826,
+ 3.791, 3.789, 3.784, 3.784, 3.775, 3.759, 3.746, 3.735, 3.729, 3.724, 3.718, 3.714, 3.712, 3.707, 3.704, 3.704, 3.706, 3.708, 3.709, 3.711, 3.716, 3.722, 3.726, 3.735, 3.746, 3.754, 3.767, 3.774, 3.777, 3.781, 3.794, 3.824,
+ 3.789, 3.784, 3.779, 3.781, 3.771, 3.753, 3.741, 3.732, 3.725, 3.719, 3.715, 3.711, 3.707, 3.704, 3.701, 3.701, 3.702, 3.704, 3.708, 3.709, 3.713, 3.718, 3.724, 3.731, 3.742, 3.749, 3.761, 3.768, 3.772, 3.778, 3.791, 3.822,
+ 3.789, 3.781, 3.777, 3.777, 3.764, 3.749, 3.739, 3.729, 3.722, 3.718, 3.711, 3.708, 3.705, 3.701, 3.699, 3.699, 3.699, 3.701, 3.705, 3.707, 3.711, 3.715, 3.721, 3.727, 3.738, 3.746, 3.757, 3.763, 3.765, 3.773, 3.788, 3.821,
+ 3.785, 3.779, 3.774, 3.774, 3.764, 3.747, 3.736, 3.726, 3.719, 3.711, 3.709, 3.706, 3.701, 3.698, 3.696, 3.695, 3.695, 3.698, 3.702, 3.704, 3.707, 3.712, 3.718, 3.725, 3.734, 3.741, 3.753, 3.756, 3.759, 3.764, 3.784, 3.818,
+ 3.779, 3.776, 3.773, 3.773, 3.759, 3.744, 3.733, 3.724, 3.714, 3.709, 3.706, 3.704, 3.699, 3.696, 3.694, 3.694, 3.694, 3.697, 3.701, 3.703, 3.706, 3.709, 3.714, 3.721, 3.731, 3.737, 3.749, 3.753, 3.758, 3.762, 3.783, 3.819,
+ 3.779, 3.776, 3.769, 3.769, 3.757, 3.741, 3.729, 3.721, 3.712, 3.708, 3.705, 3.701, 3.697, 3.695, 3.694, 3.694, 3.695, 3.696, 3.698, 3.702, 3.705, 3.709, 3.712, 3.717, 3.728, 3.736, 3.749, 3.752, 3.756, 3.761, 3.781, 3.815,
+ 3.779, 3.773, 3.768, 3.768, 3.756, 3.738, 3.731, 3.719, 3.711, 3.707, 3.703, 3.698, 3.695, 3.694, 3.694, 3.695, 3.695, 3.695, 3.696, 3.702, 3.705, 3.708, 3.712, 3.717, 3.728, 3.736, 3.747, 3.751, 3.754, 3.761, 3.781, 3.815,
+ 3.782, 3.773, 3.767, 3.767, 3.755, 3.738, 3.728, 3.721, 3.711, 3.707, 3.701, 3.698, 3.695, 3.693, 3.694, 3.696, 3.695, 3.695, 3.695, 3.701, 3.703, 3.706, 3.711, 3.715, 3.726, 3.735, 3.745, 3.751, 3.754, 3.763, 3.779, 3.815,
+ 3.781, 3.771, 3.767, 3.767, 3.754, 3.739, 3.726, 3.721, 3.712, 3.706, 3.701, 3.698, 3.695, 3.693, 3.693, 3.695, 3.695, 3.695, 3.696, 3.698, 3.703, 3.705, 3.709, 3.715, 3.725, 3.734, 3.745, 3.751, 3.755, 3.762, 3.783, 3.818,
+ 3.781, 3.774, 3.767, 3.767, 3.755, 3.741, 3.729, 3.722, 3.712, 3.708, 3.701, 3.699, 3.695, 3.693, 3.693, 3.694, 3.695, 3.695, 3.697, 3.698, 3.702, 3.704, 3.709, 3.713, 3.725, 3.732, 3.746, 3.751, 3.756, 3.763, 3.783, 3.821,
+ 3.781, 3.774, 3.769, 3.769, 3.756, 3.741, 3.731, 3.724, 3.713, 3.711, 3.707, 3.699, 3.697, 3.694, 3.693, 3.694, 3.695, 3.695, 3.697, 3.698, 3.702, 3.704, 3.709, 3.713, 3.724, 3.734, 3.747, 3.751, 3.756, 3.765, 3.784, 3.821,
+ 3.784, 3.776, 3.773, 3.773, 3.759, 3.742, 3.733, 3.726, 3.719, 3.711, 3.709, 3.703, 3.698, 3.695, 3.694, 3.695, 3.697, 3.696, 3.698, 3.699, 3.703, 3.706, 3.711, 3.714, 3.727, 3.735, 3.746, 3.751, 3.757, 3.766, 3.787, 3.822,
+ 3.786, 3.783, 3.774, 3.774, 3.766, 3.747, 3.737, 3.727, 3.722, 3.716, 3.711, 3.706, 3.702, 3.698, 3.697, 3.698, 3.699, 3.699, 3.701, 3.703, 3.706, 3.711, 3.713, 3.719, 3.731, 3.739, 3.748, 3.753, 3.761, 3.769, 3.789, 3.826,
+ 3.786, 3.784, 3.779, 3.779, 3.769, 3.751, 3.742, 3.732, 3.725, 3.719, 3.715, 3.711, 3.706, 3.704, 3.701, 3.701, 3.702, 3.702, 3.705, 3.707, 3.712, 3.714, 3.717, 3.724, 3.733, 3.743, 3.749, 3.758, 3.764, 3.769, 3.791, 3.826,
+ 3.793, 3.787, 3.782, 3.782, 3.774, 3.756, 3.747, 3.737, 3.729, 3.725, 3.719, 3.715, 3.712, 3.708, 3.707, 3.706, 3.707, 3.708, 3.709, 3.713, 3.714, 3.717, 3.723, 3.729, 3.736, 3.747, 3.757, 3.764, 3.768, 3.774, 3.794, 3.829,
+ 3.794, 3.791, 3.786, 3.786, 3.779, 3.762, 3.751, 3.742, 3.735, 3.729, 3.725, 3.719, 3.716, 3.711, 3.709, 3.709, 3.709, 3.711, 3.716, 3.717, 3.721, 3.723, 3.726, 3.732, 3.741, 3.752, 3.761, 3.767, 3.773, 3.779, 3.801, 3.829,
+ 3.802, 3.798, 3.793, 3.793, 3.779, 3.766, 3.754, 3.746, 3.741, 3.736, 3.731, 3.726, 3.719, 3.717, 3.716, 3.715, 3.716, 3.717, 3.719, 3.721, 3.724, 3.726, 3.731, 3.737, 3.744, 3.756, 3.766, 3.772, 3.776, 3.784, 3.807, 3.839,
+ 3.805, 3.799, 3.795, 3.795, 3.784, 3.767, 3.757, 3.749, 3.744, 3.739, 3.736, 3.731, 3.726, 3.722, 3.719, 3.719, 3.719, 3.721, 3.723, 3.725, 3.727, 3.732, 3.738, 3.742, 3.751, 3.761, 3.771, 3.775, 3.782, 3.789, 3.811, 3.841,
+ 3.804, 3.801, 3.799, 3.799, 3.787, 3.772, 3.761, 3.752, 3.746, 3.742, 3.739, 3.735, 3.729, 3.726, 3.723, 3.724, 3.725, 3.726, 3.727, 3.728, 3.732, 3.736, 3.739, 3.745, 3.754, 3.765, 3.775, 3.779, 3.785, 3.795, 3.816, 3.844,
+ 3.801, 3.799, 3.796, 3.796, 3.787, 3.773, 3.761, 3.753, 3.746, 3.743, 3.739, 3.735, 3.731, 3.726, 3.725, 3.725, 3.725, 3.726, 3.727, 3.729, 3.733, 3.736, 3.741, 3.745, 3.755, 3.766, 3.776, 3.783, 3.786, 3.797, 3.819, 3.851,
+ 3.799, 3.795, 3.788, 3.788, 3.783, 3.772, 3.759, 3.749, 3.744, 3.738, 3.735, 3.733, 3.726, 3.724, 3.722, 3.722, 3.723, 3.724, 3.725, 3.727, 3.729, 3.733, 3.736, 3.742, 3.754, 3.762, 3.772, 3.779, 3.784, 3.796, 3.821, 3.859,
+ 3.799, 3.789, 3.787, 3.788, 3.779, 3.766, 3.755, 3.749, 3.742, 3.736, 3.733, 3.727, 3.723, 3.722, 3.721, 3.719, 3.719, 3.721, 3.725, 3.726, 3.728, 3.732, 3.734, 3.741, 3.747, 3.758, 3.771, 3.778, 3.785, 3.796, 3.825, 3.862,
+ 3.824, 3.799, 3.789, 3.789, 3.788, 3.777, 3.761, 3.751, 3.743, 3.739, 3.736, 3.728, 3.726, 3.725, 3.721, 3.719, 3.721, 3.723, 3.727, 3.728, 3.729, 3.733, 3.737, 3.744, 3.755, 3.769, 3.776, 3.784, 3.793, 3.819, 3.863, 3.877,
+ 3.833, 3.833, 3.833, 3.842, 3.825, 3.815, 3.807, 3.799, 3.792, 3.788, 3.785, 3.782, 3.778, 3.777, 3.773, 3.772, 3.772, 3.774, 3.778, 3.779, 3.779, 3.785, 3.792, 3.798, 3.803, 3.811, 3.822, 3.834, 3.843, 3.846, 3.877, 3.886
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.616, 2.616, 2.618, 2.621, 2.619, 2.618, 2.615, 2.615, 2.613, 2.611, 2.609, 2.609, 2.609, 2.611, 2.611, 2.611, 2.611, 2.609, 2.608, 2.608, 2.611, 2.613, 2.613, 2.614, 2.614, 2.615, 2.615, 2.622, 2.624, 2.621, 2.624, 2.641,
+ 2.616, 2.618, 2.621, 2.623, 2.623, 2.619, 2.618, 2.616, 2.616, 2.613, 2.611, 2.611, 2.611, 2.611, 2.612, 2.612, 2.611, 2.611, 2.611, 2.611, 2.611, 2.612, 2.613, 2.612, 2.613, 2.615, 2.617, 2.621, 2.621, 2.619, 2.621, 2.641,
+ 2.621, 2.624, 2.627, 2.627, 2.625, 2.623, 2.621, 2.619, 2.618, 2.618, 2.618, 2.617, 2.616, 2.616, 2.615, 2.613, 2.612, 2.613, 2.613, 2.614, 2.614, 2.613, 2.614, 2.613, 2.614, 2.617, 2.619, 2.621, 2.621, 2.619, 2.623, 2.643,
+ 2.626, 2.627, 2.628, 2.629, 2.628, 2.625, 2.622, 2.621, 2.621, 2.622, 2.621, 2.619, 2.619, 2.618, 2.617, 2.616, 2.616, 2.616, 2.618, 2.618, 2.617, 2.617, 2.618, 2.619, 2.621, 2.623, 2.624, 2.626, 2.625, 2.624, 2.625, 2.654,
+ 2.627, 2.628, 2.628, 2.628, 2.626, 2.623, 2.622, 2.622, 2.622, 2.622, 2.621, 2.621, 2.619, 2.617, 2.617, 2.616, 2.617, 2.617, 2.618, 2.619, 2.618, 2.618, 2.618, 2.621, 2.622, 2.624, 2.626, 2.627, 2.627, 2.626, 2.628, 2.655,
+ 2.625, 2.626, 2.627, 2.626, 2.625, 2.623, 2.622, 2.621, 2.622, 2.621, 2.621, 2.619, 2.617, 2.616, 2.615, 2.616, 2.616, 2.616, 2.616, 2.616, 2.617, 2.618, 2.619, 2.621, 2.622, 2.624, 2.626, 2.628, 2.628, 2.629, 2.629, 2.655,
+ 2.626, 2.625, 2.626, 2.625, 2.625, 2.623, 2.622, 2.622, 2.622, 2.621, 2.619, 2.617, 2.616, 2.614, 2.613, 2.614, 2.614, 2.614, 2.614, 2.614, 2.616, 2.618, 2.619, 2.621, 2.623, 2.624, 2.627, 2.629, 2.631, 2.629, 2.631, 2.651,
+ 2.625, 2.625, 2.625, 2.624, 2.623, 2.623, 2.622, 2.622, 2.622, 2.621, 2.619, 2.617, 2.614, 2.613, 2.612, 2.611, 2.611, 2.612, 2.612, 2.613, 2.616, 2.618, 2.619, 2.622, 2.624, 2.626, 2.628, 2.631, 2.631, 2.631, 2.631, 2.651,
+ 2.625, 2.625, 2.624, 2.623, 2.622, 2.622, 2.622, 2.622, 2.622, 2.621, 2.617, 2.615, 2.613, 2.612, 2.611, 2.611, 2.611, 2.611, 2.611, 2.613, 2.615, 2.618, 2.619, 2.622, 2.625, 2.627, 2.631, 2.632, 2.631, 2.629, 2.631, 2.651,
+ 2.624, 2.624, 2.622, 2.622, 2.621, 2.621, 2.621, 2.621, 2.621, 2.618, 2.616, 2.614, 2.612, 2.611, 2.609, 2.609, 2.608, 2.609, 2.611, 2.611, 2.615, 2.617, 2.619, 2.621, 2.625, 2.628, 2.631, 2.632, 2.631, 2.627, 2.627, 2.651,
+ 2.622, 2.623, 2.622, 2.622, 2.621, 2.619, 2.619, 2.619, 2.618, 2.616, 2.614, 2.613, 2.611, 2.609, 2.608, 2.606, 2.607, 2.607, 2.609, 2.611, 2.615, 2.617, 2.619, 2.622, 2.626, 2.629, 2.632, 2.632, 2.631, 2.627, 2.627, 2.651,
+ 2.621, 2.622, 2.622, 2.622, 2.621, 2.619, 2.619, 2.618, 2.617, 2.614, 2.613, 2.611, 2.611, 2.607, 2.606, 2.605, 2.604, 2.605, 2.607, 2.609, 2.613, 2.616, 2.619, 2.622, 2.627, 2.631, 2.632, 2.632, 2.631, 2.627, 2.627, 2.651,
+ 2.619, 2.621, 2.623, 2.623, 2.621, 2.621, 2.619, 2.617, 2.616, 2.615, 2.613, 2.609, 2.607, 2.604, 2.602, 2.601, 2.602, 2.603, 2.605, 2.609, 2.612, 2.616, 2.619, 2.624, 2.628, 2.631, 2.632, 2.633, 2.629, 2.627, 2.627, 2.651,
+ 2.619, 2.621, 2.623, 2.623, 2.622, 2.621, 2.618, 2.617, 2.615, 2.614, 2.612, 2.608, 2.603, 2.601, 2.598, 2.597, 2.599, 2.602, 2.605, 2.608, 2.611, 2.615, 2.622, 2.625, 2.629, 2.631, 2.631, 2.633, 2.631, 2.627, 2.627, 2.651,
+ 2.621, 2.622, 2.623, 2.623, 2.622, 2.621, 2.618, 2.617, 2.616, 2.614, 2.611, 2.606, 2.601, 2.598, 2.595, 2.595, 2.597, 2.601, 2.604, 2.608, 2.612, 2.615, 2.623, 2.627, 2.629, 2.631, 2.631, 2.632, 2.631, 2.628, 2.628, 2.651,
+ 2.622, 2.623, 2.624, 2.624, 2.622, 2.621, 2.619, 2.617, 2.615, 2.613, 2.609, 2.606, 2.601, 2.596, 2.594, 2.594, 2.596, 2.599, 2.603, 2.609, 2.613, 2.617, 2.623, 2.627, 2.629, 2.631, 2.632, 2.632, 2.631, 2.629, 2.631, 2.651,
+ 2.623, 2.625, 2.625, 2.624, 2.621, 2.621, 2.619, 2.617, 2.616, 2.613, 2.608, 2.605, 2.601, 2.595, 2.593, 2.593, 2.595, 2.598, 2.604, 2.609, 2.615, 2.619, 2.625, 2.627, 2.629, 2.629, 2.632, 2.633, 2.632, 2.629, 2.631, 2.651,
+ 2.624, 2.626, 2.626, 2.623, 2.621, 2.619, 2.618, 2.617, 2.615, 2.612, 2.608, 2.605, 2.601, 2.597, 2.595, 2.595, 2.596, 2.598, 2.605, 2.609, 2.616, 2.621, 2.626, 2.627, 2.629, 2.631, 2.633, 2.633, 2.633, 2.631, 2.631, 2.655,
+ 2.624, 2.625, 2.625, 2.623, 2.621, 2.619, 2.618, 2.617, 2.614, 2.612, 2.609, 2.606, 2.602, 2.599, 2.598, 2.597, 2.598, 2.602, 2.607, 2.612, 2.619, 2.621, 2.626, 2.628, 2.629, 2.632, 2.633, 2.634, 2.633, 2.631, 2.631, 2.655,
+ 2.624, 2.625, 2.625, 2.623, 2.621, 2.621, 2.618, 2.617, 2.614, 2.612, 2.611, 2.608, 2.604, 2.602, 2.599, 2.599, 2.603, 2.606, 2.611, 2.616, 2.621, 2.624, 2.626, 2.629, 2.631, 2.632, 2.633, 2.634, 2.634, 2.633, 2.633, 2.656,
+ 2.623, 2.624, 2.625, 2.623, 2.622, 2.621, 2.619, 2.617, 2.615, 2.613, 2.611, 2.611, 2.607, 2.604, 2.604, 2.604, 2.606, 2.609, 2.613, 2.619, 2.622, 2.625, 2.628, 2.631, 2.632, 2.633, 2.633, 2.636, 2.636, 2.634, 2.634, 2.658,
+ 2.623, 2.624, 2.625, 2.623, 2.622, 2.619, 2.618, 2.616, 2.614, 2.613, 2.612, 2.611, 2.609, 2.608, 2.607, 2.608, 2.609, 2.613, 2.617, 2.621, 2.623, 2.626, 2.629, 2.631, 2.632, 2.633, 2.634, 2.635, 2.636, 2.636, 2.636, 2.661,
+ 2.623, 2.624, 2.625, 2.625, 2.623, 2.621, 2.619, 2.616, 2.615, 2.614, 2.613, 2.612, 2.612, 2.611, 2.611, 2.611, 2.614, 2.615, 2.619, 2.622, 2.625, 2.627, 2.631, 2.632, 2.633, 2.635, 2.635, 2.637, 2.637, 2.636, 2.637, 2.661,
+ 2.623, 2.624, 2.625, 2.626, 2.624, 2.621, 2.619, 2.617, 2.616, 2.615, 2.615, 2.614, 2.614, 2.614, 2.614, 2.614, 2.616, 2.619, 2.621, 2.623, 2.626, 2.628, 2.631, 2.632, 2.634, 2.635, 2.636, 2.637, 2.638, 2.637, 2.638, 2.661,
+ 2.625, 2.626, 2.627, 2.627, 2.626, 2.623, 2.619, 2.619, 2.618, 2.618, 2.618, 2.617, 2.617, 2.616, 2.616, 2.616, 2.619, 2.622, 2.623, 2.625, 2.628, 2.628, 2.631, 2.632, 2.634, 2.636, 2.638, 2.639, 2.639, 2.638, 2.638, 2.661,
+ 2.625, 2.626, 2.627, 2.628, 2.626, 2.623, 2.621, 2.619, 2.619, 2.619, 2.619, 2.619, 2.619, 2.618, 2.618, 2.619, 2.623, 2.624, 2.625, 2.627, 2.629, 2.629, 2.632, 2.633, 2.635, 2.638, 2.639, 2.639, 2.639, 2.636, 2.636, 2.662,
+ 2.625, 2.627, 2.628, 2.628, 2.626, 2.624, 2.623, 2.622, 2.621, 2.621, 2.621, 2.621, 2.621, 2.621, 2.621, 2.624, 2.624, 2.625, 2.627, 2.628, 2.631, 2.631, 2.632, 2.634, 2.636, 2.639, 2.639, 2.641, 2.639, 2.635, 2.635, 2.663,
+ 2.625, 2.626, 2.628, 2.628, 2.627, 2.625, 2.624, 2.623, 2.623, 2.622, 2.623, 2.624, 2.624, 2.625, 2.625, 2.625, 2.625, 2.626, 2.627, 2.629, 2.631, 2.632, 2.633, 2.635, 2.638, 2.641, 2.642, 2.643, 2.642, 2.636, 2.636, 2.665,
+ 2.624, 2.626, 2.628, 2.628, 2.628, 2.626, 2.624, 2.624, 2.623, 2.623, 2.623, 2.625, 2.627, 2.627, 2.626, 2.626, 2.626, 2.627, 2.628, 2.629, 2.632, 2.633, 2.635, 2.637, 2.639, 2.642, 2.644, 2.644, 2.642, 2.638, 2.638, 2.665,
+ 2.623, 2.625, 2.626, 2.627, 2.626, 2.626, 2.624, 2.623, 2.623, 2.623, 2.623, 2.623, 2.626, 2.627, 2.626, 2.626, 2.626, 2.626, 2.628, 2.628, 2.629, 2.631, 2.634, 2.636, 2.639, 2.642, 2.644, 2.643, 2.641, 2.637, 2.638, 2.659,
+ 2.623, 2.627, 2.627, 2.627, 2.627, 2.628, 2.627, 2.624, 2.624, 2.623, 2.624, 2.624, 2.628, 2.628, 2.627, 2.628, 2.628, 2.628, 2.629, 2.629, 2.631, 2.635, 2.637, 2.639, 2.641, 2.643, 2.646, 2.645, 2.643, 2.641, 2.654, 2.659,
+ 2.642, 2.641, 2.643, 2.645, 2.645, 2.644, 2.644, 2.643, 2.643, 2.642, 2.642, 2.642, 2.643, 2.644, 2.644, 2.644, 2.646, 2.646, 2.647, 2.649, 2.651, 2.652, 2.654, 2.656, 2.658, 2.661, 2.661, 2.661, 2.659, 2.654, 2.659, 2.659
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.391, 1.394, 1.395, 1.396, 1.398, 1.398, 1.398, 1.398, 1.398, 1.399, 1.399, 1.398, 1.398, 1.399, 1.399, 1.399, 1.399, 1.398, 1.398, 1.398, 1.399, 1.399, 1.398, 1.397, 1.397, 1.398, 1.399, 1.401, 1.399, 1.397, 1.399, 1.402,
+ 1.393, 1.395, 1.396, 1.398, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.401, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.398, 1.398, 1.399, 1.401, 1.401, 1.399, 1.398, 1.399, 1.402,
+ 1.398, 1.401, 1.401, 1.401, 1.401, 1.401, 1.402, 1.402, 1.402, 1.402, 1.403, 1.404, 1.404, 1.403, 1.403, 1.403, 1.403, 1.402, 1.401, 1.401, 1.401, 1.401, 1.401, 1.399, 1.399, 1.401, 1.401, 1.401, 1.401, 1.399, 1.401, 1.406,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.405, 1.405, 1.404, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.402, 1.403, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.403, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.402, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.404, 1.405, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.403, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.405, 1.404, 1.404, 1.404, 1.404, 1.405, 1.404, 1.405, 1.405, 1.405, 1.406, 1.406, 1.404, 1.405, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.404, 1.405, 1.406, 1.406, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.406, 1.406, 1.407, 1.407, 1.406, 1.405, 1.405, 1.412,
+ 1.402, 1.402, 1.401, 1.401, 1.402, 1.403, 1.404, 1.405, 1.406, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.404, 1.404, 1.403, 1.404, 1.404, 1.405, 1.405, 1.406, 1.406, 1.407, 1.407, 1.408, 1.408, 1.407, 1.405, 1.405, 1.412,
+ 1.402, 1.402, 1.401, 1.401, 1.402, 1.403, 1.404, 1.405, 1.406, 1.405, 1.405, 1.404, 1.404, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.405, 1.405, 1.406, 1.406, 1.407, 1.408, 1.408, 1.408, 1.407, 1.405, 1.405, 1.413,
+ 1.402, 1.402, 1.402, 1.402, 1.402, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.403, 1.403, 1.402, 1.402, 1.402, 1.403, 1.403, 1.404, 1.405, 1.406, 1.406, 1.407, 1.408, 1.409, 1.409, 1.408, 1.407, 1.405, 1.405, 1.414,
+ 1.402, 1.402, 1.402, 1.402, 1.403, 1.403, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.403, 1.402, 1.402, 1.401, 1.401, 1.402, 1.403, 1.403, 1.404, 1.405, 1.406, 1.407, 1.409, 1.409, 1.409, 1.409, 1.407, 1.405, 1.405, 1.413,
+ 1.402, 1.402, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.401, 1.401, 1.399, 1.399, 1.401, 1.402, 1.403, 1.404, 1.405, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.408, 1.405, 1.405, 1.413,
+ 1.402, 1.403, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.402, 1.401, 1.399, 1.398, 1.398, 1.399, 1.399, 1.401, 1.403, 1.404, 1.405, 1.407, 1.409, 1.409, 1.409, 1.409, 1.409, 1.408, 1.406, 1.406, 1.413,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.401, 1.398, 1.397, 1.397, 1.398, 1.399, 1.401, 1.403, 1.404, 1.405, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.408, 1.406, 1.406, 1.413,
+ 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.399, 1.397, 1.396, 1.396, 1.397, 1.399, 1.401, 1.403, 1.404, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.408, 1.406, 1.406, 1.413,
+ 1.403, 1.404, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.399, 1.397, 1.396, 1.396, 1.397, 1.398, 1.401, 1.403, 1.406, 1.407, 1.409, 1.409, 1.411, 1.409, 1.409, 1.409, 1.408, 1.407, 1.407, 1.413,
+ 1.403, 1.404, 1.404, 1.403, 1.403, 1.404, 1.404, 1.405, 1.404, 1.404, 1.403, 1.402, 1.399, 1.398, 1.397, 1.397, 1.398, 1.399, 1.402, 1.404, 1.406, 1.408, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.409, 1.407, 1.407, 1.414,
+ 1.403, 1.403, 1.404, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.403, 1.403, 1.402, 1.401, 1.399, 1.398, 1.398, 1.398, 1.401, 1.403, 1.404, 1.408, 1.408, 1.409, 1.409, 1.409, 1.411, 1.411, 1.409, 1.408, 1.407, 1.407, 1.415,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.403, 1.403, 1.403, 1.401, 1.401, 1.399, 1.399, 1.401, 1.402, 1.404, 1.407, 1.408, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.409, 1.407, 1.407, 1.415,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.403, 1.403, 1.403, 1.402, 1.401, 1.401, 1.401, 1.402, 1.404, 1.406, 1.407, 1.408, 1.409, 1.411, 1.411, 1.411, 1.409, 1.409, 1.409, 1.409, 1.408, 1.408, 1.415,
+ 1.402, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.405, 1.406, 1.408, 1.408, 1.409, 1.411, 1.411, 1.411, 1.411, 1.409, 1.409, 1.409, 1.408, 1.408, 1.416,
+ 1.403, 1.402, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.403, 1.404, 1.404, 1.404, 1.405, 1.406, 1.407, 1.408, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.411, 1.411, 1.409, 1.408, 1.408, 1.416,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.406, 1.407, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.408, 1.408, 1.417,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.406, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.408, 1.408, 1.417,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.405, 1.406, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.409, 1.408, 1.408, 1.417,
+ 1.403, 1.403, 1.403, 1.403, 1.404, 1.403, 1.403, 1.404, 1.404, 1.405, 1.405, 1.406, 1.406, 1.406, 1.407, 1.408, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.407, 1.407, 1.416,
+ 1.402, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.406, 1.407, 1.407, 1.407, 1.408, 1.409, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.409, 1.407, 1.407, 1.417,
+ 1.402, 1.403, 1.403, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.406, 1.406, 1.407, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.409, 1.411, 1.411, 1.411, 1.412, 1.411, 1.409, 1.407, 1.407, 1.415,
+ 1.402, 1.402, 1.403, 1.403, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.406, 1.407, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.412, 1.411, 1.409, 1.407, 1.407, 1.413,
+ 1.402, 1.402, 1.403, 1.403, 1.405, 1.406, 1.406, 1.406, 1.406, 1.406, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.412, 1.412, 1.413, 1.413, 1.411, 1.408, 1.411, 1.413,
+ 1.406, 1.406, 1.408, 1.408, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.411, 1.411, 1.414, 1.414, 1.414, 1.414, 1.415, 1.415, 1.415, 1.415, 1.416, 1.416, 1.416, 1.417, 1.418, 1.418, 1.417, 1.417, 1.414, 1.411, 1.413, 1.413
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 1.554, 1.522, 1.466, 1.422, 1.385, 1.351, 1.322, 1.294, 1.269, 1.246, 1.228, 1.214, 1.207, 1.202, 1.199, 1.199, 1.199, 1.199, 1.202, 1.207, 1.218, 1.235, 1.255, 1.279, 1.305, 1.333, 1.365, 1.402, 1.447, 1.508, 1.602, 1.638,
+ 1.522, 1.478, 1.431, 1.391, 1.355, 1.323, 1.298, 1.271, 1.247, 1.228, 1.212, 1.199, 1.187, 1.179, 1.173, 1.172, 1.172, 1.174, 1.179, 1.189, 1.201, 1.216, 1.235, 1.256, 1.282, 1.308, 1.335, 1.368, 1.411, 1.461, 1.535, 1.602,
+ 1.479, 1.449, 1.407, 1.367, 1.332, 1.301, 1.271, 1.247, 1.226, 1.208, 1.191, 1.178, 1.166, 1.158, 1.153, 1.151, 1.151, 1.153, 1.159, 1.168, 1.179, 1.194, 1.212, 1.234, 1.256, 1.282, 1.311, 1.343, 1.382, 1.427, 1.489, 1.535,
+ 1.454, 1.423, 1.383, 1.345, 1.309, 1.278, 1.249, 1.226, 1.206, 1.187, 1.171, 1.158, 1.146, 1.138, 1.132, 1.129, 1.129, 1.133, 1.139, 1.147, 1.159, 1.173, 1.191, 1.212, 1.234, 1.261, 1.288, 1.321, 1.357, 1.401, 1.455, 1.489,
+ 1.433, 1.401, 1.362, 1.325, 1.289, 1.258, 1.231, 1.206, 1.187, 1.169, 1.153, 1.138, 1.129, 1.121, 1.115, 1.112, 1.112, 1.114, 1.121, 1.129, 1.141, 1.155, 1.172, 1.191, 1.214, 1.241, 1.269, 1.301, 1.337, 1.377, 1.428, 1.457,
+ 1.415, 1.382, 1.343, 1.306, 1.273, 1.241, 1.213, 1.189, 1.169, 1.153, 1.137, 1.123, 1.112, 1.105, 1.097, 1.095, 1.095, 1.098, 1.103, 1.112, 1.124, 1.139, 1.155, 1.173, 1.197, 1.222, 1.252, 1.282, 1.317, 1.356, 1.405, 1.434,
+ 1.398, 1.363, 1.325, 1.289, 1.256, 1.224, 1.198, 1.175, 1.155, 1.137, 1.123, 1.108, 1.097, 1.089, 1.083, 1.079, 1.079, 1.083, 1.088, 1.097, 1.109, 1.124, 1.139, 1.158, 1.181, 1.206, 1.234, 1.266, 1.299, 1.339, 1.384, 1.415,
+ 1.382, 1.347, 1.309, 1.274, 1.242, 1.211, 1.185, 1.162, 1.142, 1.124, 1.108, 1.095, 1.083, 1.075, 1.069, 1.066, 1.066, 1.068, 1.074, 1.083, 1.096, 1.109, 1.125, 1.145, 1.166, 1.191, 1.219, 1.251, 1.285, 1.324, 1.367, 1.399,
+ 1.369, 1.334, 1.296, 1.261, 1.228, 1.199, 1.173, 1.151, 1.131, 1.112, 1.095, 1.083, 1.071, 1.062, 1.056, 1.053, 1.053, 1.055, 1.061, 1.069, 1.083, 1.096, 1.112, 1.132, 1.153, 1.178, 1.206, 1.237, 1.271, 1.309, 1.353, 1.385,
+ 1.359, 1.321, 1.284, 1.251, 1.217, 1.189, 1.164, 1.141, 1.121, 1.102, 1.086, 1.071, 1.061, 1.049, 1.045, 1.042, 1.042, 1.043, 1.051, 1.061, 1.069, 1.085, 1.101, 1.121, 1.143, 1.167, 1.195, 1.225, 1.259, 1.298, 1.341, 1.375,
+ 1.351, 1.312, 1.275, 1.241, 1.209, 1.181, 1.155, 1.133, 1.112, 1.092, 1.076, 1.061, 1.049, 1.041, 1.034, 1.032, 1.032, 1.035, 1.041, 1.051, 1.061, 1.075, 1.092, 1.112, 1.133, 1.158, 1.185, 1.216, 1.249, 1.288, 1.331, 1.364,
+ 1.344, 1.303, 1.267, 1.233, 1.201, 1.173, 1.147, 1.124, 1.104, 1.085, 1.067, 1.053, 1.041, 1.033, 1.024, 1.022, 1.022, 1.025, 1.034, 1.041, 1.053, 1.066, 1.083, 1.103, 1.126, 1.149, 1.177, 1.207, 1.241, 1.279, 1.321, 1.357,
+ 1.339, 1.297, 1.261, 1.226, 1.194, 1.166, 1.142, 1.119, 1.098, 1.078, 1.061, 1.046, 1.034, 1.024, 1.017, 1.014, 1.014, 1.017, 1.025, 1.034, 1.046, 1.059, 1.077, 1.096, 1.118, 1.143, 1.169, 1.201, 1.235, 1.273, 1.314, 1.352,
+ 1.337, 1.293, 1.256, 1.223, 1.191, 1.163, 1.136, 1.114, 1.093, 1.074, 1.056, 1.041, 1.027, 1.017, 1.012, 1.006, 1.006, 1.013, 1.017, 1.028, 1.041, 1.055, 1.072, 1.092, 1.114, 1.138, 1.165, 1.195, 1.229, 1.268, 1.309, 1.348,
+ 1.337, 1.291, 1.253, 1.219, 1.187, 1.159, 1.133, 1.109, 1.089, 1.071, 1.053, 1.037, 1.023, 1.012, 1.006, 1.002, 1.003, 1.006, 1.013, 1.023, 1.038, 1.052, 1.069, 1.089, 1.111, 1.135, 1.161, 1.192, 1.226, 1.264, 1.306, 1.348,
+ 1.337, 1.291, 1.253, 1.218, 1.186, 1.157, 1.132, 1.109, 1.088, 1.068, 1.049, 1.035, 1.021, 1.009, 1.001, 1.001, 1.001, 1.003, 1.011, 1.021, 1.035, 1.051, 1.069, 1.087, 1.109, 1.133, 1.161, 1.189, 1.224, 1.262, 1.304, 1.347,
+ 1.341, 1.292, 1.253, 1.218, 1.186, 1.157, 1.132, 1.109, 1.088, 1.068, 1.049, 1.034, 1.021, 1.009, 1.001, 1.001, 1.001, 1.003, 1.011, 1.021, 1.035, 1.051, 1.069, 1.087, 1.109, 1.133, 1.161, 1.189, 1.224, 1.262, 1.304, 1.347,
+ 1.348, 1.298, 1.255, 1.219, 1.188, 1.159, 1.134, 1.111, 1.088, 1.069, 1.051, 1.035, 1.021, 1.009, 1.003, 1.001, 1.002, 1.004, 1.011, 1.022, 1.036, 1.053, 1.071, 1.089, 1.111, 1.135, 1.162, 1.191, 1.226, 1.264, 1.306, 1.347,
+ 1.354, 1.306, 1.258, 1.222, 1.191, 1.162, 1.135, 1.113, 1.092, 1.073, 1.054, 1.038, 1.024, 1.014, 1.008, 1.003, 1.004, 1.008, 1.014, 1.026, 1.039, 1.056, 1.073, 1.093, 1.115, 1.139, 1.165, 1.195, 1.229, 1.267, 1.309, 1.349,
+ 1.358, 1.312, 1.263, 1.227, 1.195, 1.167, 1.141, 1.117, 1.097, 1.078, 1.061, 1.043, 1.029, 1.021, 1.014, 1.008, 1.008, 1.014, 1.021, 1.032, 1.045, 1.061, 1.078, 1.097, 1.119, 1.144, 1.169, 1.201, 1.234, 1.272, 1.315, 1.353,
+ 1.364, 1.319, 1.269, 1.234, 1.201, 1.174, 1.148, 1.124, 1.103, 1.084, 1.067, 1.052, 1.038, 1.029, 1.021, 1.016, 1.016, 1.021, 1.029, 1.038, 1.051, 1.067, 1.084, 1.103, 1.126, 1.151, 1.176, 1.207, 1.241, 1.279, 1.321, 1.358,
+ 1.371, 1.326, 1.277, 1.242, 1.209, 1.181, 1.155, 1.132, 1.111, 1.092, 1.075, 1.061, 1.049, 1.038, 1.029, 1.027, 1.027, 1.029, 1.038, 1.047, 1.061, 1.075, 1.092, 1.111, 1.133, 1.157, 1.185, 1.213, 1.247, 1.286, 1.329, 1.365,
+ 1.379, 1.334, 1.287, 1.251, 1.219, 1.191, 1.164, 1.141, 1.119, 1.101, 1.085, 1.071, 1.061, 1.049, 1.041, 1.038, 1.038, 1.041, 1.047, 1.059, 1.071, 1.084, 1.101, 1.119, 1.141, 1.165, 1.193, 1.223, 1.257, 1.295, 1.338, 1.374,
+ 1.389, 1.343, 1.298, 1.262, 1.231, 1.201, 1.174, 1.151, 1.131, 1.111, 1.095, 1.083, 1.071, 1.061, 1.054, 1.051, 1.051, 1.054, 1.059, 1.071, 1.081, 1.094, 1.111, 1.129, 1.152, 1.176, 1.203, 1.235, 1.269, 1.307, 1.351, 1.384,
+ 1.401, 1.351, 1.311, 1.274, 1.242, 1.214, 1.187, 1.164, 1.142, 1.124, 1.108, 1.095, 1.083, 1.074, 1.068, 1.066, 1.066, 1.068, 1.073, 1.081, 1.094, 1.108, 1.123, 1.141, 1.164, 1.188, 1.215, 1.247, 1.281, 1.321, 1.364, 1.396,
+ 1.412, 1.366, 1.327, 1.289, 1.257, 1.227, 1.201, 1.176, 1.156, 1.137, 1.122, 1.108, 1.096, 1.088, 1.083, 1.081, 1.081, 1.082, 1.087, 1.095, 1.108, 1.122, 1.136, 1.154, 1.177, 1.201, 1.229, 1.261, 1.296, 1.337, 1.382, 1.409,
+ 1.421, 1.383, 1.343, 1.306, 1.273, 1.243, 1.216, 1.192, 1.169, 1.152, 1.137, 1.122, 1.111, 1.103, 1.098, 1.095, 1.095, 1.097, 1.102, 1.111, 1.123, 1.136, 1.152, 1.169, 1.191, 1.217, 1.246, 1.278, 1.314, 1.354, 1.399, 1.429,
+ 1.434, 1.402, 1.362, 1.324, 1.291, 1.261, 1.232, 1.208, 1.187, 1.168, 1.152, 1.138, 1.127, 1.119, 1.114, 1.112, 1.112, 1.115, 1.121, 1.128, 1.139, 1.152, 1.169, 1.186, 1.209, 1.234, 1.262, 1.295, 1.332, 1.372, 1.419, 1.451,
+ 1.453, 1.422, 1.382, 1.344, 1.309, 1.278, 1.249, 1.226, 1.204, 1.187, 1.168, 1.155, 1.144, 1.135, 1.131, 1.131, 1.131, 1.133, 1.138, 1.146, 1.157, 1.171, 1.186, 1.206, 1.227, 1.252, 1.281, 1.314, 1.351, 1.393, 1.442, 1.473,
+ 1.475, 1.446, 1.404, 1.366, 1.329, 1.298, 1.269, 1.245, 1.224, 1.204, 1.188, 1.174, 1.163, 1.154, 1.149, 1.148, 1.148, 1.152, 1.156, 1.164, 1.176, 1.189, 1.206, 1.226, 1.247, 1.274, 1.303, 1.336, 1.374, 1.417, 1.471, 1.505,
+ 1.503, 1.472, 1.428, 1.389, 1.353, 1.321, 1.291, 1.266, 1.245, 1.224, 1.207, 1.192, 1.183, 1.174, 1.169, 1.167, 1.168, 1.169, 1.175, 1.183, 1.195, 1.209, 1.226, 1.247, 1.267, 1.294, 1.325, 1.359, 1.397, 1.445, 1.505, 1.548,
+ 1.534, 1.503, 1.455, 1.413, 1.378, 1.344, 1.315, 1.289, 1.265, 1.243, 1.224, 1.207, 1.196, 1.192, 1.189, 1.189, 1.189, 1.189, 1.192, 1.198, 1.209, 1.226, 1.244, 1.266, 1.291, 1.318, 1.349, 1.383, 1.425, 1.475, 1.548, 1.591
+ ],
+ "sigma": 0.00095,
+ "sigma_Cb": 0.00098
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2850,
+ "ccm":
+ [
+ 1.97469, -0.71439, -0.26031,
+ -0.43521, 2.09769, -0.66248,
+ -0.04826, -0.84642, 1.89468
+ ]
+ },
+ {
+ "ct": 2960,
+ "ccm":
+ [
+ 2.12952, -0.91185, -0.21768,
+ -0.38018, 1.90789, -0.52771,
+ 0.03988, -1.10079, 2.06092
+ ]
+ },
+ {
+ "ct": 3580,
+ "ccm":
+ [
+ 2.03422, -0.80048, -0.23374,
+ -0.39089, 1.97221, -0.58132,
+ -0.08969, -0.61439, 1.70408
+ ]
+ },
+ {
+ "ct": 4559,
+ "ccm":
+ [
+ 2.15423, -0.98143, -0.17279,
+ -0.38131, 2.14763, -0.76632,
+ -0.10069, -0.54383, 1.64452
+ ]
+ },
+ {
+ "ct": 5881,
+ "ccm":
+ [
+ 2.18464, -0.95493, -0.22971,
+ -0.36826, 2.00298, -0.63471,
+ -0.15219, -0.38055, 1.53274
+ ]
+ },
+ {
+ "ct": 7600,
+ "ccm":
+ [
+ 2.30687, -0.97295, -0.33392,
+ -0.30872, 2.32779, -1.01908,
+ -0.17761, -0.55891, 1.73651
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx477_16mm.json b/src/ipa/rpi/pisp/data/imx477_16mm.json
new file mode 100644
index 00000000..f4e65c92
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx477_16mm.json
@@ -0,0 +1,1240 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 12000,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 740,
+ "reference_Y": 15051
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.809
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 204,
+ "slope": 0.0061
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2850.0, 0.4307, 0.3957,
+ 2960.0, 0.4159, 0.4313,
+ 3580.0, 0.3771, 0.5176,
+ 4559.0, 0.3031, 0.6573,
+ 5881.0, 0.2809, 0.6942,
+ 7600.0, 0.2263, 0.7762
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.02634,
+ "transverse_neg": 0.02255
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.359, 2.354, 2.351, 2.351, 2.343, 2.337, 2.331, 2.325, 2.323, 2.321, 2.317, 2.315, 2.313, 2.313, 2.311, 2.312, 2.312, 2.313, 2.315, 2.315, 2.316, 2.317, 2.319, 2.323, 2.326, 2.329, 2.332, 2.332, 2.335, 2.337, 2.352, 2.363,
+ 2.352, 2.351, 2.349, 2.346, 2.342, 2.334, 2.328, 2.324, 2.321, 2.317, 2.315, 2.314, 2.312, 2.311, 2.311, 2.311, 2.311, 2.311, 2.312, 2.314, 2.315, 2.316, 2.317, 2.319, 2.324, 2.326, 2.328, 2.329, 2.331, 2.337, 2.348, 2.355,
+ 2.346, 2.346, 2.345, 2.344, 2.338, 2.329, 2.325, 2.319, 2.316, 2.314, 2.311, 2.309, 2.308, 2.306, 2.304, 2.304, 2.305, 2.307, 2.308, 2.309, 2.311, 2.311, 2.313, 2.316, 2.319, 2.322, 2.325, 2.326, 2.328, 2.335, 2.343, 2.349,
+ 2.342, 2.342, 2.341, 2.338, 2.332, 2.326, 2.319, 2.316, 2.312, 2.309, 2.308, 2.305, 2.303, 2.302, 2.301, 2.301, 2.302, 2.303, 2.304, 2.305, 2.305, 2.307, 2.311, 2.313, 2.315, 2.319, 2.321, 2.325, 2.328, 2.333, 2.338, 2.348,
+ 2.337, 2.337, 2.337, 2.336, 2.331, 2.322, 2.317, 2.312, 2.309, 2.307, 2.304, 2.302, 2.299, 2.299, 2.298, 2.298, 2.299, 2.299, 2.301, 2.302, 2.302, 2.304, 2.305, 2.309, 2.314, 2.316, 2.321, 2.324, 2.326, 2.329, 2.335, 2.343,
+ 2.335, 2.334, 2.333, 2.333, 2.326, 2.318, 2.313, 2.309, 2.306, 2.302, 2.299, 2.297, 2.297, 2.296, 2.295, 2.295, 2.294, 2.295, 2.296, 2.298, 2.298, 2.301, 2.303, 2.305, 2.311, 2.315, 2.319, 2.323, 2.325, 2.329, 2.333, 2.339,
+ 2.329, 2.331, 2.329, 2.329, 2.325, 2.315, 2.309, 2.306, 2.302, 2.299, 2.297, 2.295, 2.293, 2.292, 2.291, 2.291, 2.291, 2.291, 2.293, 2.294, 2.296, 2.298, 2.301, 2.304, 2.307, 2.313, 2.317, 2.319, 2.323, 2.327, 2.331, 2.339,
+ 2.329, 2.328, 2.328, 2.328, 2.321, 2.313, 2.307, 2.303, 2.299, 2.295, 2.294, 2.292, 2.289, 2.289, 2.288, 2.288, 2.288, 2.289, 2.289, 2.292, 2.294, 2.295, 2.297, 2.301, 2.306, 2.311, 2.315, 2.318, 2.319, 2.323, 2.329, 2.335,
+ 2.326, 2.327, 2.325, 2.325, 2.319, 2.311, 2.305, 2.299, 2.296, 2.293, 2.291, 2.289, 2.288, 2.287, 2.285, 2.285, 2.286, 2.288, 2.288, 2.289, 2.291, 2.294, 2.295, 2.298, 2.304, 2.308, 2.313, 2.315, 2.317, 2.319, 2.327, 2.335,
+ 2.325, 2.325, 2.323, 2.323, 2.317, 2.309, 2.303, 2.298, 2.294, 2.292, 2.289, 2.287, 2.286, 2.285, 2.284, 2.284, 2.284, 2.285, 2.287, 2.289, 2.291, 2.291, 2.294, 2.297, 2.302, 2.305, 2.309, 2.313, 2.315, 2.317, 2.325, 2.334,
+ 2.322, 2.324, 2.322, 2.322, 2.316, 2.306, 2.301, 2.296, 2.292, 2.289, 2.287, 2.286, 2.285, 2.284, 2.283, 2.283, 2.283, 2.284, 2.286, 2.288, 2.289, 2.291, 2.293, 2.296, 2.301, 2.304, 2.308, 2.311, 2.312, 2.315, 2.323, 2.333,
+ 2.321, 2.323, 2.322, 2.322, 2.314, 2.306, 2.299, 2.294, 2.291, 2.288, 2.286, 2.285, 2.284, 2.282, 2.281, 2.282, 2.282, 2.283, 2.284, 2.286, 2.289, 2.291, 2.291, 2.294, 2.297, 2.302, 2.306, 2.308, 2.311, 2.312, 2.322, 2.332,
+ 2.319, 2.321, 2.321, 2.321, 2.314, 2.305, 2.297, 2.293, 2.289, 2.287, 2.285, 2.284, 2.283, 2.281, 2.281, 2.281, 2.282, 2.283, 2.283, 2.285, 2.287, 2.289, 2.291, 2.292, 2.297, 2.301, 2.305, 2.307, 2.309, 2.312, 2.321, 2.333,
+ 2.319, 2.321, 2.319, 2.319, 2.314, 2.303, 2.296, 2.293, 2.289, 2.286, 2.285, 2.283, 2.282, 2.281, 2.281, 2.281, 2.282, 2.282, 2.283, 2.284, 2.286, 2.288, 2.289, 2.291, 2.296, 2.301, 2.305, 2.307, 2.308, 2.312, 2.321, 2.332,
+ 2.319, 2.321, 2.319, 2.319, 2.313, 2.303, 2.296, 2.291, 2.289, 2.286, 2.284, 2.282, 2.281, 2.281, 2.281, 2.281, 2.282, 2.282, 2.283, 2.284, 2.286, 2.287, 2.288, 2.291, 2.295, 2.299, 2.304, 2.306, 2.307, 2.311, 2.321, 2.332,
+ 2.319, 2.321, 2.319, 2.319, 2.313, 2.303, 2.297, 2.292, 2.289, 2.287, 2.285, 2.282, 2.281, 2.281, 2.282, 2.282, 2.282, 2.282, 2.283, 2.284, 2.285, 2.286, 2.288, 2.291, 2.295, 2.299, 2.303, 2.306, 2.307, 2.312, 2.321, 2.331,
+ 2.318, 2.319, 2.319, 2.319, 2.313, 2.303, 2.297, 2.292, 2.289, 2.286, 2.285, 2.282, 2.281, 2.281, 2.281, 2.282, 2.282, 2.282, 2.282, 2.283, 2.285, 2.286, 2.287, 2.291, 2.294, 2.298, 2.303, 2.306, 2.307, 2.311, 2.321, 2.331,
+ 2.319, 2.319, 2.319, 2.319, 2.313, 2.302, 2.297, 2.292, 2.289, 2.287, 2.285, 2.283, 2.282, 2.281, 2.281, 2.282, 2.283, 2.283, 2.283, 2.283, 2.285, 2.286, 2.287, 2.289, 2.294, 2.297, 2.303, 2.305, 2.308, 2.313, 2.321, 2.331,
+ 2.319, 2.319, 2.319, 2.319, 2.313, 2.303, 2.299, 2.293, 2.291, 2.287, 2.285, 2.283, 2.282, 2.281, 2.281, 2.282, 2.283, 2.283, 2.283, 2.283, 2.285, 2.286, 2.288, 2.291, 2.294, 2.298, 2.304, 2.306, 2.308, 2.312, 2.322, 2.331,
+ 2.319, 2.321, 2.321, 2.321, 2.315, 2.305, 2.301, 2.295, 2.292, 2.289, 2.286, 2.285, 2.283, 2.282, 2.282, 2.282, 2.284, 2.283, 2.284, 2.284, 2.285, 2.287, 2.288, 2.291, 2.294, 2.299, 2.304, 2.306, 2.309, 2.313, 2.322, 2.334,
+ 2.321, 2.322, 2.322, 2.322, 2.317, 2.307, 2.301, 2.296, 2.292, 2.291, 2.288, 2.286, 2.285, 2.284, 2.283, 2.284, 2.285, 2.284, 2.285, 2.285, 2.287, 2.288, 2.289, 2.293, 2.297, 2.301, 2.305, 2.308, 2.311, 2.314, 2.323, 2.335,
+ 2.322, 2.324, 2.324, 2.324, 2.319, 2.309, 2.303, 2.297, 2.295, 2.292, 2.291, 2.288, 2.286, 2.286, 2.285, 2.286, 2.286, 2.286, 2.287, 2.288, 2.289, 2.289, 2.291, 2.294, 2.299, 2.302, 2.307, 2.311, 2.312, 2.316, 2.325, 2.335,
+ 2.324, 2.326, 2.325, 2.326, 2.321, 2.311, 2.305, 2.301, 2.297, 2.295, 2.293, 2.291, 2.289, 2.289, 2.288, 2.288, 2.287, 2.288, 2.289, 2.291, 2.292, 2.292, 2.295, 2.299, 2.301, 2.304, 2.309, 2.312, 2.315, 2.319, 2.327, 2.337,
+ 2.329, 2.329, 2.328, 2.328, 2.323, 2.315, 2.308, 2.304, 2.301, 2.298, 2.296, 2.294, 2.291, 2.291, 2.289, 2.291, 2.291, 2.291, 2.292, 2.293, 2.294, 2.295, 2.297, 2.299, 2.303, 2.308, 2.312, 2.315, 2.318, 2.321, 2.329, 2.339,
+ 2.329, 2.331, 2.332, 2.332, 2.326, 2.318, 2.311, 2.306, 2.304, 2.301, 2.299, 2.297, 2.295, 2.293, 2.292, 2.292, 2.292, 2.293, 2.294, 2.294, 2.296, 2.297, 2.299, 2.302, 2.306, 2.311, 2.315, 2.318, 2.319, 2.324, 2.332, 2.342,
+ 2.331, 2.333, 2.334, 2.334, 2.328, 2.321, 2.313, 2.308, 2.305, 2.303, 2.301, 2.299, 2.297, 2.295, 2.295, 2.295, 2.294, 2.296, 2.296, 2.297, 2.298, 2.299, 2.302, 2.305, 2.308, 2.314, 2.317, 2.321, 2.323, 2.327, 2.334, 2.346,
+ 2.331, 2.332, 2.334, 2.334, 2.329, 2.321, 2.314, 2.309, 2.306, 2.304, 2.303, 2.301, 2.299, 2.297, 2.295, 2.295, 2.296, 2.297, 2.298, 2.298, 2.299, 2.301, 2.303, 2.306, 2.309, 2.315, 2.319, 2.321, 2.324, 2.328, 2.337, 2.346,
+ 2.331, 2.332, 2.334, 2.334, 2.329, 2.321, 2.314, 2.311, 2.306, 2.304, 2.303, 2.302, 2.299, 2.297, 2.295, 2.295, 2.296, 2.297, 2.298, 2.298, 2.299, 2.301, 2.303, 2.306, 2.311, 2.314, 2.319, 2.323, 2.325, 2.329, 2.339, 2.348,
+ 2.329, 2.329, 2.329, 2.331, 2.326, 2.319, 2.312, 2.309, 2.304, 2.303, 2.302, 2.301, 2.298, 2.295, 2.294, 2.294, 2.295, 2.295, 2.296, 2.297, 2.299, 2.301, 2.302, 2.304, 2.308, 2.313, 2.319, 2.322, 2.325, 2.329, 2.339, 2.351,
+ 2.329, 2.329, 2.329, 2.329, 2.326, 2.317, 2.311, 2.308, 2.303, 2.302, 2.301, 2.298, 2.296, 2.295, 2.294, 2.294, 2.294, 2.294, 2.296, 2.297, 2.298, 2.299, 2.301, 2.304, 2.307, 2.312, 2.318, 2.322, 2.326, 2.331, 2.341, 2.355,
+ 2.339, 2.332, 2.331, 2.331, 2.327, 2.323, 2.316, 2.309, 2.306, 2.302, 2.301, 2.299, 2.297, 2.296, 2.295, 2.294, 2.294, 2.296, 2.297, 2.297, 2.299, 2.301, 2.303, 2.306, 2.308, 2.317, 2.322, 2.325, 2.329, 2.341, 2.353, 2.361,
+ 2.347, 2.347, 2.345, 2.343, 2.338, 2.332, 2.326, 2.322, 2.321, 2.318, 2.316, 2.315, 2.313, 2.312, 2.311, 2.311, 2.311, 2.311, 2.312, 2.315, 2.317, 2.318, 2.319, 2.323, 2.324, 2.329, 2.334, 2.337, 2.344, 2.347, 2.361, 2.364
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 3.869, 3.852, 3.844, 3.842, 3.836, 3.821, 3.807, 3.796, 3.789, 3.784, 3.778, 3.775, 3.769, 3.768, 3.765, 3.765, 3.767, 3.769, 3.772, 3.774, 3.773, 3.775, 3.779, 3.787, 3.793, 3.801, 3.806, 3.804, 3.813, 3.819, 3.855, 3.879,
+ 3.854, 3.844, 3.837, 3.836, 3.824, 3.811, 3.797, 3.789, 3.784, 3.777, 3.774, 3.769, 3.764, 3.758, 3.757, 3.758, 3.758, 3.761, 3.763, 3.764, 3.765, 3.766, 3.772, 3.778, 3.787, 3.792, 3.794, 3.798, 3.802, 3.815, 3.839, 3.873,
+ 3.838, 3.831, 3.826, 3.823, 3.813, 3.799, 3.787, 3.781, 3.773, 3.768, 3.763, 3.759, 3.753, 3.749, 3.745, 3.745, 3.745, 3.752, 3.754, 3.757, 3.757, 3.759, 3.763, 3.769, 3.773, 3.781, 3.786, 3.792, 3.798, 3.811, 3.831, 3.861,
+ 3.833, 3.822, 3.817, 3.816, 3.804, 3.788, 3.779, 3.772, 3.766, 3.759, 3.755, 3.749, 3.744, 3.741, 3.738, 3.739, 3.739, 3.741, 3.743, 3.747, 3.749, 3.751, 3.756, 3.764, 3.769, 3.776, 3.783, 3.789, 3.798, 3.809, 3.821, 3.855,
+ 3.824, 3.818, 3.808, 3.808, 3.797, 3.781, 3.772, 3.764, 3.757, 3.752, 3.747, 3.743, 3.737, 3.735, 3.733, 3.733, 3.733, 3.735, 3.737, 3.738, 3.741, 3.746, 3.749, 3.755, 3.766, 3.771, 3.781, 3.789, 3.794, 3.806, 3.818, 3.849,
+ 3.815, 3.808, 3.799, 3.801, 3.787, 3.775, 3.767, 3.757, 3.751, 3.745, 3.738, 3.734, 3.732, 3.727, 3.725, 3.723, 3.722, 3.722, 3.726, 3.729, 3.734, 3.738, 3.744, 3.749, 3.759, 3.769, 3.781, 3.788, 3.792, 3.799, 3.811, 3.841,
+ 3.804, 3.799, 3.793, 3.793, 3.783, 3.771, 3.759, 3.751, 3.744, 3.735, 3.732, 3.727, 3.723, 3.721, 3.719, 3.716, 3.716, 3.716, 3.718, 3.722, 3.727, 3.731, 3.737, 3.746, 3.756, 3.767, 3.776, 3.782, 3.788, 3.795, 3.808, 3.831,
+ 3.802, 3.797, 3.787, 3.787, 3.779, 3.762, 3.753, 3.744, 3.734, 3.727, 3.725, 3.721, 3.716, 3.714, 3.709, 3.709, 3.711, 3.711, 3.712, 3.717, 3.722, 3.725, 3.731, 3.739, 3.752, 3.762, 3.772, 3.778, 3.779, 3.789, 3.798, 3.826,
+ 3.791, 3.789, 3.784, 3.784, 3.775, 3.759, 3.746, 3.735, 3.729, 3.724, 3.718, 3.714, 3.712, 3.707, 3.704, 3.704, 3.706, 3.708, 3.709, 3.711, 3.716, 3.722, 3.726, 3.735, 3.746, 3.754, 3.767, 3.774, 3.777, 3.781, 3.794, 3.824,
+ 3.789, 3.784, 3.779, 3.781, 3.771, 3.753, 3.741, 3.732, 3.725, 3.719, 3.715, 3.711, 3.707, 3.704, 3.701, 3.701, 3.702, 3.704, 3.708, 3.709, 3.713, 3.718, 3.724, 3.731, 3.742, 3.749, 3.761, 3.768, 3.772, 3.778, 3.791, 3.822,
+ 3.789, 3.781, 3.777, 3.777, 3.764, 3.749, 3.739, 3.729, 3.722, 3.718, 3.711, 3.708, 3.705, 3.701, 3.699, 3.699, 3.699, 3.701, 3.705, 3.707, 3.711, 3.715, 3.721, 3.727, 3.738, 3.746, 3.757, 3.763, 3.765, 3.773, 3.788, 3.821,
+ 3.785, 3.779, 3.774, 3.774, 3.764, 3.747, 3.736, 3.726, 3.719, 3.711, 3.709, 3.706, 3.701, 3.698, 3.696, 3.695, 3.695, 3.698, 3.702, 3.704, 3.707, 3.712, 3.718, 3.725, 3.734, 3.741, 3.753, 3.756, 3.759, 3.764, 3.784, 3.818,
+ 3.779, 3.776, 3.773, 3.773, 3.759, 3.744, 3.733, 3.724, 3.714, 3.709, 3.706, 3.704, 3.699, 3.696, 3.694, 3.694, 3.694, 3.697, 3.701, 3.703, 3.706, 3.709, 3.714, 3.721, 3.731, 3.737, 3.749, 3.753, 3.758, 3.762, 3.783, 3.819,
+ 3.779, 3.776, 3.769, 3.769, 3.757, 3.741, 3.729, 3.721, 3.712, 3.708, 3.705, 3.701, 3.697, 3.695, 3.694, 3.694, 3.695, 3.696, 3.698, 3.702, 3.705, 3.709, 3.712, 3.717, 3.728, 3.736, 3.749, 3.752, 3.756, 3.761, 3.781, 3.815,
+ 3.779, 3.773, 3.768, 3.768, 3.756, 3.738, 3.731, 3.719, 3.711, 3.707, 3.703, 3.698, 3.695, 3.694, 3.694, 3.695, 3.695, 3.695, 3.696, 3.702, 3.705, 3.708, 3.712, 3.717, 3.728, 3.736, 3.747, 3.751, 3.754, 3.761, 3.781, 3.815,
+ 3.782, 3.773, 3.767, 3.767, 3.755, 3.738, 3.728, 3.721, 3.711, 3.707, 3.701, 3.698, 3.695, 3.693, 3.694, 3.696, 3.695, 3.695, 3.695, 3.701, 3.703, 3.706, 3.711, 3.715, 3.726, 3.735, 3.745, 3.751, 3.754, 3.763, 3.779, 3.815,
+ 3.781, 3.771, 3.767, 3.767, 3.754, 3.739, 3.726, 3.721, 3.712, 3.706, 3.701, 3.698, 3.695, 3.693, 3.693, 3.695, 3.695, 3.695, 3.696, 3.698, 3.703, 3.705, 3.709, 3.715, 3.725, 3.734, 3.745, 3.751, 3.755, 3.762, 3.783, 3.818,
+ 3.781, 3.774, 3.767, 3.767, 3.755, 3.741, 3.729, 3.722, 3.712, 3.708, 3.701, 3.699, 3.695, 3.693, 3.693, 3.694, 3.695, 3.695, 3.697, 3.698, 3.702, 3.704, 3.709, 3.713, 3.725, 3.732, 3.746, 3.751, 3.756, 3.763, 3.783, 3.821,
+ 3.781, 3.774, 3.769, 3.769, 3.756, 3.741, 3.731, 3.724, 3.713, 3.711, 3.707, 3.699, 3.697, 3.694, 3.693, 3.694, 3.695, 3.695, 3.697, 3.698, 3.702, 3.704, 3.709, 3.713, 3.724, 3.734, 3.747, 3.751, 3.756, 3.765, 3.784, 3.821,
+ 3.784, 3.776, 3.773, 3.773, 3.759, 3.742, 3.733, 3.726, 3.719, 3.711, 3.709, 3.703, 3.698, 3.695, 3.694, 3.695, 3.697, 3.696, 3.698, 3.699, 3.703, 3.706, 3.711, 3.714, 3.727, 3.735, 3.746, 3.751, 3.757, 3.766, 3.787, 3.822,
+ 3.786, 3.783, 3.774, 3.774, 3.766, 3.747, 3.737, 3.727, 3.722, 3.716, 3.711, 3.706, 3.702, 3.698, 3.697, 3.698, 3.699, 3.699, 3.701, 3.703, 3.706, 3.711, 3.713, 3.719, 3.731, 3.739, 3.748, 3.753, 3.761, 3.769, 3.789, 3.826,
+ 3.786, 3.784, 3.779, 3.779, 3.769, 3.751, 3.742, 3.732, 3.725, 3.719, 3.715, 3.711, 3.706, 3.704, 3.701, 3.701, 3.702, 3.702, 3.705, 3.707, 3.712, 3.714, 3.717, 3.724, 3.733, 3.743, 3.749, 3.758, 3.764, 3.769, 3.791, 3.826,
+ 3.793, 3.787, 3.782, 3.782, 3.774, 3.756, 3.747, 3.737, 3.729, 3.725, 3.719, 3.715, 3.712, 3.708, 3.707, 3.706, 3.707, 3.708, 3.709, 3.713, 3.714, 3.717, 3.723, 3.729, 3.736, 3.747, 3.757, 3.764, 3.768, 3.774, 3.794, 3.829,
+ 3.794, 3.791, 3.786, 3.786, 3.779, 3.762, 3.751, 3.742, 3.735, 3.729, 3.725, 3.719, 3.716, 3.711, 3.709, 3.709, 3.709, 3.711, 3.716, 3.717, 3.721, 3.723, 3.726, 3.732, 3.741, 3.752, 3.761, 3.767, 3.773, 3.779, 3.801, 3.829,
+ 3.802, 3.798, 3.793, 3.793, 3.779, 3.766, 3.754, 3.746, 3.741, 3.736, 3.731, 3.726, 3.719, 3.717, 3.716, 3.715, 3.716, 3.717, 3.719, 3.721, 3.724, 3.726, 3.731, 3.737, 3.744, 3.756, 3.766, 3.772, 3.776, 3.784, 3.807, 3.839,
+ 3.805, 3.799, 3.795, 3.795, 3.784, 3.767, 3.757, 3.749, 3.744, 3.739, 3.736, 3.731, 3.726, 3.722, 3.719, 3.719, 3.719, 3.721, 3.723, 3.725, 3.727, 3.732, 3.738, 3.742, 3.751, 3.761, 3.771, 3.775, 3.782, 3.789, 3.811, 3.841,
+ 3.804, 3.801, 3.799, 3.799, 3.787, 3.772, 3.761, 3.752, 3.746, 3.742, 3.739, 3.735, 3.729, 3.726, 3.723, 3.724, 3.725, 3.726, 3.727, 3.728, 3.732, 3.736, 3.739, 3.745, 3.754, 3.765, 3.775, 3.779, 3.785, 3.795, 3.816, 3.844,
+ 3.801, 3.799, 3.796, 3.796, 3.787, 3.773, 3.761, 3.753, 3.746, 3.743, 3.739, 3.735, 3.731, 3.726, 3.725, 3.725, 3.725, 3.726, 3.727, 3.729, 3.733, 3.736, 3.741, 3.745, 3.755, 3.766, 3.776, 3.783, 3.786, 3.797, 3.819, 3.851,
+ 3.799, 3.795, 3.788, 3.788, 3.783, 3.772, 3.759, 3.749, 3.744, 3.738, 3.735, 3.733, 3.726, 3.724, 3.722, 3.722, 3.723, 3.724, 3.725, 3.727, 3.729, 3.733, 3.736, 3.742, 3.754, 3.762, 3.772, 3.779, 3.784, 3.796, 3.821, 3.859,
+ 3.799, 3.789, 3.787, 3.788, 3.779, 3.766, 3.755, 3.749, 3.742, 3.736, 3.733, 3.727, 3.723, 3.722, 3.721, 3.719, 3.719, 3.721, 3.725, 3.726, 3.728, 3.732, 3.734, 3.741, 3.747, 3.758, 3.771, 3.778, 3.785, 3.796, 3.825, 3.862,
+ 3.824, 3.799, 3.789, 3.789, 3.788, 3.777, 3.761, 3.751, 3.743, 3.739, 3.736, 3.728, 3.726, 3.725, 3.721, 3.719, 3.721, 3.723, 3.727, 3.728, 3.729, 3.733, 3.737, 3.744, 3.755, 3.769, 3.776, 3.784, 3.793, 3.819, 3.863, 3.877,
+ 3.833, 3.833, 3.833, 3.842, 3.825, 3.815, 3.807, 3.799, 3.792, 3.788, 3.785, 3.782, 3.778, 3.777, 3.773, 3.772, 3.772, 3.774, 3.778, 3.779, 3.779, 3.785, 3.792, 3.798, 3.803, 3.811, 3.822, 3.834, 3.843, 3.846, 3.877, 3.886
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.616, 2.616, 2.618, 2.621, 2.619, 2.618, 2.615, 2.615, 2.613, 2.611, 2.609, 2.609, 2.609, 2.611, 2.611, 2.611, 2.611, 2.609, 2.608, 2.608, 2.611, 2.613, 2.613, 2.614, 2.614, 2.615, 2.615, 2.622, 2.624, 2.621, 2.624, 2.641,
+ 2.616, 2.618, 2.621, 2.623, 2.623, 2.619, 2.618, 2.616, 2.616, 2.613, 2.611, 2.611, 2.611, 2.611, 2.612, 2.612, 2.611, 2.611, 2.611, 2.611, 2.611, 2.612, 2.613, 2.612, 2.613, 2.615, 2.617, 2.621, 2.621, 2.619, 2.621, 2.641,
+ 2.621, 2.624, 2.627, 2.627, 2.625, 2.623, 2.621, 2.619, 2.618, 2.618, 2.618, 2.617, 2.616, 2.616, 2.615, 2.613, 2.612, 2.613, 2.613, 2.614, 2.614, 2.613, 2.614, 2.613, 2.614, 2.617, 2.619, 2.621, 2.621, 2.619, 2.623, 2.643,
+ 2.626, 2.627, 2.628, 2.629, 2.628, 2.625, 2.622, 2.621, 2.621, 2.622, 2.621, 2.619, 2.619, 2.618, 2.617, 2.616, 2.616, 2.616, 2.618, 2.618, 2.617, 2.617, 2.618, 2.619, 2.621, 2.623, 2.624, 2.626, 2.625, 2.624, 2.625, 2.654,
+ 2.627, 2.628, 2.628, 2.628, 2.626, 2.623, 2.622, 2.622, 2.622, 2.622, 2.621, 2.621, 2.619, 2.617, 2.617, 2.616, 2.617, 2.617, 2.618, 2.619, 2.618, 2.618, 2.618, 2.621, 2.622, 2.624, 2.626, 2.627, 2.627, 2.626, 2.628, 2.655,
+ 2.625, 2.626, 2.627, 2.626, 2.625, 2.623, 2.622, 2.621, 2.622, 2.621, 2.621, 2.619, 2.617, 2.616, 2.615, 2.616, 2.616, 2.616, 2.616, 2.616, 2.617, 2.618, 2.619, 2.621, 2.622, 2.624, 2.626, 2.628, 2.628, 2.629, 2.629, 2.655,
+ 2.626, 2.625, 2.626, 2.625, 2.625, 2.623, 2.622, 2.622, 2.622, 2.621, 2.619, 2.617, 2.616, 2.614, 2.613, 2.614, 2.614, 2.614, 2.614, 2.614, 2.616, 2.618, 2.619, 2.621, 2.623, 2.624, 2.627, 2.629, 2.631, 2.629, 2.631, 2.651,
+ 2.625, 2.625, 2.625, 2.624, 2.623, 2.623, 2.622, 2.622, 2.622, 2.621, 2.619, 2.617, 2.614, 2.613, 2.612, 2.611, 2.611, 2.612, 2.612, 2.613, 2.616, 2.618, 2.619, 2.622, 2.624, 2.626, 2.628, 2.631, 2.631, 2.631, 2.631, 2.651,
+ 2.625, 2.625, 2.624, 2.623, 2.622, 2.622, 2.622, 2.622, 2.622, 2.621, 2.617, 2.615, 2.613, 2.612, 2.611, 2.611, 2.611, 2.611, 2.611, 2.613, 2.615, 2.618, 2.619, 2.622, 2.625, 2.627, 2.631, 2.632, 2.631, 2.629, 2.631, 2.651,
+ 2.624, 2.624, 2.622, 2.622, 2.621, 2.621, 2.621, 2.621, 2.621, 2.618, 2.616, 2.614, 2.612, 2.611, 2.609, 2.609, 2.608, 2.609, 2.611, 2.611, 2.615, 2.617, 2.619, 2.621, 2.625, 2.628, 2.631, 2.632, 2.631, 2.627, 2.627, 2.651,
+ 2.622, 2.623, 2.622, 2.622, 2.621, 2.619, 2.619, 2.619, 2.618, 2.616, 2.614, 2.613, 2.611, 2.609, 2.608, 2.606, 2.607, 2.607, 2.609, 2.611, 2.615, 2.617, 2.619, 2.622, 2.626, 2.629, 2.632, 2.632, 2.631, 2.627, 2.627, 2.651,
+ 2.621, 2.622, 2.622, 2.622, 2.621, 2.619, 2.619, 2.618, 2.617, 2.614, 2.613, 2.611, 2.611, 2.607, 2.606, 2.605, 2.604, 2.605, 2.607, 2.609, 2.613, 2.616, 2.619, 2.622, 2.627, 2.631, 2.632, 2.632, 2.631, 2.627, 2.627, 2.651,
+ 2.619, 2.621, 2.623, 2.623, 2.621, 2.621, 2.619, 2.617, 2.616, 2.615, 2.613, 2.609, 2.607, 2.604, 2.602, 2.601, 2.602, 2.603, 2.605, 2.609, 2.612, 2.616, 2.619, 2.624, 2.628, 2.631, 2.632, 2.633, 2.629, 2.627, 2.627, 2.651,
+ 2.619, 2.621, 2.623, 2.623, 2.622, 2.621, 2.618, 2.617, 2.615, 2.614, 2.612, 2.608, 2.603, 2.601, 2.598, 2.597, 2.599, 2.602, 2.605, 2.608, 2.611, 2.615, 2.622, 2.625, 2.629, 2.631, 2.631, 2.633, 2.631, 2.627, 2.627, 2.651,
+ 2.621, 2.622, 2.623, 2.623, 2.622, 2.621, 2.618, 2.617, 2.616, 2.614, 2.611, 2.606, 2.601, 2.598, 2.595, 2.595, 2.597, 2.601, 2.604, 2.608, 2.612, 2.615, 2.623, 2.627, 2.629, 2.631, 2.631, 2.632, 2.631, 2.628, 2.628, 2.651,
+ 2.622, 2.623, 2.624, 2.624, 2.622, 2.621, 2.619, 2.617, 2.615, 2.613, 2.609, 2.606, 2.601, 2.596, 2.594, 2.594, 2.596, 2.599, 2.603, 2.609, 2.613, 2.617, 2.623, 2.627, 2.629, 2.631, 2.632, 2.632, 2.631, 2.629, 2.631, 2.651,
+ 2.623, 2.625, 2.625, 2.624, 2.621, 2.621, 2.619, 2.617, 2.616, 2.613, 2.608, 2.605, 2.601, 2.595, 2.593, 2.593, 2.595, 2.598, 2.604, 2.609, 2.615, 2.619, 2.625, 2.627, 2.629, 2.629, 2.632, 2.633, 2.632, 2.629, 2.631, 2.651,
+ 2.624, 2.626, 2.626, 2.623, 2.621, 2.619, 2.618, 2.617, 2.615, 2.612, 2.608, 2.605, 2.601, 2.597, 2.595, 2.595, 2.596, 2.598, 2.605, 2.609, 2.616, 2.621, 2.626, 2.627, 2.629, 2.631, 2.633, 2.633, 2.633, 2.631, 2.631, 2.655,
+ 2.624, 2.625, 2.625, 2.623, 2.621, 2.619, 2.618, 2.617, 2.614, 2.612, 2.609, 2.606, 2.602, 2.599, 2.598, 2.597, 2.598, 2.602, 2.607, 2.612, 2.619, 2.621, 2.626, 2.628, 2.629, 2.632, 2.633, 2.634, 2.633, 2.631, 2.631, 2.655,
+ 2.624, 2.625, 2.625, 2.623, 2.621, 2.621, 2.618, 2.617, 2.614, 2.612, 2.611, 2.608, 2.604, 2.602, 2.599, 2.599, 2.603, 2.606, 2.611, 2.616, 2.621, 2.624, 2.626, 2.629, 2.631, 2.632, 2.633, 2.634, 2.634, 2.633, 2.633, 2.656,
+ 2.623, 2.624, 2.625, 2.623, 2.622, 2.621, 2.619, 2.617, 2.615, 2.613, 2.611, 2.611, 2.607, 2.604, 2.604, 2.604, 2.606, 2.609, 2.613, 2.619, 2.622, 2.625, 2.628, 2.631, 2.632, 2.633, 2.633, 2.636, 2.636, 2.634, 2.634, 2.658,
+ 2.623, 2.624, 2.625, 2.623, 2.622, 2.619, 2.618, 2.616, 2.614, 2.613, 2.612, 2.611, 2.609, 2.608, 2.607, 2.608, 2.609, 2.613, 2.617, 2.621, 2.623, 2.626, 2.629, 2.631, 2.632, 2.633, 2.634, 2.635, 2.636, 2.636, 2.636, 2.661,
+ 2.623, 2.624, 2.625, 2.625, 2.623, 2.621, 2.619, 2.616, 2.615, 2.614, 2.613, 2.612, 2.612, 2.611, 2.611, 2.611, 2.614, 2.615, 2.619, 2.622, 2.625, 2.627, 2.631, 2.632, 2.633, 2.635, 2.635, 2.637, 2.637, 2.636, 2.637, 2.661,
+ 2.623, 2.624, 2.625, 2.626, 2.624, 2.621, 2.619, 2.617, 2.616, 2.615, 2.615, 2.614, 2.614, 2.614, 2.614, 2.614, 2.616, 2.619, 2.621, 2.623, 2.626, 2.628, 2.631, 2.632, 2.634, 2.635, 2.636, 2.637, 2.638, 2.637, 2.638, 2.661,
+ 2.625, 2.626, 2.627, 2.627, 2.626, 2.623, 2.619, 2.619, 2.618, 2.618, 2.618, 2.617, 2.617, 2.616, 2.616, 2.616, 2.619, 2.622, 2.623, 2.625, 2.628, 2.628, 2.631, 2.632, 2.634, 2.636, 2.638, 2.639, 2.639, 2.638, 2.638, 2.661,
+ 2.625, 2.626, 2.627, 2.628, 2.626, 2.623, 2.621, 2.619, 2.619, 2.619, 2.619, 2.619, 2.619, 2.618, 2.618, 2.619, 2.623, 2.624, 2.625, 2.627, 2.629, 2.629, 2.632, 2.633, 2.635, 2.638, 2.639, 2.639, 2.639, 2.636, 2.636, 2.662,
+ 2.625, 2.627, 2.628, 2.628, 2.626, 2.624, 2.623, 2.622, 2.621, 2.621, 2.621, 2.621, 2.621, 2.621, 2.621, 2.624, 2.624, 2.625, 2.627, 2.628, 2.631, 2.631, 2.632, 2.634, 2.636, 2.639, 2.639, 2.641, 2.639, 2.635, 2.635, 2.663,
+ 2.625, 2.626, 2.628, 2.628, 2.627, 2.625, 2.624, 2.623, 2.623, 2.622, 2.623, 2.624, 2.624, 2.625, 2.625, 2.625, 2.625, 2.626, 2.627, 2.629, 2.631, 2.632, 2.633, 2.635, 2.638, 2.641, 2.642, 2.643, 2.642, 2.636, 2.636, 2.665,
+ 2.624, 2.626, 2.628, 2.628, 2.628, 2.626, 2.624, 2.624, 2.623, 2.623, 2.623, 2.625, 2.627, 2.627, 2.626, 2.626, 2.626, 2.627, 2.628, 2.629, 2.632, 2.633, 2.635, 2.637, 2.639, 2.642, 2.644, 2.644, 2.642, 2.638, 2.638, 2.665,
+ 2.623, 2.625, 2.626, 2.627, 2.626, 2.626, 2.624, 2.623, 2.623, 2.623, 2.623, 2.623, 2.626, 2.627, 2.626, 2.626, 2.626, 2.626, 2.628, 2.628, 2.629, 2.631, 2.634, 2.636, 2.639, 2.642, 2.644, 2.643, 2.641, 2.637, 2.638, 2.659,
+ 2.623, 2.627, 2.627, 2.627, 2.627, 2.628, 2.627, 2.624, 2.624, 2.623, 2.624, 2.624, 2.628, 2.628, 2.627, 2.628, 2.628, 2.628, 2.629, 2.629, 2.631, 2.635, 2.637, 2.639, 2.641, 2.643, 2.646, 2.645, 2.643, 2.641, 2.654, 2.659,
+ 2.642, 2.641, 2.643, 2.645, 2.645, 2.644, 2.644, 2.643, 2.643, 2.642, 2.642, 2.642, 2.643, 2.644, 2.644, 2.644, 2.646, 2.646, 2.647, 2.649, 2.651, 2.652, 2.654, 2.656, 2.658, 2.661, 2.661, 2.661, 2.659, 2.654, 2.659, 2.659
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.391, 1.394, 1.395, 1.396, 1.398, 1.398, 1.398, 1.398, 1.398, 1.399, 1.399, 1.398, 1.398, 1.399, 1.399, 1.399, 1.399, 1.398, 1.398, 1.398, 1.399, 1.399, 1.398, 1.397, 1.397, 1.398, 1.399, 1.401, 1.399, 1.397, 1.399, 1.402,
+ 1.393, 1.395, 1.396, 1.398, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.401, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.398, 1.398, 1.399, 1.401, 1.401, 1.399, 1.398, 1.399, 1.402,
+ 1.398, 1.401, 1.401, 1.401, 1.401, 1.401, 1.402, 1.402, 1.402, 1.402, 1.403, 1.404, 1.404, 1.403, 1.403, 1.403, 1.403, 1.402, 1.401, 1.401, 1.401, 1.401, 1.401, 1.399, 1.399, 1.401, 1.401, 1.401, 1.401, 1.399, 1.401, 1.406,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.405, 1.405, 1.404, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.402, 1.403, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.403, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.402, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.404, 1.405, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.403, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.405, 1.404, 1.404, 1.404, 1.404, 1.405, 1.404, 1.405, 1.405, 1.405, 1.406, 1.406, 1.404, 1.405, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.404, 1.405, 1.406, 1.406, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.406, 1.406, 1.407, 1.407, 1.406, 1.405, 1.405, 1.412,
+ 1.402, 1.402, 1.401, 1.401, 1.402, 1.403, 1.404, 1.405, 1.406, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.404, 1.404, 1.403, 1.404, 1.404, 1.405, 1.405, 1.406, 1.406, 1.407, 1.407, 1.408, 1.408, 1.407, 1.405, 1.405, 1.412,
+ 1.402, 1.402, 1.401, 1.401, 1.402, 1.403, 1.404, 1.405, 1.406, 1.405, 1.405, 1.404, 1.404, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.405, 1.405, 1.406, 1.406, 1.407, 1.408, 1.408, 1.408, 1.407, 1.405, 1.405, 1.413,
+ 1.402, 1.402, 1.402, 1.402, 1.402, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.403, 1.403, 1.402, 1.402, 1.402, 1.403, 1.403, 1.404, 1.405, 1.406, 1.406, 1.407, 1.408, 1.409, 1.409, 1.408, 1.407, 1.405, 1.405, 1.414,
+ 1.402, 1.402, 1.402, 1.402, 1.403, 1.403, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.403, 1.402, 1.402, 1.401, 1.401, 1.402, 1.403, 1.403, 1.404, 1.405, 1.406, 1.407, 1.409, 1.409, 1.409, 1.409, 1.407, 1.405, 1.405, 1.413,
+ 1.402, 1.402, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.401, 1.401, 1.399, 1.399, 1.401, 1.402, 1.403, 1.404, 1.405, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.408, 1.405, 1.405, 1.413,
+ 1.402, 1.403, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.402, 1.401, 1.399, 1.398, 1.398, 1.399, 1.399, 1.401, 1.403, 1.404, 1.405, 1.407, 1.409, 1.409, 1.409, 1.409, 1.409, 1.408, 1.406, 1.406, 1.413,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.401, 1.398, 1.397, 1.397, 1.398, 1.399, 1.401, 1.403, 1.404, 1.405, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.408, 1.406, 1.406, 1.413,
+ 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.399, 1.397, 1.396, 1.396, 1.397, 1.399, 1.401, 1.403, 1.404, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.408, 1.406, 1.406, 1.413,
+ 1.403, 1.404, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.399, 1.397, 1.396, 1.396, 1.397, 1.398, 1.401, 1.403, 1.406, 1.407, 1.409, 1.409, 1.411, 1.409, 1.409, 1.409, 1.408, 1.407, 1.407, 1.413,
+ 1.403, 1.404, 1.404, 1.403, 1.403, 1.404, 1.404, 1.405, 1.404, 1.404, 1.403, 1.402, 1.399, 1.398, 1.397, 1.397, 1.398, 1.399, 1.402, 1.404, 1.406, 1.408, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.409, 1.407, 1.407, 1.414,
+ 1.403, 1.403, 1.404, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.403, 1.403, 1.402, 1.401, 1.399, 1.398, 1.398, 1.398, 1.401, 1.403, 1.404, 1.408, 1.408, 1.409, 1.409, 1.409, 1.411, 1.411, 1.409, 1.408, 1.407, 1.407, 1.415,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.403, 1.403, 1.403, 1.401, 1.401, 1.399, 1.399, 1.401, 1.402, 1.404, 1.407, 1.408, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.409, 1.407, 1.407, 1.415,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.403, 1.403, 1.403, 1.402, 1.401, 1.401, 1.401, 1.402, 1.404, 1.406, 1.407, 1.408, 1.409, 1.411, 1.411, 1.411, 1.409, 1.409, 1.409, 1.409, 1.408, 1.408, 1.415,
+ 1.402, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.405, 1.406, 1.408, 1.408, 1.409, 1.411, 1.411, 1.411, 1.411, 1.409, 1.409, 1.409, 1.408, 1.408, 1.416,
+ 1.403, 1.402, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.403, 1.404, 1.404, 1.404, 1.405, 1.406, 1.407, 1.408, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.411, 1.411, 1.409, 1.408, 1.408, 1.416,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.406, 1.407, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.408, 1.408, 1.417,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.406, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.408, 1.408, 1.417,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.405, 1.406, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.409, 1.408, 1.408, 1.417,
+ 1.403, 1.403, 1.403, 1.403, 1.404, 1.403, 1.403, 1.404, 1.404, 1.405, 1.405, 1.406, 1.406, 1.406, 1.407, 1.408, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.407, 1.407, 1.416,
+ 1.402, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.406, 1.407, 1.407, 1.407, 1.408, 1.409, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.409, 1.407, 1.407, 1.417,
+ 1.402, 1.403, 1.403, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.406, 1.406, 1.407, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.409, 1.411, 1.411, 1.411, 1.412, 1.411, 1.409, 1.407, 1.407, 1.415,
+ 1.402, 1.402, 1.403, 1.403, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.406, 1.407, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.412, 1.411, 1.409, 1.407, 1.407, 1.413,
+ 1.402, 1.402, 1.403, 1.403, 1.405, 1.406, 1.406, 1.406, 1.406, 1.406, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.412, 1.412, 1.413, 1.413, 1.411, 1.408, 1.411, 1.413,
+ 1.406, 1.406, 1.408, 1.408, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.411, 1.411, 1.414, 1.414, 1.414, 1.414, 1.415, 1.415, 1.415, 1.415, 1.416, 1.416, 1.416, 1.417, 1.418, 1.418, 1.417, 1.417, 1.414, 1.411, 1.413, 1.413
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 1.554, 1.522, 1.466, 1.422, 1.385, 1.351, 1.322, 1.294, 1.269, 1.246, 1.228, 1.214, 1.207, 1.202, 1.199, 1.199, 1.199, 1.199, 1.202, 1.207, 1.218, 1.235, 1.255, 1.279, 1.305, 1.333, 1.365, 1.402, 1.447, 1.508, 1.602, 1.638,
+ 1.522, 1.478, 1.431, 1.391, 1.355, 1.323, 1.298, 1.271, 1.247, 1.228, 1.212, 1.199, 1.187, 1.179, 1.173, 1.172, 1.172, 1.174, 1.179, 1.189, 1.201, 1.216, 1.235, 1.256, 1.282, 1.308, 1.335, 1.368, 1.411, 1.461, 1.535, 1.602,
+ 1.479, 1.449, 1.407, 1.367, 1.332, 1.301, 1.271, 1.247, 1.226, 1.208, 1.191, 1.178, 1.166, 1.158, 1.153, 1.151, 1.151, 1.153, 1.159, 1.168, 1.179, 1.194, 1.212, 1.234, 1.256, 1.282, 1.311, 1.343, 1.382, 1.427, 1.489, 1.535,
+ 1.454, 1.423, 1.383, 1.345, 1.309, 1.278, 1.249, 1.226, 1.206, 1.187, 1.171, 1.158, 1.146, 1.138, 1.132, 1.129, 1.129, 1.133, 1.139, 1.147, 1.159, 1.173, 1.191, 1.212, 1.234, 1.261, 1.288, 1.321, 1.357, 1.401, 1.455, 1.489,
+ 1.433, 1.401, 1.362, 1.325, 1.289, 1.258, 1.231, 1.206, 1.187, 1.169, 1.153, 1.138, 1.129, 1.121, 1.115, 1.112, 1.112, 1.114, 1.121, 1.129, 1.141, 1.155, 1.172, 1.191, 1.214, 1.241, 1.269, 1.301, 1.337, 1.377, 1.428, 1.457,
+ 1.415, 1.382, 1.343, 1.306, 1.273, 1.241, 1.213, 1.189, 1.169, 1.153, 1.137, 1.123, 1.112, 1.105, 1.097, 1.095, 1.095, 1.098, 1.103, 1.112, 1.124, 1.139, 1.155, 1.173, 1.197, 1.222, 1.252, 1.282, 1.317, 1.356, 1.405, 1.434,
+ 1.398, 1.363, 1.325, 1.289, 1.256, 1.224, 1.198, 1.175, 1.155, 1.137, 1.123, 1.108, 1.097, 1.089, 1.083, 1.079, 1.079, 1.083, 1.088, 1.097, 1.109, 1.124, 1.139, 1.158, 1.181, 1.206, 1.234, 1.266, 1.299, 1.339, 1.384, 1.415,
+ 1.382, 1.347, 1.309, 1.274, 1.242, 1.211, 1.185, 1.162, 1.142, 1.124, 1.108, 1.095, 1.083, 1.075, 1.069, 1.066, 1.066, 1.068, 1.074, 1.083, 1.096, 1.109, 1.125, 1.145, 1.166, 1.191, 1.219, 1.251, 1.285, 1.324, 1.367, 1.399,
+ 1.369, 1.334, 1.296, 1.261, 1.228, 1.199, 1.173, 1.151, 1.131, 1.112, 1.095, 1.083, 1.071, 1.062, 1.056, 1.053, 1.053, 1.055, 1.061, 1.069, 1.083, 1.096, 1.112, 1.132, 1.153, 1.178, 1.206, 1.237, 1.271, 1.309, 1.353, 1.385,
+ 1.359, 1.321, 1.284, 1.251, 1.217, 1.189, 1.164, 1.141, 1.121, 1.102, 1.086, 1.071, 1.061, 1.049, 1.045, 1.042, 1.042, 1.043, 1.051, 1.061, 1.069, 1.085, 1.101, 1.121, 1.143, 1.167, 1.195, 1.225, 1.259, 1.298, 1.341, 1.375,
+ 1.351, 1.312, 1.275, 1.241, 1.209, 1.181, 1.155, 1.133, 1.112, 1.092, 1.076, 1.061, 1.049, 1.041, 1.034, 1.032, 1.032, 1.035, 1.041, 1.051, 1.061, 1.075, 1.092, 1.112, 1.133, 1.158, 1.185, 1.216, 1.249, 1.288, 1.331, 1.364,
+ 1.344, 1.303, 1.267, 1.233, 1.201, 1.173, 1.147, 1.124, 1.104, 1.085, 1.067, 1.053, 1.041, 1.033, 1.024, 1.022, 1.022, 1.025, 1.034, 1.041, 1.053, 1.066, 1.083, 1.103, 1.126, 1.149, 1.177, 1.207, 1.241, 1.279, 1.321, 1.357,
+ 1.339, 1.297, 1.261, 1.226, 1.194, 1.166, 1.142, 1.119, 1.098, 1.078, 1.061, 1.046, 1.034, 1.024, 1.017, 1.014, 1.014, 1.017, 1.025, 1.034, 1.046, 1.059, 1.077, 1.096, 1.118, 1.143, 1.169, 1.201, 1.235, 1.273, 1.314, 1.352,
+ 1.337, 1.293, 1.256, 1.223, 1.191, 1.163, 1.136, 1.114, 1.093, 1.074, 1.056, 1.041, 1.027, 1.017, 1.012, 1.006, 1.006, 1.013, 1.017, 1.028, 1.041, 1.055, 1.072, 1.092, 1.114, 1.138, 1.165, 1.195, 1.229, 1.268, 1.309, 1.348,
+ 1.337, 1.291, 1.253, 1.219, 1.187, 1.159, 1.133, 1.109, 1.089, 1.071, 1.053, 1.037, 1.023, 1.012, 1.006, 1.002, 1.003, 1.006, 1.013, 1.023, 1.038, 1.052, 1.069, 1.089, 1.111, 1.135, 1.161, 1.192, 1.226, 1.264, 1.306, 1.348,
+ 1.337, 1.291, 1.253, 1.218, 1.186, 1.157, 1.132, 1.109, 1.088, 1.068, 1.049, 1.035, 1.021, 1.009, 1.001, 1.001, 1.001, 1.003, 1.011, 1.021, 1.035, 1.051, 1.069, 1.087, 1.109, 1.133, 1.161, 1.189, 1.224, 1.262, 1.304, 1.347,
+ 1.341, 1.292, 1.253, 1.218, 1.186, 1.157, 1.132, 1.109, 1.088, 1.068, 1.049, 1.034, 1.021, 1.009, 1.001, 1.001, 1.001, 1.003, 1.011, 1.021, 1.035, 1.051, 1.069, 1.087, 1.109, 1.133, 1.161, 1.189, 1.224, 1.262, 1.304, 1.347,
+ 1.348, 1.298, 1.255, 1.219, 1.188, 1.159, 1.134, 1.111, 1.088, 1.069, 1.051, 1.035, 1.021, 1.009, 1.003, 1.001, 1.002, 1.004, 1.011, 1.022, 1.036, 1.053, 1.071, 1.089, 1.111, 1.135, 1.162, 1.191, 1.226, 1.264, 1.306, 1.347,
+ 1.354, 1.306, 1.258, 1.222, 1.191, 1.162, 1.135, 1.113, 1.092, 1.073, 1.054, 1.038, 1.024, 1.014, 1.008, 1.003, 1.004, 1.008, 1.014, 1.026, 1.039, 1.056, 1.073, 1.093, 1.115, 1.139, 1.165, 1.195, 1.229, 1.267, 1.309, 1.349,
+ 1.358, 1.312, 1.263, 1.227, 1.195, 1.167, 1.141, 1.117, 1.097, 1.078, 1.061, 1.043, 1.029, 1.021, 1.014, 1.008, 1.008, 1.014, 1.021, 1.032, 1.045, 1.061, 1.078, 1.097, 1.119, 1.144, 1.169, 1.201, 1.234, 1.272, 1.315, 1.353,
+ 1.364, 1.319, 1.269, 1.234, 1.201, 1.174, 1.148, 1.124, 1.103, 1.084, 1.067, 1.052, 1.038, 1.029, 1.021, 1.016, 1.016, 1.021, 1.029, 1.038, 1.051, 1.067, 1.084, 1.103, 1.126, 1.151, 1.176, 1.207, 1.241, 1.279, 1.321, 1.358,
+ 1.371, 1.326, 1.277, 1.242, 1.209, 1.181, 1.155, 1.132, 1.111, 1.092, 1.075, 1.061, 1.049, 1.038, 1.029, 1.027, 1.027, 1.029, 1.038, 1.047, 1.061, 1.075, 1.092, 1.111, 1.133, 1.157, 1.185, 1.213, 1.247, 1.286, 1.329, 1.365,
+ 1.379, 1.334, 1.287, 1.251, 1.219, 1.191, 1.164, 1.141, 1.119, 1.101, 1.085, 1.071, 1.061, 1.049, 1.041, 1.038, 1.038, 1.041, 1.047, 1.059, 1.071, 1.084, 1.101, 1.119, 1.141, 1.165, 1.193, 1.223, 1.257, 1.295, 1.338, 1.374,
+ 1.389, 1.343, 1.298, 1.262, 1.231, 1.201, 1.174, 1.151, 1.131, 1.111, 1.095, 1.083, 1.071, 1.061, 1.054, 1.051, 1.051, 1.054, 1.059, 1.071, 1.081, 1.094, 1.111, 1.129, 1.152, 1.176, 1.203, 1.235, 1.269, 1.307, 1.351, 1.384,
+ 1.401, 1.351, 1.311, 1.274, 1.242, 1.214, 1.187, 1.164, 1.142, 1.124, 1.108, 1.095, 1.083, 1.074, 1.068, 1.066, 1.066, 1.068, 1.073, 1.081, 1.094, 1.108, 1.123, 1.141, 1.164, 1.188, 1.215, 1.247, 1.281, 1.321, 1.364, 1.396,
+ 1.412, 1.366, 1.327, 1.289, 1.257, 1.227, 1.201, 1.176, 1.156, 1.137, 1.122, 1.108, 1.096, 1.088, 1.083, 1.081, 1.081, 1.082, 1.087, 1.095, 1.108, 1.122, 1.136, 1.154, 1.177, 1.201, 1.229, 1.261, 1.296, 1.337, 1.382, 1.409,
+ 1.421, 1.383, 1.343, 1.306, 1.273, 1.243, 1.216, 1.192, 1.169, 1.152, 1.137, 1.122, 1.111, 1.103, 1.098, 1.095, 1.095, 1.097, 1.102, 1.111, 1.123, 1.136, 1.152, 1.169, 1.191, 1.217, 1.246, 1.278, 1.314, 1.354, 1.399, 1.429,
+ 1.434, 1.402, 1.362, 1.324, 1.291, 1.261, 1.232, 1.208, 1.187, 1.168, 1.152, 1.138, 1.127, 1.119, 1.114, 1.112, 1.112, 1.115, 1.121, 1.128, 1.139, 1.152, 1.169, 1.186, 1.209, 1.234, 1.262, 1.295, 1.332, 1.372, 1.419, 1.451,
+ 1.453, 1.422, 1.382, 1.344, 1.309, 1.278, 1.249, 1.226, 1.204, 1.187, 1.168, 1.155, 1.144, 1.135, 1.131, 1.131, 1.131, 1.133, 1.138, 1.146, 1.157, 1.171, 1.186, 1.206, 1.227, 1.252, 1.281, 1.314, 1.351, 1.393, 1.442, 1.473,
+ 1.475, 1.446, 1.404, 1.366, 1.329, 1.298, 1.269, 1.245, 1.224, 1.204, 1.188, 1.174, 1.163, 1.154, 1.149, 1.148, 1.148, 1.152, 1.156, 1.164, 1.176, 1.189, 1.206, 1.226, 1.247, 1.274, 1.303, 1.336, 1.374, 1.417, 1.471, 1.505,
+ 1.503, 1.472, 1.428, 1.389, 1.353, 1.321, 1.291, 1.266, 1.245, 1.224, 1.207, 1.192, 1.183, 1.174, 1.169, 1.167, 1.168, 1.169, 1.175, 1.183, 1.195, 1.209, 1.226, 1.247, 1.267, 1.294, 1.325, 1.359, 1.397, 1.445, 1.505, 1.548,
+ 1.534, 1.503, 1.455, 1.413, 1.378, 1.344, 1.315, 1.289, 1.265, 1.243, 1.224, 1.207, 1.196, 1.192, 1.189, 1.189, 1.189, 1.189, 1.192, 1.198, 1.209, 1.226, 1.244, 1.266, 1.291, 1.318, 1.349, 1.383, 1.425, 1.475, 1.548, 1.591
+ ],
+ "sigma": 0.00095,
+ "sigma_Cb": 0.00098
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2850,
+ "ccm":
+ [
+ 1.97469, -0.71439, -0.26031,
+ -0.43521, 2.09769, -0.66248,
+ -0.04826, -0.84642, 1.89468
+ ]
+ },
+ {
+ "ct": 2960,
+ "ccm":
+ [
+ 2.12952, -0.91185, -0.21768,
+ -0.38018, 1.90789, -0.52771,
+ 0.03988, -1.10079, 2.06092
+ ]
+ },
+ {
+ "ct": 3580,
+ "ccm":
+ [
+ 2.03422, -0.80048, -0.23374,
+ -0.39089, 1.97221, -0.58132,
+ -0.08969, -0.61439, 1.70408
+ ]
+ },
+ {
+ "ct": 4559,
+ "ccm":
+ [
+ 2.15423, -0.98143, -0.17279,
+ -0.38131, 2.14763, -0.76632,
+ -0.10069, -0.54383, 1.64452
+ ]
+ },
+ {
+ "ct": 5881,
+ "ccm":
+ [
+ 2.18464, -0.95493, -0.22971,
+ -0.36826, 2.00298, -0.63471,
+ -0.15219, -0.38055, 1.53274
+ ]
+ },
+ {
+ "ct": 7600,
+ "ccm":
+ [
+ 2.30687, -0.97295, -0.33392,
+ -0.30872, 2.32779, -1.01908,
+ -0.17761, -0.55891, 1.73651
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.cac":
+ {
+ "strength": 1.0,
+ "lut_rx":
+ [
+ -0.34, -0.26, -0.18, -0.1, -0.02, 0.06, 0.13, 0.22, 0.37,
+ -0.36, -0.28, -0.19, -0.1, -0.02, 0.06, 0.13, 0.21, 0.36,
+ -0.37, -0.29, -0.19, -0.1, -0.02, 0.06, 0.13, 0.21, 0.36,
+ -0.38, -0.27, -0.18, -0.09, -0.01, 0.07, 0.14, 0.22, 0.36,
+ -0.36, -0.27, -0.18, -0.09, -0.01, 0.07, 0.15, 0.23, 0.38,
+ -0.35, -0.27, -0.18, -0.09, -0.01, 0.08, 0.15, 0.23, 0.39,
+ -0.34, -0.26, -0.18, -0.1, -0.01, 0.07, 0.15, 0.22, 0.39,
+ -0.33, -0.24, -0.17, -0.09, -0.01, 0.08, 0.15, 0.22, 0.37,
+ -0.3, -0.21, -0.14, -0.07, 0.0, 0.09, 0.16, 0.22, 0.36
+ ],
+ "lut_ry":
+ [
+ -0.22, -0.23, -0.26, -0.27, -0.27, -0.26, -0.24, -0.23, -0.22,
+ -0.18, -0.19, -0.21, -0.21, -0.22, -0.21, -0.19, -0.18, -0.16,
+ -0.15, -0.14, -0.16, -0.17, -0.18, -0.17, -0.16, -0.14, -0.11,
+ -0.09, -0.07, -0.08, -0.09, -0.1, -0.09, -0.08, -0.06, -0.06,
+ -0.02, 0.0, -0.01, -0.02, -0.03, -0.03, -0.01, 0.01, 0.01,
+ 0.05, 0.06, 0.04, 0.03, 0.03, 0.03, 0.04, 0.06, 0.07,
+ 0.09, 0.1, 0.09, 0.08, 0.07, 0.07, 0.09, 0.1, 0.12,
+ 0.14, 0.16, 0.15, 0.15, 0.15, 0.14, 0.15, 0.16, 0.16,
+ 0.24, 0.26, 0.25, 0.25, 0.26, 0.26, 0.26, 0.26, 0.25
+ ],
+ "lut_bx":
+ [
+ -0.03, -0.02, -0.0, 0.0, 0.02, 0.03, 0.04, 0.06, 0.11,
+ -0.03, -0.01, -0.0, -0.0, 0.01, 0.02, 0.04, 0.06, 0.11,
+ -0.03, -0.01, 0.0, 0.01, 0.01, 0.02, 0.04, 0.06, 0.1,
+ -0.03, -0.01, 0.0, 0.01, 0.01, 0.02, 0.04, 0.07, 0.12,
+ -0.03, -0.01, -0.0, 0.01, 0.01, 0.02, 0.04, 0.07, 0.13,
+ -0.03, -0.01, 0.0, 0.01, 0.02, 0.02, 0.04, 0.07, 0.14,
+ -0.03, -0.01, 0.0, 0.01, 0.02, 0.02, 0.04, 0.08, 0.15,
+ -0.03, -0.01, 0.0, 0.0, 0.01, 0.02, 0.04, 0.08, 0.16,
+ -0.02, -0.0, 0.0, -0.0, -0.01, 0.0, 0.03, 0.08, 0.16
+ ],
+ "lut_by":
+ [
+ -0.1, -0.07, -0.05, -0.04, -0.04, -0.04, -0.05, -0.08, -0.13,
+ -0.08, -0.06, -0.05, -0.04, -0.04, -0.04, -0.04, -0.06, -0.11,
+ -0.07, -0.04, -0.03, -0.03, -0.02, -0.02, -0.03, -0.04, -0.08,
+ -0.06, -0.04, -0.02, -0.02, -0.02, -0.02, -0.02, -0.04, -0.06,
+ -0.04, -0.01, 0.0, 0.02, 0.02, 0.01, 0.0, -0.01, -0.06,
+ -0.02, 0.01, 0.02, 0.03, 0.04, 0.04, 0.03, 0.01, -0.04,
+ -0.0, 0.02, 0.04, 0.05, 0.05, 0.05, 0.05, 0.03, -0.02,
+ 0.0, 0.02, 0.04, 0.05, 0.06, 0.05, 0.04, 0.04, 0.01,
+ -0.0, 0.02, 0.03, 0.04, 0.05, 0.04, 0.02, 0.03, 0.01
+ ]
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": [ 0.0, 2.5, 0.01, 2.5, 0.06, 1.0, 1.0, 1.0 ],
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": [ 0.0, 2.5, 0.01, 2.5, 0.06, 1.0, 1.0, 1.0 ],
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx477_6mm.json b/src/ipa/rpi/pisp/data/imx477_6mm.json
new file mode 100644
index 00000000..27268c23
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx477_6mm.json
@@ -0,0 +1,1240 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 12000,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 740,
+ "reference_Y": 15051
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.809
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 204,
+ "slope": 0.0061
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2850.0, 0.4307, 0.3957,
+ 2960.0, 0.4159, 0.4313,
+ 3580.0, 0.3771, 0.5176,
+ 4559.0, 0.3031, 0.6573,
+ 5881.0, 0.2809, 0.6942,
+ 7600.0, 0.2263, 0.7762
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.02634,
+ "transverse_neg": 0.02255
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.359, 2.354, 2.351, 2.351, 2.343, 2.337, 2.331, 2.325, 2.323, 2.321, 2.317, 2.315, 2.313, 2.313, 2.311, 2.312, 2.312, 2.313, 2.315, 2.315, 2.316, 2.317, 2.319, 2.323, 2.326, 2.329, 2.332, 2.332, 2.335, 2.337, 2.352, 2.363,
+ 2.352, 2.351, 2.349, 2.346, 2.342, 2.334, 2.328, 2.324, 2.321, 2.317, 2.315, 2.314, 2.312, 2.311, 2.311, 2.311, 2.311, 2.311, 2.312, 2.314, 2.315, 2.316, 2.317, 2.319, 2.324, 2.326, 2.328, 2.329, 2.331, 2.337, 2.348, 2.355,
+ 2.346, 2.346, 2.345, 2.344, 2.338, 2.329, 2.325, 2.319, 2.316, 2.314, 2.311, 2.309, 2.308, 2.306, 2.304, 2.304, 2.305, 2.307, 2.308, 2.309, 2.311, 2.311, 2.313, 2.316, 2.319, 2.322, 2.325, 2.326, 2.328, 2.335, 2.343, 2.349,
+ 2.342, 2.342, 2.341, 2.338, 2.332, 2.326, 2.319, 2.316, 2.312, 2.309, 2.308, 2.305, 2.303, 2.302, 2.301, 2.301, 2.302, 2.303, 2.304, 2.305, 2.305, 2.307, 2.311, 2.313, 2.315, 2.319, 2.321, 2.325, 2.328, 2.333, 2.338, 2.348,
+ 2.337, 2.337, 2.337, 2.336, 2.331, 2.322, 2.317, 2.312, 2.309, 2.307, 2.304, 2.302, 2.299, 2.299, 2.298, 2.298, 2.299, 2.299, 2.301, 2.302, 2.302, 2.304, 2.305, 2.309, 2.314, 2.316, 2.321, 2.324, 2.326, 2.329, 2.335, 2.343,
+ 2.335, 2.334, 2.333, 2.333, 2.326, 2.318, 2.313, 2.309, 2.306, 2.302, 2.299, 2.297, 2.297, 2.296, 2.295, 2.295, 2.294, 2.295, 2.296, 2.298, 2.298, 2.301, 2.303, 2.305, 2.311, 2.315, 2.319, 2.323, 2.325, 2.329, 2.333, 2.339,
+ 2.329, 2.331, 2.329, 2.329, 2.325, 2.315, 2.309, 2.306, 2.302, 2.299, 2.297, 2.295, 2.293, 2.292, 2.291, 2.291, 2.291, 2.291, 2.293, 2.294, 2.296, 2.298, 2.301, 2.304, 2.307, 2.313, 2.317, 2.319, 2.323, 2.327, 2.331, 2.339,
+ 2.329, 2.328, 2.328, 2.328, 2.321, 2.313, 2.307, 2.303, 2.299, 2.295, 2.294, 2.292, 2.289, 2.289, 2.288, 2.288, 2.288, 2.289, 2.289, 2.292, 2.294, 2.295, 2.297, 2.301, 2.306, 2.311, 2.315, 2.318, 2.319, 2.323, 2.329, 2.335,
+ 2.326, 2.327, 2.325, 2.325, 2.319, 2.311, 2.305, 2.299, 2.296, 2.293, 2.291, 2.289, 2.288, 2.287, 2.285, 2.285, 2.286, 2.288, 2.288, 2.289, 2.291, 2.294, 2.295, 2.298, 2.304, 2.308, 2.313, 2.315, 2.317, 2.319, 2.327, 2.335,
+ 2.325, 2.325, 2.323, 2.323, 2.317, 2.309, 2.303, 2.298, 2.294, 2.292, 2.289, 2.287, 2.286, 2.285, 2.284, 2.284, 2.284, 2.285, 2.287, 2.289, 2.291, 2.291, 2.294, 2.297, 2.302, 2.305, 2.309, 2.313, 2.315, 2.317, 2.325, 2.334,
+ 2.322, 2.324, 2.322, 2.322, 2.316, 2.306, 2.301, 2.296, 2.292, 2.289, 2.287, 2.286, 2.285, 2.284, 2.283, 2.283, 2.283, 2.284, 2.286, 2.288, 2.289, 2.291, 2.293, 2.296, 2.301, 2.304, 2.308, 2.311, 2.312, 2.315, 2.323, 2.333,
+ 2.321, 2.323, 2.322, 2.322, 2.314, 2.306, 2.299, 2.294, 2.291, 2.288, 2.286, 2.285, 2.284, 2.282, 2.281, 2.282, 2.282, 2.283, 2.284, 2.286, 2.289, 2.291, 2.291, 2.294, 2.297, 2.302, 2.306, 2.308, 2.311, 2.312, 2.322, 2.332,
+ 2.319, 2.321, 2.321, 2.321, 2.314, 2.305, 2.297, 2.293, 2.289, 2.287, 2.285, 2.284, 2.283, 2.281, 2.281, 2.281, 2.282, 2.283, 2.283, 2.285, 2.287, 2.289, 2.291, 2.292, 2.297, 2.301, 2.305, 2.307, 2.309, 2.312, 2.321, 2.333,
+ 2.319, 2.321, 2.319, 2.319, 2.314, 2.303, 2.296, 2.293, 2.289, 2.286, 2.285, 2.283, 2.282, 2.281, 2.281, 2.281, 2.282, 2.282, 2.283, 2.284, 2.286, 2.288, 2.289, 2.291, 2.296, 2.301, 2.305, 2.307, 2.308, 2.312, 2.321, 2.332,
+ 2.319, 2.321, 2.319, 2.319, 2.313, 2.303, 2.296, 2.291, 2.289, 2.286, 2.284, 2.282, 2.281, 2.281, 2.281, 2.281, 2.282, 2.282, 2.283, 2.284, 2.286, 2.287, 2.288, 2.291, 2.295, 2.299, 2.304, 2.306, 2.307, 2.311, 2.321, 2.332,
+ 2.319, 2.321, 2.319, 2.319, 2.313, 2.303, 2.297, 2.292, 2.289, 2.287, 2.285, 2.282, 2.281, 2.281, 2.282, 2.282, 2.282, 2.282, 2.283, 2.284, 2.285, 2.286, 2.288, 2.291, 2.295, 2.299, 2.303, 2.306, 2.307, 2.312, 2.321, 2.331,
+ 2.318, 2.319, 2.319, 2.319, 2.313, 2.303, 2.297, 2.292, 2.289, 2.286, 2.285, 2.282, 2.281, 2.281, 2.281, 2.282, 2.282, 2.282, 2.282, 2.283, 2.285, 2.286, 2.287, 2.291, 2.294, 2.298, 2.303, 2.306, 2.307, 2.311, 2.321, 2.331,
+ 2.319, 2.319, 2.319, 2.319, 2.313, 2.302, 2.297, 2.292, 2.289, 2.287, 2.285, 2.283, 2.282, 2.281, 2.281, 2.282, 2.283, 2.283, 2.283, 2.283, 2.285, 2.286, 2.287, 2.289, 2.294, 2.297, 2.303, 2.305, 2.308, 2.313, 2.321, 2.331,
+ 2.319, 2.319, 2.319, 2.319, 2.313, 2.303, 2.299, 2.293, 2.291, 2.287, 2.285, 2.283, 2.282, 2.281, 2.281, 2.282, 2.283, 2.283, 2.283, 2.283, 2.285, 2.286, 2.288, 2.291, 2.294, 2.298, 2.304, 2.306, 2.308, 2.312, 2.322, 2.331,
+ 2.319, 2.321, 2.321, 2.321, 2.315, 2.305, 2.301, 2.295, 2.292, 2.289, 2.286, 2.285, 2.283, 2.282, 2.282, 2.282, 2.284, 2.283, 2.284, 2.284, 2.285, 2.287, 2.288, 2.291, 2.294, 2.299, 2.304, 2.306, 2.309, 2.313, 2.322, 2.334,
+ 2.321, 2.322, 2.322, 2.322, 2.317, 2.307, 2.301, 2.296, 2.292, 2.291, 2.288, 2.286, 2.285, 2.284, 2.283, 2.284, 2.285, 2.284, 2.285, 2.285, 2.287, 2.288, 2.289, 2.293, 2.297, 2.301, 2.305, 2.308, 2.311, 2.314, 2.323, 2.335,
+ 2.322, 2.324, 2.324, 2.324, 2.319, 2.309, 2.303, 2.297, 2.295, 2.292, 2.291, 2.288, 2.286, 2.286, 2.285, 2.286, 2.286, 2.286, 2.287, 2.288, 2.289, 2.289, 2.291, 2.294, 2.299, 2.302, 2.307, 2.311, 2.312, 2.316, 2.325, 2.335,
+ 2.324, 2.326, 2.325, 2.326, 2.321, 2.311, 2.305, 2.301, 2.297, 2.295, 2.293, 2.291, 2.289, 2.289, 2.288, 2.288, 2.287, 2.288, 2.289, 2.291, 2.292, 2.292, 2.295, 2.299, 2.301, 2.304, 2.309, 2.312, 2.315, 2.319, 2.327, 2.337,
+ 2.329, 2.329, 2.328, 2.328, 2.323, 2.315, 2.308, 2.304, 2.301, 2.298, 2.296, 2.294, 2.291, 2.291, 2.289, 2.291, 2.291, 2.291, 2.292, 2.293, 2.294, 2.295, 2.297, 2.299, 2.303, 2.308, 2.312, 2.315, 2.318, 2.321, 2.329, 2.339,
+ 2.329, 2.331, 2.332, 2.332, 2.326, 2.318, 2.311, 2.306, 2.304, 2.301, 2.299, 2.297, 2.295, 2.293, 2.292, 2.292, 2.292, 2.293, 2.294, 2.294, 2.296, 2.297, 2.299, 2.302, 2.306, 2.311, 2.315, 2.318, 2.319, 2.324, 2.332, 2.342,
+ 2.331, 2.333, 2.334, 2.334, 2.328, 2.321, 2.313, 2.308, 2.305, 2.303, 2.301, 2.299, 2.297, 2.295, 2.295, 2.295, 2.294, 2.296, 2.296, 2.297, 2.298, 2.299, 2.302, 2.305, 2.308, 2.314, 2.317, 2.321, 2.323, 2.327, 2.334, 2.346,
+ 2.331, 2.332, 2.334, 2.334, 2.329, 2.321, 2.314, 2.309, 2.306, 2.304, 2.303, 2.301, 2.299, 2.297, 2.295, 2.295, 2.296, 2.297, 2.298, 2.298, 2.299, 2.301, 2.303, 2.306, 2.309, 2.315, 2.319, 2.321, 2.324, 2.328, 2.337, 2.346,
+ 2.331, 2.332, 2.334, 2.334, 2.329, 2.321, 2.314, 2.311, 2.306, 2.304, 2.303, 2.302, 2.299, 2.297, 2.295, 2.295, 2.296, 2.297, 2.298, 2.298, 2.299, 2.301, 2.303, 2.306, 2.311, 2.314, 2.319, 2.323, 2.325, 2.329, 2.339, 2.348,
+ 2.329, 2.329, 2.329, 2.331, 2.326, 2.319, 2.312, 2.309, 2.304, 2.303, 2.302, 2.301, 2.298, 2.295, 2.294, 2.294, 2.295, 2.295, 2.296, 2.297, 2.299, 2.301, 2.302, 2.304, 2.308, 2.313, 2.319, 2.322, 2.325, 2.329, 2.339, 2.351,
+ 2.329, 2.329, 2.329, 2.329, 2.326, 2.317, 2.311, 2.308, 2.303, 2.302, 2.301, 2.298, 2.296, 2.295, 2.294, 2.294, 2.294, 2.294, 2.296, 2.297, 2.298, 2.299, 2.301, 2.304, 2.307, 2.312, 2.318, 2.322, 2.326, 2.331, 2.341, 2.355,
+ 2.339, 2.332, 2.331, 2.331, 2.327, 2.323, 2.316, 2.309, 2.306, 2.302, 2.301, 2.299, 2.297, 2.296, 2.295, 2.294, 2.294, 2.296, 2.297, 2.297, 2.299, 2.301, 2.303, 2.306, 2.308, 2.317, 2.322, 2.325, 2.329, 2.341, 2.353, 2.361,
+ 2.347, 2.347, 2.345, 2.343, 2.338, 2.332, 2.326, 2.322, 2.321, 2.318, 2.316, 2.315, 2.313, 2.312, 2.311, 2.311, 2.311, 2.311, 2.312, 2.315, 2.317, 2.318, 2.319, 2.323, 2.324, 2.329, 2.334, 2.337, 2.344, 2.347, 2.361, 2.364
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 3.869, 3.852, 3.844, 3.842, 3.836, 3.821, 3.807, 3.796, 3.789, 3.784, 3.778, 3.775, 3.769, 3.768, 3.765, 3.765, 3.767, 3.769, 3.772, 3.774, 3.773, 3.775, 3.779, 3.787, 3.793, 3.801, 3.806, 3.804, 3.813, 3.819, 3.855, 3.879,
+ 3.854, 3.844, 3.837, 3.836, 3.824, 3.811, 3.797, 3.789, 3.784, 3.777, 3.774, 3.769, 3.764, 3.758, 3.757, 3.758, 3.758, 3.761, 3.763, 3.764, 3.765, 3.766, 3.772, 3.778, 3.787, 3.792, 3.794, 3.798, 3.802, 3.815, 3.839, 3.873,
+ 3.838, 3.831, 3.826, 3.823, 3.813, 3.799, 3.787, 3.781, 3.773, 3.768, 3.763, 3.759, 3.753, 3.749, 3.745, 3.745, 3.745, 3.752, 3.754, 3.757, 3.757, 3.759, 3.763, 3.769, 3.773, 3.781, 3.786, 3.792, 3.798, 3.811, 3.831, 3.861,
+ 3.833, 3.822, 3.817, 3.816, 3.804, 3.788, 3.779, 3.772, 3.766, 3.759, 3.755, 3.749, 3.744, 3.741, 3.738, 3.739, 3.739, 3.741, 3.743, 3.747, 3.749, 3.751, 3.756, 3.764, 3.769, 3.776, 3.783, 3.789, 3.798, 3.809, 3.821, 3.855,
+ 3.824, 3.818, 3.808, 3.808, 3.797, 3.781, 3.772, 3.764, 3.757, 3.752, 3.747, 3.743, 3.737, 3.735, 3.733, 3.733, 3.733, 3.735, 3.737, 3.738, 3.741, 3.746, 3.749, 3.755, 3.766, 3.771, 3.781, 3.789, 3.794, 3.806, 3.818, 3.849,
+ 3.815, 3.808, 3.799, 3.801, 3.787, 3.775, 3.767, 3.757, 3.751, 3.745, 3.738, 3.734, 3.732, 3.727, 3.725, 3.723, 3.722, 3.722, 3.726, 3.729, 3.734, 3.738, 3.744, 3.749, 3.759, 3.769, 3.781, 3.788, 3.792, 3.799, 3.811, 3.841,
+ 3.804, 3.799, 3.793, 3.793, 3.783, 3.771, 3.759, 3.751, 3.744, 3.735, 3.732, 3.727, 3.723, 3.721, 3.719, 3.716, 3.716, 3.716, 3.718, 3.722, 3.727, 3.731, 3.737, 3.746, 3.756, 3.767, 3.776, 3.782, 3.788, 3.795, 3.808, 3.831,
+ 3.802, 3.797, 3.787, 3.787, 3.779, 3.762, 3.753, 3.744, 3.734, 3.727, 3.725, 3.721, 3.716, 3.714, 3.709, 3.709, 3.711, 3.711, 3.712, 3.717, 3.722, 3.725, 3.731, 3.739, 3.752, 3.762, 3.772, 3.778, 3.779, 3.789, 3.798, 3.826,
+ 3.791, 3.789, 3.784, 3.784, 3.775, 3.759, 3.746, 3.735, 3.729, 3.724, 3.718, 3.714, 3.712, 3.707, 3.704, 3.704, 3.706, 3.708, 3.709, 3.711, 3.716, 3.722, 3.726, 3.735, 3.746, 3.754, 3.767, 3.774, 3.777, 3.781, 3.794, 3.824,
+ 3.789, 3.784, 3.779, 3.781, 3.771, 3.753, 3.741, 3.732, 3.725, 3.719, 3.715, 3.711, 3.707, 3.704, 3.701, 3.701, 3.702, 3.704, 3.708, 3.709, 3.713, 3.718, 3.724, 3.731, 3.742, 3.749, 3.761, 3.768, 3.772, 3.778, 3.791, 3.822,
+ 3.789, 3.781, 3.777, 3.777, 3.764, 3.749, 3.739, 3.729, 3.722, 3.718, 3.711, 3.708, 3.705, 3.701, 3.699, 3.699, 3.699, 3.701, 3.705, 3.707, 3.711, 3.715, 3.721, 3.727, 3.738, 3.746, 3.757, 3.763, 3.765, 3.773, 3.788, 3.821,
+ 3.785, 3.779, 3.774, 3.774, 3.764, 3.747, 3.736, 3.726, 3.719, 3.711, 3.709, 3.706, 3.701, 3.698, 3.696, 3.695, 3.695, 3.698, 3.702, 3.704, 3.707, 3.712, 3.718, 3.725, 3.734, 3.741, 3.753, 3.756, 3.759, 3.764, 3.784, 3.818,
+ 3.779, 3.776, 3.773, 3.773, 3.759, 3.744, 3.733, 3.724, 3.714, 3.709, 3.706, 3.704, 3.699, 3.696, 3.694, 3.694, 3.694, 3.697, 3.701, 3.703, 3.706, 3.709, 3.714, 3.721, 3.731, 3.737, 3.749, 3.753, 3.758, 3.762, 3.783, 3.819,
+ 3.779, 3.776, 3.769, 3.769, 3.757, 3.741, 3.729, 3.721, 3.712, 3.708, 3.705, 3.701, 3.697, 3.695, 3.694, 3.694, 3.695, 3.696, 3.698, 3.702, 3.705, 3.709, 3.712, 3.717, 3.728, 3.736, 3.749, 3.752, 3.756, 3.761, 3.781, 3.815,
+ 3.779, 3.773, 3.768, 3.768, 3.756, 3.738, 3.731, 3.719, 3.711, 3.707, 3.703, 3.698, 3.695, 3.694, 3.694, 3.695, 3.695, 3.695, 3.696, 3.702, 3.705, 3.708, 3.712, 3.717, 3.728, 3.736, 3.747, 3.751, 3.754, 3.761, 3.781, 3.815,
+ 3.782, 3.773, 3.767, 3.767, 3.755, 3.738, 3.728, 3.721, 3.711, 3.707, 3.701, 3.698, 3.695, 3.693, 3.694, 3.696, 3.695, 3.695, 3.695, 3.701, 3.703, 3.706, 3.711, 3.715, 3.726, 3.735, 3.745, 3.751, 3.754, 3.763, 3.779, 3.815,
+ 3.781, 3.771, 3.767, 3.767, 3.754, 3.739, 3.726, 3.721, 3.712, 3.706, 3.701, 3.698, 3.695, 3.693, 3.693, 3.695, 3.695, 3.695, 3.696, 3.698, 3.703, 3.705, 3.709, 3.715, 3.725, 3.734, 3.745, 3.751, 3.755, 3.762, 3.783, 3.818,
+ 3.781, 3.774, 3.767, 3.767, 3.755, 3.741, 3.729, 3.722, 3.712, 3.708, 3.701, 3.699, 3.695, 3.693, 3.693, 3.694, 3.695, 3.695, 3.697, 3.698, 3.702, 3.704, 3.709, 3.713, 3.725, 3.732, 3.746, 3.751, 3.756, 3.763, 3.783, 3.821,
+ 3.781, 3.774, 3.769, 3.769, 3.756, 3.741, 3.731, 3.724, 3.713, 3.711, 3.707, 3.699, 3.697, 3.694, 3.693, 3.694, 3.695, 3.695, 3.697, 3.698, 3.702, 3.704, 3.709, 3.713, 3.724, 3.734, 3.747, 3.751, 3.756, 3.765, 3.784, 3.821,
+ 3.784, 3.776, 3.773, 3.773, 3.759, 3.742, 3.733, 3.726, 3.719, 3.711, 3.709, 3.703, 3.698, 3.695, 3.694, 3.695, 3.697, 3.696, 3.698, 3.699, 3.703, 3.706, 3.711, 3.714, 3.727, 3.735, 3.746, 3.751, 3.757, 3.766, 3.787, 3.822,
+ 3.786, 3.783, 3.774, 3.774, 3.766, 3.747, 3.737, 3.727, 3.722, 3.716, 3.711, 3.706, 3.702, 3.698, 3.697, 3.698, 3.699, 3.699, 3.701, 3.703, 3.706, 3.711, 3.713, 3.719, 3.731, 3.739, 3.748, 3.753, 3.761, 3.769, 3.789, 3.826,
+ 3.786, 3.784, 3.779, 3.779, 3.769, 3.751, 3.742, 3.732, 3.725, 3.719, 3.715, 3.711, 3.706, 3.704, 3.701, 3.701, 3.702, 3.702, 3.705, 3.707, 3.712, 3.714, 3.717, 3.724, 3.733, 3.743, 3.749, 3.758, 3.764, 3.769, 3.791, 3.826,
+ 3.793, 3.787, 3.782, 3.782, 3.774, 3.756, 3.747, 3.737, 3.729, 3.725, 3.719, 3.715, 3.712, 3.708, 3.707, 3.706, 3.707, 3.708, 3.709, 3.713, 3.714, 3.717, 3.723, 3.729, 3.736, 3.747, 3.757, 3.764, 3.768, 3.774, 3.794, 3.829,
+ 3.794, 3.791, 3.786, 3.786, 3.779, 3.762, 3.751, 3.742, 3.735, 3.729, 3.725, 3.719, 3.716, 3.711, 3.709, 3.709, 3.709, 3.711, 3.716, 3.717, 3.721, 3.723, 3.726, 3.732, 3.741, 3.752, 3.761, 3.767, 3.773, 3.779, 3.801, 3.829,
+ 3.802, 3.798, 3.793, 3.793, 3.779, 3.766, 3.754, 3.746, 3.741, 3.736, 3.731, 3.726, 3.719, 3.717, 3.716, 3.715, 3.716, 3.717, 3.719, 3.721, 3.724, 3.726, 3.731, 3.737, 3.744, 3.756, 3.766, 3.772, 3.776, 3.784, 3.807, 3.839,
+ 3.805, 3.799, 3.795, 3.795, 3.784, 3.767, 3.757, 3.749, 3.744, 3.739, 3.736, 3.731, 3.726, 3.722, 3.719, 3.719, 3.719, 3.721, 3.723, 3.725, 3.727, 3.732, 3.738, 3.742, 3.751, 3.761, 3.771, 3.775, 3.782, 3.789, 3.811, 3.841,
+ 3.804, 3.801, 3.799, 3.799, 3.787, 3.772, 3.761, 3.752, 3.746, 3.742, 3.739, 3.735, 3.729, 3.726, 3.723, 3.724, 3.725, 3.726, 3.727, 3.728, 3.732, 3.736, 3.739, 3.745, 3.754, 3.765, 3.775, 3.779, 3.785, 3.795, 3.816, 3.844,
+ 3.801, 3.799, 3.796, 3.796, 3.787, 3.773, 3.761, 3.753, 3.746, 3.743, 3.739, 3.735, 3.731, 3.726, 3.725, 3.725, 3.725, 3.726, 3.727, 3.729, 3.733, 3.736, 3.741, 3.745, 3.755, 3.766, 3.776, 3.783, 3.786, 3.797, 3.819, 3.851,
+ 3.799, 3.795, 3.788, 3.788, 3.783, 3.772, 3.759, 3.749, 3.744, 3.738, 3.735, 3.733, 3.726, 3.724, 3.722, 3.722, 3.723, 3.724, 3.725, 3.727, 3.729, 3.733, 3.736, 3.742, 3.754, 3.762, 3.772, 3.779, 3.784, 3.796, 3.821, 3.859,
+ 3.799, 3.789, 3.787, 3.788, 3.779, 3.766, 3.755, 3.749, 3.742, 3.736, 3.733, 3.727, 3.723, 3.722, 3.721, 3.719, 3.719, 3.721, 3.725, 3.726, 3.728, 3.732, 3.734, 3.741, 3.747, 3.758, 3.771, 3.778, 3.785, 3.796, 3.825, 3.862,
+ 3.824, 3.799, 3.789, 3.789, 3.788, 3.777, 3.761, 3.751, 3.743, 3.739, 3.736, 3.728, 3.726, 3.725, 3.721, 3.719, 3.721, 3.723, 3.727, 3.728, 3.729, 3.733, 3.737, 3.744, 3.755, 3.769, 3.776, 3.784, 3.793, 3.819, 3.863, 3.877,
+ 3.833, 3.833, 3.833, 3.842, 3.825, 3.815, 3.807, 3.799, 3.792, 3.788, 3.785, 3.782, 3.778, 3.777, 3.773, 3.772, 3.772, 3.774, 3.778, 3.779, 3.779, 3.785, 3.792, 3.798, 3.803, 3.811, 3.822, 3.834, 3.843, 3.846, 3.877, 3.886
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.616, 2.616, 2.618, 2.621, 2.619, 2.618, 2.615, 2.615, 2.613, 2.611, 2.609, 2.609, 2.609, 2.611, 2.611, 2.611, 2.611, 2.609, 2.608, 2.608, 2.611, 2.613, 2.613, 2.614, 2.614, 2.615, 2.615, 2.622, 2.624, 2.621, 2.624, 2.641,
+ 2.616, 2.618, 2.621, 2.623, 2.623, 2.619, 2.618, 2.616, 2.616, 2.613, 2.611, 2.611, 2.611, 2.611, 2.612, 2.612, 2.611, 2.611, 2.611, 2.611, 2.611, 2.612, 2.613, 2.612, 2.613, 2.615, 2.617, 2.621, 2.621, 2.619, 2.621, 2.641,
+ 2.621, 2.624, 2.627, 2.627, 2.625, 2.623, 2.621, 2.619, 2.618, 2.618, 2.618, 2.617, 2.616, 2.616, 2.615, 2.613, 2.612, 2.613, 2.613, 2.614, 2.614, 2.613, 2.614, 2.613, 2.614, 2.617, 2.619, 2.621, 2.621, 2.619, 2.623, 2.643,
+ 2.626, 2.627, 2.628, 2.629, 2.628, 2.625, 2.622, 2.621, 2.621, 2.622, 2.621, 2.619, 2.619, 2.618, 2.617, 2.616, 2.616, 2.616, 2.618, 2.618, 2.617, 2.617, 2.618, 2.619, 2.621, 2.623, 2.624, 2.626, 2.625, 2.624, 2.625, 2.654,
+ 2.627, 2.628, 2.628, 2.628, 2.626, 2.623, 2.622, 2.622, 2.622, 2.622, 2.621, 2.621, 2.619, 2.617, 2.617, 2.616, 2.617, 2.617, 2.618, 2.619, 2.618, 2.618, 2.618, 2.621, 2.622, 2.624, 2.626, 2.627, 2.627, 2.626, 2.628, 2.655,
+ 2.625, 2.626, 2.627, 2.626, 2.625, 2.623, 2.622, 2.621, 2.622, 2.621, 2.621, 2.619, 2.617, 2.616, 2.615, 2.616, 2.616, 2.616, 2.616, 2.616, 2.617, 2.618, 2.619, 2.621, 2.622, 2.624, 2.626, 2.628, 2.628, 2.629, 2.629, 2.655,
+ 2.626, 2.625, 2.626, 2.625, 2.625, 2.623, 2.622, 2.622, 2.622, 2.621, 2.619, 2.617, 2.616, 2.614, 2.613, 2.614, 2.614, 2.614, 2.614, 2.614, 2.616, 2.618, 2.619, 2.621, 2.623, 2.624, 2.627, 2.629, 2.631, 2.629, 2.631, 2.651,
+ 2.625, 2.625, 2.625, 2.624, 2.623, 2.623, 2.622, 2.622, 2.622, 2.621, 2.619, 2.617, 2.614, 2.613, 2.612, 2.611, 2.611, 2.612, 2.612, 2.613, 2.616, 2.618, 2.619, 2.622, 2.624, 2.626, 2.628, 2.631, 2.631, 2.631, 2.631, 2.651,
+ 2.625, 2.625, 2.624, 2.623, 2.622, 2.622, 2.622, 2.622, 2.622, 2.621, 2.617, 2.615, 2.613, 2.612, 2.611, 2.611, 2.611, 2.611, 2.611, 2.613, 2.615, 2.618, 2.619, 2.622, 2.625, 2.627, 2.631, 2.632, 2.631, 2.629, 2.631, 2.651,
+ 2.624, 2.624, 2.622, 2.622, 2.621, 2.621, 2.621, 2.621, 2.621, 2.618, 2.616, 2.614, 2.612, 2.611, 2.609, 2.609, 2.608, 2.609, 2.611, 2.611, 2.615, 2.617, 2.619, 2.621, 2.625, 2.628, 2.631, 2.632, 2.631, 2.627, 2.627, 2.651,
+ 2.622, 2.623, 2.622, 2.622, 2.621, 2.619, 2.619, 2.619, 2.618, 2.616, 2.614, 2.613, 2.611, 2.609, 2.608, 2.606, 2.607, 2.607, 2.609, 2.611, 2.615, 2.617, 2.619, 2.622, 2.626, 2.629, 2.632, 2.632, 2.631, 2.627, 2.627, 2.651,
+ 2.621, 2.622, 2.622, 2.622, 2.621, 2.619, 2.619, 2.618, 2.617, 2.614, 2.613, 2.611, 2.611, 2.607, 2.606, 2.605, 2.604, 2.605, 2.607, 2.609, 2.613, 2.616, 2.619, 2.622, 2.627, 2.631, 2.632, 2.632, 2.631, 2.627, 2.627, 2.651,
+ 2.619, 2.621, 2.623, 2.623, 2.621, 2.621, 2.619, 2.617, 2.616, 2.615, 2.613, 2.609, 2.607, 2.604, 2.602, 2.601, 2.602, 2.603, 2.605, 2.609, 2.612, 2.616, 2.619, 2.624, 2.628, 2.631, 2.632, 2.633, 2.629, 2.627, 2.627, 2.651,
+ 2.619, 2.621, 2.623, 2.623, 2.622, 2.621, 2.618, 2.617, 2.615, 2.614, 2.612, 2.608, 2.603, 2.601, 2.598, 2.597, 2.599, 2.602, 2.605, 2.608, 2.611, 2.615, 2.622, 2.625, 2.629, 2.631, 2.631, 2.633, 2.631, 2.627, 2.627, 2.651,
+ 2.621, 2.622, 2.623, 2.623, 2.622, 2.621, 2.618, 2.617, 2.616, 2.614, 2.611, 2.606, 2.601, 2.598, 2.595, 2.595, 2.597, 2.601, 2.604, 2.608, 2.612, 2.615, 2.623, 2.627, 2.629, 2.631, 2.631, 2.632, 2.631, 2.628, 2.628, 2.651,
+ 2.622, 2.623, 2.624, 2.624, 2.622, 2.621, 2.619, 2.617, 2.615, 2.613, 2.609, 2.606, 2.601, 2.596, 2.594, 2.594, 2.596, 2.599, 2.603, 2.609, 2.613, 2.617, 2.623, 2.627, 2.629, 2.631, 2.632, 2.632, 2.631, 2.629, 2.631, 2.651,
+ 2.623, 2.625, 2.625, 2.624, 2.621, 2.621, 2.619, 2.617, 2.616, 2.613, 2.608, 2.605, 2.601, 2.595, 2.593, 2.593, 2.595, 2.598, 2.604, 2.609, 2.615, 2.619, 2.625, 2.627, 2.629, 2.629, 2.632, 2.633, 2.632, 2.629, 2.631, 2.651,
+ 2.624, 2.626, 2.626, 2.623, 2.621, 2.619, 2.618, 2.617, 2.615, 2.612, 2.608, 2.605, 2.601, 2.597, 2.595, 2.595, 2.596, 2.598, 2.605, 2.609, 2.616, 2.621, 2.626, 2.627, 2.629, 2.631, 2.633, 2.633, 2.633, 2.631, 2.631, 2.655,
+ 2.624, 2.625, 2.625, 2.623, 2.621, 2.619, 2.618, 2.617, 2.614, 2.612, 2.609, 2.606, 2.602, 2.599, 2.598, 2.597, 2.598, 2.602, 2.607, 2.612, 2.619, 2.621, 2.626, 2.628, 2.629, 2.632, 2.633, 2.634, 2.633, 2.631, 2.631, 2.655,
+ 2.624, 2.625, 2.625, 2.623, 2.621, 2.621, 2.618, 2.617, 2.614, 2.612, 2.611, 2.608, 2.604, 2.602, 2.599, 2.599, 2.603, 2.606, 2.611, 2.616, 2.621, 2.624, 2.626, 2.629, 2.631, 2.632, 2.633, 2.634, 2.634, 2.633, 2.633, 2.656,
+ 2.623, 2.624, 2.625, 2.623, 2.622, 2.621, 2.619, 2.617, 2.615, 2.613, 2.611, 2.611, 2.607, 2.604, 2.604, 2.604, 2.606, 2.609, 2.613, 2.619, 2.622, 2.625, 2.628, 2.631, 2.632, 2.633, 2.633, 2.636, 2.636, 2.634, 2.634, 2.658,
+ 2.623, 2.624, 2.625, 2.623, 2.622, 2.619, 2.618, 2.616, 2.614, 2.613, 2.612, 2.611, 2.609, 2.608, 2.607, 2.608, 2.609, 2.613, 2.617, 2.621, 2.623, 2.626, 2.629, 2.631, 2.632, 2.633, 2.634, 2.635, 2.636, 2.636, 2.636, 2.661,
+ 2.623, 2.624, 2.625, 2.625, 2.623, 2.621, 2.619, 2.616, 2.615, 2.614, 2.613, 2.612, 2.612, 2.611, 2.611, 2.611, 2.614, 2.615, 2.619, 2.622, 2.625, 2.627, 2.631, 2.632, 2.633, 2.635, 2.635, 2.637, 2.637, 2.636, 2.637, 2.661,
+ 2.623, 2.624, 2.625, 2.626, 2.624, 2.621, 2.619, 2.617, 2.616, 2.615, 2.615, 2.614, 2.614, 2.614, 2.614, 2.614, 2.616, 2.619, 2.621, 2.623, 2.626, 2.628, 2.631, 2.632, 2.634, 2.635, 2.636, 2.637, 2.638, 2.637, 2.638, 2.661,
+ 2.625, 2.626, 2.627, 2.627, 2.626, 2.623, 2.619, 2.619, 2.618, 2.618, 2.618, 2.617, 2.617, 2.616, 2.616, 2.616, 2.619, 2.622, 2.623, 2.625, 2.628, 2.628, 2.631, 2.632, 2.634, 2.636, 2.638, 2.639, 2.639, 2.638, 2.638, 2.661,
+ 2.625, 2.626, 2.627, 2.628, 2.626, 2.623, 2.621, 2.619, 2.619, 2.619, 2.619, 2.619, 2.619, 2.618, 2.618, 2.619, 2.623, 2.624, 2.625, 2.627, 2.629, 2.629, 2.632, 2.633, 2.635, 2.638, 2.639, 2.639, 2.639, 2.636, 2.636, 2.662,
+ 2.625, 2.627, 2.628, 2.628, 2.626, 2.624, 2.623, 2.622, 2.621, 2.621, 2.621, 2.621, 2.621, 2.621, 2.621, 2.624, 2.624, 2.625, 2.627, 2.628, 2.631, 2.631, 2.632, 2.634, 2.636, 2.639, 2.639, 2.641, 2.639, 2.635, 2.635, 2.663,
+ 2.625, 2.626, 2.628, 2.628, 2.627, 2.625, 2.624, 2.623, 2.623, 2.622, 2.623, 2.624, 2.624, 2.625, 2.625, 2.625, 2.625, 2.626, 2.627, 2.629, 2.631, 2.632, 2.633, 2.635, 2.638, 2.641, 2.642, 2.643, 2.642, 2.636, 2.636, 2.665,
+ 2.624, 2.626, 2.628, 2.628, 2.628, 2.626, 2.624, 2.624, 2.623, 2.623, 2.623, 2.625, 2.627, 2.627, 2.626, 2.626, 2.626, 2.627, 2.628, 2.629, 2.632, 2.633, 2.635, 2.637, 2.639, 2.642, 2.644, 2.644, 2.642, 2.638, 2.638, 2.665,
+ 2.623, 2.625, 2.626, 2.627, 2.626, 2.626, 2.624, 2.623, 2.623, 2.623, 2.623, 2.623, 2.626, 2.627, 2.626, 2.626, 2.626, 2.626, 2.628, 2.628, 2.629, 2.631, 2.634, 2.636, 2.639, 2.642, 2.644, 2.643, 2.641, 2.637, 2.638, 2.659,
+ 2.623, 2.627, 2.627, 2.627, 2.627, 2.628, 2.627, 2.624, 2.624, 2.623, 2.624, 2.624, 2.628, 2.628, 2.627, 2.628, 2.628, 2.628, 2.629, 2.629, 2.631, 2.635, 2.637, 2.639, 2.641, 2.643, 2.646, 2.645, 2.643, 2.641, 2.654, 2.659,
+ 2.642, 2.641, 2.643, 2.645, 2.645, 2.644, 2.644, 2.643, 2.643, 2.642, 2.642, 2.642, 2.643, 2.644, 2.644, 2.644, 2.646, 2.646, 2.647, 2.649, 2.651, 2.652, 2.654, 2.656, 2.658, 2.661, 2.661, 2.661, 2.659, 2.654, 2.659, 2.659
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.391, 1.394, 1.395, 1.396, 1.398, 1.398, 1.398, 1.398, 1.398, 1.399, 1.399, 1.398, 1.398, 1.399, 1.399, 1.399, 1.399, 1.398, 1.398, 1.398, 1.399, 1.399, 1.398, 1.397, 1.397, 1.398, 1.399, 1.401, 1.399, 1.397, 1.399, 1.402,
+ 1.393, 1.395, 1.396, 1.398, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.401, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.398, 1.398, 1.399, 1.401, 1.401, 1.399, 1.398, 1.399, 1.402,
+ 1.398, 1.401, 1.401, 1.401, 1.401, 1.401, 1.402, 1.402, 1.402, 1.402, 1.403, 1.404, 1.404, 1.403, 1.403, 1.403, 1.403, 1.402, 1.401, 1.401, 1.401, 1.401, 1.401, 1.399, 1.399, 1.401, 1.401, 1.401, 1.401, 1.399, 1.401, 1.406,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.405, 1.405, 1.404, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.402, 1.403, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.403, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.402, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.404, 1.405, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.403, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.405, 1.404, 1.404, 1.404, 1.404, 1.405, 1.404, 1.405, 1.405, 1.405, 1.406, 1.406, 1.404, 1.405, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.404, 1.405, 1.406, 1.406, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.406, 1.406, 1.407, 1.407, 1.406, 1.405, 1.405, 1.412,
+ 1.402, 1.402, 1.401, 1.401, 1.402, 1.403, 1.404, 1.405, 1.406, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.404, 1.404, 1.403, 1.404, 1.404, 1.405, 1.405, 1.406, 1.406, 1.407, 1.407, 1.408, 1.408, 1.407, 1.405, 1.405, 1.412,
+ 1.402, 1.402, 1.401, 1.401, 1.402, 1.403, 1.404, 1.405, 1.406, 1.405, 1.405, 1.404, 1.404, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.405, 1.405, 1.406, 1.406, 1.407, 1.408, 1.408, 1.408, 1.407, 1.405, 1.405, 1.413,
+ 1.402, 1.402, 1.402, 1.402, 1.402, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.403, 1.403, 1.402, 1.402, 1.402, 1.403, 1.403, 1.404, 1.405, 1.406, 1.406, 1.407, 1.408, 1.409, 1.409, 1.408, 1.407, 1.405, 1.405, 1.414,
+ 1.402, 1.402, 1.402, 1.402, 1.403, 1.403, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.403, 1.402, 1.402, 1.401, 1.401, 1.402, 1.403, 1.403, 1.404, 1.405, 1.406, 1.407, 1.409, 1.409, 1.409, 1.409, 1.407, 1.405, 1.405, 1.413,
+ 1.402, 1.402, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.401, 1.401, 1.399, 1.399, 1.401, 1.402, 1.403, 1.404, 1.405, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.408, 1.405, 1.405, 1.413,
+ 1.402, 1.403, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.402, 1.401, 1.399, 1.398, 1.398, 1.399, 1.399, 1.401, 1.403, 1.404, 1.405, 1.407, 1.409, 1.409, 1.409, 1.409, 1.409, 1.408, 1.406, 1.406, 1.413,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.401, 1.398, 1.397, 1.397, 1.398, 1.399, 1.401, 1.403, 1.404, 1.405, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.408, 1.406, 1.406, 1.413,
+ 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.399, 1.397, 1.396, 1.396, 1.397, 1.399, 1.401, 1.403, 1.404, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.408, 1.406, 1.406, 1.413,
+ 1.403, 1.404, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.399, 1.397, 1.396, 1.396, 1.397, 1.398, 1.401, 1.403, 1.406, 1.407, 1.409, 1.409, 1.411, 1.409, 1.409, 1.409, 1.408, 1.407, 1.407, 1.413,
+ 1.403, 1.404, 1.404, 1.403, 1.403, 1.404, 1.404, 1.405, 1.404, 1.404, 1.403, 1.402, 1.399, 1.398, 1.397, 1.397, 1.398, 1.399, 1.402, 1.404, 1.406, 1.408, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.409, 1.407, 1.407, 1.414,
+ 1.403, 1.403, 1.404, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.403, 1.403, 1.402, 1.401, 1.399, 1.398, 1.398, 1.398, 1.401, 1.403, 1.404, 1.408, 1.408, 1.409, 1.409, 1.409, 1.411, 1.411, 1.409, 1.408, 1.407, 1.407, 1.415,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.403, 1.403, 1.403, 1.401, 1.401, 1.399, 1.399, 1.401, 1.402, 1.404, 1.407, 1.408, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.409, 1.407, 1.407, 1.415,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.403, 1.403, 1.403, 1.402, 1.401, 1.401, 1.401, 1.402, 1.404, 1.406, 1.407, 1.408, 1.409, 1.411, 1.411, 1.411, 1.409, 1.409, 1.409, 1.409, 1.408, 1.408, 1.415,
+ 1.402, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.405, 1.406, 1.408, 1.408, 1.409, 1.411, 1.411, 1.411, 1.411, 1.409, 1.409, 1.409, 1.408, 1.408, 1.416,
+ 1.403, 1.402, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.403, 1.404, 1.404, 1.404, 1.405, 1.406, 1.407, 1.408, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.411, 1.411, 1.409, 1.408, 1.408, 1.416,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.406, 1.407, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.408, 1.408, 1.417,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.406, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.408, 1.408, 1.417,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.405, 1.406, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.409, 1.408, 1.408, 1.417,
+ 1.403, 1.403, 1.403, 1.403, 1.404, 1.403, 1.403, 1.404, 1.404, 1.405, 1.405, 1.406, 1.406, 1.406, 1.407, 1.408, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.407, 1.407, 1.416,
+ 1.402, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.406, 1.407, 1.407, 1.407, 1.408, 1.409, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.409, 1.407, 1.407, 1.417,
+ 1.402, 1.403, 1.403, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.406, 1.406, 1.407, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.409, 1.411, 1.411, 1.411, 1.412, 1.411, 1.409, 1.407, 1.407, 1.415,
+ 1.402, 1.402, 1.403, 1.403, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.406, 1.407, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.412, 1.411, 1.409, 1.407, 1.407, 1.413,
+ 1.402, 1.402, 1.403, 1.403, 1.405, 1.406, 1.406, 1.406, 1.406, 1.406, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.412, 1.412, 1.413, 1.413, 1.411, 1.408, 1.411, 1.413,
+ 1.406, 1.406, 1.408, 1.408, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.411, 1.411, 1.414, 1.414, 1.414, 1.414, 1.415, 1.415, 1.415, 1.415, 1.416, 1.416, 1.416, 1.417, 1.418, 1.418, 1.417, 1.417, 1.414, 1.411, 1.413, 1.413
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 1.554, 1.522, 1.466, 1.422, 1.385, 1.351, 1.322, 1.294, 1.269, 1.246, 1.228, 1.214, 1.207, 1.202, 1.199, 1.199, 1.199, 1.199, 1.202, 1.207, 1.218, 1.235, 1.255, 1.279, 1.305, 1.333, 1.365, 1.402, 1.447, 1.508, 1.602, 1.638,
+ 1.522, 1.478, 1.431, 1.391, 1.355, 1.323, 1.298, 1.271, 1.247, 1.228, 1.212, 1.199, 1.187, 1.179, 1.173, 1.172, 1.172, 1.174, 1.179, 1.189, 1.201, 1.216, 1.235, 1.256, 1.282, 1.308, 1.335, 1.368, 1.411, 1.461, 1.535, 1.602,
+ 1.479, 1.449, 1.407, 1.367, 1.332, 1.301, 1.271, 1.247, 1.226, 1.208, 1.191, 1.178, 1.166, 1.158, 1.153, 1.151, 1.151, 1.153, 1.159, 1.168, 1.179, 1.194, 1.212, 1.234, 1.256, 1.282, 1.311, 1.343, 1.382, 1.427, 1.489, 1.535,
+ 1.454, 1.423, 1.383, 1.345, 1.309, 1.278, 1.249, 1.226, 1.206, 1.187, 1.171, 1.158, 1.146, 1.138, 1.132, 1.129, 1.129, 1.133, 1.139, 1.147, 1.159, 1.173, 1.191, 1.212, 1.234, 1.261, 1.288, 1.321, 1.357, 1.401, 1.455, 1.489,
+ 1.433, 1.401, 1.362, 1.325, 1.289, 1.258, 1.231, 1.206, 1.187, 1.169, 1.153, 1.138, 1.129, 1.121, 1.115, 1.112, 1.112, 1.114, 1.121, 1.129, 1.141, 1.155, 1.172, 1.191, 1.214, 1.241, 1.269, 1.301, 1.337, 1.377, 1.428, 1.457,
+ 1.415, 1.382, 1.343, 1.306, 1.273, 1.241, 1.213, 1.189, 1.169, 1.153, 1.137, 1.123, 1.112, 1.105, 1.097, 1.095, 1.095, 1.098, 1.103, 1.112, 1.124, 1.139, 1.155, 1.173, 1.197, 1.222, 1.252, 1.282, 1.317, 1.356, 1.405, 1.434,
+ 1.398, 1.363, 1.325, 1.289, 1.256, 1.224, 1.198, 1.175, 1.155, 1.137, 1.123, 1.108, 1.097, 1.089, 1.083, 1.079, 1.079, 1.083, 1.088, 1.097, 1.109, 1.124, 1.139, 1.158, 1.181, 1.206, 1.234, 1.266, 1.299, 1.339, 1.384, 1.415,
+ 1.382, 1.347, 1.309, 1.274, 1.242, 1.211, 1.185, 1.162, 1.142, 1.124, 1.108, 1.095, 1.083, 1.075, 1.069, 1.066, 1.066, 1.068, 1.074, 1.083, 1.096, 1.109, 1.125, 1.145, 1.166, 1.191, 1.219, 1.251, 1.285, 1.324, 1.367, 1.399,
+ 1.369, 1.334, 1.296, 1.261, 1.228, 1.199, 1.173, 1.151, 1.131, 1.112, 1.095, 1.083, 1.071, 1.062, 1.056, 1.053, 1.053, 1.055, 1.061, 1.069, 1.083, 1.096, 1.112, 1.132, 1.153, 1.178, 1.206, 1.237, 1.271, 1.309, 1.353, 1.385,
+ 1.359, 1.321, 1.284, 1.251, 1.217, 1.189, 1.164, 1.141, 1.121, 1.102, 1.086, 1.071, 1.061, 1.049, 1.045, 1.042, 1.042, 1.043, 1.051, 1.061, 1.069, 1.085, 1.101, 1.121, 1.143, 1.167, 1.195, 1.225, 1.259, 1.298, 1.341, 1.375,
+ 1.351, 1.312, 1.275, 1.241, 1.209, 1.181, 1.155, 1.133, 1.112, 1.092, 1.076, 1.061, 1.049, 1.041, 1.034, 1.032, 1.032, 1.035, 1.041, 1.051, 1.061, 1.075, 1.092, 1.112, 1.133, 1.158, 1.185, 1.216, 1.249, 1.288, 1.331, 1.364,
+ 1.344, 1.303, 1.267, 1.233, 1.201, 1.173, 1.147, 1.124, 1.104, 1.085, 1.067, 1.053, 1.041, 1.033, 1.024, 1.022, 1.022, 1.025, 1.034, 1.041, 1.053, 1.066, 1.083, 1.103, 1.126, 1.149, 1.177, 1.207, 1.241, 1.279, 1.321, 1.357,
+ 1.339, 1.297, 1.261, 1.226, 1.194, 1.166, 1.142, 1.119, 1.098, 1.078, 1.061, 1.046, 1.034, 1.024, 1.017, 1.014, 1.014, 1.017, 1.025, 1.034, 1.046, 1.059, 1.077, 1.096, 1.118, 1.143, 1.169, 1.201, 1.235, 1.273, 1.314, 1.352,
+ 1.337, 1.293, 1.256, 1.223, 1.191, 1.163, 1.136, 1.114, 1.093, 1.074, 1.056, 1.041, 1.027, 1.017, 1.012, 1.006, 1.006, 1.013, 1.017, 1.028, 1.041, 1.055, 1.072, 1.092, 1.114, 1.138, 1.165, 1.195, 1.229, 1.268, 1.309, 1.348,
+ 1.337, 1.291, 1.253, 1.219, 1.187, 1.159, 1.133, 1.109, 1.089, 1.071, 1.053, 1.037, 1.023, 1.012, 1.006, 1.002, 1.003, 1.006, 1.013, 1.023, 1.038, 1.052, 1.069, 1.089, 1.111, 1.135, 1.161, 1.192, 1.226, 1.264, 1.306, 1.348,
+ 1.337, 1.291, 1.253, 1.218, 1.186, 1.157, 1.132, 1.109, 1.088, 1.068, 1.049, 1.035, 1.021, 1.009, 1.001, 1.001, 1.001, 1.003, 1.011, 1.021, 1.035, 1.051, 1.069, 1.087, 1.109, 1.133, 1.161, 1.189, 1.224, 1.262, 1.304, 1.347,
+ 1.341, 1.292, 1.253, 1.218, 1.186, 1.157, 1.132, 1.109, 1.088, 1.068, 1.049, 1.034, 1.021, 1.009, 1.001, 1.001, 1.001, 1.003, 1.011, 1.021, 1.035, 1.051, 1.069, 1.087, 1.109, 1.133, 1.161, 1.189, 1.224, 1.262, 1.304, 1.347,
+ 1.348, 1.298, 1.255, 1.219, 1.188, 1.159, 1.134, 1.111, 1.088, 1.069, 1.051, 1.035, 1.021, 1.009, 1.003, 1.001, 1.002, 1.004, 1.011, 1.022, 1.036, 1.053, 1.071, 1.089, 1.111, 1.135, 1.162, 1.191, 1.226, 1.264, 1.306, 1.347,
+ 1.354, 1.306, 1.258, 1.222, 1.191, 1.162, 1.135, 1.113, 1.092, 1.073, 1.054, 1.038, 1.024, 1.014, 1.008, 1.003, 1.004, 1.008, 1.014, 1.026, 1.039, 1.056, 1.073, 1.093, 1.115, 1.139, 1.165, 1.195, 1.229, 1.267, 1.309, 1.349,
+ 1.358, 1.312, 1.263, 1.227, 1.195, 1.167, 1.141, 1.117, 1.097, 1.078, 1.061, 1.043, 1.029, 1.021, 1.014, 1.008, 1.008, 1.014, 1.021, 1.032, 1.045, 1.061, 1.078, 1.097, 1.119, 1.144, 1.169, 1.201, 1.234, 1.272, 1.315, 1.353,
+ 1.364, 1.319, 1.269, 1.234, 1.201, 1.174, 1.148, 1.124, 1.103, 1.084, 1.067, 1.052, 1.038, 1.029, 1.021, 1.016, 1.016, 1.021, 1.029, 1.038, 1.051, 1.067, 1.084, 1.103, 1.126, 1.151, 1.176, 1.207, 1.241, 1.279, 1.321, 1.358,
+ 1.371, 1.326, 1.277, 1.242, 1.209, 1.181, 1.155, 1.132, 1.111, 1.092, 1.075, 1.061, 1.049, 1.038, 1.029, 1.027, 1.027, 1.029, 1.038, 1.047, 1.061, 1.075, 1.092, 1.111, 1.133, 1.157, 1.185, 1.213, 1.247, 1.286, 1.329, 1.365,
+ 1.379, 1.334, 1.287, 1.251, 1.219, 1.191, 1.164, 1.141, 1.119, 1.101, 1.085, 1.071, 1.061, 1.049, 1.041, 1.038, 1.038, 1.041, 1.047, 1.059, 1.071, 1.084, 1.101, 1.119, 1.141, 1.165, 1.193, 1.223, 1.257, 1.295, 1.338, 1.374,
+ 1.389, 1.343, 1.298, 1.262, 1.231, 1.201, 1.174, 1.151, 1.131, 1.111, 1.095, 1.083, 1.071, 1.061, 1.054, 1.051, 1.051, 1.054, 1.059, 1.071, 1.081, 1.094, 1.111, 1.129, 1.152, 1.176, 1.203, 1.235, 1.269, 1.307, 1.351, 1.384,
+ 1.401, 1.351, 1.311, 1.274, 1.242, 1.214, 1.187, 1.164, 1.142, 1.124, 1.108, 1.095, 1.083, 1.074, 1.068, 1.066, 1.066, 1.068, 1.073, 1.081, 1.094, 1.108, 1.123, 1.141, 1.164, 1.188, 1.215, 1.247, 1.281, 1.321, 1.364, 1.396,
+ 1.412, 1.366, 1.327, 1.289, 1.257, 1.227, 1.201, 1.176, 1.156, 1.137, 1.122, 1.108, 1.096, 1.088, 1.083, 1.081, 1.081, 1.082, 1.087, 1.095, 1.108, 1.122, 1.136, 1.154, 1.177, 1.201, 1.229, 1.261, 1.296, 1.337, 1.382, 1.409,
+ 1.421, 1.383, 1.343, 1.306, 1.273, 1.243, 1.216, 1.192, 1.169, 1.152, 1.137, 1.122, 1.111, 1.103, 1.098, 1.095, 1.095, 1.097, 1.102, 1.111, 1.123, 1.136, 1.152, 1.169, 1.191, 1.217, 1.246, 1.278, 1.314, 1.354, 1.399, 1.429,
+ 1.434, 1.402, 1.362, 1.324, 1.291, 1.261, 1.232, 1.208, 1.187, 1.168, 1.152, 1.138, 1.127, 1.119, 1.114, 1.112, 1.112, 1.115, 1.121, 1.128, 1.139, 1.152, 1.169, 1.186, 1.209, 1.234, 1.262, 1.295, 1.332, 1.372, 1.419, 1.451,
+ 1.453, 1.422, 1.382, 1.344, 1.309, 1.278, 1.249, 1.226, 1.204, 1.187, 1.168, 1.155, 1.144, 1.135, 1.131, 1.131, 1.131, 1.133, 1.138, 1.146, 1.157, 1.171, 1.186, 1.206, 1.227, 1.252, 1.281, 1.314, 1.351, 1.393, 1.442, 1.473,
+ 1.475, 1.446, 1.404, 1.366, 1.329, 1.298, 1.269, 1.245, 1.224, 1.204, 1.188, 1.174, 1.163, 1.154, 1.149, 1.148, 1.148, 1.152, 1.156, 1.164, 1.176, 1.189, 1.206, 1.226, 1.247, 1.274, 1.303, 1.336, 1.374, 1.417, 1.471, 1.505,
+ 1.503, 1.472, 1.428, 1.389, 1.353, 1.321, 1.291, 1.266, 1.245, 1.224, 1.207, 1.192, 1.183, 1.174, 1.169, 1.167, 1.168, 1.169, 1.175, 1.183, 1.195, 1.209, 1.226, 1.247, 1.267, 1.294, 1.325, 1.359, 1.397, 1.445, 1.505, 1.548,
+ 1.534, 1.503, 1.455, 1.413, 1.378, 1.344, 1.315, 1.289, 1.265, 1.243, 1.224, 1.207, 1.196, 1.192, 1.189, 1.189, 1.189, 1.189, 1.192, 1.198, 1.209, 1.226, 1.244, 1.266, 1.291, 1.318, 1.349, 1.383, 1.425, 1.475, 1.548, 1.591
+ ],
+ "sigma": 0.00095,
+ "sigma_Cb": 0.00098
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2850,
+ "ccm":
+ [
+ 1.97469, -0.71439, -0.26031,
+ -0.43521, 2.09769, -0.66248,
+ -0.04826, -0.84642, 1.89468
+ ]
+ },
+ {
+ "ct": 2960,
+ "ccm":
+ [
+ 2.12952, -0.91185, -0.21768,
+ -0.38018, 1.90789, -0.52771,
+ 0.03988, -1.10079, 2.06092
+ ]
+ },
+ {
+ "ct": 3580,
+ "ccm":
+ [
+ 2.03422, -0.80048, -0.23374,
+ -0.39089, 1.97221, -0.58132,
+ -0.08969, -0.61439, 1.70408
+ ]
+ },
+ {
+ "ct": 4559,
+ "ccm":
+ [
+ 2.15423, -0.98143, -0.17279,
+ -0.38131, 2.14763, -0.76632,
+ -0.10069, -0.54383, 1.64452
+ ]
+ },
+ {
+ "ct": 5881,
+ "ccm":
+ [
+ 2.18464, -0.95493, -0.22971,
+ -0.36826, 2.00298, -0.63471,
+ -0.15219, -0.38055, 1.53274
+ ]
+ },
+ {
+ "ct": 7600,
+ "ccm":
+ [
+ 2.30687, -0.97295, -0.33392,
+ -0.30872, 2.32779, -1.01908,
+ -0.17761, -0.55891, 1.73651
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.cac":
+ {
+ "strength": 1.0,
+ "lut_rx":
+ [
+ -0.46, -0.31, -0.17, -0.05, 0.04, 0.14, 0.28, 0.36, 0.58,
+ -0.43, -0.28, -0.16, -0.05, 0.05, 0.14, 0.24, 0.36, 0.58,
+ -0.42, -0.27, -0.15, -0.05, 0.05, 0.14, 0.23, 0.34, 0.58,
+ -0.39, -0.25, -0.14, -0.04, 0.05, 0.15, 0.24, 0.35, 0.56,
+ -0.35, -0.24, -0.14, -0.04, 0.05, 0.14, 0.25, 0.35, 0.56,
+ -0.33, -0.22, -0.13, -0.04, 0.04, 0.13, 0.24, 0.33, 0.54,
+ -0.33, -0.22, -0.13, -0.04, 0.04, 0.13, 0.23, 0.31, 0.5,
+ -0.32, -0.23, -0.13, -0.04, 0.04, 0.12, 0.21, 0.29, 0.46,
+ -0.33, -0.24, -0.15, -0.05, 0.03, 0.11, 0.19, 0.26, 0.43
+ ],
+ "lut_ry":
+ [
+ -0.39, -0.34, -0.31, -0.29, -0.27, -0.29, -0.32, -0.31, -0.32,
+ -0.29, -0.24, -0.22, -0.21, -0.22, -0.21, -0.21, -0.22, -0.23,
+ -0.22, -0.17, -0.17, -0.17, -0.17, -0.17, -0.16, -0.16, -0.18,
+ -0.13, -0.09, -0.09, -0.1, -0.1, -0.1, -0.09, -0.08, -0.11,
+ -0.04, -0.02, -0.03, -0.03, -0.03, -0.03, -0.02, -0.01, -0.02,
+ 0.03, 0.05, 0.03, 0.03, 0.02, 0.03, 0.04, 0.06, 0.05,
+ 0.11, 0.11, 0.09, 0.08, 0.09, 0.09, 0.1, 0.11, 0.11,
+ 0.17, 0.16, 0.14, 0.13, 0.13, 0.13, 0.14, 0.15, 0.15,
+ 0.24, 0.23, 0.21, 0.19, 0.18, 0.2, 0.2, 0.2, 0.21
+ ],
+ "lut_bx":
+ [
+ -0.33, -0.22, -0.13, -0.05, 0.01, 0.09, 0.19, 0.25, 0.39,
+ -0.3, -0.19, -0.12, -0.04, 0.01, 0.06, 0.15, 0.23, 0.38,
+ -0.28, -0.18, -0.1, -0.04, 0.01, 0.06, 0.14, 0.22, 0.38,
+ -0.25, -0.16, -0.09, -0.04, 0.01, 0.06, 0.14, 0.23, 0.39,
+ -0.22, -0.15, -0.09, -0.03, 0.01, 0.06, 0.14, 0.23, 0.42,
+ -0.21, -0.14, -0.09, -0.04, 0.0, 0.06, 0.13, 0.21, 0.39,
+ -0.21, -0.14, -0.08, -0.04, 0.0, 0.06, 0.13, 0.2, 0.34,
+ -0.21, -0.14, -0.08, -0.04, 0.0, 0.06, 0.12, 0.19, 0.31,
+ -0.21, -0.15, -0.08, -0.03, 0.0, 0.06, 0.12, 0.17, 0.29
+ ],
+ "lut_by":
+ [
+ -0.3, -0.24, -0.21, -0.19, -0.19, -0.19, -0.23, -0.23, -0.27,
+ -0.23, -0.17, -0.14, -0.12, -0.12, -0.13, -0.15, -0.17, -0.21,
+ -0.17, -0.11, -0.09, -0.08, -0.08, -0.08, -0.1, -0.11, -0.16,
+ -0.09, -0.05, -0.04, -0.03, -0.03, -0.03, -0.04, -0.06, -0.11,
+ -0.03, -0.01, 0.0, 0.01, 0.01, 0.01, 0.0, -0.0, -0.05,
+ 0.02, 0.04, 0.04, 0.04, 0.05, 0.05, 0.05, 0.05, 0.01,
+ 0.07, 0.08, 0.09, 0.09, 0.1, 0.1, 0.1, 0.09, 0.06,
+ 0.11, 0.12, 0.11, 0.12, 0.12, 0.13, 0.13, 0.13, 0.1,
+ 0.16, 0.17, 0.16, 0.16, 0.16, 0.17, 0.17, 0.17, 0.15
+ ]
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx477_noir.json b/src/ipa/rpi/pisp/data/imx477_noir.json
new file mode 100644
index 00000000..defc4f4d
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx477_noir.json
@@ -0,0 +1,1148 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 12000,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 740,
+ "reference_Y": 15051
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.809
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 204,
+ "slope": 0.0061
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "bayes": 0
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.359, 2.354, 2.351, 2.351, 2.343, 2.337, 2.331, 2.325, 2.323, 2.321, 2.317, 2.315, 2.313, 2.313, 2.311, 2.312, 2.312, 2.313, 2.315, 2.315, 2.316, 2.317, 2.319, 2.323, 2.326, 2.329, 2.332, 2.332, 2.335, 2.337, 2.352, 2.363,
+ 2.352, 2.351, 2.349, 2.346, 2.342, 2.334, 2.328, 2.324, 2.321, 2.317, 2.315, 2.314, 2.312, 2.311, 2.311, 2.311, 2.311, 2.311, 2.312, 2.314, 2.315, 2.316, 2.317, 2.319, 2.324, 2.326, 2.328, 2.329, 2.331, 2.337, 2.348, 2.355,
+ 2.346, 2.346, 2.345, 2.344, 2.338, 2.329, 2.325, 2.319, 2.316, 2.314, 2.311, 2.309, 2.308, 2.306, 2.304, 2.304, 2.305, 2.307, 2.308, 2.309, 2.311, 2.311, 2.313, 2.316, 2.319, 2.322, 2.325, 2.326, 2.328, 2.335, 2.343, 2.349,
+ 2.342, 2.342, 2.341, 2.338, 2.332, 2.326, 2.319, 2.316, 2.312, 2.309, 2.308, 2.305, 2.303, 2.302, 2.301, 2.301, 2.302, 2.303, 2.304, 2.305, 2.305, 2.307, 2.311, 2.313, 2.315, 2.319, 2.321, 2.325, 2.328, 2.333, 2.338, 2.348,
+ 2.337, 2.337, 2.337, 2.336, 2.331, 2.322, 2.317, 2.312, 2.309, 2.307, 2.304, 2.302, 2.299, 2.299, 2.298, 2.298, 2.299, 2.299, 2.301, 2.302, 2.302, 2.304, 2.305, 2.309, 2.314, 2.316, 2.321, 2.324, 2.326, 2.329, 2.335, 2.343,
+ 2.335, 2.334, 2.333, 2.333, 2.326, 2.318, 2.313, 2.309, 2.306, 2.302, 2.299, 2.297, 2.297, 2.296, 2.295, 2.295, 2.294, 2.295, 2.296, 2.298, 2.298, 2.301, 2.303, 2.305, 2.311, 2.315, 2.319, 2.323, 2.325, 2.329, 2.333, 2.339,
+ 2.329, 2.331, 2.329, 2.329, 2.325, 2.315, 2.309, 2.306, 2.302, 2.299, 2.297, 2.295, 2.293, 2.292, 2.291, 2.291, 2.291, 2.291, 2.293, 2.294, 2.296, 2.298, 2.301, 2.304, 2.307, 2.313, 2.317, 2.319, 2.323, 2.327, 2.331, 2.339,
+ 2.329, 2.328, 2.328, 2.328, 2.321, 2.313, 2.307, 2.303, 2.299, 2.295, 2.294, 2.292, 2.289, 2.289, 2.288, 2.288, 2.288, 2.289, 2.289, 2.292, 2.294, 2.295, 2.297, 2.301, 2.306, 2.311, 2.315, 2.318, 2.319, 2.323, 2.329, 2.335,
+ 2.326, 2.327, 2.325, 2.325, 2.319, 2.311, 2.305, 2.299, 2.296, 2.293, 2.291, 2.289, 2.288, 2.287, 2.285, 2.285, 2.286, 2.288, 2.288, 2.289, 2.291, 2.294, 2.295, 2.298, 2.304, 2.308, 2.313, 2.315, 2.317, 2.319, 2.327, 2.335,
+ 2.325, 2.325, 2.323, 2.323, 2.317, 2.309, 2.303, 2.298, 2.294, 2.292, 2.289, 2.287, 2.286, 2.285, 2.284, 2.284, 2.284, 2.285, 2.287, 2.289, 2.291, 2.291, 2.294, 2.297, 2.302, 2.305, 2.309, 2.313, 2.315, 2.317, 2.325, 2.334,
+ 2.322, 2.324, 2.322, 2.322, 2.316, 2.306, 2.301, 2.296, 2.292, 2.289, 2.287, 2.286, 2.285, 2.284, 2.283, 2.283, 2.283, 2.284, 2.286, 2.288, 2.289, 2.291, 2.293, 2.296, 2.301, 2.304, 2.308, 2.311, 2.312, 2.315, 2.323, 2.333,
+ 2.321, 2.323, 2.322, 2.322, 2.314, 2.306, 2.299, 2.294, 2.291, 2.288, 2.286, 2.285, 2.284, 2.282, 2.281, 2.282, 2.282, 2.283, 2.284, 2.286, 2.289, 2.291, 2.291, 2.294, 2.297, 2.302, 2.306, 2.308, 2.311, 2.312, 2.322, 2.332,
+ 2.319, 2.321, 2.321, 2.321, 2.314, 2.305, 2.297, 2.293, 2.289, 2.287, 2.285, 2.284, 2.283, 2.281, 2.281, 2.281, 2.282, 2.283, 2.283, 2.285, 2.287, 2.289, 2.291, 2.292, 2.297, 2.301, 2.305, 2.307, 2.309, 2.312, 2.321, 2.333,
+ 2.319, 2.321, 2.319, 2.319, 2.314, 2.303, 2.296, 2.293, 2.289, 2.286, 2.285, 2.283, 2.282, 2.281, 2.281, 2.281, 2.282, 2.282, 2.283, 2.284, 2.286, 2.288, 2.289, 2.291, 2.296, 2.301, 2.305, 2.307, 2.308, 2.312, 2.321, 2.332,
+ 2.319, 2.321, 2.319, 2.319, 2.313, 2.303, 2.296, 2.291, 2.289, 2.286, 2.284, 2.282, 2.281, 2.281, 2.281, 2.281, 2.282, 2.282, 2.283, 2.284, 2.286, 2.287, 2.288, 2.291, 2.295, 2.299, 2.304, 2.306, 2.307, 2.311, 2.321, 2.332,
+ 2.319, 2.321, 2.319, 2.319, 2.313, 2.303, 2.297, 2.292, 2.289, 2.287, 2.285, 2.282, 2.281, 2.281, 2.282, 2.282, 2.282, 2.282, 2.283, 2.284, 2.285, 2.286, 2.288, 2.291, 2.295, 2.299, 2.303, 2.306, 2.307, 2.312, 2.321, 2.331,
+ 2.318, 2.319, 2.319, 2.319, 2.313, 2.303, 2.297, 2.292, 2.289, 2.286, 2.285, 2.282, 2.281, 2.281, 2.281, 2.282, 2.282, 2.282, 2.282, 2.283, 2.285, 2.286, 2.287, 2.291, 2.294, 2.298, 2.303, 2.306, 2.307, 2.311, 2.321, 2.331,
+ 2.319, 2.319, 2.319, 2.319, 2.313, 2.302, 2.297, 2.292, 2.289, 2.287, 2.285, 2.283, 2.282, 2.281, 2.281, 2.282, 2.283, 2.283, 2.283, 2.283, 2.285, 2.286, 2.287, 2.289, 2.294, 2.297, 2.303, 2.305, 2.308, 2.313, 2.321, 2.331,
+ 2.319, 2.319, 2.319, 2.319, 2.313, 2.303, 2.299, 2.293, 2.291, 2.287, 2.285, 2.283, 2.282, 2.281, 2.281, 2.282, 2.283, 2.283, 2.283, 2.283, 2.285, 2.286, 2.288, 2.291, 2.294, 2.298, 2.304, 2.306, 2.308, 2.312, 2.322, 2.331,
+ 2.319, 2.321, 2.321, 2.321, 2.315, 2.305, 2.301, 2.295, 2.292, 2.289, 2.286, 2.285, 2.283, 2.282, 2.282, 2.282, 2.284, 2.283, 2.284, 2.284, 2.285, 2.287, 2.288, 2.291, 2.294, 2.299, 2.304, 2.306, 2.309, 2.313, 2.322, 2.334,
+ 2.321, 2.322, 2.322, 2.322, 2.317, 2.307, 2.301, 2.296, 2.292, 2.291, 2.288, 2.286, 2.285, 2.284, 2.283, 2.284, 2.285, 2.284, 2.285, 2.285, 2.287, 2.288, 2.289, 2.293, 2.297, 2.301, 2.305, 2.308, 2.311, 2.314, 2.323, 2.335,
+ 2.322, 2.324, 2.324, 2.324, 2.319, 2.309, 2.303, 2.297, 2.295, 2.292, 2.291, 2.288, 2.286, 2.286, 2.285, 2.286, 2.286, 2.286, 2.287, 2.288, 2.289, 2.289, 2.291, 2.294, 2.299, 2.302, 2.307, 2.311, 2.312, 2.316, 2.325, 2.335,
+ 2.324, 2.326, 2.325, 2.326, 2.321, 2.311, 2.305, 2.301, 2.297, 2.295, 2.293, 2.291, 2.289, 2.289, 2.288, 2.288, 2.287, 2.288, 2.289, 2.291, 2.292, 2.292, 2.295, 2.299, 2.301, 2.304, 2.309, 2.312, 2.315, 2.319, 2.327, 2.337,
+ 2.329, 2.329, 2.328, 2.328, 2.323, 2.315, 2.308, 2.304, 2.301, 2.298, 2.296, 2.294, 2.291, 2.291, 2.289, 2.291, 2.291, 2.291, 2.292, 2.293, 2.294, 2.295, 2.297, 2.299, 2.303, 2.308, 2.312, 2.315, 2.318, 2.321, 2.329, 2.339,
+ 2.329, 2.331, 2.332, 2.332, 2.326, 2.318, 2.311, 2.306, 2.304, 2.301, 2.299, 2.297, 2.295, 2.293, 2.292, 2.292, 2.292, 2.293, 2.294, 2.294, 2.296, 2.297, 2.299, 2.302, 2.306, 2.311, 2.315, 2.318, 2.319, 2.324, 2.332, 2.342,
+ 2.331, 2.333, 2.334, 2.334, 2.328, 2.321, 2.313, 2.308, 2.305, 2.303, 2.301, 2.299, 2.297, 2.295, 2.295, 2.295, 2.294, 2.296, 2.296, 2.297, 2.298, 2.299, 2.302, 2.305, 2.308, 2.314, 2.317, 2.321, 2.323, 2.327, 2.334, 2.346,
+ 2.331, 2.332, 2.334, 2.334, 2.329, 2.321, 2.314, 2.309, 2.306, 2.304, 2.303, 2.301, 2.299, 2.297, 2.295, 2.295, 2.296, 2.297, 2.298, 2.298, 2.299, 2.301, 2.303, 2.306, 2.309, 2.315, 2.319, 2.321, 2.324, 2.328, 2.337, 2.346,
+ 2.331, 2.332, 2.334, 2.334, 2.329, 2.321, 2.314, 2.311, 2.306, 2.304, 2.303, 2.302, 2.299, 2.297, 2.295, 2.295, 2.296, 2.297, 2.298, 2.298, 2.299, 2.301, 2.303, 2.306, 2.311, 2.314, 2.319, 2.323, 2.325, 2.329, 2.339, 2.348,
+ 2.329, 2.329, 2.329, 2.331, 2.326, 2.319, 2.312, 2.309, 2.304, 2.303, 2.302, 2.301, 2.298, 2.295, 2.294, 2.294, 2.295, 2.295, 2.296, 2.297, 2.299, 2.301, 2.302, 2.304, 2.308, 2.313, 2.319, 2.322, 2.325, 2.329, 2.339, 2.351,
+ 2.329, 2.329, 2.329, 2.329, 2.326, 2.317, 2.311, 2.308, 2.303, 2.302, 2.301, 2.298, 2.296, 2.295, 2.294, 2.294, 2.294, 2.294, 2.296, 2.297, 2.298, 2.299, 2.301, 2.304, 2.307, 2.312, 2.318, 2.322, 2.326, 2.331, 2.341, 2.355,
+ 2.339, 2.332, 2.331, 2.331, 2.327, 2.323, 2.316, 2.309, 2.306, 2.302, 2.301, 2.299, 2.297, 2.296, 2.295, 2.294, 2.294, 2.296, 2.297, 2.297, 2.299, 2.301, 2.303, 2.306, 2.308, 2.317, 2.322, 2.325, 2.329, 2.341, 2.353, 2.361,
+ 2.347, 2.347, 2.345, 2.343, 2.338, 2.332, 2.326, 2.322, 2.321, 2.318, 2.316, 2.315, 2.313, 2.312, 2.311, 2.311, 2.311, 2.311, 2.312, 2.315, 2.317, 2.318, 2.319, 2.323, 2.324, 2.329, 2.334, 2.337, 2.344, 2.347, 2.361, 2.364
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 3.869, 3.852, 3.844, 3.842, 3.836, 3.821, 3.807, 3.796, 3.789, 3.784, 3.778, 3.775, 3.769, 3.768, 3.765, 3.765, 3.767, 3.769, 3.772, 3.774, 3.773, 3.775, 3.779, 3.787, 3.793, 3.801, 3.806, 3.804, 3.813, 3.819, 3.855, 3.879,
+ 3.854, 3.844, 3.837, 3.836, 3.824, 3.811, 3.797, 3.789, 3.784, 3.777, 3.774, 3.769, 3.764, 3.758, 3.757, 3.758, 3.758, 3.761, 3.763, 3.764, 3.765, 3.766, 3.772, 3.778, 3.787, 3.792, 3.794, 3.798, 3.802, 3.815, 3.839, 3.873,
+ 3.838, 3.831, 3.826, 3.823, 3.813, 3.799, 3.787, 3.781, 3.773, 3.768, 3.763, 3.759, 3.753, 3.749, 3.745, 3.745, 3.745, 3.752, 3.754, 3.757, 3.757, 3.759, 3.763, 3.769, 3.773, 3.781, 3.786, 3.792, 3.798, 3.811, 3.831, 3.861,
+ 3.833, 3.822, 3.817, 3.816, 3.804, 3.788, 3.779, 3.772, 3.766, 3.759, 3.755, 3.749, 3.744, 3.741, 3.738, 3.739, 3.739, 3.741, 3.743, 3.747, 3.749, 3.751, 3.756, 3.764, 3.769, 3.776, 3.783, 3.789, 3.798, 3.809, 3.821, 3.855,
+ 3.824, 3.818, 3.808, 3.808, 3.797, 3.781, 3.772, 3.764, 3.757, 3.752, 3.747, 3.743, 3.737, 3.735, 3.733, 3.733, 3.733, 3.735, 3.737, 3.738, 3.741, 3.746, 3.749, 3.755, 3.766, 3.771, 3.781, 3.789, 3.794, 3.806, 3.818, 3.849,
+ 3.815, 3.808, 3.799, 3.801, 3.787, 3.775, 3.767, 3.757, 3.751, 3.745, 3.738, 3.734, 3.732, 3.727, 3.725, 3.723, 3.722, 3.722, 3.726, 3.729, 3.734, 3.738, 3.744, 3.749, 3.759, 3.769, 3.781, 3.788, 3.792, 3.799, 3.811, 3.841,
+ 3.804, 3.799, 3.793, 3.793, 3.783, 3.771, 3.759, 3.751, 3.744, 3.735, 3.732, 3.727, 3.723, 3.721, 3.719, 3.716, 3.716, 3.716, 3.718, 3.722, 3.727, 3.731, 3.737, 3.746, 3.756, 3.767, 3.776, 3.782, 3.788, 3.795, 3.808, 3.831,
+ 3.802, 3.797, 3.787, 3.787, 3.779, 3.762, 3.753, 3.744, 3.734, 3.727, 3.725, 3.721, 3.716, 3.714, 3.709, 3.709, 3.711, 3.711, 3.712, 3.717, 3.722, 3.725, 3.731, 3.739, 3.752, 3.762, 3.772, 3.778, 3.779, 3.789, 3.798, 3.826,
+ 3.791, 3.789, 3.784, 3.784, 3.775, 3.759, 3.746, 3.735, 3.729, 3.724, 3.718, 3.714, 3.712, 3.707, 3.704, 3.704, 3.706, 3.708, 3.709, 3.711, 3.716, 3.722, 3.726, 3.735, 3.746, 3.754, 3.767, 3.774, 3.777, 3.781, 3.794, 3.824,
+ 3.789, 3.784, 3.779, 3.781, 3.771, 3.753, 3.741, 3.732, 3.725, 3.719, 3.715, 3.711, 3.707, 3.704, 3.701, 3.701, 3.702, 3.704, 3.708, 3.709, 3.713, 3.718, 3.724, 3.731, 3.742, 3.749, 3.761, 3.768, 3.772, 3.778, 3.791, 3.822,
+ 3.789, 3.781, 3.777, 3.777, 3.764, 3.749, 3.739, 3.729, 3.722, 3.718, 3.711, 3.708, 3.705, 3.701, 3.699, 3.699, 3.699, 3.701, 3.705, 3.707, 3.711, 3.715, 3.721, 3.727, 3.738, 3.746, 3.757, 3.763, 3.765, 3.773, 3.788, 3.821,
+ 3.785, 3.779, 3.774, 3.774, 3.764, 3.747, 3.736, 3.726, 3.719, 3.711, 3.709, 3.706, 3.701, 3.698, 3.696, 3.695, 3.695, 3.698, 3.702, 3.704, 3.707, 3.712, 3.718, 3.725, 3.734, 3.741, 3.753, 3.756, 3.759, 3.764, 3.784, 3.818,
+ 3.779, 3.776, 3.773, 3.773, 3.759, 3.744, 3.733, 3.724, 3.714, 3.709, 3.706, 3.704, 3.699, 3.696, 3.694, 3.694, 3.694, 3.697, 3.701, 3.703, 3.706, 3.709, 3.714, 3.721, 3.731, 3.737, 3.749, 3.753, 3.758, 3.762, 3.783, 3.819,
+ 3.779, 3.776, 3.769, 3.769, 3.757, 3.741, 3.729, 3.721, 3.712, 3.708, 3.705, 3.701, 3.697, 3.695, 3.694, 3.694, 3.695, 3.696, 3.698, 3.702, 3.705, 3.709, 3.712, 3.717, 3.728, 3.736, 3.749, 3.752, 3.756, 3.761, 3.781, 3.815,
+ 3.779, 3.773, 3.768, 3.768, 3.756, 3.738, 3.731, 3.719, 3.711, 3.707, 3.703, 3.698, 3.695, 3.694, 3.694, 3.695, 3.695, 3.695, 3.696, 3.702, 3.705, 3.708, 3.712, 3.717, 3.728, 3.736, 3.747, 3.751, 3.754, 3.761, 3.781, 3.815,
+ 3.782, 3.773, 3.767, 3.767, 3.755, 3.738, 3.728, 3.721, 3.711, 3.707, 3.701, 3.698, 3.695, 3.693, 3.694, 3.696, 3.695, 3.695, 3.695, 3.701, 3.703, 3.706, 3.711, 3.715, 3.726, 3.735, 3.745, 3.751, 3.754, 3.763, 3.779, 3.815,
+ 3.781, 3.771, 3.767, 3.767, 3.754, 3.739, 3.726, 3.721, 3.712, 3.706, 3.701, 3.698, 3.695, 3.693, 3.693, 3.695, 3.695, 3.695, 3.696, 3.698, 3.703, 3.705, 3.709, 3.715, 3.725, 3.734, 3.745, 3.751, 3.755, 3.762, 3.783, 3.818,
+ 3.781, 3.774, 3.767, 3.767, 3.755, 3.741, 3.729, 3.722, 3.712, 3.708, 3.701, 3.699, 3.695, 3.693, 3.693, 3.694, 3.695, 3.695, 3.697, 3.698, 3.702, 3.704, 3.709, 3.713, 3.725, 3.732, 3.746, 3.751, 3.756, 3.763, 3.783, 3.821,
+ 3.781, 3.774, 3.769, 3.769, 3.756, 3.741, 3.731, 3.724, 3.713, 3.711, 3.707, 3.699, 3.697, 3.694, 3.693, 3.694, 3.695, 3.695, 3.697, 3.698, 3.702, 3.704, 3.709, 3.713, 3.724, 3.734, 3.747, 3.751, 3.756, 3.765, 3.784, 3.821,
+ 3.784, 3.776, 3.773, 3.773, 3.759, 3.742, 3.733, 3.726, 3.719, 3.711, 3.709, 3.703, 3.698, 3.695, 3.694, 3.695, 3.697, 3.696, 3.698, 3.699, 3.703, 3.706, 3.711, 3.714, 3.727, 3.735, 3.746, 3.751, 3.757, 3.766, 3.787, 3.822,
+ 3.786, 3.783, 3.774, 3.774, 3.766, 3.747, 3.737, 3.727, 3.722, 3.716, 3.711, 3.706, 3.702, 3.698, 3.697, 3.698, 3.699, 3.699, 3.701, 3.703, 3.706, 3.711, 3.713, 3.719, 3.731, 3.739, 3.748, 3.753, 3.761, 3.769, 3.789, 3.826,
+ 3.786, 3.784, 3.779, 3.779, 3.769, 3.751, 3.742, 3.732, 3.725, 3.719, 3.715, 3.711, 3.706, 3.704, 3.701, 3.701, 3.702, 3.702, 3.705, 3.707, 3.712, 3.714, 3.717, 3.724, 3.733, 3.743, 3.749, 3.758, 3.764, 3.769, 3.791, 3.826,
+ 3.793, 3.787, 3.782, 3.782, 3.774, 3.756, 3.747, 3.737, 3.729, 3.725, 3.719, 3.715, 3.712, 3.708, 3.707, 3.706, 3.707, 3.708, 3.709, 3.713, 3.714, 3.717, 3.723, 3.729, 3.736, 3.747, 3.757, 3.764, 3.768, 3.774, 3.794, 3.829,
+ 3.794, 3.791, 3.786, 3.786, 3.779, 3.762, 3.751, 3.742, 3.735, 3.729, 3.725, 3.719, 3.716, 3.711, 3.709, 3.709, 3.709, 3.711, 3.716, 3.717, 3.721, 3.723, 3.726, 3.732, 3.741, 3.752, 3.761, 3.767, 3.773, 3.779, 3.801, 3.829,
+ 3.802, 3.798, 3.793, 3.793, 3.779, 3.766, 3.754, 3.746, 3.741, 3.736, 3.731, 3.726, 3.719, 3.717, 3.716, 3.715, 3.716, 3.717, 3.719, 3.721, 3.724, 3.726, 3.731, 3.737, 3.744, 3.756, 3.766, 3.772, 3.776, 3.784, 3.807, 3.839,
+ 3.805, 3.799, 3.795, 3.795, 3.784, 3.767, 3.757, 3.749, 3.744, 3.739, 3.736, 3.731, 3.726, 3.722, 3.719, 3.719, 3.719, 3.721, 3.723, 3.725, 3.727, 3.732, 3.738, 3.742, 3.751, 3.761, 3.771, 3.775, 3.782, 3.789, 3.811, 3.841,
+ 3.804, 3.801, 3.799, 3.799, 3.787, 3.772, 3.761, 3.752, 3.746, 3.742, 3.739, 3.735, 3.729, 3.726, 3.723, 3.724, 3.725, 3.726, 3.727, 3.728, 3.732, 3.736, 3.739, 3.745, 3.754, 3.765, 3.775, 3.779, 3.785, 3.795, 3.816, 3.844,
+ 3.801, 3.799, 3.796, 3.796, 3.787, 3.773, 3.761, 3.753, 3.746, 3.743, 3.739, 3.735, 3.731, 3.726, 3.725, 3.725, 3.725, 3.726, 3.727, 3.729, 3.733, 3.736, 3.741, 3.745, 3.755, 3.766, 3.776, 3.783, 3.786, 3.797, 3.819, 3.851,
+ 3.799, 3.795, 3.788, 3.788, 3.783, 3.772, 3.759, 3.749, 3.744, 3.738, 3.735, 3.733, 3.726, 3.724, 3.722, 3.722, 3.723, 3.724, 3.725, 3.727, 3.729, 3.733, 3.736, 3.742, 3.754, 3.762, 3.772, 3.779, 3.784, 3.796, 3.821, 3.859,
+ 3.799, 3.789, 3.787, 3.788, 3.779, 3.766, 3.755, 3.749, 3.742, 3.736, 3.733, 3.727, 3.723, 3.722, 3.721, 3.719, 3.719, 3.721, 3.725, 3.726, 3.728, 3.732, 3.734, 3.741, 3.747, 3.758, 3.771, 3.778, 3.785, 3.796, 3.825, 3.862,
+ 3.824, 3.799, 3.789, 3.789, 3.788, 3.777, 3.761, 3.751, 3.743, 3.739, 3.736, 3.728, 3.726, 3.725, 3.721, 3.719, 3.721, 3.723, 3.727, 3.728, 3.729, 3.733, 3.737, 3.744, 3.755, 3.769, 3.776, 3.784, 3.793, 3.819, 3.863, 3.877,
+ 3.833, 3.833, 3.833, 3.842, 3.825, 3.815, 3.807, 3.799, 3.792, 3.788, 3.785, 3.782, 3.778, 3.777, 3.773, 3.772, 3.772, 3.774, 3.778, 3.779, 3.779, 3.785, 3.792, 3.798, 3.803, 3.811, 3.822, 3.834, 3.843, 3.846, 3.877, 3.886
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.616, 2.616, 2.618, 2.621, 2.619, 2.618, 2.615, 2.615, 2.613, 2.611, 2.609, 2.609, 2.609, 2.611, 2.611, 2.611, 2.611, 2.609, 2.608, 2.608, 2.611, 2.613, 2.613, 2.614, 2.614, 2.615, 2.615, 2.622, 2.624, 2.621, 2.624, 2.641,
+ 2.616, 2.618, 2.621, 2.623, 2.623, 2.619, 2.618, 2.616, 2.616, 2.613, 2.611, 2.611, 2.611, 2.611, 2.612, 2.612, 2.611, 2.611, 2.611, 2.611, 2.611, 2.612, 2.613, 2.612, 2.613, 2.615, 2.617, 2.621, 2.621, 2.619, 2.621, 2.641,
+ 2.621, 2.624, 2.627, 2.627, 2.625, 2.623, 2.621, 2.619, 2.618, 2.618, 2.618, 2.617, 2.616, 2.616, 2.615, 2.613, 2.612, 2.613, 2.613, 2.614, 2.614, 2.613, 2.614, 2.613, 2.614, 2.617, 2.619, 2.621, 2.621, 2.619, 2.623, 2.643,
+ 2.626, 2.627, 2.628, 2.629, 2.628, 2.625, 2.622, 2.621, 2.621, 2.622, 2.621, 2.619, 2.619, 2.618, 2.617, 2.616, 2.616, 2.616, 2.618, 2.618, 2.617, 2.617, 2.618, 2.619, 2.621, 2.623, 2.624, 2.626, 2.625, 2.624, 2.625, 2.654,
+ 2.627, 2.628, 2.628, 2.628, 2.626, 2.623, 2.622, 2.622, 2.622, 2.622, 2.621, 2.621, 2.619, 2.617, 2.617, 2.616, 2.617, 2.617, 2.618, 2.619, 2.618, 2.618, 2.618, 2.621, 2.622, 2.624, 2.626, 2.627, 2.627, 2.626, 2.628, 2.655,
+ 2.625, 2.626, 2.627, 2.626, 2.625, 2.623, 2.622, 2.621, 2.622, 2.621, 2.621, 2.619, 2.617, 2.616, 2.615, 2.616, 2.616, 2.616, 2.616, 2.616, 2.617, 2.618, 2.619, 2.621, 2.622, 2.624, 2.626, 2.628, 2.628, 2.629, 2.629, 2.655,
+ 2.626, 2.625, 2.626, 2.625, 2.625, 2.623, 2.622, 2.622, 2.622, 2.621, 2.619, 2.617, 2.616, 2.614, 2.613, 2.614, 2.614, 2.614, 2.614, 2.614, 2.616, 2.618, 2.619, 2.621, 2.623, 2.624, 2.627, 2.629, 2.631, 2.629, 2.631, 2.651,
+ 2.625, 2.625, 2.625, 2.624, 2.623, 2.623, 2.622, 2.622, 2.622, 2.621, 2.619, 2.617, 2.614, 2.613, 2.612, 2.611, 2.611, 2.612, 2.612, 2.613, 2.616, 2.618, 2.619, 2.622, 2.624, 2.626, 2.628, 2.631, 2.631, 2.631, 2.631, 2.651,
+ 2.625, 2.625, 2.624, 2.623, 2.622, 2.622, 2.622, 2.622, 2.622, 2.621, 2.617, 2.615, 2.613, 2.612, 2.611, 2.611, 2.611, 2.611, 2.611, 2.613, 2.615, 2.618, 2.619, 2.622, 2.625, 2.627, 2.631, 2.632, 2.631, 2.629, 2.631, 2.651,
+ 2.624, 2.624, 2.622, 2.622, 2.621, 2.621, 2.621, 2.621, 2.621, 2.618, 2.616, 2.614, 2.612, 2.611, 2.609, 2.609, 2.608, 2.609, 2.611, 2.611, 2.615, 2.617, 2.619, 2.621, 2.625, 2.628, 2.631, 2.632, 2.631, 2.627, 2.627, 2.651,
+ 2.622, 2.623, 2.622, 2.622, 2.621, 2.619, 2.619, 2.619, 2.618, 2.616, 2.614, 2.613, 2.611, 2.609, 2.608, 2.606, 2.607, 2.607, 2.609, 2.611, 2.615, 2.617, 2.619, 2.622, 2.626, 2.629, 2.632, 2.632, 2.631, 2.627, 2.627, 2.651,
+ 2.621, 2.622, 2.622, 2.622, 2.621, 2.619, 2.619, 2.618, 2.617, 2.614, 2.613, 2.611, 2.611, 2.607, 2.606, 2.605, 2.604, 2.605, 2.607, 2.609, 2.613, 2.616, 2.619, 2.622, 2.627, 2.631, 2.632, 2.632, 2.631, 2.627, 2.627, 2.651,
+ 2.619, 2.621, 2.623, 2.623, 2.621, 2.621, 2.619, 2.617, 2.616, 2.615, 2.613, 2.609, 2.607, 2.604, 2.602, 2.601, 2.602, 2.603, 2.605, 2.609, 2.612, 2.616, 2.619, 2.624, 2.628, 2.631, 2.632, 2.633, 2.629, 2.627, 2.627, 2.651,
+ 2.619, 2.621, 2.623, 2.623, 2.622, 2.621, 2.618, 2.617, 2.615, 2.614, 2.612, 2.608, 2.603, 2.601, 2.598, 2.597, 2.599, 2.602, 2.605, 2.608, 2.611, 2.615, 2.622, 2.625, 2.629, 2.631, 2.631, 2.633, 2.631, 2.627, 2.627, 2.651,
+ 2.621, 2.622, 2.623, 2.623, 2.622, 2.621, 2.618, 2.617, 2.616, 2.614, 2.611, 2.606, 2.601, 2.598, 2.595, 2.595, 2.597, 2.601, 2.604, 2.608, 2.612, 2.615, 2.623, 2.627, 2.629, 2.631, 2.631, 2.632, 2.631, 2.628, 2.628, 2.651,
+ 2.622, 2.623, 2.624, 2.624, 2.622, 2.621, 2.619, 2.617, 2.615, 2.613, 2.609, 2.606, 2.601, 2.596, 2.594, 2.594, 2.596, 2.599, 2.603, 2.609, 2.613, 2.617, 2.623, 2.627, 2.629, 2.631, 2.632, 2.632, 2.631, 2.629, 2.631, 2.651,
+ 2.623, 2.625, 2.625, 2.624, 2.621, 2.621, 2.619, 2.617, 2.616, 2.613, 2.608, 2.605, 2.601, 2.595, 2.593, 2.593, 2.595, 2.598, 2.604, 2.609, 2.615, 2.619, 2.625, 2.627, 2.629, 2.629, 2.632, 2.633, 2.632, 2.629, 2.631, 2.651,
+ 2.624, 2.626, 2.626, 2.623, 2.621, 2.619, 2.618, 2.617, 2.615, 2.612, 2.608, 2.605, 2.601, 2.597, 2.595, 2.595, 2.596, 2.598, 2.605, 2.609, 2.616, 2.621, 2.626, 2.627, 2.629, 2.631, 2.633, 2.633, 2.633, 2.631, 2.631, 2.655,
+ 2.624, 2.625, 2.625, 2.623, 2.621, 2.619, 2.618, 2.617, 2.614, 2.612, 2.609, 2.606, 2.602, 2.599, 2.598, 2.597, 2.598, 2.602, 2.607, 2.612, 2.619, 2.621, 2.626, 2.628, 2.629, 2.632, 2.633, 2.634, 2.633, 2.631, 2.631, 2.655,
+ 2.624, 2.625, 2.625, 2.623, 2.621, 2.621, 2.618, 2.617, 2.614, 2.612, 2.611, 2.608, 2.604, 2.602, 2.599, 2.599, 2.603, 2.606, 2.611, 2.616, 2.621, 2.624, 2.626, 2.629, 2.631, 2.632, 2.633, 2.634, 2.634, 2.633, 2.633, 2.656,
+ 2.623, 2.624, 2.625, 2.623, 2.622, 2.621, 2.619, 2.617, 2.615, 2.613, 2.611, 2.611, 2.607, 2.604, 2.604, 2.604, 2.606, 2.609, 2.613, 2.619, 2.622, 2.625, 2.628, 2.631, 2.632, 2.633, 2.633, 2.636, 2.636, 2.634, 2.634, 2.658,
+ 2.623, 2.624, 2.625, 2.623, 2.622, 2.619, 2.618, 2.616, 2.614, 2.613, 2.612, 2.611, 2.609, 2.608, 2.607, 2.608, 2.609, 2.613, 2.617, 2.621, 2.623, 2.626, 2.629, 2.631, 2.632, 2.633, 2.634, 2.635, 2.636, 2.636, 2.636, 2.661,
+ 2.623, 2.624, 2.625, 2.625, 2.623, 2.621, 2.619, 2.616, 2.615, 2.614, 2.613, 2.612, 2.612, 2.611, 2.611, 2.611, 2.614, 2.615, 2.619, 2.622, 2.625, 2.627, 2.631, 2.632, 2.633, 2.635, 2.635, 2.637, 2.637, 2.636, 2.637, 2.661,
+ 2.623, 2.624, 2.625, 2.626, 2.624, 2.621, 2.619, 2.617, 2.616, 2.615, 2.615, 2.614, 2.614, 2.614, 2.614, 2.614, 2.616, 2.619, 2.621, 2.623, 2.626, 2.628, 2.631, 2.632, 2.634, 2.635, 2.636, 2.637, 2.638, 2.637, 2.638, 2.661,
+ 2.625, 2.626, 2.627, 2.627, 2.626, 2.623, 2.619, 2.619, 2.618, 2.618, 2.618, 2.617, 2.617, 2.616, 2.616, 2.616, 2.619, 2.622, 2.623, 2.625, 2.628, 2.628, 2.631, 2.632, 2.634, 2.636, 2.638, 2.639, 2.639, 2.638, 2.638, 2.661,
+ 2.625, 2.626, 2.627, 2.628, 2.626, 2.623, 2.621, 2.619, 2.619, 2.619, 2.619, 2.619, 2.619, 2.618, 2.618, 2.619, 2.623, 2.624, 2.625, 2.627, 2.629, 2.629, 2.632, 2.633, 2.635, 2.638, 2.639, 2.639, 2.639, 2.636, 2.636, 2.662,
+ 2.625, 2.627, 2.628, 2.628, 2.626, 2.624, 2.623, 2.622, 2.621, 2.621, 2.621, 2.621, 2.621, 2.621, 2.621, 2.624, 2.624, 2.625, 2.627, 2.628, 2.631, 2.631, 2.632, 2.634, 2.636, 2.639, 2.639, 2.641, 2.639, 2.635, 2.635, 2.663,
+ 2.625, 2.626, 2.628, 2.628, 2.627, 2.625, 2.624, 2.623, 2.623, 2.622, 2.623, 2.624, 2.624, 2.625, 2.625, 2.625, 2.625, 2.626, 2.627, 2.629, 2.631, 2.632, 2.633, 2.635, 2.638, 2.641, 2.642, 2.643, 2.642, 2.636, 2.636, 2.665,
+ 2.624, 2.626, 2.628, 2.628, 2.628, 2.626, 2.624, 2.624, 2.623, 2.623, 2.623, 2.625, 2.627, 2.627, 2.626, 2.626, 2.626, 2.627, 2.628, 2.629, 2.632, 2.633, 2.635, 2.637, 2.639, 2.642, 2.644, 2.644, 2.642, 2.638, 2.638, 2.665,
+ 2.623, 2.625, 2.626, 2.627, 2.626, 2.626, 2.624, 2.623, 2.623, 2.623, 2.623, 2.623, 2.626, 2.627, 2.626, 2.626, 2.626, 2.626, 2.628, 2.628, 2.629, 2.631, 2.634, 2.636, 2.639, 2.642, 2.644, 2.643, 2.641, 2.637, 2.638, 2.659,
+ 2.623, 2.627, 2.627, 2.627, 2.627, 2.628, 2.627, 2.624, 2.624, 2.623, 2.624, 2.624, 2.628, 2.628, 2.627, 2.628, 2.628, 2.628, 2.629, 2.629, 2.631, 2.635, 2.637, 2.639, 2.641, 2.643, 2.646, 2.645, 2.643, 2.641, 2.654, 2.659,
+ 2.642, 2.641, 2.643, 2.645, 2.645, 2.644, 2.644, 2.643, 2.643, 2.642, 2.642, 2.642, 2.643, 2.644, 2.644, 2.644, 2.646, 2.646, 2.647, 2.649, 2.651, 2.652, 2.654, 2.656, 2.658, 2.661, 2.661, 2.661, 2.659, 2.654, 2.659, 2.659
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.391, 1.394, 1.395, 1.396, 1.398, 1.398, 1.398, 1.398, 1.398, 1.399, 1.399, 1.398, 1.398, 1.399, 1.399, 1.399, 1.399, 1.398, 1.398, 1.398, 1.399, 1.399, 1.398, 1.397, 1.397, 1.398, 1.399, 1.401, 1.399, 1.397, 1.399, 1.402,
+ 1.393, 1.395, 1.396, 1.398, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.401, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.399, 1.398, 1.398, 1.399, 1.401, 1.401, 1.399, 1.398, 1.399, 1.402,
+ 1.398, 1.401, 1.401, 1.401, 1.401, 1.401, 1.402, 1.402, 1.402, 1.402, 1.403, 1.404, 1.404, 1.403, 1.403, 1.403, 1.403, 1.402, 1.401, 1.401, 1.401, 1.401, 1.401, 1.399, 1.399, 1.401, 1.401, 1.401, 1.401, 1.399, 1.401, 1.406,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.405, 1.405, 1.404, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.402, 1.403, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.403, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.402, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.404, 1.405, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.403, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.405, 1.404, 1.404, 1.404, 1.404, 1.405, 1.404, 1.405, 1.405, 1.405, 1.406, 1.406, 1.404, 1.405, 1.412,
+ 1.401, 1.401, 1.401, 1.401, 1.402, 1.403, 1.404, 1.405, 1.406, 1.406, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.406, 1.406, 1.407, 1.407, 1.406, 1.405, 1.405, 1.412,
+ 1.402, 1.402, 1.401, 1.401, 1.402, 1.403, 1.404, 1.405, 1.406, 1.405, 1.405, 1.405, 1.404, 1.404, 1.404, 1.404, 1.404, 1.403, 1.404, 1.404, 1.405, 1.405, 1.406, 1.406, 1.407, 1.407, 1.408, 1.408, 1.407, 1.405, 1.405, 1.412,
+ 1.402, 1.402, 1.401, 1.401, 1.402, 1.403, 1.404, 1.405, 1.406, 1.405, 1.405, 1.404, 1.404, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.405, 1.405, 1.406, 1.406, 1.407, 1.408, 1.408, 1.408, 1.407, 1.405, 1.405, 1.413,
+ 1.402, 1.402, 1.402, 1.402, 1.402, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.403, 1.403, 1.402, 1.402, 1.402, 1.403, 1.403, 1.404, 1.405, 1.406, 1.406, 1.407, 1.408, 1.409, 1.409, 1.408, 1.407, 1.405, 1.405, 1.414,
+ 1.402, 1.402, 1.402, 1.402, 1.403, 1.403, 1.405, 1.405, 1.405, 1.405, 1.404, 1.404, 1.403, 1.402, 1.402, 1.401, 1.401, 1.402, 1.403, 1.403, 1.404, 1.405, 1.406, 1.407, 1.409, 1.409, 1.409, 1.409, 1.407, 1.405, 1.405, 1.413,
+ 1.402, 1.402, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.401, 1.401, 1.399, 1.399, 1.401, 1.402, 1.403, 1.404, 1.405, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.408, 1.405, 1.405, 1.413,
+ 1.402, 1.403, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.405, 1.404, 1.402, 1.401, 1.399, 1.398, 1.398, 1.399, 1.399, 1.401, 1.403, 1.404, 1.405, 1.407, 1.409, 1.409, 1.409, 1.409, 1.409, 1.408, 1.406, 1.406, 1.413,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.401, 1.398, 1.397, 1.397, 1.398, 1.399, 1.401, 1.403, 1.404, 1.405, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.408, 1.406, 1.406, 1.413,
+ 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.399, 1.397, 1.396, 1.396, 1.397, 1.399, 1.401, 1.403, 1.404, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.408, 1.406, 1.406, 1.413,
+ 1.403, 1.404, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.404, 1.403, 1.402, 1.399, 1.397, 1.396, 1.396, 1.397, 1.398, 1.401, 1.403, 1.406, 1.407, 1.409, 1.409, 1.411, 1.409, 1.409, 1.409, 1.408, 1.407, 1.407, 1.413,
+ 1.403, 1.404, 1.404, 1.403, 1.403, 1.404, 1.404, 1.405, 1.404, 1.404, 1.403, 1.402, 1.399, 1.398, 1.397, 1.397, 1.398, 1.399, 1.402, 1.404, 1.406, 1.408, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.409, 1.407, 1.407, 1.414,
+ 1.403, 1.403, 1.404, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.403, 1.403, 1.402, 1.401, 1.399, 1.398, 1.398, 1.398, 1.401, 1.403, 1.404, 1.408, 1.408, 1.409, 1.409, 1.409, 1.411, 1.411, 1.409, 1.408, 1.407, 1.407, 1.415,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.403, 1.403, 1.403, 1.401, 1.401, 1.399, 1.399, 1.401, 1.402, 1.404, 1.407, 1.408, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.409, 1.407, 1.407, 1.415,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.403, 1.403, 1.403, 1.402, 1.401, 1.401, 1.401, 1.402, 1.404, 1.406, 1.407, 1.408, 1.409, 1.411, 1.411, 1.411, 1.409, 1.409, 1.409, 1.409, 1.408, 1.408, 1.415,
+ 1.402, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.405, 1.406, 1.408, 1.408, 1.409, 1.411, 1.411, 1.411, 1.411, 1.409, 1.409, 1.409, 1.408, 1.408, 1.416,
+ 1.403, 1.402, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.403, 1.404, 1.404, 1.404, 1.405, 1.406, 1.407, 1.408, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.411, 1.411, 1.409, 1.408, 1.408, 1.416,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.406, 1.407, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.408, 1.408, 1.417,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.406, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.408, 1.408, 1.417,
+ 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.405, 1.406, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.409, 1.408, 1.408, 1.417,
+ 1.403, 1.403, 1.403, 1.403, 1.404, 1.403, 1.403, 1.404, 1.404, 1.405, 1.405, 1.406, 1.406, 1.406, 1.407, 1.408, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.409, 1.407, 1.407, 1.416,
+ 1.402, 1.403, 1.403, 1.403, 1.404, 1.404, 1.404, 1.404, 1.405, 1.405, 1.406, 1.407, 1.407, 1.407, 1.408, 1.409, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.409, 1.407, 1.407, 1.417,
+ 1.402, 1.403, 1.403, 1.404, 1.404, 1.404, 1.405, 1.405, 1.405, 1.406, 1.406, 1.407, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.409, 1.411, 1.411, 1.411, 1.412, 1.411, 1.409, 1.407, 1.407, 1.415,
+ 1.402, 1.402, 1.403, 1.403, 1.404, 1.404, 1.405, 1.405, 1.405, 1.405, 1.406, 1.407, 1.408, 1.408, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.412, 1.411, 1.409, 1.407, 1.407, 1.413,
+ 1.402, 1.402, 1.403, 1.403, 1.405, 1.406, 1.406, 1.406, 1.406, 1.406, 1.407, 1.408, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.412, 1.412, 1.413, 1.413, 1.411, 1.408, 1.411, 1.413,
+ 1.406, 1.406, 1.408, 1.408, 1.409, 1.409, 1.411, 1.411, 1.411, 1.411, 1.411, 1.411, 1.414, 1.414, 1.414, 1.414, 1.415, 1.415, 1.415, 1.415, 1.416, 1.416, 1.416, 1.417, 1.418, 1.418, 1.417, 1.417, 1.414, 1.411, 1.413, 1.413
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 1.554, 1.522, 1.466, 1.422, 1.385, 1.351, 1.322, 1.294, 1.269, 1.246, 1.228, 1.214, 1.207, 1.202, 1.199, 1.199, 1.199, 1.199, 1.202, 1.207, 1.218, 1.235, 1.255, 1.279, 1.305, 1.333, 1.365, 1.402, 1.447, 1.508, 1.602, 1.638,
+ 1.522, 1.478, 1.431, 1.391, 1.355, 1.323, 1.298, 1.271, 1.247, 1.228, 1.212, 1.199, 1.187, 1.179, 1.173, 1.172, 1.172, 1.174, 1.179, 1.189, 1.201, 1.216, 1.235, 1.256, 1.282, 1.308, 1.335, 1.368, 1.411, 1.461, 1.535, 1.602,
+ 1.479, 1.449, 1.407, 1.367, 1.332, 1.301, 1.271, 1.247, 1.226, 1.208, 1.191, 1.178, 1.166, 1.158, 1.153, 1.151, 1.151, 1.153, 1.159, 1.168, 1.179, 1.194, 1.212, 1.234, 1.256, 1.282, 1.311, 1.343, 1.382, 1.427, 1.489, 1.535,
+ 1.454, 1.423, 1.383, 1.345, 1.309, 1.278, 1.249, 1.226, 1.206, 1.187, 1.171, 1.158, 1.146, 1.138, 1.132, 1.129, 1.129, 1.133, 1.139, 1.147, 1.159, 1.173, 1.191, 1.212, 1.234, 1.261, 1.288, 1.321, 1.357, 1.401, 1.455, 1.489,
+ 1.433, 1.401, 1.362, 1.325, 1.289, 1.258, 1.231, 1.206, 1.187, 1.169, 1.153, 1.138, 1.129, 1.121, 1.115, 1.112, 1.112, 1.114, 1.121, 1.129, 1.141, 1.155, 1.172, 1.191, 1.214, 1.241, 1.269, 1.301, 1.337, 1.377, 1.428, 1.457,
+ 1.415, 1.382, 1.343, 1.306, 1.273, 1.241, 1.213, 1.189, 1.169, 1.153, 1.137, 1.123, 1.112, 1.105, 1.097, 1.095, 1.095, 1.098, 1.103, 1.112, 1.124, 1.139, 1.155, 1.173, 1.197, 1.222, 1.252, 1.282, 1.317, 1.356, 1.405, 1.434,
+ 1.398, 1.363, 1.325, 1.289, 1.256, 1.224, 1.198, 1.175, 1.155, 1.137, 1.123, 1.108, 1.097, 1.089, 1.083, 1.079, 1.079, 1.083, 1.088, 1.097, 1.109, 1.124, 1.139, 1.158, 1.181, 1.206, 1.234, 1.266, 1.299, 1.339, 1.384, 1.415,
+ 1.382, 1.347, 1.309, 1.274, 1.242, 1.211, 1.185, 1.162, 1.142, 1.124, 1.108, 1.095, 1.083, 1.075, 1.069, 1.066, 1.066, 1.068, 1.074, 1.083, 1.096, 1.109, 1.125, 1.145, 1.166, 1.191, 1.219, 1.251, 1.285, 1.324, 1.367, 1.399,
+ 1.369, 1.334, 1.296, 1.261, 1.228, 1.199, 1.173, 1.151, 1.131, 1.112, 1.095, 1.083, 1.071, 1.062, 1.056, 1.053, 1.053, 1.055, 1.061, 1.069, 1.083, 1.096, 1.112, 1.132, 1.153, 1.178, 1.206, 1.237, 1.271, 1.309, 1.353, 1.385,
+ 1.359, 1.321, 1.284, 1.251, 1.217, 1.189, 1.164, 1.141, 1.121, 1.102, 1.086, 1.071, 1.061, 1.049, 1.045, 1.042, 1.042, 1.043, 1.051, 1.061, 1.069, 1.085, 1.101, 1.121, 1.143, 1.167, 1.195, 1.225, 1.259, 1.298, 1.341, 1.375,
+ 1.351, 1.312, 1.275, 1.241, 1.209, 1.181, 1.155, 1.133, 1.112, 1.092, 1.076, 1.061, 1.049, 1.041, 1.034, 1.032, 1.032, 1.035, 1.041, 1.051, 1.061, 1.075, 1.092, 1.112, 1.133, 1.158, 1.185, 1.216, 1.249, 1.288, 1.331, 1.364,
+ 1.344, 1.303, 1.267, 1.233, 1.201, 1.173, 1.147, 1.124, 1.104, 1.085, 1.067, 1.053, 1.041, 1.033, 1.024, 1.022, 1.022, 1.025, 1.034, 1.041, 1.053, 1.066, 1.083, 1.103, 1.126, 1.149, 1.177, 1.207, 1.241, 1.279, 1.321, 1.357,
+ 1.339, 1.297, 1.261, 1.226, 1.194, 1.166, 1.142, 1.119, 1.098, 1.078, 1.061, 1.046, 1.034, 1.024, 1.017, 1.014, 1.014, 1.017, 1.025, 1.034, 1.046, 1.059, 1.077, 1.096, 1.118, 1.143, 1.169, 1.201, 1.235, 1.273, 1.314, 1.352,
+ 1.337, 1.293, 1.256, 1.223, 1.191, 1.163, 1.136, 1.114, 1.093, 1.074, 1.056, 1.041, 1.027, 1.017, 1.012, 1.006, 1.006, 1.013, 1.017, 1.028, 1.041, 1.055, 1.072, 1.092, 1.114, 1.138, 1.165, 1.195, 1.229, 1.268, 1.309, 1.348,
+ 1.337, 1.291, 1.253, 1.219, 1.187, 1.159, 1.133, 1.109, 1.089, 1.071, 1.053, 1.037, 1.023, 1.012, 1.006, 1.002, 1.003, 1.006, 1.013, 1.023, 1.038, 1.052, 1.069, 1.089, 1.111, 1.135, 1.161, 1.192, 1.226, 1.264, 1.306, 1.348,
+ 1.337, 1.291, 1.253, 1.218, 1.186, 1.157, 1.132, 1.109, 1.088, 1.068, 1.049, 1.035, 1.021, 1.009, 1.001, 1.001, 1.001, 1.003, 1.011, 1.021, 1.035, 1.051, 1.069, 1.087, 1.109, 1.133, 1.161, 1.189, 1.224, 1.262, 1.304, 1.347,
+ 1.341, 1.292, 1.253, 1.218, 1.186, 1.157, 1.132, 1.109, 1.088, 1.068, 1.049, 1.034, 1.021, 1.009, 1.001, 1.001, 1.001, 1.003, 1.011, 1.021, 1.035, 1.051, 1.069, 1.087, 1.109, 1.133, 1.161, 1.189, 1.224, 1.262, 1.304, 1.347,
+ 1.348, 1.298, 1.255, 1.219, 1.188, 1.159, 1.134, 1.111, 1.088, 1.069, 1.051, 1.035, 1.021, 1.009, 1.003, 1.001, 1.002, 1.004, 1.011, 1.022, 1.036, 1.053, 1.071, 1.089, 1.111, 1.135, 1.162, 1.191, 1.226, 1.264, 1.306, 1.347,
+ 1.354, 1.306, 1.258, 1.222, 1.191, 1.162, 1.135, 1.113, 1.092, 1.073, 1.054, 1.038, 1.024, 1.014, 1.008, 1.003, 1.004, 1.008, 1.014, 1.026, 1.039, 1.056, 1.073, 1.093, 1.115, 1.139, 1.165, 1.195, 1.229, 1.267, 1.309, 1.349,
+ 1.358, 1.312, 1.263, 1.227, 1.195, 1.167, 1.141, 1.117, 1.097, 1.078, 1.061, 1.043, 1.029, 1.021, 1.014, 1.008, 1.008, 1.014, 1.021, 1.032, 1.045, 1.061, 1.078, 1.097, 1.119, 1.144, 1.169, 1.201, 1.234, 1.272, 1.315, 1.353,
+ 1.364, 1.319, 1.269, 1.234, 1.201, 1.174, 1.148, 1.124, 1.103, 1.084, 1.067, 1.052, 1.038, 1.029, 1.021, 1.016, 1.016, 1.021, 1.029, 1.038, 1.051, 1.067, 1.084, 1.103, 1.126, 1.151, 1.176, 1.207, 1.241, 1.279, 1.321, 1.358,
+ 1.371, 1.326, 1.277, 1.242, 1.209, 1.181, 1.155, 1.132, 1.111, 1.092, 1.075, 1.061, 1.049, 1.038, 1.029, 1.027, 1.027, 1.029, 1.038, 1.047, 1.061, 1.075, 1.092, 1.111, 1.133, 1.157, 1.185, 1.213, 1.247, 1.286, 1.329, 1.365,
+ 1.379, 1.334, 1.287, 1.251, 1.219, 1.191, 1.164, 1.141, 1.119, 1.101, 1.085, 1.071, 1.061, 1.049, 1.041, 1.038, 1.038, 1.041, 1.047, 1.059, 1.071, 1.084, 1.101, 1.119, 1.141, 1.165, 1.193, 1.223, 1.257, 1.295, 1.338, 1.374,
+ 1.389, 1.343, 1.298, 1.262, 1.231, 1.201, 1.174, 1.151, 1.131, 1.111, 1.095, 1.083, 1.071, 1.061, 1.054, 1.051, 1.051, 1.054, 1.059, 1.071, 1.081, 1.094, 1.111, 1.129, 1.152, 1.176, 1.203, 1.235, 1.269, 1.307, 1.351, 1.384,
+ 1.401, 1.351, 1.311, 1.274, 1.242, 1.214, 1.187, 1.164, 1.142, 1.124, 1.108, 1.095, 1.083, 1.074, 1.068, 1.066, 1.066, 1.068, 1.073, 1.081, 1.094, 1.108, 1.123, 1.141, 1.164, 1.188, 1.215, 1.247, 1.281, 1.321, 1.364, 1.396,
+ 1.412, 1.366, 1.327, 1.289, 1.257, 1.227, 1.201, 1.176, 1.156, 1.137, 1.122, 1.108, 1.096, 1.088, 1.083, 1.081, 1.081, 1.082, 1.087, 1.095, 1.108, 1.122, 1.136, 1.154, 1.177, 1.201, 1.229, 1.261, 1.296, 1.337, 1.382, 1.409,
+ 1.421, 1.383, 1.343, 1.306, 1.273, 1.243, 1.216, 1.192, 1.169, 1.152, 1.137, 1.122, 1.111, 1.103, 1.098, 1.095, 1.095, 1.097, 1.102, 1.111, 1.123, 1.136, 1.152, 1.169, 1.191, 1.217, 1.246, 1.278, 1.314, 1.354, 1.399, 1.429,
+ 1.434, 1.402, 1.362, 1.324, 1.291, 1.261, 1.232, 1.208, 1.187, 1.168, 1.152, 1.138, 1.127, 1.119, 1.114, 1.112, 1.112, 1.115, 1.121, 1.128, 1.139, 1.152, 1.169, 1.186, 1.209, 1.234, 1.262, 1.295, 1.332, 1.372, 1.419, 1.451,
+ 1.453, 1.422, 1.382, 1.344, 1.309, 1.278, 1.249, 1.226, 1.204, 1.187, 1.168, 1.155, 1.144, 1.135, 1.131, 1.131, 1.131, 1.133, 1.138, 1.146, 1.157, 1.171, 1.186, 1.206, 1.227, 1.252, 1.281, 1.314, 1.351, 1.393, 1.442, 1.473,
+ 1.475, 1.446, 1.404, 1.366, 1.329, 1.298, 1.269, 1.245, 1.224, 1.204, 1.188, 1.174, 1.163, 1.154, 1.149, 1.148, 1.148, 1.152, 1.156, 1.164, 1.176, 1.189, 1.206, 1.226, 1.247, 1.274, 1.303, 1.336, 1.374, 1.417, 1.471, 1.505,
+ 1.503, 1.472, 1.428, 1.389, 1.353, 1.321, 1.291, 1.266, 1.245, 1.224, 1.207, 1.192, 1.183, 1.174, 1.169, 1.167, 1.168, 1.169, 1.175, 1.183, 1.195, 1.209, 1.226, 1.247, 1.267, 1.294, 1.325, 1.359, 1.397, 1.445, 1.505, 1.548,
+ 1.534, 1.503, 1.455, 1.413, 1.378, 1.344, 1.315, 1.289, 1.265, 1.243, 1.224, 1.207, 1.196, 1.192, 1.189, 1.189, 1.189, 1.189, 1.192, 1.198, 1.209, 1.226, 1.244, 1.266, 1.291, 1.318, 1.349, 1.383, 1.425, 1.475, 1.548, 1.591
+ ],
+ "sigma": 0.00095,
+ "sigma_Cb": 0.00098
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2360,
+ "ccm":
+ [
+ 1.66078, -0.23588, -0.42491,
+ -0.47456, 1.82763, -0.35307,
+ -0.00545, -1.44729, 2.45273
+ ]
+ },
+ {
+ "ct": 2870,
+ "ccm":
+ [
+ 1.78373, -0.55344, -0.23029,
+ -0.39951, 1.69701, -0.29751,
+ 0.01986, -1.06525, 2.04539
+ ]
+ },
+ {
+ "ct": 2970,
+ "ccm":
+ [
+ 1.73511, -0.56973, -0.16537,
+ -0.36338, 1.69878, -0.33539,
+ -0.02354, -0.76813, 1.79168
+ ]
+ },
+ {
+ "ct": 3000,
+ "ccm":
+ [
+ 2.06374, -0.92218, -0.14156,
+ -0.41721, 1.69289, -0.27568,
+ -0.00554, -0.92741, 1.93295
+ ]
+ },
+ {
+ "ct": 3700,
+ "ccm":
+ [
+ 2.13792, -1.08136, -0.05655,
+ -0.34739, 1.58989, -0.24249,
+ -0.00349, -0.76789, 1.77138
+ ]
+ },
+ {
+ "ct": 3870,
+ "ccm":
+ [
+ 1.83834, -0.70528, -0.13307,
+ -0.30499, 1.60523, -0.30024,
+ -0.05701, -0.58313, 1.64014
+ ]
+ },
+ {
+ "ct": 4000,
+ "ccm":
+ [
+ 2.15741, -1.10295, -0.05447,
+ -0.34631, 1.61158, -0.26528,
+ -0.02723, -0.70288, 1.73011
+ ]
+ },
+ {
+ "ct": 4400,
+ "ccm":
+ [
+ 2.05729, -0.95007, -0.10723,
+ -0.41712, 1.78606, -0.36894,
+ -0.11899, -0.55727, 1.67626
+ ]
+ },
+ {
+ "ct": 4715,
+ "ccm":
+ [
+ 1.90255, -0.77478, -0.12777,
+ -0.31338, 1.88197, -0.56858,
+ -0.06001, -0.61785, 1.67786
+ ]
+ },
+ {
+ "ct": 5920,
+ "ccm":
+ [
+ 1.98691, -0.84671, -0.14019,
+ -0.26581, 1.70615, -0.44035,
+ -0.09532, -0.47332, 1.56864
+ ]
+ },
+ {
+ "ct": 9050,
+ "ccm":
+ [
+ 2.09255, -0.76541, -0.32714,
+ -0.28973, 2.27462, -0.98489,
+ -0.17299, -0.61275, 1.78574
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx477_scientific.json b/src/ipa/rpi/pisp/data/imx477_scientific.json
new file mode 100644
index 00000000..4ec5a15b
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx477_scientific.json
@@ -0,0 +1,546 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 12000,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 740,
+ "reference_Y": 15051
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.809
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 204,
+ "slope": 0.0061
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2000.0, 0.6331025775790707, 0.27424225990946915,
+ 2200.0, 0.5696117366212947, 0.3116091368689487,
+ 2400.0, 0.5204264653110015, 0.34892179554105873,
+ 2600.0, 0.48148675531667223, 0.38565229719076793,
+ 2800.0, 0.450085403501908, 0.42145684622485047,
+ 3000.0, 0.42436130159169017, 0.45611835670028816,
+ 3200.0, 0.40300023695527337, 0.48950766215198593,
+ 3400.0, 0.3850520052612984, 0.5215567075837261,
+ 3600.0, 0.36981508088230314, 0.5522397906415475,
+ 4100.0, 0.333468007836758, 0.5909770465167908,
+ 4600.0, 0.31196097364221376, 0.6515706327327178,
+ 5100.0, 0.2961860409294588, 0.7068178946570284,
+ 5600.0, 0.2842607232745885, 0.7564837749584288,
+ 6100.0, 0.2750265787051251, 0.8006183524920533,
+ 6600.0, 0.2677057225584924, 0.8398879225373039,
+ 7100.0, 0.2617955199757274, 0.8746456080032436,
+ 7600.0, 0.25693714288250125, 0.905569559506562,
+ 8100.0, 0.25287531441063316, 0.9331696750390895,
+ 8600.0, 0.24946601483331993, 0.9576820904825795
+ ],
+ "sensitivity_r": 1.05,
+ "sensitivity_b": 1.05,
+ "transverse_pos": 0.0238,
+ "transverse_neg": 0.04429,
+ "coarse_step": 0.1
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 33333 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.3,
+ 1000, 0.3
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.3,
+ 1000, 0.3
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 0,
+ "gamma_curve":
+ [
+ 0, 0,
+ 512, 2304,
+ 1024, 4608,
+ 1536, 6573,
+ 2048, 8401,
+ 2560, 9992,
+ 3072, 11418,
+ 3584, 12719,
+ 4096, 13922,
+ 4608, 15045,
+ 5120, 16103,
+ 5632, 17104,
+ 6144, 18056,
+ 6656, 18967,
+ 7168, 19839,
+ 7680, 20679,
+ 8192, 21488,
+ 9216, 23028,
+ 10240, 24477,
+ 11264, 25849,
+ 12288, 27154,
+ 13312, 28401,
+ 14336, 29597,
+ 15360, 30747,
+ 16384, 31856,
+ 17408, 32928,
+ 18432, 33966,
+ 19456, 34973,
+ 20480, 35952,
+ 22528, 37832,
+ 24576, 39621,
+ 26624, 41330,
+ 28672, 42969,
+ 30720, 44545,
+ 32768, 46065,
+ 34816, 47534,
+ 36864, 48956,
+ 38912, 50336,
+ 40960, 51677,
+ 43008, 52982,
+ 45056, 54253,
+ 47104, 55493,
+ 49152, 56704,
+ 51200, 57888,
+ 53248, 59046,
+ 55296, 60181,
+ 57344, 61292,
+ 59392, 62382,
+ 61440, 63452,
+ 63488, 64503,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2000,
+ "ccm":
+ [
+ 1.5813882365848004, -0.35293683714581114, -0.27378771561617715,
+ -0.4347297185453639, 1.5792631087746074, -0.12102601986382337,
+ 0.2322290578987574, -1.4382672640468128, 2.1386425781770755
+ ]
+ },
+ {
+ "ct": 2200,
+ "ccm":
+ [
+ 1.6322048484088305, -0.45932286857238486, -0.21373542690252198,
+ -0.3970719209901105, 1.5877868651467202, -0.17249380832122455,
+ 0.20753774825903412, -1.2660673594740142, 2.005654261091916
+ ]
+ },
+ {
+ "ct": 2400,
+ "ccm":
+ [
+ 1.6766610071470398, -0.5447101051688111, -0.16838641107407676,
+ -0.3659845183388154, 1.592223692670396, -0.2127091997471162,
+ 0.1833964516767549, -1.1339155942419321, 1.9089342978542396
+ ]
+ },
+ {
+ "ct": 2600,
+ "ccm":
+ [
+ 1.7161984340622154, -0.6152585785678794, -0.1331100845092582,
+ -0.33972082628066275, 1.5944888273736966, -0.2453979465898787,
+ 0.1615577497676328, -1.0298684958833109, 1.8357854177422053
+ ]
+ },
+ {
+ "ct": 2800,
+ "ccm":
+ [
+ 1.7519307259815728, -0.6748682080165339, -0.10515169074540848,
+ -0.3171703484479931, 1.5955820297498486, -0.2727395854813966,
+ 0.14230870739974305, -0.9460976023551511, 1.778709391659538
+ ]
+ },
+ {
+ "ct": 3000,
+ "ccm":
+ [
+ 1.7846716625128374, -0.7261240476375332, -0.08274697420358428,
+ -0.2975654035173307, 1.5960425637021738, -0.2961043416505157,
+ 0.12546426281675097, -0.8773434727076518, 1.7330356805246685
+ ]
+ },
+ {
+ "ct": 3200,
+ "ccm":
+ [
+ 1.8150085872943436, -0.7708109672515514, -0.06469468211419174,
+ -0.2803468940646277, 1.596168842967451, -0.3164044170681625,
+ 0.11071494533513807, -0.8199772290209191, 1.69572135046367
+ ]
+ },
+ {
+ "ct": 3400,
+ "ccm":
+ [
+ 1.8433668304932087, -0.8102060605062592, -0.05013485852801454,
+ -0.2650934036324084, 1.5961288492969294, -0.33427554893845535,
+ 0.0977478941863518, -0.7714303112098978, 1.6647070820146963
+ ]
+ },
+ {
+ "ct": 3600,
+ "ccm":
+ [
+ 1.8700575831917468, -0.8452518300291346, -0.03842644337477299,
+ -0.2514794528347016, 1.5960178299141876, -0.3501774949366156,
+ 0.08628520830733245, -0.729841503339915, 1.638553343939267
+ ]
+ },
+ {
+ "ct": 4100,
+ "ccm":
+ [
+ 1.8988700903560716, -0.8911278803351247, -0.018848644425650693,
+ -0.21487101487384094, 1.599236541382614, -0.39405450457918206,
+ 0.08251488056482173, -0.7178919368326191, 1.6267009056502704
+ ]
+ },
+ {
+ "ct": 4600,
+ "ccm":
+ [
+ 1.960355191764125, -0.9624344812121991, -0.0017122408632169205,
+ -0.19444620905212898, 1.5978493736948447, -0.416727638296156,
+ 0.06310261513271084, -0.6483790952487849, 1.5834605477213093
+ ]
+ },
+ {
+ "ct": 5100,
+ "ccm":
+ [
+ 2.014680536961399, -1.0195930302148566, 0.007728256612638915,
+ -0.17751999660735496, 1.5977081555831, -0.4366085498741474,
+ 0.04741267583041334, -0.5950327902073489, 1.5512919847321853
+ ]
+ },
+ {
+ "ct": 5600,
+ "ccm":
+ [
+ 2.062652337917251, -1.0658386679125478, 0.011886354256281267,
+ -0.16319197721451495, 1.598363237584736, -0.45422061523742235,
+ 0.03465810928795378, -0.5535454108047286, 1.5269025836946852
+ ]
+ },
+ {
+ "ct": 6100,
+ "ccm":
+ [
+ 2.104985902038069, -1.103597868736314, 0.012503517136539277,
+ -0.15090797064906178, 1.5994703078166095, -0.4698414300864995,
+ 0.02421766063474242, -0.5208922818196823, 1.5081270847783788
+ ]
+ },
+ {
+ "ct": 6600,
+ "ccm":
+ [
+ 2.1424988751299714, -1.134760232367728, 0.010730356010435522,
+ -0.14021846798466234, 1.600822462230719, -0.48379204794526487,
+ 0.015521315410496622, -0.49463630325832275, 1.4933313534840327
+ ]
+ },
+ {
+ "ct": 7100,
+ "ccm":
+ [
+ 2.1758034100130925, -1.1607558481037359, 0.007452724895469076,
+ -0.13085694672641826, 1.6022648614493245, -0.4962330524084075,
+ 0.008226943206113427, -0.4733077192319791, 1.4815336120437468
+ ]
+ },
+ {
+ "ct": 7600,
+ "ccm":
+ [
+ 2.205529206931895, -1.1826662383072108, 0.0032019529917605167,
+ -0.122572009780486, 1.6037258133595753, -0.5073973734282445,
+ 0.0020132587619863425, -0.4556590236414181, 1.471939788496745
+ ]
+ },
+ {
+ "ct": 8100,
+ "ccm":
+ [
+ 2.232224969223067, -1.2013672897252885, -0.0016234598095482985,
+ -0.11518026734442414, 1.6051544769439803, -0.5174558699422255,
+ -0.0033378143542219835, -0.4408590373867774, 1.4640252230667452
+ ]
+ },
+ {
+ "ct": 8600,
+ "ccm":
+ [
+ 2.256082295891265, -1.2173210549996634, -0.0067231350481711675,
+ -0.10860272839843167, 1.6065150139140594, -0.5264728573611493,
+ -0.007952618707984149, -0.4284003574050791, 1.4574646927117558
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx519.json b/src/ipa/rpi/pisp/data/imx519.json
new file mode 100644
index 00000000..9bc4d9a3
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx519.json
@@ -0,0 +1,634 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.dpc": { }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 13841,
+ "reference_gain": 2.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 900,
+ "reference_Y": 12064
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.776
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 189,
+ "slope": 0.01495
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7900
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2890.0, 0.7328, 0.3734,
+ 3550.0, 0.6228, 0.4763,
+ 4500.0, 0.5208, 0.5825,
+ 5700.0, 0.4467, 0.6671,
+ 7900.0, 0.3858, 0.7411
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.02027,
+ "transverse_neg": 0.01935
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 1000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.5,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 1.527, 1.524, 1.521, 1.515, 1.509, 1.502, 1.494, 1.486, 1.478, 1.469, 1.458, 1.451, 1.445, 1.442, 1.441, 1.441, 1.441, 1.441, 1.441, 1.442, 1.446, 1.451, 1.46, 1.469, 1.477, 1.484, 1.489, 1.495, 1.499, 1.503, 1.504, 1.504,
+ 1.526, 1.522, 1.518, 1.512, 1.505, 1.497, 1.489, 1.481, 1.473, 1.462, 1.451, 1.443, 1.436, 1.432, 1.431, 1.43, 1.43, 1.43, 1.431, 1.434, 1.438, 1.444, 1.454, 1.463, 1.471, 1.479, 1.485, 1.491, 1.496, 1.5, 1.502, 1.504,
+ 1.526, 1.521, 1.516, 1.508, 1.501, 1.492, 1.483, 1.475, 1.467, 1.456, 1.444, 1.435, 1.428, 1.423, 1.42, 1.418, 1.418, 1.419, 1.422, 1.425, 1.431, 1.438, 1.447, 1.457, 1.466, 1.474, 1.482, 1.488, 1.493, 1.498, 1.5, 1.503,
+ 1.524, 1.519, 1.513, 1.505, 1.496, 1.487, 1.478, 1.469, 1.461, 1.45, 1.437, 1.427, 1.419, 1.413, 1.409, 1.407, 1.407, 1.408, 1.412, 1.417, 1.423, 1.431, 1.441, 1.45, 1.46, 1.469, 1.477, 1.485, 1.49, 1.495, 1.499, 1.502,
+ 1.522, 1.516, 1.51, 1.502, 1.493, 1.483, 1.472, 1.462, 1.452, 1.441, 1.429, 1.419, 1.409, 1.402, 1.397, 1.395, 1.395, 1.397, 1.401, 1.406, 1.414, 1.422, 1.433, 1.443, 1.453, 1.462, 1.471, 1.48, 1.486, 1.492, 1.496, 1.5,
+ 1.519, 1.513, 1.508, 1.499, 1.489, 1.478, 1.467, 1.455, 1.443, 1.432, 1.421, 1.41, 1.399, 1.391, 1.386, 1.383, 1.383, 1.386, 1.39, 1.396, 1.405, 1.414, 1.425, 1.436, 1.446, 1.456, 1.466, 1.475, 1.483, 1.49, 1.493, 1.497,
+ 1.516, 1.511, 1.505, 1.495, 1.485, 1.473, 1.461, 1.448, 1.435, 1.423, 1.412, 1.401, 1.389, 1.381, 1.375, 1.372, 1.372, 1.374, 1.379, 1.386, 1.396, 1.406, 1.418, 1.429, 1.439, 1.449, 1.46, 1.47, 1.479, 1.487, 1.491, 1.494,
+ 1.515, 1.508, 1.502, 1.491, 1.48, 1.467, 1.454, 1.441, 1.427, 1.415, 1.404, 1.392, 1.38, 1.371, 1.364, 1.361, 1.361, 1.363, 1.369, 1.377, 1.388, 1.398, 1.409, 1.42, 1.431, 1.443, 1.454, 1.465, 1.475, 1.484, 1.488, 1.492,
+ 1.513, 1.505, 1.498, 1.487, 1.475, 1.461, 1.448, 1.434, 1.419, 1.407, 1.396, 1.383, 1.37, 1.361, 1.353, 1.349, 1.349, 1.352, 1.359, 1.367, 1.379, 1.391, 1.401, 1.412, 1.424, 1.436, 1.448, 1.46, 1.471, 1.481, 1.485, 1.49,
+ 1.511, 1.503, 1.495, 1.483, 1.47, 1.456, 1.442, 1.427, 1.412, 1.399, 1.387, 1.375, 1.362, 1.352, 1.344, 1.34, 1.34, 1.343, 1.35, 1.36, 1.371, 1.383, 1.393, 1.405, 1.418, 1.431, 1.443, 1.455, 1.467, 1.478, 1.483, 1.488,
+ 1.51, 1.501, 1.492, 1.479, 1.466, 1.451, 1.436, 1.421, 1.406, 1.392, 1.378, 1.366, 1.355, 1.346, 1.336, 1.332, 1.332, 1.335, 1.344, 1.353, 1.363, 1.374, 1.385, 1.398, 1.412, 1.425, 1.439, 1.452, 1.463, 1.475, 1.481, 1.486,
+ 1.508, 1.499, 1.489, 1.475, 1.461, 1.446, 1.43, 1.414, 1.399, 1.384, 1.369, 1.358, 1.348, 1.339, 1.329, 1.324, 1.323, 1.328, 1.338, 1.347, 1.355, 1.365, 1.378, 1.391, 1.406, 1.42, 1.434, 1.448, 1.46, 1.472, 1.478, 1.484,
+ 1.508, 1.497, 1.487, 1.473, 1.459, 1.443, 1.426, 1.41, 1.394, 1.379, 1.363, 1.351, 1.342, 1.333, 1.325, 1.321, 1.32, 1.324, 1.332, 1.34, 1.349, 1.359, 1.372, 1.386, 1.401, 1.416, 1.43, 1.445, 1.457, 1.47, 1.477, 1.484,
+ 1.507, 1.496, 1.485, 1.471, 1.457, 1.441, 1.424, 1.407, 1.391, 1.375, 1.359, 1.346, 1.335, 1.327, 1.322, 1.319, 1.319, 1.321, 1.326, 1.333, 1.343, 1.354, 1.368, 1.382, 1.397, 1.412, 1.427, 1.442, 1.455, 1.468, 1.476, 1.483,
+ 1.507, 1.495, 1.483, 1.469, 1.455, 1.439, 1.422, 1.404, 1.387, 1.371, 1.355, 1.341, 1.328, 1.321, 1.319, 1.318, 1.318, 1.319, 1.321, 1.326, 1.338, 1.35, 1.363, 1.378, 1.393, 1.408, 1.424, 1.439, 1.453, 1.466, 1.474, 1.483,
+ 1.507, 1.495, 1.483, 1.469, 1.455, 1.438, 1.421, 1.404, 1.387, 1.37, 1.354, 1.34, 1.327, 1.32, 1.318, 1.316, 1.316, 1.317, 1.32, 1.326, 1.337, 1.35, 1.363, 1.377, 1.393, 1.408, 1.424, 1.439, 1.452, 1.466, 1.474, 1.483,
+ 1.507, 1.495, 1.483, 1.469, 1.455, 1.438, 1.421, 1.404, 1.387, 1.37, 1.354, 1.34, 1.327, 1.32, 1.316, 1.315, 1.315, 1.316, 1.319, 1.326, 1.337, 1.35, 1.363, 1.377, 1.393, 1.408, 1.424, 1.439, 1.452, 1.466, 1.474, 1.483,
+ 1.507, 1.495, 1.483, 1.469, 1.455, 1.438, 1.422, 1.404, 1.387, 1.37, 1.355, 1.341, 1.328, 1.32, 1.315, 1.313, 1.313, 1.315, 1.319, 1.326, 1.338, 1.35, 1.363, 1.377, 1.393, 1.408, 1.424, 1.439, 1.452, 1.466, 1.474, 1.483,
+ 1.507, 1.495, 1.484, 1.47, 1.456, 1.439, 1.423, 1.406, 1.389, 1.372, 1.357, 1.343, 1.331, 1.323, 1.318, 1.316, 1.316, 1.318, 1.323, 1.33, 1.34, 1.352, 1.366, 1.38, 1.395, 1.41, 1.425, 1.44, 1.453, 1.466, 1.475, 1.483,
+ 1.507, 1.496, 1.485, 1.471, 1.456, 1.44, 1.424, 1.407, 1.39, 1.374, 1.359, 1.346, 1.335, 1.326, 1.32, 1.318, 1.319, 1.321, 1.327, 1.334, 1.343, 1.354, 1.368, 1.383, 1.398, 1.412, 1.427, 1.442, 1.455, 1.467, 1.475, 1.483,
+ 1.507, 1.497, 1.486, 1.472, 1.458, 1.442, 1.426, 1.41, 1.393, 1.377, 1.362, 1.35, 1.339, 1.331, 1.324, 1.321, 1.322, 1.325, 1.331, 1.338, 1.347, 1.357, 1.372, 1.386, 1.4, 1.415, 1.429, 1.443, 1.456, 1.468, 1.475, 1.483,
+ 1.507, 1.497, 1.487, 1.474, 1.46, 1.445, 1.43, 1.414, 1.398, 1.382, 1.368, 1.356, 1.347, 1.338, 1.329, 1.326, 1.326, 1.33, 1.337, 1.345, 1.353, 1.364, 1.377, 1.39, 1.405, 1.419, 1.432, 1.446, 1.458, 1.469, 1.476, 1.483,
+ 1.508, 1.498, 1.489, 1.476, 1.463, 1.448, 1.433, 1.418, 1.402, 1.388, 1.373, 1.363, 1.354, 1.345, 1.335, 1.33, 1.331, 1.334, 1.343, 1.351, 1.36, 1.37, 1.382, 1.394, 1.409, 1.422, 1.435, 1.448, 1.46, 1.471, 1.477, 1.484,
+ 1.508, 1.499, 1.49, 1.478, 1.466, 1.452, 1.437, 1.422, 1.407, 1.394, 1.381, 1.37, 1.361, 1.352, 1.342, 1.338, 1.338, 1.341, 1.349, 1.358, 1.367, 1.377, 1.388, 1.4, 1.413, 1.427, 1.439, 1.451, 1.462, 1.472, 1.478, 1.484,
+ 1.51, 1.501, 1.492, 1.481, 1.469, 1.455, 1.441, 1.427, 1.413, 1.4, 1.389, 1.378, 1.368, 1.359, 1.351, 1.347, 1.347, 1.35, 1.357, 1.364, 1.375, 1.385, 1.395, 1.406, 1.419, 1.432, 1.443, 1.455, 1.465, 1.474, 1.48, 1.486,
+ 1.511, 1.502, 1.494, 1.483, 1.472, 1.459, 1.445, 1.431, 1.418, 1.407, 1.398, 1.387, 1.375, 1.366, 1.36, 1.357, 1.357, 1.359, 1.364, 1.371, 1.382, 1.393, 1.402, 1.412, 1.424, 1.436, 1.447, 1.458, 1.467, 1.477, 1.482, 1.487,
+ 1.511, 1.503, 1.495, 1.485, 1.475, 1.462, 1.449, 1.436, 1.424, 1.414, 1.405, 1.394, 1.383, 1.375, 1.37, 1.368, 1.368, 1.369, 1.373, 1.38, 1.39, 1.4, 1.409, 1.418, 1.43, 1.441, 1.451, 1.461, 1.469, 1.478, 1.482, 1.487,
+ 1.511, 1.503, 1.496, 1.486, 1.477, 1.465, 1.453, 1.442, 1.431, 1.421, 1.412, 1.402, 1.392, 1.385, 1.381, 1.378, 1.378, 1.38, 1.383, 1.389, 1.398, 1.406, 1.415, 1.424, 1.436, 1.446, 1.455, 1.464, 1.471, 1.478, 1.483, 1.487,
+ 1.511, 1.504, 1.496, 1.488, 1.479, 1.468, 1.457, 1.447, 1.437, 1.428, 1.418, 1.409, 1.401, 1.395, 1.391, 1.389, 1.389, 1.39, 1.393, 1.398, 1.405, 1.413, 1.421, 1.431, 1.441, 1.452, 1.459, 1.466, 1.473, 1.479, 1.483, 1.487,
+ 1.511, 1.504, 1.496, 1.488, 1.479, 1.469, 1.459, 1.45, 1.442, 1.433, 1.424, 1.416, 1.408, 1.403, 1.4, 1.399, 1.399, 1.4, 1.402, 1.406, 1.412, 1.419, 1.427, 1.436, 1.446, 1.455, 1.462, 1.468, 1.474, 1.48, 1.484, 1.487,
+ 1.511, 1.503, 1.496, 1.488, 1.479, 1.47, 1.461, 1.453, 1.446, 1.438, 1.429, 1.422, 1.415, 1.411, 1.41, 1.409, 1.409, 1.41, 1.411, 1.413, 1.419, 1.425, 1.433, 1.441, 1.45, 1.457, 1.464, 1.47, 1.476, 1.481, 1.484, 1.487,
+ 1.511, 1.503, 1.496, 1.487, 1.479, 1.471, 1.464, 1.457, 1.45, 1.442, 1.435, 1.428, 1.422, 1.419, 1.419, 1.419, 1.419, 1.419, 1.419, 1.421, 1.426, 1.432, 1.439, 1.447, 1.454, 1.46, 1.466, 1.472, 1.477, 1.482, 1.485, 1.487
+ ]
+ },
+ {
+ "ct": 6000,
+ "table":
+ [
+ 2.581, 2.577, 2.573, 2.566, 2.559, 2.55, 2.541, 2.529, 2.517, 2.504, 2.491, 2.482, 2.476, 2.472, 2.471, 2.471, 2.471, 2.471, 2.471, 2.473, 2.476, 2.482, 2.492, 2.501, 2.51, 2.518, 2.526, 2.533, 2.538, 2.543, 2.544, 2.544,
+ 2.579, 2.574, 2.568, 2.56, 2.552, 2.543, 2.534, 2.522, 2.509, 2.496, 2.481, 2.471, 2.463, 2.458, 2.455, 2.453, 2.453, 2.454, 2.455, 2.458, 2.464, 2.472, 2.483, 2.494, 2.503, 2.512, 2.52, 2.528, 2.534, 2.54, 2.542, 2.544,
+ 2.577, 2.57, 2.564, 2.555, 2.546, 2.537, 2.528, 2.515, 2.501, 2.487, 2.471, 2.46, 2.45, 2.443, 2.438, 2.436, 2.436, 2.437, 2.44, 2.444, 2.452, 2.462, 2.474, 2.486, 2.496, 2.506, 2.515, 2.524, 2.53, 2.537, 2.54, 2.543,
+ 2.574, 2.566, 2.559, 2.549, 2.539, 2.53, 2.521, 2.507, 2.493, 2.477, 2.461, 2.448, 2.437, 2.428, 2.421, 2.418, 2.418, 2.42, 2.424, 2.43, 2.44, 2.451, 2.465, 2.478, 2.489, 2.499, 2.509, 2.519, 2.526, 2.533, 2.538, 2.542,
+ 2.569, 2.562, 2.555, 2.544, 2.533, 2.522, 2.511, 2.496, 2.481, 2.465, 2.449, 2.435, 2.422, 2.413, 2.405, 2.402, 2.402, 2.404, 2.409, 2.416, 2.426, 2.438, 2.453, 2.466, 2.479, 2.491, 2.502, 2.512, 2.52, 2.528, 2.533, 2.538,
+ 2.564, 2.558, 2.552, 2.539, 2.527, 2.514, 2.5, 2.485, 2.469, 2.453, 2.436, 2.422, 2.408, 2.398, 2.389, 2.385, 2.385, 2.388, 2.393, 2.401, 2.413, 2.425, 2.44, 2.455, 2.469, 2.483, 2.494, 2.505, 2.514, 2.523, 2.529, 2.534,
+ 2.56, 2.553, 2.547, 2.534, 2.52, 2.505, 2.49, 2.474, 2.457, 2.441, 2.424, 2.409, 2.393, 2.382, 2.373, 2.369, 2.369, 2.371, 2.378, 2.386, 2.399, 2.412, 2.428, 2.444, 2.459, 2.473, 2.486, 2.497, 2.508, 2.518, 2.524, 2.53,
+ 2.557, 2.549, 2.541, 2.527, 2.512, 2.495, 2.479, 2.462, 2.445, 2.429, 2.413, 2.396, 2.379, 2.366, 2.356, 2.351, 2.351, 2.354, 2.362, 2.372, 2.385, 2.399, 2.416, 2.433, 2.448, 2.463, 2.476, 2.489, 2.501, 2.513, 2.519, 2.526,
+ 2.553, 2.544, 2.535, 2.519, 2.504, 2.486, 2.468, 2.45, 2.433, 2.417, 2.401, 2.383, 2.364, 2.349, 2.338, 2.333, 2.333, 2.337, 2.346, 2.357, 2.371, 2.386, 2.404, 2.421, 2.437, 2.452, 2.467, 2.481, 2.495, 2.508, 2.514, 2.521,
+ 2.55, 2.54, 2.529, 2.513, 2.497, 2.478, 2.458, 2.44, 2.422, 2.405, 2.388, 2.37, 2.352, 2.336, 2.323, 2.317, 2.317, 2.322, 2.332, 2.344, 2.358, 2.374, 2.392, 2.409, 2.426, 2.442, 2.458, 2.474, 2.489, 2.502, 2.509, 2.516,
+ 2.547, 2.536, 2.525, 2.507, 2.49, 2.47, 2.45, 2.43, 2.411, 2.393, 2.374, 2.357, 2.342, 2.326, 2.31, 2.303, 2.302, 2.308, 2.32, 2.333, 2.348, 2.363, 2.379, 2.396, 2.414, 2.433, 2.45, 2.468, 2.482, 2.497, 2.504, 2.512,
+ 2.544, 2.532, 2.52, 2.502, 2.483, 2.463, 2.442, 2.421, 2.4, 2.38, 2.36, 2.344, 2.332, 2.316, 2.297, 2.288, 2.288, 2.294, 2.308, 2.322, 2.337, 2.352, 2.367, 2.383, 2.403, 2.423, 2.442, 2.461, 2.476, 2.491, 2.499, 2.507,
+ 2.542, 2.53, 2.517, 2.498, 2.479, 2.458, 2.436, 2.414, 2.393, 2.371, 2.35, 2.334, 2.319, 2.305, 2.29, 2.283, 2.282, 2.287, 2.298, 2.311, 2.326, 2.341, 2.358, 2.375, 2.396, 2.417, 2.436, 2.456, 2.472, 2.487, 2.496, 2.505,
+ 2.542, 2.528, 2.515, 2.495, 2.476, 2.453, 2.431, 2.408, 2.386, 2.364, 2.342, 2.323, 2.306, 2.294, 2.284, 2.28, 2.28, 2.284, 2.291, 2.3, 2.315, 2.331, 2.35, 2.369, 2.39, 2.411, 2.431, 2.451, 2.467, 2.484, 2.494, 2.505,
+ 2.541, 2.527, 2.512, 2.492, 2.472, 2.449, 2.426, 2.403, 2.379, 2.356, 2.334, 2.313, 2.293, 2.283, 2.279, 2.278, 2.279, 2.28, 2.283, 2.29, 2.304, 2.321, 2.342, 2.363, 2.384, 2.406, 2.426, 2.446, 2.463, 2.48, 2.492, 2.504,
+ 2.541, 2.526, 2.512, 2.492, 2.472, 2.449, 2.426, 2.402, 2.378, 2.356, 2.333, 2.312, 2.292, 2.281, 2.276, 2.274, 2.275, 2.277, 2.28, 2.288, 2.303, 2.32, 2.341, 2.363, 2.384, 2.405, 2.425, 2.445, 2.463, 2.48, 2.492, 2.504,
+ 2.541, 2.526, 2.512, 2.492, 2.472, 2.449, 2.426, 2.402, 2.378, 2.356, 2.333, 2.312, 2.292, 2.28, 2.273, 2.27, 2.271, 2.273, 2.279, 2.288, 2.303, 2.32, 2.341, 2.363, 2.384, 2.405, 2.425, 2.445, 2.463, 2.48, 2.492, 2.504,
+ 2.541, 2.526, 2.512, 2.492, 2.472, 2.449, 2.426, 2.402, 2.379, 2.356, 2.334, 2.313, 2.293, 2.28, 2.271, 2.267, 2.267, 2.271, 2.278, 2.288, 2.303, 2.32, 2.342, 2.363, 2.384, 2.405, 2.426, 2.445, 2.463, 2.48, 2.492, 2.504,
+ 2.541, 2.527, 2.512, 2.493, 2.473, 2.45, 2.427, 2.404, 2.382, 2.36, 2.338, 2.318, 2.299, 2.285, 2.276, 2.271, 2.272, 2.276, 2.284, 2.294, 2.308, 2.324, 2.345, 2.365, 2.386, 2.407, 2.427, 2.447, 2.464, 2.481, 2.492, 2.504,
+ 2.541, 2.527, 2.513, 2.493, 2.474, 2.451, 2.429, 2.406, 2.385, 2.363, 2.342, 2.323, 2.305, 2.291, 2.28, 2.275, 2.276, 2.28, 2.29, 2.301, 2.313, 2.328, 2.348, 2.368, 2.389, 2.409, 2.429, 2.448, 2.465, 2.481, 2.493, 2.504,
+ 2.541, 2.527, 2.514, 2.495, 2.476, 2.454, 2.431, 2.41, 2.389, 2.368, 2.347, 2.329, 2.312, 2.298, 2.286, 2.281, 2.281, 2.286, 2.297, 2.308, 2.319, 2.333, 2.352, 2.372, 2.392, 2.412, 2.432, 2.45, 2.467, 2.482, 2.493, 2.504,
+ 2.542, 2.529, 2.516, 2.498, 2.479, 2.458, 2.437, 2.416, 2.395, 2.376, 2.356, 2.339, 2.324, 2.31, 2.295, 2.289, 2.289, 2.294, 2.305, 2.317, 2.329, 2.344, 2.361, 2.379, 2.398, 2.418, 2.436, 2.454, 2.47, 2.485, 2.495, 2.505,
+ 2.543, 2.531, 2.518, 2.501, 2.483, 2.463, 2.442, 2.422, 2.402, 2.383, 2.364, 2.349, 2.336, 2.321, 2.305, 2.297, 2.297, 2.303, 2.313, 2.325, 2.339, 2.354, 2.37, 2.386, 2.405, 2.423, 2.441, 2.459, 2.473, 2.487, 2.496, 2.506,
+ 2.545, 2.533, 2.521, 2.504, 2.488, 2.468, 2.448, 2.429, 2.41, 2.392, 2.375, 2.36, 2.347, 2.332, 2.316, 2.309, 2.309, 2.313, 2.323, 2.335, 2.35, 2.365, 2.379, 2.394, 2.412, 2.43, 2.447, 2.463, 2.477, 2.49, 2.498, 2.506,
+ 2.547, 2.535, 2.524, 2.508, 2.492, 2.474, 2.456, 2.438, 2.419, 2.403, 2.388, 2.372, 2.357, 2.343, 2.33, 2.324, 2.324, 2.328, 2.335, 2.346, 2.361, 2.375, 2.389, 2.403, 2.42, 2.437, 2.453, 2.468, 2.481, 2.493, 2.5, 2.508,
+ 2.548, 2.538, 2.527, 2.512, 2.497, 2.481, 2.464, 2.446, 2.428, 2.414, 2.401, 2.384, 2.367, 2.354, 2.344, 2.339, 2.339, 2.342, 2.348, 2.357, 2.371, 2.386, 2.399, 2.413, 2.429, 2.444, 2.459, 2.473, 2.485, 2.496, 2.502, 2.509,
+ 2.55, 2.539, 2.529, 2.515, 2.501, 2.486, 2.47, 2.454, 2.438, 2.425, 2.411, 2.396, 2.379, 2.367, 2.359, 2.355, 2.355, 2.357, 2.361, 2.369, 2.382, 2.396, 2.409, 2.423, 2.437, 2.451, 2.464, 2.476, 2.487, 2.498, 2.504, 2.509,
+ 2.551, 2.541, 2.531, 2.518, 2.505, 2.49, 2.476, 2.463, 2.449, 2.435, 2.421, 2.406, 2.392, 2.381, 2.374, 2.371, 2.371, 2.372, 2.376, 2.382, 2.393, 2.406, 2.42, 2.434, 2.446, 2.458, 2.469, 2.479, 2.489, 2.499, 2.504, 2.51,
+ 2.552, 2.542, 2.532, 2.52, 2.508, 2.495, 2.482, 2.471, 2.46, 2.446, 2.43, 2.417, 2.404, 2.396, 2.389, 2.386, 2.386, 2.387, 2.39, 2.395, 2.404, 2.415, 2.431, 2.445, 2.455, 2.465, 2.473, 2.482, 2.491, 2.499, 2.505, 2.511,
+ 2.552, 2.543, 2.533, 2.521, 2.509, 2.497, 2.486, 2.476, 2.466, 2.453, 2.439, 2.427, 2.415, 2.407, 2.403, 2.401, 2.401, 2.401, 2.403, 2.407, 2.415, 2.425, 2.439, 2.452, 2.462, 2.471, 2.478, 2.485, 2.493, 2.501, 2.506, 2.511,
+ 2.553, 2.543, 2.533, 2.521, 2.509, 2.499, 2.488, 2.48, 2.471, 2.46, 2.448, 2.436, 2.424, 2.418, 2.416, 2.415, 2.415, 2.415, 2.416, 2.419, 2.425, 2.434, 2.447, 2.459, 2.468, 2.477, 2.483, 2.489, 2.496, 2.503, 2.507, 2.511,
+ 2.553, 2.543, 2.534, 2.522, 2.51, 2.5, 2.491, 2.484, 2.477, 2.468, 2.457, 2.446, 2.434, 2.429, 2.429, 2.429, 2.429, 2.429, 2.429, 2.431, 2.436, 2.443, 2.454, 2.465, 2.474, 2.482, 2.487, 2.493, 2.499, 2.504, 2.508, 2.511
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 3.132, 3.129, 3.126, 3.121, 3.117, 3.111, 3.104, 3.101, 3.098, 3.095, 3.092, 3.09, 3.088, 3.087, 3.086, 3.087, 3.087, 3.089, 3.09, 3.091, 3.092, 3.094, 3.098, 3.103, 3.109, 3.114, 3.118, 3.122, 3.132, 3.141, 3.143, 3.144,
+ 3.138, 3.133, 3.128, 3.124, 3.119, 3.113, 3.106, 3.102, 3.099, 3.096, 3.094, 3.091, 3.089, 3.088, 3.087, 3.088, 3.089, 3.09, 3.091, 3.092, 3.094, 3.097, 3.101, 3.105, 3.11, 3.115, 3.12, 3.125, 3.134, 3.142, 3.145, 3.147,
+ 3.144, 3.137, 3.131, 3.126, 3.122, 3.115, 3.108, 3.104, 3.101, 3.098, 3.095, 3.093, 3.091, 3.089, 3.089, 3.089, 3.09, 3.09, 3.091, 3.093, 3.096, 3.1, 3.103, 3.107, 3.111, 3.116, 3.122, 3.128, 3.136, 3.143, 3.147, 3.15,
+ 3.15, 3.142, 3.134, 3.129, 3.124, 3.117, 3.11, 3.106, 3.102, 3.1, 3.097, 3.095, 3.093, 3.091, 3.09, 3.09, 3.091, 3.092, 3.092, 3.094, 3.099, 3.102, 3.105, 3.109, 3.113, 3.118, 3.124, 3.13, 3.138, 3.145, 3.149, 3.153,
+ 3.154, 3.147, 3.14, 3.133, 3.126, 3.12, 3.115, 3.11, 3.105, 3.102, 3.1, 3.098, 3.096, 3.095, 3.094, 3.094, 3.095, 3.096, 3.096, 3.098, 3.101, 3.105, 3.108, 3.112, 3.116, 3.121, 3.126, 3.132, 3.14, 3.148, 3.152, 3.156,
+ 3.158, 3.152, 3.146, 3.137, 3.129, 3.124, 3.119, 3.114, 3.108, 3.105, 3.102, 3.101, 3.099, 3.099, 3.098, 3.098, 3.099, 3.099, 3.1, 3.102, 3.104, 3.107, 3.111, 3.115, 3.119, 3.124, 3.129, 3.134, 3.143, 3.151, 3.154, 3.158,
+ 3.163, 3.157, 3.151, 3.142, 3.132, 3.127, 3.123, 3.117, 3.112, 3.108, 3.106, 3.105, 3.104, 3.103, 3.103, 3.103, 3.103, 3.104, 3.105, 3.106, 3.108, 3.11, 3.114, 3.118, 3.123, 3.127, 3.132, 3.137, 3.146, 3.154, 3.157, 3.161,
+ 3.168, 3.162, 3.155, 3.146, 3.137, 3.131, 3.126, 3.121, 3.117, 3.114, 3.112, 3.111, 3.109, 3.109, 3.109, 3.109, 3.109, 3.11, 3.11, 3.111, 3.113, 3.115, 3.118, 3.122, 3.126, 3.13, 3.135, 3.141, 3.149, 3.156, 3.16, 3.165,
+ 3.174, 3.167, 3.16, 3.151, 3.143, 3.136, 3.129, 3.125, 3.122, 3.12, 3.119, 3.117, 3.115, 3.115, 3.115, 3.115, 3.115, 3.116, 3.116, 3.117, 3.119, 3.12, 3.122, 3.125, 3.129, 3.134, 3.139, 3.145, 3.152, 3.158, 3.164, 3.169,
+ 3.177, 3.171, 3.164, 3.156, 3.148, 3.14, 3.133, 3.13, 3.128, 3.127, 3.126, 3.124, 3.122, 3.122, 3.122, 3.122, 3.122, 3.123, 3.123, 3.124, 3.125, 3.126, 3.127, 3.129, 3.133, 3.138, 3.144, 3.15, 3.156, 3.162, 3.167, 3.173,
+ 3.18, 3.175, 3.17, 3.161, 3.152, 3.145, 3.139, 3.136, 3.135, 3.134, 3.133, 3.132, 3.13, 3.13, 3.13, 3.131, 3.131, 3.131, 3.131, 3.131, 3.132, 3.133, 3.133, 3.135, 3.138, 3.142, 3.149, 3.155, 3.16, 3.166, 3.171, 3.175,
+ 3.182, 3.179, 3.175, 3.166, 3.157, 3.15, 3.144, 3.142, 3.141, 3.141, 3.141, 3.14, 3.138, 3.137, 3.138, 3.139, 3.139, 3.139, 3.139, 3.139, 3.139, 3.139, 3.139, 3.14, 3.143, 3.146, 3.153, 3.16, 3.165, 3.17, 3.174, 3.178,
+ 3.185, 3.181, 3.178, 3.169, 3.16, 3.154, 3.148, 3.147, 3.146, 3.146, 3.147, 3.146, 3.145, 3.145, 3.146, 3.147, 3.147, 3.147, 3.147, 3.147, 3.147, 3.147, 3.146, 3.147, 3.149, 3.152, 3.158, 3.164, 3.169, 3.173, 3.177, 3.181,
+ 3.187, 3.184, 3.18, 3.172, 3.163, 3.158, 3.153, 3.152, 3.151, 3.151, 3.151, 3.151, 3.151, 3.152, 3.154, 3.154, 3.154, 3.154, 3.154, 3.154, 3.154, 3.154, 3.154, 3.154, 3.155, 3.157, 3.162, 3.167, 3.171, 3.176, 3.18, 3.184,
+ 3.189, 3.186, 3.183, 3.175, 3.166, 3.161, 3.157, 3.156, 3.156, 3.156, 3.156, 3.157, 3.158, 3.159, 3.161, 3.162, 3.162, 3.162, 3.162, 3.162, 3.162, 3.162, 3.161, 3.161, 3.162, 3.163, 3.166, 3.169, 3.174, 3.179, 3.183, 3.187,
+ 3.192, 3.189, 3.185, 3.177, 3.168, 3.164, 3.16, 3.159, 3.159, 3.159, 3.16, 3.161, 3.162, 3.164, 3.165, 3.166, 3.166, 3.166, 3.166, 3.166, 3.166, 3.165, 3.164, 3.164, 3.164, 3.166, 3.168, 3.172, 3.177, 3.182, 3.185, 3.188,
+ 3.196, 3.192, 3.187, 3.179, 3.17, 3.166, 3.163, 3.162, 3.162, 3.162, 3.163, 3.165, 3.166, 3.168, 3.169, 3.17, 3.17, 3.17, 3.169, 3.169, 3.169, 3.168, 3.167, 3.167, 3.167, 3.168, 3.171, 3.174, 3.179, 3.185, 3.186, 3.188,
+ 3.199, 3.194, 3.19, 3.181, 3.172, 3.169, 3.166, 3.165, 3.164, 3.165, 3.167, 3.168, 3.17, 3.172, 3.173, 3.173, 3.173, 3.173, 3.172, 3.172, 3.171, 3.171, 3.17, 3.169, 3.169, 3.17, 3.173, 3.176, 3.182, 3.187, 3.188, 3.189,
+ 3.202, 3.197, 3.192, 3.183, 3.175, 3.171, 3.168, 3.166, 3.165, 3.165, 3.167, 3.168, 3.17, 3.172, 3.173, 3.173, 3.173, 3.173, 3.172, 3.172, 3.171, 3.171, 3.17, 3.17, 3.17, 3.171, 3.174, 3.177, 3.183, 3.189, 3.19, 3.191,
+ 3.204, 3.199, 3.195, 3.186, 3.177, 3.173, 3.17, 3.168, 3.165, 3.166, 3.167, 3.168, 3.17, 3.172, 3.173, 3.173, 3.173, 3.173, 3.172, 3.172, 3.171, 3.171, 3.171, 3.171, 3.171, 3.172, 3.175, 3.177, 3.184, 3.191, 3.192, 3.193,
+ 3.206, 3.201, 3.196, 3.188, 3.178, 3.175, 3.172, 3.169, 3.166, 3.165, 3.166, 3.168, 3.169, 3.17, 3.171, 3.172, 3.172, 3.172, 3.171, 3.171, 3.171, 3.171, 3.171, 3.171, 3.172, 3.173, 3.176, 3.178, 3.185, 3.192, 3.193, 3.194,
+ 3.207, 3.202, 3.197, 3.188, 3.179, 3.175, 3.172, 3.169, 3.165, 3.164, 3.164, 3.165, 3.165, 3.166, 3.167, 3.168, 3.168, 3.168, 3.168, 3.169, 3.169, 3.169, 3.17, 3.171, 3.172, 3.174, 3.176, 3.18, 3.186, 3.193, 3.194, 3.196,
+ 3.208, 3.203, 3.197, 3.188, 3.179, 3.175, 3.172, 3.168, 3.165, 3.163, 3.162, 3.162, 3.161, 3.162, 3.163, 3.164, 3.164, 3.164, 3.165, 3.166, 3.167, 3.168, 3.17, 3.171, 3.172, 3.174, 3.177, 3.181, 3.187, 3.193, 3.195, 3.197,
+ 3.208, 3.203, 3.197, 3.188, 3.179, 3.174, 3.171, 3.168, 3.164, 3.162, 3.161, 3.16, 3.159, 3.159, 3.159, 3.16, 3.161, 3.162, 3.163, 3.164, 3.166, 3.167, 3.169, 3.171, 3.172, 3.174, 3.178, 3.182, 3.188, 3.194, 3.196, 3.198,
+ 3.206, 3.201, 3.196, 3.187, 3.178, 3.173, 3.169, 3.166, 3.163, 3.161, 3.159, 3.158, 3.157, 3.157, 3.157, 3.158, 3.16, 3.161, 3.162, 3.163, 3.164, 3.166, 3.168, 3.17, 3.172, 3.174, 3.178, 3.182, 3.189, 3.196, 3.197, 3.199,
+ 3.205, 3.2, 3.195, 3.186, 3.177, 3.172, 3.167, 3.164, 3.162, 3.16, 3.157, 3.156, 3.155, 3.155, 3.155, 3.156, 3.158, 3.16, 3.161, 3.162, 3.163, 3.165, 3.167, 3.169, 3.171, 3.174, 3.178, 3.183, 3.19, 3.197, 3.198, 3.199,
+ 3.203, 3.198, 3.194, 3.185, 3.177, 3.172, 3.167, 3.164, 3.162, 3.159, 3.157, 3.155, 3.154, 3.154, 3.154, 3.155, 3.157, 3.159, 3.16, 3.162, 3.163, 3.165, 3.167, 3.169, 3.171, 3.174, 3.179, 3.184, 3.191, 3.198, 3.198, 3.199,
+ 3.201, 3.197, 3.193, 3.185, 3.177, 3.172, 3.168, 3.165, 3.162, 3.159, 3.157, 3.156, 3.154, 3.153, 3.153, 3.154, 3.156, 3.158, 3.16, 3.162, 3.163, 3.165, 3.167, 3.169, 3.171, 3.174, 3.18, 3.185, 3.191, 3.197, 3.198, 3.199,
+ 3.199, 3.195, 3.191, 3.184, 3.177, 3.173, 3.169, 3.166, 3.162, 3.16, 3.158, 3.156, 3.154, 3.153, 3.153, 3.154, 3.155, 3.157, 3.16, 3.162, 3.163, 3.165, 3.167, 3.169, 3.171, 3.174, 3.18, 3.186, 3.191, 3.196, 3.198, 3.199,
+ 3.199, 3.195, 3.19, 3.184, 3.178, 3.174, 3.171, 3.167, 3.163, 3.16, 3.158, 3.156, 3.154, 3.153, 3.153, 3.154, 3.155, 3.157, 3.159, 3.161, 3.163, 3.166, 3.167, 3.17, 3.172, 3.175, 3.181, 3.186, 3.191, 3.195, 3.197, 3.199,
+ 3.199, 3.194, 3.189, 3.184, 3.179, 3.175, 3.172, 3.168, 3.165, 3.161, 3.158, 3.156, 3.154, 3.153, 3.153, 3.154, 3.155, 3.157, 3.159, 3.161, 3.164, 3.167, 3.169, 3.171, 3.173, 3.176, 3.181, 3.186, 3.19, 3.194, 3.196, 3.198,
+ 3.199, 3.194, 3.188, 3.184, 3.18, 3.176, 3.174, 3.17, 3.166, 3.162, 3.158, 3.156, 3.154, 3.153, 3.154, 3.155, 3.155, 3.157, 3.158, 3.161, 3.164, 3.168, 3.17, 3.172, 3.174, 3.177, 3.181, 3.186, 3.189, 3.193, 3.196, 3.198
+ ]
+ },
+ {
+ "ct": 6000,
+ "table":
+ [
+ 1.579, 1.579, 1.579, 1.578, 1.577, 1.576, 1.574, 1.574, 1.573, 1.572, 1.571, 1.571, 1.571, 1.571, 1.571, 1.571, 1.571, 1.571, 1.57, 1.569, 1.569, 1.569, 1.57, 1.571, 1.572, 1.572, 1.573, 1.574, 1.576, 1.577, 1.578, 1.578,
+ 1.581, 1.58, 1.579, 1.578, 1.577, 1.576, 1.575, 1.574, 1.573, 1.572, 1.572, 1.571, 1.571, 1.571, 1.571, 1.571, 1.571, 1.571, 1.57, 1.57, 1.57, 1.57, 1.571, 1.571, 1.572, 1.573, 1.574, 1.575, 1.576, 1.577, 1.578, 1.578,
+ 1.583, 1.581, 1.579, 1.578, 1.578, 1.576, 1.575, 1.574, 1.573, 1.573, 1.572, 1.571, 1.571, 1.571, 1.572, 1.572, 1.572, 1.571, 1.571, 1.57, 1.57, 1.571, 1.571, 1.572, 1.572, 1.573, 1.574, 1.576, 1.577, 1.578, 1.578, 1.579,
+ 1.584, 1.582, 1.579, 1.579, 1.578, 1.577, 1.575, 1.574, 1.573, 1.573, 1.572, 1.572, 1.571, 1.571, 1.572, 1.572, 1.572, 1.572, 1.571, 1.571, 1.571, 1.571, 1.572, 1.572, 1.573, 1.573, 1.575, 1.576, 1.577, 1.578, 1.579, 1.579,
+ 1.585, 1.583, 1.581, 1.58, 1.579, 1.578, 1.576, 1.575, 1.574, 1.573, 1.573, 1.572, 1.572, 1.572, 1.573, 1.573, 1.573, 1.573, 1.573, 1.572, 1.572, 1.572, 1.572, 1.573, 1.574, 1.575, 1.576, 1.577, 1.578, 1.579, 1.58, 1.58,
+ 1.586, 1.585, 1.583, 1.581, 1.579, 1.578, 1.577, 1.576, 1.575, 1.574, 1.573, 1.573, 1.573, 1.573, 1.574, 1.574, 1.574, 1.574, 1.574, 1.573, 1.573, 1.573, 1.573, 1.574, 1.575, 1.576, 1.577, 1.578, 1.579, 1.58, 1.58, 1.581,
+ 1.588, 1.586, 1.584, 1.582, 1.58, 1.579, 1.578, 1.577, 1.576, 1.575, 1.574, 1.574, 1.574, 1.574, 1.575, 1.576, 1.576, 1.576, 1.575, 1.575, 1.574, 1.574, 1.574, 1.575, 1.576, 1.576, 1.577, 1.579, 1.58, 1.582, 1.582, 1.582,
+ 1.589, 1.587, 1.586, 1.584, 1.582, 1.58, 1.579, 1.578, 1.577, 1.576, 1.576, 1.576, 1.576, 1.576, 1.577, 1.578, 1.578, 1.578, 1.578, 1.577, 1.576, 1.575, 1.575, 1.576, 1.576, 1.577, 1.578, 1.58, 1.581, 1.583, 1.583, 1.583,
+ 1.59, 1.588, 1.587, 1.585, 1.583, 1.581, 1.579, 1.578, 1.578, 1.578, 1.578, 1.578, 1.578, 1.579, 1.58, 1.58, 1.58, 1.58, 1.58, 1.579, 1.578, 1.577, 1.577, 1.577, 1.577, 1.578, 1.579, 1.581, 1.583, 1.584, 1.585, 1.585,
+ 1.592, 1.59, 1.588, 1.586, 1.585, 1.583, 1.581, 1.58, 1.579, 1.58, 1.58, 1.58, 1.581, 1.581, 1.582, 1.582, 1.582, 1.582, 1.582, 1.582, 1.58, 1.579, 1.579, 1.578, 1.579, 1.579, 1.581, 1.582, 1.584, 1.586, 1.586, 1.587,
+ 1.593, 1.591, 1.589, 1.588, 1.586, 1.584, 1.583, 1.582, 1.582, 1.582, 1.583, 1.583, 1.583, 1.584, 1.584, 1.584, 1.585, 1.585, 1.585, 1.584, 1.583, 1.582, 1.581, 1.581, 1.581, 1.582, 1.583, 1.584, 1.586, 1.587, 1.587, 1.588,
+ 1.595, 1.593, 1.591, 1.589, 1.587, 1.586, 1.585, 1.584, 1.584, 1.585, 1.585, 1.586, 1.586, 1.586, 1.586, 1.587, 1.587, 1.587, 1.587, 1.587, 1.585, 1.584, 1.584, 1.583, 1.583, 1.584, 1.585, 1.586, 1.587, 1.589, 1.589, 1.589,
+ 1.596, 1.594, 1.592, 1.59, 1.588, 1.587, 1.586, 1.586, 1.586, 1.587, 1.588, 1.588, 1.589, 1.589, 1.589, 1.59, 1.59, 1.59, 1.59, 1.59, 1.588, 1.587, 1.587, 1.587, 1.586, 1.586, 1.587, 1.588, 1.589, 1.59, 1.59, 1.59,
+ 1.596, 1.595, 1.594, 1.592, 1.59, 1.589, 1.588, 1.588, 1.589, 1.589, 1.59, 1.591, 1.592, 1.592, 1.592, 1.593, 1.593, 1.594, 1.594, 1.593, 1.592, 1.591, 1.59, 1.59, 1.589, 1.589, 1.589, 1.59, 1.591, 1.591, 1.591, 1.591,
+ 1.597, 1.596, 1.595, 1.593, 1.591, 1.59, 1.589, 1.59, 1.591, 1.592, 1.592, 1.593, 1.594, 1.595, 1.595, 1.596, 1.596, 1.597, 1.597, 1.596, 1.595, 1.595, 1.594, 1.593, 1.592, 1.592, 1.592, 1.592, 1.592, 1.593, 1.593, 1.593,
+ 1.598, 1.597, 1.596, 1.594, 1.592, 1.591, 1.59, 1.591, 1.591, 1.592, 1.593, 1.594, 1.596, 1.596, 1.597, 1.597, 1.598, 1.599, 1.598, 1.598, 1.597, 1.596, 1.595, 1.594, 1.594, 1.593, 1.593, 1.593, 1.593, 1.594, 1.594, 1.594,
+ 1.6, 1.598, 1.596, 1.595, 1.593, 1.592, 1.591, 1.592, 1.592, 1.593, 1.594, 1.595, 1.597, 1.597, 1.598, 1.599, 1.6, 1.6, 1.6, 1.599, 1.598, 1.597, 1.596, 1.595, 1.595, 1.594, 1.594, 1.595, 1.595, 1.594, 1.594, 1.594,
+ 1.601, 1.599, 1.597, 1.595, 1.593, 1.593, 1.592, 1.592, 1.593, 1.594, 1.595, 1.596, 1.597, 1.598, 1.599, 1.6, 1.601, 1.602, 1.601, 1.6, 1.599, 1.598, 1.597, 1.596, 1.595, 1.595, 1.596, 1.596, 1.596, 1.595, 1.595, 1.595,
+ 1.601, 1.599, 1.598, 1.596, 1.594, 1.593, 1.592, 1.593, 1.593, 1.594, 1.595, 1.596, 1.597, 1.598, 1.599, 1.6, 1.601, 1.602, 1.601, 1.6, 1.599, 1.598, 1.597, 1.596, 1.596, 1.596, 1.596, 1.596, 1.596, 1.596, 1.596, 1.596,
+ 1.601, 1.6, 1.599, 1.596, 1.594, 1.593, 1.593, 1.593, 1.593, 1.594, 1.595, 1.596, 1.597, 1.598, 1.599, 1.6, 1.601, 1.602, 1.601, 1.6, 1.599, 1.598, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.596, 1.596, 1.596,
+ 1.601, 1.6, 1.599, 1.597, 1.594, 1.594, 1.593, 1.593, 1.593, 1.594, 1.594, 1.596, 1.597, 1.598, 1.599, 1.6, 1.601, 1.601, 1.601, 1.6, 1.599, 1.598, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597,
+ 1.601, 1.6, 1.599, 1.597, 1.594, 1.594, 1.593, 1.593, 1.593, 1.593, 1.594, 1.595, 1.596, 1.597, 1.598, 1.599, 1.599, 1.6, 1.6, 1.599, 1.599, 1.598, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597,
+ 1.602, 1.6, 1.599, 1.597, 1.594, 1.594, 1.593, 1.593, 1.592, 1.593, 1.593, 1.594, 1.595, 1.596, 1.597, 1.598, 1.598, 1.598, 1.598, 1.598, 1.598, 1.598, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.598, 1.598, 1.598,
+ 1.602, 1.6, 1.599, 1.597, 1.594, 1.594, 1.593, 1.592, 1.592, 1.592, 1.593, 1.593, 1.594, 1.595, 1.596, 1.597, 1.597, 1.597, 1.598, 1.598, 1.598, 1.598, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.598, 1.598, 1.598, 1.598,
+ 1.6, 1.599, 1.599, 1.596, 1.594, 1.593, 1.593, 1.592, 1.592, 1.592, 1.592, 1.592, 1.593, 1.594, 1.595, 1.596, 1.596, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.598, 1.598, 1.598, 1.599, 1.599, 1.599,
+ 1.599, 1.599, 1.598, 1.596, 1.594, 1.593, 1.592, 1.592, 1.591, 1.591, 1.591, 1.592, 1.592, 1.593, 1.595, 1.595, 1.596, 1.596, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.598, 1.599, 1.599, 1.599, 1.599, 1.599,
+ 1.599, 1.598, 1.598, 1.596, 1.594, 1.593, 1.592, 1.592, 1.591, 1.591, 1.591, 1.591, 1.592, 1.593, 1.594, 1.595, 1.596, 1.596, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.598, 1.599, 1.599, 1.599, 1.599, 1.599,
+ 1.598, 1.598, 1.597, 1.596, 1.594, 1.593, 1.593, 1.592, 1.592, 1.592, 1.592, 1.592, 1.592, 1.593, 1.594, 1.595, 1.595, 1.596, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.597, 1.598, 1.598, 1.599, 1.599, 1.599, 1.599, 1.599,
+ 1.598, 1.597, 1.596, 1.595, 1.594, 1.594, 1.593, 1.593, 1.592, 1.592, 1.592, 1.592, 1.592, 1.593, 1.594, 1.594, 1.595, 1.596, 1.596, 1.597, 1.597, 1.597, 1.597, 1.597, 1.598, 1.598, 1.599, 1.599, 1.599, 1.599, 1.599, 1.599,
+ 1.598, 1.597, 1.596, 1.595, 1.594, 1.594, 1.593, 1.593, 1.592, 1.592, 1.592, 1.592, 1.592, 1.593, 1.594, 1.594, 1.595, 1.595, 1.596, 1.597, 1.597, 1.597, 1.597, 1.597, 1.598, 1.598, 1.599, 1.599, 1.599, 1.599, 1.599, 1.599,
+ 1.597, 1.596, 1.595, 1.595, 1.594, 1.594, 1.594, 1.593, 1.593, 1.592, 1.592, 1.592, 1.593, 1.593, 1.594, 1.595, 1.595, 1.595, 1.596, 1.597, 1.597, 1.598, 1.598, 1.598, 1.598, 1.598, 1.599, 1.599, 1.599, 1.599, 1.599, 1.599,
+ 1.597, 1.596, 1.595, 1.595, 1.594, 1.594, 1.594, 1.594, 1.593, 1.593, 1.592, 1.592, 1.593, 1.594, 1.595, 1.595, 1.595, 1.595, 1.596, 1.597, 1.598, 1.598, 1.598, 1.598, 1.598, 1.598, 1.599, 1.599, 1.599, 1.599, 1.599, 1.599
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 2.887, 2.823, 2.758, 2.586, 2.405, 2.265, 2.132, 2.01, 1.891, 1.795, 1.707, 1.661, 1.635, 1.624, 1.623, 1.623, 1.623, 1.623, 1.624, 1.633, 1.654, 1.698, 1.785, 1.88, 1.998, 2.118, 2.249, 2.385, 2.56, 2.727, 2.782, 2.838,
+ 2.84, 2.745, 2.65, 2.482, 2.308, 2.18, 2.058, 1.941, 1.826, 1.736, 1.656, 1.609, 1.577, 1.56, 1.552, 1.548, 1.548, 1.551, 1.559, 1.574, 1.603, 1.648, 1.726, 1.814, 1.929, 2.045, 2.164, 2.29, 2.457, 2.619, 2.708, 2.797,
+ 2.793, 2.667, 2.542, 2.378, 2.212, 2.094, 1.985, 1.873, 1.761, 1.678, 1.606, 1.557, 1.519, 1.495, 1.48, 1.473, 1.473, 1.48, 1.494, 1.516, 1.551, 1.597, 1.667, 1.748, 1.861, 1.972, 2.08, 2.195, 2.354, 2.511, 2.634, 2.756,
+ 2.734, 2.586, 2.438, 2.279, 2.119, 2.011, 1.91, 1.805, 1.697, 1.62, 1.553, 1.503, 1.461, 1.432, 1.411, 1.401, 1.401, 1.41, 1.43, 1.457, 1.497, 1.545, 1.609, 1.685, 1.792, 1.898, 1.997, 2.103, 2.256, 2.409, 2.556, 2.703,
+ 2.624, 2.49, 2.357, 2.203, 2.048, 1.936, 1.831, 1.736, 1.644, 1.566, 1.495, 1.443, 1.402, 1.372, 1.352, 1.342, 1.342, 1.351, 1.37, 1.397, 1.437, 1.486, 1.556, 1.632, 1.724, 1.818, 1.922, 2.032, 2.181, 2.33, 2.461, 2.593,
+ 2.513, 2.394, 2.275, 2.127, 1.976, 1.861, 1.751, 1.667, 1.59, 1.513, 1.436, 1.383, 1.342, 1.313, 1.292, 1.283, 1.283, 1.291, 1.31, 1.337, 1.376, 1.427, 1.503, 1.579, 1.655, 1.738, 1.846, 1.96, 2.106, 2.25, 2.367, 2.483,
+ 2.427, 2.315, 2.203, 2.058, 1.912, 1.795, 1.683, 1.604, 1.534, 1.461, 1.385, 1.332, 1.289, 1.259, 1.238, 1.228, 1.228, 1.237, 1.255, 1.282, 1.323, 1.376, 1.451, 1.524, 1.592, 1.669, 1.78, 1.895, 2.039, 2.18, 2.288, 2.396,
+ 2.383, 2.265, 2.147, 2.004, 1.859, 1.744, 1.634, 1.552, 1.477, 1.411, 1.349, 1.295, 1.245, 1.213, 1.191, 1.181, 1.181, 1.19, 1.208, 1.238, 1.286, 1.339, 1.401, 1.467, 1.54, 1.62, 1.73, 1.843, 1.984, 2.124, 2.236, 2.348,
+ 2.338, 2.215, 2.091, 1.949, 1.807, 1.694, 1.585, 1.499, 1.42, 1.362, 1.313, 1.259, 1.202, 1.167, 1.145, 1.134, 1.134, 1.143, 1.161, 1.194, 1.248, 1.301, 1.352, 1.41, 1.487, 1.571, 1.679, 1.791, 1.93, 2.067, 2.184, 2.3,
+ 2.307, 2.176, 2.046, 1.906, 1.765, 1.653, 1.545, 1.458, 1.377, 1.321, 1.274, 1.223, 1.17, 1.133, 1.107, 1.095, 1.094, 1.105, 1.127, 1.161, 1.212, 1.262, 1.31, 1.366, 1.446, 1.531, 1.638, 1.749, 1.886, 2.022, 2.145, 2.267,
+ 2.286, 2.147, 2.009, 1.87, 1.732, 1.62, 1.514, 1.427, 1.345, 1.285, 1.232, 1.187, 1.147, 1.11, 1.077, 1.061, 1.06, 1.074, 1.104, 1.137, 1.178, 1.222, 1.273, 1.333, 1.413, 1.499, 1.605, 1.716, 1.851, 1.986, 2.117, 2.247,
+ 2.265, 2.119, 1.973, 1.835, 1.698, 1.588, 1.482, 1.395, 1.313, 1.249, 1.19, 1.152, 1.123, 1.087, 1.046, 1.027, 1.027, 1.043, 1.08, 1.114, 1.143, 1.181, 1.237, 1.3, 1.381, 1.467, 1.573, 1.682, 1.816, 1.95, 2.089, 2.227,
+ 2.258, 2.104, 1.95, 1.813, 1.677, 1.567, 1.462, 1.375, 1.293, 1.227, 1.167, 1.127, 1.096, 1.065, 1.032, 1.016, 1.014, 1.028, 1.058, 1.088, 1.117, 1.157, 1.215, 1.28, 1.361, 1.447, 1.552, 1.661, 1.794, 1.928, 2.075, 2.222,
+ 2.258, 2.095, 1.933, 1.795, 1.66, 1.551, 1.446, 1.36, 1.278, 1.211, 1.15, 1.105, 1.068, 1.042, 1.023, 1.013, 1.011, 1.018, 1.036, 1.06, 1.095, 1.139, 1.199, 1.265, 1.346, 1.432, 1.536, 1.644, 1.777, 1.912, 2.067, 2.222,
+ 2.257, 2.086, 1.915, 1.778, 1.643, 1.535, 1.43, 1.344, 1.262, 1.195, 1.133, 1.083, 1.039, 1.019, 1.014, 1.01, 1.007, 1.008, 1.013, 1.033, 1.073, 1.12, 1.183, 1.25, 1.331, 1.417, 1.52, 1.627, 1.76, 1.895, 2.059, 2.222,
+ 2.257, 2.085, 1.913, 1.776, 1.642, 1.533, 1.429, 1.343, 1.261, 1.194, 1.132, 1.081, 1.036, 1.015, 1.01, 1.007, 1.005, 1.006, 1.009, 1.028, 1.07, 1.119, 1.181, 1.249, 1.33, 1.416, 1.519, 1.626, 1.759, 1.894, 2.058, 2.222,
+ 2.257, 2.085, 1.913, 1.776, 1.642, 1.533, 1.429, 1.343, 1.261, 1.194, 1.132, 1.081, 1.035, 1.013, 1.007, 1.004, 1.003, 1.004, 1.007, 1.026, 1.069, 1.119, 1.181, 1.249, 1.33, 1.416, 1.519, 1.626, 1.759, 1.894, 2.058, 2.222,
+ 2.257, 2.086, 1.915, 1.778, 1.643, 1.535, 1.43, 1.344, 1.262, 1.195, 1.133, 1.082, 1.037, 1.014, 1.005, 1.001, 1.001, 1.003, 1.007, 1.027, 1.07, 1.12, 1.183, 1.25, 1.331, 1.417, 1.52, 1.627, 1.76, 1.896, 2.059, 2.222,
+ 2.257, 2.093, 1.93, 1.793, 1.658, 1.549, 1.444, 1.358, 1.277, 1.21, 1.148, 1.101, 1.062, 1.034, 1.015, 1.005, 1.004, 1.012, 1.029, 1.054, 1.091, 1.136, 1.198, 1.265, 1.346, 1.432, 1.536, 1.644, 1.778, 1.913, 2.068, 2.224,
+ 2.257, 2.101, 1.945, 1.808, 1.673, 1.564, 1.459, 1.373, 1.292, 1.225, 1.163, 1.12, 1.086, 1.055, 1.024, 1.009, 1.007, 1.02, 1.05, 1.08, 1.111, 1.152, 1.213, 1.28, 1.361, 1.447, 1.552, 1.66, 1.795, 1.931, 2.078, 2.225,
+ 2.262, 2.114, 1.965, 1.829, 1.693, 1.583, 1.477, 1.391, 1.311, 1.244, 1.184, 1.142, 1.111, 1.076, 1.038, 1.02, 1.017, 1.034, 1.072, 1.106, 1.135, 1.174, 1.234, 1.299, 1.38, 1.466, 1.572, 1.681, 1.817, 1.953, 2.092, 2.232,
+ 2.28, 2.14, 2.0, 1.862, 1.725, 1.614, 1.507, 1.421, 1.34, 1.276, 1.22, 1.175, 1.136, 1.099, 1.065, 1.048, 1.047, 1.062, 1.094, 1.13, 1.17, 1.215, 1.268, 1.329, 1.411, 1.498, 1.604, 1.714, 1.851, 1.988, 2.12, 2.252,
+ 2.299, 2.166, 2.034, 1.896, 1.757, 1.645, 1.537, 1.45, 1.369, 1.309, 1.256, 1.207, 1.16, 1.123, 1.092, 1.077, 1.077, 1.089, 1.116, 1.153, 1.206, 1.256, 1.303, 1.359, 1.442, 1.529, 1.636, 1.747, 1.886, 2.024, 2.148, 2.273,
+ 2.328, 2.203, 2.078, 1.938, 1.797, 1.684, 1.575, 1.489, 1.409, 1.348, 1.294, 1.242, 1.191, 1.153, 1.126, 1.113, 1.113, 1.124, 1.148, 1.185, 1.241, 1.295, 1.344, 1.402, 1.481, 1.567, 1.675, 1.788, 1.929, 2.068, 2.186, 2.305,
+ 2.369, 2.251, 2.133, 1.991, 1.847, 1.732, 1.621, 1.539, 1.464, 1.397, 1.334, 1.279, 1.228, 1.193, 1.167, 1.155, 1.155, 1.167, 1.191, 1.226, 1.277, 1.331, 1.393, 1.459, 1.533, 1.614, 1.724, 1.838, 1.982, 2.123, 2.237, 2.351,
+ 2.41, 2.299, 2.188, 2.044, 1.897, 1.78, 1.668, 1.589, 1.518, 1.446, 1.374, 1.316, 1.266, 1.232, 1.209, 1.198, 1.198, 1.21, 1.234, 1.267, 1.312, 1.367, 1.443, 1.516, 1.584, 1.661, 1.773, 1.889, 2.035, 2.178, 2.287, 2.396,
+ 2.493, 2.375, 2.258, 2.11, 1.96, 1.845, 1.735, 1.65, 1.572, 1.497, 1.423, 1.365, 1.315, 1.282, 1.26, 1.25, 1.25, 1.261, 1.286, 1.318, 1.362, 1.417, 1.494, 1.57, 1.646, 1.729, 1.838, 1.953, 2.102, 2.248, 2.365, 2.483,
+ 2.599, 2.467, 2.335, 2.183, 2.03, 1.919, 1.814, 1.719, 1.627, 1.549, 1.478, 1.421, 1.372, 1.339, 1.317, 1.306, 1.306, 1.318, 1.343, 1.376, 1.421, 1.475, 1.546, 1.623, 1.715, 1.809, 1.914, 2.025, 2.176, 2.326, 2.459, 2.592,
+ 2.705, 2.559, 2.413, 2.256, 2.099, 1.992, 1.893, 1.788, 1.681, 1.602, 1.532, 1.477, 1.428, 1.395, 1.373, 1.363, 1.363, 1.374, 1.4, 1.433, 1.479, 1.532, 1.598, 1.675, 1.783, 1.89, 1.99, 2.097, 2.251, 2.405, 2.553, 2.702,
+ 2.763, 2.639, 2.514, 2.353, 2.19, 2.075, 1.967, 1.856, 1.744, 1.659, 1.584, 1.529, 1.484, 1.456, 1.44, 1.432, 1.432, 1.441, 1.459, 1.487, 1.53, 1.583, 1.655, 1.738, 1.852, 1.965, 2.073, 2.189, 2.35, 2.508, 2.632, 2.757,
+ 2.81, 2.716, 2.621, 2.456, 2.285, 2.158, 2.039, 1.923, 1.809, 1.718, 1.636, 1.581, 1.54, 1.518, 1.509, 1.505, 1.505, 1.509, 1.519, 1.54, 1.58, 1.633, 1.714, 1.804, 1.92, 2.038, 2.158, 2.286, 2.454, 2.617, 2.708, 2.799,
+ 2.858, 2.793, 2.728, 2.558, 2.38, 2.242, 2.111, 1.991, 1.873, 1.777, 1.688, 1.633, 1.596, 1.58, 1.578, 1.577, 1.577, 1.577, 1.578, 1.593, 1.629, 1.683, 1.772, 1.87, 1.989, 2.111, 2.244, 2.382, 2.558, 2.726, 2.784, 2.842
+ ],
+ "sigma": 0.00372,
+ "sigma_Cb": 0.00244
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2890,
+ "ccm":
+ [
+ 1.36754, -0.18448, -0.18306,
+ -0.32356, 1.44826, -0.12471,
+ -0.00412, -0.69936, 1.70348
+ ]
+ },
+ {
+ "ct": 2920,
+ "ccm":
+ [
+ 1.26704, 0.01624, -0.28328,
+ -0.28516, 1.38934, -0.10419,
+ -0.04854, -0.82211, 1.87066
+ ]
+ },
+ {
+ "ct": 3550,
+ "ccm":
+ [
+ 1.42836, -0.27235, -0.15601,
+ -0.28751, 1.41075, -0.12325,
+ -0.01812, -0.54849, 1.56661
+ ]
+ },
+ {
+ "ct": 4500,
+ "ccm":
+ [
+ 1.36328, -0.19569, -0.16759,
+ -0.25254, 1.52248, -0.26994,
+ -0.01575, -0.53155, 1.54729
+ ]
+ },
+ {
+ "ct": 5700,
+ "ccm":
+ [
+ 1.49207, -0.37245, -0.11963,
+ -0.21493, 1.40005, -0.18512,
+ -0.03781, -0.38779, 1.42561
+ ]
+ },
+ {
+ "ct": 7900,
+ "ccm":
+ [
+ 1.34849, -0.05425, -0.29424,
+ -0.22182, 1.77684, -0.55502,
+ -0.07403, -0.55336, 1.62739
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen": { }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx708.json b/src/ipa/rpi/pisp/data/imx708.json
new file mode 100644
index 00000000..e8d25c21
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx708.json
@@ -0,0 +1,1270 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 20716,
+ "reference_gain": 1.12,
+ "reference_aperture": 1.0,
+ "reference_lux": 810,
+ "reference_Y": 13994
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 1.856
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 221,
+ "slope": 0.00226
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 3.2,
+ "strength": 0.75,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2964.0, 0.7451, 0.3213,
+ 3610.0, 0.6119, 0.4443,
+ 4640.0, 0.5168, 0.5419,
+ 5910.0, 0.4436, 0.6229,
+ 7590.0, 0.3847, 0.6921
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.01752,
+ "transverse_neg": 0.01831
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 1.532, 1.534, 1.535, 1.538, 1.538, 1.533, 1.529, 1.515, 1.506, 1.492, 1.477, 1.465, 1.453, 1.444, 1.437, 1.433, 1.433, 1.435, 1.441, 1.449, 1.461, 1.474, 1.485, 1.499, 1.511, 1.519, 1.525, 1.526, 1.526, 1.523, 1.517, 1.516,
+ 1.532, 1.534, 1.537, 1.538, 1.537, 1.534, 1.525, 1.515, 1.502, 1.486, 1.474, 1.458, 1.449, 1.438, 1.429, 1.427, 1.426, 1.429, 1.436, 1.444, 1.456, 1.468, 1.483, 1.497, 1.509, 1.518, 1.524, 1.526, 1.526, 1.523, 1.521, 1.516,
+ 1.532, 1.534, 1.537, 1.538, 1.536, 1.533, 1.524, 1.512, 1.499, 1.483, 1.468, 1.453, 1.439, 1.429, 1.421, 1.419, 1.419, 1.419, 1.427, 1.438, 1.451, 1.464, 1.479, 1.494, 1.506, 1.516, 1.523, 1.526, 1.526, 1.524, 1.521, 1.518,
+ 1.533, 1.536, 1.537, 1.537, 1.535, 1.532, 1.521, 1.507, 1.491, 1.474, 1.456, 1.441, 1.429, 1.418, 1.409, 1.406, 1.406, 1.408, 1.415, 1.426, 1.439, 1.453, 1.471, 1.485, 1.501, 1.511, 1.522, 1.524, 1.526, 1.525, 1.522, 1.519,
+ 1.537, 1.538, 1.539, 1.538, 1.534, 1.525, 1.513, 1.495, 1.477, 1.459, 1.443, 1.427, 1.413, 1.402, 1.394, 1.391, 1.391, 1.393, 1.399, 1.409, 1.424, 1.439, 1.455, 1.472, 1.489, 1.503, 1.515, 1.523, 1.526, 1.527, 1.525, 1.523,
+ 1.538, 1.539, 1.541, 1.539, 1.531, 1.519, 1.503, 1.484, 1.466, 1.445, 1.427, 1.413, 1.401, 1.386, 1.378, 1.373, 1.373, 1.376, 1.386, 1.398, 1.409, 1.424, 1.441, 1.459, 1.477, 1.495, 1.509, 1.519, 1.526, 1.528, 1.528, 1.526,
+ 1.539, 1.541, 1.541, 1.539, 1.529, 1.516, 1.498, 1.479, 1.456, 1.437, 1.417, 1.401, 1.386, 1.378, 1.369, 1.363, 1.363, 1.367, 1.376, 1.386, 1.399, 1.413, 1.432, 1.451, 1.472, 1.491, 1.507, 1.517, 1.525, 1.527, 1.527, 1.527,
+ 1.539, 1.539, 1.539, 1.538, 1.529, 1.515, 1.497, 1.476, 1.454, 1.433, 1.411, 1.395, 1.381, 1.368, 1.361, 1.356, 1.356, 1.359, 1.367, 1.379, 1.393, 1.409, 1.428, 1.448, 1.471, 1.489, 1.505, 1.516, 1.524, 1.527, 1.527, 1.527,
+ 1.539, 1.539, 1.539, 1.537, 1.528, 1.513, 1.493, 1.471, 1.449, 1.426, 1.406, 1.387, 1.373, 1.361, 1.352, 1.348, 1.348, 1.351, 1.359, 1.372, 1.387, 1.403, 1.422, 1.443, 1.465, 1.484, 1.503, 1.516, 1.525, 1.527, 1.528, 1.526,
+ 1.541, 1.542, 1.539, 1.537, 1.524, 1.506, 1.485, 1.461, 1.438, 1.416, 1.395, 1.377, 1.362, 1.352, 1.344, 1.339, 1.339, 1.342, 1.351, 1.362, 1.376, 1.393, 1.412, 1.434, 1.455, 1.477, 1.495, 1.514, 1.524, 1.528, 1.529, 1.529,
+ 1.543, 1.544, 1.543, 1.534, 1.518, 1.499, 1.476, 1.452, 1.427, 1.405, 1.386, 1.367, 1.354, 1.344, 1.338, 1.329, 1.329, 1.335, 1.342, 1.352, 1.367, 1.382, 1.402, 1.424, 1.445, 1.469, 1.491, 1.507, 1.522, 1.528, 1.529, 1.532,
+ 1.544, 1.544, 1.542, 1.534, 1.518, 1.499, 1.474, 1.449, 1.425, 1.401, 1.379, 1.362, 1.348, 1.338, 1.329, 1.324, 1.325, 1.329, 1.335, 1.347, 1.361, 1.378, 1.397, 1.421, 1.443, 1.467, 1.489, 1.507, 1.521, 1.529, 1.532, 1.533,
+ 1.543, 1.543, 1.541, 1.534, 1.519, 1.499, 1.474, 1.448, 1.424, 1.399, 1.377, 1.359, 1.346, 1.333, 1.324, 1.322, 1.321, 1.324, 1.332, 1.344, 1.359, 1.376, 1.397, 1.419, 1.443, 1.467, 1.489, 1.508, 1.521, 1.528, 1.531, 1.532,
+ 1.543, 1.542, 1.541, 1.533, 1.519, 1.499, 1.474, 1.448, 1.422, 1.399, 1.376, 1.358, 1.344, 1.331, 1.322, 1.319, 1.319, 1.321, 1.331, 1.342, 1.357, 1.375, 1.396, 1.419, 1.443, 1.467, 1.489, 1.508, 1.521, 1.529, 1.531, 1.532,
+ 1.543, 1.542, 1.541, 1.532, 1.518, 1.496, 1.471, 1.445, 1.418, 1.393, 1.373, 1.354, 1.341, 1.329, 1.319, 1.317, 1.316, 1.319, 1.327, 1.338, 1.353, 1.371, 1.392, 1.415, 1.439, 1.465, 1.485, 1.507, 1.519, 1.529, 1.531, 1.531,
+ 1.545, 1.544, 1.542, 1.531, 1.515, 1.493, 1.467, 1.441, 1.414, 1.391, 1.369, 1.351, 1.337, 1.326, 1.318, 1.314, 1.314, 1.317, 1.325, 1.335, 1.351, 1.367, 1.388, 1.411, 1.436, 1.461, 1.483, 1.505, 1.519, 1.531, 1.533, 1.533,
+ 1.545, 1.544, 1.541, 1.531, 1.515, 1.493, 1.467, 1.441, 1.414, 1.391, 1.369, 1.351, 1.337, 1.326, 1.318, 1.314, 1.314, 1.317, 1.325, 1.335, 1.351, 1.367, 1.388, 1.411, 1.436, 1.461, 1.483, 1.505, 1.521, 1.531, 1.534, 1.534,
+ 1.545, 1.544, 1.541, 1.534, 1.519, 1.496, 1.471, 1.446, 1.419, 1.392, 1.372, 1.354, 1.338, 1.328, 1.319, 1.316, 1.315, 1.319, 1.327, 1.338, 1.353, 1.371, 1.392, 1.416, 1.441, 1.465, 1.489, 1.511, 1.522, 1.531, 1.534, 1.535,
+ 1.544, 1.544, 1.542, 1.537, 1.524, 1.501, 1.476, 1.449, 1.424, 1.399, 1.377, 1.359, 1.344, 1.332, 1.324, 1.319, 1.319, 1.323, 1.331, 1.343, 1.358, 1.374, 1.396, 1.419, 1.445, 1.471, 1.493, 1.512, 1.525, 1.532, 1.534, 1.534,
+ 1.545, 1.545, 1.543, 1.538, 1.524, 1.503, 1.479, 1.452, 1.426, 1.402, 1.381, 1.362, 1.348, 1.337, 1.329, 1.324, 1.324, 1.328, 1.335, 1.347, 1.361, 1.379, 1.399, 1.423, 1.447, 1.471, 1.493, 1.513, 1.526, 1.533, 1.534, 1.535,
+ 1.546, 1.546, 1.544, 1.539, 1.525, 1.504, 1.479, 1.453, 1.428, 1.404, 1.383, 1.365, 1.352, 1.339, 1.333, 1.329, 1.329, 1.333, 1.339, 1.349, 1.363, 1.381, 1.402, 1.424, 1.448, 1.472, 1.494, 1.514, 1.526, 1.534, 1.534, 1.534,
+ 1.546, 1.546, 1.544, 1.539, 1.526, 1.505, 1.483, 1.457, 1.432, 1.407, 1.389, 1.371, 1.357, 1.347, 1.339, 1.333, 1.333, 1.339, 1.345, 1.354, 1.368, 1.386, 1.406, 1.428, 1.453, 1.475, 1.496, 1.515, 1.527, 1.535, 1.535, 1.535,
+ 1.545, 1.545, 1.545, 1.541, 1.529, 1.513, 1.491, 1.467, 1.441, 1.418, 1.399, 1.379, 1.366, 1.355, 1.347, 1.341, 1.341, 1.345, 1.354, 1.364, 1.378, 1.395, 1.415, 1.436, 1.459, 1.483, 1.503, 1.519, 1.531, 1.534, 1.535, 1.534,
+ 1.544, 1.545, 1.545, 1.544, 1.535, 1.519, 1.499, 1.476, 1.451, 1.428, 1.409, 1.391, 1.377, 1.366, 1.356, 1.352, 1.352, 1.355, 1.364, 1.374, 1.388, 1.405, 1.426, 1.447, 1.469, 1.492, 1.509, 1.523, 1.532, 1.535, 1.535, 1.533,
+ 1.544, 1.545, 1.546, 1.545, 1.537, 1.523, 1.504, 1.482, 1.458, 1.436, 1.418, 1.401, 1.385, 1.377, 1.367, 1.362, 1.362, 1.365, 1.373, 1.385, 1.398, 1.415, 1.434, 1.455, 1.477, 1.495, 1.514, 1.525, 1.533, 1.536, 1.535, 1.533,
+ 1.545, 1.546, 1.547, 1.545, 1.538, 1.525, 1.508, 1.486, 1.465, 1.444, 1.424, 1.408, 1.394, 1.385, 1.377, 1.371, 1.371, 1.373, 1.384, 1.392, 1.405, 1.421, 1.441, 1.459, 1.481, 1.499, 1.516, 1.528, 1.534, 1.536, 1.536, 1.533,
+ 1.544, 1.546, 1.547, 1.547, 1.541, 1.531, 1.514, 1.494, 1.474, 1.454, 1.434, 1.421, 1.408, 1.394, 1.386, 1.382, 1.382, 1.385, 1.392, 1.405, 1.416, 1.432, 1.449, 1.468, 1.488, 1.505, 1.519, 1.531, 1.536, 1.537, 1.536, 1.533,
+ 1.544, 1.546, 1.548, 1.548, 1.545, 1.536, 1.522, 1.506, 1.486, 1.467, 1.451, 1.434, 1.421, 1.408, 1.401, 1.396, 1.396, 1.399, 1.407, 1.416, 1.431, 1.447, 1.463, 1.481, 1.499, 1.513, 1.526, 1.534, 1.537, 1.537, 1.534, 1.531,
+ 1.543, 1.545, 1.547, 1.549, 1.549, 1.543, 1.531, 1.517, 1.501, 1.483, 1.465, 1.451, 1.438, 1.425, 1.417, 1.412, 1.412, 1.418, 1.423, 1.433, 1.447, 1.462, 1.479, 1.493, 1.511, 1.524, 1.531, 1.536, 1.538, 1.537, 1.533, 1.531,
+ 1.542, 1.545, 1.548, 1.551, 1.551, 1.546, 1.539, 1.524, 1.511, 1.493, 1.479, 1.464, 1.451, 1.442, 1.433, 1.429, 1.429, 1.434, 1.439, 1.449, 1.462, 1.474, 1.491, 1.505, 1.519, 1.529, 1.536, 1.539, 1.539, 1.537, 1.533, 1.531,
+ 1.541, 1.546, 1.549, 1.552, 1.553, 1.551, 1.544, 1.533, 1.521, 1.505, 1.489, 1.477, 1.464, 1.455, 1.447, 1.443, 1.443, 1.446, 1.451, 1.462, 1.472, 1.487, 1.499, 1.514, 1.525, 1.535, 1.541, 1.541, 1.541, 1.539, 1.533, 1.531,
+ 1.541, 1.546, 1.549, 1.553, 1.554, 1.552, 1.546, 1.537, 1.524, 1.512, 1.499, 1.485, 1.474, 1.464, 1.455, 1.451, 1.451, 1.452, 1.461, 1.469, 1.481, 1.495, 1.506, 1.518, 1.529, 1.539, 1.541, 1.542, 1.541, 1.539, 1.533, 1.529
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 2.586, 2.591, 2.597, 2.601, 2.601, 2.599, 2.592, 2.576, 2.561, 2.541, 2.523, 2.503, 2.486, 2.471, 2.459, 2.452, 2.452, 2.454, 2.462, 2.478, 2.495, 2.512, 2.531, 2.555, 2.568, 2.579, 2.587, 2.588, 2.585, 2.579, 2.573, 2.566,
+ 2.587, 2.592, 2.598, 2.601, 2.601, 2.599, 2.587, 2.574, 2.556, 2.532, 2.512, 2.491, 2.474, 2.462, 2.449, 2.443, 2.439, 2.443, 2.454, 2.464, 2.485, 2.505, 2.525, 2.548, 2.566, 2.578, 2.585, 2.588, 2.586, 2.579, 2.575, 2.567,
+ 2.587, 2.593, 2.598, 2.602, 2.601, 2.597, 2.584, 2.569, 2.551, 2.527, 2.503, 2.482, 2.464, 2.448, 2.434, 2.428, 2.427, 2.431, 2.439, 2.455, 2.474, 2.498, 2.521, 2.541, 2.564, 2.577, 2.585, 2.588, 2.589, 2.581, 2.576, 2.569,
+ 2.593, 2.596, 2.601, 2.603, 2.601, 2.594, 2.583, 2.563, 2.539, 2.514, 2.491, 2.466, 2.445, 2.429, 2.417, 2.409, 2.408, 2.411, 2.421, 2.437, 2.457, 2.481, 2.507, 2.531, 2.555, 2.572, 2.583, 2.588, 2.588, 2.585, 2.579, 2.575,
+ 2.597, 2.599, 2.604, 2.603, 2.599, 2.587, 2.567, 2.548, 2.522, 2.493, 2.467, 2.443, 2.419, 2.406, 2.391, 2.385, 2.385, 2.387, 2.397, 2.413, 2.435, 2.459, 2.486, 2.509, 2.538, 2.559, 2.574, 2.586, 2.588, 2.586, 2.582, 2.579,
+ 2.601, 2.603, 2.606, 2.604, 2.596, 2.578, 2.556, 2.531, 2.501, 2.471, 2.444, 2.419, 2.402, 2.381, 2.365, 2.359, 2.359, 2.361, 2.374, 2.396, 2.413, 2.435, 2.465, 2.493, 2.517, 2.542, 2.562, 2.582, 2.588, 2.587, 2.586, 2.584,
+ 2.601, 2.604, 2.605, 2.604, 2.593, 2.575, 2.547, 2.522, 2.488, 2.458, 2.432, 2.402, 2.381, 2.364, 2.349, 2.338, 2.338, 2.345, 2.359, 2.374, 2.396, 2.423, 2.453, 2.481, 2.511, 2.539, 2.561, 2.581, 2.586, 2.588, 2.588, 2.586,
+ 2.599, 2.602, 2.604, 2.602, 2.592, 2.572, 2.546, 2.516, 2.485, 2.451, 2.422, 2.393, 2.368, 2.349, 2.336, 2.328, 2.328, 2.333, 2.345, 2.365, 2.389, 2.417, 2.447, 2.478, 2.509, 2.537, 2.561, 2.577, 2.585, 2.588, 2.588, 2.587,
+ 2.601, 2.602, 2.604, 2.601, 2.589, 2.569, 2.539, 2.509, 2.473, 2.442, 2.409, 2.379, 2.357, 2.336, 2.323, 2.315, 2.315, 2.322, 2.334, 2.354, 2.377, 2.406, 2.436, 2.469, 2.503, 2.529, 2.558, 2.574, 2.585, 2.588, 2.589, 2.587,
+ 2.601, 2.606, 2.606, 2.601, 2.581, 2.557, 2.525, 2.493, 2.459, 2.426, 2.394, 2.365, 2.339, 2.322, 2.308, 2.301, 2.301, 2.305, 2.322, 2.337, 2.361, 2.389, 2.422, 2.454, 2.485, 2.519, 2.546, 2.568, 2.584, 2.589, 2.589, 2.589,
+ 2.608, 2.608, 2.606, 2.597, 2.576, 2.548, 2.515, 2.481, 2.444, 2.409, 2.376, 2.346, 2.323, 2.308, 2.293, 2.282, 2.281, 2.291, 2.305, 2.322, 2.348, 2.371, 2.403, 2.439, 2.472, 2.508, 2.538, 2.565, 2.582, 2.589, 2.592, 2.593,
+ 2.608, 2.608, 2.605, 2.596, 2.575, 2.547, 2.511, 2.474, 2.435, 2.401, 2.366, 2.339, 2.312, 2.293, 2.281, 2.274, 2.274, 2.281, 2.291, 2.311, 2.334, 2.364, 2.399, 2.433, 2.471, 2.506, 2.538, 2.564, 2.581, 2.591, 2.594, 2.595,
+ 2.605, 2.606, 2.605, 2.595, 2.575, 2.547, 2.511, 2.474, 2.433, 2.397, 2.363, 2.333, 2.309, 2.291, 2.274, 2.267, 2.265, 2.272, 2.284, 2.307, 2.331, 2.361, 2.395, 2.431, 2.469, 2.503, 2.539, 2.567, 2.584, 2.591, 2.595, 2.595,
+ 2.605, 2.606, 2.605, 2.595, 2.575, 2.547, 2.509, 2.473, 2.431, 2.395, 2.361, 2.332, 2.306, 2.285, 2.267, 2.261, 2.262, 2.265, 2.281, 2.302, 2.329, 2.359, 2.395, 2.429, 2.468, 2.503, 2.539, 2.567, 2.583, 2.593, 2.595, 2.595,
+ 2.608, 2.607, 2.606, 2.592, 2.572, 2.543, 2.506, 2.468, 2.426, 2.389, 2.354, 2.327, 2.299, 2.279, 2.262, 2.258, 2.257, 2.262, 2.276, 2.297, 2.321, 2.352, 2.387, 2.425, 2.464, 2.498, 2.532, 2.565, 2.582, 2.592, 2.595, 2.596,
+ 2.611, 2.609, 2.605, 2.592, 2.571, 2.538, 2.499, 2.463, 2.421, 2.384, 2.351, 2.322, 2.295, 2.276, 2.259, 2.254, 2.254, 2.256, 2.273, 2.292, 2.318, 2.347, 2.383, 2.418, 2.456, 2.491, 2.529, 2.562, 2.581, 2.593, 2.597, 2.598,
+ 2.609, 2.609, 2.606, 2.593, 2.571, 2.538, 2.499, 2.463, 2.421, 2.384, 2.351, 2.321, 2.295, 2.276, 2.259, 2.251, 2.251, 2.256, 2.273, 2.292, 2.318, 2.347, 2.383, 2.418, 2.456, 2.491, 2.529, 2.559, 2.582, 2.595, 2.597, 2.599,
+ 2.609, 2.609, 2.607, 2.597, 2.576, 2.543, 2.507, 2.467, 2.427, 2.388, 2.356, 2.323, 2.297, 2.278, 2.262, 2.256, 2.255, 2.262, 2.275, 2.296, 2.321, 2.351, 2.388, 2.425, 2.464, 2.502, 2.534, 2.563, 2.586, 2.595, 2.598, 2.599,
+ 2.609, 2.609, 2.608, 2.601, 2.581, 2.547, 2.513, 2.475, 2.434, 2.398, 2.362, 2.332, 2.307, 2.287, 2.269, 2.263, 2.263, 2.269, 2.281, 2.304, 2.328, 2.358, 2.394, 2.429, 2.469, 2.508, 2.538, 2.568, 2.589, 2.597, 2.598, 2.598,
+ 2.609, 2.611, 2.609, 2.601, 2.583, 2.549, 2.518, 2.478, 2.439, 2.402, 2.367, 2.337, 2.313, 2.293, 2.279, 2.271, 2.269, 2.277, 2.291, 2.311, 2.336, 2.363, 2.399, 2.435, 2.473, 2.509, 2.541, 2.571, 2.591, 2.598, 2.599, 2.599,
+ 2.611, 2.611, 2.609, 2.602, 2.585, 2.551, 2.519, 2.481, 2.442, 2.406, 2.374, 2.342, 2.318, 2.297, 2.287, 2.279, 2.278, 2.287, 2.297, 2.315, 2.339, 2.368, 2.402, 2.438, 2.476, 2.511, 2.545, 2.571, 2.591, 2.599, 2.601, 2.599,
+ 2.611, 2.611, 2.609, 2.604, 2.587, 2.557, 2.521, 2.485, 2.447, 2.412, 2.379, 2.352, 2.328, 2.309, 2.297, 2.288, 2.287, 2.297, 2.308, 2.327, 2.349, 2.377, 2.408, 2.446, 2.481, 2.517, 2.547, 2.573, 2.591, 2.599, 2.601, 2.599,
+ 2.608, 2.609, 2.609, 2.606, 2.592, 2.564, 2.533, 2.498, 2.462, 2.427, 2.394, 2.364, 2.343, 2.326, 2.309, 2.302, 2.302, 2.308, 2.324, 2.341, 2.362, 2.391, 2.425, 2.458, 2.494, 2.526, 2.555, 2.584, 2.593, 2.599, 2.599, 2.599,
+ 2.608, 2.609, 2.609, 2.609, 2.597, 2.574, 2.547, 2.511, 2.475, 2.438, 2.411, 2.381, 2.359, 2.342, 2.327, 2.318, 2.318, 2.325, 2.341, 2.358, 2.377, 2.404, 2.439, 2.469, 2.507, 2.537, 2.564, 2.587, 2.596, 2.598, 2.598, 2.597,
+ 2.609, 2.609, 2.611, 2.609, 2.599, 2.579, 2.551, 2.519, 2.486, 2.453, 2.425, 2.397, 2.375, 2.358, 2.345, 2.336, 2.336, 2.341, 2.355, 2.372, 2.393, 2.419, 2.452, 2.481, 2.516, 2.542, 2.571, 2.591, 2.597, 2.599, 2.598, 2.595,
+ 2.607, 2.611, 2.613, 2.611, 2.605, 2.586, 2.561, 2.529, 2.495, 2.462, 2.435, 2.409, 2.387, 2.374, 2.359, 2.351, 2.351, 2.356, 2.372, 2.385, 2.406, 2.431, 2.462, 2.488, 2.524, 2.551, 2.573, 2.591, 2.598, 2.599, 2.598, 2.596,
+ 2.606, 2.609, 2.613, 2.613, 2.607, 2.591, 2.565, 2.539, 2.507, 2.477, 2.449, 2.425, 2.409, 2.387, 2.376, 2.369, 2.369, 2.374, 2.385, 2.406, 2.422, 2.446, 2.473, 2.502, 2.534, 2.557, 2.578, 2.595, 2.599, 2.601, 2.598, 2.595,
+ 2.606, 2.611, 2.613, 2.614, 2.611, 2.598, 2.581, 2.553, 2.523, 2.496, 2.471, 2.449, 2.425, 2.409, 2.398, 2.391, 2.391, 2.395, 2.408, 2.422, 2.445, 2.468, 2.493, 2.522, 2.549, 2.569, 2.589, 2.601, 2.603, 2.602, 2.596, 2.593,
+ 2.605, 2.609, 2.613, 2.616, 2.614, 2.607, 2.591, 2.571, 2.545, 2.518, 2.494, 2.471, 2.452, 2.435, 2.423, 2.417, 2.417, 2.421, 2.431, 2.449, 2.467, 2.493, 2.516, 2.542, 2.566, 2.585, 2.596, 2.606, 2.605, 2.602, 2.595, 2.593,
+ 2.604, 2.608, 2.616, 2.617, 2.618, 2.613, 2.602, 2.584, 2.559, 2.536, 2.514, 2.493, 2.476, 2.459, 2.445, 2.439, 2.439, 2.445, 2.456, 2.471, 2.493, 2.511, 2.534, 2.559, 2.579, 2.592, 2.607, 2.608, 2.607, 2.604, 2.595, 2.592,
+ 2.603, 2.609, 2.615, 2.619, 2.623, 2.619, 2.608, 2.594, 2.573, 2.551, 2.532, 2.512, 2.493, 2.477, 2.468, 2.462, 2.462, 2.468, 2.476, 2.494, 2.509, 2.528, 2.551, 2.574, 2.589, 2.604, 2.611, 2.611, 2.611, 2.604, 2.598, 2.592,
+ 2.602, 2.607, 2.613, 2.621, 2.624, 2.621, 2.617, 2.601, 2.585, 2.567, 2.544, 2.521, 2.507, 2.493, 2.478, 2.474, 2.475, 2.477, 2.489, 2.505, 2.523, 2.544, 2.563, 2.584, 2.598, 2.609, 2.612, 2.613, 2.613, 2.608, 2.599, 2.591
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 3.263, 3.263, 3.264, 3.269, 3.274, 3.275, 3.277, 3.281, 3.283, 3.285, 3.289, 3.292, 3.291, 3.291, 3.294, 3.298, 3.302, 3.305, 3.303, 3.301, 3.296, 3.294, 3.293, 3.293, 3.295, 3.295, 3.295, 3.287, 3.285, 3.279, 3.282, 3.285,
+ 3.259, 3.259, 3.262, 3.268, 3.271, 3.273, 3.273, 3.274, 3.277, 3.278, 3.282, 3.285, 3.286, 3.286, 3.288, 3.289, 3.292, 3.291, 3.293, 3.291, 3.288, 3.288, 3.288, 3.288, 3.288, 3.287, 3.287, 3.283, 3.281, 3.276, 3.277, 3.281,
+ 3.259, 3.259, 3.262, 3.269, 3.272, 3.274, 3.273, 3.273, 3.273, 3.276, 3.278, 3.279, 3.281, 3.282, 3.283, 3.283, 3.285, 3.286, 3.286, 3.285, 3.283, 3.282, 3.282, 3.286, 3.285, 3.285, 3.285, 3.282, 3.281, 3.276, 3.275, 3.279,
+ 3.267, 3.266, 3.269, 3.273, 3.274, 3.277, 3.276, 3.275, 3.274, 3.277, 3.277, 3.278, 3.279, 3.279, 3.279, 3.279, 3.281, 3.283, 3.283, 3.281, 3.281, 3.281, 3.282, 3.287, 3.287, 3.288, 3.287, 3.286, 3.283, 3.277, 3.278, 3.281,
+ 3.268, 3.271, 3.274, 3.277, 3.283, 3.286, 3.284, 3.281, 3.278, 3.278, 3.279, 3.279, 3.281, 3.281, 3.281, 3.281, 3.282, 3.283, 3.284, 3.283, 3.282, 3.282, 3.284, 3.288, 3.289, 3.291, 3.291, 3.288, 3.288, 3.283, 3.286, 3.288,
+ 3.272, 3.275, 3.279, 3.283, 3.288, 3.289, 3.289, 3.287, 3.282, 3.284, 3.282, 3.284, 3.284, 3.285, 3.284, 3.285, 3.285, 3.288, 3.287, 3.286, 3.283, 3.283, 3.285, 3.289, 3.292, 3.292, 3.293, 3.292, 3.291, 3.288, 3.289, 3.293,
+ 3.276, 3.278, 3.282, 3.289, 3.293, 3.293, 3.291, 3.289, 3.287, 3.286, 3.285, 3.285, 3.286, 3.286, 3.287, 3.288, 3.289, 3.289, 3.289, 3.288, 3.285, 3.283, 3.286, 3.289, 3.292, 3.294, 3.294, 3.294, 3.293, 3.289, 3.292, 3.293,
+ 3.279, 3.281, 3.286, 3.293, 3.297, 3.298, 3.295, 3.292, 3.288, 3.287, 3.285, 3.287, 3.288, 3.288, 3.289, 3.291, 3.292, 3.293, 3.291, 3.288, 3.286, 3.285, 3.285, 3.291, 3.294, 3.295, 3.297, 3.297, 3.298, 3.293, 3.294, 3.294,
+ 3.281, 3.286, 3.291, 3.298, 3.301, 3.301, 3.299, 3.295, 3.289, 3.288, 3.286, 3.288, 3.289, 3.292, 3.293, 3.292, 3.295, 3.296, 3.295, 3.291, 3.287, 3.286, 3.286, 3.289, 3.295, 3.297, 3.298, 3.301, 3.301, 3.298, 3.297, 3.297,
+ 3.284, 3.289, 3.295, 3.302, 3.303, 3.303, 3.301, 3.298, 3.294, 3.292, 3.289, 3.293, 3.296, 3.297, 3.297, 3.297, 3.297, 3.298, 3.298, 3.296, 3.289, 3.288, 3.287, 3.294, 3.298, 3.301, 3.304, 3.305, 3.304, 3.299, 3.299, 3.302,
+ 3.291, 3.292, 3.299, 3.305, 3.308, 3.305, 3.304, 3.302, 3.298, 3.295, 3.295, 3.298, 3.299, 3.302, 3.303, 3.302, 3.301, 3.301, 3.301, 3.299, 3.296, 3.291, 3.292, 3.297, 3.301, 3.304, 3.306, 3.309, 3.308, 3.302, 3.301, 3.304,
+ 3.292, 3.297, 3.303, 3.309, 3.312, 3.311, 3.308, 3.304, 3.301, 3.299, 3.298, 3.299, 3.303, 3.305, 3.306, 3.305, 3.305, 3.303, 3.303, 3.301, 3.299, 3.294, 3.294, 3.297, 3.302, 3.305, 3.309, 3.311, 3.311, 3.305, 3.305, 3.306,
+ 3.295, 3.298, 3.305, 3.309, 3.313, 3.313, 3.312, 3.307, 3.303, 3.301, 3.299, 3.301, 3.304, 3.307, 3.308, 3.306, 3.306, 3.306, 3.306, 3.302, 3.299, 3.296, 3.295, 3.298, 3.303, 3.306, 3.311, 3.312, 3.312, 3.307, 3.308, 3.309,
+ 3.297, 3.298, 3.303, 3.309, 3.313, 3.313, 3.311, 3.307, 3.303, 3.301, 3.299, 3.299, 3.305, 3.307, 3.307, 3.306, 3.306, 3.306, 3.305, 3.299, 3.297, 3.294, 3.294, 3.298, 3.303, 3.305, 3.311, 3.312, 3.313, 3.308, 3.311, 3.309,
+ 3.297, 3.298, 3.304, 3.309, 3.312, 3.313, 3.311, 3.308, 3.304, 3.302, 3.301, 3.301, 3.306, 3.307, 3.308, 3.306, 3.306, 3.307, 3.306, 3.302, 3.297, 3.294, 3.294, 3.299, 3.305, 3.306, 3.309, 3.312, 3.311, 3.306, 3.308, 3.309,
+ 3.298, 3.299, 3.306, 3.311, 3.315, 3.314, 3.311, 3.308, 3.305, 3.303, 3.303, 3.304, 3.307, 3.309, 3.309, 3.308, 3.308, 3.307, 3.306, 3.302, 3.298, 3.296, 3.296, 3.298, 3.304, 3.306, 3.308, 3.309, 3.314, 3.308, 3.309, 3.308,
+ 3.299, 3.301, 3.307, 3.313, 3.316, 3.316, 3.313, 3.311, 3.307, 3.305, 3.305, 3.307, 3.309, 3.311, 3.312, 3.311, 3.309, 3.309, 3.308, 3.306, 3.301, 3.298, 3.297, 3.301, 3.305, 3.309, 3.309, 3.311, 3.313, 3.306, 3.308, 3.307,
+ 3.301, 3.301, 3.307, 3.314, 3.317, 3.318, 3.314, 3.311, 3.308, 3.306, 3.306, 3.308, 3.311, 3.311, 3.312, 3.311, 3.309, 3.309, 3.309, 3.306, 3.302, 3.298, 3.298, 3.301, 3.305, 3.309, 3.311, 3.311, 3.312, 3.309, 3.308, 3.308,
+ 3.301, 3.302, 3.307, 3.316, 3.319, 3.319, 3.315, 3.312, 3.309, 3.306, 3.307, 3.309, 3.311, 3.312, 3.311, 3.311, 3.309, 3.309, 3.309, 3.306, 3.303, 3.299, 3.298, 3.302, 3.305, 3.308, 3.309, 3.309, 3.309, 3.303, 3.306, 3.307,
+ 3.301, 3.303, 3.308, 3.315, 3.318, 3.318, 3.316, 3.313, 3.311, 3.307, 3.307, 3.308, 3.311, 3.311, 3.311, 3.308, 3.308, 3.307, 3.307, 3.306, 3.303, 3.299, 3.297, 3.301, 3.303, 3.306, 3.309, 3.308, 3.306, 3.303, 3.304, 3.306,
+ 3.302, 3.304, 3.306, 3.316, 3.318, 3.318, 3.317, 3.315, 3.311, 3.308, 3.309, 3.311, 3.311, 3.312, 3.311, 3.307, 3.306, 3.307, 3.308, 3.307, 3.304, 3.299, 3.298, 3.301, 3.303, 3.305, 3.306, 3.305, 3.304, 3.302, 3.303, 3.306,
+ 3.302, 3.304, 3.306, 3.312, 3.316, 3.317, 3.317, 3.313, 3.311, 3.309, 3.309, 3.311, 3.311, 3.312, 3.309, 3.307, 3.306, 3.306, 3.308, 3.307, 3.304, 3.298, 3.297, 3.302, 3.304, 3.305, 3.306, 3.305, 3.304, 3.299, 3.302, 3.303,
+ 3.299, 3.299, 3.306, 3.309, 3.315, 3.316, 3.316, 3.312, 3.309, 3.308, 3.308, 3.309, 3.311, 3.311, 3.307, 3.305, 3.305, 3.305, 3.306, 3.304, 3.299, 3.297, 3.296, 3.301, 3.302, 3.304, 3.303, 3.302, 3.301, 3.298, 3.299, 3.301,
+ 3.295, 3.297, 3.305, 3.309, 3.311, 3.311, 3.311, 3.309, 3.307, 3.306, 3.305, 3.305, 3.305, 3.305, 3.304, 3.301, 3.301, 3.301, 3.302, 3.299, 3.296, 3.295, 3.295, 3.298, 3.301, 3.302, 3.303, 3.301, 3.299, 3.295, 3.297, 3.299,
+ 3.294, 3.296, 3.299, 3.306, 3.308, 3.309, 3.309, 3.307, 3.307, 3.303, 3.302, 3.301, 3.302, 3.303, 3.302, 3.299, 3.298, 3.299, 3.299, 3.298, 3.295, 3.292, 3.292, 3.293, 3.297, 3.299, 3.299, 3.299, 3.297, 3.294, 3.295, 3.299,
+ 3.291, 3.292, 3.296, 3.302, 3.306, 3.306, 3.307, 3.306, 3.305, 3.303, 3.302, 3.301, 3.301, 3.303, 3.301, 3.299, 3.298, 3.298, 3.298, 3.297, 3.295, 3.292, 3.291, 3.291, 3.295, 3.295, 3.297, 3.298, 3.296, 3.293, 3.292, 3.291,
+ 3.293, 3.292, 3.294, 3.301, 3.303, 3.305, 3.308, 3.306, 3.306, 3.304, 3.304, 3.303, 3.303, 3.303, 3.302, 3.301, 3.299, 3.299, 3.299, 3.299, 3.294, 3.291, 3.289, 3.291, 3.293, 3.294, 3.294, 3.294, 3.294, 3.289, 3.291, 3.291,
+ 3.288, 3.289, 3.291, 3.299, 3.303, 3.304, 3.304, 3.304, 3.304, 3.303, 3.303, 3.304, 3.306, 3.305, 3.303, 3.301, 3.301, 3.298, 3.299, 3.298, 3.293, 3.291, 3.289, 3.291, 3.291, 3.292, 3.291, 3.291, 3.291, 3.285, 3.288, 3.291,
+ 3.285, 3.284, 3.287, 3.291, 3.299, 3.299, 3.299, 3.299, 3.299, 3.301, 3.302, 3.303, 3.303, 3.302, 3.299, 3.298, 3.298, 3.298, 3.298, 3.293, 3.288, 3.286, 3.285, 3.288, 3.288, 3.288, 3.287, 3.285, 3.284, 3.279, 3.281, 3.284,
+ 3.281, 3.282, 3.282, 3.286, 3.291, 3.294, 3.294, 3.295, 3.295, 3.299, 3.301, 3.304, 3.305, 3.299, 3.299, 3.297, 3.298, 3.298, 3.297, 3.292, 3.288, 3.285, 3.283, 3.284, 3.284, 3.286, 3.284, 3.282, 3.279, 3.275, 3.275, 3.278,
+ 3.282, 3.282, 3.284, 3.286, 3.291, 3.294, 3.295, 3.295, 3.298, 3.301, 3.304, 3.306, 3.306, 3.304, 3.303, 3.301, 3.302, 3.299, 3.299, 3.295, 3.289, 3.287, 3.284, 3.288, 3.287, 3.287, 3.285, 3.283, 3.282, 3.278, 3.281, 3.286,
+ 3.292, 3.291, 3.292, 3.298, 3.307, 3.309, 3.308, 3.312, 3.313, 3.317, 3.324, 3.327, 3.327, 3.325, 3.326, 3.322, 3.319, 3.317, 3.317, 3.315, 3.312, 3.305, 3.303, 3.301, 3.299, 3.297, 3.299, 3.293, 3.289, 3.285, 3.287, 3.293
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.602, 1.603, 1.605, 1.608, 1.611, 1.612, 1.612, 1.614, 1.615, 1.616, 1.619, 1.621, 1.621, 1.622, 1.622, 1.624, 1.624, 1.626, 1.625, 1.625, 1.623, 1.622, 1.621, 1.619, 1.618, 1.617, 1.616, 1.614, 1.612, 1.609, 1.609, 1.611,
+ 1.601, 1.602, 1.605, 1.608, 1.611, 1.612, 1.612, 1.613, 1.614, 1.615, 1.617, 1.619, 1.621, 1.621, 1.621, 1.621, 1.622, 1.624, 1.624, 1.624, 1.622, 1.621, 1.619, 1.618, 1.617, 1.616, 1.615, 1.614, 1.612, 1.609, 1.609, 1.609,
+ 1.602, 1.603, 1.605, 1.609, 1.611, 1.613, 1.613, 1.613, 1.613, 1.615, 1.616, 1.618, 1.618, 1.619, 1.619, 1.619, 1.621, 1.621, 1.622, 1.622, 1.619, 1.618, 1.617, 1.617, 1.616, 1.615, 1.615, 1.615, 1.612, 1.609, 1.609, 1.609,
+ 1.604, 1.605, 1.608, 1.612, 1.613, 1.614, 1.614, 1.614, 1.614, 1.614, 1.616, 1.617, 1.618, 1.618, 1.618, 1.619, 1.619, 1.621, 1.622, 1.621, 1.619, 1.618, 1.617, 1.616, 1.616, 1.616, 1.616, 1.615, 1.615, 1.612, 1.611, 1.611,
+ 1.606, 1.608, 1.611, 1.614, 1.615, 1.615, 1.616, 1.616, 1.615, 1.615, 1.617, 1.618, 1.619, 1.619, 1.618, 1.619, 1.621, 1.622, 1.623, 1.622, 1.619, 1.619, 1.617, 1.617, 1.617, 1.618, 1.618, 1.617, 1.617, 1.614, 1.613, 1.613,
+ 1.608, 1.611, 1.614, 1.617, 1.618, 1.618, 1.618, 1.618, 1.618, 1.618, 1.619, 1.621, 1.621, 1.621, 1.621, 1.621, 1.622, 1.623, 1.624, 1.623, 1.622, 1.619, 1.619, 1.618, 1.618, 1.618, 1.618, 1.618, 1.618, 1.617, 1.615, 1.614,
+ 1.611, 1.613, 1.616, 1.618, 1.621, 1.621, 1.619, 1.619, 1.619, 1.619, 1.619, 1.621, 1.622, 1.623, 1.623, 1.623, 1.623, 1.624, 1.626, 1.624, 1.623, 1.621, 1.619, 1.619, 1.619, 1.619, 1.621, 1.621, 1.619, 1.617, 1.616, 1.616,
+ 1.611, 1.613, 1.617, 1.621, 1.622, 1.622, 1.621, 1.619, 1.619, 1.619, 1.621, 1.622, 1.624, 1.624, 1.624, 1.624, 1.625, 1.626, 1.626, 1.624, 1.623, 1.621, 1.621, 1.619, 1.619, 1.619, 1.621, 1.621, 1.621, 1.619, 1.618, 1.617,
+ 1.613, 1.615, 1.618, 1.621, 1.623, 1.623, 1.622, 1.621, 1.619, 1.619, 1.621, 1.622, 1.625, 1.625, 1.626, 1.626, 1.625, 1.626, 1.626, 1.624, 1.622, 1.621, 1.619, 1.619, 1.619, 1.621, 1.622, 1.622, 1.621, 1.621, 1.619, 1.618,
+ 1.614, 1.617, 1.621, 1.623, 1.624, 1.624, 1.623, 1.621, 1.621, 1.621, 1.622, 1.625, 1.627, 1.627, 1.628, 1.628, 1.628, 1.628, 1.627, 1.626, 1.623, 1.621, 1.621, 1.621, 1.621, 1.623, 1.623, 1.623, 1.623, 1.621, 1.619, 1.619,
+ 1.616, 1.617, 1.622, 1.624, 1.625, 1.625, 1.624, 1.623, 1.622, 1.623, 1.624, 1.627, 1.629, 1.631, 1.631, 1.631, 1.631, 1.631, 1.631, 1.628, 1.626, 1.623, 1.622, 1.622, 1.623, 1.623, 1.624, 1.624, 1.624, 1.622, 1.621, 1.621,
+ 1.617, 1.618, 1.623, 1.625, 1.626, 1.626, 1.625, 1.624, 1.623, 1.624, 1.625, 1.629, 1.631, 1.633, 1.634, 1.634, 1.634, 1.633, 1.633, 1.631, 1.628, 1.624, 1.623, 1.623, 1.623, 1.625, 1.625, 1.625, 1.625, 1.623, 1.622, 1.622,
+ 1.617, 1.619, 1.623, 1.626, 1.627, 1.627, 1.626, 1.625, 1.624, 1.624, 1.625, 1.628, 1.632, 1.634, 1.635, 1.635, 1.635, 1.634, 1.633, 1.631, 1.627, 1.624, 1.623, 1.623, 1.623, 1.624, 1.625, 1.626, 1.625, 1.624, 1.623, 1.623,
+ 1.618, 1.619, 1.623, 1.626, 1.627, 1.626, 1.626, 1.625, 1.624, 1.624, 1.625, 1.628, 1.631, 1.634, 1.634, 1.634, 1.634, 1.634, 1.633, 1.631, 1.628, 1.623, 1.622, 1.622, 1.623, 1.624, 1.625, 1.626, 1.626, 1.624, 1.624, 1.623,
+ 1.618, 1.619, 1.623, 1.626, 1.627, 1.627, 1.625, 1.624, 1.624, 1.624, 1.625, 1.628, 1.632, 1.633, 1.634, 1.634, 1.634, 1.633, 1.633, 1.631, 1.627, 1.623, 1.622, 1.622, 1.623, 1.624, 1.624, 1.625, 1.625, 1.624, 1.623, 1.623,
+ 1.619, 1.621, 1.623, 1.626, 1.627, 1.627, 1.626, 1.625, 1.624, 1.624, 1.626, 1.628, 1.632, 1.634, 1.635, 1.634, 1.634, 1.633, 1.633, 1.631, 1.628, 1.625, 1.622, 1.622, 1.622, 1.623, 1.624, 1.625, 1.625, 1.624, 1.623, 1.623,
+ 1.619, 1.621, 1.623, 1.626, 1.627, 1.627, 1.626, 1.625, 1.624, 1.625, 1.627, 1.629, 1.633, 1.635, 1.635, 1.635, 1.635, 1.634, 1.633, 1.631, 1.628, 1.625, 1.623, 1.622, 1.622, 1.623, 1.624, 1.624, 1.624, 1.623, 1.623, 1.622,
+ 1.619, 1.621, 1.624, 1.626, 1.628, 1.628, 1.627, 1.626, 1.625, 1.626, 1.627, 1.629, 1.633, 1.635, 1.635, 1.635, 1.635, 1.634, 1.633, 1.631, 1.628, 1.625, 1.623, 1.623, 1.623, 1.623, 1.624, 1.624, 1.624, 1.622, 1.622, 1.622,
+ 1.619, 1.621, 1.623, 1.626, 1.628, 1.628, 1.627, 1.626, 1.625, 1.626, 1.627, 1.629, 1.632, 1.634, 1.635, 1.635, 1.634, 1.634, 1.632, 1.631, 1.628, 1.624, 1.622, 1.622, 1.622, 1.623, 1.624, 1.624, 1.624, 1.622, 1.621, 1.621,
+ 1.619, 1.621, 1.623, 1.627, 1.628, 1.628, 1.627, 1.627, 1.626, 1.627, 1.628, 1.629, 1.631, 1.633, 1.634, 1.633, 1.633, 1.632, 1.631, 1.631, 1.627, 1.624, 1.622, 1.622, 1.622, 1.622, 1.623, 1.623, 1.623, 1.621, 1.621, 1.621,
+ 1.621, 1.621, 1.624, 1.627, 1.628, 1.628, 1.627, 1.627, 1.627, 1.627, 1.628, 1.631, 1.632, 1.633, 1.633, 1.632, 1.632, 1.632, 1.631, 1.631, 1.628, 1.625, 1.623, 1.622, 1.622, 1.622, 1.623, 1.623, 1.623, 1.621, 1.621, 1.621,
+ 1.621, 1.621, 1.623, 1.627, 1.628, 1.628, 1.628, 1.627, 1.627, 1.628, 1.628, 1.629, 1.631, 1.632, 1.633, 1.632, 1.631, 1.631, 1.631, 1.629, 1.628, 1.625, 1.624, 1.623, 1.623, 1.623, 1.623, 1.623, 1.623, 1.621, 1.621, 1.619,
+ 1.619, 1.621, 1.623, 1.626, 1.628, 1.629, 1.627, 1.627, 1.627, 1.627, 1.628, 1.629, 1.631, 1.631, 1.631, 1.631, 1.631, 1.629, 1.629, 1.628, 1.626, 1.624, 1.623, 1.623, 1.623, 1.622, 1.623, 1.623, 1.622, 1.621, 1.619, 1.619,
+ 1.618, 1.619, 1.623, 1.625, 1.627, 1.627, 1.627, 1.627, 1.626, 1.627, 1.627, 1.628, 1.628, 1.629, 1.628, 1.628, 1.628, 1.628, 1.628, 1.627, 1.625, 1.623, 1.621, 1.621, 1.621, 1.622, 1.622, 1.622, 1.621, 1.619, 1.618, 1.618,
+ 1.618, 1.619, 1.622, 1.624, 1.626, 1.626, 1.626, 1.626, 1.626, 1.626, 1.626, 1.626, 1.627, 1.627, 1.627, 1.626, 1.626, 1.626, 1.626, 1.626, 1.624, 1.622, 1.621, 1.621, 1.619, 1.621, 1.621, 1.621, 1.621, 1.618, 1.617, 1.617,
+ 1.616, 1.618, 1.621, 1.623, 1.624, 1.625, 1.625, 1.625, 1.625, 1.625, 1.626, 1.626, 1.627, 1.627, 1.625, 1.624, 1.624, 1.625, 1.626, 1.625, 1.623, 1.621, 1.619, 1.619, 1.619, 1.619, 1.621, 1.621, 1.619, 1.616, 1.616, 1.616,
+ 1.615, 1.616, 1.619, 1.621, 1.623, 1.624, 1.625, 1.624, 1.624, 1.625, 1.626, 1.627, 1.627, 1.626, 1.626, 1.625, 1.624, 1.625, 1.625, 1.625, 1.623, 1.621, 1.619, 1.619, 1.619, 1.619, 1.619, 1.619, 1.618, 1.616, 1.615, 1.614,
+ 1.614, 1.615, 1.616, 1.621, 1.621, 1.623, 1.624, 1.623, 1.624, 1.624, 1.625, 1.627, 1.627, 1.627, 1.626, 1.625, 1.625, 1.625, 1.625, 1.624, 1.622, 1.621, 1.619, 1.618, 1.617, 1.617, 1.617, 1.617, 1.616, 1.613, 1.612, 1.612,
+ 1.612, 1.612, 1.615, 1.617, 1.621, 1.621, 1.622, 1.622, 1.622, 1.624, 1.625, 1.626, 1.626, 1.626, 1.625, 1.624, 1.624, 1.624, 1.624, 1.623, 1.621, 1.619, 1.618, 1.616, 1.615, 1.615, 1.615, 1.615, 1.613, 1.611, 1.609, 1.609,
+ 1.611, 1.611, 1.612, 1.615, 1.618, 1.619, 1.621, 1.621, 1.622, 1.623, 1.624, 1.626, 1.626, 1.626, 1.625, 1.624, 1.624, 1.624, 1.623, 1.622, 1.621, 1.618, 1.617, 1.615, 1.615, 1.614, 1.614, 1.613, 1.611, 1.609, 1.609, 1.609,
+ 1.611, 1.611, 1.612, 1.615, 1.618, 1.619, 1.621, 1.622, 1.623, 1.625, 1.625, 1.627, 1.627, 1.627, 1.626, 1.626, 1.626, 1.626, 1.624, 1.622, 1.621, 1.618, 1.617, 1.617, 1.616, 1.615, 1.614, 1.613, 1.612, 1.609, 1.609, 1.609,
+ 1.612, 1.612, 1.614, 1.617, 1.619, 1.621, 1.623, 1.624, 1.625, 1.626, 1.627, 1.629, 1.631, 1.629, 1.629, 1.629, 1.628, 1.629, 1.628, 1.626, 1.624, 1.621, 1.621, 1.619, 1.619, 1.618, 1.616, 1.616, 1.613, 1.611, 1.612, 1.612
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 2.977, 2.794, 2.572, 2.375, 2.218, 2.098, 1.995, 1.903, 1.815, 1.731, 1.647, 1.571, 1.516, 1.493, 1.483, 1.481, 1.481, 1.481, 1.489, 1.511, 1.571, 1.643, 1.729, 1.813, 1.901, 1.993, 2.091, 2.208, 2.364, 2.563, 2.785, 2.971,
+ 2.951, 2.736, 2.512, 2.312, 2.153, 2.031, 1.926, 1.824, 1.736, 1.649, 1.571, 1.506, 1.456, 1.419, 1.396, 1.386, 1.386, 1.392, 1.414, 1.451, 1.505, 1.571, 1.648, 1.733, 1.824, 1.922, 2.025, 2.144, 2.301, 2.499, 2.725, 2.939,
+ 2.883, 2.701, 2.471, 2.266, 2.102, 1.974, 1.861, 1.753, 1.649, 1.571, 1.502, 1.425, 1.361, 1.322, 1.298, 1.286, 1.286, 1.294, 1.317, 1.359, 1.424, 1.501, 1.571, 1.648, 1.751, 1.857, 1.968, 2.095, 2.254, 2.458, 2.688, 2.872,
+ 2.788, 2.632, 2.408, 2.209, 2.056, 1.931, 1.816, 1.704, 1.598, 1.503, 1.425, 1.361, 1.322, 1.298, 1.269, 1.245, 1.243, 1.264, 1.293, 1.317, 1.359, 1.424, 1.501, 1.596, 1.702, 1.812, 1.924, 2.046, 2.197, 2.392, 2.619, 2.777,
+ 2.712, 2.541, 2.327, 2.155, 2.023, 1.908, 1.796, 1.684, 1.578, 1.488, 1.412, 1.351, 1.304, 1.269, 1.245, 1.235, 1.235, 1.243, 1.264, 1.301, 1.349, 1.411, 1.485, 1.577, 1.683, 1.791, 1.902, 2.016, 2.143, 2.312, 2.528, 2.702,
+ 2.678, 2.469, 2.269, 2.117, 1.998, 1.885, 1.773, 1.661, 1.556, 1.469, 1.397, 1.336, 1.277, 1.245, 1.234, 1.226, 1.226, 1.232, 1.244, 1.273, 1.332, 1.392, 1.465, 1.555, 1.659, 1.768, 1.879, 1.991, 2.109, 2.256, 2.454, 2.665,
+ 2.659, 2.433, 2.232, 2.081, 1.957, 1.841, 1.722, 1.606, 1.499, 1.409, 1.337, 1.277, 1.232, 1.198, 1.175, 1.166, 1.166, 1.172, 1.193, 1.228, 1.272, 1.334, 1.408, 1.499, 1.608, 1.717, 1.834, 1.951, 2.073, 2.222, 2.419, 2.648,
+ 2.624, 2.411, 2.204, 2.041, 1.909, 1.784, 1.661, 1.539, 1.431, 1.337, 1.277, 1.219, 1.159, 1.118, 1.096, 1.085, 1.085, 1.092, 1.114, 1.156, 1.219, 1.272, 1.337, 1.429, 1.539, 1.658, 1.779, 1.904, 2.033, 2.193, 2.397, 2.613,
+ 2.564, 2.377, 2.169, 2.012, 1.879, 1.749, 1.623, 1.501, 1.392, 1.299, 1.227, 1.169, 1.125, 1.097, 1.079, 1.063, 1.063, 1.076, 1.093, 1.124, 1.168, 1.227, 1.302, 1.392, 1.501, 1.622, 1.746, 1.875, 2.005, 2.161, 2.362, 2.554,
+ 2.515, 2.325, 2.138, 1.997, 1.869, 1.742, 1.617, 1.501, 1.392, 1.299, 1.227, 1.169, 1.125, 1.095, 1.079, 1.063, 1.063, 1.076, 1.093, 1.124, 1.168, 1.227, 1.302, 1.392, 1.499, 1.615, 1.741, 1.867, 1.991, 2.132, 2.316, 2.505,
+ 2.498, 2.289, 2.121, 1.988, 1.867, 1.741, 1.616, 1.499, 1.391, 1.299, 1.227, 1.169, 1.125, 1.095, 1.082, 1.065, 1.064, 1.079, 1.093, 1.124, 1.168, 1.227, 1.302, 1.392, 1.498, 1.614, 1.738, 1.864, 1.985, 2.116, 2.281, 2.486,
+ 2.498, 2.272, 2.105, 1.971, 1.846, 1.718, 1.592, 1.475, 1.371, 1.279, 1.211, 1.156, 1.112, 1.083, 1.064, 1.055, 1.055, 1.062, 1.081, 1.109, 1.154, 1.212, 1.285, 1.372, 1.473, 1.589, 1.712, 1.843, 1.967, 2.101, 2.263, 2.486,
+ 2.497, 2.267, 2.088, 1.946, 1.813, 1.679, 1.549, 1.431, 1.324, 1.231, 1.159, 1.114, 1.079, 1.035, 1.008, 1.001, 1.001, 1.008, 1.032, 1.076, 1.111, 1.161, 1.235, 1.324, 1.429, 1.547, 1.677, 1.811, 1.941, 2.082, 2.257, 2.484,
+ 2.476, 2.262, 2.077, 1.933, 1.802, 1.671, 1.541, 1.421, 1.317, 1.227, 1.157, 1.101, 1.059, 1.027, 1.004, 1.001, 1.001, 1.004, 1.024, 1.054, 1.098, 1.157, 1.229, 1.317, 1.419, 1.537, 1.667, 1.799, 1.931, 2.071, 2.251, 2.463,
+ 2.455, 2.246, 2.076, 1.933, 1.802, 1.671, 1.541, 1.421, 1.317, 1.227, 1.157, 1.103, 1.064, 1.035, 1.011, 1.003, 1.003, 1.009, 1.032, 1.062, 1.099, 1.157, 1.229, 1.317, 1.419, 1.537, 1.667, 1.799, 1.931, 2.071, 2.236, 2.446,
+ 2.454, 2.239, 2.077, 1.946, 1.817, 1.686, 1.561, 1.444, 1.342, 1.255, 1.189, 1.136, 1.093, 1.059, 1.039, 1.038, 1.038, 1.039, 1.056, 1.091, 1.131, 1.187, 1.258, 1.341, 1.441, 1.556, 1.683, 1.813, 1.939, 2.071, 2.229, 2.445,
+ 2.454, 2.239, 2.079, 1.946, 1.817, 1.686, 1.561, 1.444, 1.342, 1.255, 1.189, 1.136, 1.093, 1.062, 1.039, 1.038, 1.038, 1.039, 1.059, 1.091, 1.131, 1.187, 1.258, 1.341, 1.441, 1.556, 1.683, 1.813, 1.939, 2.071, 2.229, 2.445,
+ 2.458, 2.251, 2.079, 1.941, 1.807, 1.672, 1.543, 1.424, 1.319, 1.231, 1.162, 1.107, 1.065, 1.045, 1.018, 1.003, 1.003, 1.017, 1.044, 1.062, 1.103, 1.159, 1.232, 1.317, 1.419, 1.539, 1.669, 1.802, 1.933, 2.072, 2.239, 2.445,
+ 2.479, 2.265, 2.085, 1.941, 1.807, 1.672, 1.543, 1.424, 1.319, 1.231, 1.162, 1.107, 1.064, 1.031, 1.017, 1.003, 1.003, 1.017, 1.031, 1.059, 1.103, 1.159, 1.232, 1.317, 1.419, 1.539, 1.669, 1.802, 1.933, 2.076, 2.252, 2.468,
+ 2.504, 2.277, 2.099, 1.958, 1.826, 1.695, 1.565, 1.445, 1.338, 1.249, 1.181, 1.129, 1.095, 1.051, 1.027, 1.018, 1.018, 1.028, 1.049, 1.092, 1.127, 1.179, 1.252, 1.339, 1.442, 1.561, 1.691, 1.822, 1.949, 2.089, 2.263, 2.492,
+ 2.509, 2.288, 2.118, 1.982, 1.858, 1.728, 1.604, 1.486, 1.381, 1.293, 1.227, 1.173, 1.127, 1.098, 1.076, 1.067, 1.067, 1.077, 1.097, 1.121, 1.168, 1.225, 1.296, 1.382, 1.483, 1.598, 1.723, 1.852, 1.975, 2.107, 2.274, 2.496,
+ 2.515, 2.312, 2.139, 2.002, 1.877, 1.751, 1.629, 1.512, 1.405, 1.318, 1.248, 1.193, 1.149, 1.118, 1.096, 1.085, 1.085, 1.095, 1.114, 1.145, 1.188, 1.246, 1.319, 1.405, 1.508, 1.623, 1.747, 1.873, 1.995, 2.127, 2.297, 2.501,
+ 2.541, 2.351, 2.161, 2.016, 1.888, 1.762, 1.638, 1.519, 1.411, 1.319, 1.251, 1.197, 1.154, 1.121, 1.099, 1.091, 1.091, 1.099, 1.119, 1.148, 1.192, 1.248, 1.321, 1.411, 1.515, 1.633, 1.758, 1.884, 2.009, 2.149, 2.334, 2.526,
+ 2.588, 2.394, 2.193, 2.036, 1.905, 1.779, 1.656, 1.537, 1.426, 1.329, 1.255, 1.198, 1.161, 1.139, 1.118, 1.096, 1.095, 1.114, 1.138, 1.158, 1.195, 1.256, 1.333, 1.425, 1.533, 1.651, 1.777, 1.902, 2.028, 2.181, 2.378, 2.571,
+ 2.639, 2.431, 2.226, 2.067, 1.937, 1.816, 1.695, 1.577, 1.467, 1.368, 1.298, 1.253, 1.198, 1.161, 1.139, 1.129, 1.129, 1.138, 1.158, 1.195, 1.245, 1.296, 1.374, 1.468, 1.574, 1.692, 1.812, 1.934, 2.059, 2.216, 2.418, 2.626,
+ 2.679, 2.465, 2.261, 2.104, 1.979, 1.862, 1.746, 1.631, 1.522, 1.426, 1.352, 1.297, 1.254, 1.221, 1.201, 1.189, 1.189, 1.198, 1.217, 1.246, 1.293, 1.354, 1.433, 1.526, 1.631, 1.744, 1.859, 1.975, 2.097, 2.252, 2.452, 2.667,
+ 2.711, 2.511, 2.302, 2.141, 2.018, 1.903, 1.791, 1.678, 1.571, 1.475, 1.401, 1.343, 1.297, 1.268, 1.247, 1.236, 1.236, 1.244, 1.263, 1.291, 1.341, 1.403, 1.484, 1.575, 1.679, 1.791, 1.902, 2.012, 2.136, 2.295, 2.501, 2.698,
+ 2.759, 2.582, 2.363, 2.184, 2.049, 1.935, 1.824, 1.714, 1.608, 1.511, 1.431, 1.371, 1.325, 1.295, 1.271, 1.259, 1.259, 1.266, 1.291, 1.318, 1.369, 1.436, 1.517, 1.611, 1.716, 1.825, 1.933, 2.047, 2.179, 2.351, 2.571, 2.748,
+ 2.833, 2.662, 2.433, 2.239, 2.089, 1.968, 1.859, 1.752, 1.646, 1.549, 1.468, 1.411, 1.369, 1.325, 1.296, 1.283, 1.283, 1.292, 1.318, 1.366, 1.411, 1.472, 1.555, 1.651, 1.755, 1.861, 1.969, 2.086, 2.231, 2.422, 2.648, 2.821,
+ 2.909, 2.729, 2.499, 2.298, 2.141, 2.016, 1.907, 1.805, 1.703, 1.611, 1.539, 1.468, 1.411, 1.375, 1.351, 1.339, 1.339, 1.348, 1.372, 1.411, 1.472, 1.543, 1.613, 1.708, 1.807, 1.909, 2.014, 2.135, 2.288, 2.487, 2.716, 2.897,
+ 2.981, 2.789, 2.563, 2.358, 2.197, 2.071, 1.968, 1.868, 1.774, 1.684, 1.607, 1.541, 1.489, 1.453, 1.428, 1.417, 1.417, 1.427, 1.451, 1.489, 1.543, 1.611, 1.686, 1.776, 1.871, 1.966, 2.069, 2.191, 2.349, 2.551, 2.775, 2.964,
+ 3.041, 2.856, 2.629, 2.422, 2.252, 2.127, 2.021, 1.927, 1.834, 1.748, 1.672, 1.604, 1.541, 1.495, 1.483, 1.483, 1.483, 1.483, 1.496, 1.543, 1.608, 1.673, 1.749, 1.835, 1.926, 2.019, 2.122, 2.249, 2.411, 2.614, 2.839, 3.026
+ ],
+ "sigma": 0.00163,
+ "sigma_Cb": 0.0011
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2964,
+ "ccm":
+ [
+ 1.72129, -0.45961, -0.26169,
+ -0.30042, 1.56924, -0.26882,
+ 0.15133, -1.13293, 1.98161
+ ]
+ },
+ {
+ "ct": 3610,
+ "ccm":
+ [
+ 1.54474, -0.35082, -0.19391,
+ -0.36989, 1.67926, -0.30936,
+ -0.00524, -0.55197, 1.55722
+ ]
+ },
+ {
+ "ct": 4640,
+ "ccm":
+ [
+ 1.52972, -0.35168, -0.17804,
+ -0.28309, 1.67098, -0.38788,
+ 0.01695, -0.57209, 1.55515
+ ]
+ },
+ {
+ "ct": 5910,
+ "ccm":
+ [
+ 1.56879, -0.42159, -0.14719,
+ -0.27275, 1.59354, -0.32079,
+ -0.02862, -0.40662, 1.43525
+ ]
+ },
+ {
+ "ct": 7590,
+ "ccm":
+ [
+ 1.41424, -0.21092, -0.20332,
+ -0.17646, 1.71734, -0.54087,
+ 0.01297, -0.63111, 1.61814
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.af":
+ {
+ "ranges":
+ {
+ "normal":
+ {
+ "min": 0.0,
+ "max": 12.0,
+ "default": 1.0
+ },
+ "macro":
+ {
+ "min": 3.0,
+ "max": 15.0,
+ "default": 4.0
+ }
+ },
+ "speeds":
+ {
+ "normal":
+ {
+ "step_coarse": 1.0,
+ "step_fine": 0.25,
+ "contrast_ratio": 0.75,
+ "pdaf_gain": -0.02,
+ "pdaf_squelch": 0.125,
+ "max_slew": 2.0,
+ "pdaf_frames": 20,
+ "dropout_frames": 6,
+ "step_frames": 4
+ }
+ },
+ "conf_epsilon": 8,
+ "conf_thresh": 16,
+ "conf_clip": 512,
+ "skip_frames": 5,
+ "map": [ 0.0, 445, 15.0, 925 ]
+ }
+ },
+ {
+ "rpi.cac":
+ {
+ "strength": 1.0,
+ "lut_rx":
+ [
+ -0.21, -0.12, -0.06, -0.04, -0.03, -0.0, 0.02, 0.08, 0.21,
+ -0.2, -0.12, -0.07, -0.05, -0.01, 0.02, 0.02, 0.06, 0.19,
+ -0.18, -0.12, -0.09, -0.07, -0.01, 0.03, 0.03, 0.04, 0.13,
+ -0.15, -0.11, -0.1, -0.09, -0.01, 0.04, 0.04, 0.04, 0.09,
+ -0.15, -0.11, -0.1, -0.09, -0.02, 0.05, 0.05, 0.05, 0.08,
+ -0.16, -0.11, -0.08, -0.07, -0.02, 0.05, 0.06, 0.07, 0.1,
+ -0.18, -0.1, -0.07, -0.05, -0.01, 0.03, 0.05, 0.08, 0.15,
+ -0.21, -0.11, -0.06, -0.04, -0.01, 0.02, 0.04, 0.09, 0.22,
+ -0.23, -0.14, -0.05, -0.03, -0.01, 0.01, 0.03, 0.1, 0.23
+ ],
+ "lut_ry":
+ [
+ -0.13, -0.08, -0.06, -0.08, -0.08, -0.06, -0.04, -0.06, -0.08,
+ -0.09, -0.05, -0.05, -0.09, -0.1, -0.08, -0.05, -0.04, -0.06,
+ -0.04, -0.05, -0.06, -0.1, -0.13, -0.1, -0.06, -0.04, -0.02,
+ -0.03, -0.04, -0.06, -0.09, -0.11, -0.1, -0.06, -0.03, 0.01,
+ -0.01, -0.01, -0.03, -0.03, -0.03, -0.04, -0.03, -0.01, 0.02,
+ 0.03, 0.01, -0.01, 0.0, 0.01, 0.01, -0.0, 0.01, 0.03,
+ 0.05, 0.02, 0.01, 0.02, 0.03, 0.02, 0.01, 0.03, 0.07,
+ 0.08, 0.03, 0.01, 0.01, 0.02, 0.02, 0.02, 0.05, 0.12,
+ 0.11, 0.07, 0.01, 0.0, -0.0, 0.01, 0.03, 0.07, 0.14
+ ],
+ "lut_bx":
+ [
+ 0.27, 0.13, 0.03, -0.01, -0.01, -0.0, -0.04, -0.11, -0.29,
+ 0.23, 0.1, 0.02, -0.01, -0.02, -0.01, -0.03, -0.1, -0.28,
+ 0.22, 0.08, 0.0, -0.01, -0.02, -0.02, -0.02, -0.08, -0.25,
+ 0.2, 0.08, 0.01, 0.0, -0.01, -0.02, -0.01, -0.07, -0.22,
+ 0.19, 0.08, 0.01, 0.0, -0.01, -0.02, -0.02, -0.06, -0.21,
+ 0.2, 0.08, 0.01, 0.0, -0.01, -0.02, -0.02, -0.07, -0.22,
+ 0.21, 0.09, 0.01, -0.01, -0.02, -0.02, -0.03, -0.09, -0.26,
+ 0.21, 0.11, 0.02, -0.01, -0.01, -0.02, -0.04, -0.11, -0.28,
+ 0.23, 0.13, 0.04, -0.01, -0.01, -0.01, -0.06, -0.13, -0.31
+ ],
+ "lut_by":
+ [
+ 0.17, 0.11, 0.07, 0.05, 0.04, 0.05, 0.07, 0.12, 0.19,
+ 0.11, 0.06, 0.04, 0.04, 0.04, 0.03, 0.04, 0.06, 0.13,
+ 0.06, 0.03, 0.02, 0.04, 0.05, 0.04, 0.03, 0.03, 0.06,
+ 0.02, 0.02, 0.03, 0.04, 0.06, 0.05, 0.03, 0.02, 0.01,
+ -0.0, 0.01, 0.03, 0.04, 0.04, 0.04, 0.02, -0.0, -0.03,
+ -0.04, -0.01, 0.02, 0.02, 0.02, 0.02, 0.01, -0.02, -0.09,
+ -0.08, -0.01, 0.04, 0.06, 0.06, 0.05, 0.03, -0.03, -0.14,
+ -0.1, -0.04, 0.04, 0.08, 0.08, 0.06, 0.02, -0.05, -0.18,
+ -0.15, -0.08, 0.02, 0.09, 0.11, 0.08, 0.01, -0.09, -0.22
+ ]
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx708_noir.json b/src/ipa/rpi/pisp/data/imx708_noir.json
new file mode 100644
index 00000000..e69afb0c
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx708_noir.json
@@ -0,0 +1,1233 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 20716,
+ "reference_gain": 1.12,
+ "reference_aperture": 1.0,
+ "reference_lux": 810,
+ "reference_Y": 13994
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 1.856
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 221,
+ "slope": 0.00226
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "bayes": 0
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 1.532, 1.534, 1.535, 1.538, 1.538, 1.533, 1.529, 1.515, 1.506, 1.492, 1.477, 1.465, 1.453, 1.444, 1.437, 1.433, 1.433, 1.435, 1.441, 1.449, 1.461, 1.474, 1.485, 1.499, 1.511, 1.519, 1.525, 1.526, 1.526, 1.523, 1.517, 1.516,
+ 1.532, 1.534, 1.537, 1.538, 1.537, 1.534, 1.525, 1.515, 1.502, 1.486, 1.474, 1.458, 1.449, 1.438, 1.429, 1.427, 1.426, 1.429, 1.436, 1.444, 1.456, 1.468, 1.483, 1.497, 1.509, 1.518, 1.524, 1.526, 1.526, 1.523, 1.521, 1.516,
+ 1.532, 1.534, 1.537, 1.538, 1.536, 1.533, 1.524, 1.512, 1.499, 1.483, 1.468, 1.453, 1.439, 1.429, 1.421, 1.419, 1.419, 1.419, 1.427, 1.438, 1.451, 1.464, 1.479, 1.494, 1.506, 1.516, 1.523, 1.526, 1.526, 1.524, 1.521, 1.518,
+ 1.533, 1.536, 1.537, 1.537, 1.535, 1.532, 1.521, 1.507, 1.491, 1.474, 1.456, 1.441, 1.429, 1.418, 1.409, 1.406, 1.406, 1.408, 1.415, 1.426, 1.439, 1.453, 1.471, 1.485, 1.501, 1.511, 1.522, 1.524, 1.526, 1.525, 1.522, 1.519,
+ 1.537, 1.538, 1.539, 1.538, 1.534, 1.525, 1.513, 1.495, 1.477, 1.459, 1.443, 1.427, 1.413, 1.402, 1.394, 1.391, 1.391, 1.393, 1.399, 1.409, 1.424, 1.439, 1.455, 1.472, 1.489, 1.503, 1.515, 1.523, 1.526, 1.527, 1.525, 1.523,
+ 1.538, 1.539, 1.541, 1.539, 1.531, 1.519, 1.503, 1.484, 1.466, 1.445, 1.427, 1.413, 1.401, 1.386, 1.378, 1.373, 1.373, 1.376, 1.386, 1.398, 1.409, 1.424, 1.441, 1.459, 1.477, 1.495, 1.509, 1.519, 1.526, 1.528, 1.528, 1.526,
+ 1.539, 1.541, 1.541, 1.539, 1.529, 1.516, 1.498, 1.479, 1.456, 1.437, 1.417, 1.401, 1.386, 1.378, 1.369, 1.363, 1.363, 1.367, 1.376, 1.386, 1.399, 1.413, 1.432, 1.451, 1.472, 1.491, 1.507, 1.517, 1.525, 1.527, 1.527, 1.527,
+ 1.539, 1.539, 1.539, 1.538, 1.529, 1.515, 1.497, 1.476, 1.454, 1.433, 1.411, 1.395, 1.381, 1.368, 1.361, 1.356, 1.356, 1.359, 1.367, 1.379, 1.393, 1.409, 1.428, 1.448, 1.471, 1.489, 1.505, 1.516, 1.524, 1.527, 1.527, 1.527,
+ 1.539, 1.539, 1.539, 1.537, 1.528, 1.513, 1.493, 1.471, 1.449, 1.426, 1.406, 1.387, 1.373, 1.361, 1.352, 1.348, 1.348, 1.351, 1.359, 1.372, 1.387, 1.403, 1.422, 1.443, 1.465, 1.484, 1.503, 1.516, 1.525, 1.527, 1.528, 1.526,
+ 1.541, 1.542, 1.539, 1.537, 1.524, 1.506, 1.485, 1.461, 1.438, 1.416, 1.395, 1.377, 1.362, 1.352, 1.344, 1.339, 1.339, 1.342, 1.351, 1.362, 1.376, 1.393, 1.412, 1.434, 1.455, 1.477, 1.495, 1.514, 1.524, 1.528, 1.529, 1.529,
+ 1.543, 1.544, 1.543, 1.534, 1.518, 1.499, 1.476, 1.452, 1.427, 1.405, 1.386, 1.367, 1.354, 1.344, 1.338, 1.329, 1.329, 1.335, 1.342, 1.352, 1.367, 1.382, 1.402, 1.424, 1.445, 1.469, 1.491, 1.507, 1.522, 1.528, 1.529, 1.532,
+ 1.544, 1.544, 1.542, 1.534, 1.518, 1.499, 1.474, 1.449, 1.425, 1.401, 1.379, 1.362, 1.348, 1.338, 1.329, 1.324, 1.325, 1.329, 1.335, 1.347, 1.361, 1.378, 1.397, 1.421, 1.443, 1.467, 1.489, 1.507, 1.521, 1.529, 1.532, 1.533,
+ 1.543, 1.543, 1.541, 1.534, 1.519, 1.499, 1.474, 1.448, 1.424, 1.399, 1.377, 1.359, 1.346, 1.333, 1.324, 1.322, 1.321, 1.324, 1.332, 1.344, 1.359, 1.376, 1.397, 1.419, 1.443, 1.467, 1.489, 1.508, 1.521, 1.528, 1.531, 1.532,
+ 1.543, 1.542, 1.541, 1.533, 1.519, 1.499, 1.474, 1.448, 1.422, 1.399, 1.376, 1.358, 1.344, 1.331, 1.322, 1.319, 1.319, 1.321, 1.331, 1.342, 1.357, 1.375, 1.396, 1.419, 1.443, 1.467, 1.489, 1.508, 1.521, 1.529, 1.531, 1.532,
+ 1.543, 1.542, 1.541, 1.532, 1.518, 1.496, 1.471, 1.445, 1.418, 1.393, 1.373, 1.354, 1.341, 1.329, 1.319, 1.317, 1.316, 1.319, 1.327, 1.338, 1.353, 1.371, 1.392, 1.415, 1.439, 1.465, 1.485, 1.507, 1.519, 1.529, 1.531, 1.531,
+ 1.545, 1.544, 1.542, 1.531, 1.515, 1.493, 1.467, 1.441, 1.414, 1.391, 1.369, 1.351, 1.337, 1.326, 1.318, 1.314, 1.314, 1.317, 1.325, 1.335, 1.351, 1.367, 1.388, 1.411, 1.436, 1.461, 1.483, 1.505, 1.519, 1.531, 1.533, 1.533,
+ 1.545, 1.544, 1.541, 1.531, 1.515, 1.493, 1.467, 1.441, 1.414, 1.391, 1.369, 1.351, 1.337, 1.326, 1.318, 1.314, 1.314, 1.317, 1.325, 1.335, 1.351, 1.367, 1.388, 1.411, 1.436, 1.461, 1.483, 1.505, 1.521, 1.531, 1.534, 1.534,
+ 1.545, 1.544, 1.541, 1.534, 1.519, 1.496, 1.471, 1.446, 1.419, 1.392, 1.372, 1.354, 1.338, 1.328, 1.319, 1.316, 1.315, 1.319, 1.327, 1.338, 1.353, 1.371, 1.392, 1.416, 1.441, 1.465, 1.489, 1.511, 1.522, 1.531, 1.534, 1.535,
+ 1.544, 1.544, 1.542, 1.537, 1.524, 1.501, 1.476, 1.449, 1.424, 1.399, 1.377, 1.359, 1.344, 1.332, 1.324, 1.319, 1.319, 1.323, 1.331, 1.343, 1.358, 1.374, 1.396, 1.419, 1.445, 1.471, 1.493, 1.512, 1.525, 1.532, 1.534, 1.534,
+ 1.545, 1.545, 1.543, 1.538, 1.524, 1.503, 1.479, 1.452, 1.426, 1.402, 1.381, 1.362, 1.348, 1.337, 1.329, 1.324, 1.324, 1.328, 1.335, 1.347, 1.361, 1.379, 1.399, 1.423, 1.447, 1.471, 1.493, 1.513, 1.526, 1.533, 1.534, 1.535,
+ 1.546, 1.546, 1.544, 1.539, 1.525, 1.504, 1.479, 1.453, 1.428, 1.404, 1.383, 1.365, 1.352, 1.339, 1.333, 1.329, 1.329, 1.333, 1.339, 1.349, 1.363, 1.381, 1.402, 1.424, 1.448, 1.472, 1.494, 1.514, 1.526, 1.534, 1.534, 1.534,
+ 1.546, 1.546, 1.544, 1.539, 1.526, 1.505, 1.483, 1.457, 1.432, 1.407, 1.389, 1.371, 1.357, 1.347, 1.339, 1.333, 1.333, 1.339, 1.345, 1.354, 1.368, 1.386, 1.406, 1.428, 1.453, 1.475, 1.496, 1.515, 1.527, 1.535, 1.535, 1.535,
+ 1.545, 1.545, 1.545, 1.541, 1.529, 1.513, 1.491, 1.467, 1.441, 1.418, 1.399, 1.379, 1.366, 1.355, 1.347, 1.341, 1.341, 1.345, 1.354, 1.364, 1.378, 1.395, 1.415, 1.436, 1.459, 1.483, 1.503, 1.519, 1.531, 1.534, 1.535, 1.534,
+ 1.544, 1.545, 1.545, 1.544, 1.535, 1.519, 1.499, 1.476, 1.451, 1.428, 1.409, 1.391, 1.377, 1.366, 1.356, 1.352, 1.352, 1.355, 1.364, 1.374, 1.388, 1.405, 1.426, 1.447, 1.469, 1.492, 1.509, 1.523, 1.532, 1.535, 1.535, 1.533,
+ 1.544, 1.545, 1.546, 1.545, 1.537, 1.523, 1.504, 1.482, 1.458, 1.436, 1.418, 1.401, 1.385, 1.377, 1.367, 1.362, 1.362, 1.365, 1.373, 1.385, 1.398, 1.415, 1.434, 1.455, 1.477, 1.495, 1.514, 1.525, 1.533, 1.536, 1.535, 1.533,
+ 1.545, 1.546, 1.547, 1.545, 1.538, 1.525, 1.508, 1.486, 1.465, 1.444, 1.424, 1.408, 1.394, 1.385, 1.377, 1.371, 1.371, 1.373, 1.384, 1.392, 1.405, 1.421, 1.441, 1.459, 1.481, 1.499, 1.516, 1.528, 1.534, 1.536, 1.536, 1.533,
+ 1.544, 1.546, 1.547, 1.547, 1.541, 1.531, 1.514, 1.494, 1.474, 1.454, 1.434, 1.421, 1.408, 1.394, 1.386, 1.382, 1.382, 1.385, 1.392, 1.405, 1.416, 1.432, 1.449, 1.468, 1.488, 1.505, 1.519, 1.531, 1.536, 1.537, 1.536, 1.533,
+ 1.544, 1.546, 1.548, 1.548, 1.545, 1.536, 1.522, 1.506, 1.486, 1.467, 1.451, 1.434, 1.421, 1.408, 1.401, 1.396, 1.396, 1.399, 1.407, 1.416, 1.431, 1.447, 1.463, 1.481, 1.499, 1.513, 1.526, 1.534, 1.537, 1.537, 1.534, 1.531,
+ 1.543, 1.545, 1.547, 1.549, 1.549, 1.543, 1.531, 1.517, 1.501, 1.483, 1.465, 1.451, 1.438, 1.425, 1.417, 1.412, 1.412, 1.418, 1.423, 1.433, 1.447, 1.462, 1.479, 1.493, 1.511, 1.524, 1.531, 1.536, 1.538, 1.537, 1.533, 1.531,
+ 1.542, 1.545, 1.548, 1.551, 1.551, 1.546, 1.539, 1.524, 1.511, 1.493, 1.479, 1.464, 1.451, 1.442, 1.433, 1.429, 1.429, 1.434, 1.439, 1.449, 1.462, 1.474, 1.491, 1.505, 1.519, 1.529, 1.536, 1.539, 1.539, 1.537, 1.533, 1.531,
+ 1.541, 1.546, 1.549, 1.552, 1.553, 1.551, 1.544, 1.533, 1.521, 1.505, 1.489, 1.477, 1.464, 1.455, 1.447, 1.443, 1.443, 1.446, 1.451, 1.462, 1.472, 1.487, 1.499, 1.514, 1.525, 1.535, 1.541, 1.541, 1.541, 1.539, 1.533, 1.531,
+ 1.541, 1.546, 1.549, 1.553, 1.554, 1.552, 1.546, 1.537, 1.524, 1.512, 1.499, 1.485, 1.474, 1.464, 1.455, 1.451, 1.451, 1.452, 1.461, 1.469, 1.481, 1.495, 1.506, 1.518, 1.529, 1.539, 1.541, 1.542, 1.541, 1.539, 1.533, 1.529
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 2.586, 2.591, 2.597, 2.601, 2.601, 2.599, 2.592, 2.576, 2.561, 2.541, 2.523, 2.503, 2.486, 2.471, 2.459, 2.452, 2.452, 2.454, 2.462, 2.478, 2.495, 2.512, 2.531, 2.555, 2.568, 2.579, 2.587, 2.588, 2.585, 2.579, 2.573, 2.566,
+ 2.587, 2.592, 2.598, 2.601, 2.601, 2.599, 2.587, 2.574, 2.556, 2.532, 2.512, 2.491, 2.474, 2.462, 2.449, 2.443, 2.439, 2.443, 2.454, 2.464, 2.485, 2.505, 2.525, 2.548, 2.566, 2.578, 2.585, 2.588, 2.586, 2.579, 2.575, 2.567,
+ 2.587, 2.593, 2.598, 2.602, 2.601, 2.597, 2.584, 2.569, 2.551, 2.527, 2.503, 2.482, 2.464, 2.448, 2.434, 2.428, 2.427, 2.431, 2.439, 2.455, 2.474, 2.498, 2.521, 2.541, 2.564, 2.577, 2.585, 2.588, 2.589, 2.581, 2.576, 2.569,
+ 2.593, 2.596, 2.601, 2.603, 2.601, 2.594, 2.583, 2.563, 2.539, 2.514, 2.491, 2.466, 2.445, 2.429, 2.417, 2.409, 2.408, 2.411, 2.421, 2.437, 2.457, 2.481, 2.507, 2.531, 2.555, 2.572, 2.583, 2.588, 2.588, 2.585, 2.579, 2.575,
+ 2.597, 2.599, 2.604, 2.603, 2.599, 2.587, 2.567, 2.548, 2.522, 2.493, 2.467, 2.443, 2.419, 2.406, 2.391, 2.385, 2.385, 2.387, 2.397, 2.413, 2.435, 2.459, 2.486, 2.509, 2.538, 2.559, 2.574, 2.586, 2.588, 2.586, 2.582, 2.579,
+ 2.601, 2.603, 2.606, 2.604, 2.596, 2.578, 2.556, 2.531, 2.501, 2.471, 2.444, 2.419, 2.402, 2.381, 2.365, 2.359, 2.359, 2.361, 2.374, 2.396, 2.413, 2.435, 2.465, 2.493, 2.517, 2.542, 2.562, 2.582, 2.588, 2.587, 2.586, 2.584,
+ 2.601, 2.604, 2.605, 2.604, 2.593, 2.575, 2.547, 2.522, 2.488, 2.458, 2.432, 2.402, 2.381, 2.364, 2.349, 2.338, 2.338, 2.345, 2.359, 2.374, 2.396, 2.423, 2.453, 2.481, 2.511, 2.539, 2.561, 2.581, 2.586, 2.588, 2.588, 2.586,
+ 2.599, 2.602, 2.604, 2.602, 2.592, 2.572, 2.546, 2.516, 2.485, 2.451, 2.422, 2.393, 2.368, 2.349, 2.336, 2.328, 2.328, 2.333, 2.345, 2.365, 2.389, 2.417, 2.447, 2.478, 2.509, 2.537, 2.561, 2.577, 2.585, 2.588, 2.588, 2.587,
+ 2.601, 2.602, 2.604, 2.601, 2.589, 2.569, 2.539, 2.509, 2.473, 2.442, 2.409, 2.379, 2.357, 2.336, 2.323, 2.315, 2.315, 2.322, 2.334, 2.354, 2.377, 2.406, 2.436, 2.469, 2.503, 2.529, 2.558, 2.574, 2.585, 2.588, 2.589, 2.587,
+ 2.601, 2.606, 2.606, 2.601, 2.581, 2.557, 2.525, 2.493, 2.459, 2.426, 2.394, 2.365, 2.339, 2.322, 2.308, 2.301, 2.301, 2.305, 2.322, 2.337, 2.361, 2.389, 2.422, 2.454, 2.485, 2.519, 2.546, 2.568, 2.584, 2.589, 2.589, 2.589,
+ 2.608, 2.608, 2.606, 2.597, 2.576, 2.548, 2.515, 2.481, 2.444, 2.409, 2.376, 2.346, 2.323, 2.308, 2.293, 2.282, 2.281, 2.291, 2.305, 2.322, 2.348, 2.371, 2.403, 2.439, 2.472, 2.508, 2.538, 2.565, 2.582, 2.589, 2.592, 2.593,
+ 2.608, 2.608, 2.605, 2.596, 2.575, 2.547, 2.511, 2.474, 2.435, 2.401, 2.366, 2.339, 2.312, 2.293, 2.281, 2.274, 2.274, 2.281, 2.291, 2.311, 2.334, 2.364, 2.399, 2.433, 2.471, 2.506, 2.538, 2.564, 2.581, 2.591, 2.594, 2.595,
+ 2.605, 2.606, 2.605, 2.595, 2.575, 2.547, 2.511, 2.474, 2.433, 2.397, 2.363, 2.333, 2.309, 2.291, 2.274, 2.267, 2.265, 2.272, 2.284, 2.307, 2.331, 2.361, 2.395, 2.431, 2.469, 2.503, 2.539, 2.567, 2.584, 2.591, 2.595, 2.595,
+ 2.605, 2.606, 2.605, 2.595, 2.575, 2.547, 2.509, 2.473, 2.431, 2.395, 2.361, 2.332, 2.306, 2.285, 2.267, 2.261, 2.262, 2.265, 2.281, 2.302, 2.329, 2.359, 2.395, 2.429, 2.468, 2.503, 2.539, 2.567, 2.583, 2.593, 2.595, 2.595,
+ 2.608, 2.607, 2.606, 2.592, 2.572, 2.543, 2.506, 2.468, 2.426, 2.389, 2.354, 2.327, 2.299, 2.279, 2.262, 2.258, 2.257, 2.262, 2.276, 2.297, 2.321, 2.352, 2.387, 2.425, 2.464, 2.498, 2.532, 2.565, 2.582, 2.592, 2.595, 2.596,
+ 2.611, 2.609, 2.605, 2.592, 2.571, 2.538, 2.499, 2.463, 2.421, 2.384, 2.351, 2.322, 2.295, 2.276, 2.259, 2.254, 2.254, 2.256, 2.273, 2.292, 2.318, 2.347, 2.383, 2.418, 2.456, 2.491, 2.529, 2.562, 2.581, 2.593, 2.597, 2.598,
+ 2.609, 2.609, 2.606, 2.593, 2.571, 2.538, 2.499, 2.463, 2.421, 2.384, 2.351, 2.321, 2.295, 2.276, 2.259, 2.251, 2.251, 2.256, 2.273, 2.292, 2.318, 2.347, 2.383, 2.418, 2.456, 2.491, 2.529, 2.559, 2.582, 2.595, 2.597, 2.599,
+ 2.609, 2.609, 2.607, 2.597, 2.576, 2.543, 2.507, 2.467, 2.427, 2.388, 2.356, 2.323, 2.297, 2.278, 2.262, 2.256, 2.255, 2.262, 2.275, 2.296, 2.321, 2.351, 2.388, 2.425, 2.464, 2.502, 2.534, 2.563, 2.586, 2.595, 2.598, 2.599,
+ 2.609, 2.609, 2.608, 2.601, 2.581, 2.547, 2.513, 2.475, 2.434, 2.398, 2.362, 2.332, 2.307, 2.287, 2.269, 2.263, 2.263, 2.269, 2.281, 2.304, 2.328, 2.358, 2.394, 2.429, 2.469, 2.508, 2.538, 2.568, 2.589, 2.597, 2.598, 2.598,
+ 2.609, 2.611, 2.609, 2.601, 2.583, 2.549, 2.518, 2.478, 2.439, 2.402, 2.367, 2.337, 2.313, 2.293, 2.279, 2.271, 2.269, 2.277, 2.291, 2.311, 2.336, 2.363, 2.399, 2.435, 2.473, 2.509, 2.541, 2.571, 2.591, 2.598, 2.599, 2.599,
+ 2.611, 2.611, 2.609, 2.602, 2.585, 2.551, 2.519, 2.481, 2.442, 2.406, 2.374, 2.342, 2.318, 2.297, 2.287, 2.279, 2.278, 2.287, 2.297, 2.315, 2.339, 2.368, 2.402, 2.438, 2.476, 2.511, 2.545, 2.571, 2.591, 2.599, 2.601, 2.599,
+ 2.611, 2.611, 2.609, 2.604, 2.587, 2.557, 2.521, 2.485, 2.447, 2.412, 2.379, 2.352, 2.328, 2.309, 2.297, 2.288, 2.287, 2.297, 2.308, 2.327, 2.349, 2.377, 2.408, 2.446, 2.481, 2.517, 2.547, 2.573, 2.591, 2.599, 2.601, 2.599,
+ 2.608, 2.609, 2.609, 2.606, 2.592, 2.564, 2.533, 2.498, 2.462, 2.427, 2.394, 2.364, 2.343, 2.326, 2.309, 2.302, 2.302, 2.308, 2.324, 2.341, 2.362, 2.391, 2.425, 2.458, 2.494, 2.526, 2.555, 2.584, 2.593, 2.599, 2.599, 2.599,
+ 2.608, 2.609, 2.609, 2.609, 2.597, 2.574, 2.547, 2.511, 2.475, 2.438, 2.411, 2.381, 2.359, 2.342, 2.327, 2.318, 2.318, 2.325, 2.341, 2.358, 2.377, 2.404, 2.439, 2.469, 2.507, 2.537, 2.564, 2.587, 2.596, 2.598, 2.598, 2.597,
+ 2.609, 2.609, 2.611, 2.609, 2.599, 2.579, 2.551, 2.519, 2.486, 2.453, 2.425, 2.397, 2.375, 2.358, 2.345, 2.336, 2.336, 2.341, 2.355, 2.372, 2.393, 2.419, 2.452, 2.481, 2.516, 2.542, 2.571, 2.591, 2.597, 2.599, 2.598, 2.595,
+ 2.607, 2.611, 2.613, 2.611, 2.605, 2.586, 2.561, 2.529, 2.495, 2.462, 2.435, 2.409, 2.387, 2.374, 2.359, 2.351, 2.351, 2.356, 2.372, 2.385, 2.406, 2.431, 2.462, 2.488, 2.524, 2.551, 2.573, 2.591, 2.598, 2.599, 2.598, 2.596,
+ 2.606, 2.609, 2.613, 2.613, 2.607, 2.591, 2.565, 2.539, 2.507, 2.477, 2.449, 2.425, 2.409, 2.387, 2.376, 2.369, 2.369, 2.374, 2.385, 2.406, 2.422, 2.446, 2.473, 2.502, 2.534, 2.557, 2.578, 2.595, 2.599, 2.601, 2.598, 2.595,
+ 2.606, 2.611, 2.613, 2.614, 2.611, 2.598, 2.581, 2.553, 2.523, 2.496, 2.471, 2.449, 2.425, 2.409, 2.398, 2.391, 2.391, 2.395, 2.408, 2.422, 2.445, 2.468, 2.493, 2.522, 2.549, 2.569, 2.589, 2.601, 2.603, 2.602, 2.596, 2.593,
+ 2.605, 2.609, 2.613, 2.616, 2.614, 2.607, 2.591, 2.571, 2.545, 2.518, 2.494, 2.471, 2.452, 2.435, 2.423, 2.417, 2.417, 2.421, 2.431, 2.449, 2.467, 2.493, 2.516, 2.542, 2.566, 2.585, 2.596, 2.606, 2.605, 2.602, 2.595, 2.593,
+ 2.604, 2.608, 2.616, 2.617, 2.618, 2.613, 2.602, 2.584, 2.559, 2.536, 2.514, 2.493, 2.476, 2.459, 2.445, 2.439, 2.439, 2.445, 2.456, 2.471, 2.493, 2.511, 2.534, 2.559, 2.579, 2.592, 2.607, 2.608, 2.607, 2.604, 2.595, 2.592,
+ 2.603, 2.609, 2.615, 2.619, 2.623, 2.619, 2.608, 2.594, 2.573, 2.551, 2.532, 2.512, 2.493, 2.477, 2.468, 2.462, 2.462, 2.468, 2.476, 2.494, 2.509, 2.528, 2.551, 2.574, 2.589, 2.604, 2.611, 2.611, 2.611, 2.604, 2.598, 2.592,
+ 2.602, 2.607, 2.613, 2.621, 2.624, 2.621, 2.617, 2.601, 2.585, 2.567, 2.544, 2.521, 2.507, 2.493, 2.478, 2.474, 2.475, 2.477, 2.489, 2.505, 2.523, 2.544, 2.563, 2.584, 2.598, 2.609, 2.612, 2.613, 2.613, 2.608, 2.599, 2.591
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 3.263, 3.263, 3.264, 3.269, 3.274, 3.275, 3.277, 3.281, 3.283, 3.285, 3.289, 3.292, 3.291, 3.291, 3.294, 3.298, 3.302, 3.305, 3.303, 3.301, 3.296, 3.294, 3.293, 3.293, 3.295, 3.295, 3.295, 3.287, 3.285, 3.279, 3.282, 3.285,
+ 3.259, 3.259, 3.262, 3.268, 3.271, 3.273, 3.273, 3.274, 3.277, 3.278, 3.282, 3.285, 3.286, 3.286, 3.288, 3.289, 3.292, 3.291, 3.293, 3.291, 3.288, 3.288, 3.288, 3.288, 3.288, 3.287, 3.287, 3.283, 3.281, 3.276, 3.277, 3.281,
+ 3.259, 3.259, 3.262, 3.269, 3.272, 3.274, 3.273, 3.273, 3.273, 3.276, 3.278, 3.279, 3.281, 3.282, 3.283, 3.283, 3.285, 3.286, 3.286, 3.285, 3.283, 3.282, 3.282, 3.286, 3.285, 3.285, 3.285, 3.282, 3.281, 3.276, 3.275, 3.279,
+ 3.267, 3.266, 3.269, 3.273, 3.274, 3.277, 3.276, 3.275, 3.274, 3.277, 3.277, 3.278, 3.279, 3.279, 3.279, 3.279, 3.281, 3.283, 3.283, 3.281, 3.281, 3.281, 3.282, 3.287, 3.287, 3.288, 3.287, 3.286, 3.283, 3.277, 3.278, 3.281,
+ 3.268, 3.271, 3.274, 3.277, 3.283, 3.286, 3.284, 3.281, 3.278, 3.278, 3.279, 3.279, 3.281, 3.281, 3.281, 3.281, 3.282, 3.283, 3.284, 3.283, 3.282, 3.282, 3.284, 3.288, 3.289, 3.291, 3.291, 3.288, 3.288, 3.283, 3.286, 3.288,
+ 3.272, 3.275, 3.279, 3.283, 3.288, 3.289, 3.289, 3.287, 3.282, 3.284, 3.282, 3.284, 3.284, 3.285, 3.284, 3.285, 3.285, 3.288, 3.287, 3.286, 3.283, 3.283, 3.285, 3.289, 3.292, 3.292, 3.293, 3.292, 3.291, 3.288, 3.289, 3.293,
+ 3.276, 3.278, 3.282, 3.289, 3.293, 3.293, 3.291, 3.289, 3.287, 3.286, 3.285, 3.285, 3.286, 3.286, 3.287, 3.288, 3.289, 3.289, 3.289, 3.288, 3.285, 3.283, 3.286, 3.289, 3.292, 3.294, 3.294, 3.294, 3.293, 3.289, 3.292, 3.293,
+ 3.279, 3.281, 3.286, 3.293, 3.297, 3.298, 3.295, 3.292, 3.288, 3.287, 3.285, 3.287, 3.288, 3.288, 3.289, 3.291, 3.292, 3.293, 3.291, 3.288, 3.286, 3.285, 3.285, 3.291, 3.294, 3.295, 3.297, 3.297, 3.298, 3.293, 3.294, 3.294,
+ 3.281, 3.286, 3.291, 3.298, 3.301, 3.301, 3.299, 3.295, 3.289, 3.288, 3.286, 3.288, 3.289, 3.292, 3.293, 3.292, 3.295, 3.296, 3.295, 3.291, 3.287, 3.286, 3.286, 3.289, 3.295, 3.297, 3.298, 3.301, 3.301, 3.298, 3.297, 3.297,
+ 3.284, 3.289, 3.295, 3.302, 3.303, 3.303, 3.301, 3.298, 3.294, 3.292, 3.289, 3.293, 3.296, 3.297, 3.297, 3.297, 3.297, 3.298, 3.298, 3.296, 3.289, 3.288, 3.287, 3.294, 3.298, 3.301, 3.304, 3.305, 3.304, 3.299, 3.299, 3.302,
+ 3.291, 3.292, 3.299, 3.305, 3.308, 3.305, 3.304, 3.302, 3.298, 3.295, 3.295, 3.298, 3.299, 3.302, 3.303, 3.302, 3.301, 3.301, 3.301, 3.299, 3.296, 3.291, 3.292, 3.297, 3.301, 3.304, 3.306, 3.309, 3.308, 3.302, 3.301, 3.304,
+ 3.292, 3.297, 3.303, 3.309, 3.312, 3.311, 3.308, 3.304, 3.301, 3.299, 3.298, 3.299, 3.303, 3.305, 3.306, 3.305, 3.305, 3.303, 3.303, 3.301, 3.299, 3.294, 3.294, 3.297, 3.302, 3.305, 3.309, 3.311, 3.311, 3.305, 3.305, 3.306,
+ 3.295, 3.298, 3.305, 3.309, 3.313, 3.313, 3.312, 3.307, 3.303, 3.301, 3.299, 3.301, 3.304, 3.307, 3.308, 3.306, 3.306, 3.306, 3.306, 3.302, 3.299, 3.296, 3.295, 3.298, 3.303, 3.306, 3.311, 3.312, 3.312, 3.307, 3.308, 3.309,
+ 3.297, 3.298, 3.303, 3.309, 3.313, 3.313, 3.311, 3.307, 3.303, 3.301, 3.299, 3.299, 3.305, 3.307, 3.307, 3.306, 3.306, 3.306, 3.305, 3.299, 3.297, 3.294, 3.294, 3.298, 3.303, 3.305, 3.311, 3.312, 3.313, 3.308, 3.311, 3.309,
+ 3.297, 3.298, 3.304, 3.309, 3.312, 3.313, 3.311, 3.308, 3.304, 3.302, 3.301, 3.301, 3.306, 3.307, 3.308, 3.306, 3.306, 3.307, 3.306, 3.302, 3.297, 3.294, 3.294, 3.299, 3.305, 3.306, 3.309, 3.312, 3.311, 3.306, 3.308, 3.309,
+ 3.298, 3.299, 3.306, 3.311, 3.315, 3.314, 3.311, 3.308, 3.305, 3.303, 3.303, 3.304, 3.307, 3.309, 3.309, 3.308, 3.308, 3.307, 3.306, 3.302, 3.298, 3.296, 3.296, 3.298, 3.304, 3.306, 3.308, 3.309, 3.314, 3.308, 3.309, 3.308,
+ 3.299, 3.301, 3.307, 3.313, 3.316, 3.316, 3.313, 3.311, 3.307, 3.305, 3.305, 3.307, 3.309, 3.311, 3.312, 3.311, 3.309, 3.309, 3.308, 3.306, 3.301, 3.298, 3.297, 3.301, 3.305, 3.309, 3.309, 3.311, 3.313, 3.306, 3.308, 3.307,
+ 3.301, 3.301, 3.307, 3.314, 3.317, 3.318, 3.314, 3.311, 3.308, 3.306, 3.306, 3.308, 3.311, 3.311, 3.312, 3.311, 3.309, 3.309, 3.309, 3.306, 3.302, 3.298, 3.298, 3.301, 3.305, 3.309, 3.311, 3.311, 3.312, 3.309, 3.308, 3.308,
+ 3.301, 3.302, 3.307, 3.316, 3.319, 3.319, 3.315, 3.312, 3.309, 3.306, 3.307, 3.309, 3.311, 3.312, 3.311, 3.311, 3.309, 3.309, 3.309, 3.306, 3.303, 3.299, 3.298, 3.302, 3.305, 3.308, 3.309, 3.309, 3.309, 3.303, 3.306, 3.307,
+ 3.301, 3.303, 3.308, 3.315, 3.318, 3.318, 3.316, 3.313, 3.311, 3.307, 3.307, 3.308, 3.311, 3.311, 3.311, 3.308, 3.308, 3.307, 3.307, 3.306, 3.303, 3.299, 3.297, 3.301, 3.303, 3.306, 3.309, 3.308, 3.306, 3.303, 3.304, 3.306,
+ 3.302, 3.304, 3.306, 3.316, 3.318, 3.318, 3.317, 3.315, 3.311, 3.308, 3.309, 3.311, 3.311, 3.312, 3.311, 3.307, 3.306, 3.307, 3.308, 3.307, 3.304, 3.299, 3.298, 3.301, 3.303, 3.305, 3.306, 3.305, 3.304, 3.302, 3.303, 3.306,
+ 3.302, 3.304, 3.306, 3.312, 3.316, 3.317, 3.317, 3.313, 3.311, 3.309, 3.309, 3.311, 3.311, 3.312, 3.309, 3.307, 3.306, 3.306, 3.308, 3.307, 3.304, 3.298, 3.297, 3.302, 3.304, 3.305, 3.306, 3.305, 3.304, 3.299, 3.302, 3.303,
+ 3.299, 3.299, 3.306, 3.309, 3.315, 3.316, 3.316, 3.312, 3.309, 3.308, 3.308, 3.309, 3.311, 3.311, 3.307, 3.305, 3.305, 3.305, 3.306, 3.304, 3.299, 3.297, 3.296, 3.301, 3.302, 3.304, 3.303, 3.302, 3.301, 3.298, 3.299, 3.301,
+ 3.295, 3.297, 3.305, 3.309, 3.311, 3.311, 3.311, 3.309, 3.307, 3.306, 3.305, 3.305, 3.305, 3.305, 3.304, 3.301, 3.301, 3.301, 3.302, 3.299, 3.296, 3.295, 3.295, 3.298, 3.301, 3.302, 3.303, 3.301, 3.299, 3.295, 3.297, 3.299,
+ 3.294, 3.296, 3.299, 3.306, 3.308, 3.309, 3.309, 3.307, 3.307, 3.303, 3.302, 3.301, 3.302, 3.303, 3.302, 3.299, 3.298, 3.299, 3.299, 3.298, 3.295, 3.292, 3.292, 3.293, 3.297, 3.299, 3.299, 3.299, 3.297, 3.294, 3.295, 3.299,
+ 3.291, 3.292, 3.296, 3.302, 3.306, 3.306, 3.307, 3.306, 3.305, 3.303, 3.302, 3.301, 3.301, 3.303, 3.301, 3.299, 3.298, 3.298, 3.298, 3.297, 3.295, 3.292, 3.291, 3.291, 3.295, 3.295, 3.297, 3.298, 3.296, 3.293, 3.292, 3.291,
+ 3.293, 3.292, 3.294, 3.301, 3.303, 3.305, 3.308, 3.306, 3.306, 3.304, 3.304, 3.303, 3.303, 3.303, 3.302, 3.301, 3.299, 3.299, 3.299, 3.299, 3.294, 3.291, 3.289, 3.291, 3.293, 3.294, 3.294, 3.294, 3.294, 3.289, 3.291, 3.291,
+ 3.288, 3.289, 3.291, 3.299, 3.303, 3.304, 3.304, 3.304, 3.304, 3.303, 3.303, 3.304, 3.306, 3.305, 3.303, 3.301, 3.301, 3.298, 3.299, 3.298, 3.293, 3.291, 3.289, 3.291, 3.291, 3.292, 3.291, 3.291, 3.291, 3.285, 3.288, 3.291,
+ 3.285, 3.284, 3.287, 3.291, 3.299, 3.299, 3.299, 3.299, 3.299, 3.301, 3.302, 3.303, 3.303, 3.302, 3.299, 3.298, 3.298, 3.298, 3.298, 3.293, 3.288, 3.286, 3.285, 3.288, 3.288, 3.288, 3.287, 3.285, 3.284, 3.279, 3.281, 3.284,
+ 3.281, 3.282, 3.282, 3.286, 3.291, 3.294, 3.294, 3.295, 3.295, 3.299, 3.301, 3.304, 3.305, 3.299, 3.299, 3.297, 3.298, 3.298, 3.297, 3.292, 3.288, 3.285, 3.283, 3.284, 3.284, 3.286, 3.284, 3.282, 3.279, 3.275, 3.275, 3.278,
+ 3.282, 3.282, 3.284, 3.286, 3.291, 3.294, 3.295, 3.295, 3.298, 3.301, 3.304, 3.306, 3.306, 3.304, 3.303, 3.301, 3.302, 3.299, 3.299, 3.295, 3.289, 3.287, 3.284, 3.288, 3.287, 3.287, 3.285, 3.283, 3.282, 3.278, 3.281, 3.286,
+ 3.292, 3.291, 3.292, 3.298, 3.307, 3.309, 3.308, 3.312, 3.313, 3.317, 3.324, 3.327, 3.327, 3.325, 3.326, 3.322, 3.319, 3.317, 3.317, 3.315, 3.312, 3.305, 3.303, 3.301, 3.299, 3.297, 3.299, 3.293, 3.289, 3.285, 3.287, 3.293
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.602, 1.603, 1.605, 1.608, 1.611, 1.612, 1.612, 1.614, 1.615, 1.616, 1.619, 1.621, 1.621, 1.622, 1.622, 1.624, 1.624, 1.626, 1.625, 1.625, 1.623, 1.622, 1.621, 1.619, 1.618, 1.617, 1.616, 1.614, 1.612, 1.609, 1.609, 1.611,
+ 1.601, 1.602, 1.605, 1.608, 1.611, 1.612, 1.612, 1.613, 1.614, 1.615, 1.617, 1.619, 1.621, 1.621, 1.621, 1.621, 1.622, 1.624, 1.624, 1.624, 1.622, 1.621, 1.619, 1.618, 1.617, 1.616, 1.615, 1.614, 1.612, 1.609, 1.609, 1.609,
+ 1.602, 1.603, 1.605, 1.609, 1.611, 1.613, 1.613, 1.613, 1.613, 1.615, 1.616, 1.618, 1.618, 1.619, 1.619, 1.619, 1.621, 1.621, 1.622, 1.622, 1.619, 1.618, 1.617, 1.617, 1.616, 1.615, 1.615, 1.615, 1.612, 1.609, 1.609, 1.609,
+ 1.604, 1.605, 1.608, 1.612, 1.613, 1.614, 1.614, 1.614, 1.614, 1.614, 1.616, 1.617, 1.618, 1.618, 1.618, 1.619, 1.619, 1.621, 1.622, 1.621, 1.619, 1.618, 1.617, 1.616, 1.616, 1.616, 1.616, 1.615, 1.615, 1.612, 1.611, 1.611,
+ 1.606, 1.608, 1.611, 1.614, 1.615, 1.615, 1.616, 1.616, 1.615, 1.615, 1.617, 1.618, 1.619, 1.619, 1.618, 1.619, 1.621, 1.622, 1.623, 1.622, 1.619, 1.619, 1.617, 1.617, 1.617, 1.618, 1.618, 1.617, 1.617, 1.614, 1.613, 1.613,
+ 1.608, 1.611, 1.614, 1.617, 1.618, 1.618, 1.618, 1.618, 1.618, 1.618, 1.619, 1.621, 1.621, 1.621, 1.621, 1.621, 1.622, 1.623, 1.624, 1.623, 1.622, 1.619, 1.619, 1.618, 1.618, 1.618, 1.618, 1.618, 1.618, 1.617, 1.615, 1.614,
+ 1.611, 1.613, 1.616, 1.618, 1.621, 1.621, 1.619, 1.619, 1.619, 1.619, 1.619, 1.621, 1.622, 1.623, 1.623, 1.623, 1.623, 1.624, 1.626, 1.624, 1.623, 1.621, 1.619, 1.619, 1.619, 1.619, 1.621, 1.621, 1.619, 1.617, 1.616, 1.616,
+ 1.611, 1.613, 1.617, 1.621, 1.622, 1.622, 1.621, 1.619, 1.619, 1.619, 1.621, 1.622, 1.624, 1.624, 1.624, 1.624, 1.625, 1.626, 1.626, 1.624, 1.623, 1.621, 1.621, 1.619, 1.619, 1.619, 1.621, 1.621, 1.621, 1.619, 1.618, 1.617,
+ 1.613, 1.615, 1.618, 1.621, 1.623, 1.623, 1.622, 1.621, 1.619, 1.619, 1.621, 1.622, 1.625, 1.625, 1.626, 1.626, 1.625, 1.626, 1.626, 1.624, 1.622, 1.621, 1.619, 1.619, 1.619, 1.621, 1.622, 1.622, 1.621, 1.621, 1.619, 1.618,
+ 1.614, 1.617, 1.621, 1.623, 1.624, 1.624, 1.623, 1.621, 1.621, 1.621, 1.622, 1.625, 1.627, 1.627, 1.628, 1.628, 1.628, 1.628, 1.627, 1.626, 1.623, 1.621, 1.621, 1.621, 1.621, 1.623, 1.623, 1.623, 1.623, 1.621, 1.619, 1.619,
+ 1.616, 1.617, 1.622, 1.624, 1.625, 1.625, 1.624, 1.623, 1.622, 1.623, 1.624, 1.627, 1.629, 1.631, 1.631, 1.631, 1.631, 1.631, 1.631, 1.628, 1.626, 1.623, 1.622, 1.622, 1.623, 1.623, 1.624, 1.624, 1.624, 1.622, 1.621, 1.621,
+ 1.617, 1.618, 1.623, 1.625, 1.626, 1.626, 1.625, 1.624, 1.623, 1.624, 1.625, 1.629, 1.631, 1.633, 1.634, 1.634, 1.634, 1.633, 1.633, 1.631, 1.628, 1.624, 1.623, 1.623, 1.623, 1.625, 1.625, 1.625, 1.625, 1.623, 1.622, 1.622,
+ 1.617, 1.619, 1.623, 1.626, 1.627, 1.627, 1.626, 1.625, 1.624, 1.624, 1.625, 1.628, 1.632, 1.634, 1.635, 1.635, 1.635, 1.634, 1.633, 1.631, 1.627, 1.624, 1.623, 1.623, 1.623, 1.624, 1.625, 1.626, 1.625, 1.624, 1.623, 1.623,
+ 1.618, 1.619, 1.623, 1.626, 1.627, 1.626, 1.626, 1.625, 1.624, 1.624, 1.625, 1.628, 1.631, 1.634, 1.634, 1.634, 1.634, 1.634, 1.633, 1.631, 1.628, 1.623, 1.622, 1.622, 1.623, 1.624, 1.625, 1.626, 1.626, 1.624, 1.624, 1.623,
+ 1.618, 1.619, 1.623, 1.626, 1.627, 1.627, 1.625, 1.624, 1.624, 1.624, 1.625, 1.628, 1.632, 1.633, 1.634, 1.634, 1.634, 1.633, 1.633, 1.631, 1.627, 1.623, 1.622, 1.622, 1.623, 1.624, 1.624, 1.625, 1.625, 1.624, 1.623, 1.623,
+ 1.619, 1.621, 1.623, 1.626, 1.627, 1.627, 1.626, 1.625, 1.624, 1.624, 1.626, 1.628, 1.632, 1.634, 1.635, 1.634, 1.634, 1.633, 1.633, 1.631, 1.628, 1.625, 1.622, 1.622, 1.622, 1.623, 1.624, 1.625, 1.625, 1.624, 1.623, 1.623,
+ 1.619, 1.621, 1.623, 1.626, 1.627, 1.627, 1.626, 1.625, 1.624, 1.625, 1.627, 1.629, 1.633, 1.635, 1.635, 1.635, 1.635, 1.634, 1.633, 1.631, 1.628, 1.625, 1.623, 1.622, 1.622, 1.623, 1.624, 1.624, 1.624, 1.623, 1.623, 1.622,
+ 1.619, 1.621, 1.624, 1.626, 1.628, 1.628, 1.627, 1.626, 1.625, 1.626, 1.627, 1.629, 1.633, 1.635, 1.635, 1.635, 1.635, 1.634, 1.633, 1.631, 1.628, 1.625, 1.623, 1.623, 1.623, 1.623, 1.624, 1.624, 1.624, 1.622, 1.622, 1.622,
+ 1.619, 1.621, 1.623, 1.626, 1.628, 1.628, 1.627, 1.626, 1.625, 1.626, 1.627, 1.629, 1.632, 1.634, 1.635, 1.635, 1.634, 1.634, 1.632, 1.631, 1.628, 1.624, 1.622, 1.622, 1.622, 1.623, 1.624, 1.624, 1.624, 1.622, 1.621, 1.621,
+ 1.619, 1.621, 1.623, 1.627, 1.628, 1.628, 1.627, 1.627, 1.626, 1.627, 1.628, 1.629, 1.631, 1.633, 1.634, 1.633, 1.633, 1.632, 1.631, 1.631, 1.627, 1.624, 1.622, 1.622, 1.622, 1.622, 1.623, 1.623, 1.623, 1.621, 1.621, 1.621,
+ 1.621, 1.621, 1.624, 1.627, 1.628, 1.628, 1.627, 1.627, 1.627, 1.627, 1.628, 1.631, 1.632, 1.633, 1.633, 1.632, 1.632, 1.632, 1.631, 1.631, 1.628, 1.625, 1.623, 1.622, 1.622, 1.622, 1.623, 1.623, 1.623, 1.621, 1.621, 1.621,
+ 1.621, 1.621, 1.623, 1.627, 1.628, 1.628, 1.628, 1.627, 1.627, 1.628, 1.628, 1.629, 1.631, 1.632, 1.633, 1.632, 1.631, 1.631, 1.631, 1.629, 1.628, 1.625, 1.624, 1.623, 1.623, 1.623, 1.623, 1.623, 1.623, 1.621, 1.621, 1.619,
+ 1.619, 1.621, 1.623, 1.626, 1.628, 1.629, 1.627, 1.627, 1.627, 1.627, 1.628, 1.629, 1.631, 1.631, 1.631, 1.631, 1.631, 1.629, 1.629, 1.628, 1.626, 1.624, 1.623, 1.623, 1.623, 1.622, 1.623, 1.623, 1.622, 1.621, 1.619, 1.619,
+ 1.618, 1.619, 1.623, 1.625, 1.627, 1.627, 1.627, 1.627, 1.626, 1.627, 1.627, 1.628, 1.628, 1.629, 1.628, 1.628, 1.628, 1.628, 1.628, 1.627, 1.625, 1.623, 1.621, 1.621, 1.621, 1.622, 1.622, 1.622, 1.621, 1.619, 1.618, 1.618,
+ 1.618, 1.619, 1.622, 1.624, 1.626, 1.626, 1.626, 1.626, 1.626, 1.626, 1.626, 1.626, 1.627, 1.627, 1.627, 1.626, 1.626, 1.626, 1.626, 1.626, 1.624, 1.622, 1.621, 1.621, 1.619, 1.621, 1.621, 1.621, 1.621, 1.618, 1.617, 1.617,
+ 1.616, 1.618, 1.621, 1.623, 1.624, 1.625, 1.625, 1.625, 1.625, 1.625, 1.626, 1.626, 1.627, 1.627, 1.625, 1.624, 1.624, 1.625, 1.626, 1.625, 1.623, 1.621, 1.619, 1.619, 1.619, 1.619, 1.621, 1.621, 1.619, 1.616, 1.616, 1.616,
+ 1.615, 1.616, 1.619, 1.621, 1.623, 1.624, 1.625, 1.624, 1.624, 1.625, 1.626, 1.627, 1.627, 1.626, 1.626, 1.625, 1.624, 1.625, 1.625, 1.625, 1.623, 1.621, 1.619, 1.619, 1.619, 1.619, 1.619, 1.619, 1.618, 1.616, 1.615, 1.614,
+ 1.614, 1.615, 1.616, 1.621, 1.621, 1.623, 1.624, 1.623, 1.624, 1.624, 1.625, 1.627, 1.627, 1.627, 1.626, 1.625, 1.625, 1.625, 1.625, 1.624, 1.622, 1.621, 1.619, 1.618, 1.617, 1.617, 1.617, 1.617, 1.616, 1.613, 1.612, 1.612,
+ 1.612, 1.612, 1.615, 1.617, 1.621, 1.621, 1.622, 1.622, 1.622, 1.624, 1.625, 1.626, 1.626, 1.626, 1.625, 1.624, 1.624, 1.624, 1.624, 1.623, 1.621, 1.619, 1.618, 1.616, 1.615, 1.615, 1.615, 1.615, 1.613, 1.611, 1.609, 1.609,
+ 1.611, 1.611, 1.612, 1.615, 1.618, 1.619, 1.621, 1.621, 1.622, 1.623, 1.624, 1.626, 1.626, 1.626, 1.625, 1.624, 1.624, 1.624, 1.623, 1.622, 1.621, 1.618, 1.617, 1.615, 1.615, 1.614, 1.614, 1.613, 1.611, 1.609, 1.609, 1.609,
+ 1.611, 1.611, 1.612, 1.615, 1.618, 1.619, 1.621, 1.622, 1.623, 1.625, 1.625, 1.627, 1.627, 1.627, 1.626, 1.626, 1.626, 1.626, 1.624, 1.622, 1.621, 1.618, 1.617, 1.617, 1.616, 1.615, 1.614, 1.613, 1.612, 1.609, 1.609, 1.609,
+ 1.612, 1.612, 1.614, 1.617, 1.619, 1.621, 1.623, 1.624, 1.625, 1.626, 1.627, 1.629, 1.631, 1.629, 1.629, 1.629, 1.628, 1.629, 1.628, 1.626, 1.624, 1.621, 1.621, 1.619, 1.619, 1.618, 1.616, 1.616, 1.613, 1.611, 1.612, 1.612
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 2.977, 2.794, 2.572, 2.375, 2.218, 2.098, 1.995, 1.903, 1.815, 1.731, 1.647, 1.571, 1.516, 1.493, 1.483, 1.481, 1.481, 1.481, 1.489, 1.511, 1.571, 1.643, 1.729, 1.813, 1.901, 1.993, 2.091, 2.208, 2.364, 2.563, 2.785, 2.971,
+ 2.951, 2.736, 2.512, 2.312, 2.153, 2.031, 1.926, 1.824, 1.736, 1.649, 1.571, 1.506, 1.456, 1.419, 1.396, 1.386, 1.386, 1.392, 1.414, 1.451, 1.505, 1.571, 1.648, 1.733, 1.824, 1.922, 2.025, 2.144, 2.301, 2.499, 2.725, 2.939,
+ 2.883, 2.701, 2.471, 2.266, 2.102, 1.974, 1.861, 1.753, 1.649, 1.571, 1.502, 1.425, 1.361, 1.322, 1.298, 1.286, 1.286, 1.294, 1.317, 1.359, 1.424, 1.501, 1.571, 1.648, 1.751, 1.857, 1.968, 2.095, 2.254, 2.458, 2.688, 2.872,
+ 2.788, 2.632, 2.408, 2.209, 2.056, 1.931, 1.816, 1.704, 1.598, 1.503, 1.425, 1.361, 1.322, 1.298, 1.269, 1.245, 1.243, 1.264, 1.293, 1.317, 1.359, 1.424, 1.501, 1.596, 1.702, 1.812, 1.924, 2.046, 2.197, 2.392, 2.619, 2.777,
+ 2.712, 2.541, 2.327, 2.155, 2.023, 1.908, 1.796, 1.684, 1.578, 1.488, 1.412, 1.351, 1.304, 1.269, 1.245, 1.235, 1.235, 1.243, 1.264, 1.301, 1.349, 1.411, 1.485, 1.577, 1.683, 1.791, 1.902, 2.016, 2.143, 2.312, 2.528, 2.702,
+ 2.678, 2.469, 2.269, 2.117, 1.998, 1.885, 1.773, 1.661, 1.556, 1.469, 1.397, 1.336, 1.277, 1.245, 1.234, 1.226, 1.226, 1.232, 1.244, 1.273, 1.332, 1.392, 1.465, 1.555, 1.659, 1.768, 1.879, 1.991, 2.109, 2.256, 2.454, 2.665,
+ 2.659, 2.433, 2.232, 2.081, 1.957, 1.841, 1.722, 1.606, 1.499, 1.409, 1.337, 1.277, 1.232, 1.198, 1.175, 1.166, 1.166, 1.172, 1.193, 1.228, 1.272, 1.334, 1.408, 1.499, 1.608, 1.717, 1.834, 1.951, 2.073, 2.222, 2.419, 2.648,
+ 2.624, 2.411, 2.204, 2.041, 1.909, 1.784, 1.661, 1.539, 1.431, 1.337, 1.277, 1.219, 1.159, 1.118, 1.096, 1.085, 1.085, 1.092, 1.114, 1.156, 1.219, 1.272, 1.337, 1.429, 1.539, 1.658, 1.779, 1.904, 2.033, 2.193, 2.397, 2.613,
+ 2.564, 2.377, 2.169, 2.012, 1.879, 1.749, 1.623, 1.501, 1.392, 1.299, 1.227, 1.169, 1.125, 1.097, 1.079, 1.063, 1.063, 1.076, 1.093, 1.124, 1.168, 1.227, 1.302, 1.392, 1.501, 1.622, 1.746, 1.875, 2.005, 2.161, 2.362, 2.554,
+ 2.515, 2.325, 2.138, 1.997, 1.869, 1.742, 1.617, 1.501, 1.392, 1.299, 1.227, 1.169, 1.125, 1.095, 1.079, 1.063, 1.063, 1.076, 1.093, 1.124, 1.168, 1.227, 1.302, 1.392, 1.499, 1.615, 1.741, 1.867, 1.991, 2.132, 2.316, 2.505,
+ 2.498, 2.289, 2.121, 1.988, 1.867, 1.741, 1.616, 1.499, 1.391, 1.299, 1.227, 1.169, 1.125, 1.095, 1.082, 1.065, 1.064, 1.079, 1.093, 1.124, 1.168, 1.227, 1.302, 1.392, 1.498, 1.614, 1.738, 1.864, 1.985, 2.116, 2.281, 2.486,
+ 2.498, 2.272, 2.105, 1.971, 1.846, 1.718, 1.592, 1.475, 1.371, 1.279, 1.211, 1.156, 1.112, 1.083, 1.064, 1.055, 1.055, 1.062, 1.081, 1.109, 1.154, 1.212, 1.285, 1.372, 1.473, 1.589, 1.712, 1.843, 1.967, 2.101, 2.263, 2.486,
+ 2.497, 2.267, 2.088, 1.946, 1.813, 1.679, 1.549, 1.431, 1.324, 1.231, 1.159, 1.114, 1.079, 1.035, 1.008, 1.001, 1.001, 1.008, 1.032, 1.076, 1.111, 1.161, 1.235, 1.324, 1.429, 1.547, 1.677, 1.811, 1.941, 2.082, 2.257, 2.484,
+ 2.476, 2.262, 2.077, 1.933, 1.802, 1.671, 1.541, 1.421, 1.317, 1.227, 1.157, 1.101, 1.059, 1.027, 1.004, 1.001, 1.001, 1.004, 1.024, 1.054, 1.098, 1.157, 1.229, 1.317, 1.419, 1.537, 1.667, 1.799, 1.931, 2.071, 2.251, 2.463,
+ 2.455, 2.246, 2.076, 1.933, 1.802, 1.671, 1.541, 1.421, 1.317, 1.227, 1.157, 1.103, 1.064, 1.035, 1.011, 1.003, 1.003, 1.009, 1.032, 1.062, 1.099, 1.157, 1.229, 1.317, 1.419, 1.537, 1.667, 1.799, 1.931, 2.071, 2.236, 2.446,
+ 2.454, 2.239, 2.077, 1.946, 1.817, 1.686, 1.561, 1.444, 1.342, 1.255, 1.189, 1.136, 1.093, 1.059, 1.039, 1.038, 1.038, 1.039, 1.056, 1.091, 1.131, 1.187, 1.258, 1.341, 1.441, 1.556, 1.683, 1.813, 1.939, 2.071, 2.229, 2.445,
+ 2.454, 2.239, 2.079, 1.946, 1.817, 1.686, 1.561, 1.444, 1.342, 1.255, 1.189, 1.136, 1.093, 1.062, 1.039, 1.038, 1.038, 1.039, 1.059, 1.091, 1.131, 1.187, 1.258, 1.341, 1.441, 1.556, 1.683, 1.813, 1.939, 2.071, 2.229, 2.445,
+ 2.458, 2.251, 2.079, 1.941, 1.807, 1.672, 1.543, 1.424, 1.319, 1.231, 1.162, 1.107, 1.065, 1.045, 1.018, 1.003, 1.003, 1.017, 1.044, 1.062, 1.103, 1.159, 1.232, 1.317, 1.419, 1.539, 1.669, 1.802, 1.933, 2.072, 2.239, 2.445,
+ 2.479, 2.265, 2.085, 1.941, 1.807, 1.672, 1.543, 1.424, 1.319, 1.231, 1.162, 1.107, 1.064, 1.031, 1.017, 1.003, 1.003, 1.017, 1.031, 1.059, 1.103, 1.159, 1.232, 1.317, 1.419, 1.539, 1.669, 1.802, 1.933, 2.076, 2.252, 2.468,
+ 2.504, 2.277, 2.099, 1.958, 1.826, 1.695, 1.565, 1.445, 1.338, 1.249, 1.181, 1.129, 1.095, 1.051, 1.027, 1.018, 1.018, 1.028, 1.049, 1.092, 1.127, 1.179, 1.252, 1.339, 1.442, 1.561, 1.691, 1.822, 1.949, 2.089, 2.263, 2.492,
+ 2.509, 2.288, 2.118, 1.982, 1.858, 1.728, 1.604, 1.486, 1.381, 1.293, 1.227, 1.173, 1.127, 1.098, 1.076, 1.067, 1.067, 1.077, 1.097, 1.121, 1.168, 1.225, 1.296, 1.382, 1.483, 1.598, 1.723, 1.852, 1.975, 2.107, 2.274, 2.496,
+ 2.515, 2.312, 2.139, 2.002, 1.877, 1.751, 1.629, 1.512, 1.405, 1.318, 1.248, 1.193, 1.149, 1.118, 1.096, 1.085, 1.085, 1.095, 1.114, 1.145, 1.188, 1.246, 1.319, 1.405, 1.508, 1.623, 1.747, 1.873, 1.995, 2.127, 2.297, 2.501,
+ 2.541, 2.351, 2.161, 2.016, 1.888, 1.762, 1.638, 1.519, 1.411, 1.319, 1.251, 1.197, 1.154, 1.121, 1.099, 1.091, 1.091, 1.099, 1.119, 1.148, 1.192, 1.248, 1.321, 1.411, 1.515, 1.633, 1.758, 1.884, 2.009, 2.149, 2.334, 2.526,
+ 2.588, 2.394, 2.193, 2.036, 1.905, 1.779, 1.656, 1.537, 1.426, 1.329, 1.255, 1.198, 1.161, 1.139, 1.118, 1.096, 1.095, 1.114, 1.138, 1.158, 1.195, 1.256, 1.333, 1.425, 1.533, 1.651, 1.777, 1.902, 2.028, 2.181, 2.378, 2.571,
+ 2.639, 2.431, 2.226, 2.067, 1.937, 1.816, 1.695, 1.577, 1.467, 1.368, 1.298, 1.253, 1.198, 1.161, 1.139, 1.129, 1.129, 1.138, 1.158, 1.195, 1.245, 1.296, 1.374, 1.468, 1.574, 1.692, 1.812, 1.934, 2.059, 2.216, 2.418, 2.626,
+ 2.679, 2.465, 2.261, 2.104, 1.979, 1.862, 1.746, 1.631, 1.522, 1.426, 1.352, 1.297, 1.254, 1.221, 1.201, 1.189, 1.189, 1.198, 1.217, 1.246, 1.293, 1.354, 1.433, 1.526, 1.631, 1.744, 1.859, 1.975, 2.097, 2.252, 2.452, 2.667,
+ 2.711, 2.511, 2.302, 2.141, 2.018, 1.903, 1.791, 1.678, 1.571, 1.475, 1.401, 1.343, 1.297, 1.268, 1.247, 1.236, 1.236, 1.244, 1.263, 1.291, 1.341, 1.403, 1.484, 1.575, 1.679, 1.791, 1.902, 2.012, 2.136, 2.295, 2.501, 2.698,
+ 2.759, 2.582, 2.363, 2.184, 2.049, 1.935, 1.824, 1.714, 1.608, 1.511, 1.431, 1.371, 1.325, 1.295, 1.271, 1.259, 1.259, 1.266, 1.291, 1.318, 1.369, 1.436, 1.517, 1.611, 1.716, 1.825, 1.933, 2.047, 2.179, 2.351, 2.571, 2.748,
+ 2.833, 2.662, 2.433, 2.239, 2.089, 1.968, 1.859, 1.752, 1.646, 1.549, 1.468, 1.411, 1.369, 1.325, 1.296, 1.283, 1.283, 1.292, 1.318, 1.366, 1.411, 1.472, 1.555, 1.651, 1.755, 1.861, 1.969, 2.086, 2.231, 2.422, 2.648, 2.821,
+ 2.909, 2.729, 2.499, 2.298, 2.141, 2.016, 1.907, 1.805, 1.703, 1.611, 1.539, 1.468, 1.411, 1.375, 1.351, 1.339, 1.339, 1.348, 1.372, 1.411, 1.472, 1.543, 1.613, 1.708, 1.807, 1.909, 2.014, 2.135, 2.288, 2.487, 2.716, 2.897,
+ 2.981, 2.789, 2.563, 2.358, 2.197, 2.071, 1.968, 1.868, 1.774, 1.684, 1.607, 1.541, 1.489, 1.453, 1.428, 1.417, 1.417, 1.427, 1.451, 1.489, 1.543, 1.611, 1.686, 1.776, 1.871, 1.966, 2.069, 2.191, 2.349, 2.551, 2.775, 2.964,
+ 3.041, 2.856, 2.629, 2.422, 2.252, 2.127, 2.021, 1.927, 1.834, 1.748, 1.672, 1.604, 1.541, 1.495, 1.483, 1.483, 1.483, 1.483, 1.496, 1.543, 1.608, 1.673, 1.749, 1.835, 1.926, 2.019, 2.122, 2.249, 2.411, 2.614, 2.839, 3.026
+ ],
+ "sigma": 0.00163,
+ "sigma_Cb": 0.0011
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2498,
+ "ccm":
+ [
+ 1.14912, 0.28638, -0.43551,
+ -0.49691, 1.60391, -0.10701,
+ -0.10513, -1.09534, 2.20047
+ ]
+ },
+ {
+ "ct": 2821,
+ "ccm":
+ [
+ 1.18251, 0.15501, -0.33752,
+ -0.44304, 1.58495, -0.14191,
+ -0.05077, -0.96422, 2.01498
+ ]
+ },
+ {
+ "ct": 2925,
+ "ccm":
+ [
+ 1.18668, 0.00195, -0.18864,
+ -0.41617, 1.50514, -0.08897,
+ -0.02675, -0.91143, 1.93818
+ ]
+ },
+ {
+ "ct": 2926,
+ "ccm":
+ [
+ 1.50948, -0.44421, -0.06527,
+ -0.37241, 1.41726, -0.04486,
+ 0.07098, -0.84694, 1.77596
+ ]
+ },
+ {
+ "ct": 2951,
+ "ccm":
+ [
+ 1.52743, -0.47333, -0.05411,
+ -0.36485, 1.40764, -0.04279,
+ 0.08672, -0.90479, 1.81807
+ ]
+ },
+ {
+ "ct": 2954,
+ "ccm":
+ [
+ 1.51683, -0.46841, -0.04841,
+ -0.36288, 1.39914, -0.03625,
+ 0.06421, -0.82034, 1.75613
+ ]
+ },
+ {
+ "ct": 3578,
+ "ccm":
+ [
+ 1.59888, -0.59105, -0.00784,
+ -0.29366, 1.32037, -0.02671,
+ 0.06627, -0.76465, 1.69838
+ ]
+ },
+ {
+ "ct": 3717,
+ "ccm":
+ [
+ 1.59063, -0.58059, -0.01003,
+ -0.29583, 1.32715, -0.03132,
+ 0.03613, -0.67431, 1.63817
+ ]
+ },
+ {
+ "ct": 3784,
+ "ccm":
+ [
+ 1.59379, -0.58861, -0.00517,
+ -0.29178, 1.33292, -0.04115,
+ 0.03541, -0.66162, 1.62622
+ ]
+ },
+ {
+ "ct": 4485,
+ "ccm":
+ [
+ 1.40761, -0.34561, -0.06201,
+ -0.32388, 1.57221, -0.24832,
+ -0.01014, -0.63427, 1.64441
+ ]
+ },
+ {
+ "ct": 4615,
+ "ccm":
+ [
+ 1.41537, -0.35832, -0.05705,
+ -0.31429, 1.56019, -0.24591,
+ -0.01761, -0.61859, 1.63621
+ ]
+ },
+ {
+ "ct": 4671,
+ "ccm":
+ [
+ 1.42941, -0.38178, -0.04764,
+ -0.31421, 1.55925, -0.24504,
+ -0.01141, -0.62987, 1.64129
+ ]
+ },
+ {
+ "ct": 5753,
+ "ccm":
+ [
+ 1.64549, -0.63329, -0.01221,
+ -0.22431, 1.36423, -0.13992,
+ -0.00831, -0.55373, 1.56204
+ ]
+ },
+ {
+ "ct": 5773,
+ "ccm":
+ [
+ 1.63668, -0.63557, -0.00111,
+ -0.21919, 1.36234, -0.14315,
+ -0.00399, -0.57428, 1.57827
+ ]
+ },
+ {
+ "ct": 7433,
+ "ccm":
+ [
+ 1.36007, -0.09277, -0.26729,
+ -0.36886, 2.09249, -0.72363,
+ -0.12573, -0.76761, 1.89334
+ ]
+ },
+ {
+ "ct": 55792,
+ "ccm":
+ [
+ 1.65091, -0.63689, -0.01401,
+ -0.22277, 1.35752, -0.13475,
+ -0.00943, -0.55091, 1.56033
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.af":
+ {
+ "ranges":
+ {
+ "normal":
+ {
+ "min": 0.0,
+ "max": 12.0,
+ "default": 1.0
+ },
+ "macro":
+ {
+ "min": 3.0,
+ "max": 15.0,
+ "default": 4.0
+ }
+ },
+ "speeds":
+ {
+ "normal":
+ {
+ "step_coarse": 1.0,
+ "step_fine": 0.25,
+ "contrast_ratio": 0.75,
+ "pdaf_gain": -0.02,
+ "pdaf_squelch": 0.125,
+ "max_slew": 2.0,
+ "pdaf_frames": 20,
+ "dropout_frames": 6,
+ "step_frames": 4
+ }
+ },
+ "conf_epsilon": 8,
+ "conf_thresh": 16,
+ "conf_clip": 512,
+ "skip_frames": 5,
+ "map": [ 0.0, 445, 15.0, 925 ]
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx708_wide.json b/src/ipa/rpi/pisp/data/imx708_wide.json
new file mode 100644
index 00000000..9fff05d9
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx708_wide.json
@@ -0,0 +1,1293 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 41985,
+ "reference_gain": 1.12,
+ "reference_aperture": 1.0,
+ "reference_lux": 810,
+ "reference_Y": 13859
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.9
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 206,
+ "slope": 0.00324
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2868.0, 0.6419, 0.3613,
+ 3603.0, 0.5374, 0.4787,
+ 4620.0, 0.4482, 0.5813,
+ 5901.0, 0.3883, 0.6514,
+ 7610.0, 0.3279, 0.7232
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.01908,
+ "transverse_neg": 0.01376
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.65,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 1.717, 1.712, 1.703, 1.692, 1.674, 1.653, 1.638, 1.624, 1.613, 1.601, 1.589, 1.579, 1.575, 1.573, 1.571, 1.571, 1.571, 1.571, 1.572, 1.577, 1.583, 1.593, 1.605, 1.618, 1.636, 1.653, 1.677, 1.699, 1.715, 1.722, 1.731, 1.733,
+ 1.714, 1.706, 1.696, 1.678, 1.658, 1.639, 1.627, 1.614, 1.602, 1.591, 1.579, 1.572, 1.569, 1.566, 1.565, 1.564, 1.564, 1.565, 1.567, 1.571, 1.578, 1.585, 1.595, 1.607, 1.622, 1.641, 1.661, 1.685, 1.706, 1.717, 1.724, 1.732,
+ 1.708, 1.698, 1.688, 1.667, 1.647, 1.629, 1.619, 1.606, 1.593, 1.581, 1.572, 1.565, 1.561, 1.559, 1.559, 1.559, 1.559, 1.561, 1.562, 1.566, 1.571, 1.577, 1.587, 1.598, 1.612, 1.629, 1.649, 1.674, 1.697, 1.713, 1.721, 1.728,
+ 1.706, 1.695, 1.681, 1.655, 1.636, 1.622, 1.613, 1.597, 1.585, 1.572, 1.564, 1.559, 1.558, 1.556, 1.555, 1.555, 1.556, 1.556, 1.558, 1.561, 1.566, 1.571, 1.578, 1.591, 1.605, 1.619, 1.638, 1.662, 1.691, 1.708, 1.719, 1.726,
+ 1.706, 1.692, 1.675, 1.649, 1.629, 1.615, 1.607, 1.592, 1.575, 1.565, 1.559, 1.554, 1.552, 1.551, 1.551, 1.551, 1.551, 1.552, 1.554, 1.557, 1.561, 1.566, 1.573, 1.582, 1.596, 1.611, 1.627, 1.652, 1.681, 1.705, 1.717, 1.724,
+ 1.703, 1.686, 1.664, 1.639, 1.625, 1.612, 1.599, 1.585, 1.569, 1.559, 1.554, 1.549, 1.548, 1.548, 1.546, 1.546, 1.546, 1.547, 1.549, 1.553, 1.557, 1.563, 1.569, 1.576, 1.591, 1.603, 1.621, 1.644, 1.674, 1.698, 1.714, 1.724,
+ 1.702, 1.681, 1.659, 1.635, 1.621, 1.607, 1.594, 1.579, 1.565, 1.554, 1.549, 1.546, 1.544, 1.543, 1.543, 1.542, 1.543, 1.543, 1.544, 1.549, 1.553, 1.558, 1.564, 1.572, 1.584, 1.599, 1.614, 1.639, 1.667, 1.695, 1.712, 1.724,
+ 1.697, 1.678, 1.655, 1.631, 1.616, 1.602, 1.589, 1.575, 1.559, 1.551, 1.545, 1.543, 1.542, 1.542, 1.541, 1.539, 1.539, 1.539, 1.542, 1.544, 1.551, 1.555, 1.562, 1.571, 1.579, 1.594, 1.611, 1.631, 1.661, 1.691, 1.712, 1.724,
+ 1.695, 1.674, 1.651, 1.629, 1.615, 1.599, 1.584, 1.568, 1.554, 1.545, 1.542, 1.541, 1.539, 1.539, 1.538, 1.538, 1.538, 1.539, 1.539, 1.543, 1.548, 1.554, 1.559, 1.568, 1.576, 1.592, 1.608, 1.629, 1.655, 1.689, 1.709, 1.723,
+ 1.691, 1.671, 1.648, 1.627, 1.613, 1.597, 1.581, 1.564, 1.551, 1.543, 1.539, 1.538, 1.538, 1.537, 1.536, 1.535, 1.536, 1.538, 1.539, 1.542, 1.546, 1.551, 1.558, 1.564, 1.575, 1.588, 1.604, 1.627, 1.654, 1.686, 1.709, 1.724,
+ 1.689, 1.667, 1.643, 1.626, 1.612, 1.594, 1.579, 1.559, 1.549, 1.541, 1.536, 1.535, 1.535, 1.535, 1.534, 1.533, 1.534, 1.536, 1.538, 1.541, 1.545, 1.549, 1.555, 1.563, 1.573, 1.585, 1.602, 1.624, 1.651, 1.683, 1.709, 1.725,
+ 1.686, 1.665, 1.641, 1.623, 1.609, 1.594, 1.576, 1.559, 1.546, 1.538, 1.535, 1.534, 1.533, 1.532, 1.531, 1.531, 1.532, 1.534, 1.537, 1.539, 1.544, 1.549, 1.554, 1.562, 1.572, 1.585, 1.601, 1.622, 1.651, 1.682, 1.711, 1.726,
+ 1.686, 1.661, 1.639, 1.623, 1.609, 1.592, 1.574, 1.557, 1.545, 1.537, 1.534, 1.533, 1.532, 1.531, 1.529, 1.528, 1.529, 1.532, 1.537, 1.539, 1.542, 1.548, 1.553, 1.562, 1.571, 1.584, 1.601, 1.621, 1.649, 1.682, 1.711, 1.726,
+ 1.685, 1.661, 1.638, 1.624, 1.609, 1.592, 1.574, 1.557, 1.544, 1.536, 1.533, 1.532, 1.531, 1.529, 1.527, 1.522, 1.526, 1.531, 1.536, 1.539, 1.542, 1.547, 1.553, 1.562, 1.571, 1.583, 1.601, 1.621, 1.648, 1.682, 1.711, 1.726,
+ 1.684, 1.658, 1.638, 1.624, 1.611, 1.592, 1.573, 1.556, 1.543, 1.536, 1.532, 1.531, 1.529, 1.528, 1.522, 1.517, 1.519, 1.527, 1.535, 1.539, 1.541, 1.547, 1.553, 1.562, 1.571, 1.583, 1.601, 1.622, 1.647, 1.681, 1.711, 1.727,
+ 1.681, 1.658, 1.641, 1.624, 1.611, 1.593, 1.573, 1.555, 1.541, 1.535, 1.532, 1.529, 1.529, 1.527, 1.517, 1.506, 1.506, 1.522, 1.534, 1.538, 1.541, 1.546, 1.552, 1.562, 1.569, 1.583, 1.601, 1.622, 1.646, 1.679, 1.709, 1.728,
+ 1.679, 1.656, 1.639, 1.624, 1.611, 1.595, 1.575, 1.556, 1.541, 1.534, 1.531, 1.529, 1.529, 1.527, 1.517, 1.507, 1.507, 1.522, 1.533, 1.538, 1.539, 1.546, 1.552, 1.561, 1.569, 1.584, 1.601, 1.622, 1.647, 1.681, 1.709, 1.726,
+ 1.678, 1.656, 1.638, 1.625, 1.612, 1.597, 1.577, 1.557, 1.542, 1.534, 1.529, 1.529, 1.528, 1.527, 1.522, 1.516, 1.519, 1.525, 1.533, 1.537, 1.539, 1.545, 1.552, 1.561, 1.571, 1.584, 1.601, 1.623, 1.649, 1.681, 1.709, 1.726,
+ 1.679, 1.654, 1.639, 1.626, 1.613, 1.598, 1.578, 1.558, 1.543, 1.534, 1.529, 1.529, 1.529, 1.528, 1.527, 1.522, 1.525, 1.528, 1.533, 1.536, 1.539, 1.546, 1.553, 1.561, 1.571, 1.586, 1.602, 1.623, 1.651, 1.683, 1.712, 1.726,
+ 1.677, 1.655, 1.641, 1.628, 1.615, 1.599, 1.581, 1.562, 1.545, 1.535, 1.531, 1.529, 1.529, 1.528, 1.527, 1.527, 1.528, 1.531, 1.533, 1.536, 1.539, 1.545, 1.552, 1.561, 1.572, 1.588, 1.607, 1.626, 1.654, 1.686, 1.716, 1.729,
+ 1.676, 1.655, 1.642, 1.629, 1.617, 1.602, 1.586, 1.564, 1.546, 1.536, 1.531, 1.529, 1.529, 1.529, 1.529, 1.529, 1.529, 1.532, 1.534, 1.536, 1.539, 1.547, 1.553, 1.563, 1.576, 1.591, 1.609, 1.627, 1.655, 1.688, 1.716, 1.729,
+ 1.676, 1.658, 1.641, 1.631, 1.617, 1.605, 1.588, 1.569, 1.553, 1.539, 1.532, 1.531, 1.529, 1.529, 1.529, 1.529, 1.531, 1.532, 1.534, 1.537, 1.541, 1.547, 1.553, 1.564, 1.578, 1.594, 1.613, 1.632, 1.659, 1.691, 1.717, 1.728,
+ 1.676, 1.658, 1.642, 1.631, 1.619, 1.608, 1.592, 1.575, 1.556, 1.542, 1.533, 1.531, 1.529, 1.529, 1.529, 1.531, 1.531, 1.532, 1.534, 1.537, 1.542, 1.548, 1.556, 1.567, 1.582, 1.598, 1.616, 1.638, 1.661, 1.693, 1.717, 1.729,
+ 1.678, 1.661, 1.644, 1.632, 1.621, 1.611, 1.596, 1.579, 1.561, 1.546, 1.536, 1.532, 1.531, 1.531, 1.531, 1.531, 1.532, 1.533, 1.535, 1.538, 1.544, 1.549, 1.559, 1.569, 1.587, 1.604, 1.618, 1.639, 1.669, 1.697, 1.718, 1.731,
+ 1.679, 1.662, 1.648, 1.635, 1.625, 1.615, 1.602, 1.586, 1.569, 1.552, 1.541, 1.535, 1.532, 1.532, 1.531, 1.532, 1.533, 1.534, 1.537, 1.541, 1.546, 1.552, 1.562, 1.576, 1.592, 1.608, 1.622, 1.647, 1.673, 1.703, 1.721, 1.734,
+ 1.684, 1.664, 1.649, 1.637, 1.627, 1.618, 1.606, 1.593, 1.576, 1.561, 1.547, 1.539, 1.535, 1.533, 1.533, 1.533, 1.534, 1.536, 1.539, 1.543, 1.549, 1.555, 1.568, 1.583, 1.596, 1.612, 1.629, 1.651, 1.681, 1.706, 1.723, 1.734,
+ 1.689, 1.669, 1.649, 1.639, 1.629, 1.621, 1.609, 1.597, 1.585, 1.567, 1.554, 1.546, 1.539, 1.536, 1.535, 1.535, 1.537, 1.538, 1.542, 1.546, 1.553, 1.562, 1.572, 1.589, 1.603, 1.619, 1.635, 1.658, 1.686, 1.708, 1.726, 1.736,
+ 1.692, 1.673, 1.655, 1.644, 1.634, 1.624, 1.614, 1.604, 1.592, 1.577, 1.566, 1.554, 1.546, 1.542, 1.538, 1.538, 1.539, 1.542, 1.546, 1.552, 1.559, 1.568, 1.581, 1.596, 1.609, 1.625, 1.642, 1.664, 1.693, 1.714, 1.727, 1.736,
+ 1.695, 1.679, 1.662, 1.647, 1.638, 1.631, 1.623, 1.612, 1.601, 1.589, 1.577, 1.565, 1.555, 1.549, 1.546, 1.545, 1.546, 1.548, 1.552, 1.559, 1.568, 1.579, 1.593, 1.604, 1.618, 1.632, 1.648, 1.676, 1.701, 1.718, 1.728, 1.739,
+ 1.699, 1.684, 1.667, 1.654, 1.644, 1.635, 1.629, 1.621, 1.609, 1.599, 1.589, 1.578, 1.568, 1.559, 1.556, 1.554, 1.554, 1.557, 1.563, 1.569, 1.578, 1.589, 1.599, 1.612, 1.625, 1.641, 1.661, 1.685, 1.707, 1.722, 1.734, 1.742,
+ 1.703, 1.691, 1.672, 1.658, 1.648, 1.639, 1.634, 1.628, 1.618, 1.606, 1.598, 1.589, 1.579, 1.573, 1.568, 1.567, 1.567, 1.568, 1.571, 1.578, 1.587, 1.597, 1.607, 1.618, 1.632, 1.651, 1.672, 1.694, 1.715, 1.728, 1.737, 1.742,
+ 1.707, 1.691, 1.676, 1.662, 1.651, 1.643, 1.638, 1.631, 1.622, 1.614, 1.604, 1.596, 1.589, 1.579, 1.575, 1.573, 1.573, 1.574, 1.578, 1.586, 1.589, 1.598, 1.609, 1.625, 1.638, 1.657, 1.679, 1.701, 1.719, 1.728, 1.738, 1.742
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 2.939, 2.935, 2.916, 2.895, 2.856, 2.825, 2.797, 2.777, 2.761, 2.741, 2.726, 2.709, 2.707, 2.704, 2.702, 2.702, 2.703, 2.706, 2.708, 2.709, 2.719, 2.735, 2.753, 2.776, 2.801, 2.832, 2.874, 2.915, 2.939, 2.943, 2.953, 2.961,
+ 2.936, 2.923, 2.901, 2.863, 2.829, 2.801, 2.781, 2.763, 2.743, 2.732, 2.712, 2.701, 2.696, 2.692, 2.691, 2.691, 2.693, 2.694, 2.696, 2.701, 2.709, 2.725, 2.741, 2.758, 2.779, 2.811, 2.838, 2.879, 2.919, 2.939, 2.948, 2.959,
+ 2.929, 2.909, 2.887, 2.847, 2.808, 2.783, 2.765, 2.748, 2.732, 2.713, 2.699, 2.691, 2.687, 2.686, 2.685, 2.685, 2.687, 2.689, 2.691, 2.694, 2.701, 2.709, 2.725, 2.745, 2.763, 2.786, 2.818, 2.863, 2.907, 2.933, 2.941, 2.955,
+ 2.929, 2.903, 2.875, 2.825, 2.791, 2.769, 2.755, 2.737, 2.718, 2.701, 2.688, 2.683, 2.681, 2.679, 2.681, 2.679, 2.681, 2.682, 2.685, 2.689, 2.694, 2.701, 2.711, 2.737, 2.754, 2.772, 2.803, 2.844, 2.894, 2.931, 2.939, 2.953,
+ 2.926, 2.895, 2.862, 2.816, 2.782, 2.759, 2.744, 2.727, 2.709, 2.691, 2.679, 2.673, 2.671, 2.669, 2.669, 2.669, 2.671, 2.674, 2.678, 2.681, 2.685, 2.694, 2.707, 2.725, 2.739, 2.762, 2.786, 2.829, 2.879, 2.919, 2.942, 2.952,
+ 2.919, 2.886, 2.846, 2.797, 2.772, 2.751, 2.737, 2.719, 2.694, 2.679, 2.672, 2.666, 2.664, 2.661, 2.659, 2.658, 2.661, 2.664, 2.669, 2.673, 2.678, 2.685, 2.696, 2.715, 2.728, 2.749, 2.774, 2.808, 2.866, 2.909, 2.936, 2.951,
+ 2.904, 2.877, 2.835, 2.789, 2.763, 2.744, 2.728, 2.712, 2.686, 2.672, 2.664, 2.657, 2.654, 2.654, 2.652, 2.653, 2.654, 2.657, 2.661, 2.666, 2.672, 2.678, 2.688, 2.703, 2.721, 2.742, 2.762, 2.797, 2.851, 2.902, 2.928, 2.949,
+ 2.901, 2.869, 2.825, 2.781, 2.756, 2.738, 2.721, 2.698, 2.679, 2.665, 2.656, 2.652, 2.649, 2.648, 2.648, 2.648, 2.649, 2.651, 2.654, 2.659, 2.667, 2.675, 2.683, 2.699, 2.711, 2.736, 2.754, 2.789, 2.838, 2.896, 2.926, 2.948,
+ 2.899, 2.862, 2.815, 2.774, 2.752, 2.734, 2.717, 2.689, 2.669, 2.658, 2.651, 2.646, 2.645, 2.643, 2.643, 2.644, 2.645, 2.646, 2.649, 2.654, 2.661, 2.669, 2.681, 2.693, 2.707, 2.729, 2.751, 2.782, 2.834, 2.887, 2.924, 2.947,
+ 2.898, 2.853, 2.812, 2.771, 2.751, 2.731, 2.711, 2.686, 2.663, 2.653, 2.646, 2.642, 2.641, 2.642, 2.642, 2.641, 2.641, 2.641, 2.646, 2.651, 2.657, 2.667, 2.678, 2.693, 2.705, 2.728, 2.746, 2.781, 2.829, 2.885, 2.924, 2.951,
+ 2.896, 2.851, 2.807, 2.771, 2.752, 2.729, 2.709, 2.681, 2.661, 2.649, 2.643, 2.641, 2.639, 2.639, 2.638, 2.636, 2.637, 2.638, 2.644, 2.649, 2.657, 2.666, 2.676, 2.688, 2.705, 2.725, 2.745, 2.777, 2.827, 2.884, 2.927, 2.951,
+ 2.891, 2.846, 2.803, 2.771, 2.749, 2.728, 2.706, 2.677, 2.658, 2.647, 2.641, 2.637, 2.637, 2.636, 2.636, 2.633, 2.632, 2.635, 2.643, 2.649, 2.656, 2.665, 2.675, 2.688, 2.704, 2.719, 2.744, 2.776, 2.822, 2.881, 2.927, 2.958,
+ 2.887, 2.841, 2.797, 2.769, 2.749, 2.729, 2.704, 2.674, 2.655, 2.645, 2.638, 2.635, 2.633, 2.632, 2.631, 2.625, 2.627, 2.631, 2.639, 2.649, 2.654, 2.662, 2.673, 2.686, 2.701, 2.718, 2.742, 2.773, 2.822, 2.881, 2.926, 2.958,
+ 2.883, 2.837, 2.796, 2.769, 2.749, 2.729, 2.701, 2.673, 2.653, 2.641, 2.636, 2.632, 2.631, 2.629, 2.623, 2.612, 2.619, 2.627, 2.637, 2.648, 2.652, 2.659, 2.671, 2.688, 2.699, 2.719, 2.742, 2.774, 2.821, 2.882, 2.927, 2.961,
+ 2.881, 2.832, 2.795, 2.769, 2.751, 2.729, 2.701, 2.672, 2.652, 2.639, 2.633, 2.631, 2.628, 2.625, 2.611, 2.599, 2.607, 2.619, 2.635, 2.644, 2.652, 2.659, 2.669, 2.686, 2.698, 2.719, 2.743, 2.775, 2.822, 2.881, 2.926, 2.961,
+ 2.879, 2.829, 2.793, 2.771, 2.751, 2.731, 2.701, 2.672, 2.651, 2.639, 2.632, 2.628, 2.626, 2.621, 2.601, 2.581, 2.581, 2.611, 2.631, 2.642, 2.648, 2.657, 2.669, 2.685, 2.699, 2.721, 2.743, 2.776, 2.819, 2.879, 2.927, 2.961,
+ 2.876, 2.829, 2.796, 2.773, 2.752, 2.731, 2.705, 2.672, 2.651, 2.637, 2.631, 2.627, 2.625, 2.619, 2.601, 2.581, 2.581, 2.611, 2.629, 2.641, 2.647, 2.658, 2.669, 2.685, 2.697, 2.721, 2.746, 2.777, 2.822, 2.881, 2.929, 2.964,
+ 2.874, 2.827, 2.796, 2.775, 2.755, 2.733, 2.708, 2.674, 2.649, 2.635, 2.629, 2.626, 2.624, 2.621, 2.609, 2.601, 2.606, 2.615, 2.629, 2.638, 2.645, 2.657, 2.669, 2.682, 2.699, 2.722, 2.747, 2.778, 2.822, 2.881, 2.931, 2.964,
+ 2.871, 2.827, 2.797, 2.776, 2.761, 2.734, 2.711, 2.679, 2.651, 2.636, 2.628, 2.626, 2.624, 2.621, 2.618, 2.611, 2.614, 2.619, 2.628, 2.639, 2.644, 2.657, 2.668, 2.683, 2.698, 2.723, 2.749, 2.782, 2.824, 2.882, 2.933, 2.965,
+ 2.869, 2.825, 2.797, 2.777, 2.765, 2.741, 2.718, 2.683, 2.655, 2.638, 2.627, 2.625, 2.624, 2.623, 2.621, 2.618, 2.618, 2.624, 2.629, 2.639, 2.644, 2.657, 2.669, 2.684, 2.701, 2.725, 2.755, 2.782, 2.829, 2.887, 2.937, 2.965,
+ 2.871, 2.826, 2.799, 2.776, 2.765, 2.744, 2.723, 2.689, 2.659, 2.639, 2.629, 2.626, 2.626, 2.624, 2.624, 2.622, 2.624, 2.627, 2.632, 2.639, 2.646, 2.657, 2.671, 2.687, 2.706, 2.732, 2.757, 2.789, 2.836, 2.893, 2.941, 2.965,
+ 2.869, 2.831, 2.803, 2.778, 2.766, 2.748, 2.729, 2.697, 2.667, 2.645, 2.632, 2.628, 2.625, 2.625, 2.625, 2.625, 2.627, 2.629, 2.634, 2.638, 2.648, 2.661, 2.673, 2.688, 2.711, 2.741, 2.762, 2.797, 2.843, 2.901, 2.943, 2.964,
+ 2.872, 2.837, 2.802, 2.781, 2.768, 2.753, 2.734, 2.702, 2.674, 2.647, 2.634, 2.629, 2.626, 2.625, 2.625, 2.627, 2.629, 2.632, 2.635, 2.639, 2.649, 2.663, 2.676, 2.694, 2.719, 2.746, 2.771, 2.799, 2.851, 2.905, 2.947, 2.969,
+ 2.871, 2.837, 2.805, 2.786, 2.771, 2.755, 2.739, 2.714, 2.685, 2.655, 2.639, 2.631, 2.626, 2.625, 2.626, 2.628, 2.629, 2.632, 2.634, 2.642, 2.651, 2.663, 2.679, 2.701, 2.726, 2.756, 2.773, 2.809, 2.861, 2.913, 2.949, 2.968,
+ 2.876, 2.841, 2.808, 2.789, 2.775, 2.759, 2.744, 2.719, 2.693, 2.664, 2.648, 2.636, 2.629, 2.627, 2.627, 2.629, 2.631, 2.633, 2.637, 2.645, 2.653, 2.666, 2.682, 2.708, 2.734, 2.759, 2.779, 2.815, 2.868, 2.918, 2.951, 2.971,
+ 2.882, 2.845, 2.816, 2.791, 2.778, 2.766, 2.748, 2.733, 2.707, 2.681, 2.656, 2.643, 2.636, 2.632, 2.631, 2.632, 2.633, 2.637, 2.643, 2.648, 2.659, 2.672, 2.691, 2.719, 2.747, 2.765, 2.791, 2.829, 2.881, 2.931, 2.952, 2.969,
+ 2.889, 2.855, 2.819, 2.799, 2.782, 2.769, 2.755, 2.741, 2.717, 2.691, 2.672, 2.652, 2.643, 2.639, 2.636, 2.636, 2.638, 2.642, 2.646, 2.655, 2.665, 2.682, 2.703, 2.729, 2.752, 2.774, 2.798, 2.839, 2.891, 2.933, 2.959, 2.975,
+ 2.897, 2.862, 2.829, 2.804, 2.789, 2.776, 2.764, 2.749, 2.734, 2.709, 2.689, 2.669, 2.652, 2.644, 2.642, 2.642, 2.644, 2.647, 2.654, 2.664, 2.677, 2.694, 2.714, 2.742, 2.764, 2.782, 2.809, 2.852, 2.899, 2.936, 2.961, 2.976,
+ 2.902, 2.869, 2.841, 2.811, 2.797, 2.785, 2.776, 2.761, 2.748, 2.727, 2.708, 2.689, 2.671, 2.659, 2.655, 2.654, 2.653, 2.656, 2.666, 2.678, 2.693, 2.713, 2.737, 2.756, 2.775, 2.798, 2.825, 2.871, 2.913, 2.944, 2.966, 2.979,
+ 2.911, 2.885, 2.848, 2.821, 2.804, 2.793, 2.784, 2.774, 2.759, 2.747, 2.726, 2.709, 2.692, 2.679, 2.673, 2.672, 2.671, 2.672, 2.681, 2.694, 2.712, 2.729, 2.749, 2.768, 2.789, 2.811, 2.844, 2.886, 2.928, 2.956, 2.971, 2.984,
+ 2.925, 2.893, 2.861, 2.831, 2.813, 2.802, 2.795, 2.783, 2.773, 2.759, 2.744, 2.729, 2.715, 2.701, 2.698, 2.694, 2.693, 2.694, 2.702, 2.714, 2.729, 2.747, 2.761, 2.781, 2.802, 2.828, 2.864, 2.907, 2.942, 2.967, 2.978, 2.989,
+ 2.932, 2.898, 2.871, 2.843, 2.823, 2.811, 2.802, 2.794, 2.779, 2.772, 2.757, 2.742, 2.729, 2.716, 2.705, 2.704, 2.704, 2.707, 2.715, 2.727, 2.737, 2.754, 2.769, 2.788, 2.812, 2.845, 2.878, 2.923, 2.962, 2.973, 2.979, 2.994
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 3.018, 3.021, 3.026, 3.052, 3.092, 3.143, 3.181, 3.202, 3.209, 3.212, 3.211, 3.209, 3.197, 3.193, 3.185, 3.184, 3.185, 3.187, 3.191, 3.202, 3.211, 3.213, 3.212, 3.203, 3.189, 3.147, 3.099, 3.051, 3.032, 3.031, 3.048, 3.054,
+ 3.019, 3.023, 3.033, 3.066, 3.123, 3.163, 3.196, 3.206, 3.212, 3.212, 3.211, 3.203, 3.193, 3.179, 3.168, 3.159, 3.159, 3.163, 3.174, 3.188, 3.203, 3.208, 3.211, 3.209, 3.195, 3.168, 3.114, 3.064, 3.035, 3.033, 3.044, 3.051,
+ 3.021, 3.028, 3.046, 3.099, 3.156, 3.192, 3.209, 3.215, 3.216, 3.213, 3.203, 3.193, 3.176, 3.159, 3.153, 3.151, 3.149, 3.152, 3.159, 3.171, 3.188, 3.201, 3.209, 3.211, 3.207, 3.189, 3.142, 3.083, 3.042, 3.038, 3.043, 3.046,
+ 3.022, 3.037, 3.065, 3.124, 3.178, 3.206, 3.215, 3.221, 3.218, 3.217, 3.198, 3.179, 3.162, 3.149, 3.138, 3.133, 3.133, 3.136, 3.145, 3.156, 3.174, 3.192, 3.206, 3.215, 3.214, 3.202, 3.159, 3.105, 3.058, 3.042, 3.043, 3.049,
+ 3.024, 3.047, 3.084, 3.151, 3.195, 3.211, 3.219, 3.223, 3.218, 3.208, 3.182, 3.164, 3.149, 3.137, 3.127, 3.119, 3.119, 3.124, 3.134, 3.144, 3.157, 3.178, 3.194, 3.213, 3.215, 3.208, 3.166, 3.124, 3.074, 3.044, 3.044, 3.049,
+ 3.023, 3.058, 3.102, 3.161, 3.201, 3.217, 3.224, 3.223, 3.217, 3.195, 3.174, 3.156, 3.137, 3.125, 3.115, 3.109, 3.109, 3.115, 3.121, 3.131, 3.146, 3.159, 3.186, 3.208, 3.213, 3.211, 3.181, 3.138, 3.084, 3.047, 3.047, 3.049,
+ 3.031, 3.063, 3.126, 3.183, 3.212, 3.224, 3.225, 3.224, 3.216, 3.191, 3.167, 3.143, 3.129, 3.115, 3.105, 3.103, 3.103, 3.107, 3.114, 3.121, 3.131, 3.148, 3.169, 3.199, 3.211, 3.209, 3.186, 3.151, 3.089, 3.051, 3.049, 3.052,
+ 3.033, 3.083, 3.141, 3.201, 3.221, 3.226, 3.226, 3.224, 3.212, 3.187, 3.159, 3.138, 3.119, 3.107, 3.101, 3.098, 3.098, 3.102, 3.107, 3.115, 3.124, 3.138, 3.161, 3.185, 3.207, 3.209, 3.197, 3.162, 3.112, 3.059, 3.056, 3.057,
+ 3.038, 3.092, 3.159, 3.212, 3.225, 3.231, 3.228, 3.224, 3.209, 3.181, 3.152, 3.129, 3.112, 3.103, 3.095, 3.092, 3.093, 3.095, 3.101, 3.108, 3.118, 3.133, 3.152, 3.179, 3.203, 3.209, 3.205, 3.174, 3.124, 3.069, 3.059, 3.058,
+ 3.049, 3.105, 3.176, 3.223, 3.229, 3.231, 3.229, 3.223, 3.206, 3.171, 3.147, 3.125, 3.109, 3.097, 3.091, 3.089, 3.088, 3.091, 3.094, 3.102, 3.111, 3.124, 3.143, 3.169, 3.196, 3.208, 3.207, 3.181, 3.132, 3.079, 3.064, 3.063,
+ 3.055, 3.123, 3.189, 3.226, 3.232, 3.232, 3.229, 3.225, 3.204, 3.169, 3.143, 3.122, 3.108, 3.095, 3.092, 3.089, 3.088, 3.088, 3.092, 3.095, 3.105, 3.117, 3.135, 3.159, 3.191, 3.208, 3.208, 3.189, 3.141, 3.084, 3.064, 3.062,
+ 3.057, 3.127, 3.198, 3.228, 3.233, 3.233, 3.229, 3.225, 3.201, 3.166, 3.139, 3.119, 3.106, 3.096, 3.093, 3.092, 3.088, 3.088, 3.089, 3.093, 3.099, 3.114, 3.129, 3.156, 3.186, 3.208, 3.208, 3.195, 3.143, 3.089, 3.065, 3.064,
+ 3.066, 3.142, 3.209, 3.232, 3.234, 3.233, 3.231, 3.226, 3.198, 3.166, 3.138, 3.117, 3.103, 3.097, 3.095, 3.095, 3.094, 3.089, 3.089, 3.092, 3.097, 3.109, 3.126, 3.155, 3.183, 3.207, 3.207, 3.198, 3.147, 3.091, 3.069, 3.065,
+ 3.072, 3.153, 3.216, 3.231, 3.234, 3.234, 3.229, 3.226, 3.194, 3.165, 3.136, 3.114, 3.101, 3.098, 3.098, 3.104, 3.098, 3.091, 3.088, 3.089, 3.093, 3.103, 3.123, 3.151, 3.181, 3.204, 3.204, 3.197, 3.156, 3.095, 3.069, 3.068,
+ 3.079, 3.159, 3.222, 3.233, 3.236, 3.235, 3.231, 3.226, 3.194, 3.165, 3.133, 3.112, 3.102, 3.099, 3.107, 3.114, 3.111, 3.097, 3.089, 3.089, 3.091, 3.099, 3.121, 3.149, 3.182, 3.202, 3.202, 3.195, 3.156, 3.096, 3.069, 3.068,
+ 3.081, 3.164, 3.226, 3.233, 3.236, 3.235, 3.233, 3.229, 3.199, 3.165, 3.137, 3.113, 3.102, 3.102, 3.111, 3.134, 3.134, 3.103, 3.091, 3.089, 3.092, 3.101, 3.119, 3.147, 3.182, 3.202, 3.202, 3.194, 3.155, 3.095, 3.069, 3.067,
+ 3.085, 3.163, 3.225, 3.236, 3.239, 3.235, 3.234, 3.231, 3.203, 3.169, 3.141, 3.115, 3.103, 3.103, 3.111, 3.134, 3.134, 3.106, 3.092, 3.091, 3.093, 3.103, 3.119, 3.149, 3.185, 3.203, 3.203, 3.193, 3.152, 3.095, 3.068, 3.066,
+ 3.083, 3.168, 3.226, 3.236, 3.241, 3.235, 3.235, 3.231, 3.205, 3.174, 3.144, 3.117, 3.107, 3.103, 3.107, 3.116, 3.109, 3.103, 3.091, 3.091, 3.095, 3.107, 3.123, 3.152, 3.188, 3.204, 3.204, 3.193, 3.151, 3.095, 3.069, 3.066,
+ 3.082, 3.171, 3.228, 3.237, 3.239, 3.235, 3.234, 3.233, 3.217, 3.184, 3.147, 3.119, 3.108, 3.104, 3.103, 3.105, 3.102, 3.095, 3.091, 3.091, 3.097, 3.111, 3.128, 3.157, 3.191, 3.204, 3.204, 3.185, 3.149, 3.094, 3.069, 3.065,
+ 3.086, 3.173, 3.226, 3.237, 3.239, 3.235, 3.234, 3.232, 3.221, 3.185, 3.155, 3.124, 3.112, 3.105, 3.102, 3.099, 3.096, 3.094, 3.092, 3.094, 3.102, 3.114, 3.133, 3.163, 3.197, 3.205, 3.204, 3.183, 3.144, 3.089, 3.068, 3.065,
+ 3.086, 3.166, 3.225, 3.239, 3.239, 3.237, 3.233, 3.231, 3.223, 3.193, 3.165, 3.135, 3.118, 3.108, 3.101, 3.098, 3.095, 3.093, 3.093, 3.099, 3.109, 3.124, 3.145, 3.174, 3.199, 3.204, 3.203, 3.181, 3.132, 3.085, 3.067, 3.062,
+ 3.086, 3.162, 3.224, 3.239, 3.241, 3.236, 3.232, 3.229, 3.224, 3.201, 3.174, 3.147, 3.128, 3.114, 3.103, 3.099, 3.096, 3.095, 3.097, 3.106, 3.116, 3.134, 3.151, 3.182, 3.201, 3.203, 3.201, 3.176, 3.125, 3.078, 3.065, 3.061,
+ 3.077, 3.162, 3.221, 3.239, 3.241, 3.234, 3.229, 3.227, 3.225, 3.207, 3.186, 3.161, 3.137, 3.122, 3.112, 3.102, 3.099, 3.098, 3.106, 3.113, 3.127, 3.139, 3.159, 3.192, 3.204, 3.205, 3.198, 3.167, 3.119, 3.073, 3.062, 3.061,
+ 3.077, 3.161, 3.216, 3.234, 3.236, 3.232, 3.225, 3.225, 3.222, 3.209, 3.194, 3.172, 3.148, 3.132, 3.121, 3.113, 3.107, 3.107, 3.112, 3.124, 3.135, 3.151, 3.175, 3.196, 3.201, 3.201, 3.191, 3.161, 3.114, 3.062, 3.058, 3.057,
+ 3.073, 3.139, 3.201, 3.227, 3.232, 3.227, 3.223, 3.219, 3.216, 3.212, 3.203, 3.181, 3.161, 3.142, 3.129, 3.121, 3.114, 3.114, 3.124, 3.134, 3.145, 3.161, 3.179, 3.196, 3.199, 3.195, 3.182, 3.145, 3.093, 3.052, 3.051, 3.052,
+ 3.066, 3.126, 3.192, 3.218, 3.224, 3.221, 3.218, 3.214, 3.214, 3.209, 3.204, 3.191, 3.174, 3.155, 3.142, 3.129, 3.127, 3.127, 3.136, 3.145, 3.157, 3.175, 3.187, 3.194, 3.196, 3.192, 3.171, 3.134, 3.082, 3.043, 3.042, 3.044,
+ 3.056, 3.114, 3.176, 3.212, 3.219, 3.219, 3.214, 3.209, 3.208, 3.206, 3.203, 3.198, 3.182, 3.171, 3.155, 3.146, 3.144, 3.144, 3.148, 3.156, 3.171, 3.181, 3.188, 3.194, 3.194, 3.187, 3.161, 3.117, 3.066, 3.037, 3.037, 3.044,
+ 3.054, 3.101, 3.162, 3.203, 3.216, 3.215, 3.211, 3.206, 3.203, 3.201, 3.199, 3.197, 3.191, 3.179, 3.171, 3.161, 3.156, 3.156, 3.161, 3.171, 3.179, 3.184, 3.189, 3.192, 3.191, 3.181, 3.142, 3.097, 3.045, 3.032, 3.033, 3.039,
+ 3.041, 3.093, 3.149, 3.194, 3.208, 3.211, 3.208, 3.202, 3.197, 3.197, 3.197, 3.195, 3.191, 3.189, 3.181, 3.176, 3.172, 3.173, 3.178, 3.181, 3.185, 3.187, 3.189, 3.191, 3.189, 3.173, 3.133, 3.085, 3.034, 3.029, 3.031, 3.038,
+ 3.032, 3.079, 3.133, 3.181, 3.197, 3.207, 3.204, 3.198, 3.193, 3.192, 3.189, 3.191, 3.189, 3.187, 3.185, 3.183, 3.183, 3.183, 3.185, 3.188, 3.187, 3.188, 3.189, 3.188, 3.184, 3.164, 3.118, 3.075, 3.031, 3.026, 3.028, 3.039,
+ 3.025, 3.051, 3.099, 3.149, 3.182, 3.193, 3.193, 3.187, 3.181, 3.178, 3.177, 3.177, 3.182, 3.183, 3.183, 3.183, 3.183, 3.184, 3.187, 3.188, 3.186, 3.184, 3.184, 3.181, 3.167, 3.139, 3.098, 3.053, 3.026, 3.024, 3.029, 3.043,
+ 3.016, 3.025, 3.081, 3.122, 3.167, 3.182, 3.185, 3.181, 3.176, 3.171, 3.169, 3.171, 3.174, 3.175, 3.178, 3.178, 3.179, 3.181, 3.185, 3.185, 3.181, 3.179, 3.177, 3.173, 3.151, 3.119, 3.076, 3.031, 3.021, 3.018, 3.024, 3.046
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.503, 1.503, 1.504, 1.515, 1.541, 1.566, 1.587, 1.599, 1.602, 1.603, 1.602, 1.599, 1.595, 1.589, 1.587, 1.586, 1.586, 1.587, 1.589, 1.594, 1.601, 1.604, 1.604, 1.601, 1.589, 1.571, 1.541, 1.517, 1.512, 1.512, 1.522, 1.526,
+ 1.501, 1.502, 1.506, 1.523, 1.557, 1.579, 1.596, 1.603, 1.603, 1.603, 1.601, 1.597, 1.591, 1.582, 1.576, 1.575, 1.574, 1.577, 1.581, 1.588, 1.595, 1.601, 1.603, 1.602, 1.597, 1.578, 1.553, 1.526, 1.512, 1.512, 1.519, 1.526,
+ 1.499, 1.503, 1.512, 1.539, 1.571, 1.593, 1.603, 1.604, 1.604, 1.602, 1.597, 1.591, 1.581, 1.573, 1.568, 1.566, 1.566, 1.568, 1.572, 1.579, 1.587, 1.594, 1.602, 1.603, 1.601, 1.589, 1.566, 1.536, 1.517, 1.516, 1.519, 1.525,
+ 1.499, 1.505, 1.521, 1.553, 1.582, 1.597, 1.604, 1.604, 1.604, 1.601, 1.592, 1.582, 1.573, 1.564, 1.561, 1.558, 1.557, 1.559, 1.564, 1.571, 1.579, 1.588, 1.597, 1.603, 1.603, 1.596, 1.576, 1.545, 1.519, 1.517, 1.518, 1.526,
+ 1.499, 1.509, 1.529, 1.565, 1.591, 1.601, 1.605, 1.604, 1.602, 1.597, 1.586, 1.573, 1.565, 1.558, 1.553, 1.551, 1.551, 1.552, 1.555, 1.563, 1.571, 1.581, 1.592, 1.601, 1.602, 1.599, 1.582, 1.556, 1.528, 1.517, 1.517, 1.526,
+ 1.501, 1.512, 1.539, 1.576, 1.595, 1.603, 1.605, 1.604, 1.601, 1.591, 1.579, 1.567, 1.559, 1.552, 1.548, 1.545, 1.546, 1.548, 1.551, 1.555, 1.563, 1.574, 1.585, 1.598, 1.602, 1.601, 1.589, 1.562, 1.535, 1.519, 1.519, 1.528,
+ 1.501, 1.517, 1.552, 1.587, 1.601, 1.605, 1.605, 1.605, 1.599, 1.588, 1.574, 1.562, 1.553, 1.548, 1.544, 1.543, 1.543, 1.545, 1.547, 1.551, 1.557, 1.567, 1.578, 1.593, 1.601, 1.601, 1.592, 1.571, 1.539, 1.521, 1.521, 1.529,
+ 1.503, 1.524, 1.561, 1.593, 1.605, 1.606, 1.605, 1.603, 1.598, 1.585, 1.569, 1.558, 1.551, 1.545, 1.542, 1.541, 1.541, 1.542, 1.545, 1.547, 1.555, 1.561, 1.573, 1.587, 1.598, 1.601, 1.596, 1.577, 1.546, 1.523, 1.523, 1.529,
+ 1.503, 1.532, 1.568, 1.597, 1.605, 1.606, 1.605, 1.603, 1.596, 1.581, 1.565, 1.555, 1.548, 1.544, 1.541, 1.539, 1.541, 1.541, 1.543, 1.546, 1.549, 1.558, 1.568, 1.583, 1.595, 1.601, 1.599, 1.582, 1.555, 1.525, 1.525, 1.531,
+ 1.508, 1.539, 1.575, 1.601, 1.605, 1.606, 1.605, 1.602, 1.593, 1.577, 1.563, 1.552, 1.546, 1.543, 1.541, 1.539, 1.539, 1.541, 1.542, 1.544, 1.548, 1.553, 1.564, 1.579, 1.592, 1.599, 1.599, 1.585, 1.559, 1.532, 1.531, 1.531,
+ 1.511, 1.544, 1.581, 1.603, 1.606, 1.606, 1.604, 1.603, 1.591, 1.574, 1.561, 1.549, 1.545, 1.542, 1.541, 1.541, 1.541, 1.541, 1.542, 1.543, 1.545, 1.551, 1.561, 1.573, 1.591, 1.599, 1.599, 1.588, 1.563, 1.535, 1.531, 1.531,
+ 1.515, 1.548, 1.589, 1.605, 1.607, 1.607, 1.604, 1.602, 1.591, 1.573, 1.559, 1.549, 1.543, 1.542, 1.541, 1.542, 1.542, 1.542, 1.541, 1.542, 1.543, 1.549, 1.558, 1.571, 1.588, 1.599, 1.599, 1.591, 1.566, 1.537, 1.532, 1.531,
+ 1.517, 1.558, 1.593, 1.606, 1.607, 1.607, 1.605, 1.602, 1.589, 1.572, 1.557, 1.548, 1.543, 1.543, 1.542, 1.544, 1.543, 1.543, 1.541, 1.541, 1.542, 1.546, 1.554, 1.569, 1.585, 1.599, 1.599, 1.593, 1.568, 1.538, 1.533, 1.531,
+ 1.521, 1.563, 1.596, 1.607, 1.608, 1.607, 1.606, 1.603, 1.589, 1.572, 1.557, 1.548, 1.543, 1.543, 1.544, 1.549, 1.546, 1.544, 1.541, 1.541, 1.542, 1.545, 1.553, 1.568, 1.585, 1.598, 1.598, 1.594, 1.571, 1.541, 1.534, 1.531,
+ 1.521, 1.566, 1.599, 1.607, 1.608, 1.607, 1.605, 1.603, 1.591, 1.571, 1.556, 1.547, 1.544, 1.544, 1.551, 1.554, 1.552, 1.546, 1.541, 1.541, 1.541, 1.544, 1.553, 1.567, 1.585, 1.597, 1.598, 1.595, 1.571, 1.541, 1.534, 1.531,
+ 1.523, 1.568, 1.601, 1.607, 1.608, 1.607, 1.606, 1.604, 1.591, 1.572, 1.557, 1.547, 1.545, 1.545, 1.552, 1.566, 1.566, 1.551, 1.542, 1.541, 1.541, 1.544, 1.553, 1.567, 1.586, 1.596, 1.596, 1.593, 1.571, 1.541, 1.533, 1.531,
+ 1.524, 1.569, 1.602, 1.607, 1.608, 1.607, 1.606, 1.604, 1.591, 1.573, 1.559, 1.548, 1.545, 1.546, 1.552, 1.565, 1.565, 1.551, 1.542, 1.541, 1.541, 1.545, 1.553, 1.568, 1.586, 1.597, 1.597, 1.593, 1.571, 1.541, 1.532, 1.532,
+ 1.526, 1.571, 1.602, 1.607, 1.608, 1.606, 1.605, 1.604, 1.593, 1.575, 1.559, 1.549, 1.546, 1.546, 1.549, 1.552, 1.552, 1.546, 1.542, 1.541, 1.542, 1.546, 1.555, 1.569, 1.587, 1.597, 1.597, 1.591, 1.569, 1.539, 1.532, 1.531,
+ 1.526, 1.571, 1.601, 1.608, 1.609, 1.605, 1.605, 1.603, 1.597, 1.579, 1.562, 1.551, 1.546, 1.545, 1.545, 1.549, 1.546, 1.543, 1.542, 1.541, 1.542, 1.547, 1.557, 1.573, 1.588, 1.597, 1.597, 1.589, 1.566, 1.537, 1.531, 1.529,
+ 1.526, 1.569, 1.602, 1.609, 1.609, 1.606, 1.605, 1.604, 1.598, 1.582, 1.567, 1.553, 1.547, 1.545, 1.544, 1.544, 1.544, 1.542, 1.542, 1.542, 1.544, 1.552, 1.559, 1.576, 1.591, 1.597, 1.597, 1.588, 1.563, 1.535, 1.531, 1.529,
+ 1.523, 1.567, 1.601, 1.609, 1.609, 1.606, 1.605, 1.603, 1.599, 1.587, 1.571, 1.558, 1.549, 1.545, 1.544, 1.543, 1.543, 1.542, 1.542, 1.544, 1.548, 1.555, 1.566, 1.581, 1.593, 1.597, 1.597, 1.586, 1.558, 1.534, 1.529, 1.529,
+ 1.523, 1.564, 1.599, 1.609, 1.609, 1.605, 1.604, 1.603, 1.601, 1.592, 1.576, 1.564, 1.553, 1.547, 1.544, 1.543, 1.542, 1.542, 1.544, 1.548, 1.551, 1.561, 1.572, 1.585, 1.594, 1.596, 1.595, 1.581, 1.555, 1.528, 1.527, 1.528,
+ 1.522, 1.561, 1.595, 1.608, 1.608, 1.604, 1.602, 1.601, 1.601, 1.595, 1.582, 1.569, 1.559, 1.552, 1.547, 1.545, 1.543, 1.544, 1.546, 1.551, 1.556, 1.563, 1.576, 1.589, 1.595, 1.596, 1.593, 1.576, 1.551, 1.524, 1.524, 1.528,
+ 1.519, 1.559, 1.591, 1.605, 1.606, 1.603, 1.601, 1.599, 1.601, 1.597, 1.587, 1.576, 1.565, 1.558, 1.552, 1.549, 1.546, 1.547, 1.552, 1.556, 1.561, 1.571, 1.582, 1.593, 1.596, 1.596, 1.591, 1.569, 1.546, 1.521, 1.521, 1.527,
+ 1.516, 1.553, 1.589, 1.602, 1.604, 1.602, 1.599, 1.598, 1.599, 1.598, 1.594, 1.583, 1.572, 1.564, 1.559, 1.553, 1.552, 1.553, 1.556, 1.561, 1.567, 1.578, 1.588, 1.594, 1.596, 1.594, 1.588, 1.567, 1.539, 1.517, 1.517, 1.525,
+ 1.511, 1.548, 1.581, 1.599, 1.602, 1.602, 1.598, 1.597, 1.597, 1.597, 1.595, 1.589, 1.581, 1.571, 1.564, 1.559, 1.559, 1.558, 1.561, 1.567, 1.575, 1.583, 1.591, 1.593, 1.594, 1.591, 1.581, 1.557, 1.529, 1.514, 1.514, 1.521,
+ 1.508, 1.541, 1.576, 1.596, 1.601, 1.601, 1.597, 1.595, 1.594, 1.595, 1.595, 1.592, 1.585, 1.579, 1.571, 1.566, 1.566, 1.566, 1.568, 1.575, 1.582, 1.589, 1.592, 1.593, 1.593, 1.589, 1.575, 1.553, 1.523, 1.511, 1.511, 1.517,
+ 1.505, 1.535, 1.566, 1.591, 1.599, 1.598, 1.596, 1.594, 1.592, 1.592, 1.593, 1.592, 1.589, 1.585, 1.579, 1.575, 1.574, 1.574, 1.577, 1.582, 1.587, 1.591, 1.592, 1.593, 1.592, 1.585, 1.568, 1.541, 1.516, 1.509, 1.509, 1.517,
+ 1.501, 1.528, 1.559, 1.585, 1.595, 1.597, 1.595, 1.593, 1.589, 1.588, 1.591, 1.591, 1.591, 1.589, 1.586, 1.583, 1.582, 1.582, 1.585, 1.588, 1.589, 1.591, 1.592, 1.593, 1.592, 1.582, 1.561, 1.536, 1.512, 1.509, 1.511, 1.517,
+ 1.496, 1.521, 1.549, 1.576, 1.588, 1.594, 1.593, 1.589, 1.586, 1.585, 1.586, 1.588, 1.589, 1.588, 1.588, 1.587, 1.587, 1.587, 1.589, 1.589, 1.591, 1.591, 1.592, 1.592, 1.591, 1.575, 1.555, 1.527, 1.508, 1.507, 1.511, 1.519,
+ 1.495, 1.505, 1.536, 1.563, 1.581, 1.587, 1.588, 1.584, 1.582, 1.578, 1.578, 1.581, 1.583, 1.584, 1.586, 1.587, 1.587, 1.587, 1.588, 1.589, 1.589, 1.591, 1.591, 1.591, 1.584, 1.566, 1.544, 1.518, 1.505, 1.505, 1.509, 1.519,
+ 1.493, 1.496, 1.522, 1.547, 1.569, 1.581, 1.582, 1.581, 1.577, 1.575, 1.573, 1.575, 1.579, 1.581, 1.583, 1.584, 1.584, 1.585, 1.587, 1.587, 1.588, 1.588, 1.588, 1.585, 1.573, 1.556, 1.532, 1.511, 1.504, 1.504, 1.508, 1.523
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 4.461, 4.088, 3.793, 3.651, 3.557, 3.439, 3.248, 2.999, 2.751, 2.527, 2.341, 2.191, 2.069, 1.956, 1.907, 1.907, 1.907, 1.908, 1.946, 2.056, 2.179, 2.328, 2.517, 2.747, 2.998, 3.219, 3.359, 3.436, 3.494, 3.621, 3.906, 4.251,
+ 4.297, 3.982, 3.747, 3.634, 3.531, 3.373, 3.136, 2.863, 2.608, 2.386, 2.209, 2.075, 1.957, 1.873, 1.817, 1.789, 1.789, 1.813, 1.865, 1.947, 2.066, 2.198, 2.378, 2.605, 2.872, 3.132, 3.322, 3.431, 3.485, 3.577, 3.802, 4.079,
+ 4.152, 3.905, 3.717, 3.623, 3.499, 3.296, 3.022, 2.735, 2.478, 2.265, 2.094, 1.957, 1.849, 1.763, 1.709, 1.679, 1.679, 1.703, 1.753, 1.837, 1.947, 2.081, 2.253, 2.472, 2.742, 3.032, 3.271, 3.414, 3.479, 3.545, 3.719, 3.937,
+ 4.039, 3.835, 3.688, 3.596, 3.442, 3.196, 2.899, 2.609, 2.356, 2.153, 1.987, 1.849, 1.748, 1.659, 1.605, 1.577, 1.577, 1.599, 1.649, 1.734, 1.837, 1.973, 2.139, 2.348, 2.612, 2.911, 3.192, 3.379, 3.467, 3.516, 3.649, 3.815,
+ 3.952, 3.784, 3.669, 3.562, 3.369, 3.088, 2.778, 2.491, 2.246, 2.049, 1.888, 1.748, 1.657, 1.561, 1.509, 1.481, 1.481, 1.504, 1.552, 1.642, 1.734, 1.869, 2.033, 2.233, 2.489, 2.792, 3.105, 3.331, 3.445, 3.493, 3.591, 3.721,
+ 3.883, 3.741, 3.648, 3.519, 3.287, 2.977, 2.665, 2.382, 2.148, 1.957, 1.796, 1.659, 1.561, 1.474, 1.422, 1.396, 1.396, 1.415, 1.465, 1.552, 1.643, 1.776, 1.936, 2.131, 2.375, 2.678, 3.004, 3.275, 3.416, 3.469, 3.541, 3.643,
+ 3.829, 3.716, 3.617, 3.466, 3.202, 2.876, 2.558, 2.282, 2.059, 1.872, 1.713, 1.577, 1.474, 1.399, 1.345, 1.319, 1.319, 1.338, 1.389, 1.465, 1.559, 1.689, 1.849, 2.042, 2.275, 2.568, 2.903, 3.204, 3.383, 3.446, 3.496, 3.579,
+ 3.793, 3.685, 3.589, 3.411, 3.119, 2.781, 2.466, 2.199, 1.983, 1.798, 1.639, 1.505, 1.399, 1.339, 1.276, 1.253, 1.253, 1.271, 1.327, 1.389, 1.487, 1.612, 1.769, 1.961, 2.189, 2.471, 2.806, 3.133, 3.342, 3.425, 3.459, 3.527,
+ 3.763, 3.666, 3.561, 3.357, 3.042, 2.698, 2.384, 2.129, 1.918, 1.734, 1.575, 1.443, 1.339, 1.276, 1.217, 1.194, 1.194, 1.214, 1.271, 1.327, 1.423, 1.546, 1.702, 1.891, 2.112, 2.386, 2.718, 3.061, 3.301, 3.402, 3.433, 3.486,
+ 3.745, 3.647, 3.529, 3.302, 2.971, 2.627, 2.318, 2.067, 1.859, 1.677, 1.521, 1.389, 1.287, 1.217, 1.171, 1.145, 1.145, 1.165, 1.214, 1.276, 1.369, 1.491, 1.643, 1.831, 2.048, 2.313, 2.644, 2.995, 3.262, 3.381, 3.412, 3.453,
+ 3.731, 3.635, 3.503, 3.249, 2.911, 2.566, 2.259, 2.017, 1.811, 1.629, 1.475, 1.347, 1.246, 1.171, 1.138, 1.103, 1.103, 1.129, 1.165, 1.231, 1.322, 1.443, 1.595, 1.779, 1.993, 2.251, 2.576, 2.936, 3.223, 3.359, 3.392, 3.425,
+ 3.721, 3.625, 3.481, 3.208, 2.861, 2.515, 2.213, 1.976, 1.773, 1.593, 1.439, 1.313, 1.213, 1.138, 1.103, 1.071, 1.071, 1.101, 1.129, 1.194, 1.286, 1.405, 1.555, 1.736, 1.949, 2.202, 2.521, 2.886, 3.189, 3.338, 3.375, 3.406,
+ 3.716, 3.616, 3.458, 3.171, 2.819, 2.472, 2.176, 1.942, 1.741, 1.563, 1.411, 1.285, 1.186, 1.112, 1.071, 1.051, 1.049, 1.069, 1.103, 1.165, 1.256, 1.376, 1.523, 1.702, 1.913, 2.163, 2.477, 2.843, 3.155, 3.318, 3.358, 3.389,
+ 3.712, 3.609, 3.439, 3.142, 2.787, 2.443, 2.147, 1.918, 1.721, 1.541, 1.391, 1.266, 1.167, 1.094, 1.051, 1.035, 1.035, 1.049, 1.085, 1.145, 1.236, 1.355, 1.499, 1.676, 1.886, 2.136, 2.449, 2.814, 3.135, 3.307, 3.351, 3.378,
+ 3.709, 3.604, 3.422, 3.123, 2.768, 2.419, 2.129, 1.903, 1.706, 1.527, 1.377, 1.253, 1.155, 1.083, 1.035, 1.023, 1.023, 1.035, 1.074, 1.134, 1.224, 1.341, 1.484, 1.661, 1.868, 2.117, 2.429, 2.797, 3.122, 3.301, 3.346, 3.374,
+ 3.711, 3.597, 3.412, 3.114, 2.758, 2.409, 2.119, 1.895, 1.701, 1.523, 1.373, 1.251, 1.153, 1.081, 1.033, 1.001, 1.001, 1.032, 1.073, 1.133, 1.222, 1.338, 1.479, 1.655, 1.861, 2.107, 2.418, 2.787, 3.115, 3.297, 3.343, 3.373,
+ 3.713, 3.597, 3.412, 3.113, 2.758, 2.409, 2.119, 1.893, 1.698, 1.523, 1.373, 1.251, 1.153, 1.081, 1.034, 1.011, 1.011, 1.032, 1.074, 1.134, 1.222, 1.338, 1.479, 1.655, 1.861, 2.107, 2.418, 2.787, 3.116, 3.294, 3.341, 3.371,
+ 3.721, 3.599, 3.414, 3.116, 2.763, 2.418, 2.124, 1.895, 1.704, 1.531, 1.382, 1.259, 1.162, 1.091, 1.048, 1.034, 1.032, 1.046, 1.083, 1.145, 1.232, 1.348, 1.491, 1.664, 1.869, 2.115, 2.428, 2.798, 3.123, 3.294, 3.339, 3.372,
+ 3.727, 3.604, 3.421, 3.132, 2.784, 2.438, 2.141, 1.908, 1.716, 1.547, 1.399, 1.276, 1.178, 1.107, 1.069, 1.048, 1.046, 1.067, 1.101, 1.162, 1.249, 1.366, 1.509, 1.684, 1.886, 2.134, 2.449, 2.821, 3.135, 3.299, 3.341, 3.375,
+ 3.739, 3.613, 3.431, 3.154, 2.813, 2.468, 2.166, 1.931, 1.739, 1.569, 1.424, 1.302, 1.203, 1.129, 1.098, 1.069, 1.069, 1.096, 1.123, 1.185, 1.274, 1.391, 1.536, 1.709, 1.914, 2.162, 2.481, 2.851, 3.156, 3.311, 3.342, 3.378,
+ 3.751, 3.626, 3.449, 3.186, 2.855, 2.509, 2.201, 1.961, 1.768, 1.601, 1.454, 1.333, 1.235, 1.159, 1.129, 1.098, 1.098, 1.123, 1.152, 1.216, 1.307, 1.424, 1.569, 1.744, 1.947, 2.202, 2.526, 2.891, 3.182, 3.322, 3.351, 3.387,
+ 3.772, 3.641, 3.473, 3.221, 2.902, 2.559, 2.248, 1.999, 1.804, 1.639, 1.496, 1.373, 1.274, 1.201, 1.159, 1.133, 1.133, 1.152, 1.191, 1.254, 1.347, 1.466, 1.611, 1.785, 1.989, 2.253, 2.582, 2.939, 3.209, 3.334, 3.361, 3.402,
+ 3.797, 3.663, 3.496, 3.263, 2.959, 2.624, 2.308, 2.049, 1.847, 1.684, 1.542, 1.422, 1.321, 1.252, 1.201, 1.175, 1.175, 1.191, 1.239, 1.298, 1.394, 1.516, 1.658, 1.831, 2.041, 2.313, 2.651, 2.998, 3.244, 3.351, 3.375, 3.422,
+ 3.831, 3.686, 3.523, 3.307, 3.023, 2.698, 2.379, 2.112, 1.902, 1.737, 1.596, 1.476, 1.378, 1.315, 1.252, 1.227, 1.227, 1.239, 1.296, 1.355, 1.451, 1.572, 1.715, 1.888, 2.103, 2.386, 2.731, 3.063, 3.279, 3.367, 3.393, 3.456,
+ 3.871, 3.714, 3.551, 3.355, 3.091, 2.781, 2.465, 2.186, 1.965, 1.795, 1.654, 1.538, 1.442, 1.378, 1.318, 1.291, 1.291, 1.304, 1.355, 1.424, 1.515, 1.634, 1.778, 1.952, 2.178, 2.479, 2.821, 3.129, 3.314, 3.381, 3.419, 3.491,
+ 3.925, 3.749, 3.582, 3.401, 3.156, 2.866, 2.559, 2.274, 2.039, 1.859, 1.718, 1.604, 1.513, 1.442, 1.389, 1.363, 1.363, 1.379, 1.424, 1.501, 1.586, 1.702, 1.847, 2.028, 2.269, 2.579, 2.913, 3.193, 3.343, 3.396, 3.447, 3.539,
+ 3.994, 3.794, 3.619, 3.442, 3.231, 2.961, 2.662, 2.375, 2.129, 1.938, 1.789, 1.675, 1.591, 1.513, 1.465, 1.439, 1.439, 1.457, 1.501, 1.582, 1.661, 1.777, 1.925, 2.118, 2.375, 2.691, 3.008, 3.251, 3.371, 3.414, 3.479, 3.598,
+ 4.082, 3.845, 3.656, 3.489, 3.298, 3.053, 2.771, 2.485, 2.232, 2.028, 1.871, 1.751, 1.672, 1.591, 1.544, 1.521, 1.521, 1.539, 1.582, 1.661, 1.741, 1.859, 2.014, 2.224, 2.495, 2.806, 3.098, 3.301, 3.392, 3.431, 3.518, 3.677,
+ 4.196, 3.911, 3.698, 3.534, 3.363, 3.146, 2.881, 2.604, 2.348, 2.132, 1.964, 1.836, 1.751, 1.672, 1.628, 1.606, 1.606, 1.624, 1.665, 1.741, 1.827, 1.951, 2.121, 2.344, 2.624, 2.923, 3.177, 3.336, 3.405, 3.447, 3.567, 3.776,
+ 4.341, 4.002, 3.744, 3.575, 3.415, 3.229, 2.989, 2.729, 2.475, 2.251, 2.071, 1.936, 1.836, 1.759, 1.713, 1.693, 1.693, 1.711, 1.753, 1.827, 1.925, 2.058, 2.243, 2.481, 2.758, 3.027, 3.238, 3.361, 3.409, 3.466, 3.637, 3.896,
+ 4.516, 4.123, 3.804, 3.621, 3.468, 3.308, 3.096, 2.855, 2.609, 2.385, 2.194, 2.045, 1.936, 1.857, 1.807, 1.784, 1.784, 1.803, 1.852, 1.925, 2.033, 2.183, 2.382, 2.623, 2.886, 3.121, 3.284, 3.372, 3.413, 3.494, 3.727, 4.048,
+ 4.716, 4.264, 3.875, 3.674, 3.523, 3.376, 3.189, 2.966, 2.733, 2.511, 2.315, 2.158, 2.039, 1.936, 1.875, 1.872, 1.872, 1.872, 1.925, 2.028, 2.148, 2.308, 2.513, 2.751, 2.994, 3.191, 3.319, 3.384, 3.427, 3.541, 3.838, 4.221
+ ],
+ "sigma": 0.00152,
+ "sigma_Cb": 0.00172
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2868,
+ "ccm":
+ [
+ 1.58923, -0.36649, -0.22273,
+ -0.43591, 1.84858, -0.41268,
+ 0.02948, -0.77666, 1.74718
+ ]
+ },
+ {
+ "ct": 2965,
+ "ccm":
+ [
+ 1.73397, -0.42794, -0.30603,
+ -0.36504, 1.72431, -0.35926,
+ 0.12765, -1.10933, 1.98168
+ ]
+ },
+ {
+ "ct": 3603,
+ "ccm":
+ [
+ 1.61787, -0.42704, -0.19084,
+ -0.37819, 1.74588, -0.36769,
+ 0.00961, -0.59807, 1.58847
+ ]
+ },
+ {
+ "ct": 4620,
+ "ccm":
+ [
+ 1.55581, -0.35422, -0.20158,
+ -0.31805, 1.79309, -0.47505,
+ -0.01256, -0.54489, 1.55746
+ ]
+ },
+ {
+ "ct": 5901,
+ "ccm":
+ [
+ 1.64439, -0.48855, -0.15585,
+ -0.29149, 1.67122, -0.37972,
+ -0.03111, -0.44052, 1.47163
+ ]
+ },
+ {
+ "ct": 7610,
+ "ccm":
+ [
+ 1.48667, -0.26072, -0.22595,
+ -0.21815, 1.86724, -0.64909,
+ -0.00985, -0.64485, 1.65471
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.af":
+ {
+ "ranges":
+ {
+ "normal":
+ {
+ "min": 0.0,
+ "max": 12.0,
+ "default": 1.0
+ },
+ "macro":
+ {
+ "min": 4.0,
+ "max": 32.0,
+ "default": 6.0
+ }
+ },
+ "speeds":
+ {
+ "normal":
+ {
+ "step_coarse": 2.0,
+ "step_fine": 0.5,
+ "contrast_ratio": 0.75,
+ "pdaf_gain": -0.03,
+ "pdaf_squelch": 0.2,
+ "max_slew": 4.0,
+ "pdaf_frames": 20,
+ "dropout_frames": 6,
+ "step_frames": 4
+ },
+ "fast":
+ {
+ "step_coarse": 2.0,
+ "step_fine": 0.5,
+ "contrast_ratio": 0.75,
+ "pdaf_gain": -0.05,
+ "pdaf_squelch": 0.2,
+ "max_slew": 5.0,
+ "pdaf_frames": 16,
+ "dropout_frames": 6,
+ "step_frames": 4
+ }
+ },
+ "conf_epsilon": 8,
+ "conf_thresh": 12,
+ "conf_clip": 512,
+ "skip_frames": 5,
+ "map": [ 0.0, 420, 35.0, 920 ]
+ }
+ },
+ {
+ "rpi.cac":
+ {
+ "strength": 1.0,
+ "lut_rx":
+ [
+ -0.11, -0.11, -0.17, -0.11, -0.0, 0.08, 0.13, 0.1, 0.1,
+ -0.07, -0.17, -0.16, -0.08, -0.02, 0.06, 0.15, 0.15, 0.07,
+ -0.11, -0.21, -0.17, -0.07, -0.02, 0.03, 0.14, 0.17, 0.14,
+ -0.19, -0.22, -0.16, -0.07, -0.01, 0.03, 0.12, 0.19, 0.21,
+ -0.19, -0.23, -0.16, -0.06, -0.01, 0.04, 0.13, 0.19, 0.24,
+ -0.18, -0.22, -0.17, -0.05, -0.01, 0.05, 0.15, 0.2, 0.21,
+ -0.14, -0.19, -0.17, -0.06, 0.0, 0.07, 0.15, 0.18, 0.15,
+ -0.09, -0.14, -0.17, -0.08, 0.0, 0.09, 0.15, 0.14, 0.06,
+ -0.09, -0.08, -0.15, -0.12, -0.0, 0.12, 0.16, 0.07, 0.06
+ ],
+ "lut_ry":
+ [
+ -0.11, -0.11, -0.21, -0.21, -0.19, -0.21, -0.19, -0.11, 0.11,
+ -0.02, -0.1, -0.14, -0.14, -0.13, -0.14, -0.15, -0.11, 0.03,
+ -0.03, -0.09, -0.12, -0.12, -0.12, -0.11, -0.12, -0.1, -0.02,
+ -0.05, -0.07, -0.1, -0.11, -0.11, -0.09, -0.08, -0.07, -0.03,
+ -0.03, -0.02, -0.04, -0.05, -0.05, -0.05, -0.02, -0.01, -0.02,
+ 0.01, 0.03, 0.0, -0.02, -0.02, -0.01, 0.02, 0.03, 0.01,
+ 0.01, 0.06, 0.06, 0.0, -0.01, 0.02, 0.06, 0.06, 0.01,
+ -0.0, 0.08, 0.12, 0.08, 0.05, 0.08, 0.1, 0.08, -0.0,
+ 0.11, 0.09, 0.19, 0.19, 0.15, 0.19, 0.18, 0.12, 0.11
+ ],
+ "lut_bx":
+ [
+ -0.3, -0.28, -0.34, -0.19, -0.01, 0.13, 0.27, 0.21, 0.2,
+ -0.24, -0.38, -0.38, -0.24, -0.02, 0.19, 0.31, 0.34, 0.2,
+ -0.4, -0.47, -0.44, -0.26, -0.03, 0.21, 0.35, 0.39, 0.38,
+ -0.52, -0.49, -0.46, -0.27, -0.02, 0.22, 0.38, 0.46, 0.54,
+ -0.56, -0.51, -0.44, -0.27, -0.02, 0.23, 0.39, 0.47, 0.64,
+ -0.52, -0.49, -0.43, -0.27, -0.02, 0.21, 0.39, 0.45, 0.59,
+ -0.39, -0.41, -0.39, -0.26, -0.02, 0.2, 0.37, 0.39, 0.47,
+ -0.2, -0.34, -0.36, -0.23, -0.03, 0.18, 0.33, 0.28, 0.19,
+ -0.2, -0.21, -0.32, -0.18, -0.04, 0.14, 0.28, 0.17, 0.2
+ ],
+ "lut_by":
+ [
+ -0.25, -0.23, -0.31, -0.36, -0.41, -0.36, -0.32, -0.19, -0.2,
+ -0.09, -0.18, -0.27, -0.32, -0.35, -0.31, -0.23, -0.17, 0.01,
+ -0.13, -0.14, -0.19, -0.2, -0.2, -0.21, -0.17, -0.12, -0.04,
+ -0.1, -0.06, -0.06, -0.07, -0.05, -0.05, -0.05, -0.04, -0.07,
+ -0.03, 0.05, 0.06, 0.07, 0.07, 0.08, 0.06, 0.03, -0.05,
+ 0.03, 0.12, 0.18, 0.19, 0.19, 0.2, 0.17, 0.11, -0.03,
+ 0.04, 0.22, 0.3, 0.37, 0.42, 0.37, 0.3, 0.21, -0.02,
+ 0.05, 0.27, 0.39, 0.5, 0.57, 0.51, 0.41, 0.25, -0.09,
+ 0.25, 0.33, 0.52, 0.65, 0.8, 0.72, 0.56, 0.33, -0.25
+ ]
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "power_min": 0.7,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "power_min": 0.7,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/imx708_wide_noir.json b/src/ipa/rpi/pisp/data/imx708_wide_noir.json
new file mode 100644
index 00000000..75d1149b
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/imx708_wide_noir.json
@@ -0,0 +1,1148 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 41985,
+ "reference_gain": 1.12,
+ "reference_aperture": 1.0,
+ "reference_lux": 810,
+ "reference_Y": 13859
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.9
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 206,
+ "slope": 0.00324
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "bayes": 0
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.65,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 1.717, 1.712, 1.703, 1.692, 1.674, 1.653, 1.638, 1.624, 1.613, 1.601, 1.589, 1.579, 1.575, 1.573, 1.571, 1.571, 1.571, 1.571, 1.572, 1.577, 1.583, 1.593, 1.605, 1.618, 1.636, 1.653, 1.677, 1.699, 1.715, 1.722, 1.731, 1.733,
+ 1.714, 1.706, 1.696, 1.678, 1.658, 1.639, 1.627, 1.614, 1.602, 1.591, 1.579, 1.572, 1.569, 1.566, 1.565, 1.564, 1.564, 1.565, 1.567, 1.571, 1.578, 1.585, 1.595, 1.607, 1.622, 1.641, 1.661, 1.685, 1.706, 1.717, 1.724, 1.732,
+ 1.708, 1.698, 1.688, 1.667, 1.647, 1.629, 1.619, 1.606, 1.593, 1.581, 1.572, 1.565, 1.561, 1.559, 1.559, 1.559, 1.559, 1.561, 1.562, 1.566, 1.571, 1.577, 1.587, 1.598, 1.612, 1.629, 1.649, 1.674, 1.697, 1.713, 1.721, 1.728,
+ 1.706, 1.695, 1.681, 1.655, 1.636, 1.622, 1.613, 1.597, 1.585, 1.572, 1.564, 1.559, 1.558, 1.556, 1.555, 1.555, 1.556, 1.556, 1.558, 1.561, 1.566, 1.571, 1.578, 1.591, 1.605, 1.619, 1.638, 1.662, 1.691, 1.708, 1.719, 1.726,
+ 1.706, 1.692, 1.675, 1.649, 1.629, 1.615, 1.607, 1.592, 1.575, 1.565, 1.559, 1.554, 1.552, 1.551, 1.551, 1.551, 1.551, 1.552, 1.554, 1.557, 1.561, 1.566, 1.573, 1.582, 1.596, 1.611, 1.627, 1.652, 1.681, 1.705, 1.717, 1.724,
+ 1.703, 1.686, 1.664, 1.639, 1.625, 1.612, 1.599, 1.585, 1.569, 1.559, 1.554, 1.549, 1.548, 1.548, 1.546, 1.546, 1.546, 1.547, 1.549, 1.553, 1.557, 1.563, 1.569, 1.576, 1.591, 1.603, 1.621, 1.644, 1.674, 1.698, 1.714, 1.724,
+ 1.702, 1.681, 1.659, 1.635, 1.621, 1.607, 1.594, 1.579, 1.565, 1.554, 1.549, 1.546, 1.544, 1.543, 1.543, 1.542, 1.543, 1.543, 1.544, 1.549, 1.553, 1.558, 1.564, 1.572, 1.584, 1.599, 1.614, 1.639, 1.667, 1.695, 1.712, 1.724,
+ 1.697, 1.678, 1.655, 1.631, 1.616, 1.602, 1.589, 1.575, 1.559, 1.551, 1.545, 1.543, 1.542, 1.542, 1.541, 1.539, 1.539, 1.539, 1.542, 1.544, 1.551, 1.555, 1.562, 1.571, 1.579, 1.594, 1.611, 1.631, 1.661, 1.691, 1.712, 1.724,
+ 1.695, 1.674, 1.651, 1.629, 1.615, 1.599, 1.584, 1.568, 1.554, 1.545, 1.542, 1.541, 1.539, 1.539, 1.538, 1.538, 1.538, 1.539, 1.539, 1.543, 1.548, 1.554, 1.559, 1.568, 1.576, 1.592, 1.608, 1.629, 1.655, 1.689, 1.709, 1.723,
+ 1.691, 1.671, 1.648, 1.627, 1.613, 1.597, 1.581, 1.564, 1.551, 1.543, 1.539, 1.538, 1.538, 1.537, 1.536, 1.535, 1.536, 1.538, 1.539, 1.542, 1.546, 1.551, 1.558, 1.564, 1.575, 1.588, 1.604, 1.627, 1.654, 1.686, 1.709, 1.724,
+ 1.689, 1.667, 1.643, 1.626, 1.612, 1.594, 1.579, 1.559, 1.549, 1.541, 1.536, 1.535, 1.535, 1.535, 1.534, 1.533, 1.534, 1.536, 1.538, 1.541, 1.545, 1.549, 1.555, 1.563, 1.573, 1.585, 1.602, 1.624, 1.651, 1.683, 1.709, 1.725,
+ 1.686, 1.665, 1.641, 1.623, 1.609, 1.594, 1.576, 1.559, 1.546, 1.538, 1.535, 1.534, 1.533, 1.532, 1.531, 1.531, 1.532, 1.534, 1.537, 1.539, 1.544, 1.549, 1.554, 1.562, 1.572, 1.585, 1.601, 1.622, 1.651, 1.682, 1.711, 1.726,
+ 1.686, 1.661, 1.639, 1.623, 1.609, 1.592, 1.574, 1.557, 1.545, 1.537, 1.534, 1.533, 1.532, 1.531, 1.529, 1.528, 1.529, 1.532, 1.537, 1.539, 1.542, 1.548, 1.553, 1.562, 1.571, 1.584, 1.601, 1.621, 1.649, 1.682, 1.711, 1.726,
+ 1.685, 1.661, 1.638, 1.624, 1.609, 1.592, 1.574, 1.557, 1.544, 1.536, 1.533, 1.532, 1.531, 1.529, 1.527, 1.522, 1.526, 1.531, 1.536, 1.539, 1.542, 1.547, 1.553, 1.562, 1.571, 1.583, 1.601, 1.621, 1.648, 1.682, 1.711, 1.726,
+ 1.684, 1.658, 1.638, 1.624, 1.611, 1.592, 1.573, 1.556, 1.543, 1.536, 1.532, 1.531, 1.529, 1.528, 1.522, 1.517, 1.519, 1.527, 1.535, 1.539, 1.541, 1.547, 1.553, 1.562, 1.571, 1.583, 1.601, 1.622, 1.647, 1.681, 1.711, 1.727,
+ 1.681, 1.658, 1.641, 1.624, 1.611, 1.593, 1.573, 1.555, 1.541, 1.535, 1.532, 1.529, 1.529, 1.527, 1.517, 1.506, 1.506, 1.522, 1.534, 1.538, 1.541, 1.546, 1.552, 1.562, 1.569, 1.583, 1.601, 1.622, 1.646, 1.679, 1.709, 1.728,
+ 1.679, 1.656, 1.639, 1.624, 1.611, 1.595, 1.575, 1.556, 1.541, 1.534, 1.531, 1.529, 1.529, 1.527, 1.517, 1.507, 1.507, 1.522, 1.533, 1.538, 1.539, 1.546, 1.552, 1.561, 1.569, 1.584, 1.601, 1.622, 1.647, 1.681, 1.709, 1.726,
+ 1.678, 1.656, 1.638, 1.625, 1.612, 1.597, 1.577, 1.557, 1.542, 1.534, 1.529, 1.529, 1.528, 1.527, 1.522, 1.516, 1.519, 1.525, 1.533, 1.537, 1.539, 1.545, 1.552, 1.561, 1.571, 1.584, 1.601, 1.623, 1.649, 1.681, 1.709, 1.726,
+ 1.679, 1.654, 1.639, 1.626, 1.613, 1.598, 1.578, 1.558, 1.543, 1.534, 1.529, 1.529, 1.529, 1.528, 1.527, 1.522, 1.525, 1.528, 1.533, 1.536, 1.539, 1.546, 1.553, 1.561, 1.571, 1.586, 1.602, 1.623, 1.651, 1.683, 1.712, 1.726,
+ 1.677, 1.655, 1.641, 1.628, 1.615, 1.599, 1.581, 1.562, 1.545, 1.535, 1.531, 1.529, 1.529, 1.528, 1.527, 1.527, 1.528, 1.531, 1.533, 1.536, 1.539, 1.545, 1.552, 1.561, 1.572, 1.588, 1.607, 1.626, 1.654, 1.686, 1.716, 1.729,
+ 1.676, 1.655, 1.642, 1.629, 1.617, 1.602, 1.586, 1.564, 1.546, 1.536, 1.531, 1.529, 1.529, 1.529, 1.529, 1.529, 1.529, 1.532, 1.534, 1.536, 1.539, 1.547, 1.553, 1.563, 1.576, 1.591, 1.609, 1.627, 1.655, 1.688, 1.716, 1.729,
+ 1.676, 1.658, 1.641, 1.631, 1.617, 1.605, 1.588, 1.569, 1.553, 1.539, 1.532, 1.531, 1.529, 1.529, 1.529, 1.529, 1.531, 1.532, 1.534, 1.537, 1.541, 1.547, 1.553, 1.564, 1.578, 1.594, 1.613, 1.632, 1.659, 1.691, 1.717, 1.728,
+ 1.676, 1.658, 1.642, 1.631, 1.619, 1.608, 1.592, 1.575, 1.556, 1.542, 1.533, 1.531, 1.529, 1.529, 1.529, 1.531, 1.531, 1.532, 1.534, 1.537, 1.542, 1.548, 1.556, 1.567, 1.582, 1.598, 1.616, 1.638, 1.661, 1.693, 1.717, 1.729,
+ 1.678, 1.661, 1.644, 1.632, 1.621, 1.611, 1.596, 1.579, 1.561, 1.546, 1.536, 1.532, 1.531, 1.531, 1.531, 1.531, 1.532, 1.533, 1.535, 1.538, 1.544, 1.549, 1.559, 1.569, 1.587, 1.604, 1.618, 1.639, 1.669, 1.697, 1.718, 1.731,
+ 1.679, 1.662, 1.648, 1.635, 1.625, 1.615, 1.602, 1.586, 1.569, 1.552, 1.541, 1.535, 1.532, 1.532, 1.531, 1.532, 1.533, 1.534, 1.537, 1.541, 1.546, 1.552, 1.562, 1.576, 1.592, 1.608, 1.622, 1.647, 1.673, 1.703, 1.721, 1.734,
+ 1.684, 1.664, 1.649, 1.637, 1.627, 1.618, 1.606, 1.593, 1.576, 1.561, 1.547, 1.539, 1.535, 1.533, 1.533, 1.533, 1.534, 1.536, 1.539, 1.543, 1.549, 1.555, 1.568, 1.583, 1.596, 1.612, 1.629, 1.651, 1.681, 1.706, 1.723, 1.734,
+ 1.689, 1.669, 1.649, 1.639, 1.629, 1.621, 1.609, 1.597, 1.585, 1.567, 1.554, 1.546, 1.539, 1.536, 1.535, 1.535, 1.537, 1.538, 1.542, 1.546, 1.553, 1.562, 1.572, 1.589, 1.603, 1.619, 1.635, 1.658, 1.686, 1.708, 1.726, 1.736,
+ 1.692, 1.673, 1.655, 1.644, 1.634, 1.624, 1.614, 1.604, 1.592, 1.577, 1.566, 1.554, 1.546, 1.542, 1.538, 1.538, 1.539, 1.542, 1.546, 1.552, 1.559, 1.568, 1.581, 1.596, 1.609, 1.625, 1.642, 1.664, 1.693, 1.714, 1.727, 1.736,
+ 1.695, 1.679, 1.662, 1.647, 1.638, 1.631, 1.623, 1.612, 1.601, 1.589, 1.577, 1.565, 1.555, 1.549, 1.546, 1.545, 1.546, 1.548, 1.552, 1.559, 1.568, 1.579, 1.593, 1.604, 1.618, 1.632, 1.648, 1.676, 1.701, 1.718, 1.728, 1.739,
+ 1.699, 1.684, 1.667, 1.654, 1.644, 1.635, 1.629, 1.621, 1.609, 1.599, 1.589, 1.578, 1.568, 1.559, 1.556, 1.554, 1.554, 1.557, 1.563, 1.569, 1.578, 1.589, 1.599, 1.612, 1.625, 1.641, 1.661, 1.685, 1.707, 1.722, 1.734, 1.742,
+ 1.703, 1.691, 1.672, 1.658, 1.648, 1.639, 1.634, 1.628, 1.618, 1.606, 1.598, 1.589, 1.579, 1.573, 1.568, 1.567, 1.567, 1.568, 1.571, 1.578, 1.587, 1.597, 1.607, 1.618, 1.632, 1.651, 1.672, 1.694, 1.715, 1.728, 1.737, 1.742,
+ 1.707, 1.691, 1.676, 1.662, 1.651, 1.643, 1.638, 1.631, 1.622, 1.614, 1.604, 1.596, 1.589, 1.579, 1.575, 1.573, 1.573, 1.574, 1.578, 1.586, 1.589, 1.598, 1.609, 1.625, 1.638, 1.657, 1.679, 1.701, 1.719, 1.728, 1.738, 1.742
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 2.939, 2.935, 2.916, 2.895, 2.856, 2.825, 2.797, 2.777, 2.761, 2.741, 2.726, 2.709, 2.707, 2.704, 2.702, 2.702, 2.703, 2.706, 2.708, 2.709, 2.719, 2.735, 2.753, 2.776, 2.801, 2.832, 2.874, 2.915, 2.939, 2.943, 2.953, 2.961,
+ 2.936, 2.923, 2.901, 2.863, 2.829, 2.801, 2.781, 2.763, 2.743, 2.732, 2.712, 2.701, 2.696, 2.692, 2.691, 2.691, 2.693, 2.694, 2.696, 2.701, 2.709, 2.725, 2.741, 2.758, 2.779, 2.811, 2.838, 2.879, 2.919, 2.939, 2.948, 2.959,
+ 2.929, 2.909, 2.887, 2.847, 2.808, 2.783, 2.765, 2.748, 2.732, 2.713, 2.699, 2.691, 2.687, 2.686, 2.685, 2.685, 2.687, 2.689, 2.691, 2.694, 2.701, 2.709, 2.725, 2.745, 2.763, 2.786, 2.818, 2.863, 2.907, 2.933, 2.941, 2.955,
+ 2.929, 2.903, 2.875, 2.825, 2.791, 2.769, 2.755, 2.737, 2.718, 2.701, 2.688, 2.683, 2.681, 2.679, 2.681, 2.679, 2.681, 2.682, 2.685, 2.689, 2.694, 2.701, 2.711, 2.737, 2.754, 2.772, 2.803, 2.844, 2.894, 2.931, 2.939, 2.953,
+ 2.926, 2.895, 2.862, 2.816, 2.782, 2.759, 2.744, 2.727, 2.709, 2.691, 2.679, 2.673, 2.671, 2.669, 2.669, 2.669, 2.671, 2.674, 2.678, 2.681, 2.685, 2.694, 2.707, 2.725, 2.739, 2.762, 2.786, 2.829, 2.879, 2.919, 2.942, 2.952,
+ 2.919, 2.886, 2.846, 2.797, 2.772, 2.751, 2.737, 2.719, 2.694, 2.679, 2.672, 2.666, 2.664, 2.661, 2.659, 2.658, 2.661, 2.664, 2.669, 2.673, 2.678, 2.685, 2.696, 2.715, 2.728, 2.749, 2.774, 2.808, 2.866, 2.909, 2.936, 2.951,
+ 2.904, 2.877, 2.835, 2.789, 2.763, 2.744, 2.728, 2.712, 2.686, 2.672, 2.664, 2.657, 2.654, 2.654, 2.652, 2.653, 2.654, 2.657, 2.661, 2.666, 2.672, 2.678, 2.688, 2.703, 2.721, 2.742, 2.762, 2.797, 2.851, 2.902, 2.928, 2.949,
+ 2.901, 2.869, 2.825, 2.781, 2.756, 2.738, 2.721, 2.698, 2.679, 2.665, 2.656, 2.652, 2.649, 2.648, 2.648, 2.648, 2.649, 2.651, 2.654, 2.659, 2.667, 2.675, 2.683, 2.699, 2.711, 2.736, 2.754, 2.789, 2.838, 2.896, 2.926, 2.948,
+ 2.899, 2.862, 2.815, 2.774, 2.752, 2.734, 2.717, 2.689, 2.669, 2.658, 2.651, 2.646, 2.645, 2.643, 2.643, 2.644, 2.645, 2.646, 2.649, 2.654, 2.661, 2.669, 2.681, 2.693, 2.707, 2.729, 2.751, 2.782, 2.834, 2.887, 2.924, 2.947,
+ 2.898, 2.853, 2.812, 2.771, 2.751, 2.731, 2.711, 2.686, 2.663, 2.653, 2.646, 2.642, 2.641, 2.642, 2.642, 2.641, 2.641, 2.641, 2.646, 2.651, 2.657, 2.667, 2.678, 2.693, 2.705, 2.728, 2.746, 2.781, 2.829, 2.885, 2.924, 2.951,
+ 2.896, 2.851, 2.807, 2.771, 2.752, 2.729, 2.709, 2.681, 2.661, 2.649, 2.643, 2.641, 2.639, 2.639, 2.638, 2.636, 2.637, 2.638, 2.644, 2.649, 2.657, 2.666, 2.676, 2.688, 2.705, 2.725, 2.745, 2.777, 2.827, 2.884, 2.927, 2.951,
+ 2.891, 2.846, 2.803, 2.771, 2.749, 2.728, 2.706, 2.677, 2.658, 2.647, 2.641, 2.637, 2.637, 2.636, 2.636, 2.633, 2.632, 2.635, 2.643, 2.649, 2.656, 2.665, 2.675, 2.688, 2.704, 2.719, 2.744, 2.776, 2.822, 2.881, 2.927, 2.958,
+ 2.887, 2.841, 2.797, 2.769, 2.749, 2.729, 2.704, 2.674, 2.655, 2.645, 2.638, 2.635, 2.633, 2.632, 2.631, 2.625, 2.627, 2.631, 2.639, 2.649, 2.654, 2.662, 2.673, 2.686, 2.701, 2.718, 2.742, 2.773, 2.822, 2.881, 2.926, 2.958,
+ 2.883, 2.837, 2.796, 2.769, 2.749, 2.729, 2.701, 2.673, 2.653, 2.641, 2.636, 2.632, 2.631, 2.629, 2.623, 2.612, 2.619, 2.627, 2.637, 2.648, 2.652, 2.659, 2.671, 2.688, 2.699, 2.719, 2.742, 2.774, 2.821, 2.882, 2.927, 2.961,
+ 2.881, 2.832, 2.795, 2.769, 2.751, 2.729, 2.701, 2.672, 2.652, 2.639, 2.633, 2.631, 2.628, 2.625, 2.611, 2.599, 2.607, 2.619, 2.635, 2.644, 2.652, 2.659, 2.669, 2.686, 2.698, 2.719, 2.743, 2.775, 2.822, 2.881, 2.926, 2.961,
+ 2.879, 2.829, 2.793, 2.771, 2.751, 2.731, 2.701, 2.672, 2.651, 2.639, 2.632, 2.628, 2.626, 2.621, 2.601, 2.581, 2.581, 2.611, 2.631, 2.642, 2.648, 2.657, 2.669, 2.685, 2.699, 2.721, 2.743, 2.776, 2.819, 2.879, 2.927, 2.961,
+ 2.876, 2.829, 2.796, 2.773, 2.752, 2.731, 2.705, 2.672, 2.651, 2.637, 2.631, 2.627, 2.625, 2.619, 2.601, 2.581, 2.581, 2.611, 2.629, 2.641, 2.647, 2.658, 2.669, 2.685, 2.697, 2.721, 2.746, 2.777, 2.822, 2.881, 2.929, 2.964,
+ 2.874, 2.827, 2.796, 2.775, 2.755, 2.733, 2.708, 2.674, 2.649, 2.635, 2.629, 2.626, 2.624, 2.621, 2.609, 2.601, 2.606, 2.615, 2.629, 2.638, 2.645, 2.657, 2.669, 2.682, 2.699, 2.722, 2.747, 2.778, 2.822, 2.881, 2.931, 2.964,
+ 2.871, 2.827, 2.797, 2.776, 2.761, 2.734, 2.711, 2.679, 2.651, 2.636, 2.628, 2.626, 2.624, 2.621, 2.618, 2.611, 2.614, 2.619, 2.628, 2.639, 2.644, 2.657, 2.668, 2.683, 2.698, 2.723, 2.749, 2.782, 2.824, 2.882, 2.933, 2.965,
+ 2.869, 2.825, 2.797, 2.777, 2.765, 2.741, 2.718, 2.683, 2.655, 2.638, 2.627, 2.625, 2.624, 2.623, 2.621, 2.618, 2.618, 2.624, 2.629, 2.639, 2.644, 2.657, 2.669, 2.684, 2.701, 2.725, 2.755, 2.782, 2.829, 2.887, 2.937, 2.965,
+ 2.871, 2.826, 2.799, 2.776, 2.765, 2.744, 2.723, 2.689, 2.659, 2.639, 2.629, 2.626, 2.626, 2.624, 2.624, 2.622, 2.624, 2.627, 2.632, 2.639, 2.646, 2.657, 2.671, 2.687, 2.706, 2.732, 2.757, 2.789, 2.836, 2.893, 2.941, 2.965,
+ 2.869, 2.831, 2.803, 2.778, 2.766, 2.748, 2.729, 2.697, 2.667, 2.645, 2.632, 2.628, 2.625, 2.625, 2.625, 2.625, 2.627, 2.629, 2.634, 2.638, 2.648, 2.661, 2.673, 2.688, 2.711, 2.741, 2.762, 2.797, 2.843, 2.901, 2.943, 2.964,
+ 2.872, 2.837, 2.802, 2.781, 2.768, 2.753, 2.734, 2.702, 2.674, 2.647, 2.634, 2.629, 2.626, 2.625, 2.625, 2.627, 2.629, 2.632, 2.635, 2.639, 2.649, 2.663, 2.676, 2.694, 2.719, 2.746, 2.771, 2.799, 2.851, 2.905, 2.947, 2.969,
+ 2.871, 2.837, 2.805, 2.786, 2.771, 2.755, 2.739, 2.714, 2.685, 2.655, 2.639, 2.631, 2.626, 2.625, 2.626, 2.628, 2.629, 2.632, 2.634, 2.642, 2.651, 2.663, 2.679, 2.701, 2.726, 2.756, 2.773, 2.809, 2.861, 2.913, 2.949, 2.968,
+ 2.876, 2.841, 2.808, 2.789, 2.775, 2.759, 2.744, 2.719, 2.693, 2.664, 2.648, 2.636, 2.629, 2.627, 2.627, 2.629, 2.631, 2.633, 2.637, 2.645, 2.653, 2.666, 2.682, 2.708, 2.734, 2.759, 2.779, 2.815, 2.868, 2.918, 2.951, 2.971,
+ 2.882, 2.845, 2.816, 2.791, 2.778, 2.766, 2.748, 2.733, 2.707, 2.681, 2.656, 2.643, 2.636, 2.632, 2.631, 2.632, 2.633, 2.637, 2.643, 2.648, 2.659, 2.672, 2.691, 2.719, 2.747, 2.765, 2.791, 2.829, 2.881, 2.931, 2.952, 2.969,
+ 2.889, 2.855, 2.819, 2.799, 2.782, 2.769, 2.755, 2.741, 2.717, 2.691, 2.672, 2.652, 2.643, 2.639, 2.636, 2.636, 2.638, 2.642, 2.646, 2.655, 2.665, 2.682, 2.703, 2.729, 2.752, 2.774, 2.798, 2.839, 2.891, 2.933, 2.959, 2.975,
+ 2.897, 2.862, 2.829, 2.804, 2.789, 2.776, 2.764, 2.749, 2.734, 2.709, 2.689, 2.669, 2.652, 2.644, 2.642, 2.642, 2.644, 2.647, 2.654, 2.664, 2.677, 2.694, 2.714, 2.742, 2.764, 2.782, 2.809, 2.852, 2.899, 2.936, 2.961, 2.976,
+ 2.902, 2.869, 2.841, 2.811, 2.797, 2.785, 2.776, 2.761, 2.748, 2.727, 2.708, 2.689, 2.671, 2.659, 2.655, 2.654, 2.653, 2.656, 2.666, 2.678, 2.693, 2.713, 2.737, 2.756, 2.775, 2.798, 2.825, 2.871, 2.913, 2.944, 2.966, 2.979,
+ 2.911, 2.885, 2.848, 2.821, 2.804, 2.793, 2.784, 2.774, 2.759, 2.747, 2.726, 2.709, 2.692, 2.679, 2.673, 2.672, 2.671, 2.672, 2.681, 2.694, 2.712, 2.729, 2.749, 2.768, 2.789, 2.811, 2.844, 2.886, 2.928, 2.956, 2.971, 2.984,
+ 2.925, 2.893, 2.861, 2.831, 2.813, 2.802, 2.795, 2.783, 2.773, 2.759, 2.744, 2.729, 2.715, 2.701, 2.698, 2.694, 2.693, 2.694, 2.702, 2.714, 2.729, 2.747, 2.761, 2.781, 2.802, 2.828, 2.864, 2.907, 2.942, 2.967, 2.978, 2.989,
+ 2.932, 2.898, 2.871, 2.843, 2.823, 2.811, 2.802, 2.794, 2.779, 2.772, 2.757, 2.742, 2.729, 2.716, 2.705, 2.704, 2.704, 2.707, 2.715, 2.727, 2.737, 2.754, 2.769, 2.788, 2.812, 2.845, 2.878, 2.923, 2.962, 2.973, 2.979, 2.994
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 3.018, 3.021, 3.026, 3.052, 3.092, 3.143, 3.181, 3.202, 3.209, 3.212, 3.211, 3.209, 3.197, 3.193, 3.185, 3.184, 3.185, 3.187, 3.191, 3.202, 3.211, 3.213, 3.212, 3.203, 3.189, 3.147, 3.099, 3.051, 3.032, 3.031, 3.048, 3.054,
+ 3.019, 3.023, 3.033, 3.066, 3.123, 3.163, 3.196, 3.206, 3.212, 3.212, 3.211, 3.203, 3.193, 3.179, 3.168, 3.159, 3.159, 3.163, 3.174, 3.188, 3.203, 3.208, 3.211, 3.209, 3.195, 3.168, 3.114, 3.064, 3.035, 3.033, 3.044, 3.051,
+ 3.021, 3.028, 3.046, 3.099, 3.156, 3.192, 3.209, 3.215, 3.216, 3.213, 3.203, 3.193, 3.176, 3.159, 3.153, 3.151, 3.149, 3.152, 3.159, 3.171, 3.188, 3.201, 3.209, 3.211, 3.207, 3.189, 3.142, 3.083, 3.042, 3.038, 3.043, 3.046,
+ 3.022, 3.037, 3.065, 3.124, 3.178, 3.206, 3.215, 3.221, 3.218, 3.217, 3.198, 3.179, 3.162, 3.149, 3.138, 3.133, 3.133, 3.136, 3.145, 3.156, 3.174, 3.192, 3.206, 3.215, 3.214, 3.202, 3.159, 3.105, 3.058, 3.042, 3.043, 3.049,
+ 3.024, 3.047, 3.084, 3.151, 3.195, 3.211, 3.219, 3.223, 3.218, 3.208, 3.182, 3.164, 3.149, 3.137, 3.127, 3.119, 3.119, 3.124, 3.134, 3.144, 3.157, 3.178, 3.194, 3.213, 3.215, 3.208, 3.166, 3.124, 3.074, 3.044, 3.044, 3.049,
+ 3.023, 3.058, 3.102, 3.161, 3.201, 3.217, 3.224, 3.223, 3.217, 3.195, 3.174, 3.156, 3.137, 3.125, 3.115, 3.109, 3.109, 3.115, 3.121, 3.131, 3.146, 3.159, 3.186, 3.208, 3.213, 3.211, 3.181, 3.138, 3.084, 3.047, 3.047, 3.049,
+ 3.031, 3.063, 3.126, 3.183, 3.212, 3.224, 3.225, 3.224, 3.216, 3.191, 3.167, 3.143, 3.129, 3.115, 3.105, 3.103, 3.103, 3.107, 3.114, 3.121, 3.131, 3.148, 3.169, 3.199, 3.211, 3.209, 3.186, 3.151, 3.089, 3.051, 3.049, 3.052,
+ 3.033, 3.083, 3.141, 3.201, 3.221, 3.226, 3.226, 3.224, 3.212, 3.187, 3.159, 3.138, 3.119, 3.107, 3.101, 3.098, 3.098, 3.102, 3.107, 3.115, 3.124, 3.138, 3.161, 3.185, 3.207, 3.209, 3.197, 3.162, 3.112, 3.059, 3.056, 3.057,
+ 3.038, 3.092, 3.159, 3.212, 3.225, 3.231, 3.228, 3.224, 3.209, 3.181, 3.152, 3.129, 3.112, 3.103, 3.095, 3.092, 3.093, 3.095, 3.101, 3.108, 3.118, 3.133, 3.152, 3.179, 3.203, 3.209, 3.205, 3.174, 3.124, 3.069, 3.059, 3.058,
+ 3.049, 3.105, 3.176, 3.223, 3.229, 3.231, 3.229, 3.223, 3.206, 3.171, 3.147, 3.125, 3.109, 3.097, 3.091, 3.089, 3.088, 3.091, 3.094, 3.102, 3.111, 3.124, 3.143, 3.169, 3.196, 3.208, 3.207, 3.181, 3.132, 3.079, 3.064, 3.063,
+ 3.055, 3.123, 3.189, 3.226, 3.232, 3.232, 3.229, 3.225, 3.204, 3.169, 3.143, 3.122, 3.108, 3.095, 3.092, 3.089, 3.088, 3.088, 3.092, 3.095, 3.105, 3.117, 3.135, 3.159, 3.191, 3.208, 3.208, 3.189, 3.141, 3.084, 3.064, 3.062,
+ 3.057, 3.127, 3.198, 3.228, 3.233, 3.233, 3.229, 3.225, 3.201, 3.166, 3.139, 3.119, 3.106, 3.096, 3.093, 3.092, 3.088, 3.088, 3.089, 3.093, 3.099, 3.114, 3.129, 3.156, 3.186, 3.208, 3.208, 3.195, 3.143, 3.089, 3.065, 3.064,
+ 3.066, 3.142, 3.209, 3.232, 3.234, 3.233, 3.231, 3.226, 3.198, 3.166, 3.138, 3.117, 3.103, 3.097, 3.095, 3.095, 3.094, 3.089, 3.089, 3.092, 3.097, 3.109, 3.126, 3.155, 3.183, 3.207, 3.207, 3.198, 3.147, 3.091, 3.069, 3.065,
+ 3.072, 3.153, 3.216, 3.231, 3.234, 3.234, 3.229, 3.226, 3.194, 3.165, 3.136, 3.114, 3.101, 3.098, 3.098, 3.104, 3.098, 3.091, 3.088, 3.089, 3.093, 3.103, 3.123, 3.151, 3.181, 3.204, 3.204, 3.197, 3.156, 3.095, 3.069, 3.068,
+ 3.079, 3.159, 3.222, 3.233, 3.236, 3.235, 3.231, 3.226, 3.194, 3.165, 3.133, 3.112, 3.102, 3.099, 3.107, 3.114, 3.111, 3.097, 3.089, 3.089, 3.091, 3.099, 3.121, 3.149, 3.182, 3.202, 3.202, 3.195, 3.156, 3.096, 3.069, 3.068,
+ 3.081, 3.164, 3.226, 3.233, 3.236, 3.235, 3.233, 3.229, 3.199, 3.165, 3.137, 3.113, 3.102, 3.102, 3.111, 3.134, 3.134, 3.103, 3.091, 3.089, 3.092, 3.101, 3.119, 3.147, 3.182, 3.202, 3.202, 3.194, 3.155, 3.095, 3.069, 3.067,
+ 3.085, 3.163, 3.225, 3.236, 3.239, 3.235, 3.234, 3.231, 3.203, 3.169, 3.141, 3.115, 3.103, 3.103, 3.111, 3.134, 3.134, 3.106, 3.092, 3.091, 3.093, 3.103, 3.119, 3.149, 3.185, 3.203, 3.203, 3.193, 3.152, 3.095, 3.068, 3.066,
+ 3.083, 3.168, 3.226, 3.236, 3.241, 3.235, 3.235, 3.231, 3.205, 3.174, 3.144, 3.117, 3.107, 3.103, 3.107, 3.116, 3.109, 3.103, 3.091, 3.091, 3.095, 3.107, 3.123, 3.152, 3.188, 3.204, 3.204, 3.193, 3.151, 3.095, 3.069, 3.066,
+ 3.082, 3.171, 3.228, 3.237, 3.239, 3.235, 3.234, 3.233, 3.217, 3.184, 3.147, 3.119, 3.108, 3.104, 3.103, 3.105, 3.102, 3.095, 3.091, 3.091, 3.097, 3.111, 3.128, 3.157, 3.191, 3.204, 3.204, 3.185, 3.149, 3.094, 3.069, 3.065,
+ 3.086, 3.173, 3.226, 3.237, 3.239, 3.235, 3.234, 3.232, 3.221, 3.185, 3.155, 3.124, 3.112, 3.105, 3.102, 3.099, 3.096, 3.094, 3.092, 3.094, 3.102, 3.114, 3.133, 3.163, 3.197, 3.205, 3.204, 3.183, 3.144, 3.089, 3.068, 3.065,
+ 3.086, 3.166, 3.225, 3.239, 3.239, 3.237, 3.233, 3.231, 3.223, 3.193, 3.165, 3.135, 3.118, 3.108, 3.101, 3.098, 3.095, 3.093, 3.093, 3.099, 3.109, 3.124, 3.145, 3.174, 3.199, 3.204, 3.203, 3.181, 3.132, 3.085, 3.067, 3.062,
+ 3.086, 3.162, 3.224, 3.239, 3.241, 3.236, 3.232, 3.229, 3.224, 3.201, 3.174, 3.147, 3.128, 3.114, 3.103, 3.099, 3.096, 3.095, 3.097, 3.106, 3.116, 3.134, 3.151, 3.182, 3.201, 3.203, 3.201, 3.176, 3.125, 3.078, 3.065, 3.061,
+ 3.077, 3.162, 3.221, 3.239, 3.241, 3.234, 3.229, 3.227, 3.225, 3.207, 3.186, 3.161, 3.137, 3.122, 3.112, 3.102, 3.099, 3.098, 3.106, 3.113, 3.127, 3.139, 3.159, 3.192, 3.204, 3.205, 3.198, 3.167, 3.119, 3.073, 3.062, 3.061,
+ 3.077, 3.161, 3.216, 3.234, 3.236, 3.232, 3.225, 3.225, 3.222, 3.209, 3.194, 3.172, 3.148, 3.132, 3.121, 3.113, 3.107, 3.107, 3.112, 3.124, 3.135, 3.151, 3.175, 3.196, 3.201, 3.201, 3.191, 3.161, 3.114, 3.062, 3.058, 3.057,
+ 3.073, 3.139, 3.201, 3.227, 3.232, 3.227, 3.223, 3.219, 3.216, 3.212, 3.203, 3.181, 3.161, 3.142, 3.129, 3.121, 3.114, 3.114, 3.124, 3.134, 3.145, 3.161, 3.179, 3.196, 3.199, 3.195, 3.182, 3.145, 3.093, 3.052, 3.051, 3.052,
+ 3.066, 3.126, 3.192, 3.218, 3.224, 3.221, 3.218, 3.214, 3.214, 3.209, 3.204, 3.191, 3.174, 3.155, 3.142, 3.129, 3.127, 3.127, 3.136, 3.145, 3.157, 3.175, 3.187, 3.194, 3.196, 3.192, 3.171, 3.134, 3.082, 3.043, 3.042, 3.044,
+ 3.056, 3.114, 3.176, 3.212, 3.219, 3.219, 3.214, 3.209, 3.208, 3.206, 3.203, 3.198, 3.182, 3.171, 3.155, 3.146, 3.144, 3.144, 3.148, 3.156, 3.171, 3.181, 3.188, 3.194, 3.194, 3.187, 3.161, 3.117, 3.066, 3.037, 3.037, 3.044,
+ 3.054, 3.101, 3.162, 3.203, 3.216, 3.215, 3.211, 3.206, 3.203, 3.201, 3.199, 3.197, 3.191, 3.179, 3.171, 3.161, 3.156, 3.156, 3.161, 3.171, 3.179, 3.184, 3.189, 3.192, 3.191, 3.181, 3.142, 3.097, 3.045, 3.032, 3.033, 3.039,
+ 3.041, 3.093, 3.149, 3.194, 3.208, 3.211, 3.208, 3.202, 3.197, 3.197, 3.197, 3.195, 3.191, 3.189, 3.181, 3.176, 3.172, 3.173, 3.178, 3.181, 3.185, 3.187, 3.189, 3.191, 3.189, 3.173, 3.133, 3.085, 3.034, 3.029, 3.031, 3.038,
+ 3.032, 3.079, 3.133, 3.181, 3.197, 3.207, 3.204, 3.198, 3.193, 3.192, 3.189, 3.191, 3.189, 3.187, 3.185, 3.183, 3.183, 3.183, 3.185, 3.188, 3.187, 3.188, 3.189, 3.188, 3.184, 3.164, 3.118, 3.075, 3.031, 3.026, 3.028, 3.039,
+ 3.025, 3.051, 3.099, 3.149, 3.182, 3.193, 3.193, 3.187, 3.181, 3.178, 3.177, 3.177, 3.182, 3.183, 3.183, 3.183, 3.183, 3.184, 3.187, 3.188, 3.186, 3.184, 3.184, 3.181, 3.167, 3.139, 3.098, 3.053, 3.026, 3.024, 3.029, 3.043,
+ 3.016, 3.025, 3.081, 3.122, 3.167, 3.182, 3.185, 3.181, 3.176, 3.171, 3.169, 3.171, 3.174, 3.175, 3.178, 3.178, 3.179, 3.181, 3.185, 3.185, 3.181, 3.179, 3.177, 3.173, 3.151, 3.119, 3.076, 3.031, 3.021, 3.018, 3.024, 3.046
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.503, 1.503, 1.504, 1.515, 1.541, 1.566, 1.587, 1.599, 1.602, 1.603, 1.602, 1.599, 1.595, 1.589, 1.587, 1.586, 1.586, 1.587, 1.589, 1.594, 1.601, 1.604, 1.604, 1.601, 1.589, 1.571, 1.541, 1.517, 1.512, 1.512, 1.522, 1.526,
+ 1.501, 1.502, 1.506, 1.523, 1.557, 1.579, 1.596, 1.603, 1.603, 1.603, 1.601, 1.597, 1.591, 1.582, 1.576, 1.575, 1.574, 1.577, 1.581, 1.588, 1.595, 1.601, 1.603, 1.602, 1.597, 1.578, 1.553, 1.526, 1.512, 1.512, 1.519, 1.526,
+ 1.499, 1.503, 1.512, 1.539, 1.571, 1.593, 1.603, 1.604, 1.604, 1.602, 1.597, 1.591, 1.581, 1.573, 1.568, 1.566, 1.566, 1.568, 1.572, 1.579, 1.587, 1.594, 1.602, 1.603, 1.601, 1.589, 1.566, 1.536, 1.517, 1.516, 1.519, 1.525,
+ 1.499, 1.505, 1.521, 1.553, 1.582, 1.597, 1.604, 1.604, 1.604, 1.601, 1.592, 1.582, 1.573, 1.564, 1.561, 1.558, 1.557, 1.559, 1.564, 1.571, 1.579, 1.588, 1.597, 1.603, 1.603, 1.596, 1.576, 1.545, 1.519, 1.517, 1.518, 1.526,
+ 1.499, 1.509, 1.529, 1.565, 1.591, 1.601, 1.605, 1.604, 1.602, 1.597, 1.586, 1.573, 1.565, 1.558, 1.553, 1.551, 1.551, 1.552, 1.555, 1.563, 1.571, 1.581, 1.592, 1.601, 1.602, 1.599, 1.582, 1.556, 1.528, 1.517, 1.517, 1.526,
+ 1.501, 1.512, 1.539, 1.576, 1.595, 1.603, 1.605, 1.604, 1.601, 1.591, 1.579, 1.567, 1.559, 1.552, 1.548, 1.545, 1.546, 1.548, 1.551, 1.555, 1.563, 1.574, 1.585, 1.598, 1.602, 1.601, 1.589, 1.562, 1.535, 1.519, 1.519, 1.528,
+ 1.501, 1.517, 1.552, 1.587, 1.601, 1.605, 1.605, 1.605, 1.599, 1.588, 1.574, 1.562, 1.553, 1.548, 1.544, 1.543, 1.543, 1.545, 1.547, 1.551, 1.557, 1.567, 1.578, 1.593, 1.601, 1.601, 1.592, 1.571, 1.539, 1.521, 1.521, 1.529,
+ 1.503, 1.524, 1.561, 1.593, 1.605, 1.606, 1.605, 1.603, 1.598, 1.585, 1.569, 1.558, 1.551, 1.545, 1.542, 1.541, 1.541, 1.542, 1.545, 1.547, 1.555, 1.561, 1.573, 1.587, 1.598, 1.601, 1.596, 1.577, 1.546, 1.523, 1.523, 1.529,
+ 1.503, 1.532, 1.568, 1.597, 1.605, 1.606, 1.605, 1.603, 1.596, 1.581, 1.565, 1.555, 1.548, 1.544, 1.541, 1.539, 1.541, 1.541, 1.543, 1.546, 1.549, 1.558, 1.568, 1.583, 1.595, 1.601, 1.599, 1.582, 1.555, 1.525, 1.525, 1.531,
+ 1.508, 1.539, 1.575, 1.601, 1.605, 1.606, 1.605, 1.602, 1.593, 1.577, 1.563, 1.552, 1.546, 1.543, 1.541, 1.539, 1.539, 1.541, 1.542, 1.544, 1.548, 1.553, 1.564, 1.579, 1.592, 1.599, 1.599, 1.585, 1.559, 1.532, 1.531, 1.531,
+ 1.511, 1.544, 1.581, 1.603, 1.606, 1.606, 1.604, 1.603, 1.591, 1.574, 1.561, 1.549, 1.545, 1.542, 1.541, 1.541, 1.541, 1.541, 1.542, 1.543, 1.545, 1.551, 1.561, 1.573, 1.591, 1.599, 1.599, 1.588, 1.563, 1.535, 1.531, 1.531,
+ 1.515, 1.548, 1.589, 1.605, 1.607, 1.607, 1.604, 1.602, 1.591, 1.573, 1.559, 1.549, 1.543, 1.542, 1.541, 1.542, 1.542, 1.542, 1.541, 1.542, 1.543, 1.549, 1.558, 1.571, 1.588, 1.599, 1.599, 1.591, 1.566, 1.537, 1.532, 1.531,
+ 1.517, 1.558, 1.593, 1.606, 1.607, 1.607, 1.605, 1.602, 1.589, 1.572, 1.557, 1.548, 1.543, 1.543, 1.542, 1.544, 1.543, 1.543, 1.541, 1.541, 1.542, 1.546, 1.554, 1.569, 1.585, 1.599, 1.599, 1.593, 1.568, 1.538, 1.533, 1.531,
+ 1.521, 1.563, 1.596, 1.607, 1.608, 1.607, 1.606, 1.603, 1.589, 1.572, 1.557, 1.548, 1.543, 1.543, 1.544, 1.549, 1.546, 1.544, 1.541, 1.541, 1.542, 1.545, 1.553, 1.568, 1.585, 1.598, 1.598, 1.594, 1.571, 1.541, 1.534, 1.531,
+ 1.521, 1.566, 1.599, 1.607, 1.608, 1.607, 1.605, 1.603, 1.591, 1.571, 1.556, 1.547, 1.544, 1.544, 1.551, 1.554, 1.552, 1.546, 1.541, 1.541, 1.541, 1.544, 1.553, 1.567, 1.585, 1.597, 1.598, 1.595, 1.571, 1.541, 1.534, 1.531,
+ 1.523, 1.568, 1.601, 1.607, 1.608, 1.607, 1.606, 1.604, 1.591, 1.572, 1.557, 1.547, 1.545, 1.545, 1.552, 1.566, 1.566, 1.551, 1.542, 1.541, 1.541, 1.544, 1.553, 1.567, 1.586, 1.596, 1.596, 1.593, 1.571, 1.541, 1.533, 1.531,
+ 1.524, 1.569, 1.602, 1.607, 1.608, 1.607, 1.606, 1.604, 1.591, 1.573, 1.559, 1.548, 1.545, 1.546, 1.552, 1.565, 1.565, 1.551, 1.542, 1.541, 1.541, 1.545, 1.553, 1.568, 1.586, 1.597, 1.597, 1.593, 1.571, 1.541, 1.532, 1.532,
+ 1.526, 1.571, 1.602, 1.607, 1.608, 1.606, 1.605, 1.604, 1.593, 1.575, 1.559, 1.549, 1.546, 1.546, 1.549, 1.552, 1.552, 1.546, 1.542, 1.541, 1.542, 1.546, 1.555, 1.569, 1.587, 1.597, 1.597, 1.591, 1.569, 1.539, 1.532, 1.531,
+ 1.526, 1.571, 1.601, 1.608, 1.609, 1.605, 1.605, 1.603, 1.597, 1.579, 1.562, 1.551, 1.546, 1.545, 1.545, 1.549, 1.546, 1.543, 1.542, 1.541, 1.542, 1.547, 1.557, 1.573, 1.588, 1.597, 1.597, 1.589, 1.566, 1.537, 1.531, 1.529,
+ 1.526, 1.569, 1.602, 1.609, 1.609, 1.606, 1.605, 1.604, 1.598, 1.582, 1.567, 1.553, 1.547, 1.545, 1.544, 1.544, 1.544, 1.542, 1.542, 1.542, 1.544, 1.552, 1.559, 1.576, 1.591, 1.597, 1.597, 1.588, 1.563, 1.535, 1.531, 1.529,
+ 1.523, 1.567, 1.601, 1.609, 1.609, 1.606, 1.605, 1.603, 1.599, 1.587, 1.571, 1.558, 1.549, 1.545, 1.544, 1.543, 1.543, 1.542, 1.542, 1.544, 1.548, 1.555, 1.566, 1.581, 1.593, 1.597, 1.597, 1.586, 1.558, 1.534, 1.529, 1.529,
+ 1.523, 1.564, 1.599, 1.609, 1.609, 1.605, 1.604, 1.603, 1.601, 1.592, 1.576, 1.564, 1.553, 1.547, 1.544, 1.543, 1.542, 1.542, 1.544, 1.548, 1.551, 1.561, 1.572, 1.585, 1.594, 1.596, 1.595, 1.581, 1.555, 1.528, 1.527, 1.528,
+ 1.522, 1.561, 1.595, 1.608, 1.608, 1.604, 1.602, 1.601, 1.601, 1.595, 1.582, 1.569, 1.559, 1.552, 1.547, 1.545, 1.543, 1.544, 1.546, 1.551, 1.556, 1.563, 1.576, 1.589, 1.595, 1.596, 1.593, 1.576, 1.551, 1.524, 1.524, 1.528,
+ 1.519, 1.559, 1.591, 1.605, 1.606, 1.603, 1.601, 1.599, 1.601, 1.597, 1.587, 1.576, 1.565, 1.558, 1.552, 1.549, 1.546, 1.547, 1.552, 1.556, 1.561, 1.571, 1.582, 1.593, 1.596, 1.596, 1.591, 1.569, 1.546, 1.521, 1.521, 1.527,
+ 1.516, 1.553, 1.589, 1.602, 1.604, 1.602, 1.599, 1.598, 1.599, 1.598, 1.594, 1.583, 1.572, 1.564, 1.559, 1.553, 1.552, 1.553, 1.556, 1.561, 1.567, 1.578, 1.588, 1.594, 1.596, 1.594, 1.588, 1.567, 1.539, 1.517, 1.517, 1.525,
+ 1.511, 1.548, 1.581, 1.599, 1.602, 1.602, 1.598, 1.597, 1.597, 1.597, 1.595, 1.589, 1.581, 1.571, 1.564, 1.559, 1.559, 1.558, 1.561, 1.567, 1.575, 1.583, 1.591, 1.593, 1.594, 1.591, 1.581, 1.557, 1.529, 1.514, 1.514, 1.521,
+ 1.508, 1.541, 1.576, 1.596, 1.601, 1.601, 1.597, 1.595, 1.594, 1.595, 1.595, 1.592, 1.585, 1.579, 1.571, 1.566, 1.566, 1.566, 1.568, 1.575, 1.582, 1.589, 1.592, 1.593, 1.593, 1.589, 1.575, 1.553, 1.523, 1.511, 1.511, 1.517,
+ 1.505, 1.535, 1.566, 1.591, 1.599, 1.598, 1.596, 1.594, 1.592, 1.592, 1.593, 1.592, 1.589, 1.585, 1.579, 1.575, 1.574, 1.574, 1.577, 1.582, 1.587, 1.591, 1.592, 1.593, 1.592, 1.585, 1.568, 1.541, 1.516, 1.509, 1.509, 1.517,
+ 1.501, 1.528, 1.559, 1.585, 1.595, 1.597, 1.595, 1.593, 1.589, 1.588, 1.591, 1.591, 1.591, 1.589, 1.586, 1.583, 1.582, 1.582, 1.585, 1.588, 1.589, 1.591, 1.592, 1.593, 1.592, 1.582, 1.561, 1.536, 1.512, 1.509, 1.511, 1.517,
+ 1.496, 1.521, 1.549, 1.576, 1.588, 1.594, 1.593, 1.589, 1.586, 1.585, 1.586, 1.588, 1.589, 1.588, 1.588, 1.587, 1.587, 1.587, 1.589, 1.589, 1.591, 1.591, 1.592, 1.592, 1.591, 1.575, 1.555, 1.527, 1.508, 1.507, 1.511, 1.519,
+ 1.495, 1.505, 1.536, 1.563, 1.581, 1.587, 1.588, 1.584, 1.582, 1.578, 1.578, 1.581, 1.583, 1.584, 1.586, 1.587, 1.587, 1.587, 1.588, 1.589, 1.589, 1.591, 1.591, 1.591, 1.584, 1.566, 1.544, 1.518, 1.505, 1.505, 1.509, 1.519,
+ 1.493, 1.496, 1.522, 1.547, 1.569, 1.581, 1.582, 1.581, 1.577, 1.575, 1.573, 1.575, 1.579, 1.581, 1.583, 1.584, 1.584, 1.585, 1.587, 1.587, 1.588, 1.588, 1.588, 1.585, 1.573, 1.556, 1.532, 1.511, 1.504, 1.504, 1.508, 1.523
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 4.461, 4.088, 3.793, 3.651, 3.557, 3.439, 3.248, 2.999, 2.751, 2.527, 2.341, 2.191, 2.069, 1.956, 1.907, 1.907, 1.907, 1.908, 1.946, 2.056, 2.179, 2.328, 2.517, 2.747, 2.998, 3.219, 3.359, 3.436, 3.494, 3.621, 3.906, 4.251,
+ 4.297, 3.982, 3.747, 3.634, 3.531, 3.373, 3.136, 2.863, 2.608, 2.386, 2.209, 2.075, 1.957, 1.873, 1.817, 1.789, 1.789, 1.813, 1.865, 1.947, 2.066, 2.198, 2.378, 2.605, 2.872, 3.132, 3.322, 3.431, 3.485, 3.577, 3.802, 4.079,
+ 4.152, 3.905, 3.717, 3.623, 3.499, 3.296, 3.022, 2.735, 2.478, 2.265, 2.094, 1.957, 1.849, 1.763, 1.709, 1.679, 1.679, 1.703, 1.753, 1.837, 1.947, 2.081, 2.253, 2.472, 2.742, 3.032, 3.271, 3.414, 3.479, 3.545, 3.719, 3.937,
+ 4.039, 3.835, 3.688, 3.596, 3.442, 3.196, 2.899, 2.609, 2.356, 2.153, 1.987, 1.849, 1.748, 1.659, 1.605, 1.577, 1.577, 1.599, 1.649, 1.734, 1.837, 1.973, 2.139, 2.348, 2.612, 2.911, 3.192, 3.379, 3.467, 3.516, 3.649, 3.815,
+ 3.952, 3.784, 3.669, 3.562, 3.369, 3.088, 2.778, 2.491, 2.246, 2.049, 1.888, 1.748, 1.657, 1.561, 1.509, 1.481, 1.481, 1.504, 1.552, 1.642, 1.734, 1.869, 2.033, 2.233, 2.489, 2.792, 3.105, 3.331, 3.445, 3.493, 3.591, 3.721,
+ 3.883, 3.741, 3.648, 3.519, 3.287, 2.977, 2.665, 2.382, 2.148, 1.957, 1.796, 1.659, 1.561, 1.474, 1.422, 1.396, 1.396, 1.415, 1.465, 1.552, 1.643, 1.776, 1.936, 2.131, 2.375, 2.678, 3.004, 3.275, 3.416, 3.469, 3.541, 3.643,
+ 3.829, 3.716, 3.617, 3.466, 3.202, 2.876, 2.558, 2.282, 2.059, 1.872, 1.713, 1.577, 1.474, 1.399, 1.345, 1.319, 1.319, 1.338, 1.389, 1.465, 1.559, 1.689, 1.849, 2.042, 2.275, 2.568, 2.903, 3.204, 3.383, 3.446, 3.496, 3.579,
+ 3.793, 3.685, 3.589, 3.411, 3.119, 2.781, 2.466, 2.199, 1.983, 1.798, 1.639, 1.505, 1.399, 1.339, 1.276, 1.253, 1.253, 1.271, 1.327, 1.389, 1.487, 1.612, 1.769, 1.961, 2.189, 2.471, 2.806, 3.133, 3.342, 3.425, 3.459, 3.527,
+ 3.763, 3.666, 3.561, 3.357, 3.042, 2.698, 2.384, 2.129, 1.918, 1.734, 1.575, 1.443, 1.339, 1.276, 1.217, 1.194, 1.194, 1.214, 1.271, 1.327, 1.423, 1.546, 1.702, 1.891, 2.112, 2.386, 2.718, 3.061, 3.301, 3.402, 3.433, 3.486,
+ 3.745, 3.647, 3.529, 3.302, 2.971, 2.627, 2.318, 2.067, 1.859, 1.677, 1.521, 1.389, 1.287, 1.217, 1.171, 1.145, 1.145, 1.165, 1.214, 1.276, 1.369, 1.491, 1.643, 1.831, 2.048, 2.313, 2.644, 2.995, 3.262, 3.381, 3.412, 3.453,
+ 3.731, 3.635, 3.503, 3.249, 2.911, 2.566, 2.259, 2.017, 1.811, 1.629, 1.475, 1.347, 1.246, 1.171, 1.138, 1.103, 1.103, 1.129, 1.165, 1.231, 1.322, 1.443, 1.595, 1.779, 1.993, 2.251, 2.576, 2.936, 3.223, 3.359, 3.392, 3.425,
+ 3.721, 3.625, 3.481, 3.208, 2.861, 2.515, 2.213, 1.976, 1.773, 1.593, 1.439, 1.313, 1.213, 1.138, 1.103, 1.071, 1.071, 1.101, 1.129, 1.194, 1.286, 1.405, 1.555, 1.736, 1.949, 2.202, 2.521, 2.886, 3.189, 3.338, 3.375, 3.406,
+ 3.716, 3.616, 3.458, 3.171, 2.819, 2.472, 2.176, 1.942, 1.741, 1.563, 1.411, 1.285, 1.186, 1.112, 1.071, 1.051, 1.049, 1.069, 1.103, 1.165, 1.256, 1.376, 1.523, 1.702, 1.913, 2.163, 2.477, 2.843, 3.155, 3.318, 3.358, 3.389,
+ 3.712, 3.609, 3.439, 3.142, 2.787, 2.443, 2.147, 1.918, 1.721, 1.541, 1.391, 1.266, 1.167, 1.094, 1.051, 1.035, 1.035, 1.049, 1.085, 1.145, 1.236, 1.355, 1.499, 1.676, 1.886, 2.136, 2.449, 2.814, 3.135, 3.307, 3.351, 3.378,
+ 3.709, 3.604, 3.422, 3.123, 2.768, 2.419, 2.129, 1.903, 1.706, 1.527, 1.377, 1.253, 1.155, 1.083, 1.035, 1.023, 1.023, 1.035, 1.074, 1.134, 1.224, 1.341, 1.484, 1.661, 1.868, 2.117, 2.429, 2.797, 3.122, 3.301, 3.346, 3.374,
+ 3.711, 3.597, 3.412, 3.114, 2.758, 2.409, 2.119, 1.895, 1.701, 1.523, 1.373, 1.251, 1.153, 1.081, 1.033, 1.001, 1.001, 1.032, 1.073, 1.133, 1.222, 1.338, 1.479, 1.655, 1.861, 2.107, 2.418, 2.787, 3.115, 3.297, 3.343, 3.373,
+ 3.713, 3.597, 3.412, 3.113, 2.758, 2.409, 2.119, 1.893, 1.698, 1.523, 1.373, 1.251, 1.153, 1.081, 1.034, 1.011, 1.011, 1.032, 1.074, 1.134, 1.222, 1.338, 1.479, 1.655, 1.861, 2.107, 2.418, 2.787, 3.116, 3.294, 3.341, 3.371,
+ 3.721, 3.599, 3.414, 3.116, 2.763, 2.418, 2.124, 1.895, 1.704, 1.531, 1.382, 1.259, 1.162, 1.091, 1.048, 1.034, 1.032, 1.046, 1.083, 1.145, 1.232, 1.348, 1.491, 1.664, 1.869, 2.115, 2.428, 2.798, 3.123, 3.294, 3.339, 3.372,
+ 3.727, 3.604, 3.421, 3.132, 2.784, 2.438, 2.141, 1.908, 1.716, 1.547, 1.399, 1.276, 1.178, 1.107, 1.069, 1.048, 1.046, 1.067, 1.101, 1.162, 1.249, 1.366, 1.509, 1.684, 1.886, 2.134, 2.449, 2.821, 3.135, 3.299, 3.341, 3.375,
+ 3.739, 3.613, 3.431, 3.154, 2.813, 2.468, 2.166, 1.931, 1.739, 1.569, 1.424, 1.302, 1.203, 1.129, 1.098, 1.069, 1.069, 1.096, 1.123, 1.185, 1.274, 1.391, 1.536, 1.709, 1.914, 2.162, 2.481, 2.851, 3.156, 3.311, 3.342, 3.378,
+ 3.751, 3.626, 3.449, 3.186, 2.855, 2.509, 2.201, 1.961, 1.768, 1.601, 1.454, 1.333, 1.235, 1.159, 1.129, 1.098, 1.098, 1.123, 1.152, 1.216, 1.307, 1.424, 1.569, 1.744, 1.947, 2.202, 2.526, 2.891, 3.182, 3.322, 3.351, 3.387,
+ 3.772, 3.641, 3.473, 3.221, 2.902, 2.559, 2.248, 1.999, 1.804, 1.639, 1.496, 1.373, 1.274, 1.201, 1.159, 1.133, 1.133, 1.152, 1.191, 1.254, 1.347, 1.466, 1.611, 1.785, 1.989, 2.253, 2.582, 2.939, 3.209, 3.334, 3.361, 3.402,
+ 3.797, 3.663, 3.496, 3.263, 2.959, 2.624, 2.308, 2.049, 1.847, 1.684, 1.542, 1.422, 1.321, 1.252, 1.201, 1.175, 1.175, 1.191, 1.239, 1.298, 1.394, 1.516, 1.658, 1.831, 2.041, 2.313, 2.651, 2.998, 3.244, 3.351, 3.375, 3.422,
+ 3.831, 3.686, 3.523, 3.307, 3.023, 2.698, 2.379, 2.112, 1.902, 1.737, 1.596, 1.476, 1.378, 1.315, 1.252, 1.227, 1.227, 1.239, 1.296, 1.355, 1.451, 1.572, 1.715, 1.888, 2.103, 2.386, 2.731, 3.063, 3.279, 3.367, 3.393, 3.456,
+ 3.871, 3.714, 3.551, 3.355, 3.091, 2.781, 2.465, 2.186, 1.965, 1.795, 1.654, 1.538, 1.442, 1.378, 1.318, 1.291, 1.291, 1.304, 1.355, 1.424, 1.515, 1.634, 1.778, 1.952, 2.178, 2.479, 2.821, 3.129, 3.314, 3.381, 3.419, 3.491,
+ 3.925, 3.749, 3.582, 3.401, 3.156, 2.866, 2.559, 2.274, 2.039, 1.859, 1.718, 1.604, 1.513, 1.442, 1.389, 1.363, 1.363, 1.379, 1.424, 1.501, 1.586, 1.702, 1.847, 2.028, 2.269, 2.579, 2.913, 3.193, 3.343, 3.396, 3.447, 3.539,
+ 3.994, 3.794, 3.619, 3.442, 3.231, 2.961, 2.662, 2.375, 2.129, 1.938, 1.789, 1.675, 1.591, 1.513, 1.465, 1.439, 1.439, 1.457, 1.501, 1.582, 1.661, 1.777, 1.925, 2.118, 2.375, 2.691, 3.008, 3.251, 3.371, 3.414, 3.479, 3.598,
+ 4.082, 3.845, 3.656, 3.489, 3.298, 3.053, 2.771, 2.485, 2.232, 2.028, 1.871, 1.751, 1.672, 1.591, 1.544, 1.521, 1.521, 1.539, 1.582, 1.661, 1.741, 1.859, 2.014, 2.224, 2.495, 2.806, 3.098, 3.301, 3.392, 3.431, 3.518, 3.677,
+ 4.196, 3.911, 3.698, 3.534, 3.363, 3.146, 2.881, 2.604, 2.348, 2.132, 1.964, 1.836, 1.751, 1.672, 1.628, 1.606, 1.606, 1.624, 1.665, 1.741, 1.827, 1.951, 2.121, 2.344, 2.624, 2.923, 3.177, 3.336, 3.405, 3.447, 3.567, 3.776,
+ 4.341, 4.002, 3.744, 3.575, 3.415, 3.229, 2.989, 2.729, 2.475, 2.251, 2.071, 1.936, 1.836, 1.759, 1.713, 1.693, 1.693, 1.711, 1.753, 1.827, 1.925, 2.058, 2.243, 2.481, 2.758, 3.027, 3.238, 3.361, 3.409, 3.466, 3.637, 3.896,
+ 4.516, 4.123, 3.804, 3.621, 3.468, 3.308, 3.096, 2.855, 2.609, 2.385, 2.194, 2.045, 1.936, 1.857, 1.807, 1.784, 1.784, 1.803, 1.852, 1.925, 2.033, 2.183, 2.382, 2.623, 2.886, 3.121, 3.284, 3.372, 3.413, 3.494, 3.727, 4.048,
+ 4.716, 4.264, 3.875, 3.674, 3.523, 3.376, 3.189, 2.966, 2.733, 2.511, 2.315, 2.158, 2.039, 1.936, 1.875, 1.872, 1.872, 1.872, 1.925, 2.028, 2.148, 2.308, 2.513, 2.751, 2.994, 3.191, 3.319, 3.384, 3.427, 3.541, 3.838, 4.221
+ ],
+ "sigma": 0.00152,
+ "sigma_Cb": 0.00172
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2750,
+ "ccm":
+ [
+ 1.13004, 0.36392, -0.49396,
+ -0.45885, 1.68171, -0.22286,
+ -0.06473, -0.86962, 1.93435
+ ]
+ },
+ {
+ "ct": 2940,
+ "ccm":
+ [
+ 1.29876, 0.09627, -0.39503,
+ -0.43085, 1.60258, -0.17172,
+ -0.02638, -0.92581, 1.95218
+ ]
+ },
+ {
+ "ct": 3650,
+ "ccm":
+ [
+ 1.57729, -0.29734, -0.27995,
+ -0.42965, 1.66231, -0.23265,
+ -0.02183, -0.62331, 1.64514
+ ]
+ },
+ {
+ "ct": 4625,
+ "ccm":
+ [
+ 1.52145, -0.22382, -0.29763,
+ -0.40445, 1.82186, -0.41742,
+ -0.05732, -0.56222, 1.61954
+ ]
+ },
+ {
+ "ct": 5715,
+ "ccm":
+ [
+ 1.67851, -0.39193, -0.28658,
+ -0.37169, 1.72949, -0.35781,
+ -0.09556, -0.41951, 1.51508
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.af":
+ {
+ "ranges":
+ {
+ "normal":
+ {
+ "min": 0.0,
+ "max": 12.0,
+ "default": 1.0
+ },
+ "macro":
+ {
+ "min": 4.0,
+ "max": 32.0,
+ "default": 6.0
+ }
+ },
+ "speeds":
+ {
+ "normal":
+ {
+ "step_coarse": 2.0,
+ "step_fine": 0.5,
+ "contrast_ratio": 0.75,
+ "pdaf_gain": -0.03,
+ "pdaf_squelch": 0.2,
+ "max_slew": 4.0,
+ "pdaf_frames": 20,
+ "dropout_frames": 6,
+ "step_frames": 4
+ },
+ "fast":
+ {
+ "step_coarse": 2.0,
+ "step_fine": 0.5,
+ "contrast_ratio": 0.75,
+ "pdaf_gain": -0.05,
+ "pdaf_squelch": 0.2,
+ "max_slew": 5.0,
+ "pdaf_frames": 16,
+ "dropout_frames": 6,
+ "step_frames": 4
+ }
+ },
+ "conf_epsilon": 8,
+ "conf_thresh": 12,
+ "conf_clip": 512,
+ "skip_frames": 5,
+ "map": [ 0.0, 420, 35.0, 920 ]
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "power_min": 0.7,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "power_min": 0.7,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/meson.build b/src/ipa/rpi/pisp/data/meson.build
new file mode 100644
index 00000000..f56c4e39
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/meson.build
@@ -0,0 +1,29 @@
+# SPDX-License-Identifier: CC0-1.0
+
+conf_files = files([
+ 'imx219.json',
+ 'imx219_noir.json',
+ 'imx290.json',
+ 'imx296.json',
+ 'imx296_mono.json',
+ 'imx378.json',
+ 'imx415.json',
+ 'imx462.json',
+ 'imx477.json',
+ 'imx477_noir.json',
+ 'imx477_scientific.json',
+ 'imx519.json',
+ 'imx708.json',
+ 'imx708_noir.json',
+ 'imx708_wide.json',
+ 'imx708_wide_noir.json',
+ 'ov5647.json',
+ 'ov5647_noir.json',
+ 'ov64a40.json',
+ 'ov9281_mono.json',
+ 'se327m12.json',
+ 'uncalibrated.json',
+])
+
+install_data(conf_files,
+ install_dir : ipa_data_dir / 'rpi' / 'pisp')
diff --git a/src/ipa/rpi/pisp/data/ov5647.json b/src/ipa/rpi/pisp/data/ov5647.json
new file mode 100644
index 00000000..d5156767
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/ov5647.json
@@ -0,0 +1,1186 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 1024
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 29381,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 870,
+ "reference_Y": 12388
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 4.371
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 280,
+ "slope": 0.02153
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2873.0, 1.0463, 0.5142,
+ 2965.0, 1.0233, 0.5284,
+ 3606.0, 0.8947, 0.6314,
+ 4700.0, 0.7665, 0.7897,
+ 5890.0, 0.7055, 0.8933,
+ 7600.0, 0.6482, 1.0119
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.04072,
+ "transverse_neg": 0.03906
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 1.238, 1.238, 1.238, 1.234, 1.227, 1.216, 1.207, 1.198, 1.191, 1.179, 1.169, 1.162, 1.155, 1.153, 1.152, 1.152, 1.152, 1.153, 1.154, 1.157, 1.166, 1.176, 1.183, 1.191, 1.204, 1.216, 1.226, 1.232, 1.239, 1.241, 1.241, 1.242,
+ 1.235, 1.234, 1.227, 1.222, 1.214, 1.203, 1.193, 1.184, 1.169, 1.161, 1.149, 1.139, 1.131, 1.126, 1.122, 1.121, 1.121, 1.123, 1.129, 1.136, 1.145, 1.157, 1.163, 1.175, 1.189, 1.199, 1.212, 1.221, 1.225, 1.231, 1.241, 1.242,
+ 1.234, 1.227, 1.222, 1.214, 1.203, 1.193, 1.183, 1.169, 1.158, 1.145, 1.133, 1.123, 1.113, 1.106, 1.101, 1.101, 1.101, 1.105, 1.111, 1.116, 1.128, 1.137, 1.149, 1.163, 1.174, 1.189, 1.199, 1.212, 1.221, 1.226, 1.234, 1.241,
+ 1.234, 1.226, 1.217, 1.209, 1.195, 1.183, 1.171, 1.158, 1.145, 1.131, 1.119, 1.108, 1.097, 1.088, 1.088, 1.085, 1.085, 1.087, 1.095, 1.102, 1.114, 1.124, 1.137, 1.149, 1.165, 1.176, 1.194, 1.207, 1.214, 1.224, 1.235, 1.247,
+ 1.238, 1.224, 1.213, 1.202, 1.187, 1.175, 1.161, 1.146, 1.132, 1.117, 1.105, 1.094, 1.082, 1.074, 1.071, 1.071, 1.071, 1.073, 1.079, 1.089, 1.099, 1.112, 1.124, 1.137, 1.152, 1.167, 1.183, 1.198, 1.211, 1.222, 1.235, 1.249,
+ 1.232, 1.221, 1.209, 1.195, 1.178, 1.163, 1.149, 1.134, 1.118, 1.104, 1.093, 1.079, 1.069, 1.061, 1.057, 1.056, 1.056, 1.059, 1.066, 1.073, 1.086, 1.098, 1.111, 1.124, 1.141, 1.157, 1.173, 1.188, 1.203, 1.219, 1.234, 1.251,
+ 1.231, 1.213, 1.197, 1.186, 1.169, 1.151, 1.137, 1.121, 1.104, 1.093, 1.079, 1.068, 1.056, 1.048, 1.045, 1.042, 1.042, 1.045, 1.051, 1.061, 1.071, 1.085, 1.098, 1.111, 1.129, 1.145, 1.161, 1.179, 1.197, 1.215, 1.231, 1.249,
+ 1.224, 1.211, 1.194, 1.178, 1.161, 1.141, 1.127, 1.109, 1.094, 1.081, 1.068, 1.055, 1.047, 1.038, 1.034, 1.032, 1.032, 1.035, 1.039, 1.048, 1.059, 1.071, 1.086, 1.098, 1.116, 1.134, 1.154, 1.172, 1.191, 1.209, 1.228, 1.249,
+ 1.223, 1.206, 1.187, 1.171, 1.152, 1.132, 1.117, 1.098, 1.082, 1.069, 1.056, 1.045, 1.037, 1.028, 1.024, 1.022, 1.022, 1.025, 1.031, 1.039, 1.048, 1.059, 1.074, 1.091, 1.106, 1.126, 1.144, 1.163, 1.186, 1.205, 1.227, 1.247,
+ 1.222, 1.199, 1.183, 1.164, 1.143, 1.126, 1.108, 1.091, 1.075, 1.059, 1.045, 1.037, 1.028, 1.019, 1.015, 1.014, 1.014, 1.018, 1.023, 1.031, 1.042, 1.051, 1.065, 1.081, 1.098, 1.118, 1.137, 1.158, 1.181, 1.201, 1.224, 1.245,
+ 1.221, 1.198, 1.179, 1.163, 1.141, 1.119, 1.101, 1.083, 1.066, 1.051, 1.038, 1.028, 1.019, 1.012, 1.009, 1.008, 1.007, 1.008, 1.015, 1.023, 1.033, 1.044, 1.058, 1.072, 1.089, 1.107, 1.131, 1.152, 1.172, 1.196, 1.216, 1.241,
+ 1.216, 1.194, 1.174, 1.155, 1.133, 1.112, 1.094, 1.074, 1.059, 1.045, 1.032, 1.021, 1.012, 1.007, 1.003, 1.002, 1.002, 1.003, 1.008, 1.015, 1.025, 1.038, 1.049, 1.067, 1.084, 1.102, 1.126, 1.147, 1.169, 1.191, 1.214, 1.238,
+ 1.212, 1.188, 1.171, 1.149, 1.127, 1.105, 1.087, 1.069, 1.055, 1.039, 1.027, 1.016, 1.007, 1.003, 0.999, 0.997, 0.998, 1.001, 1.003, 1.011, 1.021, 1.032, 1.043, 1.059, 1.077, 1.101, 1.121, 1.142, 1.164, 1.187, 1.211, 1.236,
+ 1.208, 1.187, 1.169, 1.149, 1.124, 1.104, 1.085, 1.067, 1.051, 1.036, 1.024, 1.013, 1.005, 0.999, 0.996, 0.994, 0.994, 0.996, 1.001, 1.006, 1.017, 1.025, 1.038, 1.053, 1.072, 1.093, 1.116, 1.138, 1.159, 1.183, 1.207, 1.235,
+ 1.208, 1.181, 1.164, 1.144, 1.122, 1.098, 1.079, 1.062, 1.046, 1.033, 1.018, 1.009, 1.002, 0.996, 0.992, 0.989, 0.991, 0.994, 0.996, 1.002, 1.012, 1.021, 1.035, 1.051, 1.069, 1.091, 1.113, 1.137, 1.157, 1.182, 1.206, 1.233,
+ 1.206, 1.179, 1.163, 1.142, 1.119, 1.098, 1.079, 1.061, 1.045, 1.031, 1.017, 1.008, 1.001, 0.995, 0.991, 0.989, 0.989, 0.992, 0.996, 1.001, 1.011, 1.019, 1.034, 1.051, 1.069, 1.089, 1.112, 1.136, 1.157, 1.181, 1.205, 1.233,
+ 1.206, 1.179, 1.163, 1.139, 1.119, 1.098, 1.079, 1.061, 1.044, 1.031, 1.016, 1.007, 1.001, 0.995, 0.991, 0.989, 0.989, 0.991, 0.996, 1.002, 1.011, 1.019, 1.034, 1.049, 1.069, 1.088, 1.113, 1.136, 1.156, 1.179, 1.204, 1.233,
+ 1.207, 1.179, 1.163, 1.139, 1.119, 1.099, 1.079, 1.061, 1.044, 1.031, 1.017, 1.007, 1.001, 0.995, 0.991, 0.989, 0.989, 0.992, 0.997, 1.003, 1.011, 1.021, 1.034, 1.051, 1.071, 1.089, 1.112, 1.136, 1.157, 1.179, 1.204, 1.233,
+ 1.207, 1.179, 1.163, 1.143, 1.121, 1.101, 1.082, 1.063, 1.047, 1.032, 1.019, 1.009, 1.003, 0.998, 0.994, 0.991, 0.991, 0.995, 0.999, 1.004, 1.013, 1.024, 1.038, 1.052, 1.071, 1.091, 1.112, 1.136, 1.159, 1.181, 1.205, 1.233,
+ 1.207, 1.185, 1.166, 1.148, 1.124, 1.104, 1.087, 1.068, 1.052, 1.037, 1.025, 1.016, 1.006, 1.002, 0.998, 0.995, 0.995, 0.999, 1.003, 1.008, 1.017, 1.029, 1.043, 1.056, 1.076, 1.094, 1.116, 1.138, 1.159, 1.183, 1.205, 1.232,
+ 1.211, 1.186, 1.167, 1.151, 1.128, 1.108, 1.089, 1.072, 1.057, 1.042, 1.031, 1.021, 1.013, 1.006, 1.002, 0.999, 0.999, 1.003, 1.007, 1.013, 1.021, 1.031, 1.047, 1.062, 1.081, 1.098, 1.121, 1.141, 1.164, 1.185, 1.207, 1.232,
+ 1.211, 1.188, 1.169, 1.154, 1.134, 1.114, 1.094, 1.078, 1.063, 1.051, 1.039, 1.028, 1.019, 1.013, 1.007, 1.006, 1.006, 1.007, 1.013, 1.019, 1.027, 1.039, 1.051, 1.069, 1.087, 1.105, 1.124, 1.146, 1.165, 1.186, 1.209, 1.232,
+ 1.214, 1.191, 1.175, 1.159, 1.141, 1.123, 1.105, 1.087, 1.072, 1.058, 1.046, 1.036, 1.028, 1.019, 1.014, 1.013, 1.013, 1.015, 1.019, 1.027, 1.037, 1.048, 1.061, 1.076, 1.094, 1.109, 1.132, 1.149, 1.169, 1.189, 1.209, 1.233,
+ 1.219, 1.194, 1.179, 1.163, 1.146, 1.129, 1.113, 1.095, 1.081, 1.066, 1.055, 1.045, 1.036, 1.029, 1.023, 1.021, 1.021, 1.026, 1.031, 1.037, 1.048, 1.057, 1.069, 1.085, 1.101, 1.118, 1.137, 1.156, 1.174, 1.193, 1.213, 1.233,
+ 1.219, 1.199, 1.184, 1.172, 1.155, 1.138, 1.122, 1.104, 1.088, 1.075, 1.065, 1.055, 1.045, 1.038, 1.034, 1.031, 1.031, 1.035, 1.041, 1.048, 1.057, 1.066, 1.081, 1.096, 1.111, 1.125, 1.146, 1.164, 1.178, 1.196, 1.214, 1.233,
+ 1.222, 1.204, 1.189, 1.178, 1.162, 1.148, 1.132, 1.115, 1.101, 1.087, 1.075, 1.064, 1.055, 1.048, 1.043, 1.042, 1.042, 1.046, 1.049, 1.057, 1.066, 1.076, 1.089, 1.106, 1.121, 1.133, 1.149, 1.167, 1.183, 1.199, 1.215, 1.234,
+ 1.222, 1.205, 1.191, 1.184, 1.171, 1.155, 1.142, 1.124, 1.109, 1.097, 1.087, 1.077, 1.065, 1.059, 1.055, 1.053, 1.053, 1.057, 1.059, 1.067, 1.076, 1.088, 1.102, 1.116, 1.131, 1.143, 1.157, 1.175, 1.187, 1.202, 1.215, 1.231,
+ 1.223, 1.211, 1.198, 1.189, 1.178, 1.165, 1.151, 1.136, 1.122, 1.108, 1.097, 1.087, 1.079, 1.073, 1.067, 1.066, 1.066, 1.069, 1.074, 1.079, 1.088, 1.101, 1.114, 1.128, 1.141, 1.152, 1.166, 1.182, 1.194, 1.205, 1.215, 1.229,
+ 1.223, 1.212, 1.204, 1.197, 1.186, 1.173, 1.161, 1.149, 1.133, 1.121, 1.108, 1.101, 1.092, 1.085, 1.082, 1.082, 1.082, 1.085, 1.091, 1.096, 1.101, 1.113, 1.125, 1.138, 1.151, 1.164, 1.175, 1.188, 1.198, 1.207, 1.215, 1.222,
+ 1.217, 1.213, 1.211, 1.203, 1.194, 1.181, 1.169, 1.158, 1.145, 1.133, 1.123, 1.113, 1.106, 1.097, 1.096, 1.094, 1.094, 1.098, 1.104, 1.108, 1.114, 1.124, 1.137, 1.149, 1.161, 1.172, 1.182, 1.194, 1.203, 1.209, 1.211, 1.217,
+ 1.214, 1.211, 1.209, 1.206, 1.201, 1.188, 1.179, 1.168, 1.154, 1.144, 1.136, 1.126, 1.119, 1.112, 1.109, 1.108, 1.108, 1.108, 1.117, 1.119, 1.124, 1.133, 1.147, 1.158, 1.171, 1.178, 1.188, 1.198, 1.205, 1.208, 1.209, 1.211,
+ 1.207, 1.208, 1.209, 1.206, 1.202, 1.192, 1.182, 1.171, 1.159, 1.146, 1.142, 1.136, 1.126, 1.119, 1.116, 1.114, 1.115, 1.117, 1.119, 1.128, 1.129, 1.136, 1.155, 1.162, 1.176, 1.182, 1.188, 1.198, 1.205, 1.208, 1.207, 1.206
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.879, 1.878, 1.872, 1.862, 1.856, 1.842, 1.826, 1.815, 1.811, 1.799, 1.787, 1.777, 1.768, 1.761, 1.761, 1.761, 1.762, 1.763, 1.764, 1.769, 1.776, 1.789, 1.799, 1.807, 1.824, 1.841, 1.853, 1.861, 1.871, 1.874, 1.885, 1.889,
+ 1.879, 1.875, 1.859, 1.846, 1.835, 1.817, 1.806, 1.794, 1.777, 1.771, 1.755, 1.743, 1.733, 1.726, 1.721, 1.721, 1.721, 1.722, 1.729, 1.734, 1.747, 1.759, 1.771, 1.783, 1.801, 1.813, 1.831, 1.841, 1.849, 1.862, 1.876, 1.888,
+ 1.876, 1.861, 1.846, 1.835, 1.817, 1.806, 1.793, 1.777, 1.766, 1.752, 1.736, 1.727, 1.713, 1.702, 1.696, 1.695, 1.695, 1.697, 1.704, 1.715, 1.725, 1.739, 1.754, 1.771, 1.783, 1.801, 1.813, 1.831, 1.841, 1.851, 1.866, 1.888,
+ 1.878, 1.861, 1.843, 1.829, 1.811, 1.794, 1.779, 1.766, 1.751, 1.734, 1.721, 1.711, 1.695, 1.682, 1.679, 1.677, 1.677, 1.678, 1.687, 1.696, 1.713, 1.723, 1.737, 1.754, 1.774, 1.785, 1.811, 1.825, 1.833, 1.849, 1.866, 1.889,
+ 1.882, 1.859, 1.837, 1.821, 1.803, 1.784, 1.769, 1.752, 1.735, 1.717, 1.701, 1.689, 1.676, 1.664, 1.659, 1.658, 1.658, 1.659, 1.668, 1.679, 1.694, 1.711, 1.723, 1.739, 1.756, 1.777, 1.797, 1.813, 1.827, 1.844, 1.865, 1.889,
+ 1.869, 1.849, 1.832, 1.811, 1.792, 1.772, 1.755, 1.737, 1.717, 1.699, 1.688, 1.674, 1.661, 1.646, 1.642, 1.638, 1.638, 1.641, 1.651, 1.659, 1.676, 1.693, 1.708, 1.724, 1.744, 1.763, 1.783, 1.801, 1.819, 1.838, 1.864, 1.889,
+ 1.869, 1.841, 1.817, 1.801, 1.782, 1.758, 1.741, 1.721, 1.699, 1.688, 1.674, 1.658, 1.643, 1.632, 1.627, 1.621, 1.621, 1.622, 1.631, 1.643, 1.658, 1.676, 1.689, 1.708, 1.729, 1.748, 1.767, 1.791, 1.812, 1.836, 1.859, 1.891,
+ 1.861, 1.836, 1.814, 1.792, 1.772, 1.745, 1.728, 1.707, 1.688, 1.673, 1.658, 1.643, 1.629, 1.618, 1.612, 1.609, 1.609, 1.611, 1.615, 1.629, 1.642, 1.658, 1.676, 1.689, 1.711, 1.734, 1.758, 1.782, 1.804, 1.827, 1.859, 1.891,
+ 1.861, 1.829, 1.807, 1.784, 1.759, 1.735, 1.717, 1.692, 1.674, 1.659, 1.644, 1.629, 1.617, 1.605, 1.598, 1.595, 1.595, 1.598, 1.607, 1.615, 1.631, 1.642, 1.661, 1.681, 1.701, 1.724, 1.746, 1.771, 1.799, 1.825, 1.857, 1.891,
+ 1.861, 1.826, 1.804, 1.779, 1.749, 1.729, 1.707, 1.687, 1.665, 1.648, 1.629, 1.617, 1.604, 1.595, 1.589, 1.585, 1.585, 1.592, 1.597, 1.607, 1.623, 1.635, 1.652, 1.674, 1.693, 1.716, 1.739, 1.766, 1.794, 1.822, 1.855, 1.889,
+ 1.861, 1.824, 1.799, 1.777, 1.748, 1.723, 1.701, 1.678, 1.657, 1.639, 1.619, 1.605, 1.596, 1.586, 1.581, 1.579, 1.577, 1.579, 1.588, 1.597, 1.612, 1.625, 1.641, 1.661, 1.681, 1.702, 1.732, 1.757, 1.785, 1.813, 1.847, 1.882,
+ 1.856, 1.819, 1.796, 1.767, 1.739, 1.714, 1.693, 1.666, 1.651, 1.629, 1.613, 1.597, 1.586, 1.579, 1.576, 1.572, 1.572, 1.573, 1.579, 1.588, 1.602, 1.619, 1.633, 1.655, 1.674, 1.698, 1.729, 1.754, 1.782, 1.809, 1.842, 1.874,
+ 1.853, 1.815, 1.792, 1.761, 1.734, 1.707, 1.682, 1.659, 1.639, 1.622, 1.605, 1.591, 1.579, 1.574, 1.569, 1.565, 1.566, 1.569, 1.573, 1.584, 1.597, 1.609, 1.624, 1.645, 1.666, 1.695, 1.722, 1.746, 1.772, 1.799, 1.835, 1.873,
+ 1.847, 1.811, 1.789, 1.759, 1.732, 1.703, 1.681, 1.657, 1.637, 1.619, 1.603, 1.588, 1.575, 1.569, 1.563, 1.561, 1.561, 1.563, 1.569, 1.576, 1.589, 1.601, 1.616, 1.636, 1.659, 1.686, 1.712, 1.741, 1.767, 1.798, 1.832, 1.873,
+ 1.847, 1.803, 1.779, 1.756, 1.727, 1.699, 1.674, 1.652, 1.632, 1.616, 1.595, 1.583, 1.572, 1.564, 1.558, 1.556, 1.557, 1.559, 1.563, 1.569, 1.583, 1.593, 1.613, 1.633, 1.657, 1.684, 1.709, 1.741, 1.766, 1.796, 1.831, 1.871,
+ 1.845, 1.802, 1.779, 1.755, 1.725, 1.696, 1.673, 1.649, 1.629, 1.614, 1.595, 1.582, 1.572, 1.563, 1.557, 1.556, 1.556, 1.558, 1.562, 1.569, 1.581, 1.593, 1.612, 1.633, 1.656, 1.679, 1.709, 1.741, 1.764, 1.796, 1.828, 1.869,
+ 1.845, 1.801, 1.779, 1.749, 1.723, 1.697, 1.673, 1.649, 1.627, 1.613, 1.593, 1.581, 1.573, 1.563, 1.558, 1.555, 1.555, 1.556, 1.562, 1.573, 1.581, 1.594, 1.611, 1.633, 1.656, 1.679, 1.711, 1.739, 1.764, 1.794, 1.828, 1.869,
+ 1.844, 1.801, 1.781, 1.749, 1.723, 1.697, 1.673, 1.649, 1.627, 1.614, 1.595, 1.581, 1.574, 1.564, 1.559, 1.557, 1.556, 1.559, 1.564, 1.574, 1.582, 1.595, 1.611, 1.634, 1.659, 1.683, 1.709, 1.739, 1.765, 1.794, 1.829, 1.872,
+ 1.845, 1.802, 1.781, 1.754, 1.725, 1.701, 1.677, 1.652, 1.632, 1.616, 1.599, 1.586, 1.576, 1.569, 1.563, 1.559, 1.558, 1.562, 1.569, 1.576, 1.587, 1.599, 1.618, 1.635, 1.661, 1.685, 1.709, 1.739, 1.767, 1.796, 1.829, 1.868,
+ 1.845, 1.809, 1.785, 1.762, 1.731, 1.706, 1.685, 1.659, 1.641, 1.622, 1.606, 1.595, 1.581, 1.575, 1.569, 1.564, 1.564, 1.569, 1.574, 1.582, 1.594, 1.607, 1.625, 1.642, 1.668, 1.687, 1.716, 1.741, 1.769, 1.798, 1.829, 1.868,
+ 1.849, 1.811, 1.785, 1.765, 1.734, 1.709, 1.688, 1.666, 1.647, 1.628, 1.613, 1.601, 1.592, 1.581, 1.575, 1.572, 1.572, 1.575, 1.581, 1.589, 1.599, 1.611, 1.631, 1.649, 1.673, 1.694, 1.721, 1.747, 1.771, 1.798, 1.829, 1.868,
+ 1.849, 1.816, 1.787, 1.766, 1.739, 1.716, 1.692, 1.673, 1.657, 1.641, 1.625, 1.612, 1.599, 1.592, 1.584, 1.581, 1.581, 1.581, 1.589, 1.598, 1.608, 1.622, 1.639, 1.659, 1.679, 1.701, 1.724, 1.751, 1.774, 1.802, 1.832, 1.868,
+ 1.855, 1.816, 1.793, 1.773, 1.748, 1.727, 1.707, 1.686, 1.667, 1.649, 1.636, 1.623, 1.612, 1.599, 1.594, 1.592, 1.591, 1.591, 1.598, 1.608, 1.621, 1.634, 1.649, 1.669, 1.693, 1.705, 1.736, 1.757, 1.778, 1.804, 1.833, 1.867,
+ 1.858, 1.818, 1.796, 1.778, 1.754, 1.733, 1.716, 1.695, 1.676, 1.661, 1.648, 1.635, 1.624, 1.613, 1.604, 1.601, 1.601, 1.606, 1.613, 1.621, 1.634, 1.646, 1.661, 1.679, 1.699, 1.714, 1.742, 1.761, 1.782, 1.809, 1.835, 1.867,
+ 1.857, 1.822, 1.801, 1.789, 1.766, 1.744, 1.726, 1.706, 1.688, 1.671, 1.659, 1.647, 1.635, 1.624, 1.621, 1.617, 1.617, 1.621, 1.627, 1.634, 1.645, 1.656, 1.674, 1.694, 1.709, 1.723, 1.751, 1.771, 1.786, 1.811, 1.837, 1.867,
+ 1.858, 1.824, 1.807, 1.794, 1.774, 1.757, 1.739, 1.716, 1.702, 1.687, 1.671, 1.662, 1.648, 1.636, 1.629, 1.629, 1.629, 1.633, 1.635, 1.646, 1.656, 1.669, 1.684, 1.705, 1.719, 1.732, 1.753, 1.774, 1.793, 1.815, 1.837, 1.871,
+ 1.858, 1.827, 1.809, 1.798, 1.782, 1.761, 1.749, 1.727, 1.711, 1.698, 1.687, 1.675, 1.663, 1.649, 1.646, 1.643, 1.643, 1.646, 1.649, 1.658, 1.669, 1.683, 1.698, 1.716, 1.731, 1.746, 1.761, 1.783, 1.795, 1.817, 1.836, 1.862,
+ 1.862, 1.834, 1.816, 1.805, 1.789, 1.774, 1.759, 1.743, 1.725, 1.711, 1.697, 1.688, 1.678, 1.668, 1.661, 1.659, 1.658, 1.659, 1.668, 1.673, 1.684, 1.698, 1.713, 1.728, 1.742, 1.757, 1.771, 1.791, 1.804, 1.821, 1.836, 1.862,
+ 1.859, 1.835, 1.825, 1.813, 1.794, 1.782, 1.771, 1.757, 1.739, 1.725, 1.711, 1.701, 1.693, 1.683, 1.679, 1.679, 1.679, 1.683, 1.689, 1.693, 1.698, 1.714, 1.726, 1.741, 1.754, 1.769, 1.781, 1.797, 1.808, 1.821, 1.835, 1.856,
+ 1.848, 1.836, 1.832, 1.822, 1.806, 1.789, 1.778, 1.765, 1.751, 1.739, 1.726, 1.718, 1.709, 1.699, 1.696, 1.695, 1.695, 1.696, 1.704, 1.705, 1.714, 1.724, 1.739, 1.753, 1.765, 1.777, 1.789, 1.803, 1.816, 1.824, 1.829, 1.842,
+ 1.839, 1.835, 1.834, 1.829, 1.815, 1.801, 1.787, 1.776, 1.759, 1.751, 1.744, 1.736, 1.724, 1.714, 1.711, 1.708, 1.707, 1.707, 1.717, 1.719, 1.724, 1.734, 1.748, 1.762, 1.775, 1.783, 1.796, 1.808, 1.819, 1.825, 1.828, 1.833,
+ 1.836, 1.833, 1.834, 1.832, 1.821, 1.806, 1.792, 1.785, 1.772, 1.759, 1.751, 1.744, 1.736, 1.725, 1.719, 1.715, 1.715, 1.718, 1.721, 1.728, 1.734, 1.736, 1.757, 1.768, 1.779, 1.787, 1.799, 1.812, 1.821, 1.824, 1.825, 1.833
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.189, 2.127, 2.115, 2.106, 2.113, 2.119, 2.131, 2.144, 2.155, 2.168, 2.176, 2.179, 2.181, 2.181, 2.185, 2.187, 2.187, 2.183, 2.179, 2.176, 2.169, 2.167, 2.159, 2.152, 2.145, 2.141, 2.135, 2.128, 2.124, 2.124, 2.139, 2.177,
+ 2.176, 2.133, 2.116, 2.112, 2.116, 2.125, 2.137, 2.154, 2.168, 2.179, 2.187, 2.194, 2.201, 2.204, 2.208, 2.208, 2.205, 2.202, 2.198, 2.195, 2.183, 2.177, 2.166, 2.159, 2.149, 2.143, 2.138, 2.132, 2.124, 2.125, 2.136, 2.164,
+ 2.175, 2.133, 2.117, 2.115, 2.121, 2.136, 2.154, 2.165, 2.179, 2.192, 2.198, 2.211, 2.218, 2.219, 2.221, 2.221, 2.217, 2.216, 2.211, 2.202, 2.197, 2.188, 2.181, 2.171, 2.159, 2.151, 2.141, 2.136, 2.125, 2.125, 2.132, 2.155,
+ 2.172, 2.128, 2.116, 2.116, 2.124, 2.143, 2.161, 2.177, 2.192, 2.204, 2.213, 2.221, 2.227, 2.231, 2.237, 2.237, 2.229, 2.224, 2.221, 2.213, 2.207, 2.197, 2.191, 2.179, 2.169, 2.156, 2.148, 2.138, 2.126, 2.123, 2.124, 2.149,
+ 2.169, 2.124, 2.119, 2.119, 2.135, 2.152, 2.174, 2.187, 2.204, 2.211, 2.224, 2.233, 2.236, 2.241, 2.246, 2.246, 2.243, 2.237, 2.234, 2.226, 2.218, 2.211, 2.199, 2.191, 2.177, 2.166, 2.155, 2.139, 2.129, 2.121, 2.121, 2.143,
+ 2.157, 2.124, 2.121, 2.127, 2.145, 2.157, 2.181, 2.197, 2.208, 2.221, 2.238, 2.245, 2.249, 2.249, 2.254, 2.254, 2.249, 2.247, 2.243, 2.237, 2.228, 2.219, 2.209, 2.198, 2.186, 2.172, 2.161, 2.143, 2.129, 2.121, 2.121, 2.141,
+ 2.157, 2.124, 2.124, 2.131, 2.148, 2.161, 2.188, 2.202, 2.214, 2.238, 2.246, 2.251, 2.255, 2.257, 2.259, 2.259, 2.257, 2.252, 2.251, 2.247, 2.238, 2.231, 2.219, 2.204, 2.193, 2.173, 2.166, 2.152, 2.134, 2.119, 2.119, 2.131,
+ 2.155, 2.125, 2.125, 2.135, 2.151, 2.169, 2.191, 2.207, 2.219, 2.243, 2.253, 2.258, 2.261, 2.266, 2.266, 2.267, 2.265, 2.262, 2.261, 2.254, 2.244, 2.238, 2.228, 2.212, 2.197, 2.179, 2.167, 2.158, 2.137, 2.122, 2.121, 2.131,
+ 2.155, 2.127, 2.127, 2.137, 2.153, 2.173, 2.197, 2.213, 2.231, 2.248, 2.257, 2.266, 2.271, 2.272, 2.274, 2.275, 2.275, 2.273, 2.271, 2.266, 2.257, 2.251, 2.238, 2.227, 2.209, 2.195, 2.175, 2.159, 2.141, 2.128, 2.127, 2.131,
+ 2.155, 2.128, 2.128, 2.139, 2.159, 2.182, 2.206, 2.225, 2.243, 2.252, 2.265, 2.272, 2.277, 2.283, 2.286, 2.284, 2.283, 2.282, 2.274, 2.272, 2.266, 2.256, 2.244, 2.238, 2.221, 2.202, 2.186, 2.169, 2.149, 2.129, 2.129, 2.135,
+ 2.154, 2.131, 2.131, 2.149, 2.166, 2.189, 2.211, 2.234, 2.248, 2.262, 2.272, 2.277, 2.287, 2.291, 2.293, 2.292, 2.291, 2.285, 2.284, 2.279, 2.272, 2.263, 2.254, 2.243, 2.226, 2.206, 2.193, 2.174, 2.153, 2.133, 2.133, 2.135,
+ 2.153, 2.135, 2.135, 2.151, 2.172, 2.198, 2.221, 2.238, 2.255, 2.265, 2.274, 2.287, 2.291, 2.296, 2.298, 2.298, 2.301, 2.297, 2.289, 2.285, 2.277, 2.271, 2.261, 2.251, 2.236, 2.216, 2.199, 2.179, 2.158, 2.135, 2.134, 2.135,
+ 2.152, 2.136, 2.136, 2.154, 2.176, 2.199, 2.224, 2.239, 2.256, 2.267, 2.282, 2.289, 2.295, 2.299, 2.303, 2.303, 2.302, 2.299, 2.297, 2.288, 2.284, 2.274, 2.262, 2.253, 2.238, 2.219, 2.202, 2.181, 2.158, 2.137, 2.135, 2.135,
+ 2.143, 2.134, 2.134, 2.154, 2.177, 2.201, 2.224, 2.241, 2.256, 2.271, 2.282, 2.289, 2.297, 2.302, 2.306, 2.306, 2.304, 2.301, 2.298, 2.289, 2.287, 2.272, 2.265, 2.255, 2.241, 2.221, 2.203, 2.183, 2.164, 2.141, 2.136, 2.135,
+ 2.142, 2.133, 2.133, 2.155, 2.178, 2.202, 2.223, 2.243, 2.258, 2.273, 2.283, 2.288, 2.296, 2.299, 2.306, 2.306, 2.301, 2.299, 2.296, 2.289, 2.286, 2.271, 2.267, 2.256, 2.244, 2.219, 2.206, 2.188, 2.163, 2.141, 2.137, 2.134,
+ 2.141, 2.131, 2.131, 2.153, 2.179, 2.202, 2.224, 2.242, 2.254, 2.274, 2.283, 2.288, 2.295, 2.298, 2.301, 2.301, 2.301, 2.296, 2.295, 2.289, 2.285, 2.271, 2.267, 2.257, 2.246, 2.223, 2.204, 2.188, 2.165, 2.141, 2.136, 2.134,
+ 2.141, 2.133, 2.133, 2.151, 2.179, 2.201, 2.224, 2.241, 2.254, 2.275, 2.283, 2.288, 2.294, 2.296, 2.298, 2.297, 2.295, 2.295, 2.294, 2.291, 2.284, 2.272, 2.267, 2.256, 2.248, 2.225, 2.208, 2.192, 2.167, 2.141, 2.137, 2.134,
+ 2.141, 2.132, 2.132, 2.151, 2.177, 2.199, 2.221, 2.238, 2.252, 2.274, 2.281, 2.287, 2.293, 2.295, 2.296, 2.294, 2.295, 2.295, 2.294, 2.291, 2.284, 2.274, 2.266, 2.257, 2.248, 2.226, 2.206, 2.189, 2.167, 2.143, 2.141, 2.141,
+ 2.141, 2.133, 2.133, 2.153, 2.175, 2.201, 2.221, 2.238, 2.252, 2.271, 2.278, 2.284, 2.288, 2.291, 2.292, 2.291, 2.293, 2.293, 2.293, 2.287, 2.279, 2.275, 2.266, 2.256, 2.243, 2.224, 2.206, 2.189, 2.168, 2.146, 2.142, 2.134,
+ 2.137, 2.131, 2.131, 2.154, 2.173, 2.199, 2.221, 2.236, 2.251, 2.267, 2.272, 2.278, 2.284, 2.287, 2.288, 2.286, 2.288, 2.288, 2.288, 2.283, 2.277, 2.273, 2.265, 2.256, 2.241, 2.219, 2.205, 2.187, 2.167, 2.144, 2.137, 2.132,
+ 2.136, 2.131, 2.131, 2.152, 2.169, 2.197, 2.218, 2.233, 2.246, 2.257, 2.269, 2.274, 2.281, 2.284, 2.286, 2.285, 2.286, 2.286, 2.286, 2.279, 2.274, 2.269, 2.263, 2.254, 2.239, 2.217, 2.203, 2.181, 2.162, 2.143, 2.133, 2.131,
+ 2.136, 2.131, 2.131, 2.151, 2.167, 2.189, 2.205, 2.226, 2.242, 2.253, 2.261, 2.271, 2.275, 2.279, 2.283, 2.283, 2.284, 2.284, 2.281, 2.277, 2.271, 2.264, 2.257, 2.246, 2.232, 2.215, 2.195, 2.176, 2.158, 2.141, 2.131, 2.128,
+ 2.136, 2.129, 2.131, 2.147, 2.162, 2.181, 2.203, 2.219, 2.236, 2.246, 2.256, 2.263, 2.271, 2.274, 2.278, 2.278, 2.276, 2.277, 2.276, 2.273, 2.266, 2.258, 2.251, 2.241, 2.227, 2.198, 2.191, 2.169, 2.154, 2.136, 2.125, 2.122,
+ 2.132, 2.126, 2.126, 2.139, 2.153, 2.168, 2.194, 2.212, 2.224, 2.238, 2.251, 2.258, 2.263, 2.266, 2.269, 2.271, 2.269, 2.269, 2.269, 2.267, 2.259, 2.253, 2.245, 2.237, 2.219, 2.196, 2.179, 2.162, 2.149, 2.132, 2.122, 2.121,
+ 2.124, 2.119, 2.121, 2.137, 2.147, 2.164, 2.183, 2.199, 2.219, 2.231, 2.239, 2.251, 2.257, 2.261, 2.262, 2.262, 2.259, 2.259, 2.261, 2.258, 2.253, 2.245, 2.237, 2.224, 2.209, 2.187, 2.174, 2.157, 2.141, 2.122, 2.121, 2.121,
+ 2.123, 2.115, 2.115, 2.131, 2.138, 2.157, 2.174, 2.188, 2.207, 2.221, 2.233, 2.239, 2.243, 2.244, 2.244, 2.244, 2.246, 2.245, 2.246, 2.244, 2.241, 2.231, 2.224, 2.212, 2.195, 2.176, 2.159, 2.145, 2.128, 2.117, 2.117, 2.123,
+ 2.123, 2.113, 2.113, 2.123, 2.132, 2.141, 2.162, 2.177, 2.191, 2.208, 2.221, 2.231, 2.231, 2.232, 2.234, 2.235, 2.235, 2.235, 2.238, 2.237, 2.225, 2.214, 2.209, 2.199, 2.181, 2.164, 2.146, 2.135, 2.123, 2.116, 2.116, 2.115,
+ 2.129, 2.115, 2.115, 2.121, 2.128, 2.135, 2.149, 2.164, 2.178, 2.193, 2.207, 2.221, 2.222, 2.222, 2.223, 2.224, 2.224, 2.224, 2.224, 2.223, 2.214, 2.205, 2.196, 2.185, 2.171, 2.151, 2.141, 2.129, 2.119, 2.116, 2.116, 2.117,
+ 2.137, 2.119, 2.119, 2.119, 2.122, 2.129, 2.141, 2.159, 2.167, 2.182, 2.195, 2.206, 2.211, 2.216, 2.218, 2.219, 2.219, 2.219, 2.217, 2.212, 2.202, 2.194, 2.184, 2.174, 2.162, 2.145, 2.134, 2.124, 2.118, 2.117, 2.118, 2.121,
+ 2.138, 2.131, 2.121, 2.122, 2.125, 2.128, 2.137, 2.154, 2.162, 2.176, 2.187, 2.194, 2.196, 2.198, 2.205, 2.205, 2.202, 2.202, 2.203, 2.201, 2.191, 2.182, 2.174, 2.162, 2.149, 2.136, 2.126, 2.121, 2.119, 2.118, 2.127, 2.133,
+ 2.157, 2.148, 2.131, 2.129, 2.129, 2.136, 2.148, 2.157, 2.169, 2.177, 2.182, 2.187, 2.188, 2.191, 2.193, 2.193, 2.192, 2.199, 2.201, 2.199, 2.186, 2.178, 2.167, 2.152, 2.146, 2.137, 2.126, 2.124, 2.121, 2.126, 2.133, 2.151,
+ 2.161, 2.157, 2.148, 2.147, 2.147, 2.147, 2.154, 2.162, 2.174, 2.179, 2.181, 2.184, 2.186, 2.187, 2.189, 2.189, 2.187, 2.188, 2.199, 2.201, 2.187, 2.178, 2.163, 2.148, 2.145, 2.141, 2.131, 2.129, 2.128, 2.135, 2.151, 2.153
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.191, 1.165, 1.156, 1.155, 1.157, 1.161, 1.168, 1.176, 1.179, 1.185, 1.187, 1.189, 1.189, 1.189, 1.191, 1.191, 1.191, 1.189, 1.188, 1.188, 1.185, 1.184, 1.182, 1.178, 1.173, 1.171, 1.166, 1.163, 1.159, 1.159, 1.164, 1.187,
+ 1.188, 1.164, 1.157, 1.156, 1.158, 1.166, 1.173, 1.179, 1.185, 1.193, 1.195, 1.198, 1.199, 1.201, 1.201, 1.202, 1.201, 1.199, 1.199, 1.196, 1.194, 1.189, 1.185, 1.182, 1.177, 1.172, 1.168, 1.164, 1.161, 1.161, 1.162, 1.181,
+ 1.184, 1.164, 1.157, 1.157, 1.161, 1.171, 1.179, 1.185, 1.193, 1.197, 1.201, 1.206, 1.208, 1.209, 1.209, 1.208, 1.207, 1.207, 1.207, 1.202, 1.199, 1.195, 1.192, 1.189, 1.182, 1.176, 1.171, 1.166, 1.161, 1.159, 1.161, 1.177,
+ 1.183, 1.162, 1.158, 1.158, 1.163, 1.174, 1.182, 1.191, 1.197, 1.203, 1.208, 1.212, 1.214, 1.214, 1.218, 1.218, 1.214, 1.212, 1.211, 1.208, 1.206, 1.201, 1.197, 1.192, 1.189, 1.179, 1.174, 1.168, 1.162, 1.159, 1.159, 1.173,
+ 1.181, 1.159, 1.159, 1.159, 1.168, 1.178, 1.189, 1.196, 1.204, 1.208, 1.213, 1.217, 1.219, 1.221, 1.222, 1.222, 1.222, 1.221, 1.219, 1.215, 1.212, 1.208, 1.202, 1.197, 1.189, 1.183, 1.178, 1.169, 1.163, 1.158, 1.158, 1.169,
+ 1.174, 1.159, 1.159, 1.164, 1.172, 1.179, 1.192, 1.201, 1.208, 1.212, 1.219, 1.224, 1.225, 1.227, 1.228, 1.228, 1.226, 1.225, 1.224, 1.221, 1.217, 1.212, 1.208, 1.202, 1.194, 1.187, 1.181, 1.172, 1.164, 1.157, 1.157, 1.169,
+ 1.174, 1.159, 1.159, 1.165, 1.174, 1.184, 1.197, 1.205, 1.209, 1.219, 1.224, 1.228, 1.231, 1.231, 1.231, 1.231, 1.229, 1.229, 1.228, 1.226, 1.222, 1.218, 1.212, 1.205, 1.199, 1.188, 1.181, 1.175, 1.165, 1.157, 1.157, 1.163,
+ 1.173, 1.159, 1.159, 1.165, 1.176, 1.186, 1.198, 1.207, 1.213, 1.223, 1.229, 1.231, 1.235, 1.236, 1.236, 1.236, 1.236, 1.235, 1.234, 1.232, 1.226, 1.223, 1.218, 1.209, 1.201, 1.192, 1.183, 1.178, 1.165, 1.157, 1.157, 1.163,
+ 1.172, 1.159, 1.159, 1.166, 1.176, 1.188, 1.201, 1.209, 1.217, 1.227, 1.231, 1.236, 1.238, 1.239, 1.241, 1.242, 1.242, 1.241, 1.239, 1.235, 1.232, 1.227, 1.223, 1.215, 1.208, 1.199, 1.187, 1.179, 1.167, 1.159, 1.159, 1.163,
+ 1.172, 1.159, 1.159, 1.166, 1.177, 1.189, 1.203, 1.212, 1.223, 1.228, 1.236, 1.239, 1.242, 1.245, 1.246, 1.246, 1.247, 1.246, 1.242, 1.241, 1.237, 1.232, 1.226, 1.223, 1.213, 1.202, 1.191, 1.182, 1.172, 1.159, 1.159, 1.163,
+ 1.168, 1.158, 1.158, 1.167, 1.179, 1.192, 1.204, 1.218, 1.225, 1.233, 1.238, 1.242, 1.246, 1.248, 1.251, 1.251, 1.249, 1.248, 1.247, 1.244, 1.239, 1.237, 1.228, 1.223, 1.214, 1.203, 1.194, 1.183, 1.173, 1.161, 1.161, 1.162,
+ 1.166, 1.158, 1.158, 1.168, 1.183, 1.195, 1.207, 1.218, 1.226, 1.233, 1.239, 1.246, 1.248, 1.251, 1.254, 1.254, 1.254, 1.251, 1.249, 1.247, 1.242, 1.239, 1.232, 1.227, 1.219, 1.207, 1.195, 1.186, 1.175, 1.162, 1.161, 1.162,
+ 1.165, 1.158, 1.158, 1.168, 1.183, 1.196, 1.208, 1.219, 1.227, 1.234, 1.241, 1.247, 1.251, 1.254, 1.255, 1.256, 1.256, 1.254, 1.252, 1.249, 1.246, 1.241, 1.234, 1.228, 1.221, 1.211, 1.199, 1.187, 1.175, 1.163, 1.162, 1.162,
+ 1.161, 1.158, 1.158, 1.169, 1.183, 1.196, 1.208, 1.217, 1.227, 1.234, 1.241, 1.247, 1.253, 1.254, 1.256, 1.257, 1.256, 1.255, 1.253, 1.249, 1.247, 1.241, 1.236, 1.229, 1.221, 1.211, 1.199, 1.189, 1.176, 1.164, 1.163, 1.162,
+ 1.161, 1.156, 1.156, 1.169, 1.183, 1.196, 1.207, 1.218, 1.227, 1.235, 1.241, 1.246, 1.252, 1.254, 1.256, 1.257, 1.256, 1.254, 1.253, 1.249, 1.247, 1.241, 1.237, 1.231, 1.223, 1.211, 1.201, 1.191, 1.177, 1.164, 1.164, 1.161,
+ 1.161, 1.155, 1.155, 1.169, 1.182, 1.195, 1.208, 1.216, 1.225, 1.235, 1.241, 1.245, 1.249, 1.252, 1.254, 1.254, 1.254, 1.253, 1.252, 1.249, 1.246, 1.239, 1.237, 1.231, 1.224, 1.211, 1.201, 1.191, 1.178, 1.164, 1.162, 1.161,
+ 1.159, 1.155, 1.155, 1.168, 1.181, 1.195, 1.208, 1.217, 1.223, 1.235, 1.241, 1.244, 1.248, 1.251, 1.252, 1.252, 1.252, 1.252, 1.251, 1.248, 1.245, 1.241, 1.236, 1.231, 1.224, 1.212, 1.202, 1.191, 1.179, 1.164, 1.162, 1.161,
+ 1.158, 1.154, 1.154, 1.167, 1.181, 1.194, 1.206, 1.216, 1.222, 1.234, 1.237, 1.242, 1.245, 1.248, 1.251, 1.249, 1.249, 1.249, 1.249, 1.248, 1.244, 1.241, 1.235, 1.229, 1.223, 1.213, 1.202, 1.191, 1.179, 1.167, 1.163, 1.163,
+ 1.158, 1.154, 1.154, 1.168, 1.181, 1.194, 1.206, 1.215, 1.223, 1.231, 1.236, 1.239, 1.243, 1.245, 1.246, 1.246, 1.248, 1.248, 1.248, 1.245, 1.242, 1.239, 1.235, 1.229, 1.223, 1.213, 1.202, 1.191, 1.179, 1.167, 1.163, 1.162,
+ 1.157, 1.154, 1.154, 1.168, 1.179, 1.194, 1.205, 1.215, 1.222, 1.229, 1.233, 1.236, 1.239, 1.243, 1.244, 1.244, 1.245, 1.245, 1.244, 1.243, 1.239, 1.236, 1.234, 1.229, 1.222, 1.211, 1.202, 1.191, 1.179, 1.166, 1.163, 1.161,
+ 1.156, 1.155, 1.155, 1.168, 1.179, 1.193, 1.205, 1.213, 1.219, 1.225, 1.231, 1.234, 1.238, 1.239, 1.241, 1.243, 1.243, 1.243, 1.243, 1.239, 1.237, 1.235, 1.231, 1.228, 1.221, 1.209, 1.199, 1.189, 1.178, 1.166, 1.162, 1.159,
+ 1.156, 1.156, 1.157, 1.167, 1.178, 1.191, 1.199, 1.209, 1.217, 1.223, 1.226, 1.231, 1.233, 1.236, 1.239, 1.239, 1.241, 1.241, 1.239, 1.237, 1.235, 1.232, 1.229, 1.224, 1.217, 1.209, 1.196, 1.187, 1.176, 1.165, 1.159, 1.157,
+ 1.157, 1.157, 1.157, 1.166, 1.175, 1.187, 1.198, 1.205, 1.213, 1.219, 1.223, 1.227, 1.231, 1.233, 1.236, 1.236, 1.234, 1.235, 1.235, 1.235, 1.231, 1.229, 1.227, 1.222, 1.216, 1.201, 1.194, 1.184, 1.174, 1.163, 1.157, 1.156,
+ 1.158, 1.155, 1.155, 1.165, 1.172, 1.181, 1.194, 1.202, 1.208, 1.215, 1.221, 1.223, 1.227, 1.229, 1.231, 1.231, 1.231, 1.232, 1.233, 1.231, 1.228, 1.227, 1.223, 1.219, 1.213, 1.199, 1.189, 1.181, 1.171, 1.161, 1.157, 1.156,
+ 1.155, 1.154, 1.154, 1.164, 1.169, 1.179, 1.189, 1.196, 1.203, 1.208, 1.215, 1.221, 1.222, 1.224, 1.225, 1.225, 1.226, 1.228, 1.228, 1.227, 1.225, 1.222, 1.219, 1.213, 1.206, 1.196, 1.187, 1.177, 1.168, 1.159, 1.156, 1.156,
+ 1.155, 1.152, 1.152, 1.162, 1.167, 1.175, 1.185, 1.191, 1.198, 1.205, 1.209, 1.214, 1.216, 1.217, 1.217, 1.217, 1.219, 1.219, 1.219, 1.219, 1.217, 1.215, 1.213, 1.207, 1.199, 1.191, 1.179, 1.172, 1.165, 1.156, 1.155, 1.155,
+ 1.155, 1.152, 1.152, 1.161, 1.163, 1.169, 1.179, 1.186, 1.192, 1.198, 1.204, 1.208, 1.211, 1.211, 1.211, 1.212, 1.212, 1.213, 1.215, 1.215, 1.211, 1.208, 1.205, 1.199, 1.194, 1.185, 1.175, 1.167, 1.161, 1.156, 1.155, 1.153,
+ 1.157, 1.152, 1.152, 1.159, 1.162, 1.166, 1.174, 1.181, 1.187, 1.192, 1.197, 1.203, 1.204, 1.205, 1.204, 1.204, 1.204, 1.205, 1.206, 1.206, 1.204, 1.201, 1.198, 1.194, 1.187, 1.176, 1.171, 1.164, 1.159, 1.156, 1.155, 1.154,
+ 1.159, 1.154, 1.154, 1.158, 1.159, 1.163, 1.171, 1.176, 1.181, 1.187, 1.191, 1.195, 1.198, 1.199, 1.199, 1.201, 1.201, 1.202, 1.202, 1.199, 1.196, 1.193, 1.191, 1.188, 1.182, 1.174, 1.166, 1.162, 1.157, 1.156, 1.156, 1.156,
+ 1.162, 1.161, 1.158, 1.159, 1.159, 1.162, 1.167, 1.173, 1.178, 1.181, 1.186, 1.189, 1.189, 1.191, 1.193, 1.193, 1.193, 1.194, 1.194, 1.194, 1.189, 1.187, 1.186, 1.182, 1.176, 1.167, 1.163, 1.159, 1.158, 1.157, 1.158, 1.161,
+ 1.172, 1.165, 1.162, 1.162, 1.163, 1.166, 1.169, 1.173, 1.178, 1.181, 1.182, 1.185, 1.186, 1.186, 1.186, 1.187, 1.187, 1.189, 1.192, 1.191, 1.187, 1.185, 1.181, 1.177, 1.172, 1.167, 1.163, 1.159, 1.159, 1.161, 1.163, 1.166,
+ 1.173, 1.172, 1.166, 1.165, 1.166, 1.168, 1.171, 1.176, 1.179, 1.182, 1.181, 1.183, 1.185, 1.185, 1.185, 1.185, 1.185, 1.185, 1.191, 1.191, 1.185, 1.181, 1.179, 1.173, 1.169, 1.168, 1.163, 1.162, 1.161, 1.164, 1.166, 1.167
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 2.271, 2.218, 2.105, 2.004, 1.909, 1.829, 1.762, 1.705, 1.665, 1.629, 1.592, 1.559, 1.528, 1.516, 1.511, 1.511, 1.511, 1.514, 1.525, 1.553, 1.585, 1.617, 1.655, 1.697, 1.752, 1.816, 1.893, 1.982, 2.084, 2.195, 2.321, 2.342,
+ 2.218, 2.166, 2.057, 1.959, 1.871, 1.793, 1.726, 1.675, 1.633, 1.592, 1.559, 1.528, 1.503, 1.484, 1.474, 1.472, 1.472, 1.482, 1.499, 1.523, 1.553, 1.585, 1.619, 1.664, 1.715, 1.779, 1.855, 1.938, 2.037, 2.147, 2.259, 2.321,
+ 2.166, 2.101, 1.997, 1.901, 1.818, 1.743, 1.683, 1.634, 1.588, 1.546, 1.508, 1.476, 1.449, 1.429, 1.418, 1.415, 1.415, 1.425, 1.444, 1.469, 1.501, 1.538, 1.577, 1.622, 1.671, 1.728, 1.799, 1.881, 1.975, 2.078, 2.185, 2.259,
+ 2.101, 2.039, 1.938, 1.848, 1.768, 1.699, 1.641, 1.588, 1.541, 1.494, 1.455, 1.421, 1.394, 1.374, 1.361, 1.357, 1.357, 1.367, 1.388, 1.414, 1.448, 1.485, 1.528, 1.577, 1.626, 1.682, 1.748, 1.827, 1.917, 2.014, 2.119, 2.185,
+ 2.039, 1.979, 1.883, 1.795, 1.722, 1.658, 1.596, 1.541, 1.493, 1.443, 1.401, 1.364, 1.336, 1.316, 1.303, 1.301, 1.301, 1.311, 1.331, 1.359, 1.393, 1.432, 1.482, 1.528, 1.582, 1.641, 1.701, 1.775, 1.861, 1.956, 2.056, 2.119,
+ 1.979, 1.932, 1.836, 1.752, 1.685, 1.621, 1.557, 1.497, 1.443, 1.399, 1.351, 1.314, 1.286, 1.264, 1.253, 1.249, 1.249, 1.259, 1.281, 1.311, 1.344, 1.387, 1.432, 1.484, 1.541, 1.601, 1.662, 1.731, 1.816, 1.908, 2.003, 2.056,
+ 1.934, 1.888, 1.798, 1.719, 1.651, 1.584, 1.519, 1.457, 1.401, 1.351, 1.307, 1.268, 1.239, 1.217, 1.206, 1.203, 1.203, 1.212, 1.234, 1.263, 1.298, 1.344, 1.387, 1.442, 1.502, 1.565, 1.628, 1.693, 1.774, 1.864, 1.956, 2.003,
+ 1.901, 1.851, 1.763, 1.688, 1.618, 1.551, 1.483, 1.419, 1.359, 1.307, 1.268, 1.226, 1.195, 1.175, 1.164, 1.161, 1.161, 1.171, 1.192, 1.221, 1.262, 1.298, 1.346, 1.404, 1.466, 1.532, 1.595, 1.661, 1.738, 1.826, 1.917, 1.956,
+ 1.873, 1.821, 1.734, 1.659, 1.591, 1.519, 1.451, 1.386, 1.324, 1.269, 1.226, 1.192, 1.159, 1.141, 1.127, 1.125, 1.125, 1.135, 1.155, 1.187, 1.221, 1.262, 1.311, 1.368, 1.432, 1.499, 1.566, 1.634, 1.708, 1.793, 1.882, 1.917,
+ 1.847, 1.797, 1.713, 1.639, 1.565, 1.493, 1.422, 1.355, 1.291, 1.238, 1.192, 1.159, 1.128, 1.108, 1.097, 1.094, 1.094, 1.104, 1.125, 1.155, 1.187, 1.229, 1.279, 1.338, 1.403, 1.471, 1.541, 1.611, 1.684, 1.766, 1.853, 1.885,
+ 1.828, 1.772, 1.691, 1.614, 1.539, 1.466, 1.394, 1.325, 1.264, 1.209, 1.163, 1.128, 1.104, 1.081, 1.069, 1.067, 1.067, 1.078, 1.101, 1.125, 1.159, 1.201, 1.252, 1.312, 1.379, 1.447, 1.517, 1.591, 1.665, 1.743, 1.831, 1.862,
+ 1.812, 1.754, 1.677, 1.599, 1.519, 1.445, 1.371, 1.302, 1.239, 1.185, 1.139, 1.104, 1.081, 1.061, 1.048, 1.046, 1.046, 1.058, 1.078, 1.102, 1.136, 1.177, 1.229, 1.289, 1.356, 1.425, 1.497, 1.572, 1.647, 1.724, 1.811, 1.847,
+ 1.798, 1.741, 1.663, 1.585, 1.506, 1.429, 1.353, 1.284, 1.221, 1.167, 1.121, 1.086, 1.061, 1.046, 1.031, 1.029, 1.029, 1.044, 1.058, 1.083, 1.116, 1.159, 1.209, 1.271, 1.338, 1.407, 1.479, 1.557, 1.633, 1.709, 1.792, 1.832,
+ 1.792, 1.727, 1.651, 1.572, 1.494, 1.414, 1.339, 1.269, 1.206, 1.152, 1.106, 1.072, 1.046, 1.031, 1.018, 1.016, 1.016, 1.029, 1.044, 1.069, 1.102, 1.145, 1.196, 1.256, 1.324, 1.394, 1.471, 1.545, 1.624, 1.698, 1.782, 1.825,
+ 1.787, 1.724, 1.647, 1.566, 1.484, 1.407, 1.329, 1.258, 1.196, 1.141, 1.097, 1.062, 1.036, 1.018, 1.012, 1.007, 1.011, 1.016, 1.034, 1.059, 1.093, 1.135, 1.186, 1.246, 1.314, 1.386, 1.461, 1.538, 1.616, 1.691, 1.773, 1.818,
+ 1.786, 1.721, 1.642, 1.562, 1.481, 1.402, 1.325, 1.254, 1.191, 1.137, 1.092, 1.057, 1.031, 1.013, 1.004, 1.001, 1.004, 1.011, 1.028, 1.054, 1.088, 1.129, 1.181, 1.241, 1.308, 1.382, 1.458, 1.535, 1.613, 1.687, 1.769, 1.818,
+ 1.786, 1.721, 1.642, 1.562, 1.481, 1.401, 1.325, 1.253, 1.191, 1.136, 1.091, 1.057, 1.031, 1.013, 1.003, 1.001, 1.001, 1.011, 1.028, 1.054, 1.088, 1.129, 1.181, 1.241, 1.308, 1.382, 1.458, 1.535, 1.613, 1.687, 1.769, 1.818,
+ 1.787, 1.722, 1.643, 1.563, 1.482, 1.402, 1.326, 1.254, 1.192, 1.138, 1.092, 1.057, 1.032, 1.013, 1.006, 1.002, 1.006, 1.012, 1.031, 1.057, 1.092, 1.133, 1.185, 1.243, 1.311, 1.385, 1.461, 1.539, 1.618, 1.691, 1.774, 1.821,
+ 1.789, 1.729, 1.651, 1.571, 1.489, 1.411, 1.334, 1.263, 1.201, 1.147, 1.101, 1.065, 1.038, 1.021, 1.013, 1.009, 1.012, 1.021, 1.038, 1.064, 1.098, 1.141, 1.193, 1.254, 1.321, 1.395, 1.472, 1.549, 1.626, 1.701, 1.785, 1.825,
+ 1.799, 1.739, 1.661, 1.581, 1.502, 1.422, 1.347, 1.277, 1.214, 1.159, 1.111, 1.075, 1.049, 1.037, 1.021, 1.019, 1.021, 1.036, 1.049, 1.076, 1.111, 1.154, 1.207, 1.268, 1.334, 1.408, 1.485, 1.562, 1.639, 1.715, 1.799, 1.837,
+ 1.811, 1.755, 1.676, 1.597, 1.518, 1.439, 1.365, 1.295, 1.231, 1.176, 1.129, 1.093, 1.067, 1.049, 1.038, 1.036, 1.036, 1.049, 1.067, 1.094, 1.129, 1.173, 1.225, 1.286, 1.353, 1.425, 1.501, 1.577, 1.653, 1.729, 1.815, 1.851,
+ 1.829, 1.774, 1.693, 1.615, 1.537, 1.462, 1.387, 1.316, 1.253, 1.198, 1.153, 1.115, 1.091, 1.067, 1.059, 1.056, 1.056, 1.067, 1.092, 1.115, 1.151, 1.196, 1.249, 1.309, 1.375, 1.446, 1.522, 1.595, 1.672, 1.752, 1.839, 1.871,
+ 1.851, 1.801, 1.713, 1.636, 1.561, 1.485, 1.411, 1.342, 1.281, 1.226, 1.179, 1.145, 1.115, 1.091, 1.082, 1.081, 1.082, 1.092, 1.115, 1.143, 1.178, 1.223, 1.276, 1.337, 1.402, 1.472, 1.544, 1.618, 1.691, 1.774, 1.865, 1.896,
+ 1.876, 1.831, 1.739, 1.663, 1.588, 1.513, 1.439, 1.374, 1.312, 1.258, 1.212, 1.179, 1.145, 1.123, 1.113, 1.112, 1.112, 1.122, 1.143, 1.177, 1.211, 1.256, 1.308, 1.368, 1.431, 1.501, 1.572, 1.641, 1.716, 1.802, 1.896, 1.931,
+ 1.909, 1.867, 1.771, 1.691, 1.617, 1.545, 1.474, 1.411, 1.349, 1.296, 1.252, 1.212, 1.182, 1.159, 1.149, 1.148, 1.149, 1.158, 1.179, 1.211, 1.253, 1.293, 1.344, 1.403, 1.465, 1.533, 1.603, 1.669, 1.747, 1.836, 1.931, 1.974,
+ 1.952, 1.905, 1.806, 1.722, 1.651, 1.578, 1.511, 1.448, 1.388, 1.338, 1.296, 1.252, 1.223, 1.201, 1.189, 1.189, 1.189, 1.199, 1.224, 1.253, 1.293, 1.338, 1.384, 1.442, 1.504, 1.571, 1.638, 1.704, 1.782, 1.872, 1.974, 2.025,
+ 2.004, 1.951, 1.849, 1.759, 1.688, 1.619, 1.552, 1.491, 1.435, 1.388, 1.338, 1.301, 1.272, 1.249, 1.238, 1.236, 1.236, 1.248, 1.271, 1.301, 1.338, 1.384, 1.431, 1.484, 1.543, 1.609, 1.675, 1.742, 1.825, 1.919, 2.025, 2.081,
+ 2.062, 2.004, 1.898, 1.805, 1.729, 1.661, 1.597, 1.539, 1.486, 1.435, 1.391, 1.354, 1.326, 1.303, 1.291, 1.289, 1.289, 1.301, 1.323, 1.353, 1.389, 1.431, 1.483, 1.528, 1.585, 1.649, 1.713, 1.787, 1.875, 1.971, 2.081, 2.145,
+ 2.129, 2.062, 1.951, 1.854, 1.774, 1.705, 1.642, 1.586, 1.539, 1.486, 1.445, 1.411, 1.383, 1.361, 1.348, 1.347, 1.348, 1.359, 1.379, 1.409, 1.447, 1.484, 1.528, 1.578, 1.631, 1.691, 1.759, 1.836, 1.928, 2.031, 2.145, 2.217,
+ 2.201, 2.129, 2.013, 1.912, 1.827, 1.752, 1.689, 1.642, 1.586, 1.544, 1.501, 1.468, 1.442, 1.421, 1.409, 1.409, 1.411, 1.421, 1.439, 1.467, 1.504, 1.543, 1.578, 1.629, 1.679, 1.739, 1.815, 1.894, 1.985, 2.098, 2.217, 2.298,
+ 2.273, 2.201, 2.081, 1.974, 1.886, 1.807, 1.741, 1.689, 1.643, 1.603, 1.562, 1.527, 1.504, 1.485, 1.475, 1.474, 1.475, 1.487, 1.503, 1.531, 1.565, 1.601, 1.634, 1.678, 1.728, 1.795, 1.877, 1.961, 2.052, 2.169, 2.298, 2.365,
+ 2.317, 2.273, 2.146, 2.039, 1.946, 1.864, 1.792, 1.737, 1.688, 1.643, 1.603, 1.562, 1.533, 1.525, 1.523, 1.523, 1.523, 1.525, 1.534, 1.565, 1.601, 1.634, 1.677, 1.722, 1.772, 1.848, 1.935, 2.023, 2.108, 2.232, 2.365, 2.403
+ ],
+ "sigma": 0.00285,
+ "sigma_Cb": 0.00166
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2873,
+ "ccm":
+ [
+ 1.88195, -0.26249, -0.61946,
+ -0.63842, 2.11535, -0.47693,
+ -0.13531, -0.99739, 2.13271
+ ]
+ },
+ {
+ "ct": 2965,
+ "ccm":
+ [
+ 2.15048, -0.51859, -0.63189,
+ -0.53572, 1.92585, -0.39013,
+ 0.01831, -1.48576, 2.46744
+ ]
+ },
+ {
+ "ct": 3606,
+ "ccm":
+ [
+ 1.97522, -0.43847, -0.53675,
+ -0.56151, 1.99765, -0.43614,
+ -0.12438, -0.77056, 1.89493
+ ]
+ },
+ {
+ "ct": 4700,
+ "ccm":
+ [
+ 2.00971, -0.51461, -0.49511,
+ -0.52109, 2.01003, -0.48894,
+ -0.09527, -0.67318, 1.76845
+ ]
+ },
+ {
+ "ct": 5890,
+ "ccm":
+ [
+ 2.13616, -0.65283, -0.48333,
+ -0.48364, 1.93115, -0.44751,
+ -0.13465, -0.54831, 1.68295
+ ]
+ },
+ {
+ "ct": 7600,
+ "ccm":
+ [
+ 2.06599, -0.39161, -0.67439,
+ -0.50883, 2.27467, -0.76583,
+ -0.13961, -0.66121, 1.80081
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/ov5647_noir.json b/src/ipa/rpi/pisp/data/ov5647_noir.json
new file mode 100644
index 00000000..3e04f21b
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/ov5647_noir.json
@@ -0,0 +1,1121 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 1024
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 29381,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 870,
+ "reference_Y": 12388
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 4.371
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 280,
+ "slope": 0.02153
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "bayes": 0
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 1.0, 2.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 15000, 30000 ],
+ "gain": [ 1.0, 2.0, 2.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 15000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.02,
+ 1000, 0.02
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.01,
+ 1000, 0.01
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.9,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.005,
+ 1000, 0.005
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.19,
+ 1000, 0.19,
+ 10000, 0.19
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 1.238, 1.238, 1.238, 1.234, 1.227, 1.216, 1.207, 1.198, 1.191, 1.179, 1.169, 1.162, 1.155, 1.153, 1.152, 1.152, 1.152, 1.153, 1.154, 1.157, 1.166, 1.176, 1.183, 1.191, 1.204, 1.216, 1.226, 1.232, 1.239, 1.241, 1.241, 1.242,
+ 1.235, 1.234, 1.227, 1.222, 1.214, 1.203, 1.193, 1.184, 1.169, 1.161, 1.149, 1.139, 1.131, 1.126, 1.122, 1.121, 1.121, 1.123, 1.129, 1.136, 1.145, 1.157, 1.163, 1.175, 1.189, 1.199, 1.212, 1.221, 1.225, 1.231, 1.241, 1.242,
+ 1.234, 1.227, 1.222, 1.214, 1.203, 1.193, 1.183, 1.169, 1.158, 1.145, 1.133, 1.123, 1.113, 1.106, 1.101, 1.101, 1.101, 1.105, 1.111, 1.116, 1.128, 1.137, 1.149, 1.163, 1.174, 1.189, 1.199, 1.212, 1.221, 1.226, 1.234, 1.241,
+ 1.234, 1.226, 1.217, 1.209, 1.195, 1.183, 1.171, 1.158, 1.145, 1.131, 1.119, 1.108, 1.097, 1.088, 1.088, 1.085, 1.085, 1.087, 1.095, 1.102, 1.114, 1.124, 1.137, 1.149, 1.165, 1.176, 1.194, 1.207, 1.214, 1.224, 1.235, 1.247,
+ 1.238, 1.224, 1.213, 1.202, 1.187, 1.175, 1.161, 1.146, 1.132, 1.117, 1.105, 1.094, 1.082, 1.074, 1.071, 1.071, 1.071, 1.073, 1.079, 1.089, 1.099, 1.112, 1.124, 1.137, 1.152, 1.167, 1.183, 1.198, 1.211, 1.222, 1.235, 1.249,
+ 1.232, 1.221, 1.209, 1.195, 1.178, 1.163, 1.149, 1.134, 1.118, 1.104, 1.093, 1.079, 1.069, 1.061, 1.057, 1.056, 1.056, 1.059, 1.066, 1.073, 1.086, 1.098, 1.111, 1.124, 1.141, 1.157, 1.173, 1.188, 1.203, 1.219, 1.234, 1.251,
+ 1.231, 1.213, 1.197, 1.186, 1.169, 1.151, 1.137, 1.121, 1.104, 1.093, 1.079, 1.068, 1.056, 1.048, 1.045, 1.042, 1.042, 1.045, 1.051, 1.061, 1.071, 1.085, 1.098, 1.111, 1.129, 1.145, 1.161, 1.179, 1.197, 1.215, 1.231, 1.249,
+ 1.224, 1.211, 1.194, 1.178, 1.161, 1.141, 1.127, 1.109, 1.094, 1.081, 1.068, 1.055, 1.047, 1.038, 1.034, 1.032, 1.032, 1.035, 1.039, 1.048, 1.059, 1.071, 1.086, 1.098, 1.116, 1.134, 1.154, 1.172, 1.191, 1.209, 1.228, 1.249,
+ 1.223, 1.206, 1.187, 1.171, 1.152, 1.132, 1.117, 1.098, 1.082, 1.069, 1.056, 1.045, 1.037, 1.028, 1.024, 1.022, 1.022, 1.025, 1.031, 1.039, 1.048, 1.059, 1.074, 1.091, 1.106, 1.126, 1.144, 1.163, 1.186, 1.205, 1.227, 1.247,
+ 1.222, 1.199, 1.183, 1.164, 1.143, 1.126, 1.108, 1.091, 1.075, 1.059, 1.045, 1.037, 1.028, 1.019, 1.015, 1.014, 1.014, 1.018, 1.023, 1.031, 1.042, 1.051, 1.065, 1.081, 1.098, 1.118, 1.137, 1.158, 1.181, 1.201, 1.224, 1.245,
+ 1.221, 1.198, 1.179, 1.163, 1.141, 1.119, 1.101, 1.083, 1.066, 1.051, 1.038, 1.028, 1.019, 1.012, 1.009, 1.008, 1.007, 1.008, 1.015, 1.023, 1.033, 1.044, 1.058, 1.072, 1.089, 1.107, 1.131, 1.152, 1.172, 1.196, 1.216, 1.241,
+ 1.216, 1.194, 1.174, 1.155, 1.133, 1.112, 1.094, 1.074, 1.059, 1.045, 1.032, 1.021, 1.012, 1.007, 1.003, 1.002, 1.002, 1.003, 1.008, 1.015, 1.025, 1.038, 1.049, 1.067, 1.084, 1.102, 1.126, 1.147, 1.169, 1.191, 1.214, 1.238,
+ 1.212, 1.188, 1.171, 1.149, 1.127, 1.105, 1.087, 1.069, 1.055, 1.039, 1.027, 1.016, 1.007, 1.003, 0.999, 0.997, 0.998, 1.001, 1.003, 1.011, 1.021, 1.032, 1.043, 1.059, 1.077, 1.101, 1.121, 1.142, 1.164, 1.187, 1.211, 1.236,
+ 1.208, 1.187, 1.169, 1.149, 1.124, 1.104, 1.085, 1.067, 1.051, 1.036, 1.024, 1.013, 1.005, 0.999, 0.996, 0.994, 0.994, 0.996, 1.001, 1.006, 1.017, 1.025, 1.038, 1.053, 1.072, 1.093, 1.116, 1.138, 1.159, 1.183, 1.207, 1.235,
+ 1.208, 1.181, 1.164, 1.144, 1.122, 1.098, 1.079, 1.062, 1.046, 1.033, 1.018, 1.009, 1.002, 0.996, 0.992, 0.989, 0.991, 0.994, 0.996, 1.002, 1.012, 1.021, 1.035, 1.051, 1.069, 1.091, 1.113, 1.137, 1.157, 1.182, 1.206, 1.233,
+ 1.206, 1.179, 1.163, 1.142, 1.119, 1.098, 1.079, 1.061, 1.045, 1.031, 1.017, 1.008, 1.001, 0.995, 0.991, 0.989, 0.989, 0.992, 0.996, 1.001, 1.011, 1.019, 1.034, 1.051, 1.069, 1.089, 1.112, 1.136, 1.157, 1.181, 1.205, 1.233,
+ 1.206, 1.179, 1.163, 1.139, 1.119, 1.098, 1.079, 1.061, 1.044, 1.031, 1.016, 1.007, 1.001, 0.995, 0.991, 0.989, 0.989, 0.991, 0.996, 1.002, 1.011, 1.019, 1.034, 1.049, 1.069, 1.088, 1.113, 1.136, 1.156, 1.179, 1.204, 1.233,
+ 1.207, 1.179, 1.163, 1.139, 1.119, 1.099, 1.079, 1.061, 1.044, 1.031, 1.017, 1.007, 1.001, 0.995, 0.991, 0.989, 0.989, 0.992, 0.997, 1.003, 1.011, 1.021, 1.034, 1.051, 1.071, 1.089, 1.112, 1.136, 1.157, 1.179, 1.204, 1.233,
+ 1.207, 1.179, 1.163, 1.143, 1.121, 1.101, 1.082, 1.063, 1.047, 1.032, 1.019, 1.009, 1.003, 0.998, 0.994, 0.991, 0.991, 0.995, 0.999, 1.004, 1.013, 1.024, 1.038, 1.052, 1.071, 1.091, 1.112, 1.136, 1.159, 1.181, 1.205, 1.233,
+ 1.207, 1.185, 1.166, 1.148, 1.124, 1.104, 1.087, 1.068, 1.052, 1.037, 1.025, 1.016, 1.006, 1.002, 0.998, 0.995, 0.995, 0.999, 1.003, 1.008, 1.017, 1.029, 1.043, 1.056, 1.076, 1.094, 1.116, 1.138, 1.159, 1.183, 1.205, 1.232,
+ 1.211, 1.186, 1.167, 1.151, 1.128, 1.108, 1.089, 1.072, 1.057, 1.042, 1.031, 1.021, 1.013, 1.006, 1.002, 0.999, 0.999, 1.003, 1.007, 1.013, 1.021, 1.031, 1.047, 1.062, 1.081, 1.098, 1.121, 1.141, 1.164, 1.185, 1.207, 1.232,
+ 1.211, 1.188, 1.169, 1.154, 1.134, 1.114, 1.094, 1.078, 1.063, 1.051, 1.039, 1.028, 1.019, 1.013, 1.007, 1.006, 1.006, 1.007, 1.013, 1.019, 1.027, 1.039, 1.051, 1.069, 1.087, 1.105, 1.124, 1.146, 1.165, 1.186, 1.209, 1.232,
+ 1.214, 1.191, 1.175, 1.159, 1.141, 1.123, 1.105, 1.087, 1.072, 1.058, 1.046, 1.036, 1.028, 1.019, 1.014, 1.013, 1.013, 1.015, 1.019, 1.027, 1.037, 1.048, 1.061, 1.076, 1.094, 1.109, 1.132, 1.149, 1.169, 1.189, 1.209, 1.233,
+ 1.219, 1.194, 1.179, 1.163, 1.146, 1.129, 1.113, 1.095, 1.081, 1.066, 1.055, 1.045, 1.036, 1.029, 1.023, 1.021, 1.021, 1.026, 1.031, 1.037, 1.048, 1.057, 1.069, 1.085, 1.101, 1.118, 1.137, 1.156, 1.174, 1.193, 1.213, 1.233,
+ 1.219, 1.199, 1.184, 1.172, 1.155, 1.138, 1.122, 1.104, 1.088, 1.075, 1.065, 1.055, 1.045, 1.038, 1.034, 1.031, 1.031, 1.035, 1.041, 1.048, 1.057, 1.066, 1.081, 1.096, 1.111, 1.125, 1.146, 1.164, 1.178, 1.196, 1.214, 1.233,
+ 1.222, 1.204, 1.189, 1.178, 1.162, 1.148, 1.132, 1.115, 1.101, 1.087, 1.075, 1.064, 1.055, 1.048, 1.043, 1.042, 1.042, 1.046, 1.049, 1.057, 1.066, 1.076, 1.089, 1.106, 1.121, 1.133, 1.149, 1.167, 1.183, 1.199, 1.215, 1.234,
+ 1.222, 1.205, 1.191, 1.184, 1.171, 1.155, 1.142, 1.124, 1.109, 1.097, 1.087, 1.077, 1.065, 1.059, 1.055, 1.053, 1.053, 1.057, 1.059, 1.067, 1.076, 1.088, 1.102, 1.116, 1.131, 1.143, 1.157, 1.175, 1.187, 1.202, 1.215, 1.231,
+ 1.223, 1.211, 1.198, 1.189, 1.178, 1.165, 1.151, 1.136, 1.122, 1.108, 1.097, 1.087, 1.079, 1.073, 1.067, 1.066, 1.066, 1.069, 1.074, 1.079, 1.088, 1.101, 1.114, 1.128, 1.141, 1.152, 1.166, 1.182, 1.194, 1.205, 1.215, 1.229,
+ 1.223, 1.212, 1.204, 1.197, 1.186, 1.173, 1.161, 1.149, 1.133, 1.121, 1.108, 1.101, 1.092, 1.085, 1.082, 1.082, 1.082, 1.085, 1.091, 1.096, 1.101, 1.113, 1.125, 1.138, 1.151, 1.164, 1.175, 1.188, 1.198, 1.207, 1.215, 1.222,
+ 1.217, 1.213, 1.211, 1.203, 1.194, 1.181, 1.169, 1.158, 1.145, 1.133, 1.123, 1.113, 1.106, 1.097, 1.096, 1.094, 1.094, 1.098, 1.104, 1.108, 1.114, 1.124, 1.137, 1.149, 1.161, 1.172, 1.182, 1.194, 1.203, 1.209, 1.211, 1.217,
+ 1.214, 1.211, 1.209, 1.206, 1.201, 1.188, 1.179, 1.168, 1.154, 1.144, 1.136, 1.126, 1.119, 1.112, 1.109, 1.108, 1.108, 1.108, 1.117, 1.119, 1.124, 1.133, 1.147, 1.158, 1.171, 1.178, 1.188, 1.198, 1.205, 1.208, 1.209, 1.211,
+ 1.207, 1.208, 1.209, 1.206, 1.202, 1.192, 1.182, 1.171, 1.159, 1.146, 1.142, 1.136, 1.126, 1.119, 1.116, 1.114, 1.115, 1.117, 1.119, 1.128, 1.129, 1.136, 1.155, 1.162, 1.176, 1.182, 1.188, 1.198, 1.205, 1.208, 1.207, 1.206
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.879, 1.878, 1.872, 1.862, 1.856, 1.842, 1.826, 1.815, 1.811, 1.799, 1.787, 1.777, 1.768, 1.761, 1.761, 1.761, 1.762, 1.763, 1.764, 1.769, 1.776, 1.789, 1.799, 1.807, 1.824, 1.841, 1.853, 1.861, 1.871, 1.874, 1.885, 1.889,
+ 1.879, 1.875, 1.859, 1.846, 1.835, 1.817, 1.806, 1.794, 1.777, 1.771, 1.755, 1.743, 1.733, 1.726, 1.721, 1.721, 1.721, 1.722, 1.729, 1.734, 1.747, 1.759, 1.771, 1.783, 1.801, 1.813, 1.831, 1.841, 1.849, 1.862, 1.876, 1.888,
+ 1.876, 1.861, 1.846, 1.835, 1.817, 1.806, 1.793, 1.777, 1.766, 1.752, 1.736, 1.727, 1.713, 1.702, 1.696, 1.695, 1.695, 1.697, 1.704, 1.715, 1.725, 1.739, 1.754, 1.771, 1.783, 1.801, 1.813, 1.831, 1.841, 1.851, 1.866, 1.888,
+ 1.878, 1.861, 1.843, 1.829, 1.811, 1.794, 1.779, 1.766, 1.751, 1.734, 1.721, 1.711, 1.695, 1.682, 1.679, 1.677, 1.677, 1.678, 1.687, 1.696, 1.713, 1.723, 1.737, 1.754, 1.774, 1.785, 1.811, 1.825, 1.833, 1.849, 1.866, 1.889,
+ 1.882, 1.859, 1.837, 1.821, 1.803, 1.784, 1.769, 1.752, 1.735, 1.717, 1.701, 1.689, 1.676, 1.664, 1.659, 1.658, 1.658, 1.659, 1.668, 1.679, 1.694, 1.711, 1.723, 1.739, 1.756, 1.777, 1.797, 1.813, 1.827, 1.844, 1.865, 1.889,
+ 1.869, 1.849, 1.832, 1.811, 1.792, 1.772, 1.755, 1.737, 1.717, 1.699, 1.688, 1.674, 1.661, 1.646, 1.642, 1.638, 1.638, 1.641, 1.651, 1.659, 1.676, 1.693, 1.708, 1.724, 1.744, 1.763, 1.783, 1.801, 1.819, 1.838, 1.864, 1.889,
+ 1.869, 1.841, 1.817, 1.801, 1.782, 1.758, 1.741, 1.721, 1.699, 1.688, 1.674, 1.658, 1.643, 1.632, 1.627, 1.621, 1.621, 1.622, 1.631, 1.643, 1.658, 1.676, 1.689, 1.708, 1.729, 1.748, 1.767, 1.791, 1.812, 1.836, 1.859, 1.891,
+ 1.861, 1.836, 1.814, 1.792, 1.772, 1.745, 1.728, 1.707, 1.688, 1.673, 1.658, 1.643, 1.629, 1.618, 1.612, 1.609, 1.609, 1.611, 1.615, 1.629, 1.642, 1.658, 1.676, 1.689, 1.711, 1.734, 1.758, 1.782, 1.804, 1.827, 1.859, 1.891,
+ 1.861, 1.829, 1.807, 1.784, 1.759, 1.735, 1.717, 1.692, 1.674, 1.659, 1.644, 1.629, 1.617, 1.605, 1.598, 1.595, 1.595, 1.598, 1.607, 1.615, 1.631, 1.642, 1.661, 1.681, 1.701, 1.724, 1.746, 1.771, 1.799, 1.825, 1.857, 1.891,
+ 1.861, 1.826, 1.804, 1.779, 1.749, 1.729, 1.707, 1.687, 1.665, 1.648, 1.629, 1.617, 1.604, 1.595, 1.589, 1.585, 1.585, 1.592, 1.597, 1.607, 1.623, 1.635, 1.652, 1.674, 1.693, 1.716, 1.739, 1.766, 1.794, 1.822, 1.855, 1.889,
+ 1.861, 1.824, 1.799, 1.777, 1.748, 1.723, 1.701, 1.678, 1.657, 1.639, 1.619, 1.605, 1.596, 1.586, 1.581, 1.579, 1.577, 1.579, 1.588, 1.597, 1.612, 1.625, 1.641, 1.661, 1.681, 1.702, 1.732, 1.757, 1.785, 1.813, 1.847, 1.882,
+ 1.856, 1.819, 1.796, 1.767, 1.739, 1.714, 1.693, 1.666, 1.651, 1.629, 1.613, 1.597, 1.586, 1.579, 1.576, 1.572, 1.572, 1.573, 1.579, 1.588, 1.602, 1.619, 1.633, 1.655, 1.674, 1.698, 1.729, 1.754, 1.782, 1.809, 1.842, 1.874,
+ 1.853, 1.815, 1.792, 1.761, 1.734, 1.707, 1.682, 1.659, 1.639, 1.622, 1.605, 1.591, 1.579, 1.574, 1.569, 1.565, 1.566, 1.569, 1.573, 1.584, 1.597, 1.609, 1.624, 1.645, 1.666, 1.695, 1.722, 1.746, 1.772, 1.799, 1.835, 1.873,
+ 1.847, 1.811, 1.789, 1.759, 1.732, 1.703, 1.681, 1.657, 1.637, 1.619, 1.603, 1.588, 1.575, 1.569, 1.563, 1.561, 1.561, 1.563, 1.569, 1.576, 1.589, 1.601, 1.616, 1.636, 1.659, 1.686, 1.712, 1.741, 1.767, 1.798, 1.832, 1.873,
+ 1.847, 1.803, 1.779, 1.756, 1.727, 1.699, 1.674, 1.652, 1.632, 1.616, 1.595, 1.583, 1.572, 1.564, 1.558, 1.556, 1.557, 1.559, 1.563, 1.569, 1.583, 1.593, 1.613, 1.633, 1.657, 1.684, 1.709, 1.741, 1.766, 1.796, 1.831, 1.871,
+ 1.845, 1.802, 1.779, 1.755, 1.725, 1.696, 1.673, 1.649, 1.629, 1.614, 1.595, 1.582, 1.572, 1.563, 1.557, 1.556, 1.556, 1.558, 1.562, 1.569, 1.581, 1.593, 1.612, 1.633, 1.656, 1.679, 1.709, 1.741, 1.764, 1.796, 1.828, 1.869,
+ 1.845, 1.801, 1.779, 1.749, 1.723, 1.697, 1.673, 1.649, 1.627, 1.613, 1.593, 1.581, 1.573, 1.563, 1.558, 1.555, 1.555, 1.556, 1.562, 1.573, 1.581, 1.594, 1.611, 1.633, 1.656, 1.679, 1.711, 1.739, 1.764, 1.794, 1.828, 1.869,
+ 1.844, 1.801, 1.781, 1.749, 1.723, 1.697, 1.673, 1.649, 1.627, 1.614, 1.595, 1.581, 1.574, 1.564, 1.559, 1.557, 1.556, 1.559, 1.564, 1.574, 1.582, 1.595, 1.611, 1.634, 1.659, 1.683, 1.709, 1.739, 1.765, 1.794, 1.829, 1.872,
+ 1.845, 1.802, 1.781, 1.754, 1.725, 1.701, 1.677, 1.652, 1.632, 1.616, 1.599, 1.586, 1.576, 1.569, 1.563, 1.559, 1.558, 1.562, 1.569, 1.576, 1.587, 1.599, 1.618, 1.635, 1.661, 1.685, 1.709, 1.739, 1.767, 1.796, 1.829, 1.868,
+ 1.845, 1.809, 1.785, 1.762, 1.731, 1.706, 1.685, 1.659, 1.641, 1.622, 1.606, 1.595, 1.581, 1.575, 1.569, 1.564, 1.564, 1.569, 1.574, 1.582, 1.594, 1.607, 1.625, 1.642, 1.668, 1.687, 1.716, 1.741, 1.769, 1.798, 1.829, 1.868,
+ 1.849, 1.811, 1.785, 1.765, 1.734, 1.709, 1.688, 1.666, 1.647, 1.628, 1.613, 1.601, 1.592, 1.581, 1.575, 1.572, 1.572, 1.575, 1.581, 1.589, 1.599, 1.611, 1.631, 1.649, 1.673, 1.694, 1.721, 1.747, 1.771, 1.798, 1.829, 1.868,
+ 1.849, 1.816, 1.787, 1.766, 1.739, 1.716, 1.692, 1.673, 1.657, 1.641, 1.625, 1.612, 1.599, 1.592, 1.584, 1.581, 1.581, 1.581, 1.589, 1.598, 1.608, 1.622, 1.639, 1.659, 1.679, 1.701, 1.724, 1.751, 1.774, 1.802, 1.832, 1.868,
+ 1.855, 1.816, 1.793, 1.773, 1.748, 1.727, 1.707, 1.686, 1.667, 1.649, 1.636, 1.623, 1.612, 1.599, 1.594, 1.592, 1.591, 1.591, 1.598, 1.608, 1.621, 1.634, 1.649, 1.669, 1.693, 1.705, 1.736, 1.757, 1.778, 1.804, 1.833, 1.867,
+ 1.858, 1.818, 1.796, 1.778, 1.754, 1.733, 1.716, 1.695, 1.676, 1.661, 1.648, 1.635, 1.624, 1.613, 1.604, 1.601, 1.601, 1.606, 1.613, 1.621, 1.634, 1.646, 1.661, 1.679, 1.699, 1.714, 1.742, 1.761, 1.782, 1.809, 1.835, 1.867,
+ 1.857, 1.822, 1.801, 1.789, 1.766, 1.744, 1.726, 1.706, 1.688, 1.671, 1.659, 1.647, 1.635, 1.624, 1.621, 1.617, 1.617, 1.621, 1.627, 1.634, 1.645, 1.656, 1.674, 1.694, 1.709, 1.723, 1.751, 1.771, 1.786, 1.811, 1.837, 1.867,
+ 1.858, 1.824, 1.807, 1.794, 1.774, 1.757, 1.739, 1.716, 1.702, 1.687, 1.671, 1.662, 1.648, 1.636, 1.629, 1.629, 1.629, 1.633, 1.635, 1.646, 1.656, 1.669, 1.684, 1.705, 1.719, 1.732, 1.753, 1.774, 1.793, 1.815, 1.837, 1.871,
+ 1.858, 1.827, 1.809, 1.798, 1.782, 1.761, 1.749, 1.727, 1.711, 1.698, 1.687, 1.675, 1.663, 1.649, 1.646, 1.643, 1.643, 1.646, 1.649, 1.658, 1.669, 1.683, 1.698, 1.716, 1.731, 1.746, 1.761, 1.783, 1.795, 1.817, 1.836, 1.862,
+ 1.862, 1.834, 1.816, 1.805, 1.789, 1.774, 1.759, 1.743, 1.725, 1.711, 1.697, 1.688, 1.678, 1.668, 1.661, 1.659, 1.658, 1.659, 1.668, 1.673, 1.684, 1.698, 1.713, 1.728, 1.742, 1.757, 1.771, 1.791, 1.804, 1.821, 1.836, 1.862,
+ 1.859, 1.835, 1.825, 1.813, 1.794, 1.782, 1.771, 1.757, 1.739, 1.725, 1.711, 1.701, 1.693, 1.683, 1.679, 1.679, 1.679, 1.683, 1.689, 1.693, 1.698, 1.714, 1.726, 1.741, 1.754, 1.769, 1.781, 1.797, 1.808, 1.821, 1.835, 1.856,
+ 1.848, 1.836, 1.832, 1.822, 1.806, 1.789, 1.778, 1.765, 1.751, 1.739, 1.726, 1.718, 1.709, 1.699, 1.696, 1.695, 1.695, 1.696, 1.704, 1.705, 1.714, 1.724, 1.739, 1.753, 1.765, 1.777, 1.789, 1.803, 1.816, 1.824, 1.829, 1.842,
+ 1.839, 1.835, 1.834, 1.829, 1.815, 1.801, 1.787, 1.776, 1.759, 1.751, 1.744, 1.736, 1.724, 1.714, 1.711, 1.708, 1.707, 1.707, 1.717, 1.719, 1.724, 1.734, 1.748, 1.762, 1.775, 1.783, 1.796, 1.808, 1.819, 1.825, 1.828, 1.833,
+ 1.836, 1.833, 1.834, 1.832, 1.821, 1.806, 1.792, 1.785, 1.772, 1.759, 1.751, 1.744, 1.736, 1.725, 1.719, 1.715, 1.715, 1.718, 1.721, 1.728, 1.734, 1.736, 1.757, 1.768, 1.779, 1.787, 1.799, 1.812, 1.821, 1.824, 1.825, 1.833
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 3000,
+ "table":
+ [
+ 2.189, 2.127, 2.115, 2.106, 2.113, 2.119, 2.131, 2.144, 2.155, 2.168, 2.176, 2.179, 2.181, 2.181, 2.185, 2.187, 2.187, 2.183, 2.179, 2.176, 2.169, 2.167, 2.159, 2.152, 2.145, 2.141, 2.135, 2.128, 2.124, 2.124, 2.139, 2.177,
+ 2.176, 2.133, 2.116, 2.112, 2.116, 2.125, 2.137, 2.154, 2.168, 2.179, 2.187, 2.194, 2.201, 2.204, 2.208, 2.208, 2.205, 2.202, 2.198, 2.195, 2.183, 2.177, 2.166, 2.159, 2.149, 2.143, 2.138, 2.132, 2.124, 2.125, 2.136, 2.164,
+ 2.175, 2.133, 2.117, 2.115, 2.121, 2.136, 2.154, 2.165, 2.179, 2.192, 2.198, 2.211, 2.218, 2.219, 2.221, 2.221, 2.217, 2.216, 2.211, 2.202, 2.197, 2.188, 2.181, 2.171, 2.159, 2.151, 2.141, 2.136, 2.125, 2.125, 2.132, 2.155,
+ 2.172, 2.128, 2.116, 2.116, 2.124, 2.143, 2.161, 2.177, 2.192, 2.204, 2.213, 2.221, 2.227, 2.231, 2.237, 2.237, 2.229, 2.224, 2.221, 2.213, 2.207, 2.197, 2.191, 2.179, 2.169, 2.156, 2.148, 2.138, 2.126, 2.123, 2.124, 2.149,
+ 2.169, 2.124, 2.119, 2.119, 2.135, 2.152, 2.174, 2.187, 2.204, 2.211, 2.224, 2.233, 2.236, 2.241, 2.246, 2.246, 2.243, 2.237, 2.234, 2.226, 2.218, 2.211, 2.199, 2.191, 2.177, 2.166, 2.155, 2.139, 2.129, 2.121, 2.121, 2.143,
+ 2.157, 2.124, 2.121, 2.127, 2.145, 2.157, 2.181, 2.197, 2.208, 2.221, 2.238, 2.245, 2.249, 2.249, 2.254, 2.254, 2.249, 2.247, 2.243, 2.237, 2.228, 2.219, 2.209, 2.198, 2.186, 2.172, 2.161, 2.143, 2.129, 2.121, 2.121, 2.141,
+ 2.157, 2.124, 2.124, 2.131, 2.148, 2.161, 2.188, 2.202, 2.214, 2.238, 2.246, 2.251, 2.255, 2.257, 2.259, 2.259, 2.257, 2.252, 2.251, 2.247, 2.238, 2.231, 2.219, 2.204, 2.193, 2.173, 2.166, 2.152, 2.134, 2.119, 2.119, 2.131,
+ 2.155, 2.125, 2.125, 2.135, 2.151, 2.169, 2.191, 2.207, 2.219, 2.243, 2.253, 2.258, 2.261, 2.266, 2.266, 2.267, 2.265, 2.262, 2.261, 2.254, 2.244, 2.238, 2.228, 2.212, 2.197, 2.179, 2.167, 2.158, 2.137, 2.122, 2.121, 2.131,
+ 2.155, 2.127, 2.127, 2.137, 2.153, 2.173, 2.197, 2.213, 2.231, 2.248, 2.257, 2.266, 2.271, 2.272, 2.274, 2.275, 2.275, 2.273, 2.271, 2.266, 2.257, 2.251, 2.238, 2.227, 2.209, 2.195, 2.175, 2.159, 2.141, 2.128, 2.127, 2.131,
+ 2.155, 2.128, 2.128, 2.139, 2.159, 2.182, 2.206, 2.225, 2.243, 2.252, 2.265, 2.272, 2.277, 2.283, 2.286, 2.284, 2.283, 2.282, 2.274, 2.272, 2.266, 2.256, 2.244, 2.238, 2.221, 2.202, 2.186, 2.169, 2.149, 2.129, 2.129, 2.135,
+ 2.154, 2.131, 2.131, 2.149, 2.166, 2.189, 2.211, 2.234, 2.248, 2.262, 2.272, 2.277, 2.287, 2.291, 2.293, 2.292, 2.291, 2.285, 2.284, 2.279, 2.272, 2.263, 2.254, 2.243, 2.226, 2.206, 2.193, 2.174, 2.153, 2.133, 2.133, 2.135,
+ 2.153, 2.135, 2.135, 2.151, 2.172, 2.198, 2.221, 2.238, 2.255, 2.265, 2.274, 2.287, 2.291, 2.296, 2.298, 2.298, 2.301, 2.297, 2.289, 2.285, 2.277, 2.271, 2.261, 2.251, 2.236, 2.216, 2.199, 2.179, 2.158, 2.135, 2.134, 2.135,
+ 2.152, 2.136, 2.136, 2.154, 2.176, 2.199, 2.224, 2.239, 2.256, 2.267, 2.282, 2.289, 2.295, 2.299, 2.303, 2.303, 2.302, 2.299, 2.297, 2.288, 2.284, 2.274, 2.262, 2.253, 2.238, 2.219, 2.202, 2.181, 2.158, 2.137, 2.135, 2.135,
+ 2.143, 2.134, 2.134, 2.154, 2.177, 2.201, 2.224, 2.241, 2.256, 2.271, 2.282, 2.289, 2.297, 2.302, 2.306, 2.306, 2.304, 2.301, 2.298, 2.289, 2.287, 2.272, 2.265, 2.255, 2.241, 2.221, 2.203, 2.183, 2.164, 2.141, 2.136, 2.135,
+ 2.142, 2.133, 2.133, 2.155, 2.178, 2.202, 2.223, 2.243, 2.258, 2.273, 2.283, 2.288, 2.296, 2.299, 2.306, 2.306, 2.301, 2.299, 2.296, 2.289, 2.286, 2.271, 2.267, 2.256, 2.244, 2.219, 2.206, 2.188, 2.163, 2.141, 2.137, 2.134,
+ 2.141, 2.131, 2.131, 2.153, 2.179, 2.202, 2.224, 2.242, 2.254, 2.274, 2.283, 2.288, 2.295, 2.298, 2.301, 2.301, 2.301, 2.296, 2.295, 2.289, 2.285, 2.271, 2.267, 2.257, 2.246, 2.223, 2.204, 2.188, 2.165, 2.141, 2.136, 2.134,
+ 2.141, 2.133, 2.133, 2.151, 2.179, 2.201, 2.224, 2.241, 2.254, 2.275, 2.283, 2.288, 2.294, 2.296, 2.298, 2.297, 2.295, 2.295, 2.294, 2.291, 2.284, 2.272, 2.267, 2.256, 2.248, 2.225, 2.208, 2.192, 2.167, 2.141, 2.137, 2.134,
+ 2.141, 2.132, 2.132, 2.151, 2.177, 2.199, 2.221, 2.238, 2.252, 2.274, 2.281, 2.287, 2.293, 2.295, 2.296, 2.294, 2.295, 2.295, 2.294, 2.291, 2.284, 2.274, 2.266, 2.257, 2.248, 2.226, 2.206, 2.189, 2.167, 2.143, 2.141, 2.141,
+ 2.141, 2.133, 2.133, 2.153, 2.175, 2.201, 2.221, 2.238, 2.252, 2.271, 2.278, 2.284, 2.288, 2.291, 2.292, 2.291, 2.293, 2.293, 2.293, 2.287, 2.279, 2.275, 2.266, 2.256, 2.243, 2.224, 2.206, 2.189, 2.168, 2.146, 2.142, 2.134,
+ 2.137, 2.131, 2.131, 2.154, 2.173, 2.199, 2.221, 2.236, 2.251, 2.267, 2.272, 2.278, 2.284, 2.287, 2.288, 2.286, 2.288, 2.288, 2.288, 2.283, 2.277, 2.273, 2.265, 2.256, 2.241, 2.219, 2.205, 2.187, 2.167, 2.144, 2.137, 2.132,
+ 2.136, 2.131, 2.131, 2.152, 2.169, 2.197, 2.218, 2.233, 2.246, 2.257, 2.269, 2.274, 2.281, 2.284, 2.286, 2.285, 2.286, 2.286, 2.286, 2.279, 2.274, 2.269, 2.263, 2.254, 2.239, 2.217, 2.203, 2.181, 2.162, 2.143, 2.133, 2.131,
+ 2.136, 2.131, 2.131, 2.151, 2.167, 2.189, 2.205, 2.226, 2.242, 2.253, 2.261, 2.271, 2.275, 2.279, 2.283, 2.283, 2.284, 2.284, 2.281, 2.277, 2.271, 2.264, 2.257, 2.246, 2.232, 2.215, 2.195, 2.176, 2.158, 2.141, 2.131, 2.128,
+ 2.136, 2.129, 2.131, 2.147, 2.162, 2.181, 2.203, 2.219, 2.236, 2.246, 2.256, 2.263, 2.271, 2.274, 2.278, 2.278, 2.276, 2.277, 2.276, 2.273, 2.266, 2.258, 2.251, 2.241, 2.227, 2.198, 2.191, 2.169, 2.154, 2.136, 2.125, 2.122,
+ 2.132, 2.126, 2.126, 2.139, 2.153, 2.168, 2.194, 2.212, 2.224, 2.238, 2.251, 2.258, 2.263, 2.266, 2.269, 2.271, 2.269, 2.269, 2.269, 2.267, 2.259, 2.253, 2.245, 2.237, 2.219, 2.196, 2.179, 2.162, 2.149, 2.132, 2.122, 2.121,
+ 2.124, 2.119, 2.121, 2.137, 2.147, 2.164, 2.183, 2.199, 2.219, 2.231, 2.239, 2.251, 2.257, 2.261, 2.262, 2.262, 2.259, 2.259, 2.261, 2.258, 2.253, 2.245, 2.237, 2.224, 2.209, 2.187, 2.174, 2.157, 2.141, 2.122, 2.121, 2.121,
+ 2.123, 2.115, 2.115, 2.131, 2.138, 2.157, 2.174, 2.188, 2.207, 2.221, 2.233, 2.239, 2.243, 2.244, 2.244, 2.244, 2.246, 2.245, 2.246, 2.244, 2.241, 2.231, 2.224, 2.212, 2.195, 2.176, 2.159, 2.145, 2.128, 2.117, 2.117, 2.123,
+ 2.123, 2.113, 2.113, 2.123, 2.132, 2.141, 2.162, 2.177, 2.191, 2.208, 2.221, 2.231, 2.231, 2.232, 2.234, 2.235, 2.235, 2.235, 2.238, 2.237, 2.225, 2.214, 2.209, 2.199, 2.181, 2.164, 2.146, 2.135, 2.123, 2.116, 2.116, 2.115,
+ 2.129, 2.115, 2.115, 2.121, 2.128, 2.135, 2.149, 2.164, 2.178, 2.193, 2.207, 2.221, 2.222, 2.222, 2.223, 2.224, 2.224, 2.224, 2.224, 2.223, 2.214, 2.205, 2.196, 2.185, 2.171, 2.151, 2.141, 2.129, 2.119, 2.116, 2.116, 2.117,
+ 2.137, 2.119, 2.119, 2.119, 2.122, 2.129, 2.141, 2.159, 2.167, 2.182, 2.195, 2.206, 2.211, 2.216, 2.218, 2.219, 2.219, 2.219, 2.217, 2.212, 2.202, 2.194, 2.184, 2.174, 2.162, 2.145, 2.134, 2.124, 2.118, 2.117, 2.118, 2.121,
+ 2.138, 2.131, 2.121, 2.122, 2.125, 2.128, 2.137, 2.154, 2.162, 2.176, 2.187, 2.194, 2.196, 2.198, 2.205, 2.205, 2.202, 2.202, 2.203, 2.201, 2.191, 2.182, 2.174, 2.162, 2.149, 2.136, 2.126, 2.121, 2.119, 2.118, 2.127, 2.133,
+ 2.157, 2.148, 2.131, 2.129, 2.129, 2.136, 2.148, 2.157, 2.169, 2.177, 2.182, 2.187, 2.188, 2.191, 2.193, 2.193, 2.192, 2.199, 2.201, 2.199, 2.186, 2.178, 2.167, 2.152, 2.146, 2.137, 2.126, 2.124, 2.121, 2.126, 2.133, 2.151,
+ 2.161, 2.157, 2.148, 2.147, 2.147, 2.147, 2.154, 2.162, 2.174, 2.179, 2.181, 2.184, 2.186, 2.187, 2.189, 2.189, 2.187, 2.188, 2.199, 2.201, 2.187, 2.178, 2.163, 2.148, 2.145, 2.141, 2.131, 2.129, 2.128, 2.135, 2.151, 2.153
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.191, 1.165, 1.156, 1.155, 1.157, 1.161, 1.168, 1.176, 1.179, 1.185, 1.187, 1.189, 1.189, 1.189, 1.191, 1.191, 1.191, 1.189, 1.188, 1.188, 1.185, 1.184, 1.182, 1.178, 1.173, 1.171, 1.166, 1.163, 1.159, 1.159, 1.164, 1.187,
+ 1.188, 1.164, 1.157, 1.156, 1.158, 1.166, 1.173, 1.179, 1.185, 1.193, 1.195, 1.198, 1.199, 1.201, 1.201, 1.202, 1.201, 1.199, 1.199, 1.196, 1.194, 1.189, 1.185, 1.182, 1.177, 1.172, 1.168, 1.164, 1.161, 1.161, 1.162, 1.181,
+ 1.184, 1.164, 1.157, 1.157, 1.161, 1.171, 1.179, 1.185, 1.193, 1.197, 1.201, 1.206, 1.208, 1.209, 1.209, 1.208, 1.207, 1.207, 1.207, 1.202, 1.199, 1.195, 1.192, 1.189, 1.182, 1.176, 1.171, 1.166, 1.161, 1.159, 1.161, 1.177,
+ 1.183, 1.162, 1.158, 1.158, 1.163, 1.174, 1.182, 1.191, 1.197, 1.203, 1.208, 1.212, 1.214, 1.214, 1.218, 1.218, 1.214, 1.212, 1.211, 1.208, 1.206, 1.201, 1.197, 1.192, 1.189, 1.179, 1.174, 1.168, 1.162, 1.159, 1.159, 1.173,
+ 1.181, 1.159, 1.159, 1.159, 1.168, 1.178, 1.189, 1.196, 1.204, 1.208, 1.213, 1.217, 1.219, 1.221, 1.222, 1.222, 1.222, 1.221, 1.219, 1.215, 1.212, 1.208, 1.202, 1.197, 1.189, 1.183, 1.178, 1.169, 1.163, 1.158, 1.158, 1.169,
+ 1.174, 1.159, 1.159, 1.164, 1.172, 1.179, 1.192, 1.201, 1.208, 1.212, 1.219, 1.224, 1.225, 1.227, 1.228, 1.228, 1.226, 1.225, 1.224, 1.221, 1.217, 1.212, 1.208, 1.202, 1.194, 1.187, 1.181, 1.172, 1.164, 1.157, 1.157, 1.169,
+ 1.174, 1.159, 1.159, 1.165, 1.174, 1.184, 1.197, 1.205, 1.209, 1.219, 1.224, 1.228, 1.231, 1.231, 1.231, 1.231, 1.229, 1.229, 1.228, 1.226, 1.222, 1.218, 1.212, 1.205, 1.199, 1.188, 1.181, 1.175, 1.165, 1.157, 1.157, 1.163,
+ 1.173, 1.159, 1.159, 1.165, 1.176, 1.186, 1.198, 1.207, 1.213, 1.223, 1.229, 1.231, 1.235, 1.236, 1.236, 1.236, 1.236, 1.235, 1.234, 1.232, 1.226, 1.223, 1.218, 1.209, 1.201, 1.192, 1.183, 1.178, 1.165, 1.157, 1.157, 1.163,
+ 1.172, 1.159, 1.159, 1.166, 1.176, 1.188, 1.201, 1.209, 1.217, 1.227, 1.231, 1.236, 1.238, 1.239, 1.241, 1.242, 1.242, 1.241, 1.239, 1.235, 1.232, 1.227, 1.223, 1.215, 1.208, 1.199, 1.187, 1.179, 1.167, 1.159, 1.159, 1.163,
+ 1.172, 1.159, 1.159, 1.166, 1.177, 1.189, 1.203, 1.212, 1.223, 1.228, 1.236, 1.239, 1.242, 1.245, 1.246, 1.246, 1.247, 1.246, 1.242, 1.241, 1.237, 1.232, 1.226, 1.223, 1.213, 1.202, 1.191, 1.182, 1.172, 1.159, 1.159, 1.163,
+ 1.168, 1.158, 1.158, 1.167, 1.179, 1.192, 1.204, 1.218, 1.225, 1.233, 1.238, 1.242, 1.246, 1.248, 1.251, 1.251, 1.249, 1.248, 1.247, 1.244, 1.239, 1.237, 1.228, 1.223, 1.214, 1.203, 1.194, 1.183, 1.173, 1.161, 1.161, 1.162,
+ 1.166, 1.158, 1.158, 1.168, 1.183, 1.195, 1.207, 1.218, 1.226, 1.233, 1.239, 1.246, 1.248, 1.251, 1.254, 1.254, 1.254, 1.251, 1.249, 1.247, 1.242, 1.239, 1.232, 1.227, 1.219, 1.207, 1.195, 1.186, 1.175, 1.162, 1.161, 1.162,
+ 1.165, 1.158, 1.158, 1.168, 1.183, 1.196, 1.208, 1.219, 1.227, 1.234, 1.241, 1.247, 1.251, 1.254, 1.255, 1.256, 1.256, 1.254, 1.252, 1.249, 1.246, 1.241, 1.234, 1.228, 1.221, 1.211, 1.199, 1.187, 1.175, 1.163, 1.162, 1.162,
+ 1.161, 1.158, 1.158, 1.169, 1.183, 1.196, 1.208, 1.217, 1.227, 1.234, 1.241, 1.247, 1.253, 1.254, 1.256, 1.257, 1.256, 1.255, 1.253, 1.249, 1.247, 1.241, 1.236, 1.229, 1.221, 1.211, 1.199, 1.189, 1.176, 1.164, 1.163, 1.162,
+ 1.161, 1.156, 1.156, 1.169, 1.183, 1.196, 1.207, 1.218, 1.227, 1.235, 1.241, 1.246, 1.252, 1.254, 1.256, 1.257, 1.256, 1.254, 1.253, 1.249, 1.247, 1.241, 1.237, 1.231, 1.223, 1.211, 1.201, 1.191, 1.177, 1.164, 1.164, 1.161,
+ 1.161, 1.155, 1.155, 1.169, 1.182, 1.195, 1.208, 1.216, 1.225, 1.235, 1.241, 1.245, 1.249, 1.252, 1.254, 1.254, 1.254, 1.253, 1.252, 1.249, 1.246, 1.239, 1.237, 1.231, 1.224, 1.211, 1.201, 1.191, 1.178, 1.164, 1.162, 1.161,
+ 1.159, 1.155, 1.155, 1.168, 1.181, 1.195, 1.208, 1.217, 1.223, 1.235, 1.241, 1.244, 1.248, 1.251, 1.252, 1.252, 1.252, 1.252, 1.251, 1.248, 1.245, 1.241, 1.236, 1.231, 1.224, 1.212, 1.202, 1.191, 1.179, 1.164, 1.162, 1.161,
+ 1.158, 1.154, 1.154, 1.167, 1.181, 1.194, 1.206, 1.216, 1.222, 1.234, 1.237, 1.242, 1.245, 1.248, 1.251, 1.249, 1.249, 1.249, 1.249, 1.248, 1.244, 1.241, 1.235, 1.229, 1.223, 1.213, 1.202, 1.191, 1.179, 1.167, 1.163, 1.163,
+ 1.158, 1.154, 1.154, 1.168, 1.181, 1.194, 1.206, 1.215, 1.223, 1.231, 1.236, 1.239, 1.243, 1.245, 1.246, 1.246, 1.248, 1.248, 1.248, 1.245, 1.242, 1.239, 1.235, 1.229, 1.223, 1.213, 1.202, 1.191, 1.179, 1.167, 1.163, 1.162,
+ 1.157, 1.154, 1.154, 1.168, 1.179, 1.194, 1.205, 1.215, 1.222, 1.229, 1.233, 1.236, 1.239, 1.243, 1.244, 1.244, 1.245, 1.245, 1.244, 1.243, 1.239, 1.236, 1.234, 1.229, 1.222, 1.211, 1.202, 1.191, 1.179, 1.166, 1.163, 1.161,
+ 1.156, 1.155, 1.155, 1.168, 1.179, 1.193, 1.205, 1.213, 1.219, 1.225, 1.231, 1.234, 1.238, 1.239, 1.241, 1.243, 1.243, 1.243, 1.243, 1.239, 1.237, 1.235, 1.231, 1.228, 1.221, 1.209, 1.199, 1.189, 1.178, 1.166, 1.162, 1.159,
+ 1.156, 1.156, 1.157, 1.167, 1.178, 1.191, 1.199, 1.209, 1.217, 1.223, 1.226, 1.231, 1.233, 1.236, 1.239, 1.239, 1.241, 1.241, 1.239, 1.237, 1.235, 1.232, 1.229, 1.224, 1.217, 1.209, 1.196, 1.187, 1.176, 1.165, 1.159, 1.157,
+ 1.157, 1.157, 1.157, 1.166, 1.175, 1.187, 1.198, 1.205, 1.213, 1.219, 1.223, 1.227, 1.231, 1.233, 1.236, 1.236, 1.234, 1.235, 1.235, 1.235, 1.231, 1.229, 1.227, 1.222, 1.216, 1.201, 1.194, 1.184, 1.174, 1.163, 1.157, 1.156,
+ 1.158, 1.155, 1.155, 1.165, 1.172, 1.181, 1.194, 1.202, 1.208, 1.215, 1.221, 1.223, 1.227, 1.229, 1.231, 1.231, 1.231, 1.232, 1.233, 1.231, 1.228, 1.227, 1.223, 1.219, 1.213, 1.199, 1.189, 1.181, 1.171, 1.161, 1.157, 1.156,
+ 1.155, 1.154, 1.154, 1.164, 1.169, 1.179, 1.189, 1.196, 1.203, 1.208, 1.215, 1.221, 1.222, 1.224, 1.225, 1.225, 1.226, 1.228, 1.228, 1.227, 1.225, 1.222, 1.219, 1.213, 1.206, 1.196, 1.187, 1.177, 1.168, 1.159, 1.156, 1.156,
+ 1.155, 1.152, 1.152, 1.162, 1.167, 1.175, 1.185, 1.191, 1.198, 1.205, 1.209, 1.214, 1.216, 1.217, 1.217, 1.217, 1.219, 1.219, 1.219, 1.219, 1.217, 1.215, 1.213, 1.207, 1.199, 1.191, 1.179, 1.172, 1.165, 1.156, 1.155, 1.155,
+ 1.155, 1.152, 1.152, 1.161, 1.163, 1.169, 1.179, 1.186, 1.192, 1.198, 1.204, 1.208, 1.211, 1.211, 1.211, 1.212, 1.212, 1.213, 1.215, 1.215, 1.211, 1.208, 1.205, 1.199, 1.194, 1.185, 1.175, 1.167, 1.161, 1.156, 1.155, 1.153,
+ 1.157, 1.152, 1.152, 1.159, 1.162, 1.166, 1.174, 1.181, 1.187, 1.192, 1.197, 1.203, 1.204, 1.205, 1.204, 1.204, 1.204, 1.205, 1.206, 1.206, 1.204, 1.201, 1.198, 1.194, 1.187, 1.176, 1.171, 1.164, 1.159, 1.156, 1.155, 1.154,
+ 1.159, 1.154, 1.154, 1.158, 1.159, 1.163, 1.171, 1.176, 1.181, 1.187, 1.191, 1.195, 1.198, 1.199, 1.199, 1.201, 1.201, 1.202, 1.202, 1.199, 1.196, 1.193, 1.191, 1.188, 1.182, 1.174, 1.166, 1.162, 1.157, 1.156, 1.156, 1.156,
+ 1.162, 1.161, 1.158, 1.159, 1.159, 1.162, 1.167, 1.173, 1.178, 1.181, 1.186, 1.189, 1.189, 1.191, 1.193, 1.193, 1.193, 1.194, 1.194, 1.194, 1.189, 1.187, 1.186, 1.182, 1.176, 1.167, 1.163, 1.159, 1.158, 1.157, 1.158, 1.161,
+ 1.172, 1.165, 1.162, 1.162, 1.163, 1.166, 1.169, 1.173, 1.178, 1.181, 1.182, 1.185, 1.186, 1.186, 1.186, 1.187, 1.187, 1.189, 1.192, 1.191, 1.187, 1.185, 1.181, 1.177, 1.172, 1.167, 1.163, 1.159, 1.159, 1.161, 1.163, 1.166,
+ 1.173, 1.172, 1.166, 1.165, 1.166, 1.168, 1.171, 1.176, 1.179, 1.182, 1.181, 1.183, 1.185, 1.185, 1.185, 1.185, 1.185, 1.185, 1.191, 1.191, 1.185, 1.181, 1.179, 1.173, 1.169, 1.168, 1.163, 1.162, 1.161, 1.164, 1.166, 1.167
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 2.271, 2.218, 2.105, 2.004, 1.909, 1.829, 1.762, 1.705, 1.665, 1.629, 1.592, 1.559, 1.528, 1.516, 1.511, 1.511, 1.511, 1.514, 1.525, 1.553, 1.585, 1.617, 1.655, 1.697, 1.752, 1.816, 1.893, 1.982, 2.084, 2.195, 2.321, 2.342,
+ 2.218, 2.166, 2.057, 1.959, 1.871, 1.793, 1.726, 1.675, 1.633, 1.592, 1.559, 1.528, 1.503, 1.484, 1.474, 1.472, 1.472, 1.482, 1.499, 1.523, 1.553, 1.585, 1.619, 1.664, 1.715, 1.779, 1.855, 1.938, 2.037, 2.147, 2.259, 2.321,
+ 2.166, 2.101, 1.997, 1.901, 1.818, 1.743, 1.683, 1.634, 1.588, 1.546, 1.508, 1.476, 1.449, 1.429, 1.418, 1.415, 1.415, 1.425, 1.444, 1.469, 1.501, 1.538, 1.577, 1.622, 1.671, 1.728, 1.799, 1.881, 1.975, 2.078, 2.185, 2.259,
+ 2.101, 2.039, 1.938, 1.848, 1.768, 1.699, 1.641, 1.588, 1.541, 1.494, 1.455, 1.421, 1.394, 1.374, 1.361, 1.357, 1.357, 1.367, 1.388, 1.414, 1.448, 1.485, 1.528, 1.577, 1.626, 1.682, 1.748, 1.827, 1.917, 2.014, 2.119, 2.185,
+ 2.039, 1.979, 1.883, 1.795, 1.722, 1.658, 1.596, 1.541, 1.493, 1.443, 1.401, 1.364, 1.336, 1.316, 1.303, 1.301, 1.301, 1.311, 1.331, 1.359, 1.393, 1.432, 1.482, 1.528, 1.582, 1.641, 1.701, 1.775, 1.861, 1.956, 2.056, 2.119,
+ 1.979, 1.932, 1.836, 1.752, 1.685, 1.621, 1.557, 1.497, 1.443, 1.399, 1.351, 1.314, 1.286, 1.264, 1.253, 1.249, 1.249, 1.259, 1.281, 1.311, 1.344, 1.387, 1.432, 1.484, 1.541, 1.601, 1.662, 1.731, 1.816, 1.908, 2.003, 2.056,
+ 1.934, 1.888, 1.798, 1.719, 1.651, 1.584, 1.519, 1.457, 1.401, 1.351, 1.307, 1.268, 1.239, 1.217, 1.206, 1.203, 1.203, 1.212, 1.234, 1.263, 1.298, 1.344, 1.387, 1.442, 1.502, 1.565, 1.628, 1.693, 1.774, 1.864, 1.956, 2.003,
+ 1.901, 1.851, 1.763, 1.688, 1.618, 1.551, 1.483, 1.419, 1.359, 1.307, 1.268, 1.226, 1.195, 1.175, 1.164, 1.161, 1.161, 1.171, 1.192, 1.221, 1.262, 1.298, 1.346, 1.404, 1.466, 1.532, 1.595, 1.661, 1.738, 1.826, 1.917, 1.956,
+ 1.873, 1.821, 1.734, 1.659, 1.591, 1.519, 1.451, 1.386, 1.324, 1.269, 1.226, 1.192, 1.159, 1.141, 1.127, 1.125, 1.125, 1.135, 1.155, 1.187, 1.221, 1.262, 1.311, 1.368, 1.432, 1.499, 1.566, 1.634, 1.708, 1.793, 1.882, 1.917,
+ 1.847, 1.797, 1.713, 1.639, 1.565, 1.493, 1.422, 1.355, 1.291, 1.238, 1.192, 1.159, 1.128, 1.108, 1.097, 1.094, 1.094, 1.104, 1.125, 1.155, 1.187, 1.229, 1.279, 1.338, 1.403, 1.471, 1.541, 1.611, 1.684, 1.766, 1.853, 1.885,
+ 1.828, 1.772, 1.691, 1.614, 1.539, 1.466, 1.394, 1.325, 1.264, 1.209, 1.163, 1.128, 1.104, 1.081, 1.069, 1.067, 1.067, 1.078, 1.101, 1.125, 1.159, 1.201, 1.252, 1.312, 1.379, 1.447, 1.517, 1.591, 1.665, 1.743, 1.831, 1.862,
+ 1.812, 1.754, 1.677, 1.599, 1.519, 1.445, 1.371, 1.302, 1.239, 1.185, 1.139, 1.104, 1.081, 1.061, 1.048, 1.046, 1.046, 1.058, 1.078, 1.102, 1.136, 1.177, 1.229, 1.289, 1.356, 1.425, 1.497, 1.572, 1.647, 1.724, 1.811, 1.847,
+ 1.798, 1.741, 1.663, 1.585, 1.506, 1.429, 1.353, 1.284, 1.221, 1.167, 1.121, 1.086, 1.061, 1.046, 1.031, 1.029, 1.029, 1.044, 1.058, 1.083, 1.116, 1.159, 1.209, 1.271, 1.338, 1.407, 1.479, 1.557, 1.633, 1.709, 1.792, 1.832,
+ 1.792, 1.727, 1.651, 1.572, 1.494, 1.414, 1.339, 1.269, 1.206, 1.152, 1.106, 1.072, 1.046, 1.031, 1.018, 1.016, 1.016, 1.029, 1.044, 1.069, 1.102, 1.145, 1.196, 1.256, 1.324, 1.394, 1.471, 1.545, 1.624, 1.698, 1.782, 1.825,
+ 1.787, 1.724, 1.647, 1.566, 1.484, 1.407, 1.329, 1.258, 1.196, 1.141, 1.097, 1.062, 1.036, 1.018, 1.012, 1.007, 1.011, 1.016, 1.034, 1.059, 1.093, 1.135, 1.186, 1.246, 1.314, 1.386, 1.461, 1.538, 1.616, 1.691, 1.773, 1.818,
+ 1.786, 1.721, 1.642, 1.562, 1.481, 1.402, 1.325, 1.254, 1.191, 1.137, 1.092, 1.057, 1.031, 1.013, 1.004, 1.001, 1.004, 1.011, 1.028, 1.054, 1.088, 1.129, 1.181, 1.241, 1.308, 1.382, 1.458, 1.535, 1.613, 1.687, 1.769, 1.818,
+ 1.786, 1.721, 1.642, 1.562, 1.481, 1.401, 1.325, 1.253, 1.191, 1.136, 1.091, 1.057, 1.031, 1.013, 1.003, 1.001, 1.001, 1.011, 1.028, 1.054, 1.088, 1.129, 1.181, 1.241, 1.308, 1.382, 1.458, 1.535, 1.613, 1.687, 1.769, 1.818,
+ 1.787, 1.722, 1.643, 1.563, 1.482, 1.402, 1.326, 1.254, 1.192, 1.138, 1.092, 1.057, 1.032, 1.013, 1.006, 1.002, 1.006, 1.012, 1.031, 1.057, 1.092, 1.133, 1.185, 1.243, 1.311, 1.385, 1.461, 1.539, 1.618, 1.691, 1.774, 1.821,
+ 1.789, 1.729, 1.651, 1.571, 1.489, 1.411, 1.334, 1.263, 1.201, 1.147, 1.101, 1.065, 1.038, 1.021, 1.013, 1.009, 1.012, 1.021, 1.038, 1.064, 1.098, 1.141, 1.193, 1.254, 1.321, 1.395, 1.472, 1.549, 1.626, 1.701, 1.785, 1.825,
+ 1.799, 1.739, 1.661, 1.581, 1.502, 1.422, 1.347, 1.277, 1.214, 1.159, 1.111, 1.075, 1.049, 1.037, 1.021, 1.019, 1.021, 1.036, 1.049, 1.076, 1.111, 1.154, 1.207, 1.268, 1.334, 1.408, 1.485, 1.562, 1.639, 1.715, 1.799, 1.837,
+ 1.811, 1.755, 1.676, 1.597, 1.518, 1.439, 1.365, 1.295, 1.231, 1.176, 1.129, 1.093, 1.067, 1.049, 1.038, 1.036, 1.036, 1.049, 1.067, 1.094, 1.129, 1.173, 1.225, 1.286, 1.353, 1.425, 1.501, 1.577, 1.653, 1.729, 1.815, 1.851,
+ 1.829, 1.774, 1.693, 1.615, 1.537, 1.462, 1.387, 1.316, 1.253, 1.198, 1.153, 1.115, 1.091, 1.067, 1.059, 1.056, 1.056, 1.067, 1.092, 1.115, 1.151, 1.196, 1.249, 1.309, 1.375, 1.446, 1.522, 1.595, 1.672, 1.752, 1.839, 1.871,
+ 1.851, 1.801, 1.713, 1.636, 1.561, 1.485, 1.411, 1.342, 1.281, 1.226, 1.179, 1.145, 1.115, 1.091, 1.082, 1.081, 1.082, 1.092, 1.115, 1.143, 1.178, 1.223, 1.276, 1.337, 1.402, 1.472, 1.544, 1.618, 1.691, 1.774, 1.865, 1.896,
+ 1.876, 1.831, 1.739, 1.663, 1.588, 1.513, 1.439, 1.374, 1.312, 1.258, 1.212, 1.179, 1.145, 1.123, 1.113, 1.112, 1.112, 1.122, 1.143, 1.177, 1.211, 1.256, 1.308, 1.368, 1.431, 1.501, 1.572, 1.641, 1.716, 1.802, 1.896, 1.931,
+ 1.909, 1.867, 1.771, 1.691, 1.617, 1.545, 1.474, 1.411, 1.349, 1.296, 1.252, 1.212, 1.182, 1.159, 1.149, 1.148, 1.149, 1.158, 1.179, 1.211, 1.253, 1.293, 1.344, 1.403, 1.465, 1.533, 1.603, 1.669, 1.747, 1.836, 1.931, 1.974,
+ 1.952, 1.905, 1.806, 1.722, 1.651, 1.578, 1.511, 1.448, 1.388, 1.338, 1.296, 1.252, 1.223, 1.201, 1.189, 1.189, 1.189, 1.199, 1.224, 1.253, 1.293, 1.338, 1.384, 1.442, 1.504, 1.571, 1.638, 1.704, 1.782, 1.872, 1.974, 2.025,
+ 2.004, 1.951, 1.849, 1.759, 1.688, 1.619, 1.552, 1.491, 1.435, 1.388, 1.338, 1.301, 1.272, 1.249, 1.238, 1.236, 1.236, 1.248, 1.271, 1.301, 1.338, 1.384, 1.431, 1.484, 1.543, 1.609, 1.675, 1.742, 1.825, 1.919, 2.025, 2.081,
+ 2.062, 2.004, 1.898, 1.805, 1.729, 1.661, 1.597, 1.539, 1.486, 1.435, 1.391, 1.354, 1.326, 1.303, 1.291, 1.289, 1.289, 1.301, 1.323, 1.353, 1.389, 1.431, 1.483, 1.528, 1.585, 1.649, 1.713, 1.787, 1.875, 1.971, 2.081, 2.145,
+ 2.129, 2.062, 1.951, 1.854, 1.774, 1.705, 1.642, 1.586, 1.539, 1.486, 1.445, 1.411, 1.383, 1.361, 1.348, 1.347, 1.348, 1.359, 1.379, 1.409, 1.447, 1.484, 1.528, 1.578, 1.631, 1.691, 1.759, 1.836, 1.928, 2.031, 2.145, 2.217,
+ 2.201, 2.129, 2.013, 1.912, 1.827, 1.752, 1.689, 1.642, 1.586, 1.544, 1.501, 1.468, 1.442, 1.421, 1.409, 1.409, 1.411, 1.421, 1.439, 1.467, 1.504, 1.543, 1.578, 1.629, 1.679, 1.739, 1.815, 1.894, 1.985, 2.098, 2.217, 2.298,
+ 2.273, 2.201, 2.081, 1.974, 1.886, 1.807, 1.741, 1.689, 1.643, 1.603, 1.562, 1.527, 1.504, 1.485, 1.475, 1.474, 1.475, 1.487, 1.503, 1.531, 1.565, 1.601, 1.634, 1.678, 1.728, 1.795, 1.877, 1.961, 2.052, 2.169, 2.298, 2.365,
+ 2.317, 2.273, 2.146, 2.039, 1.946, 1.864, 1.792, 1.737, 1.688, 1.643, 1.603, 1.562, 1.533, 1.525, 1.523, 1.523, 1.523, 1.525, 1.534, 1.565, 1.601, 1.634, 1.677, 1.722, 1.772, 1.848, 1.935, 2.023, 2.108, 2.232, 2.365, 2.403
+ ],
+ "sigma": 0.00285,
+ "sigma_Cb": 0.00166
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2500,
+ "ccm":
+ [
+ 1.70741, -0.05307, -0.65433,
+ -0.62822, 1.68836, -0.06014,
+ -0.04452, -1.87628, 2.92079
+ ]
+ },
+ {
+ "ct": 2803,
+ "ccm":
+ [
+ 1.74383, -0.18731, -0.55652,
+ -0.56491, 1.67772, -0.11281,
+ -0.01522, -1.60635, 2.62157
+ ]
+ },
+ {
+ "ct": 2912,
+ "ccm":
+ [
+ 1.75215, -0.22221, -0.52995,
+ -0.54568, 1.63522, -0.08954,
+ 0.02633, -1.56997, 2.54364
+ ]
+ },
+ {
+ "ct": 2914,
+ "ccm":
+ [
+ 1.72423, -0.28939, -0.43484,
+ -0.55188, 1.62925, -0.07737,
+ 0.01959, -1.28661, 2.26702
+ ]
+ },
+ {
+ "ct": 3605,
+ "ccm":
+ [
+ 1.80381, -0.43646, -0.36735,
+ -0.46505, 1.56814, -0.10309,
+ 0.00929, -1.00424, 1.99495
+ ]
+ },
+ {
+ "ct": 4540,
+ "ccm":
+ [
+ 1.85263, -0.46545, -0.38719,
+ -0.44136, 1.68443, -0.24307,
+ 0.04108, -0.85599, 1.81491
+ ]
+ },
+ {
+ "ct": 5699,
+ "ccm":
+ [
+ 1.98595, -0.63542, -0.35054,
+ -0.34623, 1.54146, -0.19522,
+ 0.00411, -0.70936, 1.70525
+ ]
+ },
+ {
+ "ct": 8625,
+ "ccm":
+ [
+ 2.21637, -0.56663, -0.64974,
+ -0.41133, 1.96625, -0.55492,
+ -0.02307, -0.83529, 1.85837
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "short": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/ov64a40.json b/src/ipa/rpi/pisp/data/ov64a40.json
new file mode 100755
index 00000000..d9e263eb
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/ov64a40.json
@@ -0,0 +1,1133 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 17861,
+ "reference_gain": 2.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 1073,
+ "reference_Y": 9022
+ }
+ },
+ {
+ "rpi.dpc":
+ {
+ "strength": 1
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.984
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 215,
+ "slope": 0.01121
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 7700
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8000
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2300.0, 1.0576, 0.4098,
+ 2700.0, 0.7924, 0.4334,
+ 3000.0, 0.7635, 0.4428,
+ 4000.0, 0.6003, 0.5412,
+ 4150.0, 0.5627, 0.5789,
+ 6500.0, 0.4409, 0.7596
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.05597,
+ "transverse_neg": 0.04295
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "channels": [
+ {
+ "comment": "Channel 0 is normal AGC",
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 66666 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 60000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 1.5, 2.0, 4.0, 8.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.5,
+ "y_target":
+ [
+ 0, 0.17,
+ 1000, 0.17
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 1 is the HDR short channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 60000 ],
+ "gain": [ 1.0, 1.0, 1.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.95,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.7,
+ 1000, 0.7
+ ]
+ },
+ {
+ "bound": "LOWER",
+ "q_lo": 0.0,
+ "q_hi": 0.2,
+ "y_target":
+ [
+ 0, 0.002,
+ 1000, 0.002
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 2 is the HDR long channel",
+ "desaturate": 0,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 30000, 60000 ],
+ "gain": [ 1.0, 2.0, 4.0, 8.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [ ],
+ "highlight": [ ],
+ "shadows": [ ]
+ },
+ "channel_constraints": [
+ {
+ "bound": "UPPER",
+ "channel": 4,
+ "factor": 8
+ },
+ {
+ "bound": "LOWER",
+ "channel": 4,
+ "factor": 2
+ }
+ ],
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ },
+ {
+ "comment": "Channel 3 is the night mode channel",
+ "base_ev": 0.33,
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 20000, 66666 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 20000, 33333 ],
+ "gain": [ 1.0, 2.0, 4.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 100, 20000, 66666, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 4.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ],
+ "shadows": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.16,
+ 10000, 0.17
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.8,
+ "calibrations_Cr": [
+ {
+ "ct": 6500,
+ "table":
+ [
+ 2.447, 2.441, 2.423, 2.414, 2.401, 2.391, 2.379, 2.376, 2.375, 2.369, 2.364, 2.362, 2.359, 2.356, 2.351, 2.349, 2.349, 2.341, 2.336, 2.334, 2.332, 2.331, 2.331, 2.331, 2.333, 2.338, 2.342, 2.347, 2.359, 2.368, 2.378, 2.391,
+ 2.447, 2.441, 2.422, 2.408, 2.393, 2.388, 2.382, 2.376, 2.369, 2.365, 2.362, 2.359, 2.353, 2.351, 2.345, 2.345, 2.336, 2.336, 2.334, 2.327, 2.325, 2.326, 2.326, 2.329, 2.329, 2.334, 2.338, 2.347, 2.359, 2.368, 2.378, 2.389,
+ 2.446, 2.433, 2.414, 2.403, 2.393, 2.387, 2.382, 2.371, 2.369, 2.362, 2.356, 2.351, 2.335, 2.335, 2.329, 2.326, 2.318, 2.314, 2.313, 2.312, 2.312, 2.312, 2.318, 2.321, 2.326, 2.329, 2.334, 2.344, 2.357, 2.368, 2.378, 2.389,
+ 2.443, 2.431, 2.409, 2.402, 2.393, 2.383, 2.374, 2.369, 2.363, 2.356, 2.343, 2.335, 2.322, 2.317, 2.311, 2.309, 2.302, 2.299, 2.298, 2.295, 2.295, 2.296, 2.309, 2.313, 2.321, 2.326, 2.329, 2.341, 2.352, 2.364, 2.374, 2.385,
+ 2.442, 2.427, 2.409, 2.399, 2.393, 2.383, 2.371, 2.364, 2.356, 2.343, 2.333, 2.319, 2.313, 2.302, 2.297, 2.295, 2.293, 2.288, 2.285, 2.281, 2.281, 2.285, 2.293, 2.306, 2.313, 2.322, 2.327, 2.337, 2.351, 2.364, 2.374, 2.385,
+ 2.442, 2.427, 2.411, 2.398, 2.389, 2.381, 2.369, 2.359, 2.351, 2.335, 2.319, 2.312, 2.301, 2.296, 2.289, 2.283, 2.279, 2.277, 2.273, 2.269, 2.267, 2.268, 2.279, 2.293, 2.306, 2.316, 2.325, 2.335, 2.348, 2.361, 2.372, 2.385,
+ 2.441, 2.428, 2.411, 2.399, 2.389, 2.381, 2.369, 2.356, 2.343, 2.331, 2.312, 2.301, 2.292, 2.286, 2.279, 2.278, 2.273, 2.271, 2.267, 2.259, 2.259, 2.262, 2.268, 2.279, 2.297, 2.311, 2.323, 2.335, 2.347, 2.357, 2.371, 2.388,
+ 2.441, 2.428, 2.412, 2.397, 2.389, 2.381, 2.369, 2.355, 2.337, 2.318, 2.308, 2.292, 2.286, 2.278, 2.276, 2.268, 2.264, 2.263, 2.257, 2.252, 2.252, 2.255, 2.262, 2.273, 2.284, 2.303, 2.319, 2.336, 2.343, 2.356, 2.365, 2.388,
+ 2.441, 2.428, 2.412, 2.401, 2.389, 2.381, 2.363, 2.344, 2.323, 2.311, 2.299, 2.287, 2.278, 2.275, 2.267, 2.264, 2.259, 2.256, 2.249, 2.246, 2.246, 2.249, 2.255, 2.262, 2.279, 2.296, 2.313, 2.336, 2.347, 2.355, 2.366, 2.384,
+ 2.441, 2.427, 2.412, 2.401, 2.391, 2.381, 2.355, 2.339, 2.323, 2.308, 2.297, 2.284, 2.275, 2.267, 2.259, 2.253, 2.251, 2.247, 2.244, 2.239, 2.239, 2.244, 2.249, 2.259, 2.276, 2.288, 2.311, 2.332, 2.348, 2.356, 2.366, 2.384,
+ 2.442, 2.428, 2.415, 2.402, 2.391, 2.379, 2.354, 2.331, 2.323, 2.302, 2.291, 2.278, 2.267, 2.259, 2.253, 2.246, 2.245, 2.241, 2.236, 2.233, 2.235, 2.239, 2.245, 2.255, 2.271, 2.287, 2.307, 2.331, 2.349, 2.356, 2.367, 2.384,
+ 2.441, 2.429, 2.419, 2.404, 2.394, 2.375, 2.352, 2.331, 2.318, 2.301, 2.288, 2.273, 2.263, 2.254, 2.246, 2.242, 2.237, 2.232, 2.229, 2.229, 2.232, 2.235, 2.245, 2.255, 2.271, 2.286, 2.307, 2.331, 2.351, 2.359, 2.371, 2.385,
+ 2.441, 2.432, 2.419, 2.406, 2.395, 2.375, 2.349, 2.332, 2.317, 2.301, 2.288, 2.273, 2.262, 2.249, 2.242, 2.235, 2.226, 2.225, 2.225, 2.227, 2.232, 2.235, 2.246, 2.255, 2.271, 2.286, 2.307, 2.331, 2.351, 2.366, 2.376, 2.388,
+ 2.441, 2.437, 2.424, 2.406, 2.395, 2.375, 2.352, 2.333, 2.317, 2.304, 2.289, 2.274, 2.261, 2.245, 2.235, 2.226, 2.217, 2.216, 2.219, 2.225, 2.229, 2.237, 2.246, 2.255, 2.272, 2.289, 2.307, 2.334, 2.352, 2.369, 2.376, 2.392,
+ 2.447, 2.438, 2.425, 2.412, 2.399, 2.378, 2.352, 2.335, 2.317, 2.304, 2.289, 2.275, 2.259, 2.243, 2.227, 2.217, 2.214, 2.209, 2.214, 2.219, 2.229, 2.238, 2.246, 2.258, 2.272, 2.289, 2.309, 2.334, 2.355, 2.369, 2.385, 2.392,
+ 2.449, 2.441, 2.425, 2.416, 2.399, 2.381, 2.357, 2.336, 2.321, 2.305, 2.289, 2.275, 2.261, 2.242, 2.225, 2.214, 2.207, 2.207, 2.209, 2.218, 2.229, 2.238, 2.249, 2.261, 2.275, 2.291, 2.309, 2.336, 2.354, 2.371, 2.386, 2.396,
+ 2.451, 2.442, 2.426, 2.419, 2.403, 2.383, 2.361, 2.341, 2.321, 2.305, 2.289, 2.276, 2.259, 2.243, 2.225, 2.213, 2.207, 2.207, 2.209, 2.218, 2.227, 2.241, 2.249, 2.261, 2.277, 2.295, 2.316, 2.338, 2.355, 2.374, 2.387, 2.398,
+ 2.452, 2.442, 2.427, 2.419, 2.405, 2.384, 2.361, 2.341, 2.321, 2.305, 2.293, 2.277, 2.259, 2.244, 2.226, 2.213, 2.211, 2.208, 2.211, 2.218, 2.229, 2.241, 2.249, 2.263, 2.279, 2.298, 2.319, 2.339, 2.359, 2.374, 2.387, 2.398,
+ 2.452, 2.442, 2.428, 2.419, 2.405, 2.384, 2.361, 2.341, 2.324, 2.305, 2.293, 2.277, 2.259, 2.245, 2.232, 2.222, 2.213, 2.213, 2.218, 2.223, 2.229, 2.241, 2.249, 2.265, 2.279, 2.298, 2.319, 2.339, 2.363, 2.374, 2.387, 2.406,
+ 2.452, 2.442, 2.428, 2.419, 2.405, 2.384, 2.361, 2.343, 2.324, 2.305, 2.293, 2.279, 2.265, 2.251, 2.241, 2.232, 2.222, 2.222, 2.223, 2.229, 2.233, 2.241, 2.251, 2.265, 2.279, 2.298, 2.321, 2.341, 2.364, 2.374, 2.387, 2.405,
+ 2.454, 2.442, 2.429, 2.419, 2.404, 2.386, 2.365, 2.346, 2.327, 2.309, 2.293, 2.281, 2.269, 2.258, 2.251, 2.241, 2.237, 2.231, 2.231, 2.233, 2.238, 2.245, 2.256, 2.267, 2.283, 2.301, 2.323, 2.344, 2.366, 2.379, 2.388, 2.405,
+ 2.454, 2.439, 2.431, 2.421, 2.404, 2.392, 2.369, 2.348, 2.332, 2.314, 2.299, 2.288, 2.274, 2.268, 2.258, 2.252, 2.249, 2.244, 2.241, 2.241, 2.245, 2.251, 2.259, 2.269, 2.287, 2.301, 2.324, 2.352, 2.366, 2.379, 2.388, 2.405,
+ 2.453, 2.438, 2.431, 2.418, 2.407, 2.393, 2.374, 2.352, 2.337, 2.321, 2.303, 2.293, 2.284, 2.274, 2.268, 2.261, 2.259, 2.257, 2.251, 2.251, 2.251, 2.258, 2.266, 2.276, 2.297, 2.314, 2.333, 2.354, 2.366, 2.381, 2.391, 2.407,
+ 2.453, 2.438, 2.431, 2.417, 2.408, 2.396, 2.379, 2.359, 2.344, 2.329, 2.314, 2.301, 2.293, 2.284, 2.277, 2.276, 2.271, 2.266, 2.266, 2.261, 2.261, 2.266, 2.276, 2.285, 2.301, 2.318, 2.339, 2.356, 2.371, 2.383, 2.393, 2.408,
+ 2.453, 2.441, 2.428, 2.417, 2.409, 2.398, 2.386, 2.371, 2.351, 2.339, 2.324, 2.314, 2.301, 2.296, 2.289, 2.288, 2.281, 2.278, 2.275, 2.271, 2.271, 2.276, 2.285, 2.294, 2.311, 2.327, 2.346, 2.356, 2.373, 2.386, 2.393, 2.409,
+ 2.457, 2.441, 2.428, 2.417, 2.412, 2.403, 2.389, 2.381, 2.365, 2.349, 2.337, 2.324, 2.314, 2.309, 2.306, 2.303, 2.295, 2.294, 2.291, 2.287, 2.287, 2.289, 2.294, 2.309, 2.319, 2.332, 2.351, 2.359, 2.377, 2.386, 2.398, 2.411,
+ 2.457, 2.443, 2.427, 2.417, 2.413, 2.405, 2.399, 2.388, 2.373, 2.365, 2.349, 2.337, 2.327, 2.323, 2.318, 2.314, 2.312, 2.309, 2.304, 2.303, 2.302, 2.303, 2.309, 2.319, 2.332, 2.344, 2.355, 2.365, 2.379, 2.392, 2.403, 2.412,
+ 2.459, 2.449, 2.427, 2.417, 2.413, 2.407, 2.405, 2.399, 2.388, 2.373, 2.366, 2.353, 2.346, 2.338, 2.334, 2.331, 2.328, 2.321, 2.321, 2.317, 2.317, 2.321, 2.321, 2.337, 2.344, 2.355, 2.363, 2.369, 2.383, 2.392, 2.407, 2.418,
+ 2.465, 2.453, 2.439, 2.427, 2.417, 2.413, 2.407, 2.405, 2.399, 2.391, 2.376, 2.368, 2.359, 2.358, 2.349, 2.347, 2.346, 2.341, 2.341, 2.335, 2.334, 2.334, 2.341, 2.347, 2.355, 2.363, 2.368, 2.377, 2.388, 2.399, 2.418, 2.421,
+ 2.467, 2.453, 2.441, 2.431, 2.423, 2.417, 2.416, 2.408, 2.405, 2.399, 2.394, 2.386, 2.381, 2.378, 2.371, 2.369, 2.365, 2.361, 2.359, 2.356, 2.356, 2.356, 2.356, 2.361, 2.367, 2.368, 2.374, 2.387, 2.393, 2.407, 2.418, 2.427,
+ 2.473, 2.456, 2.447, 2.434, 2.431, 2.423, 2.419, 2.419, 2.413, 2.406, 2.404, 2.403, 2.397, 2.395, 2.394, 2.391, 2.386, 2.381, 2.378, 2.371, 2.371, 2.365, 2.365, 2.372, 2.374, 2.376, 2.379, 2.392, 2.401, 2.413, 2.422, 2.431,
+ 2.473, 2.469, 2.449, 2.441, 2.433, 2.431, 2.423, 2.419, 2.419, 2.413, 2.412, 2.409, 2.403, 2.402, 2.402, 2.399, 2.399, 2.391, 2.387, 2.385, 2.381, 2.379, 2.379, 2.379, 2.379, 2.379, 2.388, 2.395, 2.409, 2.413, 2.426, 2.431
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 6500,
+ "table":
+ [
+ 1.308, 1.307, 1.301, 1.301, 1.297, 1.295, 1.295, 1.295, 1.295, 1.295, 1.295, 1.295, 1.295, 1.295, 1.295, 1.296, 1.298, 1.299, 1.298, 1.298, 1.298, 1.299, 1.299, 1.299, 1.299, 1.307, 1.308, 1.311, 1.313, 1.317, 1.322, 1.322,
+ 1.307, 1.304, 1.298, 1.293, 1.292, 1.291, 1.288, 1.288, 1.288, 1.288, 1.289, 1.291, 1.292, 1.292, 1.294, 1.294, 1.294, 1.293, 1.293, 1.292, 1.293, 1.295, 1.296, 1.298, 1.299, 1.299, 1.302, 1.307, 1.309, 1.313, 1.318, 1.322,
+ 1.303, 1.298, 1.293, 1.291, 1.289, 1.287, 1.286, 1.286, 1.287, 1.287, 1.288, 1.289, 1.291, 1.292, 1.292, 1.294, 1.293, 1.293, 1.293, 1.292, 1.291, 1.292, 1.295, 1.296, 1.297, 1.298, 1.299, 1.302, 1.306, 1.308, 1.313, 1.317,
+ 1.299, 1.293, 1.291, 1.289, 1.287, 1.286, 1.286, 1.286, 1.287, 1.287, 1.288, 1.289, 1.291, 1.292, 1.293, 1.293, 1.293, 1.293, 1.293, 1.291, 1.291, 1.291, 1.293, 1.295, 1.296, 1.297, 1.298, 1.301, 1.304, 1.306, 1.308, 1.315,
+ 1.297, 1.291, 1.289, 1.286, 1.286, 1.286, 1.286, 1.287, 1.287, 1.287, 1.288, 1.289, 1.289, 1.292, 1.294, 1.294, 1.293, 1.293, 1.293, 1.291, 1.289, 1.289, 1.292, 1.294, 1.295, 1.296, 1.297, 1.298, 1.301, 1.305, 1.308, 1.313,
+ 1.295, 1.289, 1.287, 1.285, 1.285, 1.285, 1.285, 1.286, 1.287, 1.287, 1.287, 1.288, 1.289, 1.293, 1.294, 1.295, 1.295, 1.294, 1.294, 1.292, 1.289, 1.289, 1.289, 1.294, 1.294, 1.295, 1.295, 1.296, 1.299, 1.301, 1.307, 1.308,
+ 1.292, 1.287, 1.285, 1.284, 1.283, 1.283, 1.283, 1.284, 1.284, 1.286, 1.287, 1.288, 1.289, 1.293, 1.294, 1.295, 1.295, 1.295, 1.294, 1.292, 1.291, 1.289, 1.289, 1.291, 1.293, 1.294, 1.294, 1.295, 1.296, 1.299, 1.305, 1.307,
+ 1.292, 1.285, 1.282, 1.282, 1.282, 1.282, 1.282, 1.283, 1.283, 1.284, 1.286, 1.287, 1.289, 1.293, 1.295, 1.296, 1.296, 1.295, 1.295, 1.292, 1.291, 1.289, 1.288, 1.288, 1.291, 1.292, 1.293, 1.294, 1.296, 1.297, 1.301, 1.306,
+ 1.291, 1.283, 1.282, 1.281, 1.281, 1.281, 1.281, 1.283, 1.282, 1.283, 1.283, 1.286, 1.287, 1.289, 1.293, 1.295, 1.296, 1.296, 1.294, 1.291, 1.291, 1.289, 1.288, 1.288, 1.289, 1.291, 1.292, 1.293, 1.296, 1.297, 1.299, 1.301,
+ 1.288, 1.283, 1.281, 1.279, 1.279, 1.279, 1.281, 1.281, 1.281, 1.282, 1.282, 1.283, 1.286, 1.289, 1.292, 1.295, 1.296, 1.296, 1.293, 1.291, 1.289, 1.288, 1.287, 1.287, 1.289, 1.291, 1.292, 1.292, 1.294, 1.296, 1.297, 1.299,
+ 1.287, 1.282, 1.279, 1.278, 1.279, 1.279, 1.279, 1.279, 1.281, 1.281, 1.282, 1.283, 1.283, 1.288, 1.291, 1.295, 1.295, 1.294, 1.292, 1.289, 1.288, 1.287, 1.287, 1.287, 1.288, 1.289, 1.291, 1.292, 1.293, 1.294, 1.297, 1.298,
+ 1.284, 1.279, 1.278, 1.278, 1.279, 1.279, 1.279, 1.279, 1.279, 1.281, 1.282, 1.283, 1.283, 1.288, 1.291, 1.294, 1.294, 1.294, 1.292, 1.288, 1.288, 1.288, 1.289, 1.288, 1.288, 1.288, 1.291, 1.292, 1.293, 1.294, 1.296, 1.298,
+ 1.284, 1.279, 1.277, 1.277, 1.277, 1.278, 1.279, 1.279, 1.279, 1.281, 1.282, 1.283, 1.285, 1.288, 1.291, 1.294, 1.294, 1.294, 1.292, 1.291, 1.289, 1.289, 1.289, 1.289, 1.288, 1.288, 1.289, 1.293, 1.293, 1.295, 1.296, 1.298,
+ 1.283, 1.279, 1.276, 1.276, 1.276, 1.277, 1.278, 1.279, 1.281, 1.281, 1.282, 1.283, 1.285, 1.289, 1.291, 1.292, 1.293, 1.293, 1.293, 1.292, 1.289, 1.289, 1.291, 1.291, 1.289, 1.288, 1.289, 1.292, 1.293, 1.294, 1.296, 1.299,
+ 1.283, 1.279, 1.275, 1.276, 1.276, 1.277, 1.278, 1.279, 1.281, 1.282, 1.282, 1.283, 1.285, 1.289, 1.291, 1.291, 1.292, 1.293, 1.293, 1.293, 1.291, 1.291, 1.291, 1.291, 1.289, 1.288, 1.288, 1.289, 1.292, 1.294, 1.295, 1.299,
+ 1.283, 1.277, 1.275, 1.275, 1.276, 1.276, 1.279, 1.279, 1.281, 1.282, 1.282, 1.283, 1.285, 1.289, 1.291, 1.291, 1.291, 1.292, 1.293, 1.293, 1.292, 1.291, 1.291, 1.291, 1.291, 1.289, 1.288, 1.289, 1.291, 1.293, 1.295, 1.298,
+ 1.282, 1.277, 1.275, 1.274, 1.275, 1.276, 1.278, 1.279, 1.281, 1.282, 1.282, 1.282, 1.284, 1.287, 1.289, 1.289, 1.289, 1.289, 1.292, 1.292, 1.292, 1.291, 1.291, 1.291, 1.291, 1.289, 1.288, 1.289, 1.291, 1.292, 1.296, 1.298,
+ 1.282, 1.276, 1.274, 1.274, 1.275, 1.276, 1.277, 1.279, 1.279, 1.281, 1.281, 1.281, 1.282, 1.286, 1.287, 1.289, 1.289, 1.289, 1.289, 1.291, 1.291, 1.291, 1.291, 1.291, 1.291, 1.289, 1.289, 1.289, 1.291, 1.292, 1.297, 1.298,
+ 1.282, 1.275, 1.274, 1.274, 1.274, 1.275, 1.275, 1.277, 1.279, 1.279, 1.279, 1.279, 1.281, 1.282, 1.286, 1.287, 1.287, 1.288, 1.288, 1.289, 1.289, 1.289, 1.291, 1.291, 1.291, 1.289, 1.289, 1.289, 1.291, 1.292, 1.297, 1.298,
+ 1.279, 1.274, 1.273, 1.273, 1.274, 1.275, 1.275, 1.276, 1.277, 1.278, 1.278, 1.278, 1.278, 1.281, 1.283, 1.285, 1.286, 1.286, 1.286, 1.286, 1.286, 1.288, 1.289, 1.289, 1.289, 1.289, 1.289, 1.289, 1.291, 1.292, 1.297, 1.298,
+ 1.279, 1.274, 1.272, 1.272, 1.273, 1.274, 1.275, 1.274, 1.276, 1.276, 1.276, 1.276, 1.277, 1.278, 1.282, 1.283, 1.283, 1.283, 1.283, 1.283, 1.284, 1.286, 1.288, 1.288, 1.288, 1.288, 1.289, 1.291, 1.291, 1.292, 1.296, 1.298,
+ 1.279, 1.273, 1.272, 1.272, 1.273, 1.273, 1.274, 1.274, 1.275, 1.275, 1.275, 1.275, 1.276, 1.277, 1.279, 1.281, 1.283, 1.283, 1.282, 1.282, 1.283, 1.284, 1.287, 1.288, 1.288, 1.288, 1.289, 1.291, 1.292, 1.292, 1.296, 1.299,
+ 1.282, 1.272, 1.271, 1.271, 1.272, 1.272, 1.273, 1.274, 1.274, 1.274, 1.274, 1.274, 1.276, 1.277, 1.279, 1.281, 1.282, 1.282, 1.282, 1.281, 1.282, 1.283, 1.286, 1.287, 1.288, 1.288, 1.288, 1.291, 1.292, 1.292, 1.296, 1.297,
+ 1.281, 1.273, 1.272, 1.271, 1.271, 1.271, 1.272, 1.273, 1.274, 1.274, 1.274, 1.275, 1.276, 1.278, 1.279, 1.281, 1.282, 1.282, 1.282, 1.282, 1.282, 1.284, 1.285, 1.287, 1.288, 1.288, 1.288, 1.289, 1.292, 1.293, 1.296, 1.297,
+ 1.281, 1.275, 1.272, 1.271, 1.271, 1.271, 1.272, 1.273, 1.273, 1.273, 1.273, 1.275, 1.277, 1.279, 1.282, 1.282, 1.283, 1.283, 1.283, 1.282, 1.282, 1.284, 1.285, 1.286, 1.288, 1.288, 1.288, 1.289, 1.293, 1.296, 1.297, 1.297,
+ 1.281, 1.276, 1.272, 1.271, 1.269, 1.269, 1.272, 1.273, 1.274, 1.274, 1.275, 1.276, 1.279, 1.282, 1.283, 1.283, 1.284, 1.284, 1.285, 1.285, 1.284, 1.285, 1.285, 1.286, 1.289, 1.289, 1.289, 1.289, 1.293, 1.295, 1.297, 1.301,
+ 1.286, 1.276, 1.272, 1.271, 1.271, 1.269, 1.272, 1.273, 1.274, 1.276, 1.276, 1.276, 1.279, 1.282, 1.284, 1.285, 1.285, 1.285, 1.286, 1.286, 1.285, 1.285, 1.286, 1.286, 1.289, 1.289, 1.289, 1.291, 1.292, 1.295, 1.301, 1.302,
+ 1.286, 1.277, 1.272, 1.272, 1.271, 1.271, 1.272, 1.273, 1.276, 1.276, 1.276, 1.277, 1.279, 1.282, 1.284, 1.285, 1.285, 1.285, 1.286, 1.286, 1.286, 1.286, 1.286, 1.286, 1.288, 1.289, 1.289, 1.291, 1.292, 1.294, 1.301, 1.304,
+ 1.285, 1.276, 1.274, 1.272, 1.271, 1.271, 1.271, 1.273, 1.274, 1.276, 1.276, 1.278, 1.279, 1.282, 1.283, 1.284, 1.285, 1.285, 1.286, 1.286, 1.286, 1.286, 1.286, 1.287, 1.287, 1.288, 1.291, 1.292, 1.292, 1.295, 1.301, 1.307,
+ 1.285, 1.278, 1.275, 1.273, 1.272, 1.272, 1.271, 1.272, 1.274, 1.275, 1.276, 1.279, 1.279, 1.281, 1.284, 1.284, 1.285, 1.285, 1.285, 1.285, 1.285, 1.285, 1.286, 1.287, 1.287, 1.287, 1.291, 1.292, 1.293, 1.297, 1.301, 1.307,
+ 1.283, 1.277, 1.275, 1.273, 1.272, 1.271, 1.269, 1.271, 1.272, 1.274, 1.275, 1.276, 1.279, 1.279, 1.279, 1.284, 1.284, 1.284, 1.284, 1.284, 1.284, 1.284, 1.285, 1.285, 1.287, 1.287, 1.291, 1.292, 1.293, 1.298, 1.301, 1.301,
+ 1.283, 1.277, 1.275, 1.272, 1.271, 1.268, 1.268, 1.269, 1.271, 1.272, 1.273, 1.272, 1.277, 1.279, 1.279, 1.281, 1.281, 1.282, 1.282, 1.282, 1.281, 1.283, 1.285, 1.285, 1.287, 1.287, 1.288, 1.291, 1.293, 1.298, 1.299, 1.299
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 4.903, 4.653, 4.193, 3.818, 3.501, 3.239, 3.015, 2.824, 2.666, 2.529, 2.414, 2.316, 2.241, 2.205, 2.184, 2.178, 2.178, 2.178, 2.188, 2.216, 2.269, 2.359, 2.465, 2.597, 2.738, 2.915, 3.125, 3.374, 3.662, 4.011, 4.418, 4.656,
+ 4.653, 4.392, 3.985, 3.621, 3.323, 3.071, 2.855, 2.678, 2.534, 2.414, 2.316, 2.234, 2.168, 2.116, 2.079, 2.058, 2.058, 2.065, 2.091, 2.135, 2.196, 2.269, 2.359, 2.465, 2.599, 2.761, 2.962, 3.195, 3.472, 3.801, 4.188, 4.418,
+ 4.392, 4.149, 3.766, 3.423, 3.139, 2.901, 2.697, 2.534, 2.409, 2.286, 2.191, 2.106, 2.034, 1.977, 1.938, 1.914, 1.914, 1.923, 1.952, 1.998, 2.063, 2.139, 2.231, 2.341, 2.465, 2.612, 2.796, 3.019, 3.284, 3.596, 3.963, 4.188,
+ 4.149, 3.936, 3.566, 3.252, 2.982, 2.749, 2.561, 2.409, 2.286, 2.169, 2.066, 1.976, 1.901, 1.842, 1.801, 1.777, 1.777, 1.785, 1.814, 1.861, 1.929, 2.012, 2.107, 2.227, 2.341, 2.483, 2.651, 2.863, 3.119, 3.415, 3.764, 3.979,
+ 3.951, 3.743, 3.392, 3.091, 2.831, 2.615, 2.438, 2.297, 2.169, 2.061, 1.942, 1.847, 1.768, 1.711, 1.669, 1.646, 1.646, 1.653, 1.681, 1.729, 1.796, 1.882, 1.987, 2.107, 2.227, 2.367, 2.528, 2.727, 2.968, 3.254, 3.583, 3.805,
+ 3.785, 3.572, 3.242, 2.952, 2.703, 2.501, 2.336, 2.195, 2.061, 1.942, 1.825, 1.726, 1.651, 1.591, 1.549, 1.527, 1.527, 1.533, 1.562, 1.611, 1.676, 1.763, 1.881, 1.987, 2.119, 2.263, 2.422, 2.608, 2.833, 3.109, 3.428, 3.652,
+ 3.644, 3.424, 3.107, 2.828, 2.592, 2.401, 2.244, 2.097, 1.954, 1.825, 1.724, 1.614, 1.538, 1.479, 1.441, 1.419, 1.419, 1.424, 1.452, 1.498, 1.564, 1.656, 1.763, 1.881, 2.018, 2.169, 2.325, 2.504, 2.718, 2.979, 3.291, 3.519,
+ 3.525, 3.297, 2.986, 2.718, 2.495, 2.318, 2.156, 2.004, 1.856, 1.724, 1.614, 1.524, 1.439, 1.384, 1.348, 1.328, 1.328, 1.332, 1.358, 1.402, 1.466, 1.564, 1.656, 1.781, 1.923, 2.076, 2.241, 2.414, 2.616, 2.864, 3.166, 3.411,
+ 3.413, 3.191, 2.889, 2.631, 2.421, 2.245, 2.082, 1.924, 1.772, 1.637, 1.524, 1.439, 1.359, 1.307, 1.272, 1.252, 1.252, 1.258, 1.283, 1.324, 1.391, 1.466, 1.569, 1.694, 1.838, 1.999, 2.166, 2.341, 2.537, 2.774, 3.069, 3.306,
+ 3.333, 3.086, 2.793, 2.547, 2.349, 2.174, 2.006, 1.843, 1.689, 1.556, 1.444, 1.359, 1.299, 1.239, 1.207, 1.189, 1.189, 1.194, 1.219, 1.261, 1.324, 1.391, 1.491, 1.614, 1.757, 1.921, 2.092, 2.269, 2.463, 2.687, 2.967, 3.225,
+ 3.256, 3.016, 2.727, 2.491, 2.295, 2.118, 1.947, 1.779, 1.625, 1.494, 1.383, 1.299, 1.239, 1.189, 1.158, 1.141, 1.141, 1.147, 1.171, 1.217, 1.261, 1.334, 1.429, 1.551, 1.695, 1.857, 2.035, 2.217, 2.409, 2.628, 2.895, 3.153,
+ 3.211, 2.946, 2.666, 2.433, 2.246, 2.068, 1.891, 1.721, 1.569, 1.437, 1.332, 1.249, 1.189, 1.156, 1.113, 1.096, 1.096, 1.102, 1.133, 1.171, 1.217, 1.286, 1.378, 1.496, 1.638, 1.802, 1.981, 2.166, 2.358, 2.573, 2.832, 3.105,
+ 3.165, 2.901, 2.625, 2.401, 2.211, 2.031, 1.848, 1.678, 1.528, 1.398, 1.294, 1.216, 1.156, 1.113, 1.085, 1.061, 1.061, 1.067, 1.102, 1.133, 1.185, 1.253, 1.341, 1.456, 1.597, 1.761, 1.942, 2.131, 2.325, 2.534, 2.793, 3.069,
+ 3.132, 2.862, 2.593, 2.371, 2.182, 1.997, 1.816, 1.646, 1.496, 1.367, 1.267, 1.189, 1.131, 1.085, 1.061, 1.032, 1.032, 1.043, 1.067, 1.108, 1.161, 1.228, 1.313, 1.426, 1.566, 1.728, 1.911, 2.102, 2.297, 2.508, 2.761, 3.039,
+ 3.118, 2.833, 2.566, 2.344, 2.157, 1.972, 1.786, 1.618, 1.469, 1.343, 1.244, 1.169, 1.111, 1.063, 1.032, 1.018, 1.009, 1.027, 1.043, 1.086, 1.141, 1.207, 1.292, 1.403, 1.541, 1.703, 1.884, 2.077, 2.274, 2.484, 2.735, 3.031,
+ 3.111, 2.815, 2.553, 2.334, 2.145, 1.959, 1.774, 1.605, 1.455, 1.331, 1.234, 1.159, 1.101, 1.053, 1.018, 1.005, 1.004, 1.006, 1.033, 1.077, 1.132, 1.199, 1.283, 1.393, 1.531, 1.692, 1.873, 2.067, 2.265, 2.477, 2.726, 3.028,
+ 3.111, 2.815, 2.552, 2.333, 2.145, 1.959, 1.774, 1.605, 1.455, 1.331, 1.234, 1.159, 1.101, 1.053, 1.018, 1.001, 1.001, 1.006, 1.033, 1.077, 1.132, 1.199, 1.283, 1.393, 1.531, 1.692, 1.873, 2.067, 2.265, 2.475, 2.726, 3.028,
+ 3.111, 2.822, 2.552, 2.333, 2.146, 1.961, 1.775, 1.607, 1.457, 1.333, 1.236, 1.161, 1.103, 1.056, 1.021, 1.015, 1.004, 1.017, 1.037, 1.079, 1.135, 1.201, 1.287, 1.395, 1.533, 1.695, 1.876, 2.067, 2.266, 2.475, 2.727, 3.028,
+ 3.123, 2.844, 2.579, 2.357, 2.166, 1.983, 1.797, 1.627, 1.477, 1.351, 1.253, 1.177, 1.119, 1.073, 1.046, 1.021, 1.021, 1.037, 1.055, 1.097, 1.151, 1.218, 1.305, 1.416, 1.555, 1.717, 1.898, 2.089, 2.287, 2.499, 2.753, 3.041,
+ 3.149, 2.881, 2.609, 2.383, 2.191, 2.009, 1.827, 1.658, 1.506, 1.378, 1.277, 1.199, 1.142, 1.099, 1.073, 1.046, 1.046, 1.055, 1.089, 1.121, 1.173, 1.242, 1.331, 1.444, 1.584, 1.747, 1.928, 2.118, 2.315, 2.528, 2.787, 3.071,
+ 3.187, 2.933, 2.654, 2.422, 2.228, 2.049, 1.871, 1.699, 1.547, 1.417, 1.313, 1.232, 1.173, 1.136, 1.099, 1.081, 1.081, 1.089, 1.121, 1.152, 1.205, 1.275, 1.368, 1.484, 1.626, 1.789, 1.971, 2.159, 2.354, 2.571, 2.834, 3.107,
+ 3.247, 2.989, 2.703, 2.464, 2.269, 2.091, 1.915, 1.748, 1.595, 1.464, 1.356, 1.272, 1.216, 1.173, 1.136, 1.121, 1.121, 1.128, 1.152, 1.199, 1.242, 1.316, 1.411, 1.532, 1.675, 1.839, 2.019, 2.202, 2.398, 2.618, 2.891, 3.164,
+ 3.306, 3.068, 2.776, 2.524, 2.324, 2.148, 1.979, 1.814, 1.661, 1.526, 1.416, 1.328, 1.272, 1.216, 1.185, 1.169, 1.169, 1.177, 1.199, 1.242, 1.297, 1.371, 1.473, 1.596, 1.741, 1.904, 2.081, 2.263, 2.459, 2.687, 2.971, 3.221,
+ 3.394, 3.161, 2.855, 2.598, 2.387, 2.211, 2.047, 1.885, 1.734, 1.599, 1.485, 1.399, 1.328, 1.273, 1.242, 1.224, 1.224, 1.231, 1.256, 1.297, 1.369, 1.438, 1.542, 1.669, 1.813, 1.976, 2.149, 2.331, 2.527, 2.764, 3.057, 3.304,
+ 3.496, 3.263, 2.949, 2.684, 2.463, 2.279, 2.118, 1.965, 1.817, 1.681, 1.568, 1.485, 1.399, 1.345, 1.309, 1.291, 1.291, 1.299, 1.325, 1.369, 1.438, 1.528, 1.623, 1.751, 1.897, 2.056, 2.225, 2.405, 2.608, 2.858, 3.162, 3.402,
+ 3.611, 3.397, 3.072, 2.793, 2.558, 2.368, 2.205, 2.057, 1.914, 1.779, 1.673, 1.568, 1.492, 1.435, 1.398, 1.377, 1.377, 1.385, 1.414, 1.461, 1.528, 1.623, 1.722, 1.851, 1.996, 2.152, 2.318, 2.499, 2.712, 2.977, 3.294, 3.519,
+ 3.764, 3.537, 3.204, 2.908, 2.661, 2.459, 2.294, 2.147, 2.012, 1.885, 1.779, 1.673, 1.595, 1.535, 1.496, 1.476, 1.476, 1.484, 1.515, 1.564, 1.631, 1.722, 1.837, 1.954, 2.096, 2.247, 2.411, 2.599, 2.825, 3.108, 3.431, 3.662,
+ 3.919, 3.704, 3.353, 3.046, 2.787, 2.571, 2.393, 2.247, 2.117, 2.007, 1.885, 1.789, 1.709, 1.651, 1.613, 1.591, 1.591, 1.599, 1.631, 1.679, 1.749, 1.837, 1.954, 2.069, 2.204, 2.352, 2.518, 2.719, 2.962, 3.257, 3.591, 3.815,
+ 4.126, 3.894, 3.521, 3.203, 2.931, 2.702, 2.512, 2.358, 2.238, 2.117, 2.007, 1.915, 1.839, 1.779, 1.739, 1.719, 1.719, 1.726, 1.759, 1.808, 1.877, 1.965, 2.069, 2.202, 2.319, 2.467, 2.645, 2.859, 3.122, 3.427, 3.784, 4.019,
+ 4.391, 4.126, 3.721, 3.389, 3.103, 2.857, 2.655, 2.493, 2.358, 2.238, 2.138, 2.049, 1.976, 1.921, 1.882, 1.859, 1.859, 1.868, 1.899, 1.949, 2.015, 2.102, 2.202, 2.319, 2.456, 2.605, 2.794, 3.026, 3.305, 3.629, 4.019, 4.275,
+ 4.671, 4.391, 3.966, 3.603, 3.297, 3.041, 2.821, 2.643, 2.493, 2.374, 2.277, 2.191, 2.122, 2.069, 2.031, 2.011, 2.011, 2.021, 2.049, 2.097, 2.163, 2.245, 2.343, 2.456, 2.601, 2.762, 2.972, 3.225, 3.514, 3.867, 4.275, 4.547,
+ 4.899, 4.671, 4.209, 3.824, 3.501, 3.229, 2.999, 2.805, 2.643, 2.493, 2.374, 2.277, 2.208, 2.172, 2.153, 2.148, 2.148, 2.148, 2.164, 2.192, 2.245, 2.343, 2.456, 2.592, 2.749, 2.935, 3.161, 3.423, 3.736, 4.121, 4.547, 4.751
+ ],
+ "sigma": 0.005,
+ "sigma_Cb": 0.005
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2300,
+ "ccm":
+ [
+ 1.77591, -0.16036, -0.61554,
+ -0.26235, 1.66133, -0.39898,
+ -0.22474, -1.94117, 3.16591
+ ]
+ },
+ {
+ "ct": 2700,
+ "ccm":
+ [
+ 1.54016, 0.02018, -0.56034,
+ -0.27333, 1.78261, -0.50928,
+ -0.13821, -1.22069, 2.35891
+ ]
+ },
+ {
+ "ct": 3000,
+ "ccm":
+ [
+ 1.73266, -0.19227, -0.54039,
+ -0.44685, 2.04704, -0.60018,
+ -0.13631, -0.94323, 2.07953
+ ]
+ },
+ {
+ "ct": 4000,
+ "ccm":
+ [
+ 1.70137, -0.23462, -0.46675,
+ -0.34126, 1.80328, -0.46202,
+ -0.14242, -0.75105, 1.89347
+ ]
+ },
+ {
+ "ct": 4150,
+ "ccm":
+ [
+ 2.09386, -0.69875, -0.39511,
+ -0.38239, 1.78872, -0.40633,
+ -0.11896, -0.74324, 1.86219
+ ]
+ },
+ {
+ "ct": 6500,
+ "ccm":
+ [
+ 1.69679, -0.27504, -0.42174,
+ -0.23619, 1.87692, -0.64073,
+ -0.07905, -0.61889, 1.69795
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.cac": { }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 0.25,
+ "limit": 1.0,
+ "strength": 1.0
+ }
+ },
+ {
+ "rpi.hdr":
+ {
+ "Off":
+ {
+ "cadence": [ 0 ]
+ },
+ "MultiExposureUnmerged":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ }
+ },
+ "SingleExposure":
+ {
+ "cadence": [ 1 ],
+ "channel_map":
+ {
+ "short": 1
+ },
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "MultiExposure":
+ {
+ "cadence": [ 1, 2 ],
+ "channel_map":
+ {
+ "short": 1,
+ "long": 2
+ },
+ "stitch_enable": 1,
+ "spatial_gain": 2.0,
+ "tonemap_enable": 1
+ },
+ "Night":
+ {
+ "cadence": [ 3 ],
+ "channel_map":
+ {
+ "night": 3
+ },
+ "tonemap_enable": 1,
+ "tonemap":
+ [
+ 0, 0,
+ 5000, 20000,
+ 10000, 30000,
+ 20000, 47000,
+ 30000, 55000,
+ 65535, 65535
+ ]
+ }
+ }
+ },
+ {
+ "rpi.af":
+ {
+ "ranges":
+ {
+ "normal":
+ {
+ "min": 0.0,
+ "max": 12.0,
+ "default": 1.0
+ },
+ "macro":
+ {
+ "min": 3.0,
+ "max": 15.0,
+ "default": 4.0
+ }
+ },
+ "speeds":
+ {
+ "normal":
+ {
+ "step_coarse": 1.0,
+ "step_fine": 0.25,
+ "contrast_ratio": 0.75,
+ "pdaf_gain": -0.02,
+ "pdaf_squelch": 0.125,
+ "max_slew": 2.0,
+ "pdaf_frames": 0,
+ "dropout_frames": 0,
+ "step_frames": 4
+ }
+ },
+ "conf_epsilon": 8,
+ "conf_thresh": 16,
+ "conf_clip": 512,
+ "skip_frames": 5,
+ "map": [ 0.0, 0, 15.0, 1023 ]
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/ov9281_mono.json b/src/ipa/rpi/pisp/data/ov9281_mono.json
new file mode 100644
index 00000000..54229b83
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/ov9281_mono.json
@@ -0,0 +1,215 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 2000,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 800,
+ "reference_Y": 20000
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 2.5
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000, 60000, 120000 ],
+ "gain": [ 1.0, 2.0, 3.0, 4.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 30000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 1000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.4,
+ 1000, 0.4
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "n_iter": 0,
+ "luminance_strength": 1.0,
+ "corner_strength": 1.5
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 0,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/se327m12.json b/src/ipa/rpi/pisp/data/se327m12.json
new file mode 100644
index 00000000..46f2378c
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/se327m12.json
@@ -0,0 +1,639 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 3840
+ }
+ },
+ {
+ "rpi.dpc": { }
+ },
+ {
+ "rpi.lux":
+ {
+ "reference_shutter_speed": 6873,
+ "reference_gain": 1.0,
+ "reference_aperture": 1.0,
+ "reference_lux": 800,
+ "reference_Y": 12293
+ }
+ },
+ {
+ "rpi.noise":
+ {
+ "reference_constant": 0,
+ "reference_slope": 1.986
+ }
+ },
+ {
+ "rpi.geq":
+ {
+ "offset": 207,
+ "slope": 0.00539
+ }
+ },
+ {
+ "rpi.denoise":
+ {
+ "normal":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 0.8,
+ "threshold": 0.05
+ }
+ },
+ "hdr":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ },
+ "night":
+ {
+ "sdn":
+ {
+ "deviation": 1.6,
+ "strength": 0.5,
+ "deviation2": 3.2,
+ "deviation_no_tdn": 3.2,
+ "strength_no_tdn": 0.75
+ },
+ "cdn":
+ {
+ "deviation": 200,
+ "strength": 0.3
+ },
+ "tdn":
+ {
+ "deviation": 1.3,
+ "threshold": 0.1
+ }
+ }
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "priors": [
+ {
+ "lux": 0,
+ "prior":
+ [
+ 2000, 1.0,
+ 3000, 0.0,
+ 13000, 0.0
+ ]
+ },
+ {
+ "lux": 800,
+ "prior":
+ [
+ 2000, 0.0,
+ 6000, 2.0,
+ 13000, 2.0
+ ]
+ },
+ {
+ "lux": 1500,
+ "prior":
+ [
+ 2000, 0.0,
+ 4000, 1.0,
+ 6000, 6.0,
+ 6500, 7.0,
+ 7000, 1.0,
+ 13000, 1.0
+ ]
+ }
+ ],
+ "modes":
+ {
+ "auto":
+ {
+ "lo": 2500,
+ "hi": 8000
+ },
+ "incandescent":
+ {
+ "lo": 2500,
+ "hi": 3000
+ },
+ "tungsten":
+ {
+ "lo": 3000,
+ "hi": 3500
+ },
+ "fluorescent":
+ {
+ "lo": 4000,
+ "hi": 4700
+ },
+ "indoor":
+ {
+ "lo": 3000,
+ "hi": 5000
+ },
+ "daylight":
+ {
+ "lo": 5500,
+ "hi": 6500
+ },
+ "cloudy":
+ {
+ "lo": 7000,
+ "hi": 8600
+ }
+ },
+ "bayes": 1,
+ "ct_curve":
+ [
+ 2900.0, 0.9217, 0.3657,
+ 3600.0, 0.7876, 0.4651,
+ 4600.0, 0.6807, 0.5684,
+ 5800.0, 0.5937, 0.6724,
+ 8100.0, 0.5447, 0.7403
+ ],
+ "sensitivity_r": 1.0,
+ "sensitivity_b": 1.0,
+ "transverse_pos": 0.0162,
+ "transverse_neg": 0.0204
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ },
+ "spot":
+ {
+ "weights":
+ [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ]
+ },
+ "matrix":
+ {
+ "weights":
+ [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 10000, 30000, 60000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]
+ },
+ "short":
+ {
+ "shutter": [ 100, 5000, 10000, 20000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 8.0 ]
+ },
+ "long":
+ {
+ "shutter": [ 1000, 30000, 60000, 90000, 120000 ],
+ "gain": [ 1.0, 2.0, 4.0, 6.0, 12.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ }
+ ],
+ "highlight": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.5,
+ 1000, 0.5
+ ]
+ },
+ {
+ "bound": "UPPER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.8,
+ 1000, 0.8
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ },
+ {
+ "rpi.alsc":
+ {
+ "omega": 1.3,
+ "n_iter": 100,
+ "luminance_strength": 0.5,
+ "calibrations_Cr": [
+ {
+ "ct": 4000,
+ "table":
+ [
+ 1.481, 1.476, 1.471, 1.461, 1.45, 1.441, 1.431, 1.424, 1.418, 1.412, 1.406, 1.401, 1.396, 1.393, 1.39, 1.389, 1.389, 1.389, 1.389, 1.39, 1.391, 1.393, 1.395, 1.398, 1.401, 1.405, 1.411, 1.417, 1.423, 1.429, 1.433, 1.437,
+ 1.478, 1.472, 1.466, 1.456, 1.446, 1.436, 1.427, 1.42, 1.414, 1.408, 1.402, 1.398, 1.394, 1.391, 1.388, 1.387, 1.387, 1.387, 1.387, 1.387, 1.389, 1.391, 1.392, 1.395, 1.399, 1.403, 1.408, 1.414, 1.42, 1.427, 1.43, 1.434,
+ 1.475, 1.468, 1.461, 1.451, 1.441, 1.432, 1.423, 1.416, 1.41, 1.404, 1.399, 1.395, 1.392, 1.389, 1.387, 1.385, 1.384, 1.384, 1.384, 1.385, 1.387, 1.388, 1.39, 1.392, 1.396, 1.401, 1.405, 1.411, 1.418, 1.424, 1.428, 1.431,
+ 1.472, 1.464, 1.456, 1.446, 1.437, 1.428, 1.419, 1.412, 1.406, 1.401, 1.395, 1.392, 1.39, 1.387, 1.385, 1.383, 1.382, 1.382, 1.382, 1.382, 1.384, 1.386, 1.387, 1.389, 1.394, 1.398, 1.403, 1.407, 1.415, 1.422, 1.425, 1.429,
+ 1.469, 1.46, 1.451, 1.442, 1.433, 1.425, 1.417, 1.41, 1.403, 1.398, 1.393, 1.39, 1.388, 1.385, 1.382, 1.381, 1.38, 1.38, 1.38, 1.381, 1.382, 1.384, 1.385, 1.387, 1.391, 1.395, 1.399, 1.404, 1.411, 1.418, 1.422, 1.426,
+ 1.467, 1.457, 1.447, 1.438, 1.429, 1.422, 1.414, 1.407, 1.401, 1.396, 1.392, 1.388, 1.385, 1.383, 1.38, 1.378, 1.378, 1.378, 1.378, 1.379, 1.38, 1.381, 1.383, 1.386, 1.388, 1.391, 1.396, 1.401, 1.407, 1.414, 1.419, 1.424,
+ 1.465, 1.454, 1.443, 1.435, 1.427, 1.419, 1.412, 1.405, 1.399, 1.394, 1.39, 1.387, 1.384, 1.381, 1.378, 1.377, 1.377, 1.377, 1.377, 1.377, 1.378, 1.379, 1.382, 1.384, 1.386, 1.388, 1.393, 1.398, 1.405, 1.411, 1.416, 1.421,
+ 1.464, 1.453, 1.443, 1.434, 1.426, 1.418, 1.411, 1.405, 1.398, 1.393, 1.389, 1.385, 1.382, 1.38, 1.378, 1.376, 1.376, 1.376, 1.376, 1.376, 1.377, 1.378, 1.38, 1.382, 1.384, 1.387, 1.392, 1.397, 1.403, 1.409, 1.415, 1.42,
+ 1.462, 1.452, 1.442, 1.433, 1.425, 1.418, 1.411, 1.404, 1.397, 1.392, 1.387, 1.384, 1.381, 1.379, 1.377, 1.376, 1.375, 1.374, 1.374, 1.375, 1.375, 1.376, 1.378, 1.38, 1.383, 1.386, 1.39, 1.395, 1.402, 1.408, 1.413, 1.419,
+ 1.462, 1.452, 1.441, 1.432, 1.424, 1.417, 1.41, 1.403, 1.397, 1.391, 1.387, 1.383, 1.38, 1.378, 1.377, 1.375, 1.374, 1.374, 1.374, 1.374, 1.374, 1.375, 1.377, 1.379, 1.381, 1.384, 1.389, 1.394, 1.4, 1.407, 1.412, 1.417,
+ 1.461, 1.451, 1.441, 1.432, 1.423, 1.416, 1.409, 1.403, 1.396, 1.391, 1.387, 1.383, 1.381, 1.379, 1.377, 1.375, 1.374, 1.373, 1.373, 1.374, 1.374, 1.374, 1.376, 1.378, 1.38, 1.383, 1.388, 1.392, 1.399, 1.405, 1.411, 1.416,
+ 1.461, 1.45, 1.44, 1.431, 1.422, 1.415, 1.409, 1.402, 1.396, 1.391, 1.386, 1.384, 1.382, 1.379, 1.377, 1.375, 1.374, 1.373, 1.373, 1.373, 1.373, 1.374, 1.375, 1.377, 1.379, 1.382, 1.386, 1.39, 1.397, 1.404, 1.41, 1.415,
+ 1.461, 1.45, 1.44, 1.431, 1.422, 1.415, 1.408, 1.401, 1.395, 1.39, 1.386, 1.383, 1.381, 1.379, 1.377, 1.375, 1.374, 1.373, 1.373, 1.373, 1.373, 1.374, 1.375, 1.376, 1.379, 1.381, 1.385, 1.39, 1.396, 1.403, 1.409, 1.414,
+ 1.461, 1.45, 1.44, 1.43, 1.421, 1.414, 1.407, 1.4, 1.394, 1.39, 1.386, 1.383, 1.381, 1.379, 1.377, 1.375, 1.374, 1.373, 1.373, 1.373, 1.373, 1.374, 1.375, 1.376, 1.378, 1.381, 1.385, 1.39, 1.396, 1.402, 1.408, 1.414,
+ 1.461, 1.45, 1.44, 1.43, 1.42, 1.413, 1.406, 1.399, 1.394, 1.389, 1.385, 1.382, 1.38, 1.378, 1.377, 1.375, 1.374, 1.373, 1.372, 1.372, 1.373, 1.374, 1.375, 1.376, 1.378, 1.38, 1.385, 1.39, 1.396, 1.401, 1.407, 1.413,
+ 1.461, 1.45, 1.439, 1.43, 1.42, 1.412, 1.405, 1.399, 1.393, 1.388, 1.385, 1.382, 1.379, 1.378, 1.376, 1.375, 1.374, 1.373, 1.372, 1.372, 1.373, 1.374, 1.374, 1.376, 1.378, 1.381, 1.385, 1.389, 1.395, 1.401, 1.407, 1.413,
+ 1.461, 1.45, 1.439, 1.43, 1.42, 1.412, 1.404, 1.398, 1.392, 1.388, 1.384, 1.381, 1.379, 1.377, 1.376, 1.375, 1.374, 1.373, 1.372, 1.372, 1.372, 1.373, 1.374, 1.376, 1.378, 1.381, 1.385, 1.389, 1.395, 1.401, 1.408, 1.414,
+ 1.461, 1.45, 1.439, 1.429, 1.42, 1.412, 1.404, 1.397, 1.391, 1.387, 1.384, 1.381, 1.378, 1.376, 1.375, 1.374, 1.374, 1.373, 1.372, 1.372, 1.372, 1.373, 1.374, 1.376, 1.379, 1.382, 1.385, 1.389, 1.395, 1.401, 1.408, 1.414,
+ 1.461, 1.45, 1.439, 1.429, 1.42, 1.412, 1.404, 1.398, 1.391, 1.387, 1.383, 1.381, 1.378, 1.376, 1.375, 1.374, 1.373, 1.373, 1.373, 1.372, 1.373, 1.373, 1.374, 1.376, 1.379, 1.382, 1.385, 1.389, 1.395, 1.401, 1.408, 1.414,
+ 1.462, 1.45, 1.439, 1.429, 1.42, 1.412, 1.404, 1.398, 1.392, 1.387, 1.383, 1.38, 1.378, 1.376, 1.375, 1.374, 1.373, 1.373, 1.373, 1.373, 1.373, 1.374, 1.375, 1.376, 1.379, 1.382, 1.385, 1.39, 1.395, 1.401, 1.408, 1.414,
+ 1.462, 1.451, 1.439, 1.43, 1.421, 1.413, 1.405, 1.399, 1.393, 1.388, 1.383, 1.38, 1.378, 1.376, 1.375, 1.374, 1.373, 1.373, 1.373, 1.373, 1.374, 1.374, 1.375, 1.377, 1.379, 1.382, 1.386, 1.39, 1.396, 1.402, 1.408, 1.414,
+ 1.462, 1.451, 1.44, 1.431, 1.422, 1.414, 1.406, 1.399, 1.393, 1.388, 1.383, 1.38, 1.378, 1.376, 1.375, 1.374, 1.373, 1.373, 1.373, 1.373, 1.373, 1.374, 1.375, 1.377, 1.379, 1.382, 1.386, 1.391, 1.396, 1.402, 1.408, 1.414,
+ 1.462, 1.452, 1.441, 1.432, 1.423, 1.415, 1.406, 1.4, 1.393, 1.389, 1.384, 1.381, 1.378, 1.376, 1.375, 1.374, 1.373, 1.373, 1.372, 1.372, 1.373, 1.374, 1.375, 1.377, 1.38, 1.383, 1.387, 1.391, 1.397, 1.402, 1.408, 1.414,
+ 1.462, 1.452, 1.442, 1.433, 1.424, 1.416, 1.407, 1.4, 1.394, 1.389, 1.384, 1.381, 1.378, 1.376, 1.375, 1.373, 1.373, 1.372, 1.372, 1.372, 1.372, 1.373, 1.375, 1.377, 1.38, 1.383, 1.387, 1.391, 1.397, 1.402, 1.408, 1.414,
+ 1.464, 1.453, 1.443, 1.434, 1.425, 1.416, 1.408, 1.401, 1.394, 1.389, 1.384, 1.381, 1.378, 1.376, 1.374, 1.373, 1.372, 1.371, 1.371, 1.371, 1.372, 1.373, 1.374, 1.376, 1.379, 1.382, 1.386, 1.391, 1.397, 1.402, 1.409, 1.416,
+ 1.465, 1.454, 1.444, 1.435, 1.425, 1.417, 1.408, 1.401, 1.395, 1.389, 1.384, 1.381, 1.379, 1.376, 1.374, 1.372, 1.37, 1.369, 1.369, 1.37, 1.371, 1.373, 1.374, 1.376, 1.379, 1.382, 1.386, 1.39, 1.396, 1.402, 1.41, 1.417,
+ 1.466, 1.456, 1.446, 1.436, 1.426, 1.418, 1.41, 1.403, 1.396, 1.39, 1.384, 1.381, 1.379, 1.377, 1.375, 1.372, 1.37, 1.369, 1.369, 1.37, 1.371, 1.373, 1.374, 1.376, 1.379, 1.383, 1.387, 1.391, 1.397, 1.404, 1.411, 1.418,
+ 1.467, 1.457, 1.448, 1.437, 1.427, 1.419, 1.412, 1.404, 1.397, 1.391, 1.385, 1.382, 1.38, 1.378, 1.375, 1.373, 1.371, 1.37, 1.37, 1.371, 1.372, 1.373, 1.375, 1.377, 1.381, 1.384, 1.388, 1.392, 1.399, 1.405, 1.413, 1.42,
+ 1.469, 1.459, 1.449, 1.439, 1.428, 1.421, 1.414, 1.406, 1.398, 1.392, 1.386, 1.383, 1.381, 1.379, 1.376, 1.374, 1.372, 1.371, 1.371, 1.371, 1.372, 1.374, 1.375, 1.378, 1.382, 1.386, 1.389, 1.394, 1.4, 1.407, 1.414, 1.422,
+ 1.47, 1.461, 1.452, 1.441, 1.431, 1.423, 1.416, 1.409, 1.401, 1.395, 1.388, 1.385, 1.382, 1.38, 1.377, 1.375, 1.374, 1.373, 1.373, 1.373, 1.374, 1.375, 1.377, 1.379, 1.383, 1.388, 1.392, 1.397, 1.405, 1.412, 1.417, 1.423,
+ 1.472, 1.463, 1.454, 1.444, 1.434, 1.426, 1.418, 1.412, 1.405, 1.398, 1.391, 1.387, 1.383, 1.381, 1.379, 1.377, 1.376, 1.375, 1.375, 1.375, 1.376, 1.377, 1.378, 1.381, 1.385, 1.39, 1.395, 1.401, 1.409, 1.417, 1.421, 1.425,
+ 1.474, 1.465, 1.457, 1.447, 1.437, 1.429, 1.421, 1.414, 1.409, 1.401, 1.394, 1.388, 1.385, 1.382, 1.38, 1.378, 1.378, 1.377, 1.377, 1.377, 1.378, 1.378, 1.38, 1.382, 1.387, 1.392, 1.399, 1.405, 1.414, 1.422, 1.424, 1.426
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.742, 1.732, 1.722, 1.707, 1.691, 1.677, 1.664, 1.652, 1.642, 1.633, 1.626, 1.62, 1.615, 1.612, 1.61, 1.608, 1.608, 1.607, 1.606, 1.607, 1.608, 1.61, 1.614, 1.618, 1.623, 1.627, 1.635, 1.643, 1.654, 1.666, 1.673, 1.681,
+ 1.737, 1.726, 1.715, 1.7, 1.685, 1.671, 1.658, 1.648, 1.639, 1.63, 1.622, 1.616, 1.611, 1.608, 1.606, 1.605, 1.604, 1.603, 1.603, 1.603, 1.605, 1.607, 1.611, 1.615, 1.62, 1.625, 1.631, 1.639, 1.65, 1.661, 1.669, 1.677,
+ 1.732, 1.721, 1.709, 1.694, 1.679, 1.665, 1.652, 1.643, 1.635, 1.627, 1.619, 1.613, 1.607, 1.604, 1.603, 1.601, 1.6, 1.599, 1.599, 1.6, 1.602, 1.604, 1.608, 1.612, 1.617, 1.622, 1.628, 1.635, 1.646, 1.657, 1.665, 1.674,
+ 1.727, 1.715, 1.703, 1.688, 1.673, 1.66, 1.647, 1.639, 1.632, 1.624, 1.616, 1.61, 1.604, 1.601, 1.599, 1.598, 1.596, 1.596, 1.596, 1.597, 1.599, 1.602, 1.605, 1.609, 1.614, 1.619, 1.625, 1.632, 1.642, 1.653, 1.661, 1.67,
+ 1.722, 1.71, 1.699, 1.684, 1.668, 1.656, 1.643, 1.635, 1.628, 1.62, 1.613, 1.607, 1.601, 1.598, 1.596, 1.595, 1.593, 1.593, 1.593, 1.594, 1.596, 1.598, 1.602, 1.606, 1.61, 1.615, 1.622, 1.629, 1.639, 1.649, 1.657, 1.666,
+ 1.716, 1.705, 1.694, 1.679, 1.663, 1.651, 1.64, 1.631, 1.623, 1.616, 1.61, 1.604, 1.599, 1.595, 1.594, 1.592, 1.591, 1.59, 1.59, 1.591, 1.592, 1.595, 1.599, 1.604, 1.607, 1.612, 1.619, 1.627, 1.636, 1.644, 1.653, 1.661,
+ 1.712, 1.701, 1.69, 1.675, 1.659, 1.647, 1.636, 1.628, 1.619, 1.613, 1.607, 1.602, 1.597, 1.593, 1.591, 1.589, 1.588, 1.587, 1.587, 1.588, 1.59, 1.592, 1.596, 1.601, 1.604, 1.609, 1.616, 1.624, 1.632, 1.641, 1.649, 1.658,
+ 1.71, 1.699, 1.687, 1.672, 1.657, 1.645, 1.633, 1.625, 1.618, 1.611, 1.605, 1.6, 1.595, 1.592, 1.589, 1.587, 1.586, 1.586, 1.586, 1.587, 1.588, 1.59, 1.594, 1.597, 1.601, 1.606, 1.613, 1.621, 1.629, 1.638, 1.647, 1.657,
+ 1.708, 1.696, 1.683, 1.669, 1.654, 1.642, 1.631, 1.623, 1.616, 1.609, 1.602, 1.597, 1.593, 1.59, 1.587, 1.585, 1.584, 1.584, 1.584, 1.585, 1.587, 1.588, 1.591, 1.594, 1.598, 1.604, 1.61, 1.618, 1.626, 1.635, 1.645, 1.655,
+ 1.705, 1.693, 1.68, 1.666, 1.652, 1.64, 1.628, 1.62, 1.614, 1.607, 1.6, 1.595, 1.592, 1.588, 1.586, 1.584, 1.583, 1.582, 1.583, 1.584, 1.585, 1.587, 1.589, 1.592, 1.596, 1.602, 1.608, 1.615, 1.624, 1.633, 1.644, 1.654,
+ 1.703, 1.69, 1.677, 1.663, 1.649, 1.638, 1.626, 1.618, 1.611, 1.604, 1.598, 1.593, 1.59, 1.587, 1.584, 1.582, 1.581, 1.581, 1.582, 1.583, 1.584, 1.585, 1.587, 1.59, 1.595, 1.6, 1.607, 1.614, 1.623, 1.633, 1.643, 1.653,
+ 1.7, 1.687, 1.674, 1.66, 1.646, 1.635, 1.625, 1.616, 1.609, 1.602, 1.596, 1.591, 1.588, 1.585, 1.583, 1.581, 1.58, 1.58, 1.581, 1.582, 1.583, 1.584, 1.586, 1.589, 1.594, 1.599, 1.606, 1.613, 1.622, 1.632, 1.642, 1.652,
+ 1.698, 1.685, 1.671, 1.658, 1.644, 1.633, 1.623, 1.615, 1.607, 1.6, 1.594, 1.59, 1.587, 1.584, 1.582, 1.58, 1.579, 1.579, 1.58, 1.581, 1.582, 1.583, 1.585, 1.588, 1.593, 1.598, 1.605, 1.611, 1.621, 1.631, 1.641, 1.652,
+ 1.698, 1.683, 1.669, 1.655, 1.642, 1.631, 1.621, 1.613, 1.605, 1.599, 1.593, 1.589, 1.586, 1.583, 1.581, 1.579, 1.578, 1.578, 1.579, 1.58, 1.581, 1.582, 1.584, 1.587, 1.593, 1.598, 1.604, 1.61, 1.62, 1.629, 1.641, 1.652,
+ 1.697, 1.682, 1.666, 1.653, 1.639, 1.629, 1.619, 1.611, 1.603, 1.597, 1.591, 1.587, 1.585, 1.583, 1.58, 1.579, 1.578, 1.577, 1.578, 1.579, 1.58, 1.582, 1.584, 1.587, 1.592, 1.598, 1.603, 1.608, 1.618, 1.628, 1.64, 1.652,
+ 1.697, 1.681, 1.665, 1.651, 1.638, 1.628, 1.618, 1.61, 1.602, 1.597, 1.591, 1.588, 1.585, 1.582, 1.58, 1.578, 1.577, 1.577, 1.577, 1.578, 1.579, 1.581, 1.584, 1.587, 1.592, 1.598, 1.603, 1.608, 1.618, 1.628, 1.64, 1.652,
+ 1.697, 1.681, 1.664, 1.65, 1.637, 1.626, 1.616, 1.609, 1.602, 1.596, 1.592, 1.588, 1.585, 1.582, 1.579, 1.578, 1.577, 1.576, 1.577, 1.577, 1.579, 1.581, 1.584, 1.587, 1.593, 1.598, 1.603, 1.608, 1.618, 1.628, 1.641, 1.653,
+ 1.697, 1.68, 1.663, 1.649, 1.636, 1.625, 1.615, 1.608, 1.601, 1.596, 1.592, 1.588, 1.585, 1.582, 1.579, 1.577, 1.577, 1.576, 1.576, 1.577, 1.578, 1.58, 1.584, 1.588, 1.593, 1.598, 1.603, 1.608, 1.619, 1.629, 1.641, 1.653,
+ 1.697, 1.68, 1.663, 1.649, 1.635, 1.625, 1.615, 1.607, 1.6, 1.596, 1.592, 1.588, 1.584, 1.581, 1.579, 1.577, 1.577, 1.576, 1.576, 1.577, 1.579, 1.581, 1.585, 1.588, 1.593, 1.598, 1.604, 1.61, 1.621, 1.631, 1.643, 1.654,
+ 1.697, 1.68, 1.663, 1.649, 1.635, 1.625, 1.615, 1.607, 1.6, 1.595, 1.591, 1.587, 1.584, 1.581, 1.579, 1.577, 1.577, 1.576, 1.577, 1.578, 1.58, 1.582, 1.586, 1.589, 1.594, 1.599, 1.605, 1.611, 1.623, 1.634, 1.644, 1.654,
+ 1.697, 1.68, 1.664, 1.649, 1.635, 1.625, 1.615, 1.608, 1.6, 1.595, 1.591, 1.587, 1.583, 1.581, 1.579, 1.578, 1.577, 1.576, 1.577, 1.578, 1.581, 1.583, 1.587, 1.59, 1.595, 1.6, 1.606, 1.613, 1.625, 1.636, 1.646, 1.655,
+ 1.699, 1.682, 1.665, 1.651, 1.636, 1.626, 1.616, 1.609, 1.602, 1.596, 1.591, 1.587, 1.584, 1.581, 1.579, 1.578, 1.577, 1.577, 1.578, 1.58, 1.581, 1.584, 1.587, 1.591, 1.596, 1.601, 1.608, 1.615, 1.626, 1.637, 1.647, 1.657,
+ 1.7, 1.683, 1.666, 1.652, 1.637, 1.627, 1.617, 1.61, 1.603, 1.597, 1.591, 1.587, 1.584, 1.581, 1.579, 1.578, 1.577, 1.578, 1.579, 1.581, 1.582, 1.584, 1.588, 1.592, 1.597, 1.602, 1.609, 1.617, 1.628, 1.639, 1.649, 1.658,
+ 1.702, 1.685, 1.668, 1.653, 1.639, 1.628, 1.618, 1.611, 1.604, 1.598, 1.591, 1.587, 1.584, 1.582, 1.58, 1.578, 1.578, 1.578, 1.58, 1.581, 1.583, 1.585, 1.589, 1.593, 1.598, 1.603, 1.611, 1.619, 1.63, 1.641, 1.65, 1.66,
+ 1.705, 1.687, 1.67, 1.655, 1.641, 1.63, 1.619, 1.611, 1.604, 1.598, 1.592, 1.588, 1.585, 1.582, 1.58, 1.579, 1.578, 1.578, 1.58, 1.582, 1.583, 1.585, 1.59, 1.594, 1.599, 1.604, 1.612, 1.621, 1.632, 1.643, 1.653, 1.663,
+ 1.707, 1.689, 1.672, 1.657, 1.642, 1.631, 1.62, 1.612, 1.605, 1.599, 1.593, 1.589, 1.585, 1.583, 1.581, 1.58, 1.579, 1.579, 1.58, 1.582, 1.584, 1.586, 1.59, 1.595, 1.6, 1.605, 1.614, 1.623, 1.634, 1.646, 1.655, 1.665,
+ 1.709, 1.692, 1.674, 1.659, 1.645, 1.633, 1.621, 1.613, 1.606, 1.6, 1.595, 1.59, 1.587, 1.584, 1.583, 1.581, 1.58, 1.58, 1.581, 1.582, 1.585, 1.587, 1.592, 1.597, 1.602, 1.608, 1.616, 1.625, 1.637, 1.648, 1.658, 1.668,
+ 1.711, 1.695, 1.678, 1.662, 1.647, 1.635, 1.623, 1.615, 1.608, 1.602, 1.597, 1.593, 1.59, 1.587, 1.584, 1.582, 1.581, 1.581, 1.582, 1.584, 1.586, 1.589, 1.594, 1.599, 1.605, 1.611, 1.619, 1.628, 1.639, 1.651, 1.66, 1.67,
+ 1.714, 1.698, 1.681, 1.666, 1.65, 1.637, 1.624, 1.616, 1.609, 1.604, 1.6, 1.596, 1.592, 1.589, 1.585, 1.584, 1.583, 1.583, 1.583, 1.585, 1.587, 1.59, 1.595, 1.601, 1.608, 1.615, 1.622, 1.63, 1.642, 1.653, 1.663, 1.673,
+ 1.715, 1.7, 1.685, 1.669, 1.653, 1.64, 1.627, 1.619, 1.613, 1.607, 1.603, 1.598, 1.594, 1.591, 1.587, 1.586, 1.586, 1.586, 1.586, 1.588, 1.59, 1.593, 1.598, 1.604, 1.611, 1.618, 1.626, 1.634, 1.646, 1.657, 1.666, 1.675,
+ 1.717, 1.703, 1.688, 1.673, 1.657, 1.644, 1.63, 1.623, 1.616, 1.611, 1.605, 1.601, 1.596, 1.593, 1.59, 1.588, 1.588, 1.589, 1.589, 1.591, 1.594, 1.597, 1.601, 1.607, 1.614, 1.622, 1.63, 1.639, 1.65, 1.661, 1.67, 1.678,
+ 1.719, 1.705, 1.692, 1.677, 1.661, 1.647, 1.634, 1.626, 1.62, 1.614, 1.608, 1.603, 1.598, 1.595, 1.592, 1.591, 1.591, 1.591, 1.592, 1.594, 1.597, 1.6, 1.605, 1.61, 1.617, 1.625, 1.634, 1.643, 1.655, 1.666, 1.673, 1.681
+ ]
+ }
+ ],
+ "calibrations_Cb": [
+ {
+ "ct": 4000,
+ "table":
+ [
+ 2.253, 2.26, 2.267, 2.277, 2.288, 2.301, 2.314, 2.327, 2.339, 2.348, 2.356, 2.364, 2.37, 2.375, 2.379, 2.381, 2.381, 2.38, 2.379, 2.376, 2.371, 2.367, 2.363, 2.359, 2.351, 2.343, 2.34, 2.336, 2.324, 2.314, 2.307, 2.301,
+ 2.256, 2.264, 2.272, 2.284, 2.296, 2.309, 2.321, 2.332, 2.343, 2.352, 2.36, 2.368, 2.374, 2.379, 2.383, 2.385, 2.385, 2.385, 2.383, 2.381, 2.376, 2.371, 2.367, 2.362, 2.355, 2.349, 2.343, 2.337, 2.327, 2.316, 2.31, 2.303,
+ 2.259, 2.269, 2.278, 2.292, 2.305, 2.316, 2.328, 2.337, 2.347, 2.356, 2.365, 2.372, 2.378, 2.382, 2.386, 2.388, 2.389, 2.389, 2.388, 2.385, 2.38, 2.375, 2.37, 2.365, 2.36, 2.355, 2.347, 2.339, 2.329, 2.319, 2.313, 2.306,
+ 2.263, 2.274, 2.285, 2.298, 2.313, 2.323, 2.334, 2.342, 2.351, 2.359, 2.369, 2.375, 2.381, 2.386, 2.39, 2.392, 2.393, 2.393, 2.392, 2.39, 2.385, 2.38, 2.373, 2.368, 2.364, 2.36, 2.351, 2.341, 2.332, 2.322, 2.316, 2.309,
+ 2.268, 2.28, 2.291, 2.303, 2.315, 2.326, 2.337, 2.346, 2.355, 2.363, 2.372, 2.379, 2.384, 2.388, 2.391, 2.393, 2.394, 2.394, 2.394, 2.392, 2.389, 2.385, 2.378, 2.372, 2.367, 2.362, 2.354, 2.346, 2.336, 2.326, 2.32, 2.313,
+ 2.274, 2.286, 2.298, 2.308, 2.318, 2.33, 2.341, 2.35, 2.359, 2.367, 2.376, 2.382, 2.387, 2.391, 2.393, 2.395, 2.396, 2.396, 2.396, 2.395, 2.393, 2.39, 2.383, 2.376, 2.37, 2.364, 2.357, 2.35, 2.339, 2.329, 2.324, 2.318,
+ 2.277, 2.29, 2.302, 2.312, 2.321, 2.332, 2.344, 2.353, 2.362, 2.371, 2.379, 2.385, 2.389, 2.392, 2.394, 2.396, 2.396, 2.397, 2.397, 2.397, 2.396, 2.393, 2.387, 2.38, 2.374, 2.367, 2.36, 2.353, 2.343, 2.333, 2.327, 2.322,
+ 2.277, 2.29, 2.303, 2.313, 2.323, 2.334, 2.345, 2.355, 2.364, 2.373, 2.381, 2.387, 2.391, 2.393, 2.395, 2.396, 2.396, 2.397, 2.397, 2.397, 2.396, 2.394, 2.389, 2.384, 2.377, 2.37, 2.363, 2.355, 2.345, 2.335, 2.33, 2.324,
+ 2.277, 2.29, 2.303, 2.314, 2.325, 2.335, 2.346, 2.356, 2.366, 2.375, 2.384, 2.389, 2.392, 2.394, 2.395, 2.396, 2.396, 2.397, 2.397, 2.397, 2.396, 2.395, 2.392, 2.387, 2.38, 2.373, 2.365, 2.357, 2.347, 2.338, 2.332, 2.327,
+ 2.277, 2.291, 2.304, 2.315, 2.326, 2.337, 2.348, 2.358, 2.368, 2.377, 2.385, 2.39, 2.392, 2.394, 2.395, 2.396, 2.396, 2.397, 2.397, 2.398, 2.397, 2.395, 2.393, 2.39, 2.383, 2.375, 2.367, 2.358, 2.349, 2.34, 2.334, 2.329,
+ 2.278, 2.292, 2.307, 2.316, 2.326, 2.337, 2.349, 2.36, 2.371, 2.379, 2.386, 2.39, 2.392, 2.394, 2.396, 2.397, 2.397, 2.397, 2.398, 2.398, 2.396, 2.395, 2.393, 2.39, 2.384, 2.378, 2.369, 2.36, 2.351, 2.341, 2.336, 2.33,
+ 2.279, 2.294, 2.309, 2.318, 2.326, 2.338, 2.351, 2.362, 2.373, 2.381, 2.387, 2.39, 2.392, 2.394, 2.396, 2.397, 2.397, 2.397, 2.398, 2.397, 2.396, 2.395, 2.394, 2.391, 2.386, 2.38, 2.37, 2.361, 2.352, 2.343, 2.337, 2.332,
+ 2.28, 2.295, 2.31, 2.318, 2.326, 2.339, 2.351, 2.363, 2.374, 2.381, 2.386, 2.39, 2.393, 2.395, 2.396, 2.397, 2.397, 2.397, 2.397, 2.397, 2.396, 2.395, 2.394, 2.392, 2.387, 2.38, 2.372, 2.363, 2.353, 2.344, 2.338, 2.332,
+ 2.281, 2.295, 2.31, 2.319, 2.327, 2.339, 2.352, 2.363, 2.374, 2.381, 2.386, 2.39, 2.393, 2.395, 2.396, 2.396, 2.396, 2.396, 2.396, 2.397, 2.396, 2.396, 2.395, 2.392, 2.387, 2.381, 2.373, 2.364, 2.354, 2.345, 2.339, 2.333,
+ 2.282, 2.296, 2.31, 2.319, 2.328, 2.339, 2.352, 2.363, 2.374, 2.38, 2.385, 2.389, 2.394, 2.396, 2.396, 2.396, 2.395, 2.395, 2.396, 2.396, 2.397, 2.396, 2.395, 2.393, 2.387, 2.381, 2.374, 2.366, 2.355, 2.346, 2.339, 2.333,
+ 2.282, 2.297, 2.311, 2.32, 2.329, 2.34, 2.351, 2.362, 2.373, 2.38, 2.385, 2.39, 2.394, 2.395, 2.396, 2.396, 2.395, 2.395, 2.395, 2.396, 2.396, 2.396, 2.395, 2.393, 2.388, 2.382, 2.374, 2.366, 2.357, 2.348, 2.341, 2.334,
+ 2.283, 2.297, 2.312, 2.321, 2.331, 2.341, 2.351, 2.362, 2.373, 2.38, 2.386, 2.39, 2.393, 2.395, 2.395, 2.395, 2.395, 2.395, 2.395, 2.396, 2.396, 2.396, 2.395, 2.393, 2.389, 2.383, 2.375, 2.367, 2.359, 2.351, 2.343, 2.335,
+ 2.283, 2.298, 2.313, 2.322, 2.332, 2.341, 2.351, 2.361, 2.372, 2.38, 2.387, 2.391, 2.393, 2.394, 2.395, 2.395, 2.395, 2.395, 2.395, 2.395, 2.396, 2.396, 2.395, 2.393, 2.389, 2.384, 2.376, 2.367, 2.36, 2.353, 2.345, 2.336,
+ 2.285, 2.298, 2.311, 2.321, 2.331, 2.341, 2.351, 2.361, 2.371, 2.379, 2.386, 2.39, 2.393, 2.394, 2.395, 2.395, 2.395, 2.395, 2.395, 2.396, 2.396, 2.396, 2.395, 2.393, 2.389, 2.384, 2.376, 2.368, 2.361, 2.353, 2.345, 2.337,
+ 2.286, 2.298, 2.31, 2.32, 2.33, 2.34, 2.35, 2.36, 2.371, 2.378, 2.385, 2.389, 2.393, 2.394, 2.395, 2.395, 2.395, 2.395, 2.396, 2.396, 2.396, 2.396, 2.395, 2.393, 2.388, 2.383, 2.376, 2.369, 2.361, 2.353, 2.346, 2.338,
+ 2.287, 2.298, 2.308, 2.319, 2.329, 2.339, 2.349, 2.36, 2.37, 2.377, 2.384, 2.388, 2.392, 2.394, 2.395, 2.395, 2.395, 2.395, 2.396, 2.396, 2.396, 2.396, 2.395, 2.393, 2.388, 2.383, 2.376, 2.37, 2.361, 2.353, 2.346, 2.339,
+ 2.288, 2.298, 2.307, 2.317, 2.327, 2.338, 2.348, 2.358, 2.368, 2.376, 2.383, 2.388, 2.392, 2.394, 2.395, 2.396, 2.396, 2.396, 2.397, 2.397, 2.397, 2.396, 2.394, 2.392, 2.387, 2.382, 2.375, 2.368, 2.36, 2.353, 2.345, 2.338,
+ 2.289, 2.298, 2.307, 2.316, 2.326, 2.336, 2.346, 2.356, 2.367, 2.375, 2.383, 2.388, 2.391, 2.394, 2.396, 2.397, 2.397, 2.397, 2.398, 2.397, 2.397, 2.396, 2.394, 2.391, 2.387, 2.382, 2.374, 2.367, 2.359, 2.352, 2.345, 2.337,
+ 2.289, 2.297, 2.306, 2.315, 2.324, 2.334, 2.344, 2.355, 2.365, 2.374, 2.381, 2.386, 2.39, 2.393, 2.395, 2.397, 2.397, 2.398, 2.398, 2.398, 2.397, 2.396, 2.393, 2.39, 2.386, 2.381, 2.373, 2.366, 2.358, 2.351, 2.343, 2.336,
+ 2.287, 2.296, 2.304, 2.314, 2.323, 2.333, 2.342, 2.352, 2.362, 2.371, 2.379, 2.385, 2.389, 2.392, 2.394, 2.396, 2.397, 2.398, 2.398, 2.398, 2.397, 2.396, 2.393, 2.389, 2.385, 2.38, 2.373, 2.365, 2.357, 2.348, 2.341, 2.334,
+ 2.286, 2.295, 2.303, 2.312, 2.321, 2.331, 2.341, 2.35, 2.36, 2.368, 2.377, 2.383, 2.388, 2.391, 2.393, 2.395, 2.396, 2.397, 2.398, 2.398, 2.397, 2.395, 2.392, 2.388, 2.384, 2.38, 2.372, 2.365, 2.356, 2.346, 2.339, 2.333,
+ 2.286, 2.293, 2.3, 2.309, 2.318, 2.328, 2.337, 2.347, 2.356, 2.365, 2.374, 2.381, 2.385, 2.389, 2.392, 2.394, 2.395, 2.396, 2.397, 2.397, 2.395, 2.393, 2.39, 2.387, 2.383, 2.378, 2.371, 2.364, 2.354, 2.344, 2.337, 2.33,
+ 2.285, 2.29, 2.296, 2.305, 2.315, 2.324, 2.333, 2.342, 2.353, 2.362, 2.372, 2.378, 2.383, 2.386, 2.39, 2.392, 2.394, 2.395, 2.395, 2.395, 2.393, 2.391, 2.389, 2.385, 2.381, 2.376, 2.369, 2.362, 2.351, 2.341, 2.334, 2.328,
+ 2.284, 2.288, 2.292, 2.301, 2.311, 2.32, 2.328, 2.338, 2.349, 2.359, 2.369, 2.375, 2.38, 2.384, 2.388, 2.39, 2.392, 2.393, 2.394, 2.393, 2.391, 2.389, 2.387, 2.384, 2.379, 2.373, 2.367, 2.361, 2.349, 2.338, 2.332, 2.325,
+ 2.284, 2.287, 2.29, 2.299, 2.309, 2.317, 2.325, 2.334, 2.345, 2.355, 2.366, 2.373, 2.377, 2.381, 2.385, 2.388, 2.389, 2.391, 2.391, 2.391, 2.389, 2.387, 2.385, 2.382, 2.377, 2.371, 2.363, 2.355, 2.344, 2.334, 2.328, 2.323,
+ 2.283, 2.286, 2.289, 2.297, 2.306, 2.314, 2.321, 2.331, 2.341, 2.352, 2.364, 2.37, 2.375, 2.379, 2.382, 2.385, 2.386, 2.388, 2.388, 2.388, 2.387, 2.386, 2.383, 2.38, 2.374, 2.368, 2.358, 2.348, 2.338, 2.329, 2.325, 2.32,
+ 2.283, 2.285, 2.288, 2.296, 2.304, 2.311, 2.318, 2.327, 2.336, 2.348, 2.361, 2.368, 2.372, 2.376, 2.379, 2.382, 2.383, 2.384, 2.385, 2.386, 2.385, 2.384, 2.381, 2.378, 2.372, 2.365, 2.353, 2.341, 2.333, 2.325, 2.321, 2.318
+ ]
+ },
+ {
+ "ct": 5000,
+ "table":
+ [
+ 1.897, 1.908, 1.918, 1.929, 1.94, 1.953, 1.966, 1.977, 1.986, 1.994, 2.001, 2.007, 2.012, 2.015, 2.018, 2.019, 2.019, 2.019, 2.018, 2.016, 2.015, 2.013, 2.01, 2.007, 2.002, 1.998, 1.993, 1.987, 1.977, 1.967, 1.956, 1.944,
+ 1.903, 1.913, 1.923, 1.934, 1.945, 1.958, 1.971, 1.981, 1.99, 1.997, 2.005, 2.01, 2.015, 2.019, 2.021, 2.023, 2.023, 2.023, 2.022, 2.02, 2.018, 2.016, 2.013, 2.009, 2.005, 2.0, 1.995, 1.989, 1.98, 1.97, 1.959, 1.948,
+ 1.909, 1.918, 1.928, 1.939, 1.951, 1.963, 1.976, 1.985, 1.993, 2.001, 2.008, 2.014, 2.019, 2.022, 2.025, 2.026, 2.027, 2.027, 2.026, 2.024, 2.022, 2.018, 2.015, 2.011, 2.007, 2.003, 1.998, 1.992, 1.982, 1.973, 1.962, 1.952,
+ 1.915, 1.924, 1.933, 1.944, 1.956, 1.968, 1.981, 1.989, 1.997, 2.005, 2.012, 2.018, 2.022, 2.025, 2.028, 2.03, 2.031, 2.031, 2.03, 2.028, 2.025, 2.022, 2.018, 2.014, 2.01, 2.006, 2.0, 1.994, 1.985, 1.976, 1.966, 1.956,
+ 1.919, 1.929, 1.939, 1.951, 1.963, 1.974, 1.986, 1.994, 2.002, 2.01, 2.017, 2.022, 2.026, 2.03, 2.032, 2.033, 2.034, 2.034, 2.033, 2.032, 2.029, 2.026, 2.022, 2.018, 2.013, 2.009, 2.003, 1.997, 1.988, 1.979, 1.969, 1.958,
+ 1.923, 1.934, 1.946, 1.957, 1.969, 1.98, 1.991, 1.999, 2.007, 2.015, 2.022, 2.027, 2.031, 2.034, 2.036, 2.037, 2.037, 2.037, 2.036, 2.035, 2.033, 2.031, 2.026, 2.022, 2.017, 2.012, 2.006, 1.999, 1.99, 1.982, 1.971, 1.961,
+ 1.926, 1.938, 1.951, 1.963, 1.974, 1.985, 1.995, 2.004, 2.012, 2.019, 2.026, 2.03, 2.034, 2.037, 2.038, 2.039, 2.04, 2.04, 2.039, 2.038, 2.037, 2.034, 2.03, 2.026, 2.02, 2.015, 2.008, 2.002, 1.993, 1.985, 1.974, 1.964,
+ 1.928, 1.941, 1.954, 1.966, 1.978, 1.989, 1.999, 2.008, 2.016, 2.023, 2.028, 2.033, 2.036, 2.039, 2.04, 2.04, 2.041, 2.042, 2.042, 2.041, 2.039, 2.037, 2.033, 2.028, 2.023, 2.018, 2.011, 2.004, 1.997, 1.989, 1.978, 1.967,
+ 1.931, 1.943, 1.956, 1.969, 1.982, 1.993, 2.003, 2.012, 2.02, 2.026, 2.031, 2.035, 2.039, 2.04, 2.041, 2.042, 2.043, 2.044, 2.044, 2.043, 2.042, 2.039, 2.035, 2.031, 2.026, 2.02, 2.014, 2.007, 2.0, 1.992, 1.981, 1.97,
+ 1.934, 1.946, 1.958, 1.972, 1.986, 1.996, 2.006, 2.015, 2.023, 2.028, 2.033, 2.037, 2.04, 2.042, 2.042, 2.043, 2.045, 2.045, 2.045, 2.045, 2.043, 2.041, 2.037, 2.033, 2.028, 2.023, 2.016, 2.009, 2.002, 1.995, 1.983, 1.972,
+ 1.937, 1.949, 1.961, 1.974, 1.989, 1.999, 2.008, 2.016, 2.025, 2.03, 2.035, 2.038, 2.041, 2.043, 2.043, 2.044, 2.045, 2.046, 2.046, 2.045, 2.044, 2.042, 2.039, 2.035, 2.03, 2.025, 2.018, 2.011, 2.003, 1.995, 1.985, 1.974,
+ 1.941, 1.952, 1.963, 1.977, 1.991, 2.001, 2.01, 2.018, 2.026, 2.032, 2.036, 2.039, 2.042, 2.044, 2.045, 2.046, 2.046, 2.047, 2.046, 2.046, 2.045, 2.044, 2.041, 2.037, 2.032, 2.027, 2.02, 2.012, 2.004, 1.996, 1.986, 1.976,
+ 1.943, 1.954, 1.966, 1.98, 1.993, 2.003, 2.011, 2.019, 2.027, 2.033, 2.037, 2.04, 2.043, 2.044, 2.046, 2.047, 2.047, 2.047, 2.047, 2.046, 2.045, 2.044, 2.041, 2.038, 2.033, 2.028, 2.021, 2.014, 2.006, 1.997, 1.987, 1.977,
+ 1.944, 1.957, 1.969, 1.982, 1.995, 2.004, 2.012, 2.02, 2.028, 2.034, 2.038, 2.041, 2.044, 2.045, 2.046, 2.047, 2.047, 2.047, 2.047, 2.046, 2.045, 2.044, 2.042, 2.039, 2.034, 2.029, 2.023, 2.016, 2.007, 1.998, 1.988, 1.978,
+ 1.946, 1.959, 1.973, 1.985, 1.997, 2.006, 2.013, 2.021, 2.029, 2.034, 2.039, 2.043, 2.045, 2.046, 2.047, 2.047, 2.048, 2.048, 2.047, 2.046, 2.045, 2.044, 2.042, 2.04, 2.035, 2.03, 2.024, 2.018, 2.008, 1.998, 1.988, 1.978,
+ 1.947, 1.96, 1.973, 1.986, 1.998, 2.007, 2.014, 2.022, 2.029, 2.035, 2.039, 2.043, 2.045, 2.046, 2.047, 2.047, 2.048, 2.048, 2.048, 2.047, 2.045, 2.044, 2.042, 2.04, 2.034, 2.029, 2.024, 2.018, 2.008, 1.998, 1.988, 1.978,
+ 1.947, 1.961, 1.974, 1.987, 1.999, 2.008, 2.015, 2.022, 2.029, 2.035, 2.039, 2.043, 2.045, 2.046, 2.047, 2.047, 2.048, 2.048, 2.048, 2.047, 2.046, 2.044, 2.042, 2.04, 2.034, 2.029, 2.023, 2.018, 2.008, 1.998, 1.988, 1.978,
+ 1.948, 1.961, 1.974, 1.987, 2.0, 2.009, 2.016, 2.023, 2.029, 2.035, 2.039, 2.043, 2.045, 2.046, 2.047, 2.047, 2.048, 2.048, 2.048, 2.047, 2.046, 2.044, 2.042, 2.039, 2.034, 2.028, 2.023, 2.017, 2.007, 1.997, 1.988, 1.978,
+ 1.948, 1.961, 1.973, 1.987, 2.0, 2.009, 2.016, 2.023, 2.029, 2.034, 2.04, 2.043, 2.045, 2.046, 2.047, 2.048, 2.048, 2.048, 2.048, 2.047, 2.046, 2.044, 2.041, 2.038, 2.033, 2.027, 2.022, 2.016, 2.006, 1.995, 1.987, 1.978,
+ 1.948, 1.96, 1.973, 1.986, 2.0, 2.009, 2.016, 2.022, 2.028, 2.034, 2.04, 2.043, 2.045, 2.046, 2.047, 2.048, 2.048, 2.048, 2.048, 2.047, 2.045, 2.043, 2.04, 2.037, 2.032, 2.026, 2.02, 2.014, 2.004, 1.994, 1.986, 1.978,
+ 1.948, 1.96, 1.972, 1.986, 2.0, 2.008, 2.016, 2.022, 2.027, 2.033, 2.039, 2.043, 2.044, 2.046, 2.047, 2.048, 2.048, 2.048, 2.048, 2.047, 2.045, 2.042, 2.039, 2.035, 2.03, 2.025, 2.019, 2.012, 2.002, 1.992, 1.985, 1.977,
+ 1.947, 1.959, 1.97, 1.984, 1.998, 2.007, 2.015, 2.021, 2.027, 2.033, 2.038, 2.041, 2.044, 2.046, 2.047, 2.047, 2.047, 2.047, 2.047, 2.045, 2.043, 2.041, 2.038, 2.034, 2.029, 2.023, 2.017, 2.01, 2.0, 1.991, 1.983, 1.975,
+ 1.946, 1.957, 1.969, 1.983, 1.997, 2.006, 2.014, 2.02, 2.027, 2.032, 2.036, 2.04, 2.044, 2.045, 2.046, 2.047, 2.047, 2.047, 2.045, 2.044, 2.042, 2.039, 2.036, 2.032, 2.027, 2.022, 2.015, 2.008, 1.999, 1.989, 1.981, 1.972,
+ 1.944, 1.956, 1.967, 1.981, 1.995, 2.004, 2.013, 2.019, 2.026, 2.03, 2.035, 2.039, 2.042, 2.044, 2.045, 2.046, 2.046, 2.046, 2.044, 2.042, 2.04, 2.037, 2.034, 2.03, 2.025, 2.019, 2.012, 2.005, 1.996, 1.987, 1.978, 1.97,
+ 1.942, 1.954, 1.966, 1.979, 1.993, 2.002, 2.011, 2.018, 2.024, 2.029, 2.033, 2.036, 2.039, 2.041, 2.043, 2.044, 2.044, 2.044, 2.042, 2.041, 2.038, 2.036, 2.031, 2.027, 2.021, 2.015, 2.009, 2.002, 1.992, 1.982, 1.975, 1.967,
+ 1.94, 1.952, 1.964, 1.977, 1.99, 2.0, 2.01, 2.017, 2.023, 2.027, 2.031, 2.034, 2.036, 2.039, 2.041, 2.043, 2.043, 2.042, 2.041, 2.039, 2.037, 2.034, 2.029, 2.024, 2.018, 2.012, 2.005, 1.998, 1.988, 1.978, 1.972, 1.965,
+ 1.937, 1.949, 1.961, 1.974, 1.987, 1.998, 2.008, 2.015, 2.021, 2.025, 2.029, 2.031, 2.033, 2.036, 2.038, 2.04, 2.04, 2.04, 2.038, 2.036, 2.034, 2.031, 2.026, 2.02, 2.015, 2.009, 2.002, 1.995, 1.984, 1.974, 1.968, 1.962,
+ 1.935, 1.946, 1.957, 1.97, 1.983, 1.995, 2.006, 2.012, 2.018, 2.022, 2.026, 2.029, 2.031, 2.033, 2.035, 2.036, 2.037, 2.037, 2.035, 2.033, 2.03, 2.027, 2.022, 2.017, 2.012, 2.006, 1.999, 1.991, 1.981, 1.97, 1.965, 1.959,
+ 1.932, 1.943, 1.953, 1.966, 1.98, 1.992, 2.004, 2.01, 2.015, 2.019, 2.023, 2.026, 2.028, 2.029, 2.031, 2.032, 2.034, 2.034, 2.032, 2.03, 2.027, 2.023, 2.019, 2.014, 2.009, 2.004, 1.996, 1.988, 1.977, 1.966, 1.961, 1.956,
+ 1.931, 1.94, 1.95, 1.963, 1.977, 1.989, 2.002, 2.008, 2.012, 2.016, 2.02, 2.023, 2.025, 2.027, 2.028, 2.03, 2.031, 2.031, 2.03, 2.028, 2.024, 2.021, 2.016, 2.012, 2.007, 2.001, 1.992, 1.984, 1.973, 1.963, 1.958, 1.953,
+ 1.929, 1.938, 1.947, 1.96, 1.974, 1.987, 1.999, 2.005, 2.009, 2.013, 2.017, 2.02, 2.022, 2.024, 2.026, 2.028, 2.028, 2.028, 2.028, 2.026, 2.022, 2.018, 2.014, 2.009, 2.004, 1.998, 1.988, 1.979, 1.969, 1.96, 1.955, 1.95,
+ 1.928, 1.936, 1.943, 1.957, 1.971, 1.984, 1.996, 2.002, 2.006, 2.01, 2.015, 2.017, 2.018, 2.021, 2.024, 2.025, 2.026, 2.026, 2.025, 2.023, 2.02, 2.016, 2.011, 2.007, 2.001, 1.995, 1.984, 1.974, 1.966, 1.958, 1.952, 1.947
+ ]
+ }
+ ],
+ "luminance_lut":
+ [
+ 1.877, 1.742, 1.606, 1.507, 1.41, 1.343, 1.281, 1.239, 1.201, 1.17, 1.141, 1.119, 1.1, 1.089, 1.081, 1.076, 1.073, 1.071, 1.07, 1.072, 1.081, 1.094, 1.118, 1.146, 1.188, 1.232, 1.285, 1.34, 1.409, 1.481, 1.593, 1.704,
+ 1.832, 1.702, 1.573, 1.479, 1.387, 1.324, 1.266, 1.224, 1.186, 1.155, 1.125, 1.104, 1.087, 1.077, 1.072, 1.068, 1.065, 1.063, 1.062, 1.063, 1.07, 1.082, 1.103, 1.13, 1.169, 1.211, 1.261, 1.314, 1.381, 1.45, 1.556, 1.662,
+ 1.786, 1.663, 1.541, 1.451, 1.364, 1.305, 1.251, 1.21, 1.171, 1.14, 1.11, 1.09, 1.074, 1.066, 1.062, 1.059, 1.058, 1.056, 1.054, 1.055, 1.059, 1.069, 1.089, 1.114, 1.15, 1.19, 1.238, 1.288, 1.352, 1.419, 1.52, 1.621,
+ 1.743, 1.627, 1.51, 1.425, 1.343, 1.288, 1.237, 1.196, 1.157, 1.125, 1.096, 1.077, 1.063, 1.056, 1.054, 1.052, 1.051, 1.05, 1.048, 1.047, 1.051, 1.059, 1.076, 1.099, 1.133, 1.17, 1.216, 1.264, 1.326, 1.39, 1.486, 1.582,
+ 1.712, 1.601, 1.49, 1.408, 1.328, 1.274, 1.225, 1.183, 1.144, 1.114, 1.086, 1.069, 1.059, 1.053, 1.052, 1.05, 1.05, 1.049, 1.048, 1.048, 1.05, 1.056, 1.07, 1.089, 1.121, 1.156, 1.2, 1.247, 1.308, 1.371, 1.463, 1.555,
+ 1.681, 1.576, 1.47, 1.391, 1.314, 1.261, 1.212, 1.171, 1.132, 1.102, 1.076, 1.062, 1.054, 1.05, 1.05, 1.049, 1.048, 1.048, 1.048, 1.049, 1.049, 1.053, 1.064, 1.08, 1.109, 1.141, 1.185, 1.23, 1.289, 1.351, 1.44, 1.528,
+ 1.655, 1.554, 1.453, 1.376, 1.301, 1.249, 1.201, 1.16, 1.12, 1.092, 1.068, 1.056, 1.051, 1.048, 1.048, 1.048, 1.047, 1.047, 1.048, 1.049, 1.049, 1.052, 1.059, 1.072, 1.099, 1.129, 1.171, 1.215, 1.274, 1.335, 1.42, 1.506,
+ 1.639, 1.539, 1.438, 1.364, 1.291, 1.239, 1.19, 1.149, 1.11, 1.085, 1.064, 1.054, 1.05, 1.048, 1.048, 1.047, 1.047, 1.047, 1.048, 1.049, 1.05, 1.052, 1.057, 1.068, 1.092, 1.12, 1.161, 1.204, 1.263, 1.324, 1.408, 1.492,
+ 1.622, 1.523, 1.424, 1.352, 1.281, 1.229, 1.18, 1.139, 1.101, 1.077, 1.059, 1.051, 1.049, 1.047, 1.047, 1.047, 1.047, 1.047, 1.048, 1.049, 1.051, 1.052, 1.055, 1.063, 1.085, 1.111, 1.151, 1.194, 1.253, 1.313, 1.395, 1.477,
+ 1.607, 1.51, 1.412, 1.342, 1.273, 1.221, 1.171, 1.131, 1.093, 1.071, 1.056, 1.05, 1.047, 1.046, 1.046, 1.046, 1.047, 1.047, 1.048, 1.05, 1.051, 1.053, 1.054, 1.061, 1.08, 1.104, 1.143, 1.185, 1.244, 1.305, 1.385, 1.466,
+ 1.594, 1.498, 1.403, 1.334, 1.268, 1.215, 1.164, 1.124, 1.086, 1.067, 1.055, 1.049, 1.046, 1.045, 1.045, 1.045, 1.046, 1.047, 1.048, 1.05, 1.051, 1.053, 1.054, 1.059, 1.077, 1.098, 1.137, 1.179, 1.237, 1.297, 1.378, 1.458,
+ 1.58, 1.487, 1.394, 1.327, 1.262, 1.208, 1.156, 1.117, 1.08, 1.062, 1.053, 1.048, 1.045, 1.044, 1.044, 1.045, 1.045, 1.046, 1.048, 1.05, 1.052, 1.053, 1.054, 1.058, 1.073, 1.092, 1.131, 1.172, 1.231, 1.29, 1.37, 1.449,
+ 1.572, 1.48, 1.388, 1.322, 1.259, 1.205, 1.152, 1.113, 1.077, 1.061, 1.052, 1.047, 1.045, 1.044, 1.044, 1.044, 1.045, 1.046, 1.047, 1.049, 1.051, 1.052, 1.053, 1.057, 1.07, 1.088, 1.127, 1.168, 1.226, 1.285, 1.364, 1.443,
+ 1.567, 1.475, 1.384, 1.319, 1.256, 1.202, 1.149, 1.11, 1.075, 1.06, 1.052, 1.047, 1.045, 1.044, 1.044, 1.044, 1.044, 1.045, 1.046, 1.048, 1.049, 1.051, 1.053, 1.057, 1.068, 1.085, 1.123, 1.165, 1.222, 1.281, 1.359, 1.438,
+ 1.561, 1.47, 1.379, 1.316, 1.253, 1.199, 1.146, 1.108, 1.073, 1.059, 1.051, 1.047, 1.045, 1.044, 1.044, 1.044, 1.044, 1.044, 1.045, 1.046, 1.047, 1.049, 1.052, 1.056, 1.066, 1.081, 1.12, 1.161, 1.218, 1.277, 1.355, 1.432,
+ 1.564, 1.472, 1.38, 1.315, 1.252, 1.199, 1.146, 1.108, 1.074, 1.06, 1.053, 1.05, 1.047, 1.046, 1.046, 1.046, 1.046, 1.046, 1.047, 1.047, 1.047, 1.048, 1.051, 1.055, 1.064, 1.079, 1.118, 1.159, 1.217, 1.276, 1.353, 1.43,
+ 1.568, 1.475, 1.382, 1.316, 1.252, 1.198, 1.147, 1.109, 1.075, 1.061, 1.055, 1.052, 1.05, 1.049, 1.049, 1.049, 1.049, 1.049, 1.048, 1.048, 1.048, 1.048, 1.049, 1.052, 1.062, 1.077, 1.116, 1.157, 1.216, 1.276, 1.352, 1.429,
+ 1.571, 1.478, 1.384, 1.317, 1.251, 1.199, 1.148, 1.11, 1.076, 1.063, 1.057, 1.054, 1.053, 1.052, 1.051, 1.051, 1.051, 1.05, 1.049, 1.048, 1.047, 1.047, 1.047, 1.05, 1.06, 1.076, 1.115, 1.156, 1.216, 1.276, 1.352, 1.428,
+ 1.575, 1.483, 1.391, 1.323, 1.257, 1.205, 1.154, 1.117, 1.083, 1.069, 1.062, 1.058, 1.056, 1.054, 1.053, 1.052, 1.051, 1.05, 1.048, 1.047, 1.046, 1.045, 1.046, 1.049, 1.061, 1.078, 1.117, 1.16, 1.22, 1.281, 1.357, 1.434,
+ 1.579, 1.488, 1.397, 1.329, 1.263, 1.211, 1.161, 1.124, 1.089, 1.075, 1.067, 1.062, 1.059, 1.056, 1.054, 1.052, 1.05, 1.049, 1.047, 1.045, 1.044, 1.043, 1.044, 1.048, 1.062, 1.08, 1.12, 1.163, 1.224, 1.286, 1.363, 1.44,
+ 1.586, 1.496, 1.405, 1.337, 1.27, 1.218, 1.168, 1.131, 1.096, 1.08, 1.072, 1.066, 1.062, 1.058, 1.056, 1.054, 1.051, 1.049, 1.047, 1.045, 1.043, 1.042, 1.043, 1.048, 1.063, 1.084, 1.124, 1.168, 1.229, 1.292, 1.369, 1.447,
+ 1.601, 1.509, 1.417, 1.347, 1.279, 1.226, 1.176, 1.138, 1.103, 1.086, 1.074, 1.068, 1.065, 1.062, 1.059, 1.057, 1.054, 1.051, 1.048, 1.046, 1.044, 1.044, 1.045, 1.051, 1.069, 1.091, 1.133, 1.177, 1.238, 1.301, 1.379, 1.457,
+ 1.615, 1.522, 1.428, 1.357, 1.288, 1.234, 1.184, 1.146, 1.11, 1.091, 1.077, 1.071, 1.068, 1.065, 1.063, 1.06, 1.056, 1.053, 1.05, 1.047, 1.046, 1.046, 1.048, 1.055, 1.074, 1.099, 1.141, 1.185, 1.248, 1.311, 1.389, 1.467,
+ 1.634, 1.538, 1.441, 1.369, 1.299, 1.245, 1.194, 1.155, 1.119, 1.098, 1.082, 1.074, 1.071, 1.068, 1.065, 1.062, 1.059, 1.055, 1.052, 1.049, 1.048, 1.048, 1.052, 1.06, 1.082, 1.108, 1.151, 1.197, 1.259, 1.323, 1.402, 1.481,
+ 1.658, 1.557, 1.457, 1.384, 1.312, 1.258, 1.206, 1.167, 1.13, 1.107, 1.088, 1.078, 1.073, 1.07, 1.067, 1.064, 1.061, 1.058, 1.055, 1.053, 1.051, 1.052, 1.057, 1.068, 1.092, 1.121, 1.165, 1.211, 1.273, 1.337, 1.417, 1.498,
+ 1.682, 1.577, 1.472, 1.398, 1.326, 1.271, 1.219, 1.179, 1.141, 1.115, 1.093, 1.082, 1.075, 1.071, 1.069, 1.067, 1.064, 1.061, 1.059, 1.057, 1.054, 1.055, 1.063, 1.076, 1.103, 1.133, 1.178, 1.225, 1.288, 1.351, 1.433, 1.515,
+ 1.717, 1.606, 1.495, 1.417, 1.342, 1.286, 1.233, 1.192, 1.154, 1.126, 1.103, 1.089, 1.079, 1.074, 1.071, 1.068, 1.065, 1.063, 1.061, 1.06, 1.058, 1.061, 1.071, 1.087, 1.116, 1.149, 1.194, 1.242, 1.304, 1.367, 1.451, 1.535,
+ 1.759, 1.64, 1.521, 1.439, 1.361, 1.302, 1.247, 1.206, 1.168, 1.139, 1.114, 1.097, 1.085, 1.077, 1.073, 1.069, 1.067, 1.065, 1.063, 1.062, 1.063, 1.068, 1.081, 1.1, 1.131, 1.166, 1.212, 1.26, 1.321, 1.384, 1.47, 1.556,
+ 1.8, 1.674, 1.547, 1.461, 1.379, 1.319, 1.262, 1.22, 1.182, 1.152, 1.125, 1.106, 1.09, 1.081, 1.075, 1.07, 1.068, 1.066, 1.065, 1.065, 1.068, 1.075, 1.092, 1.113, 1.146, 1.182, 1.23, 1.279, 1.339, 1.401, 1.489, 1.578,
+ 1.855, 1.721, 1.588, 1.495, 1.405, 1.342, 1.283, 1.239, 1.199, 1.168, 1.141, 1.12, 1.103, 1.091, 1.082, 1.077, 1.075, 1.073, 1.074, 1.076, 1.081, 1.091, 1.109, 1.132, 1.167, 1.204, 1.251, 1.3, 1.362, 1.425, 1.518, 1.611,
+ 1.912, 1.772, 1.632, 1.531, 1.433, 1.367, 1.306, 1.26, 1.217, 1.186, 1.158, 1.136, 1.117, 1.103, 1.091, 1.085, 1.082, 1.082, 1.084, 1.088, 1.096, 1.108, 1.128, 1.152, 1.188, 1.226, 1.273, 1.322, 1.386, 1.452, 1.549, 1.646,
+ 1.969, 1.822, 1.676, 1.567, 1.461, 1.392, 1.329, 1.28, 1.235, 1.203, 1.175, 1.152, 1.131, 1.115, 1.101, 1.093, 1.09, 1.091, 1.095, 1.101, 1.111, 1.125, 1.147, 1.173, 1.21, 1.248, 1.295, 1.345, 1.41, 1.478, 1.579, 1.681
+ ],
+ "sigma": 0.00218,
+ "sigma_Cb": 0.00194
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 1,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 2900,
+ "ccm":
+ [
+ 1.44924, -0.12935, -0.31989,
+ -0.65839, 1.95441, -0.29602,
+ 0.18344, -1.22282, 2.03938
+ ]
+ },
+ {
+ "ct": 3000,
+ "ccm":
+ [
+ 1.38736, 0.07714, -0.46451,
+ -0.59691, 1.84335, -0.24644,
+ 0.10092, -1.30441, 2.20349
+ ]
+ },
+ {
+ "ct": 3600,
+ "ccm":
+ [
+ 1.51261, -0.27921, -0.23339,
+ -0.55129, 1.83241, -0.28111,
+ 0.11649, -0.93195, 1.81546
+ ]
+ },
+ {
+ "ct": 4600,
+ "ccm":
+ [
+ 1.47082, -0.18523, -0.28559,
+ -0.48923, 1.95126, -0.46203,
+ 0.07951, -0.83987, 1.76036
+ ]
+ },
+ {
+ "ct": 5800,
+ "ccm":
+ [
+ 1.57294, -0.36229, -0.21065,
+ -0.42272, 1.80305, -0.38032,
+ 0.03671, -0.66862, 1.63191
+ ]
+ },
+ {
+ "ct": 8100,
+ "ccm":
+ [
+ 1.58803, -0.09912, -0.48891,
+ -0.42594, 2.22303, -0.79709,
+ -0.00621, -0.90516, 1.91137
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.sharpen":
+ {
+ "threshold": 2.0,
+ "strength": 0.5,
+ "limit": 0.5
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/data/uncalibrated.json b/src/ipa/rpi/pisp/data/uncalibrated.json
new file mode 100644
index 00000000..ff1e316e
--- /dev/null
+++ b/src/ipa/rpi/pisp/data/uncalibrated.json
@@ -0,0 +1,135 @@
+{
+ "version": 2.0,
+ "target": "pisp",
+ "algorithms": [
+ {
+ "rpi.black_level":
+ {
+ "black_level": 4096
+ }
+ },
+ {
+ "rpi.awb":
+ {
+ "use_derivatives": 0,
+ "bayes": 0
+ }
+ },
+ {
+ "rpi.agc":
+ {
+ "metering_modes":
+ {
+ "centre-weighted":
+ {
+ "weights":
+ [
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+ ]
+ }
+ },
+ "exposure_modes":
+ {
+ "normal":
+ {
+ "shutter": [ 100, 15000, 30000, 60000, 120000 ],
+ "gain": [ 1.0, 2.0, 3.0, 4.0, 6.0 ]
+ }
+ },
+ "constraint_modes":
+ {
+ "normal": [
+ {
+ "bound": "LOWER",
+ "q_lo": 0.98,
+ "q_hi": 1.0,
+ "y_target":
+ [
+ 0, 0.4,
+ 1000, 0.4
+ ]
+ }
+ ]
+ },
+ "y_target":
+ [
+ 0, 0.16,
+ 1000, 0.165,
+ 10000, 0.17
+ ]
+ }
+ },
+ {
+ "rpi.ccm":
+ {
+ "ccms": [
+ {
+ "ct": 4000,
+ "ccm":
+ [
+ 2.0, -1.0, 0.0,
+ -0.5, 2.0, -0.5,
+ 0, -1.0, 2.0
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "rpi.contrast":
+ {
+ "ce_enable": 0,
+ "gamma_curve":
+ [
+ 0, 0,
+ 1024, 5040,
+ 2048, 9338,
+ 3072, 12356,
+ 4096, 15312,
+ 5120, 18051,
+ 6144, 20790,
+ 7168, 23193,
+ 8192, 25744,
+ 9216, 27942,
+ 10240, 30035,
+ 11264, 32005,
+ 12288, 33975,
+ 13312, 35815,
+ 14336, 37600,
+ 15360, 39168,
+ 16384, 40642,
+ 18432, 43379,
+ 20480, 45749,
+ 22528, 47753,
+ 24576, 49621,
+ 26624, 51253,
+ 28672, 52698,
+ 30720, 53796,
+ 32768, 54876,
+ 36864, 57012,
+ 40960, 58656,
+ 45056, 59954,
+ 49152, 61183,
+ 53248, 62355,
+ 57344, 63419,
+ 61440, 64476,
+ 65535, 65535
+ ]
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/src/ipa/rpi/pisp/meson.build b/src/ipa/rpi/pisp/meson.build
new file mode 100644
index 00000000..878e3492
--- /dev/null
+++ b/src/ipa/rpi/pisp/meson.build
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: CC0-1.0
+
+ipa_name = 'ipa_rpi_pisp'
+
+pisp_ipa_deps = [
+ libcamera_private,
+ libatomic,
+ libpisp_dep,
+]
+
+pisp_ipa_libs = [
+ rpi_ipa_cam_helper_lib,
+ rpi_ipa_common_lib,
+ rpi_ipa_controller_lib
+]
+
+pisp_ipa_includes = [
+ ipa_includes,
+ libipa_includes,
+]
+
+pisp_ipa_sources = files([
+ 'pisp.cpp',
+])
+
+pisp_ipa_includes += include_directories('..')
+
+mod = shared_module(ipa_name, pisp_ipa_sources,
+ name_prefix : '',
+ include_directories : pisp_ipa_includes,
+ dependencies : pisp_ipa_deps,
+ link_with : libipa,
+ link_whole : pisp_ipa_libs,
+ install : true,
+ cpp_args : '-Wno-address-of-packed-member',
+ install_dir : ipa_install_dir)
+
+if ipa_sign_module
+ custom_target(ipa_name + '.so.sign',
+ input : mod,
+ output : ipa_name + '.so.sign',
+ command : [ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@'],
+ install : false,
+ build_by_default : true)
+endif
+
+subdir('data')
+
+ipa_names += ipa_name
diff --git a/src/ipa/rpi/pisp/pisp.cpp b/src/ipa/rpi/pisp/pisp.cpp
new file mode 100644
index 00000000..bb50a9e0
--- /dev/null
+++ b/src/ipa/rpi/pisp/pisp.cpp
@@ -0,0 +1,1068 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+/*
+ * Copyright (C) 2023, Raspberry Pi Ltd
+ *
+ * pisp.cpp - Raspberry Pi PiSP IPA
+ */
+#include <algorithm>
+#include <cmath>
+#include <mutex>
+#include <string>
+#include <sys/mman.h>
+#include <utility>
+#include <vector>
+
+#include <libcamera/base/log.h>
+#include <libcamera/control_ids.h>
+#include <libcamera/ipa/ipa_module_info.h>
+#include <libipa/pwl.h>
+
+#include "libpisp/backend/backend.hpp"
+#include "libpisp/frontend/frontend.hpp"
+
+#include "common/ipa_base.h"
+#include "controller/af_status.h"
+#include "controller/agc_algorithm.h"
+#include "controller/alsc_status.h"
+#include "controller/awb_algorithm.h"
+#include "controller/awb_status.h"
+#include "controller/black_level_algorithm.h"
+#include "controller/black_level_status.h"
+#include "controller/cac_status.h"
+#include "controller/ccm_status.h"
+#include "controller/contrast_status.h"
+#include "controller/denoise_algorithm.h"
+#include "controller/denoise_status.h"
+#include "controller/dpc_status.h"
+#include "controller/geq_status.h"
+#include "controller/hdr_status.h"
+#include "controller/lux_status.h"
+#include "controller/noise_status.h"
+#include "controller/saturation_status.h"
+#include "controller/sharpen_status.h"
+#include "controller/stitch_status.h"
+#include "controller/tonemap_status.h"
+
+using namespace std::literals::chrono_literals;
+
+namespace libcamera {
+
+LOG_DECLARE_CATEGORY(IPARPI)
+
+namespace {
+
+constexpr unsigned int NumLscCells = PISP_BE_LSC_GRID_SIZE;
+constexpr unsigned int NumLscVertexes = NumLscCells + 1;
+
+inline int32_t clampField(double value, std::size_t fieldBits, std::size_t fracBits = 0,
+ bool isSigned = false, const char *desc = nullptr)
+{
+ ASSERT(fracBits <= fieldBits && fieldBits <= 32);
+
+ int min = -(isSigned << (fieldBits - 1));
+ int max = (1 << (fieldBits - isSigned)) - 1;
+ int32_t val =
+ std::clamp<int32_t>(std::round(value * (1 << fracBits)), min, max);
+
+ if (desc && val / (1 << fracBits) != value)
+ LOG(IPARPI, Warning)
+ << desc << " rounded/clamped to " << val / (1 << fracBits);
+
+ return val;
+}
+
+int generateLut(const ipa::Pwl &pwl, uint32_t *lut, std::size_t lutSize,
+ unsigned int SlopeBits = 14, unsigned int PosBits = 16)
+{
+ if (pwl.empty())
+ return -EINVAL;
+
+ int lastY = 0;
+ for (unsigned int i = 0; i < lutSize; i++) {
+ int x, y;
+ if (i < 32)
+ x = i * 512;
+ else if (i < 48)
+ x = (i - 32) * 1024 + 16384;
+ else
+ x = std::min(65535u, (i - 48) * 2048 + 32768);
+
+ y = pwl.eval(x);
+ if (y < 0 || (i && y < lastY)) {
+ LOG(IPARPI, Error)
+ << "Malformed PWL for Gamma, disabling!";
+ return -1;
+ }
+
+ if (i) {
+ unsigned int slope = y - lastY;
+ if (slope >= (1u << SlopeBits)) {
+ slope = (1u << SlopeBits) - 1;
+ LOG(IPARPI, Info)
+ << ("Maximum Gamma slope exceeded, adjusting!");
+ y = lastY + slope;
+ }
+ lut[i - 1] |= slope << PosBits;
+ }
+
+ lut[i] = y;
+ lastY = y;
+ }
+
+ return 0;
+}
+
+void packLscLut(uint32_t packed[NumLscVertexes][NumLscVertexes],
+ double const rgb[3][NumLscVertexes][NumLscVertexes])
+{
+ for (unsigned int y = 0; y < NumLscVertexes; ++y) {
+ for (unsigned int x = 0; x < NumLscVertexes; ++x) {
+ /* Jointly encode RGB gains in one of 4 ranges: [0.5:1.5), [0:2), [0:4), [0:8) */
+ double lo = std::min({ rgb[0][y][x], rgb[1][y][x], rgb[2][y][x] });
+ double hi = std::max({ rgb[0][y][x], rgb[1][y][x], rgb[2][y][x] });
+ uint32_t range;
+ double scale, offset;
+ if (lo >= 0.5 && hi < 1.5) {
+ range = 0;
+ scale = 1024.0;
+ offset = -511.5;
+ } else if (hi < 2.0) {
+ range = 1;
+ scale = 512.0;
+ offset = 0.5;
+ } else if (hi < 4.0) {
+ range = 2;
+ scale = 256.0;
+ offset = 0.5;
+ } else {
+ range = 3;
+ scale = 128.0;
+ offset = 0.5;
+ }
+ int r = clampField(offset + scale * rgb[0][y][x], 10);
+ int g = clampField(offset + scale * rgb[1][y][x], 10);
+ int b = clampField(offset + scale * rgb[2][y][x], 10);
+ packed[y][x] = (range << 30) | (b << 20) | (g << 10) | r;
+ }
+ }
+}
+
+/*
+ * Resamples a srcW x srcH table with central sampling to destW x destH with
+ * corner sampling.
+ */
+void resampleTable(double *dest, int destW, int destH, double const *src,
+ int srcW, int srcH)
+{
+ /*
+ * Precalculate and cache the x sampling locations and phases to
+ * save recomputing them on every row.
+ */
+ ASSERT(destW > 1 && destH > 1 && destW <= 64);
+ int xLo[64], xHi[64];
+ double xf[64];
+ double x = -0.5, xInc = srcW / (destW - 1);
+ for (int i = 0; i < destW; i++, x += xInc) {
+ xLo[i] = floor(x);
+ xf[i] = x - xLo[i];
+ xHi[i] = xLo[i] < (srcW - 1) ? (xLo[i] + 1) : (srcW - 1);
+ xLo[i] = xLo[i] > 0 ? xLo[i] : 0;
+ }
+
+ /* Now march over the output table generating the new values. */
+ double y = -0.5, yInc = srcH / (destH - 1);
+ for (int j = 0; j < destH; j++, y += yInc) {
+ int yLo = floor(y);
+ double yf = y - yLo;
+ int yHi = yLo < (srcH - 1) ? (yLo + 1) : (srcH - 1);
+ yLo = yLo > 0 ? yLo : 0;
+ double const *rowAbove = src + yLo * srcW;
+ double const *rowBelow = src + yHi * srcW;
+ for (int i = 0; i < destW; i++) {
+ double above = rowAbove[xLo[i]] * (1 - xf[i]) +
+ rowAbove[xHi[i]] * xf[i];
+ double below = rowBelow[xLo[i]] * (1 - xf[i]) +
+ rowBelow[xHi[i]] * xf[i];
+ *(dest++) = above * (1 - yf) + below * yf;
+ }
+ }
+}
+
+} /* namespace */
+
+using ::libpisp::BackEnd;
+using ::libpisp::FrontEnd;
+
+namespace ipa::RPi {
+
+class IpaPiSP final : public IpaBase
+{
+public:
+ IpaPiSP()
+ : IpaBase(), fe_(nullptr), be_(nullptr)
+ {
+ }
+
+ ~IpaPiSP()
+ {
+ if (fe_)
+ munmap(fe_, sizeof(FrontEnd));
+ if (be_)
+ munmap(be_, sizeof(BackEnd));
+ }
+
+private:
+ int32_t platformInit(const InitParams &params, InitResult *result) override;
+ int32_t platformStart(const ControlList &controls, StartResult *result) override;
+ int32_t platformConfigure(const ConfigParams &params, ConfigResult *result) override;
+
+ void platformPrepareIsp(const PrepareParams &params,
+ RPiController::Metadata &rpiMetadata) override;
+ RPiController::StatisticsPtr platformProcessStats(Span<uint8_t> mem) override;
+
+ void handleControls(const ControlList &controls) override;
+
+ void applyWBG(const AwbStatus *awbStatus, const AgcPrepareStatus *agcStatus,
+ pisp_be_global_config &global);
+ void applyDgOnly(const AgcPrepareStatus *agcPrepareStatus, pisp_be_global_config &global);
+ void applyCAC(const CacStatus *cacStatus, pisp_be_global_config &global);
+ void applyContrast(const ContrastStatus *contrastStatus,
+ pisp_be_global_config &global);
+ void applyCCM(const CcmStatus *ccmStatus, pisp_be_global_config &global);
+ void applyBlackLevel(const BlackLevelStatus *blackLevelStatus,
+ pisp_be_global_config &global);
+ void applyLensShading(const AlscStatus *alscStatus,
+ pisp_be_global_config &global);
+ void applyDPC(const DpcStatus *dpcStatus, pisp_be_global_config &global);
+ void applySdn(const SdnStatus *sdnStatus, pisp_be_global_config &global);
+ void applyTdn(const TdnStatus *tdnStatus, const DeviceStatus *deviceStatus,
+ pisp_be_global_config &global);
+ void applyCdn(const CdnStatus *cdnStatus, pisp_be_global_config &global);
+ void applyGeq(const GeqStatus *geqStatus, pisp_be_global_config &global);
+ void applySaturation(const SaturationStatus *geqStatus,
+ pisp_be_global_config &global);
+ void applySharpen(const SharpenStatus *sharpenStatus,
+ pisp_be_global_config &global);
+ bool applyStitch(const StitchStatus *stitchStatus, const DeviceStatus *deviceStatus,
+ const AgcStatus *agcStatus, pisp_be_global_config &global);
+ void applyTonemap(const TonemapStatus *tonemapStatus,
+ pisp_be_global_config &global);
+ void applyFocusStats(const NoiseStatus *noiseStatus);
+ void applyAF(const struct AfStatus *afStatus, ControlList &lensCtrls);
+
+ void setDefaultConfig();
+ void setStatsAndDebin();
+ void setHistogramWeights();
+
+ /* Frontend/Backend objects passed in from the pipeline handler. */
+ SharedFD feFD_;
+ SharedFD beFD_;
+ FrontEnd *fe_;
+ BackEnd *be_;
+
+ /* TDN/HDR runtime need the following state. */
+ bool tdnReset_;
+ utils::Duration lastExposure_;
+ std::map<std::string, utils::Duration> lastStitchExposures_;
+ HdrStatus lastStitchHdrStatus_;
+};
+
+int32_t IpaPiSP::platformInit(const InitParams &params,
+ [[maybe_unused]] InitResult *result)
+{
+ const std::string &target = controller_.getTarget();
+ if (target != "pisp") {
+ LOG(IPARPI, Error)
+ << "Tuning data file target returned \"" << target << "\""
+ << ", expected \"pisp\"";
+ return -EINVAL;
+ }
+
+ /* Acquire the Frontend and Backend objects. */
+ feFD_ = std::move(params.fe);
+ beFD_ = std::move(params.be);
+
+ if (!feFD_.isValid() || !beFD_.isValid()) {
+ LOG(IPARPI, Error) << "Invalid FE/BE handles!";
+ return -ENODEV;
+ }
+
+ fe_ = static_cast<FrontEnd *>(mmap(nullptr, sizeof(FrontEnd),
+ PROT_READ | PROT_WRITE, MAP_SHARED,
+ feFD_.get(), 0));
+ be_ = static_cast<BackEnd *>(mmap(nullptr, sizeof(BackEnd),
+ PROT_READ | PROT_WRITE, MAP_SHARED,
+ beFD_.get(), 0));
+
+ if (!fe_ || !be_) {
+ LOG(IPARPI, Error) << "Unable to map FE/BE handles!";
+ return -ENODEV;
+ }
+
+ setDefaultConfig();
+
+ return 0;
+}
+
+int32_t IpaPiSP::platformStart([[maybe_unused]] const ControlList &controls,
+ [[maybe_unused]] StartResult *result)
+{
+ tdnReset_ = true;
+
+ /* Cause the stitch block to be reset correctly. */
+ lastStitchHdrStatus_ = HdrStatus();
+
+ return 0;
+}
+
+int32_t IpaPiSP::platformConfigure([[maybe_unused]] const ConfigParams &params,
+ [[maybe_unused]] ConfigResult *result)
+{
+ setStatsAndDebin();
+ return 0;
+}
+
+void IpaPiSP::platformPrepareIsp([[maybe_unused]] const PrepareParams &params,
+ RPiController::Metadata &rpiMetadata)
+{
+ std::scoped_lock<RPiController::Metadata> l(rpiMetadata);
+
+ pisp_be_global_config global;
+ be_->GetGlobal(global);
+
+ global.bayer_enables &= ~(PISP_BE_BAYER_ENABLE_BLC + PISP_BE_BAYER_ENABLE_WBG +
+ PISP_BE_BAYER_ENABLE_GEQ + PISP_BE_BAYER_ENABLE_LSC +
+ PISP_BE_BAYER_ENABLE_SDN + PISP_BE_BAYER_ENABLE_CDN +
+ PISP_BE_BAYER_ENABLE_TDN_OUTPUT + PISP_BE_BAYER_ENABLE_TDN_INPUT +
+ PISP_BE_BAYER_ENABLE_STITCH_INPUT + PISP_BE_BAYER_ENABLE_STITCH_OUTPUT +
+ PISP_BE_BAYER_ENABLE_STITCH + PISP_BE_BAYER_ENABLE_TONEMAP);
+ /* We leave the YCbCr and inverse conversion enabled in case of false colour or sharpening. */
+ global.rgb_enables &= ~(PISP_BE_RGB_ENABLE_GAMMA + PISP_BE_RGB_ENABLE_CCM +
+ PISP_BE_RGB_ENABLE_SHARPEN + PISP_BE_RGB_ENABLE_SAT_CONTROL);
+
+ NoiseStatus *noiseStatus = rpiMetadata.getLocked<NoiseStatus>("noise.status");
+ AgcPrepareStatus *agcPrepareStatus = rpiMetadata.getLocked<AgcPrepareStatus>("agc.prepare_status");
+
+ {
+ /* All Frontend config goes first, we do not want to hold the FE lock for long! */
+ std::scoped_lock<FrontEnd> lf(*fe_);
+
+ if (noiseStatus)
+ applyFocusStats(noiseStatus);
+
+ BlackLevelStatus *blackLevelStatus =
+ rpiMetadata.getLocked<BlackLevelStatus>("black_level.status");
+ if (blackLevelStatus)
+ applyBlackLevel(blackLevelStatus, global);
+
+ AwbStatus *awbStatus = rpiMetadata.getLocked<AwbStatus>("awb.status");
+ if (awbStatus && agcPrepareStatus) {
+ /* Applies digital gain as well. */
+ applyWBG(awbStatus, agcPrepareStatus, global);
+ } else if (agcPrepareStatus) {
+ /* Mono sensor fallback for digital gain. */
+ applyDgOnly(agcPrepareStatus, global);
+ }
+ }
+
+ CacStatus *cacStatus = rpiMetadata.getLocked<CacStatus>("cac.status");
+ if (cacStatus)
+ applyCAC(cacStatus, global);
+
+ ContrastStatus *contrastStatus =
+ rpiMetadata.getLocked<ContrastStatus>("contrast.status");
+ if (contrastStatus)
+ applyContrast(contrastStatus, global);
+
+ CcmStatus *ccmStatus = rpiMetadata.getLocked<CcmStatus>("ccm.status");
+ if (ccmStatus)
+ applyCCM(ccmStatus, global);
+
+ AlscStatus *alscStatus = rpiMetadata.getLocked<AlscStatus>("alsc.status");
+ if (alscStatus)
+ applyLensShading(alscStatus, global);
+
+ DpcStatus *dpcStatus = rpiMetadata.getLocked<DpcStatus>("dpc.status");
+ if (dpcStatus)
+ applyDPC(dpcStatus, global);
+
+ SdnStatus *sdnStatus = rpiMetadata.getLocked<SdnStatus>("sdn.status");
+ if (sdnStatus)
+ applySdn(sdnStatus, global);
+
+ DeviceStatus *deviceStatus = rpiMetadata.getLocked<DeviceStatus>("device.status");
+ TdnStatus *tdnStatus = rpiMetadata.getLocked<TdnStatus>("tdn.status");
+ if (tdnStatus && deviceStatus)
+ applyTdn(tdnStatus, deviceStatus, global);
+
+ CdnStatus *cdnStatus = rpiMetadata.getLocked<CdnStatus>("cdn.status");
+ if (cdnStatus)
+ applyCdn(cdnStatus, global);
+
+ GeqStatus *geqStatus = rpiMetadata.getLocked<GeqStatus>("geq.status");
+ if (geqStatus)
+ applyGeq(geqStatus, global);
+
+ SaturationStatus *saturationStatus =
+ rpiMetadata.getLocked<SaturationStatus>("saturation.status");
+ if (saturationStatus)
+ applySaturation(saturationStatus, global);
+
+ SharpenStatus *sharpenStatus = rpiMetadata.getLocked<SharpenStatus>("sharpen.status");
+ if (sharpenStatus)
+ applySharpen(sharpenStatus, global);
+
+ StitchStatus *stitchStatus = rpiMetadata.getLocked<StitchStatus>("stitch.status");
+ if (stitchStatus) {
+ /*
+ * Note that it's the *delayed* AGC status that contains the HDR mode/channel
+ * info that pertains to this frame!
+ */
+ AgcStatus *agcStatus = rpiMetadata.getLocked<AgcStatus>("agc.delayed_status");
+ /* prepareIsp() will fetch this value. Maybe pass it back differently? */
+ stitchSwapBuffers_ = applyStitch(stitchStatus, deviceStatus, agcStatus, global);
+ } else
+ lastStitchHdrStatus_ = HdrStatus();
+
+ TonemapStatus *tonemapStatus = rpiMetadata.getLocked<TonemapStatus>("tonemap.status");
+ if (tonemapStatus)
+ applyTonemap(tonemapStatus, global);
+
+ be_->SetGlobal(global);
+
+ /* Save this for TDN and HDR on the next frame. */
+ lastExposure_ = deviceStatus->exposureTime * deviceStatus->analogueGain;
+
+ /* Lens control */
+ const AfStatus *afStatus = rpiMetadata.getLocked<AfStatus>("af.status");
+ if (afStatus) {
+ ControlList lensctrls(lensCtrls_);
+ applyAF(afStatus, lensctrls);
+ if (!lensctrls.empty())
+ setLensControls.emit(lensctrls);
+ }
+}
+
+RPiController::StatisticsPtr IpaPiSP::platformProcessStats(Span<uint8_t> mem)
+{
+ using namespace RPiController;
+
+ const pisp_statistics *stats = reinterpret_cast<pisp_statistics *>(mem.data());
+
+ unsigned int i;
+ StatisticsPtr statistics =
+ std::make_unique<Statistics>(Statistics::AgcStatsPos::PostWb,
+ Statistics::ColourStatsPos::PreLsc);
+
+ /* RGB histograms are not used, so do not populate them. */
+ statistics->yHist = RPiController::Histogram(stats->agc.histogram,
+ PISP_AGC_STATS_NUM_BINS);
+
+ statistics->awbRegions.init({ PISP_AWB_STATS_SIZE, PISP_AWB_STATS_SIZE });
+ for (i = 0; i < statistics->awbRegions.numRegions(); i++)
+ statistics->awbRegions.set(i, { { stats->awb.zones[i].R_sum,
+ stats->awb.zones[i].G_sum,
+ stats->awb.zones[i].B_sum },
+ stats->awb.zones[i].counted, 0 });
+
+ /* AGC region sums only get collected on floating zones. */
+ statistics->agcRegions.init({ 0, 0 }, PISP_FLOATING_STATS_NUM_ZONES);
+ for (i = 0; i < statistics->agcRegions.numRegions(); i++)
+ statistics->agcRegions.setFloating(i,
+ { { 0, 0, 0, stats->agc.floating[i].Y_sum },
+ stats->agc.floating[i].counted, 0 });
+
+ statistics->focusRegions.init({ PISP_CDAF_STATS_SIZE, PISP_CDAF_STATS_SIZE });
+ for (i = 0; i < statistics->focusRegions.numRegions(); i++)
+ statistics->focusRegions.set(i, { stats->cdaf.foms[i] >> 20, 0, 0 });
+
+ if (statsMetadataOutput_) {
+ Span<const uint8_t> statsSpan(reinterpret_cast<const uint8_t *>(stats),
+ sizeof(pisp_statistics));
+ libcameraMetadata_.set(controls::rpi::PispStatsOutput, statsSpan);
+ }
+
+ return statistics;
+}
+
+void IpaPiSP::handleControls(const ControlList &controls)
+{
+ for (auto const &ctrl : controls) {
+ switch (ctrl.first) {
+ case controls::HDR_MODE:
+ case controls::AE_METERING_MODE:
+ setHistogramWeights();
+ break;
+
+ case controls::draft::NOISE_REDUCTION_MODE: {
+ RPiController::DenoiseAlgorithm *denoise = dynamic_cast<RPiController::DenoiseAlgorithm *>(
+ controller_.getAlgorithm("denoise"));
+
+ if (!denoise) {
+ LOG(IPARPI, Warning)
+ << "Could not set NOISE_REDUCTION_MODE - no Denoise algorithm";
+ return;
+ }
+
+ if (ctrl.second.get<int32_t>() == controls::draft::NoiseReductionModeOff)
+ denoise->setMode(RPiController::DenoiseMode::Off);
+ else
+ denoise->setMode(RPiController::DenoiseMode::ColourHighQuality);
+
+ break;
+ }
+ }
+ }
+}
+
+void IpaPiSP::applyWBG(const AwbStatus *awbStatus, const AgcPrepareStatus *agcPrepareStatus,
+ pisp_be_global_config &global)
+{
+ pisp_wbg_config wbg;
+ pisp_fe_rgby_config rgby = {};
+ double dg = agcPrepareStatus ? agcPrepareStatus->digitalGain : 1.0;
+
+ wbg.gain_r = clampField(dg * awbStatus->gainR, 14, 10);
+ wbg.gain_g = clampField(dg * awbStatus->gainG, 14, 10);
+ wbg.gain_b = clampField(dg * awbStatus->gainB, 14, 10);
+
+ /*
+ * The YCbCr conversion block should contain the appropriate YCbCr
+ * matrix. We should not rely on the CSC0 block as that might be
+ * programmed for RGB outputs.
+ */
+ pisp_be_ccm_config csc;
+ be_->GetYcbcr(csc);
+
+ /* The CSC coefficients already have the << 10 scaling applied. */
+ rgby.gain_r = clampField(csc.coeffs[0] * awbStatus->gainR, 14);
+ rgby.gain_g = clampField(csc.coeffs[1] * awbStatus->gainG, 14);
+ rgby.gain_b = clampField(csc.coeffs[2] * awbStatus->gainB, 14);
+
+ LOG(IPARPI, Debug) << "Applying WB R: " << awbStatus->gainR << " B: "
+ << awbStatus->gainB;
+
+ be_->SetWbg(wbg);
+ fe_->SetRGBY(rgby);
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_WBG;
+}
+
+void IpaPiSP::applyDgOnly(const AgcPrepareStatus *agcPrepareStatus, pisp_be_global_config &global)
+{
+ pisp_wbg_config wbg;
+
+ wbg.gain_r = clampField(agcPrepareStatus->digitalGain, 14, 10);
+ wbg.gain_g = clampField(agcPrepareStatus->digitalGain, 14, 10);
+ wbg.gain_b = clampField(agcPrepareStatus->digitalGain, 14, 10);
+
+ LOG(IPARPI, Debug) << "Applying DG (only) : " << agcPrepareStatus->digitalGain;
+
+ be_->SetWbg(wbg);
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_WBG;
+}
+
+void IpaPiSP::applyContrast(const ContrastStatus *contrastStatus,
+ pisp_be_global_config &global)
+{
+ pisp_be_gamma_config gamma;
+
+ if (!generateLut(contrastStatus->gammaCurve, gamma.lut, PISP_BE_GAMMA_LUT_SIZE)) {
+ be_->SetGamma(gamma);
+ global.rgb_enables |= PISP_BE_RGB_ENABLE_GAMMA;
+ }
+}
+
+void IpaPiSP::applyCCM(const CcmStatus *ccmStatus, pisp_be_global_config &global)
+{
+ pisp_be_ccm_config ccm = {};
+
+ for (unsigned int i = 0; i < 9; i++)
+ ccm.coeffs[i] = clampField(ccmStatus->matrix[i], 14, 10, true);
+
+ be_->SetCcm(ccm);
+ global.rgb_enables |= PISP_BE_RGB_ENABLE_CCM;
+}
+
+void IpaPiSP::applyCAC(const CacStatus *cacStatus, pisp_be_global_config &global)
+{
+ pisp_be_cac_config cac = {};
+
+ for (int x = 0; x < PISP_BE_CAC_GRID_SIZE + 1; x++) {
+ for (int y = 0; y < PISP_BE_CAC_GRID_SIZE + 1; y++) {
+ cac.lut[y][x][0][0] = clampField(cacStatus->lutRx[y * (PISP_BE_CAC_GRID_SIZE + 1) + x], 7, 5, true);
+ cac.lut[y][x][0][1] = clampField(cacStatus->lutRy[y * (PISP_BE_CAC_GRID_SIZE + 1) + x], 7, 5, true);
+ cac.lut[y][x][1][0] = clampField(cacStatus->lutBx[y * (PISP_BE_CAC_GRID_SIZE + 1) + x], 7, 5, true);
+ cac.lut[y][x][1][1] = clampField(cacStatus->lutBy[y * (PISP_BE_CAC_GRID_SIZE + 1) + x], 7, 5, true);
+ }
+ }
+
+ be_->SetCac(cac);
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_CAC;
+}
+
+void IpaPiSP::applyBlackLevel(const BlackLevelStatus *blackLevelStatus, pisp_be_global_config &global)
+{
+ uint16_t minBlackLevel = std::min({ blackLevelStatus->blackLevelR, blackLevelStatus->blackLevelG,
+ blackLevelStatus->blackLevelB });
+ pisp_bla_config bla;
+
+ /*
+ * Set the Frontend to adjust the black level to the smallest black level
+ * of all channels (in 16-bits).
+ */
+ bla.black_level_r = blackLevelStatus->blackLevelR;
+ bla.black_level_gr = blackLevelStatus->blackLevelG;
+ bla.black_level_gb = blackLevelStatus->blackLevelG;
+ bla.black_level_b = blackLevelStatus->blackLevelB;
+ bla.output_black_level = minBlackLevel;
+ fe_->SetBla(bla);
+
+ /* Frontend Stats and Backend black level correction. */
+ bla.black_level_r = bla.black_level_gr =
+ bla.black_level_gb = bla.black_level_b = minBlackLevel;
+ bla.output_black_level = 0;
+ fe_->SetBlc(bla);
+ be_->SetBlc(bla);
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_BLC;
+}
+
+void IpaPiSP::applyLensShading(const AlscStatus *alscStatus,
+ pisp_be_global_config &global)
+{
+ pisp_be_lsc_extra lscExtra = {};
+ pisp_be_lsc_config lsc = {};
+ double rgb[3][NumLscVertexes][NumLscVertexes] = {};
+
+ resampleTable(&rgb[0][0][0], NumLscVertexes, NumLscVertexes,
+ alscStatus->r.data(), NumLscCells, NumLscCells);
+ resampleTable(&rgb[1][0][0], NumLscVertexes, NumLscVertexes,
+ alscStatus->g.data(), NumLscCells, NumLscCells);
+ resampleTable(&rgb[2][0][0], NumLscVertexes, NumLscVertexes,
+ alscStatus->b.data(), NumLscCells, NumLscCells);
+ packLscLut(lsc.lut_packed, rgb);
+ be_->SetLsc(lsc, lscExtra);
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_LSC;
+}
+
+void IpaPiSP::applyDPC(const DpcStatus *dpcStatus, pisp_be_global_config &global)
+{
+ pisp_be_dpc_config dpc = {};
+
+ switch (dpcStatus->strength) {
+ case 0: /* "off" */
+ break;
+ case 1: /* "normal" */
+ dpc.coeff_level = 1;
+ dpc.coeff_range = 8;
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_DPC;
+ break;
+ case 2: /* "strong" */
+ dpc.coeff_level = 0;
+ dpc.coeff_range = 0;
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_DPC;
+ break;
+ default:
+ ASSERT(0);
+ }
+
+ be_->SetDpc(dpc);
+}
+
+void IpaPiSP::applySdn(const SdnStatus *sdnStatus, pisp_be_global_config &global)
+{
+ pisp_be_sdn_config sdn = {};
+ pisp_bla_config blc;
+
+ be_->GetBlc(blc);
+ /* All R/G/B black levels are the same value in the BE after FE alignment */
+ sdn.black_level = blc.black_level_r;
+ /* leakage is "amount of the original pixel we let through", thus 1 - strength */
+ sdn.leakage = clampField(1.0 - sdnStatus->strength, 8, 8);
+ sdn.noise_constant = clampField(sdnStatus->noiseConstant, 16);
+ sdn.noise_slope = clampField(sdnStatus->noiseSlope, 16, 8);
+ sdn.noise_constant2 = clampField(sdnStatus->noiseConstant2, 16);
+ sdn.noise_slope2 = clampField(sdnStatus->noiseSlope2, 16, 8);
+ be_->SetSdn(sdn);
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_SDN;
+}
+
+void IpaPiSP::applyTdn(const TdnStatus *tdnStatus, const DeviceStatus *deviceStatus,
+ pisp_be_global_config &global)
+{
+ utils::Duration exposure = deviceStatus->exposureTime * deviceStatus->analogueGain;
+ pisp_be_tdn_config tdn = {};
+
+ double ratio = tdnReset_ ? 1.0 : exposure / lastExposure_;
+ if (ratio >= 4.0) {
+ /* If the exposure ratio goes above 4x, we need to reset TDN. */
+ ratio = 1;
+ tdnReset_ = true;
+ }
+
+ LOG(IPARPI, Debug) << "TDN: exposure: " << exposure
+ << " last: " << lastExposure_
+ << " ratio: " << ratio;
+
+ pisp_bla_config blc;
+ be_->GetBlc(blc);
+ /* All R/G/B black levels are the same value in the BE after FE alignment */
+ tdn.black_level = blc.black_level_r;
+ tdn.ratio = clampField(ratio, 16, 14);
+ tdn.noise_constant = clampField(tdnStatus->noiseConstant, 16);
+ tdn.noise_slope = clampField(tdnStatus->noiseSlope, 16, 8);
+ tdn.threshold = clampField(tdnStatus->threshold, 16, 16);
+
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_TDN + PISP_BE_BAYER_ENABLE_TDN_OUTPUT;
+
+ /* Only enable the TDN Input after a state reset. */
+ if (!tdnReset_) {
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_TDN_INPUT;
+ tdn.reset = 0;
+ } else
+ tdn.reset = 1;
+
+ be_->SetTdn(tdn);
+ tdnReset_ = false;
+}
+
+void IpaPiSP::applyCdn(const CdnStatus *cdnStatus, pisp_be_global_config &global)
+{
+ pisp_be_cdn_config cdn = {};
+
+ cdn.thresh = clampField(cdnStatus->threshold, 16);
+ cdn.iir_strength = clampField(cdnStatus->strength, 8, 8);
+ cdn.g_adjust = clampField(0, 8, 8);
+ be_->SetCdn(cdn);
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_CDN;
+}
+
+void IpaPiSP::applyGeq(const GeqStatus *geqStatus, pisp_be_global_config &global)
+{
+ pisp_be_geq_config geq = {};
+
+ geq.min = 0;
+ geq.max = 0xffff;
+ geq.offset = clampField(geqStatus->offset, 16);
+ geq.slope_sharper = clampField(geqStatus->slope, 10, 10);
+ be_->SetGeq(geq);
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_GEQ;
+}
+
+void IpaPiSP::applySaturation(const SaturationStatus *saturationStatus,
+ pisp_be_global_config &global)
+{
+ pisp_be_sat_control_config saturation;
+ pisp_wbg_config wbg;
+
+ saturation.shift_r = std::min<uint8_t>(2, saturationStatus->shiftR);
+ saturation.shift_g = std::min<uint8_t>(2, saturationStatus->shiftG);
+ saturation.shift_b = std::min<uint8_t>(2, saturationStatus->shiftB);
+ be_->SetSatControl(saturation);
+
+ be_->GetWbg(wbg);
+ wbg.gain_r >>= saturationStatus->shiftR;
+ wbg.gain_g >>= saturationStatus->shiftG;
+ wbg.gain_b >>= saturationStatus->shiftB;
+ be_->SetWbg(wbg);
+
+ global.rgb_enables |= PISP_BE_RGB_ENABLE_SAT_CONTROL;
+}
+
+void IpaPiSP::applySharpen(const SharpenStatus *sharpenStatus,
+ pisp_be_global_config &global)
+{
+ /*
+ * This threshold scaling is to normalise the VC4 and PiSP parameter
+ * scales in the tuning config.
+ */
+ static constexpr double ThresholdScaling = 0.25;
+ const double scaling = sharpenStatus->threshold * ThresholdScaling;
+
+ pisp_be_sh_fc_combine_config shfc;
+ pisp_be_sharpen_config sharpen;
+
+ be_->InitialiseSharpen(sharpen, shfc);
+ sharpen.threshold_offset0 = clampField(sharpen.threshold_offset0 * scaling, 16);
+ sharpen.threshold_offset1 = clampField(sharpen.threshold_offset1 * scaling, 16);
+ sharpen.threshold_offset2 = clampField(sharpen.threshold_offset2 * scaling, 16);
+ sharpen.threshold_offset3 = clampField(sharpen.threshold_offset3 * scaling, 16);
+ sharpen.threshold_offset4 = clampField(sharpen.threshold_offset4 * scaling, 16);
+ sharpen.threshold_slope0 = clampField(sharpen.threshold_slope0 * scaling, 12);
+ sharpen.threshold_slope1 = clampField(sharpen.threshold_slope1 * scaling, 12);
+ sharpen.threshold_slope2 = clampField(sharpen.threshold_slope2 * scaling, 12);
+ sharpen.threshold_slope3 = clampField(sharpen.threshold_slope3 * scaling, 12);
+ sharpen.threshold_slope4 = clampField(sharpen.threshold_slope4 * scaling, 12);
+ sharpen.positive_strength = clampField(sharpen.positive_strength * sharpenStatus->strength, 12);
+ sharpen.negative_strength = clampField(sharpen.negative_strength * sharpenStatus->strength, 12);
+ sharpen.positive_pre_limit = clampField(sharpen.positive_pre_limit * sharpenStatus->limit, 16);
+ sharpen.positive_limit = clampField(sharpen.positive_limit * sharpenStatus->limit, 16);
+ sharpen.negative_pre_limit = clampField(sharpen.negative_pre_limit * sharpenStatus->limit, 16);
+ sharpen.negative_limit = clampField(sharpen.negative_limit * sharpenStatus->limit, 16);
+
+ be_->SetSharpen(sharpen);
+ /* The conversion to YCbCr and back is always enabled. */
+ global.rgb_enables |= PISP_BE_RGB_ENABLE_SHARPEN;
+}
+
+bool IpaPiSP::applyStitch(const StitchStatus *stitchStatus, const DeviceStatus *deviceStatus,
+ const AgcStatus *agcStatus, pisp_be_global_config &global)
+{
+ /*
+ * Find out what HDR mode/channel this frame is. Normally this will be in the delayed
+ * HDR status (in the AGC status), though after a mode switch this will be absent and
+ * the information will have been stored in the hdrStatus_ field.
+ */
+ const HdrStatus *hdrStatus = &hdrStatus_;
+ if (agcStatus)
+ hdrStatus = &agcStatus->hdr;
+
+ bool modeChange = hdrStatus->mode != lastStitchHdrStatus_.mode;
+ bool channelChange = !modeChange && hdrStatus->channel != lastStitchHdrStatus_.channel;
+ lastStitchHdrStatus_ = *hdrStatus;
+
+ /* Check for a change of HDR mode. That forces us to start over. */
+ if (modeChange)
+ lastStitchExposures_.clear();
+
+ if (hdrStatus->channel != "short" && hdrStatus->channel != "long") {
+ /* The channel *must* be long or short, anything else does not make sense. */
+ LOG(IPARPI, Warning) << "Stitch channel is not long or short";
+ return false;
+ }
+
+ /* Whatever happens, we're going to output this buffer now. */
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_STITCH_OUTPUT;
+
+ utils::Duration exposure = deviceStatus->exposureTime * deviceStatus->analogueGain;
+ lastStitchExposures_[hdrStatus->channel] = exposure;
+
+ /* If the other channel hasn't been seen there's nothing more we can do. */
+ std::string otherChannel = hdrStatus->channel == "short" ? "long" : "short";
+ if (lastStitchExposures_.find(otherChannel) == lastStitchExposures_.end()) {
+ /* The first channel should be "short". */
+ if (hdrStatus->channel != "short")
+ LOG(IPARPI, Warning) << "First frame is not short";
+ return false;
+ }
+
+ /* We have both channels, we need to enable stitching. */
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_STITCH_INPUT + PISP_BE_BAYER_ENABLE_STITCH;
+
+ utils::Duration otherExposure = lastStitchExposures_[otherChannel];
+ bool phaseLong = hdrStatus->channel == "long";
+ double ratio = phaseLong ? otherExposure / exposure : exposure / otherExposure;
+
+ pisp_be_stitch_config stitch = {};
+ stitch.exposure_ratio = clampField(ratio, 15, 15);
+ if (phaseLong)
+ stitch.exposure_ratio |= PISP_BE_STITCH_STREAMING_LONG;
+ /* These will be filled in correctly once we have implemented the HDR algorithm. */
+ stitch.threshold_lo = stitchStatus->thresholdLo;
+ stitch.threshold_diff_power = stitchStatus->diffPower;
+ stitch.motion_threshold_256 = stitchStatus->motionThreshold;
+ be_->SetStitch(stitch);
+
+ return channelChange;
+}
+
+void IpaPiSP::applyTonemap(const TonemapStatus *tonemapStatus, pisp_be_global_config &global)
+{
+ pisp_be_tonemap_config tonemap = {};
+
+ tonemap.detail_constant = clampField(tonemapStatus->detailConstant, 16);
+ tonemap.detail_slope = clampField(tonemapStatus->detailSlope, 16, 8);
+ tonemap.iir_strength = clampField(tonemapStatus->iirStrength, 12, 4);
+ tonemap.strength = clampField(tonemapStatus->strength, 12, 8);
+
+ if (!generateLut(tonemapStatus->tonemap, tonemap.lut, PISP_BE_TONEMAP_LUT_SIZE)) {
+ be_->SetTonemap(tonemap);
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_TONEMAP;
+ }
+}
+
+void IpaPiSP::applyFocusStats(const NoiseStatus *noiseStatus)
+{
+ pisp_fe_cdaf_stats_config cdaf;
+ fe_->GetCdafStats(cdaf);
+
+ cdaf.noise_constant = noiseStatus->noiseConstant;
+ cdaf.noise_slope = noiseStatus->noiseSlope;
+ fe_->SetCdafStats(cdaf);
+}
+
+void IpaPiSP::applyAF(const struct AfStatus *afStatus, ControlList &lensCtrls)
+{
+ if (afStatus->lensSetting) {
+ ControlValue v(afStatus->lensSetting.value());
+ lensCtrls.set(V4L2_CID_FOCUS_ABSOLUTE, v);
+ }
+}
+
+void IpaPiSP::setDefaultConfig()
+{
+ std::scoped_lock<FrontEnd> l(*fe_);
+
+ pisp_be_global_config beGlobal;
+ pisp_fe_global_config feGlobal;
+
+ fe_->GetGlobal(feGlobal);
+ be_->GetGlobal(beGlobal);
+ /*
+ * Always go to YCbCr and back. We need them if the false colour block is enabled,
+ * and even for mono sensors if sharpening is enabled. So we're better off enabling
+ * them all the time.
+ */
+ beGlobal.rgb_enables |= PISP_BE_RGB_ENABLE_YCBCR + PISP_BE_RGB_ENABLE_YCBCR_INVERSE;
+
+ if (!monoSensor()) {
+ beGlobal.bayer_enables |= PISP_BE_BAYER_ENABLE_DEMOSAIC;
+ beGlobal.rgb_enables |= PISP_BE_RGB_ENABLE_FALSE_COLOUR;
+ }
+
+ /*
+ * Ask the AWB algorithm for reasonable gain values so that we can program the
+ * front end stats sensibly. We must also factor in the conversion to luminance.
+ */
+ pisp_fe_rgby_config rgby = {};
+ double gainR = 1.5, gainB = 1.5;
+ RPiController::AwbAlgorithm *awb = dynamic_cast<RPiController::AwbAlgorithm *>(
+ controller_.getAlgorithm("awb"));
+ if (awb)
+ awb->initialValues(gainR, gainB);
+ /* The BT.601 RGB -> Y coefficients will do. The precise values are not critical. */
+ rgby.gain_r = clampField(gainR * 0.299, 14, 10);
+ rgby.gain_g = clampField(1.0 * .587, 14, 10);
+ rgby.gain_b = clampField(gainB * .114, 14, 10);
+ fe_->SetRGBY(rgby);
+ feGlobal.enables |= PISP_FE_ENABLE_RGBY;
+
+ /* Also get sensible front end black level defaults, for the same reason. */
+ RPiController::BlackLevelAlgorithm *blackLevel = dynamic_cast<RPiController::BlackLevelAlgorithm *>(
+ controller_.getAlgorithm("black_level"));
+ if (blackLevel) {
+ uint16_t blackLevelR, blackLevelG, blackLevelB;
+ BlackLevelStatus blackLevelStatus;
+
+ blackLevel->initialValues(blackLevelR, blackLevelG, blackLevelB);
+ blackLevelStatus.blackLevelR = blackLevelR;
+ blackLevelStatus.blackLevelG = blackLevelG;
+ blackLevelStatus.blackLevelB = blackLevelB;
+ applyBlackLevel(&blackLevelStatus, beGlobal);
+ feGlobal.enables |= PISP_FE_ENABLE_BLA + PISP_FE_ENABLE_BLC;
+ }
+
+ fe_->SetGlobal(feGlobal);
+ be_->SetGlobal(beGlobal);
+}
+
+void IpaPiSP::setStatsAndDebin()
+{
+ pisp_fe_crop_config crop{ 0, 0, mode_.width, mode_.height };
+
+ pisp_fe_awb_stats_config awb = {};
+ awb.r_lo = awb.g_lo = awb.b_lo = 0;
+ awb.r_hi = awb.g_hi = awb.b_hi = 65535 * 0.98;
+
+ pisp_fe_cdaf_stats_config cdaf = {};
+ cdaf.mode = (1 << 4) + (1 << 2) + 1; /* Gr / Gb count with weights of (1, 1) */
+
+ {
+ std::scoped_lock<FrontEnd> l(*fe_);
+ pisp_fe_global_config feGlobal;
+ fe_->GetGlobal(feGlobal);
+ feGlobal.enables |= PISP_FE_ENABLE_AWB_STATS + PISP_FE_ENABLE_AGC_STATS +
+ PISP_FE_ENABLE_CDAF_STATS;
+
+ fe_->SetGlobal(feGlobal);
+ fe_->SetStatsCrop(crop);
+ fe_->SetAwbStats(awb);
+ fe_->SetCdafStats(cdaf);
+ }
+
+ /*
+ * Apply the correct AGC region weights to the Frontend. Need to do this
+ * out of the Frontend scoped lock.
+ */
+ setHistogramWeights();
+
+ pisp_be_global_config beGlobal;
+ be_->GetGlobal(beGlobal);
+
+ if (mode_.binX > 1 || mode_.binY > 1) {
+ pisp_be_debin_config debin;
+
+ be_->GetDebin(debin);
+ debin.h_enable = (mode_.binX > 1);
+ debin.v_enable = (mode_.binY > 1);
+ be_->SetDebin(debin);
+ beGlobal.bayer_enables |= PISP_BE_BAYER_ENABLE_DEBIN;
+ } else
+ beGlobal.bayer_enables &= ~PISP_BE_BAYER_ENABLE_DEBIN;
+
+ be_->SetGlobal(beGlobal);
+}
+
+void IpaPiSP::setHistogramWeights()
+{
+ RPiController::AgcAlgorithm *agc = dynamic_cast<RPiController::AgcAlgorithm *>(
+ controller_.getAlgorithm("agc"));
+ if (!agc)
+ return;
+
+ const std::vector<double> &weights = agc->getWeights();
+
+ pisp_fe_agc_stats_config config;
+ memset(&config, 0, sizeof(config));
+
+ /*
+ * The AGC software gives us a 15x15 table of weights which we
+ * map onto 16x16 in the hardware, ensuring the rightmost column
+ * and bottom row all have zero weight. We align everything to
+ * the native 2x2 Bayer pixel blocks.
+ */
+ const Size &size = controller_.getHardwareConfig().agcZoneWeights;
+ int width = (mode_.width / size.width) & ~1;
+ int height = (mode_.height / size.height) & ~1;
+ config.offset_x = ((mode_.width - size.width * width) / 2) & ~1;
+ config.offset_y = ((mode_.height - size.height * height) / 2) & ~1;
+ config.size_x = width;
+ config.size_y = height;
+
+ unsigned int idx = 0;
+ for (unsigned int row = 0; row < size.height; row++) {
+ unsigned int col = 0;
+ for (; col < size.width / 2; col++) {
+ int wt0 = clampField(weights[idx++], 4, 0, false, "agc weights");
+ int wt1 = clampField(weights[idx++], 4, 0, false, "agc weights");
+ config.weights[row * 8 + col] = (wt1 << 4) | wt0;
+ }
+ if (size.width & 1)
+ config.weights[row * 8 + col] =
+ clampField(weights[idx++], 4, 0, false, "agc weights");
+ }
+
+ std::scoped_lock<FrontEnd> l(*fe_);
+ fe_->SetAgcStats(config);
+}
+
+} /* namespace ipa::RPi */
+
+/*
+ * External IPA module interface
+ */
+extern "C" {
+const IPAModuleInfo ipaModuleInfo = {
+ IPA_MODULE_API_VERSION,
+ 1,
+ "rpi/pisp",
+ "rpi/pisp",
+};
+
+IPAInterface *ipaCreate()
+{
+ return new ipa::RPi::IpaPiSP();
+}
+
+} /* extern "C" */
+
+} /* namespace libcamera */
diff --git a/src/ipa/simple/algorithms/agc.cpp b/src/ipa/simple/algorithms/agc.cpp
index 72aade14..c46bb0eb 100644
--- a/src/ipa/simple/algorithms/agc.cpp
+++ b/src/ipa/simple/algorithms/agc.cpp
@@ -11,6 +11,8 @@
#include <libcamera/base/log.h>
+#include "control_ids.h"
+
namespace libcamera {
LOG_DEFINE_CATEGORY(IPASoftExposure)
@@ -97,10 +99,15 @@ void Agc::updateExposure(IPAContext &context, IPAFrameContext &frameContext, dou
void Agc::process(IPAContext &context,
[[maybe_unused]] const uint32_t frame,
- [[maybe_unused]] IPAFrameContext &frameContext,
+ IPAFrameContext &frameContext,
const SwIspStats *stats,
- [[maybe_unused]] ControlList &metadata)
+ ControlList &metadata)
{
+ utils::Duration exposureTime =
+ context.configuration.agc.lineDuration * frameContext.sensor.exposure;
+ metadata.set(controls::ExposureTime, exposureTime.get<std::micro>());
+ metadata.set(controls::AnalogueGain, frameContext.sensor.gain);
+
/*
* Calculate Mean Sample Value (MSV) according to formula from:
* https://www.araa.asn.au/acra/acra2007/papers/paper84final.pdf
diff --git a/src/ipa/simple/algorithms/awb.cpp b/src/ipa/simple/algorithms/awb.cpp
index 195de41d..55719059 100644
--- a/src/ipa/simple/algorithms/awb.cpp
+++ b/src/ipa/simple/algorithms/awb.cpp
@@ -12,8 +12,13 @@
#include <libcamera/base/log.h>
+#include <libcamera/control_ids.h>
+
+#include "libipa/colours.h"
#include "simple/ipa_context.h"
+#include "control_ids.h"
+
namespace libcamera {
LOG_DEFINE_CATEGORY(IPASoftAwb)
@@ -23,21 +28,38 @@ namespace ipa::soft::algorithms {
int Awb::configure(IPAContext &context,
[[maybe_unused]] const IPAConfigInfo &configInfo)
{
- auto &gains = context.activeState.gains;
- gains.red = gains.green = gains.blue = 1.0;
+ auto &gains = context.activeState.awb.gains;
+ gains = { { 1.0, 1.0, 1.0 } };
return 0;
}
+void Awb::prepare(IPAContext &context,
+ [[maybe_unused]] const uint32_t frame,
+ IPAFrameContext &frameContext,
+ [[maybe_unused]] DebayerParams *params)
+{
+ auto &gains = context.activeState.awb.gains;
+ frameContext.gains.red = gains.r();
+ frameContext.gains.blue = gains.b();
+}
+
void Awb::process(IPAContext &context,
[[maybe_unused]] const uint32_t frame,
- [[maybe_unused]] IPAFrameContext &frameContext,
+ IPAFrameContext &frameContext,
const SwIspStats *stats,
- [[maybe_unused]] ControlList &metadata)
+ ControlList &metadata)
{
const SwIspStats::Histogram &histogram = stats->yHistogram;
const uint8_t blackLevel = context.activeState.blc.level;
+ const float maxGain = 1024.0;
+ const float mdGains[] = {
+ static_cast<float>(frameContext.gains.red / maxGain),
+ static_cast<float>(frameContext.gains.blue / maxGain)
+ };
+ metadata.set(controls::ColourGains, mdGains);
+
/*
* Black level must be subtracted to get the correct AWB ratios, they
* would be off if they were computed from the whole brightness range
@@ -54,12 +76,20 @@ void Awb::process(IPAContext &context,
* Calculate red and blue gains for AWB.
* Clamp max gain at 4.0, this also avoids 0 division.
*/
- auto &gains = context.activeState.gains;
- gains.red = sumR <= sumG / 4 ? 4.0 : static_cast<double>(sumG) / sumR;
- gains.blue = sumB <= sumG / 4 ? 4.0 : static_cast<double>(sumG) / sumB;
- /* Green gain is fixed to 1.0 */
-
- LOG(IPASoftAwb, Debug) << "gain R/B " << gains.red << "/" << gains.blue;
+ auto &gains = context.activeState.awb.gains;
+ gains = { {
+ sumR <= sumG / 4 ? 4.0f : static_cast<float>(sumG) / sumR,
+ 1.0,
+ sumB <= sumG / 4 ? 4.0f : static_cast<float>(sumG) / sumB,
+ } };
+
+ RGB<double> rgbGains{ { 1 / gains.r(), 1 / gains.g(), 1 / gains.b() } };
+ context.activeState.awb.temperatureK = estimateCCT(rgbGains);
+ metadata.set(controls::ColourTemperature, context.activeState.awb.temperatureK);
+
+ LOG(IPASoftAwb, Debug)
+ << "gain R/B: " << gains << "; temperature: "
+ << context.activeState.awb.temperatureK;
}
REGISTER_IPA_ALGORITHM(Awb, "Awb")
diff --git a/src/ipa/simple/algorithms/awb.h b/src/ipa/simple/algorithms/awb.h
index db1496cd..ad993f39 100644
--- a/src/ipa/simple/algorithms/awb.h
+++ b/src/ipa/simple/algorithms/awb.h
@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
- * Copyright (C) 2024, Red Hat Inc.
+ * Copyright (C) 2024-2025 Red Hat Inc.
*
* Auto white balance
*/
@@ -20,6 +20,10 @@ public:
~Awb() = default;
int configure(IPAContext &context, const IPAConfigInfo &configInfo) override;
+ void prepare(IPAContext &context,
+ const uint32_t frame,
+ IPAFrameContext &frameContext,
+ DebayerParams *params) override;
void process(IPAContext &context,
const uint32_t frame,
IPAFrameContext &frameContext,
diff --git a/src/ipa/simple/algorithms/blc.cpp b/src/ipa/simple/algorithms/blc.cpp
index 1d7d370b..53c356c8 100644
--- a/src/ipa/simple/algorithms/blc.cpp
+++ b/src/ipa/simple/algorithms/blc.cpp
@@ -11,6 +11,8 @@
#include <libcamera/base/log.h>
+#include "control_ids.h"
+
namespace libcamera {
namespace ipa::soft::algorithms {
@@ -49,8 +51,15 @@ void BlackLevel::process(IPAContext &context,
[[maybe_unused]] const uint32_t frame,
IPAFrameContext &frameContext,
const SwIspStats *stats,
- [[maybe_unused]] ControlList &metadata)
+ ControlList &metadata)
{
+ /* Assign each of the R G G B channels as the same black level. */
+ const int32_t blackLevel = context.activeState.blc.level * 256;
+ const int32_t blackLevels[] = {
+ blackLevel, blackLevel, blackLevel, blackLevel
+ };
+ metadata.set(controls::SensorBlackLevels, blackLevels);
+
if (context.configuration.black.level.has_value())
return;
diff --git a/src/ipa/simple/algorithms/ccm.cpp b/src/ipa/simple/algorithms/ccm.cpp
new file mode 100644
index 00000000..d5ba928d
--- /dev/null
+++ b/src/ipa/simple/algorithms/ccm.cpp
@@ -0,0 +1,76 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2024, Ideas On Board
+ * Copyright (C) 2024-2025, Red Hat Inc.
+ *
+ * Color correction matrix
+ */
+
+#include "ccm.h"
+
+#include <libcamera/base/log.h>
+#include <libcamera/base/utils.h>
+
+#include <libcamera/control_ids.h>
+
+namespace {
+
+constexpr unsigned int kTemperatureThreshold = 100;
+
+}
+
+namespace libcamera {
+
+namespace ipa::soft::algorithms {
+
+LOG_DEFINE_CATEGORY(IPASoftCcm)
+
+int Ccm::init([[maybe_unused]] IPAContext &context, const YamlObject &tuningData)
+{
+ int ret = ccm_.readYaml(tuningData["ccms"], "ct", "ccm");
+ if (ret < 0) {
+ LOG(IPASoftCcm, Error)
+ << "Failed to parse 'ccm' parameter from tuning file.";
+ return ret;
+ }
+
+ context.ccmEnabled = true;
+
+ return 0;
+}
+
+void Ccm::prepare(IPAContext &context, const uint32_t frame,
+ IPAFrameContext &frameContext, [[maybe_unused]] DebayerParams *params)
+{
+ const unsigned int ct = context.activeState.awb.temperatureK;
+
+ /* Change CCM only on bigger temperature changes. */
+ if (frame > 0 &&
+ utils::abs_diff(ct, lastCt_) < kTemperatureThreshold) {
+ frameContext.ccm.ccm = context.activeState.ccm.ccm;
+ context.activeState.ccm.changed = false;
+ return;
+ }
+
+ lastCt_ = ct;
+ Matrix<float, 3, 3> ccm = ccm_.getInterpolated(ct);
+
+ context.activeState.ccm.ccm = ccm;
+ frameContext.ccm.ccm = ccm;
+ context.activeState.ccm.changed = true;
+}
+
+void Ccm::process([[maybe_unused]] IPAContext &context,
+ [[maybe_unused]] const uint32_t frame,
+ IPAFrameContext &frameContext,
+ [[maybe_unused]] const SwIspStats *stats,
+ ControlList &metadata)
+{
+ metadata.set(controls::ColourCorrectionMatrix, frameContext.ccm.ccm.data());
+}
+
+REGISTER_IPA_ALGORITHM(Ccm, "Ccm")
+
+} /* namespace ipa::soft::algorithms */
+
+} /* namespace libcamera */
diff --git a/src/ipa/simple/algorithms/ccm.h b/src/ipa/simple/algorithms/ccm.h
new file mode 100644
index 00000000..f4e2b85b
--- /dev/null
+++ b/src/ipa/simple/algorithms/ccm.h
@@ -0,0 +1,43 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2024-2025, Red Hat Inc.
+ *
+ * Color correction matrix
+ */
+
+#pragma once
+
+#include "libcamera/internal/matrix.h"
+
+#include <libipa/interpolator.h>
+
+#include "algorithm.h"
+
+namespace libcamera {
+
+namespace ipa::soft::algorithms {
+
+class Ccm : public Algorithm
+{
+public:
+ Ccm() = default;
+ ~Ccm() = default;
+
+ int init(IPAContext &context, const YamlObject &tuningData) override;
+ void prepare(IPAContext &context,
+ const uint32_t frame,
+ IPAFrameContext &frameContext,
+ DebayerParams *params) override;
+ void process(IPAContext &context, const uint32_t frame,
+ IPAFrameContext &frameContext,
+ const SwIspStats *stats,
+ ControlList &metadata) override;
+
+private:
+ unsigned int lastCt_;
+ Interpolator<Matrix<float, 3, 3>> ccm_;
+};
+
+} /* namespace ipa::soft::algorithms */
+
+} /* namespace libcamera */
diff --git a/src/ipa/simple/algorithms/lut.cpp b/src/ipa/simple/algorithms/lut.cpp
index 0ba2391f..e8638f27 100644
--- a/src/ipa/simple/algorithms/lut.cpp
+++ b/src/ipa/simple/algorithms/lut.cpp
@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
- * Copyright (C) 2024, Red Hat Inc.
+ * Copyright (C) 2024-2025, Red Hat Inc.
*
* Color lookup tables construction
*/
@@ -14,9 +14,9 @@
#include <libcamera/base/log.h>
-#include "simple/ipa_context.h"
+#include <libcamera/control_ids.h>
-#include "control_ids.h"
+#include "simple/ipa_context.h"
namespace libcamera {
@@ -80,42 +80,78 @@ void Lut::updateGammaTable(IPAContext &context)
context.activeState.gamma.contrast = contrast;
}
+int16_t Lut::ccmValue(unsigned int i, float ccm) const
+{
+ return std::round(i * ccm);
+}
+
void Lut::prepare(IPAContext &context,
[[maybe_unused]] const uint32_t frame,
- [[maybe_unused]] IPAFrameContext &frameContext,
- [[maybe_unused]] DebayerParams *params)
+ IPAFrameContext &frameContext,
+ DebayerParams *params)
{
+ frameContext.contrast = context.activeState.knobs.contrast;
+
/*
* Update the gamma table if needed. This means if black level changes
* and since the black level gets updated only if a lower value is
* observed, it's not permanently prone to minor fluctuations or
* rounding errors.
*/
- if (context.activeState.gamma.blackLevel != context.activeState.blc.level ||
- context.activeState.gamma.contrast != context.activeState.knobs.contrast)
+ const bool gammaUpdateNeeded =
+ context.activeState.gamma.blackLevel != context.activeState.blc.level ||
+ context.activeState.gamma.contrast != context.activeState.knobs.contrast;
+ if (gammaUpdateNeeded)
updateGammaTable(context);
- auto &gains = context.activeState.gains;
+ auto &gains = context.activeState.awb.gains;
auto &gammaTable = context.activeState.gamma.gammaTable;
const unsigned int gammaTableSize = gammaTable.size();
-
- for (unsigned int i = 0; i < DebayerParams::kRGBLookupSize; i++) {
- const double div = static_cast<double>(DebayerParams::kRGBLookupSize) /
- gammaTableSize;
- /* Apply gamma after gain! */
- unsigned int idx;
- idx = std::min({ static_cast<unsigned int>(i * gains.red / div),
- gammaTableSize - 1 });
- params->red[i] = gammaTable[idx];
- idx = std::min({ static_cast<unsigned int>(i * gains.green / div),
- gammaTableSize - 1 });
- params->green[i] = gammaTable[idx];
- idx = std::min({ static_cast<unsigned int>(i * gains.blue / div),
- gammaTableSize - 1 });
- params->blue[i] = gammaTable[idx];
+ const double div = static_cast<double>(DebayerParams::kRGBLookupSize) /
+ gammaTableSize;
+
+ if (!context.ccmEnabled) {
+ for (unsigned int i = 0; i < DebayerParams::kRGBLookupSize; i++) {
+ /* Apply gamma after gain! */
+ const RGB<float> lutGains = (gains * i / div).min(gammaTableSize - 1);
+ params->red[i] = gammaTable[static_cast<unsigned int>(lutGains.r())];
+ params->green[i] = gammaTable[static_cast<unsigned int>(lutGains.g())];
+ params->blue[i] = gammaTable[static_cast<unsigned int>(lutGains.b())];
+ }
+ } else if (context.activeState.ccm.changed || gammaUpdateNeeded) {
+ Matrix<float, 3, 3> gainCcm = { { gains.r(), 0, 0,
+ 0, gains.g(), 0,
+ 0, 0, gains.b() } };
+ auto ccm = gainCcm * context.activeState.ccm.ccm;
+ auto &red = params->redCcm;
+ auto &green = params->greenCcm;
+ auto &blue = params->blueCcm;
+ for (unsigned int i = 0; i < DebayerParams::kRGBLookupSize; i++) {
+ red[i].r = ccmValue(i, ccm[0][0]);
+ red[i].g = ccmValue(i, ccm[1][0]);
+ red[i].b = ccmValue(i, ccm[2][0]);
+ green[i].r = ccmValue(i, ccm[0][1]);
+ green[i].g = ccmValue(i, ccm[1][1]);
+ green[i].b = ccmValue(i, ccm[2][1]);
+ blue[i].r = ccmValue(i, ccm[0][2]);
+ blue[i].g = ccmValue(i, ccm[1][2]);
+ blue[i].b = ccmValue(i, ccm[2][2]);
+ params->gammaLut[i] = gammaTable[i / div];
+ }
}
}
+void Lut::process([[maybe_unused]] IPAContext &context,
+ [[maybe_unused]] const uint32_t frame,
+ [[maybe_unused]] IPAFrameContext &frameContext,
+ [[maybe_unused]] const SwIspStats *stats,
+ ControlList &metadata)
+{
+ const auto &contrast = frameContext.contrast;
+ if (contrast)
+ metadata.set(controls::Contrast, contrast.value());
+}
+
REGISTER_IPA_ALGORITHM(Lut, "Lut")
} /* namespace ipa::soft::algorithms */
diff --git a/src/ipa/simple/algorithms/lut.h b/src/ipa/simple/algorithms/lut.h
index 889f864b..ba8b9021 100644
--- a/src/ipa/simple/algorithms/lut.h
+++ b/src/ipa/simple/algorithms/lut.h
@@ -30,9 +30,15 @@ public:
const uint32_t frame,
IPAFrameContext &frameContext,
DebayerParams *params) override;
+ void process(IPAContext &context,
+ const uint32_t frame,
+ IPAFrameContext &frameContext,
+ const SwIspStats *stats,
+ ControlList &metadata) override;
private:
void updateGammaTable(IPAContext &context);
+ int16_t ccmValue(unsigned int i, float ccm) const;
};
} /* namespace ipa::soft::algorithms */
diff --git a/src/ipa/simple/algorithms/meson.build b/src/ipa/simple/algorithms/meson.build
index 37a2eb53..2d0adb05 100644
--- a/src/ipa/simple/algorithms/meson.build
+++ b/src/ipa/simple/algorithms/meson.build
@@ -4,5 +4,6 @@ soft_simple_ipa_algorithms = files([
'awb.cpp',
'agc.cpp',
'blc.cpp',
+ 'ccm.cpp',
'lut.cpp',
])
diff --git a/src/ipa/simple/data/uncalibrated.yaml b/src/ipa/simple/data/uncalibrated.yaml
index 3f147112..5508e668 100644
--- a/src/ipa/simple/data/uncalibrated.yaml
+++ b/src/ipa/simple/data/uncalibrated.yaml
@@ -5,6 +5,15 @@ version: 1
algorithms:
- BlackLevel:
- Awb:
+ # Color correction matrices can be defined here. The CCM algorithm
+ # has a significant performance impact, and should only be enabled
+ # if tuned.
+ # - Ccm:
+ # ccms:
+ # - ct: 6500
+ # ccm: [ 1, 0, 0,
+ # 0, 1, 0,
+ # 0, 0, 1]
- Lut:
- Agc:
...
diff --git a/src/ipa/simple/ipa_context.h b/src/ipa/simple/ipa_context.h
index 4af51306..7dc2cd7a 100644
--- a/src/ipa/simple/ipa_context.h
+++ b/src/ipa/simple/ipa_context.h
@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
- * Copyright (C) 2024 Red Hat, Inc.
+ * Copyright (C) 2024-2025 Red Hat, Inc.
*
* Simple pipeline IPA Context
*/
@@ -13,8 +13,13 @@
#include <libcamera/controls.h>
+#include "libcamera/internal/matrix.h"
+#include "libcamera/internal/vector.h"
+
#include <libipa/fc_queue.h>
+#include "core_ipa_interface.h"
+
namespace libcamera {
namespace ipa::soft {
@@ -24,6 +29,7 @@ struct IPASessionConfiguration {
struct {
int32_t exposureMin, exposureMax;
double againMin, againMax, againMinStep;
+ utils::Duration lineDuration;
} agc;
struct {
std::optional<uint8_t> level;
@@ -36,10 +42,9 @@ struct IPAActiveState {
} blc;
struct {
- double red;
- double green;
- double blue;
- } gains;
+ RGB<float> gains;
+ unsigned int temperatureK;
+ } awb;
static constexpr unsigned int kGammaLookupSize = 1024;
struct {
@@ -47,6 +52,12 @@ struct IPAActiveState {
uint8_t blackLevel;
double contrast;
} gamma;
+
+ struct {
+ Matrix<float, 3, 3> ccm;
+ bool changed;
+ } ccm;
+
struct {
/* 0..2 range, 1.0 = normal */
std::optional<double> contrast;
@@ -55,9 +66,18 @@ struct IPAActiveState {
struct IPAFrameContext : public FrameContext {
struct {
+ Matrix<float, 3, 3> ccm;
+ } ccm;
+
+ struct {
int32_t exposure;
double gain;
} sensor;
+ struct {
+ double red;
+ double blue;
+ } gains;
+ std::optional<double> contrast;
};
struct IPAContext {
@@ -66,10 +86,12 @@ struct IPAContext {
{
}
+ IPACameraSensorInfo sensorInfo;
IPASessionConfiguration configuration;
IPAActiveState activeState;
FCQueue<IPAFrameContext> frameContexts;
ControlInfoMap::Map ctrlMap;
+ bool ccmEnabled;
};
} /* namespace ipa::soft */
diff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/simple/soft_simple.cpp
index b26e4e15..c94c4cd5 100644
--- a/src/ipa/simple/soft_simple.cpp
+++ b/src/ipa/simple/soft_simple.cpp
@@ -5,6 +5,7 @@
* Simple Software Image Processing Algorithm module
*/
+#include <chrono>
#include <stdint.h>
#include <sys/mman.h>
@@ -32,6 +33,8 @@
namespace libcamera {
LOG_DEFINE_CATEGORY(IPASoft)
+using namespace std::literals::chrono_literals;
+
namespace ipa::soft {
/* Maximum number of frame contexts to be held */
@@ -50,8 +53,10 @@ public:
int init(const IPASettings &settings,
const SharedFD &fdStats,
const SharedFD &fdParams,
- const ControlInfoMap &sensorInfoMap,
- ControlInfoMap *ipaControls) override;
+ const IPACameraSensorInfo &sensorInfo,
+ const ControlInfoMap &sensorControls,
+ ControlInfoMap *ipaControls,
+ bool *ccmEnabled) override;
int configure(const IPAConfigInfo &configInfo) override;
int start() override;
@@ -88,8 +93,10 @@ IPASoftSimple::~IPASoftSimple()
int IPASoftSimple::init(const IPASettings &settings,
const SharedFD &fdStats,
const SharedFD &fdParams,
- const ControlInfoMap &sensorInfoMap,
- ControlInfoMap *ipaControls)
+ const IPACameraSensorInfo &sensorInfo,
+ const ControlInfoMap &sensorControls,
+ ControlInfoMap *ipaControls,
+ bool *ccmEnabled)
{
camHelper_ = CameraSensorHelperFactoryBase::create(settings.sensorModel);
if (!camHelper_) {
@@ -98,6 +105,8 @@ int IPASoftSimple::init(const IPASettings &settings,
<< settings.sensorModel;
}
+ context_.sensorInfo = sensorInfo;
+
/* Load the tuning data file */
File file(settings.configurationFile);
if (!file.open(File::OpenModeFlag::ReadOnly)) {
@@ -125,6 +134,8 @@ int IPASoftSimple::init(const IPASettings &settings,
if (ret)
return ret;
+ *ccmEnabled = context_.ccmEnabled;
+
params_ = nullptr;
stats_ = nullptr;
@@ -169,12 +180,12 @@ int IPASoftSimple::init(const IPASettings &settings,
* Don't save the min and max control values yet, as e.g. the limits
* for V4L2_CID_EXPOSURE depend on the configured sensor resolution.
*/
- if (sensorInfoMap.find(V4L2_CID_EXPOSURE) == sensorInfoMap.end()) {
+ if (sensorControls.find(V4L2_CID_EXPOSURE) == sensorControls.end()) {
LOG(IPASoft, Error) << "Don't have exposure control";
return -EINVAL;
}
- if (sensorInfoMap.find(V4L2_CID_ANALOGUE_GAIN) == sensorInfoMap.end()) {
+ if (sensorControls.find(V4L2_CID_ANALOGUE_GAIN) == sensorControls.end()) {
LOG(IPASoft, Error) << "Don't have gain control";
return -EINVAL;
}
@@ -194,6 +205,8 @@ int IPASoftSimple::configure(const IPAConfigInfo &configInfo)
context_.activeState = {};
context_.frameContexts.clear();
+ context_.configuration.agc.lineDuration =
+ context_.sensorInfo.minLineLength * 1.0s / context_.sensorInfo.pixelRate;
context_.configuration.agc.exposureMin = exposureInfo.min().get<int32_t>();
context_.configuration.agc.exposureMax = exposureInfo.max().get<int32_t>();
if (!context_.configuration.agc.exposureMin) {
@@ -295,15 +308,10 @@ void IPASoftSimple::processStats(const uint32_t frame,
int32_t again = sensorControls.get(V4L2_CID_ANALOGUE_GAIN).get<int32_t>();
frameContext.sensor.gain = camHelper_ ? camHelper_->gain(again) : again;
- /*
- * Software ISP currently does not produce any metadata. Use an empty
- * ControlList for now.
- *
- * \todo Implement proper metadata handling
- */
ControlList metadata(controls::controls);
for (auto const &algo : algorithms())
algo->process(context_, frame, frameContext, stats_, metadata);
+ metadataReady.emit(frame, metadata);
/* Sanity check */
if (!sensorControls.contains(V4L2_CID_EXPOSURE) ||
diff --git a/src/libcamera/base/log.cpp b/src/libcamera/base/log.cpp
index 3a656b8f..8bf3e1da 100644
--- a/src/libcamera/base/log.cpp
+++ b/src/libcamera/base/log.cpp
@@ -8,12 +8,15 @@
#include <libcamera/base/log.h>
#include <array>
+#include <charconv>
+#include <fnmatch.h>
#include <fstream>
#include <iostream>
#include <list>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <string_view>
#include <syslog.h>
#include <time.h>
#include <unordered_set>
@@ -38,8 +41,8 @@
* The levels are configurable through the LIBCAMERA_LOG_LEVELS environment
* variable that contains a comma-separated list of 'category:level' pairs.
*
- * The category names are strings and can include a wildcard ('*') character at
- * the end to match multiple categories.
+ * The category names are strings and can include a wildcard ('*') character to
+ * match multiple categories.
*
* The level are either numeric values, or strings containing the log level
* name. The available log levels are DEBUG, INFO, WARN, ERROR and FATAL. Log
@@ -311,15 +314,15 @@ private:
void parseLogFile();
void parseLogLevels();
- static LogSeverity parseLogLevel(const std::string &level);
+ static LogSeverity parseLogLevel(std::string_view level);
friend LogCategory;
- void registerCategory(LogCategory *category);
- LogCategory *findCategory(const char *name) const;
+ LogCategory *findOrCreateCategory(std::string_view name);
static bool destroyed_;
- std::vector<LogCategory *> categories_;
+ Mutex mutex_;
+ std::vector<std::unique_ptr<LogCategory>> categories_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
std::list<std::pair<std::string, LogSeverity>> levels_;
std::shared_ptr<LogOutput> output_;
@@ -436,9 +439,6 @@ void logSetLevel(const char *category, const char *level)
Logger::~Logger()
{
destroyed_ = true;
-
- for (LogCategory *category : categories_)
- delete category;
}
/**
@@ -569,7 +569,9 @@ void Logger::logSetLevel(const char *category, const char *level)
if (severity == LogInvalid)
return;
- for (LogCategory *c : categories_) {
+ MutexLocker locker(mutex_);
+
+ for (const auto &c : categories_) {
if (c->name() == category) {
c->setSeverity(severity);
break;
@@ -640,17 +642,17 @@ void Logger::parseLogLevels()
if (!len)
continue;
- std::string category;
- std::string level;
+ std::string_view category;
+ std::string_view level;
const char *colon = static_cast<const char *>(memchr(pair, ':', len));
if (!colon) {
/* 'x' is a shortcut for '*:x'. */
category = "*";
- level = std::string(pair, len);
+ level = std::string_view(pair, len);
} else {
- category = std::string(pair, colon - pair);
- level = std::string(colon + 1, comma - colon - 1);
+ category = std::string_view(pair, colon - pair);
+ level = std::string_view(colon + 1, comma - colon - 1);
}
/* Both the category and the level must be specified. */
@@ -661,7 +663,7 @@ void Logger::parseLogLevels()
if (severity == LogInvalid)
continue;
- levels_.push_back({ category, severity });
+ levels_.emplace_back(category, severity);
}
}
@@ -675,7 +677,7 @@ void Logger::parseLogLevels()
*
* \return The log severity, or LogInvalid if the string is invalid
*/
-LogSeverity Logger::parseLogLevel(const std::string &level)
+LogSeverity Logger::parseLogLevel(std::string_view level)
{
static const char *const names[] = {
"DEBUG",
@@ -685,15 +687,13 @@ LogSeverity Logger::parseLogLevel(const std::string &level)
"FATAL",
};
- int severity;
+ unsigned int severity = LogInvalid;
if (std::isdigit(level[0])) {
- char *endptr;
- severity = strtoul(level.c_str(), &endptr, 10);
- if (*endptr != '\0' || severity > LogFatal)
+ auto [end, ec] = std::from_chars(level.data(), level.data() + level.size(), severity);
+ if (ec != std::errc() || *end != '\0' || severity > LogFatal)
severity = LogInvalid;
} else {
- severity = LogInvalid;
for (unsigned int i = 0; i < std::size(names); ++i) {
if (names[i] == level) {
severity = i;
@@ -706,52 +706,28 @@ LogSeverity Logger::parseLogLevel(const std::string &level)
}
/**
- * \brief Register a log category with the logger
- * \param[in] category The log category
- *
- * Log categories must have unique names. It is invalid to call this function
- * if a log category with the same name already exists.
+ * \brief Find an existing log category with the given name or create one
+ * \param[in] name Name of the log category
+ * \return The pointer to the log category found or created
*/
-void Logger::registerCategory(LogCategory *category)
+LogCategory *Logger::findOrCreateCategory(std::string_view name)
{
- categories_.push_back(category);
-
- const std::string &name = category->name();
- for (const std::pair<std::string, LogSeverity> &level : levels_) {
- bool match = true;
-
- for (unsigned int i = 0; i < level.first.size(); ++i) {
- if (level.first[i] == '*')
- break;
-
- if (i >= name.size() ||
- name[i] != level.first[i]) {
- match = false;
- break;
- }
- }
+ MutexLocker locker(mutex_);
- if (match) {
- category->setSeverity(level.second);
- break;
- }
+ for (const auto &category : categories_) {
+ if (category->name() == name)
+ return category.get();
}
-}
-/**
- * \brief Find an existing log category with the given name
- * \param[in] name Name of the log category
- * \return The pointer to the found log category or nullptr if not found
- */
-LogCategory *Logger::findCategory(const char *name) const
-{
- if (auto it = std::find_if(categories_.begin(), categories_.end(),
- [name](auto c) { return c->name() == name; });
- it != categories_.end()) {
- return *it;
+ LogCategory *category = categories_.emplace_back(std::unique_ptr<LogCategory>(new LogCategory(name))).get();
+ const char *categoryName = category->name().c_str();
+
+ for (const auto &[pattern, severity] : levels_) {
+ if (fnmatch(pattern.c_str(), categoryName, FNM_NOESCAPE) == 0)
+ category->setSeverity(severity);
}
- return nullptr;
+ return category;
}
/**
@@ -787,25 +763,16 @@ LogCategory *Logger::findCategory(const char *name) const
*
* \return The pointer to the LogCategory
*/
-LogCategory *LogCategory::create(const char *name)
+LogCategory *LogCategory::create(std::string_view name)
{
- static Mutex mutex_;
- MutexLocker locker(mutex_);
- LogCategory *category = Logger::instance()->findCategory(name);
-
- if (!category) {
- category = new LogCategory(name);
- Logger::instance()->registerCategory(category);
- }
-
- return category;
+ return Logger::instance()->findOrCreateCategory(name);
}
/**
* \brief Construct a log category
* \param[in] name The category name
*/
-LogCategory::LogCategory(const char *name)
+LogCategory::LogCategory(std::string_view name)
: name_(name), severity_(LogSeverity::LogInfo)
{
}
@@ -824,15 +791,12 @@ LogCategory::LogCategory(const char *name)
*/
/**
+ * \fn LogCategory::setSeverity(LogSeverity severity)
* \brief Set the severity of the log category
*
* Messages of severity higher than or equal to the severity of the log category
* are printed, other messages are discarded.
*/
-void LogCategory::setSeverity(LogSeverity severity)
-{
- severity_ = severity;
-}
/**
* \brief Retrieve the default log category
@@ -874,39 +838,12 @@ const LogCategory &LogCategory::defaultCategory()
*/
LogMessage::LogMessage(const char *fileName, unsigned int line,
const LogCategory &category, LogSeverity severity,
- const std::string &prefix)
- : category_(category), severity_(severity), prefix_(prefix)
+ std::string prefix)
+ : category_(category), severity_(severity),
+ timestamp_(utils::clock::now()),
+ fileInfo_(static_cast<std::ostringstream &&>(std::ostringstream() << utils::basename(fileName) << ":" << line).str()),
+ prefix_(std::move(prefix))
{
- init(fileName, line);
-}
-
-/**
- * \brief Move-construct a log message
- * \param[in] other The other message
- *
- * The move constructor is meant to support the _log() functions. Thanks to copy
- * elision it will likely never be called, but C++11 only permits copy elision,
- * it doesn't enforce it unlike C++17. To avoid potential link errors depending
- * on the compiler type and version, and optimization level, the move
- * constructor is defined even if it will likely never be called, and ensures
- * that the destructor of the \a other message will not output anything to the
- * log by setting the severity to LogInvalid.
- */
-LogMessage::LogMessage(LogMessage &&other)
- : msgStream_(std::move(other.msgStream_)), category_(other.category_),
- severity_(other.severity_)
-{
- other.severity_ = LogInvalid;
-}
-
-void LogMessage::init(const char *fileName, unsigned int line)
-{
- /* Log the timestamp, severity and file information. */
- timestamp_ = utils::clock::now();
-
- std::ostringstream ossFileInfo;
- ossFileInfo << utils::basename(fileName) << ":" << line;
- fileInfo_ = ossFileInfo.str();
}
LogMessage::~LogMessage()
diff --git a/src/libcamera/base/object.cpp b/src/libcamera/base/object.cpp
index 745d2565..37d133cc 100644
--- a/src/libcamera/base/object.cpp
+++ b/src/libcamera/base/object.cpp
@@ -350,7 +350,7 @@ void Object::connect(SignalBase *signal)
void Object::disconnect(SignalBase *signal)
{
- for (auto iter = signals_.begin(); iter != signals_.end(); ) {
+ for (auto iter = signals_.begin(); iter != signals_.end();) {
if (*iter == signal)
iter = signals_.erase(iter);
else
diff --git a/src/libcamera/base/signal.cpp b/src/libcamera/base/signal.cpp
index b782e050..7876a21d 100644
--- a/src/libcamera/base/signal.cpp
+++ b/src/libcamera/base/signal.cpp
@@ -49,7 +49,7 @@ void SignalBase::disconnect(std::function<bool(SlotList::iterator &)> match)
{
MutexLocker locker(signalsLock);
- for (auto iter = slots_.begin(); iter != slots_.end(); ) {
+ for (auto iter = slots_.begin(); iter != slots_.end();) {
if (match(iter)) {
Object *object = (*iter)->object();
if (object)
diff --git a/src/libcamera/base/thread.cpp b/src/libcamera/base/thread.cpp
index f6322fe3..d8fe0d69 100644
--- a/src/libcamera/base/thread.cpp
+++ b/src/libcamera/base/thread.cpp
@@ -257,6 +257,8 @@ void Thread::start()
data_->exit_.store(false, std::memory_order_relaxed);
thread_ = std::thread(&Thread::startThread, this);
+
+ setThreadAffinityInternal();
}
void Thread::startThread()
@@ -284,8 +286,6 @@ void Thread::startThread()
data_->tid_ = syscall(SYS_gettid);
currentThreadData = data_;
- setThreadAffinityInternal();
-
run();
}
@@ -604,10 +604,12 @@ void Thread::removeMessages(Object *receiver)
/**
* \brief Dispatch posted messages for this thread
* \param[in] type The message type
+ * \param[in] receiver The receiver whose messages to dispatch
*
- * This function immediately dispatches all the messages previously posted for
- * this thread with postMessage() that match the message \a type. If the \a type
- * is Message::Type::None, all messages are dispatched.
+ * This function immediately dispatches all the messages of the given \a type
+ * previously posted to this thread for the \a receiver with postMessage(). If
+ * the \a type is Message::Type::None, all messages types are dispatched. If the
+ * \a receiver is null, messages to all receivers are dispatched.
*
* Messages shall only be dispatched from the current thread, typically within
* the thread from the run() function. Calling this function outside of the
@@ -617,7 +619,7 @@ void Thread::removeMessages(Object *receiver)
* same thread from an object's message handler. It guarantees delivery of
* messages in the order they have been posted in all cases.
*/
-void Thread::dispatchMessages(Message::Type type)
+void Thread::dispatchMessages(Message::Type type, Object *receiver)
{
ASSERT(data_ == ThreadData::current());
@@ -634,6 +636,9 @@ void Thread::dispatchMessages(Message::Type type)
if (type != Message::Type::None && msg->type() != type)
continue;
+ if (receiver && receiver != msg->receiver_)
+ continue;
+
/*
* Move the message, setting the entry in the list to null. It
* will cause recursive calls to ignore the entry, and the erase
@@ -641,12 +646,12 @@ void Thread::dispatchMessages(Message::Type type)
*/
std::unique_ptr<Message> message = std::move(msg);
- Object *receiver = message->receiver_;
- ASSERT(data_ == receiver->thread()->data_);
- receiver->pendingMessages_--;
+ Object *messageReceiver = message->receiver_;
+ ASSERT(data_ == messageReceiver->thread()->data_);
+ messageReceiver->pendingMessages_--;
locker.unlock();
- receiver->message(message.get());
+ messageReceiver->message(message.get());
message.reset();
locker.lock();
}
@@ -657,7 +662,7 @@ void Thread::dispatchMessages(Message::Type type)
* the outer calls.
*/
if (!--data_->messages_.recursion_) {
- for (auto iter = messages.begin(); iter != messages.end(); ) {
+ for (auto iter = messages.begin(); iter != messages.end();) {
if (!*iter)
iter = messages.erase(iter);
else
diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 69a7ee53..c180a5fd 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -19,7 +19,9 @@
#include <libcamera/base/thread.h>
#include <libcamera/color_space.h>
+#include <libcamera/control_ids.h>
#include <libcamera/framebuffer_allocator.h>
+#include <libcamera/property_ids.h>
#include <libcamera/request.h>
#include <libcamera/stream.h>
@@ -586,7 +588,8 @@ CameraConfiguration::Status CameraConfiguration::validateColorSpaces(ColorSpaceF
* \param[in] pipe The pipeline handler responsible for the camera device
*/
Camera::Private::Private(PipelineHandler *pipe)
- : requestSequence_(0), pipe_(pipe->shared_from_this()),
+ : controlInfo_({}, controls::controls), properties_(properties::properties),
+ requestSequence_(0), pipe_(pipe->shared_from_this()),
disconnected_(false), state_(CameraAvailable)
{
}
@@ -1325,6 +1328,25 @@ int Camera::queueRequest(Request *request)
}
}
+ /* Pre-process AeEnable. */
+ ControlList &controls = request->controls();
+ const auto &aeEnable = controls.get(controls::AeEnable);
+ if (aeEnable) {
+ if (_d()->controlInfo_.count(controls::AnalogueGainMode.id()) &&
+ !controls.contains(controls::AnalogueGainMode.id())) {
+ controls.set(controls::AnalogueGainMode,
+ *aeEnable ? controls::AnalogueGainModeAuto
+ : controls::AnalogueGainModeManual);
+ }
+
+ if (_d()->controlInfo_.count(controls::ExposureTimeMode.id()) &&
+ !controls.contains(controls::ExposureTimeMode.id())) {
+ controls.set(controls::ExposureTimeMode,
+ *aeEnable ? controls::ExposureTimeModeAuto
+ : controls::ExposureTimeModeManual);
+ }
+ }
+
d->pipe_->invokeMethod(&PipelineHandler::queueRequest,
ConnectionTypeQueued, request);
diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
index 87e6717e..400109f1 100644
--- a/src/libcamera/camera_manager.cpp
+++ b/src/libcamera/camera_manager.cpp
@@ -202,24 +202,24 @@ void CameraManager::Private::addCamera(std::shared_ptr<Camera> camera)
{
ASSERT(Thread::current() == this);
- MutexLocker locker(mutex_);
+ {
+ MutexLocker locker(mutex_);
- for (const std::shared_ptr<Camera> &c : cameras_) {
- if (c->id() == camera->id()) {
- LOG(Camera, Fatal)
- << "Trying to register a camera with a duplicated ID '"
- << camera->id() << "'";
- return;
+ for (const std::shared_ptr<Camera> &c : cameras_) {
+ if (c->id() == camera->id()) {
+ LOG(Camera, Fatal)
+ << "Trying to register a camera with a duplicated ID '"
+ << camera->id() << "'";
+ return;
+ }
}
- }
- cameras_.push_back(std::move(camera));
-
- unsigned int index = cameras_.size() - 1;
+ cameras_.push_back(camera);
+ }
/* Report the addition to the public signal */
CameraManager *const o = LIBCAMERA_O_PTR();
- o->cameraAdded.emit(cameras_[index]);
+ o->cameraAdded.emit(camera);
}
/**
@@ -236,20 +236,22 @@ void CameraManager::Private::removeCamera(std::shared_ptr<Camera> camera)
{
ASSERT(Thread::current() == this);
- MutexLocker locker(mutex_);
+ {
+ MutexLocker locker(mutex_);
- auto iter = std::find_if(cameras_.begin(), cameras_.end(),
- [camera](std::shared_ptr<Camera> &c) {
- return c.get() == camera.get();
- });
- if (iter == cameras_.end())
- return;
+ auto iter = std::find_if(cameras_.begin(), cameras_.end(),
+ [camera](std::shared_ptr<Camera> &c) {
+ return c.get() == camera.get();
+ });
+ if (iter == cameras_.end())
+ return;
+
+ cameras_.erase(iter);
+ }
LOG(Camera, Debug)
<< "Unregistering camera '" << camera->id() << "'";
- cameras_.erase(iter);
-
/* Report the removal to the public signal */
CameraManager *const o = LIBCAMERA_O_PTR();
o->cameraRemoved.emit(camera);
diff --git a/src/libcamera/control_ids_core.yaml b/src/libcamera/control_ids_core.yaml
index 1dfaee0c..aa744864 100644
--- a/src/libcamera/control_ids_core.yaml
+++ b/src/libcamera/control_ids_core.yaml
@@ -10,23 +10,82 @@ vendor: libcamera
controls:
- AeEnable:
type: bool
- direction: inout
+ direction: in
description: |
- Enable or disable the AE.
+ Enable or disable the AEGC algorithm. When this control is set to true,
+ both ExposureTimeMode and AnalogueGainMode are set to auto, and if this
+ control is set to false then both are set to manual.
- \sa ExposureTime AnalogueGain
+ If ExposureTimeMode or AnalogueGainMode are also set in the same
+ request as AeEnable, then the modes supplied by ExposureTimeMode or
+ AnalogueGainMode will take precedence.
- - AeLocked:
- type: bool
+ \sa ExposureTimeMode AnalogueGainMode
+
+ - AeState:
+ type: int32_t
direction: out
description: |
- Report the lock status of a running AE algorithm.
+ Report the AEGC algorithm state.
- If the AE algorithm is locked the value shall be set to true, if it's
- converging it shall be set to false. If the AE algorithm is not
- running the control shall not be present in the metadata control list.
+ The AEGC algorithm computes the exposure time and the analogue gain
+ to be applied to the image sensor.
+
+ The AEGC algorithm behaviour is controlled by the ExposureTimeMode and
+ AnalogueGainMode controls, which allow applications to decide how
+ the exposure time and gain are computed, in Auto or Manual mode,
+ independently from one another.
+
+ The AeState control reports the AEGC algorithm state through a single
+ value and describes it as a single computation block which computes
+ both the exposure time and the analogue gain values.
+
+ When both the exposure time and analogue gain values are configured to
+ be in Manual mode, the AEGC algorithm is quiescent and does not actively
+ compute any value and the AeState control will report AeStateIdle.
+
+ When at least the exposure time or analogue gain are configured to be
+ computed by the AEGC algorithm, the AeState control will report if the
+ algorithm has converged to stable values for all of the controls set
+ to be computed in Auto mode.
+
+ \sa AnalogueGainMode
+ \sa ExposureTimeMode
+
+ enum:
+ - name: AeStateIdle
+ value: 0
+ description: |
+ The AEGC algorithm is inactive.
+
+ This state is returned when both AnalogueGainMode and
+ ExposureTimeMode are set to Manual and the algorithm is not
+ actively computing any value.
+ - name: AeStateSearching
+ value: 1
+ description: |
+ The AEGC algorithm is actively computing new values, for either the
+ exposure time or the analogue gain, but has not converged to a
+ stable result yet.
+
+ This state is returned if at least one of AnalogueGainMode or
+ ExposureTimeMode is auto and the algorithm hasn't converged yet.
+
+ The AEGC algorithm converges once stable values are computed for
+ all of the controls set to be computed in Auto mode. Once the
+ algorithm converges the state is moved to AeStateConverged.
+ - name: AeStateConverged
+ value: 2
+ description: |
+ The AEGC algorithm has converged.
- \sa AeEnable
+ This state is returned if at least one of AnalogueGainMode or
+ ExposureTimeMode is Auto, and the AEGC algorithm has converged to a
+ stable value.
+
+ If the measurements move too far away from the convergence point
+ then the AEGC algorithm might start adjusting again, in which case
+ the state is moved to AeStateSearching.
# AeMeteringMode needs further attention:
# - Auto-generate max enum value.
@@ -109,6 +168,13 @@ controls:
The exposure modes specify how the desired total exposure is divided
between the exposure time and the sensor's analogue gain. They are
platform specific, and not all exposure modes may be supported.
+
+ When one of AnalogueGainMode or ExposureTimeMode is set to Manual,
+ the fixed values will override any choices made by AeExposureMode.
+
+ \sa AnalogueGainMode
+ \sa ExposureTimeMode
+
enum:
- name: ExposureNormal
value: 0
@@ -130,13 +196,15 @@ controls:
Specify an Exposure Value (EV) parameter.
The EV parameter will only be applied if the AE algorithm is currently
- enabled.
+ enabled, that is, at least one of AnalogueGainMode and ExposureTimeMode
+ are in Auto mode.
By convention EV adjusts the exposure as log2. For example
EV = [-2, -1, -0.5, 0, 0.5, 1, 2] results in an exposure adjustment
of [1/4x, 1/2x, 1/sqrt(2)x, 1x, sqrt(2)x, 2x, 4x].
- \sa AeEnable
+ \sa AnalogueGainMode
+ \sa ExposureTimeMode
- ExposureTime:
type: int32_t
@@ -146,17 +214,108 @@ controls:
This value is specified in micro-seconds.
- Setting this value means that it is now fixed and the AE algorithm may
- not change it. Setting it back to zero returns it to the control of the
- AE algorithm.
+ This control will only take effect if ExposureTimeMode is Manual. If
+ this control is set when ExposureTimeMode is Auto, the value will be
+ ignored and will not be retained.
+
+ When reported in metadata, this control indicates what exposure time
+ was used for the current frame, regardless of ExposureTimeMode.
+ ExposureTimeMode will indicate the source of the exposure time value,
+ whether it came from the AE algorithm or not.
+
+ \sa AnalogueGain
+ \sa ExposureTimeMode
+
+ - ExposureTimeMode:
+ type: int32_t
+ direction: inout
+ description: |
+ Controls the source of the exposure time that is applied to the image
+ sensor.
+
+ When set to Auto, the AE algorithm computes the exposure time and
+ configures the image sensor accordingly. When set to Manual, the value
+ of the ExposureTime control is used.
+
+ When transitioning from Auto to Manual mode and no ExposureTime control
+ is provided by the application, the last value computed by the AE
+ algorithm when the mode was Auto will be used. If the ExposureTimeMode
+ was never set to Auto (either because the camera started in Manual mode,
+ or Auto is not supported by the camera), the camera should use a
+ best-effort default value.
- \sa AnalogueGain AeEnable
+ If ExposureTimeModeManual is supported, the ExposureTime control must
+ also be supported.
- \todo Document the interactions between AeEnable and setting a fixed
- value for this control. Consider interactions with other AE features,
- such as aperture and aperture/shutter priority mode, and decide if
- control of which features should be automatically adjusted shouldn't
- better be handled through a separate AE mode control.
+ Cameras that support manual control of the sensor shall support manual
+ mode for both ExposureTimeMode and AnalogueGainMode, and shall expose
+ the ExposureTime and AnalogueGain controls. If the camera also has an
+ AEGC implementation, both ExposureTimeMode and AnalogueGainMode shall
+ support both manual and auto mode. If auto mode is available, it shall
+ be the default mode. These rules do not apply to black box cameras
+ such as UVC cameras, where the available gain and exposure modes are
+ completely dependent on what the device exposes.
+
+ \par Flickerless exposure mode transitions
+
+ Applications that wish to transition from ExposureTimeModeAuto to direct
+ control of the exposure time without causing extra flicker can do so by
+ selecting an ExposureTime value as close as possible to the last value
+ computed by the auto exposure algorithm in order to avoid any visible
+ flickering.
+
+ To select the correct value to use as ExposureTime value, applications
+ should accommodate the natural delay in applying controls caused by the
+ capture pipeline frame depth.
+
+ When switching to manual exposure mode, applications should not
+ immediately specify an ExposureTime value in the same request where
+ ExposureTimeMode is set to Manual. They should instead wait for the
+ first Request where ExposureTimeMode is reported as
+ ExposureTimeModeManual in the Request metadata, and use the reported
+ ExposureTime to populate the control value in the next Request to be
+ queued to the Camera.
+
+ The implementation of the auto-exposure algorithm should equally try to
+ minimize flickering and when transitioning from manual exposure mode to
+ auto exposure use the last value provided by the application as starting
+ point.
+
+ 1. Start with ExposureTimeMode set to Auto
+
+ 2. Set ExposureTimeMode to Manual
+
+ 3. Wait for the first completed request that has ExposureTimeMode
+ set to Manual
+
+ 4. Copy the value reported in ExposureTime into a new request, and
+ submit it
+
+ 5. Proceed to run manual exposure time as desired
+
+ \sa ExposureTime
+ enum:
+ - name: ExposureTimeModeAuto
+ value: 0
+ description: |
+ The exposure time will be calculated automatically and set by the
+ AE algorithm.
+
+ If ExposureTime is set while this mode is active, it will be
+ ignored, and its value will not be retained.
+
+ When transitioning from Manual to Auto mode, the AEGC should start
+ its adjustments based on the last set manual ExposureTime value.
+ - name: ExposureTimeModeManual
+ value: 1
+ description: |
+ The exposure time will not be updated by the AE algorithm.
+
+ When transitioning from Auto to Manual mode, the last computed
+ exposure value is used until a new value is specified through the
+ ExposureTime control. If an ExposureTime value is specified in the
+ same request where the ExposureTimeMode is changed from Auto to
+ Manual, the provided ExposureTime is applied immediately.
- AnalogueGain:
type: float
@@ -167,17 +326,77 @@ controls:
The value of the control specifies the gain multiplier applied to all
colour channels. This value cannot be lower than 1.0.
- Setting this value means that it is now fixed and the AE algorithm may
- not change it. Setting it back to zero returns it to the control of the
- AE algorithm.
+ This control will only take effect if AnalogueGainMode is Manual. If
+ this control is set when AnalogueGainMode is Auto, the value will be
+ ignored and will not be retained.
+
+ When reported in metadata, this control indicates what analogue gain
+ was used for the current request, regardless of AnalogueGainMode.
+ AnalogueGainMode will indicate the source of the analogue gain value,
+ whether it came from the AEGC algorithm or not.
+
+ \sa ExposureTime
+ \sa AnalogueGainMode
+
+ - AnalogueGainMode:
+ type: int32_t
+ direction: inout
+ description: |
+ Controls the source of the analogue gain that is applied to the image
+ sensor.
+
+ When set to Auto, the AEGC algorithm computes the analogue gain and
+ configures the image sensor accordingly. When set to Manual, the value
+ of the AnalogueGain control is used.
+
+ When transitioning from Auto to Manual mode and no AnalogueGain control
+ is provided by the application, the last value computed by the AEGC
+ algorithm when the mode was Auto will be used. If the AnalogueGainMode
+ was never set to Auto (either because the camera started in Manual mode,
+ or Auto is not supported by the camera), the camera should use a
+ best-effort default value.
+
+ If AnalogueGainModeManual is supported, the AnalogueGain control must
+ also be supported.
+
+ For cameras where we have control over the ISP, both ExposureTimeMode
+ and AnalogueGainMode are expected to support manual mode, and both
+ controls (as well as ExposureTimeMode and AnalogueGain) are expected to
+ be present. If the camera also has an AEGC implementation, both
+ ExposureTimeMode and AnalogueGainMode shall support both manual and
+ auto mode. If auto mode is available, it shall be the default mode.
+ These rules do not apply to black box cameras such as UVC cameras,
+ where the available gain and exposure modes are completely dependent on
+ what the hardware exposes.
+
+ The same procedure described for performing flickerless transitions in
+ the ExposureTimeMode control documentation can be applied to analogue
+ gain.
+
+ \sa ExposureTimeMode
+ \sa AnalogueGain
+ enum:
+ - name: AnalogueGainModeAuto
+ value: 0
+ description: |
+ The analogue gain will be calculated automatically and set by the
+ AEGC algorithm.
+
+ If AnalogueGain is set while this mode is active, it will be
+ ignored, and it will also not be retained.
- \sa ExposureTime AeEnable
+ When transitioning from Manual to Auto mode, the AEGC should start
+ its adjustments based on the last set manual AnalogueGain value.
+ - name: AnalogueGainModeManual
+ value: 1
+ description: |
+ The analogue gain will not be updated by the AEGC algorithm.
- \todo Document the interactions between AeEnable and setting a fixed
- value for this control. Consider interactions with other AE features,
- such as aperture and aperture/shutter priority mode, and decide if
- control of which features should be automatically adjusted shouldn't
- better be handled through a separate AE mode control.
+ When transitioning from Auto to Manual mode, the last computed
+ gain value is used until a new value is specified through the
+ AnalogueGain control. If an AnalogueGain value is specified in the
+ same request where the AnalogueGainMode is changed from Auto to
+ Manual, the provided AnalogueGain is applied immediately.
- AeFlickerMode:
type: int32_t
diff --git a/src/libcamera/control_ids_draft.yaml b/src/libcamera/control_ids_draft.yaml
index 87e4e02d..03309eea 100644
--- a/src/libcamera/control_ids_draft.yaml
+++ b/src/libcamera/control_ids_draft.yaml
@@ -80,36 +80,6 @@ controls:
High quality aberration correction which might reduce the frame
rate.
- - AeState:
- type: int32_t
- direction: out
- description: |
- Control to report the current AE algorithm state. Currently identical to
- ANDROID_CONTROL_AE_STATE.
-
- Current state of the AE algorithm.
- enum:
- - name: AeStateInactive
- value: 0
- description: The AE algorithm is inactive.
- - name: AeStateSearching
- value: 1
- description: The AE algorithm has not converged yet.
- - name: AeStateConverged
- value: 2
- description: The AE algorithm has converged.
- - name: AeStateLocked
- value: 3
- description: The AE algorithm is locked.
- - name: AeStateFlashRequired
- value: 4
- description: The AE algorithm would need a flash for good results
- - name: AeStatePrecapture
- value: 5
- description: |
- The AE algorithm has started a pre-capture metering session.
- \sa AePrecaptureTrigger
-
- AwbState:
type: int32_t
direction: out
diff --git a/src/libcamera/control_ids_rpi.yaml b/src/libcamera/control_ids_rpi.yaml
index 7524c5d2..8d1e8b47 100644
--- a/src/libcamera/control_ids_rpi.yaml
+++ b/src/libcamera/control_ids_rpi.yaml
@@ -58,4 +58,17 @@ controls:
official libcamera API support for per-stream controls in the future.
\sa ScalerCrop
+
+ - PispStatsOutput:
+ type: uint8_t
+ direction: out
+ size: [n]
+ description: |
+ Span of the PiSP Frontend ISP generated statistics for the current
+ frame. This is sent in the Request metadata if the StatsOutputEnable is
+ set to true. The statistics struct definition can be found in
+ https://github.com/raspberrypi/libpisp/blob/main/src/libpisp/frontend/pisp_statistics.h
+
+ \sa StatsOutputEnable
+
...
diff --git a/src/libcamera/converter/converter_v4l2_m2m.cpp b/src/libcamera/converter/converter_v4l2_m2m.cpp
index 566f18ce..ee05b798 100644
--- a/src/libcamera/converter/converter_v4l2_m2m.cpp
+++ b/src/libcamera/converter/converter_v4l2_m2m.cpp
@@ -738,7 +738,7 @@ int V4L2M2MConverter::queueBuffers(FrameBuffer *input,
}
/*
- * \todo: This should be extended to include Feature::Flag to denote
+ * \todo This should be extended to include Feature::Flag to denote
* what each converter supports feature-wise.
*/
static std::initializer_list<std::string> compatibles = {
diff --git a/src/libcamera/dma_buf_allocator.cpp b/src/libcamera/dma_buf_allocator.cpp
index a014c3b4..d8c62dd6 100644
--- a/src/libcamera/dma_buf_allocator.cpp
+++ b/src/libcamera/dma_buf_allocator.cpp
@@ -325,7 +325,12 @@ DmaSyncer::DmaSyncer(SharedFD fd, SyncType type)
DmaSyncer::~DmaSyncer()
{
- sync(DMA_BUF_SYNC_END);
+ /*
+ * DmaSyncer might be moved and left with an empty SharedFD.
+ * Avoid syncing with an invalid file descriptor in this case.
+ */
+ if (fd_.isValid())
+ sync(DMA_BUF_SYNC_END);
}
void DmaSyncer::sync(uint64_t step)
diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp
index cfc24d38..830750dc 100644
--- a/src/libcamera/ipa_manager.cpp
+++ b/src/libcamera/ipa_manager.cpp
@@ -149,11 +149,7 @@ IPAManager::IPAManager()
<< "No IPA found in '" IPA_MODULE_DIR "'";
}
-IPAManager::~IPAManager()
-{
- for (IPAModule *module : modules_)
- delete module;
-}
+IPAManager::~IPAManager() = default;
/**
* \brief Identify shared library objects within a directory
@@ -226,15 +222,13 @@ unsigned int IPAManager::addDir(const char *libDir, unsigned int maxDepth)
unsigned int count = 0;
for (const std::string &file : files) {
- IPAModule *ipaModule = new IPAModule(file);
- if (!ipaModule->isValid()) {
- delete ipaModule;
+ auto ipaModule = std::make_unique<IPAModule>(file);
+ if (!ipaModule->isValid())
continue;
- }
LOG(IPAManager, Debug) << "Loaded IPA module '" << file << "'";
- modules_.push_back(ipaModule);
+ modules_.push_back(std::move(ipaModule));
count++;
}
@@ -250,9 +244,9 @@ unsigned int IPAManager::addDir(const char *libDir, unsigned int maxDepth)
IPAModule *IPAManager::module(PipelineHandler *pipe, uint32_t minVersion,
uint32_t maxVersion)
{
- for (IPAModule *module : modules_) {
+ for (const auto &module : modules_) {
if (module->match(pipe, minVersion, maxVersion))
- return module;
+ return module.get();
}
return nullptr;
diff --git a/src/libcamera/ipa_proxy.cpp b/src/libcamera/ipa_proxy.cpp
index 85004737..9907b961 100644
--- a/src/libcamera/ipa_proxy.cpp
+++ b/src/libcamera/ipa_proxy.cpp
@@ -98,16 +98,33 @@ IPAProxy::~IPAProxy()
std::string IPAProxy::configurationFile(const std::string &name,
const std::string &fallbackName) const
{
- struct stat statbuf;
- int ret;
-
/*
* The IPA module name can be used as-is to build directory names as it
* has been validated when loading the module.
*/
- std::string ipaName = ipam_->info().name;
+ const std::string ipaName = ipam_->info().name;
+
+ /*
+ * Start with any user override through the module-specific environment
+ * variable. Use the name of the IPA module up to the first '/' to
+ * construct the variable name.
+ */
+ std::string ipaEnvName = ipaName.substr(0, ipaName.find('/'));
+ std::transform(ipaEnvName.begin(), ipaEnvName.end(), ipaEnvName.begin(),
+ [](unsigned char c) { return std::toupper(c); });
+ ipaEnvName = "LIBCAMERA_" + ipaEnvName + "_TUNING_FILE";
- /* Check the environment variable first. */
+ char const *configFromEnv = utils::secure_getenv(ipaEnvName.c_str());
+ if (configFromEnv && *configFromEnv != '\0')
+ return { configFromEnv };
+
+ struct stat statbuf;
+ int ret;
+
+ /*
+ * Check the directory pointed to by the IPA config path environment
+ * variable next.
+ */
const char *confPaths = utils::secure_getenv("LIBCAMERA_IPA_CONFIG_PATH");
if (confPaths) {
for (const auto &dir : utils::split(confPaths, ":")) {
diff --git a/src/libcamera/matrix.cpp b/src/libcamera/matrix.cpp
index 4d95a19b..e7e02722 100644
--- a/src/libcamera/matrix.cpp
+++ b/src/libcamera/matrix.cpp
@@ -53,6 +53,17 @@ LOG_DEFINE_CATEGORY(Matrix)
*/
/**
+ * \fn Matrix::data()
+ * \brief Access the matrix data as a linear array
+ *
+ * Access the contents of the matrix as a one-dimensional linear array of
+ * values in row-major order. The size of the array is equal to the product of
+ * the number of rows and columns of the matrix (Rows x Cols).
+ *
+ * \return A span referencing the matrix data as a linear array
+ */
+
+/**
* \fn Span<const T, Cols> Matrix::operator[](size_t i) const
* \brief Index to a row in the matrix
* \param[in] i Index of row to retrieve
diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp
index d71dad74..75abd91d 100644
--- a/src/libcamera/media_device.cpp
+++ b/src/libcamera/media_device.cpp
@@ -13,6 +13,7 @@
#include <string>
#include <string.h>
#include <sys/ioctl.h>
+#include <tuple>
#include <unistd.h>
#include <vector>
@@ -164,7 +165,7 @@ void MediaDevice::unlock()
if (!fd_.isValid())
return;
- lockf(fd_.get(), F_ULOCK, 0);
+ std::ignore = lockf(fd_.get(), F_ULOCK, 0);
}
/**
diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
index 57fde8a8..de22b8e6 100644
--- a/src/libcamera/meson.build
+++ b/src/libcamera/meson.build
@@ -53,6 +53,7 @@ libcamera_internal_sources = files([
'v4l2_pixelformat.cpp',
'v4l2_subdevice.cpp',
'v4l2_videodevice.cpp',
+ 'vector.cpp',
'yaml_parser.cpp',
])
diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp
index 5abd6b20..a05e11fc 100644
--- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp
+++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp
@@ -1615,7 +1615,7 @@ bool PipelineHandlerMaliC55::registerSensorCamera(MediaLink *ispLink)
isp_->frameStart.connect(data->delayedCtrls_.get(),
&DelayedControls::applyControls);
- /* \todo: Init properties. */
+ /* \todo Init properties. */
if (!registerMaliCamera(std::move(data), sensor->name()))
return false;
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index 35c793da..52633fe3 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -380,18 +380,9 @@ int RkISP1CameraData::loadIPA(unsigned int hwRevision)
ipa_->paramsComputed.connect(this, &RkISP1CameraData::paramsComputed);
ipa_->metadataReady.connect(this, &RkISP1CameraData::metadataReady);
- /*
- * The API tuning file is made from the sensor name unless the
- * environment variable overrides it.
- */
- std::string ipaTuningFile;
- char const *configFromEnv = utils::secure_getenv("LIBCAMERA_RKISP1_TUNING_FILE");
- if (!configFromEnv || *configFromEnv == '\0') {
- ipaTuningFile =
- ipa_->configurationFile(sensor_->model() + ".yaml", "uncalibrated.yaml");
- } else {
- ipaTuningFile = std::string(configFromEnv);
- }
+ /* The IPA tuning file is made from the sensor name. */
+ std::string ipaTuningFile =
+ ipa_->configurationFile(sensor_->model() + ".yaml", "uncalibrated.yaml");
IPACameraSensorInfo sensorInfo{};
int ret = sensor_->sensorInfo(&sensorInfo);
@@ -1334,6 +1325,7 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)
std::unordered_map<uint32_t, DelayedControls::ControlParams> params = {
{ V4L2_CID_ANALOGUE_GAIN, { delays.gainDelay, false } },
{ V4L2_CID_EXPOSURE, { delays.exposureDelay, false } },
+ { V4L2_CID_VBLANK, { 1, false } },
};
data->delayedCtrls_ =
diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
index 4b147fdb..1f13e523 100644
--- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
+++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
@@ -1156,20 +1156,11 @@ int CameraData::loadIPA(ipa::RPi::InitResult *result)
if (!ipa_)
return -ENOENT;
- /*
- * The configuration (tuning file) is made from the sensor name unless
- * the environment variable overrides it.
- */
- std::string configurationFile;
- char const *configFromEnv = utils::secure_getenv("LIBCAMERA_RPI_TUNING_FILE");
- if (!configFromEnv || *configFromEnv == '\0') {
- std::string model = sensor_->model();
- if (isMonoSensor(sensor_))
- model += "_mono";
- configurationFile = ipa_->configurationFile(model + ".json");
- } else {
- configurationFile = std::string(configFromEnv);
- }
+ /* The configuration (tuning file) is made from the sensor name. */
+ std::string model = sensor_->model();
+ if (isMonoSensor(sensor_))
+ model += "_mono";
+ std::string configurationFile = ipa_->configurationFile(model + ".json");
IPASettings settings(configurationFile, sensor_->model());
ipa::RPi::InitParams params;
diff --git a/src/libcamera/pipeline/rpi/common/rpi_stream.h b/src/libcamera/pipeline/rpi/common/rpi_stream.h
index a13d5dc0..0dba1296 100644
--- a/src/libcamera/pipeline/rpi/common/rpi_stream.h
+++ b/src/libcamera/pipeline/rpi/common/rpi_stream.h
@@ -82,6 +82,16 @@ public:
* to be applied after ISP processing.
*/
Needs32bitConv = (1 << 4),
+ /*
+ * Indicates that the input stream needs a software 16-bit endian
+ * conversion to be applied before ISP processing.
+ */
+ Needs16bitEndianSwap = (1 << 5),
+ /*
+ * Indicates that the input stream needs a software 14-bit to
+ * 16-bit unpacking.
+ */
+ Needs14bitUnpack = (1 << 6),
};
using StreamFlags = Flags<StreamFlag>;
diff --git a/src/libcamera/pipeline/rpi/pisp/data/example.yaml b/src/libcamera/pipeline/rpi/pisp/data/example.yaml
new file mode 100644
index 00000000..d67e654a
--- /dev/null
+++ b/src/libcamera/pipeline/rpi/pisp/data/example.yaml
@@ -0,0 +1,45 @@
+{
+ "version": 1.0,
+ "target": "pisp",
+
+ "pipeline_handler":
+ {
+ # Number of CFE config and stats buffers to allocate and use. A
+ # larger number minimises the possibility of dropping frames,
+ # but increases the latency for updating the HW configuration.
+ #
+ # "num_cfe_config_stats_buffers": 12,
+
+ # Number of jobs to queue ahead to the CFE on startup. A larger
+ # number will increase latency for 3A changes, but may reduce
+ # avoidable frame drops.
+ #
+ # "num_cfe_config_queue": 2,
+
+ # Override any request from the IPA to drop a number of startup
+ # frames.
+ #
+ # "disable_startup_frame_drops": false,
+
+ # Custom timeout value (in ms) for camera to use. This overrides
+ # the value computed by the pipeline handler based on frame
+ # durations.
+ #
+ # Set this value to 0 to use the pipeline handler computed
+ # timeout value.
+ #
+ # "camera_timeout_value_ms": 0,
+
+ # Disables temporal denoise functionality in the ISP pipeline.
+ # Disabling temporal denoise avoids allocating 2 additional
+ # Bayer framebuffers required for its operation.
+ #
+ # "disable_tdn": false,
+
+ # Disables multiframe HDR functionality in the ISP pipeline.
+ # Disabling multiframe HDR avoids allocating 2 additional Bayer
+ # framebuffers required for its operation.
+ #
+ # "disable_hdr": false,
+ }
+}
diff --git a/src/libcamera/pipeline/rpi/pisp/data/meson.build b/src/libcamera/pipeline/rpi/pisp/data/meson.build
new file mode 100644
index 00000000..17dfc435
--- /dev/null
+++ b/src/libcamera/pipeline/rpi/pisp/data/meson.build
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: CC0-1.0
+
+conf_files = files([
+ 'example.yaml',
+])
+
+install_data(conf_files,
+ install_dir : pipeline_data_dir / 'rpi' / 'pisp')
diff --git a/src/libcamera/pipeline/rpi/pisp/meson.build b/src/libcamera/pipeline/rpi/pisp/meson.build
new file mode 100644
index 00000000..178df94c
--- /dev/null
+++ b/src/libcamera/pipeline/rpi/pisp/meson.build
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: CC0-1.0
+
+libcamera_internal_sources += files([
+ 'pisp.cpp',
+])
+
+librt = cc.find_library('rt', required : true)
+libpisp_dep = dependency('libpisp', fallback : ['libpisp', 'libpisp_dep'])
+
+libcamera_deps += [libpisp_dep, librt]
+
+subdir('data')
diff --git a/src/libcamera/pipeline/rpi/pisp/pisp.cpp b/src/libcamera/pipeline/rpi/pisp/pisp.cpp
new file mode 100644
index 00000000..42ca7c80
--- /dev/null
+++ b/src/libcamera/pipeline/rpi/pisp/pisp.cpp
@@ -0,0 +1,2372 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2023, Raspberry Pi Ltd
+ *
+ * pisp.cpp - Pipeline handler for PiSP based Raspberry Pi devices
+ */
+
+#include <algorithm>
+#include <fstream>
+#include <memory>
+#include <mutex>
+#include <numeric>
+#include <queue>
+#include <set>
+#include <sstream>
+#include <string>
+#include <sys/ioctl.h>
+#include <unordered_map>
+#include <vector>
+
+#include <linux/dma-buf.h>
+#include <linux/v4l2-controls.h>
+#include <linux/videodev2.h>
+
+#include <libcamera/base/shared_fd.h>
+#include <libcamera/formats.h>
+
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/shared_mem_object.h"
+
+#include "libpisp/backend/backend.hpp"
+#include "libpisp/common/logging.hpp"
+#include "libpisp/common/utils.hpp"
+#include "libpisp/common/version.hpp"
+#include "libpisp/frontend/frontend.hpp"
+#include "libpisp/variants/variant.hpp"
+
+#include "../common/pipeline_base.h"
+#include "../common/rpi_stream.h"
+
+namespace libcamera {
+
+LOG_DECLARE_CATEGORY(RPI)
+
+using StreamFlag = RPi::Stream::StreamFlag;
+using StreamParams = RPi::RPiCameraConfiguration::StreamParams;
+
+namespace {
+
+enum class Cfe : unsigned int { Output0, Embedded, Stats, Config };
+enum class Isp : unsigned int { Input, Output0, Output1, TdnInput, TdnOutput,
+ StitchInput, StitchOutput, Config };
+
+/* Offset for all compressed buffers; mode for TDN and Stitch. */
+constexpr unsigned int DefaultCompressionOffset = 2048;
+constexpr unsigned int DefaultCompressionMode = 1;
+
+const std::vector<std::pair<BayerFormat, unsigned int>> BayerToMbusCodeMap{
+ { { BayerFormat::BGGR, 8, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SBGGR8_1X8, },
+ { { BayerFormat::GBRG, 8, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SGBRG8_1X8, },
+ { { BayerFormat::GRBG, 8, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SGRBG8_1X8, },
+ { { BayerFormat::RGGB, 8, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SRGGB8_1X8, },
+ { { BayerFormat::BGGR, 10, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SBGGR10_1X10, },
+ { { BayerFormat::GBRG, 10, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SGBRG10_1X10, },
+ { { BayerFormat::GRBG, 10, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SGRBG10_1X10, },
+ { { BayerFormat::RGGB, 10, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SRGGB10_1X10, },
+ { { BayerFormat::BGGR, 12, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SBGGR12_1X12, },
+ { { BayerFormat::GBRG, 12, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SGBRG12_1X12, },
+ { { BayerFormat::GRBG, 12, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SGRBG12_1X12, },
+ { { BayerFormat::RGGB, 12, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SRGGB12_1X12, },
+ { { BayerFormat::BGGR, 14, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SBGGR14_1X14, },
+ { { BayerFormat::GBRG, 14, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SGBRG14_1X14, },
+ { { BayerFormat::GRBG, 14, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SGRBG14_1X14, },
+ { { BayerFormat::RGGB, 14, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SRGGB14_1X14, },
+ { { BayerFormat::BGGR, 16, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SBGGR16_1X16, },
+ { { BayerFormat::GBRG, 16, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SGBRG16_1X16, },
+ { { BayerFormat::GRBG, 16, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SGRBG16_1X16, },
+ { { BayerFormat::RGGB, 16, BayerFormat::Packing::None }, MEDIA_BUS_FMT_SRGGB16_1X16, },
+ { { BayerFormat::BGGR, 16, BayerFormat::Packing::PISP1 }, MEDIA_BUS_FMT_SBGGR16_1X16, },
+ { { BayerFormat::GBRG, 16, BayerFormat::Packing::PISP1 }, MEDIA_BUS_FMT_SGBRG16_1X16, },
+ { { BayerFormat::GRBG, 16, BayerFormat::Packing::PISP1 }, MEDIA_BUS_FMT_SGRBG16_1X16, },
+ { { BayerFormat::RGGB, 16, BayerFormat::Packing::PISP1 }, MEDIA_BUS_FMT_SRGGB16_1X16, },
+ { { BayerFormat::RGGB, 16, BayerFormat::Packing::PISP1 }, MEDIA_BUS_FMT_SRGGB16_1X16, },
+ { { BayerFormat::MONO, 16, BayerFormat::Packing::None }, MEDIA_BUS_FMT_Y16_1X16, },
+ { { BayerFormat::MONO, 16, BayerFormat::Packing::PISP1 }, MEDIA_BUS_FMT_Y16_1X16, },
+};
+
+unsigned int bayerToMbusCode(const BayerFormat &bayer)
+{
+ const auto it = std::find_if(BayerToMbusCodeMap.begin(), BayerToMbusCodeMap.end(),
+ [bayer](const std::pair<BayerFormat, unsigned int> &match) {
+ return bayer == match.first;
+ });
+
+ if (it != BayerToMbusCodeMap.end())
+ return it->second;
+
+ return 0;
+}
+
+uint32_t mbusCodeUnpacked16(unsigned int code)
+{
+ BayerFormat bayer = BayerFormat::fromMbusCode(code);
+ BayerFormat bayer16(bayer.order, 16, BayerFormat::Packing::None);
+
+ return bayerToMbusCode(bayer16);
+}
+
+uint8_t toPiSPBayerOrder(V4L2PixelFormat format)
+{
+ BayerFormat bayer = BayerFormat::fromV4L2PixelFormat(format);
+
+ switch (bayer.order) {
+ case BayerFormat::Order::BGGR:
+ return PISP_BAYER_ORDER_BGGR;
+ case BayerFormat::Order::GBRG:
+ return PISP_BAYER_ORDER_GBRG;
+ case BayerFormat::Order::GRBG:
+ return PISP_BAYER_ORDER_GRBG;
+ case BayerFormat::Order::RGGB:
+ return PISP_BAYER_ORDER_RGGB;
+ case BayerFormat::Order::MONO:
+ return PISP_BAYER_ORDER_GREYSCALE;
+ default:
+ ASSERT(0);
+ return -1;
+ }
+}
+
+pisp_image_format_config toPiSPImageFormat(V4L2DeviceFormat &format)
+{
+ pisp_image_format_config image = {};
+
+ image.width = format.size.width;
+ image.height = format.size.height;
+ image.stride = format.planes[0].bpl;
+
+ PixelFormat pix = format.fourcc.toPixelFormat();
+
+ if (RPi::PipelineHandlerBase::isRaw(pix)) {
+ BayerFormat bayer = BayerFormat::fromPixelFormat(pix);
+ switch (bayer.packing) {
+ case BayerFormat::Packing::None:
+ image.format = PISP_IMAGE_FORMAT_BPS_16 +
+ PISP_IMAGE_FORMAT_UNCOMPRESSED;
+ break;
+ case BayerFormat::Packing::PISP1:
+ image.format = PISP_IMAGE_FORMAT_COMPRESSION_MODE_1;
+ break;
+ case BayerFormat::Packing::PISP2:
+ image.format = PISP_IMAGE_FORMAT_COMPRESSION_MODE_2;
+ break;
+ default:
+ ASSERT(0);
+ }
+ return image;
+ }
+
+ switch (pix) {
+ case formats::YUV420:
+ image.format = PISP_IMAGE_FORMAT_THREE_CHANNEL +
+ PISP_IMAGE_FORMAT_BPS_8 +
+ PISP_IMAGE_FORMAT_SAMPLING_420 +
+ PISP_IMAGE_FORMAT_PLANARITY_PLANAR;
+ image.stride2 = image.stride / 2;
+ break;
+ case formats::NV12:
+ image.format = PISP_IMAGE_FORMAT_THREE_CHANNEL +
+ PISP_IMAGE_FORMAT_BPS_8 +
+ PISP_IMAGE_FORMAT_SAMPLING_420 +
+ PISP_IMAGE_FORMAT_PLANARITY_SEMI_PLANAR;
+ image.stride2 = image.stride;
+ break;
+ case formats::NV21:
+ image.format = PISP_IMAGE_FORMAT_THREE_CHANNEL +
+ PISP_IMAGE_FORMAT_BPS_8 +
+ PISP_IMAGE_FORMAT_SAMPLING_420 +
+ PISP_IMAGE_FORMAT_PLANARITY_SEMI_PLANAR +
+ PISP_IMAGE_FORMAT_ORDER_SWAPPED;
+ image.stride2 = image.stride;
+ break;
+ case formats::YUYV:
+ image.format = PISP_IMAGE_FORMAT_THREE_CHANNEL +
+ PISP_IMAGE_FORMAT_BPS_8 +
+ PISP_IMAGE_FORMAT_SAMPLING_422 +
+ PISP_IMAGE_FORMAT_PLANARITY_INTERLEAVED;
+ break;
+ case formats::UYVY:
+ image.format = PISP_IMAGE_FORMAT_THREE_CHANNEL +
+ PISP_IMAGE_FORMAT_BPS_8 +
+ PISP_IMAGE_FORMAT_SAMPLING_422 +
+ PISP_IMAGE_FORMAT_PLANARITY_INTERLEAVED +
+ PISP_IMAGE_FORMAT_ORDER_SWAPPED;
+ break;
+ case formats::NV16:
+ image.format = PISP_IMAGE_FORMAT_THREE_CHANNEL +
+ PISP_IMAGE_FORMAT_BPS_8 +
+ PISP_IMAGE_FORMAT_SAMPLING_422 +
+ PISP_IMAGE_FORMAT_PLANARITY_SEMI_PLANAR;
+ image.stride2 = image.stride;
+ break;
+ case formats::NV61:
+ image.format = PISP_IMAGE_FORMAT_THREE_CHANNEL +
+ PISP_IMAGE_FORMAT_BPS_8 +
+ PISP_IMAGE_FORMAT_SAMPLING_422 +
+ PISP_IMAGE_FORMAT_PLANARITY_SEMI_PLANAR +
+ PISP_IMAGE_FORMAT_ORDER_SWAPPED;
+ image.stride2 = image.stride;
+ break;
+ case formats::RGB888:
+ case formats::BGR888:
+ image.format = PISP_IMAGE_FORMAT_THREE_CHANNEL;
+ break;
+ case formats::XRGB8888:
+ case formats::XBGR8888:
+ image.format = PISP_IMAGE_FORMAT_THREE_CHANNEL + PISP_IMAGE_FORMAT_BPP_32;
+ break;
+ case formats::RGBX8888:
+ case formats::BGRX8888:
+ image.format = PISP_IMAGE_FORMAT_THREE_CHANNEL + PISP_IMAGE_FORMAT_BPP_32 +
+ PISP_IMAGE_FORMAT_ORDER_SWAPPED;
+ break;
+ case formats::RGB161616:
+ case formats::BGR161616:
+ image.format = PISP_IMAGE_FORMAT_THREE_CHANNEL + PISP_IMAGE_FORMAT_BPS_16;
+ break;
+ default:
+ LOG(RPI, Error) << "Pixel format " << pix << " unsupported";
+ ASSERT(0);
+ }
+
+ return image;
+}
+
+void computeOptimalStride(V4L2DeviceFormat &format)
+{
+ pisp_image_format_config fmt = toPiSPImageFormat(format);
+
+ libpisp::compute_optimal_stride(fmt);
+
+ uint32_t fourcc = format.fourcc.fourcc();
+
+ /*
+ * For YUV420/422 non-multiplanar formats, double the U/V stride for the
+ * Y-plane to ensure we get the optimal alignment on all three planes.
+ */
+ if (fourcc == V4L2_PIX_FMT_YUV420 || fourcc == V4L2_PIX_FMT_YUV422P ||
+ fourcc == V4L2_PIX_FMT_YVU420)
+ fmt.stride = fmt.stride2 * 2;
+
+ format.planes[0].bpl = fmt.stride;
+ format.planes[1].bpl = fmt.stride2;
+ format.planes[2].bpl = fmt.stride2;
+
+ /*
+ * Need to set planesCount correctly so that V4L2VideoDevice::trySetFormatMultiplane()
+ * copies the bpl fields correctly.
+ */
+ const PixelFormat &pixFormat = format.fourcc.toPixelFormat();
+ const PixelFormatInfo &info = PixelFormatInfo::info(pixFormat);
+ format.planesCount = info.numPlanes();
+}
+
+void setupOutputClipping(const V4L2DeviceFormat &v4l2Format,
+ pisp_be_output_format_config &outputFormat)
+{
+ const PixelFormat &pixFormat = v4l2Format.fourcc.toPixelFormat();
+ const PixelFormatInfo &info = PixelFormatInfo::info(pixFormat);
+
+ if (info.colourEncoding != PixelFormatInfo::ColourEncodingYUV)
+ return;
+
+ if (v4l2Format.colorSpace == ColorSpace::Sycc) {
+ outputFormat.lo = 0;
+ outputFormat.hi = 65535;
+ outputFormat.lo2 = 0;
+ outputFormat.hi2 = 65535;
+ } else if (v4l2Format.colorSpace == ColorSpace::Smpte170m ||
+ v4l2Format.colorSpace == ColorSpace::Rec709) {
+ outputFormat.lo = 16 << 8;
+ outputFormat.hi = 235 << 8;
+ outputFormat.lo2 = 16 << 8;
+ outputFormat.hi2 = 240 << 8;
+ } else {
+ LOG(RPI, Warning)
+ << "Unrecognised colour space "
+ << ColorSpace::toString(v4l2Format.colorSpace)
+ << ", using full range";
+ outputFormat.lo = 0;
+ outputFormat.hi = 65535;
+ outputFormat.lo2 = 0;
+ outputFormat.hi2 = 65535;
+ }
+}
+
+int dmabufSyncStart(const SharedFD &fd)
+{
+ struct dma_buf_sync dma_sync {};
+ dma_sync.flags = DMA_BUF_SYNC_START | DMA_BUF_SYNC_RW;
+
+ int ret = ::ioctl(fd.get(), DMA_BUF_IOCTL_SYNC, &dma_sync);
+ if (ret)
+ LOG(RPI, Error) << "failed to lock-sync-write dma buf";
+
+ return ret;
+}
+
+int dmabufSyncEnd(const SharedFD &fd)
+{
+ struct dma_buf_sync dma_sync {};
+ dma_sync.flags = DMA_BUF_SYNC_END | DMA_BUF_SYNC_RW;
+
+ int ret = ::ioctl(fd.get(), DMA_BUF_IOCTL_SYNC, &dma_sync);
+
+ if (ret)
+ LOG(RPI, Error) << "failed to unlock-sync-write dma buf";
+
+ return ret;
+}
+
+void do32BitConversion(void *mem, unsigned int width, unsigned int height,
+ unsigned int stride)
+{
+ /*
+ * The arm64 version is actually not that much quicker because the
+ * vast bulk of the time is spent waiting for memory.
+ */
+#if __aarch64__
+ for (unsigned int j = 0; j < height; j++) {
+ uint8_t *ptr = (uint8_t *)mem + j * stride;
+ uint64_t count = (width + 15) / 16;
+ uint8_t *dest = ptr + count * 64;
+ uint8_t *src = ptr + count * 48;
+
+ /* Pre-decrement would have been nice. */
+ asm volatile("movi v3.16b, #255 \n"
+ "1: \n"
+ "sub %[src], %[src], #48 \n"
+ "sub %[dest], %[dest], #64 \n"
+ "subs %[count], %[count], #1 \n"
+ "ld3 {v0.16b, v1.16b, v2.16b}, [%[src]] \n"
+ "st4 {v0.16b, v1.16b, v2.16b, v3.16b}, [%[dest]] \n"
+ "b.gt 1b \n"
+ : [count]"+r" (count)
+ : [src]"r" (src), [dest]"r" (dest)
+ : "cc", "v1", "v2", "v3", "v4", "memory"
+ );
+ }
+#else
+ std::vector<uint8_t> incache(3 * width);
+ std::vector<uint8_t> outcache(4 * width);
+
+ memcpy(incache.data(), mem, 3 * width);
+ for (unsigned int j = 0; j < height; j++) {
+ uint8_t *ptr = (uint8_t *)mem + j * stride;
+
+ uint8_t *ptr3 = incache.data();
+ uint8_t *ptr4 = outcache.data();
+ for (unsigned int i = 0; i < width; i++) {
+ *(ptr4++) = *(ptr3++);
+ *(ptr4++) = *(ptr3++);
+ *(ptr4++) = *(ptr3++);
+ *(ptr4++) = 255;
+ }
+
+ if (j < height - 1)
+ memcpy(incache.data(), ptr + stride, 3 * width);
+ memcpy(ptr, outcache.data(), 4 * width);
+ }
+#endif
+}
+
+void do16BitEndianSwap([[maybe_unused]] void *mem, [[maybe_unused]] unsigned int width,
+ [[maybe_unused]] unsigned int height, [[maybe_unused]] unsigned int stride)
+{
+#if __aarch64__
+ for (unsigned int j = 0; j < height; j++) {
+ uint8_t *ptr = (uint8_t *)mem + j * stride;
+ uint64_t count = (width + 7) / 8;
+
+ asm volatile("1: \n"
+ "ld1 {v1.16b}, [%[ptr]] \n"
+ "rev16 v1.16b, v1.16b \n"
+ "st1 {v1.16b}, [%[ptr]], #16 \n"
+ "subs %[count], %[count], #1 \n"
+ "b.gt 1b \n"
+ : [count]"+r" (count), [ptr]"+r" (ptr)
+ :
+ : "cc", "v1", "memory"
+ );
+ }
+#endif
+}
+
+void do14bitUnpack(void *mem, unsigned int width, unsigned int height,
+ unsigned int stride)
+{
+ std::vector<uint8_t> cache(stride);
+
+ for (unsigned int j = 0; j < height; j++) {
+ const uint8_t *in = ((uint8_t *)mem) + j * stride;
+ uint8_t *out = ((uint8_t *)mem) + j * stride;
+ uint8_t *p = cache.data();
+
+ std::memcpy(p, in, stride);
+ for (unsigned int i = 0; i < width; i += 4, p += 7) {
+ uint16_t p0 = (p[0] << 8) | ((p[4] & 0x3f) << 2);
+ uint16_t p1 = (p[1] << 8) | ((p[4] & 0xc0) >> 4) | ((p[5] & 0x0f) << 4);
+ uint16_t p2 = (p[2] << 8) | ((p[5] & 0xf0) >> 2) | ((p[6] & 0x03) << 6);
+ uint16_t p3 = (p[3] << 8) | (p[6] & 0xfc);
+
+ *(uint16_t *)(out + i * 2 + 0) = p0;
+ *(uint16_t *)(out + i * 2 + 2) = p1;
+ *(uint16_t *)(out + i * 2 + 4) = p2;
+ *(uint16_t *)(out + i * 2 + 6) = p3;
+ }
+ }
+}
+
+void downscaleInterleaved3(void *mem, unsigned int height, unsigned int src_width,
+ unsigned int stride)
+{
+ std::vector<uint8_t> incache(3 * src_width);
+ unsigned int dst_width = src_width / 2;
+ std::vector<uint8_t> outcache(3 * dst_width);
+
+ memcpy(incache.data(), mem, 3 * src_width);
+ for (unsigned int j = 0; j < height; j++) {
+ uint8_t *ptr = (uint8_t *)mem + j * stride;
+
+ uint8_t *src = incache.data(), *dst = outcache.data();
+ for (unsigned int i = 0; i < dst_width; i++, src += 6, dst += 3) {
+ dst[0] = ((int)src[0] + (int)src[3] + 1) >> 1;
+ dst[1] = ((int)src[1] + (int)src[4] + 1) >> 1;
+ dst[2] = ((int)src[2] + (int)src[5] + 1) >> 1;
+ }
+
+ if (j < height - 1)
+ memcpy(incache.data(), ptr + stride, 3 * src_width);
+ memcpy(ptr, outcache.data(), 3 * dst_width);
+ }
+}
+
+void downscaleInterleaved4(void *mem, unsigned int height, unsigned int src_width,
+ unsigned int stride)
+{
+ std::vector<uint8_t> incache(4 * src_width);
+ unsigned int dst_width = src_width / 2;
+ std::vector<uint8_t> outcache(4 * dst_width);
+
+ memcpy(incache.data(), mem, 4 * src_width);
+ for (unsigned int j = 0; j < height; j++) {
+ uint8_t *ptr = (uint8_t *)mem + j * stride;
+
+ uint8_t *src = incache.data(), *dst = outcache.data();
+ for (unsigned int i = 0; i < dst_width; i++, src += 8, dst += 4) {
+ dst[0] = ((int)src[0] + (int)src[4] + 1) >> 1;
+ dst[1] = ((int)src[1] + (int)src[5] + 1) >> 1;
+ dst[2] = ((int)src[2] + (int)src[6] + 1) >> 1;
+ dst[3] = ((int)src[3] + (int)src[7] + 1) >> 1;
+ }
+
+ if (j < height - 1)
+ memcpy(incache.data(), ptr + stride, 4 * src_width);
+ memcpy(ptr, outcache.data(), 4 * dst_width);
+ }
+}
+
+void downscalePlaneInternal(void *mem, unsigned int height, unsigned int src_width,
+ unsigned int stride, std::vector<uint8_t> &incache,
+ std::vector<uint8_t> &outcache)
+{
+ unsigned int dst_width = src_width / 2;
+ memcpy(incache.data(), mem, src_width);
+ for (unsigned int j = 0; j < height; j++) {
+ uint8_t *ptr = (uint8_t *)mem + j * stride;
+
+ uint8_t *src = incache.data(), *dst = outcache.data();
+ for (unsigned int i = 0; i < dst_width; i++, src += 2, dst++)
+ *dst = ((int)src[0] + (int)src[1] + 1) >> 1;
+
+ if (j < height - 1)
+ memcpy(incache.data(), ptr + stride, src_width);
+ memcpy(ptr, outcache.data(), dst_width);
+ }
+}
+
+void downscalePlanar420(void *memY, void *memU, void *memV, unsigned int height,
+ unsigned int src_width, unsigned int stride)
+{
+ std::vector<uint8_t> incache(src_width);
+ std::vector<uint8_t> outcache(src_width / 2);
+
+ downscalePlaneInternal(memY, height, src_width, stride, incache, outcache);
+ downscalePlaneInternal(memU, height / 2, src_width / 2, stride / 2, incache, outcache);
+ downscalePlaneInternal(memV, height / 2, src_width / 2, stride / 2, incache, outcache);
+}
+
+void downscalePlanar422(void *memY, void *memU, void *memV,
+ unsigned int height, unsigned int src_width, unsigned int stride)
+{
+ std::vector<uint8_t> incache(src_width);
+ std::vector<uint8_t> outcache(src_width / 2);
+
+ downscalePlaneInternal(memY, height, src_width, stride, incache, outcache);
+ downscalePlaneInternal(memU, height, src_width / 2, stride / 2, incache, outcache);
+ downscalePlaneInternal(memV, height, src_width / 2, stride / 2, incache, outcache);
+}
+
+void downscaleInterleavedYuyv(void *mem, unsigned int height, unsigned int src_width,
+ unsigned int stride)
+{
+ std::vector<uint8_t> incache(2 * src_width);
+ unsigned int dst_width = src_width / 2;
+ std::vector<uint8_t> outcache(2 * dst_width);
+
+ memcpy(incache.data(), mem, 2 * src_width);
+ for (unsigned int j = 0; j < height; j++) {
+ uint8_t *ptr = (uint8_t *)mem + j * stride;
+
+ uint8_t *src = incache.data(), *dst = outcache.data();
+ for (unsigned int i = 0; i < dst_width; i++, src += 8, dst += 4) {
+ dst[0] = ((int)src[0] + (int)src[2] + 1) >> 1;
+ dst[1] = ((int)src[1] + (int)src[5] + 1) >> 1;
+ dst[2] = ((int)src[4] + (int)src[6] + 1) >> 1;
+ dst[3] = ((int)src[3] + (int)src[7] + 1) >> 1;
+ }
+
+ if (j < height - 1)
+ memcpy(incache.data(), ptr + stride, 4 * src_width);
+ memcpy(ptr, outcache.data(), 2 * dst_width);
+ }
+}
+
+void downscaleInterleavedUyvy(void *mem, unsigned int height, unsigned int src_width,
+ unsigned int stride)
+{
+ std::vector<uint8_t> incache(2 * src_width);
+ unsigned int dst_width = src_width / 2;
+ std::vector<uint8_t> outcache(2 * dst_width);
+
+ memcpy(incache.data(), mem, 2 * src_width);
+ for (unsigned int j = 0; j < height; j++) {
+ uint8_t *ptr = (uint8_t *)mem + j * stride;
+
+ uint8_t *src = incache.data(), *dst = outcache.data();
+ for (unsigned int i = 0; i < dst_width; i++, src += 8, dst += 4) {
+ dst[0] = ((int)src[0] + (int)src[4] + 1) >> 1;
+ dst[1] = ((int)src[1] + (int)src[3] + 1) >> 1;
+ dst[2] = ((int)src[2] + (int)src[6] + 1) >> 1;
+ dst[3] = ((int)src[5] + (int)src[7] + 1) >> 1;
+ }
+
+ if (j < height - 1)
+ memcpy(incache.data(), ptr + stride, 4 * src_width);
+ memcpy(ptr, outcache.data(), 2 * dst_width);
+ }
+}
+
+void downscaleInterleaved2Internal(void *mem, unsigned int height, unsigned int src_width,
+ unsigned int stride, std::vector<uint8_t> &incache,
+ std::vector<uint8_t> &outcache)
+{
+ unsigned int dst_width = src_width / 2;
+ memcpy(incache.data(), mem, 2 * src_width);
+ for (unsigned int j = 0; j < height; j++) {
+ uint8_t *ptr = (uint8_t *)mem + j * stride;
+
+ uint8_t *src = incache.data(), *dst = outcache.data();
+ for (unsigned int i = 0; i < dst_width; i++, src += 4, dst += 2) {
+ dst[0] = ((int)src[0] + (int)src[2] + 1) >> 1;
+ dst[1] = ((int)src[1] + (int)src[3] + 1) >> 1;
+ }
+
+ if (j < height - 1)
+ memcpy(incache.data(), ptr + stride, 2 * src_width);
+ memcpy(ptr, outcache.data(), 2 * dst_width);
+ }
+}
+
+void downscaleSemiPlanar420(void *memY, void *memUV, unsigned int height,
+ unsigned int src_width, unsigned int stride)
+{
+ std::vector<uint8_t> incache(src_width);
+ std::vector<uint8_t> outcache(src_width / 2);
+
+ downscalePlaneInternal(memY, height, src_width, stride, incache, outcache);
+ downscaleInterleaved2Internal(memUV, height / 2, src_width / 2, stride,
+ incache, outcache);
+}
+
+void downscaleStreamBuffer(RPi::Stream *stream, int index)
+{
+ unsigned int downscale = stream->swDownscale();
+ /* Must be a power of 2. */
+ ASSERT((downscale & (downscale - 1)) == 0);
+
+ unsigned int stride = stream->configuration().stride;
+ unsigned int dst_width = stream->configuration().size.width;
+ unsigned int height = stream->configuration().size.height;
+ const PixelFormat &pixFormat = stream->configuration().pixelFormat;
+ const RPi::BufferObject &b = stream->getBuffer(index);
+ void *mem = b.mapped->planes()[0].data();
+ ASSERT(b.mapped);
+
+ /* Do repeated downscale-by-2 in place until we're done. */
+ for (; downscale > 1; downscale >>= 1) {
+ unsigned int src_width = downscale * dst_width;
+
+ if (pixFormat == formats::RGB888 || pixFormat == formats::BGR888) {
+ downscaleInterleaved3(mem, height, src_width, stride);
+ } else if (pixFormat == formats::XRGB8888 || pixFormat == formats::XBGR8888) {
+ /* On some devices these may actually be 24bpp at this point. */
+ if (stream->getFlags() & StreamFlag::Needs32bitConv)
+ downscaleInterleaved3(mem, height, src_width, stride);
+ else
+ downscaleInterleaved4(mem, height, src_width, stride);
+ } else if (pixFormat == formats::YUV420 || pixFormat == formats::YVU420) {
+ /* These may look like either single or multi-planar buffers. */
+ void *mem1;
+ void *mem2;
+ if (b.mapped->planes().size() == 3) {
+ mem1 = b.mapped->planes()[1].data();
+ mem2 = b.mapped->planes()[2].data();
+ } else {
+ unsigned int ySize = height * stride;
+ mem1 = static_cast<uint8_t *>(mem) + ySize;
+ mem2 = static_cast<uint8_t *>(mem1) + ySize / 4;
+ }
+ downscalePlanar420(mem, mem1, mem2, height, src_width, stride);
+ } else if (pixFormat == formats::YUV422 || pixFormat == formats::YVU422) {
+ /* These may look like either single or multi-planar buffers. */
+ void *mem1;
+ void *mem2;
+ if (b.mapped->planes().size() == 3) {
+ mem1 = b.mapped->planes()[1].data();
+ mem2 = b.mapped->planes()[2].data();
+ } else {
+ unsigned int ySize = height * stride;
+ mem1 = static_cast<uint8_t *>(mem) + ySize;
+ mem2 = static_cast<uint8_t *>(mem1) + ySize / 2;
+ }
+ downscalePlanar422(mem, mem1, mem2, height, src_width, stride);
+ } else if (pixFormat == formats::YUYV || pixFormat == formats::YVYU) {
+ downscaleInterleavedYuyv(mem, height, src_width, stride);
+ } else if (pixFormat == formats::UYVY || pixFormat == formats::VYUY) {
+ downscaleInterleavedUyvy(mem, height, src_width, stride);
+ } else if (pixFormat == formats::NV12 || pixFormat == formats::NV21) {
+ /* These may look like either single or multi-planar buffers. */
+ void *mem1;
+ if (b.mapped->planes().size() == 2)
+ mem1 = b.mapped->planes()[1].data();
+ else
+ mem1 = static_cast<uint8_t *>(mem) + height * stride;
+ downscaleSemiPlanar420(mem, mem1, height, src_width, stride);
+ } else {
+ LOG(RPI, Error) << "Sw downscale unsupported for " << pixFormat;
+ ASSERT(0);
+ }
+ }
+}
+
+/* Return largest width of any of these streams (or of the camera input). */
+unsigned int getLargestWidth(const V4L2SubdeviceFormat &sensorFormat,
+ const std::vector<StreamParams> &outStreams)
+{
+ unsigned int largestWidth = sensorFormat.size.width;
+
+ for (const auto &stream : outStreams)
+ largestWidth = std::max(largestWidth, stream.cfg->size.width);
+
+ return largestWidth;
+}
+
+/* Return the minimum number of pixels required to write out multiples of 16 bytes. */
+unsigned int getFormatAlignment(const V4L2PixelFormat &fourcc)
+{
+ const PixelFormatInfo &info = PixelFormatInfo::info(fourcc);
+ unsigned int formatAlignment = 0;
+ for (const auto &plane : info.planes) {
+ if (plane.bytesPerGroup) {
+ /* How many pixels we need in this plane for a multiple of 16 bytes (??). */
+ unsigned int align = 16 * info.pixelsPerGroup /
+ std::gcd(16u, plane.bytesPerGroup);
+ formatAlignment = std::max(formatAlignment, align);
+ }
+ }
+
+ return formatAlignment;
+}
+
+/* Calculate the amount of software downscale required (which is a power of 2). */
+unsigned int calculateSwDownscale(const V4L2DeviceFormat &format, unsigned int largestWidth,
+ unsigned int platformMaxDownscale)
+{
+ unsigned int formatAlignment = getFormatAlignment(format.fourcc);
+ unsigned int maxDownscale = platformMaxDownscale * 16 / formatAlignment;
+ unsigned int limitWidth = largestWidth / maxDownscale;
+
+ unsigned int hwWidth = format.size.width;
+ unsigned int swDownscale = 1;
+ for (; hwWidth < limitWidth; hwWidth *= 2, swDownscale *= 2);
+
+ return swDownscale;
+}
+
+} /* namespace */
+
+using ::libpisp::BackEnd;
+using ::libpisp::FrontEnd;
+
+class PiSPCameraData final : public RPi::CameraData
+{
+public:
+ PiSPCameraData(PipelineHandler *pipe, const libpisp::PiSPVariant &variant)
+ : RPi::CameraData(pipe), pispVariant_(variant)
+ {
+ /* Initialise internal libpisp logging. */
+ ::libpisp::logging_init();
+ LOG(RPI, Info) << "libpisp version " << ::libpisp::version();
+ }
+
+ ~PiSPCameraData()
+ {
+ freeBuffers();
+ }
+
+ V4L2VideoDevice::Formats ispFormats() const override
+ {
+ return isp_[Isp::Output0].dev()->formats();
+ }
+
+ V4L2VideoDevice::Formats rawFormats() const override
+ {
+ return cfe_[Cfe::Output0].dev()->formats();
+ }
+
+ V4L2VideoDevice *frontendDevice() override
+ {
+ return cfe_[Cfe::Output0].dev();
+ }
+
+ CameraConfiguration::Status
+ platformValidate(RPi::RPiCameraConfiguration *rpiConfig) const override;
+
+ int platformPipelineConfigure(const std::unique_ptr<YamlObject> &root) override;
+
+ void platformStart() override;
+ void platformStop() override;
+ void platformFreeBuffers() override;
+
+ void cfeBufferDequeue(FrameBuffer *buffer);
+ void beInputDequeue(FrameBuffer *buffer);
+ void beOutputDequeue(FrameBuffer *buffer);
+
+ void processStatsComplete(const ipa::RPi::BufferIds &buffers);
+ void prepareIspComplete(const ipa::RPi::BufferIds &buffers, bool stitchSwapBuffers);
+ void setCameraTimeout(uint32_t maxFrameLengthMs);
+
+ /* Array of CFE and ISP device streams and associated buffers/streams. */
+ RPi::Device<Cfe, 4> cfe_;
+ RPi::Device<Isp, 8> isp_;
+
+ const libpisp::PiSPVariant &pispVariant_;
+
+ /* Frontend/Backend objects shared with the IPA. */
+ SharedMemObject<FrontEnd> fe_;
+ SharedMemObject<BackEnd> be_;
+ bool beEnabled_;
+
+ std::unique_ptr<V4L2Subdevice> csi2Subdev_;
+ std::unique_ptr<V4L2Subdevice> feSubdev_;
+
+ std::vector<FrameBuffer *> tdnBuffers_;
+ std::vector<FrameBuffer *> stitchBuffers_;
+ unsigned int tdnInputIndex_;
+ unsigned int stitchInputIndex_;
+
+ struct Config {
+ /*
+ * Number of CFE config and stats buffers to allocate and use. A
+ * larger number minimises the possibility of dropping frames,
+ * but increases the latency for updating the HW configuration.
+ */
+ unsigned int numCfeConfigStatsBuffers;
+ /*
+ * Number of jobs to queue ahead to the CFE on startup.
+ * A larger number will increase latency for 3A changes.
+ */
+ unsigned int numCfeConfigQueue;
+ /* Don't use BE temporal denoise and free some memory resources. */
+ bool disableTdn;
+ /* Don't use BE HDR and free some memory resources. */
+ bool disableHdr;
+ };
+
+ Config config_;
+
+ bool adjustDeviceFormat(V4L2DeviceFormat &format) const;
+
+private:
+ int platformConfigure(const RPi::RPiCameraConfiguration *rpiConfig) override;
+
+ int platformConfigureIpa([[maybe_unused]] ipa::RPi::ConfigParams &params) override
+ {
+ return 0;
+ }
+
+ int platformInitIpa(ipa::RPi::InitParams &params) override;
+
+ int configureEntities(V4L2SubdeviceFormat sensorFormat,
+ V4L2SubdeviceFormat &embeddedFormat);
+ int configureCfe();
+ bool calculateCscConfiguration(const V4L2DeviceFormat &v4l2Format, pisp_be_ccm_config &csc);
+ int configureBe(const std::optional<ColorSpace> &yuvColorSpace);
+
+ void platformSetIspCrop(unsigned int index, const Rectangle &ispCrop) override;
+
+ void prepareCfe();
+ void prepareBe(uint32_t bufferId, bool stitchSwapBuffers);
+
+ void tryRunPipeline() override;
+
+ struct CfeJob {
+ ControlList sensorControls;
+ unsigned int delayContext;
+ std::unordered_map<const RPi::Stream *, FrameBuffer *> buffers;
+ };
+
+ std::queue<CfeJob> cfeJobQueue_;
+
+ bool cfeJobComplete() const
+ {
+ if (cfeJobQueue_.empty())
+ return false;
+
+ const CfeJob &job = cfeJobQueue_.back();
+ return job.buffers.count(&cfe_[Cfe::Output0]) &&
+ job.buffers.count(&cfe_[Cfe::Stats]) &&
+ (!sensorMetadata_ ||
+ job.buffers.count(&cfe_[Cfe::Embedded]));
+ }
+
+ std::string last_dump_file_;
+};
+
+class PipelineHandlerPiSP : public RPi::PipelineHandlerBase
+{
+public:
+ PipelineHandlerPiSP(CameraManager *manager)
+ : RPi::PipelineHandlerBase(manager)
+ {
+ }
+
+ ~PipelineHandlerPiSP()
+ {
+ }
+
+ bool match(DeviceEnumerator *enumerator) override;
+
+private:
+ PiSPCameraData *cameraData(Camera *camera)
+ {
+ return static_cast<PiSPCameraData *>(camera->_d());
+ }
+
+ int prepareBuffers(Camera *camera) override;
+ int platformRegister(std::unique_ptr<RPi::CameraData> &cameraData,
+ MediaDevice *cfe, MediaDevice *isp) override;
+};
+
+bool PipelineHandlerPiSP::match(DeviceEnumerator *enumerator)
+{
+ constexpr unsigned int numCfeDevices = 2;
+
+ /*
+ * Loop over all CFE instances, but return out once a match is found.
+ * This is to ensure we correctly enumerate the camera when an instance
+ * of the CFE has registered with media controller, but has not registered
+ * device nodes due to a sensor subdevice failure.
+ */
+ for (unsigned int i = 0; i < numCfeDevices; i++) {
+ DeviceMatch cfe("rp1-cfe");
+ cfe.add("rp1-cfe-fe-image0");
+ cfe.add("rp1-cfe-fe-stats");
+ cfe.add("rp1-cfe-fe-config");
+ MediaDevice *cfeDevice = acquireMediaDevice(enumerator, cfe);
+
+ if (!cfeDevice) {
+ LOG(RPI, Debug) << "Unable to acquire a CFE instance";
+ break;
+ }
+
+ DeviceMatch isp("pispbe");
+ isp.add("pispbe-input");
+ isp.add("pispbe-config");
+ isp.add("pispbe-output0");
+ isp.add("pispbe-output1");
+ isp.add("pispbe-tdn_output");
+ isp.add("pispbe-tdn_input");
+ isp.add("pispbe-stitch_output");
+ isp.add("pispbe-stitch_input");
+ MediaDevice *ispDevice = acquireMediaDevice(enumerator, isp);
+
+ if (!ispDevice) {
+ LOG(RPI, Debug) << "Unable to acquire ISP instance";
+ break;
+ }
+
+ /*
+ * The loop below is used to register multiple cameras behind
+ * one or more video mux devices that are attached to a
+ * particular CFE instance. Obviously these cameras cannot be
+ * used simultaneously.
+ */
+ unsigned int numCameras = 0;
+ for (MediaEntity *entity : cfeDevice->entities()) {
+ if (entity->function() != MEDIA_ENT_F_CAM_SENSOR)
+ continue;
+
+ const libpisp::PiSPVariant &variant =
+ libpisp::get_variant(cfeDevice->hwRevision(),
+ ispDevice->hwRevision());
+ if (!variant.NumFrontEnds() || !variant.NumBackEnds()) {
+ LOG(RPI, Error) << "Unsupported PiSP variant";
+ break;
+ }
+
+ std::unique_ptr<RPi::CameraData> cameraData =
+ std::make_unique<PiSPCameraData>(this, variant);
+ PiSPCameraData *pisp =
+ static_cast<PiSPCameraData *>(cameraData.get());
+
+ pisp->fe_ = SharedMemObject<FrontEnd>
+ ("pisp_frontend", true, pisp->pispVariant_);
+ pisp->be_ = SharedMemObject<BackEnd>
+ ("pisp_backend", BackEnd::Config({}), pisp->pispVariant_);
+
+ if (!pisp->fe_.fd().isValid() || !pisp->be_.fd().isValid()) {
+ LOG(RPI, Error) << "Failed to create ISP shared objects";
+ break;
+ }
+
+ int ret = registerCamera(cameraData, cfeDevice, "csi2",
+ ispDevice, entity);
+ if (ret)
+ LOG(RPI, Error) << "Failed to register camera "
+ << entity->name() << ": " << ret;
+ else
+ numCameras++;
+ }
+
+ if (numCameras)
+ return true;
+ }
+
+ return false;
+}
+
+int PipelineHandlerPiSP::prepareBuffers(Camera *camera)
+{
+ PiSPCameraData *data = cameraData(camera);
+ unsigned int numRawBuffers = 0;
+ int ret;
+
+ for (Stream *s : camera->streams()) {
+ if (PipelineHandlerBase::isRaw(s->configuration().pixelFormat)) {
+ numRawBuffers = s->configuration().bufferCount;
+ break;
+ }
+ }
+
+ /* Decide how many internal buffers to allocate. */
+ for (auto const stream : data->streams_) {
+ unsigned int numBuffers;
+ /*
+ * For CFE, allocate a minimum of 4 buffers as we want
+ * to avoid any frame drops.
+ */
+ constexpr unsigned int minBuffers = 4;
+ if (stream == &data->cfe_[Cfe::Output0]) {
+ /*
+ * If an application has configured a RAW stream, allocate
+ * additional buffers to make up the minimum, but ensure
+ * we have at least 2 sets of internal buffers to use to
+ * minimise frame drops.
+ */
+ numBuffers = std::max<int>(2, minBuffers - numRawBuffers);
+ } else if (stream == &data->isp_[Isp::Input]) {
+ /*
+ * ISP input buffers are imported from the CFE, so follow
+ * similar logic as above to count all the RAW buffers
+ * available.
+ */
+ numBuffers = numRawBuffers +
+ std::max<int>(2, minBuffers - numRawBuffers);
+ } else if (stream == &data->cfe_[Cfe::Embedded]) {
+ /*
+ * Embedded data buffers are (currently) for internal use,
+ * so allocate a reasonably large amount.
+ */
+ numBuffers = 12;
+ } else if (stream == &data->cfe_[Cfe::Stats] ||
+ stream == &data->cfe_[Cfe::Config]) {
+ numBuffers = data->config_.numCfeConfigStatsBuffers;
+ } else if (!data->beEnabled_) {
+ /* Backend not enabled, we don't need to allocate buffers. */
+ numBuffers = 0;
+ } else if (stream == &data->isp_[Isp::TdnOutput] && data->config_.disableTdn) {
+ /* TDN is explicitly disabled. */
+ continue;
+ } else if (stream == &data->isp_[Isp::StitchOutput] && data->config_.disableHdr) {
+ /* Stitch/HDR is explicitly disabled. */
+ continue;
+ } else {
+ /* Allocate 2 sets of all other Backend buffers */
+ numBuffers = 2;
+ }
+
+ LOG(RPI, Debug) << "Preparing " << numBuffers
+ << " buffers for stream " << stream->name();
+
+ ret = stream->prepareBuffers(numBuffers);
+ if (ret < 0)
+ return ret;
+ }
+
+ /*
+ * Store the Framebuffer pointers for convenience as we will ping-pong
+ * these buffers between the input and output nodes for TDN and Stitch.
+ *
+ * The buffer size needs to be setup here as well. Conveniently this is
+ * the same for both TDN and stitch.
+ */
+ pisp_image_format_config tdn;
+ data->be_->GetTdnOutputFormat(tdn);
+ unsigned int size = tdn.stride * tdn.height;
+ for (auto const &buffer : data->isp_[Isp::TdnOutput].getBuffers()) {
+ FrameBuffer *b = buffer.second.buffer;
+ b->_d()->metadata().planes()[0].bytesused = size;
+ data->tdnBuffers_.push_back(b);
+ }
+ for (auto const &buffer : data->isp_[Isp::StitchOutput].getBuffers()) {
+ FrameBuffer *b = buffer.second.buffer;
+ b->_d()->metadata().planes()[0].bytesused = size;
+ data->stitchBuffers_.push_back(b);
+ }
+
+ /* Size up the config buffers as well. */
+ for (auto &b : data->isp_[Isp::Config].getBuffers()) {
+ FrameMetadata::Plane &plane = b.second.buffer->_d()->metadata().planes()[0];
+ plane.bytesused = sizeof(pisp_be_tiles_config);
+ }
+
+ /*
+ * Pass the stats and embedded data buffers to the IPA. No other
+ * buffers need to be passed.
+ */
+ mapBuffers(camera, data->cfe_[Cfe::Stats].getBuffers(), RPi::MaskStats);
+ if (data->sensorMetadata_)
+ mapBuffers(camera, data->cfe_[Cfe::Embedded].getBuffers(),
+ RPi::MaskEmbeddedData);
+
+ return 0;
+}
+
+int PipelineHandlerPiSP::platformRegister(std::unique_ptr<RPi::CameraData> &cameraData,
+ MediaDevice *cfe, MediaDevice *isp)
+{
+ PiSPCameraData *data = static_cast<PiSPCameraData *>(cameraData.get());
+ int ret;
+
+ MediaEntity *cfeImage = cfe->getEntityByName("rp1-cfe-fe-image0");
+ MediaEntity *cfeEmbedded = cfe->getEntityByName("rp1-cfe-csi2-ch1");
+ MediaEntity *cfeStats = cfe->getEntityByName("rp1-cfe-fe-stats");
+ MediaEntity *cfeConfig = cfe->getEntityByName("rp1-cfe-fe-config");
+ MediaEntity *ispInput = isp->getEntityByName("pispbe-input");
+ MediaEntity *IpaPrepare = isp->getEntityByName("pispbe-config");
+ MediaEntity *ispOutput0 = isp->getEntityByName("pispbe-output0");
+ MediaEntity *ispOutput1 = isp->getEntityByName("pispbe-output1");
+ MediaEntity *ispTdnOutput = isp->getEntityByName("pispbe-tdn_output");
+ MediaEntity *ispTdnInput = isp->getEntityByName("pispbe-tdn_input");
+ MediaEntity *ispStitchOutput = isp->getEntityByName("pispbe-stitch_output");
+ MediaEntity *ispStitchInput = isp->getEntityByName("pispbe-stitch_input");
+
+ /* Locate and open the cfe video streams. */
+ data->cfe_[Cfe::Output0] = RPi::Stream("CFE Image", cfeImage, StreamFlag::RequiresMmap);
+ data->cfe_[Cfe::Embedded] = RPi::Stream("CFE Embedded", cfeEmbedded);
+ data->cfe_[Cfe::Stats] = RPi::Stream("CFE Stats", cfeStats);
+ data->cfe_[Cfe::Config] = RPi::Stream("CFE Config", cfeConfig,
+ StreamFlag::Recurrent | StreamFlag::RequiresMmap);
+
+ /* Tag the ISP input stream as an import stream. */
+ data->isp_[Isp::Input] =
+ RPi::Stream("ISP Input", ispInput, StreamFlag::ImportOnly);
+ data->isp_[Isp::Config] =
+ RPi::Stream("ISP Config", IpaPrepare, StreamFlag::Recurrent |
+ StreamFlag::RequiresMmap);
+ data->isp_[Isp::Output0] =
+ RPi::Stream("ISP Output0", ispOutput0, StreamFlag::RequiresMmap);
+ data->isp_[Isp::Output1] =
+ RPi::Stream("ISP Output1", ispOutput1, StreamFlag::RequiresMmap);
+ data->isp_[Isp::TdnOutput] =
+ RPi::Stream("ISP TDN Output", ispTdnOutput, StreamFlag::Recurrent);
+ data->isp_[Isp::TdnInput] =
+ RPi::Stream("ISP TDN Input", ispTdnInput, StreamFlag::ImportOnly |
+ StreamFlag::Recurrent);
+ data->isp_[Isp::StitchOutput] =
+ RPi::Stream("ISP Stitch Output", ispStitchOutput, StreamFlag::Recurrent);
+ data->isp_[Isp::StitchInput] =
+ RPi::Stream("ISP Stitch Input", ispStitchInput, StreamFlag::ImportOnly |
+ StreamFlag::Recurrent);
+
+ /* Wire up all the buffer connections. */
+ data->cfe_[Cfe::Output0].dev()->bufferReady.connect(data, &PiSPCameraData::cfeBufferDequeue);
+ data->cfe_[Cfe::Stats].dev()->bufferReady.connect(data, &PiSPCameraData::cfeBufferDequeue);
+ data->cfe_[Cfe::Config].dev()->bufferReady.connect(data, &PiSPCameraData::cfeBufferDequeue);
+ data->isp_[Isp::Input].dev()->bufferReady.connect(data, &PiSPCameraData::beInputDequeue);
+ data->isp_[Isp::Config].dev()->bufferReady.connect(data, &PiSPCameraData::beOutputDequeue);
+ data->isp_[Isp::Output0].dev()->bufferReady.connect(data, &PiSPCameraData::beOutputDequeue);
+ data->isp_[Isp::Output1].dev()->bufferReady.connect(data, &PiSPCameraData::beOutputDequeue);
+ data->cfe_[Cfe::Embedded].dev()->bufferReady.connect(data, &PiSPCameraData::cfeBufferDequeue);
+
+ data->csi2Subdev_ = std::make_unique<V4L2Subdevice>(cfe->getEntityByName("csi2"));
+ data->feSubdev_ = std::make_unique<V4L2Subdevice>(cfe->getEntityByName("pisp-fe"));
+ data->csi2Subdev_->open();
+ data->feSubdev_->open();
+
+ /*
+ * Open all CFE and ISP streams. The exception is the embedded data
+ * stream, which only gets opened below if the IPA reports that the sensor
+ * supports embedded data.
+ *
+ * The below grouping is just for convenience so that we can easily
+ * iterate over all streams in one go.
+ */
+ data->streams_.push_back(&data->cfe_[Cfe::Output0]);
+ data->streams_.push_back(&data->cfe_[Cfe::Config]);
+ data->streams_.push_back(&data->cfe_[Cfe::Stats]);
+ if (data->sensorMetadata_)
+ data->streams_.push_back(&data->cfe_[Cfe::Embedded]);
+
+ data->streams_.push_back(&data->isp_[Isp::Input]);
+ data->streams_.push_back(&data->isp_[Isp::Output0]);
+ data->streams_.push_back(&data->isp_[Isp::Output1]);
+ data->streams_.push_back(&data->isp_[Isp::Config]);
+ data->streams_.push_back(&data->isp_[Isp::TdnInput]);
+ data->streams_.push_back(&data->isp_[Isp::TdnOutput]);
+ data->streams_.push_back(&data->isp_[Isp::StitchInput]);
+ data->streams_.push_back(&data->isp_[Isp::StitchOutput]);
+
+ for (auto stream : data->streams_) {
+ ret = stream->dev()->open();
+ if (ret)
+ return ret;
+ }
+
+ /* Write up all the IPA connections. */
+ data->ipa_->prepareIspComplete.connect(data, &PiSPCameraData::prepareIspComplete);
+ data->ipa_->processStatsComplete.connect(data, &PiSPCameraData::processStatsComplete);
+ data->ipa_->setCameraTimeout.connect(data, &PiSPCameraData::setCameraTimeout);
+
+ /*
+ * List the available streams an application may request. At present, we
+ * do not advertise CFE Embedded and ISP Statistics streams, as there
+ * is no mechanism for the application to request non-image buffer formats.
+ */
+ std::set<Stream *> streams;
+ streams.insert(&data->cfe_[Cfe::Output0]);
+ streams.insert(&data->isp_[Isp::Output0]);
+ streams.insert(&data->isp_[Isp::Output1]);
+
+ /* Create and register the camera. */
+ const std::string &id = data->sensor_->id();
+ std::shared_ptr<Camera> camera =
+ Camera::create(std::move(cameraData), id, streams);
+ PipelineHandler::registerCamera(std::move(camera));
+
+ LOG(RPI, Info) << "Registered camera " << id
+ << " to CFE device " << cfe->deviceNode()
+ << " and ISP device " << isp->deviceNode()
+ << " using PiSP variant " << data->pispVariant_.Name();
+
+ return 0;
+}
+
+CameraConfiguration::Status
+PiSPCameraData::platformValidate(RPi::RPiCameraConfiguration *rpiConfig) const
+{
+ std::vector<StreamParams> &rawStreams = rpiConfig->rawStreams_;
+ std::vector<StreamParams> &outStreams = rpiConfig->outStreams_;
+
+ CameraConfiguration::Status status = CameraConfiguration::Status::Valid;
+
+ /* Can only output 1 RAW stream and/or 2 YUV/RGB streams for now. */
+ if (rawStreams.size() > 1 || outStreams.size() > 2) {
+ LOG(RPI, Error) << "Invalid number of streams requested";
+ return CameraConfiguration::Status::Invalid;
+ }
+
+ if (!rawStreams.empty()) {
+ rawStreams[0].dev = cfe_[Cfe::Output0].dev();
+
+ StreamConfiguration *rawStream = rawStreams[0].cfg;
+ BayerFormat bayer = BayerFormat::fromPixelFormat(rawStream->pixelFormat);
+ /*
+ * We cannot output CSI2 packed or non 16-bit output from the frontend,
+ * so signal the output as unpacked 16-bits in these cases.
+ */
+ if (bayer.packing == BayerFormat::Packing::CSI2 || bayer.bitDepth != 16) {
+ bayer.packing = (bayer.packing == BayerFormat::Packing::CSI2) ?
+ BayerFormat::Packing::PISP1 : BayerFormat::Packing::None;
+ bayer.bitDepth = 16;
+ }
+
+ /* The RAW stream size cannot exceed the sensor frame output - for now. */
+ if (rawStream->size != rpiConfig->sensorFormat_.size ||
+ rawStream->pixelFormat != bayer.toPixelFormat()) {
+ rawStream->size = rpiConfig->sensorFormat_.size;
+ rawStream->pixelFormat = bayer.toPixelFormat();
+ status = CameraConfiguration::Adjusted;
+ }
+
+ rawStreams[0].format =
+ RPi::PipelineHandlerBase::toV4L2DeviceFormat(cfe_[Cfe::Output0].dev(), rawStream);
+
+ computeOptimalStride(rawStreams[0].format);
+ }
+
+ /*
+ * For the two ISP outputs, the lower resolution must be routed from
+ * Output 1
+ *
+ * Index 0 contains the largest requested resolution.
+ */
+ unsigned int largestWidth = getLargestWidth(rpiConfig->sensorFormat_,
+ rpiConfig->outStreams_);
+
+ for (unsigned int i = 0; i < outStreams.size(); i++) {
+ StreamConfiguration *cfg = outStreams[i].cfg;
+
+ /*
+ * Output 1 must be for the smallest resolution. We will
+ * have that fixed up in the code above.
+ */
+ auto ispOutput = i == 1 || outStreams.size() == 1 ? Isp::Output1
+ : Isp::Output0;
+ outStreams[i].dev = isp_[ispOutput].dev();
+
+ /*
+ * Don't let The output streams downscale by more than 64x when
+ * a downscaler block is available, or 16x when there's only the
+ * resampler.
+ */
+ Size rawSize = rpiConfig->sensorFormat_.size.boundedToAspectRatio(cfg->size);
+ unsigned int outputIndex = ispOutput == Isp::Output0 ? 0 : 1;
+ Size minSize;
+ if (pispVariant_.BackEndDownscalerAvailable(0, outputIndex)) {
+ /*
+ * Downscaler available. Allow up to 64x downscale. If not a multiple of
+ * 64, round up to the next integer, but also ensure the result is even.
+ */
+ const unsigned int downscale = 64;
+ minSize.width = (rawSize.width + downscale - 1) / downscale;
+ minSize.width = (minSize.width + 1) & ~1; /* ensure even */
+ minSize.height = (rawSize.height + downscale - 1) / downscale;
+ minSize.height = (minSize.height + 1) & ~1; /* ensure even */
+ } else {
+ /* No downscale. Resampler requires: (output_dim - 1) * 16 <= input_dim - 1 */
+ const unsigned int downscale = 16;
+ minSize.width = (rawSize.width - 1 + downscale - 1) / downscale + 1;
+ minSize.width = (minSize.width + 1) & ~1; /* ensure even */
+ minSize.height = (rawSize.height - 1 + downscale - 1) / downscale + 1;
+ minSize.height = (minSize.height + 1) & ~1; /* ensure even */
+ }
+ LOG(RPI, Debug) << "minSize: width " << minSize.width << " height " << minSize.height;
+
+ /* Bound the output size to minSize, preserve aspect ratio, and ensure even numbers. */
+ if (cfg->size.width < minSize.width) {
+ cfg->size.height = (cfg->size.height * minSize.width / cfg->size.width + 1) & ~1;
+ cfg->size.width = minSize.width;
+ status = CameraConfiguration::Status::Adjusted;
+ }
+
+ if (cfg->size.height < minSize.height) {
+ cfg->size.width = (cfg->size.width * minSize.height / cfg->size.height + 1) & ~1;
+ cfg->size.height = minSize.height;
+ status = CameraConfiguration::Status::Adjusted;
+ }
+
+ /* Make sure output1 is no larger than output 0. */
+ Size size = cfg->size.boundedTo(outStreams[0].cfg->size);
+
+ /* \todo Warn if upscaling: reduces image quality. */
+
+ if (cfg->size != size) {
+ cfg->size = size;
+ status = CameraConfiguration::Status::Adjusted;
+ }
+
+ outStreams[i].format =
+ RPi::PipelineHandlerBase::toV4L2DeviceFormat(outStreams[i].dev, outStreams[i].cfg);
+
+ /* Compute the optimal stride for the BE output buffers. */
+ computeOptimalStride(outStreams[i].format);
+
+ /*
+ * We need to check for software downscaling. This must happen
+ * after adjusting the device format so that we can choose the
+ * largest stride - which might have been the original
+ * unadjusted format, or the adjusted one (if software
+ * downscaling means it's larger).
+ */
+ V4L2DeviceFormat adjustedFormat = outStreams[i].format;
+ adjustDeviceFormat(adjustedFormat);
+
+ unsigned int swDownscale =
+ calculateSwDownscale(adjustedFormat, largestWidth,
+ be_->GetMaxDownscale());
+ LOG(RPI, Debug) << "For stream " << adjustedFormat
+ << " swDownscale is " << swDownscale;
+ if (swDownscale > 1) {
+ adjustedFormat.size.width *= swDownscale;
+ computeOptimalStride(adjustedFormat);
+ for (unsigned int p = 0; p < outStreams[i].format.planesCount; p++)
+ outStreams[i].format.planes[p].bpl =
+ std::max(outStreams[i].format.planes[p].bpl, adjustedFormat.planes[p].bpl);
+ }
+ }
+
+ return status;
+}
+
+int PiSPCameraData::platformPipelineConfigure(const std::unique_ptr<YamlObject> &root)
+{
+ config_ = {
+ .numCfeConfigStatsBuffers = 12,
+ .numCfeConfigQueue = 2,
+ .disableTdn = false,
+ .disableHdr = false,
+ };
+
+ if (!root)
+ return 0;
+
+ std::optional<double> ver = (*root)["version"].get<double>();
+ if (!ver || *ver != 1.0) {
+ LOG(RPI, Error) << "Unexpected configuration file version reported";
+ return -EINVAL;
+ }
+
+ std::optional<std::string> target = (*root)["target"].get<std::string>();
+ if (!target || *target != "pisp") {
+ LOG(RPI, Error) << "Unexpected target reported: expected \"pisp\", got "
+ << *target;
+ return -EINVAL;
+ }
+
+ const YamlObject &phConfig = (*root)["pipeline_handler"];
+ config_.numCfeConfigStatsBuffers =
+ phConfig["num_cfe_config_stats_buffers"].get<unsigned int>(config_.numCfeConfigStatsBuffers);
+ config_.numCfeConfigQueue =
+ phConfig["num_cfe_config_queue"].get<unsigned int>(config_.numCfeConfigQueue);
+ config_.disableTdn = phConfig["disable_tdn"].get<bool>(config_.disableTdn);
+ config_.disableHdr = phConfig["disable_hdr"].get<bool>(config_.disableHdr);
+
+ if (config_.disableTdn) {
+ LOG(RPI, Info) << "TDN disabled by user config";
+ streams_.erase(std::remove_if(streams_.begin(), streams_.end(),
+ [this] (const RPi::Stream *s) { return s == &isp_[Isp::TdnInput] ||
+ s == &isp_[Isp::TdnInput]; }),
+ streams_.end());
+ }
+
+ if (config_.disableHdr) {
+ LOG(RPI, Info) << "HDR disabled by user config";
+ streams_.erase(std::remove_if(streams_.begin(), streams_.end(),
+ [this] (const RPi::Stream *s) { return s == &isp_[Isp::StitchInput] ||
+ s == &isp_[Isp::StitchOutput]; }),
+ streams_.end());
+ }
+
+ if (config_.numCfeConfigStatsBuffers < 1) {
+ LOG(RPI, Error)
+ << "Invalid configuration: num_cfe_config_stats_buffers must be >= 1";
+ return -EINVAL;
+ }
+
+ if (config_.numCfeConfigQueue < 1) {
+ LOG(RPI, Error)
+ << "Invalid configuration: numCfeConfigQueue must be >= 1";
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+std::unordered_map<uint32_t, uint32_t> deviceAdjustTable = {
+ { V4L2_PIX_FMT_RGBX32, V4L2_PIX_FMT_RGB24 },
+ { V4L2_PIX_FMT_XBGR32, V4L2_PIX_FMT_BGR24 }
+};
+
+bool PiSPCameraData::adjustDeviceFormat(V4L2DeviceFormat &format) const
+{
+ auto it = deviceAdjustTable.find(format.fourcc.fourcc());
+
+ if (pispVariant_.BackendRGB32Supported(0))
+ return false;
+
+ if (it != deviceAdjustTable.end()) {
+ LOG(RPI, Debug) << "Swapping 32-bit for 24-bit format";
+ format.fourcc = V4L2PixelFormat(it->second);
+ return true;
+ }
+
+ return false;
+}
+
+int PiSPCameraData::platformConfigure(const RPi::RPiCameraConfiguration *rpiConfig)
+{
+ const std::vector<RPi::RPiCameraConfiguration::StreamParams> &rawStreams = rpiConfig->rawStreams_;
+ const std::vector<RPi::RPiCameraConfiguration::StreamParams> &outStreams = rpiConfig->outStreams_;
+ int ret;
+ V4L2VideoDevice *cfe = cfe_[Cfe::Output0].dev();
+ V4L2DeviceFormat cfeFormat;
+
+ /*
+ * See which streams are requested, and route the user
+ * StreamConfiguration appropriately.
+ */
+ if (rawStreams.empty()) {
+ /*
+ * The CFE Frontend output will always be 16-bits unpacked, so adjust the
+ * mbus code right at the start.
+ */
+ V4L2SubdeviceFormat sensorFormatMod = rpiConfig->sensorFormat_;
+ sensorFormatMod.code = mbusCodeUnpacked16(sensorFormatMod.code);
+ cfeFormat = RPi::PipelineHandlerBase::toV4L2DeviceFormat(cfe,
+ sensorFormatMod,
+ BayerFormat::Packing::PISP1);
+ computeOptimalStride(cfeFormat);
+ } else {
+ rawStreams[0].cfg->setStream(&cfe_[Cfe::Output0]);
+ cfe_[Cfe::Output0].setFlags(StreamFlag::External);
+ cfeFormat = rawStreams[0].format;
+ }
+
+ /*
+ * If the sensor output is 16-bits, we must endian swap the buffer
+ * contents to account for the HW missing this feature.
+ */
+ cfe_[Cfe::Output0].clearFlags(StreamFlag::Needs16bitEndianSwap);
+ if (MediaBusFormatInfo::info(rpiConfig->sensorFormat_.code).bitsPerPixel == 16) {
+ cfe_[Cfe::Output0].setFlags(StreamFlag::Needs16bitEndianSwap);
+ LOG(RPI, Warning)
+ << "The sensor is configured for a 16-bit output, statistics"
+ << " will not be correct. You must use manual camera settings.";
+ }
+
+ /* Ditto for the 14-bit unpacking. */
+ cfe_[Cfe::Output0].clearFlags(StreamFlag::Needs14bitUnpack);
+ if (MediaBusFormatInfo::info(rpiConfig->sensorFormat_.code).bitsPerPixel == 14) {
+ cfe_[Cfe::Output0].setFlags(StreamFlag::Needs14bitUnpack);
+ LOG(RPI, Warning)
+ << "The sensor is configured for a 14-bit output, statistics"
+ << " will not be correct. You must use manual camera settings.";
+ }
+
+ ret = cfe->setFormat(&cfeFormat);
+ if (ret)
+ return ret;
+
+ /* Set the TDN and Stitch node formats in case they are turned on. */
+ isp_[Isp::TdnOutput].dev()->setFormat(&cfeFormat);
+ isp_[Isp::TdnInput].dev()->setFormat(&cfeFormat);
+ isp_[Isp::StitchOutput].dev()->setFormat(&cfeFormat);
+ isp_[Isp::StitchInput].dev()->setFormat(&cfeFormat);
+
+ ret = isp_[Isp::Input].dev()->setFormat(&cfeFormat);
+ if (ret)
+ return ret;
+
+ LOG(RPI, Info) << "Sensor: " << sensor_->id()
+ << " - Selected sensor format: " << rpiConfig->sensorFormat_
+ << " - Selected CFE format: " << cfeFormat;
+
+ /*
+ * Find the largest width of any stream; we'll use it later to check for
+ * excessive downscaling.
+ */
+ unsigned int largestWidth = getLargestWidth(rpiConfig->sensorFormat_, outStreams);
+
+ unsigned int beEnables = 0;
+ V4L2DeviceFormat format;
+
+ /*
+ * First thing is to remove Isp::Output0 and Isp::Output1 from streams_
+ * as they may be unused depending on the configuration. Add them back
+ * only if needed.
+ */
+ streams_.erase(std::remove_if(streams_.begin(), streams_.end(),
+ [this] (const RPi::Stream *s) { return s == &isp_[Isp::Output0] ||
+ s == &isp_[Isp::Output1]; }),
+ streams_.end());
+
+ cropParams_.clear();
+ for (unsigned int i = 0; i < outStreams.size(); i++) {
+ StreamConfiguration *cfg = outStreams[i].cfg;
+ unsigned int ispIndex;
+
+ /*
+ * Output 1 must be for the smallest resolution. We will
+ * have that fixed up in the code above.
+ */
+ RPi::Stream *stream;
+ if (i == 1 || outStreams.size() == 1) {
+ stream = &isp_[Isp::Output1];
+ beEnables |= PISP_BE_RGB_ENABLE_OUTPUT1;
+ ispIndex = 1;
+ } else {
+ stream = &isp_[Isp::Output0];
+ beEnables |= PISP_BE_RGB_ENABLE_OUTPUT0;
+ ispIndex = 0;
+ }
+
+ format = outStreams[i].format;
+ bool needs32BitConversion = adjustDeviceFormat(format);
+
+ /*
+ * This pixel format may not be the same as the configured
+ * pixel format if adjustDeviceFormat() above has reqused a change.
+ */
+ PixelFormat pixFmt = format.fourcc.toPixelFormat();
+
+ /* If there's excessive downscaling we'll do some of it in software. */
+ unsigned int swDownscale = calculateSwDownscale(format, largestWidth,
+ be_->GetMaxDownscale());
+ unsigned int hwWidth = format.size.width * swDownscale;
+ format.size.width = hwWidth;
+
+ LOG(RPI, Debug) << "Setting " << stream->name() << " to "
+ << format << " (sw downscale " << swDownscale << ")";
+
+ ret = stream->dev()->setFormat(&format);
+ if (ret)
+ return -EINVAL;
+ LOG(RPI, Debug) << "After setFormat, stride " << format.planes[0].bpl;
+
+ if (format.size.height != cfg->size.height ||
+ format.size.width != hwWidth || format.fourcc.toPixelFormat() != pixFmt) {
+ LOG(RPI, Error)
+ << "Failed to set requested format on " << stream->name()
+ << ", returned " << format;
+ return -EINVAL;
+ }
+
+ LOG(RPI, Debug)
+ << "Stream " << stream->name() << " has color space "
+ << ColorSpace::toString(cfg->colorSpace);
+
+ libcamera::RPi::Stream::StreamFlags flags = StreamFlag::External;
+
+ stream->clearFlags(StreamFlag::Needs32bitConv);
+ if (needs32BitConversion)
+ flags |= StreamFlag::Needs32bitConv;
+
+ /* Set smallest selection the ISP will allow. */
+ Size minCrop{ 32, 32 };
+
+ /* Adjust aspect ratio by providing crops on the input image. */
+ Size size = cfeFormat.size.boundedToAspectRatio(outStreams[i].cfg->size);
+ Rectangle ispCrop = size.centeredTo(Rectangle(cfeFormat.size).center());
+
+ /*
+ * Calculate the minimum crop. The rule is that (output_dim - 1) / (input_dim - 1)
+ * must be strictly < 16. We add 2 after dividing because +1
+ * comes from the division that rounds down, and +1 because we
+ * had (input_dim - 1).
+ */
+ Size scalingMinSize = outStreams[i].cfg->size.shrunkBy({ 1, 1 }) / 16;
+ scalingMinSize.growBy({ 2, 2 });
+ minCrop.expandTo(scalingMinSize);
+
+ platformSetIspCrop(ispIndex, ispCrop);
+ /*
+ * Set the scaler crop to the value we are using (scaled to native sensor
+ * coordinates).
+ */
+ cropParams_.emplace(std::piecewise_construct,
+ std::forward_as_tuple(outStreams[i].index),
+ std::forward_as_tuple(ispCrop, minCrop, ispIndex));
+
+ cfg->setStream(stream);
+ stream->setFlags(flags);
+ stream->setSwDownscale(swDownscale);
+ streams_.push_back(stream);
+ }
+
+ pisp_be_global_config global;
+ be_->GetGlobal(global);
+ global.rgb_enables &= ~(PISP_BE_RGB_ENABLE_OUTPUT0 + PISP_BE_RGB_ENABLE_OUTPUT1);
+ global.rgb_enables |= beEnables;
+ be_->SetGlobal(global);
+
+ beEnabled_ = beEnables & (PISP_BE_RGB_ENABLE_OUTPUT0 | PISP_BE_RGB_ENABLE_OUTPUT1);
+
+ /* CFE statistics output format. */
+ format = {};
+ format.fourcc = V4L2PixelFormat(V4L2_META_FMT_RPI_FE_STATS);
+ ret = cfe_[Cfe::Stats].dev()->setFormat(&format);
+ if (ret) {
+ LOG(RPI, Error) << "Failed to set format on CFE stats stream: "
+ << format;
+ return ret;
+ }
+
+ /* CFE config format. */
+ format = {};
+ format.fourcc = V4L2PixelFormat(V4L2_META_FMT_RPI_FE_CFG);
+ ret = cfe_[Cfe::Config].dev()->setFormat(&format);
+ if (ret) {
+ LOG(RPI, Error) << "Failed to set format on CFE config stream: "
+ << format;
+ return ret;
+ }
+
+ /*
+ * Configure the CFE embedded data output format only if the sensor
+ * supports it.
+ */
+ V4L2SubdeviceFormat embeddedFormat = sensor_->embeddedDataFormat();
+ if (sensorMetadata_) {
+ static const std::map<uint32_t, V4L2PixelFormat> metaFormats{
+ { MEDIA_BUS_FMT_META_8, V4L2PixelFormat(V4L2_META_FMT_GENERIC_8) },
+ { MEDIA_BUS_FMT_META_10, V4L2PixelFormat(V4L2_META_FMT_GENERIC_CSI2_10) },
+ { MEDIA_BUS_FMT_META_12, V4L2PixelFormat(V4L2_META_FMT_GENERIC_CSI2_12) },
+ { MEDIA_BUS_FMT_META_14, V4L2PixelFormat(V4L2_META_FMT_GENERIC_CSI2_14) },
+ };
+
+ const auto metaFormat = metaFormats.find(embeddedFormat.code);
+ if (metaFormat == metaFormats.end()) {
+ LOG(RPI, Error)
+ << "Unsupported metadata format "
+ << utils::hex(embeddedFormat.code, 4);
+ return -EINVAL;
+ }
+
+ format = {};
+ format.fourcc = metaFormat->second;
+ format.size = embeddedFormat.size;
+
+ LOG(RPI, Debug) << "Setting embedded data format " << format;
+ ret = cfe_[Cfe::Embedded].dev()->setFormat(&format);
+ if (ret) {
+ LOG(RPI, Error) << "Failed to set format on CFE embedded: "
+ << format;
+ return ret;
+ }
+ }
+
+ configureEntities(rpiConfig->sensorFormat_, embeddedFormat);
+ configureCfe();
+
+ if (beEnabled_)
+ configureBe(rpiConfig->yuvColorSpace_);
+
+ return 0;
+}
+
+void PiSPCameraData::platformStart()
+{
+ /*
+ * We don't need to worry about dequeue events for the TDN and Stitch
+ * nodes as the buffers are simply ping-ponged every frame. But we do
+ * want to track the currently used input index.
+ */
+ tdnInputIndex_ = 0;
+ stitchInputIndex_ = 0;
+
+ cfeJobQueue_ = {};
+
+ for (unsigned int i = 0; i < config_.numCfeConfigQueue; i++)
+ prepareCfe();
+
+ /* Clear the debug dump file history. */
+ last_dump_file_.clear();
+}
+
+void PiSPCameraData::platformStop()
+{
+ cfeJobQueue_ = {};
+}
+
+void PiSPCameraData::platformFreeBuffers()
+{
+ tdnBuffers_.clear();
+ stitchBuffers_.clear();
+}
+
+void PiSPCameraData::cfeBufferDequeue(FrameBuffer *buffer)
+{
+ RPi::Stream *stream = nullptr;
+ int index = 0;
+
+ if (!isRunning())
+ return;
+
+ for (RPi::Stream &s : cfe_) {
+ index = s.getBufferId(buffer);
+ if (index) {
+ stream = &s;
+ break;
+ }
+ }
+
+ /* If the last CFE job has completed, we need a new job entry in the queue. */
+ if (cfeJobQueue_.empty() || cfeJobComplete())
+ cfeJobQueue_.push({});
+
+ CfeJob &job = cfeJobQueue_.back();
+
+ /* The buffer must belong to one of our streams. */
+ ASSERT(stream);
+
+ LOG(RPI, Debug) << "Stream " << stream->name() << " buffer dequeue"
+ << ", buffer id " << index
+ << ", timestamp: " << buffer->metadata().timestamp;
+
+ job.buffers[stream] = buffer;
+
+ if (stream == &cfe_[Cfe::Output0]) {
+ /* Do an endian swap or 14-bit unpacking if needed. */
+ if (stream->getFlags() & StreamFlag::Needs16bitEndianSwap ||
+ stream->getFlags() & StreamFlag::Needs14bitUnpack) {
+ const unsigned int stride = stream->configuration().stride;
+ const unsigned int width = stream->configuration().size.width;
+ const unsigned int height = stream->configuration().size.height;
+ const RPi::BufferObject &b = stream->getBuffer(index);
+
+ ASSERT(b.mapped);
+ void *mem = b.mapped->planes()[0].data();
+
+ dmabufSyncStart(buffer->planes()[0].fd);
+ if (stream->getFlags() & StreamFlag::Needs16bitEndianSwap)
+ do16BitEndianSwap(mem, width, height, stride);
+ else
+ do14bitUnpack(mem, width, height, stride);
+ dmabufSyncEnd(buffer->planes()[0].fd);
+ }
+
+ /*
+ * Lookup the sensor controls used for this frame sequence from
+ * DelayedControl and queue them along with the frame buffer.
+ */
+ auto [ctrl, delayContext] = delayedCtrls_->get(buffer->metadata().sequence);
+ /*
+ * Add the frame timestamp to the ControlList for the IPA to use
+ * as it does not receive the FrameBuffer object.
+ */
+ ctrl.set(controls::SensorTimestamp, buffer->metadata().timestamp);
+ job.sensorControls = std::move(ctrl);
+ job.delayContext = delayContext;
+ } else if (stream == &cfe_[Cfe::Config]) {
+ /* The config buffer can be re-queued back straight away. */
+ handleStreamBuffer(buffer, &cfe_[Cfe::Config]);
+ prepareCfe();
+ }
+
+ handleState();
+}
+
+void PiSPCameraData::beInputDequeue(FrameBuffer *buffer)
+{
+ if (!isRunning())
+ return;
+
+ LOG(RPI, Debug) << "Stream ISP Input buffer complete"
+ << ", buffer id " << cfe_[Cfe::Output0].getBufferId(buffer)
+ << ", timestamp: " << buffer->metadata().timestamp;
+
+ /* The ISP input buffer gets re-queued into CFE. */
+ handleStreamBuffer(buffer, &cfe_[Cfe::Output0]);
+ handleState();
+}
+
+void PiSPCameraData::beOutputDequeue(FrameBuffer *buffer)
+{
+ RPi::Stream *stream = nullptr;
+ int index;
+
+ if (!isRunning())
+ return;
+
+ for (RPi::Stream &s : isp_) {
+ index = s.getBufferId(buffer);
+ if (index) {
+ stream = &s;
+ break;
+ }
+ }
+
+ /* The buffer must belong to one of our ISP output streams. */
+ ASSERT(stream);
+
+ LOG(RPI, Debug) << "Stream " << stream->name() << " buffer complete"
+ << ", buffer id " << index
+ << ", timestamp: " << buffer->metadata().timestamp;
+
+ bool downscale = stream->swDownscale() > 1;
+ bool needs32bitConv = !!(stream->getFlags() & StreamFlag::Needs32bitConv);
+
+ if (downscale || needs32bitConv)
+ dmabufSyncStart(buffer->planes()[0].fd);
+
+ if (downscale) {
+ /* Further software downscaling must be applied. */
+ downscaleStreamBuffer(stream, index);
+ }
+
+ /* Convert 24bpp outputs to 32bpp outputs where necessary. */
+ if (needs32bitConv) {
+ unsigned int stride = stream->configuration().stride;
+ unsigned int width = stream->configuration().size.width;
+ unsigned int height = stream->configuration().size.height;
+
+ const RPi::BufferObject &b = stream->getBuffer(index);
+
+ ASSERT(b.mapped);
+ void *mem = b.mapped->planes()[0].data();
+ do32BitConversion(mem, width, height, stride);
+ }
+
+ if (downscale || needs32bitConv)
+ dmabufSyncEnd(buffer->planes()[0].fd);
+
+ handleStreamBuffer(buffer, stream);
+
+ /*
+ * Increment the number of ISP outputs generated.
+ * This is needed to track dropped frames.
+ */
+ ispOutputCount_++;
+ handleState();
+}
+
+void PiSPCameraData::processStatsComplete(const ipa::RPi::BufferIds &buffers)
+{
+ if (!isRunning())
+ return;
+
+ handleStreamBuffer(cfe_[Cfe::Stats].getBuffers().at(buffers.stats & RPi::MaskID).buffer,
+ &cfe_[Cfe::Stats]);
+}
+
+void PiSPCameraData::setCameraTimeout(uint32_t maxFrameLengthMs)
+{
+ /*
+ * Set the dequeue timeout to the larger of 5x the maximum reported
+ * frame length advertised by the IPA over a number of frames. Allow
+ * a minimum timeout value of 1s.
+ */
+ utils::Duration timeout =
+ std::max<utils::Duration>(1s, 5 * maxFrameLengthMs * 1ms);
+
+ LOG(RPI, Debug) << "Setting CFE timeout to " << timeout;
+ cfe_[Cfe::Output0].dev()->setDequeueTimeout(timeout);
+}
+
+void PiSPCameraData::prepareIspComplete(const ipa::RPi::BufferIds &buffers, bool stitchSwapBuffers)
+{
+ unsigned int embeddedId = buffers.embedded & RPi::MaskID;
+ unsigned int bayerId = buffers.bayer & RPi::MaskID;
+ FrameBuffer *buffer;
+
+ if (!isRunning())
+ return;
+
+ if (sensorMetadata_ && embeddedId) {
+ buffer = cfe_[Cfe::Embedded].getBuffers().at(embeddedId).buffer;
+ handleStreamBuffer(buffer, &cfe_[Cfe::Embedded]);
+ }
+
+ if (!beEnabled_) {
+ /*
+ * If there is no need to run the Backend, just signal that the
+ * input buffer is completed and all Backend outputs are ready.
+ */
+ ispOutputCount_ = ispOutputTotal_;
+ buffer = cfe_[Cfe::Output0].getBuffers().at(bayerId).buffer;
+ handleStreamBuffer(buffer, &cfe_[Cfe::Output0]);
+ } else
+ prepareBe(bayerId, stitchSwapBuffers);
+
+ state_ = State::IpaComplete;
+ handleState();
+}
+
+int PiSPCameraData::configureCfe()
+{
+ V4L2DeviceFormat cfeFormat;
+ cfe_[Cfe::Output0].dev()->getFormat(&cfeFormat);
+
+ std::scoped_lock<FrontEnd> l(*fe_);
+
+ pisp_fe_global_config global;
+ fe_->GetGlobal(global);
+ global.enables &= ~PISP_FE_ENABLE_COMPRESS0;
+
+ global.enables |= PISP_FE_ENABLE_OUTPUT0;
+ global.bayer_order = toPiSPBayerOrder(cfeFormat.fourcc);
+
+ pisp_image_format_config image = toPiSPImageFormat(cfeFormat);
+ pisp_fe_input_config input = {};
+
+ input.streaming = 1;
+ input.format = image;
+ input.format.format = PISP_IMAGE_FORMAT_BPS_16;
+
+ if (PISP_IMAGE_FORMAT_COMPRESSED(image.format)) {
+ pisp_compress_config compress;
+ compress.offset = DefaultCompressionOffset;
+ compress.mode = (image.format & PISP_IMAGE_FORMAT_COMPRESSION_MASK) /
+ PISP_IMAGE_FORMAT_COMPRESSION_MODE_1;
+ global.enables |= PISP_FE_ENABLE_COMPRESS0;
+ fe_->SetCompress(0, compress);
+ }
+
+ if (input.format.width > pispVariant_.FrontEndDownscalerMaxWidth(0, 0))
+ global.enables |= PISP_FE_ENABLE_DECIMATE;
+
+ fe_->SetGlobal(global);
+ fe_->SetInput(input);
+ fe_->SetOutputFormat(0, image);
+
+ return 0;
+}
+
+bool PiSPCameraData::calculateCscConfiguration(const V4L2DeviceFormat &v4l2Format, pisp_be_ccm_config &csc)
+{
+ const PixelFormat &pixFormat = v4l2Format.fourcc.toPixelFormat();
+ const PixelFormatInfo &info = PixelFormatInfo::info(pixFormat);
+ memset(&csc, 0, sizeof(csc));
+
+ if (info.colourEncoding == PixelFormatInfo::ColourEncodingYUV) {
+ /* Look up the correct YCbCr conversion matrix for this colour space. */
+ if (v4l2Format.colorSpace == ColorSpace::Sycc)
+ be_->InitialiseYcbcr(csc, "jpeg");
+ else if (v4l2Format.colorSpace == ColorSpace::Smpte170m)
+ be_->InitialiseYcbcr(csc, "smpte170m");
+ else if (v4l2Format.colorSpace == ColorSpace::Rec709)
+ be_->InitialiseYcbcr(csc, "rec709");
+ else {
+ LOG(RPI, Warning)
+ << "Unrecognised colour space "
+ << ColorSpace::toString(v4l2Format.colorSpace)
+ << ", defaulting to sYCC";
+ be_->InitialiseYcbcr(csc, "jpeg");
+ }
+ return true;
+ }
+ /* There will be more formats to check for in due course. */
+ else if (pixFormat == formats::RGB888 || pixFormat == formats::RGBX8888 ||
+ pixFormat == formats::XRGB8888 || pixFormat == formats::RGB161616) {
+ /* Identity matrix but with RB colour swap. */
+ csc.coeffs[2] = csc.coeffs[4] = csc.coeffs[6] = 1 << 10;
+ return true;
+ }
+
+ return false;
+}
+
+int PiSPCameraData::configureBe(const std::optional<ColorSpace> &yuvColorSpace)
+{
+ pisp_image_format_config inputFormat;
+ V4L2DeviceFormat cfeFormat;
+
+ isp_[Isp::Input].dev()->getFormat(&cfeFormat);
+ inputFormat = toPiSPImageFormat(cfeFormat);
+
+ pisp_be_global_config global;
+ be_->GetGlobal(global);
+ global.bayer_enables &= ~(PISP_BE_BAYER_ENABLE_DECOMPRESS +
+ PISP_BE_BAYER_ENABLE_TDN_DECOMPRESS +
+ PISP_BE_BAYER_ENABLE_TDN_COMPRESS +
+ PISP_BE_BAYER_ENABLE_STITCH_DECOMPRESS +
+ PISP_BE_BAYER_ENABLE_STITCH_COMPRESS);
+ global.rgb_enables &= ~(PISP_BE_RGB_ENABLE_RESAMPLE0 +
+ PISP_BE_RGB_ENABLE_RESAMPLE1 +
+ PISP_BE_RGB_ENABLE_DOWNSCALE0 +
+ PISP_BE_RGB_ENABLE_DOWNSCALE1 +
+ PISP_BE_RGB_ENABLE_CSC0 +
+ PISP_BE_RGB_ENABLE_CSC1);
+
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_INPUT;
+ global.bayer_order = toPiSPBayerOrder(cfeFormat.fourcc);
+
+ ispOutputTotal_ = 1; /* Config buffer */
+ if (PISP_IMAGE_FORMAT_COMPRESSED(inputFormat.format)) {
+ pisp_decompress_config decompress;
+ decompress.offset = DefaultCompressionOffset;
+ decompress.mode = (inputFormat.format & PISP_IMAGE_FORMAT_COMPRESSION_MASK)
+ / PISP_IMAGE_FORMAT_COMPRESSION_MODE_1;
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_DECOMPRESS;
+ be_->SetDecompress(decompress);
+ }
+
+ if (global.rgb_enables & PISP_BE_RGB_ENABLE_OUTPUT0) {
+ pisp_be_output_format_config outputFormat0 = {};
+ V4L2DeviceFormat ispFormat0 = {};
+
+ isp_[Isp::Output0].dev()->getFormat(&ispFormat0);
+ outputFormat0.image = toPiSPImageFormat(ispFormat0);
+
+ pisp_be_ccm_config csc;
+ if (calculateCscConfiguration(ispFormat0, csc)) {
+ global.rgb_enables |= PISP_BE_RGB_ENABLE_CSC0;
+ be_->SetCsc(0, csc);
+ }
+
+ BackEnd::SmartResize resize = {};
+ resize.width = ispFormat0.size.width;
+ resize.height = ispFormat0.size.height;
+ be_->SetSmartResize(0, resize);
+
+ setupOutputClipping(ispFormat0, outputFormat0);
+
+ be_->SetOutputFormat(0, outputFormat0);
+ ispOutputTotal_++;
+ }
+
+ if (global.rgb_enables & PISP_BE_RGB_ENABLE_OUTPUT1) {
+ pisp_be_output_format_config outputFormat1 = {};
+ V4L2DeviceFormat ispFormat1 = {};
+
+ isp_[Isp::Output1].dev()->getFormat(&ispFormat1);
+ outputFormat1.image = toPiSPImageFormat(ispFormat1);
+
+ pisp_be_ccm_config csc;
+ if (calculateCscConfiguration(ispFormat1, csc)) {
+ global.rgb_enables |= PISP_BE_RGB_ENABLE_CSC1;
+ be_->SetCsc(1, csc);
+ }
+
+ BackEnd::SmartResize resize = {};
+ resize.width = ispFormat1.size.width;
+ resize.height = ispFormat1.size.height;
+ be_->SetSmartResize(1, resize);
+
+ setupOutputClipping(ispFormat1, outputFormat1);
+
+ be_->SetOutputFormat(1, outputFormat1);
+ ispOutputTotal_++;
+ }
+
+ /* Setup the TDN I/O blocks in case TDN gets turned on later. */
+ V4L2DeviceFormat tdnV4L2Format;
+ isp_[Isp::TdnOutput].dev()->getFormat(&tdnV4L2Format);
+ pisp_image_format_config tdnFormat = toPiSPImageFormat(tdnV4L2Format);
+ be_->SetTdnOutputFormat(tdnFormat);
+ be_->SetTdnInputFormat(tdnFormat);
+
+ if (PISP_IMAGE_FORMAT_COMPRESSED(tdnFormat.format)) {
+ pisp_decompress_config tdnDecompress;
+ pisp_compress_config tdnCompress;
+
+ tdnDecompress.offset = tdnCompress.offset = DefaultCompressionOffset;
+ tdnDecompress.mode = tdnCompress.mode = DefaultCompressionMode;
+ be_->SetTdnDecompress(tdnDecompress);
+ be_->SetTdnCompress(tdnCompress);
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_TDN_DECOMPRESS +
+ PISP_BE_BAYER_ENABLE_TDN_COMPRESS;
+ }
+
+ /* Likewise for the Stitch block. */
+ V4L2DeviceFormat stitchV4L2Format;
+ isp_[Isp::StitchOutput].dev()->getFormat(&stitchV4L2Format);
+ pisp_image_format_config stitchFormat = toPiSPImageFormat(stitchV4L2Format);
+ be_->SetStitchOutputFormat(stitchFormat);
+ be_->SetStitchInputFormat(stitchFormat);
+
+ if (PISP_IMAGE_FORMAT_COMPRESSED(stitchFormat.format)) {
+ pisp_decompress_config stitchDecompress;
+ pisp_compress_config stitchCompress;
+
+ /* Stitch block is after BLC, so compression offset should be 0. */
+ stitchDecompress.offset = stitchCompress.offset = 0;
+ stitchDecompress.mode = stitchCompress.mode = DefaultCompressionMode;
+ be_->SetStitchDecompress(stitchDecompress);
+ be_->SetStitchCompress(stitchCompress);
+ global.bayer_enables |= PISP_BE_BAYER_ENABLE_STITCH_DECOMPRESS +
+ PISP_BE_BAYER_ENABLE_STITCH_COMPRESS;
+ }
+
+ /*
+ * For the bit of the pipeline where we go temporarily into YCbCr, we'll use the
+ * same flavour of YCbCr as dictated by the headline colour space. But there's
+ * no benefit from compressing and shifting the range, so we'll stick with the
+ * full range version of whatever that colour space is.
+ */
+ if (yuvColorSpace) {
+ pisp_be_ccm_config ccm;
+ if (yuvColorSpace == ColorSpace::Sycc) {
+ be_->InitialiseYcbcr(ccm, "jpeg");
+ be_->SetYcbcr(ccm);
+ be_->InitialiseYcbcrInverse(ccm, "jpeg");
+ be_->SetYcbcrInverse(ccm);
+ } else if (yuvColorSpace == ColorSpace::Smpte170m) {
+ /* We want the full range version of smpte170m, aka. jpeg */
+ be_->InitialiseYcbcr(ccm, "jpeg");
+ be_->SetYcbcr(ccm);
+ be_->InitialiseYcbcrInverse(ccm, "jpeg");
+ be_->SetYcbcrInverse(ccm);
+ } else if (yuvColorSpace == ColorSpace::Rec709) {
+ be_->InitialiseYcbcr(ccm, "rec709_full");
+ be_->SetYcbcr(ccm);
+ be_->InitialiseYcbcrInverse(ccm, "rec709_full");
+ be_->SetYcbcrInverse(ccm);
+ } else {
+ /* Validation should have ensured this can't happen. */
+ LOG(RPI, Error)
+ << "Invalid colour space "
+ << ColorSpace::toString(yuvColorSpace);
+ ASSERT(0);
+ }
+ } else {
+ /* Again, validation should have prevented this. */
+ LOG(RPI, Error) << "No YUV colour space";
+ ASSERT(0);
+ }
+
+ be_->SetGlobal(global);
+ be_->SetInputFormat(inputFormat);
+
+ return 0;
+}
+
+void PiSPCameraData::platformSetIspCrop(unsigned int index, const Rectangle &ispCrop)
+{
+ pisp_be_crop_config beCrop = {
+ static_cast<uint16_t>(ispCrop.x),
+ static_cast<uint16_t>(ispCrop.y),
+ static_cast<uint16_t>(ispCrop.width),
+ static_cast<uint16_t>(ispCrop.height)
+ };
+
+ LOG(RPI, Debug) << "Output " << index << " " << ispCrop.toString();
+ be_->SetCrop(index, beCrop);
+}
+
+int PiSPCameraData::platformInitIpa(ipa::RPi::InitParams &params)
+{
+ params.fe = fe_.fd();
+ params.be = be_.fd();
+ return 0;
+}
+
+int PiSPCameraData::configureEntities(V4L2SubdeviceFormat sensorFormat,
+ V4L2SubdeviceFormat &embeddedFormat)
+{
+ int ret = 0;
+
+ constexpr unsigned int csiVideoSinkPad = 0;
+ constexpr unsigned int csiVideoSourcePad = 1;
+ constexpr unsigned int csiMetaSourcePad = 2;
+
+ constexpr unsigned int feVideoSinkPad = 0;
+ constexpr unsigned int feConfigSinkPad = 1;
+ constexpr unsigned int feVideo0SourcePad = 2;
+ constexpr unsigned int feVideo1SourcePad = 3;
+ constexpr unsigned int feStatsSourcePad = 4;
+
+ const MediaEntity *csi2 = csi2Subdev_->entity();
+ const MediaEntity *fe = feSubdev_->entity();
+
+ for (MediaLink *link : csi2->pads()[csiVideoSourcePad]->links()) {
+ if (link->sink()->entity()->name() == "rp1-cfe-csi2-ch0")
+ link->setEnabled(false);
+ else if (link->sink()->entity()->name() == "pisp-fe")
+ link->setEnabled(true);
+ }
+
+ csi2->pads()[csiMetaSourcePad]->links()[0]->setEnabled(sensorMetadata_);
+
+ fe->pads()[feConfigSinkPad]->links()[0]->setEnabled(true);
+ fe->pads()[feVideo0SourcePad]->links()[0]->setEnabled(true);
+ fe->pads()[feVideo1SourcePad]->links()[0]->setEnabled(false);
+ fe->pads()[feStatsSourcePad]->links()[0]->setEnabled(true);
+
+ const V4L2Subdevice::Stream imageStream{
+ csiVideoSinkPad,
+ sensor_->imageStream().stream
+ };
+ const V4L2Subdevice::Stream embeddedDataStream{
+ csiVideoSinkPad,
+ sensor_->embeddedDataStream().value_or(V4L2Subdevice::Stream{}).stream
+ };
+
+ V4L2Subdevice::Routing routing;
+ routing.emplace_back(imageStream, V4L2Subdevice::Stream{ csiVideoSourcePad, 0 },
+ V4L2_SUBDEV_ROUTE_FL_ACTIVE);
+
+ if (sensorMetadata_)
+ routing.emplace_back(embeddedDataStream,
+ V4L2Subdevice::Stream{ csiMetaSourcePad, 0 },
+ V4L2_SUBDEV_ROUTE_FL_ACTIVE);
+
+ ret = csi2Subdev_->setRouting(&routing);
+ if (ret)
+ return ret;
+
+ ret = csi2Subdev_->setFormat(imageStream, &sensorFormat);
+ if (ret)
+ return ret;
+
+ if (sensorMetadata_) {
+ ret = csi2Subdev_->setFormat(embeddedDataStream, &embeddedFormat);
+ if (ret)
+ return ret;
+ }
+
+ V4L2SubdeviceFormat feFormat = sensorFormat;
+ feFormat.code = mbusCodeUnpacked16(sensorFormat.code);
+ ret = feSubdev_->setFormat(feVideoSinkPad, &feFormat);
+ if (ret)
+ return ret;
+
+ ret = csi2Subdev_->setFormat(csiVideoSourcePad, &feFormat);
+ if (ret)
+ return ret;
+
+ V4L2DeviceFormat feOutputFormat;
+ cfe_[Cfe::Output0].dev()->getFormat(&feOutputFormat);
+ BayerFormat feOutputBayer = BayerFormat::fromV4L2PixelFormat(feOutputFormat.fourcc);
+
+ feFormat.code = bayerToMbusCode(feOutputBayer);
+ ret = feSubdev_->setFormat(feVideo0SourcePad, &feFormat);
+
+ return ret;
+}
+
+void PiSPCameraData::prepareCfe()
+{
+ /* Fetch an unused config buffer from the stream .*/
+ const RPi::BufferObject &config = cfe_[Cfe::Config].acquireBuffer();
+ ASSERT(config.mapped);
+
+ {
+ std::scoped_lock<FrontEnd> l(*fe_);
+ Span<uint8_t> configBuffer = config.mapped->planes()[0];
+ fe_->Prepare(reinterpret_cast<pisp_fe_config *>(configBuffer.data()));
+ }
+
+ config.buffer->_d()->metadata().planes()[0].bytesused = sizeof(pisp_fe_config);
+ cfe_[Cfe::Config].queueBuffer(config.buffer);
+}
+
+void PiSPCameraData::prepareBe(uint32_t bufferId, bool stitchSwapBuffers)
+{
+ ispOutputCount_ = 0;
+
+ FrameBuffer *buffer = cfe_[Cfe::Output0].getBuffers().at(bufferId).buffer;
+
+ LOG(RPI, Debug) << "Input re-queue to ISP, buffer id " << bufferId
+ << ", timestamp: " << buffer->metadata().timestamp;
+
+ isp_[Isp::Input].queueBuffer(buffer);
+
+ /* Ping-pong between input/output buffers for the TDN and Stitch nodes. */
+ if (!config_.disableTdn) {
+ isp_[Isp::TdnInput].queueBuffer(tdnBuffers_[tdnInputIndex_]);
+ isp_[Isp::TdnOutput].queueBuffer(tdnBuffers_[tdnInputIndex_ ^ 1]);
+ tdnInputIndex_ ^= 1;
+ }
+
+ if (!config_.disableHdr) {
+ if (stitchSwapBuffers)
+ stitchInputIndex_ ^= 1;
+ isp_[Isp::StitchInput].queueBuffer(stitchBuffers_[stitchInputIndex_]);
+ isp_[Isp::StitchOutput].queueBuffer(stitchBuffers_[stitchInputIndex_ ^ 1]);
+ }
+
+ /* Fetch an unused config buffer from the stream .*/
+ const RPi::BufferObject &config = isp_[Isp::Config].acquireBuffer();
+ ASSERT(config.mapped);
+
+ Span<uint8_t> configBufferSpan = config.mapped->planes()[0];
+ pisp_be_tiles_config *configBuffer = reinterpret_cast<pisp_be_tiles_config *>(configBufferSpan.data());
+ be_->Prepare(configBuffer);
+
+ /*
+ * If the LIBCAMERA_RPI_PISP_CONFIG_DUMP environment variable is set,
+ * dump the Backend config to the given file. This is a one-shot
+ * operation, so log the filename that was provided and allow the
+ * application to change the filename for multiple dumps in a single
+ * run.
+ *
+ * \todo Using an environment variable is only a temporary solution
+ * until we have support for vendor specific controls in libcamera.
+ */
+ const char *config_dump = utils::secure_getenv("LIBCAMERA_RPI_PISP_CONFIG_DUMP");
+ if (config_dump && last_dump_file_ != config_dump) {
+ std::ofstream of(config_dump);
+ if (of.is_open()) {
+ of << be_->GetJsonConfig(configBuffer);
+ last_dump_file_ = config_dump;
+ }
+ }
+
+ isp_[Isp::Config].queueBuffer(config.buffer);
+}
+
+void PiSPCameraData::tryRunPipeline()
+{
+ /* If any of our request or buffer queues are empty, we cannot proceed. */
+ if (state_ != State::Idle || requestQueue_.empty() || !cfeJobComplete())
+ return;
+
+ CfeJob &job = cfeJobQueue_.front();
+
+ /* Take the first request from the queue and action the IPA. */
+ Request *request = requestQueue_.front();
+
+ /* See if a new ScalerCrop value needs to be applied. */
+ applyScalerCrop(request->controls());
+
+ /*
+ * Clear the request metadata and fill it with some initial non-IPA
+ * related controls. We clear it first because the request metadata
+ * may have been populated if we have dropped the previous frame.
+ */
+ request->metadata().clear();
+ fillRequestMetadata(job.sensorControls, request);
+
+ /* Set our state to say the pipeline is active. */
+ state_ = State::Busy;
+
+ unsigned int bayerId = cfe_[Cfe::Output0].getBufferId(job.buffers[&cfe_[Cfe::Output0]]);
+ unsigned int statsId = cfe_[Cfe::Stats].getBufferId(job.buffers[&cfe_[Cfe::Stats]]);
+ ASSERT(bayerId && statsId);
+
+ std::stringstream ss;
+ ss << "Signalling IPA processStats and prepareIsp:"
+ << " Bayer buffer id: " << bayerId
+ << " Stats buffer id: " << statsId;
+
+ ipa::RPi::PrepareParams params;
+ params.buffers.bayer = RPi::MaskBayerData | bayerId;
+ params.buffers.stats = RPi::MaskStats | statsId;
+ params.buffers.embedded = 0;
+ params.ipaContext = requestQueue_.front()->sequence();
+ params.delayContext = job.delayContext;
+ params.sensorControls = std::move(job.sensorControls);
+ params.requestControls = request->controls();
+
+ if (sensorMetadata_) {
+ unsigned int embeddedId =
+ cfe_[Cfe::Embedded].getBufferId(job.buffers[&cfe_[Cfe::Embedded]]);
+
+ ASSERT(embeddedId);
+ params.buffers.embedded = RPi::MaskEmbeddedData | embeddedId;
+ ss << " Embedded buffer id: " << embeddedId;
+ }
+
+ LOG(RPI, Debug) << ss.str();
+
+ cfeJobQueue_.pop();
+ ipa_->prepareIsp(params);
+}
+
+REGISTER_PIPELINE_HANDLER(PipelineHandlerPiSP, "rpi/pisp")
+
+} /* namespace libcamera */
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index 8ac24e6e..fd0ccdca 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -181,6 +181,56 @@ LOG_DEFINE_CATEGORY(SimplePipeline)
class SimplePipelineHandler;
+struct SimpleFrameInfo {
+ SimpleFrameInfo(uint32_t f, Request *r, bool m)
+ : frame(f), request(r), metadataRequired(m), metadataProcessed(false)
+ {
+ }
+
+ uint32_t frame;
+ Request *request;
+ bool metadataRequired;
+ bool metadataProcessed;
+};
+
+class SimpleFrames
+{
+public:
+ void create(Request *request, bool metadataRequested);
+ void destroy(uint32_t frame);
+ void clear();
+
+ SimpleFrameInfo *find(uint32_t frame);
+
+private:
+ std::map<uint32_t, SimpleFrameInfo> frameInfo_;
+};
+
+void SimpleFrames::create(Request *request, bool metadataRequired)
+{
+ const uint32_t frame = request->sequence();
+ auto [it, inserted] = frameInfo_.try_emplace(frame, frame, request, metadataRequired);
+ ASSERT(inserted);
+}
+
+void SimpleFrames::destroy(uint32_t frame)
+{
+ frameInfo_.erase(frame);
+}
+
+void SimpleFrames::clear()
+{
+ frameInfo_.clear();
+}
+
+SimpleFrameInfo *SimpleFrames::find(uint32_t frame)
+{
+ auto info = frameInfo_.find(frame);
+ if (info == frameInfo_.end())
+ return nullptr;
+ return &info->second;
+}
+
struct SimplePipelineInfo {
const char *driver;
/*
@@ -293,15 +343,18 @@ public:
std::unique_ptr<Converter> converter_;
std::unique_ptr<SoftwareIsp> swIsp_;
+ SimpleFrames frameInfo_;
private:
void tryPipeline(unsigned int code, const Size &size);
static std::vector<const MediaPad *> routedSourcePads(MediaPad *sink);
+ void tryCompleteRequest(Request *request);
void conversionInputDone(FrameBuffer *buffer);
void conversionOutputDone(FrameBuffer *buffer);
void ispStatsReady(uint32_t frame, uint32_t bufferId);
+ void metadataReady(uint32_t frame, const ControlList &metadata);
void setSensorControls(const ControlList &sensorControls);
};
@@ -537,23 +590,10 @@ int SimpleCameraData::init()
<< "Failed to create software ISP, disabling software debayering";
swIsp_.reset();
} else {
- /*
- * The inputBufferReady signal is emitted from the soft ISP thread,
- * and needs to be handled in the pipeline handler thread. Signals
- * implement queued delivery, but this works transparently only if
- * the receiver is bound to the target thread. As the
- * SimpleCameraData class doesn't inherit from the Object class, it
- * is not bound to any thread, and the signal would be delivered
- * synchronously. Instead, connect the signal to a lambda function
- * bound explicitly to the pipe, which is bound to the pipeline
- * handler thread. The function then simply forwards the call to
- * conversionInputDone().
- */
- swIsp_->inputBufferReady.connect(pipe, [this](FrameBuffer *buffer) {
- this->conversionInputDone(buffer);
- });
+ swIsp_->inputBufferReady.connect(this, &SimpleCameraData::conversionInputDone);
swIsp_->outputBufferReady.connect(this, &SimpleCameraData::conversionOutputDone);
swIsp_->ispStatsReady.connect(this, &SimpleCameraData::ispStatsReady);
+ swIsp_->metadataReady.connect(this, &SimpleCameraData::metadataReady);
swIsp_->setSensorControls.connect(this, &SimpleCameraData::setSensorControls);
}
}
@@ -799,7 +839,7 @@ void SimpleCameraData::imageBufferReady(FrameBuffer *buffer)
/* No conversion, just complete the request. */
Request *request = buffer->request();
pipe->completeBuffer(request, buffer);
- pipe->completeRequest(request);
+ tryCompleteRequest(request);
return;
}
@@ -817,7 +857,10 @@ void SimpleCameraData::imageBufferReady(FrameBuffer *buffer)
const RequestOutputs &outputs = conversionQueue_.front();
for (auto &[stream, buf] : outputs.outputs)
pipe->completeBuffer(outputs.request, buf);
- pipe->completeRequest(outputs.request);
+ SimpleFrameInfo *info = frameInfo_.find(outputs.request->sequence());
+ if (info)
+ info->metadataRequired = false;
+ tryCompleteRequest(outputs.request);
conversionQueue_.pop();
return;
@@ -875,7 +918,7 @@ void SimpleCameraData::imageBufferReady(FrameBuffer *buffer)
/* Otherwise simply complete the request. */
pipe->completeBuffer(request, buffer);
- pipe->completeRequest(request);
+ tryCompleteRequest(request);
}
void SimpleCameraData::clearIncompleteRequests()
@@ -886,6 +929,24 @@ void SimpleCameraData::clearIncompleteRequests()
}
}
+void SimpleCameraData::tryCompleteRequest(Request *request)
+{
+ if (request->hasPendingBuffers())
+ return;
+
+ SimpleFrameInfo *info = frameInfo_.find(request->sequence());
+ if (!info) {
+ /* Something is really wrong, let's return. */
+ return;
+ }
+
+ if (info->metadataRequired && !info->metadataProcessed)
+ return;
+
+ frameInfo_.destroy(info->frame);
+ pipe()->completeRequest(request);
+}
+
void SimpleCameraData::conversionInputDone(FrameBuffer *buffer)
{
/* Queue the input buffer back for capture. */
@@ -899,7 +960,7 @@ void SimpleCameraData::conversionOutputDone(FrameBuffer *buffer)
/* Complete the buffer and the request. */
Request *request = buffer->request();
if (pipe->completeBuffer(request, buffer))
- pipe->completeRequest(request);
+ tryCompleteRequest(request);
}
void SimpleCameraData::ispStatsReady(uint32_t frame, uint32_t bufferId)
@@ -908,6 +969,17 @@ void SimpleCameraData::ispStatsReady(uint32_t frame, uint32_t bufferId)
delayedCtrls_->get(frame));
}
+void SimpleCameraData::metadataReady(uint32_t frame, const ControlList &metadata)
+{
+ SimpleFrameInfo *info = frameInfo_.find(frame);
+ if (!info)
+ return;
+
+ info->request->metadata().merge(metadata);
+ info->metadataProcessed = true;
+ tryCompleteRequest(info->request);
+}
+
void SimpleCameraData::setSensorControls(const ControlList &sensorControls)
{
delayedCtrls_->push(sensorControls);
@@ -1412,6 +1484,7 @@ void SimplePipelineHandler::stopDevice(Camera *camera)
video->bufferReady.disconnect(data, &SimpleCameraData::imageBufferReady);
+ data->frameInfo_.clear();
data->clearIncompleteRequests();
data->conversionBuffers_.clear();
@@ -1440,6 +1513,7 @@ int SimplePipelineHandler::queueRequestDevice(Camera *camera, Request *request)
}
}
+ data->frameInfo_.create(request, !!data->swIsp_);
if (data->useConversion_) {
data->conversionQueue_.push({ request, std::move(buffers) });
if (data->swIsp_)
diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
index 8c2c6baf..7470b562 100644
--- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
+++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
@@ -298,7 +298,7 @@ int PipelineHandlerUVC::processControl(ControlList *controls, unsigned int id,
cid = V4L2_CID_CONTRAST;
else if (id == controls::Saturation)
cid = V4L2_CID_SATURATION;
- else if (id == controls::AeEnable)
+ else if (id == controls::ExposureTimeMode)
cid = V4L2_CID_EXPOSURE_AUTO;
else if (id == controls::ExposureTime)
cid = V4L2_CID_EXPOSURE_ABSOLUTE;
@@ -647,7 +647,7 @@ void UVCCameraData::addControl(uint32_t cid, const ControlInfo &v4l2Info,
id = &controls::Saturation;
break;
case V4L2_CID_EXPOSURE_AUTO:
- id = &controls::AeEnable;
+ id = &controls::ExposureTimeMode;
break;
case V4L2_CID_EXPOSURE_ABSOLUTE:
id = &controls::ExposureTime;
@@ -660,6 +660,7 @@ void UVCCameraData::addControl(uint32_t cid, const ControlInfo &v4l2Info,
}
/* Map the control info. */
+ const std::vector<ControlValue> &v4l2Values = v4l2Info.values();
int32_t min = v4l2Info.min().get<int32_t>();
int32_t max = v4l2Info.max().get<int32_t>();
int32_t def = v4l2Info.def().get<int32_t>();
@@ -697,10 +698,52 @@ void UVCCameraData::addControl(uint32_t cid, const ControlInfo &v4l2Info,
};
break;
- case V4L2_CID_EXPOSURE_AUTO:
- info = ControlInfo{ false, true, true };
+ case V4L2_CID_EXPOSURE_AUTO: {
+ /*
+ * From the V4L2_CID_EXPOSURE_AUTO documentation:
+ *
+ * ------------------------------------------------------------
+ * V4L2_EXPOSURE_AUTO:
+ * Automatic exposure time, automatic iris aperture.
+ *
+ * V4L2_EXPOSURE_MANUAL:
+ * Manual exposure time, manual iris.
+ *
+ * V4L2_EXPOSURE_SHUTTER_PRIORITY:
+ * Manual exposure time, auto iris.
+ *
+ * V4L2_EXPOSURE_APERTURE_PRIORITY:
+ * Auto exposure time, manual iris.
+ *-------------------------------------------------------------
+ *
+ * ExposureTimeModeAuto = { V4L2_EXPOSURE_AUTO,
+ * V4L2_EXPOSURE_APERTURE_PRIORITY }
+ *
+ *
+ * ExposureTimeModeManual = { V4L2_EXPOSURE_MANUAL,
+ * V4L2_EXPOSURE_SHUTTER_PRIORITY }
+ */
+ std::array<int32_t, 2> values{};
+
+ auto it = std::find_if(v4l2Values.begin(), v4l2Values.end(),
+ [&](const ControlValue &val) {
+ return (val.get<int32_t>() == V4L2_EXPOSURE_APERTURE_PRIORITY ||
+ val.get<int32_t>() == V4L2_EXPOSURE_AUTO) ? true : false;
+ });
+ if (it != v4l2Values.end())
+ values.back() = static_cast<int32_t>(controls::ExposureTimeModeAuto);
+
+ it = std::find_if(v4l2Values.begin(), v4l2Values.end(),
+ [&](const ControlValue &val) {
+ return (val.get<int32_t>() == V4L2_EXPOSURE_SHUTTER_PRIORITY ||
+ val.get<int32_t>() == V4L2_EXPOSURE_MANUAL) ? true : false;
+ });
+ if (it != v4l2Values.end())
+ values.back() = static_cast<int32_t>(controls::ExposureTimeModeManual);
+
+ info = ControlInfo{Span<int32_t>{values}, values[0]};
break;
-
+ }
case V4L2_CID_EXPOSURE_ABSOLUTE:
/*
* ExposureTime is in units of 1 µs, and UVC expects
diff --git a/src/libcamera/pipeline/virtual/config_parser.cpp b/src/libcamera/pipeline/virtual/config_parser.cpp
index 0cbfe39b..1e009946 100644
--- a/src/libcamera/pipeline/virtual/config_parser.cpp
+++ b/src/libcamera/pipeline/virtual/config_parser.cpp
@@ -54,7 +54,7 @@ ConfigParser::parseConfigFile(File &file, PipelineHandler *pipe)
data->config_.id = cameraId;
ControlInfoMap::Map controls;
- /* todo: Check which resolution's frame rate to be reported */
+ /* \todo Check which resolution's frame rate to be reported */
controls[&controls::FrameDurationLimits] =
ControlInfo(1000000 / data->config_.resolutions[0].frameRates[1],
1000000 / data->config_.resolutions[0].frameRates[0]);
diff --git a/src/libcamera/pipeline/virtual/data/meson.build b/src/libcamera/pipeline/virtual/data/meson.build
new file mode 100644
index 00000000..ce63f9a2
--- /dev/null
+++ b/src/libcamera/pipeline/virtual/data/meson.build
@@ -0,0 +1,4 @@
+install_data('virtual.yaml',
+ install_dir : pipeline_data_dir / 'virtual',
+ install_tag : 'runtime',
+ rename: 'virtual.yaml.example')
diff --git a/src/libcamera/pipeline/virtual/meson.build b/src/libcamera/pipeline/virtual/meson.build
index 4786fe2e..c8434593 100644
--- a/src/libcamera/pipeline/virtual/meson.build
+++ b/src/libcamera/pipeline/virtual/meson.build
@@ -11,3 +11,5 @@ libjpeg = dependency('libjpeg', required : true)
libcamera_deps += [libyuv_dep]
libcamera_deps += [libjpeg]
+
+subdir('data')
diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp
index e692a543..049ebcba 100644
--- a/src/libcamera/pipeline/virtual/virtual.cpp
+++ b/src/libcamera/pipeline/virtual/virtual.cpp
@@ -232,8 +232,7 @@ PipelineHandlerVirtual::generateConfiguration(Camera *camera,
default:
LOG(Virtual, Error)
<< "Requested stream role not supported: " << role;
- config.reset();
- return config;
+ return {};
}
std::map<PixelFormat, std::vector<SizeRange>> streamFormats;
@@ -287,6 +286,11 @@ int PipelineHandlerVirtual::exportFrameBuffers([[maybe_unused]] Camera *camera,
int PipelineHandlerVirtual::start([[maybe_unused]] Camera *camera,
[[maybe_unused]] const ControlList *controls)
{
+ VirtualCameraData *data = cameraData(camera);
+
+ for (auto &s : data->streamConfigs_)
+ s.seq = 0;
+
return 0;
}
@@ -298,16 +302,27 @@ int PipelineHandlerVirtual::queueRequestDevice([[maybe_unused]] Camera *camera,
Request *request)
{
VirtualCameraData *data = cameraData(camera);
+ const auto timestamp = currentTimestamp();
for (auto const &[stream, buffer] : request->buffers()) {
bool found = false;
/* map buffer and fill test patterns */
for (auto &streamConfig : data->streamConfigs_) {
if (stream == &streamConfig.stream) {
+ FrameMetadata &fmd = buffer->_d()->metadata();
+
+ fmd.status = FrameMetadata::Status::FrameSuccess;
+ fmd.sequence = streamConfig.seq++;
+ fmd.timestamp = timestamp;
+
+ for (const auto [i, p] : utils::enumerate(buffer->planes()))
+ fmd.planes()[i].bytesused = p.length;
+
found = true;
+
if (streamConfig.frameGenerator->generateFrame(
stream->configuration().size, buffer))
- buffer->_d()->cancel();
+ fmd.status = FrameMetadata::Status::FrameError;
completeBuffer(request, buffer);
break;
@@ -316,7 +331,7 @@ int PipelineHandlerVirtual::queueRequestDevice([[maybe_unused]] Camera *camera,
ASSERT(found);
}
- request->metadata().set(controls::SensorTimestamp, currentTimestamp());
+ request->metadata().set(controls::SensorTimestamp, timestamp);
completeRequest(request);
return 0;
@@ -329,10 +344,17 @@ bool PipelineHandlerVirtual::match([[maybe_unused]] DeviceEnumerator *enumerator
created_ = true;
- File file(configurationFile("virtual", "virtual.yaml"));
- bool isOpen = file.open(File::OpenModeFlag::ReadOnly);
- if (!isOpen) {
- LOG(Virtual, Error) << "Failed to open config file: " << file.fileName();
+ std::string configFile = configurationFile("virtual", "virtual.yaml", true);
+ if (configFile.empty()) {
+ LOG(Virtual, Debug)
+ << "Configuration file not found, skipping virtual cameras";
+ return false;
+ }
+
+ File file(configFile);
+ if (!file.open(File::OpenModeFlag::ReadOnly)) {
+ LOG(Virtual, Error)
+ << "Failed to open config file `" << file.fileName() << "`";
return false;
}
diff --git a/src/libcamera/pipeline/virtual/virtual.h b/src/libcamera/pipeline/virtual/virtual.h
index 92ad7d4a..683cb82b 100644
--- a/src/libcamera/pipeline/virtual/virtual.h
+++ b/src/libcamera/pipeline/virtual/virtual.h
@@ -37,6 +37,7 @@ public:
struct StreamConfig {
Stream stream;
std::unique_ptr<FrameGenerator> frameGenerator;
+ unsigned int seq = 0;
};
/* The config file is parsed to the Configuration struct */
struct Configuration {
diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
index caa5c20e..d84dff3c 100644
--- a/src/libcamera/pipeline_handler.cpp
+++ b/src/libcamera/pipeline_handler.cpp
@@ -581,6 +581,7 @@ void PipelineHandler::cancelRequest(Request *request)
* \brief Retrieve the absolute path to a platform configuration file
* \param[in] subdir The pipeline handler specific subdirectory name
* \param[in] name The configuration file name
+ * \param[in] silent Disable error messages
*
* This function locates a named platform configuration file and returns
* its absolute path to the pipeline handler. It searches the following
@@ -596,7 +597,8 @@ void PipelineHandler::cancelRequest(Request *request)
* string if no configuration file can be found
*/
std::string PipelineHandler::configurationFile(const std::string &subdir,
- const std::string &name) const
+ const std::string &name,
+ bool silent) const
{
std::string confPath;
struct stat statbuf;
@@ -626,9 +628,11 @@ std::string PipelineHandler::configurationFile(const std::string &subdir,
if (ret == 0 && (statbuf.st_mode & S_IFMT) == S_IFREG)
return confPath;
- LOG(Pipeline, Error)
- << "Configuration file '" << confPath
- << "' not found for pipeline handler '" << PipelineHandler::name() << "'";
+ if (!silent)
+ LOG(Pipeline, Error)
+ << "Configuration file '" << confPath
+ << "' not found for pipeline handler '"
+ << PipelineHandler::name() << "'";
return std::string();
}
diff --git a/src/libcamera/process.cpp b/src/libcamera/process.cpp
index bc9833f4..68fad327 100644
--- a/src/libcamera/process.cpp
+++ b/src/libcamera/process.cpp
@@ -75,7 +75,7 @@ void ProcessManager::sighandler()
return;
}
- for (auto it = processes_.begin(); it != processes_.end(); ) {
+ for (auto it = processes_.begin(); it != processes_.end();) {
Process *process = *it;
int wstatus;
diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
index 8c56ed30..b206ac13 100644
--- a/src/libcamera/request.cpp
+++ b/src/libcamera/request.cpp
@@ -475,6 +475,15 @@ int Request::addBuffer(const Stream *stream, FrameBuffer *buffer,
return -EINVAL;
}
+ /*
+ * Make sure the fence has been extracted from the buffer
+ * to avoid waiting on a stale fence.
+ */
+ if (buffer->_d()->fence()) {
+ LOG(Request, Error) << "Can't add buffer that still references a fence";
+ return -EEXIST;
+ }
+
auto it = bufferMap_.find(stream);
if (it != bufferMap_.end()) {
LOG(Request, Error) << "FrameBuffer already set for stream";
@@ -485,15 +494,6 @@ int Request::addBuffer(const Stream *stream, FrameBuffer *buffer,
_d()->pending_.insert(buffer);
bufferMap_[stream] = buffer;
- /*
- * Make sure the fence has been extracted from the buffer
- * to avoid waiting on a stale fence.
- */
- if (buffer->_d()->fence()) {
- LOG(Request, Error) << "Can't add buffer that still references a fence";
- return -EEXIST;
- }
-
if (fence && fence->isValid())
buffer->_d()->setFence(std::move(fence));
diff --git a/src/libcamera/software_isp/debayer.cpp b/src/libcamera/software_isp/debayer.cpp
index f0b83261..e9e18c48 100644
--- a/src/libcamera/software_isp/debayer.cpp
+++ b/src/libcamera/software_isp/debayer.cpp
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2023, Linaro Ltd
- * Copyright (C) 2023, 2024 Red Hat Inc.
+ * Copyright (C) 2023-2025 Red Hat Inc.
*
* Authors:
* Hans de Goede <hdegoede@redhat.com>
@@ -24,8 +24,39 @@ namespace libcamera {
*/
/**
- * \typedef DebayerParams::ColorLookupTable
- * \brief Type of the lookup tables for red, green, blue values
+ * \struct DebayerParams::CcmColumn
+ * \brief Type of a single column of a color correction matrix (CCM)
+ *
+ * When multiplying an input pixel, columns in the CCM correspond to the red,
+ * green or blue component of input pixel values, while rows correspond to the
+ * red, green or blue components of the output pixel values. The members of the
+ * CcmColumn structure are named after the colour components of the output pixel
+ * values they correspond to.
+ */
+
+/**
+ * \var DebayerParams::CcmColumn::r
+ * \brief Red (first) component of a CCM column
+ */
+
+/**
+ * \var DebayerParams::CcmColumn::g
+ * \brief Green (second) component of a CCM column
+ */
+
+/**
+ * \var DebayerParams::CcmColumn::b
+ * \brief Blue (third) component of a CCM column
+ */
+
+/**
+ * \typedef DebayerParams::LookupTable
+ * \brief Type of the lookup tables for single lookup values
+ */
+
+/**
+ * \typedef DebayerParams::CcmLookupTable
+ * \brief Type of the CCM lookup tables for red, green, blue values
*/
/**
@@ -44,6 +75,26 @@ namespace libcamera {
*/
/**
+ * \var DebayerParams::redCcm
+ * \brief Lookup table for the CCM red column, mapping input values to output values
+ */
+
+/**
+ * \var DebayerParams::greenCcm
+ * \brief Lookup table for the CCM green column, mapping input values to output values
+ */
+
+/**
+ * \var DebayerParams::blueCcm
+ * \brief Lookup table for the CCM blue column, mapping input values to output values
+ */
+
+/**
+ * \var DebayerParams::gammaLut
+ * \brief Gamma lookup table used with color correction matrix
+ */
+
+/**
* \class Debayer
* \brief Base debayering class
*
@@ -57,10 +108,11 @@ Debayer::~Debayer()
}
/**
- * \fn int Debayer::configure(const StreamConfiguration &inputCfg, const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs)
+ * \fn int Debayer::configure()
* \brief Configure the debayer object according to the passed in parameters
* \param[in] inputCfg The input configuration
* \param[in] outputCfgs The output configurations
+ * \param[in] ccmEnabled Whether a color correction matrix is applied
*
* \return 0 on success, a negative errno on failure
*/
diff --git a/src/libcamera/software_isp/debayer.h b/src/libcamera/software_isp/debayer.h
index d7ca060d..ba033d44 100644
--- a/src/libcamera/software_isp/debayer.h
+++ b/src/libcamera/software_isp/debayer.h
@@ -33,7 +33,8 @@ public:
virtual ~Debayer() = 0;
virtual int configure(const StreamConfiguration &inputCfg,
- const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs) = 0;
+ const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,
+ bool ccmEnabled) = 0;
virtual std::vector<PixelFormat> formats(PixelFormat inputFormat) = 0;
diff --git a/src/libcamera/software_isp/debayer_cpu.cpp b/src/libcamera/software_isp/debayer_cpu.cpp
index 31ab96ab..66f6038c 100644
--- a/src/libcamera/software_isp/debayer_cpu.cpp
+++ b/src/libcamera/software_isp/debayer_cpu.cpp
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2023, Linaro Ltd
- * Copyright (C) 2023, Red Hat Inc.
+ * Copyright (C) 2023-2025 Red Hat Inc.
*
* Authors:
* Hans de Goede <hdegoede@redhat.com>
@@ -11,9 +11,11 @@
#include "debayer_cpu.h"
+#include <algorithm>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <time.h>
+#include <utility>
#include <linux/dma-buf.h>
@@ -51,8 +53,12 @@ DebayerCpu::DebayerCpu(std::unique_ptr<SwStatsCpu> stats)
enableInputMemcpy_ = true;
/* Initialize color lookup tables */
- for (unsigned int i = 0; i < DebayerParams::kRGBLookupSize; i++)
+ for (unsigned int i = 0; i < DebayerParams::kRGBLookupSize; i++) {
red_[i] = green_[i] = blue_[i] = i;
+ redCcm_[i] = { static_cast<int16_t>(i), 0, 0 };
+ greenCcm_[i] = { 0, static_cast<int16_t>(i), 0 };
+ blueCcm_[i] = { 0, 0, static_cast<int16_t>(i) };
+ }
}
DebayerCpu::~DebayerCpu() = default;
@@ -62,59 +68,71 @@ DebayerCpu::~DebayerCpu() = default;
const pixel_t *curr = (const pixel_t *)src[1] + xShift_; \
const pixel_t *next = (const pixel_t *)src[2] + xShift_;
+#define GAMMA(value) \
+ *dst++ = gammaLut_[std::clamp(value, 0, static_cast<int>(gammaLut_.size()) - 1)]
+
+#define STORE_PIXEL(b_, g_, r_) \
+ if constexpr (ccmEnabled) { \
+ const DebayerParams::CcmColumn &blue = blueCcm_[b_]; \
+ const DebayerParams::CcmColumn &green = greenCcm_[g_]; \
+ const DebayerParams::CcmColumn &red = redCcm_[r_]; \
+ GAMMA(blue.b + green.b + red.b); \
+ GAMMA(blue.g + green.g + red.g); \
+ GAMMA(blue.r + green.r + red.r); \
+ } else { \
+ *dst++ = blue_[b_]; \
+ *dst++ = green_[g_]; \
+ *dst++ = red_[r_]; \
+ } \
+ if constexpr (addAlphaByte) \
+ *dst++ = 255; \
+ x++;
+
/*
* RGR
* GBG
* RGR
*/
-#define BGGR_BGR888(p, n, div) \
- *dst++ = blue_[curr[x] / (div)]; \
- *dst++ = green_[(prev[x] + curr[x - p] + curr[x + n] + next[x]) / (4 * (div))]; \
- *dst++ = red_[(prev[x - p] + prev[x + n] + next[x - p] + next[x + n]) / (4 * (div))]; \
- if constexpr (addAlphaByte) \
- *dst++ = 255; \
- x++;
+#define BGGR_BGR888(p, n, div) \
+ STORE_PIXEL( \
+ curr[x] / (div), \
+ (prev[x] + curr[x - p] + curr[x + n] + next[x]) / (4 * (div)), \
+ (prev[x - p] + prev[x + n] + next[x - p] + next[x + n]) / (4 * (div)))
/*
* GBG
* RGR
* GBG
*/
-#define GRBG_BGR888(p, n, div) \
- *dst++ = blue_[(prev[x] + next[x]) / (2 * (div))]; \
- *dst++ = green_[curr[x] / (div)]; \
- *dst++ = red_[(curr[x - p] + curr[x + n]) / (2 * (div))]; \
- if constexpr (addAlphaByte) \
- *dst++ = 255; \
- x++;
+#define GRBG_BGR888(p, n, div) \
+ STORE_PIXEL( \
+ (prev[x] + next[x]) / (2 * (div)), \
+ curr[x] / (div), \
+ (curr[x - p] + curr[x + n]) / (2 * (div)))
/*
* GRG
* BGB
* GRG
*/
-#define GBRG_BGR888(p, n, div) \
- *dst++ = blue_[(curr[x - p] + curr[x + n]) / (2 * (div))]; \
- *dst++ = green_[curr[x] / (div)]; \
- *dst++ = red_[(prev[x] + next[x]) / (2 * (div))]; \
- if constexpr (addAlphaByte) \
- *dst++ = 255; \
- x++;
+#define GBRG_BGR888(p, n, div) \
+ STORE_PIXEL( \
+ (curr[x - p] + curr[x + n]) / (2 * (div)), \
+ curr[x] / (div), \
+ (prev[x] + next[x]) / (2 * (div)))
/*
* BGB
* GRG
* BGB
*/
-#define RGGB_BGR888(p, n, div) \
- *dst++ = blue_[(prev[x - p] + prev[x + n] + next[x - p] + next[x + n]) / (4 * (div))]; \
- *dst++ = green_[(prev[x] + curr[x - p] + curr[x + n] + next[x]) / (4 * (div))]; \
- *dst++ = red_[curr[x] / (div)]; \
- if constexpr (addAlphaByte) \
- *dst++ = 255; \
- x++;
+#define RGGB_BGR888(p, n, div) \
+ STORE_PIXEL( \
+ (prev[x - p] + prev[x + n] + next[x - p] + next[x + n]) / (4 * (div)), \
+ (prev[x] + curr[x - p] + curr[x + n] + next[x]) / (4 * (div)), \
+ curr[x] / (div))
-template<bool addAlphaByte>
+template<bool addAlphaByte, bool ccmEnabled>
void DebayerCpu::debayer8_BGBG_BGR888(uint8_t *dst, const uint8_t *src[])
{
DECLARE_SRC_POINTERS(uint8_t)
@@ -125,7 +143,7 @@ void DebayerCpu::debayer8_BGBG_BGR888(uint8_t *dst, const uint8_t *src[])
}
}
-template<bool addAlphaByte>
+template<bool addAlphaByte, bool ccmEnabled>
void DebayerCpu::debayer8_GRGR_BGR888(uint8_t *dst, const uint8_t *src[])
{
DECLARE_SRC_POINTERS(uint8_t)
@@ -136,7 +154,7 @@ void DebayerCpu::debayer8_GRGR_BGR888(uint8_t *dst, const uint8_t *src[])
}
}
-template<bool addAlphaByte>
+template<bool addAlphaByte, bool ccmEnabled>
void DebayerCpu::debayer10_BGBG_BGR888(uint8_t *dst, const uint8_t *src[])
{
DECLARE_SRC_POINTERS(uint16_t)
@@ -148,7 +166,7 @@ void DebayerCpu::debayer10_BGBG_BGR888(uint8_t *dst, const uint8_t *src[])
}
}
-template<bool addAlphaByte>
+template<bool addAlphaByte, bool ccmEnabled>
void DebayerCpu::debayer10_GRGR_BGR888(uint8_t *dst, const uint8_t *src[])
{
DECLARE_SRC_POINTERS(uint16_t)
@@ -160,7 +178,7 @@ void DebayerCpu::debayer10_GRGR_BGR888(uint8_t *dst, const uint8_t *src[])
}
}
-template<bool addAlphaByte>
+template<bool addAlphaByte, bool ccmEnabled>
void DebayerCpu::debayer12_BGBG_BGR888(uint8_t *dst, const uint8_t *src[])
{
DECLARE_SRC_POINTERS(uint16_t)
@@ -172,7 +190,7 @@ void DebayerCpu::debayer12_BGBG_BGR888(uint8_t *dst, const uint8_t *src[])
}
}
-template<bool addAlphaByte>
+template<bool addAlphaByte, bool ccmEnabled>
void DebayerCpu::debayer12_GRGR_BGR888(uint8_t *dst, const uint8_t *src[])
{
DECLARE_SRC_POINTERS(uint16_t)
@@ -184,7 +202,7 @@ void DebayerCpu::debayer12_GRGR_BGR888(uint8_t *dst, const uint8_t *src[])
}
}
-template<bool addAlphaByte>
+template<bool addAlphaByte, bool ccmEnabled>
void DebayerCpu::debayer10P_BGBG_BGR888(uint8_t *dst, const uint8_t *src[])
{
const int widthInBytes = window_.width * 5 / 4;
@@ -210,7 +228,7 @@ void DebayerCpu::debayer10P_BGBG_BGR888(uint8_t *dst, const uint8_t *src[])
}
}
-template<bool addAlphaByte>
+template<bool addAlphaByte, bool ccmEnabled>
void DebayerCpu::debayer10P_GRGR_BGR888(uint8_t *dst, const uint8_t *src[])
{
const int widthInBytes = window_.width * 5 / 4;
@@ -231,7 +249,7 @@ void DebayerCpu::debayer10P_GRGR_BGR888(uint8_t *dst, const uint8_t *src[])
}
}
-template<bool addAlphaByte>
+template<bool addAlphaByte, bool ccmEnabled>
void DebayerCpu::debayer10P_GBGB_BGR888(uint8_t *dst, const uint8_t *src[])
{
const int widthInBytes = window_.width * 5 / 4;
@@ -252,7 +270,7 @@ void DebayerCpu::debayer10P_GBGB_BGR888(uint8_t *dst, const uint8_t *src[])
}
}
-template<bool addAlphaByte>
+template<bool addAlphaByte, bool ccmEnabled>
void DebayerCpu::debayer10P_RGRG_BGR888(uint8_t *dst, const uint8_t *src[])
{
const int widthInBytes = window_.width * 5 / 4;
@@ -368,7 +386,17 @@ int DebayerCpu::setupStandardBayerOrder(BayerFormat::Order order)
return 0;
}
-int DebayerCpu::setDebayerFunctions(PixelFormat inputFormat, PixelFormat outputFormat)
+#define SET_DEBAYER_METHODS(method0, method1) \
+ debayer0_ = addAlphaByte \
+ ? (ccmEnabled ? &DebayerCpu::method0<true, true> : &DebayerCpu::method0<true, false>) \
+ : (ccmEnabled ? &DebayerCpu::method0<false, true> : &DebayerCpu::method0<false, false>); \
+ debayer1_ = addAlphaByte \
+ ? (ccmEnabled ? &DebayerCpu::method1<true, true> : &DebayerCpu::method1<true, false>) \
+ : (ccmEnabled ? &DebayerCpu::method1<false, true> : &DebayerCpu::method1<false, false>);
+
+int DebayerCpu::setDebayerFunctions(PixelFormat inputFormat,
+ PixelFormat outputFormat,
+ bool ccmEnabled)
{
BayerFormat bayerFormat =
BayerFormat::fromPixelFormat(inputFormat);
@@ -423,16 +451,13 @@ int DebayerCpu::setDebayerFunctions(PixelFormat inputFormat, PixelFormat outputF
isStandardBayerOrder(bayerFormat.order)) {
switch (bayerFormat.bitDepth) {
case 8:
- debayer0_ = addAlphaByte ? &DebayerCpu::debayer8_BGBG_BGR888<true> : &DebayerCpu::debayer8_BGBG_BGR888<false>;
- debayer1_ = addAlphaByte ? &DebayerCpu::debayer8_GRGR_BGR888<true> : &DebayerCpu::debayer8_GRGR_BGR888<false>;
+ SET_DEBAYER_METHODS(debayer8_BGBG_BGR888, debayer8_GRGR_BGR888)
break;
case 10:
- debayer0_ = addAlphaByte ? &DebayerCpu::debayer10_BGBG_BGR888<true> : &DebayerCpu::debayer10_BGBG_BGR888<false>;
- debayer1_ = addAlphaByte ? &DebayerCpu::debayer10_GRGR_BGR888<true> : &DebayerCpu::debayer10_GRGR_BGR888<false>;
+ SET_DEBAYER_METHODS(debayer10_BGBG_BGR888, debayer10_GRGR_BGR888)
break;
case 12:
- debayer0_ = addAlphaByte ? &DebayerCpu::debayer12_BGBG_BGR888<true> : &DebayerCpu::debayer12_BGBG_BGR888<false>;
- debayer1_ = addAlphaByte ? &DebayerCpu::debayer12_GRGR_BGR888<true> : &DebayerCpu::debayer12_GRGR_BGR888<false>;
+ SET_DEBAYER_METHODS(debayer12_BGBG_BGR888, debayer12_GRGR_BGR888)
break;
}
setupStandardBayerOrder(bayerFormat.order);
@@ -443,20 +468,16 @@ int DebayerCpu::setDebayerFunctions(PixelFormat inputFormat, PixelFormat outputF
bayerFormat.packing == BayerFormat::Packing::CSI2) {
switch (bayerFormat.order) {
case BayerFormat::BGGR:
- debayer0_ = addAlphaByte ? &DebayerCpu::debayer10P_BGBG_BGR888<true> : &DebayerCpu::debayer10P_BGBG_BGR888<false>;
- debayer1_ = addAlphaByte ? &DebayerCpu::debayer10P_GRGR_BGR888<true> : &DebayerCpu::debayer10P_GRGR_BGR888<false>;
+ SET_DEBAYER_METHODS(debayer10P_BGBG_BGR888, debayer10P_GRGR_BGR888)
return 0;
case BayerFormat::GBRG:
- debayer0_ = addAlphaByte ? &DebayerCpu::debayer10P_GBGB_BGR888<true> : &DebayerCpu::debayer10P_GBGB_BGR888<false>;
- debayer1_ = addAlphaByte ? &DebayerCpu::debayer10P_RGRG_BGR888<true> : &DebayerCpu::debayer10P_RGRG_BGR888<false>;
+ SET_DEBAYER_METHODS(debayer10P_GBGB_BGR888, debayer10P_RGRG_BGR888)
return 0;
case BayerFormat::GRBG:
- debayer0_ = addAlphaByte ? &DebayerCpu::debayer10P_GRGR_BGR888<true> : &DebayerCpu::debayer10P_GRGR_BGR888<false>;
- debayer1_ = addAlphaByte ? &DebayerCpu::debayer10P_BGBG_BGR888<true> : &DebayerCpu::debayer10P_BGBG_BGR888<false>;
+ SET_DEBAYER_METHODS(debayer10P_GRGR_BGR888, debayer10P_BGBG_BGR888)
return 0;
case BayerFormat::RGGB:
- debayer0_ = addAlphaByte ? &DebayerCpu::debayer10P_RGRG_BGR888<true> : &DebayerCpu::debayer10P_RGRG_BGR888<false>;
- debayer1_ = addAlphaByte ? &DebayerCpu::debayer10P_GBGB_BGR888<true> : &DebayerCpu::debayer10P_GBGB_BGR888<false>;
+ SET_DEBAYER_METHODS(debayer10P_RGRG_BGR888, debayer10P_GBGB_BGR888)
return 0;
default:
break;
@@ -467,7 +488,8 @@ int DebayerCpu::setDebayerFunctions(PixelFormat inputFormat, PixelFormat outputF
}
int DebayerCpu::configure(const StreamConfiguration &inputCfg,
- const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs)
+ const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,
+ bool ccmEnabled)
{
if (getInputConfig(inputCfg.pixelFormat, inputConfig_) != 0)
return -EINVAL;
@@ -506,7 +528,10 @@ int DebayerCpu::configure(const StreamConfiguration &inputCfg,
return -EINVAL;
}
- if (setDebayerFunctions(inputCfg.pixelFormat, outputCfg.pixelFormat) != 0)
+ int ret = setDebayerFunctions(inputCfg.pixelFormat,
+ outputCfg.pixelFormat,
+ ccmEnabled);
+ if (ret != 0)
return -EINVAL;
window_.x = ((inputCfg.size.width - outputCfg.size.width) / 2) &
@@ -748,8 +773,23 @@ void DebayerCpu::process(uint32_t frame, FrameBuffer *input, FrameBuffer *output
dmaSyncers.emplace_back(plane.fd, DmaSyncer::SyncType::Write);
green_ = params.green;
- red_ = swapRedBlueGains_ ? params.blue : params.red;
- blue_ = swapRedBlueGains_ ? params.red : params.blue;
+ greenCcm_ = params.greenCcm;
+ if (swapRedBlueGains_) {
+ red_ = params.blue;
+ blue_ = params.red;
+ redCcm_ = params.blueCcm;
+ blueCcm_ = params.redCcm;
+ for (unsigned int i = 0; i < 256; i++) {
+ std::swap(redCcm_[i].r, redCcm_[i].b);
+ std::swap(blueCcm_[i].r, blueCcm_[i].b);
+ }
+ } else {
+ red_ = params.red;
+ blue_ = params.blue;
+ redCcm_ = params.redCcm;
+ blueCcm_ = params.blueCcm;
+ }
+ gammaLut_ = params.gammaLut;
/* Copy metadata from the input buffer */
FrameMetadata &metadata = output->_d()->metadata();
diff --git a/src/libcamera/software_isp/debayer_cpu.h b/src/libcamera/software_isp/debayer_cpu.h
index 2c47e7c6..926195e9 100644
--- a/src/libcamera/software_isp/debayer_cpu.h
+++ b/src/libcamera/software_isp/debayer_cpu.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2023, Linaro Ltd
- * Copyright (C) 2023, Red Hat Inc.
+ * Copyright (C) 2023-2025 Red Hat Inc.
*
* Authors:
* Hans de Goede <hdegoede@redhat.com>
@@ -31,7 +31,8 @@ public:
~DebayerCpu();
int configure(const StreamConfiguration &inputCfg,
- const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs);
+ const std::vector<std::reference_wrapper<StreamConfiguration>> &outputCfgs,
+ bool ccmEnabled);
Size patternSize(PixelFormat inputFormat);
std::vector<PixelFormat> formats(PixelFormat input);
std::tuple<unsigned int, unsigned int>
@@ -85,28 +86,28 @@ private:
using debayerFn = void (DebayerCpu::*)(uint8_t *dst, const uint8_t *src[]);
/* 8-bit raw bayer format */
- template<bool addAlphaByte>
+ template<bool addAlphaByte, bool ccmEnabled>
void debayer8_BGBG_BGR888(uint8_t *dst, const uint8_t *src[]);
- template<bool addAlphaByte>
+ template<bool addAlphaByte, bool ccmEnabled>
void debayer8_GRGR_BGR888(uint8_t *dst, const uint8_t *src[]);
/* unpacked 10-bit raw bayer format */
- template<bool addAlphaByte>
+ template<bool addAlphaByte, bool ccmEnabled>
void debayer10_BGBG_BGR888(uint8_t *dst, const uint8_t *src[]);
- template<bool addAlphaByte>
+ template<bool addAlphaByte, bool ccmEnabled>
void debayer10_GRGR_BGR888(uint8_t *dst, const uint8_t *src[]);
/* unpacked 12-bit raw bayer format */
- template<bool addAlphaByte>
+ template<bool addAlphaByte, bool ccmEnabled>
void debayer12_BGBG_BGR888(uint8_t *dst, const uint8_t *src[]);
- template<bool addAlphaByte>
+ template<bool addAlphaByte, bool ccmEnabled>
void debayer12_GRGR_BGR888(uint8_t *dst, const uint8_t *src[]);
/* CSI-2 packed 10-bit raw bayer format (all the 4 orders) */
- template<bool addAlphaByte>
+ template<bool addAlphaByte, bool ccmEnabled>
void debayer10P_BGBG_BGR888(uint8_t *dst, const uint8_t *src[]);
- template<bool addAlphaByte>
+ template<bool addAlphaByte, bool ccmEnabled>
void debayer10P_GRGR_BGR888(uint8_t *dst, const uint8_t *src[]);
- template<bool addAlphaByte>
+ template<bool addAlphaByte, bool ccmEnabled>
void debayer10P_GBGB_BGR888(uint8_t *dst, const uint8_t *src[]);
- template<bool addAlphaByte>
+ template<bool addAlphaByte, bool ccmEnabled>
void debayer10P_RGRG_BGR888(uint8_t *dst, const uint8_t *src[]);
struct DebayerInputConfig {
@@ -125,7 +126,9 @@ private:
int getInputConfig(PixelFormat inputFormat, DebayerInputConfig &config);
int getOutputConfig(PixelFormat outputFormat, DebayerOutputConfig &config);
int setupStandardBayerOrder(BayerFormat::Order order);
- int setDebayerFunctions(PixelFormat inputFormat, PixelFormat outputFormat);
+ int setDebayerFunctions(PixelFormat inputFormat,
+ PixelFormat outputFormat,
+ bool ccmEnabled);
void setupInputMemcpy(const uint8_t *linePointers[]);
void shiftLinePointers(const uint8_t *linePointers[], const uint8_t *src);
void memcpyNextLine(const uint8_t *linePointers[]);
@@ -135,9 +138,13 @@ private:
/* Max. supported Bayer pattern height is 4, debayering this requires 5 lines */
static constexpr unsigned int kMaxLineBuffers = 5;
- DebayerParams::ColorLookupTable red_;
- DebayerParams::ColorLookupTable green_;
- DebayerParams::ColorLookupTable blue_;
+ DebayerParams::LookupTable red_;
+ DebayerParams::LookupTable green_;
+ DebayerParams::LookupTable blue_;
+ DebayerParams::CcmLookupTable redCcm_;
+ DebayerParams::CcmLookupTable greenCcm_;
+ DebayerParams::CcmLookupTable blueCcm_;
+ DebayerParams::LookupTable gammaLut_;
debayerFn debayer0_;
debayerFn debayer1_;
debayerFn debayer2_;
diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp
index 2bea64d9..28e2a360 100644
--- a/src/libcamera/software_isp/software_isp.cpp
+++ b/src/libcamera/software_isp/software_isp.cpp
@@ -13,10 +13,14 @@
#include <sys/types.h>
#include <unistd.h>
+#include <libcamera/base/log.h>
+#include <libcamera/base/thread.h>
+
#include <libcamera/controls.h>
#include <libcamera/formats.h>
#include <libcamera/stream.h>
+#include "libcamera/internal/framebuffer.h"
#include "libcamera/internal/ipa_manager.h"
#include "libcamera/internal/software_isp/debayer_params.h"
@@ -52,6 +56,11 @@ LOG_DEFINE_CATEGORY(SoftwareIsp)
*/
/**
+ * \var SoftwareIsp::metadataReady
+ * \brief A signal emitted when the metadata for IPA is ready
+ */
+
+/**
* \var SoftwareIsp::setSensorControls
* \brief A signal emitted when the values to write to the sensor controls are
* ready
@@ -124,11 +133,20 @@ SoftwareIsp::SoftwareIsp(PipelineHandler *pipe, const CameraSensor *sensor,
std::string ipaTuningFile =
ipa_->configurationFile(sensor->model() + ".yaml", "uncalibrated.yaml");
- int ret = ipa_->init(IPASettings{ ipaTuningFile, sensor->model() },
- debayer_->getStatsFD(),
- sharedParams_.fd(),
- sensor->controls(),
- ipaControls);
+ IPACameraSensorInfo sensorInfo{};
+ int ret = sensor->sensorInfo(&sensorInfo);
+ if (ret) {
+ LOG(SoftwareIsp, Error) << "Camera sensor information not available";
+ return;
+ }
+
+ ret = ipa_->init(IPASettings{ ipaTuningFile, sensor->model() },
+ debayer_->getStatsFD(),
+ sharedParams_.fd(),
+ sensorInfo,
+ sensor->controls(),
+ ipaControls,
+ &ccmEnabled_);
if (ret) {
LOG(SoftwareIsp, Error) << "IPA init failed";
debayer_.reset();
@@ -136,6 +154,10 @@ SoftwareIsp::SoftwareIsp(PipelineHandler *pipe, const CameraSensor *sensor,
}
ipa_->setIspParams.connect(this, &SoftwareIsp::saveIspParams);
+ ipa_->metadataReady.connect(this,
+ [this](uint32_t frame, const ControlList &metadata) {
+ metadataReady.emit(frame, metadata);
+ });
ipa_->setSensorControls.connect(this, &SoftwareIsp::setSensorCtrls);
debayer_->moveToThread(&ispWorkerThread_);
@@ -240,7 +262,7 @@ int SoftwareIsp::configure(const StreamConfiguration &inputCfg,
if (ret < 0)
return ret;
- return debayer_->configure(inputCfg, outputCfgs);
+ return debayer_->configure(inputCfg, outputCfgs, ccmEnabled_);
}
/**
@@ -291,15 +313,22 @@ int SoftwareIsp::queueBuffers(uint32_t frame, FrameBuffer *input,
if (outputs.empty())
return -EINVAL;
+ /* We only support a single stream for now. */
+ if (outputs.size() != 1)
+ return -EINVAL;
+
for (auto [stream, buffer] : outputs) {
if (!buffer)
return -EINVAL;
- if (outputs.size() != 1) /* only single stream atm */
- return -EINVAL;
}
- for (auto iter = outputs.begin(); iter != outputs.end(); iter++)
- process(frame, input, iter->second);
+ queuedInputBuffers_.push_back(input);
+
+ for (auto iter = outputs.begin(); iter != outputs.end(); iter++) {
+ FrameBuffer *const buffer = iter->second;
+ queuedOutputBuffers_.push_back(buffer);
+ process(frame, input, buffer);
+ }
return 0;
}
@@ -320,13 +349,32 @@ int SoftwareIsp::start()
/**
* \brief Stops the Software ISP streaming operation
+ *
+ * All pending buffers are returned back as canceled before this function
+ * returns.
*/
void SoftwareIsp::stop()
{
ispWorkerThread_.exit();
ispWorkerThread_.wait();
+ Thread::current()->dispatchMessages(Message::Type::InvokeMessage, this);
+
ipa_->stop();
+
+ for (auto buffer : queuedOutputBuffers_) {
+ FrameMetadata &metadata = buffer->_d()->metadata();
+ metadata.status = FrameMetadata::FrameCancelled;
+ outputBufferReady.emit(buffer);
+ }
+ queuedOutputBuffers_.clear();
+
+ for (auto buffer : queuedInputBuffers_) {
+ FrameMetadata &metadata = buffer->_d()->metadata();
+ metadata.status = FrameMetadata::FrameCancelled;
+ inputBufferReady.emit(buffer);
+ }
+ queuedInputBuffers_.clear();
}
/**
@@ -359,11 +407,15 @@ void SoftwareIsp::statsReady(uint32_t frame, uint32_t bufferId)
void SoftwareIsp::inputReady(FrameBuffer *input)
{
+ ASSERT(queuedInputBuffers_.front() == input);
+ queuedInputBuffers_.pop_front();
inputBufferReady.emit(input);
}
void SoftwareIsp::outputReady(FrameBuffer *output)
{
+ ASSERT(queuedOutputBuffers_.front() == output);
+ queuedOutputBuffers_.pop_front();
outputBufferReady.emit(output);
}
diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
index 7a064d87..33279654 100644
--- a/src/libcamera/v4l2_subdevice.cpp
+++ b/src/libcamera/v4l2_subdevice.cpp
@@ -8,12 +8,18 @@
#include "libcamera/internal/v4l2_subdevice.h"
#include <fcntl.h>
-#include <regex>
#include <sstream>
#include <string.h>
#include <sys/ioctl.h>
#include <unistd.h>
+#pragma GCC diagnostic push
+#if defined __SANITIZE_ADDRESS__ && defined __OPTIMIZE__
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
+#include <regex>
+#pragma GCC diagnostic pop
+
#include <linux/media-bus-format.h>
#include <linux/v4l2-subdev.h>
diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
index e241eb47..f5b3fa09 100644
--- a/src/libcamera/v4l2_videodevice.cpp
+++ b/src/libcamera/v4l2_videodevice.cpp
@@ -190,7 +190,7 @@ V4L2BufferCache::V4L2BufferCache(const std::vector<std::unique_ptr<FrameBuffer>>
{
for (const std::unique_ptr<FrameBuffer> &buffer : buffers)
cache_.emplace_back(true,
- lastUsedCounter_.fetch_add(1, std::memory_order_acq_rel),
+ lastUsedCounter_++,
*buffer.get());
}
@@ -258,7 +258,7 @@ int V4L2BufferCache::get(const FrameBuffer &buffer)
return -ENOENT;
cache_[use] = Entry(false,
- lastUsedCounter_.fetch_add(1, std::memory_order_acq_rel),
+ lastUsedCounter_++,
buffer);
return use;
diff --git a/src/ipa/libipa/vector.cpp b/src/libcamera/vector.cpp
index 8019f8cf..85ca2208 100644
--- a/src/ipa/libipa/vector.cpp
+++ b/src/libcamera/vector.cpp
@@ -5,7 +5,7 @@
* Vector and related operations
*/
-#include "vector.h"
+#include "libcamera/internal/vector.h"
#include <libcamera/base/log.h>
@@ -18,8 +18,6 @@ namespace libcamera {
LOG_DEFINE_CATEGORY(Vector)
-namespace ipa {
-
/**
* \class Vector
* \brief Vector class
@@ -346,6 +344,4 @@ bool vectorValidateYaml(const YamlObject &obj, unsigned int size)
}
#endif /* __DOXYGEN__ */
-} /* namespace ipa */
-
} /* namespace libcamera */
diff --git a/src/meson.build b/src/meson.build
index 76198e95..8eb8f05b 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -29,8 +29,18 @@ endif
# libyuv, used by the Android adaptation layer and the virtual pipeline handler.
# Fallback to a subproject if libyuv isn't found, as it's typically not provided
-# by distributions.
-libyuv_dep = dependency('libyuv', required : false)
+# by distributions. Where libyuv is provided by a distribution, it may not
+# always supply a pkg-config implementation, requiring cxx.find_library() to
+# search for it.
+if not get_option('force_fallback_for').contains('libyuv')
+ libyuv_dep = dependency('libyuv', required : false)
+ if not libyuv_dep.found()
+ libyuv_dep = cxx.find_library('yuv', has_headers : 'libyuv.h',
+ required : false)
+ endif
+else
+ libyuv_dep = dependency('', required : false)
+endif
if (pipelines.contains('virtual') or get_option('android').allowed()) and \
not libyuv_dep.found()
diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
index 58f53bf3..2c040414 100644
--- a/src/v4l2/meson.build
+++ b/src/v4l2/meson.build
@@ -1,12 +1,11 @@
# SPDX-License-Identifier: CC0-1.0
-if not get_option('v4l2')
- v4l2_enabled = false
+v4l2_enabled = get_option('v4l2').allowed()
+
+if not v4l2_enabled
subdir_done()
endif
-v4l2_enabled = true
-
v4l2_compat_sources = files([
'v4l2_camera.cpp',
'v4l2_camera_file.cpp',