Coder Social home page Coder Social logo

ilia3101 / mlv-app Goto Github PK

View Code? Open in Web Editor NEW
277.0 21.0 30.0 511.69 MB

All in one MLV processing app.

Home Page: https://mlv.app/

License: GNU General Public License v3.0

Makefile 0.20% C 37.46% Objective-C 3.79% C++ 53.79% QMake 0.49% Shell 2.95% HTML 0.72% CMake 0.60%
image-processing video-processing raw-video magiclantern magic lantern mlv raw colour c

mlv-app's Introduction

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ MLV App ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ

What is MLV App? Lightroom, but for Magic Lantern MLV Video (and open source and cross platform)

Lates Release

Qt&5 Qt&6

Commit Activity Last Commit Contributors

Open Issues Closed Issues

Open PRs Closed PRs

MLV App

Useful links

Features ๐Ÿ’ฅ

  • Import MLV files
  • Support for spanned mlv (.m00, .m01, ...)
  • Support for lossless mlv
  • Support for any bit depth (โ€ฆ, 10, 12, 14bit)
  • Demosaic algorithms: None, Simple (fastest), AHD, multithreaded bilinear and AMaZE; and highly optimized LMMSE, DCB, RCD and IGV offered by librtprocess
  • Processing with many parameters (exposure, contrast, white balance, clarity, vibrance, saturation, dark & light adjustments, highlights & shadows, gradation curves, sharpen, hue vs. hue/saturation/luminance curves, toning, โ€ฆ)
  • Processing filters for film emulation powered by neural networks ๐Ÿ‘ป
  • Processing in sRGB or several LOG
  • RAW corrections (fix focus & bad pixels, chroma smoothing, pattern noise, vertical stripes, adjust RAW black & white level)
  • Autodetection for focus pixels and vertical stretching
  • MLV darkframe subtraction (with external / internal darkframe)
  • Support for dual ISO
  • Support for HDR (blending on ffmpeg export)
  • Whitebalance picker
  • Show clip information
  • Analysis: histogram (including markers for under-/overexposed), waveform monitor, RGB parade, vector scope
  • Session: open, import to, delete from, save, copy receipt, paste receipt (also batch paste), reset receipt, receipt file import & export, preview pictures for all clips
  • Video playback in 2 modes: show each frame or drop frame mode (a kind of realtime playback which shows as many frames your computer can render)
  • Audio playback in video drop frame mode
  • Loop playback
  • Show next frame, previous frame and scroll though timeline
  • Label for timecode and duration of edited clip
  • Auto load white balance, if MLV was filmed at sunny, shade, cloudy, thungsten, fluorescent, flash or kelvin
  • 1D/3D LUT (.cube) support
  • Single frame (3x)8bit PNG and Cinema DNG (compressed/lossless) export
  • Clip export via ffmpeg 10bit ProRes 422 (Proxy, LT, Standard, HQ), ProRes 4444, RAW AVI, 8bit H.264 and 8/10/12bit H.265, 16bit TIFF sequence, DNxHD, DNxHR, JPEG2000, MotionJPEG, 10/12/16bit HuffYUV 4:4:4, 10bit 4:2:2 & 12bit 4:4:4 CineForm, VP9; all with or without audio
  • macOS only: Clip export via Apple AVFoundation 12bit ProRes 422, ProRes 4444 and 8bit H.264, all with or without audio
  • Clip export to (10/12/14/16bit for Dual ISO) Cinema DNG files (with default or Davinci Resolve naming). Exporting modes: uncompressed, lossless and fast pass (in the last one no RAW correction, processing or decompressing/compressing is done, raw data copied as is from MLV to DNG uncompressed or lossless).
  • MLV export (fast pass, compressed, averaged frame (for darkframe creation), extract internal darkframe)
  • Audio only export
  • Clip trimming support (Cut In and Cut Out) for any export mode (ffmpeg, AVFoundation, cDNG, MLV) including audio syncing with correct timecode.
  • Frame rate override for export and playback
  • Aspect Ratio: stretch width (1.33x, 1.5x, 1.75x, 1.8x, 2.0x) and height (0.3x, 1.67x, 3.0x, 5.0x auto detected for latest MLVs) for playback and export per clip in session. Manually changed AR is inserted to exported cDNG header.
  • Upside down transformation
  • Resize frame resolution for (batch) export using AVIR resizing algorithm
  • Clip batch export
  • Smooth artifacts filter (minimizes moiree) for all ffmpeg export codecs, realized by ffmpeg filter combination
  • 2D median denoiser (don't expect wonders!)
  • Recursive bilateral filter (works as denoiser) with Luminance, Chroma and Range parameter
  • Vignette effect / correction with variable shape and chromatic abberation correction
  • Post export scripting on macOS (thx @dannephoto)
  • Zoom: fit to screen, 100% and free zoom, scroll through picture
  • Zebras
  • Create and load MAPP files (this files include all required information from the original MLV, plus video and audio frame index. If .MAPP file already created, importing is lot faster especially on slower HDD)
  • FCPXML Import Assistant: helps importing the MLV files, which were used as proxy in a NLE project
  • FCPXML Selection Assistant: helps selecting the MLV files, which were or were not used as proxy in a NLE project
  • Update checker

Compiling ๐Ÿ’ฅ

Qt App macOS (Intel based)

  • install XCode depending on your OSX, or llvm via brew for multithreading
  • install Qt5 (5.6 .. 5.15.2) or Qt6 (6.4 or later)
  • open platform/qt/MLVApp.pro in QtCreator
  • Build and Start
  • OR download and doubleclick easy-to-use compiler app from @dannephoto

Qt App macOS (Apple Silicon based, with Qt5)

  • install command line tools (SDK 11.3 is known to work)
  • install brew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • install dependencies brew install pcre2 harfbuzz freetype
  • install compiler brew install llvm@11, add entries to PATH as written in terminal output
  • install QtCreator brew install --cask qt-creator
  • clone qt sources git clone git://code.qt.io/qt/qt5.git and cd qt5 and git checkout 5.15 and ./init-repository
  • build qt cd .. and mkdir qt5-5.15-macOS-release and cd qt5-5.15-macOS-release and ../qt5/configure -release -prefix ./qtbase -nomake examples -nomake tests QMAKE_APPLE_DEVICE_ARCHS=arm64 -opensource -confirm-license' and 'make -j15
  • configure QtCreator build kit with installed llvm@11 and compiled qt
  • open platform/qt/MLVApp.pro in QtCreator
  • uncomment section for Apple Silicon in MLVApp.pro
  • Build and Start

Qt App macOS (Apple Silicon based, with Qt6)

  • same as Qt App macOS (Intel based)

Qt App Windows

  • install Qt5 (Win32: 5.6 .. 5.15.2, Win64: 5.13.2 .. 5.15.2) or Qt6 (6.5 or later) with MinGW32/64 compiler
  • unpack ffmpegWin.zip in platform/qt/FFmpeg (and copy it later into build directory)
  • open platform/qt/MLVApp.pro in QtCreator
  • Build and Start

Qt App Linux (generally)

  • install Qt5 (5.6 .. 5.15.2) or Qt6 (6.4 or later) and ffmpeg (we use v3.3.2)
  • cd platform/qt/
  • qmake MLVApp.pro or equivalent (depending on distro and version and...)
  • make -j$(nproc)
  • ./mlvapp and have fun

A detailed guide for compiling MLV-App on Linux can be found here (thanks to @seescho).

If you have a Debian based distro, these packages will give you everything you need:

sudo apt install qt5-default qtchooser qtmultimedia5-dev qt5-qmake

(tested on Ubuntu 20.04 and ChromeOS linnux)

Cocoa App (very very deprecated)

git clone https://github.com/ilia3101/MLV-App.git
cd MLV-App/platform/cocoa
make app -j4

The Code

All the MLV stuff is in src/mlv

Image processing is in src/processing

Other stuff also in src/...

Platform specific/GUI things in platform/...

A note about code style

You may notice a strange mixture of these styles:

  1. thisNameStyle
  2. this_name_style

The rule I have used in the libraries is: public functions use the thisNameStyle, and private functions use this_one. Keep it in mind if you're going to be adding something major.

Thanks for reading README.md

๐Ÿธ

mlv-app's People

Contributors

alexmyczko avatar bilalfakhouri avatar bouncyball-git avatar dannephoto avatar esoha-nvidia avatar faresmehanna avatar ilia3101 avatar masc4ii avatar notthewave avatar orfeas-a avatar reticulatedpines avatar simonsegerblomrex avatar so-rose avatar stefantalpalaru avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mlv-app's Issues

MLVApp: copy receips to a file

I think, it could be useful, to copy receips to files and load them from there, if needed. So I can create different receips for my different needs and start my work with them in a very easy way.

Memory leak (in llrawproc?)

Every time I open a mlv the used RAM by MLV App is approx. 10MB higher. If I disable RAW correction the used memory stays approx. the same.

MLV-App QT uses all available memory on OSX

Hello, yesterday I spent the day filming more raw video in 3k / 3.5k on my 5d3. In total I shot 64 short video's with a duration of between 20 and 180 seconds. I edited each of these MLV's in MLV-App, carefully avoiding the pink highlights issue by increasing the light strength.
I then set all MLV's to export overnight. This morning, when I went to see how far the process was, my Mac Pro was frozen. MLV-App had used all my systems' memory.

See this screenshot from iStat menus

As you can see, MLV-App tries to use a bit over 60 gigabyte memory. My Mac Pro has 32 gigabyte of physical memory, so Mac osx allocated as much virtual and compressed memory as it could.

It probably is not meant to use that much memory, hence this report.

TL;DR
Set MLV-App QT to export 64 3k raw MLV's to mov on osx.
MLV-APP used all available memory, causing Mac osx to freeze.

QtApp: Contextmenu on graphicsView blockes mouseEvents on anchor

When rightclicking on the picture, selecting 100%, the transformationMatrix (->Zoom) is reset (to 100%). But when the context menu is there, the mouseEvent (which sends the mouse position to the graphicsView) is blocked. This leads to strange behaviour (wrong anchor; anchor is "0,0" -> upper left corner) when not moving the cursor between context menu active and zooming via scrolling.

Release download stats

18	2017-11-22	MLV.App.v0.11.alpha.OSX.zip
3	2017-11-23	MLV.App.v0.11.alpha.Win32.zip
14	2017-11-23	MLV.App.v0.11.alpha.Win64.static.zip
59	2017-11-10	MLV.App.v0.10.alpha.OSX.zip
10	2017-11-10	MLV.App.v0.10.alpha.Win32.zip
67	2017-11-11	MLV.App.v0.10.alpha.WINx64.static.zip
31	2017-10-22	MLV.App.v0.9.alpha.OSX.zip
51	2017-10-22	MLV.App.v0.9.alpha.WINx64.static.zip
6	2017-10-26	MLV.App.v0.9.alpha.WINx86.zip
52	2017-10-21	MLV.App.zip
38	2017-09-22	MLV.App.v0.8.alpha.OSX.zip.zip
9	2017-09-27	MLV.App.v0.8.alpha.x64.Linux.AppImage
74	2017-09-24	MLV.App.v0.8.alpha.x64.Win.static.zip
42	2017-09-23	MLV.App.v0.8.alpha.x86.Win.zip
36	2017-09-25	MLV.App.zip
41	2017-09-13	MLV.App.v0.7.alpha.OSX.zip
46	2017-08-26	MLV.App.zip
8	2017-08-26	MLV.App.zip
16	2017-08-23	MLV.App.app.zip
24	2017-08-22	MLV.App.v0.6.alpha.OSX.zip
64	2017-08-23	MLV.App.v0.6.alpha.x64.Win.zip
8	2017-08-23	MLV.App.v0.6.alpha.x86.Win.zip
21	2017-08-11	MLV.App.v0.5.alpha.OSX.zip
20	2017-08-11	MLV.App.v0.5.alpha.Win32.zip
17	2017-08-07	MLV.App.v0.4.alpha.OSX.zip
3	2017-08-07	MLV.App.v0.4.alpha.Win32.zip
40	2017-08-05	MLV-App.zip
84	2017-08-02	MLV.App.zip
11	2017-07-31	MLV.App.zip
17	2017-07-29	MLV.App.v0.3.alpha.OSX.zip
29	2017-07-29	MLV.App.v0.3.alpha.Win32.zip
4	2017-07-25	MLV.App.zip
12	2017-07-23	MLV.App.v0.2.alpha.OSX.zip
4	2017-07-24	MLV.App.v0.2.alpha.Win32.zip
11	2017-07-24	MLV.App.zip
13	2017-07-21	MLV.App.zip
15	2017-07-20	MLV.App.v0.1.alpha.OSX.zip
11	2017-07-21	MLV.App.v0.1.alpha.Win32.zip
25	2017-07-19	MLV.App.zip
1	2017-07-18	MLV.App.zip
2	2017-07-17	MLV.App.zip
2	2017-07-16	MLV.App.zip
3	2017-07-16	MLV.App.zip
5	2017-07-15	MLV.App.zip
3	2017-07-15	MLV.App.zip
3	2017-07-15	MLV.App.zip
1073	Total Downloads

No audio after 1st loop

While playing back the clip with loop (never ending playback) turned on audio plays only during 1st loop then there is a silence :) Is that expected behavior?

