cta-wave / Test-Content-Generation

Provides all information and scripts how the CTA Wave Test Content is generated
BSD 3-Clause "New" or "Revised" License
4 stars 6 forks source link

1920x1080p50/p60 is outside the cmfhd / cfhd media profile #43

Closed jpiesing closed 2 years ago

jpiesing commented 3 years ago

The cmfhd / chfd media profile does not include 1920x1080p50/p60 but this is included as one of the CMAF tracks in the Switching Set for test 8.5 Switching Set Playback and 8.11.

image

Some options include;

Other options may exist.

We should continue testing 1920x1080p50/p60 so the first of these options should be discarded.

jpiesing commented 3 years ago

@louaybassbouss Do you know if there's a viable real-world mechanism (excl. try it & see) to identify if a device supports AVC profile 4.0 but not higher & hence not 1920x1080p50/p60?

louaybassbouss commented 3 years ago

@louaybassbouss Do you know if there's a viable real-world mechanism (excl. try it & see) to identify if a device supports AVC profile 4.0 but not higher & hence not 1920x1080p50/p60?

@jpiesing you can use MediaSource.isTypeSupported(mimeType) to check if specific codec+profile is supported or not (Return value: 'A boolean value which is true if the browser feels that it can probably play media of the specified type...' ). You need to try all codec+profile combinations higher than AVC 4.0 to check if they are supported or not. isTypeSupported() does not include resolution and framerate. You can also use Media Capabilities API -> VideoConfiguration which allows you to consider other capabilities like width, height, framerate, ...

jpiesing commented 3 years ago

@jpiesing you can use MediaSource.isTypeSupported(mimeType) to check if specific codec+profile is supported or not (Return value: 'A boolean value which is true if the browser feels that it can probably play media of the specified type...' ). You need to try all codec+profile combinations higher than AVC 4.0 to check if they are supported or not. isTypeSupported() does not include resolution and framerate. You can also use Media Capabilities API -> VideoConfiguration which allows you to consider other capabilities like width, height, framerate, ...

I thought isTypeSupported couldn't be relied on for accurate information, particularly not for profiles within a codec. Am I confusing it with canPlayType?

louaybassbouss commented 3 years ago

@jpiesing you can use MediaSource.isTypeSupported(mimeType) to check if specific codec+profile is supported or not (Return value: 'A boolean value which is true if the browser feels that it can probably play media of the specified type...' ). You need to try all codec+profile combinations higher than AVC 4.0 to check if they are supported or not. isTypeSupported() does not include resolution and framerate. You can also use Media Capabilities API -> VideoConfiguration which allows you to consider other capabilities like width, height, framerate, ...

I thought isTypeSupported couldn't be relied on for accurate information, particularly not for profiles within a codec. Am I confusing it with canPlayType?

Yes this is correct both isTypeSupported and canPlayType do not give a safe answer (this is the reason I copied the sentence from the spec 'A boolean value which is true if the browser feels that it can probably play media of the specified type...'). Since we use MSE API to append media content to the buffer, we prefer to use MSE.isTypeSupported and not HTMLMediaElement.canPlayType. Media Capabilities API should actually solve these issues but we saw some inconstancies with the API in some browsers. FYI dash.js uses MSE.isTypeSupported. @dsilhavy feel free to comment if I missed something.

jpiesing commented 3 years ago

@louaybassbouss @dsilhavy Would it be reasonable to modify the test runner to not use the 1920x1080p50/p60 stream (aka stream 20) if MSE.isTypeSupported would return false for AVC 4.2?

jpiesing commented 2 years ago

Closing as 'chdf' was approved for inclusion in the 2022 WAVE CSTF specification, CTA5001-E.