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