Subtitle Burn-In Improvement Test Build

Hey everyone!

We’ve been working on improving the logic for how Plex Media Server burns in subtitles when hardware transcoding in order to achieve a significant performance boost (especially for low powered CPUs) and we’re looking for additional testing and feedback.

Nvidia and Intel devices have been improved on Windows systems and Nvidia, Intel, and AMD (assuming no ToneMapping is required) devices have been improved on Linux based systems.

Assuming no significant issues are discovered this thread will be closed on August 12th and we’ll proceed with the release process to include the improvements in 1.41.0.

We will be updating the download links below as new builds are issued.

Finally, please provide feedback by directly replying to this thread, and exclusively about these changes, off topic posts will be silently removed.

Links Updated: 8/11/2024

Desktop Platforms

NAS Devices

9 Likes

ubuntu 24.0 with alderlake → converting 4K HDR + Burn to 1080p tone mapping => works perfect with a transcode speed between 4.8 and 6.

good job

Initial testing this is a remarkable performance increase, I will let my friends know and feed back if any issues.

Curious - is this the ‘final’ iteration of this or is there more performance that can be unlocked/optimised later down the road?

Even if there isn’t, this is awesome and has taken a 4k hdr → 1080p sdr with pgs burnt subs from a 0.6 transcode (intel i3) to a 5.8.

1 Like

So just to confirm, there should be performance improvements for subtitle burn-in, for every scenario on Linux running on Intel, unless it’s a tone-mapped transcode?

Thank you! My husband is one of those folks who always has subtitles on for everything.

1 Like

I’m running Plex on Docker as a container (linuxserver). How can I test this? Apologies, I’m new to docker/Linux.

@JoshUK Unless issues are discovered this is the final iteration for now. If additional functionality is added to ffmpeg upstream we will add it to PMS at that point.

@DaveBinM The tone mapping comment is only relevant to AMD devices because we do not support HW tone mapping on AMD at this time which prevents us from taking full advantage of these changes.

@tissaka31 We do not officially support test builds on docker at this time. This is because our docker images pull from the official update channels (Public, Beta, ect). While you won’t be able to help test, you can take advantage of the functionality when it hits the beta channel (hopefully in ~2 weeks assuming no major issues are found)

3 Likes

Hello, is there a way to update the ubuntu apt sources file to get test builds? Thanks!

@arcimus there is no way to update apt, however you should be able to install the deb file with dpkg

And then not run apt-upgrade until I want to install the stable build again?

Awesome, this is a massive performance increase and I am going to ask my friends to try subtitles out again! They are used to knocking quality down to potato levels if they REALLY must have subs.

I will report back should I find any issues OR if I find that none of my friends are reporting issues/Im seeing any.

This really is such a great uptime, thank you.

On Windows x64+Nvidia GPU, I’m seeing a green bar at the bottom of the video when transcoding with (PGS) subtitles turned on:

The green bar is not there when subtitles are set to off on the same video…

What media file is this @millercentral, I can try my end on Linux + QSV

Blu-ray rip of Gravity (1080p), but it seems like it happens with any video I’ve tried with PGS subs on Windows+Nvidia. I can confirm that HW transcoding is enabled during playback.

I see, if its multiple files its probably relating to Windows/Nvidia. What format?

General
Unique ID                                : 4191508429996900539771062350046223428 (0x3274152263603F85250AD27883ADC44)
Complete name                            : D:\plex\test content\1080p_sdr_sample.mkv
Format                                   : Matroska
Format version                           : Version 4
File size                                : 868 MiB
Duration                                 : 5 min 0 s
Overall bit rate mode                    : Variable
Overall bit rate                         : 24.3 Mb/s
Frame rate                               : 23.976 FPS
Movie name                               : Gravity Diamond Luxe Edition 
Encoded date                             : 2022-12-30 22:16:43 UTC
Writing application                      : mkvmerge v72.0.0 ('Minuano (Six-eight)') 64-bit
Writing library                          : libebml v1.4.4 + libmatroska v1.7.1

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4.1
Format settings                          : CABAC / 2 Ref Frames
Format settings, CABAC                   : Yes
Format settings, Reference frames        : 2 frames
Format settings, Slice count             : 4 slices per frame
Codec ID                                 : V_MPEG4/ISO/AVC
Duration                                 : 5 min 0 s
Bit rate mode                            : Variable
Bit rate                                 : 20.0 Mb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.403
Time code of first frame                 : 00:59:58:00
Stream size                              : 716 MiB (83%)
Language                                 : English
Default                                  : Yes
Forced                                   : No

