100 Commits
Author SHA1 Message Date
nyanmisaka 8a93a627c4 Backport pull request #18261 from jellyfin/release-12.z
Fix video quality at low bitrates when reducing bit depth

Original-merge: addc611056

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Cody Robibero <cody@robibe.ro>
2026-10-05 19:18:57 -04:00
nyanmisaka bfb7af2897 Backport pull request #18164 from jellyfin/release-12.z
Fix typo when parsing codec_tag_string

Original-merge: 8358c03ebf

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Cody Robibero <cody@robibe.ro>
2026-09-27 16:30:55 -04:00
nyanmisaka 57d19b185c Backport pull request #18025 from jellyfin/release-12.z
Fix incorrect color range during CSC after VK tonemapping

Original-merge: 8455f7c838

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Cody Robibero <cody@robibe.ro>
2026-09-15 11:17:04 -04:00
nyanmisaka 9fa9d26341 Normalize invalid PTS from containers for Trickplay generation
This change does not affect the keyframe only mode.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-07-18 15:44:34 +08:00
nyanmisaka 4503ad295c Fix format negotiation in hybrid SW decode and CUDA tonemap pipeline
The CUDA hwcontext in FFmpeg 8.1 has added support for 10bit
fully-planar formats, but few CUDA filters support them.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-07-15 13:54:45 +08:00
nyanmisaka 631a314d24 Fix potential garbled text in FFmpeg logs on Windows
Explicitly set StandardErrorEncoding and StandardOutputEncoding to
Encoding.UTF8 when invoking the FFmpeg subprocess.

This prevents log encoding issues and character corruption on Windows
environments that default to non-UTF8 ANSI code pages.

This fixes garbled metadata and font names in the FFmpeg logs.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-07-10 14:46:27 +08:00
nyanmisaka c693047467 Fix duplicate trickplay images for interlaced videos
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-06-09 20:18:17 +08:00
nyanmisaka 081f0ef4a0 Make EncoderPreset non nullable
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-06-02 20:41:30 +08:00
nyanmisaka 69b0b63a95 Fix inconsistent extradata generated by hevc_vaapi on AMD driver
This change is required for upstream ffmpeg 8+, because its
mp4 muxer will drop in-band PS when using codec tag hvc1.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-05-24 03:34:54 +08:00
nyanmisaka b9ee9b0660 Backport pull request #16819 from jellyfin/release-10.11.z
Fix rate control in av1_amf encoder

Original-merge: a023b9c88d

Merged-by: Bond-009 <bond.009@outlook.com>

Backported-by: Bond_009 <bond.009@outlook.com>
2026-05-12 12:26:13 -04:00
nyanmisaka 6d6dee9492 Add tests for videoRotation profile condition
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-05-09 15:20:29 +08:00
nyanmisaka fc251265d9 Check videoRotation in video stream copy
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-05-09 15:20:29 +08:00
nyanmisaka 5cb6ac521a Add videoRotation profile condition
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-05-09 15:20:29 +08:00
nyanmisaka d9ced0d639 Use strict QSV CPB size for less powerful H.264 decoder
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-05-03 12:25:33 +02:00
nyanmisaka e75f7f1b28 Avoid SSA to ASS conversion and loss of styles
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-05-02 21:36:34 +08:00
nyanmisaka 5b3537b3d7 Backport pull request #16519 from jellyfin/release-10.11.z
Fix Null was not checked before using the H264 profile

Original-merge: 89e914c7f1

Merged-by: Bond-009 <bond.009@outlook.com>

Backported-by: Bond_009 <bond.009@outlook.com>
2026-03-30 14:08:07 -04:00
nyanmisaka b82a2ced75 Backport pull request #16423 from jellyfin/release-10.11.z
Fix readrate options in FFmpeg 8.1

Original-merge: 29b2361857

Merged-by: Bond-009 <bond.009@outlook.com>

