From b29731d501c9ee97bdc3248f2a20e3c0e9374ea8 Mon Sep 17 00:00:00 2001 From: Yannick RUI Date: Tue, 18 Jun 2019 11:27:37 +0200 Subject: [PATCH] Parse text track subtype into Format.roleflags. --- .../manifest/SsManifestParser.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser.java b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser.java index 66731660f5..7b7c539aee 100644 --- a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser.java +++ b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser.java @@ -586,6 +586,7 @@ public class SsManifestParser implements ParsingLoadable.Parser { } else { subType = parser.getAttributeValue(null, KEY_SUB_TYPE); } + putNormalizedAttribute(KEY_SUB_TYPE, subType); name = parser.getAttributeValue(null, KEY_NAME); url = parseRequiredString(parser, KEY_URL); maxWidth = parseInt(parser, KEY_MAX_WIDTH, Format.NO_VALUE); @@ -645,6 +646,7 @@ public class SsManifestParser implements ParsingLoadable.Parser { private static final String KEY_CHANNELS = "Channels"; private static final String KEY_FOUR_CC = "FourCC"; private static final String KEY_TYPE = "Type"; + private static final String KEY_SUB_TYPE = "Subtype"; private static final String KEY_LANGUAGE = "Language"; private static final String KEY_NAME = "Name"; private static final String KEY_MAX_WIDTH = "MaxWidth"; @@ -710,6 +712,18 @@ public class SsManifestParser implements ParsingLoadable.Parser { language); } else if (type == C.TRACK_TYPE_TEXT) { String language = (String) getNormalizedAttribute(KEY_LANGUAGE); + String subType = (String) getNormalizedAttribute(KEY_SUB_TYPE); + int roleFlags = 0; + switch (subType) { + case "CAPT": + roleFlags |= C.ROLE_FLAG_CAPTION; + break; + case "DESC": + roleFlags |= C.ROLE_FLAG_DESCRIBES_MUSIC_AND_SOUND; + break; + case "SUBT": + break; + } format = Format.createTextContainerFormat( id, @@ -719,7 +733,7 @@ public class SsManifestParser implements ParsingLoadable.Parser { /* codecs= */ null, bitrate, /* selectionFlags= */ 0, - /* roleFlags= */ 0, + /* roleFlags= */ roleFlags, language); } else { format =