PrimeCam

color management

Rec. 2020 HLG vs Rec. 709: Getting Android Smartphone Video Color Space Management Right

Learn how to keep your Android footage's colour from being mangled between capture and grade — what Rec. 2020 HLG actually encodes, why Rec. 709 tags break it, and how to verify the pipeline end to end.

Mastering Android smartphone video color space management requires aligning three distinct parameters: your sensor's capture space, the container's structural NCLX metadata tags, and your non-linear editor's (NLE) timeline working space. When an Android device records high dynamic range video, a mismatch between what the camera encodes and what the video container reports will turn your footage into a washed-out, clipped, or oversaturated mess before you even touch a grading wheel.

Every mobile video file relies on a precise handoff from hardware encoding to software interpretation. Getting this pipeline right means moving past vague marketing terms like "10-bit HDR" and mastering the real engineering differences in the Rec 2020 HLG vs Rec 709 pipeline. When your color management mobile video workflow is configured properly, 10-bit Hybrid Log-Gamma footage provides deep highlight retention, natural skin tones, and expansive post-production latitude without requiring destructive workarounds.

Why Colour Space Is the First Decision You Make, Not the Last

The most common failure mode in modern mobile filmmaking follows a familiar pattern: a clip looks rich, balanced, and dynamic on your phone's OLED display, but importing that file into your desktop NLE yields an image that is chalky, blindingly overexposed, or oddly tinted. This does not happen because the sensor failed. It happens because the video player or NLE interprets the pixel data through the wrong mathematical model.

Filmmakers frequently treat "color space" as an indivisible label, but successful color management requires separating three interdependent variables:

  • Color Primaries (Gamut): The chromaticity coordinates of red, green, and blue light emitters. Rec. 709 defines a relatively narrow triangle within the human visual spectrum, whereas Rec. 2020 expands those coordinates significantly to reproduce saturated cyans, deep emeralds, and vivid reds that Rec. 709 cannot describe.
  • Transfer Function (Opto-Electronic Transfer Function or OETF): The mathematical curve converting scene light into digital electrical signals. Standard Dynamic Range (SDR) relies on a traditional gamma curve (such as Rec. 709 or sRGB display gamma around 2.4), whereas HDR uses curves like Hybrid Log-Gamma (HLG) or Perceptual Quantizer (PQ) to map extreme luminance ranges.
  • Matrix Coefficients and Bit Depth: The mathematical matrix converting RGB values into YCbCr chroma and luma channels (such as BT.709 or BT.2020 Non-Constant Luminance), paired with quantization depth (8-bit providing 256 code values per channel, versus 10-bit providing 1,024).

A video file can be technically accurate in one parameter and broken in another. An Android phone might encode luminance using an HLG transfer curve while accidentally tagging the color primaries as Rec. 709 in the file header. When your editing suite reads that tag, it maps wide-gamut scene values into narrow standard-gamut space, distorting skin tones and causing immediate gamut clipping.

The practical payoff of getting this right is immense. A correctly tagged 10-bit HLG recording retains recoverable highlight headroom in specular reflections, clouds, and bright practical lamps while maintaining natural roll-off. A mistagged file forces editors into frantic remedial grading with corrective Curves and color warpers, trying to rebuild highlight roll-off that the software discarded upon import. Proper management guarantees that the clean signal captured by your sensor reaches your grading monitor untouched.

Rec. 2020 HLG vs Rec. 709: What Each One Actually Encodes

To evaluate Rec 2020 HLG vs Rec 709, cinematographers must understand the international standards governing each format. Standard dynamic range video is governed by the International Telecommunication Union's ITU-R BT.709 specification. Standardized for high-definition television, Rec. 709 pairs a narrow color gamut with an SDR transfer curve roughly targeting a 2.4 display gamma. It caps scene reflectance values at a nominal diffuse white point. Any luminance values exceeding that threshold are hard-clipped to white, leaving no headroom for bright exteriors or detailed practical lighting.

Modern HDR standards are defined under the ITU-R BT.2100 specification, which outlines both HLG and PQ curves alongside wide Rec. 2020 color primaries. Developed collaboratively by the BBC and NHK, Hybrid Log-Gamma uses an innovative dual-nature transfer curve. The lower half of the curve—representing shadows and midtones—closely mirrors traditional SDR gamma curves. As exposure moves into highlights above 50% reflectance, the curve switches to an exponential logarithmic function. This hybrid approach allows HLG signals to retain compatibility with standard dynamic range monitors while preserving up to several additional stops of highlight detail on HDR displays.

Unlike raw camera log curves (such as Sony S-Log3 or Canon Log), HLG is fundamentally a display-referred curve rather than a scene-referred curve. It carries an intended display transform inside its specification. A native HLG file fed directly to an HLG-compliant television or display produces a viewable, balanced contrast profile without an intermediate technical transform. However, unlocking its full creative potential on a professional timeline requires an intentional color-managed pipeline.

Bit depth is inseparable from color space selection. Attempting to encode Rec. 2020 primaries across an 8-bit pipeline produces heavy banding across skies, smooth backdrops, and skin gradients. An 8-bit file allocates only 256 discrete levels per channel to cover a wide gamut and an expanded luminance curve. Implementing a true 10-bit HEVC Main 10 recording workflow allocates 1,024 levels per channel. This 4x increase in quantization values prevents contouring and provides the structural stability required for heavy color grading.

Parameter Standard Rec. 709 Rec. 2020 HLG (BT.2100)
Color Gamut Coverage ~35% of CIE 1931 chromaticity space ~75% of CIE 1931 chromaticity space
Transfer Characteristic BT.709 / BT.1886 gamma (~2.4) ARIB STD-B67 (Hybrid Log-Gamma)
Standard Bit Depth 8-bit (256 code values/ch) 10-bit (1,024 code values/ch)
Highlight Headroom Hard-clipped above diffuse white Logarithmic compression above 50% signal
Display Nature SDR Display-referred HDR Display-referred (Hybrid)

Labels like "HDR" or "Pro Video" on an Android device spec sheet do not guarantee adherence to BT.2100. Some stock camera apps apply aggressive tone mapping, proprietary color matrices, or partial 8-bit conversions that undermine standardization. Filmmakers must independently verify that their files accurately adhere to the spec.

How to Verify the Colour Tags on an Android Clip Before You Edit

Avoid relying on a phone's internal media gallery or default desktop media player to diagnose color accuracy. Media players routinely apply hidden operating-system color transformations. To inspect your clips, transfer the original media directly to a workstation via cable or drive and run static analysis using command-line FFmpeg tools or MediaInfo.

Using the open-source multimedia analysis tool MediaInfo or ffprobe, inspect the video stream metadata. Run the following terminal command on your clip:

ffprobe -v error -select_streams v:0 -show_entries stream=color_space,color_primaries,color_transfer,pix_fmt your_clip.mov

For a fully standard Rec. 2020 HLG file, the output must strictly reflect these four parameters:

  • color_primaries=bt2020 (Specifying the wide ITU-R BT.2020 primaries)
  • color_transfer=arib-std-b67 (The engineering designation for HLG, defined by ARIB and BT.2100)
  • color_space=bt2020nc (BT.2020 Non-Constant Luminance YCbCr matrix)
  • pix_fmt=yuv420p10le (10-bit planar YUV 4:2:0 sample structure)

When these metadata tags are missing or incorrectly configured, downstream NLEs misinterpret the footage. If an Android encoder outputs an HLG transfer curve but writes color_transfer=bt709, an NLE assumes the file is standard dynamic range. The editor attempts to show the footage using standard gamma, creating an uncomfortably low-contrast, milky, and desaturated image. Conversely, if wide Rec. 2020 primaries are missing from the header, the editing suite defaults to Rec. 709, immediately clipping vibrant colors and rendering reds and cyans unnatural.

Container architecture also controls whether desktop editors accept the file. In macOS environments, editing software relies on QuickTime system frameworks to read video streams. If an Android camera app writes HEVC video into an MP4 container using the hev1 sample entry multiplexing tag, QuickTime and Final Cut Pro may refuse to parse the wide-gamut metadata tags natively or require intermediate transcoding. Professional workflows demand an hvc1 sample entry in a standard QuickTime .mov container to ensure direct, hardware-accelerated playback without proxy generation.

A fast diagnostic check is to compare a still frame opened in an OS-level preview (such as macOS Finder preview or QuickTime Player) against the exact same frame inside your NLE's calibrated timeline viewer. If you notice dramatic shifts in brightness, contrast, or skin tones between the two windows, the pixel values are not changing—the software environments are disagreeing on the metadata tag interpretation. Consulting a dedicated JSON metadata sidecar per clip provides an external source of truth to confirm what exposure and color parameters the camera hardware intended.

Setting Up a Colour-Managed Edit for HLG Footage

Once your footage is verified, configure your editing suite with deliberate color transforms. Slapping a generic conversion LUT onto an unmanaged timeline is a major source of poor image quality. LUTs are static interpolation cubes that clip extreme values and introduce harsh transitions when fed unexpected input signals.

Apple Final Cut Pro Setup

To configure Final Cut Pro for native mobile HLG media:

  1. Highlight your Library in the sidebar, open the Inspector, and select Modify Settings. Change the Color Processing mode from Standard to Wide Gamut HDR.
  2. Create a new Project. If delivering in HDR, set the color space to Wide Gamut HDR - Rec. 2020 HLG. If delivering for standard social and broadcast distribution, set the project color space to Standard - Rec. 709.
  3. When working in a Rec. 709 timeline, select your imported HLG clip in the browser, navigate to the Video Inspector, and check the Color Space Override metadata setting. Ensure it reads Rec. 2020 HLG.
  4. Apply the native HDR Tools effect to the clip, setting the Mode to HLG to Rec. 709. This enables smooth tone-mapping algorithms that scale highlight roll-off cleanly without clipping. For a step-by-step breakdown of library conformations, consult this guide on how to edit 10-bit HLG video in Final Cut Pro.

DaVinci Resolve Setup

In DaVinci Resolve, navigate to Project Settings > Color Management. Rather than relying on DaVinci YRGB unmanaged workflows, use DaVinci YRGB Color Managed or employ Color Space Transform (CST) nodes inside your node graph:

  • Input Color Space: Rec.2020
  • Input Gamma: Rec.2100 HLG
  • Timeline Working Space: DaVinci Wide Gamut / Intermediate (providing high internal precision for grading adjustments)
  • Output Color Space: Rec.709 / Gamma 2.4 (for standard SDR web delivery) or Rec.2020 / Rec.2100 HLG (for HDR delivery)

Decide early between an SDR or HDR deliverable. Avoid combining unmanaged Rec. 709 and Rec. 2020 HLG clips on the same timeline without explicit Color Space Transforms; doing so causes mismatched luminance floors and clipping. Beware of the destructive double-transform trap: if your NLE automatically detects an HLG file and converts it to Rec. 709 via timeline-level color management, applying an additional "HLG to 709" technical LUT on top double-compresses the luma, resulting in crushed shadows, muddy midtones, and blown skin highlights.

Because HLG is a display-referred curve, your native image already contains a balanced contrast foundation. Focus your grade on balancing exposure offsets, refining saturation vectors, and shaping contrast, rather than trying to invent a base curve from scratch.

Where Android Pipelines Break Colour (and How to Catch It Early)

The Android operating system powers thousands of distinct device configurations, leading to varied implementations across camera hardware and software APIs. Maintaining color integrity requires identifying the common failure points along the pipeline:

  1. OEM App Metadata Omissions: Many native device camera apps capture 10-bit sensor data, but pack it into generic containers that omit the arib-std-b67 transfer characteristic tag entirely. When imported, editors default to Rec. 709, forcing creators to manually override clip properties on every take.
  2. Silent On-the-Fly Downsampling: Several third-party camera apps market 10-bit recording, yet secretly pass the sensor stream through 8-bit YUV processing buffers to preserve software framerates. The recorded container claims to be HLG, but the underlying video data exhibits heavy 8-bit quantization banding across skies and flat backdrops.
  3. Social and Messaging App Compression: Moving camera files via consumer file-sharing or messaging platforms triggers automatic server-side transcoding. These compression pipelines strip color container tags, crush dynamic range, downsample color subsampling to 8-bit 4:2:0, and re-export files as standard sRGB/709. Filmmakers should transfer production camera files via physical USB-C storage, SMB shares, or direct local network transfers.
  4. Uncalibrated Mobile Display Previews: Mobile editing apps frequently display wide-gamut HLG footage through standard SDR system surfaces without running an internal color transform. Editors who make visual adjustments on-device end up pushing exposure and saturation to compensate for a faulty screen preview, creating distorted grades when viewed on calibrated monitors.

