MLV App - All in one MLV Raw Video Processing App [Windows, Mac and Linux]

Started by ilia3101, July 08, 2017, 10:19:19 PM

Previous topic - Next topic

0 Members and 5 Guests are viewing this topic.

ilia3101

MLV App



MLV App is the world's only software for raw video that combines
native MLV support with a familiar photographic editing workflow!




Cinematic results are effortless in MLV App...


Sample videos:





(If anyone has suggestions of nice cinematic videos processed in MLV App that could be added here please tell me!!!)



If you are new to MLV App, this will teach you almost everything about using it:

То же самое видео, но на русском


Useful links:

"Compiler" app/script for macOS by Danne (source) - very easy way to compile on macOS

Guide for compiling MLV App (Linux) (and in German) by escho (thx :) )


(some stuff from original post...)
QuoteI began doing this this due to general frustration with Adobe, having to convert to DNG, and not being able to run MLVProducer(or any all in one solution) on my Mac. I began doing it, then Footage came along (btw good work martin), which was really exciting, but that never fixed the black level issue on elcapitan, so I continued.

I've had a lot of help with figuring stuff out on here: http://www.magiclantern.fm/forum/index.php?topic=19270.0
Thanks g3gg0 and a1ex and Danne.
And thanks to everyone who is developing: masc, bouncyball... all who wrote GPL code used in the app

Danne

This is great. I see the groundwork to something really useful and with a lot of potential. I will check this out asap. And also great that you publish early stages. Easier to follow.
Just checked with the binary. COOL. Would love to be able to use it in some of my scripts  :P

ilia3101

Would be great to see it used with your scripts! I'll add a command line version that will work similar to mlv_dump, which would be useful for integrating with scripts (and would work on Windows and Linux!)

DeafEyeJedi

What have you been smoking @Ilia3101?!?!

You literally brought me back from the dead, no joke. :D
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109

reddeercity

Nice going  :D , did a test and it crash just a black screen loaded the MLV no problem its a 14bit from my 5d2
here what the command line in terminal said.
toshibai7:~ reddeercitytv$ /Users/reddeercitytv/Downloads/MLV\ App ; exit;
2017-07-08 19:10:29.036 MLV App[1708:29213] Screen width: 1920, height: 1080
2017-07-08 19:10:29.036 MLV App[1708:29213] Physical RAM: 16384 MB
2017-07-08 19:10:29.036 MLV App[1708:29213] CPU  threads: 8
[ 2.3260, 0.0000, 0.0000 ]
[ 0.0000, 1.0000, 0.0000 ]
[ 0.0000, 0.0000, 1.5108 ]
[ 2.3260, 0.0000, 0.0000 ]
[ 0.0000, 1.0000, 0.0000 ]
[ 0.0000, 0.0000, 1.5108 ]
[ 2.3260, 0.0000, 0.0000 ]
[ 0.0000, 1.0000, 0.0000 ]
[ 0.0000, 0.0000, 1.5108 ]
[ 5.3437, 0.0000, 0.0000 ]
[ 0.0000, 2.2974, 0.0000 ]
[ 0.0000, 0.0000, 3.4709 ]
2017-07-08 19:10:41.778 MLV App[1708:29213] unlockFocus called too many times. Called on <NSButton: 0x7fbd69c55b80>.
2017-07-08 19:11:42.953 MLV App[1708:29213] New MLV file: /Volumes/2TB Raid 0/Dans House Demo/CF Cards/Lexar1066x64GB/100EOS5D/M19-0957.MLV, strlen: 81
Block #   0  |  MLVI  |       52 Bytes
Block #   1  |  RAWI  |      180 Bytes
Block #   2  |  INFO  |       16 Bytes
Block #   3  |  RTCI  |       44 Bytes
Block #   4  |  EXPO  |       40 Bytes
Block #   5  |  LENS  |       96 Bytes
Block #   6  |  IDNT  |       84 Bytes
Block #   7  |  WBAL  |       44 Bytes
Block #   8  |  STYL  |       52 Bytes
Block #   9  |  NULL  |       36 Bytes
Block #  10  |  RTCI  |       44 Bytes
Block #  11  |  EXPO  |       40 Bytes
Block #  12  |  LENS  |       96 Bytes
Block #  13  |  WBAL  |       44 Bytes
Block #  14  |  WAVI  |       32 Bytes
Block #  15  |  VIDF  |  3070140 Bytes
Block #  16  |  NULL  |     1568 Bytes
Block #  17  |  NULL  |       36 Bytes
Block #  18  |  LENS  |       96 Bytes
Block #  19  |  VIDF  |  3070300 Bytes
Block #  20  |  NULL  |     1568 Bytes
Block #  21  |  VIDF  |  3070432 Bytes
Block #  22  |  NULL  |     1568 Bytes
etc. ........
Block #3013  |  VIDF  |  3070432 Bytes
Block #3014  |  NULL  |     1568 Bytes
Block #3015  |  VIDF  |  3070432 Bytes
Block #3016  |  NULL  |     1568 Bytes
Block #3017  |  VIDF  |  3070432 Bytes
Block #3018  |  NULL  |     1568 Bytes

