Dolby Vision Profile, VS10, plus other info on skins

Continuing the discussion from Dynamic conversion of HDR10+ SEI to DV P8 NAL:

Splitting out so the original thread can focus on the HDR10+ to DV topic.

Been updating the inbuilt Estuary skin based on frodo19’s changes and adding a couple of things I wanted around video colour details and the AML HW fps, will also share later in the week/weekend.

Would it be possible to expose the same in Estuary as Nestya did in Arctic Fuse ?
Detection of native and converted SDR/HDR/Dolby Vision content on a single line, with an indication of the Dolby Vision Profile

image

I find it very useful but prefer the plain and simple Estuary :slight_smile:

Here is the code I used for someone to implement in Estuary:

Edit: Updated code with a fix for the spacing between the source and the arrow during conversion.

<control type="textbox">
                        <height>80</height>
                        <aligny>center</aligny>
                        <autoscroll>false</autoscroll>
                        <align>left</align>
                        <font>font_mini</font>
                        <textcolor>dialog_fg_90</textcolor>
                        <label>[B]High Dynamic Range[/B][CR]$VAR[HDRSourceVar]$VAR[DVProfileVar]$VAR[DVELVar]$VAR[VideoConvVar]</label>
                        <visible>!VideoPlayer.Content(livetv)</visible>
                    </control>
<variable name="DVProfileVar">
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(video.dovi.codec.string),8)">-> Dolby Vision Profile 8</value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(video.dovi.codec.string),7)">-> Dolby Vision Profile 7</value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(video.dovi.codec.string),5)">-> Dolby Vision Profile 5</value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(video.dovi.codec.string),4)">-> Dolby Vision Profile 4</value>
<value condition="String.Contains(Player.Process(video.dovi.codec.string),7)">Profile 7</value>
<value condition="String.Contains(Player.Process(video.dovi.codec.string),5)">Profile 5 </value>
<value condition="String.Contains(Player.Process(video.dovi.codec.string),4)">Profile 4 </value>
<value condition="String.Contains(Player.Process(video.dovi.codec.string),8)">Profile 8 </value>
<value/>
<value condition="String.Contains(Player.Process(video.dovi.codec.string),)">$LOCALIZE[10005]</value>
</variable>
<variable name="HDRSourceVar">
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(video.dovi.codec.string),8)">HDR10+ </value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(video.dovi.codec.string),7)">HDR10+ </value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(video.dovi.codec.string),5)">HDR10+ </value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(video.dovi.codec.string),4)">HDR10+ </value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),dolby vision)">Dolby Vision </value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10)">HDR10 </value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Sdr)">SDR </value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),)">$LOCALIZE[13205]</value>
</variable>
<variable name="DVELVar">
<value condition="String.Contains(Player.Process(video.dovi.el.type),minimum)"> MEL </value>
<value condition="String.Contains(Player.Process(video.dovi.el.type),full)"> FEL </value>
<value condition="String.Contains(Player.Process(video.dovi.el.type),none)"/>
</variable>
<variable name="VideoConvVar">
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(video.dovi.codec.string),8)"/>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(video.dovi.codec.string),7)"/>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(video.dovi.codec.string),5)"/>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(video.dovi.codec.string),4)"/>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Sdr) + String.Contains(Player.Process(video.dovi.codec.string),8)"/>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Sdr) + String.Contains(Player.Process(video.dovi.codec.string),7)"/>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Sdr) + String.Contains(Player.Process(video.dovi.codec.string),5)"/>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Sdr) + String.Contains(Player.Process(video.dovi.codec.string),4)"/>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(amlogic.vs10.mode),dolby vision">-> Dolby Vision</value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Hdr10) + String.Contains(Player.Process(amlogic.vs10.mode),sdr">-> SDR</value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Sdr) + String.Contains(Player.Process(amlogic.vs10.mode),hdr10">-> HDR10</value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),Sdr) + String.Contains(Player.Process(amlogic.vs10.mode),dolby vision">-> Dolby Vision</value>
<value condition="String.Contains(Player.Process(video.source.hdr.type),dolby vision) + String.Contains(Player.Process(amlogic.vs10.mode),sdr">-> SDR</value>
<value/>

Thank you for sharing.

Arctic Fuse Hotfix available here → https://discourse.coreelec.org/t/dynamic-conversion-of-hdr10-sei-to-dv-p8-nal/51770/421

Just FYI - I needed to rebuild my Ubuntu VM used for building CE due to issues - part way through and found out gnu.org is down (primary DC issue) so cannot get a build at present so likely will have to hold off releasing this week until that comes back and can find time again.

No problem, I’m a patient client :grinning:

How do I activate the player process in your modified arctic skin?

Here

AF Player Info

You can open the Player Process Info with a remote shortcut using the Keymap Editor addon.

To create a shortcut:

Open Keymap Editor → Edit → Global → Other → Player Process Info → Edit key → Press the key you want to set as a shortcut → Return to the main page → Save.

… I forget some thing…

Thank you for your feedback.

This code is designed for screens that do not have native HDR10+ compatibility.

Np.
Deleted now. :slightly_smiling_face:

It lacks reliable detection of HDR10+ (on compatible screens) as well as Dolby Atmos and DTS:X detection by Kodi.

Dolby Atmos and DTS:X added to the Arctic Fuse Skin → Dynamic conversion of HDR10+ SEI to DV P8 NAL - #421 by Nestya

regarding 5.0 skin: just in case, here’s the tweaked version of DialogProcessInfo with CPU usage fully visible (build/version label is dropped). I’ve also fixed subtitle language label:
when file didn’t have subs at all, the subtitle label was not visible, but value was present and showed ‘Disabled’.
I wanted to also add total CPU usage (single value) where the ‘per core’ value was, but couldn’t find the appropriate variable for that…
DialogPlayerProcessInfo.xml (24.4 KB)

nice, an interesting one). Since I planned to experiment with the layout anyway, I think I’ll stick stick to my version (will just tweak after you release the updates) as it’s a bit easier to read for me and I also don’t need the build info (it’s truncated anyway). You can just take a look at the hotfix for the subs language value label. Thx again for the efforts!

