Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
f4ca385
Initial work on OpenFX module support
Sep 28, 2024
a13af15
Making yml files explicit in openfx module CMakeLists
Aug 8, 2025
6915f71
clang-format openfx module source files
Aug 8, 2025
7feec02
OpenFX module: adding TODO to incompleted code
Aug 20, 2025
a2473bd
reordering functions in src/modules/openfx/mlt_openfx.c|h
Aug 25, 2025
4118811
openfx module: avoid reading directories that contain .ofx.bundle but…
Aug 25, 2025
42c173e
openfx module: using typedefs for shared object symbols
Aug 25, 2025
4a24c27
openfx module: replace strtok with strtok_r to parse openfx plugin pa…
Aug 26, 2025
96e2c59
closedir after parsing openfx plugins
Aug 30, 2025
6acbf6f
openfx module support more parameters types
Sep 5, 2025
f1fa437
openfx module fix plugin parameter not passed correctly form the host
Sep 5, 2025
a180f22
openfx module adding support for color parameters
Sep 8, 2025
5dd30f1
openfx module: add support for double 2d point
Sep 22, 2025
308c2f3
filter_openfx.c set default value for parameter with type 'double' an…
Sep 22, 2025
81190a1
openfx module: progress on kOfxImageEffectActionGetRegionOfDefinition…
Sep 23, 2025
b678494
openfx module: avoid adding unsupported plugins as filters
Dec 15, 2025
d9f06be
Fix openfx module build issue with mingw/msys2
Dec 17, 2025
e510edd
Addressing @ddennedy review comments
Dec 31, 2025
144ed62
Make sure that OpenFX module have the imported target glib in CMakeLi…
Dec 31, 2025
a2e23aa
Turn off openfx module on msvc CI/CD build
Jan 2, 2026
a5e3923
openfx module: when plugin support RGBA64 or RGBA color format conver…
Jan 6, 2026
7ab8bb2
clang-format src/modules/openfx/filter_openfx.c
Jan 6, 2026
b003c7d
openfx module extract plugin description into mlt filter metadata
Jan 18, 2026
fee354f
clang-format src/modules/openfx/filter_openfx.c
Jan 18, 2026
02e052e
OpenFX module: setting some standard Source/Output properties after d…
Jan 31, 2026
048578a
openfx module: Quiet warnings from plugins that use OCIO patch by @bm…
Jan 31, 2026
93cae7c
openfx module: applying @bmatherly suggested changes in plugin detect…
Feb 17, 2026
ceecdad
Move third-party openfx files into a subdirector
bmatherly Feb 22, 2026
ef9ee93
Update copyright dates in openfx module
bmatherly Feb 22, 2026
160106a
Update comment styles and consistency
bmatherly Feb 23, 2026
f8814c8
Fix apparent copy/paste typo
bmatherly Feb 23, 2026
6fb5b52
Flag another TODO
bmatherly Feb 23, 2026
f967618
Fix memory leaks in property storage.
bmatherly Feb 27, 2026
9759bac
Fix destructors for dynamic library handles
bmatherly Feb 27, 2026
0e6f6f6
Refactor some dynamic library handle management.
bmatherly Feb 27, 2026
eb04489
Do not return status OK if the property does not exist
bmatherly Feb 27, 2026
07474b5
Consistency changes
bmatherly Feb 28, 2026
c4914a1
Fix metadata formatting
bmatherly Mar 1, 2026
6e586f6
Add additional handling for unknown properties
bmatherly Mar 3, 2026
a69d582
Correctly set pixel aspect ratio
bmatherly Mar 28, 2026
e3fc75a
Add metadata "experimental" tag until the module is more mature
bmatherly Apr 1, 2026
5a3f9bd
Search default paths for OFX plugins
ddennedy Apr 1, 2026
3168320
Alphabetize
ddennedy Apr 1, 2026
9fcbf24
Fix some plugins crash
ddennedy Apr 1, 2026
128bb38
Fix metadata
ddennedy Apr 1, 2026
5595012
Fix compile error
ddennedy Apr 1, 2026
aa18456
Fix compile warning, more host properties
ddennedy Apr 1, 2026
a9ed606
Sync openfx filter to metadata changes
ddennedy Apr 2, 2026
5c897c1
Cleanup stubbed functions
ddennedy Apr 3, 2026
64166b6
Extend service lock
ddennedy Apr 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 18 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,12 @@ option(MOD_JACKRACK "Enable JACK Rack module" ON)
option(USE_LV2 "Enable LV2 features" ON)
option(USE_VST2 "Enable LV2 features" ON)
option(MOD_KDENLIVE "Enable Kdenlive module" ON)
option(MOD_MOVIT "Enable OpenGL module" ON)
option(MOD_NDI "Enable NDI module" OFF)
option(MOD_NORMALIZE "Enable Normalize module (GPL)" ON)
option(MOD_OLDFILM "Enable Oldfilm module" ON)
option(MOD_OPENCV "Enable OpenCV module" OFF)
option(MOD_MOVIT "Enable OpenGL module" ON)
option(MOD_OPENFX "Enable OpenFX module (GPL)" ON)
option(MOD_PLUS "Enable Plus module" ON)
option(MOD_PLUSGPL "Enable PlusGPL module (GPL)" ON)
option(MOD_QT6 "Enable Qt6 module (GPL)" ON)
Expand Down Expand Up @@ -180,6 +181,7 @@ endif()

