Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
85441996
authored
Mar 05, 2019
by
Arnold Szabo
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Merge role and accessibility fields into RoleFlags
parent
58d746ec
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
135 additions
and
182 deletions
library/core/src/main/java/com/google/android/exoplayer2/C.java
library/core/src/main/java/com/google/android/exoplayer2/Format.java
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java
library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser.java
library/core/src/main/java/com/google/android/exoplayer2/C.java
View file @
85441996
...
...
@@ -977,52 +977,36 @@ public final class C {
public
static
final
int
NETWORK_TYPE_OTHER
=
8
;
/**
* Adaptation set's role
descriptor value (ISO 23009-1)
* Adaptation set's role
and accessibility descriptor value.
*/
@Documented
@Retention
(
RetentionPolicy
.
SOURCE
)
@IntDef
({
ROLE_UNSET
,
ROLE_MAIN
,
ROLE_ALTERNATE
,
ROLE_SUPPLEMENTARY
,
ROLE_COMMENTARY
,
ROLE_DUB
,
ROLE_EMERGENCY
,
ROLE_CAPTION
,
ROLE_SIGN
})
public
@interface
Role
{}
public
static
final
int
ROLE_UNSET
=
-
1
;
public
static
final
int
ROLE_MAIN
=
0
;
public
static
final
int
ROLE_ALTERNATE
=
1
;
public
static
final
int
ROLE_SUPPLEMENTARY
=
2
;
public
static
final
int
ROLE_COMMENTARY
=
3
;
public
static
final
int
ROLE_DUB
=
4
;
public
static
final
int
ROLE_EMERGENCY
=
5
;
public
static
final
int
ROLE_CAPTION
=
6
;
public
static
final
int
ROLE_SIGN
=
7
;
/**
* Adaptation set's accessibility descriptor value (ISO 23009-1)
*/
@Documented
@Retention
(
RetentionPolicy
.
SOURCE
)
@IntDef
({
ACCESSIBILITY_UNSET
,
ACCESSIBILITY_ENHANCED_AUDIO_INTELLIGIBILITY
,
ACCESSIBILITY_DESCRIPTION
,
ACCESSIBILITY_CAPTION
,
ACCESSIBILITY_SIGN
@IntDef
(
flag
=
true
,
value
=
{
ROLE_FLAGS_MAIN
,
ROLE_FLAGS_ALTERNATE
,
ROLE_FLAGS_SUPPLEMENTARY
,
ROLE_FLAGS_COMMENTARY
,
ROLE_FLAGS_DUB
,
ROLE_FLAGS_EMERGENCY
,
ROLE_FLAGS_CAPTION
,
ROLE_FLAGS_SIGN
,
ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY
,
ROLE_FLAGS_DESCRIPTION
})
public
@interface
Accessibility
{}
public
static
final
int
ACCESSIBILITY_UNSET
=
-
1
;
public
static
final
int
ACCESSIBILITY_ENHANCED_AUDIO_INTELLIGIBILITY
=
1
;
public
static
final
int
ACCESSIBILITY_DESCRIPTION
=
2
;
public
static
final
int
ACCESSIBILITY_CAPTION
=
3
;
public
static
final
int
ACCESSIBILITY_SIGN
=
4
;
public
@interface
RoleFlags
{}
public
static
final
int
ROLE_FLAGS_MAIN
=
1
;
public
static
final
int
ROLE_FLAGS_ALTERNATE
=
1
<<
1
;
public
static
final
int
ROLE_FLAGS_SUPPLEMENTARY
=
1
<<
2
;
public
static
final
int
ROLE_FLAGS_COMMENTARY
=
1
<<
3
;
public
static
final
int
ROLE_FLAGS_DUB
=
1
<<
4
;
public
static
final
int
ROLE_FLAGS_EMERGENCY
=
1
<<
5
;
public
static
final
int
ROLE_FLAGS_CAPTION
=
1
<<
6
;
public
static
final
int
ROLE_FLAGS_SIGN
=
1
<<
7
;
public
static
final
int
ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY
=
1
<<
8
;
public
static
final
int
ROLE_FLAGS_DESCRIPTION
=
1
<<
9
;
/**
* Converts a time in microseconds to the corresponding time in milliseconds, preserving
...
...
library/core/src/main/java/com/google/android/exoplayer2/Format.java
View file @
85441996
This diff is collapsed.
Click to expand it.
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java
View file @
85441996
...
...
@@ -588,8 +588,9 @@ public class DashManifestParser extends DefaultHandler
List
<
Descriptor
>
supplementalProperties
)
{
String
sampleMimeType
=
getSampleMimeType
(
containerMimeType
,
codecs
);
if
(
sampleMimeType
!=
null
)
{
int
role
=
parseRole
(
roleDescriptors
);
int
accessibility
=
parseAccessibility
(
accessibilityDescriptors
);
@C
.
RoleFlags
int
role
=
parseRole
(
roleDescriptors
);
@C
.
RoleFlags
int
accessibility
=
parseAccessibility
(
accessibilityDescriptors
);
@C
.
RoleFlags
int
roleFlags
=
role
|
accessibility
;
if
(
MimeTypes
.
AUDIO_E_AC3
.
equals
(
sampleMimeType
))
{
sampleMimeType
=
parseEac3SupplementalProperties
(
supplementalProperties
);
}
...
...
@@ -606,8 +607,7 @@ public class DashManifestParser extends DefaultHandler
frameRate
,
/* initializationData= */
null
,
selectionFlags
,
role
,
accessibility
);
roleFlags
);
}
else
if
(
MimeTypes
.
isAudio
(
sampleMimeType
))
{
return
Format
.
createAudioContainerFormat
(
id
,
...
...
@@ -621,8 +621,7 @@ public class DashManifestParser extends DefaultHandler
/* initializationData= */
null
,
selectionFlags
,
language
,
role
,
accessibility
);
roleFlags
);
}
else
if
(
mimeTypeIsRawText
(
sampleMimeType
))
{
int
accessibilityChannel
;
if
(
MimeTypes
.
APPLICATION_CEA608
.
equals
(
sampleMimeType
))
{
...
...
@@ -642,8 +641,7 @@ public class DashManifestParser extends DefaultHandler
selectionFlags
,
language
,
accessibilityChannel
,
role
,
accessibility
);
roleFlags
);
}
}
return
Format
.
createContainerFormat
(
...
...
@@ -1070,66 +1068,83 @@ public class DashManifestParser extends DefaultHandler
// Role and Accessibility parsing.
protected
@C
.
Role
int
parseRole
(
List
<
Descriptor
>
roleDescriptors
)
{
protected
@C
.
RoleFlags
int
parseRole
(
List
<
Descriptor
>
roleDescriptors
)
{
@C
.
RoleFlags
int
result
=
0
;
for
(
int
i
=
0
;
i
<
roleDescriptors
.
size
();
i
++)
{
Descriptor
descriptor
=
roleDescriptors
.
get
(
i
);
if
(
"urn:mpeg:dash:role:2011"
.
equalsIgnoreCase
(
descriptor
.
schemeIdUri
)
&&
descriptor
.
value
!=
null
)
{
switch
(
descriptor
.
value
)
{
case
"main"
:
return
C
.
ROLE_MAIN
;
case
"alternate"
:
return
C
.
ROLE_ALTERNATE
;
case
"supplementary"
:
return
C
.
ROLE_SUPPLEMENTARY
;
case
"commentary"
:
return
C
.
ROLE_COMMENTARY
;
case
"dub"
:
return
C
.
ROLE_DUB
;
case
"emergency"
:
return
C
.
ROLE_EMERGENCY
;
case
"caption"
:
return
C
.
ROLE_CAPTION
;
case
"sign"
:
return
C
.
ROLE_SIGN
;
default
:
return
C
.
ROLE_UNSET
;
}
result
|=
parseRoleSchemeValue
(
descriptor
.
value
);
}
}
return
C
.
ROLE_UNSET
;
return
result
;
}
protected
@C
.
Accessibility
int
parseAccessibility
(
List
<
Descriptor
>
accessibilityDescriptors
)
{
protected
@C
.
RoleFlags
int
parseAccessibility
(
List
<
Descriptor
>
accessibilityDescriptors
)
{
@C
.
RoleFlags
int
result
=
0
;
for
(
int
i
=
0
;
i
<
accessibilityDescriptors
.
size
();
i
++)
{
Descriptor
descriptor
=
accessibilityDescriptors
.
get
(
i
);
if
(
"urn:mpeg:dash:role:2011"
.
equalsIgnoreCase
(
descriptor
.
schemeIdUri
)
&&
descriptor
.
value
!=
null
)
{
switch
(
descriptor
.
value
){
case
"description"
:
return
C
.
ACCESSIBILITY_DESCRIPTION
;
case
"enhanced-audio-intelligibility"
:
return
C
.
ACCESSIBILITY_ENHANCED_AUDIO_INTELLIGIBILITY
;
case
"caption"
:
return
C
.
ACCESSIBILITY_CAPTION
;
case
"sign"
:
return
C
.
ACCESSIBILITY_SIGN
;
default
:
return
C
.
ACCESSIBILITY_UNSET
;
}
result
|=
parseRoleSchemeValue
(
descriptor
.
value
);
}
if
(
"urn:tva:metadata:cs:AudioPurposeCS:2007"
.
equalsIgnoreCase
(
descriptor
.
schemeIdUri
)
&&
descriptor
.
value
!=
null
)
{
switch
(
descriptor
.
value
){
case
"1"
:
return
C
.
ACCESSIBILITY_ENHANCED_AUDIO_INTELLIGIBILITY
;
case
"2"
:
return
C
.
ACCESSIBILITY_CAPTION
;
default
:
return
C
.
ACCESSIBILITY_UNSET
;
case
"1"
:
// Audio description for the visually impaired
result
|=
C
.
ROLE_FLAGS_DESCRIPTION
;
break
;
case
"2"
:
// Audio description for the hard of hearing
result
|=
C
.
ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY
;
break
;
case
"3"
:
// Supplemental commentary
result
|=
C
.
ROLE_FLAGS_SUPPLEMENTARY
;
break
;
case
"4"
:
// Director's commentary
result
|=
C
.
ROLE_FLAGS_COMMENTARY
;
break
;
case
"6"
:
// Main programme audio
result
|=
C
.
ROLE_FLAGS_MAIN
;
break
;
}
}
}
return
C
.
ACCESSIBILITY_UNSET
;
return
result
;
}
protected
@C
.
RoleFlags
int
parseRoleSchemeValue
(
String
value
){
@C
.
RoleFlags
int
result
=
0
;
switch
(
value
)
{
case
"main"
:
result
|=
C
.
ROLE_FLAGS_MAIN
;
break
;
case
"alternate"
:
result
|=
C
.
ROLE_FLAGS_ALTERNATE
;
break
;
case
"supplementary"
:
result
|=
C
.
ROLE_FLAGS_SUPPLEMENTARY
;
break
;
case
"commentary"
:
result
|=
C
.
ROLE_FLAGS_COMMENTARY
;
break
;
case
"dub"
:
result
|=
C
.
ROLE_FLAGS_DUB
;
break
;
case
"emergency"
:
result
|=
C
.
ROLE_FLAGS_EMERGENCY
;
break
;
case
"caption"
:
result
|=
C
.
ROLE_FLAGS_CAPTION
;
break
;
case
"sign"
:
result
|=
C
.
ROLE_FLAGS_SIGN
;
break
;
case
"description"
:
result
|=
C
.
ROLE_FLAGS_DESCRIPTION
;
break
;
case
"enhanced-audio-intelligibility"
:
result
|=
C
.
ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY
;
break
;
}
return
result
;
}
// Utility methods.
...
...
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java
View file @
85441996
...
...
@@ -703,8 +703,7 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
variantFormat
.
frameRate
,
/* initializationData= */
null
,
variantFormat
.
selectionFlags
,
/* role= */
C
.
ROLE_UNSET
,
/* accessibility= */
C
.
ACCESSIBILITY_UNSET
);
/* roleFlags= */
0
);
}
private
static
Format
deriveAudioFormat
(
...
...
@@ -743,8 +742,7 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
/* initializationData= */
null
,
selectionFlags
,
language
,
/* role= */
C
.
ROLE_UNSET
,
/* accessibility= */
C
.
ACCESSIBILITY_UNSET
);
/* roleFlags= */
0
);
}
}
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java
View file @
85441996
...
...
@@ -330,8 +330,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
frameRate
,
/* initializationData= */
null
,
/* selectionFlags= */
0
,
/* role= */
C
.
ROLE_UNSET
,
/* accessibility= */
C
.
ACCESSIBILITY_UNSET
);
/* roleFlags= */
0
);
variants
.
add
(
new
HlsMasterPlaylist
.
HlsUrl
(
line
,
format
,
/* name= */
""
));
}
}
...
...
@@ -364,8 +363,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
/* initializationData= */
null
,
selectionFlags
,
language
,
/* role= */
C
.
ROLE_UNSET
,
/* accessibility= */
C
.
ACCESSIBILITY_UNSET
);
/* roleFlags= */
0
);
if
(
isMediaTagMuxed
(
variants
,
uri
))
{
muxedAudioFormat
=
format
;
}
else
{
...
...
@@ -410,8 +408,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
selectionFlags
,
language
,
accessibilityChannel
,
/* role= */
C
.
ROLE_UNSET
,
/* accessibility= */
C
.
ACCESSIBILITY_UNSET
));
/* roleFlags= */
0
));
break
;
default
:
// Do nothing.
...
...
library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser.java
View file @
85441996
...
...
@@ -682,8 +682,7 @@ public class SsManifestParser implements ParsingLoadable.Parser<SsManifest> {
/* frameRate= */
Format
.
NO_VALUE
,
codecSpecificData
,
/* selectionFlags= */
0
,
/* role= */
C
.
ROLE_UNSET
,
/* accessibility= */
C
.
ACCESSIBILITY_UNSET
);
/* roleFlags= */
0
);
}
else
if
(
type
==
C
.
TRACK_TYPE_AUDIO
)
{
sampleMimeType
=
sampleMimeType
==
null
?
MimeTypes
.
AUDIO_AAC
:
sampleMimeType
;
int
channels
=
parseRequiredInt
(
parser
,
KEY_CHANNELS
);
...
...
@@ -708,8 +707,7 @@ public class SsManifestParser implements ParsingLoadable.Parser<SsManifest> {
codecSpecificData
,
/* selectionFlags= */
0
,
language
,
/* role= */
C
.
ROLE_UNSET
,
/* accessibility= */
C
.
ACCESSIBILITY_UNSET
);
/* roleFlags= */
0
);
}
else
if
(
type
==
C
.
TRACK_TYPE_TEXT
)
{
String
language
=
(
String
)
getNormalizedAttribute
(
KEY_LANGUAGE
);
format
=
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment