1 Movit 1.5.1, May 29th, 2017
3 - Allow YCbCrInput to change input format after finalize.
5 - Some minor YCbCrInput bugfixes.
8 Movit 1.5.0, March 21st, 2017
10 - Support interleaved Y'CbCr input (4:4:4 in a single texture).
12 - Support 10-bit and 12-bit Y'CbCr, both for input and output. For planar,
13 these are supported packed in 16-bit ints; for interleaved, 10:10:10:2 is
14 supported. (Efficient conversion to and from v210, ie. 10-bit 4:2:2,
15 is possible using compute shaders, but Movit does not include support
16 for them at the current point.) Note that this now means the num_levels
17 flag in YCbCrFormat actually matters, although 0 will be interpreted
18 as 256 (8-bit) for the benefit of older applications.
20 - Limited support for having multiple Y'CbCr outputs from a chain.
22 - Allow changing the Y'CbCr output coefficients runtime, ie., after finalize.
24 - Fix an issue where the last pass would have been rendered with the sRGB
25 flag set, which confused Qt applications running in certain NVIDIA
29 Movit 1.4.0, November 5th, 2016
31 - Allow setting the intermediate format for chains, instead of hardcoding
32 it at 16-bit RGBA; advanced users can use this to e.g. ask for 8-bit
33 sRGB intermediates, reducing the amount of memory bandwidth needed
34 at the cost of reduced precision. Whether this is a good tradeoff or not
35 depends on the exact chain and your requirements.
37 - Fix an issue where a (cached) shader program could be used from multiple
38 threads at a time, causing the uniforms to contain unpredictable values.
40 - Make the error printed on check_error() slightly friendlier: Include the
41 enum if possible, and print it to stderr instead of stdout.
44 Movit 1.3.2, February 23rd, 2016
46 - Fix an issue with initialization in certain locales. Patch from
47 Jean-Baptiste Mardelle.
50 Movit 1.3.1, February 15th, 2016
52 - Fix an issue where certain effect chains (particularly involving
53 out-of-tree effects that return only a constant color) could cause
54 texture coordinates not to be set properly. (The new code probably
55 also has slightly lower OpenGL driver overhead.) Reported by
59 Movit 1.3.0, January 31st, 2016
61 - Movit now requires GLSL 1.30 (so a driver from 2008 or later);
62 before, it claimed to support 1.10, but actually used 1.30 features.
63 Note that some OpenGL drivers, in particular on OS X, only supports
64 GLSL 1.30 (actually, 1.50) if you have an OpenGL core context.
66 - Add a deinterlacer, based on YADIF.
68 - Allow parallel output to RGBA and Y'CbCr textures at the same time.
70 - Make FlatInput and YCbCrInput support taking in external OpenGL
71 textures. Also allow them to change width/height after instantiation.
73 - Various compatibility and performance fixes. In particular,
74 fp16 conversion on older (non-Haswell) CPUs is much faster, due to
75 new conversion code by Fabian Giesen.
78 Movit 1.2.0, September 24th, 2015
80 - Movit now ships a version.h with a #define MOVIT_VERSION that
81 increases on every API change, including in git. (The number
82 itself carries no semantic meaning beyond this.) Movit 1.2.0
83 is not API or ABI compatible with 1.1.x, so there has been a
84 soname bump to libmovit.so.3.
86 - More flexible Y'CbCr input; in particular, a special input
87 for 4:2:2 interleaved data (UYVY), and support for semi-planar
88 input (Cb and Cr in the same texture, like in NV12). Note that
89 you should now also set the new “num_levels” member of
90 YCbYCbCrFormat to 256 (signifying 8-bit input), although
91 it is not used yet; this is a stepping stone towards supporting
92 10- and 12-bit Y'CbCr.
94 - Basic support for Y'CbCr _output_. Currently only 8-bit,
95 and only 4:4:4 (ie., you'll need to subsample yourself
96 afterwards). It is possible to split the output into multiple
97 textures, though, if you want a luma/chroma split (NV12-like)
100 - Support top-left origin for output. This is only really useful
101 if you are rendering directly into some memory area with top-left
102 origin; most users will get the expected behavior by using
103 bottom-left as before.
105 - Rework uniform handling for less OpenGL overhead. Note that
106 this means your effects now need to register uniforms in the
107 C++ code instead of declaring them in the .frag file.
109 - Make the PaddingEffect border subpixel-aware, and also support
110 an arbitrary (subpixel) border offset. This means that you can
111 compose PaddingEffect with an integral left/top offset
112 (use the new IntegralPaddingEffect for potentially more speed)
113 and ResampleEffect with a subpixel left/top offset (and zoom to
114 compensate) to get Lanczos interpolation for the pixels and a
115 simple bilinear interpolation for the border itself.
117 - Fix a bug that could cause very bad filter weights in
120 - Various performance improvements, in particular with regards to
121 CPU usage in ResampleEffect.
124 Movit 1.1.3, March 29th, 2015
126 - Fix accuracy issues in ResampleEffect, particularly when
127 zooming. Note that this might cost a few percent performance.
128 Reported by Christophe Thommeret.
130 - Make the number of BlurEffect taps configurable.
131 Based on patch by Christophe Thommeret.
133 - Multiple other bugfixes, some courtesy Dan Dennedy and
134 Christophe Thommeret. In particular, thread-safety fixes
135 related to locales and chain finalization.
138 Movit 1.1.2, August 12th, 2014
140 - Performance bugfix: Fix texture freelist behavior so that it's
141 LRU instead of the exact opposite. Patch by Christophe Thommeret.
143 - Performance bugfix: Correct the number of blur taps read in the
144 blur filter (it was reading about twice as many as it should).
145 Also found by Christophe Thommeret.
148 Movit 1.1.1, April 12th, 2014
150 - Fix an issue that could cause assertion failure in ResourcePool
151 when FBOs are reused, especially with NVIDIA's drivers.
154 Movit 1.1, April 10th, 2014
156 - NOTE: Movit now uses libepoxy rather than GLEW. This is needed because
157 of core context and GLES3 support (see below). Movit 1.1 should be
158 generally API-compatible with 1.0.3 (with the exception of the next
159 point), but is not ABI-compatible, so there has been a soname bump
162 - NOTE: The rules for using an EffectChain or ResourcePool in multiple
163 OpenGL contexts or threads have changed somewhat; see the comments in
166 - Movit will now work in OpenGL core contexts, and on GLES 3.0 or newer.
167 (GLES2 devices are not supported.) This also holds for all unit tests,
168 provided that you use SDL2 and not SDL1 (because SDL2 is needed to set
169 up such contexts). Note that the included demo application still requires
170 a classic OpenGL context.
172 - ResampleEffect can now do sub-pixel translate and/or zoom.
174 - LumaMixEffect now has an “invert” flag, as a convenience to e.g. change
175 a left-to-right wipe into a right-to-left one.
177 - Significant reduction in driver overhead, especially on NVIDIA drivers.
179 - Various smaller bugfixes and performance improvements.
182 Movit 1.0.3, March 16th, 2014
184 - Yet more build system tweaks mainly related to distribution packaging.
187 Movit 1.0.2, March 16th, 2014
189 - Make a few tweaks to “make install”, to make distributions' lives easier.
192 Movit 1.0.1, March 16th, 2014
194 - Fix so that shared libraries are built.
197 Movit 1.0, March 16th, 2014