1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285
|
Movit 1.7.2, September 6th, 2025
- Fix compatibility with newer Google Test.
Movit 1.7.1, July 22nd, 2023
- Fix a bug when compiling in shaders, that could cause errors
with certain shader compilers. Reported by Stefano Rivera.
Movit 1.7.0, July 15th, 2023
- Compile shaders into the library. It is now allowed to give ""
as the data directory, which will use the compiled-in shaders.
Most users should probably just do that.
- Use exact sRGB matrix values for COLORSPACE_sRGB.
Movit 1.6.3, July 7th, 2019
- Various bugfixes.
Movit 1.6.2, March 18th, 2018
- Various bugfixes.
Movit 1.6.1, January 31st, 2018
- Loosen up some restrictions on strong one-to-one-effects. In particular,
this fixes a bug with MixEffect and compute shaders that hit some
Nageru setups.
Movit 1.6.0, January 24th, 2018
- Support for effects that work as compute shaders. Compute shaders are
generally slower than fragment shaders for the same algorithm,
but allow some forms of communication between shader invocations
and have more flexible output, which can enable more efficient algorithms.
See effect.h for more details. Note that the fastest rendering API on
EffectChain is now to a texture if possible, not to an FBO. This will
only matter if the last effect is a compute shader.
- Movit now includes a compute shader implementation of DeinterlaceEffect,
which is automatically used instead of the fragment shader implementation
if your GPU and OpenGL driver supports it (in practice, this means on
all platforms except on macOS). The compute shader version is typically
20–80% faster than the fragment shader version, depending on your GPU
and other factors.
A compute shader implementation of ResampleEffect was written but
ultimately failed to be faster, and so is not included.
- Support for microbenchmarks of effects through the Google microbenchmarking
framework (optional). Currently, DeinterlaceEffect and ResampleEffect has
benchmarks; enable them by running the unit test with --benchmark (also try
--benchmark --help).
- Effects can now explicitly request _not_ to have mipmaps, which means they
can do so without needing to request bounce and fiddling with the sampler
state. Note that this is an API change for effects.
- Movit now requires C++11, both to build and to #include the header files.
Support for SDL1 has been dropped; unit tests and the demo program now need
SDL2.
- Various smaller bugfixes and optimizations.
Movit 1.5.3, August 10th, 2017
- Various bugfixes.
Movit 1.5.2, July 5th, 2017
- The texture generation for ResampleEffect (when the size is changed)
now uses less CPU.
- Work around an NVIDIA driver threading bug by aggressively caching VAOs.
Movit 1.5.1, May 29th, 2017
- Allow YCbCrInput to change input format after finalize.
- Some minor YCbCrInput bugfixes.
Movit 1.5.0, March 21st, 2017
- Support interleaved Y'CbCr input (4:4:4 in a single texture).
- Support 10-bit and 12-bit Y'CbCr, both for input and output. For planar,
these are supported packed in 16-bit ints; for interleaved, 10:10:10:2 is
supported. (Efficient conversion to and from v210, ie. 10-bit 4:2:2,
is possible using compute shaders, but Movit does not include support
for them at the current point.) Note that this now means the num_levels
flag in YCbCrFormat actually matters, although 0 will be interpreted
as 256 (8-bit) for the benefit of older applications.
- Limited support for having multiple Y'CbCr outputs from a chain.
- Allow changing the Y'CbCr output coefficients runtime, ie., after finalize.
- Fix an issue where the last pass would have been rendered with the sRGB
flag set, which confused Qt applications running in certain NVIDIA
configurations.
Movit 1.4.0, November 5th, 2016
- Allow setting the intermediate format for chains, instead of hardcoding
it at 16-bit RGBA; advanced users can use this to e.g. ask for 8-bit
sRGB intermediates, reducing the amount of memory bandwidth needed
at the cost of reduced precision. Whether this is a good tradeoff or not
depends on the exact chain and your requirements.
- Fix an issue where a (cached) shader program could be used from multiple
threads at a time, causing the uniforms to contain unpredictable values.
- Make the error printed on check_error() slightly friendlier: Include the
enum if possible, and print it to stderr instead of stdout.
Movit 1.3.2, February 23rd, 2016
- Fix an issue with initialization in certain locales. Patch from
Jean-Baptiste Mardelle.
Movit 1.3.1, February 15th, 2016
- Fix an issue where certain effect chains (particularly involving
out-of-tree effects that return only a constant color) could cause
texture coordinates not to be set properly. (The new code probably
also has slightly lower OpenGL driver overhead.) Reported by
Christophe Thommeret.
Movit 1.3.0, January 31st, 2016
- Movit now requires GLSL 1.30 (so a driver from 2008 or later);
before, it claimed to support 1.10, but actually used 1.30 features.
Note that some OpenGL drivers, in particular on OS X, only supports
GLSL 1.30 (actually, 1.50) if you have an OpenGL core context.
- Add a deinterlacer, based on YADIF.
- Allow parallel output to RGBA and Y'CbCr textures at the same time.
- Make FlatInput and YCbCrInput support taking in external OpenGL
textures. Also allow them to change width/height after instantiation.
- Various compatibility and performance fixes. In particular,
fp16 conversion on older (non-Haswell) CPUs is much faster, due to
new conversion code by Fabian Giesen.
Movit 1.2.0, September 24th, 2015
- Movit now ships a version.h with a #define MOVIT_VERSION that
increases on every API change, including in git. (The number
itself carries no semantic meaning beyond this.) Movit 1.2.0
is not API or ABI compatible with 1.1.x, so there has been a
soname bump to libmovit.so.3.
- More flexible Y'CbCr input; in particular, a special input
for 4:2:2 interleaved data (UYVY), and support for semi-planar
input (Cb and Cr in the same texture, like in NV12). Note that
you should now also set the new “num_levels” member of
YCbYCbCrFormat to 256 (signifying 8-bit input), although
it is not used yet; this is a stepping stone towards supporting
10- and 12-bit Y'CbCr.
- Basic support for Y'CbCr _output_. Currently only 8-bit,
and only 4:4:4 (ie., you'll need to subsample yourself
afterwards). It is possible to split the output into multiple
textures, though, if you want a luma/chroma split (NV12-like)
or full planar.
- Support top-left origin for output. This is only really useful
if you are rendering directly into some memory area with top-left
origin; most users will get the expected behavior by using
bottom-left as before.
- Rework uniform handling for less OpenGL overhead. Note that
this means your effects now need to register uniforms in the
C++ code instead of declaring them in the .frag file.
- Make the PaddingEffect border subpixel-aware, and also support
an arbitrary (subpixel) border offset. This means that you can
compose PaddingEffect with an integral left/top offset
(use the new IntegralPaddingEffect for potentially more speed)
and ResampleEffect with a subpixel left/top offset (and zoom to
compensate) to get Lanczos interpolation for the pixels and a
simple bilinear interpolation for the border itself.
- Fix a bug that could cause very bad filter weights in
ResampleEffect.
- Various performance improvements, in particular with regards to
CPU usage in ResampleEffect.
Movit 1.1.3, March 29th, 2015
- Fix accuracy issues in ResampleEffect, particularly when
zooming. Note that this might cost a few percent performance.
Reported by Christophe Thommeret.
- Make the number of BlurEffect taps configurable.
Based on patch by Christophe Thommeret.
- Multiple other bugfixes, some courtesy Dan Dennedy and
Christophe Thommeret. In particular, thread-safety fixes
related to locales and chain finalization.
Movit 1.1.2, August 12th, 2014
- Performance bugfix: Fix texture freelist behavior so that it's
LRU instead of the exact opposite. Patch by Christophe Thommeret.
- Performance bugfix: Correct the number of blur taps read in the
blur filter (it was reading about twice as many as it should).
Also found by Christophe Thommeret.
Movit 1.1.1, April 12th, 2014
- Fix an issue that could cause assertion failure in ResourcePool
when FBOs are reused, especially with NVIDIA's drivers.
Movit 1.1, April 10th, 2014
- NOTE: Movit now uses libepoxy rather than GLEW. This is needed because
of core context and GLES3 support (see below). Movit 1.1 should be
generally API-compatible with 1.0.3 (with the exception of the next
point), but is not ABI-compatible, so there has been a soname bump
to libmovit.so.2.
- NOTE: The rules for using an EffectChain or ResourcePool in multiple
OpenGL contexts or threads have changed somewhat; see the comments in
resource_pool.h.
- Movit will now work in OpenGL core contexts, and on GLES 3.0 or newer.
(GLES2 devices are not supported.) This also holds for all unit tests,
provided that you use SDL2 and not SDL1 (because SDL2 is needed to set
up such contexts). Note that the included demo application still requires
a classic OpenGL context.
- ResampleEffect can now do sub-pixel translate and/or zoom.
- LumaMixEffect now has an “invert” flag, as a convenience to e.g. change
a left-to-right wipe into a right-to-left one.
- Significant reduction in driver overhead, especially on NVIDIA drivers.
- Various smaller bugfixes and performance improvements.
Movit 1.0.3, March 16th, 2014
- Yet more build system tweaks mainly related to distribution packaging.
Movit 1.0.2, March 16th, 2014
- Make a few tweaks to “make install”, to make distributions' lives easier.
Movit 1.0.1, March 16th, 2014
- Fix so that shared libraries are built.
Movit 1.0, March 16th, 2014
- Initial release.
|