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
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
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
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
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
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
FeRD (Frank Dana)
59108504e3
Code changes for compatibility with JUCE 6.x
...
- Replace all juce::CriticalSection with std::recursive_mutex
- Replace all juce::AudioSampleBuffer with juce::AudioBuffer<float>
- Eliminate implicit reliance on 'using namespace juce;'
- Replace OpenShotAudio.h includes with targeted juce modules
2021-11-09 06:22:25 -05:00
Frank Dana
2d2a062bdc
Remove (broken) BlackMagic DeckLink support ( #760 )
2021-10-20 06:49:08 -04:00
Frank Dana
59138ea3e4
Adopt license management via Reuse project/tool ( #711 )
...
* reuse-managed license/copyright headers
reuse is a tool for compliance with the REUSE recommendations. See
<https://reuse.software/ > for more information, and
<https://reuse.readthedocs.io/ > for the online documentation.
* Set jsoncpp license
* Add MIT license for Decklink sources
* Explicitly license examples/
- Add headers to source files
- Change blanket licensing in .reuse/dep5 to only cover binary media
- Import CC-BY-3.0 license and assign to sintel_trailer
2021-10-16 01:26:26 -04:00
FeRD (Frank Dana)
76fb7c8013
Rename AudioSampleBuffer to AudioBuffer<float>
...
For a long time now, juce::AudioSampleBuffer has been nothing but an
alias for its true (templated) type, AudioBuffer<float>.
2021-08-24 13:11:00 -04:00
Frank Dana
09eb807507
CMake: USE_SWIG_DEPENDENCIES for CMake 3.20+ ( #691 )
2021-06-25 01:05:59 -04:00
Frank Dana
dbaac4debd
Merge branch 'develop' into frac-python-types
2021-01-27 03:50:45 -05:00
FeRD (Frank Dana)
3a0d88adcf
Property fixes for bindings
2021-01-13 10:59:13 -05:00
FeRD (Frank Dana)
b445d6df6c
Propagate library defs to swig
2021-01-13 08:31:34 -05:00
FeRD (Frank Dana)
b280fbd082
Bindings: Add template specializations
2020-12-04 11:28:59 -05:00
Jonathan Thomas
ac73bd965d
Fixing an issue caused by timeline::GetClip returning a ClipBase instead of a Clip (broke waveform generation).
...
Also adding a swig definition for the Caption effect.
2020-12-03 10:52:27 -06:00
FeRD (Frank Dana)
a1e44edad4
Merge branch 'develop' into clip-refactor-keyframes
2020-10-19 16:28:49 -04:00
FeRD (Frank Dana)
d910949189
CMake: Code and Find module tweaks
...
- FindOpenShotAudio takes over -DDEBUG, -DHAVE_ISFINITE logic
(now set on OpenShot::Audio target when appropriate)
- Tweaks to BlackMagic dependency discovery
- Reverse the test-disabling logic, `DISABLE_TESTS FALSE` cache
variable changed to `ENABLE_TESTS TRUE`
2020-10-18 11:04:28 -04:00