Skip to content

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

Open
@Pitel

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 . 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 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.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions