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
0f57a5f1
authored
Aug 01, 2014
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Plain Diff
Merge branch 'dev' of persistent-
https://github.com/google/ExoPlayer
into dev
parents
553a1d2e
ef6be795
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
109 additions
and
12 deletions
.gitignore
README.md
build.gradle
library/build.gradle
library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java
library/src/main/java/com/google/android/exoplayer/chunk/Format.java
library/src/main/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParser.java
.gitignore
0 → 100644
View file @
0f57a5f1
# Android generated
bin
gen
lint.xml
# IntelliJ IDEA
.idea
*.iml
*.ipr
*.iws
classes
gen-external-apklibs
# Eclipse
.project
.classpath
.settings
.checkstyle
# Gradle
.gradle
build
out
# Maven
target
release.properties
pom.xml.*
# Ant
ant.properties
local.properties
proguard.cfg
proguard-project.txt
# Other
.DS_Store
dist
tmp
README.md
View file @
0f57a5f1
...
@@ -55,6 +55,22 @@ accompanying demo application. To get started:
...
@@ -55,6 +55,22 @@ accompanying demo application. To get started:
## Using Gradle ##
## Using Gradle ##
ExoPlayer can also be built using Gradle.
For a complete list of tasks, run:
ExoPlayer can also be built using Gradle.
You can include it as a dependent project and build from source. e.g.
./gradlew tasks
```
// setting.gradle
include ':app', ':..:ExoPlayer:library'
// app/build.gradle
dependencies {
compile project(':..:ExoPlayer:library')
}
```
If you want to use ExoPlayer as a jar, run:
```
./gradlew jarRelease
```
and copy library.jar to the libs-folder of your new project.
build.gradle
View file @
0f57a5f1
...
@@ -19,7 +19,7 @@ buildscript {
...
@@ -19,7 +19,7 @@ buildscript {
mavenCentral
()
mavenCentral
()
}
}
dependencies
{
dependencies
{
classpath
'com.android.tools.build:gradle:0.1
0
.+'
classpath
'com.android.tools.build:gradle:0.1
2
.+'
}
}
}
}
...
...
library/build.gradle
View file @
0f57a5f1
...
@@ -36,3 +36,14 @@ android {
...
@@ -36,3 +36,14 @@ android {
dependencies
{
dependencies
{
}
}
android
.
libraryVariants
.
all
{
variant
->
def
name
=
variant
.
buildType
.
name
if
(
name
.
equals
(
com
.
android
.
builder
.
core
.
BuilderConstants
.
DEBUG
))
{
return
;
// Skip debug builds.
}
def
task
=
project
.
tasks
.
create
"jar${name.capitalize()}"
,
Jar
task
.
dependsOn
variant
.
javaCompile
task
.
from
variant
.
javaCompile
.
destinationDir
artifacts
.
add
(
'archives'
,
task
);
}
library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java
View file @
0f57a5f1
...
@@ -280,14 +280,20 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer {
...
@@ -280,14 +280,20 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer {
@Override
@Override
protected
void
onDisabled
()
{
protected
void
onDisabled
()
{
releaseCodec
();
format
=
null
;
format
=
null
;
drmInitData
=
null
;
drmInitData
=
null
;
if
(
openedDrmSession
)
{
try
{
drmSessionManager
.
close
();
releaseCodec
();
openedDrmSession
=
false
;
}
finally
{
try
{
if
(
openedDrmSession
)
{
drmSessionManager
.
close
();
openedDrmSession
=
false
;
}
}
finally
{
source
.
disable
(
trackIndex
);
}
}
}
source
.
disable
(
trackIndex
);
}
}
protected
void
releaseCodec
()
{
protected
void
releaseCodec
()
{
...
...
library/src/main/java/com/google/android/exoplayer/chunk/Format.java
View file @
0f57a5f1
...
@@ -72,6 +72,14 @@ public class Format {
...
@@ -72,6 +72,14 @@ public class Format {
public
final
int
bitrate
;
public
final
int
bitrate
;
/**
/**
* The language of the format. Can be null if unknown.
* <p>
* The language codes are two-letter lowercase ISO language codes (such as "en") as defined by
* ISO 639-1.
*/
public
final
String
language
;
/**
* The average bandwidth in bytes per second.
* The average bandwidth in bytes per second.
*
*
* @deprecated Use {@link #bitrate}. However note that the units of measurement are different.
* @deprecated Use {@link #bitrate}. However note that the units of measurement are different.
...
@@ -90,6 +98,21 @@ public class Format {
...
@@ -90,6 +98,21 @@ public class Format {
*/
*/
public
Format
(
String
id
,
String
mimeType
,
int
width
,
int
height
,
int
numChannels
,
public
Format
(
String
id
,
String
mimeType
,
int
width
,
int
height
,
int
numChannels
,
int
audioSamplingRate
,
int
bitrate
)
{
int
audioSamplingRate
,
int
bitrate
)
{
this
(
id
,
mimeType
,
width
,
height
,
numChannels
,
audioSamplingRate
,
bitrate
,
null
);
}
/**
* @param id The format identifier.
* @param mimeType The format mime type.
* @param width The width of the video in pixels, or -1 for non-video formats.
* @param height The height of the video in pixels, or -1 for non-video formats.
* @param numChannels The number of audio channels, or -1 for non-audio formats.
* @param audioSamplingRate The audio sampling rate in Hz, or -1 for non-audio formats.
* @param bitrate The average bandwidth of the format in bits per second.
* @param language The language of the format.
*/
public
Format
(
String
id
,
String
mimeType
,
int
width
,
int
height
,
int
numChannels
,
int
audioSamplingRate
,
int
bitrate
,
String
language
)
{
this
.
id
=
Assertions
.
checkNotNull
(
id
);
this
.
id
=
Assertions
.
checkNotNull
(
id
);
this
.
mimeType
=
mimeType
;
this
.
mimeType
=
mimeType
;
this
.
width
=
width
;
this
.
width
=
width
;
...
@@ -97,6 +120,7 @@ public class Format {
...
@@ -97,6 +120,7 @@ public class Format {
this
.
numChannels
=
numChannels
;
this
.
numChannels
=
numChannels
;
this
.
audioSamplingRate
=
audioSamplingRate
;
this
.
audioSamplingRate
=
audioSamplingRate
;
this
.
bitrate
=
bitrate
;
this
.
bitrate
=
bitrate
;
this
.
language
=
language
;
this
.
bandwidth
=
bitrate
/
8
;
this
.
bandwidth
=
bitrate
/
8
;
}
}
...
...
library/src/main/java/com/google/android/exoplayer/dash/mpd/MediaPresentationDescriptionParser.java
View file @
0f57a5f1
...
@@ -140,6 +140,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler {
...
@@ -140,6 +140,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler {
throws
XmlPullParserException
,
IOException
{
throws
XmlPullParserException
,
IOException
{
String
mimeType
=
xpp
.
getAttributeValue
(
null
,
"mimeType"
);
String
mimeType
=
xpp
.
getAttributeValue
(
null
,
"mimeType"
);
String
language
=
xpp
.
getAttributeValue
(
null
,
"lang"
);
int
contentType
=
parseAdaptationSetTypeFromMimeType
(
mimeType
);
int
contentType
=
parseAdaptationSetTypeFromMimeType
(
mimeType
);
int
id
=
-
1
;
int
id
=
-
1
;
...
@@ -160,7 +161,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler {
...
@@ -160,7 +161,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler {
parseAdaptationSetType
(
xpp
.
getAttributeValue
(
null
,
"contentType"
)));
parseAdaptationSetType
(
xpp
.
getAttributeValue
(
null
,
"contentType"
)));
}
else
if
(
isStartTag
(
xpp
,
"Representation"
))
{
}
else
if
(
isStartTag
(
xpp
,
"Representation"
))
{
Representation
representation
=
parseRepresentation
(
xpp
,
contentId
,
baseUrl
,
periodStartMs
,
Representation
representation
=
parseRepresentation
(
xpp
,
contentId
,
baseUrl
,
periodStartMs
,
periodDurationMs
,
mimeType
,
segmentBase
);
periodDurationMs
,
mimeType
,
language
,
segmentBase
);
contentType
=
checkAdaptationSetTypeConsistency
(
contentType
,
contentType
=
checkAdaptationSetTypeConsistency
(
contentType
,
parseAdaptationSetTypeFromMimeType
(
representation
.
format
.
mimeType
));
parseAdaptationSetTypeFromMimeType
(
representation
.
format
.
mimeType
));
representations
.
add
(
representation
);
representations
.
add
(
representation
);
...
@@ -230,8 +231,8 @@ public class MediaPresentationDescriptionParser extends DefaultHandler {
...
@@ -230,8 +231,8 @@ public class MediaPresentationDescriptionParser extends DefaultHandler {
// Representation parsing.
// Representation parsing.
private
Representation
parseRepresentation
(
XmlPullParser
xpp
,
String
contentId
,
Uri
baseUrl
,
private
Representation
parseRepresentation
(
XmlPullParser
xpp
,
String
contentId
,
Uri
baseUrl
,
long
periodStartMs
,
long
periodDurationMs
,
String
mimeType
,
S
egmentBase
segmentBase
)
long
periodStartMs
,
long
periodDurationMs
,
String
mimeType
,
S
tring
language
,
throws
XmlPullParserException
,
IOException
{
SegmentBase
segmentBase
)
throws
XmlPullParserException
,
IOException
{
String
id
=
xpp
.
getAttributeValue
(
null
,
"id"
);
String
id
=
xpp
.
getAttributeValue
(
null
,
"id"
);
int
bandwidth
=
parseInt
(
xpp
,
"bandwidth"
);
int
bandwidth
=
parseInt
(
xpp
,
"bandwidth"
);
int
audioSamplingRate
=
parseInt
(
xpp
,
"audioSamplingRate"
);
int
audioSamplingRate
=
parseInt
(
xpp
,
"audioSamplingRate"
);
...
@@ -257,7 +258,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler {
...
@@ -257,7 +258,7 @@ public class MediaPresentationDescriptionParser extends DefaultHandler {
}
while
(!
isEndTag
(
xpp
,
"Representation"
));
}
while
(!
isEndTag
(
xpp
,
"Representation"
));
Format
format
=
new
Format
(
id
,
mimeType
,
width
,
height
,
numChannels
,
audioSamplingRate
,
Format
format
=
new
Format
(
id
,
mimeType
,
width
,
height
,
numChannels
,
audioSamplingRate
,
bandwidth
);
bandwidth
,
language
);
return
Representation
.
newInstance
(
periodStartMs
,
periodDurationMs
,
contentId
,
-
1
,
format
,
return
Representation
.
newInstance
(
periodStartMs
,
periodDurationMs
,
contentId
,
-
1
,
format
,
segmentBase
);
segmentBase
);
}
}
...
...
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