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
cf27b83e
authored
Sep 18, 2015
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Implement handlesTrack using MediaCodecUtil.
parent
8022d28e
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
23 additions
and
9 deletions
library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java
library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java
library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java
library/src/main/java/com/google/android/exoplayer/SampleSourceTrackRenderer.java
library/src/main/java/com/google/android/exoplayer/chunk/VideoFormatSelectorUtil.java
library/src/main/java/com/google/android/exoplayer/MediaCodecAudioTrackRenderer.java
View file @
cf27b83e
...
...
@@ -217,9 +217,11 @@ public class MediaCodecAudioTrackRenderer extends MediaCodecTrackRenderer implem
}
@Override
protected
boolean
handlesTrack
(
MediaFormat
mediaFormat
)
{
// TODO: Check the mime type against the available decoders (b/22996976).
return
MimeTypes
.
isAudio
(
mediaFormat
.
mimeType
);
protected
boolean
handlesTrack
(
MediaFormat
mediaFormat
)
throws
DecoderQueryException
{
// TODO: Use MediaCodecList.findDecoderForFormat on API 23.
String
mimeType
=
mediaFormat
.
mimeType
;
return
MimeTypes
.
isAudio
(
mimeType
)
&&
(
MimeTypes
.
AUDIO_UNKNOWN
.
equals
(
mimeType
)
||
allowPassthrough
(
mimeType
)
||
MediaCodecUtil
.
getDecoderInfo
(
mimeType
,
false
)
!=
null
);
}
@Override
...
...
library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java
View file @
cf27b83e
...
...
@@ -256,6 +256,7 @@ public abstract class MediaCodecTrackRenderer extends SampleSourceTrackRenderer
* @param requiresSecureDecoder Whether a secure decoder is needed for decoding {@code mimeType}.
* @return {@link DecoderInfo} for decoding media in the specified MIME type, or {@code null} if
* no suitable decoder is available.
* @throws DecoderQueryException Thrown if there was an error querying decoders.
*/
protected
DecoderInfo
getDecoderInfo
(
String
mimeType
,
boolean
requiresSecureDecoder
)
throws
DecoderQueryException
{
...
...
library/src/main/java/com/google/android/exoplayer/MediaCodecVideoTrackRenderer.java
View file @
cf27b83e
...
...
@@ -15,6 +15,7 @@
*/
package
com
.
google
.
android
.
exoplayer
;
import
com.google.android.exoplayer.MediaCodecUtil.DecoderQueryException
;
import
com.google.android.exoplayer.drm.DrmSessionManager
;
import
com.google.android.exoplayer.util.MimeTypes
;
import
com.google.android.exoplayer.util.TraceUtil
;
...
...
@@ -268,9 +269,11 @@ public class MediaCodecVideoTrackRenderer extends MediaCodecTrackRenderer {
}
@Override
protected
boolean
handlesTrack
(
MediaFormat
mediaFormat
)
{
// TODO: Check the mime type against the available decoders (b/22996976).
return
MimeTypes
.
isVideo
(
mediaFormat
.
mimeType
);
protected
boolean
handlesTrack
(
MediaFormat
mediaFormat
)
throws
DecoderQueryException
{
// TODO: Use MediaCodecList.findDecoderForFormat on API 23.
String
mimeType
=
mediaFormat
.
mimeType
;
return
MimeTypes
.
isVideo
(
mimeType
)
&&
(
MimeTypes
.
VIDEO_UNKNOWN
.
equals
(
mimeType
)
||
MediaCodecUtil
.
getDecoderInfo
(
mimeType
,
false
)
!=
null
);
}
@Override
...
...
library/src/main/java/com/google/android/exoplayer/SampleSourceTrackRenderer.java
View file @
cf27b83e
...
...
@@ -15,6 +15,7 @@
*/
package
com
.
google
.
android
.
exoplayer
;
import
com.google.android.exoplayer.MediaCodecUtil.DecoderQueryException
;
import
com.google.android.exoplayer.SampleSource.SampleSourceReader
;
import
java.io.IOException
;
...
...
@@ -70,7 +71,13 @@ public abstract class SampleSourceTrackRenderer extends TrackRenderer {
int
sourceTrackCount
=
source
.
getTrackCount
();
for
(
int
trackIndex
=
0
;
trackIndex
<
sourceTrackCount
;
trackIndex
++)
{
MediaFormat
format
=
source
.
getFormat
(
trackIndex
);
if
(
handlesTrack
(
format
))
{
boolean
handlesTrack
;
try
{
handlesTrack
=
handlesTrack
(
format
);
}
catch
(
DecoderQueryException
e
)
{
throw
new
ExoPlaybackException
(
e
);
}
if
(
handlesTrack
)
{
handledSourceIndices
[
handledTrackCount
]
=
sourceIndex
;
handledTrackIndices
[
handledTrackCount
]
=
trackIndex
;
handledTrackCount
++;
...
...
@@ -101,8 +108,9 @@ public abstract class SampleSourceTrackRenderer extends TrackRenderer {
*
* @param mediaFormat The format of the track.
* @return True if the renderer can handle the track, false otherwise.
* @throws DecoderQueryException Thrown if there was an error querying decoders.
*/
protected
abstract
boolean
handlesTrack
(
MediaFormat
mediaFormat
);
protected
abstract
boolean
handlesTrack
(
MediaFormat
mediaFormat
)
throws
DecoderQueryException
;
@Override
protected
void
onEnabled
(
int
track
,
long
positionUs
,
boolean
joining
)
...
...
library/src/main/java/com/google/android/exoplayer/chunk/VideoFormatSelectorUtil.java
View file @
cf27b83e
...
...
@@ -50,7 +50,7 @@ public final class VideoFormatSelectorUtil {
* mime types.
* @param filterHdFormats True to filter HD formats. False otherwise.
* @return An array holding the indices of the selected formats.
* @throws DecoderQueryException
* @throws DecoderQueryException
Thrown if there was an error querying decoders.
*/
public
static
int
[]
selectVideoFormatsForDefaultDisplay
(
Context
context
,
List
<?
extends
FormatWrapper
>
formatWrappers
,
String
[]
allowedContainerMimeTypes
,
...
...
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