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

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

Previous topic - Next topic

0 Members and 6 Guests are viewing this topic.

tdnelson2

I started a repo to develop a 010 Editor Template for parsing MLV files. The trouble is I can't seem to get the fields to line up using the information provided in https://github.com/ilia3101/MLV-App/blob/master/src/mlv/mlv.h and https://github.com/ilia3101/MLV-App/blob/master/src/mlv/mlv_object.h. If I comment out a bunch of fields and change the size of some of the fields I can get xRes and yRes to line up as expected, but obviously I'm doing something wrong if I have to comment out stuff.

Please see my repo and let me know if you have any thoughts: https://github.com/tdnelson2/MLV_010_Editor_Template

Here's what it looks like when I run it on a MLV file in 010 Editor:


names_are_hard

Quote from: tdnelson2
I started a repo to develop a 010 Editor Template for parsing MLV files.

You have defined things as uint in the template when they are uint8_t in the struct def from the header.  Uint is probably size 4.  uint8_t is size 1.

tdnelson2

Quote from: names_are_hard on August 17, 2022, 06:18:44 AMUint is probably size 4.  uint8_t is size 1.
You are right! I'm looking again at the supported datatypes for 010 Editor and I see that I wrongly assumed uint was 8 bits long. Looks like they have it at 32 bits long: https://www.sweetscape.com/010editor/manual/DataTypes.htm.

ricardopt

Quote from: ilia3101 on August 16, 2022, 06:34:49 PM
That's the right document. I've seen it before, but thanks for digging it up.
I've translated the scene linear to F log curve in to MLV App's expression format. Here you go:
(x < 0.00089) ? (8.735631 * x + 0.092864) : (0.344676 * log10(0.555556 * x + 0.009468) + 0.790453)
......

thanks for yours and everyone's help, i done some tests and here's a video with side by side comparisons, all done in mlvapp, no color grading, just default values with exposure tweaking, only used an NLE for titling and "fx".

1 - mlavapp to f-log
2 - mlvapp with the f-log formula + AgX + fujifilm lut"
3 - mlvapp with tonemapped profile + AgX

Some videos look identical, others with f-log+lut look more "whitewashed" than the tonemapped ones, all a matter of personall preference i guess, look alike a good option for mlvapp.
Once again thanks.


tdnelson2

Quote from: tdnelson2 on August 16, 2022, 08:16:11 PMI started a repo to develop a 010 Editor Template for parsing MLV files.
OK. I've fully parsed a MLV file containing one frame. Am I right to assume the image data is located in "VIDF" blockTypes in the "frameData" field? Is this data in DNG format?

masc

Quote from: tdnelson2 on August 20, 2022, 10:20:22 PM
Am I right to assume the image data is located in "VIDF" blockTypes in the "frameData" field?
Yeaaa... see below...

Quote from: tdnelson2 on August 20, 2022, 10:20:22 PM
Is this data in DNG format?
No. But you could copy the imagedata of the VIDF block into a buffer and write this into a DNG - with correct metadata. No idea if any program could read the dng with incorrect metadata.

typedef struct {
    uint8_t     blockType[4];    /* this block contains one frame of video data */
    uint32_t    blockSize;    /* total frame size */
    uint64_t    timestamp;    /* hardware counter timestamp for this frame (relative to recording start) */
    uint32_t    frameNumber;    /* unique video frame number */
    uint16_t    cropPosX;    /* specifies from which sensor row/col the video frame was copied (8x2 blocks) */
    uint16_t    cropPosY;    /* (can be used to process dead/hot pixels) */
    uint16_t    panPosX;    /* specifies the panning offset which is cropPos, but with higher resolution (1x1 blocks) */
    uint16_t    panPosY;    /* (it's the frame area from sensor the user wants to see) */
    uint32_t    frameSpace;    /* size of dummy data before frameData starts, necessary for EDMAC alignment */
/* uint8_t     frameData[variable]; */
}  mlv_vidf_hdr_t;


See first variable in VIDF block.
5D3.113 | EOSM.202

vastunghia

Observed some weird behavior, thought I'd report it here.

Using latest Danne's build for 5D3 113, shooting with 3.5K 1:1 centered x5 preset, and only happening with Dual ISO enabled:

- first frame is corrupted (upper pink noisy band, more often than not the case) => MLV App handles Dual ISO well, meaning that I just have to enable the "Dual ISO" switch in the Editor, and all is fine;
- when first frame is not corrupted => MLV App yields bluish output, and I have to force Vertical Stripes = OFF to fix this.

This is *not* a real problem of course -- just reporting it here as it seems to be a strong repeating pattern, so there must be a reason behind. Maybe will make ring a bell for some enlightened people buzzing around here?

Ciao

Sergio
5D3 for video
70D for photo

masc

Thanks for reporting. But it is known, you'll have to disable vertical stripes when using dualiso for 5D3 footage.
5D3.113 | EOSM.202

vastunghia

Yup, that's what I knew.

What I'm reporting is that actually it turns out it is not always the case with the latest 5D3 builds: and more specifically, when the first frame is corrupted (often), then MLV App works fine even without disabling Vertical stripes.

Just a small curious thing (which would require more testing tbh). But I was surprised, so I thought I would report it.

Ciao

S
5D3 for video
70D for photo

masc

