Releases: Yahweasel/libav.js
Releases · Yahweasel/libav.js
5.1.6.1.1
As is ever the case, it isn't possible to make a point-oh release without missing something crucial.
This release corrects copyout_frame_video_imagedata
, which was 100% broken in 5.0.6.1.1.
Full Changelog: v5.0.6.1.1...v5.1.6.1.1
5.0.6.1.1
This release is a major overhaul. There's a reason why it's a point-oh release. There were a few changes I'd delayed because they would break backwards compatibility, and this release has them all.
- The variants are more consistent and useful. Variants with CLI are provided, as well as variants with or without common filters. There should more often be a prebuilt variant that does what you actually need now.
- SIMD has been removed. It never did anything useful, because the code would need to be customized for WebAssembly SIMD. Emscripten's support for x86 SIMD just isn't sufficient.
- libav.mjs (i.e., ES6 modules). libav.js is now usable as ES6 modules, which should make bundling easier, and theoretically is also future-facing and useful in some way.
- The way that libav.js finds itself is now automatic, i.e., it's usually not necessary to set LibAV.base anymore.
- The old size-guess-based devfile API in packet reading has been removed, and with it, its argument (an incompatible change).
- The format used by video frames when they're copied out (i.e., Frames) has been completely revamped to be much more similar to WebCodecs's VideoFrames. This is both vastly more efficient and conveniently compatible(ish) with WebCodecs. This is a very backwards-incompatible change (for the zero users doing video with libav.js).
- Crop information from video frames is now copied to/from Frame objects.
- Transferring of ArrayBuffers to libav.js is now controllable. It was previously unidirectional (it would be transferred out of libav.js, but not into), but it is now bidirectional. The Frame and Packet objects have optional
libavjsTransfer
fields to perform these transfers. This is subtly backwards incompatible becauselibavjsTransfer
is set by default, so if you send a Frame or Packet into libav.js, you will now lose it!
Full Changelog: v4.10.6.1.1...v5.0.6.1.1
4.10.6.1.1
Changes:
- Now has actual video filters. I added the video filtering framework, but no video filters. Whoops ^^´
- Fixing the test suite to, uhh, work (by breaking something else)
Full Changelog: v4.9.6.1.1...v4.10.6.1.1
4.9.6.1.1
What's Changed
- Support for video filters in the high-level
ff_init_filter_graph
API. It was previously possible to do video filtering with the low-level API, but not the high-level API. - Fix
LibAV()
overload for typescript. by @reinhrst in #43 - Many small type-related changes.
- Updated versions of all dependencies, including updating FFmpeg to 6.1.1.
- New publication method to NPM including a @libav.js namespace.
- Small fixes to block reader devices.
Full Changelog: v4.8.6.0.1...v4.9.6.1.1
4.8.6.0.1
What's Changed
- Support for building with older versions of FFmpeg (note: only in source, no older builds are provided)
- Conversion functions from the hi/lo pairs that are used for 64-bit values in libav.js to 64-bit floats and BigInts
- Duplicated static properties (e.g.
libav.EAGAIN
) to the LibAV object itself, so that you can get constants likeEAGAIN
without an instance. This also applies to the hi/lo conversion functions above. - Add AV_PKT_FLAG_* constants by @reinhrst in #44
Full Changelog: v4.7.6.0.1...v4.8.6.0.1
4.7.6.0.1
What's Changed
- Updated component versions
- Added more image formats (e.g.
image_png_pipe
) to tests - Made the MP4 muxer configuration more general, since just exposing the
ipod
muxer causes confusion - Added
av_log
functions - Bugfix/js functions use single pointer options by @reinhrst in #36
- add loglevel constants to types.d.ts by @reinhrst in #40
- Fix types for
ff_*_multi()
copyout overloads by @reinhrst in #41
New Contributors
Full Changelog: v4.6.6.0...v4.7.6.0.1
4.6.6.0
What's Changed
- Added the jsfetch "protocol", which uses W3C fetch (JavaScript's fetch function) as its backend, and with it, support for HLS.
- Added a writer filesystem, which supports things like writing HLS or other segmented formats, redirecting all written files to
onwrite
. - Added the ability to copy out image frames in packed formats and directly as ImageData, to avoid excess copying. Also includes supports for "copying" out pointers, so that no actual data is copied to the host.
- Added
ff_decode_filter_multi
, for decoding and filtering in one metafunction. - Adding support for loading a different variant than the one the frontend was compiled for. This enables things like using one variant to determine which codecs are used, then loading another variant to actually read data.
- Added png support (zlib).
- Improved Worker performance by transferring instead of duplicating data that is returned from libav.js functions through the Worker.
- Added an install rule to aid using libav.js from C code.
- Added
tools/ffmpeg.js
andtools/ffprobe.js
to test libav.js directly using an ffmpeg-like and ffprobe-like interface. - Switched the build to a much more robust dependencies system that integrates with Make correctly.
- Bug fixes and type fixes.
Full Changelog: v4.5.6.0...v4.6.6.0
4.5.6.0
- Fixed loading in a worker in Safari. This is quite a critical fix, as every version since 4.0 has been affected (but only on Safari and only when loading in worker mode).
- Exceptions can now pass through onblockread, through the worker, so that client code can receive a meaningful exception instead of a meaningless failure.
Full Changelog: v4.4.6.0...v4.5.6.0