Commit Graph

512 Commits

Author SHA1 Message Date
joshjryan 3edd6ab767 Fix allow inputContainer to be null for Live TV (#12770) 2024-10-04 06:51:08 -06:00
Niels van Velzen bcc818f397 Fix DeviceProfile.Id should be nullable (#12679) 2024-09-22 08:58:23 -06:00
gnattu 56cf1a581c Better bitrate and resolution normalization (#12644) 2024-09-21 20:01:47 -06: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
Shadowghost 5a5da33f44 Apply review suggestions 2024-09-17 23:34:12 +02:00
Shadowghost 2351eeba56 Rework PR 6203 2024-09-17 20:35:23 +02:00
Dmitry Lyzo 77c6fd5ab2 Improve direct profile ranking 2024-09-14 01:26:51 +08:00
gnattu 6a5f22fc2f Revert "Return more precise transcoding reasons"
This reverts commit de8bb15c

Signed-off-by: gnattu <gnattuoc@me.com>
2024-09-14 01:24:57 +08:00
gnattu 5913db991b Improve readability
Signed-off-by: gnattu <gnattuoc@me.com>
2024-09-13 22:46:36 +08:00
gnattu de8bb15c78 Return more precise transcoding reasons
Using the first profile's reason is somewhat arbitrary, as many clients' first profile may not be the most compatible one. For instance, browsers often set WebM as the first profile, which doesn’t support common codecs like H.264 and AAC by design. This causes `VideoCodecNotSupported` and `AudioCodecNotSupported` to be returned, even if the browser supports those codecs. Only use those reasons when all profiles indicate that the codec is not supported.

Signed-off-by: gnattu <gnattuoc@me.com>
2024-09-13 18:19:05 +08:00
gnattu 62712aa12c Add option to always burn in subtitles if transcoding is triggered (#12430) 2024-09-12 09:53:21 -06:00
Dmitry Lyzo 3da081ba86 Add audio ranking for transcoding profiles (#12546) 2024-09-09 13:16:58 -06:00
Dmitry Lyzo 54f663b0f3 Extract condition from Where clause to eliminate extra filtering (#12614) 2024-09-09 07:51:28 -06:00
gnattu b4f71859d9 Make Live TV compatibility profiles customizable (#12529) 2024-09-07 21:08:54 -06:00
gnattu df00909b85 Backport #12562 and #12521 (#12602)
Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com>
Co-authored-by: Nyanmisaka <nst799610810@gmail.com>
2024-09-07 11:21:14 -06:00
gnattu 5a8a19e07b Add MediaStream.ReferenceFrameRate for problematic video files (#12603)
Co-authored-by: Nyanmisaka <nst799610810@gmail.com>
2024-09-07 11:16:23 -06:00
gnattu 29d5344ba7 fix typo
Signed-off-by: gnattu <gnattuoc@me.com>
2024-08-26 00:04:08 +08:00
gnattu e31c6d3934 Add SubContainer support to CodecProfile
Currently, when specifying codec profiles, the client can only specify profiles applied to direct containers, with no way to apply a profile specifically to HLS or a specific HLS container. This limitation is not suitable for more complex client codec support scenarios.

To address this, a SubContainer field is added to CodecProfile. The client can now specify the main container as "hls" to apply the profile exclusively to HLS streams. Additionally, the SubContainer field allows the profile to be applied to a specific HLS container.

Currently, this is only used in StreamBuilder for HLS streams. Further changes may be required to extend its usage.

Signed-off-by: gnattu <gnattuoc@me.com>
2024-08-26 00:04:05 +08:00
dmitrylyzo ca4bd57b8d Backport pull request #12499 from jellyfin/release-10.9.z
Apply all codec conditions

Original-merge: fff4477a93

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

Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-08-25 02:46:42 -04:00
Bond_009 0a0de6708e Enable more analyser rules as errors
Also deduplicates a bit of code inside of SeasonPathParser and adds some more tests
2024-08-01 17:17:10 +02:00
gnattu 162ea38a95 Check MaxAudioChannels for directAudioStream candidates (#12319)
* Check MaxAudioChannels for directAudioStream candidates

The current stream builder logic does not check the channel limit when determining if the audio stream can be directly used, and this can cause some undesired effects:

- A high channel count surround sound stream might be picked even if a stereo one exists when the user requires stereo audio.

- The user's preferred audio codec might not be respected during the downmix because the requested codec is now forced to be the same as the original source.

Signed-off-by: gnattu <gnattuoc@me.com>

* Fix unit test

Signed-off-by: gnattu <gnattuoc@me.com>

* Set correct transcode reason and target channels for unit test

Signed-off-by: gnattu <gnattuoc@me.com>

* Match old stream selection behavior

Signed-off-by: gnattu <gnattuoc@me.com>

* Fix reason matching

Signed-off-by: gnattu <gnattuoc@me.com>

---------

Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-29 00:11:59 +02: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
Cody Robibero 4239de1ee7 Merge pull request #11399 from jellyfin/audio-remux 2024-07-18 08:12:20 -04:00
gnattu 855215673a Use string.Equals
Co-authored-by: Bond-009 <bond.009@outlook.com>
2024-07-18 17:50:19 +08:00
gnattu ce7cbc1f64 Don't check the misleading options.EnableDirectStream for direct stream availability
Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-18 01:49:55 +08:00
gnattu 7ad432be23 Default EnableAudioVbrEncoding to true in TranscodingProfile
This will match the old behavior when user takes no action for clients

Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-17 21:27:35 +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 c8f157444c Make comment better
Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-17 14:08:39 +08:00
gnattu ed9d27bb3a Correctly set bitrate limit for remuxing
Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-17 13:35:59 +08:00
gnattu a16d3d4887 Allow clients to send audio container override for HLS
This will improve flexibility due to overcome the complex compatibility situation of HLS

Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-17 13:35:59 +08:00
gnattu e4101128e0 feat: add audio remux to UniversalAudioController
Signed-off-by: gnattu <gnattuoc@me.com>
2024-07-17 13:35:59 +08:00
gnattu 5df171b3f9 Add remuxing support for VP9
Add VP9 as a valid HLS format to enable remuxing. This is useful when audio processing is required, but the VP9 video can be passed as-is to avoid unnecessary video transcoding.

No VP9 encoder is enabled and should not be enabled. AV1 and HEVC should be preferred over VP9 if video transcoding is required.

Signed-off-by: gnattu <gnattuoc@me.com>
2024-05-16 09:34:21 +08:00
standstaff 64b7f0f721 chore: remove repetitive words
Signed-off-by: standstaff <zhengxingru@yeah.net>
2024-03-15 17:08:03 +08:00
Cody Robibero e731250342 Lowercase MediaStreamProtocol for backwards compatibility 2024-03-08 15:29:22 -07:00
Niels van Velzen 407cf5d0bf Add MediaStreamProtocol enum (#10153)
* Add MediaStreamProtocol enum

* Add default handling for enum during deserialization

---------

Co-authored-by: Cody Robibero <cody@robibe.ro>
2024-03-04 16:44:54 -07:00
Cody Robibero 0bc41c015f Store lyrics in the database as media streams (#9951) 2024-02-26 05:09:40 -07:00
nyanmisaka be265cd87f Add EqualsAny for VideoCodecTag condition
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-02-05 23:41:43 +08:00
Cody Robibero e7b8d45bbb Use helper function to compare guid (#10825) 2024-01-17 08:51:39 -07:00
Patrick Barron 68fd9c469f Remove DLNA-specific DeviceProfile code (#10850)
* Remove DLNA-specific methods from DeviceProfile

* Remove DLNA-specific fields from DeviceProfile

* Remove unused DLNA models
2024-01-12 09:24:32 -07:00
Patrick Barron 0d5bbfda32 Remove unused DLNA models (#10685)
* Remove unused DLNA models

* Remove IDlnaManager
2023-12-06 16:06:42 -07:00
Bond_009 efec6e7a23 Address review comment 2023-11-15 15:22:51 +01:00
Bond_009 b62b0ec2b5 Fix warnings 2023-11-14 21:14:21 +01:00
Cody Robibero 892973a9e3 Merge branch 'master' into media-type 2023-11-09 22:03:55 -07:00
Cody Robibero 2920611ffc Convert string MediaType to enum MediaType 2023-10-10 15:57:15 -06:00
Stepan Goremykin 47254d6a22 Remove conditional access when it is known to be not null 2023-10-08 00:46:15 +02:00
Bond-009 3087881d93 Merge pull request #10056 from Bond-009/nullable2 2023-09-12 11:09:20 +02:00
Bond_009 18a311d32f == null -> is null 2023-08-22 21:14:54 +02:00
Bond_009 5677566a41 Enable nullable for more files 2023-07-29 21:35:38 +02:00
Bond-009 b95fa294c9 Merge pull request #9799 from Bond-009/genregex 2023-07-06 19:56:00 +02:00
Joshua M. Boniface 93b400343e Merge pull request #8147 from Shadowghost/network-rewrite 2023-07-03 13:16:21 -04:00