PrimeCam v0.1.0 · internal testing

4K · 10-bit HLG · Android 13+

The footage cannot leave the phone.

PrimeCam is a 4K HLG10 cinema camera for Android. It writes HEVC Main 10 in a QuickTime container that Final Cut Pro opens natively — no transcode, no proxy, no waiting. And it ships with no internet permission, so there is no code path that could upload a frame anywhere. That is not a policy. It is the manifest.

Demo 18 s · silent · screen recording · Pixel 10
The interface, running on a Pixel 10. The preview is aimed at a display, so what to read here is the HUD — timecode, remaining, ISO, the follow box — and not the picture behind it.
CodecHEVC Main 10
Resolution3840 × 2160
Rate24.000 fps
ColourRec. 2020 HLG
AudioAAC 48 kHz
ContainerQuickTime .mov

01Offline

No network. Not “we don’t collect data” — no network.

Most camera apps ask you to trust a privacy policy. PrimeCam removes the capability instead. The INTERNET permission is stripped from the merged manifest, so the operating system itself will refuse a socket. There are no accounts, no analytics, no crash reporting, and the subject-detection models are bundled in the app rather than called from a server. Google Play still reports anonymised crash counts to us for any app, as it does for every app on the store; that, and nothing else, is written down on the privacy page.

You do not have to take that on faith. Pull the app and read its manifest.

Every permission the app declares
$ adb shell dumpsys package com.primecam | grep -A8 'requested permissions'
    requested permissions:
      android.permission.FOREGROUND_SERVICE_CAMERA
      android.permission.POST_NOTIFICATIONS
      android.permission.FOREGROUND_SERVICE
      android.permission.BLUETOOTH_CONNECT
      com.primecam.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
      android.permission.CAMERA
      android.permission.FOREGROUND_SERVICE_MICROPHONE
      android.permission.RECORD_AUDIO

# Eight, in the order the system prints them. The com.primecam one is not a
# capability the app asks you for: androidx declares it in every app it is
# linked into, so a library can register a receiver that only code signed
# with the same key may reach. INTERNET is absent.

02The file

Final Cut Pro opens the original.

Not a converted copy. Drop a clip into a library set to automatic colour and Final Cut tags it Rec. 2020 HLG on its own, switches the library to wide-gamut HDR, and cuts the file PrimeCam wrote — byte for byte. No optimised media, no proxies.

Tagged, not guessed

Every clip carries the full colour triple — bt2020nc / arib-std-b67 / bt2020 — so the NLE never has to infer what it is looking at.

hvc1, not hev1

The HEVC sample entry is the one Apple’s stack actually accepts, in a QuickTime container. This is the difference between a clip that plays and a clip that argues.

24.000, held

True 24.000 fps, not 23.976 wearing a costume. If the sensor cannot hold the rate you asked for, the strip says NOT AT RATE and names the reason, rather than quietly writing a different number.

03Camera

Primes, not a zoom slider.

Three real focal lengths, named in millimetres the way a lens is. The rail says which glass you are on and what the stabiliser is taking off the edges.

13mmUltrawide
24mmWide
104mmTele 5×

Follow that tells you what it is holding.

A reticle that says TRACKING for everything hides the moment the eye is lost and the point slides onto a chest. PrimeCam names the rung instead — and it climbs the same ladder for animals.

EYEclosest, sharpest
FACEeye lost, head held
BODYturned away
NO SUBJECTholding a place, honestly

Every take remembers itself

A JSON sidecar per clip: lens, focal length, rate, stabilisation and its measured crop, bitrate, audio source and device, and every automatic action the camera took while you were rolling — with the second it happened.

Monitoring that earns its pixels

Waveform, false colour and focus peaking, with a shutter-angle and ISO readout that stays legible in a greyscale photograph of the screen.

It tells you when it is too dark

The stabilisation ladder greys out the rungs the light will not support and says why, rather than letting you shoot an unusable take and find out in the edit.

04Screens

What you actually look at.

Real frames off a Pixel 10, not renders. Every number in them was put there by the camera while it was running.

ready

Before you commit to anything.

Every number the camera will write is on screen before the take starts — rate, shutter, ISO, white balance, and how many minutes the free space really leaves you.

PrimeCam ready to record: a left column reading REMAINING 30:39, AUDIO 48 kHz,
                  CROP -13%, BITRATE 80 Mb/s, PREVIEW HLG10, THERMAL NOMINAL; a top strip reading
                  LENS 24.5 mm, RATE 24.000, SHUTTER 96 degrees, ISO 170, WB 5500K, STAB EIS Standard,
                  RANGE HLG10; a lens rail on the right offering 13 mm, 24 mm and 104 mm.
104 mm · tele

Three lenses, named by what they are.

The rail switches the physical camera. It does not crop the wide one and call it zoom.

The tele lens selected: the top strip reads LENS 104.3 mm, SHUTTER 144 degrees,
                  ISO 394, and the left column reads CROP — not measured on this lens.
focus peaking

See what is sharp, not what looks sharp.

Red marks the edges the sensor actually resolved. Tapping PEAK cycles the strength.

The same scene with focus peaking on: red speckle over the in-focus edges of
                  the framed prints and the desk, and the rail button reading PEAK MED.
exposure

Manual when you want it. Automatic when you don’t.

Each mode says what it will do to a take before you commit to it, in words rather than icons.

The exposure panel: Automatic, reading ISO 155, 96 degrees, 1 over 90, described as
                  ‘The camera rides exposure. It will change during a take.’; Manual below it; a lock
                  toggle; and exposure compensation at plus zero EV.
recording

Rolling.

A red frame, a timer, and the minutes left counted against the free space that is really there.

Recording in progress: a red border round the picture, REC 00:00:06, REMAINING 30:33,
                  and an ISO scrubber on the right showing 176.
after the take

It tells you what it wrote.

Name, place, duration, size, the bitrate it actually achieved, where the sidecar went — and the two tags an editor cares about, confirmed on the way out.

A confirmation card reading PrimeCam_20260902_140124_018_24mm_24_000.mov in
                  Movies/PrimeCam, 11.0 seconds, 0.11 GB, 82 Mb/s, sidecar in Documents/PrimeCam,
                  and ‘QuickTime: hvc1 already correct, colr already correct’.

05The test

It is early, and it is honest about that.

Version 0.1.0 — internal testing. PrimeCam needs Android 13 or later and a camera that can record 4K in 10-bit HLG. Where a device cannot, the app says which part it cannot do rather than guessing. It has been tested on the Pixel 10 and nothing else — which makes every other phone untested, not unsupported. Known open issue: if the app’s process is killed while recording, that take is lost — the camera now detects and clears the remains on the next launch and tells you what it recovered, but the footage itself does not survive. Do not shoot anything irreplaceable on it yet.