To safeguard your production, establish an empirical calibration routine. Before every major project or following any mobile OS update, record a 10-second test shot featuring an indoor subject set against a bright, overexposed window and a smooth wall gradient. Pull that file onto your edit system, inspect its container tags using ffprobe, and verify its behavior in your NLE scopes before shooting primary footage.

Choosing a Capture App That Preserves the Colour Tag

High-end mobile filmmaking requires an acquisition tool engineered to protect color metadata from the moment photons hit the sensor. A reliable manual camera app must satisfy four fundamental technical criteria: direct access to the 10-bit Camera2 APIs, strict enforcement of ITU-R BT.2100 tagging conventions, output in an NLE-friendly container format, and complete capture transparency.

PrimeCam writes HEVC Main 10 in a .mov file with the hvc1 sample entry and a full Rec. 2020 HLG colour tag, which Final Cut Pro reads natively. This container structure bypasses the indexing errors, gamma shifts, and transcoding delays common to mobile MP4 wrappers.

Regarding gamma profiling, PrimeCam records HLG, not LOG. HLG is a display-referred curve that carries its own grade; there is no LOG profile. By anchoring the image pipeline directly to the BT.2100 HLG specification, the app maximizes hardware acceleration while ensuring highlight information is preserved reliably without proprietary reverse-engineering.

Codec selection directly affects editing performance and storage bandwidth. PrimeCam does not record ProRes. It writes HEVC Main 10, which Final Cut Pro opens natively without transcoding. This delivers the visual stability of 10-bit 4:2:0 capture while maintaining manageable file sizes suitable for long takes and streamlined file transfers.

Verification remains central to professional workflows. With PrimeCam, every take generates a per-clip JSON metadata sidecar containing exposure parameters, white balance values, and exact frame rate data. PrimeCam targets 24 fps, and says so rather than assuming it. A take can come in marginally under nominal — auto exposure opening the shutter to the whole frame period leaves the sensor no time to read one out — so the app reports the rate it actually achieved in three places: the strip switches to the measured rate in warning colour while the take is rolling, the take card reads "23.92 fps measured, not 24.000", and the JSON sidecar carries measuredFps beside the requested fps. The measuredFps entry is null when the take held its rate close to nominal, and a number when it did not, so an editor conforming a timeline can tell the two cases apart.

Security and data isolation are equally vital on set. PrimeCam does not request Android INTERNET permission. Recording and subject detection run locally, with no PrimeCam account, analytics SDK or cloud sync. Billing-enabled test builds communicate with Google Play for product details, purchases and restoration; Google Play uses its own network connection. No footage is sent through billing. The app provides a dedicated offline filming environment where client media stays strictly on the camera hardware.

Common Colour-Space Mistakes and What They Cost You

Even seasoned post-production artists can encounter issues when dealing with mobile wide-gamut media. Avoiding these common traps will save you hours of troubleshooting:

1. Applying Creative Grades Prior to Input Normalization

Adjusting contrast, color temperature, or creative color palettes before defining your clip's input color space inside your grading suite degrades image quality. The grading tools will operate under the assumption that the pixel data sits inside a standard Rec. 709 gamma space. Mathematical offsets will warp luminance values, compressing skin tones into unflattering hues and introducing digital noise.

2. Direct Exporting Without Output Tone-Mapping

Exporting an HLG timeline directly into an SDR master file without tone mapping creates blown-out highlights and blown skin tones on client screens. Because standard Rec. 709 monitors cannot decode values past diffuse white, highlight information mapped above 100 nits simply clips. Colorists should employ an algorithmic tone-mapping operator or dedicated CST node to roll off dynamic highlights into standard SDR limits.

3. Confusing Display Brightness with Mathematical Exposure

Modern mobile displays can reach peak brightness levels exceeding 1,500 to 2,000 nits under direct sunlight. This peak brightness can trick you into thinking your exposure is balanced when the underlying file is actually underexposed. Avoid evaluating exposure using the phone display alone. Use real-time monitoring tools like waveform monitors and calibrated false colour tools to evaluate middle grey and highlight clipping based on actual sensor data.

4. Stripping Tags During Intermediate Conversions

Transcoding camera originals using legacy desktop utility software often strips NCLX metadata tags if the transcoder is unconfigured for wide-gamut operations. An intermediate ProRes or DNxHR file missing its BT.2020 and HLG tags forces the finishing editor to manually guess the original profile, introducing color shifts into your final timeline.

