ffmpegfs (2.50-1build1) stonking; urgency=medium

  * Rebuild against new old ffmpeg 7:8.1-3ubuntu3.

 -- Gianfranco Costamagna <locutusofborg@debian.org>  Wed, 24 Jun 2026 12:38:21 +0200

ffmpegfs (2.50-1) unstable; urgency=medium

  * Bugfix: Fixed audio/video synchronization issues during transcoding.
  * Bugfix: Fixed HLS playback stopping unexpectedly, especially near the final
    segment.
  * Refactored FFmpeg resource handling to use RAII wrappers for AVPacket,
    AVFormatContext, AVAudioFifo, AVDictionary, SwrContext, and SwsContext.
  * Removed deprecated av_init_packet() usage and switched packet handling to
    allocation-based AVPacket lifetime management.
  * Improved cleanup of FFmpeg input/output contexts, including custom
    AVIOContext handling and error paths during context allocation.
  * Improved audio FIFO, resampler, scaler, and dictionary lifetime management
    to reduce manual cleanup code and avoid leaks on error paths.
  * Cleaned up transcoder shutdown paths by centralizing FFmpeg resource cleanup
    in dedicated wrapper classes.
  * Bugfix: Fixed retained FFmpeg deinterlace filter graphs when the output
    pipeline is rebuilt, especially after HLS seeks. Old filter graphs are now
    released before reinitialisation and when closing the current output,
    preventing stale filter pointers and retained filter buffers.
  * Bugfix: Fixed HLS playback stopping unexpectedly, especially near the last
    HLS segment.
  * Bugfix: Improved HLS segment finalisation and state cleanup between segment
    transitions.
  * Bugfix: Improved packet/frame lifetime handling to avoid stale state during
    HLS playback.
  * Added a `make help` target to list the available build, test, installation,
    documentation and maintenance targets.
  * Added `./configure --enable-perftools` to build ffmpegfs with Google
    Perftools heap profiling support.
  * Bugfix: Fixed HLS playback for 10-bit UHD/HDR sources by converting H.264
    HLS output to yuv420p/8-bit. This avoids unsupported H.264 High10 streams
    in browser-based players such as hls.js.
  * Added elapsed-time reporting to successful transcode completion messages,
    showing the total transcoding time in milliseconds.
  * Bugfix: Fixed a race condition in transcoder thread start-up which could
    allow the same cache entry to be transcoded more than once concurrently.
  * Consolidated transcoder completion logging so each worker now emits one
    clear final status message, including elapsed runtime for successful
    transcodes.
  * Bugfix: Fixed HLS cache recovery so stale segment metadata no longer leaves
    playback waiting indefinitely when the corresponding cache file is missing,
    empty, or otherwise unusable.
  * Improved HLS segment recovery by explicitly restarting the transcoder when
    a segment is marked as available but its cache file is missing, empty, or
    otherwise unusable.
  * Bugfix: Fixed HLS segment availability checks so an incomplete cache entry
    no longer makes segments appear available if those segments were never
    actually produced.
  * Added additional safeguards for stale decoder state to avoid leaving cache
    entries permanently marked as decoding when no active worker is available
    to repair them.
  * Bugfix: Ignored HLS seek requests that are too close to the beginning of
    a stream so transcoding starts at segment 1 instead of creating an
    avoidable partial cache set.
  * Added an HLS cache regression test that pre-populates the cache, re-reads
    all generated segments, and verifies that cached segment output remains
    stable across repeated reads.
  * Bugfix: Fixed HLS cache test log naming so wrapper scripts which already
    contain the "_hls" suffix no longer generate duplicate "_hls_hls" builtin
    log files.
  * Bugfix: Fixed distclean/distcheck failures caused by incorrectly named HLS
    test log files being left behind in the test build directory.
  * Refactored transcoder stream and output initialisation into smaller helper
    functions, keeping high-level setup flow easier to follow.
  * Improved AVCodecContext ownership handling during stream, output, and
    frame-set setup so partially failed initialisation paths no longer leak
    codec contexts.
  * Hardened output/cache setup with additional validation and null checks to
    avoid partially initialised stream state and clearer error handling on
    invalid setup conditions.
  * Improved duration metadata handling for stream-copy and album-art output so
    invalid or missing input timing information is no longer used.
  * Improved test cleanup by using explicit ffmpegfs-owned temporary directory
    names and guarded removal logic, avoiding stale anonymous /tmp directories
    after interrupted or parallel test runs.
  * Improved deinterlacing quality by replacing yadif with bwdif while keeping
    one output frame per input frame. This improves playback smoothness for
    interlaced sources without changing the output frame rate or requiring
    changes to timestamp, FPS, or HLS segment timing logic.

 -- Norbert Schlia <nschlia@oblivion-software.de>  Sun, 21 Jun 2026 10:44:31 +0200

ffmpegfs (2.18-1) unstable; urgency=medium

  * 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 Fuse3
  * 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::codecvt with iconv in read_file
  * Bugfix: reserve() only guarantees capacity, not size → Writing via .data()
    is undefined behaviour. Using resize() makes the memory usable.
  * As strerror() is not thread-safe, use strerror_r() where available.
  * strncpy likes to copy without NUL → terminate explicitly.
  * Bugfix: Issue #173: Fixed output directory no showing complete list of
    files under Debian 13.
  * Closes#1115015: Fix build with FFmpeg 8 (already applied in Debian via NMU)
  * Closes#1119414: Changed configure.ac and makefile.am to preserve the
    default build flags

 -- Norbert Schlia <nschlia@oblivion-software.de>  Fri, 10 Apr 2026 16:33:36 +0200

ffmpegfs (2.17-1) unstable; urgency=medium

  * 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.

 -- Norbert Schlia <nschlia@oblivion-software.de>  Fri, 22 Nov 2024 16:43:59 +0100

ffmpegfs (2.16-1) unstable; urgency=medium

  * Bugfix: Closes:1072412: Fix build with FFmpeg 7.0. 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).

 -- Norbert Schlia <nschlia@oblivion-software.de>  Mon, 10 Jun 2024 21:05:51 +0200

ffmpegfs (2.15-1) unstable; urgency=medium

  * 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.

 -- Norbert Schlia <nschlia@oblivion-software.de>  Sat, 03 Feb 2024 21:11:45 +0100

ffmpegfs (2.14-1) unstable; urgency=medium

  * 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).

 -- Norbert Schlia <nschlia@oblivion-software.de>  Thu, 15 Jun 2023 22:01:32 +0200

# Older entries have been removed from this changelog.
# To read the complete changelog use `apt changelog ffmpegfs`.
