11 Commits

Author SHA1 Message Date
Jonathan Thomas e3151d577b Clean-up and modernization of our cmake build system
- Modernized SWIG policy handling for Python, Ruby, and Java without raising the project-wide CMake policy version.
- Switched Python discovery to Python3 on CMake 3.12+, with legacy PythonInterp/PythonLibs fallback for older CMake.
- Removed dead pre-CMake-3.8 SWIG branches.
- Quieted optional babl pkg-config probing.
- Changed FFmpeg probing so avresample is only checked if swresample is unavailable.
- Cleaned Java binding debug configure messages.
- Addressed the SWIG build warnings:
  - Added SWIG-only juce::Thread declaration for Python/Ruby/Java.
  - Added Python QWidget typecheck precedence.
  - Filtered known Ruby binding limitations for multiple inheritance and unexposed Profile operators.
  - Suppressed Java-only SWIG categories for unsupported operators/proxy limitations via Java SWIG flags.
2026-05-24 17:31:52 -05:00
Jonathan Thomas 51ee44ab33 Adding new Denoise effect
- Adds a new DenoiseImage video effect for reducing luma grain and color speckles with adaptive spatial filtering, conservative temporal blending, motion protection, and brightness response controls.
- Added to openshot-benchmark
- New unit tests
2026-05-05 21:19:26 -05:00
Jonathan Thomas 8ede4d777e Add Film Grain effect with deterministic, keyframeable controls, profile-scaled grain rendering, bindings, registration, and unit tests. Also update Analog Tape artifact
scaling so preview and export sizes stay visually consistent.
2026-04-24 23:06:55 -05:00
Jonathan Thomas 44f92a0387 Improving swig to wrap pointers as PyLong_AsVoidPtr - to avoid Android memory addresses overflowing as an int. 2026-02-02 21:14:01 -06:00
Jonathan Thomas 23b4e748ea Improving swig bindings for Python, Java, and Ruby for access direct pixel byte array:
Example Code Snippets:
Python:
import openshot

r = openshot.FFmpegReader("/home/jonathan/Pictures/ChatGPT Image Mar 27, 2025, 09_50_56 AM.png")
r.Open()
f = r.GetFrame(1)
buf = f.GetPixelsBytes()
w, h = f.GetWidth(), f.GetHeight()
stride = f.GetBytesPerLine()

Ruby:
require "openshot"

r = Openshot::FFmpegReader.new("/home/jonathan/Pictures/ChatGPT Image Mar 27, 2025, 09_50_56 AM.png")
r.Open()
f = r.GetFrame(1)
buf = f.GetPixelsBytes
w = f.GetWidth
h = f.GetHeight
stride = f.GetBytesPerLine
2025-12-22 13:46:41 -06:00
Jonathan Thomas 68d3850efa Exposing VideoCacheThread to SWIG bindings for Python, Ruby, and Java. This will be called from openshot-qt in Python, to speed up exports. 2025-06-06 15:33:43 -05:00
Jonathan Thomas d26ef4dcbb Merge branch 'develop' into lens-flare 2025-05-28 20:34:51 -05:00
Jonathan Thomas 3db2fe14fb Adding unit tests for Lens Flare effect, and adding effect to Python SWIG bindings 2025-05-28 17:40:47 -05:00
Jonathan Thomas 6a2f4f539f Adding missing effects to .i swig files 2025-05-25 23:29:50 -05:00
Jonathan Thomas 5cb74f484b Fixing swig java support to generate a package (org.openshot) and correctly wrap the shared pointers for Frame and Audio buffers. 2024-12-30 23:50:06 -06:00
Jonathan Thomas c8899963fd Add experimental support for Java bindings for libopenshot. This generates the *.class and *.java files, and a JNI library (libopenshot-java.so) to invoke the actual C++ openshot library, and a openshotJNI.jar which contains all of these files. 2024-06-08 14:56:30 -05:00