59 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 449a4f5e9f Add a new FrameScope class which analyzes color and audio data for a frame. 2026-04-19 15:11:54 -05:00
Jonathan Thomas 991b29cca0 Merge remote-tracking branch 'origin/develop' into qt6-support 2026-04-10 17:20:06 -05:00
Jonathan Thomas 6c67d762cb Adding new MaxDecodeSize functionality to ReaderBase, which allows FFmpegReader and QtImageReaders to inspect and thumbnail clips much faster, and no longer be forced to do that a full resolution. Also refactoring CreateReader() inside Clip() constructor, so it can be called outside of the constructor, for example, when needing to create a reader for inspection or thumbnailing in openshot-qt. 2026-03-30 14:59:06 -05:00
Jonathan Thomas c7b36d9215 Slight refactor to our Python swig bindings to better support Arm64 pointer address space (required for Android) 2026-02-03 11:20:12 -06: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 3f60f601ca Take 2: Trying again to fix the python fallback directory detection for Launchpad build servers 2025-12-16 23:23:07 -06:00
Jonathan Thomas 353e6ae4f1 Changing python install detected folder, to be relative folder. This is breaking on some build servers, due to returning an absolute path that is installed outside of the install prefix. 2025-12-16 21:05:23 -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 5c52be24c9 Fix Python install path detection for compatibility with Python 3.12+ 2025-05-05 20:08:58 -05:00
HaiVQ cd887c7e8e Add Outline effect class and integrate into OpenShot 2024-12-10 17:13:34 +07:00
Jonathan Thomas 178cae48b7 Expose the Profile operators to SWIG for comparison 2024-10-10 12:46:16 -05:00
Jonathan Thomas c838c126ad Improvements to AudioWaveformer to use RMS (Root Mean Square), and return both average RMS and max RMS for graphing, including some new unit tests. 2022-11-01 15:17:03 -05:00
Jonathan Thomas 9cd7dd68a8 Wrap vector<float> in Swig mappings, and enable thread-safe access to swig wrappers - so our long running waveformer does not block the Python GIL 2022-10-31 14:20:18 -05:00
Jonathan Thomas 2326532820 Initial commit of AudioWaveformer class, which is designed to iterate any ReaderBase, and return a reduced "average" sample set - more useful for generating waveforms - for example, reduce a 44100 samples per second down to 20 samples per second. 2022-10-30 22:04:19 -05:00
Frank Dana d909eccdf6 python/openshot.i: Convert to 4-space indents (#820) 2022-04-03 00:45:08 -04:00
Jonathan Thomas 9eda757885 Merge branch 'develop' into audio-devices
# Conflicts:
#	src/AudioBufferSource.cpp
#	src/AudioReaderSource.cpp
#	src/AudioReaderSource.h
#	src/Clip.cpp
#	src/Frame.cpp
#	src/Qt/AudioPlaybackThread.h
#	src/audio_effects/Compressor.h
#	src/audio_effects/Delay.h
#	src/audio_effects/Echo.h
#	src/audio_effects/Expander.h
2021-12-02 22:05:19 -06:00
Jonathan Thomas 5adf45ab90 Merge pull request #768 from ferdnyc/fraction-operators
Fraction: Operators for direct autoconverting multiplication and division, in both C++ and Python
2021-11-10 22:20:11 -06:00
Jonathan Thomas 9c4a98a1cd Merge pull request #704 from ferdnyc/py_message
Exceptions: Add py_message() for Python
2021-11-10 22:13:57 -06:00