Disable enhanced Java 8 desugaring
This avoids that apps have to depend on this additional config Issue: androidx/media#1312 PiperOrigin-RevId: 631447767
This commit is contained in:
parent
096904301f
commit
6ac60c6dff
@ -7,6 +7,8 @@
|
||||
and `SimpleBasePlayer.handleSeek` methods instead of ignoring them. If
|
||||
you are implementing these methods in a custom player, you may need to
|
||||
handle these additional calls with `mediaItemIndex == C.INDEX_UNSET`.
|
||||
* Remove compile dependency on enhanced Java 8 desugaring
|
||||
([#1312](https://github.com/androidx/media/issues/1312)).
|
||||
* ExoPlayer:
|
||||
* Add `reset` to `BasePreloadManager` to release all the holding sources
|
||||
while keep the preload manager instance.
|
||||
|
@ -29,7 +29,6 @@ android {
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
@ -44,5 +43,4 @@ android {
|
||||
|
||||
dependencies {
|
||||
androidTestImplementation 'androidx.multidex:multidex:' + androidxMultidexVersion
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ android {
|
||||
compileSdk project.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
@ -66,7 +65,6 @@ dependencies {
|
||||
implementation 'androidx.multidex:multidex:' + androidxMultidexVersion
|
||||
implementation 'androidx.recyclerview:recyclerview:' + androidxRecyclerViewVersion
|
||||
implementation 'com.google.android.material:material:' + androidxMaterialVersion
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
||||
apply plugin: 'com.google.android.gms.strict-version-matcher-plugin'
|
||||
|
@ -21,7 +21,6 @@ android {
|
||||
compileSdk project.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
@ -74,6 +73,4 @@ dependencies {
|
||||
|
||||
// For detecting and debugging leaks only. LeakCanary is not needed for demo app to work.
|
||||
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.10'
|
||||
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ android {
|
||||
compileSdk project.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
@ -58,5 +57,4 @@ dependencies {
|
||||
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
||||
implementation 'androidx.multidex:multidex:' + androidxMultidexVersion
|
||||
compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
@ -22,7 +22,6 @@ android {
|
||||
compileSdk project.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
@ -91,7 +90,6 @@ dependencies {
|
||||
withDecoderExtensionsImplementation project(modulePrefix + 'lib-decoder-vp9')
|
||||
withDecoderExtensionsImplementation project(modulePrefix + 'lib-decoder-midi')
|
||||
withDecoderExtensionsImplementation project(modulePrefix + 'lib-datasource-rtmp')
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
||||
apply plugin: 'com.google.android.gms.strict-version-matcher-plugin'
|
||||
|
@ -21,7 +21,6 @@ android {
|
||||
compileSdk project.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
@ -69,5 +68,4 @@ dependencies {
|
||||
implementation project(modulePrefix + 'lib-ui')
|
||||
implementation project(modulePrefix + 'lib-session')
|
||||
implementation project(modulePrefix + 'demo-session-service')
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
@ -21,7 +21,6 @@ android {
|
||||
compileSdk project.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
@ -65,5 +64,4 @@ dependencies {
|
||||
implementation 'com.google.android.material:material:' + androidxMaterialVersion
|
||||
implementation project(modulePrefix + 'lib-session')
|
||||
implementation project(modulePrefix + 'demo-session-service')
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
@ -21,7 +21,6 @@ android {
|
||||
compileSdk project.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
@ -94,5 +93,4 @@ dependencies {
|
||||
testImplementation 'com.google.truth:truth:' + truthVersion
|
||||
testImplementation 'org.robolectric:robolectric:' + robolectricVersion
|
||||
testImplementation 'org.robolectric:robolectric:' + robolectricVersion
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ android {
|
||||
compileSdk project.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
@ -55,5 +54,4 @@ dependencies {
|
||||
implementation project(modulePrefix + 'lib-exoplayer-smoothstreaming')
|
||||
implementation project(modulePrefix + 'lib-ui')
|
||||
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
@ -22,7 +22,6 @@ android {
|
||||
compileSdk project.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
@ -86,8 +85,6 @@ dependencies {
|
||||
implementation project(modulePrefix + 'lib-transformer')
|
||||
implementation project(modulePrefix + 'lib-ui')
|
||||
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
|
||||
// For MediaPipe and its dependencies:
|
||||
withMediaPipeImplementation fileTree(dir: 'libs', include: ['*.aar'])
|
||||
withMediaPipeImplementation 'com.google.flogger:flogger:latest.release'
|
||||
|
@ -967,6 +967,18 @@ public final class Format implements Bundleable {
|
||||
// Lazily initialized hashcode.
|
||||
private int hashCode;
|
||||
|
||||
private static boolean isLabelPartOfLabels(Builder builder) {
|
||||
if (builder.labels.isEmpty() && builder.label == null) {
|
||||
return true;
|
||||
}
|
||||
for (int i = 0; i < builder.labels.size(); i++) {
|
||||
if (builder.labels.get(i).value.equals(builder.label)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private Format(Builder builder) {
|
||||
id = builder.id;
|
||||
language = Util.normalizeLanguageCode(builder.language);
|
||||
@ -977,9 +989,7 @@ public final class Format implements Bundleable {
|
||||
labels = builder.labels;
|
||||
label = getDefaultLabel(builder.labels, language);
|
||||
} else {
|
||||
checkState(
|
||||
(builder.labels.isEmpty() && builder.label == null)
|
||||
|| (builder.labels.stream().anyMatch(l -> l.value.equals(builder.label))));
|
||||
checkState(isLabelPartOfLabels(builder));
|
||||
labels = builder.labels;
|
||||
label = builder.label;
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ import androidx.media3.common.C;
|
||||
import androidx.media3.common.util.LongArray;
|
||||
import androidx.media3.common.util.LongArrayQueue;
|
||||
import androidx.media3.common.util.SpeedProviderUtil;
|
||||
import androidx.media3.common.util.TimestampConsumer;
|
||||
import androidx.media3.common.util.UnstableApi;
|
||||
import androidx.media3.common.util.Util;
|
||||
import java.nio.ByteBuffer;
|
||||
@ -53,7 +54,7 @@ public final class SpeedChangingAudioProcessor extends BaseAudioProcessor {
|
||||
|
||||
// Elements in the same positions in the queues are associated.
|
||||
private final LongArrayQueue pendingCallbackInputTimesUs;
|
||||
private final Queue<LongConsumer> pendingCallbacks;
|
||||
private final Queue<TimestampConsumer> pendingCallbacks;
|
||||
|
||||
// Elements in the same positions in the arrays are associated.
|
||||
private final LongArray inputSegmentStartTimesUs;
|
||||
@ -204,13 +205,13 @@ public final class SpeedChangingAudioProcessor extends BaseAudioProcessor {
|
||||
* @param callback The callback called with the output time. May be called on a different thread
|
||||
* from the caller of this method.
|
||||
*/
|
||||
public void getSpeedAdjustedTimeAsync(long inputTimeUs, LongConsumer callback) {
|
||||
public void getSpeedAdjustedTimeAsync(long inputTimeUs, TimestampConsumer callback) {
|
||||
checkArgument(speedAdjustedTimeAsyncInputTimeUs < inputTimeUs);
|
||||
speedAdjustedTimeAsyncInputTimeUs = inputTimeUs;
|
||||
synchronized (pendingCallbacksLock) {
|
||||
if ((inputTimeUs <= lastProcessedInputTimeUs && pendingCallbackInputTimesUs.isEmpty())
|
||||
|| isEnded()) {
|
||||
callback.accept(calculateSpeedAdjustedTime(inputTimeUs));
|
||||
callback.onTimestamp(calculateSpeedAdjustedTime(inputTimeUs));
|
||||
return;
|
||||
}
|
||||
pendingCallbackInputTimesUs.add(inputTimeUs);
|
||||
@ -261,7 +262,7 @@ public final class SpeedChangingAudioProcessor extends BaseAudioProcessor {
|
||||
&& (pendingCallbackInputTimesUs.element() <= lastProcessedInputTimeUs || isEnded())) {
|
||||
pendingCallbacks
|
||||
.remove()
|
||||
.accept(calculateSpeedAdjustedTime(pendingCallbackInputTimesUs.remove()));
|
||||
.onTimestamp(calculateSpeedAdjustedTime(pendingCallbackInputTimesUs.remove()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright 2024 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package androidx.media3.common.util;
|
||||
|
||||
/** A consumer for long timestamp values. */
|
||||
@UnstableApi
|
||||
public interface TimestampConsumer {
|
||||
|
||||
/**
|
||||
* Consumes a timestamp.
|
||||
*
|
||||
* @param timestampUs The timestamp, in microseconds.
|
||||
*/
|
||||
public void onTimestamp(long timestampUs);
|
||||
}
|
@ -66,7 +66,7 @@ public class TimestampAdjustmentTest {
|
||||
Thread.currentThread().interrupt();
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
callback.accept(inputTimeUs / 2);
|
||||
callback.onTimestamp(inputTimeUs / 2);
|
||||
});
|
||||
|
||||
ImmutableList<Long> actualPresentationTimesUs =
|
||||
|
@ -16,8 +16,8 @@
|
||||
package androidx.media3.effect;
|
||||
|
||||
import android.content.Context;
|
||||
import androidx.media3.common.util.TimestampConsumer;
|
||||
import androidx.media3.common.util.UnstableApi;
|
||||
import java.util.function.LongConsumer;
|
||||
|
||||
/**
|
||||
* Changes the frame timestamps using the {@link TimestampMap}.
|
||||
@ -43,7 +43,7 @@ public final class TimestampAdjustment implements GlEffect {
|
||||
* <p>The implementation should invoke the {@code outputTimeConsumer} with the output timestamp,
|
||||
* on any thread.
|
||||
*/
|
||||
void calculateOutputTimeUs(long inputTimeUs, LongConsumer outputTimeConsumer);
|
||||
void calculateOutputTimeUs(long inputTimeUs, TimestampConsumer outputTimeConsumer);
|
||||
}
|
||||
|
||||
private final TimestampMap timestampMap;
|
||||
|
@ -149,11 +149,15 @@ import java.util.Map;
|
||||
}
|
||||
|
||||
long presentationTimeOffsetUs =
|
||||
trackTokenToPresentationTimeOffsetUs.getOrDefault(trackToken, 0L);
|
||||
trackTokenToPresentationTimeOffsetUs.containsKey(trackToken)
|
||||
? trackTokenToPresentationTimeOffsetUs.get(trackToken)
|
||||
: 0;
|
||||
presentationTimeUs += presentationTimeOffsetUs;
|
||||
|
||||
long lastSamplePresentationTimeUs =
|
||||
trackTokenToLastPresentationTimeUs.getOrDefault(trackToken, 0L);
|
||||
trackTokenToLastPresentationTimeUs.containsKey(trackToken)
|
||||
? trackTokenToLastPresentationTimeUs.get(trackToken)
|
||||
: 0;
|
||||
// writeSampleData blocks on old API versions, so check here to avoid calling the method.
|
||||
checkState(
|
||||
Util.SDK_INT > 24 || presentationTimeUs >= lastSamplePresentationTimeUs,
|
||||
|
Loading…
x
Reference in New Issue
Block a user