Jump to content

HDR / Dolby Vision


rbjtech
Go to solution Solved by softworkz,

Recommended Posts

rbjtech

So I was disappointed to see that despite the latest ffmpeg detection the full Dolby Vision profile details - Emby just displays 'Dolby Vision' in the clients.

However, upon investigating the database directly - I see that emby is infact collecting the FULL DV profile data - and writing it to the ExtendedVideoType / ExtendedVideoSubType fields as per below :-

  • ExtendedVideoType = 100 (HDR10)

ExtendedVideoSubType = 100 (HDR10 and HDR10+) - Presumably as ffmpeg cannot yet determine HDR10+ profiles ?

 

  • ExtendedVideoType = 130 (Dolby Vision)

ExtendedVideoSubType = 1350 (DV5), ExtendedVideoSubType = 1736 (DV7), ExtendedVideoSubType = 1381 (DV8)

 

  • ExtendedVideoType = 120 (HLG)

 

An API query returns the SubType as 'None' but in the database it has a sub-type (of 1381, so should return DV8)..

          "ExtendedVideoType": "DolbyVision",
          "ExtendedVideoSubtype": "None",

 Is this a conscious decision to not include this - and if so, may I ask if this is planned on a future update ?

Thanks,

@softworkzFYI

 

  • Like 1
Link to comment
Share on other sites

Posted (edited)
51 minutes ago, rbjtech said:
  • ExtendedVideoType = 100 (HDR10)

ExtendedVideoSubType = 100 (HDR10 and HDR10+) - Presumably as ffmpeg cannot yet determine HDR10+ profiles ?

Yes and no: Yes, we are setting them all to 100 currently. No, ffprobe is in fact able to output HDR10+ side data.

The problem here is that HDR10+ cannot be detected from codec header information. It is required to sample video frames and look for that side data. This doesn't go well together with the regular ffprobe detection procedure, so we'd need to perform a second ffprobe run.

Unfortunately, library scanning performance is kind of a holy cow....that's the current state.

PS ExtendedVideoType.Hdr10Plus exists as well.

 

 

 

Edited by softworkz
  • Thanks 1
Link to comment
Share on other sites

52 minutes ago, rbjtech said:

An API query returns the SubType as 'None' but in the database it has a sub-type (of 1381, so should return DV8)..

          "ExtendedVideoType": "DolbyVision",
          "ExtendedVideoSubtype": "None",

 Is this a conscious decision to not include this - and if so, may I ask if this is planned on a future update ?

There's no intention to hide anything. Which API are you referring to?

Link to comment
Share on other sites

rbjtech
9 minutes ago, softworkz said:

There's no intention to hide anything. Which API are you referring to?

Just a standard 'ItemsService' query.

The 'data' available for the query is there (see below, Subtype=1381), but the API is returning 'None' as the ExtendedVideoSubtype - which doesn't appear to be what's in the db  ?.. 

image.thumb.png.0a05bca19a1f483d534d8e3cba48b47c.png

image.png.651335200cb6807777f3b2f2182b8920.png

 

Link to comment
Share on other sites

Can you try to re-probe again? The value should be 13081.

It could be that in a very early version it was 1381 and the value comes from that time...

Link to comment
Share on other sites

rbjtech
Posted (edited)

Same I'm afraid - I did a item Refresh (probe log below), closed Swagger and re-tried.  I did a direct curl as well - same result.

image.png.7bed0cefb9e7242568bc4fe51fc1dfcd.png

 

image.thumb.png.8c6a158450e25fb1c03374dac0cb0422.png

let me just check the db directly ...

Edited by rbjtech
  • Thanks 1
Link to comment
Share on other sites

When you change a letter of the file name, it will create a new (and clean) DB entry...

Link to comment
Share on other sites

Forget about it. There's a bug...

  • Thanks 1
Link to comment
Share on other sites

rbjtech
Just now, softworkz said:

When you change a letter of the file name, it will create a new (and clean) DB entry...

ok - I can try that - 2 secs....

btw - I don't have any VideoSubTypes of 13081 - just those listed in my earlier post ..

 

 

  • Thanks 1
Link to comment
Share on other sites

rbjtech
Just now, softworkz said:

Forget about it. There's a bug...

Ah-ha, ok .. I guess that's good that it's been found .. ;)

  • Thanks 1
Link to comment
Share on other sites

  • Solution
7 minutes ago, rbjtech said:

Ah-ha, ok .. I guess that's good that it's been found .. ;)

Yup, thanks. Already fixed for the next beta!

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
rbjtech

@softworkz- Just to advise, this is now working in the latest beta.

Now we just need the ExtendedVideoSubtype included in the main client display... :)

Thanks for update ..