if(NOT GPL)
set(MOD_NORMALIZE OFF)
set(MOD_OPENFX OFF)
set(MOD_PLUSGPL OFF)
set(MOD_QT6 OFF)
set(MOD_RESAMPLE OFF)
Expand Down Expand Up @@ -275,6 +277,16 @@ if(MOD_KDENLIVE)
list(APPEND MLT_SUPPORTED_COMPONENTS kdenlive)
endif()

if(MOD_MOVIT)
pkg_check_modules(movit REQUIRED IMPORTED_TARGET movit)
find_package(OpenGL REQUIRED)

if(UNIX AND NOT APPLE)
find_package(X11 REQUIRED)
endif()
list(APPEND MLT_SUPPORTED_COMPONENTS movit)
endif()

if(MOD_NDI)
find_package(NDI REQUIRED)
list(APPEND MLT_SUPPORTED_COMPONENTS ndi)
Expand All @@ -293,14 +305,8 @@ if(MOD_OPENCV)
list(APPEND MLT_SUPPORTED_COMPONENTS opencv)
endif()

if(MOD_MOVIT)
pkg_check_modules(movit REQUIRED IMPORTED_TARGET movit)
find_package(OpenGL REQUIRED)

if(UNIX AND NOT APPLE)
find_package(X11 REQUIRED)
endif()
list(APPEND MLT_SUPPORTED_COMPONENTS movit)
if(MOD_OPENFX)
pkg_check_modules(glib IMPORTED_TARGET glib-2.0)
endif()

