170 Commits

Author SHA1 Message Date
Joshua M. Boniface
7d705249ca
Merge commit from fork
Fix validation of API parameters passed to FFmpeg
2025-04-05 14:44:19 -04:00
Bond-009
1c2b48182a
Fix ArgumentNullException on playlist creation (#13837)
mediaSourceId can be null, the IDE doesn't know this as nullable is disabled for BaseEncodingJobOptions
2025-04-03 17:44:47 -06:00
Tim Eisele
0573999d5e
Import Keyframes into database (#13771)
* Migrate keyframe data into database

* Clear database table before import to handle failed migrations
2025-04-02 18:06:40 -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
e9729a536f
Use pattern matching for null checks (#13793)
Fix the few that slipped through
2025-03-31 17:38:25 -06:00
Shadowghost
3df7d7a809 Add validation for level input 2025-03-28 08:21:37 +01:00
Shadowghost
1fcc79316d Rename ValidationRegex to ContainerValidationRegex 2025-03-28 08:21:37 +01:00
Shadowghost
6d7950bddc Fix container parameter validation 2025-03-28 08:21:37 +01:00
Bond-009
9734892322
Merge pull request #12925 from Bond-009/await
Always await instead of directly returning Task
2025-01-28 11:29:46 +01:00
Bond-009
bcdffa74a8
Remove useless checks and dead code (#13405)
* Remove useless checks and dead code

* Enable adaptive bitrate streaming again

* Disable adaptive bitrate streaming by default
2025-01-28 11:29:22 +01: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
Bond_009
a70200af14 Disable adaptive bitrate streaming by default 2025-01-23 10:42:53 +01:00
gnattu
b7f6ccc306 Backport pull request #13113 from jellyfin/release-10.10.z
Only do DoVi remux when the client supports profiles without fallbacks

Original-merge: 9464f9e62266266bcec2a97f88fcc988aa4976a6

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

Backported-by: Bond_009 <bond.009@outlook.com>
2024-11-30 17:59:39 -05:00
Bond_009
d2db700402 Always await instead of directly returning Task
https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/blob/master/AsyncGuidance.md#prefer-asyncawait-over-directly-returning-task

The performance impact is negligible (and it's me saying that!)
2024-10-31 17:02:06 +01:00
Nyanmisaka
b496f979f0
Clean up deprecated -vsync option (#12765) 2024-10-03 08:18:40 -06:00
gnattu
4502024468
Remove all subtitle options from audio endpoints
Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com>
2024-09-22 04:41:30 +08:00
gnattu
1346ebc134 Don't add subtitle option to audio endpoint 2024-09-22 03:13:30 +08:00
gnattu
d944f415f3 Let HLS Controller decide if subtitle should be burn in
Previously, we predicted whether the subtitle should be burned in with transcode reasons, but that was not accurate because the actual transcoding codec is only determined after the client has requested the stream. This pass through the option to the `DynamicHlsController` to handle the subtitle burn-in during the actual transcoding process. Now the client should be responsible to conditionally load the subtitle when this option is enabled.
2024-09-22 00:35:41 +08:00
Tim Eisele
0d85af019c
Use enums for encoding options (#12561) 2024-09-09 08:43:37 -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
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
gnattu
2321866302 Remove more outdated options.
Signed-off-by: gnattu <gnattuoc@me.com>
2024-08-12 00:57:50 +08:00
gnattu
26489c4908 Remove container guessing doc from hls
Signed-off-by: gnattu <gnattuoc@me.com>
2024-08-12 00:11:22 +08:00
gnattu
a3ebbabf95 Update api doc to remove outdated info
Signed-off-by: gnattu <gnattuoc@me.com>
2024-08-12 00:06:31 +08:00
gnattu
0a1a109b2e
Add RFC7845 downmix algorithm (#12300) 2024-07-30 09:50:22 -06:00
Bond-009
d5cf0ad2c8
Merge pull request #11492 from jellyfin/better-vbr-settings
Add better audio VBR settings
2024-07-21 16:15:43 +02:00
gnattu
992eed5ef7 Fix AC-4 Sample rate check
Some Audio codec will have a null CodecTag, check for that to avoid null reference

If the client already requests a specific sample rate, use that instead of our default sample rate for AC-4

Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-18 11:45:16 +08:00
gnattu
8851ace543
Enable Dolby AC-4 decoder (#11486) 2024-07-17 12:35:40 -04:00
gnattu
fd5df98616 Move default value to api spec
Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-17 21:52:44 +08:00
gnattu
0381c5a288 Add EnableAudioVbrEncoding to TranscodingProfile
This will allow the client selectively disable VBR audio when it causes problems.

Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-17 21:27:35 +08:00
gnattu
78929418cc Use better audio VBR settings
LAME's VBR mode only has advantage over a certain bitrate range. For very low and very high bitrate, use the ABR mode instead.

aac_at's CVBR mode produces very good quality and is not worse than its TVBR mode in blind testing. Use this mode for convenience.

The ffmpeg native aac encoder will have quality regression with its VBR mode. Always use CBR mode for ffmpeg's native aac encoder.

Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-17 21:27:35 +08:00
Bond_009
2459b7e62e Properly await Task.Delay() 2024-04-29 10:16:28 +02:00
gnattu
374b6ca0e2
Only apply custom downmix to 5.1 audios (#11401) 2024-04-22 10:23:36 -06:00
gnattu
5db0c5a0e4
fix: forward port patch for GHSA-866x-wj5j-2vf4 (#11228) 2024-03-28 09:26:14 -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
vedant
3bbb57eb83
Add new VideoRangeTypes to fully support DoVi on webOS (#10469) 2024-03-23 07:39:49 -06:00
nyanmisaka
a3ba974b7b Fix the trailing whitespace
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-17 20:44:42 +08:00
Nyanmisaka
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
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
Mark Cilia Vincenti
d1677dc680 AsyncKeyedLock migration 2024-01-03 16:47:25 +01:00
Patrick Barron
9215a4d40a Add ITranscodeManager service 2023-12-21 12:53:50 -05:00
Patrick Barron
c2081955c8 Rename and clean up TranscodingJob 2023-12-21 12:53:50 -05:00
Patrick Barron
abd74fd5a4 Move TranscodingJobDto and TranscodingThrottler to Controller 2023-12-21 12:53:49 -05:00
Patrick Barron
01fd42cf95 Remove DLNA API code 2023-11-15 20:53:35 -05:00
Nick
cd662506a1 Merge branch 'master' into trickplay 2023-10-18 19:27:05 -07:00
lonebyte
74f61fbd79
Fix HLS playback of m4a files with mjpeg stream (#10069) 2023-10-10 22:48:52 +02:00
Bond-009
d5695efad9
Merge pull request #10067 from lonebyte/flac-hls-fixes 2023-10-09 18:28:49 +02:00
Nyanmisaka
aa073748c0
Drop experimental status of flac-in-MP4 for FFmpeg 6+
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2023-10-09 23:12:41 +08:00
Bond_009
b176beb88e Reduce string allocations
Some simple changes to reduce the number of allocated strings
2023-10-06 01:04:25 +02:00
Jan Müller
fd022ee685 Merge branch 'master' into flac-hls-fixes
# Conflicts:
#	Jellyfin.Api/Controllers/DynamicHlsController.cs
2023-09-16 12:40:05 +02:00