I think I succeeded in creating an installer for Windows. Let's go merge this into master.
Added tear visualization and the csv export function. For the tear visualization you can see it either in the frametime plot as well as a single line which stays for 25 frames at the place where the tear was detected and slowly fades out (see the gif).
You can also disable this visualization if need be.
I now included a new algorithm to include the tear detection into the framerate + frametime calculation.
We currenlty support complementing tears:
timestep = 0, tearsize: 30% (row 0 - 30)
timestep = 1, tearsize: 70% (row 31 - 100)
This will result in the "correct" framerate of 1
in the two frames. I will probably make a visual explanation after the first official release of the qt-branch.
Now I have to think about a tear visualization and the csv export. After these features I have to learn how to deploy on Windows & Linux.
Now only drawing the x/y axis of the plots, stitched some more options together. Implemented overlay exporting with PNG. Fixed some scaling artifacts so now it looks less grainy in the preview window. Also automatic re-scaling of the main window based on your resolution.
Added shadows and eyecandy text for the plots + added the range functionality for the plots.
Added plots for both frametime and framerate processing. Fixed frametime processing too, this time it hopefully works. Plots are adaptive in scale (width is set in settings (TODO) and height is set by the highest value in the buffer).
Now we need to style the plots slightly (e.g framerate and frametime text above the plots) and stitch all the settings together + maybe create more settings.
Added frametime calculation (just a first prototype, need a plot for validation) and tear detection (similar to the one in the currently released trdrop).
Restrictions of the tear algorithm is that we only detect tears in subsequent frames as we use an algorithm that works on the difference between the frames.
Next up is the plotting!
Had multiple updates throughout the week:
- Framerate Text
- added shadow
- added two new fonts (see gif)
- Framerate Analysis
- works with any recorded framerate (this was capped in the previous versions to 60 fps)
- now extracting the recorded framerate of the clip and showing it in the File Window
- File Window
- fixed some bugs, now moving the files also changes their order in the renderer
- Deltaprocessing
- Added the corresponding algorithm to show how we currently calculate frames
- this also shows tears very nicely
- Added the corresponding algorithm to show how we currently calculate frames
- Other
- fixed some memory issues
- added closing buttons for each window (only visible in Windows)
Next steps are implementing the frametime and tear calculation. Then we can at last get to the plotting implementation.
Added a version of delta rendering via cv::absdiff.
In this gif you can see the tears. But this way of visualization is not the way we calculate the frame difference so this will be changed in the future, as this clip should have ~ 30FPS. But the general functionality is there so it's possible to change it anytime.
Got the Windows build running! Currently restricted by the 32-bit build, hopefully this won't become a problem in the future. I also created an overview of the current progress. Screenshots will follow when I adapted the window sizes.
To build on Windows, you need to follow this very much unfinished DEVELOPMENT.md guide.
Resetting state (fps, loaded frames currently) if the opened files are modified. Now using the shortest video to stop the export and using it to show the progress. Now I will try run this on Windows, I only need to manage to install opencv with qt correctly. Hopefully this will be finished until the end of the week.
First framerate analysis is working for multiple videos! I'm currently exporting images only and probably not implement the video encoding because it has some licensing problems which I simply ignored (h264). Importing in your favourite post-processing software is also probably easier with a imagesequence.
If you install ffmpeg
you can simply use this command to create the following video.
> ffmpeg -framerate 30 -i exportsequence_%10d.jpg -c:v libx264 -pix_fmt yuv420p analysis.mp4
Found a QImage to OpenCV convertion, but determined that its not necessarily needed yet, as I can also save QImages directly to the hard drive. Finalized the gui of the export settings, now I have to make it functional.
Not a very gif'able update, but I've rewritten the processing pipeline and grouped the headers by usage. A problem I've encountered was that I could not save images which were outside of the screen-resolution, which prompted me to rewrite some parts, but that is now also fixed. The only thing to test right now is the conversion between internal qt images to opencv to encode a new video. This should be only a matter of time, but then it's only about adding the missing features, which should not prove to be as difficult as the project structure until now.
Finally got the Framerate Text working on resize and for multiple videos simultaneously.
Options are now enabled dependent on the amount of the videos that are selected. I also got some text overlay from the options rendered over the video, currently working on making it scale by size.
Resizing from export dialog works, even live. Default export location is movies on every platform (os-indepedent). Composing now works too, but not automatic centering if the ratio is different (16:9) -> (4:3) will produce black beams, may fix this later.
Started with the export dialog, got progress bar working, an export button and started with choosing the directory. Also working on the composing tool for multiple videos and automatic resizing, but as you can see in the gif some of the image channels are still wrongly displayed.
Fused the FileDialog with the rendering for up to 3 videos in parallel. Currenlty still rendering only one video at a time. The Rendering Button is for debugging purposes, will be the export window in the future.
Working Video playback in QML from OpenCV, now giving the FileDialog the functionality behind the scenes. After this we will try some overlays
Got OpenCV finally to show videos in a QWidget. Now it's up to do that in QML.
Added more general options with a custom spinbox with text. Also tearoptions with a shared color option. Tooltips work on the general pane but not the others yet? Also got OpenCV running from a previous project on Linux, now porting it to Windows.
Added the Framerate options with a color picking / font picking / text editing functionality. Also added a reset settings button.
Webm this time, gif convertion failed
Started with the options menu. Colorpicking works!
Got the fileitemmodel working with c++ and qml. Added transition animations because they look good. Now focusing on the options dialog. Hopefully this will be faster as the model will be the same implementation as the fileitem one.
Created the qt branch, currently building up the knowledge needed to use the Qt MVC model. Rebuilding the QML example to work from C++ to incorporate OpenCV.
This is the current progress video for the file choose dialog with ordering.
I'm currently working on a cross platform (Win/Linux) Qt based implementation. Currently testing some of the key functionalities in private repos. Stay tuned!