Mike-Solar
bb40b4923e
style: unify identifier naming per updated conventions
...
Automated with clang-tidy readability-identifier-naming (config added to
.clang-tidy) plus scripted passes, per the updated rules now documented
in CONTRIBUTING.md:
- types (class/struct/enum/alias/template params): PascalCase
- functions, variables, members: snake_case (incl. rational -> Rational)
- private/protected members: trailing underscore; static member
variables likewise (instance_, available_themes_)
- constants and enum values: snake_case (kLinear -> k_linear,
F32P -> f32p); ALL_CAPS reserved for macros
- macros: OAK_ prefix (OLIVE_ADD_TEST/OLIVE_ASSERT/OLIVE_CONFIG ->
OAK_ADD_TEST/OAK_ASSERT/OAK_CONFIG, GL_PREAMBLE -> OAK_GL_PREAMBLE,
include guards -> OAK_*)
- file names: all lowercase (Current/Plugin/OliveHost/OliveClip/
OlivePluginInstance -> current/plugin/olivehost/oliveclip/
oliveplugininstance)
- getters share the member name sans underscore, setters set_foo()
- Qt and third-party (OpenFX) virtual overrides and framework callbacks
keep their original names (exempt in .clang-tidy)
Manual follow-ups required where automation could not reach:
- string-based QMetaObject/SIGNAL/SLOT references updated to renamed
methods (AddTask, CreatedFile, DeleteSpecificFile, moveSelectionUp, ...)
- macro bodies referencing renamed methods (OLIVE_CONFIG,
NODE_DEFAULT_DESTRUCTOR, MANAGEDDISPLAYWIDGET_*)
- self-shadowing locals renamed where signals/methods became same-named
(size_changed, worker_count, selected_items, import param, filters)
- third_party OFX member/namespace usages restored (OFX::Host::*,
_created, _clipPrefsDirty, createInstance, clearPersistentMessage)
- STL protocol aliases restored (const_iterator) with .clang-tidy
ignore rules; qHash overloads restored
Full build and test suite pass: ctest 4/4, ~1960 gtest cases green.
2026-07-19 16:10:54 +08:00
Mike-Solar
e5eeaddf2f
format: reformatting files
2026-07-13 15:30:43 +08:00
Mike-Solar
bfb1b2fce4
update copyright back
2026-01-16 21:22:05 +08:00
Mike-Solar
b8669f6a11
Change project name;
2026-01-05 16:22:26 +08:00
Mike Solar
6fdfd03ffd
update: update copyright
2025-08-05 17:12:49 +08:00
Mike Solar
74f73ab3be
change: change code style to Linux style except indent.
2025-08-03 03:09:40 +08:00
itsmattkc
7ecabfa68d
valuenode: add boolean type
...
Fixes #2145
2023-02-21 23:15:03 -08:00
itsmattkc
f9cd28a694
node: make convenient input flag setter
2023-02-20 19:13:50 -08:00
itsmattkc
6ce80f4469
multicamnode: use combobox for current source instead of int
2022-10-23 12:31:42 -07:00
itsmattkc
ef8996d48f
nodes: allow ignoring specific inputs for rendering
...
Also ignore sequence input on multicam
2022-10-04 21:13:01 -07:00
itsmattkc
42ba84bf5f
multicam: finished UI implementation
2022-10-03 17:24:09 -07:00
itsmattkc
2aaf96d55b
multicamnode: only push active element if element exists
2022-10-02 11:00:32 -07:00
itsmattkc
6e183fe4be
multicam: refactor to heavily optimize multicam monitor retrieval
2022-09-29 17:50:09 -07:00
itsmattkc
80a900d105
multicam: show highlight around selected source
2022-09-27 18:22:47 -07:00
itsmattkc
a6b8b7ccbc
multicam: finished usable implementation
2022-09-25 20:26:10 -07:00
itsmattkc
e4c2f37adc
multicamnode: offset 1 and min 0
2022-09-25 18:06:27 -07:00
itsmattkc
2dc2edf3e0
multicam: initial implementation
2022-09-19 08:55:56 -07:00
itsmattkc
bfd6a407a5
Merge branch 'master' into hashremoval
2022-05-16 09:12:49 -07:00
itsmattkc
4b366a9b73
update copyright year to 2022
2022-05-10 10:38:56 -07:00
itsmattkc
08f3cb3cc3
remove hashes from nodes
2022-05-09 18:30:36 -07:00
itsmattkc
d55d9c820f
code: use macros for default node functions
...
Easier to maintain
2022-05-04 11:01:17 -07:00
itsmattkc
001834cbfa
node: implemented bypassing
2022-04-26 15:07:01 -07:00
itsmattkc
3aafb2466d
Squashed commit of the following:
...
commit f05b5b3ff8286f6252c2a3f3c8c367f8a5b821b5
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 13:05:25 2022 -0700
final consistency modifications
commit 4f27718d46de9660822eb197b0e900be947ec515
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 11:40:58 2022 -0700
opengl: don't set texture options for null texture
commit bb54cfcf4e219e1cbf1ecc6b5552cca75e6e1573
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 11:40:29 2022 -0700
rename inputs
commit e5ac8fffa2ac15f5549b6da5f42b05659c6d020f
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 10:37:23 2022 -0700
change alpha association formula
commit dee09a88f17552e3f98be8940966822e45d6df4f
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 10:36:58 2022 -0700
glsl: use constants to improve readability
commit aedc75ebee11b61198f29c464501a2ddb0506129
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 10:36:26 2022 -0700
changed id capitalization
commit 470b2bb85b51c4a57c109d3fb230088a81024277
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 10:35:53 2022 -0700
node: update categories
commit c78dacad82051dfbb3e40c92cfaf456dbff2de0d
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 09:22:57 2022 -0700
updated shaders to es 3
commit 1e7544be93e55916c94cd91629ec5eef728bfad8
Merge: 1bbb8d7f9 25d019609
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Apr 12 09:02:32 2022 -0700
Merge branch 'master' into pr/1818
commit 1bbb8d7f9acd75cb4498733f105fbe0487c0db9c
Author: brimson <40442071+brimson@users.noreply.github.com >
Date: Tue Jan 18 18:36:24 2022 -0700
Simplify colordifferencekey.frag
Avoiding extra MOV instruction
commit c7cf1021ce5a3d090833e94e4bc212cc51a61a2a
Author: brimson <40442071+brimson@users.noreply.github.com >
Date: Tue Jan 18 11:43:02 2022 -0700
Revert switch-case changes
Thanks Simran, MattKC, and Wilshaw for the clarifications
commit 882ffeede01b81f0cb4dfd885ba05bf66119ac7e
Author: brimson <40442071+brimson@users.noreply.github.com >
Date: Tue Jan 18 00:06:31 2022 -0700
Optimize despill shader
Turn previous averaging from (1 MAD + 1 MUL) to (1 DP2), reuse the result to prevent recalculation.
commit 0c93f519977fa34840ab03d51addcf2456f931d8
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sat Jan 8 17:23:49 2022 +0000
Cleanup
commit 222560ce1a4666899b1111854d4d549dd7ba1357
Merge: 96e21c2b4 d3ffeaa35
Author: ThomasWilshaw <thomaswilshaw@gmail.com >
Date: Tue Jan 4 23:50:39 2022 +0000
Merge branch 'master' into color_key
commit 96e21c2b43db3bf1051aca696970509292159548
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Tue Jan 4 23:45:26 2022 +0000
Rename and reoganise keying nodes
commit 6d42ed23a69ebdb1f5b399957f0b37434d0519dd
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Tue Jan 4 23:04:50 2022 +0000
Move despill code to it's own node
commit e97ab2e16fd1d4e2f2ff145b8c023ff0e1ee451e
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Mon Jan 3 21:39:48 2022 +0000
Add option for blue screens
commit 2346f44e5af48bb9547c77c4c08ee7abfcb09393
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Mon Jan 3 21:14:55 2022 +0000
Optimise node slightly
commit 446522edcf63525fafe7a97cf6d59b7ea0385460
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Mon Jan 3 21:10:03 2022 +0000
Fix GL ES compile error
commit a765ce6c6f3e0c0e996f08e2a3ef1101818098e8
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sun Jan 2 18:27:24 2022 +0000
Cleanup
commit d268e0645df34aa306dc391d1dc10bf335524f94
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sun Jan 2 18:03:26 2022 +0000
Fix core matte and change Darks start value
commit 30b024dc5f59dd60ffc5012eee7a79201ed4f9c3
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sun Jan 2 17:26:39 2022 +0000
Change matte controls and cleanup
commit b742a9ba7ed651785a0781289a4c03fd4fb72e03
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sun Jan 2 16:31:41 2022 +0000
Add a core and garbage matte
commit f814d036b61b8de090df4c1f080c124b98b432d6
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sun Jan 2 03:31:20 2022 +0000
Improve basic keyer
commit 4995ec3b9b92c9b4cb0dc31a247d585b2a47e408
Author: Thomas Wilshaw <thomaswilshaw@gmail.com >
Date: Sun Jan 2 00:23:18 2022 +0000
Start simple color key node
2022-04-12 13:05:45 -07:00
itsmattkc
7ba5dca4ab
renderer: always hash along edges
2021-09-19 23:11:20 -07:00
itsmattkc
b07bccb7dc
nodes: revert to single output
2021-09-07 22:01:36 -07:00
itsmattkc
a0706a78d8
nodes: implemented core of manual table value selection
2021-09-07 15:27:07 -07:00
itsmattkc
74ad4110be
transform: hash the generated matrix
...
Making an exception for the transform node, we use a slightly
heavier hash to save more rendering time later.
Fixes #1560
Addresses some of #1360
2021-04-22 18:01:26 +10:00
itsmattkc
77d4b18a60
updated copyright year for 2021 [skip ci]
2021-04-17 18:56:50 +10:00
itsmattkc
3ce693ac16
timeinput: add missing punctuation
2021-04-17 15:04:51 +10:00
itsmattkc
893adc3d72
implemented value node
...
Also implements changes necessary to support an input data type
that changes. Much of that foundation was built in
`nodearchchanges`, but hadn't been finalized. This commit
finalizes and provides a reference implementation/test with the
"Value" node.
Fixes #1443
2021-04-12 16:37:26 +10:00
itsmattkc
cb75e37e77
moved several files around
...
Mostly moved classes that became node derivatives into the node/ folder.
2021-04-08 12:15:59 +10:00
itsmattkc
d7c5ac4b44
implement entire project in nodes
...
Project items are now represented directly in nodes opening up more versatility and possibilities. This is the first iteration of this and will be buggy. Need to test thoroughly.
2021-02-15 21:31:57 +11:00
itsmattkc
81c1922911
use strings to connect nodes
...
This makes the node system somewhat more high-level with the intent of making
working with them far more flexible and stable. By making the architecture more
abstracted, it becomes far less rigid which should allow us to do even more
with it and make it much less crash prone.
2021-02-09 15:48:37 +11:00
itsmattkc
181235f6ce
began new infrastructure
...
Yep, this is another one of my "famous" sweeping rewrites. Expect things to break.
Goals for this are:
- Greatly simplify node connections (particularly with arrays) so the code requires less maintenance/is more stable
- Redesign node structure to address issues where UI would stall for lengthy periods of time
- Less reliance on shared ptrs/greater reliance on QObject system for inheritance/memory management
- General code cleanup and improvements
2021-01-05 11:20:38 +11:00
itsmattkc
6cb6407bd8
don't use shared ptrs on streams
2020-12-16 13:46:19 +11:00
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
15a29288aa
added Q_OBJECT macro to classes that were missing it
2020-11-17 19:13:16 +11:00
itsmattkc
1b9bf6d92c
switched many QLists for QVectors
...
Minor optimization
2020-11-16 16:17:43 +11:00
itsmattkc
0d0766e4fb
improved render channel count system
2020-11-15 22:16:40 +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
Thomas Wilshaw
7c7db5c933
Check footage in use before deleteing
...
Initial very hacky implementation that checks if the footgae is in
use before deleting it and makes sure all refernences to it are
properly cleaned up.
Also added IsMedia() function to Node to simplify things a bit.
2020-09-28 14:33:53 +01:00
itsmattkc
9aabde303e
nodeview: added arrows to indicate a node can be expanded
...
Minor UI detail. Also slightly increases the size of node items and adds
"short names" to the video input and audio input nodes.
2020-08-21 15:15:39 +10:00
itsmattkc
dd7af0e6bd
nodes: minor overhaul to functionality
...
The nodes now have more control over how their accelerated shaders/sample
functions are run, as well as how items are popped off the value tables.
This allows for various optimizations that we didn't have access to before.
2020-06-12 00:54:15 +10:00
itsmattkc
71ec148e76
renderer: moved all shader code into one solidified function
...
Makes texture-based optimizations easier when they're all in one place.
2020-06-10 01:54:02 +10:00
itsmattkc
74d252c5c0
nodes: use defined categories rather than arbitrary string based
2020-05-05 22:12:15 +10:00
itsmattkc
aecfa842c3
nodes: moved hashing to nodes so they can override behavior if they wish
2020-04-30 01:56:08 +10:00
itsmattkc
ac3f49a845
nodes: moved matrix input on "video input" elsewhere
...
Rather than plugging a matrix into the video input node, the matrix is now
multiplied by the video input using a math node. This is probably more
sensible from a user perspective.
This also means the renderer is tolerant of texture sizes that are not equal
to the sequence size, however most nodes will downsample the texture to the
sequence size (and if not, it will be downsampled once it is cached). Textures
will still *always* be in reference space and the sequence's format. This seems
like the best compromise between backend and frontend congruity.
2020-04-27 04:11:24 +10:00
itsmattkc
53ae25a7cb
nodes: optimize node graph changes by only updating from inputs that changed
...
A huge optimization that ensures only the parts of a node graph that have
changed get pushed to the renderer. For thread-safety, the node graph is
copied elsewhere so that users can make changes asynchronously and the graph
can update when its threads are ready. Up until now, if an input value changed,
every node's values would be re-copied, or worse, if a connection was changed,
the entire graph would be recopied. This has been negligible in testing since
we've been largely testing with small graphs, but for massive projects, it's
important that this be as optimized as possible.
2020-04-26 04:16:15 +10:00