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 3 Guests are viewing this topic.

Danne

Super nice!
QuoteI prepared nearly everything for batch export. I created "sessions", what means you can open many clips to the app, adjust the sliders independant for each clip, you can open and save these sessions

kyrobb

Wow. Even more incredible! Amazing work masc! Save-able sessions is genius!

pc_bel

Masc!!!
Thanks fot all your dedication!!!! (Same for Ilia3101 ;) )

masc

Here comes the MLV App cross platform GUI v0.5 alpha. The nice engine from Ilia3103 is still the same, but the GUI was growing:

- Receipts: copy and paste the slider settings from one clip to another, reset settings to default
- Sessions: new, open & save (with receipts), import MLV to session, delete selected MLVs from session
- Export selected clips from session at once
      - For batch export the filename stays equal to the MLV, but with .mov ending, folder is selectable
      - Free filename at single file export
- "Near-to-fullscreen-mode", by pressing S and E (makes right and left sidebar un-/visible)
- Context menus on picture and scope for easier control
- Popup on each slider value label for typing the value
- Some bugfixes

Problems:
- Real fullscreen is implemented, but so buggy (a known Qt problem, the documentation tells) -> disabled for this version
- Still problems on Windows with files >2GB
- Caching is disabled on both, Win & OSX, because I had lots of problems when changing the MLV.

https://github.com/ilia3101/MLV-App/releases/tag/QTv0.5alpha

Have fun. I hope there are not too many bugs inside...  :P
5D3.113 | EOSM.202

DeafEyeJedi

Thanks for keeping up with us trolling over this thread. I just tested briefly w v0.5 alpha and noticed that if I try to import by clicking on the Folder Icon (it wont let me choose anything since it's all greyed out even the MLV's) and if I instead do File > Import MLV (Command+I) which then works like normal. Is this to be expected?
5D3.113 | 5D3.123 | EOSM.203 | 7D.203 | 70D.112 | 100D.101 | EOSM2.* | 50D.109

masc

Yes, that is okay. I changed the Icon, because I think the MLV is imported and the main file type is the session. That is different to the version before. The "Film"-Icon is for importing the MLV files now (4th icon).
5D3.113 | EOSM.202

kyrobb

Thanks again for all your hard work! I'd make another suggestion but I honestly couldn't if I tried. This app wonderfully simplifies my workflow and is working beautifully so far!

bouncyball

@Ilia3101, masc:

Hey guys great progress!
Can you provide me with any Linux/GCC Makefile for easy kickstart?
I want to compile QT version on linux.

br
bb

masc

Quote from: bouncyball on August 12, 2017, 02:05:40 PM
Can you provide me with any Linux/GCC Makefile for easy kickstart?
I want to compile QT version on linux.
Great! You don't need a makefile. You just need Qt (with QtCreator), zlib and libpng (development version, I use 1.6.31). Then you open the .pro file in the folder platform/qt/ and with some luck you are able to compile. When I tried that on Linux, I had no luck, because my Ubuntu was to old. I had only a Qt4.x, but you need 5.x (I know that it works on 5.6 and later on Win&OSX).
First you will have to add a equivalent for in the .pro file:
macx: INCLUDEPATH += /usr/local/include/libpng16/
macx: LIBS += -L/usr/local/lib/ -lz -lpng

You can write something starting with
linux-g++*: ....
and you won't break the Windows and Mac version.
The libraries from Ilia will be compiled first. I had the same problems on linux as on windows: some of the files will compile only with (have a look in the *.pro):
linux-g++*: QMAKE_CFLAGS_RELEASE += -msse2
the other files only with:
linux-g++*: QMAKE_CFLAGS_RELEASE += -msse2 -std=c99
So activate the first line, compile (will end with errors), activate the second line, compile again and it should work. Maybe anyone knows how to set the flags independently for different source code files... I don't know ;)
With some luck that's it and you are able to open it on Linux. Maybe you know how to build a complete package for distribution.
Good luck!

Edit: one more thing: It won't start from QtCreator without a little trick: in Creator, when the project is opened: go to the left "Project",  chose your Dev-Kit, chose Run, and there is a checkbox... don't know how it is named in english... maybe something with "Library path... DYLD_LIBRARY..." uncheck it and it will run in Creator.
5D3.113 | EOSM.202

bouncyball


12georgiadis

crashing everytime I try to open lj92 mlv :/ (OS X el capitan 10.11.6)

masc

Quote from: 12georgiadis on August 13, 2017, 10:51:08 AM
crashing everytime I try to open lj92 mlv :/ (OS X el capitan 10.11.6)
Could you please provide such a file? (A small one please ;))
5D3.113 | EOSM.202

12georgiadis

Quote from: masc on August 13, 2017, 11:16:01 AM
Could you please provide such a file? (A small one please ;))

Ok I'm doing it asa I can reach décent connexion (I'm making a shooting in india now :) )


Envoyé de mon iPhone en utilisant Tapatalk

bouncyball

@masc: I've managed to compile "MLV App" for linux with QT 5.9.1

1. Linux section in MLVApp.pro looks like this:

# Linux
linux-g++*: QMAKE_CFLAGS_RELEASE += -O3 -msse4.1 -mssse3 -msse3 -msse2 -msse
linux-g++*: INCLUDEPATH += /usr/local/include/
linux-g++*: LIBS += -L/usr/local/lib/ -lz -lpng

Compiled/installed zlib and libpng and MLV App compiles smoothly on the very first pass. No other hoop jumping needed (with about 30 warnings though).

2. I had to add "*.MLV" in dialog because file names are case sensitive here:

void MainWindow::on_actionOpen_triggered()
{
    //Stop playback if active
    ui->actionPlay->setChecked( false );

    //Open File Dialog
    QStringList files = QFileDialog::getOpenFileNames( this, tr("Open one or more MLV..."),
                                                    m_lastSaveFileName.left( m_lastSaveFileName.lastIndexOf( "/" ) ),
                                                    tr("Magic Lantern Video (*.mlv *.MLV)") );


3. Some more stuff: when "MainWindow::openMlv( QString fileName )" invoked first time there is no MLV object exists hence "freeMlvObject( m_pMlvObject )" causes immediate core dump. I don't actually understand why it works for mac or mingw :P. Commenting out "free" does a trick and MLV loads and can be processed. However If you need to import second MLV, dialog freeses. I guess it's expected. Can you collaborate on this issue?

void MainWindow::openMlv( QString fileName )
{
    //Set window title to filename
    this->setWindowTitle( QString( "MLV App | %1" ).arg( fileName ) );

    //disable drawing and kill old timer and old WaveFormMonitor
    killTimer( m_timerId );
    delete m_pWaveFormMonitor;
    m_dontDraw = true;

    /* Destroy it just for simplicity... and make a new one */
    //freeMlvObject( m_pMlvObject );

    /* Create a NEW object with a NEW MLV clip! */
    m_pMlvObject = initMlvObjectWithClip( fileName.toLatin1().data() );


4. When exporting to prores - everytime this process stops on 50% of PNGs files. Don't know why yet :)

regards
bb

12georgiadis


masc

Quote from: bouncyball on August 14, 2017, 07:00:14 PM
@masc: I've managed to compile "MLV App" for linux with QT 5.9.1

1. Linux section in MLVApp.pro looks like this:

# Linux
linux-g++*: QMAKE_CFLAGS_RELEASE += -O3 -msse4.1 -mssse3 -msse3 -msse2 -msse
linux-g++*: INCLUDEPATH += /usr/local/include/
linux-g++*: LIBS += -L/usr/local/lib/ -lz -lpng

Compiled/installed zlib and libpng and MLV App compiles smoothly on the very first pass. No other hoop jumping needed (with about 30 warnings though).

2. I had to add "*.MLV" in dialog because file names are case sensitive here:

void MainWindow::on_actionOpen_triggered()
{
    //Stop playback if active
    ui->actionPlay->setChecked( false );

    //Open File Dialog
    QStringList files = QFileDialog::getOpenFileNames( this, tr("Open one or more MLV..."),
                                                    m_lastSaveFileName.left( m_lastSaveFileName.lastIndexOf( "/" ) ),
                                                    tr("Magic Lantern Video (*.mlv *.MLV)") );


3. Some more stuff: when "MainWindow::openMlv( QString fileName )" invoked first time there is no MLV object exists hence "freeMlvObject( m_pMlvObject )" causes immediate core dump. I don't actually understand why it works for mac or mingw :P. Commenting out "free" does a trick and MLV loads and can be processed. However If you need to import second MLV, dialog freeses. I guess it's expected. Can you collaborate on this issue?

void MainWindow::openMlv( QString fileName )
{
    //Set window title to filename
    this->setWindowTitle( QString( "MLV App | %1" ).arg( fileName ) );

    //disable drawing and kill old timer and old WaveFormMonitor
    killTimer( m_timerId );
    delete m_pWaveFormMonitor;
    m_dontDraw = true;

    /* Destroy it just for simplicity... and make a new one */
    //freeMlvObject( m_pMlvObject );

    /* Create a NEW object with a NEW MLV clip! */
    m_pMlvObject = initMlvObjectWithClip( fileName.toLatin1().data() );


4. When exporting to prores - everytime this process stops on 50% of PNGs files. Don't know why yet :)

regards
bb
@bouncyball
Great!!! Thank you!
1.&2. I'll add that.
3. That's strange. I'll have a look at that.
4. Ups... I forgot to tell you, that you need ffmpeg. In the function startExport() it is called... I think we need a #ifdef for Linux then.

@12georgiadis
Thx. I'll have a look!
5D3.113 | EOSM.202

masc

Quote from: bouncyball on August 14, 2017, 07:00:14 PM
3. Some more stuff: when "MainWindow::openMlv( QString fileName )" invoked first time there is no MLV object exists hence "freeMlvObject( m_pMlvObject )" causes immediate core dump. I don't actually understand why it works for mac or mingw :P. Commenting out "free" does a trick and MLV loads and can be processed. However If you need to import second MLV, dialog freeses. I guess it's expected. Can you collaborate on this issue?
@bouncyball:
For 3.: I don't find a reason why that crashes on Linux. The pMlvObject exists, it comes from initLib(), which is called in the constructor. And freeMlvObject frees only the memory which initMlvObject() allocated. Can you try in which line it crashes?

@12georgiadis:
For me the app does not crash, but I get a clean darkred single colour picture for all frames. It seems to be a 14bit lossless file, is that right?
Edit: if I look into the code of your file, there is nearly everywhere the same data... are you sure this file is not currupted in any way? Do get it opened with another application?
5D3.113 | EOSM.202

12georgiadis

Quote from: masc on August 14, 2017, 10:56:21 PM
@bouncyball:
For 3.: I don't find a reason why that crashes on Linux. The pMlvObject exists, it comes from initLib(), which is called in the constructor. And freeMlvObject frees only the memory which initMlvObject() allocated. Can you try in which line it crashes?

@12georgiadis:
For me the app does not crash, but I get a clean darkred single colour picture for all frames. It seems to be a 14bit lossless file, is that right?
Edit: if I look into the code of your file, there is nearly everywhere the same data... are you sure this file is not currupted in any way? Do get it opened with another application?

Yes, I can open it with mlvfs + mlrawviewer/resolve/cliphouse etc.


Envoyé de mon iPhone en utilisant Tapatalk

masc

Quote from: 12georgiadis on August 15, 2017, 05:46:10 AM
Yes, I can open it with mlvfs + mlrawviewer/resolve/cliphouse etc.

Okay. I can open it in mlvfs+resolve, too. But it looks 100% the same as in MLVApp (only white balance adapted to the result of resolve).



Sorry, but I still think your file is corrupted!

Edit: MlRawViewer also shows the same.
5D3.113 | EOSM.202

bouncyball

@masc

Quote from: masc on August 14, 2017, 10:56:21 PM
For 3.: I don't find a reason why that crashes on Linux. The pMlvObject exists, it comes from initLib(), which is called in the constructor. And freeMlvObject frees only the memory which initMlvObject() allocated. Can you try in which line it crashes?
Crash been caused by fclose(video->file) in freeMlvObject()

This patch is working:

/* Free all memory and close file */
void freeMlvObject(mlvObject_t * video)
{
    isMlvActive(video) = 0;

    /* Close MLV file */
    if(video->file) fclose(video->file);


I wanted to patch it like this:

    if(video->is_active) fclose(video->file);

but, unfortunatelly as I understand, "is_active" field of "mlvObject_t" never used in code yet ;) (not used in openMlvClip() either)

Now I can load several MLVs without a problem. Next is to test it with ffmpeg :D

bb

bouncyball

Putting ffmpeg side by side with MLV App binary solved exporting stuck at 50% issue.

BTW no slash "\ -> /" fixing in PATH needed.

So exporting is working fine :)

12georgiadis

Quote from: masc on August 15, 2017, 08:58:00 AM
Okay. I can open it in mlvfs+resolve, too. But it looks 100% the same as in MLVApp (only white balance adapted to the result of resolve).



Sorry, but I still think your file is corrupted!

Edit: MlRawViewer also shows the same.

Excellent, now working with another clip without crashing ! Good app for preview ! Now I can get rid of mlrawviewer ;-) Do you think you'll add cdng export and fixing issues settings ?
thx !


masc

Quote from: bouncyball on August 15, 2017, 01:27:14 PM
This patch is working:

/* Free all memory and close file */
void freeMlvObject(mlvObject_t * video)
{
    isMlvActive(video) = 0;

    /* Close MLV file */
    if(video->file) fclose(video->file);

Superb! Thank you so much! I changed that and commited it into the repos.

Quote from: bouncyball on August 15, 2017, 02:43:01 PM
BTW no slash "\ -> /" fixing in PATH needed.
I don't get that. What did you do? \" is just a " in QString. It is for getting spaces in the paths and filenames to work, for example.

But very cool, that you got it working on Linux! Is it possible to make a kind of package, or has it to be compiled always for using it on Linux? I'm not deep enough in Linux...

Quote from: 12georgiadis on August 15, 2017, 02:52:59 PM
Excellent, now working with another clip without crashing ! Good app for preview ! Now I can get rid of mlrawviewer ;-) Do you think you'll add cdng export and fixing issues settings ?
thx !
Hej, cool, fine that it works for you too now. Thanks. MlRawViewer is still better in performance, because it uses GPU - we don't do for now.

Can cdng hold processed picture data? I thought it is also a kind of RAW, that is why I did not think about exporting cdng yet (don't know if Ilia3103 did).

What do you mean with "fixing issues settings"?

We just started developping this little app, we'll see where our way goes.  ;D
5D3.113 | EOSM.202

bouncyball

Quote from: masc on August 15, 2017, 06:39:23 PM
I don't get that. What did you do? \" is just a " in QString. It is for getting spaces in the paths and filenames to work, for example.
Ah, I meant there is no need to handle Windows/Unix slash differences in paths separately. I guess QT lib does it for you.

Quote from: masc on August 15, 2017, 06:39:23 PM
But very cool, that you got it working on Linux! Is it possible to make a kind of package, or has it to be compiled always for using it on Linux? I'm not deep enough in Linux...
Well if we link MLV App statically with libpng16 and zlib libraries It should run on any 64bit linux system.

Also It's possible to make deb or rpm package from it, maybe I'll try if I have more time :). It's just have some dependencies: QT, libegl1-mesa, pthread, zlib1, libpng16.

Btw, when proggie's running every slider movement causes lots of debug info output on stdout like:

[ 1.6808, 0.0000, 0.0000 ]
[ 0.0000, 1.0000, 0.0000 ]
[ 0.0000, 0.0000, 1.3847 ]
[ 2.0365, 0.0000, 0.0000 ]
[ 0.0000, 1.0000, 0.0000 ]
[ 0.0000, 0.0000, 1.0108 ]
[ 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 ]
m_lastActiveClipInSession 0


regards
bb

masc

Quote from: bouncyball on August 15, 2017, 07:32:33 PM
Ah, I meant there is no reason to handle Windows/Unix slash differences in paths separately.

Ah okay. Did I handle that sparately anywhere?

Quote from: bouncyball on August 15, 2017, 07:32:33 PM
Well if we link MLV App statically with libpng16 and zlib libraries It should run on any 64bit linux system.
Also It's possible to make deb or rpm package from it, maybe I'll try if I have more time :). It's just have some dependencies: QT, libegl1-mesa, pthread, zlib1, libpng16.

That would be really cool! Hope you'll find time... ;)

Quote from: bouncyball on August 15, 2017, 07:32:33 PM
Btw, when proggie's running every slider movement causes lots of debug info output on stdout like:

[ 1.6808, 0.0000, 0.0000 ]
[ 0.0000, 1.0000, 0.0000 ]
[ 0.0000, 0.0000, 1.3847 ]
[ 2.0365, 0.0000, 0.0000 ]
[ 0.0000, 1.0000, 0.0000 ]
[ 0.0000, 0.0000, 1.0108 ]
[ 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 ]
m_lastActiveClipInSession 0


Yes, right. Most of that comes from Ilias code. But that is no problem to switch off. Maybe we could implement some #ifdef DEBUG or whatever around.
5D3.113 | EOSM.202