Jump to content

RawLogCam app for Android


jzagaja
 Share

Recommended Posts

I’m developing a video recorder that can capture both uncompressed and compressed RAW, while also recording a flat H.265 stream with minimal ISP processing.

The application can process RAW data and encode the result to H.265. It adjusts the saturation vectors in the linear domain to preserve accurate color relationships and supports color targets for calculating a 3×3 color correction matrix and TRCs.

It also includes USM and MTF-based filtering in a mildly nonlinear domain, allowing either sharpening or attenuation of high spatial frequencies.

I’m also planning to add film simulations after calibrating the camera using manufacturers’ spectral sensitivity curves.

I’m open to suggestions regarding additional features worth implementing. At the moment, my main problem is dropped frames during compressed RAW recording.

Below is an example from a Motorola Edge 50 Pro: the brighter image is produced by the phone’s ISP, while the other image is processed from RAW.

ISP:

image.thumb.png.0265094acac94998ca0923a465d59738.png

RAW:

2542.thumb.png.449dbe7d18dc4da0cb08a2f0fa0680f1.png

 

RAW:

2582.thumb.png.3a3763817405794730e98aa99738d53c.png

 

Link to comment
Share on other sites

EOSHD Pro Color 5 for Sony cameras EOSHD Z LOG for Nikon CamerasEOSHD C-LOG and Film Profiles for All Canon DSLRs
  • 3 weeks later...

Compressed RAW is probably the part I'd focus on before adding more film simulations.

For the dropped frames, a small diagnostics page could be useful: sensor timestamp delta, queue depth, compression time per frame, sustained write MB/s and dropped-frame count. That should make it much easier to see whether the bottleneck is capture, compression or storage.

I'd also preserve per-frame black/white levels and WB/colour-matrix metadata where the device exposes them. Especially useful if you want the RAW processing and calibration to remain consistent across ISO changes.

Interesting project.

Link to comment
Share on other sites

Right now I’m working on a GPU-accelerated H.265 mode, with the goal of getting video that is as close to RAW as possible while maintaining stable IT8-based color calibration.

In RAW mode I’m currently limited to around 22 fps (Motorola Edge 50 Pro). To push beyond that, I’ll probably need to rewrite a significant part of the capture and processing pipeline in C++/NDK and reduce the amount of work done on the Kotlin side.

Over the next few days I’m planning to register as a Google Play developer and try to publish an early version of RawLogCam on the Play Store.

I’m also considering releasing it first as a closed or open beta. If anyone here has an Android phone with decent Camera2/RAW support and is interested in testing it, I’d definitely appreciate feedback — especially on dropped frames, sustained recording, external SSD recording, RAW compatibility, and color calibration across different sensors.

If you have a better idea than going directly through the Play Store for the first public builds, I’m open to suggestions.

Link to comment
Share on other sites

2K compressed RAW is no problem on the Motorola Edge 50 Pro, but at the moment I’m not sure how to make 4K work reliably. RAW has a nicer rendering than the GPU pipeline, especially in the highlights.

I’ve implemented 3×3 color matrices, TRCs, and 1D IT8-based correction for both GPU and RAW/RAWC modes.

I think I’ll drop the H.265 mode that goes through the ISP and only keep GPU H.264 for social media compatibility.

Link to comment
Share on other sites

On iPhone I’d see the practical route as DNG/ProRAW or RAW burst → custom linear/Metal pipeline → H.265/HEVC, with a much flatter, less processed look than the stock camera. Not ProRes RAW.

The limitation is that iOS does not expose continuous Bayer RAW video in the same way Android Camera2 can expose RAW streams, so an iPhone version would likely be AVFoundation + Metal: RAW/DNG stills or bursts, plus a controlled HEVC mode with custom tone, colour, highlight rolloff and IT8/LUT calibration.

 

I don’t have an iPhone to test on right now, so I can’t promise it yet. But the idea is definitely interesting.

First I want to finish and publish the Android version and see if people find it useful. If the feedback is positive, I’ll try to look into an iPhone version — probably DNG/ProRAW or RAW burst into a custom Metal colour pipeline and then H.265/HEVC, rather than ProRes RAW.

For me the goal is to do as much as possible directly on the phone — capture, colour, calibration, encoding, maybe even basic editing/export, Davinci style.

On the PC I’d rather have a voice-driven movie editor, where you can just say what you want to cut, move, translate, subtitle, shorten or colour-match, instead of digging through endless panels.

I’m also working on PocketCAD for Android and a customised WearOS/Android smartwatch project, so it’s all part of the same direction: practical tools on small devices, with more voice control and less dependence on big desktop workflows.

Link to comment
Share on other sites

3 hours ago, Andrew - EOSHD said:

Any thoughts on making an iPhone version (DNG -> H.265 without the processed look, without Prores RAW)

For iOS there’s DIGILOG, RAW Cam & Log CAM by Sebastijan and now also MotionCam Pro (beta) which do this (or something similar).

I especially like DIGILOG because of the real time film simulation with halation.

Link to comment
Share on other sites

Quick update on RAW → H.265 export:

The RAW side can stay full resolution and 60 fps, but I hit a Qualcomm encoder issue on the proxy/export side. The `c2.qti.hevc.encoder` accepts `2160×2880 / 60 fps`, but after the first frame it returns `UNKNOWN_ERROR`, followed by Android’s misleading “Released state” message.

So it does not look like an AAC or RAW/DNG problem — more likely a hardware encoder limit/bug with that portrait HEVC configuration. I’m testing possible workarounds, especially encoding the same frame as `2880×2160 / 60 fps` landscape, but the safe fallback is to keep RAW at 60 fps and export H.265 as smooth 30 fps by taking every second frame.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • EOSHD Pro Color 5 for All Sony cameras
    EOSHD C-LOG and Film Profiles for All Canon DSLRs
    EOSHD Dynamic Range Enhancer for H.264/H.265
×
×
  • Create New...