Quote from: vastunghia on September 05, 2022, 11:14:13 PM
... it turns out it is not always the case with the latest 5D3 builds: and more specifically, when the first frame is corrupted (often), ...
Ah okay... this is different then. Can't remember a corrupted frame in my 5D3 clips since a very long time. MLVApp gets some information reading the first frame and sets some settings with that - maybe this could be a reason for what you report.
5D3.113 | EOSM.202

vastunghia

Nice. So for some reason when the first frame is corrupted MLV App reads it and sets something different, which leads Dual ISO debayering to work "out of the box" in the app.

S

PS: fyi slightly corrupted first frame (where 'slightly' refers to the fact that the frame can be read and exported successfully, even though it displays a small pink band in the first upper pixel rows) is the norm with the latest builds and all the 'one more hack' features by theBilalFakhouri enabled (check this thread: https://www.magiclantern.fm/forum/index.php?topic=26443.0). At least on 5D3.
5D3 for video
70D for photo

masc

Little new feature in MLVApp, expecially for current SD UHS speed tests... MLVApp now shows data rate of clip!
5D3.113 | EOSM.202



Skinny

Probably noob question, but.. what framerate should I set on export?
I read somewhere that most consumer devices can't play exactly 24 fps smoothly, they are made for 23,976.. and for example my monitor has 59.9hz instead of 60. It seems like clips with 23,976 fps (from camera standard .mov) play better, no tearing artefacts or stuck frames. While 24 fps exported from MLV App have such problems sometimes (on my computer at least).

Should I export to 23,976 to maximize compatibility?
And there is a problem, with standard .mov files from camera I can see framerate: 23.976024
If I export with MLV App I can only set 23,976 and it will be 23.976000

Is it not standard? will services like youtube transcode the file and change framerate to 23.976024? Maybe we need a preset for exporting 23.976024?

masc

If you want realtime playback, export without overriding the framerate. This option changes the playback speed! It exists for creating timelapse and slowmotion.

Quote from: Skinny on September 17, 2022, 05:39:40 PM
While 24 fps exported from MLV App have such problems sometimes (on my computer at least).
What problems one can get exporting?! Maybe you exported using a too high quality codec - so your PC can't playback?
5D3.113 | EOSM.202

Skinny

I often use 30 fps and export at 24 to create just a little slowmotion.

The problems are almost unnoticeable, sometimes I see frame tearing or slight stutter. You can barely notice it.
It is not only on my devices, for example https://www.avsforum.com/threads/fixed-apple-tv-4k-lacks-support-for-24-000-video.2961262/

So as far as I know, most consumer devices were made for 23,976 and not for true 24. Of course they can play 24 but it is not their native framerate. They usually have only one clock generator and it can't support both, so manufacturers choose 23,976 because it is more common. As well as 29,97 and 59,94 instead of 30 and 60...

Some info explained here https://github.com/mpv-player/mpv/wiki/Display-synchronization
They have to invent a lot of stuff to deal with this small difference between framerates..

And from what I see, it is just better to stick with 23,976 for the internet. But for now MLV App can only export at 23,976000 and not at 23,976024.
I don't really know if it should be exactly 23,976024. Or should it actually be 24 * 1000 / 1001 ?
I hope someone can clarify all this stuff..

Danne

Hard to see that 23.796000 should make any difference here. But since we are using ffmpeg you could specify exact fps output.
You can test exporting standard mov files to exact 23.976 and see if you can see any difference.
@masc. Should be possible to specify exact fps manually maybe?

masc

Can't believe that it is possible to see a difference. Example: between 24fps and 24000/1001, all 1000 frames there could be a jump of 1 single frame. 1000 frames happens after >41sec, and only if the scene is longer than that. For the difference between 23.976000 and 23.976024 it will need much longer. So I think a stutter because of this is impossible.
Yes, for ffmpeg you could write to the command 24000/1001 instead of 23.976, but entering into GUI is more complex and probably not really needed. For testing just change the code in export function.
You'll see a bad stutter if your monitor is force set to 60Hz and you playback ~24fps footage.
5D3.113 | EOSM.202

ML700D

hi masc,
just a question...
what is the different between mlvapp v1.14 static and dynamic?

thanks.
EOS 700D

masc

Static: uses static Qt libraries compiled into the exe. Crosscompiled from bouncyballs linux OS
Dynamic: uses dynamic Qt libraries, dll files. Compiled from my windows OS

Qt version is different between both MLVApp versions. If one doesn't work for you, try the other.
5D3.113 | EOSM.202

vstrglv

I have tried to compile MLV App on Windows but failed. Now I have installed macOSMojave10.14.6 through VirtualBox-6.1.38. I am on windows 11. I am trying to use "Compiler" app/script for macOS by Danne from first post. It seems to me a compiling goes good, but I can't  find MLV.App.xxx.zip file in MLV_App_Master folder. What is the problem?
Canon 5D3,1.1.3; Canon EOS M,202,  CF-SanDisk Extreme PRO,160MB/s, 256GB, SD-SanDisk Extreme Pro, 170MB/s, 128GB.

masc

@vstrglv: can't help with compiler.app, but what was the problem on Windows? Which Qt version did you use? What compiler did you use?
5D3.113 | EOSM.202

ML700D

Quote from: masc on September 20, 2022, 12:32:16 PM
Static: uses static Qt libraries compiled into the exe. Crosscompiled from bouncyballs linux OS
Dynamic: uses dynamic Qt libraries, dll files. Compiled from my windows OS

Qt version is different between both MLVApp versions. If one doesn't work for you, try the other.
i see,
both work for me... thanks masc.
EOS 700D