Arctic Zephyr - Reloaded updated to 5.1

Link

Nice work!

You should hide the number of channels when Dolby Atmos and DTS:X is active because they work differently from older methods; it’s an adaptive system.

I changed the name of DD+ on my skin (without publishing it :sweat_smile:).

Dolby Digital+ → Dolby Digital Plus

That’s its real name.

Hi, here is the Confluence skin , I get from the kodi repo.
Modded for the @cpm A3 build
Added some skin setting , reorganized the playprocessinfo.
See in the picture.
Save to your hdd, enjoy. :slight_smile:

Note : the skin will not auto update the original. :slight_smile:

Yes i know :smiley:
As example you can see it has 11 dynamic objects.
When you look a little above you can see it has 8 channels. So it’s all good. I don’t find a way to show the dynamic objects…

Look at this:
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 : 2 h 44 min
Bit rate mode : Variable
Bit rate : 5 099 kb/s
Maximum bit rate : 8 313 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 : 5.86 GiB (7%)
Title : Deutsch Dolby TrueHD Atmos 7.1 (mixed by Ehrenfried)
Language : German
Default : No
Forced : No
Number of dynamic objects : 11
Bed channel count : 1 channel
Bed channel configuration : LFE

Dolby Digital+, DD+, Dolby Digital Plus and all other are only cosmetic for me.
Everyone has their own idea of what is right, which is why I called it Dolby Digital+. One person says it should be DD+ and the other says Dolby Digital Plus. I just can’t find a common denominator for this.
But you’re right, the official name is Dolby Digital Plus. :grinning: