mirror of
https://github.com/androidx/media.git
synced 2025-05-05 14:40:50 +08:00
Ensure the SilenceMediaSource position is in range
Issue: #6229 PiperOrigin-RevId: 260500986
This commit is contained in:
parent
d279c3d281
commit
f5980a54a3
@ -14,6 +14,8 @@
|
|||||||
([#6153](https://github.com/google/ExoPlayer/issues/6153)).
|
([#6153](https://github.com/google/ExoPlayer/issues/6153)).
|
||||||
* Fix `DataSchemeDataSource` re-opening and range requests
|
* Fix `DataSchemeDataSource` re-opening and range requests
|
||||||
([#6192](https://github.com/google/ExoPlayer/issues/6192)).
|
([#6192](https://github.com/google/ExoPlayer/issues/6192)).
|
||||||
|
* Ensure the `SilenceMediaSource` position is in range
|
||||||
|
([#6229](https://github.com/google/ExoPlayer/issues/6229)).
|
||||||
* Flac extension: Parse `VORBIS_COMMENT` metadata
|
* Flac extension: Parse `VORBIS_COMMENT` metadata
|
||||||
([#5527](https://github.com/google/ExoPlayer/issues/5527)).
|
([#5527](https://github.com/google/ExoPlayer/issues/5527)).
|
||||||
|
|
||||||
|
@ -118,6 +118,7 @@ public final class SilenceMediaSource extends BaseMediaSource {
|
|||||||
@NullableType SampleStream[] streams,
|
@NullableType SampleStream[] streams,
|
||||||
boolean[] streamResetFlags,
|
boolean[] streamResetFlags,
|
||||||
long positionUs) {
|
long positionUs) {
|
||||||
|
positionUs = constrainSeekPosition(positionUs);
|
||||||
for (int i = 0; i < selections.length; i++) {
|
for (int i = 0; i < selections.length; i++) {
|
||||||
if (streams[i] != null && (selections[i] == null || !mayRetainStreamFlags[i])) {
|
if (streams[i] != null && (selections[i] == null || !mayRetainStreamFlags[i])) {
|
||||||
sampleStreams.remove(streams[i]);
|
sampleStreams.remove(streams[i]);
|
||||||
@ -144,6 +145,7 @@ public final class SilenceMediaSource extends BaseMediaSource {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long seekToUs(long positionUs) {
|
public long seekToUs(long positionUs) {
|
||||||
|
positionUs = constrainSeekPosition(positionUs);
|
||||||
for (int i = 0; i < sampleStreams.size(); i++) {
|
for (int i = 0; i < sampleStreams.size(); i++) {
|
||||||
((SilenceSampleStream) sampleStreams.get(i)).seekTo(positionUs);
|
((SilenceSampleStream) sampleStreams.get(i)).seekTo(positionUs);
|
||||||
}
|
}
|
||||||
@ -152,7 +154,7 @@ public final class SilenceMediaSource extends BaseMediaSource {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getAdjustedSeekPositionUs(long positionUs, SeekParameters seekParameters) {
|
public long getAdjustedSeekPositionUs(long positionUs, SeekParameters seekParameters) {
|
||||||
return positionUs;
|
return constrainSeekPosition(positionUs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -172,6 +174,10 @@ public final class SilenceMediaSource extends BaseMediaSource {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reevaluateBuffer(long positionUs) {}
|
public void reevaluateBuffer(long positionUs) {}
|
||||||
|
|
||||||
|
private long constrainSeekPosition(long positionUs) {
|
||||||
|
return Util.constrainValue(positionUs, 0, durationUs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class SilenceSampleStream implements SampleStream {
|
private static final class SilenceSampleStream implements SampleStream {
|
||||||
@ -187,7 +193,7 @@ public final class SilenceMediaSource extends BaseMediaSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void seekTo(long positionUs) {
|
public void seekTo(long positionUs) {
|
||||||
positionBytes = getAudioByteCount(positionUs);
|
positionBytes = Util.constrainValue(getAudioByteCount(positionUs), 0, durationBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user