aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Api/Controllers/DynamicHlsController.cs
AgeCommit message (Collapse)Author
2025-11-02Backport pull request #15247 from jellyfin/release-10.11.znyanmisaka
Ignore initial delay in audio-only containers Original-merge: 6bf88c049e9f64ec5829d60d69eff3c3239a9528 Merged-by: crobibero <cody@robibe.ro> Backported-by: Joshua M. Boniface <joshua@boniface.me>
2025-07-30Add extra movflags to fMP4 to take initial audio delay into accountnyanmisaka
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2025-04-05Merge commit from forkJoshua M. Boniface
Fix validation of API parameters passed to FFmpeg
2025-04-03Fix ArgumentNullException on playlist creation (#13837)Bond-009
mediaSourceId can be null, the IDE doesn't know this as nullable is disabled for BaseEncodingJobOptions
2025-04-02Import Keyframes into database (#13771)Tim Eisele
* Migrate keyframe data into database * Clear database table before import to handle failed migrations
2025-04-02Improve dynamic HDR metadata handling (#13277)gnattu
* 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-03-31Use pattern matching for null checks (#13793)Bond-009
Fix the few that slipped through
2025-03-28Add validation for level inputShadowghost
2025-03-28Rename ValidationRegex to ContainerValidationRegexShadowghost
2025-03-28Fix container parameter validationShadowghost
2025-01-28Merge pull request #12925 from Bond-009/awaitBond-009
Always await instead of directly returning Task
2025-01-28Remove useless checks and dead code (#13405)Bond-009
* Remove useless checks and dead code * Enable adaptive bitrate streaming again * Disable adaptive bitrate streaming by default
2025-01-25chore: fix spellingJosh Soref
* 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-23Disable adaptive bitrate streaming by defaultBond_009
2024-11-30Backport pull request #13113 from jellyfin/release-10.10.zgnattu
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-10-31Always await instead of directly returning TaskBond_009
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-03Clean up deprecated -vsync option (#12765)Nyanmisaka
2024-09-22Remove all subtitle options from audio endpointsgnattu
Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com>
2024-09-22Don't add subtitle option to audio endpointgnattu
2024-09-22Let HLS Controller decide if subtitle should be burn ingnattu
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-09Use enums for encoding options (#12561)Tim Eisele
2024-09-07Enable tone-mapping and HLS remuxing for DoVi Profile 10 in AV1 (#12604)Nyanmisaka
2024-08-30Tune x264/5 encoding params for realtime playbacknyanmisaka
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-12Remove more outdated options.gnattu
Signed-off-by: gnattu <gnattuoc@me.com>
2024-08-12Remove container guessing doc from hlsgnattu
Signed-off-by: gnattu <gnattuoc@me.com>
2024-08-12Update api doc to remove outdated infognattu
Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-30Add RFC7845 downmix algorithm (#12300)gnattu
2024-07-21Merge pull request #11492 from jellyfin/better-vbr-settingsBond-009
Add better audio VBR settings
2024-07-18Fix AC-4 Sample rate checkgnattu
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-17Enable Dolby AC-4 decoder (#11486)gnattu
2024-07-17Move default value to api specgnattu
Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-17Add EnableAudioVbrEncoding to TranscodingProfilegnattu
This will allow the client selectively disable VBR audio when it causes problems. Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-17Use better audio VBR settingsgnattu
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-04-29Properly await Task.Delay()Bond_009
2024-04-22Only apply custom downmix to 5.1 audios (#11401)gnattu
2024-03-28fix: forward port patch for GHSA-866x-wj5j-2vf4 (#11228)gnattu
2024-03-24Fix codec vs ActualOutputVideoCodecnyanmisaka
codec is copy ActualOutputVideoCodec is hevc fixes 3bbb57e Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-23Add new VideoRangeTypes to fully support DoVi on webOS (#10469)vedant
2024-03-17Fix the trailing whitespacenyanmisaka
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-17Apply suggestions from code review Nyanmisaka
String interpolation is preferred. Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2024-03-16Add TranscodingSegmentCleaner to replace ffmpeg's hlsenc deletionnyanmisaka
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-01-03AsyncKeyedLock migrationMark Cilia Vincenti
2023-12-21Add ITranscodeManager servicePatrick Barron
2023-12-21Rename and clean up TranscodingJobPatrick Barron
2023-12-21Move TranscodingJobDto and TranscodingThrottler to ControllerPatrick Barron
2023-11-15Remove DLNA API codePatrick Barron
2023-10-18Merge branch 'master' into trickplayNick
2023-10-10Fix HLS playback of m4a files with mjpeg stream (#10069)lonebyte
2023-10-09Merge pull request #10067 from lonebyte/flac-hls-fixesBond-009
2023-10-09Drop experimental status of flac-in-MP4 for FFmpeg 6+Nyanmisaka
Signed-off-by: nyanmisaka <nst799610810@gmail.com>