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
96734144
authored
Sep 01, 2015
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Extract DTS samples in DASH, MP4 and Matroska.
parent
bca2d16c
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
42 additions
and
3 deletions
library/src/main/java/com/google/android/exoplayer/extractor/mp4/Atom.java
library/src/main/java/com/google/android/exoplayer/extractor/mp4/AtomParsers.java
library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java
library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java
library/src/main/java/com/google/android/exoplayer/extractor/mp4/Atom.java
View file @
96734144
...
...
@@ -57,6 +57,11 @@ import java.util.List;
public
static
final
int
TYPE_dac3
=
Util
.
getIntegerCodeForString
(
"dac3"
);
public
static
final
int
TYPE_ec_3
=
Util
.
getIntegerCodeForString
(
"ec-3"
);
public
static
final
int
TYPE_dec3
=
Util
.
getIntegerCodeForString
(
"dec3"
);
public
static
final
int
TYPE_dtsc
=
Util
.
getIntegerCodeForString
(
"dtsc"
);
public
static
final
int
TYPE_dtsh
=
Util
.
getIntegerCodeForString
(
"dtsh"
);
public
static
final
int
TYPE_dtsl
=
Util
.
getIntegerCodeForString
(
"dtsl"
);
public
static
final
int
TYPE_dtse
=
Util
.
getIntegerCodeForString
(
"dtse"
);
public
static
final
int
TYPE_ddts
=
Util
.
getIntegerCodeForString
(
"ddts"
);
public
static
final
int
TYPE_tfdt
=
Util
.
getIntegerCodeForString
(
"tfdt"
);
public
static
final
int
TYPE_tfhd
=
Util
.
getIntegerCodeForString
(
"tfhd"
);
public
static
final
int
TYPE_trex
=
Util
.
getIntegerCodeForString
(
"trex"
);
...
...
library/src/main/java/com/google/android/exoplayer/extractor/mp4/AtomParsers.java
View file @
96734144
...
...
@@ -372,7 +372,9 @@ import java.util.List;
parseVideoSampleEntry
(
stsd
,
childStartPosition
,
childAtomSize
,
durationUs
,
rotationDegrees
,
out
,
i
);
}
else
if
(
childAtomType
==
Atom
.
TYPE_mp4a
||
childAtomType
==
Atom
.
TYPE_enca
||
childAtomType
==
Atom
.
TYPE_ac_3
)
{
||
childAtomType
==
Atom
.
TYPE_ac_3
||
childAtomType
==
Atom
.
TYPE_ec_3
||
childAtomType
==
Atom
.
TYPE_dtsc
||
childAtomType
==
Atom
.
TYPE_dtse
||
childAtomType
==
Atom
.
TYPE_dtsh
||
childAtomType
==
Atom
.
TYPE_dtsl
)
{
parseAudioSampleEntry
(
stsd
,
childAtomType
,
childStartPosition
,
childAtomSize
,
durationUs
,
out
,
i
);
}
else
if
(
childAtomType
==
Atom
.
TYPE_TTML
)
{
...
...
@@ -597,6 +599,10 @@ import java.util.List;
mimeType
=
MimeTypes
.
AUDIO_AC3
;
}
else
if
(
atomType
==
Atom
.
TYPE_ec_3
)
{
mimeType
=
MimeTypes
.
AUDIO_EC3
;
}
else
if
(
atomType
==
Atom
.
TYPE_dtsc
||
atomType
==
Atom
.
TYPE_dtse
)
{
mimeType
=
MimeTypes
.
AUDIO_DTS
;
}
else
if
(
atomType
==
Atom
.
TYPE_dtsh
||
atomType
==
Atom
.
TYPE_dtsl
)
{
mimeType
=
MimeTypes
.
AUDIO_DTS_HD
;
}
byte
[]
initializationData
=
null
;
...
...
@@ -631,10 +637,16 @@ import java.util.List;
parent
.
setPosition
(
Atom
.
HEADER_SIZE
+
childStartPosition
);
out
.
mediaFormat
=
Ac3Util
.
parseAnnexFAc3Format
(
parent
);
return
;
}
else
if
(
atomType
==
Atom
.
TYPE_ec_3
&&
childAtomType
==
Atom
.
TYPE_dec3
)
{
}
else
if
(
atomType
==
Atom
.
TYPE_ec_3
&&
childAtomType
==
Atom
.
TYPE_dec3
)
{
parent
.
setPosition
(
Atom
.
HEADER_SIZE
+
childStartPosition
);
out
.
mediaFormat
=
Ac3Util
.
parseAnnexFEAc3Format
(
parent
);
return
;
}
else
if
((
atomType
==
Atom
.
TYPE_dtsc
||
atomType
==
Atom
.
TYPE_dtse
||
atomType
==
Atom
.
TYPE_dtsh
||
atomType
==
Atom
.
TYPE_dtsl
)
&&
childAtomType
==
Atom
.
TYPE_ddts
)
{
out
.
mediaFormat
=
MediaFormat
.
createAudioFormat
(
mimeType
,
MediaFormat
.
NO_VALUE
,
MediaFormat
.
NO_VALUE
,
channelCount
,
sampleRate
,
null
);
return
;
}
childPosition
+=
childAtomSize
;
}
...
...
@@ -684,7 +696,6 @@ import java.util.List;
switch
(
objectTypeIndication
)
{
case
0x6B
:
mimeType
=
MimeTypes
.
AUDIO_MPEG
;
// Don't extract codec-specific data for MPEG audio tracks, as it is not needed.
return
Pair
.
create
(
mimeType
,
null
);
case
0x20
:
mimeType
=
MimeTypes
.
VIDEO_MP4V
;
...
...
@@ -707,6 +718,14 @@ import java.util.List;
case
0xA6
:
mimeType
=
MimeTypes
.
AUDIO_EC3
;
break
;
case
0xA9
:
case
0xAC
:
mimeType
=
MimeTypes
.
AUDIO_DTS
;
return
Pair
.
create
(
mimeType
,
null
);
case
0xAA
:
case
0xAB
:
mimeType
=
MimeTypes
.
AUDIO_DTS_HD
;
return
Pair
.
create
(
mimeType
,
null
);
default
:
mimeType
=
null
;
break
;
...
...
library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java
View file @
96734144
...
...
@@ -74,6 +74,9 @@ public final class WebmExtractor implements Extractor {
private
static
final
String
CODEC_ID_AAC
=
"A_AAC"
;
private
static
final
String
CODEC_ID_MP3
=
"A_MPEG/L3"
;
private
static
final
String
CODEC_ID_AC3
=
"A_AC3"
;
private
static
final
String
CODEC_ID_DTS
=
"A_DTS"
;
private
static
final
String
CODEC_ID_DTS_EXPRESS
=
"A_DTS/EXPRESS"
;
private
static
final
String
CODEC_ID_DTS_LOSSLESS
=
"A_DTS/LOSSLESS"
;
private
static
final
String
CODEC_ID_SUBRIP
=
"S_TEXT/UTF8"
;
private
static
final
int
VORBIS_MAX_INPUT_SIZE
=
8192
;
...
...
@@ -1035,6 +1038,9 @@ public final class WebmExtractor implements Extractor {
||
CODEC_ID_AAC
.
equals
(
codecId
)
||
CODEC_ID_MP3
.
equals
(
codecId
)
||
CODEC_ID_AC3
.
equals
(
codecId
)
||
CODEC_ID_DTS
.
equals
(
codecId
)
||
CODEC_ID_DTS_EXPRESS
.
equals
(
codecId
)
||
CODEC_ID_DTS_LOSSLESS
.
equals
(
codecId
)
||
CODEC_ID_SUBRIP
.
equals
(
codecId
);
}
...
...
@@ -1187,6 +1193,13 @@ public final class WebmExtractor implements Extractor {
case
CODEC_ID_AC3:
mimeType
=
MimeTypes
.
AUDIO_AC3
;
break
;
case
CODEC_ID_DTS:
case
CODEC_ID_DTS_EXPRESS:
mimeType
=
MimeTypes
.
AUDIO_DTS
;
break
;
case
CODEC_ID_DTS_LOSSLESS:
mimeType
=
MimeTypes
.
AUDIO_DTS_HD
;
break
;
case
CODEC_ID_SUBRIP:
mimeType
=
MimeTypes
.
APPLICATION_SUBRIP
;
break
;
...
...
library/src/main/java/com/google/android/exoplayer/util/MimeTypes.java
View file @
96734144
...
...
@@ -44,6 +44,8 @@ public final class MimeTypes {
public
static
final
String
AUDIO_RAW
=
BASE_TYPE_AUDIO
+
"/raw"
;
public
static
final
String
AUDIO_AC3
=
BASE_TYPE_AUDIO
+
"/ac3"
;
public
static
final
String
AUDIO_EC3
=
BASE_TYPE_AUDIO
+
"/eac3"
;
public
static
final
String
AUDIO_DTS
=
BASE_TYPE_AUDIO
+
"/x-dts"
;
public
static
final
String
AUDIO_DTS_HD
=
BASE_TYPE_AUDIO
+
"/vnd.dts.hd"
;
public
static
final
String
AUDIO_VORBIS
=
BASE_TYPE_AUDIO
+
"/vorbis"
;
public
static
final
String
AUDIO_OPUS
=
BASE_TYPE_AUDIO
+
"/opus"
;
...
...
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