LUTS

If you are looking for LUTs, you’re in luck. There is a website for sharing your FreshLUTs. Even though they are fresh, they are probably not as exciting as one might think.

LUTs are short for Look-Up Tables, which doesn’t sound as exciting as you were probably hoping. They are a pretty interesting process for dealing with color in high end Image and Video processing applications. Often called 3D Look-up Tables, they are used for color grading, an essential step in film production and restoration to map from one color space to another. LUTs are not to be confused with ICC profiles which aim for color accuracy, while LUTs are looking for more color quality and aesthetics.

There are a lot of LUT formats out there, it seems. In looking into this format, I have found dozens of others to investigate, but today lets look at the four available as an export from Photoshop.

Above you can see a simple screenshot for the export of different formats from Adobe Photoshop. Adobe is one of the biggest developer and supporter of the formats used in LUTs, but there are many other graphics tools which create and support LUTs. In this Photoshop export we can see four formats included in the export. Lets take a look at each of these.

ICC Profiles are well documented and available for identification in PRONOM.

filename : 'LUTs-Export-s01.icc'
filesize : 197024
modified : 2025-02-25T09:37:24-07:00
errors :
matches :
- ns : 'pronom'
id : 'fmt/1975'
format : 'ICC Profile'
version : '2'
mime : 'application/vnd.iccprofile'
class : 'Dataset'
basis : 'extension match icc; byte match at 8, 32'

But the other three are plain text files and still identify as such. Let us start with the CUBE format.

filename : 'LUTs-Export-s01.cube'
filesize : 884963
modified : 2025-02-25T09:37:24-07:00
errors :
matches :
- ns : 'pronom'
id : 'x-fmt/111'
format : 'Plain Text File'
version :
mime : 'text/plain'
class :
basis : 'text match ASCII'
warning : 'match on text only; extension mismatch'

cat LUTs-Export-s01.cube
#Created by: Adobe Photoshop Export Color Lookup Plugin
#Copyright: (C) Copyright 2025 ObsoleteThor
TITLE "LUT-export-s01"

#LUT size
LUT_3D_SIZE 32

#data domain
DOMAIN_MIN 0.0 0.0 0.0
DOMAIN_MAX 1.0 1.0 1.0

#LUT data points
0.000000 0.000000 0.000000

The CUBE format was first developed by IRIDAS in 2003 as a answer to ensure interoperability with other software. Adobe acquired IRIDAS in 2011 in a effort to be a leader in the color grading and enhancement market. They have published the CUBE specifications for version 1.0 in 2013.

A Cube file is a text file that defines a look-up table in the Cube format.
The Cube look-up tables store RGB values.
Advantages of the Cube format include:
  • The Cube format can describe look-up tables for a wide range of purposes, from simple gamma adjustments for display output to complex HDR image processing.
  • The format is well suited for professional digital cinema applications and for both normal range and High-Dynamic Range image processing.
  • As Cube files are text files, they are easily edited or reviewed using a text editor.
  • A Cube file can include three 1-dimensional tables or one 3-dimensional table.
  • The tables can be in a wide range of sizes.
  • Cube files are trivial to write and read.
  • All values are human-readable as they are in decimal form, and can be of high precision.
  • The input domain and output range are not limited to the range 0.0 to 1.0.

According to the specifications, a CUBE file can be a One-Dimensional Cube file or a Three-Dimensional Cube file. From the example above you can see the file is a Three-Dimensional file with the required line “LUT_3D_SIZE“. But in a One-Dimensional file, the required line is “LUT_1D_SIZE“.

cat Demo.cube
TITLE "Demo"
LUT_1D_SIZE 3
DOMAIN_MIN 0 0 0
DOMAIN_MAX 1 2 3
0 0 0
# Comments can go anywhere
0.5 1 1.5
1 1 1