MLV Info

      MLV Version: v2.0
      File Blocks: 3019

Lens Info

       Lens Model: EF24-70mm f/2.8L USM
    Serial Number:

Camera Info

     Camera Model: Canon EOS 5D Mark II
    Serial Number: ######## (I blanked the serial number)

Video Info

     X Resolution: 1872
     Y Resolution: 936
     Total Frames: 1392
       Frame Rate: 23.976

Exposure Info

          Shutter: 1/46.8
      ISO Setting: 100
     Digital Gain: 0

RAW Info

      Black Level: 1791
      White Level: 15000
     Bits / Pixel: 14

CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.


Edit: tried again and still black screen with the same warning "CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces."

File loads in mlvfs no problem , could it be a issue with Video Card/GPU ? i run a PC GTX 760 2GB Vram on Yosemite 10.10.4
didn't try on my mp5.1 with Sierra 10.12.5 yet .


reddeercity

This also gives me a idea , since you can decode mlv i was thinking of a plugin for FCPX
Something along the lines of a RED RD3 file , which was it's own raw engine for basic adjustment like your app
with different color space profiles (e.g. red log1 , red log2 etc. ...) then debay it half size (proxy) for editing
then switch to full res for rending . I have tried the RED plugin for FCPX with sample 6K Weapon files and works great .
Really the big problem is importing the image sequences , need same kind of
data base server to tell fcpx there is "####" number of frames like compressor or A.E. . This is something that use too
work in old FCP with DPX file ( i been working off and on with this in FCPX --some success)
but now if you what to import DPX in to FCPX you need a translator (makes a reference QT file from the DPX).
Sorry Off topic , i can see this being very helpful & useful in further developments .
Keep up the good work @Ilia3101 8)

Danne

Hi Ilia3101. Really like the image quality you already achieved.

Regarding white balance calculations and color matrices dng.c in MLVFS(dmilligan) is a good source.
https://bitbucket.org/dmilligan/mlvfs/src/24ebdf591dba0a0431cf1fb674b3a8fcd2730b62/mlvfs/dng.c?at=master&fileviewer=file-view-default
Row 61-167, color matrices for most cams.

Regarding white balance there is matrice conversion code in ufraw which dmilligan wisely put to use in MLVFS. Code also used in mlv_dump for steroids and in mlv_dump in cr2hdr.app. It works very reliable.
In dng.c row 265-474
I believe numbers are calculated with matrices in mind and kelvin number from MLV metadata. Code also respects canon other white balance modes and also from when manually setting white balance from cam. The only mode left out actually is awb(auto white balance). 

*update
Notice you already put in the matrices. Oh well. Maybe ufraw stuff could be of use...

ilia3101

@DeafEyeJedi yay! (many things)

@reddeercity About that crash, if it is a black or frozen screen, try making the app window smaller, as it seems to stop displaying/updating when the image view when it is larger than the video's image resolution. The whole displaying/refreshing code needs a lot fixing. Also it's unlikely a gpu bug, as the whole app uses just the cpu (except whatever macos does to show the window). I get all the same errors in the terminal too.
Also agree that it would be great to make it in to a plug in for final cut, just don't know where to find info about how to do that, all I've found is how to make a final cut plugins with AppleMotion templates, not C  :(

@Danne Thank you :D I'm glad you like the image quality, I do think the colour is quite different from most raw converters which makes it interesting. I will have another go at implementing matrices + proper white balance. I already tried using the matrices from dng.c (that silly attempt is present in the code), but maybe I need to have a deeper look at the other functions in dng.c.

Danne

Going through your mlv sources and see you already had the matrices there :).

About integration with other scripts and such I think a possibility to open up selected MLV files directly into MLV.app would be great. Something like MLV.app [drag MLV files here] enter
Anyway. Thanks for sharing. Wish I could learn this stuff and tag along the ride more in depth  :P

masc

Hi, great job! For me your app works pretty good! I also own a 5D2 and the developped images are looking very well.

I downloaded your code and tried to exchange your GUI with a QT GUI. QT makes it cross platform. I get your code compiled in my project, but it crashes very often directly after these 2 init functions (initMlvObjectWithClip&mapMlvFrames). I tried to make it 1:1 to your app, but in C++. The window init seems to work without crash in the same way as you do, but the open MLV functions crashes as described. Any idea? Every (maybe) 10th try it does not crash, runs further and shows the printMlvInfo in my debug window  ;)

Quote from: Ilia3101 on July 08, 2017, 10:19:19 PM
The app is not mac specific... except the GUI, so there is potential to make it cross platform, if I (or anyone else) finds time.

5D3.113 | EOSM.202

ilia3101

Oh my god! That is amazing. It's almost embarrassing to have someone work on my unfinished and amateurish code :-X I don't know how to fix the error, but I realised the make file is missing -lm and -pthread linking flags, I'm just lucky that Apple GCC/clang didn't give an error, don't know if that will help. Thanks a lot for doing what you are. I'll be back at a computer tomorrow and hopefully more helpful :D
@Danne what do you mean by drag and drop: drag on to the app window itself, or drag on to the app's icon?

Danne

My idea of working the binary is to do something like following:
Drag MLVapp to terminal, then drag MLV files after, then hit enter:
MLVapp [Bunch of MLV files] enter
When I hit enter MLVapp opens up with the MLV files all lined up inside your nice gui. This way it could be integrated easily in other scripts and workflows just as a start off point. Of course command line usage could probably be more advanced with options for exporting prores dng files and other stuff.
Great progress masc as well. Interesting to see where that takes you.

ilia3101

Got it Danne, so basically it should work similar to mlv_dump, I didn't understand first time because I've never thought of dragging stuff and just typed it before.
Will put (int argc, char * argv[]) to use now!
It can't have files 'lined up' yet, although that's something I will work on - may be limited to 1 file for now.

Also @masc, I've been testing a few mlv files and it seems my mlv reading is unstable/crashy with older (like mostly pre 2014) or imperfect/unusual mlv files, are you testing on your own newish mlv files? I also get random errors like segmentation fault 11 sometimes(rarely) for no reason at all(can't be reproduced with the same files or actions) - it's pretty buggy right now. But I'm not sure how to really help you right now. Also what system are you running it on... Mac, Linux or Windows?

Some major (internal) changes (caching) coming to the github repository soon! (@masc, they're only internal, gui's functions calls can stay the same, tho some macros are now functions)

masc

@Ilia: hm... the mlv's on my system are not the newest. Maybe I should create some with the new nightly and test again.
I use a MBP, OSX 10.11 and Qt 5.9 with clang64 compiler.

I don't get errors. The whole program crashes, so I don't get any information what could be the problem. It happens always just after these two init functions (I commented out the GUIs code after the two init functions for testing inside the open mlv function, the render thread is deactivated for testing as well).

