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 @@
*
Fix
`IncorrectContextUseViolation`
strict mode warning on Android 11
(
[
#8246
](
https://github.com/google/ExoPlayer/pull/8246
)
).
*
Audio:
*
Fix track selection for E-AC-3 streams.
*
Use
`AudioTrack.isDirectPlaybackSupported`
to check for encoded audio
passthrough capability from API 29 onwards, instead of using the HDMI
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 {
}
}
/**
* 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. */
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. */
...
...
library/common/src/main/java/com/google/android/exoplayer2/util/MimeTypes.java
View file @
f90d0a26
...
...
@@ -20,6 +20,7 @@ import androidx.annotation.Nullable;
import
androidx.annotation.VisibleForTesting
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.audio.AacUtil
;
import
com.google.android.exoplayer2.audio.Ac3Util
;
import
com.google.common.base.Ascii
;
import
java.util.ArrayList
;
import
java.util.regex.Matcher
;
...
...
@@ -375,7 +376,7 @@ public final class MimeTypes {
return
MimeTypes
.
AUDIO_AC3
;
}
else
if
(
codec
.
startsWith
(
"ec-3"
)
||
codec
.
startsWith
(
"dec3"
))
{
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
;
}
else
if
(
codec
.
startsWith
(
"ac-4"
)
||
codec
.
startsWith
(
"dac4"
))
{
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;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.Format
;
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.SchemeData
;
import
com.google.android.exoplayer2.extractor.mp4.PsshAtomUtil
;
...
...
@@ -765,6 +766,9 @@ public class DashManifestParser extends DefaultHandler
@Nullable
String
sampleMimeType
=
getSampleMimeType
(
containerMimeType
,
codecs
);
if
(
MimeTypes
.
AUDIO_E_AC3
.
equals
(
sampleMimeType
))
{
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
.
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;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.Format
;
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.SchemeData
;
import
com.google.android.exoplayer2.extractor.mp4.PsshAtomUtil
;
...
...
@@ -515,6 +516,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
formatBuilder
.
setChannelCount
(
channelCount
);
if
(
MimeTypes
.
AUDIO_E_AC3
.
equals
(
sampleMimeType
)
&&
channelsString
.
endsWith
(
"/JOC"
))
{
sampleMimeType
=
MimeTypes
.
AUDIO_E_AC3_JOC
;
formatBuilder
.
setCodecs
(
Ac3Util
.
E_AC_3_CODEC_STRING
);
}
}
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