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