Releases: nschlia/ffmpegfs
Releases · nschlia/ffmpegfs
Release 2.18
- Feature: Added ALAC profile for iTunes (
--desttype=ALAC --profile=ITUNES). Playback of the file will not commence until it is fully recoded; however, it can be played in iTunes. - Feature: Implemented a validation check for the combination of TYPE and PROFILE in
--desttype=TYPE --profile=PROFILE. - Updated Dockerfile to include FUSE 3.
- Bugfix: Fix error with new FFmpeg API: "Option 'pix_fmts' is not a runtime option and so cannot be set after the object has been initialized".
- Fixed deprecation: Replace
avcodec_get_supported_config(). - Fixed deprecation: Remove
avcodec_close(). - Fixed deprecation: Remove
av_format_inject_global_side_data(). - Fixed deprecation: Replace
std::codecvtwithiconvinread_file. - Bugfix:
reserve()only guarantees capacity, not size → writing via.data()is undefined behaviour. Usingresize()makes the memory usable. - As
strerror()is not thread-safe, usestrerror_r()where available. strncpylikes to copy without NUL → terminate explicitly.- Bugfix: Issue #173: Fixed output directory no showing complete list of files under Debian 13.
- Bugfix: Updated Dockerfile for Trixie
- Bugfix: Closes #1115015: Fix build with FFmpeg 8 (already applied in Debian via NMU)
- Bugfix: Closes #1119414 Changed configure.ac and makefile.am to preserve the default build flags
Full Changelog: v2.17...v2.18
Release 2.17
- Bugfix: Issue #164: Fixed incorrectly discarded HLS seek requests.
- Bugfix: Wrong error message fixed when an invalid audio/video codec was selected. The message should rather say "unsupported codec" instead of talking about "sample format not supported.".
- Bugfix: Issue #162: If not present, add time stamps to the copied streams.
- Changed quality from 34 to 40 for hardware encoded video streams to create slightly smaller files.
- Closes#1084487:: Moved from the Fuse 2 to the Fuse 3 API.
Release 2.16
- Bugfix: Closes [#160](#160): Fix build with FFmpeg 7.0. [Debian Bug #1072412](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1072412). write_packet() now with const buffer as of Libavformat 61+.
- Fixed deprecation: 2014-05-18 - 68c0518 / fd05602 - lavc 55.63.100 / 55.52.0 - avcodec.h
Add avcodec_free_context(). From now on it should be used for freeing AVCodecContext. - Fixed deprecation: 2023-05-15 - 7d1d61cc5f5 - lavc 60 - avcodec.h
Depreate AVCodecContext.ticks_per_frame in favor of
AVCodecContext.framerate (encoding) and
AV_CODEC_PROP_FIELDS (decoding).
Release 2.15
- Bugfix: Issue #151: Fixed autocopy STRICT never triggers for video streams
- Bugfix: Closes #153: The --include_extensions parameter now contains a description, which was previously missing from the manual and online help.
- Issue #149: 2023-05-04 - xxxxxxxxxx - lavu 58.7.100 - frame.h
Deprecate AVFrame.interlaced_frame, AVFrame.top_field_first, and AVFrame.key_frame.
Add AV_FRAME_FLAG_INTERLACED, AV_FRAME_FLAG_TOP_FIELD_FIRST, and AV_FRAME_FLAG_KEY flags as replacement. - Issue #149: 2023-05-04 - xxxxxxxxxx - lavu 58.7.100 - frame.h
Deprecate AVFrame.interlaced_frame, AVFrame.top_field_first, and AVFrame.key_frame.
Add AV_FRAME_FLAG_INTERLACED, AV_FRAME_FLAG_TOP_FIELD_FIRST, and AV_FRAME_FLAG_KEY flags as replacement. - Issue #149: 2021-09-20 - dd846bc4a91 - lavc 59.8.100 - avcodec.h codec.h
Deprecate AV_CODEC_FLAG_TRUNCATED and AV_CODEC_CAP_TRUNCATED, as they are redundant with parsers. - Closes #136: The CMake build files have been removed. Support was never more than experimental, and CMake lacks a good uninstall option. Will stick to automake system from now on.
Release 2.14
- Bugfix: Closes #141: Improved memory management by allocating several times the average size of allocations. This prevents obtaining tiny portions over and over again. Additionally, after the file is opened, grab the entire expected memory block rather than doing a tiny allocation initially, followed by a larger allocation.
- Bugfix: Avoid race conditions that cause the inter-process semaphore creation to fail for the second process.
- Bugfix: Issue #119: If a seek request is still open after EOF, restart transcoding.
- Bugfix: Issue #119: To prevent frame/segment creation errors, the frame set and HLS code has been updated.
- Bugfix: Avoid crashes during shutdown if cache objects have already been closed.
- Bugfix: Issue #119: The AVSEEK_FLAG_FRAME set should be used to seek to frames when building frame sets. Otherwise, output images may vary if searched for or continuously decoded.
- Bugfix: The conversion of PTS to frame number and vice versa for frame sets was incorrect if TBR did not equal frames per second.
- Bugfix: Fixed seek requests that are being ignored with frame sets.
- Bugfix: When transferring from cache to the Fuse buffer, avoid a possible 1 byte overrun.
- Bugfix: Issue #143: To avoid occasional EPERM failures, missing synchronisation objects were added.
- Bugfix: Issue #144: To fix the crashes that may have been caused by them, the variables impacted by a potential threading issue were marked as "volatile."
- Bugfix: Closes#1037653: Fix build with GCC-13
- Bugfix: Update docker build for Debian Bookworm
- Enhancement: Record milliseconds for every log event.
- Enhancement: make check: added a file size check to frame set tests.
- Optimisation: When reopening after invalidating the cache, the size remained at 0. The original size is now once again reserved in order to prevent reallocations.
- Optimisation: To avoid reallocations, save enough space in the cache buffer to hold the entire frame set.
- Optimisation: Checking folders to see if they can be transcoded is completely pointless. Directories are now immediately skipped.
- To avoid problems with logfile viewers, renamed built-in logfiles to *_builtin.log (removing the double extension).
Release 2.13
- Feature: Added --prebuffer_time parameter. Files will be decoded until the buffer contains the specified playing time, allowing playback to start
smoothly without lags. Works similar to --prebuffer_size but gives better control because it does not depend on the bit rate. An example: when set to 25 seconds for HLS transcoding, this will make sure that at least 2 complete segments will be available once the file is released and visible. - Feature: Closes #140: Filtering the files that will be encoded has been added. A comma-separated list of extensions is specified by the —include_extensions parameter. These file extensions are the only ones that will be transcoded. The entries support shell wildcard patterns.
- Feature: The --hide_extensions parameter syntax has been extended. The entries now support shell wildcard patterns.
- Bugfix: Closes #139: Additional files could be added using the —extensions parameter. However, this is no longer necessary; in the past, a file's extension determined whether or not it would be transcoded. Files with unknown extensions would be ignored. The extension is no longer important because FFmpegfs now examines all input files and recognises transcodable files by the format.
The outdated —extensions argument was removed without substitution. - Bugfix: Fixed crash when implode() function was called with an empty string. Happened with Windows GCC 11.3.0 only.
Release 2.12
- The code has been run through clang-tidy to detect areas that could be updated to C++17 and to find areas that are prone to bugs or are inefficient. Many problems could be fixed. Sometimes a few lines of code can take the place of many. Some components function far more effectively than they did in the past. C++17 is cool! I must purchase a t-shirt.
- Bugfix: In get prores bitrate(), a crash that might have happened under unusual circumstances has been corrected. If the best match resolution could not be found, array access out-of-bounds could happen.
- Bugfix: Several unlikely, but potential problems that could have happened when subtitle decoding failed or delayed video/audio packets couldn't be decoded have been fixed.
- Bugfix: An internal problem could cause the application to crash. Should never happen, though. Fixed anyway.
- Bugfix: Sometimes, the last segment's estimated size was incredibly small - about 2 bytes. Each segment should have the same predicted size as is is calculated simply by dividing the projected size of the entire file by the number of segments. Following transcoding, the size was accurate.
Release 2.11
- Feature: Issue #86: Smart transcode now detects if a source file is audio only
and uses the correct target format. For example, with --destination=webm+mp3, if
one MP4 input file contains a video stream and another an audio stream only,
the resulting files will be WebM (for the video input) and mp3 for the audio only
file. - Feature: Issue #137: Add --no_subtitles option to turn subtitles off.
- Bugfix: Smart encode selected the video format for cue sheet tracks, regardless
of the input format. This has been fixed now. - Bugfix: Fix a crash that occurs when a DVD/Blu-ray is transcoded to audio only.
- Bugfix: If the track performer field in the cuesheet is blank, try album
performer instead. - Bugfix: Failing to mount Fuse during "make check" went unnoticed as the result
code (which was supposed to be 99) was actually 0. Return the correct result
code, failing the operation as expected. - Bugfix: The Docker build command contained a "make check" which actually failed
altogether. Step has been removed. "make check" mounts Fuse, but this requires
privileges that do not exist during "docker build". - Bugfix: On error, mremap () returns MAP_FAILED rather than NULL. Fixed a check
for incorrect error conditions, which could cause the application to crash or
return illogical error messages. - Bugfix: Issue #119: Fix a problem that caused frame set generation to fail
sometimes. It seems to be related to the nremap() issue. - Generally revisited documentation, logging, and display texts. Improved grammar,
formatting, and fixed quite a few typos that escaped all proofreading sessions. - The FFmpeg API INFO and DEBUG level log output has been changed to the
FFmpegfs DEBUG level. What FFmpeg considers "INFO" is far too chatty. - Frequent memory reallocations when creating HLS segments have been reduced to
speed up processing. - Optimised logging to save CPU time by not formatting log entries that are not
written anyway at their log level. - Logging has been revised to shorten file paths and remove mount, input, and
cache paths. Log the additional portion only to reduce log file size and improve
readability. - Bugfix: To fix the build with GCC 12, add the missing include headers
(closes: #1012925).
Release 2.10
- Feature: Issue #123: New command line option to hide files by extension. Example:
--hide_extensions=jpg,png,cue would stop covers and cue sheets from showing up. - Feature: Issue #120: Added subtitle support. Subtitle streams can now also be
transcoded to the output files. Separate SRT or VTT files will be incorporated
as subtitle streams. - Bugfix: Fixed memory leak in encode_audio_frame().
- Bugfix: Issue #122: Last song was missing from cuesheet files.
- Bugfix: Issue #129: Files remained zero size when previously transcoded.
- Bugfix: Issue #130: Fix file sizes can be incorrectly reported by ls but are
correct when data is read. - Bugfix: Duration was not saved in cache SQLite database.
- Bugfix: Issue #131: Sometimes video parameters for some Bluray or DVD chapters
cannot be detected by FFmpeg API. Transcode then failes - fixed by using data
from the Bluray directory or DVD IFO instead. - Lowest supported FFmpeg API version raised to 4.1.8 "al-Khwarizmi".
- Dropped libavresample support, library was removed from FFmpeg API after 3.4.9.
- Deprecated previous channel layout API based on uint64 bitmasks.
- Deprecated swr_alloc_set_opts() and swr_build_matrix().
- Going C++17 now: The packet queue has been recoded in C++17 to support
external subtitles files. As C++17 is required now, why not go all the way:
Starting to replace legacy C++ and somewhat C-like parts with real C++. - Using std::shared_ptr to ensure proper memory allocation/free.
Release 2.9
- Feature: Issue #97: Added options to chose different codecs. The audio codec can be selected with --audiocodec, for videos use --videocodec.
- Feature: Issue #109: Allow user defined file extensions for source files. By default, only standard extensions are accepted, i.e., mp4, ts, avi etc. Arbitrary file extensions can be defined now, e.g. using --extensions=xxx,abc,yxz,aaa to also convert files ending with .xxx, .abc and so on.
- Feature: Issue #121: Added MKV support. New format can be selected with --desttype=mkv.
- Bugfix: Issue #112: Fixed Docker detection.
- Bugfix: Issue #110: Docker build command failed, added missing libchardet and allow libdvdread4 or *8 to be used, whatever available.
- Bugfix: Fixed crash when video had no audio.
- Bugfix: Issue #112: Fixed access problems with frame sets and HLS.
- Bugfix: Issue #119: Fixed problem that caused frame set generation to sometimes fail.
- Bugfix: Fixed JPG frame set generation. Suddenly FF_COMPLIANCE_UNOFFICIAL was required to have FFmpeg API accept the codec.
- Enhancement: Issue #67: Enhanced file size prediction.
- Bugfix: Need to syncronise screen log. Concurrent entries by separate threads produced garbled output.
- Bugfix: Avoid creating an HLS segment number which is out of bounds (higher than the expected number of segments).
- Bugfix: Removed QMake support, replaced with CMake.