Each CUBE file has one or the other and should be an easy string to look for. It is in a variable position as there can be comments before the required line and also may have a TITLE line. The TITLE and DOMAIN lines are common to every file but not required.

Now, the CUBE format is a bit different depending on the source. They all seem to have the same header, but different elements. It seems the IRIDAS Cube format is the most interoperable. The Truelight Cube format generally has the CUB extension, and the Cinespace Cube has the CSP extension, which will look at next/ You can read more about the differences on this format comparison table. This LUTCalc web site has many different types of Cube’s it can output, so there are some differences.

The other file format available in the export is a CSP. The CSP is also a plain text file, often called a cineSpace LUT file. This format come from the cineSpace software, a color management software for the film and television industry.

cat LUTS-s01.csp 
CSPLUTV100
3D

BEGIN METADATA
#Created by: Adobe Photoshop Export Color Lookup Plugin
TITLE "LUTS"
END METADATA

2
0.0 1.0
0.0 1.0
2
0.0 1.0
0.0 1.0
2
0.0 1.0
0.0 1.0

32 32 32
0.000000 0.000000 0.000000

The CSP File Format specifications outlines header and the other two sections.:

The cineSpace LUT format contains three main sections.
Header
This section contains the LUT identifier and the LUT type, 3D or 1D.
It is made up of the first two (2) valid lines in the file. See Notes below for the definition of a valid line.

Examples
• (3D LUT) header:
CSPLUTV100
3D
• (1D LUT) header:
CSPLUTV100
1D

So there is a pretty obvious header to work with in identification. “CSPLUTV100” can be used to identify both 1D and 3D CSP files.

The other format available to export from Photoshop is 3DL. They seem to be connected to the Assimilate Inc. company and software. A specification has been posted, and it looks like there is only ASCII and not much in the way of a header.

cat LUTS-s01.3dl 
#Created by: Adobe Photoshop Export Color Lookup Plugin
#Description: LUTS
0 33 66 99 132 165 198 231 264 297 330 363 396 429 462 495 528 561 594 627 660 693 726 759 792 825 858 891 924 957 990 1023

It does not appear there is any headers or static strings to use for identification. The specification calls the format, 3DL ASCII format and that “All lines starting with ‘#’ are treated as comments.” Because of this, I don’t think positive identification can happen at this time.

For now I am just proposing 2 new file formats to PRONOM, The CUBE format And the CSP Format. Click on my GitHub submission page to see the signatures and enjoy some samples!

Camtasia

Not to be confused with Fantasia, a magical screen recording tool has been around for many years. Books have been written on the use of this software to instruct others on how to teach and demonstrate other software and ideas.

Unlike Fantasia, the screen recording software Camtasia was not made by Disney, but does contain some proprietary data. Camtasia is a screen recording software by the developer TechSmith. First released in 2002, it was available first for Windows and much later, Macintosh.

The first versions of Camtasia would encode screen recordings in an AVI container, using the TSCC codec. The TSCC codec, aka TechSmith Screen Capture Codec, was developed by TechSmith and the codec was distributed freely. Let’s see what MediaInfo knows about it.

mediainfo Camtasia1-s01.avi 
General
Complete name : Camtasia1-s01.avi
Format : AVI
Format/Info : Audio Video Interleave
Format settings : BitmapInfoHeader
File size : 1.66 MiB
Duration : 2 s 333 ms
Overall bit rate : 5 966 kb/s
Frame rate : 15.000 FPS

Video
ID : 0
Format : TechSmith
Codec ID : tscc
Codec ID/Info : TechSmith Screen Capture
Duration : 2 s 333 ms
Bit rate : 87.3 kb/s
Width : 320 pixels
Height : 240 pixels
Display aspect ratio : 4:3
Frame rate : 15.000 FPS
Bit depth : 8 bits
Bits/(Pixel*Frame) : 0.076
Stream size : 24.9 KiB (1%)

