Update and Notice
On 2026.09.22, Vivo officially published the technical specifications of Vivo Log and Gamut, along with a new decoding LUT and a public DCTL, which can be downloaded from this link.
The parts below about Vivo Log being closed are now outdated and are kept only for reference. For this reason the title has been updated to avoid ambiguity.
The official specification fully discloses the Vivo Log formula and the Vivo Wide Gamut colour coordinates, and the values in this article match them within the stated precision. The unencrypted DCTL released this time is different from the earlier DCTLe, so the two cannot be compared, and all values should follow the official disclosure.
The content below is unchanged
Half Hidden Behind the Pipa
Starting with the X200 Ultra, Vivo has been promoting its video capabilities, especially in the professional space. For example, it can shoot Log, it can enter the ACES pipeline, and so on. But compared with other phones that provide the usual trio of a white paper, a LUT and a DCTL IDT, Vivo’s Log material is conspicuously thin.
https://zhan.vivo.com.cn/experience/wk240909115effe4
This strange domain is the download address for the Vivo Log decoding LUT. The page title says “Download LUTs”, but clicking through shows a big picture describing what ACES is, and at the bottom there is a “Download decoding LUTs” button. Besides the LUT, an encrypted dctle file is also hidden in the archive, used to convert Vivo Log footage into the ACES AP0 space.
Even with such a roundabout process, some people online have managed to get the Vivo Log ACES workflow working, for example this article. That is real exploratory spirit.
At the recent X500 series imaging launch event, Vivo brought up Log video again and mentioned a newly developed Vivo Wide Gamut and a new Log curve. So are the Log on the X200 and X300 going to be abandoned in this half-hidden state?

Image from IT Home. The chart is titled CIE 1931 UCS and compares gamut area against BT.709, which is a bit too unprofessional.
The Clouds Part and the Moon Appears
In the spirit of completing a jigsaw and collecting all the cards, I really wanted to study every Log out there, or at least see what they look like. But Vivo never opened theirs up, and my earlier research on the dctle did not go smoothly. Was there really no way?
Then today DaVinci released version 21.1, and it actually added support for Vivo Log, Vivo Gamut and other spaces.
As professional software, all you need to do is set gamut compression and tone mapping to none on a CST node, and keep the other variables controlled:
- Keep the colour space unchanged, and set the input and output transfer functions to Vivo Log and linear.
- Keep the transfer function linear, and set the input and output colour spaces to Vivo Wide Gamut and XYZ.
Then export a still frame as RGB Float EXR, and you keep the floating point result including negative numbers.
- Whether the change in each pixel value can be described by the same non-linear function.
- Whether the change in each pixel value can be described by a 3x3 matrix multiplication.
If the fitting difference is smaller than the quantisation error of floating point, you can obtain the Vivo Log curve and the Vivo Wide Gamut to XYZ matrix separately, and from that the colour coordinates.
The Vivo Log Curve

The shape of the Vivo Log curve is very similar to DJI’s D-Log, and also fairly close to Arri’s LogC3.
It can encode a maximum of about 3783% reflectance, 18% grey maps to a code value of 39.1%, and there are about 7.7 stops above 18% grey.
For layout reasons only three significant figures are kept, so this is not the exact formula.
Vivo Wide Gamut

The primary coordinates of Vivo Wide Gamut are as follows, derived from the RGB to XYZ matrix, with four significant figures kept.
- R (0.7063, 0.2957)
- G (0.1913, 0.9623)
- B (0.1115, -0.0492)
- W (0.3127, 0.3290)
The white point is D65. Compared with other phones that use BT.2020 as the Log gamut space, Vivo has designed this wide gamut with more of its own ideas, moving green and blue appropriately outside the horseshoe in exchange for more real world coverage.
You might think from the figure that green is extremely far out, but that is an illusion caused by the non-uniformity of CIE 1931 xy. Convert it to CIE 1976 UCS, for example.

Now blue looks extremely far out instead. This is because the mapping transform from 1931 to 1976 does not account for this kind of negative valued imaginary primary. It also shows that for a space with imaginary primaries, comparing areas is a meaningless exercise.
Compared with the figure from the launch event earlier, you will find that this Vivo Wide Gamut looks like exactly the one from the event, so it is not a brand new design. The event figure did not include BT.2020, perhaps because this space cannot fully cover BT.2020, so only the comparison with BT.709 and P3 was shown.
Gold Appears Only After the Sand Is Washed Away
Actually, before DaVinci added support, I tried a similar process using the encrypted dctle provided by Vivo as a black box. Knowing that the input is Vivo Gamut and Vivo Log and the output is AP0 and linear, I tried to fit those two parts directly.
Very quickly I found that this dctle does not even do chromatic adaptation, and equal RGB input does not give equal RGB output, so it is not a proper ACES IDT. After that I did not want to spend more effort on this black box.
Although the colour space was unreliable, the Log curve could still be fitted roughly. Fitting purely from a test chart cannot give the exact Log formula, so I guessed that it uses the popular linear segment plus Log segment structure, and fitted that structure by adjusting the base and optimising.
After DaVinci officially added support, it happened to coincide with the DeepSeek V4.1 Flash update, so I had it do some static analysis on DaVinci itself. After consuming 23M tokens I got some definite numbers, and putting them into the structure analysed earlier, they matched the data obtained from CST. I also found that the actual Vivo Log has an overall 1.158x scaling relationship compared with the version in the dctle, and I do not know why.
What Comes from Paper Is Always Shallow
The analysis of the dctle strengthened one of my views: a Log with undisclosed parameters is worth about as much as air.
If DaVinci had never supported Vivo Log, users would only have a basic LUT that converts to 709 and a buggy dctle black box, with no way to correctly decode the footage back to scene-referred linear light. No matter what you do in post, the colour of the Log video you shot is wrong or has no grading room left.
Developers and creators also cannot build better workflows or LUTs for it. Someone on YouTube even suggested applying a LogC3 LUT to Vivo Log footage, grafting one thing onto another. Fortunately Vivo Log and LogC3 are fairly close, which is the only reason this does not look completely ridiculous.
Log is developed for professional workers to use, and it should not become a boasting point for a product manager at a launch event. The half-hidden approach with encryption only looks comical.

Once I have studied DCTL syntax a bit more, I will make a correct Vivo Log ACES IDT as practice.