I also tried to compile on Windows, but the compilers (MinGW / Visual Studio) have problems with the SSE2 code parts - so I can't test here easily.
5D3.113 | EOSM.202

masc

@Ilia:
Okay... I tried a brandnew MLV file - but it happens the same.
You printf sometimes this "matrix" ... sometimes there are values [2.3260, 0.0000, 0.0000.... and sometimes I get something like this:

[ -912946357866009707526990653213028058425336148150934686018973565099782945134279966991682517003694157252210673599290002487573580196204258818785280.0000, 14761107278647887298426725252265747037704052213684974621093726581945448424887939218053855964164182298671129527261323489121239772820396108337520159850961657576485312434110972051719515956941968841375744.0000, -5889634654216064054910380984756813016681168569942410618451110124988385579113543784074450534795619622018286200283437444381438824073396224.0000 ]

Is that right?! Can that be the problem?!
5D3.113 | EOSM.202

ilia3101

Oh yes! That must be the problem, thanks for letting me know, I've had the insane long value problem before, probably for other reasons (and fixed it)... could you please share a sample MLV file that is causing those problems so I can have a look? Sorry I didn't reply quickly ::)

And apologies for the insane amount of printing... More is coming with next commit :D

masc

I got it: freeMlvObject is the problem! On first try to open a mlv file, the free commands will crash the app. If I comment it out, the openMlv function ends without error and I can get the file informations. :-)

Hu... sharing the MLV is not easy. My connection is really slow. But I can try to create a very small mlv file which does the same.

Edit: for getting these values, I only run the apps init function. That means, there is no mlv file loaded yet.
5D3.113 | EOSM.202

Danne

Just shorten a file with mlv_dump:
mlv_dump -f 5 -o OUTPUT.MLV INPUT.MLV
Gives you a 5 frame MLV file.
Good work by the way masc.

ilia3101

@masc Ah! yes I know, sometimes the insane matrix values appear depending on what order you do/initislise or join the 'objects', I guess you might be doing something a little differently with order of stuff in your user interface code. I guess MLV files may not have been the problem, but if possible please still share a mlv file of maybe 3-5 frames, I don't have enough samples form other people really.

@anyone Be honest: is the code awful? Was it right of me do the 'object-oriented' C approach? Should it be in C++? (I just don't know that language yet)

I've uploaded a new release on GitHub with caching, so should be quicker (updated first post link), do read the release though, or your RAM will be full in no time at all ;)

masc

@Danne: thanks, I sent a small mlv to Ilia, hope it helps!

The best work did Ilia. The project is really not small, and for a hobby project it is much more then okay, I think. Respect! The 'object orientated C' is a way you can go. I know a lot of libraries which are programmed in this way. So, if the code does what it shall do, that's good.

I'll check your new release! :-)
5D3.113 | EOSM.202

ilia3101

I really appreciate the generosity and work of @masc, it is leading the app towards being cross platform and amazing 8)

@Danne I have implemented drag and drop:
Quote from: Danne on July 13, 2017, 11:32:53 PM
MLVapp [Bunch of MLV files] enter
Only for one file right now though. Download link in first post is up to date.

Danne

Works nicely over here for that one file. Good work Ilia3101.

ilia3101

I will stop the frequent posts after this... but I must announce: It now has .BMP sequence export, so now more useful for testing. It is an awkward solution.

Made a preview though with some MLV files I could find:


.MLV converted with MLV App, edit in FCP10, and if you think it looks unsharp - there's zero sharpening added, as MLV App can't do that yet and I didn't want to alter the image with other software.

We are on the way to free software MLV workflow (by we I mean me :D)

Danne

hehe, so cool. Why BMP?
There is also exr and dpx  :P And what about ProRes4444?
Please do keep posting. Very exciting.

ilia3101

Only reason is because it's the only format I've figured out how to do right now :D, prores and others definitely coming soon/eventually