Commit Graph
144 Commits
Author SHA1 Message Date
itsmattkc cd47676043 crashpad: updated crash handler 2020-09-22 18:42:51 +10:00
itsmattkc 9e49224406 crashpad: correct handler path on non-Windows systems 2020-09-21 00:51:31 +10:00
itsmattkc 6a6aaddb74 crashpad: ask users before submitting report 2020-09-16 16:41:23 +10:00
itsmattkc 68233b9402 updated basename fix for multi-platform 2020-09-05 18:56:30 +10:00
Thomas Wilshaw eed41c1f12 Comments 2020-09-03 15:25:07 +01:00
Thomas Wilshaw 8d6bd5e929 Fix Help option in headless mode on Windows
Help option failed when Olive was run in its own directory as strrchr
failed. If all else fails basename is equal to argv[0] and we don't
increment in the print statement. Tested on Windows 7.
2020-09-02 23:35:44 +01:00
itsmattkc e42ba3f9d4 corrected compile issues on xenial (should fix linux CI) 2020-08-30 13:35:00 +10:00
itsmattkc 050103a857 memory: implemented basic memory limiting functionality
Keeps track of total memory usage and uses it as a guide towards
allocating/reusing more memory.
2020-08-29 13:34:54 +10:00
itsmattkc 5b00089dd8 commandlineparser: removed extraneous semicolon 2020-08-25 17:07:04 +10:00
itsmattkc 48ac8ea509 main/core: changed code so that headless would run truly headless with QCoreApplication instead of QApplication
QApplication is designed for GUI/widget programs and thus fails to launch
if no window system is available. For a true headless mode, we must swap
out with QCoreApplication. However, what complicates this is that
QCommandLineParser - the class we use to determine whether we should run
in GUI mode or not - requires an active application instance to work.
This creates an unfortunate catch-22 that ultimately ended in writing a
custom command line parser.

Now we can correctly swap out with QCoreApplication, however this has
exposed other issues regarding functions that unnecessarily rely on QWidget
functions. So they'll need to be sorted out eventually.
2020-08-22 00:22:19 +10:00
itsmattkc f3f81eb2be ffmpeg: store divided frames in memory cache
Since users will most likely be working with a divider most of the time,
there's no reason to waste memory space with undivided frames considering
the dividing process is quite fast.
2020-08-18 04:55:23 +10:00
itsmattkc 10709880fc preliminary google crashpad integration
First attempt at automated out-of-process crash reporting. Have only
updated AppVeyor script so far, so if this works (which it won't), it'll
only work on Windows.
2020-08-14 18:25:12 +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 df14c2aaa7 cache: better implemented changing disk cache folders
Not complete yet, but getting there.
2020-08-07 02:31:46 +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 936d077077 project: use relative filenames if absolute don't exist 2020-07-06 14:03:22 +10:00
itsmattkc 430561e2ac sequence: made divider a sequence parameter rather than a viewer parameter
Doing this makes the preview resolution an explicit project setting rather
than a temporary UI setting. This will allow more consistency when caching.
2020-06-08 14:41:35 +10:00
itsmattkc 5ce508a1da timerange: fixed issue that broke removing timeranges from a timerangelist 2020-06-05 14:43:18 +10:00
itsmattkc 8051a42fcc timerange: added some helper functions for comparing timeranges and rationals 2020-06-05 04:30:59 +10:00
itsmattkc cb0d89c09e rational: print double rather than rational to debug
Doubles are mostly used here anyway.
2020-06-05 04:30:39 +10:00
itsmattkc 5eeef76b62 waveform: shift track waveform alongside cache 2020-06-04 23:32:50 +10:00
itsmattkc 9ff9817b95 cache: use render job times to synchronize cache
Ensure old inaccurate jobs are never prioritized over current jobs.
2020-06-04 16:48:23 +10:00
itsmattkc 6acfe995fa timerange: use doubles instead of rationals when printing debug info
Doubles are infinitely more readable and have been the vast majority of
debug printing cases thus far.
2020-06-01 17:45:21 +10:00
itsmattkc 1301d4b9cf rational: use true min/max values for extended range
Will address issues caused by comparisons to our MIN/MAX constants when
a numerator/denominator is > INT32_MAX/MIN.
2020-06-01 17:44:42 +10:00
itsmattkc c2e47a296c timeline: heavily optimized and improved nearly all timeline optimizations
Features a lot of timeline-related cache optimizations as well as general
optimizations and improvements in timeline behavior. Should improve
usability significantly.
2020-06-01 04:42:59 +10:00
itsmattkc 55cfae784b viewer: set automatic divider on connection
Probably not a permanent solution, but will aid performance for the
time-being.
2020-05-27 04:28:57 +10:00
itsmattkc 3e3cacbc85 various: update Qt code deprecated in 5.15
- Replaces QLinkedList with std::list as recommended by Qt docs.
- Replaces QWheelEvent::delta() with QWheelEvent::angleDelta(). This
  should also benefit trackpad behavior.
2020-05-27 02:54:05 +10:00
itsmattkc da04777a25 crashhandler: exclude GITHASH if git wasn't found
Allows compilation in environments where Git may be missing.
2020-05-27 02:51:10 +10:00
itsmattkc 4c4bcb0989 moved simple ms to hh:mm:ss function to timecodefunctions 2020-05-24 17:40:30 +10:00
itsmattkc 34fade9d81 cache: attempt to automatically re-match hashes on invalidate
This code is slow and unoptimized. Will require some more work.
2020-05-21 16:49:02 +10:00
itsmattkc a2d68f6d9f timerange: added functions to + and - rationals from timeranges 2020-05-21 02:17:47 +10:00
itsmattkc b6a42b812e rational: refactored and cleaned up code
Old code (imported from elsewhere) has been cleaned up significantly, made more
understandable/maintainable, and conformed to the rest of the code style.
2020-05-21 02:16:13 +10:00
itsmattkc 814bbe8c22 fixed various segfaults in decoder and renderer 2020-05-18 02:40:58 +10:00
itsmattkc 65705d580d renderer: keep frames in vram while paused
Saves some GPU cycles when adjusting parameters.
2020-05-08 00:32:02 +10:00
itsmattkc 8c8bb45f7f crashhandler: include git commit hash with crash report 2020-05-01 02:11:26 +10:00
itsmattkc 1f76c33f6b crashhandler: include git commit hash 2020-05-01 02:09:59 +10:00
itsmattkc bf68a4d631 nodes: added ability to label nodes 2020-04-29 15:35:05 +10:00
itsmattkc d74d6a1542 nodes: implementing saving/loading node positions from project file 2020-04-28 03:43:35 +10:00
itsmattkc 8c44f8d03d viewer/various: split off color management into separate base class
Also moves scopes to said base class.
2020-04-24 03:45:07 +10:00
itsmattkc d15b08c181 sampleformat: fixed erroneous constant 2020-04-22 13:10:48 +10:00
itsmattkc ccb02d30aa colormanager: implement default config 2020-04-22 05:08:33 +10:00
itsmattkc d232e035f5 mainwindow/project: implemented saving/restoring panel state to project file 2020-04-19 02:25:02 +10:00
itsmattkc df534fadbe common: added function to convert any number to a hex string
Helps with debugging.
2020-04-16 23:13:35 +10:00
itsmattkc 2f80be437a node: fixed issue with "taking" values from input tables
As opposed to simply leaving all values in the table, nodes can now "take"
values that they use to free up memory (e.g. "taking" input buffers if they're
used to produce an output buffer).

This is a fairly large change, expect regressions.
2020-04-16 23:12:05 +10:00
itsmattkc a2f954a0a7 memorypool: implemented arenas
A pool can allocate/destroy any amount of arenas during runtime, meaning it
won't run out of memory but we still get the advantages of one large allocation
as opposed to hundreds of small allocations.
2020-04-14 16:23:45 +10:00
itsmattkc 9a25064b00 memorypool: placed mutex around get and release functions
Makes all memory pool derivatives effectively thread-safe.
2020-04-14 14:50:37 +10:00
itsmattkc 7bfdf8af7c ffmpegframepool: implemented functional frame pool
Includes splitting off core functionality to a base MemoryPool class that can
be re-used later if necessary.
2020-04-14 02:43:12 +10:00
itsmattkc 5c927ce7a4 core: merged define and constructor headers 2020-04-13 23:44:18 +10:00
itsmattkc 4a8a44a8b1 timerange: added debug output functions for the TimeRange and TimeRangeList classes 2020-04-06 17:08:13 +10:00
itsmattkc 1aa87cbda6 various: encapsulate all code in the olive namespace to avoid name collisions
Large-scale code cleanup. Also adds a license to the top of all files that were
missing it.
2020-04-06 15:29:53 +10:00