The commercial filmmaking world is 99% producing shit. Most clients have no idea what art is. They just want a certain production standard and for efficiency. Turning up with a Samsung badged small consumer camera goes against the grain. This is the main reason RED exists - for pros to look professional in front of clients. Clients don't know much at all about images. I have seen what happens when they try to make their own LUTs.
It even happens right at the top. Robert Richardson took his name off World War Z for precisely this reason.
I just realized the Tizen git repository (https://review.tizen.org/git/) includes open-source code for libmm-camcorder, which seems to have all the same functions as libmmf-camcorder.so on the NX1. Not sure what the difference is. Looks like this is a goldmine for understanding what the camera app is doing. I'm glad I found it before I started digging into the libmmf-camcorder.so binary. There is also a repository for a default camera app, which doesn't seem to be the same as on the NX1, but if we're lucky they might be closely related.
I don't think I currently have the experience or time to successfully modify the NX1/NX500 firmware. I don't even have one of those cameras. However it would be a shame to let the interest in this die, so I guess I'll post some of my notes/thoughts about the firmware in hopes that it might help keep the ball rolling.
Note: if you aren't into technical minutiae, the only interesting part of this wall of text is the bulleted list at the end detailing what is and is not possible in my opinion.
Here are the files listed in the header of nx1.bin (version 1.4.0):
version.info: offset=0x0 size=0x3F (same as found in /etc/version.info)
linux image: offset=0x0130 size=0x00624748
idk: offset=0x624878 size=0xD8E9
linux image: offset=0x632161 size=0x3192E8
linux image: offset=0x94B449 size=0x638518
idk: offset=0xF83961 size=0x01FF10
idk: offset=0xFA3871 size=0xB35140
rootfs: offset=0x1AD89B1 size=0x117A89FF (lzo compressed ext4 filesystem image)
opt: offset=0x132813B0 size=0x58E91C (lzo compressed ext4 filesystem image)
pcachelist: offset=0x1380FCCC size=0x7000 (PAGECACHELIST, preceded by a header, I think)
idk: offset=0x13816CCC size=0x35BCC44 (lzo compressed. header indicates swap image?)
Anyone with the skills to reverse engineer a camera could figure this out pretty easily, but it was fairly tedious so maybe this will save someone 20 minutes of poking around in a hex editor. If anyone knows what's up with the files I've labeled "idk," I would love to hear about it.
The checksum algorithm is fortunately unchanged from the NX300 as far as I can tell.
As documented at sites.google.com/site/nxcryptophotography/diy-firmware
"width=32 poly=0x04c11db7 init=0xffffffff refin=true refout=true xorout=0x00000000 check=0x340bc6d9 name="JAMCRC""
"jacksum -x -a crc:32,04c11db7,ffffffff,true,true,00000000 [file]"
The main camera app binary is (I'm pretty sure) located at /usr/apps/com.samsung.di-camera-app/bin/di-camera-app in the rootfs. It seems to access the hardware through a relatively high-level API with the /usr/lib/libmm* libraries. libmmf-camcorder.so is particularly interesting. The function I've focused my attention on is mmf_camcorder_set_attributes(), which comes from libffm-camcorder and is used repeatedly in di-camera-app. It conveniently (and strangely IMO) takes strings as identifiers for the attributes that are apparently being set (why not just an enum? I suppose I shouldn't look a gift horse in the mouth...). Some of those attributes include "target-time-limit," "audio-encoder-bitrate," and "video-encoder-bitrate." The guy who successfully removed the recording time limit on the NX300 did it by modifying the instructions that set the variable being passed along with "targe-time-limit." I found the control flow instructions he mentioned in that thread, so it should't be hard to get rid of the time limit on the NX1, provided the camera accepts the modified firmware. The NX500 is probably similar. The "video-encoder-bitrate" attribute also looks promising, though it would take some more advanced reverse engineering to figure out where the values are being set.
So from what I've seen and read, here is what I think is and is not possible to modify on the NX1 and NX500:
Remove time limit: Highly likely. Seems to be the same as the NX300. Pretty easy too, if there aren't any new security measures in place.
Increased bitrate: Possible. Needs some real reverse engineering to find where the rates are set for each resolution and quality.
Noise reduction and sharpening: Possible. Haven't seen anything that looks like it's controlling these, but if setting the bitrate works, this should be possible too. FWIW I think that increasing the bitrate would help with the noise reduction issues. H.265 tends to smooth things out a lot to achieve low bitrates.
Re-enable 2.5k on NX500: Plausible but difficult. It depends on whether they just removed it from di-camera-app, or if they removed it from the underlying libraries as well. Either way it would likely require actually adding control flow to the binary, which opens a whole new can of worms. Beyond my current ability, for sure.
Focus peaking for NX500 4k: Maybe? I have no idea, really. There might be a good reason they didn't include it, there might not.
4k crop on NX1: Plausible but even more difficult. We know the hardware can do it, but it was probably never implemented on the NX1, even in pre-production.
Gamma profile on NX500: Plausible. Similar to porting the NX500's 4k crop to the NX1, I think.
6k 24fps H.265: Highly unlikely. The H.265 encoder would have to support frame sizes larger than DCI 4k and be able to handle twice the pixel rate (clock speed) of 4k. Furthermore it would require implementing a brand-new video mode at a very low level. I can't say for sure it's categorically impossible, but don't get your hopes up.
10bit H.265: Nope. The H.265 standard does indeed allow for 10bit encoding, but I highly doubt Samsung would include the significantly larger (wider busses, more complex encoding) hardware necessary to do it. It would be a miracle if Samsung had really decided to go to all that effort and not use it.
6k or full sensor 4k at more than 30fps or 1080p at (significantly) more than 120fps: Impossible. The image sensor simply isn't fast enough. If you hope for this you will just be disappointed!
RAW Video: Not really. It might be theoretically possible to dump the live-view feed as in Magic Lantern. Who knows how fast the SD card interface is, though. Certainly no more than 1080p. I can imagine tricking the GPU into packing 12bit 4k RAW into 1080p 444 HDMI like Apertus, but consider that a pipe dream. Don't get your hopes up.
Anyway, that was longer than I expected, but I enjoyed poking around in the firmware, so I don't regret it even if it comes to nothing. It's a shame Samsung appears to be dropping the NX line; they are cool little cameras.
p.s. If you know anything I've said is wrong, please correct me; I'm learning this as I go along.
If you are still missing those FW, you may thank archive.org:
1.01 http://downloadcenter.samsung.com/content/FM/201411/20141110100211100/NX1_FW_v1.01.zip
1.10 http://org.downloadcenter.samsung.com/downloadfile/ContentsFile.aspx?CDSite=US&CttFileID=5889101&CDCttType=FM&ModelType=C&ModelName=EV-NX1ZZZBQBUS&VPath=FM/201412/20141220160910675/NX1_FW_v1.10.zip
Made a copy on my drive just in case.
As for my wishlist I would love to see recording time limit gone.
Handy tip for testing setups, filters, lighting - without the transcoding step. Shoot some footage; playback in camera and pause at the frame you want to examine. Hit the Fn button on the camera back; the camera burns a JPEG of the frame. I've played with this and the JPEG is dead-on with the footage (My camera is set for the best and biggest JPEGs, don't know if this affects the frame capture). Really handy for testing non-motion related stuff without running clips through processing.
Gah wrote a big post and lost it. The jist of it was : This Kowa 8.5mm looks nice: And Tiffen Ultra Contrast and HD/TVFX filters do a lot to attenuate the clinical/digital look of Panasonic lenses: Ultra Contrast on a 25mm 0.95:
I realized, I stopped taking pictures almost completely, and instead use only framegrabs...The quality is simply outstanding, and quite honestly, the gap between photo and video has become so thin, its barely noticeable.