Commit graph

622 commits

Author SHA1 Message Date
SimonvBez
bc753b18ec Backport pull request #17906 from jellyfin/release-12.z
Fix transcode throttling not enabling on supported systems (caused by race condition)

Original-merge: b8b6e392bf

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

Backported-by: Cody Robibero <cody@robibe.ro>
2026-09-15 11:15:54 -04:00
crobibero
51abf6f503 Backport pull request #17883 from jellyfin/release-12.z
Fix trickplay using the wrong video stream

Original-merge: 31f0533191

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

Backported-by: Cody Robibero <cody@robibe.ro>
2026-09-15 11:15:47 -04:00
Shadowghost
c56e14d8fb Keep a media process and its exit state usable by the caller that started it 2026-09-01 21:42:06 +02:00
Cody Robibero
9ba91d4583 Normalize fix, apply in more places 2026-08-20 18:10:50 -04:00
gnattu
d74babd8f3 Drain stderr and stdout concurrently for encoder validation
Some ffmpeg build might output extremely long traces for its banner that consume all pipe capacity and hangs the process. We have to drain both streams regardless on which one we actually read.
2026-07-24 20:01:01 +08:00
gnattu
a238d59a07
Remove libpostproc check for ffmpeg version validation (#17384)
Remove libpostproc check for ffmpeg version validation
2026-07-20 12:16:37 +02:00
Bond-009
2fd747432a
Merge pull request #17304 from nyanmisaka/normalize-invalid-pts-for-trickplay
Normalize invalid PTS from containers for Trickplay generation
2026-07-20 08:36:25 +02: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
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
Bond_009
e86b502cbc Strip null-terminator 2026-06-16 17:54:23 +02:00
Bond_009
0022508889 Add regression test 2026-06-15 21:20:06 +02:00
Bond_009
a9a02719ab Fix type of length arguments 2026-06-15 21:01:28 +02:00
Bond_009
d50205cc9f Follow native interoperability best practices
https://learn.microsoft.com/en-us/dotnet/standard/native-interop/best-practices
2026-06-15 21:01:28 +02:00
psmattas
80a552a35d
fix: suppress repeated PriorityClass warning in MediaEncoder
When Jellyfin runs without permission to set process priority (e.g.
Docker), StartProcess() logged a warning for every file probed during
a library scan. Add a _canSetProcessPriority flag: warn once on first
failure, skip all subsequent attempts.

Fixes #15287
2026-05-18 14:40:34 +01:00
Seven Rats
f5f75ed2e1
feat/audiobook_chapters (#16518)
feat/audiobook_chapters
2026-05-03 12:18:20 +02:00
Bond-009
046023b9dd
Merge pull request #16380 from LTe/fix-subtitle-extraction-setting
Respect EnableSubtitleExtraction setting in subtitle delivery
2026-04-11 11:37:17 +02: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
Piotr Niełacny
37983c943a Respect EnableSubtitleExtraction setting in subtitle delivery
Wire up EnableSubtitleExtraction config to MediaEncoder.CanExtractSubtitles
so the setting is actually respected. Gate subtitle extraction check behind
PlayMethod.Transcode since DirectPlay has no competing ffmpeg process.

Add parameterized tests for StreamBuilder.GetSubtitleProfile covering
text and graphical codecs, profile format matching, and extraction
setting behavior. Remove misplaced SubtitleEncoder extraction test.
2026-03-13 16:34:44 +01:00
gnattu
7d2e4cd817 Backport pull request #15557 from jellyfin/release-10.11.z
Restrict first video frame probing to file protocol

Original-merge: ee7ad83427

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

Backported-by: Bond_009 <bond.009@outlook.com>
2025-12-03 14:04:19 -05:00
gnattu
511b5d9c53 Backport pull request #15177 from jellyfin/release-10.11.z
Make priority class setting more robust

Original-merge: 70c32a26fa

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

Backported-by: Bond_009 <bond.009@outlook.com>
2025-10-27 15:43:22 -04:00
Tim Eisele
e4e578b37a
Don't use ffprobe frame options on audio probe (#14773) 2025-09-10 20:32:14 -06:00
Evan
29e17b6bc0 Run background ffmpeg tasks as ProcessPriorityClass.BelowNormal
Follow TrickPlay example of running other background ffmpeg tasks as ProcessPriorityClass.BelowNormal:

- Keyframe extraction
- Media info probing during library scans
- Audio normalization
- Image extraction
2025-08-15 07:18:44 +08:00
Bond-009
a52a230778
Merge pull request #14467 from jkhsjdhjs/keyframe-only-trickplay-extraction-fallback
Add fallback for keyframe-only trickplay extraction
2025-08-01 10:30:24 +02:00
jkhsjdhjs
663087b155
Fix trickplay extraction ffmpeg error-handling (#14493) 2025-07-22 17:13:38 -06:00
jkhsjdhjs
bf3f37e3d0
Add fallback for keyframe-only trickplay extraction
Keyframe-only trickplay image extraction can fail for some media
files. The current behavior is to skip the media file and try again
on the next run, which will fail again.

This adds a fallback to regular non-keyframe-only extraction for
failed runs, so the extraction can complete.
2025-07-14 00:09:43 +02: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
Tim Eisele
d976f13970
Recognize file changes and remove data on change (#13839) 2025-05-04 21:21:44 -06:00
Nyanmisaka
4199f7acc2
Fix the transparency issue of ASS subtitle rendering in HWA (#14024) 2025-05-03 08:21:08 -06:00
gnattu
f436743f9f Don't trim image extractor option 2025-04-27 21:37:44 +08:00
gnattu
77bb1a726e Use full range output for image 2025-04-27 21:36:57 +08:00
gnattu
6637102162 Correctly handle retry when I frame only failed 2025-04-27 21:30:02 +08:00
Tim Eisele
f576783ae1
Fix distinction queries (#14007) 2025-04-26 18:49:30 -06:00
gnattu
2e467f29de
Don't pass through timestamp for image extractor (#13999) 2025-04-26 09:36:40 -06:00
Nyanmisaka
e84826297d
Fix thumbnail extraction of mpegts videos in FFmpeg 7.1+ (#13942) 2025-04-19 10:41:30 -06:00
gnattu
49ac705867
Improve dynamic HDR metadata handling (#13277)
* Add support for bitstream filter to remove dynamic hdr metadata

* Add support for ffprobe's only_first_vframe for HDR10+ detection

* Add BitStreamFilterOptionType for metadata removal check

* Map HDR10+ metadata to VideoRangeType.cs

Current implementation uses a hack that abuses the EL flag to avoid database schema changes. Should add proper field once EFCore migration is merged.

* Add more Dolby Vision Range types

Out of spec ones are problematic and should be marked as a dedicated invalid type and handled by the server to not crash the player.

Profile 7 videos should not be treated as normal HDR10 videos at all and should remove the metadata before serving.

* Remove dynamic hdr metadata when necessary

* Allow direct playback of HDR10+ videos on HDR10 clients

* Only use dovi codec tag when dovi metadata is not removed

* Handle DV Profile 7 Videos better

* Fix HDR10+ with new bitmask

* Indicate the presence of HDR10+ in HLS SUPPLEMENTAL-CODECS

* Fix Dovi 8.4 not labeled as HLG in HLS

* Fallback to dovi_rpu bsf for av1 when possible

* Fix dovi_rpu cli for av1

* Use correct EFCore db column for HDR10+

* Undo outdated migration

* Add proper hdr10+ migration

* Remove outdated migration

* Rebase to new db code

* Add migrations for Hdr10PlusPresentFlag

* Directly use bsf enum

* Add xmldocs for SupportsBitStreamFilterWithOption

* Make `VideoRangeType.Unknown` explicitly default on api models.

* Unset default for non-api model class

* Use tuples for bsf dictionary for now
2025-04-02 18:06:02 -06:00
Bond-009
476a0d6932
Merge pull request #13194 from gnattu/av1-videotoolbox
Enable VideoToolbox AV1 decode
2025-03-30 23:12:53 +02:00
gnattu
c69e9d8f2c Gate the macOS only functions 2025-03-28 21:30:39 +08:00
gnattu
384134fd25 Use string literal 2025-03-28 21:22:00 +08:00
gnattu
1ebef57508 Backport pull request #13532 from jellyfin/release-10.10.z
Fix image encoding concurrency limit

Original-merge: 3f539472f3

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

Backported-by: Bond_009 <bond.009@outlook.com>
2025-02-13 09:49:58 -05:00
Josh Soref
044cf9fb85 chore: fix spelling
* a
* acceleration
* addition
* altogether
* api clients
* artist
* associated
* bandwidth
* cannot
* capabilities
* case-insensitive
* case-sensitive
* configuration
* delimiter
* dependent
* diacritics
* directors
* enable
* explicitly
* filters
* finish
* have
* hierarchy
* implicit
* include
* information
* into
* its
* keepalive
* localization
* macos
* manual
* matching
* metadata
* nonexistent
* options
* overridden
* parsed
* parser
* playback
* preferring
* processes
* processing
* provider
* ratings
* retrieval
* running
* segments
* separate
* should
* station
* subdirectories
* superseded
* supported
* system
* than
* the
* throws
* transpose
* valid
* was

link: forum or chat rooms

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2025-01-25 20:05:15 -05:00
Daniyar Alpyspayev
2614fecf8d move to new System.Threading.Lock type for better performance 2024-12-12 18:10:06 +05:00
gnattu
0fc288936d Enable VideoToolbox AV1 decode
This decoder differs from others provided by VideoToolbox in that it lacks any software fallback. To achieve consistent behavior with other VideoToolbox decoders, this PR implemented additional checking on the server to simulate the software fallback provided by VideoToolbox.

The current fallback checking mechanism is a temporary solution. In the long term, it should be replaced with a more capable hardware capability checking system.
2024-12-09 16:17:49 +08:00
gnattu
7f81bbd42f Backport pull request #13030 from jellyfin/release-10.10.z
Always cleanup trickplay temp for ffmpeg failures

Original-merge: 9e61a6fd72

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

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-11-19 15:43:31 -05:00
Nyanmisaka
3ceb8337e7
Fix check for format option in scale_cuda filter (#12874) 2024-10-25 12:52:27 -06:00
gnattu
18a621ec25
Extract DoVi thumbnail at 4000nit (#12771) 2024-10-04 06:51:17 -06:00
Nyanmisaka
b496f979f0
Clean up deprecated -vsync option (#12765) 2024-10-03 08:18:40 -06:00
gnattu
9ef7ccfc12
Add perf tradeoff mode to image extractor (#12744) 2024-09-29 20:21:46 -06:00
Dmitry Lyzo
8a456bf895
Escape quotes in the subtitle path (#12690) 2024-09-23 09:01:45 -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
gnattu
0ff7f28753
Enable BWDIF VideoToolbox deint filter when available (#12634) 2024-09-12 09:52:24 -06:00