The AVI video format was the default recording format for the first couple versions. In version 3 the default format changed to the proprietary CAMREC format.

Camrec video files are a proprietary TechSmith file format that is used to store multiple files and information in a single package. Overall, .camrec files store your screen and camera recording plus some meta data about the various streams.
However, it is important to note that you cannot view or play .camrec files outside of Camtasia Studio.

The CAMREC video format isn’t entirely proprietary and uses a common container.

hexdump -C Camtasia3-s01.camrec | head
00000000 d0 cf 11 e0 a1 b1 1a e1 00 00 00 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 3e 00 04 00 fe ff 0c 00 |........>.......|
00000020 06 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 |................|
00000030 01 00 00 00 00 00 00 00 00 10 00 00 02 00 00 00 |................|
00000040 01 00 00 00 fe ff ff ff 00 00 00 00 00 00 00 00 |................|
00000050 fc 03 00 00 ff ff ff ff ff ff ff ff ff ff ff ff |................|
00000060 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|

file Camtasia3-s01.camrec
Camtasia3-s01.camrec: Composite Document File V2 Document, Cannot read section info

7z l Camtasia3-s01.camrec

Scanning the drive for archives:
1 file, 4696576 bytes (4587 KiB)

Path = Camtasia3-s01.camrec
Type = Compound
ERRORS:
Unexpected end of archive
Physical Size = 4698112
Extension = compound
Cluster Size = 4096
Sector Size = 64

Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
..... 3912 3968 manifest.camxml
..... 4672000 4673536 Screen_Stream.avi
------------------- ----- ------------ ------------ ------------------------
4675912 4677504 2 files

The CAMREC file might be unknown to most video players, but the AVI within the compound object is the same as the versions before it. Camtasia even has a built in extractor if you really need to pull the AVI out of the format.

7z l Camtasia8-s01.camrec
Path = Camtasia8-s01.camrec
Type = Compound
Physical Size = 33849344
Extension = compound
Cluster Size = 4096
Sector Size = 64

Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
..... 4798 8192 manifest.camxml
..... 4286 8192 cursor-1.ico
..... 766 768 cursor-0.ico
..... 9565 12288 Events.dat
..... 36 64 Keyboard.dat
..... 33764198 33767424 Screen_Stream.avi
------------------- ----- ------------ ------------ ------------------------
33783649 33796928 6 files

Each CAMREC file contains a manifest.camxml. They seem to be UTF-16 XML files, with and without the XML declaration. The Screen_Steam.avi file seems to be in all my samples, but not clear if there can be a variant without an AVI file.

This CAMREC container was used in the Camtasia Studio software until version 8.4 when the default was changed to a new Codec, based on MPEG4, with the TREC extension.

mediainfo capture-1.trec 
General
Complete name : capture-1.trec
Format : MPEG-4
Format profile : Base Media / Version 2
Codec ID : mp42 (mp42/isom)
File size : 277 KiB
Duration : 3 s 41 ms
Overall bit rate mode : Variable
Overall bit rate : 746 kb/s
Frame rate : 19.091 FPS
Encoded date : 2025-02-11 03:48:25 UTC
Tagged date : 2025-02-11 03:48:34 UTC
FileExtension_Invalid : braw mov mp4 m4v m4a m4b m4p m4r 3ga 3gpa 3gpp 3gp 3gpp2 3g2 k3g jpm jpx mqv ismv isma ismt f4a f4b f4v

Video
ID : 1
Format : tsc2-D0
Codec ID : tsc2-D0

Duration : 2 s 933 ms
Bit rate : 495 kb/s
Width : 924 pixels
Height : 696 pixels
Display aspect ratio : 4:3
Frame rate mode : Variable
Frame rate : 19.091 FPS
Minimum frame rate : 10.000 FPS
Maximum frame rate : 30.000 FPS
Bits/(Pixel*Frame) : 0.040
Stream size : 177 KiB (64%)
Title : 100
Encoded date : 2025-02-11 03:48:25 UTC
Tagged date : 2025-02-11 03:48:34 UTC

