Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f213914 authored by Dongwon Kang's avatar Dongwon Kang
Browse files

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
parent a9f10629
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -16140,6 +16140,7 @@ package android.media.tv {
  public abstract class TvInputService.Session implements android.view.KeyEvent.Callback {
    ctor public TvInputService.Session();
    method public void dispatchChannelRetuned(android.net.Uri);
    method public void dispatchTrackInfoChanged(java.util.List<android.media.tv.TvTrackInfo>);
    method public android.view.View onCreateOverlayView();
    method public boolean onGenericMotionEvent(android.view.MotionEvent);
    method public boolean onKeyDown(int, android.view.KeyEvent);
@@ -16147,26 +16148,61 @@ package android.media.tv {
    method public boolean onKeyMultiple(int, int, android.view.KeyEvent);
    method public boolean onKeyUp(int, android.view.KeyEvent);
    method public abstract void onRelease();
    method public boolean onSelectTrack(android.media.tv.TvTrackInfo);
    method public abstract void onSetStreamVolume(float);
    method public abstract boolean onSetSurface(android.view.Surface);
    method public boolean onTouchEvent(android.view.MotionEvent);
    method public boolean onTrackballEvent(android.view.MotionEvent);
    method public abstract boolean onTune(android.net.Uri);
    method public boolean onUnselectTrack(android.media.tv.TvTrackInfo);
    method public void setOverlayViewEnabled(boolean);
  }
  public final class TvTrackInfo implements android.os.Parcelable {
    method public boolean containsKey(java.lang.String);
    method public int describeContents();
    method public boolean getBoolean(java.lang.String);
    method public int getInt(java.lang.String);
    method public java.lang.String getString(java.lang.String);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator CREATOR;
    field public static final java.lang.String KEY_CHANNEL_COUNT = "channel-count";
    field public static final java.lang.String KEY_HEIGHT = "height";
    field public static final java.lang.String KEY_IS_SELECTED = "is-selected";
    field public static final java.lang.String KEY_LANGUAGE = "language";
    field public static final java.lang.String KEY_SAMPLE_RATE = "sample-rate";
    field public static final java.lang.String KEY_TAG = "tag";
    field public static final java.lang.String KEY_TYPE = "type";
    field public static final java.lang.String KEY_WIDTH = "width";
    field public static final int VALUE_TYPE_AUDIO = 0; // 0x0
    field public static final int VALUE_TYPE_SUBTITLE = 2; // 0x2
    field public static final int VALUE_TYPE_VIDEO = 1; // 0x1
  }
  public static final class TvTrackInfo.Builder {
    ctor public TvTrackInfo.Builder(int, java.lang.String, boolean);
    ctor public TvTrackInfo.Builder(android.media.tv.TvTrackInfo);
    method public android.media.tv.TvTrackInfo build();
    method public android.media.tv.TvTrackInfo.Builder putBoolean(java.lang.String, boolean);
    method public android.media.tv.TvTrackInfo.Builder putInt(java.lang.String, int);
    method public android.media.tv.TvTrackInfo.Builder putString(java.lang.String, java.lang.String);
  }
  public class TvView extends android.view.ViewGroup {
    ctor public TvView(android.content.Context);
    ctor public TvView(android.content.Context, android.util.AttributeSet);
    ctor public TvView(android.content.Context, android.util.AttributeSet, int);
    method public boolean dispatchUnhandledInputEvent(android.view.InputEvent);
    method public java.util.List<android.media.tv.TvTrackInfo> getTracks();
    method protected void onLayout(boolean, int, int, int, int);
    method public boolean onUnhandledInputEvent(android.view.InputEvent);
    method public void reset();
    method public void selectTrack(android.media.tv.TvTrackInfo);
    method public void setOnUnhandledInputEventListener(android.media.tv.TvView.OnUnhandledInputEventListener);
    method public void setStreamVolume(float);
    method public void setTvInputListener(android.media.tv.TvView.TvInputListener);
    method public void tune(java.lang.String, android.net.Uri);
    method public void unselectTrack(android.media.tv.TvTrackInfo);
    field public static final int ERROR_BUSY = 0; // 0x0
    field public static final int ERROR_TV_INPUT_DISCONNECTED = 1; // 0x1
  }
@@ -16179,6 +16215,8 @@ package android.media.tv {
    ctor public TvView.TvInputListener();
    method public void onChannelRetuned(java.lang.String, android.net.Uri);
    method public void onError(java.lang.String, int);
    method public void onTrackInfoChanged(java.lang.String, java.util.List<android.media.tv.TvTrackInfo>);
    method public void onVideoSizeChanged(java.lang.String, int, int);
  }
}
+2 −3
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.media.tv;
import android.content.ComponentName;
import android.media.tv.ITvInputSession;
import android.net.Uri;
import android.media.tv.TvTrackInfo;
import android.os.Bundle;
import android.view.InputChannel;

@@ -32,8 +33,6 @@ oneway interface ITvInputClient {
    void onAvailabilityChanged(in String inputId, boolean isAvailable);
    void onSessionReleased(int seq);
    void onSessionEvent(in String name, in Bundle args, int seq);
    void onVideoStreamChanged(int width, int height, boolean interlaced, int seq);
    void onAudioStreamChanged(int channelCount, int seq);
    void onClosedCaptionStreamChanged(boolean hasClosedCaption, int seq);
    void onChannelRetuned(in Uri channelUri, int seq);
    void onTrackInfoChanged(in List<TvTrackInfo> tracks, int seq);
}
+3 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.media.tv.ITvInputHardwareCallback;
import android.media.tv.ITvInputClient;
import android.media.tv.TvInputHardwareInfo;
import android.media.tv.TvInputInfo;
import android.media.tv.TvTrackInfo;
import android.net.Uri;
import android.view.Surface;

@@ -44,6 +45,8 @@ interface ITvInputManager {
    void setSurface(in IBinder sessionToken, in Surface surface, int userId);
    void setVolume(in IBinder sessionToken, float volume, int userId);
    void tune(in IBinder sessionToken, in Uri channelUri, int userId);
    void selectTrack(in IBinder sessionToken, in TvTrackInfo track, int userId);
    void unselectTrack(in IBinder sessionToken, in TvTrackInfo track, int userId);

    void createOverlayView(in IBinder sessionToken, in IBinder windowToken, in Rect frame,
            int userId);
+3 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.media.tv;

import android.graphics.Rect;
import android.media.tv.TvTrackInfo;
import android.net.Uri;
import android.view.Surface;

@@ -32,6 +33,8 @@ oneway interface ITvInputSession {
    // is to introduce some new concepts that will solve a number of problems in audio policy today.
    void setVolume(float volume);
    void tune(in Uri channelUri);
    void selectTrack(in TvTrackInfo track);
    void unselectTrack(in TvTrackInfo track);

    void createOverlayView(in IBinder windowToken, in Rect frame);
    void relayoutOverlayView(in Rect frame);
+2 −3
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.media.tv;

import android.media.tv.ITvInputSession;
import android.net.Uri;
import android.media.tv.TvTrackInfo;
import android.os.Bundle;

/**
@@ -28,8 +29,6 @@ import android.os.Bundle;
oneway interface ITvInputSessionCallback {
    void onSessionCreated(ITvInputSession session);
    void onSessionEvent(in String name, in Bundle args);
    void onVideoStreamChanged(int width, int height, boolean interlaced);
    void onAudioStreamChanged(int channelCount);
    void onClosedCaptionStreamChanged(boolean hasClosedCaption);
    void onChannelRetuned(in Uri channelUri);
    void onTrackInfoChanged(in List<TvTrackInfo> tracks);
}
Loading