Commit Graph
190 Commits
Author SHA1 Message Date
Mike-Solar a84e75ef47 change: UI and migrate to gtest 2026-07-27 05:27:32 +08:00
Mike-Solar eb634b53ef R7: pure C ABI display boundary + engine visibility closure
R7-A (Qwen 3.8 Max): oakengine/display.h rewritten to the POD contract
from r7-pure-abi-plan.md - oak_video_params everywhere, opaque
texture/frame handles with retain/free protocol (engine-heap control
blocks), OakSharedBuffer refcounted wrapper for the QVariant playback
path. All TexturePtr/FramePtr gone from app (47 sites).

R7-B (Qwen 3.8 Max): liboakengine.so exports 3486 -> 19 C++ symbols
(version script oakengine.ver: oakengine_* plus the documented
oakgl/oakvulkan dlopen plugin ABI). oakengine-obj OBJECT library feeds
both the shared lib and the test binaries (-rdynamic so dlopen'd
backends resolve engine objects).

Fix (Kimi K3): producer/consumer type mismatch - viewerdisplay
unpacks OakSharedBufferPtr but viewer.cpp pushed raw void* handles,
so no frame ever reached the display widget (all 5 vulkan viewer
tests timed out with 'never received a texture'). Producers now wrap
with oak_make_shared_frame / oak_make_shared_texture(retain).

Verified: build 0 errors, ctest 45/45, nm U _ZN5olive = 0 in
oak-editor/oak-render-worker/oak-cli, 19 exported C++ symbols in
liboakengine.so (all documented plugin ABI).
2026-07-27 00:54:46 +08:00
Mike-Solar 0aa5879f35 app: migrate all engine access to the C ABI facade (nm U _ZN5olive = 0)
Every app module now reaches liboakengine exclusively through
oakengine_* C calls, EngineEventBridge subscriptions and app-side
handle headers (cliphandle/keyframehandle/nodevaluehandle/oakvaluehelper).
Direct C++ command construction, engine signal connect()s, and engine
type usage in MOC-visible signatures are gone: 557 -> 0 undefined
olive:: symbols in oak-editor.
2026-07-26 22:43:21 +08:00
Mike-Solar 1384ad1e95 app: migrate the viewer panel to the facade playback engine 2026-07-20 18:55:04 +08:00
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 f6211f97a5 Fix render worker reuse and stabilize out-of-process video rendering 2026-07-13 10:19:30 +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 537908c605 footageviewer: auto switch waveform mode when clicking video/audio buttons 2023-03-20 16:51:39 -07: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 dd9c52ab59 start moving core frameworks to external libraries 2023-01-19 09:51:47 -08:00
itsmattkc c357b04e82 viewer: don't attempt to update still image
Fixes crash when playing audio with muxed still
2022-11-05 10:13:04 -07:00
itsmattkc d1545745d8 various: moved time from viewer UI to viewer node 2022-10-23 20:56:04 -07:00
itsmattkc 42ba84bf5f multicam: finished UI implementation 2022-10-03 17:24:09 -07:00
itsmattkc 8a2f2912b4 multicam: allow overrides by selecting multicam nodes in nodeview 2022-10-02 11:23:55 -07:00
itsmattkc 14c7bd6dbc multicam: implemented queuing of future node selections during playback 2022-10-02 10:39:35 -07:00
itsmattkc 14bf515d3f multicam: various improvements 2022-10-01 16:57:46 -07:00
itsmattkc 640e6741f4 multicam: prioritize current clip under playhead 2022-09-29 19:45:38 -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 487cd166d7 start implementation of multicam panel 2022-09-21 13:16:19 -07:00
itsmattkc d017d2c143 viewer: add shortcut to save frame as image 2022-09-16 12:19:47 -07:00
itsmattkc bc9f8c2e3b Merge branch 'master' into cache-update 2022-08-27 10:54:20 -07:00
itsmattkc b361ba8c51 viewer: ignore scrub events when time changes programmatically 2022-08-21 10:03:07 -07:00
itsmattkc 54d0a94a20 Merge branch 'master' into cache-update 2022-08-18 08:12:46 -07:00
itsmattkc 25e94112f8 viewer: implement lookahead to ensure footage is ready in advance 2022-07-26 14:49:19 -07:00
itsmattkc 3948b77543 viewer: allow customizing subtitle font
Fixes #1980
2022-07-23 13:49:02 -07:00
itsmattkc 7e1792cfea Merge branch 'master' into cache-update 2022-07-01 22:32:49 -05:00
itsmattkc 079d6beff2 timeline: separate markers and workarea 2022-06-27 23:39:31 -07:00
itsmattkc 63f74691a5 render: cleaned up threading 2022-06-25 09:59:43 -07:00
itsmattkc 15d6f407eb viewer: implement playback resolution option 2022-06-22 23:55:30 -07:00
itsmattkc 3a7dfdb681 viewer: allow showing waveform and viewer simultaneously
Fixes #1959
2022-06-21 12:23:44 -07:00
itsmattkc 6bc84e00ae viewer: add watcher destroyed slot
Prevents crashes
2022-06-06 20:17:28 -07:00
itsmattkc 9918af2614 Merge branch 'master' into hashremoval 2022-05-30 21:00:05 -07:00
itsmattkc ca26f023f2 viewer: improved frame queuing 2022-05-30 20:55:59 -07:00
itsmattkc 9cc861cdd5 cache: cancel tasks on disable 2022-05-30 13:40:39 -07:00
itsmattkc 89b6cce2b2 Merge branch 'master' into hashremoval 2022-05-29 11:18:58 -07:00
itsmattkc bbf6f8f9f9 export: fixed stills 2022-05-29 10:15:32 -07:00
itsmattkc f124ad3178 cache waveforms at clip level 2022-05-22 20:54:59 -07:00
itsmattkc e0bb31b199 remove shifts, operations, and make caches node-agnostic 2022-05-16 19:53:38 -07:00
itsmattkc bfd6a407a5 Merge branch 'master' into hashremoval 2022-05-16 09:12:49 -07:00
itsmattkc ea13f249b7 render: fixed threading regression 2022-05-15 21:36:40 -07:00
itsmattkc 81956d8869 viewer: allow queue some time to catch up 2022-05-15 21:13:24 -07:00
itsmattkc 07f92911cd text: minor refactoring to make rect setting code more reusable 2022-05-13 08:41:22 -07:00
itsmattkc 1def68f1a4 viewer: allow adding objects with a rect 2022-05-12 13:40:11 -07:00
itsmattkc 501564fb22 ui: replace html edit in text node with edit in viewer button 2022-05-10 18:07:17 -07:00
itsmattkc 4b366a9b73 update copyright year to 2022 2022-05-10 10:38:56 -07:00