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
3a3ead6fc0
app: route all FFmpeg access through the ffmpeg_bridge C API
...
Replace every direct FFmpeg call in the editor and the render worker
with the pure C ffmpeg_bridge API, wrapped in thin C++ adapters that
preserve the original interfaces:
- avframeptr.h: olive::AVFrame adapter around FBFrame handles
- ffmpegutils: format conversion helpers on FB_* constants; the int
overload is renamed GetCompatibleBridgePixelFormat to avoid a silent
overload-resolution trap with the PixelFormat enum
- ffmpegdecoder/ffmpegencoder: rewritten as handle-based adapters over
FBDecoder/FBProbe/FBEncoder/FBScaler/FBResampler
- audioprocessor: FBAudioGraph push/pull adapter
- pluginrenderer/OliveClip: sws/pixdesc usage converted to FBScaler and
fb_pix_fmt_* queries
- AudioParams/channel layouts are plain uint64_t masks everywhere
Build integration: the root project no longer links FFMPEG directly;
only ffmpeg_bridge does. Binaries resolve the bridge library at runtime
via @loader_path inside the macOS app bundle (copied there post-build)
and via $ORIGIN/../ffmpeg_bridge/bin on Linux; on Windows the DLL is
installed next to the executables, so packages on all three platforms
ship the bridge library.
ffmpeg_bridge gains the extra API the adapters need:
fb_frame_make_writable, fb_decoder_get_format_duration,
fb_resampler_convert_frame, FB_PIX_FMT_YUV440P, SRT validation in
fb_probe_read_subtitle_stream, packed/planar fixes in
fb_encoder_write_audio, and a component-size fix in
fb_pix_fmt_component_size.
2026-07-15 23:00:06 +08:00
Mike-Solar
e5eeaddf2f
format: reformatting files
2026-07-13 15:30:43 +08:00
Mike-Solar
042f008a02
Add decoded input slots for render workers
2026-06-04 21:32: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
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
5e92930de0
nodes: fix loop mode regression
2022-11-01 09:15:51 -07:00
itsmattkc
876bc26a5c
decoder: track divider in cached frame
2022-10-24 10:13:17 -07:00
itsmattkc
4f6dd6aeb1
ffmpegdecoder: offset target timestamp by start timestamp
...
Fixes #2054
2022-10-10 18:54:45 -07:00
itsmattkc
bb63b6968c
decoder: use atomic int instead of mutex for access time
...
Prevents main thread from getting hung up if the decoder is doing something slow
2022-10-10 18:54:45 -07:00
itsmattkc
3275dac50f
decoder: fixed longstanding audio sync issue
...
Wow this has probably been a bug for 3 years straight
2022-10-03 15:30:52 -07:00
itsmattkc
30b64d9b9c
render: reimplemented deinterlacing with new shader-based format conversion
2022-08-08 14:05:11 -07:00
itsmattkc
1ac205413c
footage: allow overriding YCbCr range
...
Fixes #1354
2022-08-08 12:49:50 -07:00
itsmattkc
25e94112f8
viewer: implement lookahead to ensure footage is ready in advance
2022-07-26 14:49:19 -07:00
itsmattkc
2a1e87c9a9
decoder: cache still textures
2022-07-17 15:42:11 -07:00
itsmattkc
0d9727b6d2
architecture: move loop modes to clips
2022-07-17 15:22:36 -07:00
itsmattkc
a8d46c4c5f
render: fix issue responding to cancelled tasks
2022-07-10 12:54:55 -07:00
itsmattkc
eb9b1850ae
minor code cleanup
2022-05-31 20:14:07 -07:00
itsmattkc
930848e07a
decoder: make texture inside decoder
2022-05-29 18:33:35 -07:00
itsmattkc
6371fe0bc0
decoder: removed interlacing property
...
Interlacing should be moved somewhere else in the pipeline
2022-05-24 17:18:22 -07:00
itsmattkc
eca236134b
renderer: use probed params for tex gen
2022-05-24 14:26:02 -07:00
itsmattkc
cab62ba5d1
ffmpegdecoder: read pixel format from frame instead of stream
2022-05-22 13:41:44 -07:00
itsmattkc
b0530cd55d
decoders: upload directly to texture
2022-05-19 16:54:18 -07:00
itsmattkc
09c57422f9
ffmpeg: significantly optimized decoder
2022-05-15 19:33:01 -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
itsmattkc
6512774b86
code: conform traverser buffer creation
...
Helps ensure parity between traverser and render processor
2022-05-03 17:10:03 -07:00
itsmattkc
4173eb3c49
conform audio to planar in the decoder
2021-10-13 16:01:26 -07:00
itsmattkc
677277c16d
renderer: improved code flow
2021-09-21 19:10:03 -07:00
itsmattkc
d713ba3be7
fixed 32-bit integer overflow on long audio
2021-08-08 17:05:41 -07:00
itsmattkc
ba9ed99849
footage: check files for changes
2021-05-16 10:29:05 +10:00
itsmattkc
a1345166c7
renderer: move conform to task
...
Improved rendering system and user interface
Fixes #1375
2021-05-14 12:20:53 +10:00
itsmattkc
ee6b09f772
ffmpegdecoder: use avfilter system instead of raw swscale commands
...
Heh this was inevitable
2021-05-03 12:10:51 +10:00
itsmattkc
9d2ddbf727
renderer/decoder: clean up decoders after some time
2021-04-30 11:13:57 +10:00
itsmattkc
1fca3e1767
render: properly defined "out of bounds time" behavior with footage
...
If a user extends a clip beyond the footage's length, they can
choose whether they want a black frame, the last frame continued,
or for the footage to loop infinitely (same for extending earlier
than the start of footage).
2021-04-23 14:49:21 +10:00
itsmattkc
77d4b18a60
updated copyright year for 2021 [skip ci]
2021-04-17 18:56:50 +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
898ea25e89
finished merge of viewer and footage
2021-04-06 13:08:56 +10:00
itsmattkc
4827782331
moved sequence params into node graph too
...
Reduces code by reusing more of the existing node infrastructure
to synchronize sequence parameters the render backend.
2021-02-18 13:20:23 +11: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
6cb6407bd8
don't use shared ptrs on streams
2020-12-16 13:46:19 +11:00
itsmattkc
e12013e2fb
don't use shared ptrs for project items
2020-12-16 10:28:43 +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
94c0914e50
codec system rework
...
Codecs are now much cleaner and thread safe by design.
2020-11-10 11:23:25 +11:00
itsmattkc
bc60c74562
finalized very, very basic OTIO support
...
Ironed out various project and footage loading issues, and a single
cache invalidation issue.
2020-10-23 01:26:17 +11:00