Backported-by: Bond_009 <bond.009@outlook.com>
2026-03-23 17:06:22 -04:00
nyanmisaka 31adb5dcd1 Backport pull request #16392 from jellyfin/release-10.11.z
Fix filter detection in FFmpeg 8.1

Original-merge: 55c00d76bb

Merged-by: Bond-009 <bond.009@outlook.com>

Backported-by: Bond_009 <bond.009@outlook.com>
2026-03-13 15:33:08 -04:00
nyanmisaka 582a1d9866 Add TrueHD and DTS codes string for HLS
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2026-01-06 23:15:06 +08:00
nyanmisaka 7af5ee1812 Backport pull request #15834 from jellyfin/release-10.11.z
Fix video lacking SAR and DAR are marked as anamorphic

Original-merge: 9470439cfa

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Bond_009 <bond.009@outlook.com>
2025-12-28 07:22:36 -05:00
nyanmisaka 7f0e71578d Backport pull request #15833 from jellyfin/release-10.11.z
Fix missing H.264 and AV1 SDR fallbacks in HLS playlist

Original-merge: 01b20d3b75

Merged-by: Bond-009 <bond.009@outlook.com>

Backported-by: Bond_009 <bond.009@outlook.com>
2025-12-28 07:22:34 -05:00
nyanmisaka b429306f05 Backport pull request #15819 from jellyfin/release-10.11.z
Fix the use of HWA in unsupported H.264 Hi422P/Hi444PP

Original-merge: 4c587776d6

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Bond_009 <bond.009@outlook.com>
2025-12-28 07:22:32 -05:00
nyanmisaka 43797fee42 Backport pull request #15776 from jellyfin/release-10.11.z
Fix AV1 decoding hang regression on RK3588

Original-merge: 035b5895b0

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Bond_009 <bond.009@outlook.com>
2025-12-28 07:22:27 -05:00
nyanmisaka deb81eae10 Backport pull request #15670 from jellyfin/release-10.11.z
Fix the empty output of trickplay on RK3576

Original-merge: 98d1d0cb35

Merged-by: nielsvanvelzen <nielsvanvelzen@users.noreply.github.com>

Backported-by: Bond_009 <bond.009@outlook.com>
2025-12-03 14:04:27 -05:00
nyanmisaka 4258df4485 Backport pull request #15247 from jellyfin/release-10.11.z
Ignore initial delay in audio-only containers

Original-merge: 6bf88c049e

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2025-11-02 21:58:41 -05:00
nyanmisaka dbb015441f Backport pull request #15144 from jellyfin/release-10.11.z
Fix videos with cropping metadata are probed as anamorphic

Original-merge: 175ee12bbc

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Bond_009 <bond.009@outlook.com>
2025-10-27 15:43:18 -04:00
nyanmisaka 348b2992d7 Backport pull request #15072 from jellyfin/release-10.11.z
Reject stream copy of HDR10+ video if the client does not support HDR10

Original-merge: a725220c21

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Bond_009 <bond.009@outlook.com>
2025-10-27 15:43:08 -04:00
Nyanmisaka badf22fcc2 Limit decoder thread count on AMD AMF to save VRAM (#14943) 2025-10-04 08:04:25 -06:00
nyanmisaka a5b4eca804 Add extra movflags to fMP4 to take initial audio delay into account
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2025-07-30 18:00:14 +08:00
Nyanmisaka 25a362345d Fix refreshing the library cannot delete old attachments (#14461) 2025-07-14 18:40:37 -06:00
Nyanmisaka db55d983f8 Only enable VAAPI MJPEG encoder on Intel iHD driver (#14433) 2025-07-07 18:05:14 -06:00
Nyanmisaka ebdc756547 Fix -fps_mode option being applied on input (#14379) 2025-06-26 17:48:43 -06:00
Nyanmisaka e8291fc856 Fix QSV "static surface pool size exceeded" on Windows
d3d11va doesn't support dynamic pool size, use vpp filter ctx to relay to prevent encoder async and bframes from exhausting the decoder pool.
2025-06-17 15:02:13 +08:00
nyanmisaka 1ee705f3e1 Fix RKRGA 2pass scaling issue caused by auto AR reduction
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2025-05-26 23:49:04 +08:00
nyanmisaka 0e0c7c5c59 Offload 1080p+ subtitle scaling to RKRGA
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2025-05-26 23:49:04 +08:00
nyanmisaka 56231222df Enable OpenCL deinterlacer for AMF on Windows when available
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2025-05-20 22:07:00 +08:00
Nyanmisaka 07093c84c8 Use VBR and MBBRC in QSV encoders for better quality (#14079) 2025-05-08 14:43:13 -06:00
Nyanmisaka 4199f7acc2 Fix the transparency issue of ASS subtitle rendering in HWA (#14024) 2025-05-03 08:21:08 -06:00
Nyanmisaka e84826297d Fix thumbnail extraction of mpegts videos in FFmpeg 7.1+ (#13942) 2025-04-19 10:41:30 -06:00
Nyanmisaka 8be8ea60f1 Add DoVi Profile 5 support for Rockchip RKMPP (#13911) 2025-04-13 07:43:58 -06:00
Nyanmisaka 98697e75ca Fix seeking beyond EOF again (#13871) 2025-04-08 14:58:55 -06:00
Nyanmisaka a123a2cb22 Fix validation of VAAPI/QSV render node path (#13786)
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2025-03-27 17:59:32 -06:00
nyanmisaka bc1419728f Backport pull request #13151 from jellyfin/release-10.10.z
Always do tone-mapping for HDR transcoding when software pipeline is used

Original-merge: b31f1696f2

Merged-by: Bond-009 <bond.009@outlook.com>

Backported-by: Bond_009 <bond.009@outlook.com>
2025-02-03 16:55:53 -05:00
nyanmisaka 9f86f8748c Backport pull request #13026 from jellyfin/release-10.10.z
Fix missing procamp vaapi filter

Original-merge: cf11a2dc1e

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-11-19 15:43:29 -05:00
nyanmisaka 661caa62e2 Backport pull request #12989 from jellyfin/release-10.10.z
Fix InvariantCulture in VPP tonemap options

Original-merge: 25321d7f80

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-11-19 15:43:26 -05:00
nyanmisaka 87a3c5d11c Backport pull request #12973 from jellyfin/release-10.10.z
Fix pixel format in HEVC RExt SDR transcoding

Original-merge: aa08d3f2bf

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-11-19 15:43:24 -05:00
nyanmisaka 547d393af0 Backport pull request #12964 from jellyfin/release-10.10.z
Fix height of imported trickplay tiles

Original-merge: 09c377fb6c

Merged-by: joshuaboniface <joshua@boniface.me>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-11-19 15:43:23 -05:00
Nyanmisaka 3ceb8337e7 Fix check for format option in scale_cuda filter (#12874) 2024-10-25 12:52:27 -06:00
Nyanmisaka df8edaa083 Fix seeking beyond EOF in HWA transcoding (#12847) 2024-10-19 08:46:13 -06:00
Nyanmisaka b496f979f0 Clean up deprecated -vsync option (#12765) 2024-10-03 08:18:40 -06:00
Nyanmisaka 368edeb8ad Fix full range in SW decoder & HW encoder for Trickplay (#12763) 2024-10-02 10:34:40 -06:00
Nyanmisaka 4317702559 Fix RKMPP-DRM-OpenCL mapping (#12758) 2024-10-01 07:02:01 -06:00
Nyanmisaka f36e73e748 Improve Trickplay image quality using HQ scaler on intel (#12759) 2024-10-01 07:01:33 -06:00
Nyanmisaka 77420739e6 Handle full range output in tonemap filter for Trickplay (#12746) 2024-09-29 20:21:36 -06:00
Nyanmisaka f52f5290b2 Fix vpp tonemap pixfmt regression (#12733) 2024-09-28 03:36:33 -06:00
Nyanmisaka e5f5f7c384 Fix the invalid libplacebo filter option (#12732) 2024-09-28 12:14:42 +08:00
Nyanmisaka cb8f01065a Fix MJPEG hwenc may be incorrectly enabled on AMDGPU (#12695) 2024-09-23 11:24:49 -06:00
Nyanmisaka a0204ada2f Fix intel Xe kernel driver cannot be used with QSV (#12691) 2024-09-23 09:02:31 -06:00
Nyanmisaka 5d5afe10e8 Fix incorrect input range for certain hw JPEG encoders (#12683) 2024-09-22 18:50:18 -06:00
Nyanmisaka b162e9290b Fix the diff between requested and actual resolution in RKMPP (#12680) 2024-09-22 08:58:15 -06:00
Nyanmisaka e615b56a70 Fix RKMPP 2pass scaling in Trickplay (#12675) 2024-09-20 07:01:58 -06:00
nyanmisaka 7ab7f69916 Enable key-frame only decoding for RKMPP trickplay
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-09-20 03:22:53 +08:00
Nyanmisaka 93db8990d9 Enable HEVC RExt HW decoding for 4:2:2/4:4:4 content (#12664) 2024-09-19 07:14:18 -06:00
Nyanmisaka d3e7f53d93 Fix some PGSSUB burn-in perf regressions (#12655) 2024-09-16 10:47:02 -06:00
Nyanmisaka 6deebb4498 Fix QSV presets may be empty (#12633) 2024-09-12 09:52:03 -06:00
Nyanmisaka 36d934f4c0 Enable Rockchip MJPEG encoder for Trickplay (#12610) 2024-09-09 09:24:45 -06:00
Nyanmisaka 5d4f71eb9a Enable tone-mapping and HLS remuxing for DoVi Profile 10 in AV1 (#12604) 2024-09-07 11:19:26 -06:00
Nyanmisaka 48b2941cfe Add native VPP tonemap for QSV on Windows (#12592) 2024-09-06 07:48:00 -06:00
nyanmisaka aecd294fd7 Enable the new BWDIF CUDA deint filter when available
this requires jellyfin-ffmpeg7

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-09-05 22:27:58 +08:00
Nyanmisaka 95f91e0263 Adapting AMD VAAPI-Vulkan pipeline to FFmpeg 7.0 (#12577) 2024-09-04 07:36:49 -06:00
nyanmisaka d7be6a5ab0 Tune x264/5 encoding params for realtime playback
Some options that are too performance-intensive are disabled, while
others are left enabled to trade-off between real-time playback and quality.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-08-30 00:57:00 +08:00
nyanmisaka d447207489 Apply suggestions from code review
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-08-28 03:20:04 +08:00
nyanmisaka 5ef7ab540a Adjust filters to adapt FFmpeg 7.0
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-08-27 02:42:29 +08:00
nyanmisaka fd73b0cac0 Backport pull request #12493 from jellyfin/release-10.9.z
Fix bitstream filter not applied to videos in TS container

Original-merge: 078ee1f2de

Merged-by: nielsvanvelzen <nielsvanvelzen@users.noreply.github.com>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-08-25 02:46:40 -04:00
nyanmisaka 7ee9c9b7a0 Backport pull request #12374 from jellyfin/release-10.9.z
Fix compatibility between TranscodingThrottler and FFmpeg 7.0

Original-merge: ee0094d889

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Bond_009 <bond.009@outlook.com>
2024-08-05 11:01:28 -04:00
Nyanmisaka 2aa9cf4007 Merge branch 'master' into fix-hwa-video-rotation 2024-08-05 16:37:09 +08:00
Nyanmisaka 00088c2954 Merge branch 'master' into fix-hwa-video-rotation 2024-07-23 15:37:33 +08:00
nyanmisaka d37c5d8921 Backport pull request #12149 from jellyfin/release-10.9.z
Fix MicroDVD being recognized as DVDSUB subtitles

Original-merge: 6010bc01c3

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-06-23 11:40:59 -04:00
nyanmisaka b0f2135762 Backport pull request #12031 from jellyfin/release-10.9.z
Fix video embedded image detection

Original-merge: 37b7e953f7

Merged-by: Bond-009 <bond.009@outlook.com>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-06-23 11:40:44 -04:00
nyanmisaka fc14c08bcc Backport pull request #11830 from jellyfin/release-10.9.z
Fix the IOSurf error in QSV transcoding

Original-merge: 5e7514243c

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-05-25 11:46:30 -04:00
nyanmisaka 2faa8c141f Backport pull request #11799 from jellyfin/release-10.9.z
Disable VA-VK interop on not supported kernel versions

Original-merge: eb437e7163

Merged-by: Bond-009 <bond.009@outlook.com>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-05-25 11:46:23 -04:00
nyanmisaka deb36eeeda Add HWA video transpose support (+-90/180)
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-30 06:09:58 +08:00
nyanmisaka 95b81ff54a Only streamCopy videos containing rotation data in fMP4
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-30 06:09:58 +08:00
nyanmisaka 6076462ff5 Add tests for the video rotation side data
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-30 06:09:58 +08:00
nyanmisaka 5967d26228 Register video rotation side data in DB
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-30 06:09:58 +08:00
nyanmisaka bf654bde60 Add json parser for video rotation side data
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-30 06:09:58 +08:00
Nyanmisaka 16e72d6883 Fix the broken codecs shifting (#11243) 2024-03-28 13:57:33 -06:00
Nyanmisaka 775815d09c Fix sar->dar typo in #11185 (#11210) 2024-03-25 05:36:18 -06:00
nyanmisaka bf2ef63922 Fix codec vs ActualOutputVideoCodec
codec is copy
ActualOutputVideoCodec is hevc

fixes 3bbb57e

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-24 06:45:43 +08:00
nyanmisaka 9b35b4e8f2 Clean the outdated ffmpeg test data and add 6.1.1
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-17 22:08:05 +08:00
nyanmisaka ae7c0c83e9 Bump the required minimum ffmpeg version to 4.4
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-17 21:30:42 +08:00
nyanmisaka 557b8f0c78 Apply suggestions from code review
Drop the unnecessary initial capacity from the list.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-17 20:45:00 +08:00
nyanmisaka a3ba974b7b Fix the trailing whitespace
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-17 20:44:42 +08:00
NyanmisakaandClaus Vium 98debe4817 Apply suggestions from code review
String interpolation is preferred.

Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2024-03-17 20:34:18 +08:00
nyanmisaka 47a77974b8 Apply suggestions from code review
Drop excludeFilePaths and lower the log level to debug to avoid
spamming in the log file.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-17 17:17:47 +08:00
nyanmisaka 50541aea91 Apply suggestions from code review
Add excludeFilePaths to skip segment files in which IOException occurred.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-16 22:09:31 +08:00
nyanmisaka 39b953e41c Set input readrate for using SegmentDeletion with stream-copy
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-16 07:35:05 +08:00
nyanmisaka 55fd6b5cb9 Add sanity check for ThrottleDelaySeconds
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-16 07:35:05 +08:00
nyanmisaka eca9bf41bc Add TranscodingSegmentCleaner to replace ffmpeg's hlsenc deletion
FFmpeg deletes segments based on its own transcoding progress,
but we need to delete segments based on client download progress.
Since disk and GPU speeds vary, using hlsenc's built-in deletion
will result in premature deletion of some segments. As a consequence,
the server has to constantly respin new ffmpeg instances, resulting
in choppy video playback.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-16 07:35:05 +08:00
Nyanmisaka aa3aaa94fe Fix the preproc filters for dvbsub burn-in (#11034)
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-02-20 10:49:39 -07:00