TechSmith Recording File (TREC) files will identify as an MP4 in most identification tools, you will need MediaInfo or other tools to understand the codec used. If we look at the header of the MP4 TREC file:

hexdump -C Camtasia8.4-s01.trec | head
00000000 00 00 00 18 66 74 79 70 6d 70 34 32 00 00 00 00 |....ftypmp42....|
00000010 6d 70 34 32 69 73 6f 6d 00 00 00 88 66 72 65 65 |mp42isom....free|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000a0 00 00 00 01 6d 64 61 74 00 00 00 00 01 1f c4 b9 |....mdat........|
000000b0 01 02 02 01 40 00 00 00 7f 7f 7f 7f 7f 7f 7f 7f |....@...........|
000000c0 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f |................|
*
000000f0 7f 7f 7f 7f 7f 7f 7f 63 da 11 00 00 d6 46 18 e0 |.......c.....F..|
00000100 77 ff 43 ff aa e4 eb 9c dc 8f 9a 56 7a 30 71 ea |w.C........Vz0q.|

We see the standard header for an MP4 file. The codec specific to the Camtasia software is identified later in the file, but identification using a PRONOM signature might be challenging. In looking at the hex of the file, near the end, you can find embedded PNG’s and other data. VLC and FFMPEG can read the codec, but players like Quicktime struggle.

A promising section near the end shows the name and version of Camtasia Studio. More data needed.

hexdump -C Camtasia8.4-s02.trec
0569a3b0 00 00 00 00 00 00 00 00 00 00 01 54 53 43 52 00 |...........TSCR.|
0569a3c0 00 00 00 00 00 00 50 01 00 00 00 00 00 00 00 43 |......P........C|
0569a3d0 61 6d 74 61 73 69 61 20 53 74 75 64 69 6f 00 00 |amtasia Studio..|
0569a3e0 00 00 00 38 2e 34 00 00 00 00 00 00 00 00 00 00 |...8.4..........|
0569a3f0 00 00 00 57 69 6e 00 60 bb c4 00 00 00 00 00 00 |...Win.`........|
0569a400 00 00 00 00 00 00 00 00 00 00 01 54 53 43 4d 00 |...........TSCM.|
0569a410 00 00 00 00 00 95 2c 00 00 00 01 44 41 54 41 00 |......,....DATA.|

Camtasia also uses a lot of Project files to managing the video editing process of your screen recordings. The project files can vary between the Windows and Macintosh versions.

The older versions of Camtasia for Windows up until version 8.4, used the CAMPROJ extension for their projects. These are in XML and simply use “<Project_Data>” for the root element. With Version 8 having a later element “<CSMLData>” to manage the assets. Other projects also have a File element that begins with either “tscrec4://” or “TSCRec://”. But it may be best to identify the older versions with the “<ClipBin_Array>” element.

For Mac version 2, they used CMPROJ for the Project, but also it was an Apple Bundle/Package file. It also used a recording file with the extension CMREC, but is also Apple Bundle/Package file which contains MOV and DAT files.

The most recent versions of Camtasia for Mac and windows use the TSCPROJ extension. They are plan text files with some resemblance of JSON.

{
"title" : "",
"description" : "",
"author" : "",
"width" : 854.0,
"height" : 480.0,
"version" : "0.5",
"editRate" : 30,
"authoringClientName" : {
"name" : "Camtasia",
"platform" : "Mac",
"version" : "3.1.7"
}

There are a few formats related to Camtasia, but the CAMREC format is the one that shows up the most in my work. So today I am only proposing a signature for CAMREC and the CAMPROJ formats. We will have to have some discussion on the TREC format to determine if standard MPEG-4 identification is fine or if the format needs its own PUID. You can find some examples and my proposed signature on my Github page.