Commit Graph
100 Commits
Author SHA1 Message Date
itsmattkc 4532c3884e ffmpegdecoder: fixed cast issue on gcc 2020-02-21 00:21:31 +11:00
itsmattkc 94f1d997ad slider: don't use prefix and suffix in text entry
UX improvement, ensures the text entry doesn't include anything that the slider
can't resolve back into a value.
2020-02-21 00:11:54 +11:00
itsmattkc 2299fda73a ffmpegdecoder: handle media that starts at a non-zero pts 2020-02-21 00:09:45 +11:00
itsmattkc 162c91ec52 ffmpegdecoder: allow probe duration pickup to be cancelled 2020-02-20 23:54:40 +11:00
itsmattkc bc2be7a2a4 ffmpegdecoder: use simpler loop to find duration if the container doesn't
provide one
2020-02-20 23:52:23 +11:00
itsmattkc 4c61abbbf0 preferencesdisktab: use cache clear button to provide user feedback rather than
a messagebox

A slightly more subtle way to provide feedback.
2020-02-20 23:35:50 +11:00
itsmattkc 73e639757e ffmpegdecoder: fix bug that slowed down low fps footage unnecessarily 2020-02-20 23:34:49 +11:00
itsmattkc be6fbfecdb videorenderworker: fixed improper QString::arg() usage 2020-02-20 19:44:48 +11:00
itsmattkc 9faa303368 viewerglwidget: fixed destroy function used with OIIO 1.x 2020-02-20 19:41:52 +11:00
itsmattkc 3bd1c885cf decoder: round double to int 2020-02-20 19:24:59 +11:00
itsmattkc b231720398 viewer: prevent shuttle left/right from ever pausing
If the speed ever goes from 1 or -1 to 0, it'll in/decrease the speed one more
so it doesn't pause.
2020-02-20 19:12:14 +11:00
itsmattkc 5a070f14de general: use IdlePriority rather than LowPriority
Fixes a number of playback stuttering and general UI lag issues by setting all
background tasks to IdlePriority rather than LowPriority. While it was assumed
LowPriority tasks would always get scheduled below NormalPriority (e.g. main
thread) tasks, it turns out this is not always the case. If the background tasks
start consuming a lot of CPU cycles, the scheduler may use "dynamic scheduling"
to schedule them above the main thread regardless leading to UI lag. This is
apparently the case for all thread priorities apart from IdlePriority, which
is allegedly a special case where threads are *only* scheduled when other
threads aren't busy ensuring the main thread stays responsive.
2020-02-20 17:48:50 +11:00
itsmattkc 054281596e videorenderer: use qmutexlocker in more cases
Minor code cleanup.
2020-02-20 17:48:28 +11:00
itsmattkc 8cb74a8218 functiontimer: created convenience class to help when profiling functions 2020-02-20 17:47:33 +11:00
itsmattkc e373c40853 ffmpegdecoder: handle eof in retrieve 2020-02-20 16:50:03 +11:00
itsmattkc 1e2f0220a2 viewerglwidget: use OIIO::ImageInput rather than OIIO::ImageBuf
Gives us better control over the file I/O (using ImageBuf would fail to
release file handles sometimes).
2020-02-20 16:39:30 +11:00
itsmattkc 654b679658 nodeview: set drop_edge to null after placement
Fixes segfault placing more than one node.
2020-02-20 16:39:04 +11:00
itsmattkc 4914182206 stroke: fixed duplicate id 2020-02-20 16:38:46 +11:00
itsmattkc 3e776b62e1 oiiodecoder: added new mutex structures 2020-02-20 16:38:23 +11:00
itsmattkc 1cce8abd85 frame: added bool function returning whether the frame is allocated or not 2020-02-20 16:37:43 +11:00
itsmattkc 2145efa2a0 decoder/renderer: use memory cache and single decoder to optimize frames for
cycles
2020-02-20 15:32:12 +11:00
itsmattkc 71048f40a8 ffmpegdecoder: removed all old code to clean up 2020-02-20 02:22:59 +11:00
itsmattkc d1a9a29c5e indexmanager: removed some unused debugging code 2020-02-20 02:22:15 +11:00
itsmattkc 4754ec384f taskview: actually corrected taskviewitem order
An earlier commit addressed faulty TaskViewItem ordering by changing
insertWidget to addWidget. Turns out this was the wrong strategy since the
insert was used to get widgets above the stretch. The correct strategy is
using insert(count()-1) instead of insert(0)
2020-02-20 02:20:16 +11:00
itsmattkc 95ca19d547 ffmpegdecoder: began work on the index process working in tandem with the
retrieval process
2020-02-20 00:06:20 +11:00
itsmattkc e68e89c40b renderer/decoder: use same background mechanism to conform audio as well 2020-02-19 16:45:34 +11:00
itsmattkc 5166f6a54a taskview: fix bug that inserted taskviewitem widgets in the wrong order 2020-02-19 16:44:44 +11:00
itsmattkc 77de011509 cmake: added ConformTask source files 2020-02-19 12:46:05 +11:00
itsmattkc a719618b31 waveinput: better handling of WAV data sections 2020-02-19 12:45:21 +11:00
itsmattkc 56adf5005f decoder: provide conform progress signal 2020-02-19 12:45:01 +11:00
itsmattkc 4bcbe290f4 task: Created ConformTask so audio conforming can be done as a background
process
2020-02-19 12:44:29 +11:00
itsmattkc 08e6c6ffc0 decoder: move conform function to base class
There's no reason the Conform() function can't live in the base class since its
functionality isn't necessarily specific to FFmpeg.
2020-02-19 12:28:37 +11:00
itsmattkc 53551246da decoder: signal indexing progress
Better UI interactions, actually shows the progress of the index function in
the task manager now.
2020-02-19 12:19:42 +11:00
itsmattkc 03bdf01357 decoder/renderer: no longer index automatically as part of the retrieve
functions