if(MOD_PLUS)
Expand Down Expand Up @@ -494,6 +500,7 @@ if(CLANG_FORMAT)
list(FILTER FORMAT_FILES EXCLUDE REGEX "/.*/plus/ebur128")
list(FILTER FORMAT_FILES EXCLUDE REGEX "/.*/movit/optional_effect.h")
list(FILTER FORMAT_FILES EXCLUDE REGEX "/.*/opencv/filter_opencv_tracker.cpp")
list(FILTER FORMAT_FILES EXCLUDE REGEX "/.*/openfx/openfx")
list(FILTER FORMAT_FILES EXCLUDE REGEX "/.*/plusgpl/cJSON")
list(FILTER FORMAT_FILES EXCLUDE REGEX "/.*/plusgpl/image.*")
list(FILTER FORMAT_FILES EXCLUDE REGEX "/.*/plusgpl/utils.*")
Expand Down Expand Up @@ -563,11 +570,12 @@ add_feature_info("Module: GDK" MOD_GDK "")
add_feature_info("Module: Glaxnimate (Qt6)" MOD_GLAXNIMATE_QT6 "")
add_feature_info("Module: JACKRack" MOD_JACKRACK "")
add_feature_info("Module: Kdenlive" MOD_KDENLIVE "")
add_feature_info("Module: Movit" MOD_MOVIT "")
add_feature_info("Module: NDI" MOD_NDI "")
add_feature_info("Module: Normalize" MOD_NORMALIZE "")
add_feature_info("Module: Oldfilm" MOD_OLDFILM "")
add_feature_info("Module: OpenCV" MOD_OPENCV "")
add_feature_info("Module: Movit" MOD_MOVIT "")
add_feature_info("Module: OpenFX" MOD_OPENFX "")
add_feature_info("Module: Plus" MOD_PLUS "")
add_feature_info("Module: PlusGPL" MOD_PLUSGPL "")
add_feature_info("Module: Qt6" MOD_QT6 "")
Expand Down
3 changes: 2 additions & 1 deletion CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,14 @@
"MOD_FREI0R": "OFF",
"MOD_GDK": "ON",
"MOD_JACKRACK": "OFF",
"USE_LV2": "OFF",
"USE_VST2": "OFF",
"USE_LV2": "OFF",
"MOD_KDENLIVE": "ON",
"MOD_NDI": "OFF",
"MOD_NORMALIZE": "ON",
"MOD_OLDFILM": "ON",
"MOD_OPENCV": "ON",
"MOD_OPENFX": "OFF",
"MOD_MOVIT": "OFF",
"MOD_PLUS": "ON",
"MOD_PLUSGPL": "OFF",
Expand Down
16 changes: 12 additions & 4 deletions src/framework/metaschema.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
--- # A metadata schema in Kwalify: http://www.kuwata-lab.com/kwalify/
# Version: 7.0
# Version: 7.1
type: map
mapping:
"schema_version": # This should match the version comment above
Expand Down Expand Up @@ -70,14 +70,15 @@ mapping:
type: str
enum:
- boolean # 0 or 1; not 'true', 'false', 'yes', or 'no' strings at this time
- color # 0xrrggbbaa | #rrggbb | #aarrggbb
- float
- geometry
- group # for grouping parameters in a UI, this is not an mlt_property_type
- integer
- properties # for passing options to encapsulated services
- rect # "X Y W H" or "X/Y:WxH"
- string
- time # time string values (clock, SMPTE) can be accepted in addition to frames
- rect # "X Y W H" or "X/Y:WxH"
- color # 0xrrggbbaa | #rrggbb | #aarrggbb
"service-name": # for type: properties, a reference to another service
type: str # format: type.service, e.g. transition.composite
"title": # A UI can use this for a field label
Expand Down Expand Up @@ -114,8 +115,10 @@ mapping:
- knob
- listbox
- dropdown # aka HTML select or GtkOptionMenu
- point
- radio
- rectangle # for use with type: geometry
- size
- slider
- spinner
- text
Expand All @@ -138,4 +141,9 @@ mapping:
# widget: combo or if "other" is in this sequence
sequence:
- type: scalar

"group": # A UI can use this to group parameters together
type: str
"normalized_coordinates": # For types that represent coordinates, whether values are normalized to 0..1
type: bool
default: no

4 changes: 4 additions & 0 deletions src/modules/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@ if(MOD_VIDSTAB)
add_subdirectory(vid.stab)
endif()

if(MOD_OPENFX)
add_subdirectory(openfx)
endif()

if(MOD_VORBIS)
add_subdirectory(vorbis)
endif()
Expand Down
27 changes: 27 additions & 0 deletions src/modules/openfx/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
add_library(mltopenfx MODULE
factory.c
mlt_openfx.c mlt_openfx.h
filter_openfx.c
)

add_custom_target(Other_openfx_Files SOURCES
filter_openfx.yml
)

if(GPL AND TARGET PkgConfig::glib)
include(GenerateExportHeader)
generate_export_header(mltopenfx)
target_compile_options(mltopenfx PRIVATE ${MLT_COMPILE_OPTIONS})
target_include_directories(mltopenfx PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(mltopenfx PRIVATE mlt PkgConfig::glib ${CMAKE_DL_LIBS})
target_include_directories(mltopenfx PRIVATE openfx/include)
if(NOT MSVC)
target_link_libraries(mltopenfx PRIVATE m)
endif()
endif()

set_target_properties(mltopenfx PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${MLT_MODULE_OUTPUT_DIRECTORY}")

install(TARGETS mltopenfx LIBRARY DESTINATION ${MLT_INSTALL_MODULE_DIR})

install(FILES filter_openfx.yml DESTINATION ${MLT_INSTALL_DATA_DIR}/openfx)
Loading
Loading