mirror of
https://github.com/androidx/media.git
synced 2025-05-12 10:09:55 +08:00
CastPlayer only depends on common
Thanks to the move of the Player API to common, the cast player no longer need to depend on core. #player-to-common PiperOrigin-RevId: 354257309
This commit is contained in:
parent
a60938db96
commit
60f3d8168c
@ -16,7 +16,7 @@ apply from: "$gradle.ext.exoplayerSettingsDir/common_library_config.gradle"
|
||||
dependencies {
|
||||
api 'com.google.android.gms:play-services-cast-framework:18.1.0'
|
||||
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
|
||||
implementation project(modulePrefix + 'library-core')
|
||||
implementation project(modulePrefix + 'library-common')
|
||||
implementation project(modulePrefix + 'library-ui')
|
||||
compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion
|
||||
compileOnly 'org.checkerframework:checker-compat-qual:' + checkerframeworkCompatVersion
|
||||
|
@ -30,7 +30,6 @@ import com.google.android.exoplayer2.Timeline;
|
||||
import com.google.android.exoplayer2.metadata.Metadata;
|
||||
import com.google.android.exoplayer2.source.TrackGroup;
|
||||
import com.google.android.exoplayer2.source.TrackGroupArray;
|
||||
import com.google.android.exoplayer2.trackselection.FixedTrackSelection;
|
||||
import com.google.android.exoplayer2.trackselection.TrackSelection;
|
||||
import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
@ -766,7 +765,7 @@ public final class CastPlayer extends BasePlayer {
|
||||
int rendererIndex = getRendererIndexForTrackType(trackType);
|
||||
if (isTrackActive(id, activeTrackIds) && rendererIndex != C.INDEX_UNSET
|
||||
&& trackSelections[rendererIndex] == null) {
|
||||
trackSelections[rendererIndex] = new FixedTrackSelection(trackGroups[i], 0);
|
||||
trackSelections[rendererIndex] = new CastTrackSelection(trackGroups[i]);
|
||||
}
|
||||
}
|
||||
TrackGroupArray newTrackGroups = new TrackGroupArray(trackGroups);
|
||||
|
@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Copyright (C) 2021 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 com.google.android.exoplayer2.ext.cast;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.Format;
|
||||
import com.google.android.exoplayer2.source.TrackGroup;
|
||||
import com.google.android.exoplayer2.trackselection.TrackSelection;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
|
||||
/**
|
||||
* {@link TrackSelection} that only selects the first track of the provided {@link TrackGroup}.
|
||||
*
|
||||
* <p>This relies on {@link CastPlayer} track groups only having one track.
|
||||
*/
|
||||
/* package */ class CastTrackSelection implements TrackSelection {
|
||||
|
||||
private final TrackGroup trackGroup;
|
||||
|
||||
/** @param trackGroup The {@link TrackGroup} from which the first track will only be selected. */
|
||||
public CastTrackSelection(TrackGroup trackGroup) {
|
||||
this.trackGroup = trackGroup;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TrackGroup getTrackGroup() {
|
||||
return trackGroup;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int length() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Format getFormat(int index) {
|
||||
Assertions.checkArgument(index == 0);
|
||||
return trackGroup.getFormat(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getIndexInTrackGroup(int index) {
|
||||
return index == 0 ? 0 : C.INDEX_UNSET;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("ReferenceEquality")
|
||||
public int indexOf(Format format) {
|
||||
return format == trackGroup.getFormat(0) ? 0 : C.INDEX_UNSET;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int indexOf(int indexInTrackGroup) {
|
||||
return indexInTrackGroup == 0 ? 0 : C.INDEX_UNSET;
|
||||
}
|
||||
|
||||
// Object overrides.
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return System.identityHashCode(trackGroup);
|
||||
}
|
||||
|
||||
// Track groups are compared by identity not value, as distinct groups may have the same value.
|
||||
@Override
|
||||
@SuppressWarnings({"ReferenceEquality", "EqualsGetClass"})
|
||||
public boolean equals(@Nullable Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (obj == null || getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
CastTrackSelection other = (CastTrackSelection) obj;
|
||||
return trackGroup == other.trackGroup;
|
||||
}
|
||||
}
|
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Copyright (C) 2018 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 com.google.android.exoplayer2.ext.cast;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.Format;
|
||||
import com.google.android.exoplayer2.source.TrackGroup;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
/** Test for {@link CastTrackSelection}. */
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class CastTrackSelectionTest {
|
||||
|
||||
private static final TrackGroup TRACK_GROUP =
|
||||
new TrackGroup(new Format.Builder().build(), new Format.Builder().build());
|
||||
|
||||
private static final CastTrackSelection SELECTION = new CastTrackSelection(TRACK_GROUP);
|
||||
|
||||
@Test
|
||||
public void length_isOne() {
|
||||
assertThat(SELECTION.length()).isEqualTo(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getTrackGroup_returnsSameGroup() {
|
||||
assertThat(SELECTION.getTrackGroup()).isSameInstanceAs(TRACK_GROUP);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getFormatSelectedTrack_isFirstTrack() {
|
||||
assertThat(SELECTION.getFormat(0)).isSameInstanceAs(TRACK_GROUP.getFormat(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getIndexInTrackGroup_ofSelectedTrack_returnsFirstTrack() {
|
||||
assertThat(SELECTION.getIndexInTrackGroup(0)).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getIndexInTrackGroup_onePastTheEnd_returnsIndexUnset() {
|
||||
assertThat(SELECTION.getIndexInTrackGroup(1)).isEqualTo(C.INDEX_UNSET);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void indexOf_selectedTrack_returnsFirstTrack() {
|
||||
assertThat(SELECTION.indexOf(0)).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void indexOf_onePastTheEnd_returnsIndexUnset() {
|
||||
assertThat(SELECTION.indexOf(1)).isEqualTo(C.INDEX_UNSET);
|
||||
}
|
||||
|
||||
@Test(expected = Exception.class)
|
||||
public void getFormat_outOfBound_throws() {
|
||||
CastTrackSelection selection = new CastTrackSelection(TRACK_GROUP);
|
||||
|
||||
selection.getFormat(1);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user