Commit Graph
168 Commits
Author SHA1 Message Date
itsmattkc cdea531d95 viewer: fix timer issues
Should address various viewer playback lag issues.
2021-04-27 01:22:58 +10:00
itsmattkc 97b9bcc79f nodes: merged gizmotraverser and nodetabletraverser into nodetraverser
No real reason for these other derivatives that did virtually
the same thing.
2021-04-22 12:52:10 +10:00
itsmattkc 50644b8e10 viewer: implemented path to show empty frame
Mild UI improvement.
2021-04-22 11:50:24 +10:00
itsmattkc 77d4b18a60 updated copyright year for 2021 [skip ci] 2021-04-17 18:56:50 +10:00
itsmattkc f9c145b4d4 viewer: default to black background
Fixes theme background no null frame in full screen.
2021-04-13 15:37:22 +10:00
itsmattkc abe28f81bf makeCurrent when destroying ManagedDisplayWidgets
Fixes #1555
2021-04-08 18:59:04 +10:00
itsmattkc eef19ca0ff streamlined viewable-based lengths 2021-04-08 09:46:31 +10:00
itsmattkc bb32048c65 use frame rate and timebase less interchangeably 2021-04-07 13:08:25 +10:00
itsmattkc 898ea25e89 finished merge of viewer and footage 2021-04-06 13:08:56 +10:00
itsmattkc 5b04d84bfb null check for texture in paint function
Fixes #1515
2021-03-21 12:50:35 +11:00
itsmattkc a30d031a9c improved FPS counter
Shows real frame update time rather than refresh time
2021-03-15 11:34:09 +11:00
itsmattkc c885fbac5c viewer: count frames even when FPS is hidden 2021-03-11 11:05:36 +11:00
itsmattkc 60e828efa8 viewer: minor profiling
Allows users to show FPS counter and skipped frames count.
2021-03-10 13:40:17 +11:00
itsmattkc 181235f6ce began new infrastructure
Yep, this is another one of my "famous" sweeping rewrites. Expect things to break.

Goals for this are:
- Greatly simplify node connections (particularly with arrays) so the code requires less maintenance/is more stable
- Redesign node structure to address issues where UI would stall for lengthy periods of time
- Less reliance on shared ptrs/greater reliance on QObject system for inheritance/memory management
- General code cleanup and improvements
2021-01-05 11:20:38 +11:00
itsmattkc 3cf4d58716 viewer: rewrote pixel sampling coordinate system
Fixes #1395
2020-11-22 21:25:10 +11:00
itsmattkc a6d382f4d4 further improved gizmos 2020-11-22 18:21:24 +11:00
itsmattkc bd215b34bc viewer: simplified sizing algorithm and add padding for fit so gizmos are easier to use 2020-11-22 13:01:52 +11:00
itsmattkc 1b0e69c05b viewer: fixed deinterlacing and pan regression, reworked gizmos 2020-11-22 10:23:32 +11:00
itsmattkc b463c5e6a5 viewer: adjust viewport by device pixel ratio
Fixes #1377
2020-11-19 11:05:51 +11:00
itsmattkc 75d4cd899b use hardcoded namespace
The macro defined namespaces confused the hell out of lupdate and more or less broke translations permanently. Looks like the only way we can do it is to have a hardcoded namespace, which goes against my instinct, but honestly how likely is it that we'll change the namespace anyway (I guess forks might want to do it, but that's their problem ;) )
2020-11-17 20:24:42 +11:00
itsmattkc d241090a9f finally updated the copyright year 2020-11-17 20:13:22 +11:00
itsmattkc 0d0766e4fb improved render channel count system 2020-11-15 22:16:40 +11:00
itsmattkc ee5307336e re-implemented alpha assoc/deassoc when color managing 2020-11-15 10:41:29 +11:00
itsmattkc c9a8b96c89 reimplemented export process 2020-11-13 22:05:43 +11:00
itsmattkc 3c1ac3eeba upgraded to ocio v2 2020-11-11 21:53:24 +11:00
itsmattkc 0429e70fe0 merged all drawing functions into a single shader processing function 2020-11-10 15:50:13 +11:00
itsmattkc 1d61f89920 large scale renderer rework
- Abstracts all OpenGL functionality including UI objects
- Cleans up several rendering codepaths
- Improves threading functionality
- Removes old code and problematic functions
2020-11-10 11:24:51 +11:00
itsmattkc 871bc08c12 Revert "renderer: if texture is null, don't allocate a frame unless exporting"
This reverts commit 8e0c86a6fa.

