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 1 Guest are viewing this topic.

masc

1) You can do this with mostly every NLE. Atm MLVApp is not able to do this.
2) An undo for all actions is not implemented.
3) MLVApp writes the processed colors directly to the viewer frame. Here only the OS could change the resulting color via monitor profile. For other applications I can't tell for sure how it works. But here I got the same result for all applications on all macs around me. (Just know that Windows is more tricky here, where just Quicktime shows the correct color...)
5D3.113 | EOSM.202

2blackbar

Im leaving settings for modifying mlvapp source here for myself but also for others whod like to change default stuff.
I did modificatioons cause default quality wasnt enought for me or was too high that resulted in very slow playback (h265 very high or very compressed quality, nothing inbetween)
I did that:

changed defaults in mainwindow.cpp:
        if( m_codecOption == CODEC_H265_H_MOV || m_codecOption == CODEC_H265_H_MP4 || m_codecOption == CODEC_H265_H_MKV )
            quality = 18;
        else
            quality = 20;

Second value is the medium setting ( high number - less quality and the lower numbers than defaults - the more data is put into compression) 20 is ok for me at this point in time for medium.
I really recommend to export in 265 10bit, it nicely retains a lot of colours from raw files.


Second thing i had to take care of was jpeg export for single frames, i put through mlvapp a lot of DNG files from camera and from my phone, so i needed much better compression so instead of default one , i changed it to 97 (100 is best ).

To do this i modified in singleframeexportdialog.cpp:

        QImage( ( unsigned char *) imgBufferScaled8, getMlvWidth(m_pMlvObject) * stretchX, getMlvHeight(m_pMlvObject) * stretchY, QImage::Format_RGB888 )
                .save( fileName, "jpg", 97 );


Thats about it, im leaving this here in case ill get back to new builds of mlvapp trying to apply these changes and i forget what i modified.
Also one thing i forgot but managed to remind myself today, i had already folder with all needed dlls and files for exe but i exported/compiled in x86 which failed to start with these dlls, i have to remember that its x64 build and change mingw to be x64 in qtcreator.


IDA_ML

I would like to report a bug which is not very important but quite annoying since you may loose your work if you have not saved it.  It occurs with the Windows x64 version 1.13 of MLVApp. 

When you click on a file which you would like to delete from your disk and select the "Delete from disk" option, MLVApp crashes.  I tested that on two different computers - one with Win 10 and another one with Win 7.

The "Remove" option works on both of them.  It removes the file from the session.

masc

Thanks for reporting. Did you try the latest commits on your own? There has been a fix, close to this topic. Would be nice to know if it is worse, better, or the same with it.
5D3.113 | EOSM.202

IDA_ML

Quote from: masc on November 07, 2021, 09:22:34 AM
Thanks for reporting. Did you try the latest commits on your own? There has been a fix, close to this topic. Would be nice to know if it is worse, better, or the same with it.

I am not sure what you mean by "latest commits".  Did you upload an updated version 1.13 linked in the 1-st post or you mean something else?

masc

Quote from: IDA_ML on November 08, 2021, 09:34:24 PM
I am not sure what you mean by "latest commits".  Did you upload an updated version 1.13 linked in the 1-st post or you mean something else?
https://github.com/ilia3101/MLV-App/commits/master
5D3.113 | EOSM.202

clubsoda


2blackbar

