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
f90d0a26
authored
Jun 15, 2021
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Plain Diff
Merge pull request #9023 from DolbyLaboratories:dev-v2-multicodecs
PiperOrigin-RevId: 379440699
parents
0b97f089
d176891c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
16 additions
and
1 deletions
RELEASENOTES.md
library/common/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java
library/common/src/main/java/com/google/android/exoplayer2/util/MimeTypes.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/playlist/HlsPlaylistParser.java
RELEASENOTES.md
View file @
f90d0a26
...
@@ -45,6 +45,7 @@
...
@@ -45,6 +45,7 @@
*
Fix
`IncorrectContextUseViolation`
strict mode warning on Android 11
*
Fix
`IncorrectContextUseViolation`
strict mode warning on Android 11
(
[
#8246
](
https://github.com/google/ExoPlayer/pull/8246
)
).
(
[
#8246
](
https://github.com/google/ExoPlayer/pull/8246
)
).
*
Audio:
*
Audio:
*
Fix track selection for E-AC-3 streams.
*
Use
`AudioTrack.isDirectPlaybackSupported`
to check for encoded audio
*
Use
`AudioTrack.isDirectPlaybackSupported`
to check for encoded audio
passthrough capability from API 29 onwards, instead of using the HDMI
passthrough capability from API 29 onwards, instead of using the HDMI
audio plug intent
audio plug intent
...
...
library/common/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java
View file @
f90d0a26
...
@@ -91,6 +91,13 @@ public final class Ac3Util {
...
@@ -91,6 +91,13 @@ public final class Ac3Util {
}
}
}
}
/**
* A non-standard codec string for E-AC-3. Use of this constant allows for disambiguation between
* regular AC-3 ("ec-3") and E-AC-3 ("ec+3") streams from the codec string alone. The standard is
* to use "ec-3" for both, as per the <a href="https://mp4ra.org/#/codecs">MP4RA registered codec
* types</a>.
*/
public
static
final
String
E_AC_3_CODEC_STRING
=
"ec+3"
;
/** Maximum rate for an AC-3 audio stream, in bytes per second. */
/** Maximum rate for an AC-3 audio stream, in bytes per second. */
public
static
final
int
AC3_MAX_RATE_BYTES_PER_SECOND
=
640
*
1000
/
8
;
public
static
final
int
AC3_MAX_RATE_BYTES_PER_SECOND
=
640
*
1000
/
8
;
/** Maximum rate for an E-AC-3 audio stream, in bytes per second. */
/** Maximum rate for an E-AC-3 audio stream, in bytes per second. */
...
...
library/common/src/main/java/com/google/android/exoplayer2/util/MimeTypes.java
View file @
f90d0a26
...
@@ -20,6 +20,7 @@ import androidx.annotation.Nullable;
...
@@ -20,6 +20,7 @@ import androidx.annotation.Nullable;
import
androidx.annotation.VisibleForTesting
;
import
androidx.annotation.VisibleForTesting
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.audio.AacUtil
;
import
com.google.android.exoplayer2.audio.AacUtil
;
import
com.google.android.exoplayer2.audio.Ac3Util
;
import
com.google.common.base.Ascii
;
import
com.google.common.base.Ascii
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.regex.Matcher
;
import
java.util.regex.Matcher
;
...
@@ -375,7 +376,7 @@ public final class MimeTypes {
...
@@ -375,7 +376,7 @@ public final class MimeTypes {
return
MimeTypes
.
AUDIO_AC3
;
return
MimeTypes
.
AUDIO_AC3
;
}
else
if
(
codec
.
startsWith
(
"ec-3"
)
||
codec
.
startsWith
(
"dec3"
))
{
}
else
if
(
codec
.
startsWith
(
"ec-3"
)
||
codec
.
startsWith
(
"dec3"
))
{
return
MimeTypes
.
AUDIO_E_AC3
;
return
MimeTypes
.
AUDIO_E_AC3
;
}
else
if
(
codec
.
startsWith
(
"ec+3"
))
{
}
else
if
(
codec
.
startsWith
(
Ac3Util
.
E_AC_3_CODEC_STRING
))
{
return
MimeTypes
.
AUDIO_E_AC3_JOC
;
return
MimeTypes
.
AUDIO_E_AC3_JOC
;
}
else
if
(
codec
.
startsWith
(
"ac-4"
)
||
codec
.
startsWith
(
"dac4"
))
{
}
else
if
(
codec
.
startsWith
(
"ac-4"
)
||
codec
.
startsWith
(
"dac4"
))
{
return
MimeTypes
.
AUDIO_AC4
;
return
MimeTypes
.
AUDIO_AC4
;
...
...
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java
View file @
f90d0a26
...
@@ -24,6 +24,7 @@ import androidx.annotation.Nullable;
...
@@ -24,6 +24,7 @@ import androidx.annotation.Nullable;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.ParserException
;
import
com.google.android.exoplayer2.ParserException
;
import
com.google.android.exoplayer2.audio.Ac3Util
;
import
com.google.android.exoplayer2.drm.DrmInitData
;
import
com.google.android.exoplayer2.drm.DrmInitData
;
import
com.google.android.exoplayer2.drm.DrmInitData.SchemeData
;
import
com.google.android.exoplayer2.drm.DrmInitData.SchemeData
;
import
com.google.android.exoplayer2.extractor.mp4.PsshAtomUtil
;
import
com.google.android.exoplayer2.extractor.mp4.PsshAtomUtil
;
...
@@ -765,6 +766,9 @@ public class DashManifestParser extends DefaultHandler
...
@@ -765,6 +766,9 @@ public class DashManifestParser extends DefaultHandler
@Nullable
String
sampleMimeType
=
getSampleMimeType
(
containerMimeType
,
codecs
);
@Nullable
String
sampleMimeType
=
getSampleMimeType
(
containerMimeType
,
codecs
);
if
(
MimeTypes
.
AUDIO_E_AC3
.
equals
(
sampleMimeType
))
{
if
(
MimeTypes
.
AUDIO_E_AC3
.
equals
(
sampleMimeType
))
{
sampleMimeType
=
parseEac3SupplementalProperties
(
supplementalProperties
);
sampleMimeType
=
parseEac3SupplementalProperties
(
supplementalProperties
);
if
(
MimeTypes
.
AUDIO_E_AC3_JOC
.
equals
(
sampleMimeType
))
{
codecs
=
Ac3Util
.
E_AC_3_CODEC_STRING
;
}
}
}
@C
.
SelectionFlags
int
selectionFlags
=
parseSelectionFlagsFromRoleDescriptors
(
roleDescriptors
);
@C
.
SelectionFlags
int
selectionFlags
=
parseSelectionFlagsFromRoleDescriptors
(
roleDescriptors
);
@C
.
RoleFlags
int
roleFlags
=
parseRoleFlagsFromRoleDescriptors
(
roleDescriptors
);
@C
.
RoleFlags
int
roleFlags
=
parseRoleFlagsFromRoleDescriptors
(
roleDescriptors
);
...
...
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java
View file @
f90d0a26
...
@@ -26,6 +26,7 @@ import androidx.annotation.Nullable;
...
@@ -26,6 +26,7 @@ import androidx.annotation.Nullable;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.ParserException
;
import
com.google.android.exoplayer2.ParserException
;
import
com.google.android.exoplayer2.audio.Ac3Util
;
import
com.google.android.exoplayer2.drm.DrmInitData
;
import
com.google.android.exoplayer2.drm.DrmInitData
;
import
com.google.android.exoplayer2.drm.DrmInitData.SchemeData
;
import
com.google.android.exoplayer2.drm.DrmInitData.SchemeData
;
import
com.google.android.exoplayer2.extractor.mp4.PsshAtomUtil
;
import
com.google.android.exoplayer2.extractor.mp4.PsshAtomUtil
;
...
@@ -515,6 +516,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
...
@@ -515,6 +516,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
formatBuilder
.
setChannelCount
(
channelCount
);
formatBuilder
.
setChannelCount
(
channelCount
);
if
(
MimeTypes
.
AUDIO_E_AC3
.
equals
(
sampleMimeType
)
&&
channelsString
.
endsWith
(
"/JOC"
))
{
if
(
MimeTypes
.
AUDIO_E_AC3
.
equals
(
sampleMimeType
)
&&
channelsString
.
endsWith
(
"/JOC"
))
{
sampleMimeType
=
MimeTypes
.
AUDIO_E_AC3_JOC
;
sampleMimeType
=
MimeTypes
.
AUDIO_E_AC3_JOC
;
formatBuilder
.
setCodecs
(
Ac3Util
.
E_AC_3_CODEC_STRING
);
}
}
}
}
formatBuilder
.
setSampleMimeType
(
sampleMimeType
);
formatBuilder
.
setSampleMimeType
(
sampleMimeType
);
...
...
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