Fixes #1209
2020-09-21 17:28:28 +10:00
itsmattkc 8e0c86a6fa renderer: if texture is null, don't allocate a frame unless exporting 2020-09-19 12:53:07 +10:00
itsmattkc 4f65e83322 gcc: fixed shadowed parameter 2020-09-06 18:33:22 +10:00
itsmattkc 83c7596038 viewer: extended scrolling/panning functionality 2020-09-06 17:40:53 +10:00
Thomas Wilshaw 8682b1e678 Merge master into branch 2020-08-17 18:42:58 +01:00
itsmattkc ec8b046f02 viewer: implemented basic deinterlace
Implements a very basic GLSL deinterlace that simply halves the vertical
resolution and then interpolates between the fields. This can be toggled
on or off.

The reasons for being so basic is:
- Speed, very quick code running in OpenGL
- It would seem the highest quality deinterlacers are temporally based
  which doesn't make much sense for the viewer, particularly since we can't
  double the frame rate since our timecode is fixed to the frames.

Higher quality interlacing/deinterlacing will be present in the actual
renderer.
2020-08-11 02:02:50 +10:00
Thomas Wilshaw 63c306c770 Fix typos 2020-06-22 13:45:51 +01:00
Thomas Wilshaw 53b8e7fa03 Fix comments and grammer 2020-06-22 13:27:54 +01:00
Thomas Wilshaw fdce84f34c Cleanup flipped Y axis code
There are now two functions to get the full matrix for the transformed
image. One that returns as is and one that returns with the Y
translation flipped for OpenGL.

Also some minor bug fixing.
2020-06-22 13:01:10 +01:00
Thomas Wilshaw 8f326c5193 Fix pixel sampler with translate/zoomed image
Pixel sampler now works with a zoomed/translated image. As usual we
have to flip the y translation as OpenGl stores images upside down.

Need to look at a better way of handling this.
2020-06-21 19:59:44 +01:00
Thomas Wilshaw ccb6efd6b6 Make gizmos work with translated/zoomed image
Added a new function that inverts the world transform and applies it to
a point. This allows the gizmo code to work in it's own space and not
need to know is the image has been zoomed or translated.
2020-06-21 19:31:40 +01:00
Thomas Wilshaw 1c6aebdcbe Move the world transform code to its own function
It seems like something that could come in handy elsewhere when drawing
stuff to the viewer.
2020-06-21 18:33:41 +01:00
Thomas Wilshaw 61618a9a14 Use a world transform for QPainter
World transform is based of the view matrix and can be used on any
QPainter that needs to draw on the canvas and move with the mouse/
zoom.
2020-06-19 16:41:29 +01:00
Thomas Wilshaw c735662232 First play with safe areas 2020-06-19 14:16:21 +01:00
itsmattkc 1b6e9c1c79 viewer: moved nouveau to application launch rather than viewer init
Viewer init was kind of too late since in many cases the sequence
would start caching and crash the app before the user could even read
the message. Moving to the startup makes it clearer from the beginning.
2020-06-17 03:00:00 +10:00
Thomas Wilshaw 7665e9e240 Update comments. 2020-06-16 17:15:21 +01:00
Thomas Wilshaw 389f230050 Properly fix translation errors in viewer
Original fix was wrong, this sorts it out I think. Delta values had to
be doubled as we're in Clip space (I think) and the matrix
multiplication order had to be swapped around.

Updated one of the signla/slot pairs to be simpler as we no longer need
to pass the zoom percentage back and forth.
2020-06-16 16:57:38 +01:00
Thomas Wilshaw 100da912ad Add hand tool dragging
If Hand Tool is selected we can now drag with a left click AS WELL AS
middle click. This keeps the view behaviour in line with other widgets
in Olive.

For simplicity it does not use handmovableview.
2020-06-16 14:41:35 +01:00
Thomas Wilshaw 7617ddabe3 Fix translation bugs
The translation needs to be scaled relative to the zoom percentage so
we get sensible movement when dragging. Dragging is also disabled when
the image is smaller than the container widget.

Re-orders the initialisation of some variables to stop a compile
warning on Travis.
2020-06-16 11:53:37 +01:00
Thomas Wilshaw f6c70f583f Panning now only works if the viewier is zoomed 2020-06-16 11:53:36 +01:00
Thomas Wilshaw 92eadc6854 Cleanup 2020-06-16 11:53:35 +01:00
Thomas Wilshaw f4d56f79cb Add ability to reset translation to center 2020-06-16 11:53:34 +01:00
Thomas Wilshaw 2174100342 Add basic tranlation functionality to the viewer
Had to separate zoom and translate matrices to stop the zoom being
applied to itelf. This also required adding separate get/set functions
for each matrix and a GetcombinedMatrix() funtion.

Added those functions ot other files where needed ut may be wrong. Need
to look at export.cpp

Also changed the mouse move and press events to make translation work.
2020-06-16 11:53:34 +01:00