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

Commit eea0deea authored by David Zhao's avatar David Zhao
Browse files

Add TIAF watermarking APIs

Bug: 263762255
Test: mmm
Change-Id: I121154531e7607f4fa793c5989bb45ac041b4a72
parent fb0ae75c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ oneway interface ITvInputClient {
    void onTimeShiftCurrentPositionChanged(long timeMs, int seq);
    void onAitInfoUpdated(in AitInfo aitInfo, int seq);
    void onSignalStrength(int stength, int seq);
    void onTvMessage(in String type, in Bundle data, int seq);

    void onTuned(in Uri channelUri, int seq);
    // For the recording session
+3 −0
Original line number Diff line number Diff line
@@ -58,4 +58,7 @@ oneway interface ITvInputSessionCallback {
    // For ad response
    void onAdResponse(in AdResponse response);
    void onAdBufferConsumed(in AdBuffer buffer);

    // For messages sent from the TV input
    void onTvMessage(in String type, in Bundle data);
}
+51 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.StringDef;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
@@ -130,6 +131,20 @@ public final class TvInputManager {
        VIDEO_UNAVAILABLE_REASON_CAS_REBOOTING, VIDEO_UNAVAILABLE_REASON_CAS_UNKNOWN})
    public @interface VideoUnavailableReason {}

    /**
     * @hide
     */
    public static final String TV_MESSAGE_TYPE_WATERMARK = "Watermark";
    /**
     * @hide
     */
    public static final String TV_MESSAGE_TYPE_ATSC_CC = "ATSC_CC";

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @StringDef({TV_MESSAGE_TYPE_WATERMARK, TV_MESSAGE_TYPE_ATSC_CC})
    public @interface TvMessageType {}

    static final int VIDEO_UNAVAILABLE_REASON_START = 0;
    static final int VIDEO_UNAVAILABLE_REASON_END = 18;

@@ -690,6 +705,17 @@ public final class TvInputManager {
        public void onTuned(Session session, Uri channelUri) {
        }

        /**
         * This is called when the session receives a new Tv Message
         *
         * @param type the type of {@link TvMessageType}
         * @param data the raw data of the message
         * @hide
         */
        public void onTvMessage(Session session, @TvInputManager.TvMessageType String type,
                Bundle data) {
        }

        // For the recording session only
        /**
         * This is called when the current recording session has stopped recording and created a
@@ -919,6 +945,19 @@ public final class TvInputManager {
            });
        }

        void postTvMessage(String type, Bundle data) {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    mSessionCallback.onTvMessage(mSession, type, data);
                    if (mSession.mIAppNotificationEnabled
                            && mSession.getInteractiveAppSession() != null) {
                        mSession.getInteractiveAppSession().notifyTvMessage(type, data);
                    }
                }
            });
        }

        // For the recording session only
        void postRecordingStopped(final Uri recordedProgramUri) {
            mHandler.post(new Runnable() {
@@ -1378,6 +1417,18 @@ public final class TvInputManager {
                }
            }

            @Override
            public void onTvMessage(String type, Bundle data, int seq) {
                synchronized (mSessionCallbackRecordMap) {
                    SessionCallbackRecord record = mSessionCallbackRecordMap.get(seq);
                    if (record == null) {
                        Log.e(TAG, "Callback not found for seq " + seq);
                        return;
                    }
                    record.postTvMessage(type, data);
                }
            }

            @Override
            public void onRecordingStopped(Uri recordedProgramUri, int seq) {
                synchronized (mSessionCallbackRecordMap) {
+21 −0
Original line number Diff line number Diff line
@@ -2062,6 +2062,27 @@ public abstract class TvInputService extends Service {
            });
        }

        /**
         * Informs the application of the raw data from the TV message.
         * @param type The {@link TvInputManager.TvMessageType} of message that was sent.
         * @param data The data sent with the message.
         * @hide
         */
        public void notifyTvMessage(@TvInputManager.TvMessageType String type, Bundle data) {
        }

        /**
         * Called when the application enables or disables the detection of the specified message
         * type.
         * @param type The {@link TvInputManager.TvMessageType} of message that was sent.
         * @param enabled {@code true} if you want to enable TV message detecting
         *                {@code false} otherwise.
         * @hide
         */
        public void onSetTvMessageEnabled(@TvInputManager.TvMessageType String type,
                boolean enabled) {
        }

        /**
         * Called when the application requests to tune to a given channel for TV program recording.
         *
+36 −0
Original line number Diff line number Diff line
@@ -653,6 +653,17 @@ public class TvView extends ViewGroup {
        mOnUnhandledInputEventListener = listener;
    }

    /**
     * Enables or disables TV message detecting in the streams of bound TV input.
     *
     * @param type The type of {@link android.media.tv.TvInputManager.TvMessageType}
     * @param enabled {@code true} if you want to enable TV message detecting
     *                {@code false} otherwise.
     * @hide
     */
    public void setTvMessageEnabled(@TvInputManager.TvMessageType String type, boolean enabled) {
    }

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (super.dispatchKeyEvent(event)) {
@@ -1094,6 +1105,17 @@ public class TvView extends ViewGroup {
         */
        public void onTuned(@NonNull String inputId, @NonNull Uri channelUri) {
        }

        /**
         * This is called when the session has been tuned to the given channel.
         *
         * @param type The type of {@link android.media.tv.TvInputManager.TvMessageType}
         * @param data The raw data of the message
         * @hide
         */
        public void onTvMessage(@NonNull String inputId, @TvInputManager.TvMessageType String type,
                Bundle data) {
        }
    }

    /**
@@ -1432,5 +1454,19 @@ public class TvView extends ViewGroup {
                mCallback.onTuned(mInputId, channelUri);
            }
        }

        @Override
        public void onTvMessage(Session session, String type, Bundle data) {
            if (DEBUG) {
                Log.d(TAG, "onTvMessage(type=" + type + ", data=" + data + ")");
            }
            if (this != mSessionCallback) {
                Log.w(TAG, "onTvMessage - session not created");
                return;
            }
            if (mCallback != null) {
                mCallback.onTvMessage(mInputId, type, data);
            }
        }
    }
}
Loading