"MediaStreams": [ { "Codec": "hevc", "ColorTransfer": "smpte2084", "ColorPrimaries": "bt2020", "ColorSpace": "bt2020nc", "TimeBase": "1/1000", "Title": "UHD DV8 HDR10 Remux [68.9Mb/s]", "VideoRange": "Dolby Vision", "DisplayTitle": "UHD DV8 HDR10 Remux [68.9Mb/s]", "IsInterlaced": false, "BitRate": 77203433, "BitDepth": 10, "RefFrames": 1, "IsDefault": true, "IsForced": false, "Height": 2160, "Width": 3840, "AverageFrameRate": 23.976025, "RealFrameRate": 23.976025, "Profile": "Main 10", "Type": "Video", "AspectRatio": "16:9", "Index": 0, "IsExternal": false, "IsTextSubtitleStream": false, "SupportsExternalStream": false, "Protocol": "File", "PixelFormat": "yuv420p10le", "Level": 153, "IsAnamorphic": false, "ExtendedVideoType": "DolbyVision", "ExtendedVideoSubtype": "DoviProfile81", "AttachmentSize": 0

  • Like 1
Link to comment
Share on other sites

Thanks for confirming!

39 minutes ago, rbjtech said:

Now we just need the ExtendedVideoSubtype included in the main client display... :)

@Luke

Link to comment
Share on other sites

rbjtech

I'm sure you are fully aware of the profiles - but to get them in one place on this thread (and tested from real API queries) - I've taken the liberty of listing them below.

These are taken directly from the Dolby white-paper PDF - What are Dolby Vision profiles and levels?

Section - 2.1 Dolby Vision bitstream profiles

1. Dolby Vision - Profile 5

Emby Suggested Client Display : Dolby Vision

 

"ExtendedVideoSubtype": "DoviProfile50"
      "MediaStreams": [
        {
          "Codec": "hevc",
          "TimeBase": "1/1000",
          "Title": "UHD DV5 HEVC [19.1Mb/s]",
          "VideoRange": "Dolby Vision",
          "DisplayTitle": "UHD DV5 HEVC [19.1Mb/s]",
          "IsInterlaced": false,
          "BitRate": 20071812,
          "BitDepth": 10,
          "RefFrames": 1,
          "IsDefault": true,
          "IsForced": false,
          "Height": 2160,
          "Width": 3840,
          "AverageFrameRate": 24,
          "RealFrameRate": 24,
          "Profile": "Main 10",
          "Type": "Video",
          "AspectRatio": "16:9",
          "Index": 0,
          "IsExternal": false,
          "IsTextSubtitleStream": false,
          "SupportsExternalStream": false,
          "Protocol": "File",
          "PixelFormat": "yuv420p10le",
          "Level": 150,
          "IsAnamorphic": false,
          "ExtendedVideoType": "DolbyVision",
          "ExtendedVideoSubtype": "DoviProfile50",
          "AttachmentSize": 0
        },

2. Dolby Vision - Profile 7

Suggested Emby Display : Dolby Vision + HDR

"ExtendedVideoSubtype": "DoviProfile76"
          "MediaStreams": [
            {
              "Codec": "hevc",
              "Language": "eng",
              "ColorTransfer": "smpte2084",
              "ColorPrimaries": "bt2020",
              "ColorSpace": "bt2020nc",
              "TimeBase": "1/1000",
              "Title": "UHD DV7 HDR10 Remux [62.1Mb/s]",
              "VideoRange": "Dolby Vision",
              "DisplayTitle": "UHD DV7 HDR10 Remux [62.1Mb/s]",
              "DisplayLanguage": "English",
              "IsInterlaced": false,
              "BitRate": 73013323,
              "BitDepth": 10,
              "RefFrames": 1,
              "IsDefault": false,
              "IsForced": false,
              "Height": 2160,
              "Width": 3840,
              "AverageFrameRate": 23.976025,
              "RealFrameRate": 23.976025,
              "Profile": "Main 10",
              "Type": "Video",
              "AspectRatio": "16:9",
              "Index": 0,
              "IsExternal": false,
              "IsTextSubtitleStream": false,
              "SupportsExternalStream": false,
              "Protocol": "File",
              "PixelFormat": "yuv420p10le",
              "Level": 153,
              "IsAnamorphic": false,
              "ExtendedVideoType": "DolbyVision",
              "ExtendedVideoSubtype": "DoviProfile76",
              "AttachmentSize": 0
            },

 

3. Dolby Vision - Profile 8

Profile 8.1

Suggested Emby Display : Dolby Vision + HDR

"ExtendedVideoSubtype": "DoviProfile81"
"MediaStreams": [
            {
              "Codec": "hevc",
              "ColorTransfer": "smpte2084",
              "ColorPrimaries": "bt2020",
              "ColorSpace": "bt2020nc",
              "TimeBase": "1/1000",
              "Title": "UHD DV8 HDR10 Remux [73.2Mb/s]",
              "VideoRange": "Dolby Vision",
              "DisplayTitle": "UHD DV8 HDR10 Remux [73.2Mb/s]",
              "IsInterlaced": false,
              "BitRate": 79373026,
              "BitDepth": 10,
              "RefFrames": 1,
              "IsDefault": true,
              "IsForced": false,
              "Height": 2160,
              "Width": 3840,
              "AverageFrameRate": 23.976025,
              "RealFrameRate": 23.976025,
              "Profile": "Main 10",
              "Type": "Video",
              "AspectRatio": "16:9",
              "Index": 0,
              "IsExternal": false,
              "IsTextSubtitleStream": false,
              "SupportsExternalStream": false,
              "Protocol": "File",
              "PixelFormat": "yuv420p10le",
              "Level": 153,
              "IsAnamorphic": false,
              "ExtendedVideoType": "DolbyVision",
              "ExtendedVideoSubtype": "DoviProfile81",
              "AttachmentSize": 0
            },

I've never seen Profile 8.2 or 8.4 - but for completeness, they should probably be included.

Profile 8.2

Suggested Emby Display : Dolby Vision + SDR

Profile 8.4

Suggested Emby Display : Dolby Vision + HLG

--

NOTES - I've suggested just using 'HDR' as opposed to HDR10 - as the DV encode may include HDR10+ as well 

NOTES - DV5 should 'maybe' say 'Dolby Vision No HDR' or 'Dolby Vision Only' - to explicitely describe there is no HDR fallback layer.  ?

--

I hope this helps.  Thanks.

 

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...