311 Commits

Author SHA1 Message Date
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
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: fff4477a933a4b580fb255348191e8ddcba661a7

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
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
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
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
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
e53e53eb29
Merge pull request #9907 from nyanmisaka/av1e 2023-06-28 17:34:20 +02:00
Shadowghost
20a4509991 Migrate VideoRange and VideoRangeType to Enum 2023-06-28 12:02:20 +02:00
nyanmisaka
0df6fd9cf2 Add AV1 support in HLS streaming
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2023-06-20 03:50:02 +08:00
Dmitry Lyzo
14d061f543 Backport pull request #9723 from jellyfin/release-10.8.z
Fix multiple codec checking in CodecProfiles conditions

Original-merge: bec8d7b3f5923c240bbc5bcf160c19f7cc591211

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

Backported-by: Bond_009 <bond.009@outlook.com>
2023-06-13 10:55:16 -04:00
nyanmisaka
ed88c8bd2d Backport pull request #9411 from jellyfin/release-10.8.z
Fix codec checking in CodecProfiles conditions

Original-merge: 5921379a29583804fd1e99d1aad81bd4aad7f019

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

Backported-by: Bond_009 <bond.009@outlook.com>
2023-06-13 10:44:06 -04:00
Stepan Goremykin
910617bbc3 Remove redundant 'else' keywords 2023-04-06 19:38:34 +02:00
Bond-009
2ce08eb184
Merge pull request #9388 from Shadowghost/output-bitrate-channels-master 2023-03-20 17:46:11 +01:00
Shadowghost
e57c33c442 Add DCA and TrueHD to fMP4 audio codecs to support remuxing 2023-03-19 15:07:01 +01:00
Bond_009
d8ec3a5470 Reduce usage of GetAwaiter().GetResult() 2023-03-14 12:05:49 +01:00
Bond-009
6351d1022b
Merge pull request #9254 from Shadowghost/dvdbdfix 2023-03-10 15:48:35 +01:00
Shadowghost
2403a0a367 Apply review suggestions 2023-03-10 15:27:05 +01:00
Bond_009
dab75d35d2 Enable nullable for more files 2023-03-07 21:51:48 +01:00