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
2aa921b215
fix: bug-fix sweep across node, audio, render, plugin subsystems
...
Node core:
- MathNode/TrigonometryNode combo strings realigned with Operation enums
- mathbase scalar/vector operand pick no longer uses bitwise type checks
- NodeSetPositionAndDependenciesRecursively moves dependencies again
- RemoveAllKeyframes undo actually restores keyframes
- NodeGroup GetInputName null-deref guard, passthrough ids use input id
- NodeValueTable::Has is an exact type match; tag fallback only for
empty tags; kStrCombo/kPushButton get data type names
- delete_all_keyframes no longer loops forever on unparented keyframes;
keyframe-load failures propagate; rational interpolation falls back to
double; OpacityEffect no longer leaks its internal MathNode
Audio/footage:
- AudioVisualWaveform: GetSummaryFromTime underflow OOB read, TrimIn
prepend length bookkeeping, OverwriteSums source channel indexing
- PanNode inserts the pan value into the sample job (keyframed pan
works); OutputParamsChanged is emitted on device change; PortAudio
device indices are validated before Pa_GetDeviceInfo
- Footage: AdjustTimeByLoopMode no longer hangs/UBs on degenerate
lengths, GetStreamIndex bounds-checked, CheckFootage clears stale
state on missing files, failed probes are not cached,
FootageDescription::Load requires its own root element
Render/track:
- ViewerOutput pushes the tagged samples value; TrackList disconnects
the track-height lambda; GetTrackFromReference validity check
- RenderManager dummy backend: null-initialized threads, guarded
decoder-cache/timer paths; Renderer::Destroy releases color cache
shaders/textures; unknown dynamic backends no longer alias to oakgl
- SharedMemoryRegion POSIX attach validates segment size; ReadMessage
skips blank lines instead of failing; GC counter clamped;
IsRenderingCustomRange implemented; TimeOffsetNode gets a true
inverse OutputTimeAdjustment; zero-speed clips return the held frame
Plugin/nodes:
- OliveClip: stored default region of definition is honored, on-demand
images are cached; OliveHost sets host identity properties and logs
instead of showing modal dialogs offscreen; Plugin.h dead decls gone
- DespillNode guards graph-less use with Rec.709 fallback; description
typos fixed (despill, swirl); mosaic applies when only one axis
matches; Windows-only Project filename separator test fixed
2026-07-17 08:26:48 +08:00
Mike-Solar
576a843e4d
tests: major coverage round for node/render/audio/plugin subsystems
...
Add 12 gtest files (~400 tests) covering previously untested or
under-tested areas:
- node_math_test: MathNode operations across number/rational/vector/
matrix/color/sample pairings, shader code generation
- node_undo_test: all nodeundo command classes redo/undo
- track_test: Track block management, lookup, references, Value()
- render_diskcache_test: FrameHashCache EXR/JPEG round trips,
DiskManager LRU eviction, state persistence
- node_group_test: NodeGroup passthrough registration and serialization
- plugin_paraminstance_test: OFX param instances and clip image logic
- audio_waveform_test: AudioVisualWaveform + AudioProcessor
- node_value_extended_test: NodeValue conversions, NodeValueTable ops,
NodeKeyframe/bezier behavior
- render_projectcopier_test: ProjectCopier sync, PlaybackCache,
AudioPlaybackCache PCM segments
- node_core_test: Node input arrays, flags, contexts, links, keyframe
events, CopyInputs
- clip_traverser_test: ClipBlock speed/reverse/loop time mapping,
traverser time propagation
- audio_manager_viewer_test: AudioManager device API, ViewerOutput
params/streams/signals
Also fixes two real bugs found by the new tests:
- MathNode vec-vec divide crashed (debug) or produced NaN (release) on
the zero padding components of vec2/vec3 operands
- NodeKeyframe's default constructor left previous_/next_ and the
bezier handles uninitialized
2026-07-17 04:17:51 +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
71e8665fbf
move item setting to a node flag
2023-02-19 21:30:49 -08:00
itsmattkc
c1c6893713
various: moved more to core lib
2023-01-19 16:01:31 -08:00
itsmattkc
dd9c52ab59
start moving core frameworks to external libraries
2023-01-19 09:51:47 -08:00
itsmattkc
4d80044d6d
upgrade to qt 6 compliance
2022-10-28 19:42:14 -07:00
itsmattkc
93f88042d1
math: use operation by default for name
2022-10-23 19:52:08 -07:00
itsmattkc
c0d8ff403f
nodes: rework so that jobs can be completely deferred
...
Big optimization requiring a lot of refactoring.
2022-09-24 18:44:59 -07:00
itsmattkc
b19730b1f5
nodes: store time with accelerated jobs
...
Fixes #2031
2022-09-23 02:55:18 -07:00
itsmattkc
22b618da96
mathbase: use size_t for sample counts instead of int
2022-09-16 00:00:39 -07:00
itsmattkc
5ea97f7a64
render: remove alpha request option
2022-07-20 23:14:16 -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
b88e15b8cf
accleratedjob: simplified function calls
2022-05-09 15:16:46 -07:00
itsmattkc
bb0fedabba
simplified and optimized samplebuffer
2022-05-09 14:55:51 -07:00
itsmattkc
58c4600d04
nodevalue: begin abstracting qvariant
2022-05-09 13:07:34 -07:00
itsmattkc
601d08ce64
node: change class sent to GetShaderCode
2022-05-07 13:36:44 -07:00
itsmattkc
ef046d5ed6
mathbase: don't push sample job if no samples are found
...
Not sure what this code was supposed to do, but this doesn't look right at all
2022-05-06 09:12:22 -07:00
itsmattkc
d55d9c820f
code: use macros for default node functions
...
Easier to maintain
2022-05-04 11:01:17 -07:00
itsmattkc
5f13a83009
footage: support multi-layered images
...
Fixes #982
2022-05-04 09:27:34 -07:00
itsmattkc
028d2fd60c
nodes: optimize job infrastructure
...
Rework traversing so that jobs are only resolved when they are used. This should provide moderate optimize to the traversing process.
2022-05-03 11:19:21 -07:00
itsmattkc
001834cbfa
node: implemented bypassing
2022-04-26 15:07:01 -07:00
itsmattkc
a8bb3a9880
opengl: replace all texture2Ds with texture
...
No idea how this passed through the cracks but oh well
2022-03-24 09:30:53 -07:00
itsmattkc and Thomas Wilshaw
a4056d8454
Upgrade to OpenGL ES 3.2 ( #1879 )
...
* upgrade to opengl 3.2
* cornerpin: no need for hack
* renderer: Update OCIO shader language to ES 3.0
Co-authored-by: Thomas Wilshaw <thomaswilshaw@gmail.com >
2022-03-20 11:17:18 -07:00
itsmattkc
4476a8d858
consolidate cpu optimizations into single header
2022-01-22 17:15:23 -08:00
itsmattkc
d88b7f35ce
[skip ci] revise comment in math node
2022-01-07 16:21:39 -08:00
itsmattkc
fbed81bb98
math: ensure alpha remains in 0.0-1.0 range
2022-01-07 16:16:59 -08:00
itsmattkc
21165cb2ff
implemented node flags
2021-12-19 13:19:31 -08:00
itsmattkc
f4db7cd330
fixed untranslated line in trig node
2021-11-12 11:06:28 -08:00
itsmattkc
e12e5db760
try sse wrapper for neon instructions
2021-10-25 12:30:47 -07:00
itsmattkc
55e87bae95
mathnode: fix macro issue
2021-10-18 21:37:36 -07:00
itsmattkc
382d464952
math: fix linker error
2021-10-16 10:39:49 -07:00
itsmattkc
a064ce0c94
mathnodebase: use func ptr instead of switch inside loop
2021-10-14 00:49:08 -07:00
itsmattkc
1eb5e44502
use sse instructions for volume/math
2021-10-13 17:15:47 -07:00
itsmattkc
8a4e992214
minor formatting
2021-10-13 17:00:43 -07:00
itsmattkc
7ba5dca4ab
renderer: always hash along edges
2021-09-19 23:11:20 -07:00
itsmattkc
67c7c71ca2
implemented "value hints" for choosing output values to use
2021-09-17 20:56:53 -07:00
itsmattkc
e08f2f9c34
more missing lines
2021-09-07 23:16:46 -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
df4138e5be
node: provide convenience function for signing hashes with ID
2021-07-29 13:22:40 -07:00
itsmattkc
2d17173a38
mathbase: other corrections for gl es 2.0
2021-06-07 00:58:04 +10:00
itsmattkc
8d18a8d9d8
mathbase: replace texture() calls
2021-06-07 00:50:33 +10:00