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

Shaka Player is displaying only one audio channel information even if manifest has Stereo + Dolby 5.1 + Dolby Atmos #4171

Closed
subhrakdas opened this issue Apr 27, 2022 · 3 comments · Fixed by #4173 or #4009
Assignees
Labels
component: DASH The issue involves the MPEG DASH manifest format priority: P2 Smaller impact or easy workaround status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Milestone

Comments

@subhrakdas
Copy link

subhrakdas commented Apr 27, 2022

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

yes.

What version of Shaka Player are you using?

Version 2.5

Can you reproduce the issue with our latest release version?

yes, we can reproduce.

Can you reproduce the issue with the latest code from main?

yes, we can reproduce.

Are you using the demo app or your own custom app?

we are using our custom app.

If custom app, can you reproduce the issue using our demo app?

yes, reproducible on demo application as well.

What browser and OS are you using?

LG WebOS / Chromium Browser

For embedded devices (smart TVs, etc.), what model and firmware version are you using?

Model Number: LG Smart TV 32LM563BPTC
Firmware Version: 4.9.1-54309 (goldilocks2-gyeryongsan)

What are the manifest and license server URIs?

Manifest URL: https://d1k754bfxym1vm.cloudfront.net/VOD/india_art_demo/stream.mpd

What configuration are you using? What is the output of player.getConfiguration()?

{
   "drm":{
      "retryParameters":{
         "maxAttempts":2,
         "baseDelay":1000,
         "backoffFactor":2,
         "fuzzFactor":0.5,
         "timeout":0
      },
      "delayLicenseRequestUntilPlayed":false,
      "fairPlayTransform":true
   },
   "manifest":{
      "retryParameters":{
         "maxAttempts":8,
         "baseDelay":1000,
         "backoffFactor":2,
         "fuzzFactor":0.5,
         "timeout":0
      },
      "availabilityWindowOverride":null,
      "customFilter":{
         "filterEnable":true
      },
      "disableAudio":false,
      "disableVideo":false,
      "disableText":false,
      "forcePartialSegmentRequest":false,
      "dash":{
         "clockSyncUri":"https://time.akamai.com/",
         "ignoreDrmInfo":false,
         "xlinkFailGracefully":false,
         "defaultPresentationDelay":10,
         "ignoreMinBufferTime":true,
         "ignoreEssentialProperty":true,
         "autoCorrectDrift":true,
         "ignoreSuggestedPresentationDelay":false,
         "ignoreEmptyAdaptationSet":false
      },
      "hls":{
         "ignoreTextStreamFailures":false
      }
   },
   "streaming":{
      "retryParameters":{
         "maxAttempts":8,
         "baseDelay":1000,
         "backoffFactor":2,
         "fuzzFactor":0.5,
         "timeout":0
      },
      "rebufferingGoal":3,
      "bufferingGoal":30,
      "bufferBehind":15,
      "ignoreTextStreamFailures":true,
      "alwaysStreamText":false,
      "startAtSegmentBoundary":false,
      "smallGapLimit":1,
      "jumpLargeGaps":true,
      "durationBackoff":1,
      "forceTransmuxTS":false,
      "sourceBufferOffset":0,
      "separateAVBuffers":true,
      "safeSeekOffset":5,
      "stallEnabled":true,
      "stallThreshold":3,
      "stallBackoffFactor":1.25,
      "stallBackoffCount":3,
      "bufferChangeWindow":5,
      "preferNativeHls":false
   },
   "errorRecovery":{
      "recoverableErrorCodes":[
         
      ],
      "blackListCooldownPeriod":30,
      "permanentBlacklistThreshold":null
   },
   "offline":{
      "usePersistentLicense":true
   },
   "preferredAudioLanguage":"",
   "preferredTextLanguage":"",
   "preferredVariantRole":"",
   "preferredTextRole":"",
   "preferredAudioChannelCount":6,
   "restrictions":{
      "minWidth":0,
      "maxWidth":null,
      "minHeight":0,
      "maxHeight":null,
      "minPixels":0,
      "maxPixels":null,
      "minFrameRate":0,
      "maxFrameRate":null,
      "minBandwidth":0,
      "maxBandwidth":null
   },
   "playRangeStart":0,
   "playRangeEnd":null
}

What did you do?