ColorSpace in FFMPEG

For now our ffmpeg export is undefined in terms of colorspace. Some discussion was here:
2e3c119#commitcomment-25700502

  -color_primaries   <int>        ED.V.... color primaries (from 1 to 10) (default unspecified)
     bt709                        ED.V.... BT.709
     unspecified                  ED.V.... Unspecified
     bt470m                       ED.V.... BT.470 M
     bt470bg                      ED.V.... BT.470 BG
     smpte170m                    ED.V.... SMPTE 170 M
     smpte240m                    ED.V.... SMPTE 240 M
     film                         ED.V.... Film
     bt2020                       ED.V.... BT.2020
     smpte428_1                   ED.V.... SMPTE ST 428-1
  -color_trc         <int>        ED.V.... color transfer characteristics (from 1 to 18) (default unspecified)
     bt709                        ED.V.... BT.709
     unspecified                  ED.V.... Unspecified
     gamma22                      ED.V.... BT.470 M
     gamma28                      ED.V.... BT.470 BG
     smpte170m                    ED.V.... SMPTE 170 M
     smpte240m                    ED.V.... SMPTE 240 M
     linear                       ED.V.... Linear
     log                          ED.V.... Log
     log_sqrt                     ED.V.... Log square root
     iec61966_2_4                 ED.V.... IEC 61966-2-4
     bt1361                       ED.V.... BT.1361
     iec61966_2_1                 ED.V.... IEC 61966-2-1
     bt2020_10bit                 ED.V.... BT.2020 - 10 bit
     bt2020_12bit                 ED.V.... BT.2020 - 12 bit
     smpte2084                    ED.V.... SMPTE ST 2084
     smpte428_1                   ED.V.... SMPTE ST 428-1
  -colorspace        <int>        ED.V.... color space (from 0 to 10) (default unspecified)
     rgb                          ED.V.... RGB
     bt709                        ED.V.... BT.709
     unspecified                  ED.V.... Unspecified
     fcc                          ED.V.... FCC
     bt470bg                      ED.V.... BT.470 BG
     smpte170m                    ED.V.... SMPTE 170 M
     smpte240m                    ED.V.... SMPTE 240 M
     ycocg                        ED.V.... YCOCG
     bt2020_ncl                   ED.V.... BT.2020 NCL
     bt2020_cl                    ED.V.... BT.2020 CL
  -color_range       <int>        ED.V.... color range (from 0 to 2) (default unspecified)
     unspecified                  ED.V.... Unspecified
     mpeg                         ED.V.... MPEG (219*2^(n-8))
     jpeg                         ED.V.... JPEG (2^n-1)
  -chroma_sample_location <int>        ED.V.... chroma sample location (from 0 to 6) (default unspecified)
     unspecified                  ED.V.... Unspecified
     left                         ED.V.... Left
     center                       ED.V.... Center
     topleft                      ED.V.... Top-left
     top                          ED.V.... Top
     bottomleft                   ED.V.... Bottom-left
     bottom                       ED.V.... Bottom

Getting rid of libpng with its zlib dependency

I will get rid of the ugly libpng+zlib dependency with pleasure if it's not used anywhere except of one PNG frame export. Besides I added TIFF sequence export and with cool cut in cut out feature exporting of actual PNG frame looses it's importance. I even wanted to ask you @masc4ii to implement the export current DNG but it is also pointless now :)

What do you think guys?

CineForm export?!

Has anybody experience in using CineForm encoder?
As written on ml forum, it is open source now.
https://gopro.github.io/cineform-sdk/
It is better than ffmpeg in terms of using ProRes 422 and 444 (they write 12bit)?
Have you seen a code example how to use it?

MLVApp V0.10 crashes with an arithmetic exception

The crash only occurs, when the picture is very very dark, so that nothing can be seen in the histogramm field.

The problem is located in Histogramm.cpp, lines 93 ff

//Highest Value
    uint32_t highestVal = 0;
    for( uint16_t x = 0; x <= 255; x++ )
    {
        //We scale something in between linear and log
        if( tableR[x] ) tableR[x] = 100.0 * log( tableR[x] ) + tableR[x] / 10.0;
        if( tableG[x] ) tableG[x] = 100.0 * log( tableG[x] ) + tableG[x] / 10.0;
        if( tableB[x] ) tableB[x] = 100.0 * log( tableB[x] ) + tableB[x] / 10.0;
        //and search the highest value
        if( x < 3 || x > 252 ) continue; //but do not normalize at the lowest or highest end
        if( tableR[x] > highestVal ) highestVal = tableR[x];
        if( tableG[x] > highestVal ) highestVal = tableG[x];
        if( tableB[x] > highestVal ) highestVal = tableB[x];
    }
    //Normalize to 100 and Paint
    m_pHistogram->fill( Qt::black );
    for( uint16_t x = 0; x <= 255; x++ )
    {
        tableR[x] = tableR[x] * HEIGHT / highestVal;
        tableG[x] = tableG[x] * HEIGHT / highestVal;
        tableB[x] = tableB[x] * HEIGHT / highestVal;

        for( uint8_t y = 0; y < HEIGHT; y++ )
        {
            QColor color = QColor( Qt::black );
            if( tableR[x] >= HEIGHT - y ) color.setRed( 255 );
            if( tableG[x] >= HEIGHT - y ) color.setGreen( 255 );
            if( tableB[x] >= HEIGHT - y ) color.setBlue( 255 );
            m_pHistogram->setPixelColor( x, y, color );
        }

The black image causes a division by zero in line 111 (highestVal remains at zero). If I initialize highestVal with 1, the problem has gone.

Cinema DNG export

I remember a while ago this topic been discussed on the forum and conclusion was that: first of all MLV App is the processing software (I fully agree with this statement) and let's leave exporting DNGs to other dedicated software. But...

In reality there IS NO cross platform GUI based cute proggie which will do this task for many who can't fiddle with cli and mlv_dump (MLVFS is another story). There is Danne's very cool script based (no full blown gui) project but it also not fully cross platform yet.

So... I thought that because of my quite good experience in this particular cDNG field why not implement this to our lovely MLV App, besides half of the job is already done (llrawproc) ;). I think I can do this quite easily.

What do you think?

Add methods/functions to manipulate llrawproc

Atm there is only the init function in llrawproc, and the llrawproc struct in mlvObject.
To realize changes from GUI to llrawproc the struct must be changed, what can easily result in problems (when doing it wrong).
Better would be having methods or functions (which also filter unwanted input).

When a parameter gets changed, the debayering must run again. (atm realized also by manipulation of mlvObject)

Audio data in the beginning lost

8a454f1
here we discussed that audio and video is not correctly in sync. When shifting the audio one frame later, it fits.

When comparing a clip exported from MLV App to the the same clip exported from MlRawViewer, the video data is identical, but the audio is exactly one frame different, plus there is audio for the first video frame (which would be 0, when shifting the MLV output).
pic

Make displayed settings values more consistent (QtApp)

A few weeks ago I was thinking about this, and I made the change in Cocoa app so that darkStrength, lightStrength appear as if they are in range 0.0-1.0, and made the lighten slider look as if it goes up to 1.0 instead of 0.6, as I think 0-1 makes more sense to a user than 0-22 or some random looking range.
I think the Qt App should also do this to make the user experience a little bit less strange.
I also made the tint range appear like -1.0 to 1.0 instead of -10 to 10, and sharpen 0.0-1.0, but that is not as important.

What do you think @masc4ii?