A Repeatable Checklist for Android Smartphone Video Color Space Management

To eliminate color shifts across your production pipeline, follow this standard operating procedure on every shoot:

  1. Pre-Production Tag Verification:
    • Set your capture app to record 10-bit HEVC Main 10 HLG.
    • Capture a 10-second reference clip containing a step gradient and bright practical highlights.
    • Analyze the file with ffprobe to verify that color_primaries=bt2020 and color_transfer=arib-std-b67 are explicitly embedded.
  2. On-Set Exposure and Monitoring:
    • Lock display brightness to a static level or verify values via calibrated scopes.
    • Use false colour to place Caucasian skin tones between 45–55 IRE and diffuse white references near 75 IRE on the HLG curve.
    • Log your chosen transfer curve and target frame rates in your shoot documentation.
  3. Import and NLE Conformation:
    • Import camera masters directly via physical storage or verified local network transfers to prevent metadata stripping.
    • Explicitly set your NLE's input color space to Rec. 2020 HLG (ARIB STD-B67). Avoid relying on automatic project guessing.
    • Verify that the NLE timeline viewer visually matches the source file scopes without clipping.
  4. Grading and Final Delivery:
    • Execute creative grades inside a wide-gamut intermediate working space (such as DaVinci Wide Gamut or ACEScc).
    • Set your output transformation intentionally: map to Rec. 709 with highlight tone mapping for standard web platforms, or retain Rec. 2020 HLG for HDR master deliverables.
    • Inspect your exported file using ffprobe to ensure delivery metadata tags match the distribution requirements.

Frequently Asked Questions

Is Rec. 2020 HLG better than Rec. 709 for Android video?

Yes, provided your workflow is configured to manage it. Rec. 2020 HLG provides a wider color gamut and an expanded dynamic range transfer curve that captures highlight detail standard Rec. 709 clips clip automatically. When paired with a 10-bit HEVC pipeline, HLG delivers superior post-production flexibility and preserves subtle gradations in skies and specular highlights. However, if you lack color-managed editing tools, an unmanaged HLG file can look desaturated or mistagged on standard displays.

How can I tell whether my Android phone actually recorded HLG and not just 10-bit Rec. 709?

Do not rely on your smartphone's gallery app info screen. Transfer the raw video file to a computer and inspect its internal metadata streams using ffprobe or MediaInfo. A genuine HLG file reports the transfer characteristic as arib-std-b67 alongside color primaries set to bt2020. If the transfer function indicates bt709 or remains empty while the pixel format is yuv420p10le, your device is capturing 10-bit data inside a standard dynamic range space rather than an HDR HLG curve.

Do I need to convert HLG to Rec. 709 before editing in Final Cut Pro?

No. Final Cut Pro provides native support for wide-gamut HDR media. By setting your library color processing to Wide Gamut HDR, you can edit native HLG files directly on an HLG timeline without prior conversions. If you are targeting a standard SDR deliverable, place the HLG file into a standard Rec. 709 project and utilize the built-in HDR Tools effect (configured to HLG to Rec. 709) to handle the tone mapping gracefully.

What happens if I grade HLG footage without setting the input colour space?

If you adjust color parameters without declaring your input space, your editing application handles the footage as standard gamma 2.4 / Rec. 709 material. This causes grading tools—such as Lift, Gamma, Gain, and secondary Hue curves—to act on incorrect luminance values. Midtones become overly compressed, highlights clip prematurely, and skin tones shift unpredictably, making a balanced grade nearly impossible to maintain across varying takes.

Does 10-bit matter if I am delivering Rec. 709 SDR anyway?

Yes. Even when your final export is standard 8-bit Rec. 709, acquiring footage in 10-bit HLG provides significant grading latitude. Transforming wide-gamut HDR down to SDR requires compressing exposure values. An 8-bit source file will quickly exhibit stepping, color banding, and digital noise across gradients during compression. Capturing 1,024 values per channel via 10-bit ensures the mathematical transforms have enough raw data to output pristine, band-free 8-bit deliverables.

Shoot a ten-second gradient-and-window test clip on your Android phone, run it through ffprobe, and check the primaries and transfer tags before your next shoot — then read the HLG grading workflow guide to set up a colour-managed timeline that respects them.

color managementRec. 2020 HLGRec. 70910-bit HEVCAndroid videoFinal Cut ProHLG grading