forked from vapoursynth/vapoursynth
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChangeLog
401 lines (368 loc) · 26.6 KB
/
ChangeLog
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
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
r30:
removed planedifference, deprecated since r28
added avisynth 2.6 and x64 support, note that x64 can only load 2.6 but not 2.5 plugins
no longer installs vsvfw.dlls into system dirs
added nfMakeLinear, this flag will make the immediately following cache do its best to make requests more linear, set it on source filters where seeking is slow
the installer will no longer fail if a newer than expected version of the visual studio runtimes are installed
vspipe now displays the correct number of total frames when -s is used
r29:
fixed bug where vfm wouldn't set _Combed property properly unless micout=true or micmatch=2 used
vfm now sets _fieldbased=0 after matching
added XLENGTH field to y4m headers so the total number of frames can be automatically passed to encoders
imwri will now always output a float image when built against a hdri imagemagick
imwri now supports QD32 with and without hdri
added . as a special output filename to vspipe, specifying it will simply skip all output writing
maskedmerge should now properly resize the mask without truncating it to limited range
made zimg the default resizer, swscale is no longer used
fixed crash in vdecimate (nodame)
now internally prioritizes frames based on original request order, should improve speed and frame time consistency in certain conditions
more specific error messages in many filters (nodame)
fixed the shown matrix names in clipinfo
fixed compilation on non x86 targets, in imwri and vshelper.h without c++11 enabled, all introduced in r28
fixed vsfatal corrupt output (nodame)
fixed uninitialized value in frame pool
r28:
fixed eedi3 image corruption with dh=true (nodame)
planedifference is now considered deprecated, it can be replaced with one or two calls to planeaverage which will also yield a sign
fpu state check now doesn't mind if precision is set to more than double
VFM now uses the _FieldBased flag
added float support to imwri, can now input and output float when compiled against a hdri enabled q16 imagemagick
added an argument to set the compression type in imwri
the installer will now download and install the vs2013 and vs2015 runtimes if needed
now uses python 3.5
fixed vdecimate parallel mode
pow is now accepted in expr expressions
expr now accepts up to 26 inputs (x-z, a-w)
expr now has runtime code generation on x86 cpus using jitasm
now normalizes the framerate returned from avisynth filters
it is now a fatal error to set the videoinfo of a filter to a non-normalized framerate
added a few more checks for proper api usage
get_core() can now be used in callbacks and other external functions in python
now returns an error message saying that windows needs to be updated in certain cases when plugin loading fails
fixed loop filter (nodame)
lut and lut2 can now output float as well
now accepts scripts that start with a BOM as well
fixed an image corruption bug with 9-16 bit input to rgvs when the c++ code is used
fixed division by zero issues in muldivrational in vshelper.h
blankclip can now create 0 (unknown/variable) fps clips
added float support to planedifference and planeaverage
added half support to addborders
relevant compile time options are now in the version string
r27:
improved clipinfo so it shows more relevant information
fixed proptoclip crash on certain errors
added a rewritten version of genericfilters to the core (nodame)
fixed the not (required two operands instead of one, asm broken) and swap (only required one operand instead of two) operators in the expr filter
renamed the x and y arguments in cropabs to left and top to be clearer and match croprel
addborders now rejects negative borders properly and passes through clips unchanged when all borders are 0
several bugfixes to the bundled genericfilters
added compile time option to have additional guard memory around frames to detect out of bounds writes in filters
added setframeprop filter (nodame)
the framerate and the frame duration property should now be a normalized number
all internal filters now return an error if the returned clip is longer than INT_MAX instead of undefined behavior
"unknown" length clips have been deprecated and a fatal error will happen if any plugin returns them, this change is because it was complicated, annoying and accomplished nothing compared to INT_MAX length clips
freezeframes now doesn't need to have the ranges specified in ascending order
interleave, separatefield and selectevery now properly adjusts the framerate including the durations
changed the meaning of _FieldBased to be able to signal progressive/bff/tff material, this is now used by ffms2, eedi3 and separatefields
fixed memory leak in assvapour destructor
the identifiers used for keys in vsmap can only be alphanumeric and _, anything else will be rejected
the expr filter now does constant folding which makes it faster in many cases (nodame)
vspipe can now output timecode v2 files (nodame)
splice and interleave now properly reject clips with mismatched fps unless mismatch is set
fixed possible bad behavior/crash in FrameEval under rare circumstances
fixed truncation of last digit of integers in text.FrameProps
r26:
fixed that frame error messages would sometimes become lost
fixed dropped frame handling in avisource which was broken by accident when adapting the code for vapoursynth
fixed crash on undecodable frames in avisource
installer creation has been streamlined
fixed assumefps when using a clip as the fps source (nodame)
improved the performance of vsmap operations
the c version of the expr filter now clamps 16bit output properly (nobody noticed this bug because everyone used the x86 asm version of the code)
expr filter now always uses . as the decimal separator in expressions, previously it would wrongly use the current locale's separator
there is now a minor api version as well that will be bumped when features are added
expr filter can now run fully in parallel
now returns an error if nodes are passed between different cores
modifyframe is now properly set to parallelrequests which should speed it up slightly
added half precision float support to blankclip
improved documentation a lot, every single python and c api function is now documented properly (nodame)
now uses tcmalloc instead of the normal malloc implementation to increase performance on windows
r25:
now requires vista/2008 or later because there are no relevant xp users left
now uses loadlibraryex to search the loaded dll path as well for dependencies to make plugin loading saner
the windows installer now comes with pdb files for vapoursynth.dll to make plugin debugging easier
added an alternative autotools based build system, it will probably become the default in the next release (nodame)
the public headers are now mostly C89 compliant
added simple compilation instructions for osx/some linux distros to the docs
DuplicateFrames and DeleteFrames no longer needs to have the frame number argument sorted
fixed handling of indeterminate length clips in DuplicateFrames and DeleteFrames
added experimental . syntax, for example core.BlankClip().VFM(order=1) will now work, if multiple functions have the same name they still need to be prefixed with the namespace
now uses the proper python exception for missing attributes
added getPluginPath function to the api so it's possible for plugins to load resources in relative paths in a reliable way, the returned paths are always absolute and use forward slashes
registerFormat now returns null instead of terminating the program on invalid formats, this is so plugin developers won't have to duplicate logic and instead can simply try if a format is valid
frame data is now exposed in a more python friendly way, use the get_read_frame and get_write_frame methods to get fast and efficient arrays
enabled x86 mmx state checks on all platforms
fixed a filter error propagation issue that could lead to crashes
fixed a race condition that could lead to too many threads being spawned to do nothing
added verticalcleaner and missing repair modes to rgvs (HolyWu)
fixed negative single frame indexing of clips in python
vspipe now reports the correct number of frames as output when a non-zero start frame is specified
fixed ctrl-c handling in clip.output() and some other small adjustments
clip.output() now accepts normal python file-like objects
automatically generated names for runtime registered yuv formats now make sense
r24:
fixed rare crashes in 64 bit windows asm in a few filters
core.max_cache_size should now be used instead of core.set_max_cache_size()
num_threads, add_cache and accept_lowercase can now be set at any time in python and not only during the first call to get_core()
fixed reference leak in FrameEval
more functions in the vsscript api now return success or failure
improved handling of the vsfunc type in python, it should now have all the functionality originally intended
removed r21 argument compatibility since all scripts should have been changed by now
include file paths in the windows sdk have been changed to better match linux and osx
the core will no longer be completely freed until all filter instances belonging to it have been released, this prevents crashes in some circumstances
vsvfw now properly returns an error message when no output has been set instead of silently failing
fixed a reference leak in vsscript
vspipe has a new argument for passing on values to the script environment from the command line
vspipe now has improved command line parsing and short forms, however old command lines will have to be modified to work
re-added clip.output()
fixed a filter error propagation issue
mixed improvements to vivtc (nodame)
fixed mac compilation of genericfilters
added FreezeFrames, DuplicateFrames and DeleteFrames, they can all delete/duplicate/freeze multiple frames with one command (nodame)
mixed documentation improvements (nodame)
fixed tracking of memory usage that was broken in r22 (nodame)
vivtc now uses framedifference internally and runs completely in parallel, also minor metric reporting fixes (nodame)
r23:
fixed an issue with rearranging old order arguments for Lut2, Merge and MaskedMerge
fixed bugs in rgvs mode 20, eedi3 crash on windows and genericfilters crash in canny
the frame range to output can now be set in vspipe as well using -start and -end
documentation fixes
minor build system improvement/fix (Zor)
removed debug printfs in windows x64 build, fixes piping to stdout
fixed tests
installer improvements
r22:
chikuzen's genericfilters plugin is now bundled with the installer
the installer will now refuse to run if the 32 and 64 bit python installation directory is the same or if python wasn't installed for all users
fixed a rare bug on x64 windows that could cause crashes in a few internal functions with asm
list_functions() now sorts function names alphabetically and plugins by their unique identifier
fixed memory leaks when per frame errors happen in several filters
the resize filter now reports more errors at construction time
shuffleplanes format argument renamed to colorfamily to make more sense
it's now possible to set a custom debug message handler from python, also a bug happening when setting a custom handler was fixed
added makediff and mergediff functions
the installer will no longer prompt about closing applications unless it's really necessary
vspipe now prints the fps as well
now arguments that are None in python aren't passed on to functions, this makes supplying defaults a lot easier
added core.version_number() so scripts can easily check for a supported core version
improved multithreaded locking, almost all functions in the vsscript and core API should be completely thread-safe now
Lut2, Merge and MaskedMerge functions changed, they now take two clip arguments named clipa and clipb instead of a 2 clip array, the old version is accepted as well for now, do vs.get_core(r21_arg_compat=False) to disable backward compatibility
minor API change, filters will no longer receive requests for frames beyond the end of a clip, instead the requested frame number is truncated, unknown length clip behavior is unchanged
simplified the vsscript api sample to use getFrame() and to be pure C code
added VS2013 projects
runtime registered formats now get automatically generated names so they're easier to identify
there should longer be "an exception happened when handling an exception" errors in python to keep the backtrace clearer
the python module now accepts any iterable as an array input
completely removed the Qt dependency (with some help from nodame on linux)
added clense and the missing modes to removegrainvs
switched to C++11/C99 and VS2013, this means that both the VS2010 and VS2013 runtimes are both installed
added a port of vinverse (lachs0r)
r21:
added additional checks to verify that plugin writers don't do things wrong
code cleanups and reorganization, simplefilters.c was split into several files
the fpn_num and fps_den clip properties are no longer truncated to int in python
fixed setting maximum memory use over 2GB from python
added an additional output format argument to modifyframe, also added checks to prevent crashes
now completely rejects adding known to be hopelessly broken functions from avisynth plugins (removegrain/repair/iscombed/colormatrix)
now properly flips compatrgb32 when converting, previously conversions to/from would make the picture upside down
optimized 8 bit merge and maskedmerge
fixed crash bugs in planeaverage/difference/cliptoprop/proptoclip introduced in r20
now flattens frame properties as well, this is the proper documented behavior
merged all selectclip functionality into frameeval, selectclip was removed as a separate function
vsvfw now returns a clip with the error message if there's an error
added a basic text printing filter to the core, code written by nodame
it's now possible to use dir() on frame.props and core.namespace in python to list interesting properties and attributes
added a compiled version of assvapour, it's probably a bit broken when it comes to font selection at the moment
ported removegrain/repair based on dither tools' code, support 8-16 bit input
fixed a cache issues where it would shrink to far too small sizes
fixed several bugs in shuffleplanes, now it will correctly deduce the dimensions of the output in more cases and properly reject variable size/format input
fixed a rare hang that could happen in avisynth compatibility when only using one thread
adjusted avisynth compat prefetching lists, specifically MCompensate should be faster now
r20:
minor api change, a copy of all filter arguments is no longer kept around unless cleared, shouldn't affect any existing filters
fixed a bug that would cause avisynth filters without specified prefetching to crash
renamed the api functions getPluginNs/Id to getPluginByNs/Id since they make more sense
rewrote the ugliest threading code, the locking is now a bit more fine grained in general
added frameeval, a function to allow per frame filter evaluation
blankclip now generates a new frame on every request to keep memory usage down, added the keep argument to optionally always return the same frame
the message handler now takes an extra user data pointer, the handler and data pointer is still per process instead of per core though
added plugin autoloading for linux (jackoneill)
added plugin autoloading for windows, autoloaded plugins for all users go into <installdir>\plugins and per user autoloaded plugins go into <appdata>\vapoursynth\plugins
include the python backtrace in errors when available
fixed a bug in the propagation of filter errors, requesting a frame with an error twice no longer makes vapoursynth hang
fixed the error that happens when avisource is used to open a vs script inside a vs script
added override support to vdecimate (nodame)
added -version option to vspipe and other small fixes
addborders now properly rejects clips where the colorspace can change
addborders and blankclip now properly default to black for all colorspaces
added tdeint properly to the prefetch list
fixed a cache bug that would make caches adapt too slowly/not at all
only output the first 200 slow warnings per avisynth filter
don't prefetch any frames by default for avisynth filters
r19:
lut/lut2 now processes all planes by default
ported to work on arm and powerpc (Zor)
fixed 9-16 bit format support in Expr
properly initialize color in addborders to 0
calls to the getFrame() function inside vapoursynth can never deadlock now, the thread handling is also slightly improved
fixed a bug in the cache that would stop it from freeing all its frames when memory is needed, fixes an out of memory error reported by Chikuzen
output is no longer determined by setting the last variable in __main__, instead clip.set_output(int index = 0) is used to set which clip(s) are exported
fixed some memory leaks in the internal filters when they're freed (jackoneill)
now properly initializes blankclips to all 0 when no values are given
added proper const declarations now that cython supports it, cython 0.18 or later required to build the extension now
fixed get_write_ptr() in python to actually return a write pointer
fixed the lut and lut2 filters for > 8 bit formats (ADub)
various minor fixes to vivtc
removed clip.output() since it's a bad design decision, now a command-line program called vspipe can be used to pipe or write raw video output
renamed newMap() to createMap() to match the naming of all other functions
added core.get_plugins() for the core and core.namepace.get_functions() for namespaces, it works similarly to list_functions() but instead returns the information in a dict
removed the unmentioned and unused link option for filter arguments as it is completely pointless and similar functionality may be implemented anyway
there's now a sane external api available for embedding in other applications, see vsscript.h and vsvfw for an example
now a singleton pattern is used for the core in python scripts, use vs.get_core() to get a reference to it
clip.get_frame() now throws an exception when out of bounds frames are requested
fixes a reference leak in the VideoProps python class
now ignores functions with . in their argument string for avisynth compatibility, this makes warpsharp mostly compatible
r18:
the installer no longer asks for the installation type since there's only one option anyway
vdecimate now returns and decimates the frames in the last incomplete cycle as well
fixed a bug that prevented mask scaling from working in MaskedMerge
fixed a bug in VSFS that made the module crash on script errors, the full error message is now reported in a log file just like AVFS
improved the error message when the last variable hasn't been set in a script
changed default interleave behavior to match avisynth, the old and in some cases desirable behavior can be selected with the extend argument
added color argument to addborders
fixed addborders for formats with over 8 bits per sample
blankclip can now produce float clips
fixed/at least greatly reduced the big memory leak when reopening a script through vfw
r17:
the installer will now register and unregister the vsfs dll if selected (pismo file mount must of course be installed at the time for it to work)
cleaned up the asm in the transpose filter
fixed python detection in the installer if it was installed for a single user
vdecimate can now accept up to 16 bit integer input and all color formats (jackoneill)
fixed a bug that made the array for storing metrics uninitialized at the end in vdecimate leading to random decisions (jackoneill)
added an inappropriately named subtitle filter based on libass (lachs0r)
EEDI3 has now been changed into pure C (jackoneill)
it is now possible to have the warning/error messages handled by a user specified callback function
added a check for the SSE state so plugins cannot modify it without it being noticed (similar to the FPU and MMX checks)
fixed that two plugins could be loaded into the same namespace
fixed some issues with argument handling in python due to exceptions not being propagated properly
added the Expr filter, it can evaluate an expression per pixel during runtime for 1-3 input clips
fixed a clip reference leak introduced in R15 with the multiple clip output changes
fixed AVISource crashes due to RGB output not being properly initialized
fixed the upper memory limit check
fixed callback functions hanging in vfw and vsfs
changed the license of all files to LGPL, previously a few of them were MIT licensed
r16:
fixed a MaskedMerge reference leak under some rare conditions
added a check for CPU features on x86, will now return an error if SSE2 isn't present
fixed an issue in avisynth compatibility caused by stricter internal checks
r15:
documented all the predefined frame properties and all important python classes
fixed iterating over clips in python
allocate memory per plane instead of in one big lump, this allows planes to be copied by reference using the newVideoFrame2() function and will also reduce memory usage slightly for filters that use it
fixed infinite loop in lut and lut2 when used with 9 bit input or more
added ClipToProp and PropToClip functions, they allow one clip to be attached to another clip as frame properties
fixed a reference leak in vivtc
ported avisource from avisynth, it has been thoroughly upgraded and can understand several high bitdepth formats including v210 which many "professional" codecs use, it is also based on the latest vdub parser code now
added len() support for clips in python
fixed a bug with plugin functions having array output in python
improved the api so that a single node/filter can produce several output clips, this bumps the api version to r3 (r2 plugins are still binary compatible but the r2 abi will also be removed in a version or two)
r14:
fixed setting the pixel values in blankclip
a collection of ported/new filters are now bundled (eedi3, vivtc, histogram and temporalsoften)
all examples and headers needed to write a new filter are now included in the installer
fixed a frame data alignment issue in VSFS
added vivtc (aka tivtc lite) to the included filters
the fpu state check now only outputs a warning instead of terminating (this is until I've been able to locate why certain people trigger it)
users can now set the cache size limit over which vs aggressively starts to decrease cache size, use core.set_max_cache_size(number of MB) (the memory use is calculated from the combined size of all framebuffers allocated)
fixed memory leaks in PlaneDifference and PlaneAverage
r13:
enabled another part of the cache size adjustment, cache sizes will now be aggressively reduced to keep framebuffer memory use below 1GB
filters can now get passed zero length arrays, the rewritten parts also improves argument handling in python (integer types now get converted to float implicitly when passed as a function argument)
added right click\new\vapoursynth script shortcut to the installer
make the number of frames in progress equal the number of threads, this should always be the upper beneficial value for any script, previously it was fixed at 10
fixed a rowsize bug in avisynth compatibility and implemented the subframe functions
added PEMVerify, a function to check for out of bounds values in filter output for developers
added PlaneDifference and PlaneAverage functions for use in conditional filtering
added copy(), and get_write_ptr() to clips in python, renamed get_data() to get_read_ptr()
greatly improved the handling of SelectClip and ModifyFrame (formerly ModifyProps), conditional filtering is now something that's usable
using ModifyFrame and a bit of cleverness it is now possible to implement fairly complex filters in python
r12:
fixed a scheduling error for fmParallelRequests filters (all avisynth filters and several internal ones)
added a bit more documentation, this time a bit about python and the classes found there
added vsfs, a port of avfs
v210 output support, add enable_v210=True to use it
removed support for clips with unknown length from vfw
can now open files with unicode filenames in vfw
fixed some minor bugs and compiler warnings
r11:
switched the precompiled module to python 3.3
vfw now also has several frame requests going at once, this should make the throughput get close to clip.output()
vfw now returns some colorful bars on error because refusing to open crashes too many applications
vfw now has support for the P010, P016, P210, P216 formats, tested in mpc-hc with madvr
removed some stray debug prints
r10:
fixed an issue where python could deadlock on the GIL
now comes in an installer
added a skeleton filter and a heavily commented invert example filter to the sdk dir
added a vfw module
fixed slicing/indexing in python module
list_functions() can now be used on a namespace (core.resize.list_functions())
improved and documented build system, see INSTALL
other small fixes relating to the python bindings
r9:
to get around keyword conflicts all function arguments names can be specified with both name and _name (Loop(_clip=a) is the same as Loop(clip=a))
works under linux and probably osx too
full source released under LGPL
it is now possible to use + to splice clips and the slicing operator to perform Trim, Reverse and SelectEvery operations on a clip
documentation of all user functions
lots of included filter fixes
minor fixes to other things
r8:
portability fixes for linux
minor api additions to make filters that consume 20+ input frames/scan a whole clip feasible
added cpu state checks after filter calls
added a function type, plugins may now take a python function and evaluate it for every frame
implemented the final planned standard functions (transpose, croprel, clipselect, modifyprops)
fixed the huge memory leak in cropabs
other small fixes
r7:
includes the source for all of the std functions and the header needed to write plugins (more source coming soon)
unnamed arguments are now accepted
y4m headers now specify the colorspace for all yuv formats and gives an error when used with non-yuv
added a new B tag to y4m output that specifies the number of bits per sample (B8/B10/B16)
more minor fixes
r6:
now drops all crop calls to env->invoke(), fixes dgdecode compatibility but you have to crop yourself now
all 64bit issues fixed
added several checks to prevent the compat formats from being used by new filters
minor fixes and extra checks for everything
r5:
more python output fixes
added accept_lowercase as a setting for the core constructor
python module refinement, now all objects have a string representation with more information
other minor fixes
r4:
fixed the bad frame output from the python module
added a callback to the output function so progress can be reported
ported ffms2
raw frame data can be accessed from python
r3:
fixes even more threading and performance issues
adds special support for yuy2 and rgb32 so most avisynth filters should work
added hacks to make mvtools2 work
r2:
fixes a large number of threading issues
removed the stupid clip.vi.width thing in python, now it's simply clip.width
fixed the frame reordering in the python bindings, now frames pop out in the expected order
r1:
buggy first version