mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Merge pull request #1736 from colinkho:msource_list
PiperOrigin-RevId: 677994281
This commit is contained in:
commit
424ecadb66
@ -45,6 +45,9 @@
|
|||||||
overriding this method in `DefaultLoadControl`). The default
|
overriding this method in `DefaultLoadControl`). The default
|
||||||
implementation of `LoadControl` disables preloading in case an app is
|
implementation of `LoadControl` disables preloading in case an app is
|
||||||
using a custom implementation of `LoadControl`.
|
using a custom implementation of `LoadControl`.
|
||||||
|
* Add method `MediaSourceEventListener.EventDispatcher.dispatchEvent()` to
|
||||||
|
allow invoking events of subclass listeners
|
||||||
|
([1736](https://github.com/androidx/media/pull/1736)).
|
||||||
* Transformer:
|
* Transformer:
|
||||||
* Track Selection:
|
* Track Selection:
|
||||||
* Extractors:
|
* Extractors:
|
||||||
|
@ -26,6 +26,7 @@ import androidx.media3.common.C.DataType;
|
|||||||
import androidx.media3.common.Format;
|
import androidx.media3.common.Format;
|
||||||
import androidx.media3.common.Player;
|
import androidx.media3.common.Player;
|
||||||
import androidx.media3.common.util.Assertions;
|
import androidx.media3.common.util.Assertions;
|
||||||
|
import androidx.media3.common.util.Consumer;
|
||||||
import androidx.media3.common.util.UnstableApi;
|
import androidx.media3.common.util.UnstableApi;
|
||||||
import androidx.media3.exoplayer.source.MediaSource.MediaPeriodId;
|
import androidx.media3.exoplayer.source.MediaSource.MediaPeriodId;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -259,12 +260,9 @@ public interface MediaSourceEventListener {
|
|||||||
|
|
||||||
/** Dispatches {@link #onLoadStarted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */
|
/** Dispatches {@link #onLoadStarted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */
|
||||||
public void loadStarted(LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {
|
public void loadStarted(LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {
|
||||||
for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) {
|
dispatchEvent(
|
||||||
MediaSourceEventListener listener = listenerAndHandler.listener;
|
(listener) ->
|
||||||
postOrRun(
|
listener.onLoadStarted(windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData));
|
||||||
listenerAndHandler.handler,
|
|
||||||
() -> listener.onLoadStarted(windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Dispatches {@link #onLoadCompleted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */
|
/** Dispatches {@link #onLoadCompleted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */
|
||||||
@ -304,14 +302,10 @@ public interface MediaSourceEventListener {
|
|||||||
|
|
||||||
/** Dispatches {@link #onLoadCompleted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */
|
/** Dispatches {@link #onLoadCompleted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */
|
||||||
public void loadCompleted(LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {
|
public void loadCompleted(LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {
|
||||||
for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) {
|
dispatchEvent(
|
||||||
MediaSourceEventListener listener = listenerAndHandler.listener;
|
(listener) ->
|
||||||
postOrRun(
|
|
||||||
listenerAndHandler.handler,
|
|
||||||
() ->
|
|
||||||
listener.onLoadCompleted(windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData));
|
listener.onLoadCompleted(windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/** Dispatches {@link #onLoadCanceled(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */
|
/** Dispatches {@link #onLoadCanceled(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */
|
||||||
public void loadCanceled(LoadEventInfo loadEventInfo, @DataType int dataType) {
|
public void loadCanceled(LoadEventInfo loadEventInfo, @DataType int dataType) {
|
||||||
@ -350,14 +344,10 @@ public interface MediaSourceEventListener {
|
|||||||
|
|
||||||
/** Dispatches {@link #onLoadCanceled(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */
|
/** Dispatches {@link #onLoadCanceled(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */
|
||||||
public void loadCanceled(LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {
|
public void loadCanceled(LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {
|
||||||
for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) {
|
dispatchEvent(
|
||||||
MediaSourceEventListener listener = listenerAndHandler.listener;
|
(listener) ->
|
||||||
postOrRun(
|
|
||||||
listenerAndHandler.handler,
|
|
||||||
() ->
|
|
||||||
listener.onLoadCanceled(windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData));
|
listener.onLoadCanceled(windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dispatches {@link #onLoadError(int, MediaPeriodId, LoadEventInfo, MediaLoadData, IOException,
|
* Dispatches {@link #onLoadError(int, MediaPeriodId, LoadEventInfo, MediaLoadData, IOException,
|
||||||
@ -419,15 +409,11 @@ public interface MediaSourceEventListener {
|
|||||||
MediaLoadData mediaLoadData,
|
MediaLoadData mediaLoadData,
|
||||||
IOException error,
|
IOException error,
|
||||||
boolean wasCanceled) {
|
boolean wasCanceled) {
|
||||||
for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) {
|
dispatchEvent(
|
||||||
MediaSourceEventListener listener = listenerAndHandler.listener;
|
(listener) ->
|
||||||
postOrRun(
|
|
||||||
listenerAndHandler.handler,
|
|
||||||
() ->
|
|
||||||
listener.onLoadError(
|
listener.onLoadError(
|
||||||
windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData, error, wasCanceled));
|
windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData, error, wasCanceled));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/** Dispatches {@link #onUpstreamDiscarded(int, MediaPeriodId, MediaLoadData)}. */
|
/** Dispatches {@link #onUpstreamDiscarded(int, MediaPeriodId, MediaLoadData)}. */
|
||||||
public void upstreamDiscarded(int trackType, long mediaStartTimeUs, long mediaEndTimeUs) {
|
public void upstreamDiscarded(int trackType, long mediaStartTimeUs, long mediaEndTimeUs) {
|
||||||
@ -445,12 +431,8 @@ public interface MediaSourceEventListener {
|
|||||||
/** Dispatches {@link #onUpstreamDiscarded(int, MediaPeriodId, MediaLoadData)}. */
|
/** Dispatches {@link #onUpstreamDiscarded(int, MediaPeriodId, MediaLoadData)}. */
|
||||||
public void upstreamDiscarded(MediaLoadData mediaLoadData) {
|
public void upstreamDiscarded(MediaLoadData mediaLoadData) {
|
||||||
MediaPeriodId mediaPeriodId = Assertions.checkNotNull(this.mediaPeriodId);
|
MediaPeriodId mediaPeriodId = Assertions.checkNotNull(this.mediaPeriodId);
|
||||||
for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) {
|
dispatchEvent(
|
||||||
MediaSourceEventListener listener = listenerAndHandler.listener;
|
(listener) -> listener.onUpstreamDiscarded(windowIndex, mediaPeriodId, mediaLoadData));
|
||||||
postOrRun(
|
|
||||||
listenerAndHandler.handler,
|
|
||||||
() -> listener.onUpstreamDiscarded(windowIndex, mediaPeriodId, mediaLoadData));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Dispatches {@link #onDownstreamFormatChanged(int, MediaPeriodId, MediaLoadData)}. */
|
/** Dispatches {@link #onDownstreamFormatChanged(int, MediaPeriodId, MediaLoadData)}. */
|
||||||
@ -473,11 +455,16 @@ public interface MediaSourceEventListener {
|
|||||||
|
|
||||||
/** Dispatches {@link #onDownstreamFormatChanged(int, MediaPeriodId, MediaLoadData)}. */
|
/** Dispatches {@link #onDownstreamFormatChanged(int, MediaPeriodId, MediaLoadData)}. */
|
||||||
public void downstreamFormatChanged(MediaLoadData mediaLoadData) {
|
public void downstreamFormatChanged(MediaLoadData mediaLoadData) {
|
||||||
|
dispatchEvent(
|
||||||
|
(listener) ->
|
||||||
|
listener.onDownstreamFormatChanged(windowIndex, mediaPeriodId, mediaLoadData));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Dispatches to a function that supplies a {@link MediaSourceEventListener}. */
|
||||||
|
public void dispatchEvent(Consumer<MediaSourceEventListener> event) {
|
||||||
for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) {
|
for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) {
|
||||||
MediaSourceEventListener listener = listenerAndHandler.listener;
|
MediaSourceEventListener listener = listenerAndHandler.listener;
|
||||||
postOrRun(
|
postOrRun(listenerAndHandler.handler, () -> event.accept(listener));
|
||||||
listenerAndHandler.handler,
|
|
||||||
() -> listener.onDownstreamFormatChanged(windowIndex, mediaPeriodId, mediaLoadData));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user