Support multiple tracks in TV Input framework.
Added API: getTracks/selectTrack/unselectTrack/onTrackInfoChanged
(onVideo/Audio/ClosedCaptionStreamChanged callbacks are removed in favor of onTrackInfoChanged)
Use cases: audio and closed caption track selection
Background: go/tif-multi-track
Bug:14073704, Bug:14121898, Bug: 16049453
Change-Id: I199ed16f690d4e757da0bb30c8bc8222a6fa1d7a
diff --git a/media/java/android/media/tv/ITvInputSessionWrapper.java b/media/java/android/media/tv/ITvInputSessionWrapper.java
index d20ee0e..06ee4b5 100644
--- a/media/java/android/media/tv/ITvInputSessionWrapper.java
+++ b/media/java/android/media/tv/ITvInputSessionWrapper.java
@@ -44,9 +44,11 @@
private static final int DO_SET_SURFACE = 2;
private static final int DO_SET_VOLUME = 3;
private static final int DO_TUNE = 4;
- private static final int DO_CREATE_OVERLAY_VIEW = 5;
- private static final int DO_RELAYOUT_OVERLAY_VIEW = 6;
- private static final int DO_REMOVE_OVERLAY_VIEW = 7;
+ private static final int DO_SELECT_TRACK = 5;
+ private static final int DO_UNSELECT_TRACK = 6;
+ private static final int DO_CREATE_OVERLAY_VIEW = 7;
+ private static final int DO_RELAYOUT_OVERLAY_VIEW = 8;
+ private static final int DO_REMOVE_OVERLAY_VIEW = 9;
private final HandlerCaller mCaller;
@@ -96,6 +98,14 @@
mTvInputSessionImpl.tune((Uri) msg.obj);
return;
}
+ case DO_SELECT_TRACK: {
+ mTvInputSessionImpl.selectTrack((TvTrackInfo) msg.obj);
+ return;
+ }
+ case DO_UNSELECT_TRACK: {
+ mTvInputSessionImpl.unselectTrack((TvTrackInfo) msg.obj);
+ return;
+ }
case DO_CREATE_OVERLAY_VIEW: {
SomeArgs args = (SomeArgs) msg.obj;
mTvInputSessionImpl.createOverlayView((IBinder) args.arg1, (Rect) args.arg2);
@@ -138,6 +148,16 @@
}
@Override
+ public void selectTrack(TvTrackInfo track) {
+ mCaller.executeOrSendMessage(mCaller.obtainMessageO(DO_SELECT_TRACK, track));
+ }
+
+ @Override
+ public void unselectTrack(TvTrackInfo track) {
+ mCaller.executeOrSendMessage(mCaller.obtainMessageO(DO_UNSELECT_TRACK, track));
+ }
+
+ @Override
public void createOverlayView(IBinder windowToken, Rect frame) {
mCaller.executeOrSendMessage(mCaller.obtainMessageOO(DO_CREATE_OVERLAY_VIEW, windowToken,
frame));