Skip to content

setPreferredAudioLanguage does not work when tracks are grouped together with adaptation-set-switching #2222

Description

@Pitel

Version

Media3 1.4.1

More version details

No response

Devices that reproduce the issue

Pixel 6 running Android 16 beta

Devices that do not reproduce the issue

No response

Reproducible in the demo app?

Not tested

Reproduction steps

Load DASH manifest with multiple audio AdaptationSets linked together using <SupplementalProperty schemeIdUri="urn:mpeg:dash:adaptation-set-switching:2016" value="1,2,3"/>. Observe using EventLogger that they're in the same group:

10:12:27.634 Even...ger  D  tracks [eventTime=0.54, mediaPos=4040.00, window=0, period=0
10:12:27.634 Even...ger  D    group [
10:12:27.634 Even...ger  D      [X] Track:0, id=SFA_Coco_15209_org_V1_0100, mimeType=video/avc, container=video/mp4, bitrate=99000, codecs=avc1.4d400b, drm=[playready,widevine,cenc], res=320x180, fps=12.5, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D      [X] Track:1, id=SFA_Coco_15209_org_V1_0200, mimeType=video/avc, container=video/mp4, bitrate=200000, codecs=avc1.4d400c, drm=[playready,widevine,cenc], res=320x180, fps=25.0, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D      [X] Track:2, id=SFA_Coco_15209_org_V1_0300, mimeType=video/avc, container=video/mp4, bitrate=298000, codecs=avc1.4d400c, drm=[playready,widevine,cenc], res=320x180, fps=25.0, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D      [X] Track:3, id=SFA_Coco_15209_org_V1_0500, mimeType=video/avc, container=video/mp4, bitrate=496000, codecs=avc1.4d400d, drm=[playready,widevine,cenc], res=384x216, fps=25.0, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D      [X] Track:4, id=SFA_Coco_15209_org_V1_0800, mimeType=video/avc, container=video/mp4, bitrate=792000, codecs=avc1.4d4015, drm=[playready,widevine,cenc], res=512x288, fps=25.0, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D      [X] Track:5, id=SFA_Coco_15209_org_V1_1200, mimeType=video/avc, container=video/mp4, bitrate=1198000, codecs=avc1.4d401e, drm=[playready,widevine,cenc], res=704x396, fps=25.0, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D      [X] Track:6, id=SFA_Coco_15209_org_V1_1600, mimeType=video/avc, container=video/mp4, bitrate=1596000, codecs=avc1.4d401e, drm=[playready,widevine,cenc], res=852x480, fps=25.0, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D      [X] Track:7, id=SFA_Coco_15209_org_V1_2200, mimeType=video/avc, container=video/mp4, bitrate=2194000, codecs=avc1.4d401f, drm=[playready,widevine,cenc], res=1024x576, fps=25.0, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D      [X] Track:8, id=SFA_Coco_15209_org_V1_4000, mimeType=video/avc, container=video/mp4, bitrate=3987000, codecs=avc1.4d401f, drm=[playready,widevine,cenc], res=1280x720, fps=25.0, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D      [X] Track:9, id=SFA_Coco_15209_org_V1_6000, mimeType=video/avc, container=video/mp4, bitrate=5985000, codecs=avc1.4d4028, drm=[playready,widevine,cenc], res=1920x1080, fps=25.0, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D    ]
10:12:27.634 Even...ger  D    group [
10:12:27.634 Even...ger  D      [X] Track:0, id=SFA_Coco_15209_dan_A1_048_1, mimeType=audio/mp4a-latm, container=audio/mp4, bitrate=54000, codecs=mp4a.40.2, drm=[playready,widevine,cenc], channels=2, sample_rate=48000, language=da, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D      [X] Track:1, id=SFA_Coco_15209_dan_A1_128_1, mimeType=audio/mp4a-latm, container=audio/mp4, bitrate=134000, codecs=mp4a.40.2, drm=[playready,widevine,cenc], channels=2, sample_rate=48000, language=da, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D      [X] Track:2, id=SFA_Coco_15209_dan_A1_192_1, mimeType=audio/mp4a-latm, container=audio/mp4, bitrate=197000, codecs=mp4a.40.2, drm=[playready,widevine,cenc], channels=2, sample_rate=48000, language=da, roleFlags=[main], supported=YES
10:12:27.634 Even...ger  D      [X] Track:3, id=SFA_Coco_15209_fin_A1_048_1, mimeType=audio/mp4a-latm, container=audio/mp4, bitrate=54000, codecs=mp4a.40.2, drm=[playready,widevine,cenc], channels=2, sample_rate=48000, language=fi, roleFlags=[alternate], supported=YES
10:12:27.634 Even...ger  D      [X] Track:4, id=SFA_Coco_15209_fin_A1_128_1, mimeType=audio/mp4a-latm, container=audio/mp4, bitrate=134000, codecs=mp4a.40.2, drm=[playready,widevine,cenc], channels=2, sample_rate=48000, language=fi, roleFlags=[alternate], supported=YES
10:12:27.634 Even...ger  D      [X] Track:5, id=SFA_Coco_15209_fin_A1_192_1, mimeType=audio/mp4a-latm, container=audio/mp4, bitrate=197000, codecs=mp4a.40.2, drm=[playready,widevine,cenc], channels=2, sample_rate=48000, language=fi, roleFlags=[alternate], supported=YES
10:12:27.635 Even...ger  D      [X] Track:6, id=SFA_Coco_15209_nor_A1_048_1, mimeType=audio/mp4a-latm, container=audio/mp4, bitrate=54000, codecs=mp4a.40.2, drm=[playready,widevine,cenc], channels=2, sample_rate=48000, language=no, roleFlags=[alternate], supported=YES
10:12:27.635 Even...ger  D      [X] Track:7, id=SFA_Coco_15209_nor_A1_128_1, mimeType=audio/mp4a-latm, container=audio/mp4, bitrate=134000, codecs=mp4a.40.2, drm=[playready,widevine,cenc], channels=2, sample_rate=48000, language=no, roleFlags=[alternate], supported=YES
10:12:27.635 Even...ger  D      [X] Track:8, id=SFA_Coco_15209_nor_A1_192_1, mimeType=audio/mp4a-latm, container=audio/mp4, bitrate=197000, codecs=mp4a.40.2, drm=[playready,widevine,cenc], channels=2, sample_rate=48000, language=no, roleFlags=[alternate], supported=YES
10:12:27.635 Even...ger  D      [X] Track:9, id=SFA_Coco_15209_swe_A1_048_1, mimeType=audio/mp4a-latm, container=audio/mp4, bitrate=54000, codecs=mp4a.40.2, drm=[playready,widevine,cenc], channels=2, sample_rate=48000, language=sv, roleFlags=[alternate], supported=YES
10:12:27.635 Even...ger  D      [X] Track:10, id=SFA_Coco_15209_swe_A1_128_1, mimeType=audio/mp4a-latm, container=audio/mp4, bitrate=134000, codecs=mp4a.40.2, drm=[playready,widevine,cenc], channels=2, sample_rate=48000, language=sv, roleFlags=[alternate], supported=YES
10:12:27.635 Even...ger  D      [X] Track:11, id=SFA_Coco_15209_swe_A1_192_1, mimeType=audio/mp4a-latm, container=audio/mp4, bitrate=197000, codecs=mp4a.40.2, drm=[playready,widevine,cenc], channels=2, sample_rate=48000, language=sv, roleFlags=[alternate], supported=YES
10:12:27.635 Even...ger  D    ]
10:12:27.635 Even...ger  D    group [
10:12:27.635 Even...ger  D      [ ] Track:0, id=46997_DA_1, mimeType=application/x-media3-cues, container=application/mp4, bitrate=2000, codecs=application/ttml+xml stpp, language=da-dk, roleFlags=[subtitle], supported=YES
10:12:27.635 Even...ger  D    ]
10:12:27.635 Even...ger  D    group [
10:12:27.635 Even...ger  D      [ ] Track:0, id=46997_FI_1, mimeType=application/x-media3-cues, container=application/mp4, bitrate=2000, codecs=application/ttml+xml stpp, language=fi-fi, roleFlags=[subtitle], supported=YES
10:12:27.635 Even...ger  D    ]
10:12:27.635 Even...ger  D    group [
10:12:27.635 Even...ger  D      [ ] Track:0, id=46997_NO_1, mimeType=application/x-media3-cues, container=application/mp4, bitrate=2000, codecs=application/ttml+xml stpp, language=no-nob-no, roleFlags=[subtitle], supported=YES
10:12:27.635 Even...ger  D    ]
10:12:27.635 Even...ger  D    group [
10:12:27.635 Even...ger  D      [X] Track:0, id=46997_SV_1, mimeType=application/x-media3-cues, container=application/mp4, bitrate=2000, codecs=application/ttml+xml stpp, language=sv-se, roleFlags=[subtitle], supported=YES
10:12:27.635 Even...ger  D    ]
10:12:27.635 Even...ger  D  ]

Now try switching languages using

exo.setTrackSelectionParameters(
  exo.getTrackSelectionParameters().buildUpon()
    .setPreferredAudioLanguage("fi")
    .build()
);

Expected result

Audio language will change.

Actual result

Still only the first (Danish) audio language is being played.

But if I use a custom DashManifestParser which ignores those adaptation-set-switching propperties, it splits the tracks in groups, and language switching works. But is not seamless, whis is the point of that adaptation-set-switching propperty.

Media

Not sure if I can share it, but you can use any publicly available MPD manifest with multiple audio adaptation sets with different languages, just add the <SupplementalProperty schemeIdUri="urn:mpeg:dash:adaptation-set-switching:2016" value="1,2,3"/> to all of them to link them together (the value should always contain ids of the other adaptation sets).

Bug Report

  • You will email the zip file produced by adb bugreport to [email protected] after filing this issue.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions