Commit Graph
64 Commits
Author SHA1 Message Date
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 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 324725f1f2 audiovisualwaveform: ceil rather than round when drawing samples
This may help with waveform visibility when tracks are set to smaller heights
2023-03-26 19:00:36 -07:00
itsmattkc c1c6893713 various: moved more to core lib 2023-01-19 16:01:31 -08:00
itsmattkc af8c0942f0 audiovisualwaveform: remove debug line 2022-09-27 22:00:32 -07:00
itsmattkc fc579356d9 audiovisualwaveform: allow arbitrary offsets for waveforms 2022-09-27 21:59:35 -07:00
itsmattkc bfad1a5762 Merge branch 'master' into cache-update 2022-09-07 09:39:14 -07:00
itsmattkc 93c76f55a1 audiovisualwaveform: fixed issue which caused glitches in visual 2022-09-06 17:04:21 -07:00
itsmattkc 21231540fd audio: use std vectors and size_t for sample indices 2022-09-01 12:52:23 -07:00
itsmattkc e3c3ee9ac4 code: removed unnecessary code 2022-05-30 08:59:25 -07:00
itsmattkc 2f7dc3c98b implemented separate waveform cache 2022-05-29 17:52:35 -07:00
itsmattkc 766a5bf688 audiovisualwaveform: skip null copy length 2022-05-21 17:26:54 -07:00
itsmattkc 8e642c82f8 Merge pull request #1914 from luzpaz/typos
Fix misc. source comment typos
2022-05-13 08:23:18 -07:00
itsmattkc 4b366a9b73 update copyright year to 2022 2022-05-10 10:38:56 -07:00
itsmattkc bb0fedabba simplified and optimized samplebuffer 2022-05-09 14:55:51 -07:00
luz paz 19dc803020 Fix misc. source comment typos 2022-05-04 19:53:53 -04:00
itsmattkc 91b761693b code: use config macro
Macro is much easier to use and more readable
2022-05-04 09:50:34 -07:00
itsmattkc 4476a8d858 consolidate cpu optimizations into single header 2022-01-22 17:15:23 -08:00
itsmattkc e12e5db760 try sse wrapper for neon instructions 2021-10-25 12:30:47 -07:00
itsmattkc 8a4e992214 minor formatting 2021-10-13 17:00:43 -07:00
Moreno Razzoli 3656ed480e min_max_sse: design failsafe for lenghts not mod.4 2021-10-13 22:58:04 +02:00
Moreno Razzoli 81be311ded AudioVisualWaveform, SumSamples: improve performance by 10x on x86 architecture by using platform specific optimizations 2021-10-12 08:59:12 +02:00
itsmattkc 109d973f6e audiovisualwaveform: improved shift code 2021-10-09 14:09:35 -07:00
itsmattkc a777740232 audiovisualwaveform: avoid index out of bounds 2021-09-29 00:15:05 -07:00
itsmattkc c29939b523 use audio waveform constants to determine min/max zoom levels 2021-09-28 21:35:24 -07:00
itsmattkc a5e7859e1f audiovisualwaveform: fixed overwrite silence bug 2021-09-17 20:52:35 -07:00
itsmattkc 5edb8f5d4a reduce waveform scale
Exponentially improves performance (at the expense of higher zoom levels but they were probably already too extreme)
2021-09-03 13:46:37 -07:00
itsmattkc 6bd7bc4cca timeline: copy waveform when copying 2021-08-25 12:27:26 -07:00
itsmattkc 391534b71d fixed waveform issue 2021-08-01 17:10:45 -07:00
itsmattkc be4a18d7de moved visual waveforms to block
This should be nicer, however it has a bug that I need to fix
2021-08-01 16:43:53 -07:00
itsmattkc 593a3b025a Merge branch 'master' into nodeview-redux 2021-07-16 20:09:33 -07:00
luzpaz 01536f9865 Fix various typos in code comments (#1670) [skip ci]
Found via `codespell -q 3 -S *.ts,*.xml -L ba,keypair,numer,uint`
2021-07-13 13:54:30 +02:00
itsmattkc 43d3fc57f2 Update audiovisualwaveform.cpp
audiovisualwaveform: fixed shift issue
2021-07-11 23:31:36 -07:00
itsmattkc 75c102d351 waveform: minor corrections 2021-07-08 12:19:27 -07:00
itsmattkc 1f0de6c5bb waveform: fixed precision issue when generating from sample data
Fixes #1664
2021-07-08 12:08:05 -07:00
itsmattkc 558d849d27 waveform: flip Y axis
Fixes #1666
2021-07-08 11:55:35 -07:00
itsmattkc 08e2fa4d8e renderer: generate audio waveforms in render threads
Solves UI lag issues with long audio sequences.
2021-06-11 23:30:55 -07:00
itsmattkc 7e62ad4e10 audiovisualwaveform: optimize shifting code 2021-05-30 12:55:50 +10:00
itsmattkc f2f5ab8739 audiovisualwaveform: keep track of length
Useful to determine how long the visual waveform is.
2021-04-27 00:49:04 +10:00
itsmattkc 77d4b18a60 updated copyright year for 2021 [skip ci] 2021-04-17 18:56:50 +10:00
itsmattkc 6b7412aff6 audiovisualwaveform: removed templates
I'm not sure if this will make any difference performance-wise,
but we don't need them anymore so yeah.
2021-04-14 15:27:34 +10:00
itsmattkc 3ffb2fde1c audiomonitor: use mipmapped waveform
Since we have these now, may as well use them. This should
improve general playback performance since the audio monitor
will be able to iterate far fewer
2021-04-14 15:25:38 +10:00
itsmattkc 8e1ac7c1a0 audiovisualwaveform: minor refactoring
Improves code readability.
2021-04-14 13:47:46 +10:00
itsmattkc b425754fef audiovisualwaveform: don't draw empty sample 2021-04-14 13:47:33 +10:00
itsmattkc 7107afaf99 audiovisualwaveform: mipmap waveforms 2021-04-13 23:43:44 +10:00
itsmattkc fb410e7c96 use vectors for sample buffers rather than raw ptr arrays 2021-03-17 11:54:14 +11:00