Audio #1
ID                                       : 2
Format                                   : MLP FBA 16-ch
Format/Info                              : Meridian Lossless Packing FBA with 16-channel presentation
Commercial name                          : Dolby TrueHD with Dolby Atmos
Codec ID                                 : A_TRUEHD
Duration                                 : 5 min 0 s
Bit rate mode                            : Variable
Bit rate                                 : 2 891 kb/s
Maximum bit rate                         : 8 823 kb/s
Channel(s)                               : 8 channels
Channel layout                           : L R C LFE Ls Rs Lb Rb
Sampling rate                            : 48.0 kHz
Frame rate                               : 1 200.000 FPS (40 SPF)
Compression mode                         : Lossless
Stream size                              : 103 MiB (12%)
Title                                    : TrueHD Atmos 7.1
Language                                 : English
Default                                  : Yes
Forced                                   : No
Number of dynamic objects                : 11
Bed channel count                        : 1 channel
Bed channel configuration                : LFE

Audio #2
ID                                       : 3
Format                                   : AC-3
Format/Info                              : Audio Coding 3
Commercial name                          : Dolby Digital
Format settings                          : Dolby Surround EX
Codec ID                                 : A_AC3
Duration                                 : 5 min 0 s
Bit rate mode                            : Constant
Bit rate                                 : 384 kb/s
Channel(s)                               : 6 channels
Channel layout                           : L R C LFE Ls Rs
Sampling rate                            : 48.0 kHz
Frame rate                               : 31.250 FPS (1536 SPF)
Compression mode                         : Lossy
Stream size                              : 13.7 MiB (2%)
Title                                    : AC3 5.1-EX
Language                                 : English
Service kind                             : Complete Main
Default                                  : No
Forced                                   : No
Dialog Normalization                     : -31 dB
compr                                    : 0.53 dB
dynrng                                   : 0.27 dB
cmixlev                                  : -3.0 dB
surmixlev                                : -3 dB
dmixmod                                  : Lt/Rt
ltrtcmixlev                              : -3.0 dB
ltrtsurmixlev                            : -3.0 dB
lorocmixlev                              : -3.0 dB
lorosurmixlev                            : -3.0 dB
dialnorm_Average                         : -31 dB
dialnorm_Minimum                         : -31 dB
dialnorm_Maximum                         : -31 dB

Text #1
ID                                       : 4
Format                                   : PGS
Muxing mode                              : zlib
Codec ID                                 : S_HDMV/PGS
Codec ID/Info                            : Picture based subtitle format used on BDs/HD-DVDs
Duration                                 : 3 min 55 s
Bit rate                                 : 77.5 kb/s
Frame rate                               : 0.719 FPS
Count of elements                        : 169
Stream size                              : 2.17 MiB (0%)
Title                                    : English (SDH)
Language                                 : English
Default                                  : Yes
Forced                                   : No

Thanks for the clarification! This is exciting stuff! :plexheart:

1 Like

I would like to test this version, but I’m running the LSIO PMS container. How can I update the container? I understand that a restart will kill that update, but I could test it still.

Thanks,

@thirty31 @FizzBEAUC I asked around and the best way to test this on docker is to remote into the container (usually via ssh) and install it by hand. for example

./plex_service.sh -d
curl -o /tmp/pms-PlexMediaServer-1.40.6.8820-a3b5dd1b4_amd64.deb https://artifacts.plex.tv/plex-media-server-experimental/1.40.6.8820-a3b5dd1b4/debian/plexmediaserver_1.40.6.8820-a3b5dd1b4_amd64.deb
dpkg -i /tmp/1.40.6.8820-a3b5dd1b4_amd64.deb 
echo PlexMediaServer-1.40.6.8820-a3b5dd1b4 > /version.txt 
./plex_service.sh -u
3 Likes