bitdepth: 10ui
description: |
Film Scan, using the 10-bit Academy Density Encoding
+
isdata: false
allocation: uniform
allocationvars: [0, 1]
bitdepth: 16ui
description: |
Film Scan, using the 16-bit Academy Density Encoding
+
isdata: false
allocation: uniform
allocationvars: [0, 1]
- !<FileTransform> {src: slog_to_aces.spimtx, interpolation: linear}
- !<ColorSpace>
+ name: logc
+ family: arri
+ equalitygroup:
+ bitdepth: 10ui
+ description: |
+ Arri Alexa LogC, V3, Exposure Index 800
+
+ isdata: false
+ allocation: uniform
+ allocationvars: [0, 1]
+ to_reference: !<GroupTransform>
+ children:
+ - !<FileTransform> {src: logc800.spi1d, interpolation: linear}
+ - !<FileTransform> {src: logc_to_aces.spimtx}
+
+ - !<ColorSpace>
name: log
family: log
equalitygroup:
children:
- !<AllocationTransform> {allocation: lg2, vars: [-8.5, 5]}
- !<FileTransform> {src: spi_32_lattice_rrtut33_smpte_rp.spi3d, interpolation: linear}
-
--- /dev/null
+#!/usr/bin/env python
+
+import math
+
+"""
+
+// ARRI ALEXA IDT for ALEXA logC files
+// with camera EI set to 800
+// Written by v3_IDT_maker.py v0.06 on Thursday 01 March 2012 by alex
+
+float
+normalizedLogCToRelativeExposure(float x) {
+ if (x > 0.149659)
+ return (pow(10,(x - 0.385537) / 0.247189) - 0.052272) / 5.555556;
+ else
+ return (x - 0.092809) / 5.367650;
+}
+
+"""
+
+def logCToLinear(x):
+ if (x > 0.149659):
+ return (math.pow(10.0,(x - 0.385537) / 0.247189) - 0.052272) / 5.555556
+ else:
+ return (x - 0.092809) / 5.367650
+
+def WriteSPI1D(filename, fromMin, fromMax, data):
+ f = file(filename,'w')
+ f.write("Version 1\n")
+ f.write("From %s %s\n" % (fromMin, fromMax))
+ f.write("Length %d\n" % len(data))
+ f.write("Components 1\n")
+ f.write("{\n")
+ for value in data:
+ f.write(" %s\n" % value)
+ f.write("}\n")
+ f.close()
+
+def Fit(value, fromMin, fromMax, toMin, toMax):
+ if fromMin == fromMax:
+ raise ValueError("fromMin == fromMax")
+ return (value - fromMin) / (fromMax - fromMin) * (toMax - toMin) + toMin
+
+NUM_SAMPLES = 2**14
+RANGE = (-0.125, 1.125)
+data = []
+for i in xrange(NUM_SAMPLES):
+ x = i/(NUM_SAMPLES-1.0)
+ x = Fit(x, 0.0, 1.0, RANGE[0], RANGE[1])
+ data.append(logCToLinear(x))
+WriteSPI1D('logc800.spi1d', RANGE[0], RANGE[1], data)