Commit Graph
266 Commits
Author SHA1 Message Date
itsmattkc 6ecdb02fd0 okay maybe not 2020-11-08 00:47:59 +11:00
itsmattkc 83cefbd7c7 uhh yeah this might be fubar 2020-11-07 22:44:27 +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 4082f6d938 Merge branch 'master' of https://github.com/olive-editor/olive 2020-10-23 01:26:49 +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 917738d1de Merge branch 'master' into otio 2020-10-22 20:26:16 +11:00
Thomas Wilshaw 4ddc659335 MediaInput: Rename streams access methods.
Change MediaInput::footage() to MediaInput::stream() and
MediaInput::SetFootage() to MediaInput::SetStream() as they access
streams not footage.

Also update all instances of access methods to reflect this change.
2020-10-19 15:50:36 +01:00
itsmattkc 989dfb7016 footageviewer: reset time if footage is set to null 2020-10-12 18:08:44 +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 6db591e89f footage: merge video and image streams and improve image sequence import process
Image streams were initially separated from video streams, but they're now
joined with a parameter defining if they're a still image, image sequence,
or regular video. The image sequence import process has also improved so
that if images from the same sequence are imported too, they'll either be
ignored or the user won't be asked again for those if they should be an
image sequence (fixes #1193). Also shifts decoder "probe" process to return
an item, useful if the decoder returns a non-footage item.
2020-09-26 19:45:07 +10: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 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 855c460ff3 footageviewer: use sequence functions to set video/audio params
Code improvement by re-using existing code. Existing code prevents crash
when loading a still image.
2020-09-19 12:30:42 +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
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 d5dce29b22 cache: merged cachetask and footagecache into one precache task
Since the actual auto-cache now happens elsewhere, this cleans up a lot of
dead code.
2020-08-05 23:45:18 +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 86b66004b0 ui: removed last of the widget proxies 2020-07-23 23:11:00 +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 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