Skip to content

Commit 3b29c0a

Browse files
committed
updated ExoPlayer to 2.16.0 + updated other dependencies
1 parent b0675e8 commit 3b29c0a

File tree

14 files changed

+44
-64
lines changed

14 files changed

+44
-64
lines changed

app/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ dependencies {
196196
// Play Core: https://developer.android.com/reference/com/google/android/play/core/release-notes
197197
implementation("com.google.android.play:core:1.10.2")
198198
// ExoPlayer: https://github.com/google/ExoPlayer/blob/release-v2/RELEASENOTES.md
199-
implementation("com.google.android.exoplayer:exoplayer-core:2.15.1")
199+
implementation("com.google.android.exoplayer:exoplayer-core:2.16.0")
200200
// The Checker Framework: https://checkerframework.org/CHANGELOG.md
201201
compileOnly("org.checkerframework:checker-qual:3.18.1")
202202
// OkHttp: https://github.com/square/okhttp/blob/master/CHANGELOG.md

app/jni/thirdparty/exoplayer/opus_jni.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ DECODER_FUNC(jlong, opusInit, jint sampleRate, jint channelCount,
8686

8787
// Populate JNI References.
8888
const jclass outputBufferClass = env->FindClass(
89-
"com/google/android/exoplayer2/decoder/SimpleOutputBuffer");
89+
"com/google/android/exoplayer2/decoder/SimpleDecoderOutputBuffer");
9090
outputBufferInit =
9191
env->GetMethodID(outputBufferClass, "init", "(JI)Ljava/nio/ByteBuffer;");
9292

app/jni/thirdparty/exoplayer/vpx_jni.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ DECODER_FUNC(jlong, vpxInit, jboolean disableLoopFilter,
478478

479479
// Populate JNI References.
480480
const jclass outputBufferClass = env->FindClass(
481-
"com/google/android/exoplayer2/video/VideoDecoderOutputBuffer");
481+
"com/google/android/exoplayer2/decoder/VideoDecoderOutputBuffer");
482482
initForYuvFrame =
483483
env->GetMethodID(outputBufferClass, "initForYuvFrame", "(IIIII)Z");
484484
initForPrivateFrame =

app/jni/thirdparty/ffmpeg

Submodule ffmpeg updated from 79c114e to cc33e73

app/src/main/java/org/thunderdog/challegram/U.java

+9-4
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,13 @@
7272
import com.google.android.exoplayer2.DefaultLoadControl;
7373
import com.google.android.exoplayer2.DefaultRenderersFactory;
7474
import com.google.android.exoplayer2.ExoPlaybackException;
75+
import com.google.android.exoplayer2.ExoPlayer;
7576
import com.google.android.exoplayer2.PlaybackException;
76-
import com.google.android.exoplayer2.SimpleExoPlayer;
77+
import com.google.android.exoplayer2.RenderersFactory;
7778
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory;
79+
import com.google.android.exoplayer2.source.DefaultMediaSourceFactory;
7880
import com.google.android.exoplayer2.source.MediaSource;
81+
import com.google.android.exoplayer2.source.MediaSourceFactory;
7982
import com.google.android.exoplayer2.source.ProgressiveMediaSource;
8083
import com.google.android.exoplayer2.source.UnrecognizedInputFormatException;
8184
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
@@ -690,12 +693,14 @@ public static boolean isGooglePlayServicesInstalled (Context context) {
690693
return app_installed;
691694
}
692695

693-
public static SimpleExoPlayer newExoPlayer (Context context, boolean preferExtensions) {
696+
public static ExoPlayer newExoPlayer (Context context, boolean preferExtensions) {
694697
// new AdaptiveVideoTrackSelection.Factory(new DefaultBandwidthMeter())
695698
// DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER
696699
// DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON
697-
int extensionMode = preferExtensions || org.thunderdog.challegram.unsorted.Settings.instance().getNewSetting(org.thunderdog.challegram.unsorted.Settings.SETTING_FLAG_FORCE_EXO_PLAYER_EXTENSIONS) ? DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER : DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON;
698-
return new SimpleExoPlayer.Builder(context, new DefaultRenderersFactory(context).setExtensionRendererMode(extensionMode), new DefaultExtractorsFactory().setConstantBitrateSeekingEnabled(true))
700+
final int extensionMode = preferExtensions || org.thunderdog.challegram.unsorted.Settings.instance().getNewSetting(org.thunderdog.challegram.unsorted.Settings.SETTING_FLAG_FORCE_EXO_PLAYER_EXTENSIONS) ? DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER : DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON;
701+
final RenderersFactory renderersFactory = new DefaultRenderersFactory(context).setExtensionRendererMode(extensionMode);
702+
final MediaSourceFactory mediaSourceFactory = new DefaultMediaSourceFactory(context, new DefaultExtractorsFactory().setConstantBitrateSeekingEnabled(true));
703+
return new ExoPlayer.Builder(context, renderersFactory, mediaSourceFactory)
699704
.setTrackSelector(new DefaultTrackSelector(context))
700705
.setLoadControl(new DefaultLoadControl())
701706
.build();

app/src/main/java/org/thunderdog/challegram/mediaview/VideoPlayerView.java

+9-31
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,17 @@
1010
import android.view.ViewGroup;
1111
import android.widget.Toast;
1212

13+
import androidx.annotation.NonNull;
1314
import androidx.annotation.Nullable;
1415

1516
import com.google.android.exoplayer2.C;
16-
import com.google.android.exoplayer2.ExoPlaybackException;
17+
import com.google.android.exoplayer2.ExoPlayer;
1718
import com.google.android.exoplayer2.PlaybackException;
18-
import com.google.android.exoplayer2.PlaybackParameters;
1919
import com.google.android.exoplayer2.Player;
20-
import com.google.android.exoplayer2.SimpleExoPlayer;
2120
import com.google.android.exoplayer2.source.ClippingMediaSource;
2221
import com.google.android.exoplayer2.source.LoopingMediaSource;
2322
import com.google.android.exoplayer2.source.MediaSource;
24-
import com.google.android.exoplayer2.source.TrackGroupArray;
25-
import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
26-
import com.google.android.exoplayer2.video.VideoListener;
23+
import com.google.android.exoplayer2.video.VideoSize;
2724

2825
import org.drinkless.td.libcore.telegram.TdApi;
2926
import org.thunderdog.challegram.BaseActivity;
@@ -47,7 +44,7 @@
4744
* Author: default
4845
*/
4946

50-
public class VideoPlayerView implements Player.EventListener, CallManager.CurrentCallListener, Runnable, VideoListener {
47+
public class VideoPlayerView implements Player.Listener, CallManager.CurrentCallListener, Runnable {
5148
private static class SeekHandler extends Handler {
5249
@Override
5350
public void handleMessage (Message msg) {
@@ -58,7 +55,7 @@ public void handleMessage (Message msg) {
5855
private final SeekHandler seekHandler;
5956
// private final TrackSelector selector;
6057
// private final LoadControl loadControl;
61-
private @Nullable SimpleExoPlayer player;
58+
private @Nullable ExoPlayer player;
6259
private View targetView;
6360

6461
private boolean noProgressUpdates;
@@ -109,19 +106,6 @@ public void setNoProgressUpdates (boolean noProgressUpdates) {
109106

110107
// ExoPlayer stuff
111108

112-
@Override
113-
public void onPlaybackParametersChanged (PlaybackParameters playbackParameters) {
114-
115-
}
116-
117-
@Override
118-
public void onTracksChanged (TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
119-
120-
}
121-
122-
@Override
123-
public void onRepeatModeChanged (int mode) { }
124-
125109
private @Nullable MediaItem currentItem;
126110

127111
public void setVideo (@Nullable MediaItem mediaItem) {
@@ -187,7 +171,6 @@ public void setVideo (@Nullable MediaItem mediaItem) {
187171
if (player == null) {
188172
this.player = U.newExoPlayer(context, preferExtensions);
189173
this.player.addListener(this);
190-
this.player.addVideoListener(this);
191174
checkMuted();
192175
if (targetView instanceof SurfaceView) {
193176
this.player.setVideoSurfaceView((SurfaceView) targetView);
@@ -256,10 +239,10 @@ private void setDataSource (MediaSource mediaSource) {
256239
}
257240

258241
@Override
259-
public void onVideoSizeChanged (int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) {
260-
if (player == null || currentItem == null || width == 0 || height == 0)
242+
public void onVideoSizeChanged (@NonNull VideoSize videoSize) {
243+
if (player == null || currentItem == null || videoSize.width == 0 || videoSize.height == 0)
261244
return;
262-
if (currentItem.setDimensions(width, height) && targetView != null) {
245+
if (currentItem.setDimensions(videoSize.width, videoSize.height) && targetView != null) {
263246
targetView.requestLayout();
264247
}
265248
}
@@ -355,12 +338,7 @@ public void setBoundCell (MediaCellView boundCell) {
355338
// ExoPlayer listener
356339

357340
@Override
358-
public void onLoadingChanged (boolean isLoading) {
359-
360-
}
361-
362-
@Override
363-
public void onPlayerStateChanged (boolean playWhenReady, int playbackState) {
341+
public void onPlaybackStateChanged (@Player.State int playbackState) {
364342
if (callback != null && playbackState == Player.STATE_READY) {
365343
callback.onPlayReady();
366344
}

app/src/main/java/org/thunderdog/challegram/player/AudioController.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ private int determineBestPlaybackMode (boolean voiceMessages) {
9090
private int playFlags;
9191
private TGAudio legacyAudio;
9292
@Nullable
93-
private SimpleExoPlayer exoPlayer;
93+
private ExoPlayer exoPlayer;
9494
// private ConcatenatingMediaSource mediaList;
9595
private ArrayList<TdApi.Message> playList;
9696
private boolean isPlaying;
@@ -367,7 +367,7 @@ public void onTrackListReset (Tdlib tdlib, @NonNull TdApi.Message currentTrack,
367367
}
368368

369369
@Override
370-
public void onPlayerError (PlaybackException e) {
370+
public void onPlayerError (@NonNull PlaybackException e) {
371371
displayPlaybackError(e);
372372
if (playbackMode != PLAYBACK_MODE_UNSET) {
373373
context.player().playNextMessageInQueue();

app/src/main/java/org/thunderdog/challegram/player/BasePlaybackController.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* Author: default
1818
*/
1919

20-
public abstract class BasePlaybackController implements TGPlayerController.TrackChangeListener, Player.EventListener {
20+
public abstract class BasePlaybackController implements TGPlayerController.TrackChangeListener, Player.Listener {
2121
private boolean isDestroyed;
2222

2323
@Override
@@ -98,7 +98,7 @@ private void setPlaybackObject (Tdlib tdlib, TdApi.Message object, boolean isPla
9898
protected abstract void displayPlaybackError (PlaybackException e);
9999

100100
@Override
101-
public void onPlayerError (PlaybackException e) {
101+
public void onPlayerError (@NonNull PlaybackException e) {
102102
Log.e(Log.TAG_PLAYER, "onPlayerError", e);
103103
if (object != null) {
104104
displayPlaybackError(e);

app/src/main/java/org/thunderdog/challegram/player/ProximityManager.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import androidx.annotation.Nullable;
1919

2020
import com.google.android.exoplayer2.C;
21-
import com.google.android.exoplayer2.SimpleExoPlayer;
21+
import com.google.android.exoplayer2.ExoPlayer;
2222
import com.google.android.exoplayer2.audio.AudioAttributes;
2323

2424
import org.drinkless.td.libcore.telegram.TdApi;
@@ -324,7 +324,7 @@ private void setWakeLockHeld (boolean wakeLockHeld) {
324324
}
325325
}
326326

327-
public void modifyExoPlayer (SimpleExoPlayer exoPlayer, @C.AudioContentType int contentType) {
327+
public void modifyExoPlayer (ExoPlayer exoPlayer, @C.AudioContentType int contentType) {
328328
if (needPlayThroughEarpiece()) {
329329
exoPlayer.setAudioAttributes(new AudioAttributes.Builder().setContentType(C.CONTENT_TYPE_SPEECH).setUsage(C.USAGE_VOICE_COMMUNICATION).build(), false);
330330
} else {

app/src/main/java/org/thunderdog/challegram/player/RoundVideoController.java

+4-7
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,10 @@
2222
import androidx.annotation.Nullable;
2323

2424
import com.google.android.exoplayer2.C;
25+
import com.google.android.exoplayer2.ExoPlayer;
2526
import com.google.android.exoplayer2.PlaybackException;
2627
import com.google.android.exoplayer2.Player;
27-
import com.google.android.exoplayer2.SimpleExoPlayer;
2828
import com.google.android.exoplayer2.source.MediaSource;
29-
import com.google.android.exoplayer2.video.VideoListener;
3029

3130
import org.drinkless.td.libcore.telegram.TdApi;
3231
import org.thunderdog.challegram.BaseActivity;
@@ -73,7 +72,6 @@
7372
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
7473
public class RoundVideoController extends BasePlaybackController implements
7574
BaseActivity.ActivityListener,
76-
VideoListener,
7775
TdlibFilesManager.FileListener,
7876
FactorAnimator.Target
7977
{
@@ -284,7 +282,7 @@ public void onFileGenerationFinished (@NonNull TdApi.File file) {
284282
private RoundProgressView mainProgressView;
285283
private ImageReceiverView mainPreviewView;
286284

287-
private SimpleExoPlayer exoPlayer;
285+
private ExoPlayer exoPlayer;
288286

289287
private InterceptPipLayout pipParentView;
290288
private CircleFrameLayout pipPlayerView;
@@ -384,7 +382,6 @@ private void preparePlayerIfNeeded () { // Prepare off-screen texture
384382
this.exoPlayer = U.newExoPlayer(context, true);
385383
setExoPlayerParameters();
386384
this.exoPlayer.addListener(this);
387-
this.exoPlayer.addVideoListener(this);
388385
this.exoPlayer.setVolume(volume);
389386
if (mainTextureView instanceof SurfaceView) {
390387
this.exoPlayer.setVideoSurfaceView((SurfaceView) mainTextureView);
@@ -894,10 +891,10 @@ private void checkPlayState () {
894891
// Video Playback listeners
895892

896893
@Override
897-
public void onPlayerStateChanged (boolean playWhenReady, int playbackState) {
894+
public void onPlaybackStateChanged (@Player.State int playbackState) {
898895
switch (playbackState) {
899896
case Player.STATE_ENDED: {
900-
if (isPlaying && source != null && playWhenReady) { // Catch playback end only when we actually play the message
897+
if (isPlaying && source != null) { // Catch playback end only when we actually play the message
901898
TdlibManager.instance().player().playNextMessageInQueue();
902899
}
903900
break;

app/src/main/java/org/thunderdog/challegram/unsorted/NLoader.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import com.getkeepsafe.relinker.ReLinker;
1010
import com.getkeepsafe.relinker.ReLinkerInstance;
11+
import com.google.android.exoplayer2.C;
1112
import com.google.android.exoplayer2.ext.ffmpeg.FfmpegLibrary;
1213
import com.google.android.exoplayer2.ext.flac.FlacLibrary;
1314
import com.google.android.exoplayer2.ext.opus.OpusLibrary;
@@ -72,8 +73,8 @@ public static synchronized boolean loadLibrary () {
7273
android.util.Log.v("tgx", "Loaded " + library + " in " + (SystemClock.uptimeMillis() - ms) + "ms");
7374
}
7475
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
75-
OpusLibrary.setLibraries(null);
76-
VpxLibrary.setLibraries(null);
76+
OpusLibrary.setLibraries(C.CRYPTO_TYPE_UNSUPPORTED);
77+
VpxLibrary.setLibraries(C.CRYPTO_TYPE_UNSUPPORTED);
7778
FlacLibrary.setLibraries();
7879
FfmpegLibrary.setLibraries();
7980
if (BuildConfig.DEBUG) {

app/src/main/java/org/thunderdog/challegram/widget/SimpleVideoPlayer.java

+7-8
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@
55

66
import androidx.annotation.Nullable;
77

8+
import com.google.android.exoplayer2.ExoPlayer;
89
import com.google.android.exoplayer2.Player;
9-
import com.google.android.exoplayer2.SimpleExoPlayer;
1010
import com.google.android.exoplayer2.source.ClippingMediaSource;
1111
import com.google.android.exoplayer2.source.MediaSource;
12-
import com.google.android.exoplayer2.video.VideoListener;
1312

1413
import org.thunderdog.challegram.U;
1514

@@ -23,13 +22,13 @@
2322
* Author: default
2423
*/
2524

26-
public class SimpleVideoPlayer extends TextureView implements Destroyable, Player.EventListener, VideoListener {
25+
public class SimpleVideoPlayer extends TextureView implements Destroyable, Player.Listener {
2726
public interface Delegate {
2827
void onVideoRenderStateChanged (boolean hasFrame);
2928
void onVideoMuteStateChanged (boolean isMuted);
3029
}
3130

32-
private @Nullable SimpleExoPlayer player;
31+
private @Nullable ExoPlayer player;
3332
private Delegate delegate;
3433

3534
public SimpleVideoPlayer (Context context) {
@@ -65,7 +64,6 @@ public void preparePlayer () {
6564
if (player == null) {
6665
player = U.newExoPlayer(getContext(), true);
6766
player.addListener(this);
68-
player.addVideoListener(this);
6967
player.setVideoTextureView(this);
7068
updateSettings();
7169
}
@@ -215,13 +213,14 @@ public void performDestroy () {
215213
private long videoDuration;
216214

217215
@Override
218-
public void onPlayerStateChanged (boolean playWhenReady, int state) {
219-
switch (state) {
220-
case Player.STATE_READY:
216+
public void onPlaybackStateChanged (@Player.State int playbackState) {
217+
switch (playbackState) {
218+
case Player.STATE_READY: {
221219
if (videoDuration == 0 && !(mediaSource instanceof ClippingMediaSource)) {
222220
this.videoDuration = player != null ? player.getDuration() : 0;
223221
}
224222
break;
223+
}
225224
case Player.STATE_ENDED: {
226225
if (isLooping && player != null) {
227226
player.seekTo(0);

thirdparty/ExoPlayer

Submodule ExoPlayer updated 1616 files

0 commit comments

Comments
 (0)