itsmattkc
0e7b051228
timelinewidget: show cache status in timeline too
2020-02-22 14:45:50 +11:00
itsmattkc
9cb04b0020
timelineview: simplified TrackRippleRemoveAreaCommand and fixed bug that
...
incorrectly calculated the splice copy's media in
2020-02-22 01:14:38 +11:00
itsmattkc
c7a3906c97
timelineview: fixed bug that wouldn't invalidate all necessary regions of the
...
cache when using rippleremovearea
2020-02-22 00:49:57 +11:00
itsmattkc
65db108be2
openglcolorprocessor: renamed CreateOpenGL() to Create()
...
We hide ColorProcessor::Create() to create a derived class rather than the
base class and clear up confusion over the two functions existing.
2020-02-22 00:34:55 +11:00
itsmattkc
acb107bd92
Merge branch 'master' of https://github.com/olive-editor/olive
2020-02-22 00:14:20 +11:00
itsmattkc
77c0c9d95a
viewer: ported to openglcolorprocessor for simpler code and fixed bug that
...
snuck in breaking color managed display
2020-02-22 00:13:28 +11:00
itsmattkc
547990b920
ffmpegdecoder/memorymanager: fixed race condition in garbage collection
2020-02-21 23:15:09 +11:00
itsmattkc
b0c9711974
ffmpegdecoder: fixed double mutex lock
...
Error() would call Close() getting stuck in a double mutex lock that could
stall workers. This commit fixes that.
2020-02-21 20:04:36 +11:00
itsmattkc
6c33e85162
decoder: don't start indexing any stream that doesn't need to be
2020-02-21 20:04:08 +11:00
itsmattkc
04759b88cf
qt/opengl: fixed bug that caused black screen on some platforms
2020-02-21 18:21:07 +11:00
itsmattkc
5602b6a88b
importtool: add "don't ask again" option on "no active sequence" dialog
...
In the previous commit, we added a dialog to give users options when dropping
footage on a sequence-less timeline panel. However some users will have a
preferred behavior that they'd want every time without having to go through
the messagebox, so we add a "don't ask again" option that stores the setting
in the application config.
2020-02-21 18:07:54 +11:00
itsmattkc
8f86fdd16e
importtool: add user option for creating a sequence on drop
...
If there was anything that 0.1.x taught me, it was that a substantial number of
users did not understand that a new sequence was being made by dropping footage
onto an empty timeline and wouldn't know what to do if they wanted parameters
that differed from the footage they dragged in. This dialog makes the operation
clear and gives users an option to set the parameters on drop for convenience.
2020-02-21 17:48:24 +11:00
itsmattkc
bac33e3d16
importtool: create a sequence automatically from dropped footage if one isn't
...
open already
2020-02-21 17:28:17 +11:00
itsmattkc
042c4616c7
Merge branch 'master' of https://github.com/olive-editor/olive
2020-02-21 14:55:50 +11:00
itsmattkc
e149fc0117
memorymanager: updated system calls for linux
2020-02-21 14:51:47 +11:00
itsmattkc
dcedf12dbe
ffmpegdecoder: stop clear_timer on deconstruction
2020-02-21 14:25:27 +11:00
itsmattkc
78556c1511
audiomonitor: use QTimer::singleShot rather than connecting timeout() to stop()
...
Minor code improvement.
2020-02-21 14:22:53 +11:00
itsmattkc
befaf34a4c
oiiodecoder: use QStringLiteral()
...
Minor code improvement/optimization.
2020-02-21 14:21:53 +11:00
itsmattkc
f769e88e6d
taskmanager: restore one task per thread at idlepriority
2020-02-21 14:21:32 +11:00
itsmattkc
e74c4c2d1c
global: implemented rudimentary memory manager to use available system memory
...
without forcing the OS to page swap
2020-02-21 14:20:57 +11:00
itsmattkc
2e38e7e3fb
indexmanager: moved files
2020-02-21 10:47:41 +11:00
itsmattkc
7797bf4971
ffmpegdecoder: added helper functions for memory handling
2020-02-21 01:18:21 +11:00
itsmattkc
3cffffdcee
viewer: use vsync for updates rather than a timer
...
Improves viewer appearance and performance. Rather than using a timer roughly
set to the sequence's frame rate to update the viewer, the viewer synchronizes
itself to the display's refresh rate resulting in much smoother playback.
2020-02-21 00:42:46 +11:00
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