chore(android): move contentStartTime into source prop (#4160)
This commit is contained in:
@@ -38,6 +38,9 @@ class Source {
|
||||
/** Will crop content end at specified position */
|
||||
var cropEndMs: Int = -1
|
||||
|
||||
/** Will virtually consider that content before contentStartTime is a preroll ad */
|
||||
var contentStartTime: Int = -1
|
||||
|
||||
/** Allow to force stream content, necessary when uri doesn't contain content type (.mlp4, .m3u, ...) */
|
||||
var extension: String? = null
|
||||
|
||||
@@ -79,6 +82,7 @@ class Source {
|
||||
startPositionMs == other.startPositionMs &&
|
||||
extension == other.extension &&
|
||||
drmProps == other.drmProps &&
|
||||
contentStartTime == other.contentStartTime &&
|
||||
cmcdProps == other.cmcdProps &&
|
||||
sideLoadedTextTracks == other.sideLoadedTextTracks
|
||||
)
|
||||
@@ -139,6 +143,7 @@ class Source {
|
||||
private const val PROP_SRC_START_POSITION = "startPosition"
|
||||
private const val PROP_SRC_CROP_START = "cropStart"
|
||||
private const val PROP_SRC_CROP_END = "cropEnd"
|
||||
private const val PROP_SRC_CONTENT_START_TIME = "contentStartTime"
|
||||
private const val PROP_SRC_TYPE = "type"
|
||||
private const val PROP_SRC_METADATA = "metadata"
|
||||
private const val PROP_SRC_HEADERS = "requestHeaders"
|
||||
@@ -201,6 +206,7 @@ class Source {
|
||||
source.startPositionMs = safeGetInt(src, PROP_SRC_START_POSITION, -1)
|
||||
source.cropStartMs = safeGetInt(src, PROP_SRC_CROP_START, -1)
|
||||
source.cropEndMs = safeGetInt(src, PROP_SRC_CROP_END, -1)
|
||||
source.contentStartTime = safeGetInt(src, PROP_SRC_CONTENT_START_TIME, -1)
|
||||
source.extension = safeGetString(src, PROP_SRC_TYPE, null)
|
||||
source.drmProps = parse(safeGetMap(src, PROP_SRC_DRM))
|
||||
source.cmcdProps = CMCDProps.parse(safeGetMap(src, PROP_SRC_CMCD))
|
||||
|
@@ -235,7 +235,6 @@ public class ReactExoplayerView extends FrameLayout implements
|
||||
private boolean disableFocus;
|
||||
private boolean focusable = true;
|
||||
private BufferingStrategy.BufferingStrategyEnum bufferingStrategy;
|
||||
private long contentStartTime = -1L;
|
||||
private boolean disableDisconnectError;
|
||||
private boolean preventsDisplaySleepDuringVideoPlayback = true;
|
||||
private float mProgressUpdateInterval = 250.0f;
|
||||
@@ -1436,7 +1435,7 @@ public class ReactExoplayerView extends FrameLayout implements
|
||||
ArrayList<Track> audioTracks = getAudioTrackInfo();
|
||||
ArrayList<Track> textTracks = getTextTrackInfo();
|
||||
|
||||
if (this.contentStartTime != -1L) {
|
||||
if (source.getContentStartTime() != -1) {
|
||||
ExecutorService es = Executors.newSingleThreadExecutor();
|
||||
es.execute(() -> {
|
||||
// To prevent ANRs caused by getVideoTrackInfo we run this on a different thread and notify the player only when we're done
|
||||
@@ -1539,7 +1538,7 @@ public class ReactExoplayerView extends FrameLayout implements
|
||||
ExecutorService es = Executors.newSingleThreadExecutor();
|
||||
final DataSource dataSource = this.mediaDataSourceFactory.createDataSource();
|
||||
final Uri sourceUri = source.getUri();
|
||||
final long startTime = this.contentStartTime * 1000 - 100; // s -> ms with 100ms offset
|
||||
final long startTime = source.getContentStartTime() * 1000 - 100; // s -> ms with 100ms offset
|
||||
|
||||
Future<ArrayList<VideoTrack>> result = es.submit(new Callable() {
|
||||
final DataSource ds = dataSource;
|
||||
@@ -2207,10 +2206,6 @@ public class ReactExoplayerView extends FrameLayout implements
|
||||
exoPlayerView.setFocusable(this.focusable);
|
||||
}
|
||||
|
||||
public void setContentStartTime(int contentStartTime) {
|
||||
this.contentStartTime = contentStartTime;
|
||||
}
|
||||
|
||||
public void setShowNotificationControls(boolean showNotificationControls) {
|
||||
this.showNotificationControls = showNotificationControls;
|
||||
|
||||
|
@@ -49,7 +49,6 @@ class ReactExoplayerViewManager(private val config: ReactExoplayerConfig) : View
|
||||
private const val PROP_MIN_LOAD_RETRY_COUNT = "minLoadRetryCount"
|
||||
private const val PROP_MAXIMUM_BIT_RATE = "maxBitRate"
|
||||
private const val PROP_PLAY_IN_BACKGROUND = "playInBackground"
|
||||
private const val PROP_CONTENT_START_TIME = "contentStartTime"
|
||||
private const val PROP_DISABLE_FOCUS = "disableFocus"
|
||||
private const val PROP_BUFFERING_STRATEGY = "bufferingStrategy"
|
||||
private const val PROP_DISABLE_DISCONNECT_ERROR = "disableDisconnectError"
|
||||
@@ -237,11 +236,6 @@ class ReactExoplayerViewManager(private val config: ReactExoplayerConfig) : View
|
||||
videoView.setFocusable(focusable)
|
||||
}
|
||||
|
||||
@ReactProp(name = PROP_CONTENT_START_TIME, defaultInt = -1)
|
||||
fun setContentStartTime(videoView: ReactExoplayerView, contentStartTime: Int) {
|
||||
videoView.setContentStartTime(contentStartTime)
|
||||
}
|
||||
|
||||
@ReactProp(name = PROP_BUFFERING_STRATEGY)
|
||||
fun setBufferingStrategy(videoView: ReactExoplayerView, bufferingStrategy: String) {
|
||||
val strategy = BufferingStrategy.parse(bufferingStrategy)
|
||||
|
Reference in New Issue
Block a user