1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2024-12-23 08:30:44 +00:00

Update ExoPlayer to 2.18.2

This commit is contained in:
Robin 2022-12-16 17:53:56 +01:00
parent 5942add141
commit eea4f0f41c
3 changed files with 11 additions and 62 deletions

View File

@ -8,7 +8,7 @@ plugins {
} }
android { android {
compileSdk 32 compileSdk 33
namespace 'org.schabi.newpipe' namespace 'org.schabi.newpipe'
defaultConfig { defaultConfig {
@ -102,7 +102,7 @@ ext {
androidxWorkVersion = '2.7.1' androidxWorkVersion = '2.7.1'
icepickVersion = '3.2.0' icepickVersion = '3.2.0'
exoPlayerVersion = '2.18.1' exoPlayerVersion = '2.18.2'
googleAutoServiceVersion = '1.0.1' googleAutoServiceVersion = '1.0.1'
groupieVersion = '2.10.1' groupieVersion = '2.10.1'
markwonVersion = '4.6.2' markwonVersion = '4.6.2'

View File

@ -160,15 +160,15 @@ class PopupPlayerGestureListener(
} }
} }
override fun onLongPress(e: MotionEvent?) { override fun onLongPress(e: MotionEvent) {
playerUi.updateScreenSize() playerUi.updateScreenSize()
playerUi.checkPopupPositionBounds() playerUi.checkPopupPositionBounds()
playerUi.changePopupSize(playerUi.screenWidth) playerUi.changePopupSize(playerUi.screenWidth)
} }
override fun onFling( override fun onFling(
e1: MotionEvent?, e1: MotionEvent,
e2: MotionEvent?, e2: MotionEvent,
velocityX: Float, velocityX: Float,
velocityY: Float velocityY: Float
): Boolean { ): Boolean {

View File

@ -1,27 +1,21 @@
package org.schabi.newpipe.player.mediasource; package org.schabi.newpipe.player.mediasource;
import androidx.annotation.NonNull;
import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.source.CompositeMediaSource;
import com.google.android.exoplayer2.source.MediaPeriod;
import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.source.WrappingMediaSource;
import com.google.android.exoplayer2.upstream.TransferListener;
import org.schabi.newpipe.player.mediaitem.MediaItemTag; import org.schabi.newpipe.player.mediaitem.MediaItemTag;
import org.schabi.newpipe.player.playqueue.PlayQueueItem; import org.schabi.newpipe.player.playqueue.PlayQueueItem;
import androidx.annotation.NonNull; public class LoadedMediaSource extends WrappingMediaSource implements ManagedMediaSource {
import androidx.annotation.Nullable;
public class LoadedMediaSource extends CompositeMediaSource<Integer> implements ManagedMediaSource {
private final MediaSource source;
private final PlayQueueItem stream; private final PlayQueueItem stream;
private final MediaItem mediaItem; private final MediaItem mediaItem;
private final long expireTimestamp; private final long expireTimestamp;
/** /**
* Uses a {@link CompositeMediaSource} to wrap one or more child {@link MediaSource}s * Uses a {@link WrappingMediaSource} to wrap one child {@link MediaSource}
* containing actual media. This wrapper {@link LoadedMediaSource} holds the expiration * containing actual media. This wrapper {@link LoadedMediaSource} holds the expiration
* timestamp as a {@link ManagedMediaSource} to allow explicit playlist management under * timestamp as a {@link ManagedMediaSource} to allow explicit playlist management under
* {@link ManagedMediaSourcePlaylist}. * {@link ManagedMediaSourcePlaylist}.
@ -36,7 +30,7 @@ public class LoadedMediaSource extends CompositeMediaSource<Integer> implements
@NonNull final MediaItemTag tag, @NonNull final MediaItemTag tag,
@NonNull final PlayQueueItem stream, @NonNull final PlayQueueItem stream,
final long expireTimestamp) { final long expireTimestamp) {
this.source = source; super(source);
this.stream = stream; this.stream = stream;
this.expireTimestamp = expireTimestamp; this.expireTimestamp = expireTimestamp;
@ -51,51 +45,6 @@ public class LoadedMediaSource extends CompositeMediaSource<Integer> implements
return System.currentTimeMillis() >= expireTimestamp; return System.currentTimeMillis() >= expireTimestamp;
} }
/**
* Delegates the preparation of child {@link MediaSource}s to the
* {@link CompositeMediaSource} wrapper. Since all {@link LoadedMediaSource}s use only
* a single child media, the child id of 0 is always used (sonar doesn't like null as id here).
*
* @param mediaTransferListener A data transfer listener that will be registered by the
* {@link CompositeMediaSource} for child source preparation.
*/
@Override
protected void prepareSourceInternal(@Nullable final TransferListener mediaTransferListener) {
super.prepareSourceInternal(mediaTransferListener);
prepareChildSource(0, source);
}
/**
* When any child {@link MediaSource} is prepared, the refreshed {@link Timeline} can
* be listened to here. But since {@link LoadedMediaSource} has only a single child source,
* this method is called only once until {@link #releaseSourceInternal()} is called.
* <br><br>
* On refresh, the {@link CompositeMediaSource} delegate will be notified with the
* new {@link Timeline}, otherwise {@link #createPeriod(MediaPeriodId, Allocator, long)}
* will not be called and playback may be stalled.
*
* @param id The unique id used to prepare the child source.
* @param mediaSource The child source whose source info has been refreshed.
* @param timeline The new timeline of the child source.
*/
@Override
protected void onChildSourceInfoRefreshed(final Integer id,
final MediaSource mediaSource,
final Timeline timeline) {
refreshSourceInfo(timeline);
}
@Override
public MediaPeriod createPeriod(final MediaPeriodId id, final Allocator allocator,
final long startPositionUs) {
return source.createPeriod(id, allocator, startPositionUs);
}
@Override
public void releasePeriod(final MediaPeriod mediaPeriod) {
source.releasePeriod(mediaPeriod);
}
@NonNull @NonNull
@Override @Override
public MediaItem getMediaItem() { public MediaItem getMediaItem() {