[G 2014 Original Android Development] BlackScout:
ISO Control for Titan [NOT A REQUEST]

[BIG POST ALERT!] :cool:​

I could have created my own thread about it, but I want this to get attention from people...

After spending almost 4 days getting CM to build on my poor machine (i3 3.3ghz, 8GB of RAM, HDD). :eek: I've achieved something for the >TITAN<! :good:

ISO Control! (Buggy, but works!)

I've edited the CameraParameters and the CameraWrapper based on old commits and stuff that got removed from FALCON and PEREGRINE...

Pretty much based on this https://review.cyanogenmod.org/#/c/129202/ and on the editing of CameraParameter files...

The TITAN has ZSL (Zero Shutter Lag)... (Option appears with Snap Camera's advanced options)

So, why not add ISO Support for it??? :confused:

So, here is what I did:

On CameraParametersExtra.h​

I've added the following under #define CAMERA_PARAMETERS_EXTRA_C \

const char CameraParameters::KEY_QC_ISO_MODE[] = "iso"; \
const char CameraParameters::KEY_QC_SUPPORTED_ISO_MODES[] = "iso-values"; \

And under #define CAMERA_PARAMETERS_EXTRA_H \

static const char KEY_QC_ISO_MODE[]; \
static const char KEY_QC_SUPPORTED_ISO_MODES[]; \

______________________

On CameraWrapper.cpp​

After a few conditions...

if (get_product_device() == FALCON || get_product_device() == PEREGRINE) {
if (id == BACK_CAMERA) {
params.set(CameraParameters::KEY_QC_SUPPORTED_HFR_SIZES, "1296x728");
params.set(CameraParameters::KEY_QC_SUPPORTED_VIDEO_HIGH_FRAME_RATE_MODES, "60,off");
}
} else {

....

I've added right after the else

params.set(CameraParameters::KEY_QC_SUPPORTED_ISO_MODES, "auto,ISO_HJR,ISO100,ISO200,ISO400,ISO800,ISO1600");

OBS: I know only a little about C++... Spaghetti code is real

______________________

So, the way I edited the code makes it work on TITAN, but not on FALCON nor PEREGRINE. That commit above explains a lot

I should've made a dedicated if statement, but whatever.

Result: It works with Snap Camera. :cyclops::laugh: (Default Camera App, Red Icon). Swipe right to left, there will be an ISO Option on the settings.

There are a few issues, though... The values are kinda wrong...

(Auto) works as always, [Auto (HJR) :confused:] works?? (I don't understand that option).

However, other values are working oddly. If you apply 100, it's actually 160...

For others, it's sometimes the double of the selected value... (Selecting 200 sets it to 400)

Here are a few samples + EXIF Data/Info.

"ISO100" Option

EXIF: http://i.imgur.com/KdmLQKV.png

FullSize: http://i.imgur.com/OexQ6Bv.jpg

"ISO1600" Option

EXIF: http://i.imgur.com/UQ8THo8.png

FullSize: http://i.imgur.com/U3Upe7H.jpg

I wiped off the EXIF because I don't know if it had GPS data on it.

Conclusion:

Something I made without expecting it to work, worked. I'm stoked. The proposal is:

I'd be glad if you devs could help/ try putting this on the official builds, cause it seems to be something useful for a lot of people.

It also doesn't seem hard to work on, I'm open to help with testing.

Observations List:

OBS: The live preview does not change unless you enable ZSL, capturing with it Off or On [B]doesn't seem[/B] to matter much.
OBS1: I'm unsure about having ZSL enabled/disabled and its effects. (Besides the preview)
OBS2: Exposure does not get compensated with the ISO Change, although you can still tap a region of the frame with more brightness... That same thing.
OBS3: I've got a full compiled custom build here, I'm a real noob. I have no idea which files got changed... [SIZE="1"]Inb4 I could've edited a file in /system :silly: idk tbh[/SIZE]
OBS4: I could get HDR to work with it. (Helps the exposure situation). Enable it, Set a custom ISO value, Enable ZSL. [B](Do it in order)[/B] [SIZE="1"][I know there is code that messes with ZSL and HDR][/SIZE]
OBS5: ISO Setting appears without Advanced Options enabled.
[U]OBS6: Focus Mode on Auto + ZSL Off [B]seems to help[/B] the exposure compensation issue.[/U]

Too buggy and malfunctioning, and it seems no devs care, so f*c* it. :good:

Also, it won't work on anything besides SnapCamera.