Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extract HDR metadata from DASH manifests #2813

Closed
joeyparrish opened this issue Aug 24, 2020 · 6 comments · Fixed by #3226
Closed

Extract HDR metadata from DASH manifests #2813

joeyparrish opened this issue Aug 24, 2020 · 6 comments · Fixed by #3226
Labels
status: archived Archived and locked; will not be updated type: enhancement New feature or request
Milestone

Comments

@joeyparrish
Copy link
Member

Have you read the FAQ and checked for duplicate open issues?
Yes

Is your feature request related to a problem? Please describe.

In our isTypeSupported polyfill for Cast, we use the HEVC profile ("hevc1.2") as an indication of the HDR transfer function, but it seems that this is not always accurate. This profile of HEVC is 10-bit color, but could be non-HDR 10-bit color, according to an internal issue report.

Describe the solution you'd like

The polyfill should stop assuming that 10-bit color HEVC means HDR, and remove the extra eotf="smpte2084" parameter. Instead, the manifest parser should extract HDR profile information from the DASH manifest and pass that info along through the Stream object.

Describe alternatives you've considered

Not aware of any off-hand.

Additional context

DASH-IF docs state that conformant HDR streams for which we should use eotf="smpte2084" would be in an <AdaptationSet> with the profiles parameter set to "http://dashif.org/guidelines/dash-if-uhd#hevc-hdr-pq10".

See DASH IOP v4.3, section 10.3 "DASH-IF IOP HEVC HDR PQ10" and section 10.3.3, "Mapping to DASH".

@joeyparrish joeyparrish added the type: enhancement New feature or request label Aug 24, 2020
@shaka-bot shaka-bot added this to the Backlog milestone Aug 24, 2020
shaka-bot pushed a commit that referenced this issue Aug 24, 2020
Instead of assuming that hevc1.2 indicates HDR, we should get HDR
profile information from DASH manifests.  This removes the assumption
in the Cast isTypeSupported polyfill.

Issue #2813

Change-Id: Ieb40a06c78c99b6975082eaffb23d5e09a5f2464
joeyparrish added a commit that referenced this issue Aug 25, 2020
Instead of assuming that hevc1.2 indicates HDR, we should get HDR
profile information from DASH manifests.  This removes the assumption
in the Cast isTypeSupported polyfill.

Issue #2813

Backported to v2.5.x

Change-Id: Ieb40a06c78c99b6975082eaffb23d5e09a5f2464
joeyparrish added a commit that referenced this issue Aug 25, 2020
Instead of assuming that hevc1.2 indicates HDR, we should get HDR
profile information from DASH manifests.  This removes the assumption
in the Cast isTypeSupported polyfill.

Issue #2813

Change-Id: Ieb40a06c78c99b6975082eaffb23d5e09a5f2464
@avelad
Copy link
Collaborator

avelad commented Jan 27, 2021

I have created the PR for HLS #3116, but the implementation of DASH is not very clear to me.

@joeyparrish , according to the documentation, the profile is global, but it only applies to certain codecs ("hvc1.2.4.L153.B0" or "hev1.2.4.L153.B0"), but I don't think this is entirely correct, since VP9 profile 2 supports HDR, and AV1 also supports HDR. Do you have any idea how this should be implemented?

shaka-bot pushed a commit that referenced this issue Feb 3, 2021
1. Added hdr as a property in stream when constructing.
Fixes build failure from commit
7137286 .
PR #3116
Issue #2813

2. Fixed the test error from commit
d3640d1 .
PR #3044
Issue #3029

3. Fixed the new line with no other arguments from commit
0845843 .
PR #3060

Change-Id: I5833e49c1a95172742c4ec820960c9c5a7bf0cca
@dsparacio
Copy link
Contributor

We are interested in this enhancements as well. Second the work on this

according to the documentation, the profile is global, but it only applies to certain codecs ("hvc1.2.4.L153.B0" or "hev1.2.4.L153.B0"), but I don't think this is entirely correct, since VP9 profile 2 supports HDR, and AV1 also supports HDR. Do you have any idea how this should be implemented?

@avelad have you asked the community on slack to help clarify this by chance? I can look into it or bring it up at the next IF meeting I attend?

@avelad
Copy link
Collaborator

avelad commented Mar 12, 2021

If you can ask, I appreciate it. As soon as I know what to implement, I will send a PR. Can you send me a link to the Slack community channel? Is it the official channel of the ShakaPlayer team?

@dsparacio
Copy link
Contributor

@avelad my bad I read that as you were confused on something from DASH spec, but you are saying Shaka Documentation. So no this is the best place to ask the Shaka team.

@joeyparrish
Copy link
Member Author

@joeyparrish , according to the documentation, the profile is global, but it only applies to certain codecs ("hvc1.2.4.L153.B0" or "hev1.2.4.L153.B0"), but I don't think this is entirely correct, since VP9 profile 2 supports HDR, and AV1 also supports HDR.

What documentation are you referring to? DASH documentation, or codec string specs, or our docs?

Do you have any idea how this should be implemented?

No, I don't, offhand. Maybe I've misunderstood the issue, or maybe it's just outside of my area of experience. Can you explain the problem again or differently?

@avelad
Copy link
Collaborator

avelad commented Mar 12, 2021

@joeyparrish , according to the documentation, the profile is global, but it only applies to certain codecs ("hvc1.2.4.L153.B0" or "hev1.2.4.L153.B0"), but I don't think this is entirely correct, since VP9 profile 2 supports HDR, and AV1 also supports HDR.

What documentation are you referring to? DASH documentation, or codec string specs, or our docs?

https://dashif.org/docs/DASH-IF-IOP-v4.3.pdf --> 10.3. DASH-IF IOP HEVC HDR PQ10 and 11.3.3. DASH-IF VP9-HDR

Do you have any idea how this should be implemented?

No, I don't, offhand. Maybe I've misunderstood the issue, or maybe it's just outside of my area of experience. Can you explain the problem again or differently?

In HLS in each video track it is identified if it is HDR or not, but in DASH it seems that it is at the manifest level, so I want to be sure of this and that I have understood the same as you.

@joeyparrish joeyparrish modified the milestones: Backlog, v3.1 Apr 12, 2021
@shaka-bot shaka-bot added the status: archived Archived and locked; will not be updated label May 16, 2021
@shaka-project shaka-project locked and limited conversation to collaborators May 16, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
status: archived Archived and locked; will not be updated type: enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants