Commit Graph
75 Commits
Author SHA1 Message Date
itsmattkc b3c3fe0fc8 merged video and audio nodes into a single media node
They performed exactly the same function so I don't think we need the clutter.

Also bumped the project version, but old projects are automatically converted.
2020-11-18 13:48:14 +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 b582843d27 moved things around and started rewriting render backend 2020-10-29 01:36:26 +11:00
itsmattkc 67987bd758 fixed shadowed variable 2020-10-24 11:28:37 +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 db8d321fa7 project: improved loading and footage importing 2020-10-19 14:41:01 +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 6117ca44e9 sequence: ignore disabled streams 2020-09-19 12:07:36 +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 0280ade20d project: improved main window layout loading
There were a lot of issues that arose from trying to make GUI changes
from another thread (even though we ran those functions in the right
thread). Now we store layout information until the end of the load and
make the changes then. This works much better from both a business logic
and user experience perspective.

Also prevents multiple sequences from taking focus during load and
starting a render job.
2020-06-19 02:23:06 +10:00
itsmattkc af5097bf5f nodes: revert shader ID to string
Much easier to manage this way and fixes a compile issue on several
platforms.
2020-06-12 16:02:29 +10:00
itsmattkc f436bab2d5 sequence: initialize values when loading from XML 2020-06-09 13:31:43 +10:00
itsmattkc 50b4c1e456 sequence: rather than a static divider in config, default to a heuristically generated one 2020-06-08 15:18:01 +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 863ae1b913 a first attempt at a new render system 2020-05-14 14:43:03 +10:00
itsmattkc d232e035f5 mainwindow/project: implemented saving/restoring panel state to project file 2020-04-19 02:25:02 +10:00
itsmattkc 2646d424d8 sequence: fixed broken detection of audio channel layouts when setting params from footage 2020-04-14 23:49:48 +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
itsmattkc 56178648bd timelinepoints: implemented saving/loading into project files 2020-04-05 19:21:17 +10:00
itsmattkc a855dea8de timeline/project: block serializations to and from xml now include links
Fixes issue where blocks would become unlinked after copy/paste or save/load.
2020-03-31 02:38:14 +11:00
itsmattkc 2bda306866 timeline/various: implemented block copy/paste
Implemented the ability to copy/paste blocks/clips in the timeline. This did
require some large scale changes and reworking of the copy/paste system
introduced a few commits ago, but should be largely functional now.
2020-03-31 02:19:05 +11:00
itsmattkc 51f02ea01b viewer: allow switching open sequences 2020-03-21 22:18:17 +11:00
itsmattkc abb4c440fb core: added signalling for timecode display changes
Allows targeted application-wide UI updates for when the user changes the
timecode display so that the response is immediate.
2020-03-18 14:09:31 +11:00
itsmattkc a1f5c85f49 various: use simpler/smarter XML reading functions
Should address any XML parsing issues and allows for simpler, more maintainable
code. Should also address a crash that could occur when pasting nodes that had
inputs that weren't copied.
2020-03-17 02:38:17 +11:00
itsmattkc 34f60e639a nodeview: implemented copying/pasting nodes
Re-uses XML-based project saving/loading functions to store nodes, their
parameters, and their connections in a text-based format in the clipboard.
2020-03-15 20:01:58 +11:00
itsmattkc 97d795dd3f sequence: moved code that set parameters based on a list of footage to here from
ImportTool
2020-03-03 15:51:22 +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 22046535ca various: added hooks so that various lengthy functions could be cancelled from another thread 2020-02-17 02:10:12 +11:00
itsmattkc 17c1493aa7 all time-based panels are now derived from a common base class
Cuts down on a lot of duplicate code between
TimelineWidget/ViewerWidget/CurveWidget/NodeParamView
and TimelinePanel/ViewerPanel/CurvePanel/ParamPanel since they all use similar
time functions.
2020-02-01 19:39:43 +11:00
itsmattkc 4697b98980 fixed gcc compile issues 2020-01-19 20:39:48 +11:00
itsmattkc f8f932112c fixed bug where the node remove with exclusive deps command would never run 2020-01-17 13:56:45 +11:00
itsmattkc c6710b1359 correctly update the panel subtitles based on the media connected 2020-01-16 14:57:16 +11:00
itsmattkc 6771a2f1cb implemented footage loading from projects
Footage is a special case where the node parameters can reference objects that
exist outside of the graph. Therefore specific code is needed to
serialize/deserialize.
2020-01-15 18:26:42 +11:00
itsmattkc 16904c976f serialize rationals correctly and move block name to a node input
Since rationals aren't a known Qt format, the QVariant container can't
automatically convert them to and from strings (for XML serialization). We have
to hijack these functions and do the conversion manually for those types.

Also moved the block name type to a node input, which means it's serialized
and copied by default (I'm not sure why it wasn't already like this).
2020-01-14 00:59:49 +11:00
itsmattkc 0ea98be443 ensure objects are in the correct thread when loading
Since we load in a separate thread, when the QObject based objects are
instantiated, they're created with affinity to that separate thread. Now we
specifically ensure they are moved to the main thread after their creation.
2020-01-14 00:10:21 +11:00
itsmattkc 16878e3c25 implemented much of the project loading logic
Still not functional, but much of the groundwork is done.
2020-01-13 04:09:06 +11:00
itsmattkc bb57884cac added save functions to various classes
Each class is responsible for its own saving and loading from the XML data
in order to reduce the complexity of the save code.
2020-01-12 18:36:31 +11:00
itsmattkc 7bf2422c44 moved timeline tracktypes into timelinecommon.h 2020-01-06 15:34:12 +11:00
itsmattkc 31b60664a7 Merge branch 'merge-timeline-and-viewer' 2020-01-04 02:45:26 +11:00
itsmattkc 3369bb53f9 implement double clicking a sequence in the project explorer to open it 2020-01-03 21:14:27 +11:00
itsmattkc df837efbc6 merged timeline and viewer nodes together 2020-01-03 03:26:00 +11:00
itsmattkc 7eae6a85f8 fixed bug that wouldn't clear TrackViewItems when a new sequence was opened 2020-01-02 05:59:37 +11:00
itsmattkc acfbe421e2 implemented much of the general tab and behavior tab in the PreferencesDialog 2019-12-31 14:40:52 +11:00
itsmattkc 26cafa7936 implemented bulk of curve editor's functionality
While certainly not entirely complete yet, this implements most of the UI
functionality of the graph editor.
2019-12-28 18:26:37 +11:00
itsmattkc 227db9d653 updated ParamPanel to be able to be connected with ViewerPanel and TimelinePanel 2019-12-27 02:41:31 +11:00
itsmattkc 7d907d7ee1 removed olive:: qualifier from icon:: namespace 2019-12-26 17:38:18 +11:00
itsmattkc d140094cf5 moved PanelManager to a more traditional singleton form 2019-12-26 17:27:30 +11:00
itsmattkc 520b8b46fa place timecode conversion functions into a Timecode class rather than an olive namespace
Code cleanup and improvement.
2019-12-26 17:20:58 +11:00