We are trying to play Dolby 5.1 and Dolby Atmos content on supported TV devices after detecting device capabilities.

What did you expect to happen?

Shaka Player should list Dolby 5.1 and Dolby Atmos both audios and based of user's input switching between both should be possible, since both Dolby 5.1 and Dolby Atmos uses same number of channel counts.

What actually happened?

Shaka is only displaying one audio channel which is Dolby 5.1 even manifest has Dolby Atmos. We understood that Shaka uses preferredAudioChannelCount to filter out codecs but since 5.1 and Atmos both has similar number of channels we are expecting
both audio channels to be present there.

@subhrakdas subhrakdas added the type: bug Something isn't working correctly label Apr 27, 2022
@github-actions github-actions bot added this to the v3.3 milestone Apr 27, 2022
@avelad
Copy link
Collaborator

avelad commented Apr 28, 2022

It seems that the DASH parser does the following: https://github.com/shaka-project/shaka-player/blob/main/lib/dash/dash_parser.js#L1220-L1234

In you manifest you have:

  • Stereo with codecs="mp4a.40.2"
  • Dolby with codecs="ec-3"
  • Doby Atmos with codecs="ec-3" and <SupplementalProperty schemeIdUri="tag:dolby.com,2018:dash:EC3_ExtensionType:2018" value="JOC"/>

Until this is implemented codecs cannot be changed during the playback: #1528

Besides, a conversion is made for those with JOC and the audio/ec-3 format is changed to audio/eac3-joc

Is this wrong for you?

@subhrakdas
Copy link
Author

I understood that during playback Codec switching is not possible, but is there any preferences we can set for Atmos, when 5.1 and Atmos both are present in a single manifest, as currently 5.1 only being played.

@avelad
Copy link
Collaborator

avelad commented Apr 29, 2022

According to https://developerkb.dolby.com/support/solutions/articles/16000067758-what-is-dolby-digital-plus-joc-joint-object-coding-

I think that what is being done in the parser is wrong, besides that in HLS it is not done. I will send a PR throughout the day to correct this.

Thank you!

@avelad avelad added component: DASH The issue involves the MPEG DASH manifest format priority: P2 Smaller impact or easy workaround labels Apr 29, 2022
@avelad avelad self-assigned this Apr 29, 2022
joeyparrish pushed a commit that referenced this issue Apr 29, 2022
According to https://developerkb.dolby.com/support/solutions/articles/16000067758-what-is-dolby-digital-plus-joc-joint-object-coding- Dolby Atmos (JOC):

> Joint Object Coding describes the process by which Dolby Digital Plus with Atmos decoders, receiving a legacy 5.1 mix and sideband metadata, are able to reconstruct the original Atmos mix.

So there is no need to deal with a separate mimetype, it can be decoded with Dolby Digital+ (better for retrocompatibility).

Closes #4171
@avelad avelad modified the milestones: v3.3, v4.0 May 4, 2022
joeyparrish pushed a commit that referenced this issue May 17, 2022
According to https://developerkb.dolby.com/support/solutions/articles/16000067758-what-is-dolby-digital-plus-joc-joint-object-coding- Dolby Atmos (JOC):

> Joint Object Coding describes the process by which Dolby Digital Plus with Atmos decoders, receiving a legacy 5.1 mix and sideband metadata, are able to reconstruct the original Atmos mix.

So there is no need to deal with a separate mimetype, it can be decoded with Dolby Digital+ (better for retrocompatibility).

Closes #4171
joeyparrish pushed a commit that referenced this issue May 17, 2022
According to https://developerkb.dolby.com/support/solutions/articles/16000067758-what-is-dolby-digital-plus-joc-joint-object-coding- Dolby Atmos (JOC):

> Joint Object Coding describes the process by which Dolby Digital Plus with Atmos decoders, receiving a legacy 5.1 mix and sideband metadata, are able to reconstruct the original Atmos mix.

So there is no need to deal with a separate mimetype, it can be decoded with Dolby Digital+ (better for retrocompatibility).

Closes #4171
@github-actions github-actions bot added the status: archived Archived and locked; will not be updated label Jun 28, 2022
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 28, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
component: DASH The issue involves the MPEG DASH manifest format priority: P2 Smaller impact or easy workaround status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Projects
None yet
2 participants