Add xyY or Lab mode to processing

Currently, sharpening causes pink edges and exaggeration of moire colours on non-5D3 footage, so adding a processing mode where sharpening can be applied only on luminance will reduce many problems.
This would also help avoid getting very bright red or blue noise flakes appearing from the shadows when adding saturation, as it would be kept separate from luminance.

Colour models xyY and Lab are suitable (they separate colour and luma), this will also add loads of new possibilities for processing and colour.
The xyY colour space looks very simple to implement also, will have a demo as soon as possible.

One of the more interesting things I've come up with for the app yet :)

EDIT: As well as causing less false colour, this would also make removing it easy (possibility to blur chroma separately)

AMaZE not working right??

Compare MLV App with amaze and bilinear:

AMaZE bilinear
mlvappamaze mlvappbilinear

You can see amount of colour artifacts increases!!! ...or at least doesn't decrease

Now look at MLRawViewer amaze vs bilinear:

AMaZE bilinear
mlrvamaze mlrvbilinear

Artifacts of colour are reduced.

What might be wrong?
I have had this suspicion for such a long time, but MLRawViewer really pointed it out to me today.

Scroll bar cover buttons

MLV-App Standard style:
The scroll bar covers the very right part of the expanded tabs. darkstyle is OK.

QtApp: Linux compile howto

sudo apt-get install libpng16-dev qtmultimedia5-dev qt5-qmake qtbase5-dev

ubuntu 16.04 with kubuntu packports ppa activated, so qt 5.6.1

I had to change line 22 of MainWindow.cpp to
#include <**libpng16/**png.h>

and line 55 of MLVApp.pro to
linux-g++*: LIBS += -L/usr/local/lib/ -lz -lpng16

then the ususal
qmake-qt5 MLVApp.pro
make

Crash when importing very big files

Report by escho (on Linux):

Maybe you know, that I have problems, importing files bigger than 4 Gbyte. The app crashes.

It crashes in line 61: https://seescho.files.wordpress.com/2017/10/screenshot_20171005_191349.jpg

I commented out line 461 in MainWindow.cpp. Now the app crashes in line 468 in MainWindow.cpp: https://seescho.files.wordpress.com/2017/10/2.jpg

I did another test. I cut the 7,6 G-file using "mlv_dump -fxxxx":

1318frames.MLV run with no problems
1319frames.MLV let the app crash.

Here are the filesizes of the two MLVs:

Code:

edgar@localhost:~/test/frames> ls -l
insgesamt 8440240
-rw-r--r-- 1 edgar users 4319763492  6. Okt 20:57 1318frames.MLV
-rw-r--r-- 1 edgar users 4323038516  6. Okt 20:58 1319frames.MLV

I cannot locate, where the crash with 1319frames.MLV appears, since QT Creator tells me, it cannot find binary debug informations for this stack frame.

I don't have such big files (and also can't create them with my 5D2), so I can't test & debug it here. But sounds like a 32bit variable is used instead of 64bit somewhere (2^32 = 4294967296, what is not so far away from the numbers above).

Questions about export

I was thinking lately and I've got something to ask:

Why we are dragging the PNG lib with this project if QT has QImageWriter class and supports PNG natively? I guess AVFoundation or else also supports it on a Mac.

I've dug a bit to the 'RenderPngTask' stuff and saw that my future suggestion is not that trivial to implement in present working code. However... I want to share the very simple approach (perhaps already thought by you) to the encoder part.

For sure the best way to implement the native encoder/muxer is to use on win/linux libavformat and libavcodec, but as we all know it is complex and time consuming (on a mac there is mac flavors like avfoundation etc).

So, because we already use FFMPEG I thought why can't we make it swallow the PNGs (whatever) trough the named pipe? Run ffmpeg with pipe open and wright to thet pipe from the MLV App. This is gonna eliminate annoying intermediate files and their handling with less effort.

What do you think guys?

Error handling needs more attention.

MLV import error handling implemented. Now QT App is not crashing when MLVs are invalid or even 0 byte in size instead message box gives us a clue about file state. Please review the code.

Here 3 files for testing which causes crash of master branch version before this commit.

Implement new debayer algorithm (possssibly better than AMaZE, or not)

Found the GPL code along with paper here: http://www.ipol.im/pub/art/2015/145/

Currently it is extremely slow (takes minutes for a frame), but I think it can be almost as fast or faster than AMaZE if optimised, as it was written to be as clear as possible, not fast.

Here is a comparison of AMaZE and the new algorithm:

AMaZE New Algorithm
amaze newmethod

Open the images in two tabs, then switch between them (ctrl-tab and ctrl-shift-tab). AMaZE has far more bright blue/yellow artifacts on edges.

And what do we call it? A Demosaicking Algorithm with Adaptive Inter-Channel Correlation isn't too catchy

LUT support

Just a reminder:
It woud be nice to have a 1D & 3D LUT support. How to read .cube files can be found in the Inet easily. But to apply the LUT there is some math to implement...

Win 32bit port broken - crash on import

Since Caching is merged, the 32bit Windows version is not able to open MLV files and crashes. It happens since the very first commits with the new caching.

disabling Amaze for export

My astronomical rawvideos often are very noisy because of high ISO and very small aperture (on 6000 mm focal distance). Amaze gives very good and sharp debayering results on normal pics. But on noisy pics this noise gets amplified, too.

I made a test and forced MLVApp, not to use Amaze for export.

If I compare the results (after stacking with autostakkert and heavy waveletsharping with darktable), the non-amaze-version gives much better results (less noise) than the version with amaze.

So I would be happy to have an option in MLVApp for disabling Amaze for export

Add relative path to MASXML

I have another idea to improve MASXML:

Imagine a folder with MLV files and a MASXML with edits for all of those files (this is how I organise my edits).

If that folder gets moved to a different drive or location, the MASXML no longer gives the correct path to those files, as it specifies absolute file path.

Solution: MASXML should specify absolute and relative file path, that way it's more resilient to changes and moving files around.

Updated Amaze code solves some issues

As you know dualiso part is almost finished. There is a bug in amaze interpolation mode (@masc4ii knows what I'm talking about) I solved this problem with substitution of latest 'amaze_demozaic_RT.c' from a1ex. It took some time but now it works and the bug is disappeared. I had some very old footage from 60D which had artifacts with existing amaze lib and those debayering artifacts also disappeared. Speed is good and I'm almost happy :)

Now, I want to share the source with you to test with mac and windows before we decide to commit these changes to the repo.

@ilia3101, @masc4ii
Please download Modified Source and test thoroughly. Then we decide what to do :)

Wrong audio info for files without audio

Opening a file without audio (e.g. the file EOS100D.MLV which we got from the forum), the file information tells:
doesMlvHaveAudio( m_pMlvObject ) = true
getMlvAudioChannels( m_pMlvObject ) = 0
getMlvSampleRate( m_pMlvObject ) = 0

That does not fit...
The App behaviour may be wrong using this information, for example ffmpeg export with audio export activated can't work because of the empty WAV file.

QtApp: Create color wheels

Some time ago @ilia3101 was asking me, if I could create some color wheels (radial hue vs sat). This should be possible using QPainter. Additionally user interaction has to be handled (MouseClick & Drag on picker).

Win32: caching not working

I tested some functions on Windows with the 32bit version. When enabling caching, the app crashes or the indicator in the statusbar says "idle". :-(
No such problems on OSX.

Add Gradient Adjustment

Inspired by this video: https://vimeo.com/240910267, where I saw some shots where the sky was clearly darkened with a graduated filter.

Opening an issue just to remember.

How it looks in Lightroom:
Lightroom

Would look great in landscapes and stuff.

Of course colour wheels is probably coming before.

Explain and tune current caching mechanism

I need some clarification on caching part of the proggie. Honestly, I dug to this several times and every time I'm looking at it something's bothering me.

Finally I understood what's bothering me: It is the fact that despite of cache is turned off or on from the gui menu, actually it IS always active with all it;s threads and tries to open/read files.

Am I wrong? Can we completely turn it OFF optionally?! It always causes lot of issues...

QTv0.6alpha 1aed542 does not seem to remove pink highlights

Hello! First off, huge huge thank you for building these apps @ilia3101 @bouncyball-git and @masc4ii . ๐Ÿ’ฏ This is sorely needed. I originally thought that footage.app would be the app, but with the whole licensing thing and the developer choosing to go a different direction (which is of course absolutely his right and to be respected), I was afraid that the idea of easy-to-use-mlv-to-something-fcpx-can-use was going out the window.
In comes MLV-app. โค๏ธ

Anyway, I tried the cocoa app on my mac pro 3,1, which looks awesome. But! It currently does not seem to support batch exporting, which is something that I really need after a day of filming. The QT app does support batch quite well.

I corrected my mlv images (5d3 8-10 bit 3,5k on 24-70 2.8) and set MLV-app qt to export some 40 MLV's to mov. Awesome! ๐Ÿ‘

However, after having it run for the night and inspecting the exported mov files, I noticed that the pink highlights are still very much noticeable. I checked the settings, remove highlights was indeed checked. Example, see car to the right

So I think that might be a bug in MLV-App QTv0.6a.

TL:DR
Exported 40 MLV to mov using QTv0.6a. Pink highlights still present. User error or bug?

Future of "Edit" dock area

First it was just a dock area, then we began to add tabs, now we were talking about 3 or 4 tabs, some of them would be very full, other tabs would have only a few elements.

I was thinking about how to do it different. I really like Lightroom and got some inspiration from there: I created collapsable group boxes. This looks like that (proof of concept via a test dialog):
pic

So I would delete the tabs and add some groups... maybe like in the picture:

  • RAW Correction
  • General (LR calls it Basic)
  • Sharpen & Blur (LR calls it Details)
  • Grade

All groups are inside a scrollarea. One of the problems was, that when scrolling over a QSlider, the slider changed its value, and the scrollarea stopped. I implemented a slider which can't be scrolled via mouse.

How do you think about the collapsable groupbox version? Do you like it? Or do you still like more the tab idea?

If you like this version, I could implement it, but it is some work... so I wanted to ask before ;-)

QtApp on windows does not open MLV files

I tried to compile the v0.7 alpha on Windows with MinGW 32bit. Application opens normal. But when trying to open a MLV with audio, the App crashes. It does not crash, if there is no audio in the MLV.

Switching off STDOUT_SILENT, the last output is depending on the file:
Block #...
or
AUDF/audio block...

This does not happen on OSX.

QtApp: Add DarkStyle

Some weeks ago @ilia3101 and me, we were talking about adding a kind of DarkStyle as Qt style sheet. Now I found a good looking style sheet. It is not so nice as Ilias Cocoa App, but a lot closer as the Qt standard. I would make it choseable - Darkstyle or System Standard. It would also work on Linux and Windows and on OSX it would look like that (quick test):
Picture
I found the style sheet here. They say MIT license. Is there a way to add it to our GPL3 project? What exacly do I have to do? Just adding the License file to the repos structure, or adding a string to the aboutbox, or... Can please anyone translate me the license to a english I understand? :-D

Add whitebalance colour picker

@masc4ii I don't think it's a good idea to do it fully in Qt, as it doesn't have access to linear non saturated values, so the internals will have to be somewhere within the raw/processing libs. But if you can sort out a colour picker solution, that would be good.

I agree. My idea is:

  • I create a picker in Qt, which only gets a (x,y) coordinate in the frame(number)
  • the non-Qt and raw processing part offers a function wbPicker(frameNr, x, y) (or something in the way) and this one does the calculation
  • afterwards we get the new temperature and tint value and set the sliders (which will send the new values again to the libs) and in the end the new picture is shown

@ilia3101 : What do you think?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.