Commit Graph
396 Commits
Author SHA1 Message Date
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 4066fcba90 began merging footage and viewer 2021-04-05 16:41:37 +10:00
itsmattkc 6e7c8088b7 viewer: ensure instances are actually removed from list 2021-04-05 15:04:48 +10:00
itsmattkc 9be014c0b6 refactored so sequence is again a derivative of viewer 2021-04-05 14:41:59 +10:00
itsmattkc a30d031a9c improved FPS counter
Shows real frame update time rather than refresh time
2021-03-15 11:34:09 +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 05cb3b86b8 viewer: fix double queue 2021-02-21 18:19:36 +11:00
itsmattkc d7c5ac4b44 implement entire project in nodes
Project items are now represented directly in nodes opening up more versatility and possibilities. This is the first iteration of this and will be buggy. Need to test thoroughly.
2021-02-15 21:31:57 +11:00
itsmattkc 81c1922911 use strings to connect nodes
This makes the node system somewhat more high-level with the intent of making
working with them far more flexible and stable. By making the architecture more
abstracted, it becomes far less rigid which should allow us to do even more
with it and make it much less crash prone.
2021-02-09 15:48:37 +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 b604a7271d viewer: fix regression where multiple viewers could play at once 2020-12-30 10:38:34 +11:00
itsmattkc 90edc4f933 timebasedwidget: added infrastructure of passing scroll wheel signals to the scrollbar 2020-11-29 10:08:37 +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 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 b582843d27 moved things around and started rewriting render backend 2020-10-29 01:36:26 +11:00
itsmattkc 17efd0bd9b default to cache during playback 2020-10-24 10:13:16 +11:00
itsmattkc bc60c74562 finalized very, very basic OTIO support
Ironed out various project and footage loading issues, and a single
cache invalidation issue.
2020-10-23 01:26:17 +11:00
itsmattkc f56c745d93 viewer: don't use audio timebase if no video is connected
This feature may make a comeback later, but for the time being it causes
issues and I'm not sure it's even that useful.

Fixes #1256
2020-10-12 00:23:17 +11:00
itsmattkc f2bd891071 viewer: allow manually switching to the audio waveform view 2020-10-12 00:20:09 +11:00
itsmattkc 3b6ebb6e30 footageviewer: ensure footage is set to nullptr when disconnecting and update stack 2020-10-11 23:39:55 +11:00
itsmattkc f7ab0bb640 audio: rewrote audio cache to write to contiguous segments rather than one long file
Fixes issues with PCM file placement, optimizes some audio-based timeline
and cache operations, just generally a better approach.
2020-10-11 23:27:40 +11:00
itsmattkc 7bc841904a viewer: display image infinitely if video length is null
Allows for displaying still images in viewer without a finite length.
2020-09-19 12:52:50 +10:00
itsmattkc 83c7596038 viewer: extended scrolling/panning functionality 2020-09-06 17:40:53 +10:00
itsmattkc ba64313dd7 Merge branch 'issue_70' of https://github.com/ThomasWilshaw/olive into ThomasWilshaw-issue_70
# Conflicts:
#	app/widget/viewer/viewerwindow.cpp
2020-09-06 17:40:14 +10:00
itsmattkc 1334c04235 viewer: return if no viewer is connected
Minor improvement
2020-08-31 15:20:31 +10:00
itsmattkc 416ba8e2b2 viewer: ensure pixel aspect and interlace parameters are sent to viewer windows too 2020-08-20 19:34:09 +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
itsmattkc 75b4bfe57e viewer: clear current render queue before creating next queue
Hilariously, the queue was being cleared right after it was being set
thus cancelling the whole operation out. This has now been fixed.
2020-08-11 01:02:14 +10:00
itsmattkc 28dcff10c0 various: implement sequence pixel aspect ratios and interlacing settings
Implements the following:
- Sequences have pixel aspect ratios that work in tandem with footage PARs
  to render footage correctly. Viewer and export also acknowledge PARs
- Sequences can have interlacing settings. This doesn't do anything yet,
  eventually the renderer will need to interlace/deinterlace/reinterlace
  appropriately in order to conform all the footage to the sequence. Export
  acknowledges interlacing, but this only affects metadata, not the image.
2020-08-10 01:47:26 +10:00
itsmattkc edeeed49ba various: enabled config saving 2020-08-08 02:44:39 +10:00
itsmattkc df14c2aaa7 cache: better implemented changing disk cache folders
Not complete yet, but getting there.
2020-08-07 02:31:46 +10:00
itsmattkc 07a53d45f0 renderer: updated audio waveform generated for new cache overhaul 2020-08-05 22:32:24 +10:00
itsmattkc c8def73b95 cache: mild auto-cache overhaul
Shifted from CacheTask to functionality built into RenderBackend. It was
a lot easier to control behavior this way without having to juggle a ton
of threads and race conditions.

Could likely be multithreaded further.
2020-08-05 02:19:04 +10:00
itsmattkc fb05594b50 various: allow setting footage aspect ratios
We had support for detecting aspect ratios and respecting them in the
render, but this allows people to not only see the aspect ratio in use,
but also override it with their own.
2020-07-25 00:58:01 +10:00
itsmattkc efd90d5c8f renderer: use shared backend when caching
I think there was an earlier commit with a similar name but turns out
I'd only done foundational work in that commit and never actually
properly set it up. Of course once I did, there were several issues that
needed fixing to make it work correctly, but now it works as expected.

Heavily optimizes larger projects by allowing cache jobs to only copy
what has changed.
2020-07-10 18:39:47 +10:00
itsmattkc e681b87988 curve/param/panels: leave curve panel open and have option for timebasedwidget to auto-set timebase 2020-06-23 05:22:58 +10: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 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 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
itsmattkc cf17bbc80b viewer: removed unnecessary background cache triggers
This was extremely aggressive and led to cache tasks that would return
even if you cancelled them. This should work a lot better.
2020-06-16 04:07:55 +10:00
itsmattkc cc463c7c60 viewer: allow temporarily suspending the auto-cache
While the auto-cache will always default to on, there are cases where the
user may not want the viewer to barrel ahead caching something (footage
viewer for instance or if the user is making a lot of changes in a short
amount of time).
2020-06-15 18:28:11 +10:00
itsmattkc 95dbeac8a5 viewer: don't show playback queue warning if past the video's end point 2020-06-15 15:42:49 +10:00
itsmattkc c80f72481d viewer: shortened re-cache wait interval 2020-06-12 03:31:49 +10:00
itsmattkc aa11fd2d04 viewer: cancel all render tickets when displaying a null texture
Fixes a race condition if a frame is requested shortly before moving to
the end of the timeline.
2020-06-11 21:26:49 +10:00