Indexing is a lengthy process and had a high chance of getting RenderWorkers
stuck doing it rather than being responsive to cache requests. This commit
introduces a system where workers never index media, but instead signal that
media is not ready to their RenderBackends which ensure that the media gets
indexed and re-queues the affected frames when those indexes are ready.
2020-02-19 11:44:29 +11:00
itsmattkc 5e75e9b3b0 waveinput/output: allowed external access to data length value 2020-02-19 11:40:54 +11:00
itsmattkc f63106b2d6 stream: wrote indexing data into the stream classes rather than having them
in the decoders
2020-02-19 11:40:05 +11:00
itsmattkc 4c4b91afd6 viewerglwidget: fix bug that didn't clear the viewport correctly on empty frames 2020-02-19 11:34:21 +11:00
itsmattkc fe1f7626d1 Merge branch 'master' of https://github.com/olive-editor/olive 2020-02-17 16:35:15 +11:00
itsmattkc 757854c4b3 viewer: detect nouveau and warn
Nouveau has poor compatibility with Olive (and most other graphically intensive
applications). For user benefit, we throw a warning messagebox if we detect the
user is using Nouveau.
2020-02-17 16:32:38 +11:00
itsmattkc 8265fef5c5 viewer: update renderer parameters if the viewer node's parameters have changed 2020-02-17 15:34:26 +11:00
itsmattkc 6eeae7b15e timebasedwidget: move center scroll functionality to base class so widgets like
Viewer can use it
2020-02-17 15:21:10 +11:00
itsmattkc 139127ed3c Merge branch 'master' of https://github.com/olive-editor/olive 2020-02-17 13:06:09 +11:00
itsmattkc 14fe4949ff travis: don't add ppa that no longer exists 2020-02-17 11:27:03 +11:00
itsmattkc 33a85aa059 audiobackend: fixed issue where audio would be appended rather
than overwritten on some platforms

Despite the fact we don't actually do any reading here, using
QFile::WriteOnly on its own will truncate the file to 0 bytes which is
undesirable. The documentation says QFile::ReadOnly, Append or NewOnly
will prevent this. NewOnly won't work and reads are unnecessary, so
Append was used initially. However on some platforms, Append will _only_
allow writing at the end of the file (ignoring the seek() function)
meaning bytes won't be written where they're meant to be (this behavior
happens on Linux and not on Windows, the platform discrepancy is likely
a Qt bug). Using ReadWrite instead, despite not reading anything,
prevents truncation and allows for writing not at the end of the file.
2020-02-17 11:17:21 +11:00
itsmattkc 21affd4e58 renderers: add early functions for cancelling long render processes 2020-02-17 02:15:28 +11:00
itsmattkc 55cdd47933 indextask: fixed typo and pass cancelled signal to Decoder::Index() 2020-02-17 02:14:32 +11:00
itsmattkc 73ba2f4c96 taskdialog: complete implementation of TaskDialog 2020-02-17 02:14:11 +11:00
itsmattkc 705b7f3d86 projectmanagers: set title automatically and pass cancelled signal to sub functions 2020-02-17 02:13:49 +11:00
itsmattkc e88d11af68 item: ensure header has a cancelled ptr 2020-02-17 02:12:53 +11:00
itsmattkc 1dc29f67f3 rendercanceldialog: base on ProgressDialog rather than LoadSaveDialog 2020-02-17 02:12:29 +11:00
itsmattkc 839abdff45 core: use TaskDialog instead of ProgressDialog 2020-02-17 02:11:56 +11:00
itsmattkc c0d42c4fda taskmanager: fixed typo and restricted taskmanager to one task at a time for now 2020-02-17 02:11:04 +11:00
itsmattkc 22046535ca various: added hooks so that various lengthy functions could be cancelled from another thread 2020-02-17 02:10:12 +11:00
itsmattkc fd49b6eb55 taskdialog: created ProgressDialog-based dialog for modal tasks 2020-02-17 02:05:40 +11:00
itsmattkc dcfa0a5c34 files: renamed LoadSaveDialog to ProgressDialog 2020-02-17 02:05:11 +11:00
itsmattkc ceb70a1870 viewer: use internal texture to allow viewer to control texture as part of its
context

More intuitive code flow and allows the user to undock the viewer (which
forcibly destroys and recreates the context) and the viewer will handle
creation of the new texture in said new context.
2020-02-16 18:24:49 +11:00
itsmattkc 21755c7f20 taskmanager: ensure task is finished before deleting it
Fixes race condition that could result in a segfault if a Task hadn't emitted
Finished() before it was destroyed by TaskManager.
2020-02-16 13:01:38 +11:00
itsmattkc ce889f68d5 nodeview: allow users to place a node on an edge to automatically connect it
between the two nodes

UI convenience. Edge highlights when the cursor is in range to perform this
action.
2020-02-16 12:40:12 +11:00
itsmattkc a987899e5c nodeparamviewwidgetbridge: connect checkbox "clicked" signal rather than
"toggled"

Only signal a change if the user made one. Toggled would be signalled even when
we set it programmatically (e.g. by simply creating the checkbox widget and
setting its state) causing unnecessary re-caches of the sequence.
2020-02-16 12:37:10 +11:00
itsmattkc a6f4922d66 nodeview: allow esc key to cancel adding a node 2020-02-16 11:44:35 +11:00
itsmattkc fa0f732d39 nodeview: attach new nodes to mouse for easier placement 2020-02-16 11:19:26 +11:00
itsmattkc 080fe22969 taskmanager: made AddTask() a slot so it can be queued from other threads 2020-02-16 10:29:11 +11:00
itsmattkc e93c3d4ce4 taskmanager: try to start next waiting tasks when a task finishes
Fixes bug where tasks would get stuck indefinitely.
2020-02-16 10:28:34 +11:00
itsmattkc 35ab379e9f ffmpegdecoder: updated comment to better describe error handling 2020-02-16 10:28:18 +11:00
itsmattkc cb3ef5d994 decoder: ensure indextask is started in the taskmanager's thread 2020-02-16 10:27:23 +11:00
itsmattkc de71bacdf1 msvc: suppress C4100 warning 2020-02-15 14:47:59 +11:00
itsmattkc b44d7165c5 nodeviewitem: toggle expanded state on double click 2020-02-16 01:05:41 +11:00
itsmattkc 1776615999 viewer: map context menu position from sender rather than itself 2020-02-16 00:57:34 +11:00
itsmattkc 4c6e56320a msvc: suppress C4267 warning 2020-02-16 00:57:00 +11:00
itsmattkc cdfba418fc ffmpegdecoder: added fixme comments for errors that aren't handled 2020-02-16 00:45:36 +11:00
itsmattkc c74134b5b0 viewer: catch ocio exception when creating new processor 2020-02-16 00:34:12 +11:00
itsmattkc 24c926e769 renderer: use ocio config in hash as well
Fixes potential bug where the same named colorspace in a different config
would pull old/likely inaccurate cached frames.
2020-02-16 00:14:46 +11:00
itsmattkc aa00705eb6 transform: initial uniform scale implementation 2020-02-15 23:59:11 +11:00
itsmattkc 3efbcc28ef ffmpegdecoder: improved index reliability 2020-02-15 23:39:33 +11:00
itsmattkc 53106e1847 opengl: remove locks from texture
These are not used anymore and are therefore unnecessary.
2020-02-15 14:02:00 +11:00
itsmattkc f5de19dd6b ffmpeg: allow decoders immediate access to frames even while indexing
Previously, FFmpeg decoders needed to wait for the initial index to finish
before they could retrieve frames. Now they can retrieve frames while the
index is occurring, provided the appropriate frame has already been indexed (if
not, the retrieve will need to wait still).
2020-02-15 13:57:29 +11:00
itsmattkc 97dadace1f shaders: added stroke shader 2020-02-14 19:13:30 +11:00
itsmattkc 0bee4b2e14 boxblur: added 'repeat edge pixels' parameter 2020-02-14 14:56:09 +11:00
itsmattkc 721ec1fe9b gaussianblur: added 'repeat edge pixels' parameter 2020-02-14 14:52:09 +11:00
itsmattkc b0e7ae34ba videorenderworker: improve download code 2020-02-14 14:51:40 +11:00
itsmattkc f36c635b05 openglbackend: call base function in CloseInternal() 2020-02-14 14:51:11 +11:00
itsmattkc 9de164cfba ffmpeg: disable multithreading in favor of our own
Our renderer system is already heavily multithreaded and prioritized to keep the
main thread active. As a result, FFmpeg receives little benefits from being
multithreaded and is actually detrimental to our main thread as it hasn't been
prioritized to keep the main thread as active as possible.
2020-02-14 10:08:19 +11:00
itsmattkc d66425c324 prepared gl improvements for merge 2020-02-14 02:35:10 +11:00
itsmattkc 6a47b05ab8 work on oslworker 2020-02-14 02:13:38 +11:00
itsmattkc fa40d1b682 aboutdialog: very minor code organization 2020-02-13 15:39:35 +11:00
itsmattkc 422e447f13 oslworker: comment accelerated node function to allow compiling for now 2020-02-13 15:38:54 +11:00
itsmattkc cc8e5bc9d2 opengl: don't share contexts and use older version 2020-02-13 15:38:11 +11:00
itsmattkc a197fc9c08 cmake: don't warn about unused parameter 2020-02-13 15:37:18 +11:00
itsmattkc 888e688385 work towards implementing osl as a renderer 2020-02-12 15:13:51 +11:00
itsmattkc 5e5be50959 cmake: find OSL 2020-02-08 00:14:13 +11:00
itsmattkc fd44c94fc8 mainwindow: use app name and version in window title 2020-02-08 00:13:56 +11:00
itsmattkc 2ba928fa1f code cleanup: renamed qtversionabstraction.h to qtutils.h 2020-02-08 00:13:38 +11:00
itsmattkc 1ae2c8b128 fixed mingw compile issue 2020-02-07 12:42:19 +11:00
itsmattkc 1e71c0e7f5 oslbackend: began new backend classes 2020-02-05 14:49:55 +11:00
itsmattkc 91f1be90a9 opengl: isolate all functions to one thread 2020-02-03 18:14:58 +11:00
itsmattkc 776cfd87c8 renderer: minor code improvements 2020-02-03 12:41:20 +11:00
itsmattkc 0c46b0c471 decodercache: don't need thread-safe functions anymore 2020-02-03 01:29:29 +11:00
itsmattkc caf0d3d42a renderer: minor code improvements 2020-02-03 01:29:03 +11:00
itsmattkc 40e8aec285 viewer: minor code improvements 2020-02-03 01:27:45 +11:00
itsmattkc 110b5741e0 nodes: remove user input mutexes
These were no longer ever used and thus served no purpose.
2020-02-03 01:27:00 +11:00