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
3c655981
authored
Apr 16, 2020
by
Clement Jean
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Add tag and Factory to SilenceMediaSource
parent
7214ad2d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
49 additions
and
1 deletions
library/core/src/main/java/com/google/android/exoplayer2/source/SilenceMediaSource.java
library/core/src/main/java/com/google/android/exoplayer2/source/SilenceMediaSource.java
View file @
3c655981
...
@@ -33,6 +33,46 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
...
@@ -33,6 +33,46 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
/** Media source with a single period consisting of silent raw audio of a given duration. */
/** Media source with a single period consisting of silent raw audio of a given duration. */
public
final
class
SilenceMediaSource
extends
BaseMediaSource
{
public
final
class
SilenceMediaSource
extends
BaseMediaSource
{
/** Factory for {@link SilenceMediaSource}s. */
public
static
final
class
Factory
{
private
long
durationUs
;
@Nullable
private
Object
tag
;
/**
* Sets the duration of the silent audio.
*
* @param durationUs The duration of silent audio to output, in microseconds.
* @return This factory, for convenience.
*/
public
Factory
setDuration
(
long
durationUs
)
{
this
.
durationUs
=
durationUs
;
return
this
;
}
/**
* Sets a tag for the media source which will be published in the {@link
* com.google.android.exoplayer2.Timeline} of the source as {@link
* com.google.android.exoplayer2.Timeline.Window#tag}.
*
* @param tag A tag for the media source.
* @return This factory, for convenience.
*/
public
Factory
setTag
(
@Nullable
Object
tag
)
{
this
.
tag
=
tag
;
return
this
;
}
/**
* Returns a new {@link SilenceMediaSource}.
*
* @return The new {@link SilenceMediaSource}.
*/
public
SilenceMediaSource
createMediaSource
()
{
return
new
SilenceMediaSource
(
durationUs
,
tag
);
}
}
private
static
final
int
SAMPLE_RATE_HZ
=
44100
;
private
static
final
int
SAMPLE_RATE_HZ
=
44100
;
@C
.
PcmEncoding
private
static
final
int
PCM_ENCODING
=
C
.
ENCODING_PCM_16BIT
;
@C
.
PcmEncoding
private
static
final
int
PCM_ENCODING
=
C
.
ENCODING_PCM_16BIT
;
private
static
final
int
CHANNEL_COUNT
=
2
;
private
static
final
int
CHANNEL_COUNT
=
2
;
...
@@ -47,6 +87,7 @@ public final class SilenceMediaSource extends BaseMediaSource {
...
@@ -47,6 +87,7 @@ public final class SilenceMediaSource extends BaseMediaSource {
new
byte
[
Util
.
getPcmFrameSize
(
PCM_ENCODING
,
CHANNEL_COUNT
)
*
1024
];
new
byte
[
Util
.
getPcmFrameSize
(
PCM_ENCODING
,
CHANNEL_COUNT
)
*
1024
];
private
final
long
durationUs
;
private
final
long
durationUs
;
@Nullable
private
final
Object
tag
;
/**
/**
* Creates a new media source providing silent audio of the given duration.
* Creates a new media source providing silent audio of the given duration.
...
@@ -56,13 +97,20 @@ public final class SilenceMediaSource extends BaseMediaSource {
...
@@ -56,13 +97,20 @@ public final class SilenceMediaSource extends BaseMediaSource {
public
SilenceMediaSource
(
long
durationUs
)
{
public
SilenceMediaSource
(
long
durationUs
)
{
Assertions
.
checkArgument
(
durationUs
>=
0
);
Assertions
.
checkArgument
(
durationUs
>=
0
);
this
.
durationUs
=
durationUs
;
this
.
durationUs
=
durationUs
;
this
.
tag
=
null
;
}
private
SilenceMediaSource
(
long
durationUs
,
@Nullable
Object
tag
)
{
Assertions
.
checkArgument
(
durationUs
>=
0
);
this
.
durationUs
=
durationUs
;
this
.
tag
=
tag
;
}
}
@Override
@Override
protected
void
prepareSourceInternal
(
@Nullable
TransferListener
mediaTransferListener
)
{
protected
void
prepareSourceInternal
(
@Nullable
TransferListener
mediaTransferListener
)
{
refreshSourceInfo
(
refreshSourceInfo
(
new
SinglePeriodTimeline
(
new
SinglePeriodTimeline
(
durationUs
,
/* isSeekable= */
true
,
/* isDynamic= */
false
,
/* isLive= */
false
));
durationUs
,
/* isSeekable= */
true
,
/* isDynamic= */
false
,
/* isLive= */
false
,
null
,
tag
));
}
}
@Override
@Override
...
...
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