How to calculate RP-177 3×3 matrices in Matlab. Part 2. TRA. Rec709/P3 to Rec2020.

(work in progress)
Matlab code made by Tinna Lif Gunnarsdottir.

Part 1 is here

SMPTE RP-177:1993  Rec709/P3 to Rec2020 NPM/TRA

(note: When I tried doing a 3d lut with degamma and gamma function and this TRA, the color red was wrong. )


        R = [0.708 ; 0.292 ; 0.000];
        G = [0.170 ; 0.797 ; 0.0330];
        B = [0.131 ; 0.046 ; 0.8230];

P = [R G B];

White Point D65

        X = 0.3127;
        Y = 0.3290;
        Z = 0.3583;
        W = [X/Y ; 1 ; Z/Y];

CC = P \ W;

C = [CC(1,1) 0 0 ; 0 CC(2,1) 0 ; 0 0 CC(3,1)];
format long 
NPM = P * C 
NPM_inv = inv(NPM)


0.636958048301291   0.144616903586208   0.168880975164172
0.262700212011267   0.677998071518871   0.059301716469862
0                   0.028072693049088   1.060985057710791

NPM_inv =

   1.716651187971268  -0.355670783776393  -0.253366281373660
  -0.666684351832489   1.616481236634939   0.015768545813911
   0.017639857445311  -0.042770613257809   0.942103121235474

From P3 D65 to Rec-2020

% COLOR DCI P3 - D65
        R_P3 = [0.6800   ; 0.3200 ; 0.0000];
        G_P3 = [0.2650  ; 0.6900 ; 0.0450];
        B_P3 = [0.1500  ; 0.0600 ; 0.7900];
        P_P3 = [R_P3 G_P3 B_P3];
        X_P3 = 0.3127;
        Y_P3 = 0.3290;
        Z_P3 = 0.3583;
        W_P3 = [X_P3/Y_P3 ; 1 ; Z_P3/Y_P3];
        CC_P3 = P_P3 \ W_P3;
        C_P3 = [ CC_P3(1,1) 0 0 ;  0  CC_P3(2,1) 0 ;  0    0   CC_P3(3,1)];
        NPM_P3 = P_P3 * C_P3
TRA_P3 =  NPM \ NPM_P3

NPM_P3 =

           0.486570948648216   0.265667693169093   0.198217285234362
           0.228974564069749   0.691738521836506   0.079286914093745
                           0   0.045113381858903   1.043944368900976

TRA_P3 =

           0.753833034361722   0.198597369052617   0.047569596585662
           0.045743848965358   0.941777219811693   0.012478931222948
          -0.001210340354518   0.017601717301090   0.983608623053428

From REC 709 D65 to REC-2020

        R_7 = [0.640 ;  0.330 ; 0.030];
        G_7 = [0.300 ;  0.600 ; 0.100];
        B_7 = [0.150 ;  0.060 ; 0.790];
        P_7 = [R_7 G_7 B_7];
        % White Point  D65

X_7 = 0.3127;
Y_7 = 0.3290;
Z_7 = 0.3583;
        W_7 = [X_7/Y_7 ; 1 ; Z_7/Y_7];
        CC_7 = P_7 \ W_7;                                              % P inv


        C_7 = [ CC_7(1,1) 0 0 ;  0  CC_7(2,1) 0 ;  0    0   CC_7(3,1)];
        NPM_7 = P_7 * C_7
        TRA_7 =  NPM \ NPM_7 % Rec709 as source, NPM/2020 as dest, and inv

NPM_7 =

           0.412390799265959   0.357584339383878   0.180480788401834
           0.212639005871510   0.715168678767756   0.072192315360734
           0.019330818715592   0.119194779794626   0.950532152249661

TRA_7 =

           0.627403895934699   0.329283038377884   0.043313065687417
           0.069097289358232   0.919540395075459   0.011362315566309
           0.016391438875150   0.088013307877226   0.895595253247624

From P3 DCI WHITE to Rec-2020

        X_P3_W = 0.314;
        Y_P3_W = 0.351;
        Z_P3_W = 0.335;
        W_P3_W = [X_P3_W/Y_P3_W ; 1 ; Z_P3_W/Y_P3_W];
        CC_P3_W = P_P3 \ W_P3_W;
        C_P3_W = [ CC_P3_W(1,1) 0 0 ;  0  CC_P3_W(2,1) 0 ;  0    0
        NPM_P3_W = P_P3 * C_P3_W
        TRA_P3_W =  NPM \ NPM_P3_W

NPM_P3_W =

           0.445169815564552   0.277134409206778   0.172282669815565
           0.209491677912731   0.721595254161044   0.068913067926226
                           0   0.047060560053981   0.907355394361973

TRA_P3_W =

   0.689691223459987   0.207169204075508   0.041345622770170
   0.041851616632057   0.982426091420886   0.010846196309229
  -0.001107355451221   0.018361440441151   0.854913936657422

How to apply X’Y’Z’ 3D LUTS in Photoshop to an image so it will match the white point of a DCP

Sometimes you may want to add something to a DCP trailer or feature film.
Example: Trailers often need new graphics in a new language.

In Photoshop and Resolve you can apply 3D LUTS to an image to match the white point of the original DCP.

If the DCP has a warm white you could use a D60 3D LUT and if it has a cooler white you can use a D65 3D LUT.

If you render a video file in Final Cut X or Premiere with graphics that has a X’Y’Z’ 3D LUT applied, remember to choose no color transform in Easydcp and similar DCP mastering software.

If you apply a rec709 to DCI X´Y´Z´ 3D LUT to a video or image in Resolve that is used on a DCP, change Project settings – Color Management – Timeline Colorspace  to DCI X´Y´Z´ .

You can apply 3DL 3D LUTs in Easydcp Creator.

You can apply Cube 3D LUTs in Resolve and Photoshop.

How to apply a 3D LUT in Photoshop
Layer – New adjustment Layer – Color lookup


Click on load 3d lut and choose a 3D LUT. You can now use a cube 3D LUT.


Some 3D LUTS

Here are some P3 and REC709 3D LUTS in 3DL and CUBE (float) format using the Nuke 3D LUT method from this post and the matlab NPMs from this post.

P3 D61 2.6 gamma to X’Y’Z’ 7z

White in the 12 bit 3dl file is 3885 3960 3997 It is the correct D61 value in SMPTE EG-432-1-10


P3 D60 2.6 gamma to X’Y’Z’ 7z

White in the 12 bit 3dl file is 3886 3960 3972. It is the correct D60 value in SMPTE EG-432-1-10


P3D65 2.6 gamma to X’Y’Z’ 7z

White in the 12 bit 3dl file is 3883 3960 4092
It is the correct D65 value in SMPTE EG-432-1-10


P3 DCI WHITE 2.6 gamma to X’Y’Z’  7z

White in the 12 bit 3dl file is 3794 3960 3890 (greenish)
It is the correct DCI WHITE value in SMPTE EG-432-1-10


REC709 D65 2.2 2.4 2.6 gamma to X’Y’Z’ 7z

White in the 12 bit 3dl files is 3883 3960 4092
It is the correct D65 value in SMPTE EG-432-1-10


REC 709 D60 2.2 2.4 2.6 gamma to X’Y’Z’ 7z

White in the 12 bit 3dl files is 3886 3960 3972. It is the correct D60 value in SMPTE EG-432-1-10


How to calculate RP-177 3×3 matrices in Matlab

How to calculate RP-177 3×3 matrices in Matlab.

Update: For part 2 with the RP-177 TRA matlab code see this post

The Matlab code is made by Tinna Lif Gunnarsdottir.

To make DCPs in DCI-P3 D6O, D61, D65 or Rec 709 D60, D61, D65 you can use SMPTE RP-177:1993 3×3 NPMs to transfer from RGB to XYZ.

NPM = normalized primary matrix

For more info on the math see SMPTE EG 432-1-10 and How to make 3D LUTs in Nuke (R´B´G´to X´Y´Z´)


Here are some 3D LUTS made with these 3×3 matrices


Example: DCI-P3 D6O

Here is the matlab code to calculate the correct RP-177 RGB-XYZ matrices to go from DCI-P3 D6O to XYZ.

#DCI-P3 Primaries

R = [0.68 ; 0.320 ; 0];
G = [0.265 ; 0.690 ; 0.045];
B = [0.150 ; 0.060 ; 0.79];

P = [R G B];

#DCI- P3 D60 Whitepoint

X = 0.3217;
Y = 0.3378;
Z = 0.3405;

W = [X/Y ; 1 ; Z/Y];

CC = P \ W;

C = [ CC(1,1) 0 0 ; 0 CC(2,1) 0 ; 0 0 CC(3,1)];

NPM = P * C


0.504739646629896 0.264744009223770   0.182855006076470 0.237524539590539 0.689333457978873   0.073142002430588
0                                               0.044956529868187   0.963036365336076


Pasted into a Nuke color matrix node:
0.50473965   0.26474401     0.18285501
0.23752454    0.68933346    0.073142
0                            0.04495653   0.96303637

The middle row sum to 1

Other 3X3 NPM matrices

The Rec709 and DCI-P3 D65 3×3 matrices is also used in this post

DCI-P3 D65

X = 0.3127;
Y = 0.3290;
Z = 0.3583;

NPM from matlab:
0.486570948648216 0.265667693169093 0.198217285234362
0.228974564069749 0.691738521836506 0.0792869140937450
0                                               0.045113381858903 1.043944368900976

Pasted into a Nuke color matrix node:
0.48657095  0.26566769  0.19821729
0.22897457   0.69173852    0.07928691
0                           0.04511338    1.04394437

The middle row sums to 1
0.22897457+0.69173852+0.07928691 = 1

DCI-P3 D61

X = 0.3198;
Y = 0.3360;
Z = 0.3442;

NPM from matlab:
0.500852913533834 0.264968867481203  0.185963933270677
0.235695488721804 0.689918937969925  0.0743855733082713
0                                              0.044994713345865  0.979410048558897

Pasted into a Nuke color matrix node:
0.50085291 0.26496887 0.18596393
0.23569549 0.68991894 0.07438557
0                          0.04499471 0.97941005

Middle row sums to 1


X = 0.314;
Y = 0.351;
Z = 0.335;

NPM from matlab
0.445169815564552 0.277134409206778   0.172282669815565
0.209491677912731   0.721595254161044    0.068913067926226
0                                              0.047060560053981 0.907355394361973

Pasted into a Nuke color matrix node:
0.44516982 0.27713441     0.17228267
0.20949168 0.72159525    0.06891307
0                         0.04706056   0.90735539

Middle row sums to 1

REC 709
REC 709 D65, D60, D61 fits inside DCI-P3 and can be used in DCPs.

REC709 Primaries
R = [0.640 ; 0.330 ; 0.030];
G = [0.300 ; 0.600 ; 0.100];
B = [0.150 ; 0.060 ; 0.790];

REC 709 D65

X = 0.3127;
Y = 0.3290;
Z = 0.3583;

NPM from matlab:
0.412390799265959 0.357584339383878 0.180480788401834
0.212639005871510   0.715168678767756   0.072192315360734
0.019330818715592   0.119194779794626   0.950532152249661

Pasted into a Nuke color matrix node:
0.4123908  0.3575843   0.18048079
0.21263901 0.71516867 0.07219232
0.01933082 0.1191948   0.95053215

The middle row should sum to 1 according to RP-177 so I changed 0.71516868 to 0.71516867.

REC 709 D60

X = 0.3217;
Y = 0.3378;
Z = 0.3405;

NPM from matlab:
0.431575918832227 0.355727231008106 0.165035512089804
0.222531333147867 0.711454462016212   0.066014204835922
0.020230121195261 0.118575743669369  0.869187030339634

Pasted into a Nuke color matrix node:
0.43157592 0.35572723 0.16503551
0.22253133 0.71145447  0.0660142
0.02023012 0.11857574 0.86918703

Changed 0.71145446 to 0.71145447 so the middle row sums to 1
0.22253133+0.71145447+0.0660142= 1

REC 709 D61


X = 0.3198;
Y = 0.3360;
Z = 0.3442;

NPM from matlab:
0.427462229871868 0.356162746222987 0.168160738190859
0.220410212277682  0.712325492445975 0.067264295276343
0.020037292025244 0.118720915407662 0.885646554471856

Pasted into a Nuke color matrix node:
0.42746223 0.35616275 0.16816074
0.22041021  0.71232549 0.0672643
0.02003729 0.11872092 0.88564655
Middle row sums to 1


Using soX to extract channels and add silence

Add silence
Sometimes audio files are too short and does not match the length of the video files
Instead of making another reel with a silent soundtrack you can add some silence to the audio files using Sox.

To make a 48 khz 24 bit 10 second silent wav file with sox:
sox -n -r 48000 -b24 silent10sec.wav trim 0.0 10.0

To add this to the end of another 48 khz 24 bit sound file with sox:
sox film.LFE.wav silent10sec.wav film2.LFE.wav


Extract Channels

Extract channels from interleaved 5.1 sound files
If the file is L, R, C, LFE, LS, RS
sox film51.wav left.wav remix 1
sox film51.wav right.wav remix 2
sox film51.wav center.wav remix 3
sox film51.wav lfe.wav remix 4
sox film51.wav ls.wav remix 5
sox film51.wav rs.wav remix 6

In Ubuntu Linux you install sox using sudo apt install sox

On Windows you can install sox using Bash on Ubuntu on Windows and install sox with apt install sox or get the binaries from the Sox homepage.

On a Mac you can install sox using homebrew and install sox with brew install sox or get the binaries from the Sox homepage.

Using Ubuntu linux inside Virtualbox on a Mac to format hard drives and do other DCP related stuff

You can run linux inside virtualbox on a mac (and windows).
You can also run Windows inside virtualbox on a mac.

Installing Ubuntu in virtualbox 
Download Ubuntu

Download virtualbox and extensions

Install virtualbox
Click new
Choose Linux, Ubuntu 64 and a name like Ubuntu.

Choose RAM size. I used 2048 MB because it is recommended for Ubuntu 16.04

Choose Hard Disk size. I chose 15 GB and “create virtual hard disk file.”

Choose Hard disk file type. I left it at VDI.

Choose Storage on physical hard disk. I used fixed size because it faster.

Choose Location and size. Ubuntu


Choose Virtualbox – preferences – extensions and install the Virtualbox extensions you downloaded. The extensions enables USB 3.

I upgraded the settings on the Ubuntu virtual machine:

Ubuntu – settings:

ports – USB – USB 3

Video – Memory – 128 MB

System – Processor 2 CPUs (Ubuntu 16.04 minimum requirements)

Choose the ubuntu linux image when you boot it the first time or add is as a cd rom.

You can now start the virtual machine.

Choose install Ubuntu

I used the default settings.

When Ubuntu is installed you can install the linux Guest additions.

Use Virtualbox – Devices – Install Guest Additions. The Guest additions enables adjusting the screen size of the virtual box and other things.

Let the program run.

Choose shutdown

You can set up a Shared folder in virtualbox that will be mounted in linux
Devices – Shared folder – Shared folder settings

Start the virtual machine again


Updating Ubuntu

sudo apt update
sudo apt upgrade

You can copy files from EXT2 hard drives to Windows NTFS hard drives. NTFS hard drives can be read on macs.

Using Files/nautilus to access shared folders and copy files to EXT 2 hard drives.

You can start Files/nautilus as root to get read/write access.
in Terminal
sudo nautilus

Formatting a hard drive using Gparted

See this post for more info on gparted/parted/inode 128

run sudo apt install gparted to install gparted

Use Virtualbox – Devices – USB and enable the hard drive.

run gparted

sudo gparted

Click on “Device” – “Create a partition table”
Choose msdos.

Use add partition, add a label and format the drive as EXT2, NTFS, EXT4 or others.

Format the hard drive using mke2fs with inode 128
To format a hard drive as ext2 with 128 inode size, use this command in a terminal on the hard drive you want to format:
sudo mke2fs -t ext2 -I 128 -L DCP123 /dev/sdb1

Setting 755 permissions with chmod

in terminal
sudo chmod 755 -R /media/user/dcp/

Using asdcp tools

Download asdcplib

Extract it
Right click and choose extract here

Compile it
start a terminal in the asdcp folder
run these commands
sudo apt install libssl-dev
sudo ./configure
sudo make

Running asdcp-unwrap to extract the wav file from a mxf sound file
You can use asdcp-wrap to make MXFs

Open terminal in the folder where you want your wav file

Run asdcp-unwrap from the asdcp/src directory on the sound mxf file.

/home/user/Downloads/asdcp/src/asdcp-unwrap /media/user/dcp/sound.mxf

You can also drag the asdcp-unwrap file from the File manager to the terminal.
Then drag the mxf file to terminal.

The wav file can be imported in Adobe Audition.

Using Amazon S3 Simple Storage
Install Crossftp Pro to upload to Amazon S3 simple storage

Install java
sudo apt-get install default-jre
sudo apt-get install default-jdk
download portable crossftp and follow the instructions.
or download and install the crossftp linux deb package

change to the Downloads directory in Terminal or right click the directory and choose open terminal here.
open terminal
cd Downloads
sudo dpkg -i ./crossftp_deb_package.deb

Finding base64 sha-1 hash values
(You can also run this command in a terminal on a mac)

in Terminal:
openssl sha1 -binary "FILE_NAME" | openssl base64
source: wikipedia

Running Subtitle Edit in ubuntu.

You can run portable Subtitle Edit in linux. There is a discussion on the sub talk forum on how to run it.

You can run a basic version with video support. To do more advanced work I recommend using Windows. You can run Windows in Virtualbox on a mac.
You need to install mono-complete and Mplayer.
sudo apt install mono-complete
sudo apt install mplayer

If you open a video file in the Files/Nautilus file manager it asks if you want to install codecs.
I also installed these
sudo apt install vlc
sudo apt install mpv

Unzip the Subtitle Edit portable zip file
right click and choose extract here
In Terminal
sudo mono Subtitleedit.exe


Using Gnome Commander to copy files and set permissions

Install gnome commander
sudo apt install gnome-commander

run gnome commander
sudo gnome-commander

You can right click files and choose copy, then paste the files somewhere else.

You can right click files and check md5 checksums to check that files are copied correctly.


Should the DCI/SMPTE 431 digital cinema standards be updated for RGB LASER projectors?

Should the DCI/SMPTE 431 digital cinema standards be updated for RGB LASER projectors?

Higher contrast ratio

The SMPTE RP 431-2:2011 digital cinema standard document describes the reference projector viewing environments used in DCI digital cinemas.
SMPTE 431 Review room 14 fL, 100:1 Intra frame contrast, 1500:1 Sequential contrast
SMPTE 431 Cinema Theatre 14 fL, 100:1 Intra frame contrast, 1200:1 Sequential contrast

Most cinemas will see an improvement of contrast ratio and light levels with an upgrade to RGB Laser projectors.

This improvement will be noticeable on the DCPs used today.

Rec 2020 color space

New digital cinema projectors uses red, green and blue lasers as their light sources. They can (almost) reach the REC 2020 color space.

The RGB laser projectors also have better contrast ratio and can reach higher light levels without ruining the black level.

The DCI-P3 color space and 1200:1 contrast ratio in SMPTE RP 431-2 are based on what you can achieve with a Xenon lamp projector.

REC2020 covers 99.9 percent of pointer’s gamut, while DCI-P3 cover 91.4 percent. Source

This means that REC 2020 can do all the primary saturated colors, while DCI-P3 is more limited. DCI-P3 lacks Cyan.

Cinemas are also limited to colors that can be achieved with 14 fL.

It would be difficult to use an automatic algorithm to map some of these colors to DCI-P3 without changing the artistic expression of the film.

The Alexa SXT camera that is used on many films is compatible with REC2020


Barco White paper “What are ‘better pixels’?”

This Barco white paper from 1. february 2016 looks at REC.2020 and higher contrast ratio in cinemas with RGB laser projectors. They also recommend keeping the optical light path clean.

In practice, it turns out that some effort in reducing the auditorium reflectivity and lens glare (by e.g. keeping the lens and port hole clean of dust) can yield the same or better results than moving to HDR projection.


Dolby Vision and Imax Digital

You can watch RGB laser projection with (almost) REC 2020 color space and higher contrast ratios in Dolby Vision and IMAX Laser cinemas.
These cinemas can reach higher light levels and use bright colors that are not possible in ordinary cinemas.
Read a review of both here. 


A LASER IMAX system demonstration used an intra frame contrast checkerboard test image to show the intra frame contrast of their dual LASER projectors. They said in the demonstration that they changed the furnishing and changed the screen to get better contrast ratio.

Consumer products with P3 color space

Televisions UHD Alliance Premium requirements:

Image Resolution: 3840×2160

Color Bit Depth: 10-bit signal

Color Palette (Wide Color Gamut)

Signal Input: BT.2020 color representation

Display Reproduction: More than 90% of P3 colors

High Dynamic Range


A combination of peak brightness and black level either:

More than 1000 nits peak brightness and less than 0.05 nits black level

More than 540 nits peak brightness and less than 0.0005 nits black level

Apple is moving prosumer displays to the DCI-P3 color space. The first product is the Ipad Pro.  Source wikipedia.


Dual inventory of DCPs?

I think you can have two kinds of DCPs until all cinemas get RGB Laser or similar projectors:

RP 431-2:2011 DCPs for Xenon/UHP and Phosphor Laser projectors


RP 431-2:RGBLASER DCPs for RGB Laser projectors.

Dual inventory of DCPs is not a big problem.

DCP delivery services that uses fast internet to distribute DCPs to cinemas send the 3D DCP to the 3D cinemas and the 2D DCP to the 2D cinemas.  In the future if a venue have a RGB laser projector, it would be easy to send them the RGB laser DCP instead of the xenon DCP.

RP 431-2:RGB LASER REC 2020 could possibly use:

-REC 2020 color space,
-higher luminance
-and higher contrast ratio
inside the 12 bit 2.6 gamma X`Y`Z` JPEG 2000 250 mbit encoding used in today’s DCPs.
Or use the SMPTE ST2084 EOTF standard to be able to use higher light levels.

Upgrading the light path
Changing screen and furnishing to get good intra frame contrast is essential to good projection.

I discussed this in this post:


If the intra frame contrast is bad you could try to:
– Clean the port glass and optics.
– Avoid spill light from projection booth.
– Use matte black seats and furnishing.
– Install an iris in the projector.
– Upgrade to a laser projector.

A laser projector will be better at reaching today´s 3D light levels with just one projector and better at reaching today’s standard contrast ratio. 6P Laser projectors can use 3D with matte white screens and one projector.

A new RGB Laser standard could keep today’s light levels and contrast ratios and just add REC2020 color space. Or the standard could go beyond today’s values. RGB Laser projectors could manage higher values. But in a dark viewing environment higher luminance values can seem very bright.

The higher contrast ratio you could get with a laser projector could be ruined by reflective furnishing in the auditorium and other factors like old silver screens.

There should be a certification that cinemas could get to show that they are RP 431-2:2011(Xenon) or (future) RP 431-2:RGBLASER certified and have the correct intra frame contrast ratio and light levels.

Or they could get a certification that say they reach the correct light levels in 2D and 3D. (The cinemas should be able to reach these levels also when the lamp/lasers gets older.)

This way the public would know that kind of cinemas they can choose between.

Some tips on downloading and uploading DCPs and large files

Here are some tips on downloading and uploading DCPs and other large files like prores quicktime files:


-I recommended using a fast wired internet connection. (20/20-50/50 mbit/s). (Use a good network cable/router)
-I recommend using a download manager like Free download manager  (Windows/mac) that support resume and multi-part downloading. Free Download will allocate disk space in the start of the transfer and then the download speed will increase.

-I recommended using a fast wired internet connection. (20/20-50/50 mbit/s). (Use a good network cable/router)
-I recommend a reboot of the computer or at least a restart of chrome before uploading large files (100 GB) in a web uploader.


I have used filemail to receive files on many film festivals I have worked on.

-On you can send 30 GB files for free. With a Filemail Pro or Business account you can send and receive 100-200 GB files.

-I have used the filemail html5 uploader on many 100 gb files. You can also use the html5 uploader to send folders. The Desktop filemail app also works well on 100 gb files and can be used to auto download all incoming files.

-With a Filemail business account you will have access to the files for longer and people can use a branded upload web page. You can also enable the md5 hash value.

Filemail md5 hash check

Filemail shows the md5 checksum on the download page if you enable it in the settings for the business download page.


This way you can check if the uploaded file is correct if the client sends you the original md5 checksum. You can ask for the md5 checksum as info on the upload page. This way you and the client can verify that the file is correct.

Generating a MD5 checksum
The client can find the MD5 checksum of a file with utilities like Hash Tab for windows and Hash Tab for mac

You also use the command md5 "file" in a terminal on a Mac to generate a md5 file hash value. The Terminal app is in Applications – Utilities. You can type md5 and push space, then drag the file from a finder window and push enter.

You can use the command certutil -hashfile "file" md5 on a Windows 7, 8, 10 computer in a command prompt (CMD)

You can use md5sum "file" in a terminal on a linux computer.

-If the sender sends a 7z archive, the receiver will know when unpacking if the file fails the 7z checksum test.
-When sending prores quicktime files it is important that the sender include a md5 checksum to enable verification of the file.
-You can combine these two Verifications methods.
-DCPs have the checksums in the XML files that can be verified with easydcp player or using this command
openssl sha1 -binary "FILE_NAME" | openssl base64 

7z archives
-If you want to send a uncompressed quicktime file or wav files I suggest using 7z with normal compression. A uncompressed quicktime file will be reduced to half the size after 7z compression.
-I recommend Keka on mac or 7zip on Windows.
-7z archives can be protected with encryption and a password and have a built in hash check.
-In Keka, choose 7z and store for no compression or normal for normal compression, then drag the folder to the Keka window.
-You can also split the archive in parts and upload the file in parts. Example 20 GB. If one of the parts is corrupted you only need to upload that part again.

Use a PAR2 recovery file as backup
-You can use a PAR 2 file as an additional backup solution if there is no time to upload/download the corrupt files again . I have tried both MultiPar and MacPAR Deluxe to generate PAR 2 1 percent redundancy files. PAR 2 files with 1 percent redundancy are 1 percent of the size of original file. If the downloaded file is 0,5 percent corrupted, you can use the 1 percent PAR 2 recovery file to recover the file instead of downloading again. I have tried this and it works.

Amazon S3

Amazon S3 can be used to deliver and receive big files on the internet.
-You can use the s3 web uploader or use CrossFtp and similar programs to upload to S3. Crossftp Pro can use multipart and integrity checks when uploading so you will know the uploaded file is working.
-After uploading you can make the link accessible (public) and give the clients the S3 download link.
-S3 storage is very reliable and scalable. You pay for each download.
-If you want a client to upload a file to a s3 upload bucket you can make an upload user in with a policy that enables the user to upload to that upload bucket.

Like this policy:

"Version": "2012-10-17",
"Statement": [
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"Resource": "arn:aws:s3:::examplebucket"
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"Resource": "arn:aws:s3:::examplebucket/*"
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
] }

– then give the client the access key and secret key for the upload user. (with this policy the user will see all buckets, but can only upload to the examplebucket bucket.


Aspera Cloud
I have used Aspera Cloud on many DCP transfers. It is used by many film festivals and post-production services. It is very fast.

Google Drive
i have downloaded many DCP with free download manager from Google Drive. It is fast.

i have downloaded many DCP with free download manager from Dropbox. I had no problems.

DCP and quicktime specific advice

-When downloading a DCP folder in Filezilla from a FTP server, I downloaded the XML files and the rest of the files as binary to get them to pass the file hash check in Easydcp Player.

-Ask people who submit DCPs to use the archive format 7z instead of zip. This way you can avoid the (large) Mac OS archive utility zip files that can only be opened by the Mac OS archive zip utility. Both Keka and 7-Zip can make 7z archives.

-Sometimes I get a error message when opening a quicktime file on windows pc that was made on a mac. If I rename the file it works.

-I recommend checking DCPs in Easydcp player. The trial version will let you know if the DCP fails some checks. You can also run a file hash check.

You should also make a DCP quality checklist that may include:
-Is the DCP named correctly?
Is it in the correct scope or flat format? The DCP should have a correct digital naming convention name. Example: The DCP is called Dcpname_SHR_S but is actually Dcpname_SHR_F because the subtitles are burned in too low and will be cropped at a scope preset in your cinema.
-Is the DCP in the correct language/subtitle language?
-Will the DCP play at your venue. Example: You may have a server with old firmware that can play 25 SMPTE DCPs with burned in subtitles, but not SMPTE 2010 subtitles. (all film festivals have updated firmware).

-If you have downloaded a DCP folder archive like DCP.7z on a mac and want to ingest in on a digital cinema media block/server/player you can extract it to a DX115 hard drive or similar.

Other tips

-If you get an error message extracting a zip file in Keka that says error code 2 using p7zip, you probably need to extract the zip file with mac os archive utility.

Playing Blu-Rays in a Cinema

Blu-Rays and H264 files are sometimes used instead of DCPs when screening special content at cinemas.

Modern Blu-ray players send the video and sound signal through the HDMI connection. When choosing which Blu-Ray player to use in a cinema/movie theatre you should first check if you need analog 5.1 sound output.

Many Blu-Rays only have DTS MASTER HD 7.1/5.1 sound. That means no Dolby digital 5.1 bit-stream that can be used on the SPDIF input on cinema audio processors like the CP-650.

Players with analog 5.1 sound can connect to the analog 5.1 input on most cinema sound processors.

To connect the 5.1 phono output to a Dolby CP-650 and other cinema equipment you need an unbalanced 5.1 Phono to DB25 cable.
Like this one:

Some newer cinema equipment may accept the DTS HD Master bitstream from HDMI or 5.1 uncompressed sound from HDMI.

Other features that is useful in a cinema:
-Common height (CIH) settings
-Lipsync adjust.
-Remove On Screen Display
-Adjust Brightness/contrast
-Advanced film/video/cadence detection for DVD.
-H264 Media file playback
-Adjust speaker trim level
-LPCM output
-RS232 control

The OPPO UDP-203 4K Ultra HD Blu-ray Disc Player has these features according to the manual.

More info on the features that are useful in cinemas:


Common height (CIH) settings
Useful if you want to adjust the placement of subtitles on scope films in a common height cinema.
A common height cinema uses a 2.39:1 screen.
If the subtitles are “burned in” below the picture you can´t screen the movie in scope and need to either make a custom preset on the projector or screen it in Flat.

Lipsync adjust.
Adjusting the sync with a sync clip played from the blu-ray player is helpful if the sound is out of sync.

-Remove On Screen Display
If you don’t want to show the play and pause icons it is important to turn off OSD.

-Adjust Brightness/contrast
Badly mastered Blu-rays may have elevated blacks or bad white levels, this is corrected with the Brightness (black level) and Contrast (white level) settings.

-Source Direct mode
Turn of video processing. Sends a clean signal.

-Advanced film/video/cadence detection for DVD.
Can auto detect if the DVD source is progressive (film) or interlaced (video). Can fix bad cadence.

-Media file playback
You can play MP4 and other H264 formats from a USB flash drive.

Resolve 11 adds 12 bit monitoring support with the BlackMagic Decklink 4K Extreme and the UltraStudio 4K

12 bit monitoring is great when grading LOG for digital cinema (DCP) on a 12 bit digital cinema projector.

To have the correct black level and correct contrast ratio you will need the correct review room contrast ratio in the cinema: 1500:1, 100:1 intra frame. Movie theaters have 1200:1.

You will also need the correct white light level (14 fL) in the cinema to get the contrast correct.

You will also need a dark room.

See this post for more info on good projection.

Resolve 11 beta 2/Desktop Video 10.1.3 adds dual link 3GB HD-SDI DCI 12 bit monitoring with the Decklink 4K Extreme and the BlackMagic Design UltraStudio 4K

12-bit 4:4:4 video monitoring support with Decklink 4K Extreme and Ultrastudio 4K (up to Stereo 2K DCI)

-What’s new in Resolve 11 Beta 2
BlackMagic resolve website

How to make 3D LUTs in Nuke (R´B´G´to X´Y´Z´)

In this post there are more 3D LUTS

Updated in 2016 with some clarifications

The built in SRGB TO XYZ conversion used in some DCP conversion software do not have the correct color science.

See this post for more info.

The included XYZ 3D LUTs in this post are proof that you can generate 3D LUTs using the color science math from the REC709 example on page 42 in the “SMPTE Digital Cinema White Gamut Practices Study Group Report” by Rod Bogart and Rick Sayre.

The R´G´B´ values 4095, 4095, 4095 ends up as 3883 3960 4092 in X´Y´Z´



The “SMPTE Digital Cinema White Gamut Practices Study Group Report” (Linkfrom 2009 concluded that the color science used to make some commercial DCPs around 2008 was not correct (out of gamut).

The color science is explained more in SMPTE EG 432-1:2010

They explain how to use D55, D60, D61 and D65 as mastering whites and how these white points fit inside X´Y´Z´. They explain that DCI White is not necessary the mastering white.

With SMPTE 431.2:2011 they made a new projector configuration file (PCF) standard that is called Virtual White.

The DCI specifications  says that the projectors in cinemas should follow SMPTE 431.2:2011.


Update 2016

The color science math do get to X´Y´Z´ in this post produces the correct values for white in X´Y´Z.

In NUKE you can make 3D LUTs for Resolve and other software that have 3×3 SMPTE RP-177 color matrix conversions, gamma conversions and multiplications baked in.

The generateLUT node is now disabled in NUKE non-commercial (formerly PKL).


Blackmagic Davinci Resolve

Example 1:
Making a REC709/SRGB R´G´B´to DCDM X´Y´Z´ 3D LUT for Resolve:

How to make a R`G`B` to X´Y´Z´ 3D LUT in NUKE:


-In the CMSTestPattern node I used a Cube size of 65, alternatives are 33 or 17.

-Linearize the R´G´B´ to RGB with a gamma function in a Gamma node: Example: 2.4 simplified gamma function= 0.416667
Alternative: SRGB 2.2 simplified gamma function=0.45

-Apply the rec709/SRGB RGB XYZ to RP-177 3×3 NPM color matrix in a ColorMatrix node.

The NPM from matlab after doing the RP-177 math is:
0.412390799265959 0.357584339383878 0.180480788401834
0.212639005871510   0.715168678767756   0.072192315360734
0.019330818715592   0.119194779794626  0.950532152249661

The middle row sums to 1.

The NPM after copying and pasting into the Nuke colormatrix node:

0.4123908  0.35758434   0.18048079
0.21263901 0.71516867   0.07219232
0.01933082 0.11919478   0.95053215

This is very similar to the example.

The middle row should sum to 1 according to RP-177 so I changed 0.71516868 to 0.71516867.

-Apply the normalizing constant multiplication in a multiply node. Luminance (48) divided by the normalizing constant (52.37) = 0.91655527
After pasting it into nuke it is shorten to:

-Apply the DCP 2.6 gamma in a Gamma node to get X´Y´Z´ values.

-In the GenerateLut node I put: .3dl, 12 bit in/out, 3dl file format
autodesk flame/smoke.
Alternative: 16 bit.

The values for 4095,4095,4095 in the resulting 3D LUT (12 bit 3dl integer file) is:
3883 3960 4092


This is the correct result for D65 in X´Y´Z´
and it is the same result as in the example conversion.


With this 3D LUT you are inside the Virtual white X´Y´Z´ gamut (DCI/SMPTE 431.2:2011 compliant).

To convert this 3D LUT to a floating point .Cube 3d LUT that is compatible with Photoshop, Resolve and After Effects I used opencolorio.
In terminal on a mac I use this command to convert the 3D LUT:

ociobakelut -lut srgbtoxyz.3dl -format iridas_itx -cubesize 65 srgbtoxyz.cube

to install opencolorio/ociobakelut I used these commands on a mac:

/usr/bin/ruby -e “$(curl -fsSL”

brew doctor

brew install opencolorio

Download a 7z archive with the REC709/SRGB 3D LUTS files
It includes  2.2, 2.4, 2.6 CUBE and 3DL 3D LUTS (The cube 3d luts are in float)

Usage in Resolve (updated for Resolve 11)

The CUBE LUT can be placed in a folder you call Nuke or DCP inside Resolve´s LUT folder:
On a Mac: /Library/Application Support/Blackmagic Design/Davinci Resolve/LUT
On a PC: C:\ProgramData\Blackmagic Design\DaVinci Resolve\Support\LUT\

In Resolve you can apply it to the timeline from:
Project settings – Timeline Lookup tables – 3D Output Lookup table
or you can use a corrector node

You can render DCPs directly from Resolve with the Resolve Easydcp plugin. If you choose DCI X´Y´Z´ in the timeline color space no color transform will be applied and you can use the 3D luts to DCI X´Y´Z´ from this post.
See this post for more info.

Or export to another format and use it in Fraunhofer Easydcp .

Usage in After Effects
The resulting 3D LUT converted to .CUBE can be used in a non-linear 32 bit Adobe After Effects CC project
with the apply color LUT effect
when exporting 16 BIT TIFF or similar
or DCI jpeg2000 sequences with the Fnord DCI JPEG2000 encoder.

Usage in Easydcp
The 3DL 3D LUT can be applied in Easydcp.

In Easydcp Creator 2.2 you have the option to make custom color transformations. You can modify the 3×3 matrix, gamma, normalization constant/multiplication to suit your workflow. This is better than using 3D LUTs that has these color transformations baked in.
Read more about the custom color transformations in this post.

Example 2.

P3D65 to X´Y´Z´
The same example as I used in this post.
This 3D LUT can be used with Arri Alexa material that has the
C-log to P3 D65 3D LUT applied.
Link:Arri lut generator


Changed the color matrix node to:

The DCI-P3 D65 NPM from matlab after doing the RP-177 math:

0.486570948648216 0.265667693169093 0.198217285234362
0.228974564069749 0.691738521836506  0.0792869140937450
0                                               0.045113381858903   1.043944368900976

The NPM after copying and pasting into the Nuke colormatrix node:

0.48657095  0.26566769  0.19821729
0.22897457  0.69173852    0.07928691
0                             0.04511338    1.04394437

The middle row sums to 1
0.22897457+0.69173852+0.07928691 = 1

It is similar to the P3 D65 NPM from SMPTE EG 432-1-10


Changed the gamma function node to 1/2,6=0.384615385 for P3
It becomes 0.384615 after pasting into Nuke.

Example P3 D65 to X´Y´Z´3D LUTS:

Download 7z archive with the P3 D65 3D LUTS files
It includes CUBE AND 3DL 3D LUTS (The cube 3DLUTS are in float):