Commit Graph
125 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 c203ce1dbf fix: black preview when footage connects directly to a clip
ClipBlock::kBufferIn is declared as NodeValue::kNone with no value
hint, so when a footage node is connected straight to a clip's buffer
input (no effect node in between), the traverser has no type to look
up in the footage's value table and falls back to its last entry. A
footage pushes its video texture first and its audio samples last, so
a video clip ended up fed with audio samples, produced no texture and
the preview went silently black. With any node in between, the table
only carries the passthrough texture, which is why the bug only showed
on direct connections.

Make Node::GetValueHintForInput virtual and override it in ClipBlock
to prefer the value type matching the clip's track (kTexture on video
tracks, kSamples on audio tracks).

Regression tests cover the exact application render path
(PreviewAutoCacher -> RenderManager -> RenderWorkerPool ->
oak-render-worker) for both the direct and indirect cases, the hint
following the track type, and viewer display widgets. The direct-case
test reproduces the black frame without the fix and passes with it.
Full suite: 584 passed.
2026-07-16 01:06:24 +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 86e82b13e2 remove unused includes 2026-01-05 14:24:28 +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 5e29414dce clip: use footage label by default rather than copied label 2023-02-21 19:44:26 -08:00
itsmattkc 5da72e4d35 Squashed commit of the following:
commit dec7ca6b96c58decf2c5e5194b665fa2342951b2
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
Date:   Wed Feb 8 12:32:12 2023 -0800

    moved previewautocacher to rendermanager

commit d289d74d82c3911f3fdaa707abe9994c7363594d
Merge: a8a049a28 70d34c674
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
Date:   Wed Feb 8 12:15:31 2023 -0800

    Merge branch 'master' into move-cacher-to-renderman

commit a8a049a2857c438cbab0f1ab21e3299fdfbf1fa1
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
Date:   Wed Feb 8 11:18:25 2023 -0800

    initial work
2023-02-08 12:40:19 -08:00
itsmattkc 9a0e16f504 move clamping code from clip to track
Fixes severe regression related to audio transitions
2022-11-18 10:20:03 -08:00
itsmattkc 073e9fdb0e fixed transition regression 2022-11-01 21:04:44 -07:00
itsmattkc ca47792dc7 nodes: clamp footage retrieval times for clips
Fixes #2070
2022-11-01 12:44:01 -07:00
itsmattkc 5e92930de0 nodes: fix loop mode regression 2022-11-01 09:15:51 -07:00
itsmattkc fa8dc8892b clip: limit input node lookup to 1 2022-10-05 21:01:15 -07:00
itsmattkc d9c50ce176 clip: limit maximum multicam to 1 2022-10-05 20:54:17 -07:00
itsmattkc e91ae5e4df Merge branch 'master' into multicam 2022-10-01 13:51:04 -07:00
itsmattkc df97df635d timeline: implement nest function
Also includes some improved cache/request code
2022-10-01 13:04:51 -07:00
itsmattkc 74a1ec1479 multicam: implement clip splitting 2022-09-28 17:57:09 -07:00
itsmattkc d0e12ce607 timeline: add options for manually caching and discarding parts of clips 2022-09-13 19:19:42 -07:00
itsmattkc 7c0637d428 clip: remove unnecessary lines 2022-09-08 20:28:59 -07:00
itsmattkc 97ae714017 clip: fixed issue where thumbs would be cached infinitely 2022-09-06 17:00:21 -07:00
itsmattkc 571be3d28d timeline: added thumbnail modes that affect how much is rendered 2022-09-06 16:06:26 -07:00
itsmattkc 54d0a94a20 Merge branch 'master' into cache-update 2022-08-18 08:12:46 -07:00
itsmattkc 4a22bf71e7 clip: fix issue with trimming in point of speed adjusted clip 2022-08-15 18:24:17 -07:00
itsmattkc 0d9727b6d2 architecture: move loop modes to clips 2022-07-17 15:22:36 -07:00
itsmattkc 0cab96d463 clip: correct bug in media_range() function 2022-07-02 19:08:24 -05:00
itsmattkc 7e1792cfea Merge branch 'master' into cache-update 2022-07-01 22:32:49 -05:00
itsmattkc 89927c71ff implemented reveal in footage viewer option
Fixes #1958
2022-06-27 23:40:05 -07:00
itsmattkc 079d6beff2 timeline: separate markers and workarea 2022-06-27 23:39:31 -07:00
itsmattkc eeea16c5c3 cache: add passthroughs to allow shallow copies of data 2022-06-06 20:06:43 -07:00
itsmattkc dfc401b63c cache: behavior improvements 2022-06-06 09:39:09 -07:00
itsmattkc 25699ef05b cache: use disk states to share caches 2022-06-05 19:47:33 -07:00
itsmattkc 7a8794fe88 ui: draw clip cache on timeline 2022-06-03 17:16:29 -07:00
itsmattkc 9cc861cdd5 cache: cancel tasks on disable 2022-05-30 13:40:39 -07:00
itsmattkc e3830116b0 clip: implement auto-cache option 2022-05-30 08:59:56 -07:00
itsmattkc 2f7dc3c98b implemented separate waveform cache 2022-05-29 17:52:35 -07:00
itsmattkc 826090b621 cache: save states to disk 2022-05-29 14:03:09 -07:00
itsmattkc e9404ba869 added second frame cache for thumbnails 2022-05-27 19:16:08 -07:00
itsmattkc 60f7f06de4 implemented base for thumbnail display 2022-05-25 11:18:08 -07:00
itsmattkc f124ad3178 cache waveforms at clip level 2022-05-22 20:54:59 -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 8f7280dd09 clip: add missing retranslate 2022-05-04 15:19:20 -07:00
itsmattkc d55d9c820f code: use macros for default node functions
Easier to maintain
2022-05-04 11:01:17 -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 6a0b5856c9 various: extended marker and timeline functionality 2022-05-01 21:17:22 -07:00
itsmattkc d1bb931854 nodeparamview: implemented add button 2022-04-26 14:23:19 -07:00
itsmattkc 245a0a112a clip: fixed speed/reverse order 2022-04-11 18:30:17 -07:00