Hey masc , what should i add to encoding string to make x265 not use more than lets say 40Mb/s when encoding video ? i use this now but when the footage is noisy or theres lots of stuff in focus then i get about 90Mb/s and its slowing down playback , its nice for shots with blurred bgs but for deep focus it can bump up the bitrate depending on how noisy/detailed video is :
if( m_codecOption == CODEC_H265_H_MOV || m_codecOption == CODEC_H265_H_MP4 || m_codecOption == CODEC_H265_H_MKV )
            quality = 17;
        else
            quality = 19;

        program.append( QString( " -r %1 -y -f rawvideo -s %2 -pix_fmt rgb48 -i - -c:v libx265 -preset veryfast -tune fastdecode -crf %3 -tag:v hvc1 -pix_fmt %4 -color_primaries bt709 -color_trc bt709 -colorspace bt709 %5\"%6\"" )
                    .arg( fps )


This was default:
        if( m_codecOption == CODEC_H264_H_MOV || m_codecOption == CODEC_H264_H_MP4 || m_codecOption == CODEC_H264_H_MKV )
            quality = 14;
        else
            quality = 22;

        program.append( QString( " -r %1 -y -f rawvideo -s %2 -pix_fmt rgb48 -i - -c:v libx264 -preset medium -crf %3 -pix_fmt %4 -color_primaries bt709 -color_trc bt709 -colorspace bt709 %5\"%6\"" )
                    .arg( fps )


masc

Hi 2blackbar, not sure if you can set that. Did you read the ffmpeg documentation? You should find all possible options somewhere on there pages... I just know these "quality numbers", but as you wrote the bitrate could change in dependency to your footage.
5D3.113 | EOSM.202

Danne

Tested on M1 pro 14 inch, 10 cores. Fast, very close or actual realtime previewing. Tested eos m clips. 2.8k 24fps, 1080p 48fps, 5k anamorphic.
Great app, great achievement @masc.

IDA_ML

Hello Masc and Danne,

I tried to film some Dual ISO video on my 5D3 using the latest April 1-st, 2021 experimental build by Danne but the file does not get processed properly in MLVApp.  The horizontal lines stay and I get very strange colors in the highlights and midtones.  Here is a sample shot at 12 bit lossless in 1392x2340 anamorphic resolution:

https://we.tl/t-hUeySxwwWO

I get the same results also in other modes.  It looks like the problem occurs with 5D3 Dual ISO files.  Such Dual ISO files from the EOS-M seem to process properly.  So do normal non Dual ISO files.

Could you please take a look?  Thanks.

Danne

Dual iso know to not work corretly with mlvfs code, partially refined to "work" with 10bit and 12bit files. More recent code seems to fix issues but no one knows/have the time to update dualiso code in Mlv App. Dualiso code should be disabled/pauses in Mlv App.

vastunghia

Quote from: IDA_ML on December 05, 2021, 03:45:24 PM
Could you please take a look?  Thanks.

Looks ok to me. Just make sure to set "Vertical Stripes" to "Off". Credit to theBilalFakhouri -- see below:

Quote from: theBilalFakhouri on September 06, 2021, 04:28:54 PM
Turn OFF "Vertical Stripes" from "RAW Correction" tab and you should be fine, I noticed the same problem here, "Vertical Stripes" doesn't work properly in Dual ISO clips and it's ON by default for 5D3 clips.
5D3 for video
70D for photo

IDA_ML

Quote from: vastunghia on December 05, 2021, 04:49:06 PM
Looks ok to me. Just make sure to set "Vertical Stripes" to "Off". Credit to theBilalFakhouri -- see below:

Thank you so much, Vastunghia!  I was not aware of that.  It was an easy fix.  Dual ISO indeed provides a massive dynamc range improvement in 5D3 anamorphic footage and I am really glad, I got it working on my 5D3 footage again. 

Danne

Recent notes when compiling on Monterey(I think it´s 12.1).
Finally managed to compile Mlv App on my arm64 M1 pro, 10 core machine. Starting out with a lot of help from @masc and his post where he published this link about getting qt 5 working with arm64 M1.
https://github.com/bobwolff68/fritzing-app/wiki/Building-Qt-5.15-for-Mac-M1#building-qt-515x-unreleasedopensource

Compiling/configuring will eventually give an issue about missing header files. The fix is following:
https://github.com/Homebrew/homebrew-core/pull/88168#issuecomment-953466312
https://github.com/Homebrew/homebrew-core/pull/88168#issuecomment-953466312
inreplace "qtbase/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h",
              "#include <qpa/qplatformgraphicsbuffer.h>", "#include <CoreGraphics/CGColorSpace.h>\n#include


Commandline tools was a harder nut since it installs version 12.0 and upwards and not possible to go backwards. Luckily 11.3 is also included so a "monkey wrench" solution is possible by excluding 12.0 folder while compiling in the start and then attach 12.0 in the end of the compiling process. Not so nice to do this but relinking or changing files among versions is hard to nail. I noticed that usr/include folder and CoreServices, Frameworks folders are what we could replace with 11.3 versions if one wants to go down that route.

Finally fetching a missing lib and renaming it will fullfill dependencies but we also need to hack the code signing before the app can be opened with:
sudo codesign --force --deep --sign - ~/MLV-App-master/platform/Mlv_app_master/MLV\ App.app/Contents/MacOS/MLV\ App


In the compiler mainly this is happening when dependencies have been installed:
#temp workaround letting me compile Mlv App
sudo mv /Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdk /Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdktmp
sleep 5 && sudo mv /Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdktmp /Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdk &

~/qt5-5.15-macOS-release/qtbase/bin/qmake ~/MLV-App-master/platform/qt/MLVApp.pro \
QMAKE_CC=/opt/homebrew/opt/llvm@13/bin/clang \
QMAKE_CXX=/opt/homebrew/opt/llvm@13/bin/clang++ \
QMAKE_LINK=/opt/homebrew/opt/llvm@13/bin/clang++ \
QMAKE_CFLAGS+=-fopenmp \
QMAKE_CFLAGS+=-ftree-vectorize \
QMAKE_CXXFLAGS+=-fopenmp \
QMAKE_CXXFLAGS+=-std=c++11 \
QMAKE_CXXFLAGS+=-ftree-vectorize \
INCLUDEPATH+=-I/opt/homebrew/opt/llvm@13/include \
LIBS+=-L/opt/homebrew/opt/llvm@13/lib LIBS+=-lomp \
QMAKE_APPLE_DEVICE_ARCHS=arm64 \
sleep 2
/usr/bin/make -j 15 && ~/qt5-5.15-macOS-release/qtbase/bin/macdeployqt ~/MLV-App-master/platform/Mlv_app_master/MLV\ App.app && \
make clean

cp /opt/homebrew/Cellar/llvm/13.0.0_1/lib/libc++abi.1.0.dylib ~/MLV-App-master/platform/Mlv_app_master/MLV\ App.app/Contents/Frameworks/
mv ~/MLV-App-master/platform/Mlv_app_master/MLV\ App.app/Contents/Frameworks/libc++abi.1.0.dylib ~/MLV-App-master/platform/Mlv_app_master/MLV\ App.app/Contents/Frameworks/libc++abi.1.dylib
sleep 1
sudo codesign --force --deep --sign - ~/MLV-App-master/platform/Mlv_app_master/MLV\ App.app/Contents/MacOS/MLV\ App



Source code:
https://bitbucket.org/Dannephoto/mlv_app_compiler-git/src/Monterey/

Downloadable compiler version:
https://bitbucket.org/Dannephoto/mlv_app_compiler-git/downloads/mlv_app_compiler_Monterey.dmg

EDIT:
Note to self. xcode needed but command line tools as well and path absoluteluy needs to be set to:
sudo xcode-select -s /Library/Developer/CommandLineTools
https://stackoverflow.com/questions/9477860/xcode-select-switch-path-when-using-cli-toolkit

takoyaki

Hello. I have a question.

Why is the Linear Profile of the MLV App brighter than the output of dcraw or DaVinci Resolve?

MLV App's Linear looks brighter.

vastunghia

Sorry for asking something potentially silly that may have already been answered before... but is there any reason why MLV App will produce such huge files, at least with H.265 10bit 4:2:0 via ffmpeg "high quality"?

Comparing same Raw footage (slightly upscaled to UHD) rendered in DaVinci Resolve (H.265 Master preset, with Main10 profile and automatic quality) and in MLV App, I get 16 Mbps with the former and a whopping 126 Mbps with the latter :o.

Now I understand that the question might be turned upside down, i.e. is there any reason why DVR produces a lower bit-rate video output? But the fact is, if I inspect carefully the two results, I am unable to see any difference in fine details.

Thank you
5D3 for video
70D for photo

masc

This question can't really be answered - "huge and small" is relative to a users definition. I can't tell what DVR does - but I can explain what MLVApp exports. If you're interested, you can read here - MLVApp uses ffmpeg for H.265 export.
https://trac.ffmpeg.org/wiki/Encode/H.265

The size and quality of the file is defined by using the CRF (Constant Rate Factor). 1=lossless, up to 51(very low quality). For MLVApp we played a lot when implementing and we've finally chosen 18 (high) and 24 (medium). So maybe the lower MLVApp setting could still be higher than the DVR "high" setting... who knows... We would be able to export the files much bigger, but also smaller when changing the CRF numbers.

If you like to play on your own with those numbers: try to compile MLVApp on your system and find the numbers in "MainWindow.cpp" line 2311.
5D3.113 | EOSM.202

ML700D

if mlvapp could implement existing plugin (third party?) like in premiere pro or other NLE it would be great I think.
EOS 700D

Quentin

If I choose to export in DNxHD, a window-command prompt opens entering an infinite loop.
If I close the window, the exporting starts however the files generated are corrupted.

Please fix this :(

masc

@ML700D: do you know any free and easy API? What kind of plugin?

@Quentin: the command promt is not in infinite loop. It is a Windows-only feature to tunnel data to ffmpeg. Wait until export is ready. If you close it, you'll get corrupted or no data. Can't see any bug here.
5D3.113 | EOSM.202

Quentin

What if it takes forever ?
In the past, when I used previous version of MLVApp I didnt take so long.

masc

Maybe you should tell more about your system, the MLV file, the receipt, the export settings, camera settings, ...
DNxHD works fine here (exports nearly in realtime), same for all other ffmpeg based codecs. So it must be something else on your side.
5D3.113 | EOSM.202

ML700D

Quote from: masc on January 20, 2022, 06:55:59 PM
@ML700D: do you know any free and easy API? What kind of plugin?

denoiser I think, I found this freeware but not try it yet. https://bit.ly/32jqXZG

or like this one https://github.com/NatronGitHub/openfx-misc (OFX plugin)
EOS 700D

masc

OFX is extremely difficult - at least too difficult for me. If someone can help integrating that, please let me know. I tried that in past and gave up after a few weeks.
5D3.113 | EOSM.202